aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorleonidlazarev <leonidlazarev@yandex-team.com>2023-06-02 15:07:38 +0300
committerleonidlazarev <leonidlazarev@yandex-team.com>2023-06-02 15:07:38 +0300
commit59e0045a61e61c2ac38878f2adc7ec91ca914cc1 (patch)
treeb6b64c51025630a7d40923d4aa7b7b882e1a8848
parent7506c5c295065b4360d617393af34203f037946d (diff)
downloadydb-59e0045a61e61c2ac38878f2adc7ec91ca914cc1.tar.gz
feat grpc: update to grpc 1.50.2
update grpc to 1.50.2 update grpcio to 1.50.0 Удаленные патчи: 06-flow_control.patch - логика в upstream удалена 10-fix-crash-on-fork.patch - логика в upstream удалена 12-coverity-fix.patch - логика в upstream удалена 20-P2166-string-nullptr.patch - в upstream временный объект вместо nullptr PR29209-fix-heap-use-after-free.patch - решение есть в upstream Добавленные патчи: pr33085_fix_epoll1_engine_reinit.patch 21-windows_build.patch
-rw-r--r--contrib/libs/grpc/BUILDING.md18
-rw-r--r--contrib/libs/grpc/CMakeLists.darwin-x86_64.txt101
-rw-r--r--contrib/libs/grpc/CMakeLists.linux-aarch64.txt101
-rw-r--r--contrib/libs/grpc/CMakeLists.linux-x86_64.txt101
-rw-r--r--contrib/libs/grpc/CMakeLists.windows-x86_64.txt101
-rw-r--r--contrib/libs/grpc/LICENSE376
-rw-r--r--contrib/libs/grpc/MAINTAINERS.md49
-rw-r--r--contrib/libs/grpc/include/grpc/compression.h2
-rw-r--r--contrib/libs/grpc/include/grpc/event_engine/endpoint_config.h16
-rw-r--r--contrib/libs/grpc/include/grpc/event_engine/event_engine.h113
-rw-r--r--contrib/libs/grpc/include/grpc/event_engine/memory_allocator.h15
-rw-r--r--contrib/libs/grpc/include/grpc/event_engine/port.h9
-rw-r--r--contrib/libs/grpc/include/grpc/event_engine/slice.h287
-rw-r--r--contrib/libs/grpc/include/grpc/event_engine/slice_buffer.h119
-rw-r--r--contrib/libs/grpc/include/grpc/grpc.h6
-rw-r--r--contrib/libs/grpc/include/grpc/grpc_security.h11
-rw-r--r--contrib/libs/grpc/include/grpc/impl/codegen/atm_gcc_atomic.h47
-rw-r--r--contrib/libs/grpc/include/grpc/impl/codegen/atm_gcc_sync.h2
-rw-r--r--contrib/libs/grpc/include/grpc/impl/codegen/atm_windows.h2
-rw-r--r--contrib/libs/grpc/include/grpc/impl/codegen/compression_types.h3
-rw-r--r--contrib/libs/grpc/include/grpc/impl/codegen/connectivity_state.h3
-rw-r--r--contrib/libs/grpc/include/grpc/impl/codegen/gpr_types.h3
-rw-r--r--contrib/libs/grpc/include/grpc/impl/codegen/grpc_types.h30
-rw-r--r--contrib/libs/grpc/include/grpc/impl/codegen/port_platform.h145
-rw-r--r--contrib/libs/grpc/include/grpc/impl/codegen/slice.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/channel.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/create_channel.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/create_channel_binder.h31
-rw-r--r--contrib/libs/grpc/include/grpcpp/ext/call_metric_recorder.h95
-rw-r--r--contrib/libs/grpc/include/grpcpp/generic/async_generic_service.h113
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/call.h72
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/call_hook.h39
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/call_op_set_interface.h61
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/async_generic_service.h116
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/async_stream.h1112
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/async_unary_call.h399
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/byte_buffer.h218
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/call.h75
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/call_hook.h18
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/call_op_set.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/call_op_set_interface.h37
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/callback_common.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/channel_interface.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/client_context.h21
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/client_interceptor.h178
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/core_codegen.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/core_codegen_interface.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/interceptor.h6
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/interceptor_common.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/method_handler.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/proto_buffer_reader.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/proto_buffer_writer.h9
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/proto_utils.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/rpc_service_method.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/security/auth_context.h9
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/server_context.h22
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/server_interface.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/status.h8
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/status_code_enum.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/impl/codegen/sync_stream.h9
-rw-r--r--contrib/libs/grpc/include/grpcpp/security/auth_metadata_processor.h30
-rw-r--r--contrib/libs/grpc/include/grpcpp/security/credentials.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/security/tls_certificate_verifier.h13
-rw-r--r--contrib/libs/grpc/include/grpcpp/server.h2
-rw-r--r--contrib/libs/grpc/include/grpcpp/server_builder.h5
-rw-r--r--contrib/libs/grpc/include/grpcpp/support/async_stream.h1111
-rw-r--r--contrib/libs/grpc/include/grpcpp/support/async_unary_call.h398
-rw-r--r--contrib/libs/grpc/include/grpcpp/support/byte_buffer.h210
-rw-r--r--contrib/libs/grpc/include/grpcpp/support/client_callback.h (renamed from contrib/libs/grpc/src/core/lib/iomgr/sys_epoll_wrapper.h)16
-rw-r--r--contrib/libs/grpc/include/grpcpp/support/client_interceptor.h197
-rw-r--r--contrib/libs/grpc/include/grpcpp/support/interceptor.h (renamed from contrib/libs/grpc/src/core/lib/iomgr/ev_epollex_linux.h)14
-rw-r--r--contrib/libs/grpc/include/grpcpp/support/method_handler.h (renamed from contrib/libs/grpc/src/core/lib/iomgr/is_epollexclusive_available.h)20
-rw-r--r--contrib/libs/grpc/include/grpcpp/support/server_interceptor.h (renamed from contrib/libs/grpc/src/core/lib/gpr/string_windows.h)16
-rw-r--r--contrib/libs/grpc/src/compiler/cpp_generator.cc12
-rw-r--r--contrib/libs/grpc/src/compiler/csharp_generator.cc4
-rw-r--r--contrib/libs/grpc/src/compiler/objective_c_generator.cc12
-rw-r--r--contrib/libs/grpc/src/compiler/objective_c_generator_helpers.h11
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/census/grpc_context.cc3
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/channel_idle/channel_idle_filter.cc309
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/channel_idle/channel_idle_filter.h141
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/channel_idle/idle_filter_state.cc (renamed from contrib/libs/grpc/src/core/ext/filters/client_idle/idle_filter_state.cc)2
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/channel_idle/idle_filter_state.h (renamed from contrib/libs/grpc/src/core/ext/filters/client_idle/idle_filter_state.h)8
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/backend_metric.cc29
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/backend_metric.h28
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/backup_poller.cc22
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/backup_poller.h6
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/channel_connectivity.cc64
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel.cc762
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel.h76
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_channelz.cc8
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_channelz.h14
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_factory.cc28
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_factory.h16
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_plugin.cc33
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/config_selector.cc1
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/config_selector.h24
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/connector.h17
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/dynamic_filters.cc26
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/dynamic_filters.h14
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/global_subchannel_pool.cc2
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/global_subchannel_pool.h3
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/health/health_check_client.cc720
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/health/health_check_client.h187
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/http_proxy.cc228
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/http_proxy.h27
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc8
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/address_filtering.h1
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h49
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc47
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h24
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc18
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h1
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc548
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc19
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h6
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h6
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc12
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h10
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc417
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h57
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc1141
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h94
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc350
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc642
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc896
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h22
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc1058
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc490
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h263
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc376
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc338
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds.h7
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc391
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc293
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc674
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_factory.h48
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_registry.cc185
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_registry.h65
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/local_subchannel_pool.cc4
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/local_subchannel_pool.h1
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper.h54
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper_registry.cc89
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper_registry.h50
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc41
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc917
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h9
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc19
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc12
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc322
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h44
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc3
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc2
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h3
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc307
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc53
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h18
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc157
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/polling_resolver.cc259
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/polling_resolver.h124
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc44
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc516
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h4
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.cc94
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.h28
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/retry_filter.cc174
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/retry_filter.h1
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/retry_service_config.cc65
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/retry_service_config.h20
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/retry_throttle.cc9
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/retry_throttle.h8
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc42
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel.cc534
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel.h140
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_interface_internal.h38
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_pool_interface.cc94
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_pool_interface.h47
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_stream_client.cc472
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_stream_client.h222
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/client_idle/client_idle_filter.cc201
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/deadline/deadline_filter.cc35
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/deadline/deadline_filter.h10
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.cc522
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.h42
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/fault_injection/service_config_parser.cc30
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/fault_injection/service_config_parser.h26
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/http/client/http_client_filter.cc564
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/http/client/http_client_filter.h40
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/http/client_authority_filter.cc72
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/http/client_authority_filter.h18
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/http/http_filters_plugin.cc40
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.cc254
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.h3
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_decompress_filter.cc152
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_decompress_filter.h1
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/http/server/http_server_filter.cc462
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/http/server/http_server_filter.h40
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/max_age/max_age_filter.cc566
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/message_size/message_size_filter.cc105
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/message_size/message_size_filter.h20
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/rbac/rbac_filter.cc18
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/rbac/rbac_filter.h8
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/rbac/rbac_service_config_parser.cc36
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/rbac/rbac_service_config_parser.h20
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector.cc11
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector.h18
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc294
-rw-r--r--contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector_filter.h1
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/client/binder_connector.cc17
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/client/binder_connector.h3
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/client/channel_create.cc96
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/client/channel_create_impl.cc64
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/client/connection_id_generator.cc8
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/client/connection_id_generator.h3
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/client/endpoint_binder_pool.cc2
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.cc22
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.h4
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/server/binder_server.cc6
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_stream.h14
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_transport.cc95
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_transport.h5
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/utils/ndk_binder.cc55
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_constants.cc6
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_constants.h2
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/wire_format/transaction.cc16
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/wire_format/transaction.h3
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_reader_impl.cc167
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_reader_impl.h4
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_writer.cc404
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_writer.h99
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/client/chttp2_connector.cc307
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/client/chttp2_connector.h16
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/server/chttp2_server.cc284
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/server/chttp2_server.h10
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_decoder.cc6
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_decoder.h3
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_encoder.cc3
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.cc1279
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.h10
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/context_list.cc4
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/context_list.h5
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/decode_huff.cc287
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/decode_huff.h1018
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/flow_control.cc540
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/flow_control.h478
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame.h4
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_data.cc270
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_data.h49
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.cc3
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.h4
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_ping.cc6
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_ping.h3
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc8
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_rst_stream.h3
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_settings.cc55
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_settings.h4
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_window_update.cc22
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_window_update.h3
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_constants.h8
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.cc79
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.h21
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc2
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h13
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser.cc112
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser.h9
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc91
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser_table.h76
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/http2_settings.h1
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/internal.h155
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/parsing.cc173
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_lists.cc22
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_map.cc2
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_map.h1
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/varint.h2
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/chttp2/transport/writing.cc132
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/inproc/inproc_plugin.cc1
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/inproc/inproc_transport.cc282
-rw-r--r--contrib/libs/grpc/src/core/ext/transport/inproc/inproc_transport.h4
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c51
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h246
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c72
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h286
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c373
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h1600
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c352
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h1768
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h55
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c16
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h69
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c14
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h26
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c8
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h25
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c8
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h17
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c95
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h311
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c6
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h20
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c24
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h48
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/resource.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/resource.upb.h30
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c110
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h519
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c262
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h1081
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c42
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h143
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c361
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h1370
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c6
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h20
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c68
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h213
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c135
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h719
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c64
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h262
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c9
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h26
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c184
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h828
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c109
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h496
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c4
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h28
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c30
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h109
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h55
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c138
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h604
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c159
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h676
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c8
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h46
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c192
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h636
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c4
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h11
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c12
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h59
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c14
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h67
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c16
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h90
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c8
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h26
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c36
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h167
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c61
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h290
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c64
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h331
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c4
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h17
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c137
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h592
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c106
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h539
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c24
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h71
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c15
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h58
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h32
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c65
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h355
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c68
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h321
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c124
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h630
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c65
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h314
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c766
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h3587
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c22
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h89
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c133
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h587
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c6
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h14
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c6
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h20
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h52
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h47
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c33
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h127
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c46
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h98
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c4
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h17
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c16
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h79
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c1
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h1
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c18
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h66
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c14
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h48
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c4
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h24
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c30
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h139
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c50
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h238
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c24
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h104
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c18
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h65
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c325
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h1422
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c52
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h168
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c46
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h98
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c104
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h457
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c26
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h119
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c135
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h586
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h48
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c2
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h8
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c223
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h1027
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c16
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h84
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c66
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h281
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c8
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h31
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c16
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h87
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c16
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h44
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c14
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h77
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c6
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h37
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c6
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h41
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c4
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h28
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c16
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h80
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c18
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h111
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h71
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c24
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h135
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c32
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h162
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c40
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h160
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c14
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h62
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c4
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h11
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h33
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/range.upb.c18
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/range.upb.h42
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c63
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h202
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c8
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h17
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h29
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/api/annotations.upb.c6
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/api/annotations.upb.h19
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c136
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h662
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c154
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h694
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/api/http.upb.c34
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/api/http.upb.h183
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/api/httpbody.upb.c8
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/api/httpbody.upb.h34
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/any.upb.c6
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/any.upb.h14
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c364
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h1820
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/duration.upb.c6
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/duration.upb.h22
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/empty.upb.c2
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/empty.upb.h8
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/struct.upb.c30
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/struct.upb.h172
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c6
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h22
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c36
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h99
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/rpc/status.upb.c8
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/google/rpc/status.upb.h34
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c30
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h119
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c24
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h69
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c134
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h593
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c15
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h40
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c8
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h22
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c62
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h280
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c22
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h85
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c175
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h792
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c44
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h131
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/security.upb.c12
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/security.upb.h33
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c6
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h12
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/status.upb.c12
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/status.upb.h41
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h30
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/validate/validate.upb.c517
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/validate/validate.upb.h2683
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c44
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h131
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c12
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h33
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c6
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h12
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c36
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h112
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h30
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/authority.upb.c4
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/authority.upb.h11
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c16
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h66
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h45
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/extension.upb.c6
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/extension.upb.h20
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource.upb.h37
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c20
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h117
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c10
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h26
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c24
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h103
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c47
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h113
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c82
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h430
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c8
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h43
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c18
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h111
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c6
-rw-r--r--contrib/libs/grpc/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h20
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c341
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h85
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c256
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h115
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c25
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c214
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c378
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c96
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c382
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c28
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c369
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c223
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h10
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c51
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h5
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c318
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h5
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c270
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c32
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c301
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h5
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c279
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c70
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c20
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h5
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c141
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h5
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c1503
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h10
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c289
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h5
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c47
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h35
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c28
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c71
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c511
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h5
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c39
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c400
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h5
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c237
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h35
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c226
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c57
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c69
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h40
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c182
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c99
-rw-r--r--contrib/libs/grpc/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h75
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/certificate_provider_registry.cc103
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/certificate_provider_registry.h58
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/certificate_provider_store.cc78
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/certificate_provider_store.h29
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/file_watcher_certificate_provider_factory.cc19
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/file_watcher_certificate_provider_factory.h11
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/upb_utils.h22
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_api.cc223
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_api.h70
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_bootstrap.cc542
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_bootstrap.h134
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_bootstrap_grpc.cc370
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_bootstrap_grpc.h170
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_certificate_provider.cc20
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_certificate_provider.h35
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_channel_stack_modifier.cc23
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_channel_stack_modifier.h14
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_client.cc2172
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_client.h117
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_client_grpc.cc230
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_client_grpc.h79
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_client_stats.cc15
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_client_stats.h7
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_cluster.cc464
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_cluster.h24
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_cluster_specifier_plugin.cc149
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_cluster_specifier_plugin.h74
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_common_types.cc294
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_common_types.h25
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_endpoint.cc193
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_endpoint.h23
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_http_fault_filter.cc35
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_http_fault_filter.h8
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_http_filters.cc7
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_http_filters.h10
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_http_rbac_filter.cc108
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_http_rbac_filter.h9
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_lb_policy_registry.cc291
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_lb_policy_registry.h72
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_listener.cc709
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_listener.h18
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_resource_type.h38
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_resource_type_impl.h10
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_route_config.cc492
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_route_config.h64
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_routing.cc25
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_routing.h22
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_server_config_fetcher.cc250
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_transport.h87
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_transport_grpc.cc357
-rw-r--r--contrib/libs/grpc/src/core/ext/xds/xds_transport_grpc.h136
-rw-r--r--contrib/libs/grpc/src/core/lib/address_utils/parse_address.cc50
-rw-r--r--contrib/libs/grpc/src/core/lib/address_utils/parse_address.h18
-rw-r--r--contrib/libs/grpc/src/core/lib/address_utils/sockaddr_utils.cc86
-rw-r--r--contrib/libs/grpc/src/core/lib/address_utils/sockaddr_utils.h13
-rw-r--r--contrib/libs/grpc/src/core/lib/avl/avl.h99
-rw-r--r--contrib/libs/grpc/src/core/lib/backoff/backoff.cc6
-rw-r--r--contrib/libs/grpc/src/core/lib/backoff/backoff.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/call_finalization.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/call_tracer.h18
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channel_args.cc329
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channel_args.h405
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channel_args_preconditioning.cc17
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channel_args_preconditioning.h8
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channel_fwd.h26
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channel_stack.cc51
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channel_stack.h61
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channel_stack_builder.cc91
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channel_stack_builder.h61
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channel_stack_builder_impl.cc95
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channel_stack_builder_impl.h46
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channel_trace.cc27
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channel_trace.h9
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channelz.cc82
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channelz.h31
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channelz_registry.cc30
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/channelz_registry.h19
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/connected_channel.cc53
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/connected_channel.h3
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/promise_based_filter.cc1109
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/promise_based_filter.h284
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/status_util.cc29
-rw-r--r--contrib/libs/grpc/src/core/lib/channel/status_util.h11
-rw-r--r--contrib/libs/grpc/src/core/lib/compression/compression.cc7
-rw-r--r--contrib/libs/grpc/src/core/lib/compression/compression_internal.cc72
-rw-r--r--contrib/libs/grpc/src/core/lib/compression/compression_internal.h7
-rw-r--r--contrib/libs/grpc/src/core/lib/compression/message_compress.cc4
-rw-r--r--contrib/libs/grpc/src/core/lib/compression/message_compress.h5
-rw-r--r--contrib/libs/grpc/src/core/lib/config/core_configuration.cc9
-rw-r--r--contrib/libs/grpc/src/core/lib/config/core_configuration.h119
-rw-r--r--contrib/libs/grpc/src/core/lib/debug/stats.cc89
-rw-r--r--contrib/libs/grpc/src/core/lib/debug/stats.h27
-rw-r--r--contrib/libs/grpc/src/core/lib/debug/stats_data.cc737
-rw-r--r--contrib/libs/grpc/src/core/lib/debug/stats_data.h537
-rw-r--r--contrib/libs/grpc/src/core/lib/debug/trace.cc2
-rw-r--r--contrib/libs/grpc/src/core/lib/debug/trace.h25
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/channel_args_endpoint_config.cc30
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/channel_args_endpoint_config.h19
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/default_event_engine.cc71
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/default_event_engine.h (renamed from contrib/libs/grpc/src/core/lib/event_engine/event_engine_factory.h)11
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/default_event_engine_factory.cc29
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/default_event_engine_factory.h (renamed from contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolved_address_internal.h)20
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/event_engine.cc52
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/executor/executor.h38
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/executor/threaded_executor.cc36
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/executor/threaded_executor.h44
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/forkable.cc101
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/forkable.h61
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/handle_containers.h67
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/memory_allocator.cc16
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/poller.h56
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/posix_engine/posix_engine.cc143
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/posix_engine/posix_engine.h121
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer.cc311
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer.h193
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_heap.cc107
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_heap.h56
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_manager.cc311
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_manager.h142
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/resolved_address.cc6
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/slice.cc103
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/slice_buffer.cc50
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/sockaddr.cc40
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/sockaddr.h44
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/socket_notifier.h55
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/thread_pool.cc195
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/thread_pool.h114
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/time_util.cc (renamed from contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc)22
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/time_util.h32
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/trace.cc18
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/trace.h (renamed from contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_event_engine.cc)26
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/utils.cc44
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/utils.h37
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/windows/iocp.cc155
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/windows/iocp.h69
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/windows/win_socket.cc196
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/windows/win_socket.h120
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/windows/windows_engine.cc159
-rw-r--r--contrib/libs/grpc/src/core/lib/event_engine/windows/windows_engine.h120
-rw-r--r--contrib/libs/grpc/src/core/lib/experiments/config.cc147
-rw-r--r--contrib/libs/grpc/src/core/lib/experiments/config.h43
-rw-r--r--contrib/libs/grpc/src/core/lib/experiments/experiments.cc75
-rw-r--r--contrib/libs/grpc/src/core/lib/experiments/experiments.h56
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/alloc.cc10
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/env_windows.cc74
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/log.cc5
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/log_windows.cc1
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/string_util_windows.cc33
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/sync_abseil.cc14
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/sync_posix.cc14
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/time.cc20
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/time_posix.cc21
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/time_precise.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/time_windows.cc17
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/tls.h9
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/tmpfile_msys.cc2
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/tmpfile_windows.cc12
-rw-r--r--contrib/libs/grpc/src/core/lib/gpr/useful.h40
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/bitset.h34
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/capture.h76
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/chunked_vector.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/construct_destruct.h1
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/cpp_impl_of.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/debug_location.h46
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/dual_ref_counted.h5
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/env.h (renamed from contrib/libs/grpc/src/core/lib/gpr/env.h)38
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/env_linux.cc (renamed from contrib/libs/grpc/src/core/lib/gpr/env_linux.cc)36
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/env_posix.cc (renamed from contrib/libs/grpc/src/core/lib/gpr/env_posix.cc)21
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/env_windows.cc56
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/examine_stack.h1
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/fork.cc45
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/fork.h8
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/global_config.h6
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/global_config_env.cc18
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/global_config_env.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/global_config_generic.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/host_port.cc2
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/manual_constructor.h69
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/match.h75
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/memory.h6
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/no_destruct.h94
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/notification.h67
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/orphanable.h5
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/overload.h59
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/packed_table.h40
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/ref_counted.h6
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/ref_counted_ptr.h56
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/single_set_ptr.h87
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/sorted_pack.h98
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/stat.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/stat_posix.cc9
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/status_helper.cc69
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/status_helper.h11
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/sync.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/table.h19
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/tchar.cc49
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/tchar.h (renamed from contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc)25
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/thd.h7
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/thd_posix.cc20
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/thd_windows.cc2
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/time.cc49
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/time.h68
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/time_averaged_stats.cc60
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/time_averaged_stats.h (renamed from contrib/libs/grpc/src/core/lib/iomgr/time_averaged_stats.h)51
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/time_util.cc4
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/time_util.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/unique_type_name.h105
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/validation_errors.cc61
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/validation_errors.h111
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/work_serializer.cc (renamed from contrib/libs/grpc/src/core/lib/iomgr/work_serializer.cc)52
-rw-r--r--contrib/libs/grpc/src/core/lib/gprpp/work_serializer.h (renamed from contrib/libs/grpc/src/core/lib/iomgr/work_serializer.h)49
-rw-r--r--contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper.h54
-rw-r--r--contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper_registry.cc71
-rw-r--r--contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper_registry.h76
-rw-r--r--contrib/libs/grpc/src/core/lib/http/format_request.cc42
-rw-r--r--contrib/libs/grpc/src/core/lib/http/format_request.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/http/httpcli.cc199
-rw-r--r--contrib/libs/grpc/src/core/lib/http/httpcli.h68
-rw-r--r--contrib/libs/grpc/src/core/lib/http/httpcli_security_connector.cc54
-rw-r--r--contrib/libs/grpc/src/core/lib/http/httpcli_ssl_credentials.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/http/parser.cc100
-rw-r--r--contrib/libs/grpc/src/core/lib/http/parser.h18
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/call_combiner.cc38
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/closure.h10
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/combiner.cc20
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/endpoint.cc8
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/endpoint.h12
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/endpoint_cfstream.cc15
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_posix.cc22
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_windows.cc4
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/error.cc786
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/error.h153
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/error_cfstream.cc5
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/error_internal.h66
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/ev_epoll1_linux.cc121
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/ev_epoll1_linux.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/ev_epollex_linux.cc1658
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/ev_poll_posix.cc174
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/ev_poll_posix.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/ev_posix.cc152
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/ev_posix.h8
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/event_engine/closure.cc77
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/event_engine/endpoint.cc172
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/event_engine/iomgr.cc85
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/event_engine/pollset.cc87
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolved_address_internal.cc47
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolver.cc133
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/event_engine/tcp.cc296
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/event_engine/timer.cc62
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.cc22
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.h41
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/executor.cc10
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/executor.h3
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/executor/mpmcqueue.cc182
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/executor/mpmcqueue.h171
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/executor/threadpool.cc136
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/executor/threadpool.h150
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/fork_posix.cc4
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/internal_errqueue.cc85
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/internal_errqueue.h7
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/iocp_windows.cc3
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/iomgr.cc8
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/iomgr_fwd.h26
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix.cc1
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix_cfstream.cc1
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/is_epollexclusive_available.cc119
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/load_file.cc2
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/lockfree_event.cc17
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/pollset.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/pollset_set.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/port.h36
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/resolve_address.cc8
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/resolve_address.h67
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/resolve_address_posix.cc73
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/resolve_address_posix.h27
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/resolve_address_windows.cc72
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/resolve_address_windows.h27
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/sockaddr.h5
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/sockaddr_posix.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/sockaddr_utils_posix.cc3
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/sockaddr_windows.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/socket_utils_common_posix.cc51
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/socket_utils_posix.cc84
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/socket_utils_posix.h104
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/socket_windows.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_client.cc18
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_client.h37
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_client_cfstream.cc36
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_client_posix.cc235
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_client_posix.h23
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_client_windows.cc53
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_posix.cc541
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_posix.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_server.cc9
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_server.h15
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_server_posix.cc137
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_common.cc85
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc15
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_server_windows.cc45
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_windows.cc22
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/tcp_windows.h1
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/time_averaged_stats.cc64
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/timer_generic.cc22
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/timer_manager.cc3
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/unix_sockets_posix.cc4
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_eventfd.cc2
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_pipe.cc4
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_posix.cc27
-rw-r--r--contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_posix.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/json/json.h44
-rw-r--r--contrib/libs/grpc/src/core/lib/json/json_args.h34
-rw-r--r--contrib/libs/grpc/src/core/lib/json/json_object_loader.cc202
-rw-r--r--contrib/libs/grpc/src/core/lib/json/json_object_loader.h599
-rw-r--r--contrib/libs/grpc/src/core/lib/json/json_reader.cc156
-rw-r--r--contrib/libs/grpc/src/core/lib/json/json_util.cc38
-rw-r--r--contrib/libs/grpc/src/core/lib/json/json_util.h18
-rw-r--r--contrib/libs/grpc/src/core/lib/json/json_writer.cc8
-rw-r--r--contrib/libs/grpc/src/core/lib/load_balancing/lb_policy.cc (renamed from contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy.cc)53
-rw-r--r--contrib/libs/grpc/src/core/lib/load_balancing/lb_policy.h (renamed from contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy.h)95
-rw-r--r--contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_factory.h49
-rw-r--r--contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_registry.cc142
-rw-r--r--contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_registry.h82
-rw-r--r--contrib/libs/grpc/src/core/lib/load_balancing/subchannel_interface.h (renamed from contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_interface.h)104
-rw-r--r--contrib/libs/grpc/src/core/lib/matchers/matchers.cc9
-rw-r--r--contrib/libs/grpc/src/core/lib/matchers/matchers.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/profiling/basic_timers.cc295
-rw-r--r--contrib/libs/grpc/src/core/lib/profiling/stap_timers.cc50
-rw-r--r--contrib/libs/grpc/src/core/lib/profiling/timers.h94
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/activity.cc3
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/activity.h85
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/arena_promise.h173
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/call_push_pull.h148
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/context.h5
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/detail/basic_seq.h68
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/detail/promise_factory.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/detail/status.h3
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/detail/switch.h1455
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/intra_activity_waiter.h49
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/latch.h103
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/loop.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/map.h1
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/promise.h1
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/race.h1
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/seq.h31
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/sleep.cc99
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/sleep.h65
-rw-r--r--contrib/libs/grpc/src/core/lib/promise/try_seq.h34
-rw-r--r--contrib/libs/grpc/src/core/lib/resolver/resolver.cc42
-rw-r--r--contrib/libs/grpc/src/core/lib/resolver/resolver.h34
-rw-r--r--contrib/libs/grpc/src/core/lib/resolver/resolver_factory.h14
-rw-r--r--contrib/libs/grpc/src/core/lib/resolver/resolver_registry.cc13
-rw-r--r--contrib/libs/grpc/src/core/lib/resolver/resolver_registry.h15
-rw-r--r--contrib/libs/grpc/src/core/lib/resolver/server_address.cc44
-rw-r--r--contrib/libs/grpc/src/core/lib/resolver/server_address.h28
-rw-r--r--contrib/libs/grpc/src/core/lib/resource_quota/api.cc56
-rw-r--r--contrib/libs/grpc/src/core/lib/resource_quota/api.h13
-rw-r--r--contrib/libs/grpc/src/core/lib/resource_quota/arena.cc26
-rw-r--r--contrib/libs/grpc/src/core/lib/resource_quota/arena.h29
-rw-r--r--contrib/libs/grpc/src/core/lib/resource_quota/memory_quota.cc264
-rw-r--r--contrib/libs/grpc/src/core/lib/resource_quota/memory_quota.h154
-rw-r--r--contrib/libs/grpc/src/core/lib/resource_quota/periodic_update.cc78
-rw-r--r--contrib/libs/grpc/src/core/lib/resource_quota/periodic_update.h71
-rw-r--r--contrib/libs/grpc/src/core/lib/resource_quota/resource_quota.h17
-rw-r--r--contrib/libs/grpc/src/core/lib/resource_quota/thread_quota.cc2
-rw-r--r--contrib/libs/grpc/src/core/lib/resource_quota/thread_quota.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider.h14
-rw-r--r--contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc4
-rw-r--r--contrib/libs/grpc/src/core/lib/security/authorization/evaluate_args.cc25
-rw-r--r--contrib/libs/grpc/src/core/lib/security/authorization/evaluate_args.h10
-rw-r--r--contrib/libs/grpc/src/core/lib/security/authorization/grpc_authorization_engine.cc6
-rw-r--r--contrib/libs/grpc/src/core/lib/security/authorization/grpc_authorization_engine.h8
-rw-r--r--contrib/libs/grpc/src/core/lib/security/authorization/grpc_server_authz_filter.cc36
-rw-r--r--contrib/libs/grpc/src/core/lib/security/authorization/grpc_server_authz_filter.h24
-rw-r--r--contrib/libs/grpc/src/core/lib/security/authorization/matchers.cc30
-rw-r--r--contrib/libs/grpc/src/core/lib/security/authorization/matchers.h7
-rw-r--r--contrib/libs/grpc/src/core/lib/security/authorization/rbac_policy.cc4
-rw-r--r--contrib/libs/grpc/src/core/lib/security/authorization/rbac_policy.h8
-rw-r--r--contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_factory.h (renamed from contrib/libs/grpc/src/core/ext/xds/certificate_provider_factory.h)14
-rw-r--r--contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_registry.cc60
-rw-r--r--contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_registry.h70
-rw-r--r--contrib/libs/grpc/src/core/lib/security/context/security_context.cc7
-rw-r--r--contrib/libs/grpc/src/core/lib/security/context/security_context.h25
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/alts/alts_credentials.cc28
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/alts/alts_credentials.h16
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc4
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc5
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/call_creds_util.cc16
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/call_creds_util.h5
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/channel_creds_registry.h9
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/channel_creds_registry_init.cc11
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/composite/composite_credentials.cc43
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/composite/composite_credentials.h42
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/credentials.cc12
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/credentials.h114
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/external/aws_external_account_credentials.cc173
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/external/aws_external_account_credentials.h19
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/external/aws_request_signer.cc9
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/external/external_account_credentials.cc88
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/external/external_account_credentials.h11
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/external/file_external_account_credentials.cc23
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/external/file_external_account_credentials.h7
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/external/url_external_account_credentials.cc34
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/external/url_external_account_credentials.h11
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/fake/fake_credentials.cc57
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/fake/fake_credentials.h32
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/google_default/credentials_generic.cc14
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/google_default/google_default_credentials.cc127
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/google_default/google_default_credentials.h21
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/iam/iam_credentials.cc23
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/iam/iam_credentials.h18
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/insecure/insecure_credentials.cc61
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/insecure/insecure_credentials.h61
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/jwt/json_token.cc23
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/jwt/json_token.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_credentials.cc33
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_credentials.h22
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_verifier.cc57
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_verifier.h8
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/local/local_credentials.cc32
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/local/local_credentials.h16
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc103
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/oauth2/oauth2_credentials.h40
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/plugin/plugin_credentials.cc31
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/plugin/plugin_credentials.h39
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/ssl/ssl_credentials.cc56
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/ssl/ssl_credentials.h26
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc12
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h13
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc56
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h73
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc47
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h82
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc9
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h161
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_credentials.cc71
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_credentials.h21
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_utils.cc6
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_utils.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/xds/xds_credentials.cc159
-rw-r--r--contrib/libs/grpc/src/core/lib/security/credentials/xds/xds_credentials.h55
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/alts/alts_security_connector.cc48
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/alts/alts_security_connector.h9
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/fake/fake_security_connector.cc83
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/fake/fake_security_connector.h6
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc17
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/insecure/insecure_security_connector.h26
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_fallback.cc8
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_supported.cc (renamed from contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_linux.cc)46
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_supported.h (renamed from contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_linux.h)10
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/local/local_security_connector.cc52
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/local/local_security_connector.h10
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/security_connector.cc38
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/security_connector.h43
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc38
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/ssl/ssl_security_connector.h6
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils.cc14
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils.h18
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils_config.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/tls/tls_security_connector.cc48
-rw-r--r--contrib/libs/grpc/src/core/lib/security/security_connector/tls/tls_security_connector.h35
-rw-r--r--contrib/libs/grpc/src/core/lib/security/transport/auth_filters.h21
-rw-r--r--contrib/libs/grpc/src/core/lib/security/transport/client_auth_filter.cc82
-rw-r--r--contrib/libs/grpc/src/core/lib/security/transport/secure_endpoint.cc406
-rw-r--r--contrib/libs/grpc/src/core/lib/security/transport/secure_endpoint.h9
-rw-r--r--contrib/libs/grpc/src/core/lib/security/transport/security_handshaker.cc124
-rw-r--r--contrib/libs/grpc/src/core/lib/security/transport/security_handshaker.h9
-rw-r--r--contrib/libs/grpc/src/core/lib/security/transport/server_auth_filter.cc35
-rw-r--r--contrib/libs/grpc/src/core/lib/security/util/json_util.cc6
-rw-r--r--contrib/libs/grpc/src/core/lib/security/util/json_util.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/service_config/service_config.h23
-rw-r--r--contrib/libs/grpc/src/core/lib/service_config/service_config_call_data.h8
-rw-r--r--contrib/libs/grpc/src/core/lib/service_config/service_config_impl.cc202
-rw-r--r--contrib/libs/grpc/src/core/lib/service_config/service_config_impl.h38
-rw-r--r--contrib/libs/grpc/src/core/lib/service_config/service_config_parser.cc60
-rw-r--r--contrib/libs/grpc/src/core/lib/service_config/service_config_parser.h35
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/b64.cc2
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/b64.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/percent_encoding.cc20
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/percent_encoding.h6
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/slice.cc17
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/slice.h16
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/slice_api.cc2
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/slice_buffer.cc102
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/slice_buffer.h138
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/slice_buffer_api.cc35
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/slice_internal.h8
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/slice_refcount.h5
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/slice_refcount_base.h5
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/slice_split.cc100
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/slice_split.h40
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/slice_string_helpers.cc16
-rw-r--r--contrib/libs/grpc/src/core/lib/slice/slice_string_helpers.h9
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/builtins.cc9
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/byte_buffer.cc8
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/byte_buffer_reader.cc8
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/call.cc2027
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/call.h38
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/call_details.cc8
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/call_log_batch.cc9
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/call_test_only.h5
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/channel.cc421
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/channel.h156
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/channel_init.cc5
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/channel_init.h8
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/channel_ping.cc10
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/channel_stack_type.cc2
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/channel_stack_type.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/completion_queue.cc96
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/completion_queue.h14
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/completion_queue_factory.cc6
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/completion_queue_factory.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/event_string.cc8
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/event_string.h2
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/init.cc96
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/init.h8
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/init_internally.cc (renamed from contrib/libs/grpc/src/core/ext/filters/max_age/max_age_filter.h)16
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/init_internally.h28
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/lame_client.cc171
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/lame_client.h44
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/metadata_array.cc2
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/server.cc179
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/server.h73
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/validate_metadata.cc27
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/validate_metadata.h3
-rw-r--r--contrib/libs/grpc/src/core/lib/surface/version.cc4
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/bdp_estimator.cc4
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/bdp_estimator.h5
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/byte_stream.cc162
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/byte_stream.h166
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/connectivity_state.cc10
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/connectivity_state.h7
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/error_utils.cc52
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/error_utils.h7
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/handshaker.cc (renamed from contrib/libs/grpc/src/core/lib/channel/handshaker.cc)36
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/handshaker.h (renamed from contrib/libs/grpc/src/core/lib/channel/handshaker.h)26
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/handshaker_factory.h (renamed from contrib/libs/grpc/src/core/lib/channel/handshaker_factory.h)22
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/handshaker_registry.cc (renamed from contrib/libs/grpc/src/core/lib/channel/handshaker_registry.cc)9
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/handshaker_registry.h (renamed from contrib/libs/grpc/src/core/lib/channel/handshaker_registry.h)15
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/http_connect_handshaker.cc (renamed from contrib/libs/grpc/src/core/ext/filters/client_channel/http_connect_handshaker.cc)73
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/http_connect_handshaker.h (renamed from contrib/libs/grpc/src/core/ext/filters/client_channel/http_connect_handshaker.h)6
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/metadata_batch.cc291
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/metadata_batch.h483
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/parsed_metadata.cc2
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/parsed_metadata.h21
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/status_conversion.cc2
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/status_conversion.h4
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/tcp_connect_handshaker.cc251
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/tcp_connect_handshaker.h39
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/timeout_encoding.cc8
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/timeout_encoding.h6
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/transport.cc38
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/transport.h98
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/transport_fwd.h20
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/transport_impl.h17
-rw-r--r--contrib/libs/grpc/src/core/lib/transport/transport_op_string.cc36
-rw-r--r--contrib/libs/grpc/src/core/lib/uri/uri_parser.cc14
-rw-r--r--contrib/libs/grpc/src/core/lib/uri/uri_parser.h2
-rw-r--r--contrib/libs/grpc/src/core/plugin_registry/grpc_plugin_registry.cc78
-rw-r--r--contrib/libs/grpc/src/core/plugin_registry/grpc_plugin_registry_extra.cc38
-rw-r--r--contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_handshaker_client.cc61
-rw-r--r--contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_handshaker_client.h2
-rw-r--r--contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc23
-rw-r--r--contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h2
-rw-r--r--contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc10
-rw-r--r--contrib/libs/grpc/src/core/tsi/fake_transport_security.cc97
-rw-r--r--contrib/libs/grpc/src/core/tsi/fake_transport_security.h6
-rw-r--r--contrib/libs/grpc/src/core/tsi/local_transport_security.cc14
-rw-r--r--contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session.h2
-rw-r--r--contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc2
-rw-r--r--contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_cache.h11
-rw-r--r--contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc2
-rw-r--r--contrib/libs/grpc/src/core/tsi/ssl_transport_security.cc167
-rw-r--r--contrib/libs/grpc/src/core/tsi/ssl_transport_security.h10
-rw-r--r--contrib/libs/grpc/src/core/tsi/transport_security.cc24
-rw-r--r--contrib/libs/grpc/src/core/tsi/transport_security.h3
-rw-r--r--contrib/libs/grpc/src/core/tsi/transport_security_grpc.cc5
-rw-r--r--contrib/libs/grpc/src/core/tsi/transport_security_grpc.h7
-rw-r--r--contrib/libs/grpc/src/core/tsi/transport_security_interface.h25
-rwxr-xr-xcontrib/libs/grpc/src/cpp/README.md16
-rw-r--r--contrib/libs/grpc/src/cpp/client/channel_cc.cc21
-rw-r--r--contrib/libs/grpc/src/cpp/client/client_callback.cc7
-rw-r--r--contrib/libs/grpc/src/cpp/client/client_context.cc22
-rw-r--r--contrib/libs/grpc/src/cpp/client/client_interceptor.cc3
-rw-r--r--contrib/libs/grpc/src/cpp/client/create_channel.cc8
-rw-r--r--contrib/libs/grpc/src/cpp/client/create_channel_internal.cc2
-rw-r--r--contrib/libs/grpc/src/cpp/client/create_channel_internal.h5
-rw-r--r--contrib/libs/grpc/src/cpp/client/create_channel_posix.cc20
-rw-r--r--contrib/libs/grpc/src/cpp/client/insecure_credentials.cc9
-rw-r--r--contrib/libs/grpc/src/cpp/client/secure_credentials.cc64
-rw-r--r--contrib/libs/grpc/src/cpp/client/secure_credentials.h16
-rw-r--r--contrib/libs/grpc/src/cpp/client/xds_credentials.cc7
-rw-r--r--contrib/libs/grpc/src/cpp/codegen/codegen_init.cc2
-rw-r--r--contrib/libs/grpc/src/cpp/common/alarm.cc14
-rw-r--r--contrib/libs/grpc/src/cpp/common/auth_property_iterator.cc3
-rw-r--r--contrib/libs/grpc/src/cpp/common/channel_arguments.cc12
-rw-r--r--contrib/libs/grpc/src/cpp/common/channel_filter.cc17
-rw-r--r--contrib/libs/grpc/src/cpp/common/channel_filter.h47
-rw-r--r--contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc11
-rw-r--r--contrib/libs/grpc/src/cpp/common/core_codegen.cc16
-rw-r--r--contrib/libs/grpc/src/cpp/common/resource_quota_cc.cc6
-rw-r--r--contrib/libs/grpc/src/cpp/common/secure_auth_context.cc2
-rw-r--r--contrib/libs/grpc/src/cpp/common/secure_auth_context.h7
-rw-r--r--contrib/libs/grpc/src/cpp/common/secure_channel_arguments.cc10
-rw-r--r--contrib/libs/grpc/src/cpp/common/secure_create_auth_context.cc3
-rw-r--r--contrib/libs/grpc/src/cpp/common/tls_certificate_provider.cc7
-rw-r--r--contrib/libs/grpc/src/cpp/common/tls_certificate_verifier.cc20
-rw-r--r--contrib/libs/grpc/src/cpp/common/tls_credentials_options.cc11
-rw-r--r--contrib/libs/grpc/src/cpp/common/validate_service_config.cc18
-rw-r--r--contrib/libs/grpc/src/cpp/common/version_cc.cc8
-rw-r--r--contrib/libs/grpc/src/cpp/ext/proto_server_reflection.cc3
-rw-r--r--contrib/libs/grpc/src/cpp/ext/proto_server_reflection.h7
-rw-r--r--contrib/libs/grpc/src/cpp/ext/proto_server_reflection_plugin.cc2
-rw-r--r--contrib/libs/grpc/src/cpp/server/async_generic_service.cc1
-rw-r--r--contrib/libs/grpc/src/cpp/server/channel_argument_option.cc9
-rw-r--r--contrib/libs/grpc/src/cpp/server/channelz/channelz_service.cc4
-rw-r--r--contrib/libs/grpc/src/cpp/server/channelz/channelz_service.h2
-rw-r--r--contrib/libs/grpc/src/cpp/server/channelz/channelz_service_plugin.cc7
-rw-r--r--contrib/libs/grpc/src/cpp/server/create_default_thread_pool.cc1
-rw-r--r--contrib/libs/grpc/src/cpp/server/dynamic_thread_pool.cc3
-rw-r--r--contrib/libs/grpc/src/cpp/server/dynamic_thread_pool.h4
-rw-r--r--contrib/libs/grpc/src/cpp/server/external_connection_acceptor_impl.cc3
-rw-r--r--contrib/libs/grpc/src/cpp/server/external_connection_acceptor_impl.h4
-rw-r--r--contrib/libs/grpc/src/cpp/server/health/default_health_check_service.cc421
-rw-r--r--contrib/libs/grpc/src/cpp/server/health/default_health_check_service.h250
-rw-r--r--contrib/libs/grpc/src/cpp/server/health/health_check_service_server_builder_option.cc7
-rw-r--r--contrib/libs/grpc/src/cpp/server/insecure_server_credentials.cc7
-rw-r--r--contrib/libs/grpc/src/cpp/server/orca/call_metric_recorder.cc117
-rw-r--r--contrib/libs/grpc/src/cpp/server/secure_server_credentials.cc13
-rw-r--r--contrib/libs/grpc/src/cpp/server/secure_server_credentials.h9
-rw-r--r--contrib/libs/grpc/src/cpp/server/server_builder.cc37
-rw-r--r--contrib/libs/grpc/src/cpp/server/server_callback.cc2
-rw-r--r--contrib/libs/grpc/src/cpp/server/server_cc.cc114
-rw-r--r--contrib/libs/grpc/src/cpp/server/server_context.cc48
-rw-r--r--contrib/libs/grpc/src/cpp/server/server_posix.cc2
-rw-r--r--contrib/libs/grpc/src/cpp/server/xds_server_credentials.cc7
-rw-r--r--contrib/libs/grpc/src/cpp/thread_manager/thread_manager.cc5
-rw-r--r--contrib/libs/grpc/src/cpp/thread_manager/thread_manager.h5
-rw-r--r--contrib/libs/grpc/src/cpp/util/byte_buffer_cc.cc7
-rw-r--r--contrib/libs/grpc/src/cpp/util/string_ref.cc2
-rw-r--r--contrib/libs/grpc/src/cpp/util/time_cc.cc7
-rw-r--r--contrib/libs/grpc/third_party/README.md9
-rw-r--r--contrib/libs/grpc/third_party/upb/CMakeLists.darwin-x86_64.txt8
-rw-r--r--contrib/libs/grpc/third_party/upb/CMakeLists.linux-aarch64.txt8
-rw-r--r--contrib/libs/grpc/third_party/upb/CMakeLists.linux-x86_64.txt8
-rw-r--r--contrib/libs/grpc/third_party/upb/CMakeLists.windows-x86_64.txt8
-rw-r--r--contrib/libs/grpc/third_party/upb/DESIGN.md4
-rw-r--r--contrib/libs/grpc/third_party/upb/README.md16
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/arena.c277
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/arena.h225
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/array.c114
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/array.h83
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/decode.c264
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/decode.h1
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/decode_fast.c2
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/def.c185
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/def.h24
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/def.hpp11
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/encode.c71
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/encode.h22
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/extension_registry.c93
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/extension_registry.h84
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/internal/decode.h (renamed from contrib/libs/grpc/third_party/upb/upb/decode_internal.h)10
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/internal/table.h (renamed from contrib/libs/grpc/third_party/upb/upb/table_internal.h)12
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/internal/upb.h (renamed from contrib/libs/grpc/third_party/upb/upb/upb_internal.h)6
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/internal/vsnprintf_compat.h52
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/json_decode.c1512
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/json_decode.h47
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/json_encode.c780
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/json_encode.h65
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/map.c108
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/map.h117
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/message_value.h66
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/mini_table.c1147
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/mini_table.h189
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/msg.c74
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/msg.h48
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/msg_internal.h135
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/port_def.inc11
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/port_undef.inc2
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/reflection.c161
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/reflection.h114
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/status.c86
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/status.h66
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/table.c20
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/text_encode.c5
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/upb.c294
-rw-r--r--contrib/libs/grpc/third_party/upb/upb/upb.h175
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/cleanup/cleanup.h140
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/cleanup/internal/cleanup.h100
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/container/flat_hash_set.h503
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/functional/any_invocable.h316
-rw-r--r--contrib/restricted/abseil-cpp-tstring/y_absl/functional/internal/any_invocable.h878
-rw-r--r--library/cpp/unified_agent_client/grpc_io.cpp3
-rw-r--r--ydb/library/ycloud/impl/folder_service_ut.cpp4
1309 files changed, 88453 insertions, 52919 deletions
diff --git a/contrib/libs/grpc/BUILDING.md b/contrib/libs/grpc/BUILDING.md
index 80dadc64fc..399990ca67 100644
--- a/contrib/libs/grpc/BUILDING.md
+++ b/contrib/libs/grpc/BUILDING.md
@@ -1,8 +1,8 @@
gRPC C++ - Building from source
===========================
-This document has detailed instructions on how to build gRPC C++ from source. Note that it only covers the build of gRPC itself and is mostly meant for gRPC C++ contributors and/or power users.
-Other should follow the user instructions. See the [How to use](https://github.com/grpc/grpc/tree/master/src/cpp#to-start-using-grpc-c) instructions for guidance on how to add gRPC as a dependency to a C++ application (there are several ways and system wide installation is often not the best choice).
+This document has detailed instructions on how to build gRPC C++ from source. Note that it only covers the build of gRPC itself and is meant for gRPC C++ contributors and/or power users.
+Other should follow the user instructions. See the [How to use](https://github.com/grpc/grpc/tree/master/src/cpp#to-start-using-grpc-c) instructions for guidance on how to add gRPC as a dependency to a C++ application (there are several ways and system-wide installation is often not the best choice).
# Pre-requisites
@@ -55,7 +55,7 @@ installed by `brew` is being used:
## Windows
To prepare for cmake + Microsoft Visual C++ compiler build
-- Install Visual Studio 2015 or 2017 (Visual C++ compiler will be used).
+- Install Visual Studio 2017 or later (Visual C++ compiler will be used).
- Install [Git](https://git-scm.com/).
- Install [CMake](https://cmake.org/download/).
- Install [nasm](https://www.nasm.us/) and add it to `PATH` (`choco install nasm`) - *required by boringssl*
@@ -88,14 +88,14 @@ with something else than `bazel` (e.g. `cmake`).
# Build from source
-In the C++ world, there's no "standard" build system that would work for in all supported use cases and on all supported platforms.
+In the C++ world, there's no "standard" build system that would work for all supported use cases and on all supported platforms.
Therefore, gRPC supports several major build systems, which should satisfy most users. Depending on your needs
we recommend building using `bazel` or `cmake`.
## Building with bazel (recommended)
-Bazel is the primary build system for gRPC C++ and if you're comfortable with using bazel, we can certainly recommend it.
-Using bazel will give you the best developer experience as well as faster and cleaner builds.
+Bazel is the primary build system for gRPC C++. If you're comfortable using bazel, we can certainly recommend it.
+Using bazel will give you the best developer experience in addition to faster and cleaner builds.
You'll need `bazel` version `1.0.0` or higher to build gRPC.
See [Installing Bazel](https://docs.bazel.build/versions/master/install.html) for instructions how to install bazel on your system.
@@ -112,14 +112,14 @@ $ bazel build :all
$ bazel test --config=dbg //test/...
```
-NOTE: If you are gRPC maintainer and you have access to our test cluster, you should use the our [gRPC's Remote Execution environment](tools/remote_build/README.md)
+NOTE: If you are a gRPC maintainer and you have access to our test cluster, you should use our [gRPC's Remote Execution environment](tools/remote_build/README.md)
to get significant improvement to the build and test speed (and a bunch of other very useful features).
## Building with CMake
### Linux/Unix, Using Make
-Run from grpc directory after cloning the repo with --recursive or updating submodules.
+Run from the grpc directory after cloning the repo with --recursive or updating submodules.
```
$ mkdir -p cmake/build
$ cd cmake/build
@@ -133,7 +133,7 @@ If you want to build shared libraries (`.so` files), run `cmake` with `-DBUILD_S
When using the "Visual Studio" generator,
cmake will generate a solution (`grpc.sln`) that contains a VS project for
-every target defined in `CMakeLists.txt` (+ few extra convenience projects
+every target defined in `CMakeLists.txt` (+ a few extra convenience projects
added automatically by cmake). After opening the solution with Visual Studio
you will be able to browse and build the code.
```
diff --git a/contrib/libs/grpc/CMakeLists.darwin-x86_64.txt b/contrib/libs/grpc/CMakeLists.darwin-x86_64.txt
index 685a79876b..df350ed509 100644
--- a/contrib/libs/grpc/CMakeLists.darwin-x86_64.txt
+++ b/contrib/libs/grpc/CMakeLists.darwin-x86_64.txt
@@ -59,6 +59,8 @@ target_link_libraries(contrib-libs-grpc PUBLIC
)
target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/census/grpc_context.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/channel_idle/channel_idle_filter.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/channel_idle/idle_filter_state.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/backend_metric.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/backup_poller.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/channel_connectivity.cc
@@ -70,9 +72,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/dynamic_filters.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/global_subchannel_pool.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/health/health_check_client.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/http_connect_handshaker.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/http_proxy.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc
@@ -80,6 +80,8 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc
@@ -90,22 +92,19 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/local_subchannel_pool.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/polling_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.cc
@@ -115,8 +114,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_pool_interface.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_idle/client_idle_filter.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_idle/idle_filter_state.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_stream_client.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/deadline/deadline_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/fault_injection/service_config_parser.cc
@@ -126,7 +124,6 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_decompress_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/server/http_server_filter.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/max_age/max_age_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/message_size/message_size_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_service_config_parser.cc
@@ -157,6 +154,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_encoder.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/context_list.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/decode_huff.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/flow_control.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_data.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.cc
@@ -180,6 +178,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c
@@ -233,6 +232,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c
@@ -244,6 +244,8 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c
@@ -271,6 +273,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/range.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c
@@ -294,6 +297,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/security.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c
@@ -313,6 +317,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c
@@ -320,6 +325,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c
@@ -373,6 +379,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c
@@ -411,6 +418,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c
@@ -428,6 +436,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c
@@ -450,26 +459,30 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/certificate_provider_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/certificate_provider_store.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/file_watcher_certificate_provider_factory.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap_grpc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_certificate_provider.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_channel_stack_modifier.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_client.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_client_grpc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_client_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_cluster.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_cluster_specifier_plugin.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_common_types.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_endpoint.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_http_fault_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_http_filters.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_http_rbac_filter.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_lb_policy_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_listener.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_resource_type.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_route_config.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_routing.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_server_config_fetcher.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_transport_grpc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/address_utils/parse_address.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/address_utils/sockaddr_utils.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/backoff/backoff.cc
@@ -477,12 +490,11 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_args_preconditioning.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_stack.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder_impl.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_trace.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channelz.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channelz_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/connected_channel.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/handshaker.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/handshaker_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/promise_based_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/status_util.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/compression.cc
@@ -493,20 +505,33 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/debug/stats_data.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/debug/trace.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/channel_args_endpoint_config.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine_factory.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/event_engine.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/executor/threaded_executor.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/forkable.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/memory_allocator.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/posix_engine.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_heap.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_manager.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/resolved_address.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/sockaddr.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/slice.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/slice_buffer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/thread_pool.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/time_util.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/trace.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/utils.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/windows/iocp.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/windows/win_socket.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/windows/windows_engine.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/experiments/config.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/experiments/experiments.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/alloc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/atm.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_iphone.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_linux.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/env_linux.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/env_posix.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/env_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log_android.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log_linux.cc
@@ -529,6 +554,9 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/tmpfile_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/tmpfile_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/wrap_memcpy.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/env_linux.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/env_posix.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/env_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/examine_stack.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/fork.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/global_config_env.cc
@@ -537,10 +565,15 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/stat_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/stat_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/status_helper.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/tchar.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/thd_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/thd_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/time.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/time_averaged_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/time_util.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/validation_errors.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/work_serializer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/http/format_request.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/http/httpcli.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/http/httpcli_security_connector.cc
@@ -552,29 +585,17 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/dualstack_socket_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_cfstream.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/error.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/error_cfstream.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_apple.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_epoll1_linux.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_epollex_linux.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_poll_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/closure.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/endpoint.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/iomgr.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/pollset.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolved_address_internal.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolver.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/tcp.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/timer.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/executor.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/executor/mpmcqueue.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/executor/threadpool.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/fork_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/fork_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/gethostname_fallback.cc
@@ -589,7 +610,6 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix_cfstream.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/is_epollexclusive_available.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/load_file.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/lockfree_event.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/polling_entity.cc
@@ -620,7 +640,6 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/time_averaged_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/timer.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/timer_generic.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/timer_heap.cc
@@ -631,13 +650,13 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_nospecial.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_pipe.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_posix.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/work_serializer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_object_loader.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_reader.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_util.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_writer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/matchers/matchers.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/profiling/basic_timers.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/profiling/stap_timers.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/promise/activity.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/promise/sleep.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resolver/resolver.cc
@@ -646,6 +665,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/arena.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/memory_quota.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/periodic_update.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/resource_quota.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/thread_quota.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/trace.cc
@@ -655,6 +675,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/grpc_server_authz_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/matchers.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/rbac_policy.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/context/security_context.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/alts_credentials.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/check_gcp_environment.cc
@@ -697,7 +718,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/fake/fake_security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_fallback.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_linux.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_supported.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/local/local_security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc
@@ -717,8 +738,8 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_buffer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_buffer_api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_refcount.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_split.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_string_helpers.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/api_trace.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/builtins.cc
@@ -735,18 +756,23 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/completion_queue_factory.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/event_string.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/init.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/init_internally.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/lame_client.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/metadata_array.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/server.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/validate_metadata.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/version.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/bdp_estimator.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/byte_stream.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/connectivity_state.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/error_utils.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/handshaker.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/handshaker_registry.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/http_connect_handshaker.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/metadata_batch.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/parsed_metadata.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/pid_controller.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/status_conversion.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/tcp_connect_handshaker.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/timeout_encoding.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/transport.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/transport_op_string.cc
@@ -818,6 +844,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/health/health_check_service.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/health/health_check_service_server_builder_option.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/insecure_server_credentials.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/orca/call_metric_recorder.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/secure_server_credentials.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_builder.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_callback.cc
diff --git a/contrib/libs/grpc/CMakeLists.linux-aarch64.txt b/contrib/libs/grpc/CMakeLists.linux-aarch64.txt
index 3492a1c28c..9ab9aa0704 100644
--- a/contrib/libs/grpc/CMakeLists.linux-aarch64.txt
+++ b/contrib/libs/grpc/CMakeLists.linux-aarch64.txt
@@ -60,6 +60,8 @@ target_link_libraries(contrib-libs-grpc PUBLIC
)
target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/census/grpc_context.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/channel_idle/channel_idle_filter.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/channel_idle/idle_filter_state.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/backend_metric.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/backup_poller.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/channel_connectivity.cc
@@ -71,9 +73,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/dynamic_filters.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/global_subchannel_pool.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/health/health_check_client.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/http_connect_handshaker.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/http_proxy.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc
@@ -81,6 +81,8 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc
@@ -91,22 +93,19 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/local_subchannel_pool.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/polling_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.cc
@@ -116,8 +115,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_pool_interface.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_idle/client_idle_filter.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_idle/idle_filter_state.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_stream_client.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/deadline/deadline_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/fault_injection/service_config_parser.cc
@@ -127,7 +125,6 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_decompress_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/server/http_server_filter.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/max_age/max_age_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/message_size/message_size_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_service_config_parser.cc
@@ -158,6 +155,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_encoder.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/context_list.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/decode_huff.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/flow_control.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_data.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.cc
@@ -181,6 +179,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c
@@ -234,6 +233,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c
@@ -245,6 +245,8 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c
@@ -272,6 +274,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/range.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c
@@ -295,6 +298,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/security.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c
@@ -314,6 +318,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c
@@ -321,6 +326,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c
@@ -374,6 +380,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c
@@ -412,6 +419,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c
@@ -429,6 +437,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c
@@ -451,26 +460,30 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/certificate_provider_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/certificate_provider_store.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/file_watcher_certificate_provider_factory.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap_grpc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_certificate_provider.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_channel_stack_modifier.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_client.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_client_grpc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_client_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_cluster.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_cluster_specifier_plugin.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_common_types.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_endpoint.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_http_fault_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_http_filters.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_http_rbac_filter.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_lb_policy_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_listener.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_resource_type.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_route_config.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_routing.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_server_config_fetcher.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_transport_grpc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/address_utils/parse_address.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/address_utils/sockaddr_utils.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/backoff/backoff.cc
@@ -478,12 +491,11 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_args_preconditioning.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_stack.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder_impl.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_trace.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channelz.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channelz_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/connected_channel.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/handshaker.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/handshaker_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/promise_based_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/status_util.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/compression.cc
@@ -494,20 +506,33 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/debug/stats_data.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/debug/trace.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/channel_args_endpoint_config.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine_factory.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/event_engine.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/executor/threaded_executor.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/forkable.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/memory_allocator.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/posix_engine.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_heap.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_manager.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/resolved_address.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/sockaddr.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/slice.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/slice_buffer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/thread_pool.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/time_util.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/trace.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/utils.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/windows/iocp.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/windows/win_socket.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/windows/windows_engine.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/experiments/config.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/experiments/experiments.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/alloc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/atm.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_iphone.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_linux.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/env_linux.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/env_posix.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/env_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log_android.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log_linux.cc
@@ -530,6 +555,9 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/tmpfile_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/tmpfile_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/wrap_memcpy.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/env_linux.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/env_posix.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/env_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/examine_stack.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/fork.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/global_config_env.cc
@@ -538,10 +566,15 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/stat_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/stat_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/status_helper.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/tchar.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/thd_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/thd_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/time.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/time_averaged_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/time_util.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/validation_errors.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/work_serializer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/http/format_request.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/http/httpcli.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/http/httpcli_security_connector.cc
@@ -553,29 +586,17 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/dualstack_socket_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_cfstream.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/error.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/error_cfstream.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_apple.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_epoll1_linux.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_epollex_linux.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_poll_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/closure.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/endpoint.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/iomgr.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/pollset.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolved_address_internal.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolver.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/tcp.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/timer.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/executor.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/executor/mpmcqueue.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/executor/threadpool.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/fork_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/fork_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/gethostname_fallback.cc
@@ -590,7 +611,6 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix_cfstream.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/is_epollexclusive_available.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/load_file.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/lockfree_event.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/polling_entity.cc
@@ -621,7 +641,6 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/time_averaged_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/timer.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/timer_generic.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/timer_heap.cc
@@ -632,13 +651,13 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_nospecial.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_pipe.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_posix.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/work_serializer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_object_loader.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_reader.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_util.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_writer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/matchers/matchers.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/profiling/basic_timers.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/profiling/stap_timers.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/promise/activity.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/promise/sleep.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resolver/resolver.cc
@@ -647,6 +666,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/arena.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/memory_quota.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/periodic_update.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/resource_quota.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/thread_quota.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/trace.cc
@@ -656,6 +676,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/grpc_server_authz_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/matchers.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/rbac_policy.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/context/security_context.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/alts_credentials.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/check_gcp_environment.cc
@@ -698,7 +719,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/fake/fake_security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_fallback.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_linux.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_supported.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/local/local_security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc
@@ -718,8 +739,8 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_buffer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_buffer_api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_refcount.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_split.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_string_helpers.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/api_trace.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/builtins.cc
@@ -736,18 +757,23 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/completion_queue_factory.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/event_string.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/init.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/init_internally.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/lame_client.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/metadata_array.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/server.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/validate_metadata.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/version.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/bdp_estimator.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/byte_stream.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/connectivity_state.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/error_utils.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/handshaker.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/handshaker_registry.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/http_connect_handshaker.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/metadata_batch.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/parsed_metadata.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/pid_controller.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/status_conversion.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/tcp_connect_handshaker.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/timeout_encoding.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/transport.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/transport_op_string.cc
@@ -819,6 +845,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/health/health_check_service.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/health/health_check_service_server_builder_option.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/insecure_server_credentials.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/orca/call_metric_recorder.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/secure_server_credentials.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_builder.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_callback.cc
diff --git a/contrib/libs/grpc/CMakeLists.linux-x86_64.txt b/contrib/libs/grpc/CMakeLists.linux-x86_64.txt
index 3492a1c28c..9ab9aa0704 100644
--- a/contrib/libs/grpc/CMakeLists.linux-x86_64.txt
+++ b/contrib/libs/grpc/CMakeLists.linux-x86_64.txt
@@ -60,6 +60,8 @@ target_link_libraries(contrib-libs-grpc PUBLIC
)
target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/census/grpc_context.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/channel_idle/channel_idle_filter.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/channel_idle/idle_filter_state.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/backend_metric.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/backup_poller.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/channel_connectivity.cc
@@ -71,9 +73,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/dynamic_filters.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/global_subchannel_pool.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/health/health_check_client.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/http_connect_handshaker.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/http_proxy.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc
@@ -81,6 +81,8 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc
@@ -91,22 +93,19 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/local_subchannel_pool.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/polling_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.cc
@@ -116,8 +115,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_pool_interface.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_idle/client_idle_filter.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_idle/idle_filter_state.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_stream_client.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/deadline/deadline_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/fault_injection/service_config_parser.cc
@@ -127,7 +125,6 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_decompress_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/server/http_server_filter.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/max_age/max_age_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/message_size/message_size_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_service_config_parser.cc
@@ -158,6 +155,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_encoder.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/context_list.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/decode_huff.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/flow_control.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_data.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.cc
@@ -181,6 +179,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c
@@ -234,6 +233,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c
@@ -245,6 +245,8 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c
@@ -272,6 +274,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/range.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c
@@ -295,6 +298,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/security.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c
@@ -314,6 +318,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c
@@ -321,6 +326,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c
@@ -374,6 +380,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c
@@ -412,6 +419,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c
@@ -429,6 +437,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c
@@ -451,26 +460,30 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/certificate_provider_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/certificate_provider_store.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/file_watcher_certificate_provider_factory.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap_grpc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_certificate_provider.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_channel_stack_modifier.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_client.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_client_grpc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_client_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_cluster.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_cluster_specifier_plugin.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_common_types.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_endpoint.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_http_fault_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_http_filters.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_http_rbac_filter.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_lb_policy_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_listener.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_resource_type.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_route_config.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_routing.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_server_config_fetcher.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_transport_grpc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/address_utils/parse_address.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/address_utils/sockaddr_utils.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/backoff/backoff.cc
@@ -478,12 +491,11 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_args_preconditioning.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_stack.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder_impl.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_trace.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channelz.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channelz_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/connected_channel.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/handshaker.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/handshaker_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/promise_based_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/status_util.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/compression.cc
@@ -494,20 +506,33 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/debug/stats_data.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/debug/trace.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/channel_args_endpoint_config.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine_factory.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/event_engine.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/executor/threaded_executor.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/forkable.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/memory_allocator.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/posix_engine.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_heap.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_manager.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/resolved_address.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/sockaddr.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/slice.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/slice_buffer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/thread_pool.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/time_util.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/trace.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/utils.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/windows/iocp.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/windows/win_socket.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/windows/windows_engine.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/experiments/config.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/experiments/experiments.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/alloc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/atm.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_iphone.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_linux.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/env_linux.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/env_posix.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/env_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log_android.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log_linux.cc
@@ -530,6 +555,9 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/tmpfile_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/tmpfile_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/wrap_memcpy.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/env_linux.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/env_posix.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/env_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/examine_stack.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/fork.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/global_config_env.cc
@@ -538,10 +566,15 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/stat_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/stat_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/status_helper.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/tchar.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/thd_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/thd_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/time.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/time_averaged_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/time_util.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/validation_errors.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/work_serializer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/http/format_request.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/http/httpcli.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/http/httpcli_security_connector.cc
@@ -553,29 +586,17 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/dualstack_socket_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_cfstream.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/error.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/error_cfstream.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_apple.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_epoll1_linux.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_epollex_linux.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_poll_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/closure.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/endpoint.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/iomgr.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/pollset.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolved_address_internal.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolver.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/tcp.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/timer.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/executor.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/executor/mpmcqueue.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/executor/threadpool.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/fork_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/fork_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/gethostname_fallback.cc
@@ -590,7 +611,6 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix_cfstream.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/is_epollexclusive_available.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/load_file.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/lockfree_event.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/polling_entity.cc
@@ -621,7 +641,6 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/time_averaged_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/timer.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/timer_generic.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/timer_heap.cc
@@ -632,13 +651,13 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_nospecial.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_pipe.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_posix.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/work_serializer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_object_loader.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_reader.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_util.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_writer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/matchers/matchers.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/profiling/basic_timers.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/profiling/stap_timers.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/promise/activity.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/promise/sleep.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resolver/resolver.cc
@@ -647,6 +666,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/arena.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/memory_quota.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/periodic_update.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/resource_quota.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/thread_quota.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/trace.cc
@@ -656,6 +676,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/grpc_server_authz_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/matchers.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/rbac_policy.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/context/security_context.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/alts_credentials.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/check_gcp_environment.cc
@@ -698,7 +719,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/fake/fake_security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_fallback.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_linux.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_supported.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/local/local_security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc
@@ -718,8 +739,8 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_buffer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_buffer_api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_refcount.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_split.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_string_helpers.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/api_trace.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/builtins.cc
@@ -736,18 +757,23 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/completion_queue_factory.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/event_string.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/init.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/init_internally.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/lame_client.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/metadata_array.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/server.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/validate_metadata.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/version.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/bdp_estimator.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/byte_stream.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/connectivity_state.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/error_utils.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/handshaker.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/handshaker_registry.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/http_connect_handshaker.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/metadata_batch.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/parsed_metadata.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/pid_controller.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/status_conversion.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/tcp_connect_handshaker.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/timeout_encoding.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/transport.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/transport_op_string.cc
@@ -819,6 +845,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/health/health_check_service.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/health/health_check_service_server_builder_option.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/insecure_server_credentials.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/orca/call_metric_recorder.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/secure_server_credentials.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_builder.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_callback.cc
diff --git a/contrib/libs/grpc/CMakeLists.windows-x86_64.txt b/contrib/libs/grpc/CMakeLists.windows-x86_64.txt
index 029fc35620..00ac8bd7d0 100644
--- a/contrib/libs/grpc/CMakeLists.windows-x86_64.txt
+++ b/contrib/libs/grpc/CMakeLists.windows-x86_64.txt
@@ -58,6 +58,8 @@ target_link_libraries(contrib-libs-grpc PUBLIC
)
target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/census/grpc_context.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/channel_idle/channel_idle_filter.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/channel_idle/idle_filter_state.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/backend_metric.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/backup_poller.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/channel_connectivity.cc
@@ -69,9 +71,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/dynamic_filters.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/global_subchannel_pool.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/health/health_check_client.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/http_connect_handshaker.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/http_proxy.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc
@@ -79,6 +79,8 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc
@@ -89,22 +91,19 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/local_subchannel_pool.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/polling_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.cc
@@ -114,8 +113,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_pool_interface.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_idle/client_idle_filter.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_idle/idle_filter_state.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_stream_client.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/deadline/deadline_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/fault_injection/service_config_parser.cc
@@ -125,7 +123,6 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_decompress_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/http/server/http_server_filter.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/max_age/max_age_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/message_size/message_size_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_service_config_parser.cc
@@ -156,6 +153,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_encoder.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/context_list.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/decode_huff.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/flow_control.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_data.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.cc
@@ -179,6 +177,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c
@@ -232,6 +231,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c
@@ -243,6 +243,8 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c
@@ -270,6 +272,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/range.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c
@@ -293,6 +296,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/security.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c
@@ -312,6 +316,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c
@@ -319,6 +324,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c
@@ -372,6 +378,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c
@@ -410,6 +417,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c
@@ -427,6 +435,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c
@@ -449,26 +458,30 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/certificate_provider_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/certificate_provider_store.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/file_watcher_certificate_provider_factory.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap_grpc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_certificate_provider.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_channel_stack_modifier.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_client.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_client_grpc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_client_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_cluster.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_cluster_specifier_plugin.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_common_types.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_endpoint.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_http_fault_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_http_filters.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_http_rbac_filter.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_lb_policy_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_listener.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_resource_type.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_route_config.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_routing.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_server_config_fetcher.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/ext/xds/xds_transport_grpc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/address_utils/parse_address.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/address_utils/sockaddr_utils.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/backoff/backoff.cc
@@ -476,12 +489,11 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_args_preconditioning.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_stack.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder_impl.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channel_trace.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channelz.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/channelz_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/connected_channel.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/handshaker.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/handshaker_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/promise_based_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/channel/status_util.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/compression/compression.cc
@@ -492,20 +504,33 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/debug/stats_data.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/debug/trace.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/channel_args_endpoint_config.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine_factory.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/event_engine.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/executor/threaded_executor.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/forkable.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/memory_allocator.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/posix_engine.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_heap.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_manager.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/resolved_address.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/sockaddr.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/slice.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/slice_buffer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/thread_pool.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/time_util.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/trace.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/utils.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/windows/iocp.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/windows/win_socket.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/event_engine/windows/windows_engine.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/experiments/config.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/experiments/experiments.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/alloc.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/atm.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_iphone.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_linux.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/cpu_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/env_linux.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/env_posix.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/env_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log_android.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/log_linux.cc
@@ -528,6 +553,9 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/tmpfile_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/tmpfile_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gpr/wrap_memcpy.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/env_linux.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/env_posix.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/env_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/examine_stack.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/fork.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/global_config_env.cc
@@ -536,10 +564,15 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/stat_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/stat_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/status_helper.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/tchar.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/thd_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/thd_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/time.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/time_averaged_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/time_util.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/validation_errors.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/gprpp/work_serializer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/http/format_request.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/http/httpcli.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/http/httpcli_security_connector.cc
@@ -551,29 +584,17 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/dualstack_socket_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_cfstream.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_event_engine.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/error.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/error_cfstream.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_apple.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_epoll1_linux.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_epollex_linux.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_poll_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/ev_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/closure.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/endpoint.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/iomgr.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/pollset.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolved_address_internal.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolver.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/tcp.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/event_engine/timer.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/executor.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/executor/mpmcqueue.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/executor/threadpool.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/fork_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/fork_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/gethostname_fallback.cc
@@ -588,7 +609,6 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix_cfstream.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/iomgr_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/is_epollexclusive_available.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/load_file.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/lockfree_event.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/polling_entity.cc
@@ -619,7 +639,6 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_windows.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/tcp_windows.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/time_averaged_stats.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/timer.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/timer_generic.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/timer_heap.cc
@@ -630,13 +649,13 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_nospecial.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_pipe.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_posix.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/iomgr/work_serializer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_object_loader.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_reader.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_util.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/json/json_writer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/matchers/matchers.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/profiling/basic_timers.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/profiling/stap_timers.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/promise/activity.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/promise/sleep.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resolver/resolver.cc
@@ -645,6 +664,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/arena.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/memory_quota.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/periodic_update.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/resource_quota.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/thread_quota.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/resource_quota/trace.cc
@@ -654,6 +674,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/grpc_server_authz_filter.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/matchers.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/authorization/rbac_policy.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_registry.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/context/security_context.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/alts_credentials.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/credentials/alts/check_gcp_environment.cc
@@ -696,7 +717,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/fake/fake_security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_fallback.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_linux.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_supported.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/local/local_security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/security_connector.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc
@@ -716,8 +737,8 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_buffer.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_buffer_api.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_refcount.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_split.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/slice/slice_string_helpers.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/api_trace.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/builtins.cc
@@ -734,18 +755,23 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/completion_queue_factory.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/event_string.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/init.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/init_internally.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/lame_client.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/metadata_array.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/server.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/validate_metadata.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/surface/version.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/bdp_estimator.cc
- ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/byte_stream.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/connectivity_state.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/error_utils.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/handshaker.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/handshaker_registry.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/http_connect_handshaker.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/metadata_batch.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/parsed_metadata.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/pid_controller.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/status_conversion.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/tcp_connect_handshaker.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/timeout_encoding.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/transport.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/core/lib/transport/transport_op_string.cc
@@ -817,6 +843,7 @@ target_sources(contrib-libs-grpc PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/health/health_check_service.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/health/health_check_service_server_builder_option.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/insecure_server_credentials.cc
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/orca/call_metric_recorder.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/secure_server_credentials.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_builder.cc
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/src/cpp/server/server_callback.cc
diff --git a/contrib/libs/grpc/LICENSE b/contrib/libs/grpc/LICENSE
index 74ec4aa7d9..0e09a3e909 100644
--- a/contrib/libs/grpc/LICENSE
+++ b/contrib/libs/grpc/LICENSE
@@ -235,8 +235,376 @@ THE POSSIBILITY OF SUCH DAMAGE.
-----------------------------------------------------------
-Mozilla Public License, v. 2.0
+Mozilla Public License Version 2.0
+==================================
-This Source Code Form is subject to the terms of the Mozilla Public License,
-v. 2.0. If a copy of the MPL was not distributed with this file, You can
-obtain one at https://mozilla.org/MPL/2.0/.
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/contrib/libs/grpc/MAINTAINERS.md b/contrib/libs/grpc/MAINTAINERS.md
index 6f6c8a5fa3..2910379349 100644
--- a/contrib/libs/grpc/MAINTAINERS.md
+++ b/contrib/libs/grpc/MAINTAINERS.md
@@ -11,74 +11,77 @@ for general contribution guidelines.
- [a11r](https://github.com/a11r), Google LLC
- [apolcyn](https://github.com/apolcyn), Google LLC
- [arjunroy](https://github.com/arjunroy), Google LLC
-- [AspirinSJL](https://github.com/AspirinSJL), Google LLC
-- [bogdandrutu](https://github.com/bogdandrutu), Google LLC
- [ctiller](https://github.com/ctiller), Google LLC
- [daniel-j-born](https://github.com/daniel-j-born), Google LLC
- [dapengzhang0](https://github.com/dapengzhang0), Google LLC
- [dfawley](https://github.com/dfawley), Google LLC
- [dklempner](https://github.com/dklempner), Google LLC
+- [drfloob](https://github.com/drfloob), Google LLC
- [ejona86](https://github.com/ejona86), Google LLC
-- [ericgribkoff](https://github.com/ericgribkoff), Google LLC
- [gnossen](https://github.com/gnossen), Google LLC
- [guantaol](https://github.com/guantaol), Google LLC
- [hcaseyal](https://github.com/hcaseyal), Google LLC
-- [jboeuf](https://github.com/jboeuf), Google LLC
-- [jiangtaoli2016](https://github.com/jiangtaoli2016), Google LLC
-- [jkolhe](https://github.com/jkolhe), Google LLC
- [jtattermusch](https://github.com/jtattermusch), Google LLC
-- [karthikravis](https://github.com/karthikravis), Google LLC
-- [kumaralokgithub](https://github.com/kumaralokgithub), Google LLC
-- [lidizheng](https://github.com/lidizheng), Google LLC
+- [LittleCVR](https://github.com/littlecvr), Google LLC
- [markdroth](https://github.com/markdroth), Google LLC
- [matthewstevenson88](https://github.com/matthewstevenson88), Google LLC
-- [mehrdada](https://github.com/mehrdada), Dropbox, Inc.
-- [mhaidrygoog](https://github.com/mhaidrygoog), Google LLC
+- [medinandres](https://github.com/medinandres), Google LLC
- [murgatroid99](https://github.com/murgatroid99), Google LLC
-- [muxi](https://github.com/muxi), Google LLC
- [nanahpang](https://github.com/nanahpang), Google LLC
-- [nathanielmanistaatgoogle](https://github.com/nathanielmanistaatgoogle), Google LLC
-- [nicolasnoble](https://github.com/nicolasnoble), Google LLC
- [pfreixes](https://github.com/pfreixes), Skyscanner Ltd
-- [qixuanl1](https://github.com/qixuanl1), Google LLC
- [ran-su](https://github.com/ran-su), Google LLC
-- [rmstar](https://github.com/rmstar), Google LLC
- [sanjaypujare](https://github.com/sanjaypujare), Google LLC
-- [sheenaqotj](https://github.com/sheenaqotj), Google LLC
+- [sergiitk](https://github.com/sergiitk), Google LLC
- [soheilhy](https://github.com/soheilhy), Google LLC
-- [sreecha](https://github.com/sreecha), LinkedIn
-- [srini100](https://github.com/srini100), Google LLC
- [stanley-cheung](https://github.com/stanley-cheung), Google LLC
- [veblush](https://github.com/veblush), Google LLC
- [vishalpowar](https://github.com/vishalpowar), Google LLC
- [Vizerai](https://github.com/Vizerai), Google LLC
-- [vjpai](https://github.com/vjpai), Google LLC
-- [wcevans](https://github.com/wcevans), Google LLC
- [wenbozhu](https://github.com/wenbozhu), Google LLC
-- [yang-g](https://github.com/yang-g), Google LLC
- [yashykt](https://github.com/yashykt), Google LLC
- [yihuazhang](https://github.com/yihuazhang), Google LLC
- [ZhenLian](https://github.com/ZhenLian), Google LLC
- [ZhouyihaiDing](https://github.com/ZhouyihaiDing), Google LLC
-
## Emeritus Maintainers (in alphabetical order)
- [adelez](https://github.com/adelez), Google LLC
+- [AspirinSJL](https://github.com/AspirinSJL), Google LLC
- [billfeng327](https://github.com/billfeng327), Google LLC
+- [bogdandrutu](https://github.com/bogdandrutu), Google LLC
- [dgquintas](https://github.com/dgquintas), Google LLC
+- [ericgribkoff](https://github.com/ericgribkoff), Google LLC
- [fengli79](https://github.com/fengli79), Google LLC
+- [jboeuf](https://github.com/jboeuf), Google LLC
- [jcanizales](https://github.com/jcanizales), Google LLC
+- [jiangtaoli2016](https://github.com/jiangtaoli2016), Google LLC
+- [jkolhe](https://github.com/jkolhe), Google LLC
- [jpalmerLinuxFoundation](https://github.com/jpalmerLinuxFoundation), Linux Foundation
- [justinburke](https://github.com/justinburke), Google LLC
+- [karthikravis](https://github.com/karthikravis), Google LLC
- [kpayson64](https://github.com/kpayson64), Google LLC
+- [kumaralokgithub](https://github.com/kumaralokgithub), Google LLC
+- [lidizheng](https://github.com/lidizheng), Google LLC
- [lyuxuan](https://github.com/lyuxuan), Google LLC
- [matt-kwong](https://github.com/matt-kwong), Google LLC
+- [mehrdada](https://github.com/mehrdada), Dropbox, Inc.
+- [mhaidrygoog](https://github.com/mhaidrygoog), Google LLC
- [mit-mit](https://github.com/mit-mit), Google LLC
- [mpwarres](https://github.com/mpwarres), Google LLC
+- [muxi](https://github.com/muxi), Google LLC
+- [nathanielmanistaatgoogle](https://github.com/nathanielmanistaatgoogle), Google LLC
- [ncteisen](https://github.com/ncteisen), Google LLC
+- [nicolasnoble](https://github.com/nicolasnoble), Google LLC
- [pmarks-net](https://github.com/pmarks-net), Google LLC
+- [qixuanl1](https://github.com/qixuanl1), Google LLC
+- [rmstar](https://github.com/rmstar), Google LLC
+- [sheenaqotj](https://github.com/sheenaqotj), Google LLC
- [slash-lib](https://github.com/slash-lib), Google LLC
- [soltanmm](https://github.com/soltanmm), Google LLC
+- [sreecha](https://github.com/sreecha), LinkedIn
+- [srini100](https://github.com/srini100), Google LLC
- [summerxyt](https://github.com/summerxyt), Google LLC
+- [vjpai](https://github.com/vjpai), Google LLC
+- [wcevans](https://github.com/wcevans), Google LLC
- [y-zeng](https://github.com/y-zeng), Google LLC
+- [yang-g](https://github.com/yang-g), Google LLC
- [zpencer](https://github.com/zpencer), Google LLC
diff --git a/contrib/libs/grpc/include/grpc/compression.h b/contrib/libs/grpc/include/grpc/compression.h
index 176956642a..2c39c6b3af 100644
--- a/contrib/libs/grpc/include/grpc/compression.h
+++ b/contrib/libs/grpc/include/grpc/compression.h
@@ -23,7 +23,7 @@
#include <stdlib.h>
-#include <grpc/impl/codegen/compression_types.h>
+#include <grpc/impl/codegen/compression_types.h> // IWYU pragma: export
#include <grpc/slice.h>
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/include/grpc/event_engine/endpoint_config.h b/contrib/libs/grpc/include/grpc/event_engine/endpoint_config.h
index f11f5fd6c3..89dd7fc56f 100644
--- a/contrib/libs/grpc/include/grpc/event_engine/endpoint_config.h
+++ b/contrib/libs/grpc/include/grpc/event_engine/endpoint_config.h
@@ -20,7 +20,7 @@
#include <util/string/cast.h>
#include "y_absl/strings/string_view.h"
-#include "y_absl/types/variant.h"
+#include "y_absl/types/optional.h"
namespace grpc_event_engine {
namespace experimental {
@@ -32,10 +32,16 @@ namespace experimental {
class EndpointConfig {
public:
virtual ~EndpointConfig() = default;
- using Setting = y_absl::variant<y_absl::monostate, int, y_absl::string_view, void*>;
- /// Returns the Setting for a specified key, or \a y_absl::monostate if there is
- /// no such entry. Caller does not take ownership of the resulting value.
- virtual Setting Get(y_absl::string_view key) const = 0;
+ // If the key points to an integer config, an integer value gets returned.
+ // Otherwise it returns an y_absl::nullopt_t
+ virtual y_absl::optional<int> GetInt(y_absl::string_view key) const = 0;
+ // If the key points to an string config, an string value gets returned.
+ // Otherwise it returns an y_absl::nullopt_t
+ virtual y_absl::optional<y_absl::string_view> GetString(
+ y_absl::string_view key) const = 0;
+ // If the key points to an void* config, a void* pointer value gets returned.
+ // Otherwise it returns nullptr
+ virtual void* GetVoidPointer(y_absl::string_view key) const = 0;
};
} // namespace experimental
diff --git a/contrib/libs/grpc/include/grpc/event_engine/event_engine.h b/contrib/libs/grpc/include/grpc/event_engine/event_engine.h
index d38ec7290a..c30a2c01dc 100644
--- a/contrib/libs/grpc/include/grpc/event_engine/event_engine.h
+++ b/contrib/libs/grpc/include/grpc/event_engine/event_engine.h
@@ -19,15 +19,16 @@
#include <functional>
#include <vector>
+#include "y_absl/functional/any_invocable.h"
#include "y_absl/status/status.h"
#include "y_absl/status/statusor.h"
-#include "y_absl/time/time.h"
#include <grpc/event_engine/endpoint_config.h>
#include <grpc/event_engine/memory_allocator.h>
#include <grpc/event_engine/port.h>
+#include <grpc/event_engine/slice_buffer.h>
-// TODO(hork): Define the Endpoint::Write metrics collection system
+// TODO(vigneshbabu): Define the Endpoint::Write metrics collection system
namespace grpc_event_engine {
namespace experimental {
@@ -71,8 +72,13 @@ namespace experimental {
/// server->Wait();
///
////////////////////////////////////////////////////////////////////////////////
-class EventEngine {
+class EventEngine : public std::enable_shared_from_this<EventEngine> {
public:
+ /// A duration between two events.
+ ///
+ /// Throughout the EventEngine API durations are used to express how long
+ /// until an action should be performed.
+ using Duration = std::chrono::duration<int64_t, std::nano>;
/// A custom closure type for EventEngine task execution.
///
/// Throughout the EventEngine API, \a Closure ownership is retained by the
@@ -138,6 +144,18 @@ class EventEngine {
/// Shuts down all connections and invokes all pending read or write
/// callbacks with an error status.
virtual ~Endpoint() = default;
+ /// A struct representing optional arguments that may be provided to an
+ /// EventEngine Endpoint Read API call.
+ ///
+ /// Passed as argument to an Endpoint \a Read
+ struct ReadArgs {
+ // A suggestion to the endpoint implementation to read at-least the
+ // specified number of bytes over the network connection before marking
+ // the endpoint read operation as complete. gRPC may use this argument
+ // to minimize the number of endpoint read API calls over the lifetime
+ // of a connection.
+ int64_t read_hint_bytes;
+ };
/// Reads data from the Endpoint.
///
/// When data is available on the connection, that data is moved into the
@@ -155,8 +173,22 @@ class EventEngine {
/// For failed read operations, implementations should pass the appropriate
/// statuses to \a on_read. For example, callbacks might expect to receive
/// CANCELLED on endpoint shutdown.
- virtual void Read(std::function<void(y_absl::Status)> on_read,
- SliceBuffer* buffer) = 0;
+ virtual void Read(y_absl::AnyInvocable<void(y_absl::Status)> on_read,
+ SliceBuffer* buffer, const ReadArgs* args) = 0;
+ /// A struct representing optional arguments that may be provided to an
+ /// EventEngine Endpoint Write API call.
+ ///
+ /// Passed as argument to an Endpoint \a Write
+ struct WriteArgs {
+ // Represents private information that may be passed by gRPC for
+ // select endpoints expected to be used only within google.
+ void* google_specific = nullptr;
+ // A suggestion to the endpoint implementation to group data to be written
+ // into frames of the specified max_frame_size. gRPC may use this
+ // argument to dynamically control the max sizes of frames sent to a
+ // receiver in response to high receiver memory pressure.
+ int64_t max_frame_size;
+ };
/// Writes data out on the connection.
///
/// \a on_writable is called when the connection is ready for more data. The
@@ -175,8 +207,8 @@ class EventEngine {
/// For failed write operations, implementations should pass the appropriate
/// statuses to \a on_writable. For example, callbacks might expect to
/// receive CANCELLED on endpoint shutdown.
- virtual void Write(std::function<void(y_absl::Status)> on_writable,
- SliceBuffer* data) = 0;
+ virtual void Write(y_absl::AnyInvocable<void(y_absl::Status)> on_writable,
+ SliceBuffer* data, const WriteArgs* args) = 0;
/// Returns an address in the format described in DNSResolver. The returned
/// values are expected to remain valid for the life of the Endpoint.
virtual const ResolvedAddress& GetPeerAddress() const = 0;
@@ -190,14 +222,14 @@ class EventEngine {
/// expect to receive DEADLINE_EXCEEDED statuses when appropriate, or
/// CANCELLED statuses on EventEngine shutdown.
using OnConnectCallback =
- std::function<void(y_absl::StatusOr<std::unique_ptr<Endpoint>>)>;
+ y_absl::AnyInvocable<void(y_absl::StatusOr<std::unique_ptr<Endpoint>>)>;
/// Listens for incoming connection requests from gRPC clients and initiates
/// request processing once connections are established.
class Listener {
public:
/// Called when the listener has accepted a new client connection.
- using AcceptCallback = std::function<void(
+ using AcceptCallback = y_absl::AnyInvocable<void(
std::unique_ptr<Endpoint>, MemoryAllocator memory_allocator)>;
virtual ~Listener() = default;
/// Bind an address/port to this Listener.
@@ -225,7 +257,7 @@ class EventEngine {
/// MemoryAllocators for Endpoint construction.
virtual y_absl::StatusOr<std::unique_ptr<Listener>> CreateListener(
Listener::AcceptCallback on_accept,
- std::function<void(y_absl::Status)> on_shutdown,
+ y_absl::AnyInvocable<void(y_absl::Status)> on_shutdown,
const EndpointConfig& config,
std::unique_ptr<MemoryAllocatorFactory> memory_allocator_factory) = 0;
/// Creates a client network connection to a remote network listener.
@@ -243,7 +275,7 @@ class EventEngine {
const ResolvedAddress& addr,
const EndpointConfig& args,
MemoryAllocator memory_allocator,
- y_absl::Time deadline) = 0;
+ Duration timeout) = 0;
/// Request cancellation of a connection attempt.
///
@@ -259,7 +291,13 @@ class EventEngine {
public:
/// Task handle for DNS Resolution requests.
struct LookupTaskHandle {
- intptr_t key[2];
+ intptr_t keys[2];
+ };
+ /// Optional configuration for DNSResolvers.
+ struct ResolverOptions {
+ /// If empty, default DNS servers will be used.
+ /// Must be in the "IP:port" format as described in naming.md.
+ TString dns_server;
};
/// DNS SRV record type.
struct SRVRecord {
@@ -271,12 +309,13 @@ class EventEngine {
/// Called with the collection of sockaddrs that were resolved from a given
/// target address.
using LookupHostnameCallback =
- std::function<void(y_absl::StatusOr<std::vector<ResolvedAddress>>)>;
+ y_absl::AnyInvocable<void(y_absl::StatusOr<std::vector<ResolvedAddress>>)>;
/// Called with a collection of SRV records.
using LookupSRVCallback =
- std::function<void(y_absl::StatusOr<std::vector<SRVRecord>>)>;
+ y_absl::AnyInvocable<void(y_absl::StatusOr<std::vector<SRVRecord>>)>;
/// Called with the result of a TXT record lookup
- using LookupTXTCallback = std::function<void(y_absl::StatusOr<TString>)>;
+ using LookupTXTCallback =
+ y_absl::AnyInvocable<void(y_absl::StatusOr<TString>)>;
virtual ~DNSResolver() = default;
@@ -293,23 +332,23 @@ class EventEngine {
///
/// If cancelled, \a on_resolve will not be executed.
virtual LookupTaskHandle LookupHostname(LookupHostnameCallback on_resolve,
- y_absl::string_view address,
+ y_absl::string_view name,
y_absl::string_view default_port,
- y_absl::Time deadline) = 0;
+ Duration timeout) = 0;
/// Asynchronously perform an SRV record lookup.
///
/// \a on_resolve has the same meaning and expectations as \a
/// LookupHostname's \a on_resolve callback.
virtual LookupTaskHandle LookupSRV(LookupSRVCallback on_resolve,
y_absl::string_view name,
- y_absl::Time deadline) = 0;
+ Duration timeout) = 0;
/// Asynchronously perform a TXT record lookup.
///
/// \a on_resolve has the same meaning and expectations as \a
/// LookupHostname's \a on_resolve callback.
virtual LookupTaskHandle LookupTXT(LookupTXTCallback on_resolve,
y_absl::string_view name,
- y_absl::Time deadline) = 0;
+ Duration timeout) = 0;
/// Cancel an asynchronous lookup operation.
///
/// This shares the same semantics with \a EventEngine::Cancel: successfully
@@ -331,8 +370,10 @@ class EventEngine {
// de-experimentalize this API.
virtual bool IsWorkerThread() = 0;
- /// Creates and returns an instance of a DNSResolver.
- virtual std::unique_ptr<DNSResolver> GetDNSResolver() = 0;
+ /// Creates and returns an instance of a DNSResolver, optionally configured by
+ /// the \a options struct.
+ virtual std::unique_ptr<DNSResolver> GetDNSResolver(
+ const DNSResolver::ResolverOptions& options) = 0;
/// Asynchronously executes a task as soon as possible.
///
@@ -342,39 +383,45 @@ class EventEngine {
/// Asynchronously executes a task as soon as possible.
///
/// \a Closures scheduled with \a Run cannot be cancelled. Unlike the
- /// overloaded \a Closure alternative, the std::function version's \a closure
- /// will be deleted by the EventEngine after the closure has been run.
+ /// overloaded \a Closure alternative, the y_absl::AnyInvocable version's \a
+ /// closure will be deleted by the EventEngine after the closure has been run.
///
/// This version of \a Run may be less performant than the \a Closure version
/// in some scenarios. This overload is useful in situations where performance
/// is not a critical concern.
- virtual void Run(std::function<void()> closure) = 0;
- /// Synonymous with scheduling an alarm to run at time \a when.
+ virtual void Run(y_absl::AnyInvocable<void()> closure) = 0;
+ /// Synonymous with scheduling an alarm to run after duration \a when.
///
/// The \a closure will execute when time \a when arrives unless it has been
/// cancelled via the \a Cancel method. If cancelled, the closure will not be
/// run, nor will it be deleted. Ownership remains with the caller.
- virtual TaskHandle RunAt(y_absl::Time when, Closure* closure) = 0;
- /// Synonymous with scheduling an alarm to run at time \a when.
+ virtual TaskHandle RunAfter(Duration when, Closure* closure) = 0;
+ /// Synonymous with scheduling an alarm to run after duration \a when.
///
/// The \a closure will execute when time \a when arrives unless it has been
/// cancelled via the \a Cancel method. If cancelled, the closure will not be
- /// run. Unilke the overloaded \a Closure alternative, the std::function
+ /// run. Unilke the overloaded \a Closure alternative, the y_absl::AnyInvocable
/// version's \a closure will be deleted by the EventEngine after the closure
/// has been run, or upon cancellation.
///
- /// This version of \a RunAt may be less performant than the \a Closure
+ /// This version of \a RunAfter may be less performant than the \a Closure
/// version in some scenarios. This overload is useful in situations where
/// performance is not a critical concern.
- virtual TaskHandle RunAt(y_absl::Time when, std::function<void()> closure) = 0;
+ virtual TaskHandle RunAfter(Duration when,
+ y_absl::AnyInvocable<void()> closure) = 0;
/// Request cancellation of a task.
///
/// If the associated closure has already been scheduled to run, it will not
/// be cancelled, and this function will return false.
///
/// If the associated callback has not been scheduled to run, it will be
- /// cancelled, and the associated std::function or \a Closure* will not be
- /// executed. In this case, Cancel will return true.
+ /// cancelled, and the associated y_absl::AnyInvocable or \a Closure* will not
+ /// be executed. In this case, Cancel will return true.
+ ///
+ /// Implementation note: closures should be destroyed in a timely manner after
+ /// execution or cancelliation (milliseconds), since any state bound to the
+ /// closure may need to be destroyed for things to progress (e.g., if a
+ /// closure holds a ref to some ref-counted object).
virtual bool Cancel(TaskHandle handle) = 0;
};
@@ -388,7 +435,7 @@ class EventEngine {
/// created, applications must set a custom EventEngine factory method *before*
/// grpc is initialized.
void SetDefaultEventEngineFactory(
- const std::function<std::unique_ptr<EventEngine>()>* factory);
+ y_absl::AnyInvocable<std::unique_ptr<EventEngine>()> factory);
/// Create an EventEngine using the default factory.
std::unique_ptr<EventEngine> CreateEventEngine();
diff --git a/contrib/libs/grpc/include/grpc/event_engine/memory_allocator.h b/contrib/libs/grpc/include/grpc/event_engine/memory_allocator.h
index 0f6c68d7ae..42fb9c040c 100644
--- a/contrib/libs/grpc/include/grpc/event_engine/memory_allocator.h
+++ b/contrib/libs/grpc/include/grpc/event_engine/memory_allocator.h
@@ -26,24 +26,9 @@
#include <grpc/event_engine/internal/memory_allocator_impl.h>
#include <grpc/slice.h>
-// forward-declaring an internal struct, not used publicly.
-struct grpc_slice_buffer;
-
namespace grpc_event_engine {
namespace experimental {
-// TODO(nnoble): needs implementation
-class SliceBuffer {
- public:
- SliceBuffer() { abort(); }
- explicit SliceBuffer(grpc_slice_buffer*) { abort(); }
-
- grpc_slice_buffer* RawSliceBuffer() { return slice_buffer_; }
-
- private:
- grpc_slice_buffer* slice_buffer_;
-};
-
// Tracks memory allocated by one system.
// Is effectively a thin wrapper/smart pointer for a MemoryAllocatorImpl,
// providing a convenient and stable API.
diff --git a/contrib/libs/grpc/include/grpc/event_engine/port.h b/contrib/libs/grpc/include/grpc/event_engine/port.h
index 942458646a..ea2d68e1e2 100644
--- a/contrib/libs/grpc/include/grpc/event_engine/port.h
+++ b/contrib/libs/grpc/include/grpc/event_engine/port.h
@@ -20,7 +20,7 @@
#if defined(GPR_ANDROID) || defined(GPR_LINUX) || defined(GPR_APPLE) || \
defined(GPR_FREEBSD) || defined(GPR_OPENBSD) || defined(GPR_SOLARIS) || \
defined(GPR_AIX) || defined(GPR_NACL) || defined(GPR_FUCHSIA) || \
- defined(GRPC_POSIX_SOCKET)
+ defined(GRPC_POSIX_SOCKET) || defined(GPR_NETBSD)
#define GRPC_EVENT_ENGINE_POSIX
#include <arpa/inet.h>
#include <netdb.h>
@@ -31,6 +31,13 @@
#include <winsock2.h>
#include <ws2tcpip.h>
// must be included after the above
+
+// For some reason OPTIONAL is not defined and build for window is not OK
+// Let, define it here as empty
+#ifndef OPTIONAL
+#define OPTIONAL
+#endif
+
#include <mswsock.h>
#else
#error UNKNOWN PLATFORM
diff --git a/contrib/libs/grpc/include/grpc/event_engine/slice.h b/contrib/libs/grpc/include/grpc/event_engine/slice.h
new file mode 100644
index 0000000000..39531d907b
--- /dev/null
+++ b/contrib/libs/grpc/include/grpc/event_engine/slice.h
@@ -0,0 +1,287 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_EVENT_ENGINE_SLICE_H
+#define GRPC_EVENT_ENGINE_SLICE_H
+
+#include <grpc/support/port_platform.h>
+
+#include <string.h>
+
+#include <cstdint>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/slice.h>
+#include <grpc/support/log.h>
+
+// This public slice definition largely based of the internal grpc_core::Slice
+// implementation. Changes to this implementation might warrant changes to the
+// internal grpc_core::Slice type as well.
+
+namespace grpc_event_engine {
+namespace experimental {
+
+// Forward declarations
+class Slice;
+class MutableSlice;
+
+namespace slice_detail {
+
+// Returns an empty slice.
+static constexpr grpc_slice EmptySlice() { return {nullptr, {}}; }
+
+// BaseSlice holds the grpc_slice object, but does not apply refcounting policy.
+// It does export immutable access into the slice, such that this can be shared
+// by all storage policies.
+class BaseSlice {
+ public:
+ BaseSlice(const BaseSlice&) = delete;
+ BaseSlice& operator=(const BaseSlice&) = delete;
+ BaseSlice(BaseSlice&& other) = delete;
+ BaseSlice& operator=(BaseSlice&& other) = delete;
+
+ // Iterator access to the underlying bytes
+ const uint8_t* begin() const { return GRPC_SLICE_START_PTR(c_slice()); }
+ const uint8_t* end() const { return GRPC_SLICE_END_PTR(c_slice()); }
+ const uint8_t* cbegin() const { return GRPC_SLICE_START_PTR(c_slice()); }
+ const uint8_t* cend() const { return GRPC_SLICE_END_PTR(c_slice()); }
+
+ // Retrieve a borrowed reference to the underlying grpc_slice.
+ const grpc_slice& c_slice() const { return slice_; }
+
+ // Retrieve the underlying grpc_slice, and replace the one in this object with
+ // EmptySlice().
+ grpc_slice TakeCSlice() {
+ grpc_slice out = slice_;
+ slice_ = EmptySlice();
+ return out;
+ }
+
+ // As other things... borrowed references.
+ y_absl::string_view as_string_view() const {
+ return y_absl::string_view(reinterpret_cast<const char*>(data()), size());
+ }
+
+ // Array access
+ uint8_t operator[](size_t i) const {
+ return GRPC_SLICE_START_PTR(c_slice())[i];
+ }
+
+ // Access underlying data
+ const uint8_t* data() const { return GRPC_SLICE_START_PTR(c_slice()); }
+
+ // Size of the slice
+ size_t size() const { return GRPC_SLICE_LENGTH(c_slice()); }
+ size_t length() const { return size(); }
+ bool empty() const { return size() == 0; }
+
+ // For inlined slices - are these two slices equal?
+ // For non-inlined slices - do these two slices refer to the same block of
+ // memory?
+ bool is_equivalent(const BaseSlice& other) const {
+ return grpc_slice_is_equivalent(slice_, other.slice_);
+ }
+
+ uint32_t Hash() const;
+
+ protected:
+ BaseSlice() : slice_(EmptySlice()) {}
+ explicit BaseSlice(const grpc_slice& slice) : slice_(slice) {}
+ ~BaseSlice() = default;
+
+ void Swap(BaseSlice* other) { std::swap(slice_, other->slice_); }
+ void SetCSlice(const grpc_slice& slice) { slice_ = slice; }
+
+ uint8_t* mutable_data() { return GRPC_SLICE_START_PTR(slice_); }
+
+ grpc_slice* c_slice_ptr() { return &slice_; }
+
+ private:
+ grpc_slice slice_;
+};
+
+inline bool operator==(const BaseSlice& a, const BaseSlice& b) {
+ return grpc_slice_eq(a.c_slice(), b.c_slice()) != 0;
+}
+
+inline bool operator!=(const BaseSlice& a, const BaseSlice& b) {
+ return grpc_slice_eq(a.c_slice(), b.c_slice()) == 0;
+}
+
+inline bool operator==(const BaseSlice& a, y_absl::string_view b) {
+ return a.as_string_view() == b;
+}
+
+inline bool operator!=(const BaseSlice& a, y_absl::string_view b) {
+ return a.as_string_view() != b;
+}
+
+inline bool operator==(y_absl::string_view a, const BaseSlice& b) {
+ return a == b.as_string_view();
+}
+
+inline bool operator!=(y_absl::string_view a, const BaseSlice& b) {
+ return a != b.as_string_view();
+}
+
+inline bool operator==(const BaseSlice& a, const grpc_slice& b) {
+ return grpc_slice_eq(a.c_slice(), b) != 0;
+}
+
+inline bool operator!=(const BaseSlice& a, const grpc_slice& b) {
+ return grpc_slice_eq(a.c_slice(), b) == 0;
+}
+
+inline bool operator==(const grpc_slice& a, const BaseSlice& b) {
+ return grpc_slice_eq(a, b.c_slice()) != 0;
+}
+
+inline bool operator!=(const grpc_slice& a, const BaseSlice& b) {
+ return grpc_slice_eq(a, b.c_slice()) == 0;
+}
+
+template <typename Out>
+struct CopyConstructors {
+ static Out FromCopiedString(const char* s) {
+ return FromCopiedBuffer(s, strlen(s));
+ }
+ static Out FromCopiedString(y_absl::string_view s) {
+ return FromCopiedBuffer(s.data(), s.size());
+ }
+ static Out FromCopiedString(TString s);
+
+ static Out FromCopiedBuffer(const char* p, size_t len) {
+ return Out(grpc_slice_from_copied_buffer(p, len));
+ }
+
+ template <typename Buffer>
+ static Out FromCopiedBuffer(const Buffer& buffer) {
+ return FromCopiedBuffer(reinterpret_cast<const char*>(buffer.data()),
+ buffer.size());
+ }
+};
+
+} // namespace slice_detail
+
+class MutableSlice : public slice_detail::BaseSlice,
+ public slice_detail::CopyConstructors<MutableSlice> {
+ public:
+ MutableSlice() = default;
+ explicit MutableSlice(const grpc_slice& slice);
+ ~MutableSlice();
+
+ MutableSlice(const MutableSlice&) = delete;
+ MutableSlice& operator=(const MutableSlice&) = delete;
+ MutableSlice(MutableSlice&& other) noexcept
+ : slice_detail::BaseSlice(other.TakeCSlice()) {}
+ MutableSlice& operator=(MutableSlice&& other) noexcept {
+ Swap(&other);
+ return *this;
+ }
+
+ static MutableSlice CreateUninitialized(size_t length) {
+ return MutableSlice(grpc_slice_malloc(length));
+ }
+
+ // Return a sub slice of this one. Leaves this slice in an indeterminate but
+ // valid state.
+ MutableSlice TakeSubSlice(size_t pos, size_t n) {
+ return MutableSlice(grpc_slice_sub_no_ref(TakeCSlice(), pos, pos + n));
+ }
+
+ // Iterator access to the underlying bytes
+ uint8_t* begin() { return mutable_data(); }
+ uint8_t* end() { return mutable_data() + size(); }
+ uint8_t* data() { return mutable_data(); }
+
+ // Array access
+ uint8_t& operator[](size_t i) { return mutable_data()[i]; }
+};
+
+class Slice : public slice_detail::BaseSlice,
+ public slice_detail::CopyConstructors<Slice> {
+ public:
+ Slice() = default;
+ ~Slice();
+ explicit Slice(const grpc_slice& slice) : slice_detail::BaseSlice(slice) {}
+ explicit Slice(slice_detail::BaseSlice&& other)
+ : slice_detail::BaseSlice(other.TakeCSlice()) {}
+
+ Slice(const Slice&) = delete;
+ Slice& operator=(const Slice&) = delete;
+ Slice(Slice&& other) noexcept : slice_detail::BaseSlice(other.TakeCSlice()) {}
+ Slice& operator=(Slice&& other) noexcept {
+ Swap(&other);
+ return *this;
+ }
+
+ // A slice might refer to some memory that we keep a refcount to (this is
+ // owned), or some memory that's inlined into the slice (also owned), or some
+ // other block of memory that we know will be available for the lifetime of
+ // some operation in the common case (not owned). In the *less common* case
+ // that we need to keep that slice text for longer than our API's guarantee us
+ // access, we need to take a copy and turn this into something that we do own.
+
+ // TakeOwned returns an owned slice regardless of current ownership, and
+ // leaves the current slice in a valid but externally unpredictable state - in
+ // doing so it can avoid adding a ref to the underlying slice.
+ Slice TakeOwned();
+
+ // AsOwned returns an owned slice but does not mutate the current slice,
+ // meaning that it may add a reference to the underlying slice.
+ Slice AsOwned() const;
+
+ // TakeMutable returns a MutableSlice, and leaves the current slice in an
+ // indeterminate but valid state.
+ // A mutable slice requires only one reference to the bytes of the slice -
+ // this can be achieved either with inlined storage or with a single
+ // reference.
+ // If the current slice is refcounted and there are more than one references
+ // to that slice, then the slice is copied in order to achieve a mutable
+ // version.
+ MutableSlice TakeMutable();
+
+ // Return a sub slice of this one. Leaves this slice in an indeterminate but
+ // valid state.
+ Slice TakeSubSlice(size_t pos, size_t n) {
+ return Slice(grpc_slice_sub_no_ref(TakeCSlice(), pos, pos + n));
+ }
+
+ // Return a sub slice of this one. Adds a reference to the underlying slice.
+ Slice RefSubSlice(size_t pos, size_t n) const {
+ return Slice(grpc_slice_sub(c_slice(), pos, pos + n));
+ }
+
+ // Split this slice, returning a new slice containing (split:end] and
+ // leaving this slice with [begin:split).
+ Slice Split(size_t split) {
+ return Slice(grpc_slice_split_tail(c_slice_ptr(), split));
+ }
+
+ Slice Ref() const;
+
+ Slice Copy() const { return Slice(grpc_slice_copy(c_slice())); }
+
+ static Slice FromRefcountAndBytes(grpc_slice_refcount* r,
+ const uint8_t* begin, const uint8_t* end);
+};
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GRPC_EVENT_ENGINE_SLICE_H
diff --git a/contrib/libs/grpc/include/grpc/event_engine/slice_buffer.h b/contrib/libs/grpc/include/grpc/event_engine/slice_buffer.h
new file mode 100644
index 0000000000..b1430f6733
--- /dev/null
+++ b/contrib/libs/grpc/include/grpc/event_engine/slice_buffer.h
@@ -0,0 +1,119 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_EVENT_ENGINE_SLICE_BUFFER_H
+#define GRPC_EVENT_ENGINE_SLICE_BUFFER_H
+
+#include <grpc/support/port_platform.h>
+
+#include <string.h>
+
+#include <cstdint>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/strings/string_view.h"
+#include "y_absl/utility/utility.h"
+
+#include <grpc/event_engine/slice.h>
+#include <grpc/slice.h>
+#include <grpc/slice_buffer.h>
+#include <grpc/support/log.h>
+
+namespace grpc_event_engine {
+namespace experimental {
+
+/// A Wrapper around \a grpc_slice_buffer pointer.
+///
+/// A slice buffer holds the memory for a collection of slices.
+/// The SliceBuffer object itself is meant to only hide the C-style API,
+/// and won't hold the data itself. In terms of lifespan, the
+/// grpc_slice_buffer ought to be kept somewhere inside the caller's objects,
+/// like a transport or an endpoint.
+///
+/// This lifespan rule is likely to change in the future, as we may
+/// collapse the grpc_slice_buffer structure straight into this class.
+///
+/// The SliceBuffer API is basically a replica of the grpc_slice_buffer's,
+/// and its documentation will move here once we remove the C structure,
+/// which should happen before the Event Engine's API is no longer
+/// an experimental API.
+class SliceBuffer {
+ public:
+ explicit SliceBuffer() { grpc_slice_buffer_init(&slice_buffer_); }
+ SliceBuffer(const SliceBuffer& other) = delete;
+ SliceBuffer(SliceBuffer&& other) noexcept
+ : slice_buffer_(other.slice_buffer_) {
+ grpc_slice_buffer_init(&slice_buffer_);
+ grpc_slice_buffer_swap(&slice_buffer_, &other.slice_buffer_);
+ }
+ /// Upon destruction, the underlying raw slice buffer is cleaned out and all
+ /// slices are unreffed.
+ ~SliceBuffer() { grpc_slice_buffer_destroy(&slice_buffer_); }
+
+ SliceBuffer& operator=(const SliceBuffer&) = delete;
+ SliceBuffer& operator=(SliceBuffer&& other) noexcept {
+ grpc_slice_buffer_swap(&slice_buffer_, &other.slice_buffer_);
+ return *this;
+ }
+
+ /// Appends a new slice into the SliceBuffer and makes an attempt to merge
+ /// this slice with the last slice in the SliceBuffer.
+ void Append(Slice slice);
+
+ /// Adds a new slice into the SliceBuffer at the next available index.
+ /// Returns the index at which the new slice is added.
+ size_t AppendIndexed(Slice slice);
+
+ /// Returns the number of slices held by the SliceBuffer.
+ size_t Count() { return slice_buffer_.count; }
+
+ /// Removes/deletes the last n bytes in the SliceBuffer.
+ void RemoveLastNBytes(size_t n) {
+ grpc_slice_buffer_trim_end(&slice_buffer_, n, nullptr);
+ }
+
+ /// Move the first n bytes of the SliceBuffer into a memory pointed to by dst.
+ void MoveFirstNBytesIntoBuffer(size_t n, void* dst) {
+ grpc_slice_buffer_move_first_into_buffer(&slice_buffer_, n, dst);
+ }
+
+ /// Removes and unrefs all slices in the SliceBuffer.
+ void Clear() { grpc_slice_buffer_reset_and_unref(&slice_buffer_); }
+
+ /// Removes the first slice in the SliceBuffer and returns it.
+ Slice TakeFirst();
+
+ /// Prepends the slice to the the front of the SliceBuffer.
+ void Prepend(Slice slice);
+
+ /// Increased the ref-count of slice at the specified index and returns the
+ /// associated slice.
+ Slice RefSlice(size_t index);
+
+ /// The total number of bytes held by the SliceBuffer
+ size_t Length() { return slice_buffer_.length; }
+
+ /// Return a pointer to the back raw grpc_slice_buffer
+ grpc_slice_buffer* c_slice_buffer() { return &slice_buffer_; }
+
+ private:
+ /// The backing raw slice buffer.
+ grpc_slice_buffer slice_buffer_;
+};
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GRPC_EVENT_ENGINE_SLICE_BUFFER_H
diff --git a/contrib/libs/grpc/include/grpc/grpc.h b/contrib/libs/grpc/include/grpc/grpc.h
index 9a00711794..56b1552e63 100644
--- a/contrib/libs/grpc/include/grpc/grpc.h
+++ b/contrib/libs/grpc/include/grpc/grpc.h
@@ -24,8 +24,8 @@
#include <stddef.h>
#include <grpc/byte_buffer.h>
-#include <grpc/impl/codegen/connectivity_state.h>
-#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/impl/codegen/connectivity_state.h> // IWYU pragma: export
+#include <grpc/impl/codegen/grpc_types.h> // IWYU pragma: export
#include <grpc/impl/codegen/propagation_bits.h>
#include <grpc/slice.h>
#include <grpc/status.h>
@@ -545,7 +545,7 @@ GRPCAPI void grpc_resource_quota_set_max_threads(
/** EXPERIMENTAL. Dumps xDS configs as a serialized ClientConfig proto.
The full name of the proto is envoy.service.status.v3.ClientConfig. */
-GRPCAPI grpc_slice grpc_dump_xds_configs();
+GRPCAPI grpc_slice grpc_dump_xds_configs(void);
/** Fetch a vtable for a grpc_channel_arg that points to a grpc_resource_quota
*/
diff --git a/contrib/libs/grpc/include/grpc/grpc_security.h b/contrib/libs/grpc/include/grpc/grpc_security.h
index a90904e7d6..63810f6fa9 100644
--- a/contrib/libs/grpc/include/grpc/grpc_security.h
+++ b/contrib/libs/grpc/include/grpc/grpc_security.h
@@ -1050,6 +1050,17 @@ grpc_tls_certificate_verifier* grpc_tls_certificate_verifier_external_create(
/**
* EXPERIMENTAL API - Subject to change
*
+ * Factory function for an internal verifier that won't perform any
+ * post-handshake verification. Note: using this solely without any other
+ * authentication mechanisms on the peer identity will leave your applications
+ * to the MITM(Man-In-The-Middle) attacks. Users should avoid doing so in
+ * production environments.
+ */
+grpc_tls_certificate_verifier* grpc_tls_certificate_verifier_no_op_create();
+
+/**
+ * EXPERIMENTAL API - Subject to change
+ *
* Factory function for an internal verifier that will do the default hostname
* check.
*/
diff --git a/contrib/libs/grpc/include/grpc/impl/codegen/atm_gcc_atomic.h b/contrib/libs/grpc/include/grpc/impl/codegen/atm_gcc_atomic.h
index 05d6e42cec..ad3f91f0b1 100644
--- a/contrib/libs/grpc/include/grpc/impl/codegen/atm_gcc_atomic.h
+++ b/contrib/libs/grpc/include/grpc/impl/codegen/atm_gcc_atomic.h
@@ -33,20 +33,6 @@ typedef intptr_t gpr_atm;
#define GPR_ATM_MAX INTPTR_MAX
#define GPR_ATM_MIN INTPTR_MIN
-#ifdef GPR_LOW_LEVEL_COUNTERS
-extern gpr_atm gpr_counter_atm_cas;
-extern gpr_atm gpr_counter_atm_add;
-#define GPR_ATM_INC_COUNTER(counter) \
- __atomic_fetch_add(&counter, 1, __ATOMIC_RELAXED)
-#define GPR_ATM_INC_CAS_THEN(blah) \
- (GPR_ATM_INC_COUNTER(gpr_counter_atm_cas), blah)
-#define GPR_ATM_INC_ADD_THEN(blah) \
- (GPR_ATM_INC_COUNTER(gpr_counter_atm_add), blah)
-#else
-#define GPR_ATM_INC_CAS_THEN(blah) blah
-#define GPR_ATM_INC_ADD_THEN(blah) blah
-#endif
-
#define gpr_atm_full_barrier() (__atomic_thread_fence(__ATOMIC_SEQ_CST))
#define gpr_atm_acq_load(p) (__atomic_load_n((p), __ATOMIC_ACQUIRE))
@@ -57,34 +43,39 @@ extern gpr_atm gpr_counter_atm_add;
(__atomic_store_n((p), (intptr_t)(value), __ATOMIC_RELAXED))
#define gpr_atm_no_barrier_fetch_add(p, delta) \
- GPR_ATM_INC_ADD_THEN( \
- __atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_RELAXED))
+ __atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_RELAXED)
#define gpr_atm_full_fetch_add(p, delta) \
- GPR_ATM_INC_ADD_THEN( \
- __atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_ACQ_REL))
+ __atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_ACQ_REL)
static __inline int gpr_atm_no_barrier_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
- return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n(
- p, &o, n, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED));
+ // Need to be c89 compatible, so we can't use false for the fourth argument.
+ // NOLINTNEXTLINE(modernize-use-bool-literals)
+ return __atomic_compare_exchange_n(p, &o, n, 0, __ATOMIC_RELAXED,
+ __ATOMIC_RELAXED);
}
static __inline int gpr_atm_acq_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
- return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n(
- p, &o, n, 0, __ATOMIC_ACQUIRE, __ATOMIC_RELAXED));
+ // Need to be c89 compatible, so we can't use false for the fourth argument.
+ // NOLINTNEXTLINE(modernize-use-bool-literals)
+ return __atomic_compare_exchange_n(p, &o, n, 0, __ATOMIC_ACQUIRE,
+ __ATOMIC_RELAXED);
}
static __inline int gpr_atm_rel_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
- return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n(
- p, &o, n, 0, __ATOMIC_RELEASE, __ATOMIC_RELAXED));
+ // Need to be c89 compatible, so we can't use false for the fourth argument.
+ // NOLINTNEXTLINE(modernize-use-bool-literals)
+ return __atomic_compare_exchange_n(p, &o, n, 0, __ATOMIC_RELEASE,
+ __ATOMIC_RELAXED);
}
static __inline int gpr_atm_full_cas(gpr_atm* p, gpr_atm o, gpr_atm n) {
- return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n(
- p, &o, n, 0, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED));
+ // Need to be c89 compatible, so we can't use false for the fourth argument.
+ // NOLINTNEXTLINE(modernize-use-bool-literals)
+ return __atomic_compare_exchange_n(p, &o, n, 0, __ATOMIC_ACQ_REL,
+ __ATOMIC_RELAXED);
}
-#define gpr_atm_full_xchg(p, n) \
- GPR_ATM_INC_CAS_THEN(__atomic_exchange_n((p), (n), __ATOMIC_ACQ_REL))
+#define gpr_atm_full_xchg(p, n) __atomic_exchange_n((p), (n), __ATOMIC_ACQ_REL)
#ifdef __cplusplus
}
diff --git a/contrib/libs/grpc/include/grpc/impl/codegen/atm_gcc_sync.h b/contrib/libs/grpc/include/grpc/impl/codegen/atm_gcc_sync.h
index bdc7a172bc..cf946748d6 100644
--- a/contrib/libs/grpc/include/grpc/impl/codegen/atm_gcc_sync.h
+++ b/contrib/libs/grpc/include/grpc/impl/codegen/atm_gcc_sync.h
@@ -28,8 +28,6 @@
typedef intptr_t gpr_atm;
#define GPR_ATM_MAX INTPTR_MAX
#define GPR_ATM_MIN INTPTR_MIN
-#define GPR_ATM_INC_CAS_THEN(blah) blah
-#define GPR_ATM_INC_ADD_THEN(blah) blah
#define GPR_ATM_COMPILE_BARRIER_() __asm__ __volatile__("" : : : "memory")
diff --git a/contrib/libs/grpc/include/grpc/impl/codegen/atm_windows.h b/contrib/libs/grpc/include/grpc/impl/codegen/atm_windows.h
index 816c9a9c64..39cd839979 100644
--- a/contrib/libs/grpc/include/grpc/impl/codegen/atm_windows.h
+++ b/contrib/libs/grpc/include/grpc/impl/codegen/atm_windows.h
@@ -29,8 +29,6 @@
typedef intptr_t gpr_atm;
#define GPR_ATM_MAX INTPTR_MAX
#define GPR_ATM_MIN INTPTR_MIN
-#define GPR_ATM_INC_CAS_THEN(blah) blah
-#define GPR_ATM_INC_ADD_THEN(blah) blah
#define gpr_atm_full_barrier MemoryBarrier
diff --git a/contrib/libs/grpc/include/grpc/impl/codegen/compression_types.h b/contrib/libs/grpc/include/grpc/impl/codegen/compression_types.h
index 35f49075d0..c187030791 100644
--- a/contrib/libs/grpc/include/grpc/impl/codegen/compression_types.h
+++ b/contrib/libs/grpc/include/grpc/impl/codegen/compression_types.h
@@ -19,7 +19,8 @@
#ifndef GRPC_IMPL_CODEGEN_COMPRESSION_TYPES_H
#define GRPC_IMPL_CODEGEN_COMPRESSION_TYPES_H
-// IWYU pragma: private
+// IWYU pragma: private, include <grpc/compression.h>
+// IWYU pragma: friend "src/.*"
#include <grpc/impl/codegen/port_platform.h>
diff --git a/contrib/libs/grpc/include/grpc/impl/codegen/connectivity_state.h b/contrib/libs/grpc/include/grpc/impl/codegen/connectivity_state.h
index 52084da4cd..218afd778d 100644
--- a/contrib/libs/grpc/include/grpc/impl/codegen/connectivity_state.h
+++ b/contrib/libs/grpc/include/grpc/impl/codegen/connectivity_state.h
@@ -19,7 +19,8 @@
#ifndef GRPC_IMPL_CODEGEN_CONNECTIVITY_STATE_H
#define GRPC_IMPL_CODEGEN_CONNECTIVITY_STATE_H
-// IWYU pragma: private
+// IWYU pragma: private, include <grpc/grpc.h>
+// IWYU pragma: friend "src/.*"
#ifdef __cplusplus
extern "C" {
diff --git a/contrib/libs/grpc/include/grpc/impl/codegen/gpr_types.h b/contrib/libs/grpc/include/grpc/impl/codegen/gpr_types.h
index 415bf7a9da..253ff3ae96 100644
--- a/contrib/libs/grpc/include/grpc/impl/codegen/gpr_types.h
+++ b/contrib/libs/grpc/include/grpc/impl/codegen/gpr_types.h
@@ -19,7 +19,8 @@
#ifndef GRPC_IMPL_CODEGEN_GPR_TYPES_H
#define GRPC_IMPL_CODEGEN_GPR_TYPES_H
-// IWYU pragma: private
+// IWYU pragma: private, include <grpc/grpc.h>
+// IWYU pragma: friend "src/.*"
#include <grpc/impl/codegen/port_platform.h>
diff --git a/contrib/libs/grpc/include/grpc/impl/codegen/grpc_types.h b/contrib/libs/grpc/include/grpc/impl/codegen/grpc_types.h
index 40f3075c23..3bbef00b4f 100644
--- a/contrib/libs/grpc/include/grpc/impl/codegen/grpc_types.h
+++ b/contrib/libs/grpc/include/grpc/impl/codegen/grpc_types.h
@@ -19,7 +19,8 @@
#ifndef GRPC_IMPL_CODEGEN_GRPC_TYPES_H
#define GRPC_IMPL_CODEGEN_GRPC_TYPES_H
-// IWYU pragma: private
+// IWYU pragma: private, include <grpc/grpc.h>
+// IWYU pragma: friend "src/.*"
#include <grpc/impl/codegen/port_platform.h>
@@ -219,7 +220,7 @@ typedef struct {
"grpc.http2.min_ping_interval_without_data_ms"
/** Channel arg to override the http2 :scheme header */
#define GRPC_ARG_HTTP2_SCHEME "grpc.http2_scheme"
-/** How many pings can we send before needing to send a
+/** How many pings can the client send before needing to send a
data/header frame? (0 indicates that an infinite number of
pings can be sent without sending a data frame or header frame) */
#define GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA \
@@ -241,8 +242,8 @@ typedef struct {
not receive the ping ack, it will close the transport. Int valued,
milliseconds. */
#define GRPC_ARG_KEEPALIVE_TIMEOUT_MS "grpc.keepalive_timeout_ms"
-/** Is it permissible to send keepalive pings without any outstanding streams.
- Int valued, 0(false)/1(true). */
+/** Is it permissible to send keepalive pings from the client without any
+ outstanding streams. Int valued, 0(false)/1(true). */
#define GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS \
"grpc.keepalive_permit_without_calls"
/** Default authority to pass if none specified on call construction. A string.
@@ -367,6 +368,12 @@ typedef struct {
balancer before using fallback backend addresses from the resolver.
If 0, enter fallback mode immediately. Default value is 10000. */
#define GRPC_ARG_GRPCLB_FALLBACK_TIMEOUT_MS "grpc.grpclb_fallback_timeout_ms"
+/* Experimental Arg. Channel args to be used for the control-plane channel
+ * created to the grpclb load balancers. This is a pointer arg whose value is a
+ * grpc_channel_args object. If unset, most channel args from the parent channel
+ * will be propagated to the grpclb channel. */
+#define GRPC_ARG_EXPERIMENTAL_GRPCLB_CHANNEL_ARGS \
+ "grpc.experimental.grpclb_channel_args"
/* Timeout in milliseconds to wait for the child of a specific priority to
complete its initial connection attempt before the priority LB policy fails
over to the next priority. Default value is 10 seconds. */
@@ -518,25 +525,16 @@ typedef enum grpc_call_error {
/** Initial metadata flags */
/** These flags are to be passed to the `grpc_op::flags` field */
-/** Signal that the call is idempotent */
-#define GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST (0x00000010u)
/** Signal that the call should not return UNAVAILABLE before it has started */
#define GRPC_INITIAL_METADATA_WAIT_FOR_READY (0x00000020u)
-/** Signal that the call is cacheable. GRPC is free to use GET verb */
-#define GRPC_INITIAL_METADATA_CACHEABLE_REQUEST (0x00000040u)
/** Signal that GRPC_INITIAL_METADATA_WAIT_FOR_READY was explicitly set
by the calling application. */
#define GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET (0x00000080u)
-/** Signal that the initial metadata should be corked */
-#define GRPC_INITIAL_METADATA_CORKED (0x00000100u)
/** Mask of all valid flags */
#define GRPC_INITIAL_METADATA_USED_MASK \
- (GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST | \
- GRPC_INITIAL_METADATA_WAIT_FOR_READY | \
- GRPC_INITIAL_METADATA_CACHEABLE_REQUEST | \
- GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET | \
- GRPC_INITIAL_METADATA_CORKED | GRPC_WRITE_THROUGH)
+ (GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET | \
+ GRPC_INITIAL_METADATA_WAIT_FOR_READY | GRPC_WRITE_THROUGH)
/** A single metadata element */
typedef struct grpc_metadata {
@@ -591,8 +589,6 @@ typedef struct {
grpc_slice method;
grpc_slice host;
gpr_timespec deadline;
- uint32_t flags;
- void* reserved;
} grpc_call_details;
typedef enum {
diff --git a/contrib/libs/grpc/include/grpc/impl/codegen/port_platform.h b/contrib/libs/grpc/include/grpc/impl/codegen/port_platform.h
index 34320cc938..ec8217a345 100644
--- a/contrib/libs/grpc/include/grpc/impl/codegen/port_platform.h
+++ b/contrib/libs/grpc/include/grpc/impl/codegen/port_platform.h
@@ -48,13 +48,6 @@
#endif
#endif // GPR_ABSEIL_SYNC
-/*
- * Defines GRPC_ERROR_IS_ABSEIL_STATUS to use y_absl::Status for grpc_error_handle
- */
-#ifndef GRPC_ERROR_IS_ABSEIL_STATUS
-// #define GRPC_ERROR_IS_ABSEIL_STATUS 1
-#endif
-
/* Get windows.h included everywhere (we need it) */
#if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32)
#ifndef WIN32_LEAN_AND_MEAN
@@ -207,6 +200,7 @@
#define GPR_CPU_POSIX 1
#define GPR_PLATFORM_STRING "asylo"
#define GPR_GCC_SYNC 1
+#define GPR_POSIX_STAT 1
#define GPR_POSIX_SYNC 1
#define GPR_POSIX_STRING 1
#define GPR_POSIX_LOG 1
@@ -219,6 +213,8 @@
#define GRPC_TIMER_USE_GENERIC 1
#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
#define GRPC_POSIX_WAKEUP_FD 1
+#define GRPC_HAVE_MSG_NOSIGNAL 1
+#define GRPC_HAVE_UNIX_SOCKET 1
#define GRPC_ARES 0
#define GPR_NO_AUTODETECT_PLATFORM 1
#elif defined(__APPLE__)
@@ -352,6 +348,32 @@
#else /* _LP64 */
#define GPR_ARCH_32 1
#endif /* _LP64 */
+#elif defined(__NetBSD__)
+// NetBSD is a community-supported platform.
+// Please contact Thomas Klausner <wiz@NetBSD.org> for support.
+#define GPR_PLATFORM_STRING "netbsd"
+#ifndef _BSD_SOURCE
+#define _BSD_SOURCE
+#endif
+#define GPR_NETBSD 1
+#define GPR_CPU_POSIX 1
+#define GPR_GCC_ATOMIC 1
+#define GPR_GCC_TLS 1
+#define GPR_POSIX_LOG 1
+#define GPR_POSIX_ENV 1
+#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_STAT 1
+#define GPR_POSIX_STRING 1
+#define GPR_POSIX_SUBPROCESS 1
+#define GPR_POSIX_SYNC 1
+#define GPR_POSIX_TIME 1
+#define GPR_GETPID_IN_UNISTD_H 1
+#define GPR_SUPPORT_CHANNELS_FROM_FD 1
+#ifdef _LP64
+#define GPR_ARCH_64 1
+#else /* _LP64 */
+#define GPR_ARCH_32 1
+#endif /* _LP64 */
#elif defined(__native_client__)
#define GPR_PLATFORM_STRING "nacl"
#ifndef _BSD_SOURCE
@@ -404,6 +426,32 @@
#define GPR_HAS_PTHREAD_H 1
#define GPR_GETPID_IN_UNISTD_H 1
#define GRPC_ROOT_PEM_PATH "/config/ssl/cert.pem"
+#elif defined(__HAIKU__)
+#define GPR_PLATFORM_STRING "haiku"
+// Haiku is a community-supported platform.
+// Please contact Jerome Duval <jerome.duval@gmail.com> for support.
+#ifndef _BSD_SOURCE
+#define _BSD_SOURCE
+#endif
+#define GPR_HAIKU 1
+#define GPR_CPU_POSIX 1
+#define GPR_GCC_ATOMIC 1
+#define GPR_POSIX_LOG 1
+#define GPR_POSIX_ENV 1
+#define GPR_POSIX_TMPFILE 1
+#define GPR_POSIX_STAT 1
+#define GPR_POSIX_STRING 1
+#define GPR_POSIX_SUBPROCESS 1
+#define GPR_POSIX_SYNC 1
+#define GPR_POSIX_TIME 1
+#define GPR_HAS_PTHREAD_H 1
+#define GPR_GETPID_IN_UNISTD_H 1
+#define GPR_SUPPORT_CHANNELS_FROM_FD 1
+#ifdef _LP64
+#define GPR_ARCH_64 1
+#else /* _LP64 */
+#define GPR_ARCH_32 1
+#endif /* _LP64 */
#else
#error "Could not auto-detect platform"
#endif
@@ -528,6 +576,19 @@ typedef unsigned __int64 uint64_t;
#define GRPC_MUST_USE_RESULT
#define GPR_ALIGN_STRUCT(n)
#endif
+#ifdef USE_STRICT_WARNING
+/* When building with USE_STRICT_WARNING (which -Werror), types with this
+ attribute will be treated as annotated with warn_unused_result, enforcing
+ returned values of this type should be used.
+ This is added in grpc::Status in mind to address the issue where it always
+ has this annotation internally but OSS doesn't, sometimes causing internal
+ build failure. To prevent this, this is added while not introducing
+ a breaking change to existing user code which may not use returned values
+ of grpc::Status. */
+#define GRPC_MUST_USE_RESULT_WHEN_USE_STRICT_WARNING GRPC_MUST_USE_RESULT
+#else
+#define GRPC_MUST_USE_RESULT_WHEN_USE_STRICT_WARNING
+#endif
#endif
#ifndef GRPC_UNUSED
@@ -547,14 +608,43 @@ typedef unsigned __int64 uint64_t;
#endif
#endif /* GPR_PRINT_FORMAT_CHECK */
+#ifndef GPR_HAS_CPP_ATTRIBUTE
+#ifdef __has_cpp_attribute
+#define GPR_HAS_CPP_ATTRIBUTE(a) __has_cpp_attribute(a)
+#else
+#define GPR_HAS_CPP_ATTRIBUTE(a) 0
+#endif
+#endif /* GPR_HAS_CPP_ATTRIBUTE */
+
+#ifndef GPR_HAS_ATTRIBUTE
+#ifdef __has_attribute
+#define GPR_HAS_ATTRIBUTE(a) __has_attribute(a)
+#else
+#define GPR_HAS_ATTRIBUTE(a) 0
+#endif
+#endif /* GPR_HAS_ATTRIBUTE */
+
+#if GPR_HAS_ATTRIBUTE(noreturn)
+#define GPR_ATTRIBUTE_NORETURN __attribute__((noreturn))
+#else
+#define GPR_ATTRIBUTE_NORETURN
+#endif
+
#if GPR_FORBID_UNREACHABLE_CODE
#define GPR_UNREACHABLE_CODE(STATEMENT)
#else
-#define GPR_UNREACHABLE_CODE(STATEMENT) \
- do { \
- gpr_log(GPR_ERROR, "Should never reach here."); \
- abort(); \
- STATEMENT; \
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern void gpr_unreachable_code(const char* reason, const char* file,
+ int line) GPR_ATTRIBUTE_NORETURN;
+#ifdef __cplusplus
+}
+#endif
+#define GPR_UNREACHABLE_CODE(STATEMENT) \
+ do { \
+ gpr_unreachable_code(#STATEMENT, __FILE__, __LINE__); \
+ STATEMENT; \
} while (0)
#endif /* GPR_FORBID_UNREACHABLE_CODE */
@@ -570,22 +660,6 @@ typedef unsigned __int64 uint64_t;
#define CENSUSAPI GRPCAPI
#endif
-#ifndef GPR_HAS_CPP_ATTRIBUTE
-#ifdef __has_cpp_attribute
-#define GPR_HAS_CPP_ATTRIBUTE(a) __has_cpp_attribute(a)
-#else
-#define GPR_HAS_CPP_ATTRIBUTE(a) 0
-#endif
-#endif /* GPR_HAS_CPP_ATTRIBUTE */
-
-#ifndef GPR_HAS_ATTRIBUTE
-#ifdef __has_attribute
-#define GPR_HAS_ATTRIBUTE(a) __has_attribute(a)
-#else
-#define GPR_HAS_ATTRIBUTE(a) 0
-#endif
-#endif /* GPR_HAS_ATTRIBUTE */
-
#ifndef GPR_HAS_FEATURE
#ifdef __has_feature
#define GPR_HAS_FEATURE(a) __has_feature(a)
@@ -692,21 +766,6 @@ typedef unsigned __int64 uint64_t;
#define __STDC_FORMAT_MACROS
#endif
-/* Selectively enable EventEngine on specific platforms. This default can be
- * overridden using the GRPC_USE_EVENT_ENGINE compiler flag.
- */
-#ifndef GRPC_USE_EVENT_ENGINE
-/* Not enabled by default on any platforms yet. (2021.06) */
-#elif GRPC_USE_EVENT_ENGINE == 0
-/* Building with `-DGRPC_USE_EVENT_ENGINE=0` will override the default. */
-#undef GRPC_USE_EVENT_ENGINE
-#endif /* GRPC_USE_EVENT_ENGINE */
-
-#ifdef GRPC_USE_EVENT_ENGINE
-#undef GPR_SUPPORT_CHANNELS_FROM_FD
-#define GRPC_ARES 0
-#endif /* GRPC_USE_EVENT_ENGINE */
-
#define GRPC_CALLBACK_API_NONEXPERIMENTAL
/* clang 11 with msan miscompiles destruction of [[no_unique_address]] members
diff --git a/contrib/libs/grpc/include/grpc/impl/codegen/slice.h b/contrib/libs/grpc/include/grpc/impl/codegen/slice.h
index 130e5efffd..33c1f1b37b 100644
--- a/contrib/libs/grpc/include/grpc/impl/codegen/slice.h
+++ b/contrib/libs/grpc/include/grpc/impl/codegen/slice.h
@@ -19,7 +19,7 @@
#ifndef GRPC_IMPL_CODEGEN_SLICE_H
#define GRPC_IMPL_CODEGEN_SLICE_H
-// IWYU pragma: private, include <grpc/slice.h>
+// IWYU pragma: private
#include <grpc/impl/codegen/port_platform.h>
diff --git a/contrib/libs/grpc/include/grpcpp/channel.h b/contrib/libs/grpc/include/grpcpp/channel.h
index 25a4c4d5c6..cf7ec3d4bb 100644
--- a/contrib/libs/grpc/include/grpcpp/channel.h
+++ b/contrib/libs/grpc/include/grpcpp/channel.h
@@ -24,11 +24,11 @@
#include <grpc/grpc.h>
#include <grpcpp/impl/call.h>
#include <grpcpp/impl/codegen/channel_interface.h>
-#include <grpcpp/impl/codegen/client_interceptor.h>
#include <grpcpp/impl/codegen/completion_queue.h>
#include <grpcpp/impl/codegen/config.h>
#include <grpcpp/impl/codegen/grpc_library.h>
#include <grpcpp/impl/codegen/sync.h>
+#include <grpcpp/support/client_interceptor.h>
struct grpc_channel;
diff --git a/contrib/libs/grpc/include/grpcpp/create_channel.h b/contrib/libs/grpc/include/grpcpp/create_channel.h
index 4b94a08e45..df015b9869 100644
--- a/contrib/libs/grpc/include/grpcpp/create_channel.h
+++ b/contrib/libs/grpc/include/grpcpp/create_channel.h
@@ -22,9 +22,9 @@
#include <memory>
#include <grpcpp/channel.h>
-#include <grpcpp/impl/codegen/client_interceptor.h>
#include <grpcpp/security/credentials.h>
#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/client_interceptor.h>
#include <grpcpp/support/config.h>
namespace grpc {
diff --git a/contrib/libs/grpc/include/grpcpp/create_channel_binder.h b/contrib/libs/grpc/include/grpcpp/create_channel_binder.h
index 9b68e3a8e8..377e4d4cd6 100644
--- a/contrib/libs/grpc/include/grpcpp/create_channel_binder.h
+++ b/contrib/libs/grpc/include/grpcpp/create_channel_binder.h
@@ -69,6 +69,37 @@ std::shared_ptr<grpc::Channel> CreateCustomBinderChannel(
std::shared_ptr<grpc::experimental::binder::SecurityPolicy> security_policy,
const ChannelArguments& args);
+/// EXPERIMENTAL Create a new \a Channel based on binder transport.
+///
+/// \param jni_env Pointer to a JNIEnv structure
+/// \param context The context that we will use to invoke \a bindService See
+/// https://developer.android.com/reference/android/content/Context#bindService(android.content.Intent,%20android.content.ServiceConnection,%20int)
+/// for detail.
+/// \param uri An URI that can be parsed as an `Intent` with
+/// https://developer.android.com/reference/android/content/Intent#parseUri(java.lang.String,%20int)
+/// \param security_policy Used for checking if remote component is allowed to
+/// connect
+std::shared_ptr<grpc::Channel> CreateBinderChannel(
+ void* jni_env, jobject context, y_absl::string_view uri,
+ std::shared_ptr<grpc::experimental::binder::SecurityPolicy>
+ security_policy);
+
+/// EXPERIMENTAL Create a new \a Channel based on binder transport.
+///
+/// \param jni_env Pointer to a JNIEnv structure
+/// \param context The context that we will use to invoke \a bindService See
+/// https://developer.android.com/reference/android/content/Context#bindService(android.content.Intent,%20android.content.ServiceConnection,%20int)
+/// for detail.
+/// \param uri An URI that can be parsed as an `Intent` with
+/// https://developer.android.com/reference/android/content/Intent#parseUri(java.lang.String,%20int)
+/// \param security_policy Used for checking if remote component is allowed to
+/// connect
+/// \param args Options for channel creation.
+std::shared_ptr<grpc::Channel> CreateCustomBinderChannel(
+ void* jni_env, jobject context, y_absl::string_view uri,
+ std::shared_ptr<grpc::experimental::binder::SecurityPolicy> security_policy,
+ const ChannelArguments& args);
+
/// EXPERIMENTAL Finds internal binder transport Java code. To create channels
/// in threads created in native code, it is required to call this function
/// once beforehand in a thread that is not created in native code.
diff --git a/contrib/libs/grpc/include/grpcpp/ext/call_metric_recorder.h b/contrib/libs/grpc/include/grpcpp/ext/call_metric_recorder.h
new file mode 100644
index 0000000000..91e25760f3
--- /dev/null
+++ b/contrib/libs/grpc/include/grpcpp/ext/call_metric_recorder.h
@@ -0,0 +1,95 @@
+/*
+ *
+ * Copyright 2022 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPCPP_EXT_CALL_METRIC_RECORDER_H
+#define GRPCPP_EXT_CALL_METRIC_RECORDER_H
+
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpcpp/impl/codegen/slice.h>
+#include <grpcpp/impl/codegen/sync.h>
+
+namespace grpc_core {
+class Arena;
+struct BackendMetricData;
+} // namespace grpc_core
+
+namespace grpc {
+class ServerBuilder;
+
+namespace experimental {
+class OrcaServerInterceptor;
+
+// Registers the per-rpc orca load reporter into the \a ServerBuilder.
+// Once this is done, the server will automatically send the load metrics
+// after each RPC as they were reported. In order to report load metrics,
+// call the \a ServerContext::ExperimentalGetCallMetricRecorder() method to
+// retrieve the recorder for the current call.
+void EnableCallMetricRecording(ServerBuilder*);
+
+/// Records call metrics for the purpose of load balancing.
+/// During an RPC, call \a ServerContext::ExperimentalGetCallMetricRecorder()
+/// method to retrive the recorder for the current call.
+class CallMetricRecorder {
+ public:
+ explicit CallMetricRecorder(grpc_core::Arena* arena);
+ ~CallMetricRecorder();
+
+ /// Records a call metric measurement for CPU utilization.
+ /// Multiple calls to this method will override the stored value.
+ CallMetricRecorder& RecordCpuUtilizationMetric(double value);
+
+ /// Records a call metric measurement for memory utilization.
+ /// Multiple calls to this method will override the stored value.
+ CallMetricRecorder& RecordMemoryUtilizationMetric(double value);
+
+ /// Records a call metric measurement for utilization.
+ /// Multiple calls to this method with the same name will
+ /// override the corresponding stored value. The lifetime of the
+ /// name string needs to be longer than the lifetime of the RPC
+ /// itself, since it's going to be sent as trailers after the RPC
+ /// finishes. It is assumed the strings are common names that
+ /// are global constants.
+ CallMetricRecorder& RecordUtilizationMetric(string_ref name, double value);
+
+ /// Records a call metric measurement for request cost.
+ /// Multiple calls to this method with the same name will
+ /// override the corresponding stored value. The lifetime of the
+ /// name string needs to be longer than the lifetime of the RPC
+ /// itself, since it's going to be sent as trailers after the RPC
+ /// finishes. It is assumed the strings are common names that
+ /// are global constants.
+ CallMetricRecorder& RecordRequestCostMetric(string_ref name, double value);
+
+ private:
+ y_absl::optional<TString> CreateSerializedReport();
+
+ internal::Mutex mu_;
+ grpc_core::BackendMetricData* backend_metric_data_ Y_ABSL_GUARDED_BY(&mu_);
+ friend class experimental::OrcaServerInterceptor;
+};
+
+} // namespace experimental
+} // namespace grpc
+
+#endif // GRPCPP_EXT_CALL_METRIC_RECORDER_H
diff --git a/contrib/libs/grpc/include/grpcpp/generic/async_generic_service.h b/contrib/libs/grpc/include/grpcpp/generic/async_generic_service.h
index 01c79428e2..9fb2bb9acb 100644
--- a/contrib/libs/grpc/include/grpcpp/generic/async_generic_service.h
+++ b/contrib/libs/grpc/include/grpcpp/generic/async_generic_service.h
@@ -19,6 +19,117 @@
#ifndef GRPCPP_GENERIC_ASYNC_GENERIC_SERVICE_H
#define GRPCPP_GENERIC_ASYNC_GENERIC_SERVICE_H
-#include <grpcpp/impl/codegen/async_generic_service.h> // IWYU pragma: export
+#include <grpc/impl/codegen/port_platform.h>
+
+#include <grpcpp/impl/codegen/server_callback_handlers.h>
+#include <grpcpp/support/async_stream.h>
+#include <grpcpp/support/byte_buffer.h>
+#include <grpcpp/support/server_callback.h>
+
+struct grpc_server;
+
+namespace grpc {
+
+typedef ServerAsyncReaderWriter<ByteBuffer, ByteBuffer>
+ GenericServerAsyncReaderWriter;
+typedef ServerAsyncResponseWriter<ByteBuffer> GenericServerAsyncResponseWriter;
+typedef ServerAsyncReader<ByteBuffer, ByteBuffer> GenericServerAsyncReader;
+typedef ServerAsyncWriter<ByteBuffer> GenericServerAsyncWriter;
+
+class GenericServerContext final : public ServerContext {
+ public:
+ const TString& method() const { return method_; }
+ const TString& host() const { return host_; }
+
+ private:
+ friend class ServerInterface;
+
+ TString method_;
+ TString host_;
+};
+
+// A generic service at the server side accepts all RPC methods and hosts. It is
+// typically used in proxies. The generic service can be registered to a server
+// which also has other services.
+// Sample usage:
+// ServerBuilder builder;
+// auto cq = builder.AddCompletionQueue();
+// AsyncGenericService generic_service;
+// builder.RegisterAsyncGenericService(&generic_service);
+// auto server = builder.BuildAndStart();
+//
+// // request a new call
+// GenericServerContext context;
+// GenericServerAsyncReaderWriter stream;
+// generic_service.RequestCall(&context, &stream, cq.get(), cq.get(), tag);
+//
+// When tag is retrieved from cq->Next(), context.method() can be used to look
+// at the method and the RPC can be handled accordingly.
+class AsyncGenericService final {
+ public:
+ AsyncGenericService() : server_(nullptr) {}
+
+ void RequestCall(GenericServerContext* ctx,
+ GenericServerAsyncReaderWriter* reader_writer,
+ grpc::CompletionQueue* call_cq,
+ grpc::ServerCompletionQueue* notification_cq, void* tag);
+
+ private:
+ friend class grpc::Server;
+ grpc::Server* server_;
+};
+
+/// \a ServerGenericBidiReactor is the reactor class for bidi streaming RPCs
+/// invoked on a CallbackGenericService. It is just a ServerBidi reactor with
+/// ByteBuffer arguments.
+using ServerGenericBidiReactor = ServerBidiReactor<ByteBuffer, ByteBuffer>;
+
+class GenericCallbackServerContext final : public grpc::CallbackServerContext {
+ public:
+ const TString& method() const { return method_; }
+ const TString& host() const { return host_; }
+
+ private:
+ friend class grpc::Server;
+
+ TString method_;
+ TString host_;
+};
+
+/// \a CallbackGenericService is the base class for generic services implemented
+/// using the callback API and registered through the ServerBuilder using
+/// RegisterCallbackGenericService.
+class CallbackGenericService {
+ public:
+ CallbackGenericService() {}
+ virtual ~CallbackGenericService() {}
+
+ /// The "method handler" for the generic API. This function should be
+ /// overridden to provide a ServerGenericBidiReactor that implements the
+ /// application-level interface for this RPC. Unimplemented by default.
+ virtual ServerGenericBidiReactor* CreateReactor(
+ GenericCallbackServerContext* /*ctx*/) {
+ class Reactor : public ServerGenericBidiReactor {
+ public:
+ Reactor() { this->Finish(Status(StatusCode::UNIMPLEMENTED, "")); }
+ void OnDone() override { delete this; }
+ };
+ return new Reactor;
+ }
+
+ private:
+ friend class grpc::Server;
+
+ internal::CallbackBidiHandler<ByteBuffer, ByteBuffer>* Handler() {
+ return new internal::CallbackBidiHandler<ByteBuffer, ByteBuffer>(
+ [this](grpc::CallbackServerContext* ctx) {
+ return CreateReactor(static_cast<GenericCallbackServerContext*>(ctx));
+ });
+ }
+
+ grpc::Server* server_{nullptr};
+};
+
+} // namespace grpc
#endif // GRPCPP_GENERIC_ASYNC_GENERIC_SERVICE_H
diff --git a/contrib/libs/grpc/include/grpcpp/impl/call.h b/contrib/libs/grpc/include/grpcpp/impl/call.h
index 97d8fdfc7c..2a119963f5 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/call.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/call.h
@@ -19,6 +19,76 @@
#ifndef GRPCPP_IMPL_CALL_H
#define GRPCPP_IMPL_CALL_H
-#include <grpcpp/impl/codegen/call.h> // IWYU pragma: export
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpcpp/impl/call_hook.h>
+
+namespace grpc {
+class CompletionQueue;
+namespace experimental {
+class ClientRpcInfo;
+class ServerRpcInfo;
+} // namespace experimental
+namespace internal {
+class CallHook;
+class CallOpSetInterface;
+
+/// Straightforward wrapping of the C call object
+class Call final {
+ public:
+ Call()
+ : call_hook_(nullptr),
+ cq_(nullptr),
+ call_(nullptr),
+ max_receive_message_size_(-1) {}
+ /** call is owned by the caller */
+ Call(grpc_call* call, CallHook* call_hook, grpc::CompletionQueue* cq)
+ : call_hook_(call_hook),
+ cq_(cq),
+ call_(call),
+ max_receive_message_size_(-1) {}
+
+ Call(grpc_call* call, CallHook* call_hook, grpc::CompletionQueue* cq,
+ experimental::ClientRpcInfo* rpc_info)
+ : call_hook_(call_hook),
+ cq_(cq),
+ call_(call),
+ max_receive_message_size_(-1),
+ client_rpc_info_(rpc_info) {}
+
+ Call(grpc_call* call, CallHook* call_hook, grpc::CompletionQueue* cq,
+ int max_receive_message_size, experimental::ServerRpcInfo* rpc_info)
+ : call_hook_(call_hook),
+ cq_(cq),
+ call_(call),
+ max_receive_message_size_(max_receive_message_size),
+ server_rpc_info_(rpc_info) {}
+
+ void PerformOps(CallOpSetInterface* ops) {
+ call_hook_->PerformOpsOnCall(ops, this);
+ }
+
+ grpc_call* call() const { return call_; }
+ grpc::CompletionQueue* cq() const { return cq_; }
+
+ int max_receive_message_size() const { return max_receive_message_size_; }
+
+ experimental::ClientRpcInfo* client_rpc_info() const {
+ return client_rpc_info_;
+ }
+
+ experimental::ServerRpcInfo* server_rpc_info() const {
+ return server_rpc_info_;
+ }
+
+ private:
+ CallHook* call_hook_;
+ grpc::CompletionQueue* cq_;
+ grpc_call* call_;
+ int max_receive_message_size_;
+ experimental::ClientRpcInfo* client_rpc_info_ = nullptr;
+ experimental::ServerRpcInfo* server_rpc_info_ = nullptr;
+};
+} // namespace internal
+} // namespace grpc
#endif // GRPCPP_IMPL_CALL_H
diff --git a/contrib/libs/grpc/include/grpcpp/impl/call_hook.h b/contrib/libs/grpc/include/grpcpp/impl/call_hook.h
new file mode 100644
index 0000000000..8903b9a06e
--- /dev/null
+++ b/contrib/libs/grpc/include/grpcpp/impl/call_hook.h
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPCPP_IMPL_CALL_HOOK_H
+#define GRPCPP_IMPL_CALL_HOOK_H
+
+namespace grpc {
+
+namespace internal {
+class CallOpSetInterface;
+class Call;
+
+/// This is an interface that Channel and Server implement to allow them to hook
+/// performing ops.
+class CallHook {
+ public:
+ virtual ~CallHook() {}
+ virtual void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) = 0;
+};
+} // namespace internal
+
+} // namespace grpc
+
+#endif // GRPCPP_IMPL_CALL_HOOK_H
diff --git a/contrib/libs/grpc/include/grpcpp/impl/call_op_set_interface.h b/contrib/libs/grpc/include/grpcpp/impl/call_op_set_interface.h
new file mode 100644
index 0000000000..43ed4ed94d
--- /dev/null
+++ b/contrib/libs/grpc/include/grpcpp/impl/call_op_set_interface.h
@@ -0,0 +1,61 @@
+/*
+ *
+ * Copyright 2018 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPCPP_IMPL_CALL_OP_SET_INTERFACE_H
+#define GRPCPP_IMPL_CALL_OP_SET_INTERFACE_H
+
+// IWYU pragma: private
+
+#include <grpcpp/impl/codegen/completion_queue_tag.h>
+
+namespace grpc {
+namespace internal {
+
+class Call;
+
+/// An abstract collection of call ops, used to generate the
+/// grpc_call_op structure to pass down to the lower layers,
+/// and as it is-a CompletionQueueTag, also massages the final
+/// completion into the correct form for consumption in the C++
+/// API.
+class CallOpSetInterface : public CompletionQueueTag {
+ public:
+ /// Fills in grpc_op, starting from ops[*nops] and moving
+ /// upwards.
+ virtual void FillOps(internal::Call* call) = 0;
+
+ /// Get the tag to be used at the core completion queue. Generally, the
+ /// value of core_cq_tag will be "this". However, it can be overridden if we
+ /// want core to process the tag differently (e.g., as a core callback)
+ virtual void* core_cq_tag() = 0;
+
+ // This will be called while interceptors are run if the RPC is a hijacked
+ // RPC. This should set hijacking state for each of the ops.
+ virtual void SetHijackingState() = 0;
+
+ // Should be called after interceptors are done running
+ virtual void ContinueFillOpsAfterInterception() = 0;
+
+ // Should be called after interceptors are done running on the finalize result
+ // path
+ virtual void ContinueFinalizeResultAfterInterception() = 0;
+};
+} // namespace internal
+} // namespace grpc
+
+#endif // GRPCPP_IMPL_CALL_OP_SET_INTERFACE_H
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/async_generic_service.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/async_generic_service.h
index 8aaeb2b824..03a096c52b 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/async_generic_service.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/async_generic_service.h
@@ -19,119 +19,9 @@
#ifndef GRPCPP_IMPL_CODEGEN_ASYNC_GENERIC_SERVICE_H
#define GRPCPP_IMPL_CODEGEN_ASYNC_GENERIC_SERVICE_H
-// IWYU pragma: private, include <grpcpp/generic/async_generic_service.h>
+// IWYU pragma: private
-#include <grpc/impl/codegen/port_platform.h>
-
-#include <grpcpp/impl/codegen/async_stream.h>
-#include <grpcpp/impl/codegen/byte_buffer.h>
-#include <grpcpp/impl/codegen/server_callback.h>
-#include <grpcpp/impl/codegen/server_callback_handlers.h>
-
-struct grpc_server;
-
-namespace grpc {
-
-typedef ServerAsyncReaderWriter<ByteBuffer, ByteBuffer>
- GenericServerAsyncReaderWriter;
-typedef ServerAsyncResponseWriter<ByteBuffer> GenericServerAsyncResponseWriter;
-typedef ServerAsyncReader<ByteBuffer, ByteBuffer> GenericServerAsyncReader;
-typedef ServerAsyncWriter<ByteBuffer> GenericServerAsyncWriter;
-
-class GenericServerContext final : public ServerContext {
- public:
- const TString& method() const { return method_; }
- const TString& host() const { return host_; }
-
- private:
- friend class ServerInterface;
-
- TString method_;
- TString host_;
-};
-
-// A generic service at the server side accepts all RPC methods and hosts. It is
-// typically used in proxies. The generic service can be registered to a server
-// which also has other services.
-// Sample usage:
-// ServerBuilder builder;
-// auto cq = builder.AddCompletionQueue();
-// AsyncGenericService generic_service;
-// builder.RegisterAsyncGenericService(&generic_service);
-// auto server = builder.BuildAndStart();
-//
-// // request a new call
-// GenericServerContext context;
-// GenericServerAsyncReaderWriter stream;
-// generic_service.RequestCall(&context, &stream, cq.get(), cq.get(), tag);
-//
-// When tag is retrieved from cq->Next(), context.method() can be used to look
-// at the method and the RPC can be handled accordingly.
-class AsyncGenericService final {
- public:
- AsyncGenericService() : server_(nullptr) {}
-
- void RequestCall(GenericServerContext* ctx,
- GenericServerAsyncReaderWriter* reader_writer,
- grpc::CompletionQueue* call_cq,
- grpc::ServerCompletionQueue* notification_cq, void* tag);
-
- private:
- friend class grpc::Server;
- grpc::Server* server_;
-};
-
-/// \a ServerGenericBidiReactor is the reactor class for bidi streaming RPCs
-/// invoked on a CallbackGenericService. It is just a ServerBidi reactor with
-/// ByteBuffer arguments.
-using ServerGenericBidiReactor = ServerBidiReactor<ByteBuffer, ByteBuffer>;
-
-class GenericCallbackServerContext final : public grpc::CallbackServerContext {
- public:
- const TString& method() const { return method_; }
- const TString& host() const { return host_; }
-
- private:
- friend class grpc::Server;
-
- TString method_;
- TString host_;
-};
-
-/// \a CallbackGenericService is the base class for generic services implemented
-/// using the callback API and registered through the ServerBuilder using
-/// RegisterCallbackGenericService.
-class CallbackGenericService {
- public:
- CallbackGenericService() {}
- virtual ~CallbackGenericService() {}
-
- /// The "method handler" for the generic API. This function should be
- /// overridden to provide a ServerGenericBidiReactor that implements the
- /// application-level interface for this RPC. Unimplemented by default.
- virtual ServerGenericBidiReactor* CreateReactor(
- GenericCallbackServerContext* /*ctx*/) {
- class Reactor : public ServerGenericBidiReactor {
- public:
- Reactor() { this->Finish(Status(StatusCode::UNIMPLEMENTED, "")); }
- void OnDone() override { delete this; }
- };
- return new Reactor;
- }
-
- private:
- friend class grpc::Server;
-
- internal::CallbackBidiHandler<ByteBuffer, ByteBuffer>* Handler() {
- return new internal::CallbackBidiHandler<ByteBuffer, ByteBuffer>(
- [this](grpc::CallbackServerContext* ctx) {
- return CreateReactor(static_cast<GenericCallbackServerContext*>(ctx));
- });
- }
-
- grpc::Server* server_{nullptr};
-};
-
-} // namespace grpc
+/// TODO(chengyuc): Remove this file after solving compatibility.
+#include <grpcpp/generic/async_generic_service.h>
#endif // GRPCPP_IMPL_CODEGEN_ASYNC_GENERIC_SERVICE_H
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/async_stream.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/async_stream.h
index 5b63c30173..524f619f81 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/async_stream.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/async_stream.h
@@ -18,1115 +18,9 @@
#ifndef GRPCPP_IMPL_CODEGEN_ASYNC_STREAM_H
#define GRPCPP_IMPL_CODEGEN_ASYNC_STREAM_H
-// IWYU pragma: private, include <grpcpp/support/async_stream.h>
+// IWYU pragma: private
-#include <grpcpp/impl/codegen/call.h>
-#include <grpcpp/impl/codegen/channel_interface.h>
-#include <grpcpp/impl/codegen/core_codegen_interface.h>
-#include <grpcpp/impl/codegen/server_context.h>
-#include <grpcpp/impl/codegen/service_type.h>
-#include <grpcpp/impl/codegen/status.h>
+/// TODO(chengyuc): Remove this file after solving compatibility.
+#include <grpcpp/support/async_stream.h>
-namespace grpc {
-
-namespace internal {
-/// Common interface for all client side asynchronous streaming.
-class ClientAsyncStreamingInterface {
- public:
- virtual ~ClientAsyncStreamingInterface() {}
-
- /// Start the call that was set up by the constructor, but only if the
- /// constructor was invoked through the "Prepare" API which doesn't actually
- /// start the call
- virtual void StartCall(void* tag) = 0;
-
- /// Request notification of the reading of the initial metadata. Completion
- /// will be notified by \a tag on the associated completion queue.
- /// This call is optional, but if it is used, it cannot be used concurrently
- /// with or after the \a AsyncReaderInterface::Read method.
- ///
- /// \param[in] tag Tag identifying this request.
- virtual void ReadInitialMetadata(void* tag) = 0;
-
- /// Indicate that the stream is to be finished and request notification for
- /// when the call has been ended.
- /// Should not be used concurrently with other operations.
- ///
- /// It is appropriate to call this method exactly once when both:
- /// * the client side has no more message to send
- /// (this can be declared implicitly by calling this method, or
- /// explicitly through an earlier call to the <i>WritesDone</i> method
- /// of the class in use, e.g. \a ClientAsyncWriterInterface::WritesDone or
- /// \a ClientAsyncReaderWriterInterface::WritesDone).
- /// * there are no more messages to be received from the server (this can
- /// be known implicitly by the calling code, or explicitly from an
- /// earlier call to \a AsyncReaderInterface::Read that yielded a failed
- /// result, e.g. cq->Next(&read_tag, &ok) filled in 'ok' with 'false').
- ///
- /// The tag will be returned when either:
- /// - all incoming messages have been read and the server has returned
- /// a status.
- /// - the server has returned a non-OK status.
- /// - the call failed for some reason and the library generated a
- /// status.
- ///
- /// Note that implementations of this method attempt to receive initial
- /// metadata from the server if initial metadata hasn't yet been received.
- ///
- /// \param[in] tag Tag identifying this request.
- /// \param[out] status To be updated with the operation status.
- virtual void Finish(grpc::Status* status, void* tag) = 0;
-};
-
-/// An interface that yields a sequence of messages of type \a R.
-template <class R>
-class AsyncReaderInterface {
- public:
- virtual ~AsyncReaderInterface() {}
-
- /// Read a message of type \a R into \a msg. Completion will be notified by \a
- /// tag on the associated completion queue.
- /// This is thread-safe with respect to \a Write or \a WritesDone methods. It
- /// should not be called concurrently with other streaming APIs
- /// on the same stream. It is not meaningful to call it concurrently
- /// with another \a AsyncReaderInterface::Read on the same stream since reads
- /// on the same stream are delivered in order.
- ///
- /// \param[out] msg Where to eventually store the read message.
- /// \param[in] tag The tag identifying the operation.
- ///
- /// Side effect: note that this method attempt to receive initial metadata for
- /// a stream if it hasn't yet been received.
- virtual void Read(R* msg, void* tag) = 0;
-};
-
-/// An interface that can be fed a sequence of messages of type \a W.
-template <class W>
-class AsyncWriterInterface {
- public:
- virtual ~AsyncWriterInterface() {}
-
- /// Request the writing of \a msg with identifying tag \a tag.
- ///
- /// Only one write may be outstanding at any given time. This means that
- /// after calling Write, one must wait to receive \a tag from the completion
- /// queue BEFORE calling Write again.
- /// This is thread-safe with respect to \a AsyncReaderInterface::Read
- ///
- /// gRPC doesn't take ownership or a reference to \a msg, so it is safe to
- /// to deallocate once Write returns.
- ///
- /// \param[in] msg The message to be written.
- /// \param[in] tag The tag identifying the operation.
- virtual void Write(const W& msg, void* tag) = 0;
-
- /// Request the writing of \a msg using WriteOptions \a options with
- /// identifying tag \a tag.
- ///
- /// Only one write may be outstanding at any given time. This means that
- /// after calling Write, one must wait to receive \a tag from the completion
- /// queue BEFORE calling Write again.
- /// WriteOptions \a options is used to set the write options of this message.
- /// This is thread-safe with respect to \a AsyncReaderInterface::Read
- ///
- /// gRPC doesn't take ownership or a reference to \a msg, so it is safe to
- /// to deallocate once Write returns.
- ///
- /// \param[in] msg The message to be written.
- /// \param[in] options The WriteOptions to be used to write this message.
- /// \param[in] tag The tag identifying the operation.
- virtual void Write(const W& msg, grpc::WriteOptions options, void* tag) = 0;
-
- /// Request the writing of \a msg and coalesce it with the writing
- /// of trailing metadata, using WriteOptions \a options with
- /// identifying tag \a tag.
- ///
- /// For client, WriteLast is equivalent of performing Write and
- /// WritesDone in a single step.
- /// For server, WriteLast buffers the \a msg. The writing of \a msg is held
- /// until Finish is called, where \a msg and trailing metadata are coalesced
- /// and write is initiated. Note that WriteLast can only buffer \a msg up to
- /// the flow control window size. If \a msg size is larger than the window
- /// size, it will be sent on wire without buffering.
- ///
- /// gRPC doesn't take ownership or a reference to \a msg, so it is safe to
- /// to deallocate once Write returns.
- ///
- /// \param[in] msg The message to be written.
- /// \param[in] options The WriteOptions to be used to write this message.
- /// \param[in] tag The tag identifying the operation.
- void WriteLast(const W& msg, grpc::WriteOptions options, void* tag) {
- Write(msg, options.set_last_message(), tag);
- }
-};
-
-} // namespace internal
-
-template <class R>
-class ClientAsyncReaderInterface
- : public internal::ClientAsyncStreamingInterface,
- public internal::AsyncReaderInterface<R> {};
-
-namespace internal {
-template <class R>
-class ClientAsyncReaderFactory {
- public:
- /// Create a stream object.
- /// Write the first request out if \a start is set.
- /// \a tag will be notified on \a cq when the call has been started and
- /// \a request has been written out. If \a start is not set, \a tag must be
- /// nullptr and the actual call must be initiated by StartCall
- /// Note that \a context will be used to fill in custom initial metadata
- /// used to send to the server when starting the call.
- template <class W>
- static ClientAsyncReader<R>* Create(grpc::ChannelInterface* channel,
- grpc::CompletionQueue* cq,
- const grpc::internal::RpcMethod& method,
- grpc::ClientContext* context,
- const W& request, bool start, void* tag) {
- grpc::internal::Call call = channel->CreateCall(method, context, cq);
- return new (grpc::g_core_codegen_interface->grpc_call_arena_alloc(
- call.call(), sizeof(ClientAsyncReader<R>)))
- ClientAsyncReader<R>(call, context, request, start, tag);
- }
-};
-} // namespace internal
-
-/// Async client-side API for doing server-streaming RPCs,
-/// where the incoming message stream coming from the server has
-/// messages of type \a R.
-template <class R>
-class ClientAsyncReader final : public ClientAsyncReaderInterface<R> {
- public:
- // always allocated against a call arena, no memory free required
- static void operator delete(void* /*ptr*/, std::size_t size) {
- GPR_CODEGEN_ASSERT(size == sizeof(ClientAsyncReader));
- }
-
- // This operator should never be called as the memory should be freed as part
- // of the arena destruction. It only exists to provide a matching operator
- // delete to the operator new so that some compilers will not complain (see
- // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this
- // there are no tests catching the compiler warning.
- static void operator delete(void*, void*) { GPR_CODEGEN_ASSERT(false); }
-
- void StartCall(void* tag) override {
- GPR_CODEGEN_ASSERT(!started_);
- started_ = true;
- StartCallInternal(tag);
- }
-
- /// See the \a ClientAsyncStreamingInterface.ReadInitialMetadata
- /// method for semantics.
- ///
- /// Side effect:
- /// - upon receiving initial metadata from the server,
- /// the \a ClientContext associated with this call is updated, and the
- /// calling code can access the received metadata through the
- /// \a ClientContext.
- void ReadInitialMetadata(void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_);
-
- meta_ops_.set_output_tag(tag);
- meta_ops_.RecvInitialMetadata(context_);
- call_.PerformOps(&meta_ops_);
- }
-
- void Read(R* msg, void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- read_ops_.set_output_tag(tag);
- if (!context_->initial_metadata_received_) {
- read_ops_.RecvInitialMetadata(context_);
- }
- read_ops_.RecvMessage(msg);
- call_.PerformOps(&read_ops_);
- }
-
- /// See the \a ClientAsyncStreamingInterface.Finish method for semantics.
- ///
- /// Side effect:
- /// - the \a ClientContext associated with this call is updated with
- /// possible initial and trailing metadata received from the server.
- void Finish(grpc::Status* status, void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- finish_ops_.set_output_tag(tag);
- if (!context_->initial_metadata_received_) {
- finish_ops_.RecvInitialMetadata(context_);
- }
- finish_ops_.ClientRecvStatus(context_, status);
- call_.PerformOps(&finish_ops_);
- }
-
- private:
- friend class internal::ClientAsyncReaderFactory<R>;
- template <class W>
- ClientAsyncReader(grpc::internal::Call call, grpc::ClientContext* context,
- const W& request, bool start, void* tag)
- : context_(context), call_(call), started_(start) {
- // TODO(ctiller): don't assert
- GPR_CODEGEN_ASSERT(init_ops_.SendMessage(request).ok());
- init_ops_.ClientSendClose();
- if (start) {
- StartCallInternal(tag);
- } else {
- GPR_CODEGEN_ASSERT(tag == nullptr);
- }
- }
-
- void StartCallInternal(void* tag) {
- init_ops_.SendInitialMetadata(&context_->send_initial_metadata_,
- context_->initial_metadata_flags());
- init_ops_.set_output_tag(tag);
- call_.PerformOps(&init_ops_);
- }
-
- grpc::ClientContext* context_;
- grpc::internal::Call call_;
- bool started_;
- grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
- grpc::internal::CallOpSendMessage,
- grpc::internal::CallOpClientSendClose>
- init_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata>
- meta_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata,
- grpc::internal::CallOpRecvMessage<R>>
- read_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata,
- grpc::internal::CallOpClientRecvStatus>
- finish_ops_;
-};
-
-/// Common interface for client side asynchronous writing.
-template <class W>
-class ClientAsyncWriterInterface
- : public internal::ClientAsyncStreamingInterface,
- public internal::AsyncWriterInterface<W> {
- public:
- /// Signal the client is done with the writes (half-close the client stream).
- /// Thread-safe with respect to \a AsyncReaderInterface::Read
- ///
- /// \param[in] tag The tag identifying the operation.
- virtual void WritesDone(void* tag) = 0;
-};
-
-namespace internal {
-template <class W>
-class ClientAsyncWriterFactory {
- public:
- /// Create a stream object.
- /// Start the RPC if \a start is set
- /// \a tag will be notified on \a cq when the call has been started (i.e.
- /// intitial metadata sent) and \a request has been written out.
- /// If \a start is not set, \a tag must be nullptr and the actual call
- /// must be initiated by StartCall
- /// Note that \a context will be used to fill in custom initial metadata
- /// used to send to the server when starting the call.
- /// \a response will be filled in with the single expected response
- /// message from the server upon a successful call to the \a Finish
- /// method of this instance.
- template <class R>
- static ClientAsyncWriter<W>* Create(grpc::ChannelInterface* channel,
- grpc::CompletionQueue* cq,
- const grpc::internal::RpcMethod& method,
- grpc::ClientContext* context, R* response,
- bool start, void* tag) {
- grpc::internal::Call call = channel->CreateCall(method, context, cq);
- return new (grpc::g_core_codegen_interface->grpc_call_arena_alloc(
- call.call(), sizeof(ClientAsyncWriter<W>)))
- ClientAsyncWriter<W>(call, context, response, start, tag);
- }
-};
-} // namespace internal
-
-/// Async API on the client side for doing client-streaming RPCs,
-/// where the outgoing message stream going to the server contains
-/// messages of type \a W.
-template <class W>
-class ClientAsyncWriter final : public ClientAsyncWriterInterface<W> {
- public:
- // always allocated against a call arena, no memory free required
- static void operator delete(void* /*ptr*/, std::size_t size) {
- GPR_CODEGEN_ASSERT(size == sizeof(ClientAsyncWriter));
- }
-
- // This operator should never be called as the memory should be freed as part
- // of the arena destruction. It only exists to provide a matching operator
- // delete to the operator new so that some compilers will not complain (see
- // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this
- // there are no tests catching the compiler warning.
- static void operator delete(void*, void*) { GPR_CODEGEN_ASSERT(false); }
-
- void StartCall(void* tag) override {
- GPR_CODEGEN_ASSERT(!started_);
- started_ = true;
- StartCallInternal(tag);
- }
-
- /// See the \a ClientAsyncStreamingInterface.ReadInitialMetadata method for
- /// semantics.
- ///
- /// Side effect:
- /// - upon receiving initial metadata from the server, the \a ClientContext
- /// associated with this call is updated, and the calling code can access
- /// the received metadata through the \a ClientContext.
- void ReadInitialMetadata(void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_);
-
- meta_ops_.set_output_tag(tag);
- meta_ops_.RecvInitialMetadata(context_);
- call_.PerformOps(&meta_ops_);
- }
-
- void Write(const W& msg, void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- write_ops_.set_output_tag(tag);
- // TODO(ctiller): don't assert
- GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok());
- call_.PerformOps(&write_ops_);
- }
-
- void Write(const W& msg, grpc::WriteOptions options, void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- write_ops_.set_output_tag(tag);
- if (options.is_last_message()) {
- options.set_buffer_hint();
- write_ops_.ClientSendClose();
- }
- // TODO(ctiller): don't assert
- GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok());
- call_.PerformOps(&write_ops_);
- }
-
- void WritesDone(void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- write_ops_.set_output_tag(tag);
- write_ops_.ClientSendClose();
- call_.PerformOps(&write_ops_);
- }
-
- /// See the \a ClientAsyncStreamingInterface.Finish method for semantics.
- ///
- /// Side effect:
- /// - the \a ClientContext associated with this call is updated with
- /// possible initial and trailing metadata received from the server.
- /// - attempts to fill in the \a response parameter passed to this class's
- /// constructor with the server's response message.
- void Finish(grpc::Status* status, void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- finish_ops_.set_output_tag(tag);
- if (!context_->initial_metadata_received_) {
- finish_ops_.RecvInitialMetadata(context_);
- }
- finish_ops_.ClientRecvStatus(context_, status);
- call_.PerformOps(&finish_ops_);
- }
-
- private:
- friend class internal::ClientAsyncWriterFactory<W>;
- template <class R>
- ClientAsyncWriter(grpc::internal::Call call, grpc::ClientContext* context,
- R* response, bool start, void* tag)
- : context_(context), call_(call), started_(start) {
- finish_ops_.RecvMessage(response);
- finish_ops_.AllowNoMessage();
- if (start) {
- StartCallInternal(tag);
- } else {
- GPR_CODEGEN_ASSERT(tag == nullptr);
- }
- }
-
- void StartCallInternal(void* tag) {
- write_ops_.SendInitialMetadata(&context_->send_initial_metadata_,
- context_->initial_metadata_flags());
- // if corked bit is set in context, we just keep the initial metadata
- // buffered up to coalesce with later message send. No op is performed.
- if (!context_->initial_metadata_corked_) {
- write_ops_.set_output_tag(tag);
- call_.PerformOps(&write_ops_);
- }
- }
-
- grpc::ClientContext* context_;
- grpc::internal::Call call_;
- bool started_;
- grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata>
- meta_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
- grpc::internal::CallOpSendMessage,
- grpc::internal::CallOpClientSendClose>
- write_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata,
- grpc::internal::CallOpGenericRecvMessage,
- grpc::internal::CallOpClientRecvStatus>
- finish_ops_;
-};
-
-/// Async client-side interface for bi-directional streaming,
-/// where the client-to-server message stream has messages of type \a W,
-/// and the server-to-client message stream has messages of type \a R.
-template <class W, class R>
-class ClientAsyncReaderWriterInterface
- : public internal::ClientAsyncStreamingInterface,
- public internal::AsyncWriterInterface<W>,
- public internal::AsyncReaderInterface<R> {
- public:
- /// Signal the client is done with the writes (half-close the client stream).
- /// Thread-safe with respect to \a AsyncReaderInterface::Read
- ///
- /// \param[in] tag The tag identifying the operation.
- virtual void WritesDone(void* tag) = 0;
-};
-
-namespace internal {
-template <class W, class R>
-class ClientAsyncReaderWriterFactory {
- public:
- /// Create a stream object.
- /// Start the RPC request if \a start is set.
- /// \a tag will be notified on \a cq when the call has been started (i.e.
- /// intitial metadata sent). If \a start is not set, \a tag must be
- /// nullptr and the actual call must be initiated by StartCall
- /// Note that \a context will be used to fill in custom initial metadata
- /// used to send to the server when starting the call.
- static ClientAsyncReaderWriter<W, R>* Create(
- grpc::ChannelInterface* channel, grpc::CompletionQueue* cq,
- const grpc::internal::RpcMethod& method, grpc::ClientContext* context,
- bool start, void* tag) {
- grpc::internal::Call call = channel->CreateCall(method, context, cq);
-
- return new (grpc::g_core_codegen_interface->grpc_call_arena_alloc(
- call.call(), sizeof(ClientAsyncReaderWriter<W, R>)))
- ClientAsyncReaderWriter<W, R>(call, context, start, tag);
- }
-};
-} // namespace internal
-
-/// Async client-side interface for bi-directional streaming,
-/// where the outgoing message stream going to the server
-/// has messages of type \a W, and the incoming message stream coming
-/// from the server has messages of type \a R.
-template <class W, class R>
-class ClientAsyncReaderWriter final
- : public ClientAsyncReaderWriterInterface<W, R> {
- public:
- // always allocated against a call arena, no memory free required
- static void operator delete(void* /*ptr*/, std::size_t size) {
- GPR_CODEGEN_ASSERT(size == sizeof(ClientAsyncReaderWriter));
- }
-
- // This operator should never be called as the memory should be freed as part
- // of the arena destruction. It only exists to provide a matching operator
- // delete to the operator new so that some compilers will not complain (see
- // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this
- // there are no tests catching the compiler warning.
- static void operator delete(void*, void*) { GPR_CODEGEN_ASSERT(false); }
-
- void StartCall(void* tag) override {
- GPR_CODEGEN_ASSERT(!started_);
- started_ = true;
- StartCallInternal(tag);
- }
-
- /// See the \a ClientAsyncStreamingInterface.ReadInitialMetadata method
- /// for semantics of this method.
- ///
- /// Side effect:
- /// - upon receiving initial metadata from the server, the \a ClientContext
- /// is updated with it, and then the receiving initial metadata can
- /// be accessed through this \a ClientContext.
- void ReadInitialMetadata(void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_);
-
- meta_ops_.set_output_tag(tag);
- meta_ops_.RecvInitialMetadata(context_);
- call_.PerformOps(&meta_ops_);
- }
-
- void Read(R* msg, void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- read_ops_.set_output_tag(tag);
- if (!context_->initial_metadata_received_) {
- read_ops_.RecvInitialMetadata(context_);
- }
- read_ops_.RecvMessage(msg);
- call_.PerformOps(&read_ops_);
- }
-
- void Write(const W& msg, void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- write_ops_.set_output_tag(tag);
- // TODO(ctiller): don't assert
- GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok());
- call_.PerformOps(&write_ops_);
- }
-
- void Write(const W& msg, grpc::WriteOptions options, void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- write_ops_.set_output_tag(tag);
- if (options.is_last_message()) {
- options.set_buffer_hint();
- write_ops_.ClientSendClose();
- }
- // TODO(ctiller): don't assert
- GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok());
- call_.PerformOps(&write_ops_);
- }
-
- void WritesDone(void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- write_ops_.set_output_tag(tag);
- write_ops_.ClientSendClose();
- call_.PerformOps(&write_ops_);
- }
-
- /// See the \a ClientAsyncStreamingInterface.Finish method for semantics.
- /// Side effect
- /// - the \a ClientContext associated with this call is updated with
- /// possible initial and trailing metadata sent from the server.
- void Finish(grpc::Status* status, void* tag) override {
- GPR_CODEGEN_ASSERT(started_);
- finish_ops_.set_output_tag(tag);
- if (!context_->initial_metadata_received_) {
- finish_ops_.RecvInitialMetadata(context_);
- }
- finish_ops_.ClientRecvStatus(context_, status);
- call_.PerformOps(&finish_ops_);
- }
-
- private:
- friend class internal::ClientAsyncReaderWriterFactory<W, R>;
- ClientAsyncReaderWriter(grpc::internal::Call call,
- grpc::ClientContext* context, bool start, void* tag)
- : context_(context), call_(call), started_(start) {
- if (start) {
- StartCallInternal(tag);
- } else {
- GPR_CODEGEN_ASSERT(tag == nullptr);
- }
- }
-
- void StartCallInternal(void* tag) {
- write_ops_.SendInitialMetadata(&context_->send_initial_metadata_,
- context_->initial_metadata_flags());
- // if corked bit is set in context, we just keep the initial metadata
- // buffered up to coalesce with later message send. No op is performed.
- if (!context_->initial_metadata_corked_) {
- write_ops_.set_output_tag(tag);
- call_.PerformOps(&write_ops_);
- }
- }
-
- grpc::ClientContext* context_;
- grpc::internal::Call call_;
- bool started_;
- grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata>
- meta_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata,
- grpc::internal::CallOpRecvMessage<R>>
- read_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
- grpc::internal::CallOpSendMessage,
- grpc::internal::CallOpClientSendClose>
- write_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata,
- grpc::internal::CallOpClientRecvStatus>
- finish_ops_;
-};
-
-template <class W, class R>
-class ServerAsyncReaderInterface
- : public grpc::internal::ServerAsyncStreamingInterface,
- public internal::AsyncReaderInterface<R> {
- public:
- /// Indicate that the stream is to be finished with a certain status code
- /// and also send out \a msg response to the client.
- /// Request notification for when the server has sent the response and the
- /// appropriate signals to the client to end the call.
- /// Should not be used concurrently with other operations.
- ///
- /// It is appropriate to call this method when:
- /// * all messages from the client have been received (either known
- /// implictly, or explicitly because a previous
- /// \a AsyncReaderInterface::Read operation with a non-ok result,
- /// e.g., cq->Next(&read_tag, &ok) filled in 'ok' with 'false').
- ///
- /// This operation will end when the server has finished sending out initial
- /// metadata (if not sent already), response message, and status, or if
- /// some failure occurred when trying to do so.
- ///
- /// gRPC doesn't take ownership or a reference to \a msg or \a status, so it
- /// is safe to deallocate once Finish returns.
- ///
- /// \param[in] tag Tag identifying this request.
- /// \param[in] status To be sent to the client as the result of this call.
- /// \param[in] msg To be sent to the client as the response for this call.
- virtual void Finish(const W& msg, const grpc::Status& status, void* tag) = 0;
-
- /// Indicate that the stream is to be finished with a certain
- /// non-OK status code.
- /// Request notification for when the server has sent the appropriate
- /// signals to the client to end the call.
- /// Should not be used concurrently with other operations.
- ///
- /// This call is meant to end the call with some error, and can be called at
- /// any point that the server would like to "fail" the call (though note
- /// this shouldn't be called concurrently with any other "sending" call, like
- /// \a AsyncWriterInterface::Write).
- ///
- /// This operation will end when the server has finished sending out initial
- /// metadata (if not sent already), and status, or if some failure occurred
- /// when trying to do so.
- ///
- /// gRPC doesn't take ownership or a reference to \a status, so it is safe to
- /// to deallocate once FinishWithError returns.
- ///
- /// \param[in] tag Tag identifying this request.
- /// \param[in] status To be sent to the client as the result of this call.
- /// - Note: \a status must have a non-OK code.
- virtual void FinishWithError(const grpc::Status& status, void* tag) = 0;
-};
-
-/// Async server-side API for doing client-streaming RPCs,
-/// where the incoming message stream from the client has messages of type \a R,
-/// and the single response message sent from the server is type \a W.
-template <class W, class R>
-class ServerAsyncReader final : public ServerAsyncReaderInterface<W, R> {
- public:
- explicit ServerAsyncReader(grpc::ServerContext* ctx)
- : call_(nullptr, nullptr, nullptr), ctx_(ctx) {}
-
- /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics.
- ///
- /// Implicit input parameter:
- /// - The initial metadata that will be sent to the client from this op will
- /// be taken from the \a ServerContext associated with the call.
- void SendInitialMetadata(void* tag) override {
- GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_);
-
- meta_ops_.set_output_tag(tag);
- meta_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
- ctx_->initial_metadata_flags());
- if (ctx_->compression_level_set()) {
- meta_ops_.set_compression_level(ctx_->compression_level());
- }
- ctx_->sent_initial_metadata_ = true;
- call_.PerformOps(&meta_ops_);
- }
-
- void Read(R* msg, void* tag) override {
- read_ops_.set_output_tag(tag);
- read_ops_.RecvMessage(msg);
- call_.PerformOps(&read_ops_);
- }
-
- /// See the \a ServerAsyncReaderInterface.Read method for semantics
- ///
- /// Side effect:
- /// - also sends initial metadata if not alreay sent.
- /// - uses the \a ServerContext associated with this call to send possible
- /// initial and trailing metadata.
- ///
- /// Note: \a msg is not sent if \a status has a non-OK code.
- ///
- /// gRPC doesn't take ownership or a reference to \a msg and \a status, so it
- /// is safe to deallocate once Finish returns.
- void Finish(const W& msg, const grpc::Status& status, void* tag) override {
- finish_ops_.set_output_tag(tag);
- if (!ctx_->sent_initial_metadata_) {
- finish_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
- ctx_->initial_metadata_flags());
- if (ctx_->compression_level_set()) {
- finish_ops_.set_compression_level(ctx_->compression_level());
- }
- ctx_->sent_initial_metadata_ = true;
- }
- // The response is dropped if the status is not OK.
- if (status.ok()) {
- finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_,
- finish_ops_.SendMessage(msg));
- } else {
- finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status);
- }
- call_.PerformOps(&finish_ops_);
- }
-
- /// See the \a ServerAsyncReaderInterface.Read method for semantics
- ///
- /// Side effect:
- /// - also sends initial metadata if not alreay sent.
- /// - uses the \a ServerContext associated with this call to send possible
- /// initial and trailing metadata.
- ///
- /// gRPC doesn't take ownership or a reference to \a status, so it is safe to
- /// to deallocate once FinishWithError returns.
- void FinishWithError(const grpc::Status& status, void* tag) override {
- GPR_CODEGEN_ASSERT(!status.ok());
- finish_ops_.set_output_tag(tag);
- if (!ctx_->sent_initial_metadata_) {
- finish_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
- ctx_->initial_metadata_flags());
- if (ctx_->compression_level_set()) {
- finish_ops_.set_compression_level(ctx_->compression_level());
- }
- ctx_->sent_initial_metadata_ = true;
- }
- finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status);
- call_.PerformOps(&finish_ops_);
- }
-
- private:
- void BindCall(grpc::internal::Call* call) override { call_ = *call; }
-
- grpc::internal::Call call_;
- grpc::ServerContext* ctx_;
- grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata>
- meta_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpRecvMessage<R>> read_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
- grpc::internal::CallOpSendMessage,
- grpc::internal::CallOpServerSendStatus>
- finish_ops_;
-};
-
-template <class W>
-class ServerAsyncWriterInterface
- : public grpc::internal::ServerAsyncStreamingInterface,
- public internal::AsyncWriterInterface<W> {
- public:
- /// Indicate that the stream is to be finished with a certain status code.
- /// Request notification for when the server has sent the appropriate
- /// signals to the client to end the call.
- /// Should not be used concurrently with other operations.
- ///
- /// It is appropriate to call this method when either:
- /// * all messages from the client have been received (either known
- /// implictly, or explicitly because a previous \a
- /// AsyncReaderInterface::Read operation with a non-ok
- /// result (e.g., cq->Next(&read_tag, &ok) filled in 'ok' with 'false'.
- /// * it is desired to end the call early with some non-OK status code.
- ///
- /// This operation will end when the server has finished sending out initial
- /// metadata (if not sent already), response message, and status, or if
- /// some failure occurred when trying to do so.
- ///
- /// gRPC doesn't take ownership or a reference to \a status, so it is safe to
- /// to deallocate once Finish returns.
- ///
- /// \param[in] tag Tag identifying this request.
- /// \param[in] status To be sent to the client as the result of this call.
- virtual void Finish(const grpc::Status& status, void* tag) = 0;
-
- /// Request the writing of \a msg and coalesce it with trailing metadata which
- /// contains \a status, using WriteOptions options with
- /// identifying tag \a tag.
- ///
- /// WriteAndFinish is equivalent of performing WriteLast and Finish
- /// in a single step.
- ///
- /// gRPC doesn't take ownership or a reference to \a msg and \a status, so it
- /// is safe to deallocate once WriteAndFinish returns.
- ///
- /// \param[in] msg The message to be written.
- /// \param[in] options The WriteOptions to be used to write this message.
- /// \param[in] status The Status that server returns to client.
- /// \param[in] tag The tag identifying the operation.
- virtual void WriteAndFinish(const W& msg, grpc::WriteOptions options,
- const grpc::Status& status, void* tag) = 0;
-};
-
-/// Async server-side API for doing server streaming RPCs,
-/// where the outgoing message stream from the server has messages of type \a W.
-template <class W>
-class ServerAsyncWriter final : public ServerAsyncWriterInterface<W> {
- public:
- explicit ServerAsyncWriter(grpc::ServerContext* ctx)
- : call_(nullptr, nullptr, nullptr), ctx_(ctx) {}
-
- /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics.
- ///
- /// Implicit input parameter:
- /// - The initial metadata that will be sent to the client from this op will
- /// be taken from the \a ServerContext associated with the call.
- ///
- /// \param[in] tag Tag identifying this request.
- void SendInitialMetadata(void* tag) override {
- GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_);
-
- meta_ops_.set_output_tag(tag);
- meta_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
- ctx_->initial_metadata_flags());
- if (ctx_->compression_level_set()) {
- meta_ops_.set_compression_level(ctx_->compression_level());
- }
- ctx_->sent_initial_metadata_ = true;
- call_.PerformOps(&meta_ops_);
- }
-
- void Write(const W& msg, void* tag) override {
- write_ops_.set_output_tag(tag);
- EnsureInitialMetadataSent(&write_ops_);
- // TODO(ctiller): don't assert
- GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok());
- call_.PerformOps(&write_ops_);
- }
-
- void Write(const W& msg, grpc::WriteOptions options, void* tag) override {
- write_ops_.set_output_tag(tag);
- if (options.is_last_message()) {
- options.set_buffer_hint();
- }
-
- EnsureInitialMetadataSent(&write_ops_);
- // TODO(ctiller): don't assert
- GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok());
- call_.PerformOps(&write_ops_);
- }
-
- /// See the \a ServerAsyncWriterInterface.WriteAndFinish method for semantics.
- ///
- /// Implicit input parameter:
- /// - the \a ServerContext associated with this call is used
- /// for sending trailing (and initial) metadata to the client.
- ///
- /// Note: \a status must have an OK code.
- ///
- /// gRPC doesn't take ownership or a reference to \a msg and \a status, so it
- /// is safe to deallocate once WriteAndFinish returns.
- void WriteAndFinish(const W& msg, grpc::WriteOptions options,
- const grpc::Status& status, void* tag) override {
- write_ops_.set_output_tag(tag);
- EnsureInitialMetadataSent(&write_ops_);
- options.set_buffer_hint();
- GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok());
- write_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status);
- call_.PerformOps(&write_ops_);
- }
-
- /// See the \a ServerAsyncWriterInterface.Finish method for semantics.
- ///
- /// Implicit input parameter:
- /// - the \a ServerContext associated with this call is used for sending
- /// trailing (and initial if not already sent) metadata to the client.
- ///
- /// Note: there are no restrictions are the code of
- /// \a status,it may be non-OK
- ///
- /// gRPC doesn't take ownership or a reference to \a status, so it is safe to
- /// to deallocate once Finish returns.
- void Finish(const grpc::Status& status, void* tag) override {
- finish_ops_.set_output_tag(tag);
- EnsureInitialMetadataSent(&finish_ops_);
- finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status);
- call_.PerformOps(&finish_ops_);
- }
-
- private:
- void BindCall(grpc::internal::Call* call) override { call_ = *call; }
-
- template <class T>
- void EnsureInitialMetadataSent(T* ops) {
- if (!ctx_->sent_initial_metadata_) {
- ops->SendInitialMetadata(&ctx_->initial_metadata_,
- ctx_->initial_metadata_flags());
- if (ctx_->compression_level_set()) {
- ops->set_compression_level(ctx_->compression_level());
- }
- ctx_->sent_initial_metadata_ = true;
- }
- }
-
- grpc::internal::Call call_;
- grpc::ServerContext* ctx_;
- grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata>
- meta_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
- grpc::internal::CallOpSendMessage,
- grpc::internal::CallOpServerSendStatus>
- write_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
- grpc::internal::CallOpServerSendStatus>
- finish_ops_;
-};
-
-/// Server-side interface for asynchronous bi-directional streaming.
-template <class W, class R>
-class ServerAsyncReaderWriterInterface
- : public grpc::internal::ServerAsyncStreamingInterface,
- public internal::AsyncWriterInterface<W>,
- public internal::AsyncReaderInterface<R> {
- public:
- /// Indicate that the stream is to be finished with a certain status code.
- /// Request notification for when the server has sent the appropriate
- /// signals to the client to end the call.
- /// Should not be used concurrently with other operations.
- ///
- /// It is appropriate to call this method when either:
- /// * all messages from the client have been received (either known
- /// implictly, or explicitly because a previous \a
- /// AsyncReaderInterface::Read operation
- /// with a non-ok result (e.g., cq->Next(&read_tag, &ok) filled in 'ok'
- /// with 'false'.
- /// * it is desired to end the call early with some non-OK status code.
- ///
- /// This operation will end when the server has finished sending out initial
- /// metadata (if not sent already), response message, and status, or if some
- /// failure occurred when trying to do so.
- ///
- /// gRPC doesn't take ownership or a reference to \a status, so it is safe to
- /// to deallocate once Finish returns.
- ///
- /// \param[in] tag Tag identifying this request.
- /// \param[in] status To be sent to the client as the result of this call.
- virtual void Finish(const grpc::Status& status, void* tag) = 0;
-
- /// Request the writing of \a msg and coalesce it with trailing metadata which
- /// contains \a status, using WriteOptions options with
- /// identifying tag \a tag.
- ///
- /// WriteAndFinish is equivalent of performing WriteLast and Finish in a
- /// single step.
- ///
- /// gRPC doesn't take ownership or a reference to \a msg and \a status, so it
- /// is safe to deallocate once WriteAndFinish returns.
- ///
- /// \param[in] msg The message to be written.
- /// \param[in] options The WriteOptions to be used to write this message.
- /// \param[in] status The Status that server returns to client.
- /// \param[in] tag The tag identifying the operation.
- virtual void WriteAndFinish(const W& msg, grpc::WriteOptions options,
- const grpc::Status& status, void* tag) = 0;
-};
-
-/// Async server-side API for doing bidirectional streaming RPCs,
-/// where the incoming message stream coming from the client has messages of
-/// type \a R, and the outgoing message stream coming from the server has
-/// messages of type \a W.
-template <class W, class R>
-class ServerAsyncReaderWriter final
- : public ServerAsyncReaderWriterInterface<W, R> {
- public:
- explicit ServerAsyncReaderWriter(grpc::ServerContext* ctx)
- : call_(nullptr, nullptr, nullptr), ctx_(ctx) {}
-
- /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics.
- ///
- /// Implicit input parameter:
- /// - The initial metadata that will be sent to the client from this op will
- /// be taken from the \a ServerContext associated with the call.
- ///
- /// \param[in] tag Tag identifying this request.
- void SendInitialMetadata(void* tag) override {
- GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_);
-
- meta_ops_.set_output_tag(tag);
- meta_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
- ctx_->initial_metadata_flags());
- if (ctx_->compression_level_set()) {
- meta_ops_.set_compression_level(ctx_->compression_level());
- }
- ctx_->sent_initial_metadata_ = true;
- call_.PerformOps(&meta_ops_);
- }
-
- void Read(R* msg, void* tag) override {
- read_ops_.set_output_tag(tag);
- read_ops_.RecvMessage(msg);
- call_.PerformOps(&read_ops_);
- }
-
- void Write(const W& msg, void* tag) override {
- write_ops_.set_output_tag(tag);
- EnsureInitialMetadataSent(&write_ops_);
- // TODO(ctiller): don't assert
- GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok());
- call_.PerformOps(&write_ops_);
- }
-
- void Write(const W& msg, grpc::WriteOptions options, void* tag) override {
- write_ops_.set_output_tag(tag);
- if (options.is_last_message()) {
- options.set_buffer_hint();
- }
- EnsureInitialMetadataSent(&write_ops_);
- GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok());
- call_.PerformOps(&write_ops_);
- }
-
- /// See the \a ServerAsyncReaderWriterInterface.WriteAndFinish
- /// method for semantics.
- ///
- /// Implicit input parameter:
- /// - the \a ServerContext associated with this call is used
- /// for sending trailing (and initial) metadata to the client.
- ///
- /// Note: \a status must have an OK code.
- //
- /// gRPC doesn't take ownership or a reference to \a msg and \a status, so it
- /// is safe to deallocate once WriteAndFinish returns.
- void WriteAndFinish(const W& msg, grpc::WriteOptions options,
- const grpc::Status& status, void* tag) override {
- write_ops_.set_output_tag(tag);
- EnsureInitialMetadataSent(&write_ops_);
- options.set_buffer_hint();
- GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok());
- write_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status);
- call_.PerformOps(&write_ops_);
- }
-
- /// See the \a ServerAsyncReaderWriterInterface.Finish method for semantics.
- ///
- /// Implicit input parameter:
- /// - the \a ServerContext associated with this call is used for sending
- /// trailing (and initial if not already sent) metadata to the client.
- ///
- /// Note: there are no restrictions are the code of \a status,
- /// it may be non-OK
- //
- /// gRPC doesn't take ownership or a reference to \a status, so it is safe to
- /// to deallocate once Finish returns.
- void Finish(const grpc::Status& status, void* tag) override {
- finish_ops_.set_output_tag(tag);
- EnsureInitialMetadataSent(&finish_ops_);
-
- finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status);
- call_.PerformOps(&finish_ops_);
- }
-
- private:
- friend class grpc::Server;
-
- void BindCall(grpc::internal::Call* call) override { call_ = *call; }
-
- template <class T>
- void EnsureInitialMetadataSent(T* ops) {
- if (!ctx_->sent_initial_metadata_) {
- ops->SendInitialMetadata(&ctx_->initial_metadata_,
- ctx_->initial_metadata_flags());
- if (ctx_->compression_level_set()) {
- ops->set_compression_level(ctx_->compression_level());
- }
- ctx_->sent_initial_metadata_ = true;
- }
- }
-
- grpc::internal::Call call_;
- grpc::ServerContext* ctx_;
- grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata>
- meta_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpRecvMessage<R>> read_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
- grpc::internal::CallOpSendMessage,
- grpc::internal::CallOpServerSendStatus>
- write_ops_;
- grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
- grpc::internal::CallOpServerSendStatus>
- finish_ops_;
-};
-
-} // namespace grpc
#endif // GRPCPP_IMPL_CODEGEN_ASYNC_STREAM_H
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/async_unary_call.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/async_unary_call.h
index 0034d21058..55227b2e4a 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/async_unary_call.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/async_unary_call.h
@@ -19,402 +19,9 @@
#ifndef GRPCPP_IMPL_CODEGEN_ASYNC_UNARY_CALL_H
#define GRPCPP_IMPL_CODEGEN_ASYNC_UNARY_CALL_H
-// IWYU pragma: private, include <grpcpp/support/async_unary_call.h>
+// IWYU pragma: private
-#include <grpcpp/impl/codegen/call.h>
-#include <grpcpp/impl/codegen/call_op_set.h>
-#include <grpcpp/impl/codegen/call_op_set_interface.h>
-#include <grpcpp/impl/codegen/channel_interface.h>
-#include <grpcpp/impl/codegen/client_context.h>
-#include <grpcpp/impl/codegen/server_context.h>
-#include <grpcpp/impl/codegen/service_type.h>
-#include <grpcpp/impl/codegen/status.h>
-
-namespace grpc {
-
-// Forward declaration for use in Helper class
-template <class R>
-class ClientAsyncResponseReader;
-
-/// An interface relevant for async client side unary RPCs (which send
-/// one request message to a server and receive one response message).
-template <class R>
-class ClientAsyncResponseReaderInterface {
- public:
- virtual ~ClientAsyncResponseReaderInterface() {}
-
- /// Start the call that was set up by the constructor, but only if the
- /// constructor was invoked through the "Prepare" API which doesn't actually
- /// start the call
- virtual void StartCall() = 0;
-
- /// Request notification of the reading of initial metadata. Completion
- /// will be notified by \a tag on the associated completion queue.
- /// This call is optional, but if it is used, it cannot be used concurrently
- /// with or after the \a Finish method.
- ///
- /// \param[in] tag Tag identifying this request.
- virtual void ReadInitialMetadata(void* tag) = 0;
-
- /// Request to receive the server's response \a msg and final \a status for
- /// the call, and to notify \a tag on this call's completion queue when
- /// finished.
- ///
- /// This function will return when either:
- /// - when the server's response message and status have been received.
- /// - when the server has returned a non-OK status (no message expected in
- /// this case).
- /// - when the call failed for some reason and the library generated a
- /// non-OK status.
- ///
- /// \param[in] tag Tag identifying this request.
- /// \param[out] status To be updated with the operation status.
- /// \param[out] msg To be filled in with the server's response message.
- virtual void Finish(R* msg, grpc::Status* status, void* tag) = 0;
-};
-
-namespace internal {
-
-class ClientAsyncResponseReaderHelper {
- public:
- /// Start a call and write the request out if \a start is set.
- /// \a tag will be notified on \a cq when the call has been started (i.e.
- /// intitial metadata sent) and \a request has been written out.
- /// If \a start is not set, the actual call must be initiated by StartCall
- /// Note that \a context will be used to fill in custom initial metadata
- /// used to send to the server when starting the call.
- ///
- /// Optionally pass in a base class for request and response types so that the
- /// internal functions and structs can be templated based on that, allowing
- /// reuse across RPCs (e.g., MessageLite for protobuf). Since constructors
- /// can't have an explicit template parameter, the last argument is an
- /// extraneous parameter just to provide the needed type information.
- template <class R, class W, class BaseR = R, class BaseW = W>
- static ClientAsyncResponseReader<R>* Create(
- grpc::ChannelInterface* channel, grpc::CompletionQueue* cq,
- const grpc::internal::RpcMethod& method, grpc::ClientContext* context,
- const W& request) /* __attribute__((noinline)) */ {
- grpc::internal::Call call = channel->CreateCall(method, context, cq);
- ClientAsyncResponseReader<R>* result =
- new (grpc::g_core_codegen_interface->grpc_call_arena_alloc(
- call.call(), sizeof(ClientAsyncResponseReader<R>)))
- ClientAsyncResponseReader<R>(call, context);
- SetupRequest<BaseR, BaseW>(
- call.call(), &result->single_buf_, &result->read_initial_metadata_,
- &result->finish_, static_cast<const BaseW&>(request));
-
- return result;
- }
-
- // Various helper functions to reduce templating use
-
- template <class R, class W>
- static void SetupRequest(
- grpc_call* call,
- grpc::internal::CallOpSendInitialMetadata** single_buf_ptr,
- std::function<void(ClientContext*, internal::Call*,
- internal::CallOpSendInitialMetadata*, void*)>*
- read_initial_metadata,
- std::function<
- void(ClientContext*, internal::Call*, bool initial_metadata_read,
- internal::CallOpSendInitialMetadata*,
- internal::CallOpSetInterface**, void*, Status*, void*)>* finish,
- const W& request) {
- using SingleBufType =
- grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
- grpc::internal::CallOpSendMessage,
- grpc::internal::CallOpClientSendClose,
- grpc::internal::CallOpRecvInitialMetadata,
- grpc::internal::CallOpRecvMessage<R>,
- grpc::internal::CallOpClientRecvStatus>;
- SingleBufType* single_buf =
- new (grpc::g_core_codegen_interface->grpc_call_arena_alloc(
- call, sizeof(SingleBufType))) SingleBufType;
- *single_buf_ptr = single_buf;
- // TODO(ctiller): don't assert
- GPR_CODEGEN_ASSERT(single_buf->SendMessage(request).ok());
- single_buf->ClientSendClose();
-
- // The purpose of the following functions is to type-erase the actual
- // templated type of the CallOpSet being used by hiding that type inside the
- // function definition rather than specifying it as an argument of the
- // function or a member of the class. The type-erased CallOpSet will get
- // static_cast'ed back to the real type so that it can be used properly.
- *read_initial_metadata =
- [](ClientContext* context, internal::Call* call,
- internal::CallOpSendInitialMetadata* single_buf_view, void* tag) {
- auto* single_buf = static_cast<SingleBufType*>(single_buf_view);
- single_buf->set_output_tag(tag);
- single_buf->RecvInitialMetadata(context);
- call->PerformOps(single_buf);
- };
-
- // Note that this function goes one step further than the previous one
- // because it type-erases the message being written down to a void*. This
- // will be static-cast'ed back to the class specified here by hiding that
- // class information inside the function definition. Note that this feature
- // expects the class being specified here for R to be a base-class of the
- // "real" R without any multiple-inheritance (as applies in protbuf wrt
- // MessageLite)
- *finish = [](ClientContext* context, internal::Call* call,
- bool initial_metadata_read,
- internal::CallOpSendInitialMetadata* single_buf_view,
- internal::CallOpSetInterface** finish_buf_ptr, void* msg,
- Status* status, void* tag) {
- if (initial_metadata_read) {
- using FinishBufType =
- grpc::internal::CallOpSet<grpc::internal::CallOpRecvMessage<R>,
- grpc::internal::CallOpClientRecvStatus>;
- FinishBufType* finish_buf =
- new (grpc::g_core_codegen_interface->grpc_call_arena_alloc(
- call->call(), sizeof(FinishBufType))) FinishBufType;
- *finish_buf_ptr = finish_buf;
- finish_buf->set_output_tag(tag);
- finish_buf->RecvMessage(static_cast<R*>(msg));
- finish_buf->AllowNoMessage();
- finish_buf->ClientRecvStatus(context, status);
- call->PerformOps(finish_buf);
- } else {
- auto* single_buf = static_cast<SingleBufType*>(single_buf_view);
- single_buf->set_output_tag(tag);
- single_buf->RecvInitialMetadata(context);
- single_buf->RecvMessage(static_cast<R*>(msg));
- single_buf->AllowNoMessage();
- single_buf->ClientRecvStatus(context, status);
- call->PerformOps(single_buf);
- }
- };
- }
-
- static void StartCall(grpc::ClientContext* context,
- grpc::internal::CallOpSendInitialMetadata* single_buf) {
- single_buf->SendInitialMetadata(&context->send_initial_metadata_,
- context->initial_metadata_flags());
- }
-};
-
-// TODO(vjpai): This templated factory is deprecated and will be replaced by
-//. the non-templated helper as soon as possible.
-template <class R>
-class ClientAsyncResponseReaderFactory {
- public:
- template <class W>
- static ClientAsyncResponseReader<R>* Create(
- grpc::ChannelInterface* channel, grpc::CompletionQueue* cq,
- const grpc::internal::RpcMethod& method, grpc::ClientContext* context,
- const W& request, bool start) {
- auto* result = ClientAsyncResponseReaderHelper::Create<R>(
- channel, cq, method, context, request);
- if (start) {
- result->StartCall();
- }
- return result;
- }
-};
-
-} // namespace internal
-
-/// Async API for client-side unary RPCs, where the message response
-/// received from the server is of type \a R.
-template <class R>
-class ClientAsyncResponseReader final
- : public ClientAsyncResponseReaderInterface<R> {
- public:
- // always allocated against a call arena, no memory free required
- static void operator delete(void* /*ptr*/, std::size_t size) {
- GPR_CODEGEN_ASSERT(size == sizeof(ClientAsyncResponseReader));
- }
-
- // This operator should never be called as the memory should be freed as part
- // of the arena destruction. It only exists to provide a matching operator
- // delete to the operator new so that some compilers will not complain (see
- // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this
- // there are no tests catching the compiler warning.
- static void operator delete(void*, void*) { GPR_CODEGEN_ASSERT(false); }
-
- void StartCall() override {
- GPR_CODEGEN_DEBUG_ASSERT(!started_);
- started_ = true;
- internal::ClientAsyncResponseReaderHelper::StartCall(context_, single_buf_);
- }
-
- /// See \a ClientAsyncResponseReaderInterface::ReadInitialMetadata for
- /// semantics.
- ///
- /// Side effect:
- /// - the \a ClientContext associated with this call is updated with
- /// possible initial and trailing metadata sent from the server.
- void ReadInitialMetadata(void* tag) override {
- GPR_CODEGEN_DEBUG_ASSERT(started_);
- GPR_CODEGEN_DEBUG_ASSERT(!context_->initial_metadata_received_);
- read_initial_metadata_(context_, &call_, single_buf_, tag);
- initial_metadata_read_ = true;
- }
-
- /// See \a ClientAsyncResponseReaderInterface::Finish for semantics.
- ///
- /// Side effect:
- /// - the \a ClientContext associated with this call is updated with
- /// possible initial and trailing metadata sent from the server.
- void Finish(R* msg, grpc::Status* status, void* tag) override {
- GPR_CODEGEN_DEBUG_ASSERT(started_);
- finish_(context_, &call_, initial_metadata_read_, single_buf_, &finish_buf_,
- static_cast<void*>(msg), status, tag);
- }
-
- private:
- friend class internal::ClientAsyncResponseReaderHelper;
- grpc::ClientContext* const context_;
- grpc::internal::Call call_;
- bool started_ = false;
- bool initial_metadata_read_ = false;
-
- ClientAsyncResponseReader(grpc::internal::Call call,
- grpc::ClientContext* context)
- : context_(context), call_(call) {}
-
- // disable operator new
- static void* operator new(std::size_t size);
- static void* operator new(std::size_t /*size*/, void* p) { return p; }
-
- internal::CallOpSendInitialMetadata* single_buf_;
- internal::CallOpSetInterface* finish_buf_ = nullptr;
- std::function<void(ClientContext*, internal::Call*,
- internal::CallOpSendInitialMetadata*, void*)>
- read_initial_metadata_;
- std::function<void(ClientContext*, internal::Call*,
- bool initial_metadata_read,
- internal::CallOpSendInitialMetadata*,
- internal::CallOpSetInterface**, void*, Status*, void*)>
- finish_;
-};
-
-/// Async server-side API for handling unary calls, where the single
-/// response message sent to the client is of type \a W.
-template <class W>
-class ServerAsyncResponseWriter final
- : public grpc::internal::ServerAsyncStreamingInterface {
- public:
- explicit ServerAsyncResponseWriter(grpc::ServerContext* ctx)
- : call_(nullptr, nullptr, nullptr), ctx_(ctx) {}
-
- /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics.
- ///
- /// Side effect:
- /// The initial metadata that will be sent to the client from this op will
- /// be taken from the \a ServerContext associated with the call.
- ///
- /// \param[in] tag Tag identifying this request.
- void SendInitialMetadata(void* tag) override {
- GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_);
-
- meta_buf_.set_output_tag(tag);
- meta_buf_.SendInitialMetadata(&ctx_->initial_metadata_,
- ctx_->initial_metadata_flags());
- if (ctx_->compression_level_set()) {
- meta_buf_.set_compression_level(ctx_->compression_level());
- }
- ctx_->sent_initial_metadata_ = true;
- call_.PerformOps(&meta_buf_);
- }
-
- /// Indicate that the stream is to be finished and request notification
- /// when the server has sent the appropriate signals to the client to
- /// end the call. Should not be used concurrently with other operations.
- ///
- /// \param[in] tag Tag identifying this request.
- /// \param[in] status To be sent to the client as the result of the call.
- /// \param[in] msg Message to be sent to the client.
- ///
- /// Side effect:
- /// - also sends initial metadata if not already sent (using the
- /// \a ServerContext associated with this call).
- ///
- /// Note: if \a status has a non-OK code, then \a msg will not be sent,
- /// and the client will receive only the status with possible trailing
- /// metadata.
- ///
- /// gRPC doesn't take ownership or a reference to msg and status, so it is
- /// safe to deallocate them once the Finish operation is complete (i.e. a
- /// result arrives in the completion queue).
- void Finish(const W& msg, const grpc::Status& status, void* tag) {
- finish_buf_.set_output_tag(tag);
- finish_buf_.set_core_cq_tag(&finish_buf_);
- if (!ctx_->sent_initial_metadata_) {
- finish_buf_.SendInitialMetadata(&ctx_->initial_metadata_,
- ctx_->initial_metadata_flags());
- if (ctx_->compression_level_set()) {
- finish_buf_.set_compression_level(ctx_->compression_level());
- }
- ctx_->sent_initial_metadata_ = true;
- }
- // The response is dropped if the status is not OK.
- if (status.ok()) {
- finish_buf_.ServerSendStatus(&ctx_->trailing_metadata_,
- finish_buf_.SendMessage(msg));
- } else {
- finish_buf_.ServerSendStatus(&ctx_->trailing_metadata_, status);
- }
- call_.PerformOps(&finish_buf_);
- }
-
- /// Indicate that the stream is to be finished with a non-OK status,
- /// and request notification for when the server has finished sending the
- /// appropriate signals to the client to end the call.
- /// Should not be used concurrently with other operations.
- ///
- /// \param[in] tag Tag identifying this request.
- /// \param[in] status To be sent to the client as the result of the call.
- /// - Note: \a status must have a non-OK code.
- ///
- /// Side effect:
- /// - also sends initial metadata if not already sent (using the
- /// \a ServerContext associated with this call).
- ///
- /// gRPC doesn't take ownership or a reference to status, so it is safe to
- /// deallocate them once the Finish operation is complete (i.e. a result
- /// arrives in the completion queue).
- void FinishWithError(const grpc::Status& status, void* tag) {
- GPR_CODEGEN_ASSERT(!status.ok());
- finish_buf_.set_output_tag(tag);
- if (!ctx_->sent_initial_metadata_) {
- finish_buf_.SendInitialMetadata(&ctx_->initial_metadata_,
- ctx_->initial_metadata_flags());
- if (ctx_->compression_level_set()) {
- finish_buf_.set_compression_level(ctx_->compression_level());
- }
- ctx_->sent_initial_metadata_ = true;
- }
- finish_buf_.ServerSendStatus(&ctx_->trailing_metadata_, status);
- call_.PerformOps(&finish_buf_);
- }
-
- private:
- void BindCall(grpc::internal::Call* call) override { call_ = *call; }
-
- grpc::internal::Call call_;
- grpc::ServerContext* ctx_;
- grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata>
- meta_buf_;
- grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
- grpc::internal::CallOpSendMessage,
- grpc::internal::CallOpServerSendStatus>
- finish_buf_;
-};
-
-} // namespace grpc
-
-namespace std {
-template <class R>
-class default_delete<grpc::ClientAsyncResponseReader<R>> {
- public:
- void operator()(void* /*p*/) {}
-};
-template <class R>
-class default_delete<grpc::ClientAsyncResponseReaderInterface<R>> {
- public:
- void operator()(void* /*p*/) {}
-};
-} // namespace std
+/// TODO(chengyuc): Remove this file after solving compatibility.
+#include <grpcpp/support/async_unary_call.h>
#endif // GRPCPP_IMPL_CODEGEN_ASYNC_UNARY_CALL_H
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/byte_buffer.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/byte_buffer.h
index a9ba7d16fc..d196995392 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/byte_buffer.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/byte_buffer.h
@@ -19,221 +19,9 @@
#ifndef GRPCPP_IMPL_CODEGEN_BYTE_BUFFER_H
#define GRPCPP_IMPL_CODEGEN_BYTE_BUFFER_H
-// IWYU pragma: private, include <grpcpp/support/byte_buffer.h>
+// IWYU pragma: private
-#include <vector>
-
-#include <grpc/impl/codegen/byte_buffer.h>
-#include <grpcpp/impl/codegen/config.h>
-#include <grpcpp/impl/codegen/core_codegen_interface.h>
-#include <grpcpp/impl/codegen/serialization_traits.h>
-#include <grpcpp/impl/codegen/slice.h>
-#include <grpcpp/impl/codegen/status.h>
-
-namespace grpc {
-
-class ServerInterface;
-class ByteBuffer;
-class ServerInterface;
-
-namespace internal {
-template <class RequestType, class ResponseType>
-class CallbackUnaryHandler;
-template <class RequestType, class ResponseType>
-class CallbackServerStreamingHandler;
-template <class RequestType>
-void* UnaryDeserializeHelper(grpc_byte_buffer*, grpc::Status*, RequestType*);
-template <class ServiceType, class RequestType, class ResponseType>
-class ServerStreamingHandler;
-template <grpc::StatusCode code>
-class ErrorMethodHandler;
-class CallOpSendMessage;
-template <class R>
-class CallOpRecvMessage;
-class CallOpGenericRecvMessage;
-class ExternalConnectionAcceptorImpl;
-template <class R>
-class DeserializeFuncType;
-class GrpcByteBufferPeer;
-
-} // namespace internal
-/// A sequence of bytes.
-class ByteBuffer final {
- public:
- /// Constuct an empty buffer.
- ByteBuffer() : buffer_(nullptr) {}
-
- /// Construct buffer from \a slices, of which there are \a nslices.
- ByteBuffer(const Slice* slices, size_t nslices) {
- // The following assertions check that the representation of a grpc::Slice
- // is identical to that of a grpc_slice: it has a grpc_slice field, and
- // nothing else.
- static_assert(std::is_same<decltype(slices[0].slice_), grpc_slice>::value,
- "Slice must have same representation as grpc_slice");
- static_assert(sizeof(Slice) == sizeof(grpc_slice),
- "Slice must have same representation as grpc_slice");
- // The following assertions check that the representation of a ByteBuffer is
- // identical to grpc_byte_buffer*: it has a grpc_byte_buffer* field,
- // and nothing else.
- static_assert(std::is_same<decltype(buffer_), grpc_byte_buffer*>::value,
- "ByteBuffer must have same representation as "
- "grpc_byte_buffer*");
- static_assert(sizeof(ByteBuffer) == sizeof(grpc_byte_buffer*),
- "ByteBuffer must have same representation as "
- "grpc_byte_buffer*");
- // The const_cast is legal if grpc_raw_byte_buffer_create() does no more
- // than its advertised side effect of increasing the reference count of the
- // slices it processes, and such an increase does not affect the semantics
- // seen by the caller of this constructor.
- buffer_ = g_core_codegen_interface->grpc_raw_byte_buffer_create(
- reinterpret_cast<grpc_slice*>(const_cast<Slice*>(slices)), nslices);
- }
-
- /// Constuct a byte buffer by referencing elements of existing buffer
- /// \a buf. Wrapper of core function grpc_byte_buffer_copy . This is not
- /// a deep copy; it is just a referencing. As a result, its performance is
- /// size-independent.
- ByteBuffer(const ByteBuffer& buf) : buffer_(nullptr) { operator=(buf); }
-
- ~ByteBuffer() {
- if (buffer_) {
- g_core_codegen_interface->grpc_byte_buffer_destroy(buffer_);
- }
- }
-
- /// Wrapper of core function grpc_byte_buffer_copy . This is not
- /// a deep copy; it is just a referencing. As a result, its performance is
- /// size-independent.
- ByteBuffer& operator=(const ByteBuffer& buf) {
- if (this != &buf) {
- Clear(); // first remove existing data
- }
- if (buf.buffer_) {
- // then copy
- buffer_ = g_core_codegen_interface->grpc_byte_buffer_copy(buf.buffer_);
- }
- return *this;
- }
-
- // If this ByteBuffer's representation is a single flat slice, returns a
- // slice referencing that array.
- Status TrySingleSlice(Slice* slice) const;
-
- /// Dump (read) the buffer contents into \a slics.
- Status DumpToSingleSlice(Slice* slice) const;
-
- /// Dump (read) the buffer contents into \a slices.
- Status Dump(std::vector<Slice>* slices) const;
-
- /// Remove all data.
- void Clear() {
- if (buffer_) {
- g_core_codegen_interface->grpc_byte_buffer_destroy(buffer_);
- buffer_ = nullptr;
- }
- }
-
- /// Make a duplicate copy of the internals of this byte
- /// buffer so that we have our own owned version of it.
- /// bbuf.Duplicate(); is equivalent to bbuf=bbuf; but is actually readable.
- /// This is not a deep copy; it is a referencing and its performance
- /// is size-independent.
- void Duplicate() {
- buffer_ = g_core_codegen_interface->grpc_byte_buffer_copy(buffer_);
- }
-
- /// Forget underlying byte buffer without destroying
- /// Use this only for un-owned byte buffers
- void Release() { buffer_ = nullptr; }
-
- /// Buffer size in bytes.
- size_t Length() const {
- return buffer_ == nullptr
- ? 0
- : g_core_codegen_interface->grpc_byte_buffer_length(buffer_);
- }
-
- /// Swap the state of *this and *other.
- void Swap(ByteBuffer* other) {
- grpc_byte_buffer* tmp = other->buffer_;
- other->buffer_ = buffer_;
- buffer_ = tmp;
- }
-
- /// Is this ByteBuffer valid?
- bool Valid() const { return (buffer_ != nullptr); }
-
- private:
- friend class SerializationTraits<ByteBuffer, void>;
- friend class ServerInterface;
- friend class internal::CallOpSendMessage;
- template <class R>
- friend class internal::CallOpRecvMessage;
- friend class internal::CallOpGenericRecvMessage;
- template <class RequestType>
- friend void* internal::UnaryDeserializeHelper(grpc_byte_buffer*,
- grpc::Status*, RequestType*);
- template <class ServiceType, class RequestType, class ResponseType>
- friend class internal::ServerStreamingHandler;
- template <class RequestType, class ResponseType>
- friend class internal::CallbackUnaryHandler;
- template <class RequestType, class ResponseType>
- friend class internal::CallbackServerStreamingHandler;
- template <StatusCode code>
- friend class internal::ErrorMethodHandler;
- template <class R>
- friend class internal::DeserializeFuncType;
- friend class ProtoBufferReader;
- friend class ProtoBufferWriter;
- friend class internal::GrpcByteBufferPeer;
- friend class internal::ExternalConnectionAcceptorImpl;
-
- grpc_byte_buffer* buffer_;
-
- // takes ownership
- void set_buffer(grpc_byte_buffer* buf) {
- if (buffer_) {
- Clear();
- }
- buffer_ = buf;
- }
-
- grpc_byte_buffer* c_buffer() { return buffer_; }
- grpc_byte_buffer** c_buffer_ptr() { return &buffer_; }
-
- class ByteBufferPointer {
- public:
- /* NOLINTNEXTLINE(google-explicit-constructor) */
- ByteBufferPointer(const ByteBuffer* b)
- : bbuf_(const_cast<ByteBuffer*>(b)) {}
- /* NOLINTNEXTLINE(google-explicit-constructor) */
- operator ByteBuffer*() { return bbuf_; }
- /* NOLINTNEXTLINE(google-explicit-constructor) */
- operator grpc_byte_buffer*() { return bbuf_->buffer_; }
- /* NOLINTNEXTLINE(google-explicit-constructor) */
- operator grpc_byte_buffer**() { return &bbuf_->buffer_; }
-
- private:
- ByteBuffer* bbuf_;
- };
- ByteBufferPointer bbuf_ptr() const { return ByteBufferPointer(this); }
-};
-
-template <>
-class SerializationTraits<ByteBuffer, void> {
- public:
- static Status Deserialize(ByteBuffer* byte_buffer, ByteBuffer* dest) {
- dest->set_buffer(byte_buffer->buffer_);
- return Status::OK;
- }
- static Status Serialize(const ByteBuffer& source, ByteBuffer* buffer,
- bool* own_buffer) {
- *buffer = source;
- *own_buffer = true;
- return g_core_codegen_interface->ok();
- }
-};
-
-} // namespace grpc
+/// TODO(chengyuc): Remove this file after solving compatibility.
+#include <grpcpp/support/byte_buffer.h>
#endif // GRPCPP_IMPL_CODEGEN_BYTE_BUFFER_H
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/call.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/call.h
index 90d54bc5d8..71f6cb8e4e 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/call.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/call.h
@@ -18,78 +18,9 @@
#ifndef GRPCPP_IMPL_CODEGEN_CALL_H
#define GRPCPP_IMPL_CODEGEN_CALL_H
-// IWYU pragma: private, include <grpcpp/impl/call.h>
+// IWYU pragma: private
-#include <grpc/impl/codegen/grpc_types.h>
-#include <grpcpp/impl/codegen/call_hook.h>
-
-namespace grpc {
-class CompletionQueue;
-namespace experimental {
-class ClientRpcInfo;
-class ServerRpcInfo;
-} // namespace experimental
-namespace internal {
-class CallHook;
-class CallOpSetInterface;
-
-/// Straightforward wrapping of the C call object
-class Call final {
- public:
- Call()
- : call_hook_(nullptr),
- cq_(nullptr),
- call_(nullptr),
- max_receive_message_size_(-1) {}
- /** call is owned by the caller */
- Call(grpc_call* call, CallHook* call_hook, grpc::CompletionQueue* cq)
- : call_hook_(call_hook),
- cq_(cq),
- call_(call),
- max_receive_message_size_(-1) {}
-
- Call(grpc_call* call, CallHook* call_hook, grpc::CompletionQueue* cq,
- experimental::ClientRpcInfo* rpc_info)
- : call_hook_(call_hook),
- cq_(cq),
- call_(call),
- max_receive_message_size_(-1),
- client_rpc_info_(rpc_info) {}
-
- Call(grpc_call* call, CallHook* call_hook, grpc::CompletionQueue* cq,
- int max_receive_message_size, experimental::ServerRpcInfo* rpc_info)
- : call_hook_(call_hook),
- cq_(cq),
- call_(call),
- max_receive_message_size_(max_receive_message_size),
- server_rpc_info_(rpc_info) {}
-
- void PerformOps(CallOpSetInterface* ops) {
- call_hook_->PerformOpsOnCall(ops, this);
- }
-
- grpc_call* call() const { return call_; }
- grpc::CompletionQueue* cq() const { return cq_; }
-
- int max_receive_message_size() const { return max_receive_message_size_; }
-
- experimental::ClientRpcInfo* client_rpc_info() const {
- return client_rpc_info_;
- }
-
- experimental::ServerRpcInfo* server_rpc_info() const {
- return server_rpc_info_;
- }
-
- private:
- CallHook* call_hook_;
- grpc::CompletionQueue* cq_;
- grpc_call* call_;
- int max_receive_message_size_;
- experimental::ClientRpcInfo* client_rpc_info_ = nullptr;
- experimental::ServerRpcInfo* server_rpc_info_ = nullptr;
-};
-} // namespace internal
-} // namespace grpc
+/// TODO(chengyuc): Remove this file after solving compatibility.
+#include <grpcpp/impl/call.h>
#endif // GRPCPP_IMPL_CODEGEN_CALL_H
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/call_hook.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/call_hook.h
index 8c4278e7dc..db10a0fc2b 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/call_hook.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/call_hook.h
@@ -21,21 +21,7 @@
// IWYU pragma: private
-namespace grpc {
-
-namespace internal {
-class CallOpSetInterface;
-class Call;
-
-/// This is an interface that Channel and Server implement to allow them to hook
-/// performing ops.
-class CallHook {
- public:
- virtual ~CallHook() {}
- virtual void PerformOpsOnCall(CallOpSetInterface* ops, Call* call) = 0;
-};
-} // namespace internal
-
-} // namespace grpc
+/// TODO(chengyuc): Remove this file after solving compatibility.
+#include <grpcpp/impl/call_hook.h>
#endif // GRPCPP_IMPL_CODEGEN_CALL_HOOK_H
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/call_op_set.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/call_op_set.h
index 283f299f95..ce8b363d6a 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/call_op_set.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/call_op_set.h
@@ -31,7 +31,6 @@
#include <grpc/impl/codegen/compression_types.h>
#include <grpc/impl/codegen/grpc_types.h>
-#include <grpcpp/impl/codegen/byte_buffer.h>
#include <grpcpp/impl/codegen/call.h>
#include <grpcpp/impl/codegen/call_hook.h>
#include <grpcpp/impl/codegen/call_op_set_interface.h>
@@ -45,6 +44,7 @@
#include <grpcpp/impl/codegen/serialization_traits.h>
#include <grpcpp/impl/codegen/slice.h>
#include <grpcpp/impl/codegen/string_ref.h>
+#include <grpcpp/support/byte_buffer.h>
namespace grpc {
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/call_op_set_interface.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/call_op_set_interface.h
index a8eed9f619..ce5f2036d1 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/call_op_set_interface.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/call_op_set_interface.h
@@ -21,41 +21,6 @@
// IWYU pragma: private
-#include <grpcpp/impl/codegen/completion_queue_tag.h>
-
-namespace grpc {
-namespace internal {
-
-class Call;
-
-/// An abstract collection of call ops, used to generate the
-/// grpc_call_op structure to pass down to the lower layers,
-/// and as it is-a CompletionQueueTag, also massages the final
-/// completion into the correct form for consumption in the C++
-/// API.
-class CallOpSetInterface : public CompletionQueueTag {
- public:
- /// Fills in grpc_op, starting from ops[*nops] and moving
- /// upwards.
- virtual void FillOps(internal::Call* call) = 0;
-
- /// Get the tag to be used at the core completion queue. Generally, the
- /// value of core_cq_tag will be "this". However, it can be overridden if we
- /// want core to process the tag differently (e.g., as a core callback)
- virtual void* core_cq_tag() = 0;
-
- // This will be called while interceptors are run if the RPC is a hijacked
- // RPC. This should set hijacking state for each of the ops.
- virtual void SetHijackingState() = 0;
-
- // Should be called after interceptors are done running
- virtual void ContinueFillOpsAfterInterception() = 0;
-
- // Should be called after interceptors are done running on the finalize result
- // path
- virtual void ContinueFinalizeResultAfterInterception() = 0;
-};
-} // namespace internal
-} // namespace grpc
+#include <grpcpp/impl/call_op_set_interface.h>
#endif // GRPCPP_IMPL_CODEGEN_CALL_OP_SET_INTERFACE_H
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/callback_common.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/callback_common.h
index f0ce27ae8f..9280289d5e 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/callback_common.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/callback_common.h
@@ -28,7 +28,7 @@
#include <functional>
#include <grpc/impl/codegen/grpc_types.h>
-#include <grpcpp/impl/codegen/call.h>
+#include <grpcpp/impl/call.h>
#include <grpcpp/impl/codegen/channel_interface.h>
#include <grpcpp/impl/codegen/completion_queue_tag.h>
#include <grpcpp/impl/codegen/config.h>
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/channel_interface.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/channel_interface.h
index 106dd56c93..a3f162cc87 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/channel_interface.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/channel_interface.h
@@ -26,7 +26,7 @@
// IWYU pragma: private
#include <grpc/impl/codegen/connectivity_state.h>
-#include <grpcpp/impl/codegen/call.h>
+#include <grpcpp/impl/call.h>
#include <grpcpp/impl/codegen/status.h>
#include <grpcpp/impl/codegen/time.h>
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/client_context.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/client_context.h
index fc4d09a297..d24dd38b3c 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/client_context.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/client_context.h
@@ -277,18 +277,6 @@ class ClientContext {
deadline_ = deadline_tp.raw_time();
}
- /// EXPERIMENTAL: Indicate that this request is idempotent.
- /// By default, RPCs are assumed to <i>not</i> be idempotent.
- ///
- /// If true, the gRPC library assumes that it's safe to initiate
- /// this RPC multiple times.
- void set_idempotent(bool idempotent) { idempotent_ = idempotent; }
-
- /// EXPERIMENTAL: Set this request to be cacheable.
- /// If set, grpc is free to use the HTTP GET verb for sending the request,
- /// with the possibility of receiving a cached response.
- void set_cacheable(bool cacheable) { cacheable_ = cacheable; }
-
/// Trigger wait-for-ready or not on this request.
/// See https://github.com/grpc/grpc/blob/master/doc/wait-for-ready.md.
/// If set, if an RPC is made when a channel's connectivity state is
@@ -485,13 +473,10 @@ class ClientContext {
}
uint32_t initial_metadata_flags() const {
- return (idempotent_ ? GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST : 0) |
- (wait_for_ready_ ? GRPC_INITIAL_METADATA_WAIT_FOR_READY : 0) |
- (cacheable_ ? GRPC_INITIAL_METADATA_CACHEABLE_REQUEST : 0) |
+ return (wait_for_ready_ ? GRPC_INITIAL_METADATA_WAIT_FOR_READY : 0) |
(wait_for_ready_explicitly_set_
? GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET
- : 0) |
- (initial_metadata_corked_ ? GRPC_INITIAL_METADATA_CORKED : 0);
+ : 0);
}
TString authority() { return authority_; }
@@ -505,8 +490,6 @@ class ClientContext {
bool initial_metadata_received_;
bool wait_for_ready_;
bool wait_for_ready_explicitly_set_;
- bool idempotent_;
- bool cacheable_;
std::shared_ptr<grpc::Channel> channel_;
grpc::internal::Mutex mu_;
grpc_call* call_;
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/client_interceptor.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/client_interceptor.h
index f3560b5ad2..1c6b8ce51f 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/client_interceptor.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/client_interceptor.h
@@ -19,181 +19,9 @@
#ifndef GRPCPP_IMPL_CODEGEN_CLIENT_INTERCEPTOR_H
#define GRPCPP_IMPL_CODEGEN_CLIENT_INTERCEPTOR_H
-// IWYU pragma: private, include <grpcpp/support/client_interceptor.h>
+// IWYU pragma: private
-#include <memory>
-#include <vector>
-
-#include <grpcpp/impl/codegen/interceptor.h>
-#include <grpcpp/impl/codegen/rpc_method.h>
-#include <grpcpp/impl/codegen/string_ref.h>
-
-namespace grpc {
-
-class Channel;
-class ClientContext;
-
-namespace internal {
-class InterceptorBatchMethodsImpl;
-}
-
-namespace experimental {
-class ClientRpcInfo;
-
-// A factory interface for creation of client interceptors. A vector of
-// factories can be provided at channel creation which will be used to create a
-// new vector of client interceptors per RPC. Client interceptor authors should
-// create a subclass of ClientInterceptorFactorInterface which creates objects
-// of their interceptors.
-class ClientInterceptorFactoryInterface {
- public:
- virtual ~ClientInterceptorFactoryInterface() {}
- // Returns a pointer to an Interceptor object on successful creation, nullptr
- // otherwise. If nullptr is returned, this server interceptor factory is
- // ignored for the purposes of that RPC.
- virtual Interceptor* CreateClientInterceptor(ClientRpcInfo* info) = 0;
-};
-} // namespace experimental
-
-namespace internal {
-extern experimental::ClientInterceptorFactoryInterface*
- g_global_client_interceptor_factory;
-}
-
-/// ClientRpcInfo represents the state of a particular RPC as it
-/// appears to an interceptor. It is created and owned by the library and
-/// passed to the CreateClientInterceptor method of the application's
-/// ClientInterceptorFactoryInterface implementation
-namespace experimental {
-class ClientRpcInfo {
- public:
- // TODO(yashykt): Stop default-constructing ClientRpcInfo and remove UNKNOWN
- // from the list of possible Types.
- /// Type categorizes RPCs by unary or streaming type
- enum class Type {
- UNARY,
- CLIENT_STREAMING,
- SERVER_STREAMING,
- BIDI_STREAMING,
- UNKNOWN // UNKNOWN is not API and will be removed later
- };
-
- ~ClientRpcInfo() {}
-
- // Delete copy constructor but allow default move constructor
- ClientRpcInfo(const ClientRpcInfo&) = delete;
- ClientRpcInfo(ClientRpcInfo&&) = default;
-
- // Getter methods
-
- /// Return the fully-specified method name
- const char* method() const { return method_; }
-
- /// Return an identifying suffix for the client stub, or nullptr if one wasn't
- /// specified.
- const char* suffix_for_stats() const { return suffix_for_stats_; }
-
- /// Return a pointer to the channel on which the RPC is being sent
- ChannelInterface* channel() { return channel_; }
-
- /// Return a pointer to the underlying ClientContext structure associated
- /// with the RPC to support features that apply to it
- grpc::ClientContext* client_context() { return ctx_; }
-
- /// Return the type of the RPC (unary or a streaming flavor)
- Type type() const { return type_; }
-
- private:
- static_assert(Type::UNARY ==
- static_cast<Type>(internal::RpcMethod::NORMAL_RPC),
- "violated expectation about Type enum");
- static_assert(Type::CLIENT_STREAMING ==
- static_cast<Type>(internal::RpcMethod::CLIENT_STREAMING),
- "violated expectation about Type enum");
- static_assert(Type::SERVER_STREAMING ==
- static_cast<Type>(internal::RpcMethod::SERVER_STREAMING),
- "violated expectation about Type enum");
- static_assert(Type::BIDI_STREAMING ==
- static_cast<Type>(internal::RpcMethod::BIDI_STREAMING),
- "violated expectation about Type enum");
-
- // Default constructor should only be used by ClientContext
- ClientRpcInfo() = default;
-
- // Constructor will only be called from ClientContext
- ClientRpcInfo(grpc::ClientContext* ctx, internal::RpcMethod::RpcType type,
- const char* method, const char* suffix_for_stats,
- grpc::ChannelInterface* channel)
- : ctx_(ctx),
- type_(static_cast<Type>(type)),
- method_(method),
- suffix_for_stats_(suffix_for_stats),
- channel_(channel) {}
-
- // Move assignment should only be used by ClientContext
- // TODO(yashykt): Delete move assignment
- ClientRpcInfo& operator=(ClientRpcInfo&&) = default;
-
- // Runs interceptor at pos \a pos.
- void RunInterceptor(
- experimental::InterceptorBatchMethods* interceptor_methods, size_t pos) {
- GPR_CODEGEN_ASSERT(pos < interceptors_.size());
- interceptors_[pos]->Intercept(interceptor_methods);
- }
-
- void RegisterInterceptors(
- const std::vector<std::unique_ptr<
- experimental::ClientInterceptorFactoryInterface>>& creators,
- size_t interceptor_pos) {
- if (interceptor_pos > creators.size()) {
- // No interceptors to register
- return;
- }
- // NOTE: The following is not a range-based for loop because it will only
- // iterate over a portion of the creators vector.
- for (auto it = creators.begin() + interceptor_pos; it != creators.end();
- ++it) {
- auto* interceptor = (*it)->CreateClientInterceptor(this);
- if (interceptor != nullptr) {
- interceptors_.push_back(
- std::unique_ptr<experimental::Interceptor>(interceptor));
- }
- }
- if (internal::g_global_client_interceptor_factory != nullptr) {
- interceptors_.push_back(std::unique_ptr<experimental::Interceptor>(
- internal::g_global_client_interceptor_factory
- ->CreateClientInterceptor(this)));
- }
- }
-
- grpc::ClientContext* ctx_ = nullptr;
- // TODO(yashykt): make type_ const once move-assignment is deleted
- Type type_{Type::UNKNOWN};
- const char* method_ = nullptr;
- const char* suffix_for_stats_ = nullptr;
- grpc::ChannelInterface* channel_ = nullptr;
- std::vector<std::unique_ptr<experimental::Interceptor>> interceptors_;
- bool hijacked_ = false;
- size_t hijacked_interceptor_ = 0;
-
- friend class internal::InterceptorBatchMethodsImpl;
- friend class grpc::ClientContext;
-};
-
-// PLEASE DO NOT USE THIS. ALWAYS PREFER PER CHANNEL INTERCEPTORS OVER A GLOBAL
-// INTERCEPTOR. IF USAGE IS ABSOLUTELY NECESSARY, PLEASE READ THE SAFETY NOTES.
-// Registers a global client interceptor factory object, which is used for all
-// RPCs made in this process. The application is responsible for maintaining the
-// life of the object while gRPC operations are in progress. The global
-// interceptor factory should only be registered once at the start of the
-// process before any gRPC operations have begun.
-void RegisterGlobalClientInterceptorFactory(
- ClientInterceptorFactoryInterface* factory);
-
-// For testing purposes only
-void TestOnlyResetGlobalClientInterceptorFactory();
-
-} // namespace experimental
-} // namespace grpc
+/// TODO(chengyuc): Remove this file after solving compatibility.
+#include <grpcpp/support/client_interceptor.h>
#endif // GRPCPP_IMPL_CODEGEN_CLIENT_INTERCEPTOR_H
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/core_codegen.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/core_codegen.h
index e0440ffe3b..340dc47faa 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/core_codegen.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/core_codegen.h
@@ -107,6 +107,8 @@ class CoreCodegen final : public CoreCodegenInterface {
grpc_slice grpc_slice_sub(grpc_slice s, size_t begin, size_t end) override;
void grpc_slice_buffer_add(grpc_slice_buffer* sb, grpc_slice slice) override;
void grpc_slice_buffer_pop(grpc_slice_buffer* sb) override;
+ void grpc_slice_buffer_add_indexed(grpc_slice_buffer* sb,
+ grpc_slice slice) override;
grpc_slice grpc_slice_from_static_buffer(const void* buffer,
size_t length) override;
grpc_slice grpc_slice_from_copied_buffer(const void* buffer,
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/core_codegen_interface.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/core_codegen_interface.h
index 0b23bf46e6..5ca1feff08 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/core_codegen_interface.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/core_codegen_interface.h
@@ -127,6 +127,8 @@ class CoreCodegenInterface {
virtual grpc_slice grpc_slice_sub(grpc_slice s, size_t begin, size_t end) = 0;
virtual void grpc_slice_buffer_add(grpc_slice_buffer* sb,
grpc_slice slice) = 0;
+ virtual void grpc_slice_buffer_add_indexed(grpc_slice_buffer* sb,
+ grpc_slice slice) = 0;
virtual void grpc_slice_buffer_pop(grpc_slice_buffer* sb) = 0;
virtual grpc_slice grpc_slice_from_static_buffer(const void* buffer,
size_t length) = 0;
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/interceptor.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/interceptor.h
index 0818d5c534..b66c6656ae 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/interceptor.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/interceptor.h
@@ -21,13 +21,17 @@
// IWYU pragma: private, include <grpcpp/support/interceptor.h>
+#include <map>
#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include <grpc/impl/codegen/grpc_types.h>
-#include <grpcpp/impl/codegen/byte_buffer.h>
#include <grpcpp/impl/codegen/config.h>
#include <grpcpp/impl/codegen/core_codegen_interface.h>
#include <grpcpp/impl/codegen/metadata_map.h>
+#include <grpcpp/impl/codegen/string_ref.h>
+#include <grpcpp/support/byte_buffer.h>
namespace grpc {
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/interceptor_common.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/interceptor_common.h
index 46a5d1ac6b..f26b82b27e 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/interceptor_common.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/interceptor_common.h
@@ -29,8 +29,8 @@
#include <functional>
#include <grpc/impl/codegen/grpc_types.h>
+#include <grpcpp/impl/call_op_set_interface.h>
#include <grpcpp/impl/codegen/call.h>
-#include <grpcpp/impl/codegen/call_op_set_interface.h>
#include <grpcpp/impl/codegen/client_interceptor.h>
#include <grpcpp/impl/codegen/intercepted_channel.h>
#include <grpcpp/impl/codegen/server_interceptor.h>
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/method_handler.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/method_handler.h
index 3b6afaa2c7..4f00728b57 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/method_handler.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/method_handler.h
@@ -21,10 +21,10 @@
// IWYU pragma: private, include <grpcpp/support/method_handler.h>
-#include <grpcpp/impl/codegen/byte_buffer.h>
#include <grpcpp/impl/codegen/core_codegen_interface.h>
#include <grpcpp/impl/codegen/rpc_service_method.h>
#include <grpcpp/impl/codegen/sync_stream.h>
+#include <grpcpp/support/byte_buffer.h>
namespace grpc {
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/proto_buffer_reader.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/proto_buffer_reader.h
index ecc0e30109..38df095ca0 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/proto_buffer_reader.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/proto_buffer_reader.h
@@ -26,11 +26,11 @@
#include <grpc/impl/codegen/byte_buffer_reader.h>
#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/impl/codegen/slice.h>
-#include <grpcpp/impl/codegen/byte_buffer.h>
#include <grpcpp/impl/codegen/config_protobuf.h>
#include <grpcpp/impl/codegen/core_codegen_interface.h>
#include <grpcpp/impl/codegen/serialization_traits.h>
#include <grpcpp/impl/codegen/status.h>
+#include <grpcpp/support/byte_buffer.h>
/// This header provides an object that reads bytes directly from a
/// grpc::ByteBuffer, via the ZeroCopyInputStream interface
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/proto_buffer_writer.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/proto_buffer_writer.h
index 552c6a70fa..34730bd205 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/proto_buffer_writer.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/proto_buffer_writer.h
@@ -25,11 +25,11 @@
#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/impl/codegen/slice.h>
-#include <grpcpp/impl/codegen/byte_buffer.h>
#include <grpcpp/impl/codegen/config_protobuf.h>
#include <grpcpp/impl/codegen/core_codegen_interface.h>
#include <grpcpp/impl/codegen/serialization_traits.h>
#include <grpcpp/impl/codegen/status.h>
+#include <grpcpp/support/byte_buffer.h>
/// This header provides an object that writes bytes directly into a
/// grpc::ByteBuffer, via the ZeroCopyOutputStream interface
@@ -110,7 +110,12 @@ class ProtoBufferWriter : public grpc::protobuf::io::ZeroCopyOutputStream {
// On win x64, int is only 32bit
GPR_CODEGEN_ASSERT(GRPC_SLICE_LENGTH(slice_) <= INT_MAX);
byte_count_ += * size = static_cast<int>(GRPC_SLICE_LENGTH(slice_));
- g_core_codegen_interface->grpc_slice_buffer_add(slice_buffer_, slice_);
+ // Using grpc_slice_buffer_add could modify slice_ and merge it with the
+ // previous slice. Therefore, use grpc_slice_buffer_add_indexed method to
+ // ensure the slice gets added at a separate index. It can then be kept
+ // around and popped later in the BackUp function.
+ g_core_codegen_interface->grpc_slice_buffer_add_indexed(slice_buffer_,
+ slice_);
return true;
}
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/proto_utils.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/proto_utils.h
index 4f6d87415a..9f9eb77b53 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/proto_utils.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/proto_utils.h
@@ -26,7 +26,6 @@
#include <grpc/impl/codegen/byte_buffer_reader.h>
#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/impl/codegen/slice.h>
-#include <grpcpp/impl/codegen/byte_buffer.h>
#include <grpcpp/impl/codegen/config_protobuf.h>
#include <grpcpp/impl/codegen/core_codegen_interface.h>
#include <grpcpp/impl/codegen/proto_buffer_reader.h>
@@ -34,6 +33,7 @@
#include <grpcpp/impl/codegen/serialization_traits.h>
#include <grpcpp/impl/codegen/slice.h>
#include <grpcpp/impl/codegen/status.h>
+#include <grpcpp/support/byte_buffer.h>
/// This header provides serialization and deserialization between gRPC
/// messages serialized using protobuf and the C++ objects they represent.
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/rpc_service_method.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/rpc_service_method.h
index 6f6730a1f1..2aa7774ab5 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/rpc_service_method.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/rpc_service_method.h
@@ -28,10 +28,10 @@
#include <vector>
#include <grpc/impl/codegen/log.h>
-#include <grpcpp/impl/codegen/byte_buffer.h>
#include <grpcpp/impl/codegen/config.h>
#include <grpcpp/impl/codegen/rpc_method.h>
#include <grpcpp/impl/codegen/status.h>
+#include <grpcpp/support/byte_buffer.h>
namespace grpc {
class ServerContextBase;
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/security/auth_context.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/security/auth_context.h
index 3079fecbc4..8343832c27 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/security/auth_context.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/security/auth_context.h
@@ -36,9 +36,14 @@ class SecureAuthContext;
typedef std::pair<string_ref, string_ref> AuthProperty;
-class AuthPropertyIterator
- : public std::iterator<std::input_iterator_tag, const AuthProperty> {
+class AuthPropertyIterator {
public:
+ using iterator_category = std::forward_iterator_tag;
+ using value_type = const AuthProperty;
+ using pointer = void;
+ using reference = void;
+ using difference_type = std::ptrdiff_t;
+
~AuthPropertyIterator();
AuthPropertyIterator& operator++();
AuthPropertyIterator operator++(int);
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/server_context.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/server_context.h
index 7a67ecd052..406fc90802 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/server_context.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/server_context.h
@@ -117,6 +117,11 @@ class ServerContextTestSpouse;
class DefaultReactorTestPeer;
} // namespace testing
+namespace experimental {
+class OrcaServerInterceptor;
+class CallMetricRecorder;
+} // namespace experimental
+
/// Base class of ServerContext.
class ServerContextBase {
public:
@@ -283,6 +288,19 @@ class ServerContextBase {
/// Applications never need to call this method.
grpc_call* c_call() { return call_.call; }
+ /// Get the \a CallMetricRecorder object for the current RPC.
+ /// Use it to record metrics during your RPC to send back to the
+ /// client in order to make load balancing decisions. This will
+ /// return nullptr if the feature hasn't been enabled using
+ /// \a EnableCallMetricRecording.
+ experimental::CallMetricRecorder* ExperimentalGetCallMetricRecorder() {
+ return call_metric_recorder_;
+ }
+
+ /// EXPERIMENTAL API
+ /// Returns the call's authority.
+ grpc::string_ref ExperimentalGetAuthority() const;
+
protected:
/// Async only. Has to be called before the rpc starts.
/// Returns the tag in completion queue when the rpc finishes.
@@ -388,6 +406,7 @@ class ServerContextBase {
friend class grpc::ClientContext;
friend class grpc::GenericServerContext;
friend class grpc::GenericCallbackServerContext;
+ friend class grpc::experimental::OrcaServerInterceptor;
/// Prevent copying.
ServerContextBase(const ServerContextBase&);
@@ -429,6 +448,8 @@ class ServerContextBase {
}
}
+ void CreateCallMetricRecorder();
+
struct CallWrapper {
~CallWrapper();
@@ -466,6 +487,7 @@ class ServerContextBase {
grpc::experimental::ServerRpcInfo* rpc_info_ = nullptr;
RpcAllocatorState* message_allocator_state_ = nullptr;
ContextAllocator* context_allocator_ = nullptr;
+ experimental::CallMetricRecorder* call_metric_recorder_ = nullptr;
class Reactor : public grpc::ServerUnaryReactor {
public:
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/server_interface.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/server_interface.h
index 031b377e4b..62a43b1bb4 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/server_interface.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/server_interface.h
@@ -24,7 +24,6 @@
#include <grpc/impl/codegen/port_platform.h>
#include <grpc/impl/codegen/grpc_types.h>
-#include <grpcpp/impl/codegen/byte_buffer.h>
#include <grpcpp/impl/codegen/call.h>
#include <grpcpp/impl/codegen/call_hook.h>
#include <grpcpp/impl/codegen/completion_queue_tag.h>
@@ -32,6 +31,7 @@
#include <grpcpp/impl/codegen/interceptor_common.h>
#include <grpcpp/impl/codegen/rpc_service_method.h>
#include <grpcpp/impl/codegen/server_context.h>
+#include <grpcpp/support/byte_buffer.h>
namespace grpc {
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/status.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/status.h
index 358f2bb7f9..a3ab974a93 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/status.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/status.h
@@ -21,6 +21,8 @@
// IWYU pragma: private, include <grpcpp/support/status.h>
+#include <grpc/impl/codegen/port_platform.h>
+
#include <grpc/impl/codegen/status.h>
#include <grpcpp/impl/codegen/config.h>
#include <grpcpp/impl/codegen/status_code_enum.h>
@@ -30,7 +32,7 @@ namespace grpc {
/// Did it work? If it didn't, why?
///
/// See \a grpc::StatusCode for details on the available code and their meaning.
-class Status {
+class GRPC_MUST_USE_RESULT_WHEN_USE_STRICT_WARNING Status {
public:
/// Construct an OK instance.
Status() : code_(StatusCode::OK) {
@@ -90,6 +92,10 @@ class Status {
/// Construct an instance with associated \a code and \a error_message.
/// It is an error to construct an OK status with non-empty \a error_message.
+ /// Note that \a message is intentionally accepted as a const reference
+ /// instead of a value (which results in a copy instead of a move) to allow
+ /// for easy transition to y_absl::Status in the future which accepts an
+ /// y_absl::string_view as a parameter.
Status(StatusCode code, const TString& error_message)
: code_(code), error_message_(error_message) {}
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/status_code_enum.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/status_code_enum.h
index 36ea24fdfd..6950eab57d 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/status_code_enum.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/status_code_enum.h
@@ -19,7 +19,7 @@
#ifndef GRPCPP_IMPL_CODEGEN_STATUS_CODE_ENUM_H
#define GRPCPP_IMPL_CODEGEN_STATUS_CODE_ENUM_H
-// IWYU pragma: private, include <grpcpp/support/status_code_enum.h>
+// IWYU pragma: private, include <grpcpp/support/status.h>
namespace grpc {
diff --git a/contrib/libs/grpc/include/grpcpp/impl/codegen/sync_stream.h b/contrib/libs/grpc/include/grpcpp/impl/codegen/sync_stream.h
index 3ed2fddcb8..1235b8de44 100644
--- a/contrib/libs/grpc/include/grpcpp/impl/codegen/sync_stream.h
+++ b/contrib/libs/grpc/include/grpcpp/impl/codegen/sync_stream.h
@@ -20,7 +20,7 @@
// IWYU pragma: private, include <grpcpp/support/sync_stream.h>
-#include <grpcpp/impl/codegen/call.h>
+#include <grpcpp/impl/call.h>
#include <grpcpp/impl/codegen/channel_interface.h>
#include <grpcpp/impl/codegen/client_context.h>
#include <grpcpp/impl/codegen/completion_queue.h>
@@ -222,7 +222,12 @@ class ClientReader final : public ClientReaderInterface<R> {
/// The \a ClientContext associated with this call is updated with
/// possible metadata received from the server.
grpc::Status Finish() override {
- grpc::internal::CallOpSet<grpc::internal::CallOpClientRecvStatus> ops;
+ grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata,
+ grpc::internal::CallOpClientRecvStatus>
+ ops;
+ if (!context_->initial_metadata_received_) {
+ ops.RecvInitialMetadata(context_);
+ }
grpc::Status status;
ops.ClientRecvStatus(context_, &status);
call_.PerformOps(&ops);
diff --git a/contrib/libs/grpc/include/grpcpp/security/auth_metadata_processor.h b/contrib/libs/grpc/include/grpcpp/security/auth_metadata_processor.h
index f5321e877c..3251c8a9b8 100644
--- a/contrib/libs/grpc/include/grpcpp/security/auth_metadata_processor.h
+++ b/contrib/libs/grpc/include/grpcpp/security/auth_metadata_processor.h
@@ -30,6 +30,8 @@ namespace grpc {
/// Interface allowing custom server-side authorization based on credentials
/// encoded in metadata. Objects of this type can be passed to
/// \a ServerCredentials::SetAuthMetadataProcessor().
+/// Please also check out \a grpc::experimental::Interceptor for another way to
+/// do customized operations on the information provided by a specific call.
class AuthMetadataProcessor {
public:
typedef std::multimap<grpc::string_ref, grpc::string_ref> InputMetadata;
@@ -41,15 +43,25 @@ class AuthMetadataProcessor {
/// a different thread from the one processing the call.
virtual bool IsBlocking() const { return true; }
- /// context is read/write: it contains the properties of the channel peer and
- /// it is the job of the Process method to augment it with properties derived
- /// from the passed-in auth_metadata.
- /// consumed_auth_metadata needs to be filled with metadata that has been
- /// consumed by the processor and will be removed from the call.
- /// response_metadata is the metadata that will be sent as part of the
- /// response.
- /// If the return value is not Status::OK, the rpc call will be aborted with
- /// the error code and error message sent back to the client.
+ /// Processes a Call associated with a connection.
+ /// auth_metadata: the authentication metadata associated with the particular
+ /// call
+ /// context: contains the connection-level info, e.g. the peer identity. This
+ /// parameter is readable and writable. Note that since the information is
+ /// shared for all calls associated with the connection, if the
+ /// implementation updates the info in a specific call, all the subsequent
+ /// calls will see the updates. A typical usage of context is to use
+ /// |auth_metadata| to infer the peer identity, and augment it with
+ /// properties.
+ /// consumed_auth_metadata: contains the metadata that the implementation
+ /// wants to remove from the current call, so that the server application is
+ /// no longer able to see it anymore. A typical usage would be to do token
+ /// authentication in the first call, and then remove the token information
+ /// for all subsequent calls.
+ /// response_metadata(CURRENTLY NOT SUPPORTED): the metadata that will be sent
+ /// as part of the response.
+ /// return: if the return value is not Status::OK, the rpc call will be
+ /// aborted with the error code and error message sent back to the client.
virtual grpc::Status Process(const InputMetadata& auth_metadata,
grpc::AuthContext* context,
OutputMetadata* consumed_auth_metadata,
diff --git a/contrib/libs/grpc/include/grpcpp/security/credentials.h b/contrib/libs/grpc/include/grpcpp/security/credentials.h
index d6fb5a42be..ec194aecc3 100644
--- a/contrib/libs/grpc/include/grpcpp/security/credentials.h
+++ b/contrib/libs/grpc/include/grpcpp/security/credentials.h
@@ -29,11 +29,11 @@
#include <grpc/grpc_security_constants.h>
#include <grpcpp/channel.h>
-#include <grpcpp/impl/codegen/client_interceptor.h>
#include <grpcpp/impl/codegen/grpc_library.h>
#include <grpcpp/security/auth_context.h>
#include <grpcpp/security/tls_credentials_options.h>
#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/client_interceptor.h>
#include <grpcpp/support/status.h>
#include <grpcpp/support/string_ref.h>
diff --git a/contrib/libs/grpc/include/grpcpp/security/tls_certificate_verifier.h b/contrib/libs/grpc/include/grpcpp/security/tls_certificate_verifier.h
index 63f285ece4..7635916eb7 100644
--- a/contrib/libs/grpc/include/grpcpp/security/tls_certificate_verifier.h
+++ b/contrib/libs/grpc/include/grpcpp/security/tls_certificate_verifier.h
@@ -214,6 +214,19 @@ class ExternalCertificateVerifier {
request_map_ Y_ABSL_GUARDED_BY(mu_);
};
+// A CertificateVerifier that doesn't perform any additional checks other than
+// certificate verification, if specified.
+// Note: using this solely without any other authentication mechanisms on the
+// peer identity will leave your applications to the MITM(Man-In-The-Middle)
+// attacks. Users should avoid doing so in production environments.
+class NoOpCertificateVerifier : public CertificateVerifier {
+ public:
+ NoOpCertificateVerifier();
+};
+
+// A CertificateVerifier that will perform hostname verification, to see if the
+// target name set from the client side matches the identity information
+// specified on the server's certificate.
class HostNameCertificateVerifier : public CertificateVerifier {
public:
HostNameCertificateVerifier();
diff --git a/contrib/libs/grpc/include/grpcpp/server.h b/contrib/libs/grpc/include/grpcpp/server.h
index 379a465ee3..50ee46f70e 100644
--- a/contrib/libs/grpc/include/grpcpp/server.h
+++ b/contrib/libs/grpc/include/grpcpp/server.h
@@ -35,13 +35,13 @@
#include <grpcpp/completion_queue.h>
#include <grpcpp/health_check_service_interface.h>
#include <grpcpp/impl/call.h>
-#include <grpcpp/impl/codegen/client_interceptor.h>
#include <grpcpp/impl/codegen/completion_queue.h>
#include <grpcpp/impl/codegen/grpc_library.h>
#include <grpcpp/impl/codegen/server_interface.h>
#include <grpcpp/impl/rpc_service_method.h>
#include <grpcpp/security/server_credentials.h>
#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/client_interceptor.h>
#include <grpcpp/support/config.h>
#include <grpcpp/support/status.h>
diff --git a/contrib/libs/grpc/include/grpcpp/server_builder.h b/contrib/libs/grpc/include/grpcpp/server_builder.h
index 22634ab260..3619018c5b 100644
--- a/contrib/libs/grpc/include/grpcpp/server_builder.h
+++ b/contrib/libs/grpc/include/grpcpp/server_builder.h
@@ -59,6 +59,7 @@ class ExternalConnectionAcceptorImpl;
class CallbackGenericService;
namespace experimental {
+class OrcaServerInterceptorFactory;
// EXPERIMENTAL API:
// Interface for a grpc server to build transports with connections created out
// of band.
@@ -352,6 +353,7 @@ class ServerBuilder {
private:
friend class grpc::testing::ServerBuilderPluginTest;
+ friend class grpc::experimental::OrcaServerInterceptorFactory;
struct SyncServerSettings {
SyncServerSettings()
@@ -402,6 +404,9 @@ class ServerBuilder {
std::vector<
std::unique_ptr<grpc::experimental::ServerInterceptorFactoryInterface>>
interceptor_creators_;
+ std::vector<
+ std::unique_ptr<grpc::experimental::ServerInterceptorFactoryInterface>>
+ internal_interceptor_creators_;
std::vector<std::shared_ptr<grpc::internal::ExternalConnectionAcceptorImpl>>
acceptors_;
grpc_server_config_fetcher* server_config_fetcher_ = nullptr;
diff --git a/contrib/libs/grpc/include/grpcpp/support/async_stream.h b/contrib/libs/grpc/include/grpcpp/support/async_stream.h
index 5f71701417..18e84dfcdb 100644
--- a/contrib/libs/grpc/include/grpcpp/support/async_stream.h
+++ b/contrib/libs/grpc/include/grpcpp/support/async_stream.h
@@ -19,6 +19,1115 @@
#ifndef GRPCPP_SUPPORT_ASYNC_STREAM_H
#define GRPCPP_SUPPORT_ASYNC_STREAM_H
-#include <grpcpp/impl/codegen/async_stream.h> // IWYU pragma: export
+#include <grpc/grpc.h>
+#include <grpcpp/impl/call.h>
+#include <grpcpp/impl/codegen/channel_interface.h>
+#include <grpcpp/impl/codegen/core_codegen_interface.h>
+#include <grpcpp/impl/service_type.h>
+#include <grpcpp/server_context.h>
+#include <grpcpp/support/status.h>
+
+namespace grpc {
+
+namespace internal {
+/// Common interface for all client side asynchronous streaming.
+class ClientAsyncStreamingInterface {
+ public:
+ virtual ~ClientAsyncStreamingInterface() {}
+
+ /// Start the call that was set up by the constructor, but only if the
+ /// constructor was invoked through the "Prepare" API which doesn't actually
+ /// start the call
+ virtual void StartCall(void* tag) = 0;
+
+ /// Request notification of the reading of the initial metadata. Completion
+ /// will be notified by \a tag on the associated completion queue.
+ /// This call is optional, but if it is used, it cannot be used concurrently
+ /// with or after the \a AsyncReaderInterface::Read method.
+ ///
+ /// \param[in] tag Tag identifying this request.
+ virtual void ReadInitialMetadata(void* tag) = 0;
+
+ /// Indicate that the stream is to be finished and request notification for
+ /// when the call has been ended.
+ /// Should not be used concurrently with other operations.
+ ///
+ /// It is appropriate to call this method exactly once when both:
+ /// * the client side has no more message to send
+ /// (this can be declared implicitly by calling this method, or
+ /// explicitly through an earlier call to the <i>WritesDone</i> method
+ /// of the class in use, e.g. \a ClientAsyncWriterInterface::WritesDone or
+ /// \a ClientAsyncReaderWriterInterface::WritesDone).
+ /// * there are no more messages to be received from the server (this can
+ /// be known implicitly by the calling code, or explicitly from an
+ /// earlier call to \a AsyncReaderInterface::Read that yielded a failed
+ /// result, e.g. cq->Next(&read_tag, &ok) filled in 'ok' with 'false').
+ ///
+ /// The tag will be returned when either:
+ /// - all incoming messages have been read and the server has returned
+ /// a status.
+ /// - the server has returned a non-OK status.
+ /// - the call failed for some reason and the library generated a
+ /// status.
+ ///
+ /// Note that implementations of this method attempt to receive initial
+ /// metadata from the server if initial metadata hasn't yet been received.
+ ///
+ /// \param[in] tag Tag identifying this request.
+ /// \param[out] status To be updated with the operation status.
+ virtual void Finish(grpc::Status* status, void* tag) = 0;
+};
+
+/// An interface that yields a sequence of messages of type \a R.
+template <class R>
+class AsyncReaderInterface {
+ public:
+ virtual ~AsyncReaderInterface() {}
+
+ /// Read a message of type \a R into \a msg. Completion will be notified by \a
+ /// tag on the associated completion queue.
+ /// This is thread-safe with respect to \a Write or \a WritesDone methods. It
+ /// should not be called concurrently with other streaming APIs
+ /// on the same stream. It is not meaningful to call it concurrently
+ /// with another \a AsyncReaderInterface::Read on the same stream since reads
+ /// on the same stream are delivered in order.
+ ///
+ /// \param[out] msg Where to eventually store the read message.
+ /// \param[in] tag The tag identifying the operation.
+ ///
+ /// Side effect: note that this method attempt to receive initial metadata for
+ /// a stream if it hasn't yet been received.
+ virtual void Read(R* msg, void* tag) = 0;
+};
+
+/// An interface that can be fed a sequence of messages of type \a W.
+template <class W>
+class AsyncWriterInterface {
+ public:
+ virtual ~AsyncWriterInterface() {}
+
+ /// Request the writing of \a msg with identifying tag \a tag.
+ ///
+ /// Only one write may be outstanding at any given time. This means that
+ /// after calling Write, one must wait to receive \a tag from the completion
+ /// queue BEFORE calling Write again.
+ /// This is thread-safe with respect to \a AsyncReaderInterface::Read
+ ///
+ /// gRPC doesn't take ownership or a reference to \a msg, so it is safe to
+ /// to deallocate once Write returns.
+ ///
+ /// \param[in] msg The message to be written.
+ /// \param[in] tag The tag identifying the operation.
+ virtual void Write(const W& msg, void* tag) = 0;
+
+ /// Request the writing of \a msg using WriteOptions \a options with
+ /// identifying tag \a tag.
+ ///
+ /// Only one write may be outstanding at any given time. This means that
+ /// after calling Write, one must wait to receive \a tag from the completion
+ /// queue BEFORE calling Write again.
+ /// WriteOptions \a options is used to set the write options of this message.
+ /// This is thread-safe with respect to \a AsyncReaderInterface::Read
+ ///
+ /// gRPC doesn't take ownership or a reference to \a msg, so it is safe to
+ /// to deallocate once Write returns.
+ ///
+ /// \param[in] msg The message to be written.
+ /// \param[in] options The WriteOptions to be used to write this message.
+ /// \param[in] tag The tag identifying the operation.
+ virtual void Write(const W& msg, grpc::WriteOptions options, void* tag) = 0;
+
+ /// Request the writing of \a msg and coalesce it with the writing
+ /// of trailing metadata, using WriteOptions \a options with
+ /// identifying tag \a tag.
+ ///
+ /// For client, WriteLast is equivalent of performing Write and
+ /// WritesDone in a single step.
+ /// For server, WriteLast buffers the \a msg. The writing of \a msg is held
+ /// until Finish is called, where \a msg and trailing metadata are coalesced
+ /// and write is initiated. Note that WriteLast can only buffer \a msg up to
+ /// the flow control window size. If \a msg size is larger than the window
+ /// size, it will be sent on wire without buffering.
+ ///
+ /// gRPC doesn't take ownership or a reference to \a msg, so it is safe to
+ /// to deallocate once Write returns.
+ ///
+ /// \param[in] msg The message to be written.
+ /// \param[in] options The WriteOptions to be used to write this message.
+ /// \param[in] tag The tag identifying the operation.
+ void WriteLast(const W& msg, grpc::WriteOptions options, void* tag) {
+ Write(msg, options.set_last_message(), tag);
+ }
+};
+
+} // namespace internal
+
+template <class R>
+class ClientAsyncReaderInterface
+ : public internal::ClientAsyncStreamingInterface,
+ public internal::AsyncReaderInterface<R> {};
+
+namespace internal {
+template <class R>
+class ClientAsyncReaderFactory {
+ public:
+ /// Create a stream object.
+ /// Write the first request out if \a start is set.
+ /// \a tag will be notified on \a cq when the call has been started and
+ /// \a request has been written out. If \a start is not set, \a tag must be
+ /// nullptr and the actual call must be initiated by StartCall
+ /// Note that \a context will be used to fill in custom initial metadata
+ /// used to send to the server when starting the call.
+ template <class W>
+ static ClientAsyncReader<R>* Create(grpc::ChannelInterface* channel,
+ grpc::CompletionQueue* cq,
+ const grpc::internal::RpcMethod& method,
+ grpc::ClientContext* context,
+ const W& request, bool start, void* tag) {
+ grpc::internal::Call call = channel->CreateCall(method, context, cq);
+ return new (grpc::g_core_codegen_interface->grpc_call_arena_alloc(
+ call.call(), sizeof(ClientAsyncReader<R>)))
+ ClientAsyncReader<R>(call, context, request, start, tag);
+ }
+};
+} // namespace internal
+
+/// Async client-side API for doing server-streaming RPCs,
+/// where the incoming message stream coming from the server has
+/// messages of type \a R.
+template <class R>
+class ClientAsyncReader final : public ClientAsyncReaderInterface<R> {
+ public:
+ // always allocated against a call arena, no memory free required
+ static void operator delete(void* /*ptr*/, std::size_t size) {
+ GPR_CODEGEN_ASSERT(size == sizeof(ClientAsyncReader));
+ }
+
+ // This operator should never be called as the memory should be freed as part
+ // of the arena destruction. It only exists to provide a matching operator
+ // delete to the operator new so that some compilers will not complain (see
+ // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this
+ // there are no tests catching the compiler warning.
+ static void operator delete(void*, void*) { GPR_CODEGEN_ASSERT(false); }
+
+ void StartCall(void* tag) override {
+ GPR_CODEGEN_ASSERT(!started_);
+ started_ = true;
+ StartCallInternal(tag);
+ }
+
+ /// See the \a ClientAsyncStreamingInterface.ReadInitialMetadata
+ /// method for semantics.
+ ///
+ /// Side effect:
+ /// - upon receiving initial metadata from the server,
+ /// the \a ClientContext associated with this call is updated, and the
+ /// calling code can access the received metadata through the
+ /// \a ClientContext.
+ void ReadInitialMetadata(void* tag) override {
+ GPR_CODEGEN_ASSERT(started_);
+ GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_);
+
+ meta_ops_.set_output_tag(tag);
+ meta_ops_.RecvInitialMetadata(context_);
+ call_.PerformOps(&meta_ops_);
+ }
+
+ void Read(R* msg, void* tag) override {
+ GPR_CODEGEN_ASSERT(started_);
+ read_ops_.set_output_tag(tag);
+ if (!context_->initial_metadata_received_) {
+ read_ops_.RecvInitialMetadata(context_);
+ }
+ read_ops_.RecvMessage(msg);
+ call_.PerformOps(&read_ops_);
+ }
+
+ /// See the \a ClientAsyncStreamingInterface.Finish method for semantics.
+ ///
+ /// Side effect:
+ /// - the \a ClientContext associated with this call is updated with
+ /// possible initial and trailing metadata received from the server.
+ void Finish(grpc::Status* status, void* tag) override {
+ GPR_CODEGEN_ASSERT(started_);
+ finish_ops_.set_output_tag(tag);
+ if (!context_->initial_metadata_received_) {
+ finish_ops_.RecvInitialMetadata(context_);
+ }
+ finish_ops_.ClientRecvStatus(context_, status);
+ call_.PerformOps(&finish_ops_);
+ }
+
+ private:
+ friend class internal::ClientAsyncReaderFactory<R>;
+ template <class W>
+ ClientAsyncReader(grpc::internal::Call call, grpc::ClientContext* context,
+ const W& request, bool start, void* tag)
+ : context_(context), call_(call), started_(start) {
+ // TODO(ctiller): don't assert
+ GPR_CODEGEN_ASSERT(init_ops_.SendMessage(request).ok());
+ init_ops_.ClientSendClose();
+ if (start) {
+ StartCallInternal(tag);
+ } else {
+ GPR_CODEGEN_ASSERT(tag == nullptr);
+ }
+ }
+
+ void StartCallInternal(void* tag) {
+ init_ops_.SendInitialMetadata(&context_->send_initial_metadata_,
+ context_->initial_metadata_flags());
+ init_ops_.set_output_tag(tag);
+ call_.PerformOps(&init_ops_);
+ }
+
+ grpc::ClientContext* context_;
+ grpc::internal::Call call_;
+ bool started_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
+ grpc::internal::CallOpSendMessage,
+ grpc::internal::CallOpClientSendClose>
+ init_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata>
+ meta_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata,
+ grpc::internal::CallOpRecvMessage<R>>
+ read_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata,
+ grpc::internal::CallOpClientRecvStatus>
+ finish_ops_;
+};
+
+/// Common interface for client side asynchronous writing.
+template <class W>
+class ClientAsyncWriterInterface
+ : public internal::ClientAsyncStreamingInterface,
+ public internal::AsyncWriterInterface<W> {
+ public:
+ /// Signal the client is done with the writes (half-close the client stream).
+ /// Thread-safe with respect to \a AsyncReaderInterface::Read
+ ///
+ /// \param[in] tag The tag identifying the operation.
+ virtual void WritesDone(void* tag) = 0;
+};
+
+namespace internal {
+template <class W>
+class ClientAsyncWriterFactory {
+ public:
+ /// Create a stream object.
+ /// Start the RPC if \a start is set
+ /// \a tag will be notified on \a cq when the call has been started (i.e.
+ /// intitial metadata sent) and \a request has been written out.
+ /// If \a start is not set, \a tag must be nullptr and the actual call
+ /// must be initiated by StartCall
+ /// Note that \a context will be used to fill in custom initial metadata
+ /// used to send to the server when starting the call.
+ /// \a response will be filled in with the single expected response
+ /// message from the server upon a successful call to the \a Finish
+ /// method of this instance.
+ template <class R>
+ static ClientAsyncWriter<W>* Create(grpc::ChannelInterface* channel,
+ grpc::CompletionQueue* cq,
+ const grpc::internal::RpcMethod& method,
+ grpc::ClientContext* context, R* response,
+ bool start, void* tag) {
+ grpc::internal::Call call = channel->CreateCall(method, context, cq);
+ return new (grpc::g_core_codegen_interface->grpc_call_arena_alloc(
+ call.call(), sizeof(ClientAsyncWriter<W>)))
+ ClientAsyncWriter<W>(call, context, response, start, tag);
+ }
+};
+} // namespace internal
+
+/// Async API on the client side for doing client-streaming RPCs,
+/// where the outgoing message stream going to the server contains
+/// messages of type \a W.
+template <class W>
+class ClientAsyncWriter final : public ClientAsyncWriterInterface<W> {
+ public:
+ // always allocated against a call arena, no memory free required
+ static void operator delete(void* /*ptr*/, std::size_t size) {
+ GPR_CODEGEN_ASSERT(size == sizeof(ClientAsyncWriter));
+ }
+
+ // This operator should never be called as the memory should be freed as part
+ // of the arena destruction. It only exists to provide a matching operator
+ // delete to the operator new so that some compilers will not complain (see
+ // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this
+ // there are no tests catching the compiler warning.
+ static void operator delete(void*, void*) { GPR_CODEGEN_ASSERT(false); }
+
+ void StartCall(void* tag) override {
+ GPR_CODEGEN_ASSERT(!started_);
+ started_ = true;
+ StartCallInternal(tag);
+ }
+
+ /// See the \a ClientAsyncStreamingInterface.ReadInitialMetadata method for
+ /// semantics.
+ ///
+ /// Side effect:
+ /// - upon receiving initial metadata from the server, the \a ClientContext
+ /// associated with this call is updated, and the calling code can access
+ /// the received metadata through the \a ClientContext.
+ void ReadInitialMetadata(void* tag) override {
+ GPR_CODEGEN_ASSERT(started_);
+ GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_);
+
+ meta_ops_.set_output_tag(tag);
+ meta_ops_.RecvInitialMetadata(context_);
+ call_.PerformOps(&meta_ops_);
+ }
+
+ void Write(const W& msg, void* tag) override {
+ GPR_CODEGEN_ASSERT(started_);
+ write_ops_.set_output_tag(tag);
+ // TODO(ctiller): don't assert
+ GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok());
+ call_.PerformOps(&write_ops_);
+ }
+
+ void Write(const W& msg, grpc::WriteOptions options, void* tag) override {
+ GPR_CODEGEN_ASSERT(started_);
+ write_ops_.set_output_tag(tag);
+ if (options.is_last_message()) {
+ options.set_buffer_hint();
+ write_ops_.ClientSendClose();
+ }
+ // TODO(ctiller): don't assert
+ GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok());
+ call_.PerformOps(&write_ops_);
+ }
+
+ void WritesDone(void* tag) override {
+ GPR_CODEGEN_ASSERT(started_);
+ write_ops_.set_output_tag(tag);
+ write_ops_.ClientSendClose();
+ call_.PerformOps(&write_ops_);
+ }
+
+ /// See the \a ClientAsyncStreamingInterface.Finish method for semantics.
+ ///
+ /// Side effect:
+ /// - the \a ClientContext associated with this call is updated with
+ /// possible initial and trailing metadata received from the server.
+ /// - attempts to fill in the \a response parameter passed to this class's
+ /// constructor with the server's response message.
+ void Finish(grpc::Status* status, void* tag) override {
+ GPR_CODEGEN_ASSERT(started_);
+ finish_ops_.set_output_tag(tag);
+ if (!context_->initial_metadata_received_) {
+ finish_ops_.RecvInitialMetadata(context_);
+ }
+ finish_ops_.ClientRecvStatus(context_, status);
+ call_.PerformOps(&finish_ops_);
+ }
+
+ private:
+ friend class internal::ClientAsyncWriterFactory<W>;
+ template <class R>
+ ClientAsyncWriter(grpc::internal::Call call, grpc::ClientContext* context,
+ R* response, bool start, void* tag)
+ : context_(context), call_(call), started_(start) {
+ finish_ops_.RecvMessage(response);
+ finish_ops_.AllowNoMessage();
+ if (start) {
+ StartCallInternal(tag);
+ } else {
+ GPR_CODEGEN_ASSERT(tag == nullptr);
+ }
+ }
+
+ void StartCallInternal(void* tag) {
+ write_ops_.SendInitialMetadata(&context_->send_initial_metadata_,
+ context_->initial_metadata_flags());
+ // if corked bit is set in context, we just keep the initial metadata
+ // buffered up to coalesce with later message send. No op is performed.
+ if (!context_->initial_metadata_corked_) {
+ write_ops_.set_output_tag(tag);
+ call_.PerformOps(&write_ops_);
+ }
+ }
+
+ grpc::ClientContext* context_;
+ grpc::internal::Call call_;
+ bool started_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata>
+ meta_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
+ grpc::internal::CallOpSendMessage,
+ grpc::internal::CallOpClientSendClose>
+ write_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata,
+ grpc::internal::CallOpGenericRecvMessage,
+ grpc::internal::CallOpClientRecvStatus>
+ finish_ops_;
+};
+
+/// Async client-side interface for bi-directional streaming,
+/// where the client-to-server message stream has messages of type \a W,
+/// and the server-to-client message stream has messages of type \a R.
+template <class W, class R>
+class ClientAsyncReaderWriterInterface
+ : public internal::ClientAsyncStreamingInterface,
+ public internal::AsyncWriterInterface<W>,
+ public internal::AsyncReaderInterface<R> {
+ public:
+ /// Signal the client is done with the writes (half-close the client stream).
+ /// Thread-safe with respect to \a AsyncReaderInterface::Read
+ ///
+ /// \param[in] tag The tag identifying the operation.
+ virtual void WritesDone(void* tag) = 0;
+};
+
+namespace internal {
+template <class W, class R>
+class ClientAsyncReaderWriterFactory {
+ public:
+ /// Create a stream object.
+ /// Start the RPC request if \a start is set.
+ /// \a tag will be notified on \a cq when the call has been started (i.e.
+ /// intitial metadata sent). If \a start is not set, \a tag must be
+ /// nullptr and the actual call must be initiated by StartCall
+ /// Note that \a context will be used to fill in custom initial metadata
+ /// used to send to the server when starting the call.
+ static ClientAsyncReaderWriter<W, R>* Create(
+ grpc::ChannelInterface* channel, grpc::CompletionQueue* cq,
+ const grpc::internal::RpcMethod& method, grpc::ClientContext* context,
+ bool start, void* tag) {
+ grpc::internal::Call call = channel->CreateCall(method, context, cq);
+
+ return new (grpc::g_core_codegen_interface->grpc_call_arena_alloc(
+ call.call(), sizeof(ClientAsyncReaderWriter<W, R>)))
+ ClientAsyncReaderWriter<W, R>(call, context, start, tag);
+ }
+};
+} // namespace internal
+
+/// Async client-side interface for bi-directional streaming,
+/// where the outgoing message stream going to the server
+/// has messages of type \a W, and the incoming message stream coming
+/// from the server has messages of type \a R.
+template <class W, class R>
+class ClientAsyncReaderWriter final
+ : public ClientAsyncReaderWriterInterface<W, R> {
+ public:
+ // always allocated against a call arena, no memory free required
+ static void operator delete(void* /*ptr*/, std::size_t size) {
+ GPR_CODEGEN_ASSERT(size == sizeof(ClientAsyncReaderWriter));
+ }
+
+ // This operator should never be called as the memory should be freed as part
+ // of the arena destruction. It only exists to provide a matching operator
+ // delete to the operator new so that some compilers will not complain (see
+ // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this
+ // there are no tests catching the compiler warning.
+ static void operator delete(void*, void*) { GPR_CODEGEN_ASSERT(false); }
+
+ void StartCall(void* tag) override {
+ GPR_CODEGEN_ASSERT(!started_);
+ started_ = true;
+ StartCallInternal(tag);
+ }
+
+ /// See the \a ClientAsyncStreamingInterface.ReadInitialMetadata method
+ /// for semantics of this method.
+ ///
+ /// Side effect:
+ /// - upon receiving initial metadata from the server, the \a ClientContext
+ /// is updated with it, and then the receiving initial metadata can
+ /// be accessed through this \a ClientContext.
+ void ReadInitialMetadata(void* tag) override {
+ GPR_CODEGEN_ASSERT(started_);
+ GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_);
+
+ meta_ops_.set_output_tag(tag);
+ meta_ops_.RecvInitialMetadata(context_);
+ call_.PerformOps(&meta_ops_);
+ }
+
+ void Read(R* msg, void* tag) override {
+ GPR_CODEGEN_ASSERT(started_);
+ read_ops_.set_output_tag(tag);
+ if (!context_->initial_metadata_received_) {
+ read_ops_.RecvInitialMetadata(context_);
+ }
+ read_ops_.RecvMessage(msg);
+ call_.PerformOps(&read_ops_);
+ }
+
+ void Write(const W& msg, void* tag) override {
+ GPR_CODEGEN_ASSERT(started_);
+ write_ops_.set_output_tag(tag);
+ // TODO(ctiller): don't assert
+ GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok());
+ call_.PerformOps(&write_ops_);
+ }
+
+ void Write(const W& msg, grpc::WriteOptions options, void* tag) override {
+ GPR_CODEGEN_ASSERT(started_);
+ write_ops_.set_output_tag(tag);
+ if (options.is_last_message()) {
+ options.set_buffer_hint();
+ write_ops_.ClientSendClose();
+ }
+ // TODO(ctiller): don't assert
+ GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok());
+ call_.PerformOps(&write_ops_);
+ }
+
+ void WritesDone(void* tag) override {
+ GPR_CODEGEN_ASSERT(started_);
+ write_ops_.set_output_tag(tag);
+ write_ops_.ClientSendClose();
+ call_.PerformOps(&write_ops_);
+ }
+
+ /// See the \a ClientAsyncStreamingInterface.Finish method for semantics.
+ /// Side effect
+ /// - the \a ClientContext associated with this call is updated with
+ /// possible initial and trailing metadata sent from the server.
+ void Finish(grpc::Status* status, void* tag) override {
+ GPR_CODEGEN_ASSERT(started_);
+ finish_ops_.set_output_tag(tag);
+ if (!context_->initial_metadata_received_) {
+ finish_ops_.RecvInitialMetadata(context_);
+ }
+ finish_ops_.ClientRecvStatus(context_, status);
+ call_.PerformOps(&finish_ops_);
+ }
+
+ private:
+ friend class internal::ClientAsyncReaderWriterFactory<W, R>;
+ ClientAsyncReaderWriter(grpc::internal::Call call,
+ grpc::ClientContext* context, bool start, void* tag)
+ : context_(context), call_(call), started_(start) {
+ if (start) {
+ StartCallInternal(tag);
+ } else {
+ GPR_CODEGEN_ASSERT(tag == nullptr);
+ }
+ }
+
+ void StartCallInternal(void* tag) {
+ write_ops_.SendInitialMetadata(&context_->send_initial_metadata_,
+ context_->initial_metadata_flags());
+ // if corked bit is set in context, we just keep the initial metadata
+ // buffered up to coalesce with later message send. No op is performed.
+ if (!context_->initial_metadata_corked_) {
+ write_ops_.set_output_tag(tag);
+ call_.PerformOps(&write_ops_);
+ }
+ }
+
+ grpc::ClientContext* context_;
+ grpc::internal::Call call_;
+ bool started_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata>
+ meta_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata,
+ grpc::internal::CallOpRecvMessage<R>>
+ read_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
+ grpc::internal::CallOpSendMessage,
+ grpc::internal::CallOpClientSendClose>
+ write_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpRecvInitialMetadata,
+ grpc::internal::CallOpClientRecvStatus>
+ finish_ops_;
+};
+
+template <class W, class R>
+class ServerAsyncReaderInterface
+ : public grpc::internal::ServerAsyncStreamingInterface,
+ public internal::AsyncReaderInterface<R> {
+ public:
+ /// Indicate that the stream is to be finished with a certain status code
+ /// and also send out \a msg response to the client.
+ /// Request notification for when the server has sent the response and the
+ /// appropriate signals to the client to end the call.
+ /// Should not be used concurrently with other operations.
+ ///
+ /// It is appropriate to call this method when:
+ /// * all messages from the client have been received (either known
+ /// implictly, or explicitly because a previous
+ /// \a AsyncReaderInterface::Read operation with a non-ok result,
+ /// e.g., cq->Next(&read_tag, &ok) filled in 'ok' with 'false').
+ ///
+ /// This operation will end when the server has finished sending out initial
+ /// metadata (if not sent already), response message, and status, or if
+ /// some failure occurred when trying to do so.
+ ///
+ /// gRPC doesn't take ownership or a reference to \a msg or \a status, so it
+ /// is safe to deallocate once Finish returns.
+ ///
+ /// \param[in] tag Tag identifying this request.
+ /// \param[in] status To be sent to the client as the result of this call.
+ /// \param[in] msg To be sent to the client as the response for this call.
+ virtual void Finish(const W& msg, const grpc::Status& status, void* tag) = 0;
+
+ /// Indicate that the stream is to be finished with a certain
+ /// non-OK status code.
+ /// Request notification for when the server has sent the appropriate
+ /// signals to the client to end the call.
+ /// Should not be used concurrently with other operations.
+ ///
+ /// This call is meant to end the call with some error, and can be called at
+ /// any point that the server would like to "fail" the call (though note
+ /// this shouldn't be called concurrently with any other "sending" call, like
+ /// \a AsyncWriterInterface::Write).
+ ///
+ /// This operation will end when the server has finished sending out initial
+ /// metadata (if not sent already), and status, or if some failure occurred
+ /// when trying to do so.
+ ///
+ /// gRPC doesn't take ownership or a reference to \a status, so it is safe to
+ /// to deallocate once FinishWithError returns.
+ ///
+ /// \param[in] tag Tag identifying this request.
+ /// \param[in] status To be sent to the client as the result of this call.
+ /// - Note: \a status must have a non-OK code.
+ virtual void FinishWithError(const grpc::Status& status, void* tag) = 0;
+};
+
+/// Async server-side API for doing client-streaming RPCs,
+/// where the incoming message stream from the client has messages of type \a R,
+/// and the single response message sent from the server is type \a W.
+template <class W, class R>
+class ServerAsyncReader final : public ServerAsyncReaderInterface<W, R> {
+ public:
+ explicit ServerAsyncReader(grpc::ServerContext* ctx)
+ : call_(nullptr, nullptr, nullptr), ctx_(ctx) {}
+
+ /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics.
+ ///
+ /// Implicit input parameter:
+ /// - The initial metadata that will be sent to the client from this op will
+ /// be taken from the \a ServerContext associated with the call.
+ void SendInitialMetadata(void* tag) override {
+ GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_);
+
+ meta_ops_.set_output_tag(tag);
+ meta_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
+ ctx_->initial_metadata_flags());
+ if (ctx_->compression_level_set()) {
+ meta_ops_.set_compression_level(ctx_->compression_level());
+ }
+ ctx_->sent_initial_metadata_ = true;
+ call_.PerformOps(&meta_ops_);
+ }
+
+ void Read(R* msg, void* tag) override {
+ read_ops_.set_output_tag(tag);
+ read_ops_.RecvMessage(msg);
+ call_.PerformOps(&read_ops_);
+ }
+
+ /// See the \a ServerAsyncReaderInterface.Read method for semantics
+ ///
+ /// Side effect:
+ /// - also sends initial metadata if not alreay sent.
+ /// - uses the \a ServerContext associated with this call to send possible
+ /// initial and trailing metadata.
+ ///
+ /// Note: \a msg is not sent if \a status has a non-OK code.
+ ///
+ /// gRPC doesn't take ownership or a reference to \a msg and \a status, so it
+ /// is safe to deallocate once Finish returns.
+ void Finish(const W& msg, const grpc::Status& status, void* tag) override {
+ finish_ops_.set_output_tag(tag);
+ if (!ctx_->sent_initial_metadata_) {
+ finish_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
+ ctx_->initial_metadata_flags());
+ if (ctx_->compression_level_set()) {
+ finish_ops_.set_compression_level(ctx_->compression_level());
+ }
+ ctx_->sent_initial_metadata_ = true;
+ }
+ // The response is dropped if the status is not OK.
+ if (status.ok()) {
+ finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_,
+ finish_ops_.SendMessage(msg));
+ } else {
+ finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status);
+ }
+ call_.PerformOps(&finish_ops_);
+ }
+
+ /// See the \a ServerAsyncReaderInterface.Read method for semantics
+ ///
+ /// Side effect:
+ /// - also sends initial metadata if not alreay sent.
+ /// - uses the \a ServerContext associated with this call to send possible
+ /// initial and trailing metadata.
+ ///
+ /// gRPC doesn't take ownership or a reference to \a status, so it is safe to
+ /// to deallocate once FinishWithError returns.
+ void FinishWithError(const grpc::Status& status, void* tag) override {
+ GPR_CODEGEN_ASSERT(!status.ok());
+ finish_ops_.set_output_tag(tag);
+ if (!ctx_->sent_initial_metadata_) {
+ finish_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
+ ctx_->initial_metadata_flags());
+ if (ctx_->compression_level_set()) {
+ finish_ops_.set_compression_level(ctx_->compression_level());
+ }
+ ctx_->sent_initial_metadata_ = true;
+ }
+ finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status);
+ call_.PerformOps(&finish_ops_);
+ }
+
+ private:
+ void BindCall(grpc::internal::Call* call) override { call_ = *call; }
+
+ grpc::internal::Call call_;
+ grpc::ServerContext* ctx_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata>
+ meta_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpRecvMessage<R>> read_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
+ grpc::internal::CallOpSendMessage,
+ grpc::internal::CallOpServerSendStatus>
+ finish_ops_;
+};
+
+template <class W>
+class ServerAsyncWriterInterface
+ : public grpc::internal::ServerAsyncStreamingInterface,
+ public internal::AsyncWriterInterface<W> {
+ public:
+ /// Indicate that the stream is to be finished with a certain status code.
+ /// Request notification for when the server has sent the appropriate
+ /// signals to the client to end the call.
+ /// Should not be used concurrently with other operations.
+ ///
+ /// It is appropriate to call this method when either:
+ /// * all messages from the client have been received (either known
+ /// implictly, or explicitly because a previous \a
+ /// AsyncReaderInterface::Read operation with a non-ok
+ /// result (e.g., cq->Next(&read_tag, &ok) filled in 'ok' with 'false'.
+ /// * it is desired to end the call early with some non-OK status code.
+ ///
+ /// This operation will end when the server has finished sending out initial
+ /// metadata (if not sent already), response message, and status, or if
+ /// some failure occurred when trying to do so.
+ ///
+ /// gRPC doesn't take ownership or a reference to \a status, so it is safe to
+ /// to deallocate once Finish returns.
+ ///
+ /// \param[in] tag Tag identifying this request.
+ /// \param[in] status To be sent to the client as the result of this call.
+ virtual void Finish(const grpc::Status& status, void* tag) = 0;
+
+ /// Request the writing of \a msg and coalesce it with trailing metadata which
+ /// contains \a status, using WriteOptions options with
+ /// identifying tag \a tag.
+ ///
+ /// WriteAndFinish is equivalent of performing WriteLast and Finish
+ /// in a single step.
+ ///
+ /// gRPC doesn't take ownership or a reference to \a msg and \a status, so it
+ /// is safe to deallocate once WriteAndFinish returns.
+ ///
+ /// \param[in] msg The message to be written.
+ /// \param[in] options The WriteOptions to be used to write this message.
+ /// \param[in] status The Status that server returns to client.
+ /// \param[in] tag The tag identifying the operation.
+ virtual void WriteAndFinish(const W& msg, grpc::WriteOptions options,
+ const grpc::Status& status, void* tag) = 0;
+};
+
+/// Async server-side API for doing server streaming RPCs,
+/// where the outgoing message stream from the server has messages of type \a W.
+template <class W>
+class ServerAsyncWriter final : public ServerAsyncWriterInterface<W> {
+ public:
+ explicit ServerAsyncWriter(grpc::ServerContext* ctx)
+ : call_(nullptr, nullptr, nullptr), ctx_(ctx) {}
+
+ /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics.
+ ///
+ /// Implicit input parameter:
+ /// - The initial metadata that will be sent to the client from this op will
+ /// be taken from the \a ServerContext associated with the call.
+ ///
+ /// \param[in] tag Tag identifying this request.
+ void SendInitialMetadata(void* tag) override {
+ GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_);
+
+ meta_ops_.set_output_tag(tag);
+ meta_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
+ ctx_->initial_metadata_flags());
+ if (ctx_->compression_level_set()) {
+ meta_ops_.set_compression_level(ctx_->compression_level());
+ }
+ ctx_->sent_initial_metadata_ = true;
+ call_.PerformOps(&meta_ops_);
+ }
+
+ void Write(const W& msg, void* tag) override {
+ write_ops_.set_output_tag(tag);
+ EnsureInitialMetadataSent(&write_ops_);
+ // TODO(ctiller): don't assert
+ GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok());
+ call_.PerformOps(&write_ops_);
+ }
+
+ void Write(const W& msg, grpc::WriteOptions options, void* tag) override {
+ write_ops_.set_output_tag(tag);
+ if (options.is_last_message()) {
+ options.set_buffer_hint();
+ }
+
+ EnsureInitialMetadataSent(&write_ops_);
+ // TODO(ctiller): don't assert
+ GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok());
+ call_.PerformOps(&write_ops_);
+ }
+
+ /// See the \a ServerAsyncWriterInterface.WriteAndFinish method for semantics.
+ ///
+ /// Implicit input parameter:
+ /// - the \a ServerContext associated with this call is used
+ /// for sending trailing (and initial) metadata to the client.
+ ///
+ /// Note: \a status must have an OK code.
+ ///
+ /// gRPC doesn't take ownership or a reference to \a msg and \a status, so it
+ /// is safe to deallocate once WriteAndFinish returns.
+ void WriteAndFinish(const W& msg, grpc::WriteOptions options,
+ const grpc::Status& status, void* tag) override {
+ write_ops_.set_output_tag(tag);
+ EnsureInitialMetadataSent(&write_ops_);
+ options.set_buffer_hint();
+ GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok());
+ write_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status);
+ call_.PerformOps(&write_ops_);
+ }
+
+ /// See the \a ServerAsyncWriterInterface.Finish method for semantics.
+ ///
+ /// Implicit input parameter:
+ /// - the \a ServerContext associated with this call is used for sending
+ /// trailing (and initial if not already sent) metadata to the client.
+ ///
+ /// Note: there are no restrictions are the code of
+ /// \a status,it may be non-OK
+ ///
+ /// gRPC doesn't take ownership or a reference to \a status, so it is safe to
+ /// to deallocate once Finish returns.
+ void Finish(const grpc::Status& status, void* tag) override {
+ finish_ops_.set_output_tag(tag);
+ EnsureInitialMetadataSent(&finish_ops_);
+ finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status);
+ call_.PerformOps(&finish_ops_);
+ }
+
+ private:
+ void BindCall(grpc::internal::Call* call) override { call_ = *call; }
+
+ template <class T>
+ void EnsureInitialMetadataSent(T* ops) {
+ if (!ctx_->sent_initial_metadata_) {
+ ops->SendInitialMetadata(&ctx_->initial_metadata_,
+ ctx_->initial_metadata_flags());
+ if (ctx_->compression_level_set()) {
+ ops->set_compression_level(ctx_->compression_level());
+ }
+ ctx_->sent_initial_metadata_ = true;
+ }
+ }
+
+ grpc::internal::Call call_;
+ grpc::ServerContext* ctx_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata>
+ meta_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
+ grpc::internal::CallOpSendMessage,
+ grpc::internal::CallOpServerSendStatus>
+ write_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
+ grpc::internal::CallOpServerSendStatus>
+ finish_ops_;
+};
+
+/// Server-side interface for asynchronous bi-directional streaming.
+template <class W, class R>
+class ServerAsyncReaderWriterInterface
+ : public grpc::internal::ServerAsyncStreamingInterface,
+ public internal::AsyncWriterInterface<W>,
+ public internal::AsyncReaderInterface<R> {
+ public:
+ /// Indicate that the stream is to be finished with a certain status code.
+ /// Request notification for when the server has sent the appropriate
+ /// signals to the client to end the call.
+ /// Should not be used concurrently with other operations.
+ ///
+ /// It is appropriate to call this method when either:
+ /// * all messages from the client have been received (either known
+ /// implictly, or explicitly because a previous \a
+ /// AsyncReaderInterface::Read operation
+ /// with a non-ok result (e.g., cq->Next(&read_tag, &ok) filled in 'ok'
+ /// with 'false'.
+ /// * it is desired to end the call early with some non-OK status code.
+ ///
+ /// This operation will end when the server has finished sending out initial
+ /// metadata (if not sent already), response message, and status, or if some
+ /// failure occurred when trying to do so.
+ ///
+ /// gRPC doesn't take ownership or a reference to \a status, so it is safe to
+ /// to deallocate once Finish returns.
+ ///
+ /// \param[in] tag Tag identifying this request.
+ /// \param[in] status To be sent to the client as the result of this call.
+ virtual void Finish(const grpc::Status& status, void* tag) = 0;
+
+ /// Request the writing of \a msg and coalesce it with trailing metadata which
+ /// contains \a status, using WriteOptions options with
+ /// identifying tag \a tag.
+ ///
+ /// WriteAndFinish is equivalent of performing WriteLast and Finish in a
+ /// single step.
+ ///
+ /// gRPC doesn't take ownership or a reference to \a msg and \a status, so it
+ /// is safe to deallocate once WriteAndFinish returns.
+ ///
+ /// \param[in] msg The message to be written.
+ /// \param[in] options The WriteOptions to be used to write this message.
+ /// \param[in] status The Status that server returns to client.
+ /// \param[in] tag The tag identifying the operation.
+ virtual void WriteAndFinish(const W& msg, grpc::WriteOptions options,
+ const grpc::Status& status, void* tag) = 0;
+};
+
+/// Async server-side API for doing bidirectional streaming RPCs,
+/// where the incoming message stream coming from the client has messages of
+/// type \a R, and the outgoing message stream coming from the server has
+/// messages of type \a W.
+template <class W, class R>
+class ServerAsyncReaderWriter final
+ : public ServerAsyncReaderWriterInterface<W, R> {
+ public:
+ explicit ServerAsyncReaderWriter(grpc::ServerContext* ctx)
+ : call_(nullptr, nullptr, nullptr), ctx_(ctx) {}
+
+ /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics.
+ ///
+ /// Implicit input parameter:
+ /// - The initial metadata that will be sent to the client from this op will
+ /// be taken from the \a ServerContext associated with the call.
+ ///
+ /// \param[in] tag Tag identifying this request.
+ void SendInitialMetadata(void* tag) override {
+ GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_);
+
+ meta_ops_.set_output_tag(tag);
+ meta_ops_.SendInitialMetadata(&ctx_->initial_metadata_,
+ ctx_->initial_metadata_flags());
+ if (ctx_->compression_level_set()) {
+ meta_ops_.set_compression_level(ctx_->compression_level());
+ }
+ ctx_->sent_initial_metadata_ = true;
+ call_.PerformOps(&meta_ops_);
+ }
+
+ void Read(R* msg, void* tag) override {
+ read_ops_.set_output_tag(tag);
+ read_ops_.RecvMessage(msg);
+ call_.PerformOps(&read_ops_);
+ }
+
+ void Write(const W& msg, void* tag) override {
+ write_ops_.set_output_tag(tag);
+ EnsureInitialMetadataSent(&write_ops_);
+ // TODO(ctiller): don't assert
+ GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg).ok());
+ call_.PerformOps(&write_ops_);
+ }
+
+ void Write(const W& msg, grpc::WriteOptions options, void* tag) override {
+ write_ops_.set_output_tag(tag);
+ if (options.is_last_message()) {
+ options.set_buffer_hint();
+ }
+ EnsureInitialMetadataSent(&write_ops_);
+ GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok());
+ call_.PerformOps(&write_ops_);
+ }
+
+ /// See the \a ServerAsyncReaderWriterInterface.WriteAndFinish
+ /// method for semantics.
+ ///
+ /// Implicit input parameter:
+ /// - the \a ServerContext associated with this call is used
+ /// for sending trailing (and initial) metadata to the client.
+ ///
+ /// Note: \a status must have an OK code.
+ //
+ /// gRPC doesn't take ownership or a reference to \a msg and \a status, so it
+ /// is safe to deallocate once WriteAndFinish returns.
+ void WriteAndFinish(const W& msg, grpc::WriteOptions options,
+ const grpc::Status& status, void* tag) override {
+ write_ops_.set_output_tag(tag);
+ EnsureInitialMetadataSent(&write_ops_);
+ options.set_buffer_hint();
+ GPR_CODEGEN_ASSERT(write_ops_.SendMessage(msg, options).ok());
+ write_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status);
+ call_.PerformOps(&write_ops_);
+ }
+
+ /// See the \a ServerAsyncReaderWriterInterface.Finish method for semantics.
+ ///
+ /// Implicit input parameter:
+ /// - the \a ServerContext associated with this call is used for sending
+ /// trailing (and initial if not already sent) metadata to the client.
+ ///
+ /// Note: there are no restrictions are the code of \a status,
+ /// it may be non-OK
+ //
+ /// gRPC doesn't take ownership or a reference to \a status, so it is safe to
+ /// to deallocate once Finish returns.
+ void Finish(const grpc::Status& status, void* tag) override {
+ finish_ops_.set_output_tag(tag);
+ EnsureInitialMetadataSent(&finish_ops_);
+
+ finish_ops_.ServerSendStatus(&ctx_->trailing_metadata_, status);
+ call_.PerformOps(&finish_ops_);
+ }
+
+ private:
+ friend class grpc::Server;
+
+ void BindCall(grpc::internal::Call* call) override { call_ = *call; }
+
+ template <class T>
+ void EnsureInitialMetadataSent(T* ops) {
+ if (!ctx_->sent_initial_metadata_) {
+ ops->SendInitialMetadata(&ctx_->initial_metadata_,
+ ctx_->initial_metadata_flags());
+ if (ctx_->compression_level_set()) {
+ ops->set_compression_level(ctx_->compression_level());
+ }
+ ctx_->sent_initial_metadata_ = true;
+ }
+ }
+
+ grpc::internal::Call call_;
+ grpc::ServerContext* ctx_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata>
+ meta_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpRecvMessage<R>> read_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
+ grpc::internal::CallOpSendMessage,
+ grpc::internal::CallOpServerSendStatus>
+ write_ops_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
+ grpc::internal::CallOpServerSendStatus>
+ finish_ops_;
+};
+
+} // namespace grpc
#endif // GRPCPP_SUPPORT_ASYNC_STREAM_H
diff --git a/contrib/libs/grpc/include/grpcpp/support/async_unary_call.h b/contrib/libs/grpc/include/grpcpp/support/async_unary_call.h
index 02071e48c5..a9886031f4 100644
--- a/contrib/libs/grpc/include/grpcpp/support/async_unary_call.h
+++ b/contrib/libs/grpc/include/grpcpp/support/async_unary_call.h
@@ -19,6 +19,402 @@
#ifndef GRPCPP_SUPPORT_ASYNC_UNARY_CALL_H
#define GRPCPP_SUPPORT_ASYNC_UNARY_CALL_H
-#include <grpcpp/impl/codegen/async_unary_call.h> // IWYU pragma: export
+#include <grpc/grpc.h>
+#include <grpcpp/client_context.h>
+#include <grpcpp/impl/call.h>
+#include <grpcpp/impl/call_op_set_interface.h>
+#include <grpcpp/impl/codegen/call_op_set.h>
+#include <grpcpp/impl/codegen/channel_interface.h>
+#include <grpcpp/impl/codegen/core_codegen_interface.h>
+#include <grpcpp/impl/service_type.h>
+#include <grpcpp/server_context.h>
+#include <grpcpp/support/status.h>
+
+namespace grpc {
+
+// Forward declaration for use in Helper class
+template <class R>
+class ClientAsyncResponseReader;
+
+/// An interface relevant for async client side unary RPCs (which send
+/// one request message to a server and receive one response message).
+template <class R>
+class ClientAsyncResponseReaderInterface {
+ public:
+ virtual ~ClientAsyncResponseReaderInterface() {}
+
+ /// Start the call that was set up by the constructor, but only if the
+ /// constructor was invoked through the "Prepare" API which doesn't actually
+ /// start the call
+ virtual void StartCall() = 0;
+
+ /// Request notification of the reading of initial metadata. Completion
+ /// will be notified by \a tag on the associated completion queue.
+ /// This call is optional, but if it is used, it cannot be used concurrently
+ /// with or after the \a Finish method.
+ ///
+ /// \param[in] tag Tag identifying this request.
+ virtual void ReadInitialMetadata(void* tag) = 0;
+
+ /// Request to receive the server's response \a msg and final \a status for
+ /// the call, and to notify \a tag on this call's completion queue when
+ /// finished.
+ ///
+ /// This function will return when either:
+ /// - when the server's response message and status have been received.
+ /// - when the server has returned a non-OK status (no message expected in
+ /// this case).
+ /// - when the call failed for some reason and the library generated a
+ /// non-OK status.
+ ///
+ /// \param[in] tag Tag identifying this request.
+ /// \param[out] status To be updated with the operation status.
+ /// \param[out] msg To be filled in with the server's response message.
+ virtual void Finish(R* msg, grpc::Status* status, void* tag) = 0;
+};
+
+namespace internal {
+
+class ClientAsyncResponseReaderHelper {
+ public:
+ /// Start a call and write the request out if \a start is set.
+ /// \a tag will be notified on \a cq when the call has been started (i.e.
+ /// intitial metadata sent) and \a request has been written out.
+ /// If \a start is not set, the actual call must be initiated by StartCall
+ /// Note that \a context will be used to fill in custom initial metadata
+ /// used to send to the server when starting the call.
+ ///
+ /// Optionally pass in a base class for request and response types so that the
+ /// internal functions and structs can be templated based on that, allowing
+ /// reuse across RPCs (e.g., MessageLite for protobuf). Since constructors
+ /// can't have an explicit template parameter, the last argument is an
+ /// extraneous parameter just to provide the needed type information.
+ template <class R, class W, class BaseR = R, class BaseW = W>
+ static ClientAsyncResponseReader<R>* Create(
+ grpc::ChannelInterface* channel, grpc::CompletionQueue* cq,
+ const grpc::internal::RpcMethod& method, grpc::ClientContext* context,
+ const W& request) /* __attribute__((noinline)) */ {
+ grpc::internal::Call call = channel->CreateCall(method, context, cq);
+ ClientAsyncResponseReader<R>* result =
+ new (grpc::g_core_codegen_interface->grpc_call_arena_alloc(
+ call.call(), sizeof(ClientAsyncResponseReader<R>)))
+ ClientAsyncResponseReader<R>(call, context);
+ SetupRequest<BaseR, BaseW>(
+ call.call(), &result->single_buf_, &result->read_initial_metadata_,
+ &result->finish_, static_cast<const BaseW&>(request));
+
+ return result;
+ }
+
+ // Various helper functions to reduce templating use
+
+ template <class R, class W>
+ static void SetupRequest(
+ grpc_call* call,
+ grpc::internal::CallOpSendInitialMetadata** single_buf_ptr,
+ std::function<void(ClientContext*, internal::Call*,
+ internal::CallOpSendInitialMetadata*, void*)>*
+ read_initial_metadata,
+ std::function<
+ void(ClientContext*, internal::Call*, bool initial_metadata_read,
+ internal::CallOpSendInitialMetadata*,
+ internal::CallOpSetInterface**, void*, Status*, void*)>* finish,
+ const W& request) {
+ using SingleBufType =
+ grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
+ grpc::internal::CallOpSendMessage,
+ grpc::internal::CallOpClientSendClose,
+ grpc::internal::CallOpRecvInitialMetadata,
+ grpc::internal::CallOpRecvMessage<R>,
+ grpc::internal::CallOpClientRecvStatus>;
+ SingleBufType* single_buf =
+ new (grpc::g_core_codegen_interface->grpc_call_arena_alloc(
+ call, sizeof(SingleBufType))) SingleBufType;
+ *single_buf_ptr = single_buf;
+ // TODO(ctiller): don't assert
+ GPR_CODEGEN_ASSERT(single_buf->SendMessage(request).ok());
+ single_buf->ClientSendClose();
+
+ // The purpose of the following functions is to type-erase the actual
+ // templated type of the CallOpSet being used by hiding that type inside the
+ // function definition rather than specifying it as an argument of the
+ // function or a member of the class. The type-erased CallOpSet will get
+ // static_cast'ed back to the real type so that it can be used properly.
+ *read_initial_metadata =
+ [](ClientContext* context, internal::Call* call,
+ internal::CallOpSendInitialMetadata* single_buf_view, void* tag) {
+ auto* single_buf = static_cast<SingleBufType*>(single_buf_view);
+ single_buf->set_output_tag(tag);
+ single_buf->RecvInitialMetadata(context);
+ call->PerformOps(single_buf);
+ };
+
+ // Note that this function goes one step further than the previous one
+ // because it type-erases the message being written down to a void*. This
+ // will be static-cast'ed back to the class specified here by hiding that
+ // class information inside the function definition. Note that this feature
+ // expects the class being specified here for R to be a base-class of the
+ // "real" R without any multiple-inheritance (as applies in protbuf wrt
+ // MessageLite)
+ *finish = [](ClientContext* context, internal::Call* call,
+ bool initial_metadata_read,
+ internal::CallOpSendInitialMetadata* single_buf_view,
+ internal::CallOpSetInterface** finish_buf_ptr, void* msg,
+ Status* status, void* tag) {
+ if (initial_metadata_read) {
+ using FinishBufType =
+ grpc::internal::CallOpSet<grpc::internal::CallOpRecvMessage<R>,
+ grpc::internal::CallOpClientRecvStatus>;
+ FinishBufType* finish_buf =
+ new (grpc::g_core_codegen_interface->grpc_call_arena_alloc(
+ call->call(), sizeof(FinishBufType))) FinishBufType;
+ *finish_buf_ptr = finish_buf;
+ finish_buf->set_output_tag(tag);
+ finish_buf->RecvMessage(static_cast<R*>(msg));
+ finish_buf->AllowNoMessage();
+ finish_buf->ClientRecvStatus(context, status);
+ call->PerformOps(finish_buf);
+ } else {
+ auto* single_buf = static_cast<SingleBufType*>(single_buf_view);
+ single_buf->set_output_tag(tag);
+ single_buf->RecvInitialMetadata(context);
+ single_buf->RecvMessage(static_cast<R*>(msg));
+ single_buf->AllowNoMessage();
+ single_buf->ClientRecvStatus(context, status);
+ call->PerformOps(single_buf);
+ }
+ };
+ }
+
+ static void StartCall(grpc::ClientContext* context,
+ grpc::internal::CallOpSendInitialMetadata* single_buf) {
+ single_buf->SendInitialMetadata(&context->send_initial_metadata_,
+ context->initial_metadata_flags());
+ }
+};
+
+// TODO(vjpai): This templated factory is deprecated and will be replaced by
+//. the non-templated helper as soon as possible.
+template <class R>
+class ClientAsyncResponseReaderFactory {
+ public:
+ template <class W>
+ static ClientAsyncResponseReader<R>* Create(
+ grpc::ChannelInterface* channel, grpc::CompletionQueue* cq,
+ const grpc::internal::RpcMethod& method, grpc::ClientContext* context,
+ const W& request, bool start) {
+ auto* result = ClientAsyncResponseReaderHelper::Create<R>(
+ channel, cq, method, context, request);
+ if (start) {
+ result->StartCall();
+ }
+ return result;
+ }
+};
+
+} // namespace internal
+
+/// Async API for client-side unary RPCs, where the message response
+/// received from the server is of type \a R.
+template <class R>
+class ClientAsyncResponseReader final
+ : public ClientAsyncResponseReaderInterface<R> {
+ public:
+ // always allocated against a call arena, no memory free required
+ static void operator delete(void* /*ptr*/, std::size_t size) {
+ GPR_CODEGEN_ASSERT(size == sizeof(ClientAsyncResponseReader));
+ }
+
+ // This operator should never be called as the memory should be freed as part
+ // of the arena destruction. It only exists to provide a matching operator
+ // delete to the operator new so that some compilers will not complain (see
+ // https://github.com/grpc/grpc/issues/11301) Note at the time of adding this
+ // there are no tests catching the compiler warning.
+ static void operator delete(void*, void*) { GPR_CODEGEN_ASSERT(false); }
+
+ void StartCall() override {
+ GPR_CODEGEN_DEBUG_ASSERT(!started_);
+ started_ = true;
+ internal::ClientAsyncResponseReaderHelper::StartCall(context_, single_buf_);
+ }
+
+ /// See \a ClientAsyncResponseReaderInterface::ReadInitialMetadata for
+ /// semantics.
+ ///
+ /// Side effect:
+ /// - the \a ClientContext associated with this call is updated with
+ /// possible initial and trailing metadata sent from the server.
+ void ReadInitialMetadata(void* tag) override {
+ GPR_CODEGEN_DEBUG_ASSERT(started_);
+ GPR_CODEGEN_DEBUG_ASSERT(!context_->initial_metadata_received_);
+ read_initial_metadata_(context_, &call_, single_buf_, tag);
+ initial_metadata_read_ = true;
+ }
+
+ /// See \a ClientAsyncResponseReaderInterface::Finish for semantics.
+ ///
+ /// Side effect:
+ /// - the \a ClientContext associated with this call is updated with
+ /// possible initial and trailing metadata sent from the server.
+ void Finish(R* msg, grpc::Status* status, void* tag) override {
+ GPR_CODEGEN_DEBUG_ASSERT(started_);
+ finish_(context_, &call_, initial_metadata_read_, single_buf_, &finish_buf_,
+ static_cast<void*>(msg), status, tag);
+ }
+
+ private:
+ friend class internal::ClientAsyncResponseReaderHelper;
+ grpc::ClientContext* const context_;
+ grpc::internal::Call call_;
+ bool started_ = false;
+ bool initial_metadata_read_ = false;
+
+ ClientAsyncResponseReader(grpc::internal::Call call,
+ grpc::ClientContext* context)
+ : context_(context), call_(call) {}
+
+ // disable operator new
+ static void* operator new(std::size_t size);
+ static void* operator new(std::size_t /*size*/, void* p) { return p; }
+
+ internal::CallOpSendInitialMetadata* single_buf_;
+ internal::CallOpSetInterface* finish_buf_ = nullptr;
+ std::function<void(ClientContext*, internal::Call*,
+ internal::CallOpSendInitialMetadata*, void*)>
+ read_initial_metadata_;
+ std::function<void(ClientContext*, internal::Call*,
+ bool initial_metadata_read,
+ internal::CallOpSendInitialMetadata*,
+ internal::CallOpSetInterface**, void*, Status*, void*)>
+ finish_;
+};
+
+/// Async server-side API for handling unary calls, where the single
+/// response message sent to the client is of type \a W.
+template <class W>
+class ServerAsyncResponseWriter final
+ : public grpc::internal::ServerAsyncStreamingInterface {
+ public:
+ explicit ServerAsyncResponseWriter(grpc::ServerContext* ctx)
+ : call_(nullptr, nullptr, nullptr), ctx_(ctx) {}
+
+ /// See \a ServerAsyncStreamingInterface::SendInitialMetadata for semantics.
+ ///
+ /// Side effect:
+ /// The initial metadata that will be sent to the client from this op will
+ /// be taken from the \a ServerContext associated with the call.
+ ///
+ /// \param[in] tag Tag identifying this request.
+ void SendInitialMetadata(void* tag) override {
+ GPR_CODEGEN_ASSERT(!ctx_->sent_initial_metadata_);
+
+ meta_buf_.set_output_tag(tag);
+ meta_buf_.SendInitialMetadata(&ctx_->initial_metadata_,
+ ctx_->initial_metadata_flags());
+ if (ctx_->compression_level_set()) {
+ meta_buf_.set_compression_level(ctx_->compression_level());
+ }
+ ctx_->sent_initial_metadata_ = true;
+ call_.PerformOps(&meta_buf_);
+ }
+
+ /// Indicate that the stream is to be finished and request notification
+ /// when the server has sent the appropriate signals to the client to
+ /// end the call. Should not be used concurrently with other operations.
+ ///
+ /// \param[in] tag Tag identifying this request.
+ /// \param[in] status To be sent to the client as the result of the call.
+ /// \param[in] msg Message to be sent to the client.
+ ///
+ /// Side effect:
+ /// - also sends initial metadata if not already sent (using the
+ /// \a ServerContext associated with this call).
+ ///
+ /// Note: if \a status has a non-OK code, then \a msg will not be sent,
+ /// and the client will receive only the status with possible trailing
+ /// metadata.
+ ///
+ /// gRPC doesn't take ownership or a reference to msg and status, so it is
+ /// safe to deallocate them once the Finish operation is complete (i.e. a
+ /// result arrives in the completion queue).
+ void Finish(const W& msg, const grpc::Status& status, void* tag) {
+ finish_buf_.set_output_tag(tag);
+ finish_buf_.set_core_cq_tag(&finish_buf_);
+ if (!ctx_->sent_initial_metadata_) {
+ finish_buf_.SendInitialMetadata(&ctx_->initial_metadata_,
+ ctx_->initial_metadata_flags());
+ if (ctx_->compression_level_set()) {
+ finish_buf_.set_compression_level(ctx_->compression_level());
+ }
+ ctx_->sent_initial_metadata_ = true;
+ }
+ // The response is dropped if the status is not OK.
+ if (status.ok()) {
+ finish_buf_.ServerSendStatus(&ctx_->trailing_metadata_,
+ finish_buf_.SendMessage(msg));
+ } else {
+ finish_buf_.ServerSendStatus(&ctx_->trailing_metadata_, status);
+ }
+ call_.PerformOps(&finish_buf_);
+ }
+
+ /// Indicate that the stream is to be finished with a non-OK status,
+ /// and request notification for when the server has finished sending the
+ /// appropriate signals to the client to end the call.
+ /// Should not be used concurrently with other operations.
+ ///
+ /// \param[in] tag Tag identifying this request.
+ /// \param[in] status To be sent to the client as the result of the call.
+ /// - Note: \a status must have a non-OK code.
+ ///
+ /// Side effect:
+ /// - also sends initial metadata if not already sent (using the
+ /// \a ServerContext associated with this call).
+ ///
+ /// gRPC doesn't take ownership or a reference to status, so it is safe to
+ /// deallocate them once the Finish operation is complete (i.e. a result
+ /// arrives in the completion queue).
+ void FinishWithError(const grpc::Status& status, void* tag) {
+ GPR_CODEGEN_ASSERT(!status.ok());
+ finish_buf_.set_output_tag(tag);
+ if (!ctx_->sent_initial_metadata_) {
+ finish_buf_.SendInitialMetadata(&ctx_->initial_metadata_,
+ ctx_->initial_metadata_flags());
+ if (ctx_->compression_level_set()) {
+ finish_buf_.set_compression_level(ctx_->compression_level());
+ }
+ ctx_->sent_initial_metadata_ = true;
+ }
+ finish_buf_.ServerSendStatus(&ctx_->trailing_metadata_, status);
+ call_.PerformOps(&finish_buf_);
+ }
+
+ private:
+ void BindCall(grpc::internal::Call* call) override { call_ = *call; }
+
+ grpc::internal::Call call_;
+ grpc::ServerContext* ctx_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata>
+ meta_buf_;
+ grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,
+ grpc::internal::CallOpSendMessage,
+ grpc::internal::CallOpServerSendStatus>
+ finish_buf_;
+};
+
+} // namespace grpc
+
+namespace std {
+template <class R>
+class default_delete<grpc::ClientAsyncResponseReader<R>> {
+ public:
+ void operator()(void* /*p*/) {}
+};
+template <class R>
+class default_delete<grpc::ClientAsyncResponseReaderInterface<R>> {
+ public:
+ void operator()(void* /*p*/) {}
+};
+} // namespace std
#endif // GRPCPP_SUPPORT_ASYNC_UNARY_CALL_H
diff --git a/contrib/libs/grpc/include/grpcpp/support/byte_buffer.h b/contrib/libs/grpc/include/grpcpp/support/byte_buffer.h
index 6f566e76da..7ca7c4b258 100644
--- a/contrib/libs/grpc/include/grpcpp/support/byte_buffer.h
+++ b/contrib/libs/grpc/include/grpcpp/support/byte_buffer.h
@@ -19,13 +19,221 @@
#ifndef GRPCPP_SUPPORT_BYTE_BUFFER_H
#define GRPCPP_SUPPORT_BYTE_BUFFER_H
+#include <vector>
+
#include <grpc/byte_buffer.h>
#include <grpc/grpc.h>
#include <grpc/support/log.h>
-#include <grpcpp/impl/codegen/byte_buffer.h> // IWYU pragma: export
+#include <grpcpp/impl/codegen/core_codegen_interface.h>
#include <grpcpp/impl/serialization_traits.h>
#include <grpcpp/support/config.h>
#include <grpcpp/support/slice.h>
#include <grpcpp/support/status.h>
+namespace grpc {
+
+class ServerInterface;
+class ByteBuffer;
+class ServerInterface;
+
+namespace internal {
+template <class RequestType, class ResponseType>
+class CallbackUnaryHandler;
+template <class RequestType, class ResponseType>
+class CallbackServerStreamingHandler;
+template <class RequestType>
+void* UnaryDeserializeHelper(grpc_byte_buffer*, grpc::Status*, RequestType*);
+template <class ServiceType, class RequestType, class ResponseType>
+class ServerStreamingHandler;
+template <grpc::StatusCode code>
+class ErrorMethodHandler;
+class CallOpSendMessage;
+template <class R>
+class CallOpRecvMessage;
+class CallOpGenericRecvMessage;
+class ExternalConnectionAcceptorImpl;
+template <class R>
+class DeserializeFuncType;
+class GrpcByteBufferPeer;
+
+} // namespace internal
+/// A sequence of bytes.
+class ByteBuffer final {
+ public:
+ /// Constuct an empty buffer.
+ ByteBuffer() : buffer_(nullptr) {}
+
+ /// Construct buffer from \a slices, of which there are \a nslices.
+ ByteBuffer(const Slice* slices, size_t nslices) {
+ // The following assertions check that the representation of a grpc::Slice
+ // is identical to that of a grpc_slice: it has a grpc_slice field, and
+ // nothing else.
+ static_assert(std::is_same<decltype(slices[0].slice_), grpc_slice>::value,
+ "Slice must have same representation as grpc_slice");
+ static_assert(sizeof(Slice) == sizeof(grpc_slice),
+ "Slice must have same representation as grpc_slice");
+ // The following assertions check that the representation of a ByteBuffer is
+ // identical to grpc_byte_buffer*: it has a grpc_byte_buffer* field,
+ // and nothing else.
+ static_assert(std::is_same<decltype(buffer_), grpc_byte_buffer*>::value,
+ "ByteBuffer must have same representation as "
+ "grpc_byte_buffer*");
+ static_assert(sizeof(ByteBuffer) == sizeof(grpc_byte_buffer*),
+ "ByteBuffer must have same representation as "
+ "grpc_byte_buffer*");
+ // The const_cast is legal if grpc_raw_byte_buffer_create() does no more
+ // than its advertised side effect of increasing the reference count of the
+ // slices it processes, and such an increase does not affect the semantics
+ // seen by the caller of this constructor.
+ buffer_ = g_core_codegen_interface->grpc_raw_byte_buffer_create(
+ reinterpret_cast<grpc_slice*>(const_cast<Slice*>(slices)), nslices);
+ }
+
+ /// Constuct a byte buffer by referencing elements of existing buffer
+ /// \a buf. Wrapper of core function grpc_byte_buffer_copy . This is not
+ /// a deep copy; it is just a referencing. As a result, its performance is
+ /// size-independent.
+ ByteBuffer(const ByteBuffer& buf) : buffer_(nullptr) { operator=(buf); }
+
+ ~ByteBuffer() {
+ if (buffer_) {
+ g_core_codegen_interface->grpc_byte_buffer_destroy(buffer_);
+ }
+ }
+
+ /// Wrapper of core function grpc_byte_buffer_copy . This is not
+ /// a deep copy; it is just a referencing. As a result, its performance is
+ /// size-independent.
+ ByteBuffer& operator=(const ByteBuffer& buf) {
+ if (this != &buf) {
+ Clear(); // first remove existing data
+ }
+ if (buf.buffer_) {
+ // then copy
+ buffer_ = g_core_codegen_interface->grpc_byte_buffer_copy(buf.buffer_);
+ }
+ return *this;
+ }
+
+ // If this ByteBuffer's representation is a single flat slice, returns a
+ // slice referencing that array.
+ Status TrySingleSlice(Slice* slice) const;
+
+ /// Dump (read) the buffer contents into \a slics.
+ Status DumpToSingleSlice(Slice* slice) const;
+
+ /// Dump (read) the buffer contents into \a slices.
+ Status Dump(std::vector<Slice>* slices) const;
+
+ /// Remove all data.
+ void Clear() {
+ if (buffer_) {
+ g_core_codegen_interface->grpc_byte_buffer_destroy(buffer_);
+ buffer_ = nullptr;
+ }
+ }
+
+ /// Make a duplicate copy of the internals of this byte
+ /// buffer so that we have our own owned version of it.
+ /// bbuf.Duplicate(); is equivalent to bbuf=bbuf; but is actually readable.
+ /// This is not a deep copy; it is a referencing and its performance
+ /// is size-independent.
+ void Duplicate() {
+ buffer_ = g_core_codegen_interface->grpc_byte_buffer_copy(buffer_);
+ }
+
+ /// Forget underlying byte buffer without destroying
+ /// Use this only for un-owned byte buffers
+ void Release() { buffer_ = nullptr; }
+
+ /// Buffer size in bytes.
+ size_t Length() const {
+ return buffer_ == nullptr
+ ? 0
+ : g_core_codegen_interface->grpc_byte_buffer_length(buffer_);
+ }
+
+ /// Swap the state of *this and *other.
+ void Swap(ByteBuffer* other) {
+ grpc_byte_buffer* tmp = other->buffer_;
+ other->buffer_ = buffer_;
+ buffer_ = tmp;
+ }
+
+ /// Is this ByteBuffer valid?
+ bool Valid() const { return (buffer_ != nullptr); }
+
+ private:
+ friend class SerializationTraits<ByteBuffer, void>;
+ friend class ServerInterface;
+ friend class internal::CallOpSendMessage;
+ template <class R>
+ friend class internal::CallOpRecvMessage;
+ friend class internal::CallOpGenericRecvMessage;
+ template <class RequestType>
+ friend void* internal::UnaryDeserializeHelper(grpc_byte_buffer*,
+ grpc::Status*, RequestType*);
+ template <class ServiceType, class RequestType, class ResponseType>
+ friend class internal::ServerStreamingHandler;
+ template <class RequestType, class ResponseType>
+ friend class internal::CallbackUnaryHandler;
+ template <class RequestType, class ResponseType>
+ friend class internal::CallbackServerStreamingHandler;
+ template <StatusCode code>
+ friend class internal::ErrorMethodHandler;
+ template <class R>
+ friend class internal::DeserializeFuncType;
+ friend class ProtoBufferReader;
+ friend class ProtoBufferWriter;
+ friend class internal::GrpcByteBufferPeer;
+ friend class internal::ExternalConnectionAcceptorImpl;
+
+ grpc_byte_buffer* buffer_;
+
+ // takes ownership
+ void set_buffer(grpc_byte_buffer* buf) {
+ if (buffer_) {
+ Clear();
+ }
+ buffer_ = buf;
+ }
+
+ grpc_byte_buffer* c_buffer() { return buffer_; }
+ grpc_byte_buffer** c_buffer_ptr() { return &buffer_; }
+
+ class ByteBufferPointer {
+ public:
+ /* NOLINTNEXTLINE(google-explicit-constructor) */
+ ByteBufferPointer(const ByteBuffer* b)
+ : bbuf_(const_cast<ByteBuffer*>(b)) {}
+ /* NOLINTNEXTLINE(google-explicit-constructor) */
+ operator ByteBuffer*() { return bbuf_; }
+ /* NOLINTNEXTLINE(google-explicit-constructor) */
+ operator grpc_byte_buffer*() { return bbuf_->buffer_; }
+ /* NOLINTNEXTLINE(google-explicit-constructor) */
+ operator grpc_byte_buffer**() { return &bbuf_->buffer_; }
+
+ private:
+ ByteBuffer* bbuf_;
+ };
+ ByteBufferPointer bbuf_ptr() const { return ByteBufferPointer(this); }
+};
+
+template <>
+class SerializationTraits<ByteBuffer, void> {
+ public:
+ static Status Deserialize(ByteBuffer* byte_buffer, ByteBuffer* dest) {
+ dest->set_buffer(byte_buffer->buffer_);
+ return Status::OK;
+ }
+ static Status Serialize(const ByteBuffer& source, ByteBuffer* buffer,
+ bool* own_buffer) {
+ *buffer = source;
+ *own_buffer = true;
+ return g_core_codegen_interface->ok();
+ }
+};
+
+} // namespace grpc
+
#endif // GRPCPP_SUPPORT_BYTE_BUFFER_H
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/sys_epoll_wrapper.h b/contrib/libs/grpc/include/grpcpp/support/client_callback.h
index d21d853665..c15bca0dbe 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/sys_epoll_wrapper.h
+++ b/contrib/libs/grpc/include/grpcpp/support/client_callback.h
@@ -1,6 +1,6 @@
/*
*
- * Copyright 2017 gRPC authors.
+ * Copyright 2018 gRPC authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,15 +16,9 @@
*
*/
-#ifndef GRPC_CORE_LIB_IOMGR_SYS_EPOLL_WRAPPER_H
-#define GRPC_CORE_LIB_IOMGR_SYS_EPOLL_WRAPPER_H
+#ifndef GRPCPP_SUPPORT_CLIENT_CALLBACK_H
+#define GRPCPP_SUPPORT_CLIENT_CALLBACK_H
-#include <grpc/support/port_platform.h>
+#include <grpcpp/impl/codegen/client_callback.h> // IWYU pragma: export
-#include <sys/epoll.h>
-
-#ifndef EPOLLEXCLUSIVE
-#define EPOLLEXCLUSIVE (1 << 28)
-#endif
-
-#endif /* GRPC_CORE_LIB_IOMGR_SYS_EPOLL_WRAPPER_H */
+#endif // GRPCPP_SUPPORT_CLIENT_CALLBACK_H
diff --git a/contrib/libs/grpc/include/grpcpp/support/client_interceptor.h b/contrib/libs/grpc/include/grpcpp/support/client_interceptor.h
new file mode 100644
index 0000000000..8e5e1ce67b
--- /dev/null
+++ b/contrib/libs/grpc/include/grpcpp/support/client_interceptor.h
@@ -0,0 +1,197 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPCPP_SUPPORT_CLIENT_INTERCEPTOR_H
+#define GRPCPP_SUPPORT_CLIENT_INTERCEPTOR_H
+
+#include <memory>
+#include <vector>
+
+#include <grpcpp/impl/rpc_method.h>
+#include <grpcpp/support/interceptor.h>
+#include <grpcpp/support/string_ref.h>
+
+namespace grpc {
+
+class Channel;
+class ClientContext;
+
+namespace internal {
+class InterceptorBatchMethodsImpl;
+}
+
+namespace experimental {
+class ClientRpcInfo;
+
+// A factory interface for creation of client interceptors. A vector of
+// factories can be provided at channel creation which will be used to create a
+// new vector of client interceptors per RPC. Client interceptor authors should
+// create a subclass of ClientInterceptorFactorInterface which creates objects
+// of their interceptors.
+class ClientInterceptorFactoryInterface {
+ public:
+ virtual ~ClientInterceptorFactoryInterface() {}
+ // Returns a pointer to an Interceptor object on successful creation, nullptr
+ // otherwise. If nullptr is returned, this server interceptor factory is
+ // ignored for the purposes of that RPC.
+ virtual Interceptor* CreateClientInterceptor(ClientRpcInfo* info) = 0;
+};
+} // namespace experimental
+
+namespace internal {
+extern experimental::ClientInterceptorFactoryInterface*
+ g_global_client_interceptor_factory;
+}
+
+/// ClientRpcInfo represents the state of a particular RPC as it
+/// appears to an interceptor. It is created and owned by the library and
+/// passed to the CreateClientInterceptor method of the application's
+/// ClientInterceptorFactoryInterface implementation
+namespace experimental {
+class ClientRpcInfo {
+ public:
+ // TODO(yashykt): Stop default-constructing ClientRpcInfo and remove UNKNOWN
+ // from the list of possible Types.
+ /// Type categorizes RPCs by unary or streaming type
+ enum class Type {
+ UNARY,
+ CLIENT_STREAMING,
+ SERVER_STREAMING,
+ BIDI_STREAMING,
+ UNKNOWN // UNKNOWN is not API and will be removed later
+ };
+
+ ~ClientRpcInfo() {}
+
+ // Delete copy constructor but allow default move constructor
+ ClientRpcInfo(const ClientRpcInfo&) = delete;
+ ClientRpcInfo(ClientRpcInfo&&) = default;
+
+ // Getter methods
+
+ /// Return the fully-specified method name
+ const char* method() const { return method_; }
+
+ /// Return an identifying suffix for the client stub, or nullptr if one wasn't
+ /// specified.
+ const char* suffix_for_stats() const { return suffix_for_stats_; }
+
+ /// Return a pointer to the channel on which the RPC is being sent
+ ChannelInterface* channel() { return channel_; }
+
+ /// Return a pointer to the underlying ClientContext structure associated
+ /// with the RPC to support features that apply to it
+ grpc::ClientContext* client_context() { return ctx_; }
+
+ /// Return the type of the RPC (unary or a streaming flavor)
+ Type type() const { return type_; }
+
+ private:
+ static_assert(Type::UNARY ==
+ static_cast<Type>(internal::RpcMethod::NORMAL_RPC),
+ "violated expectation about Type enum");
+ static_assert(Type::CLIENT_STREAMING ==
+ static_cast<Type>(internal::RpcMethod::CLIENT_STREAMING),
+ "violated expectation about Type enum");
+ static_assert(Type::SERVER_STREAMING ==
+ static_cast<Type>(internal::RpcMethod::SERVER_STREAMING),
+ "violated expectation about Type enum");
+ static_assert(Type::BIDI_STREAMING ==
+ static_cast<Type>(internal::RpcMethod::BIDI_STREAMING),
+ "violated expectation about Type enum");
+
+ // Default constructor should only be used by ClientContext
+ ClientRpcInfo() = default;
+
+ // Constructor will only be called from ClientContext
+ ClientRpcInfo(grpc::ClientContext* ctx, internal::RpcMethod::RpcType type,
+ const char* method, const char* suffix_for_stats,
+ grpc::ChannelInterface* channel)
+ : ctx_(ctx),
+ type_(static_cast<Type>(type)),
+ method_(method),
+ suffix_for_stats_(suffix_for_stats),
+ channel_(channel) {}
+
+ // Move assignment should only be used by ClientContext
+ // TODO(yashykt): Delete move assignment
+ ClientRpcInfo& operator=(ClientRpcInfo&&) = default;
+
+ // Runs interceptor at pos \a pos.
+ void RunInterceptor(
+ experimental::InterceptorBatchMethods* interceptor_methods, size_t pos) {
+ GPR_CODEGEN_ASSERT(pos < interceptors_.size());
+ interceptors_[pos]->Intercept(interceptor_methods);
+ }
+
+ void RegisterInterceptors(
+ const std::vector<std::unique_ptr<
+ experimental::ClientInterceptorFactoryInterface>>& creators,
+ size_t interceptor_pos) {
+ if (interceptor_pos > creators.size()) {
+ // No interceptors to register
+ return;
+ }
+ // NOTE: The following is not a range-based for loop because it will only
+ // iterate over a portion of the creators vector.
+ for (auto it = creators.begin() + interceptor_pos; it != creators.end();
+ ++it) {
+ auto* interceptor = (*it)->CreateClientInterceptor(this);
+ if (interceptor != nullptr) {
+ interceptors_.push_back(
+ std::unique_ptr<experimental::Interceptor>(interceptor));
+ }
+ }
+ if (internal::g_global_client_interceptor_factory != nullptr) {
+ interceptors_.push_back(std::unique_ptr<experimental::Interceptor>(
+ internal::g_global_client_interceptor_factory
+ ->CreateClientInterceptor(this)));
+ }
+ }
+
+ grpc::ClientContext* ctx_ = nullptr;
+ // TODO(yashykt): make type_ const once move-assignment is deleted
+ Type type_{Type::UNKNOWN};
+ const char* method_ = nullptr;
+ const char* suffix_for_stats_ = nullptr;
+ grpc::ChannelInterface* channel_ = nullptr;
+ std::vector<std::unique_ptr<experimental::Interceptor>> interceptors_;
+ bool hijacked_ = false;
+ size_t hijacked_interceptor_ = 0;
+
+ friend class internal::InterceptorBatchMethodsImpl;
+ friend class grpc::ClientContext;
+};
+
+// PLEASE DO NOT USE THIS. ALWAYS PREFER PER CHANNEL INTERCEPTORS OVER A GLOBAL
+// INTERCEPTOR. IF USAGE IS ABSOLUTELY NECESSARY, PLEASE READ THE SAFETY NOTES.
+// Registers a global client interceptor factory object, which is used for all
+// RPCs made in this process. The application is responsible for maintaining the
+// life of the object while gRPC operations are in progress. The global
+// interceptor factory should only be registered once at the start of the
+// process before any gRPC operations have begun.
+void RegisterGlobalClientInterceptorFactory(
+ ClientInterceptorFactoryInterface* factory);
+
+// For testing purposes only
+void TestOnlyResetGlobalClientInterceptorFactory();
+
+} // namespace experimental
+} // namespace grpc
+
+#endif // GRPCPP_SUPPORT_CLIENT_INTERCEPTOR_H
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/ev_epollex_linux.h b/contrib/libs/grpc/include/grpcpp/support/interceptor.h
index e70ba72a7d..d4f2ea180e 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/ev_epollex_linux.h
+++ b/contrib/libs/grpc/include/grpcpp/support/interceptor.h
@@ -16,15 +16,9 @@
*
*/
-#ifndef GRPC_CORE_LIB_IOMGR_EV_EPOLLEX_LINUX_H
-#define GRPC_CORE_LIB_IOMGR_EV_EPOLLEX_LINUX_H
+#ifndef GRPCPP_SUPPORT_INTERCEPTOR_H
+#define GRPCPP_SUPPORT_INTERCEPTOR_H
-#include <grpc/support/port_platform.h>
+#include <grpcpp/impl/codegen/interceptor.h> // IWYU pragma: export
-#include "src/core/lib/iomgr/ev_posix.h"
-#include "src/core/lib/iomgr/port.h"
-
-const grpc_event_engine_vtable* grpc_init_epollex_linux(
- bool explicitly_requested);
-
-#endif /* GRPC_CORE_LIB_IOMGR_EV_EPOLLEX_LINUX_H */
+#endif // GRPCPP_SUPPORT_INTERCEPTOR_H
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/is_epollexclusive_available.h b/contrib/libs/grpc/include/grpcpp/support/method_handler.h
index 8a44113c3f..0b97a7af03 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/is_epollexclusive_available.h
+++ b/contrib/libs/grpc/include/grpcpp/support/method_handler.h
@@ -16,21 +16,9 @@
*
*/
-#ifndef GRPC_CORE_LIB_IOMGR_IS_EPOLLEXCLUSIVE_AVAILABLE_H
-#define GRPC_CORE_LIB_IOMGR_IS_EPOLLEXCLUSIVE_AVAILABLE_H
+#ifndef GRPCPP_SUPPORT_METHOD_HANDLER_H
+#define GRPCPP_SUPPORT_METHOD_HANDLER_H
-#include <grpc/support/port_platform.h>
+#include <grpcpp/impl/codegen/method_handler.h> // IWYU pragma: export
-#include <stdbool.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-bool grpc_is_epollexclusive_available(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* GRPC_CORE_LIB_IOMGR_IS_EPOLLEXCLUSIVE_AVAILABLE_H */
+#endif // GRPCPP_SUPPORT_METHOD_HANDLER_H
diff --git a/contrib/libs/grpc/src/core/lib/gpr/string_windows.h b/contrib/libs/grpc/include/grpcpp/support/server_interceptor.h
index e370f802cf..ad9c7a1869 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/string_windows.h
+++ b/contrib/libs/grpc/include/grpcpp/support/server_interceptor.h
@@ -16,17 +16,9 @@
*
*/
-#ifndef GRPC_CORE_LIB_GPR_STRING_WINDOWS_H
-#define GRPC_CORE_LIB_GPR_STRING_WINDOWS_H
+#ifndef GRPCPP_SUPPORT_SERVER_INTERCEPTOR_H
+#define GRPCPP_SUPPORT_SERVER_INTERCEPTOR_H
-#include <grpc/support/port_platform.h>
+#include <grpcpp/impl/codegen/server_interceptor.h> // IWYU pragma: export
-#ifdef GPR_WINDOWS
-
-/* These allocate new strings using gpr_malloc to convert from and to utf-8. */
-LPTSTR gpr_char_to_tchar(LPCSTR input);
-LPSTR gpr_tchar_to_char(LPCTSTR input);
-
-#endif /* GPR_WINDOWS */
-
-#endif /* GRPC_CORE_LIB_GPR_STRING_WINDOWS_H */
+#endif // GRPCPP_SUPPORT_SERVER_INTERCEPTOR_H
diff --git a/contrib/libs/grpc/src/compiler/cpp_generator.cc b/contrib/libs/grpc/src/compiler/cpp_generator.cc
index caf00b2777..8a5d38ab44 100644
--- a/contrib/libs/grpc/src/compiler/cpp_generator.cc
+++ b/contrib/libs/grpc/src/compiler/cpp_generator.cc
@@ -141,9 +141,9 @@ TString GetHeaderIncludes(grpc_generator::File* file,
}
static const char* headers_strs[] = {
"functional",
- "grpcpp/impl/codegen/async_generic_service.h",
- "grpcpp/impl/codegen/async_stream.h",
- "grpcpp/impl/codegen/async_unary_call.h",
+ "grpcpp/generic/async_generic_service.h",
+ "grpcpp/support/async_stream.h",
+ "grpcpp/support/async_unary_call.h",
"grpcpp/impl/codegen/client_callback.h",
"grpcpp/impl/codegen/client_context.h",
"grpcpp/impl/codegen/completion_queue.h",
@@ -1657,8 +1657,8 @@ TString GetSourceIncludes(grpc_generator::File* file,
std::map<TString, TString> vars;
static const char* headers_strs[] = {
"functional",
- "grpcpp/impl/codegen/async_stream.h",
- "grpcpp/impl/codegen/async_unary_call.h",
+ "grpcpp/support/async_stream.h",
+ "grpcpp/support/async_unary_call.h",
"grpcpp/impl/codegen/channel_interface.h",
"grpcpp/impl/codegen/client_unary_call.h",
"grpcpp/impl/codegen/client_callback.h",
@@ -2199,7 +2199,7 @@ TString GetMockIncludes(grpc_generator::File* file,
std::map<TString, TString> vars;
static const char* headers_strs[] = {
- "grpcpp/impl/codegen/async_stream.h",
+ "grpcpp/support/async_stream.h",
"grpcpp/impl/codegen/sync_stream.h",
};
std::vector<TString> headers(headers_strs, array_end(headers_strs));
diff --git a/contrib/libs/grpc/src/compiler/csharp_generator.cc b/contrib/libs/grpc/src/compiler/csharp_generator.cc
index 7b2c7899dc..4a3d5868bb 100644
--- a/contrib/libs/grpc/src/compiler/csharp_generator.cc
+++ b/contrib/libs/grpc/src/compiler/csharp_generator.cc
@@ -695,7 +695,7 @@ void GenerateBindServiceWithBinderMethod(Printer* out,
const ServiceDescriptor* service) {
out->Print(
"/// <summary>Register service method with a service "
- "binder with or without implementation. Useful when customizing the "
+ "binder with or without implementation. Useful when customizing the "
"service binding logic.\n"
"/// Note: this method is part of an experimental API that can change or "
"be "
@@ -801,7 +801,7 @@ TString GetServices(const FileDescriptor* file, bool generate_client,
out.PrintRaw(leading_comments.c_str());
}
- out.Print("#pragma warning disable 0414, 1591\n");
+ out.Print("#pragma warning disable 0414, 1591, 8981\n");
out.Print("#region Designer generated code\n");
out.Print("\n");
diff --git a/contrib/libs/grpc/src/compiler/objective_c_generator.cc b/contrib/libs/grpc/src/compiler/objective_c_generator.cc
index ec7b90f8a7..6266415fb2 100644
--- a/contrib/libs/grpc/src/compiler/objective_c_generator.cc
+++ b/contrib/libs/grpc/src/compiler/objective_c_generator.cc
@@ -156,6 +156,8 @@ inline map< ::TString, ::TString> GetMethodVars(
}
void PrintMethodDeclarations(Printer* printer, const MethodDescriptor* method) {
+ if (!ShouldIncludeMethod(method)) return;
+
map< ::TString, ::TString> vars = GetMethodVars(method);
PrintProtoRpcDeclarationAsPragma(printer, method, vars);
@@ -168,6 +170,8 @@ void PrintMethodDeclarations(Printer* printer, const MethodDescriptor* method) {
void PrintV2MethodDeclarations(Printer* printer,
const MethodDescriptor* method) {
+ if (!ShouldIncludeMethod(method)) return;
+
map< ::TString, ::TString> vars = GetMethodVars(method);
PrintProtoRpcDeclarationAsPragma(printer, method, vars);
@@ -240,6 +244,8 @@ void PrintV2Implementation(Printer* printer, const MethodDescriptor* method,
void PrintMethodImplementations(Printer* printer,
const MethodDescriptor* method,
const Parameters& generator_params) {
+ if (!ShouldIncludeMethod(method)) return;
+
map< ::TString, ::TString> vars = GetMethodVars(method);
PrintProtoRpcDeclarationAsPragma(printer, method, vars);
@@ -267,8 +273,10 @@ void PrintMethodImplementations(Printer* printer,
const auto service = file->service(i);
for (int i = 0; i < service->method_count(); i++) {
const auto method = service->method(i);
- classes.insert(ClassName(method->input_type()));
- classes.insert(ClassName(method->output_type()));
+ if (ShouldIncludeMethod(method)) {
+ classes.insert(ClassName(method->input_type()));
+ classes.insert(ClassName(method->output_type()));
+ }
}
}
for (auto one_class : classes) {
diff --git a/contrib/libs/grpc/src/compiler/objective_c_generator_helpers.h b/contrib/libs/grpc/src/compiler/objective_c_generator_helpers.h
index ce1e47aeaf..f4356690bc 100644
--- a/contrib/libs/grpc/src/compiler/objective_c_generator_helpers.h
+++ b/contrib/libs/grpc/src/compiler/objective_c_generator_helpers.h
@@ -29,6 +29,7 @@
namespace grpc_objective_c_generator {
using ::grpc::protobuf::FileDescriptor;
+using ::grpc::protobuf::MethodDescriptor;
using ::grpc::protobuf::ServiceDescriptor;
using ::TString;
@@ -111,5 +112,15 @@ inline ::TString PreprocIfNotElse(const ::TString& symbol,
if_true + "#else\n" + if_false + "#endif\n");
}
+inline bool ShouldIncludeMethod(const MethodDescriptor* method) {
+#ifdef OBJC_SKIP_METHODS_WITHOUT_MESSAGE_PREFIX
+ return (method->input_type()->file()->options().has_objc_class_prefix() &&
+ method->output_type()->file()->options().has_objc_class_prefix());
+#else
+ (void)method; // to silence the unused warning for method.
+ return true;
+#endif
+}
+
} // namespace grpc_objective_c_generator
#endif // GRPC_INTERNAL_COMPILER_OBJECTIVE_C_GENERATOR_HELPERS_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/census/grpc_context.cc b/contrib/libs/grpc/src/core/ext/filters/census/grpc_context.cc
index 6659f701c2..de09ad9f3b 100644
--- a/contrib/libs/grpc/src/core/ext/filters/census/grpc_context.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/census/grpc_context.cc
@@ -20,7 +20,10 @@
#include <grpc/census.h>
#include <grpc/grpc.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include "src/core/lib/channel/context.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/call.h"
diff --git a/contrib/libs/grpc/src/core/ext/filters/channel_idle/channel_idle_filter.cc b/contrib/libs/grpc/src/core/ext/filters/channel_idle/channel_idle_filter.cc
new file mode 100644
index 0000000000..bc380fcc6a
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/filters/channel_idle/channel_idle_filter.cc
@@ -0,0 +1,309 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// TODO(ctiller): Add a unit test suite for these filters once it's practical to
+// mock transport operations.
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/filters/channel_idle/channel_idle_filter.h"
+
+#include <stdlib.h>
+
+#include <functional>
+#include <utility>
+
+#include "y_absl/types/optional.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/log.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_stack_builder.h"
+#include "src/core/lib/channel/promise_based_filter.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/promise/exec_ctx_wakeup_scheduler.h"
+#include "src/core/lib/promise/loop.h"
+#include "src/core/lib/promise/poll.h"
+#include "src/core/lib/promise/promise.h"
+#include "src/core/lib/promise/sleep.h"
+#include "src/core/lib/promise/try_seq.h"
+#include "src/core/lib/surface/channel_init.h"
+#include "src/core/lib/surface/channel_stack_type.h"
+#include "src/core/lib/transport/http2_errors.h"
+
+namespace grpc_core {
+
+namespace {
+// TODO(ctiller): The idle filter was disabled in client channel by default
+// due to b/143502997. Now the bug is fixed enable the filter by default.
+const auto kDefaultIdleTimeout = Duration::Infinity();
+
+// If these settings change, make sure that we are not sending a GOAWAY for
+// inproc transport, since a GOAWAY to inproc ends up destroying the transport.
+const auto kDefaultMaxConnectionAge = Duration::Infinity();
+const auto kDefaultMaxConnectionAgeGrace = Duration::Infinity();
+const auto kDefaultMaxConnectionIdle = Duration::Infinity();
+const auto kMaxConnectionAgeJitter = 0.1;
+
+TraceFlag grpc_trace_client_idle_filter(false, "client_idle_filter");
+} // namespace
+
+#define GRPC_IDLE_FILTER_LOG(format, ...) \
+ do { \
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_client_idle_filter)) { \
+ gpr_log(GPR_INFO, "(client idle filter) " format, ##__VA_ARGS__); \
+ } \
+ } while (0)
+
+namespace {
+
+Duration GetClientIdleTimeout(const ChannelArgs& args) {
+ return args.GetDurationFromIntMillis(GRPC_ARG_CLIENT_IDLE_TIMEOUT_MS)
+ .value_or(kDefaultIdleTimeout);
+}
+
+} // namespace
+
+struct MaxAgeFilter::Config {
+ Duration max_connection_age;
+ Duration max_connection_idle;
+ Duration max_connection_age_grace;
+
+ bool enable() const {
+ return max_connection_age != Duration::Infinity() ||
+ max_connection_idle != Duration::Infinity();
+ }
+
+ /* A random jitter of +/-10% will be added to MAX_CONNECTION_AGE to spread out
+ connection storms. Note that the MAX_CONNECTION_AGE option without jitter
+ would not create connection storms by itself, but if there happened to be a
+ connection storm it could cause it to repeat at a fixed period. */
+ static Config FromChannelArgs(const ChannelArgs& args) {
+ const Duration args_max_age =
+ args.GetDurationFromIntMillis(GRPC_ARG_MAX_CONNECTION_AGE_MS)
+ .value_or(kDefaultMaxConnectionAge);
+ const Duration args_max_idle =
+ args.GetDurationFromIntMillis(GRPC_ARG_MAX_CONNECTION_IDLE_MS)
+ .value_or(kDefaultMaxConnectionIdle);
+ const Duration args_max_age_grace =
+ args.GetDurationFromIntMillis(GRPC_ARG_MAX_CONNECTION_AGE_GRACE_MS)
+ .value_or(kDefaultMaxConnectionAgeGrace);
+ /* generate a random number between 1 - kMaxConnectionAgeJitter and
+ 1 + kMaxConnectionAgeJitter */
+ const double multiplier =
+ rand() * kMaxConnectionAgeJitter * 2.0 / RAND_MAX + 1.0 -
+ kMaxConnectionAgeJitter;
+ /* GRPC_MILLIS_INF_FUTURE - 0.5 converts the value to float, so that result
+ will not be cast to int implicitly before the comparison. */
+ return Config{args_max_age * multiplier, args_max_idle, args_max_age_grace};
+ }
+};
+
+y_absl::StatusOr<ClientIdleFilter> ClientIdleFilter::Create(
+ const ChannelArgs& args, ChannelFilter::Args filter_args) {
+ ClientIdleFilter filter(filter_args.channel_stack(),
+ GetClientIdleTimeout(args));
+ return y_absl::StatusOr<ClientIdleFilter>(std::move(filter));
+}
+
+y_absl::StatusOr<MaxAgeFilter> MaxAgeFilter::Create(
+ const ChannelArgs& args, ChannelFilter::Args filter_args) {
+ MaxAgeFilter filter(filter_args.channel_stack(),
+ Config::FromChannelArgs(args));
+ return y_absl::StatusOr<MaxAgeFilter>(std::move(filter));
+}
+
+void MaxAgeFilter::Shutdown() {
+ max_age_activity_.Reset();
+ ChannelIdleFilter::Shutdown();
+}
+
+void MaxAgeFilter::PostInit() {
+ struct StartupClosure {
+ RefCountedPtr<grpc_channel_stack> channel_stack;
+ MaxAgeFilter* filter;
+ grpc_closure closure;
+ };
+ auto run_startup = [](void* p, grpc_error_handle) {
+ auto* startup = static_cast<StartupClosure*>(p);
+ // Trigger idle timer
+ startup->filter->IncreaseCallCount();
+ startup->filter->DecreaseCallCount();
+ grpc_transport_op* op = grpc_make_transport_op(nullptr);
+ op->start_connectivity_watch.reset(
+ new ConnectivityWatcher(startup->filter));
+ op->start_connectivity_watch_state = GRPC_CHANNEL_IDLE;
+ grpc_channel_next_op(
+ grpc_channel_stack_element(startup->channel_stack.get(), 0), op);
+ delete startup;
+ };
+ auto* startup =
+ new StartupClosure{this->channel_stack()->Ref(), this, grpc_closure{}};
+ GRPC_CLOSURE_INIT(&startup->closure, run_startup, startup, nullptr);
+ ExecCtx::Run(DEBUG_LOCATION, &startup->closure, GRPC_ERROR_NONE);
+
+ auto channel_stack = this->channel_stack()->Ref();
+
+ // Start the max age timer
+ if (max_connection_age_ != Duration::Infinity()) {
+ max_age_activity_.Set(MakeActivity(
+ TrySeq(
+ // First sleep until the max connection age
+ Sleep(Timestamp::Now() + max_connection_age_),
+ // Then send a goaway.
+ [this] {
+ GRPC_CHANNEL_STACK_REF(this->channel_stack(),
+ "max_age send_goaway");
+ // Jump out of the activity to send the goaway.
+ auto fn = [](void* arg, grpc_error_handle) {
+ auto* channel_stack = static_cast<grpc_channel_stack*>(arg);
+ grpc_transport_op* op = grpc_make_transport_op(nullptr);
+ op->goaway_error = grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("max_age"),
+ GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_NO_ERROR);
+ grpc_channel_element* elem =
+ grpc_channel_stack_element(channel_stack, 0);
+ elem->filter->start_transport_op(elem, op);
+ GRPC_CHANNEL_STACK_UNREF(channel_stack, "max_age send_goaway");
+ };
+ ExecCtx::Run(
+ DEBUG_LOCATION,
+ GRPC_CLOSURE_CREATE(fn, this->channel_stack(), nullptr),
+ GRPC_ERROR_NONE);
+ return Immediate(y_absl::OkStatus());
+ },
+ // Sleep for the grace period
+ [this] {
+ return Sleep(Timestamp::Now() + max_connection_age_grace_);
+ }),
+ ExecCtxWakeupScheduler(), [channel_stack, this](y_absl::Status status) {
+ // OnDone -- close the connection if the promise completed
+ // successfully.
+ // (if it did not, it was cancelled)
+ if (status.ok()) CloseChannel();
+ }));
+ }
+}
+
+// Construct a promise for one call.
+ArenaPromise<ServerMetadataHandle> ChannelIdleFilter::MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) {
+ using Decrementer = std::unique_ptr<ChannelIdleFilter, CallCountDecreaser>;
+ IncreaseCallCount();
+ return ArenaPromise<ServerMetadataHandle>(
+ [decrementer = Decrementer(this),
+ next = next_promise_factory(std::move(call_args))]() mutable
+ -> Poll<ServerMetadataHandle> { return next(); });
+}
+
+bool ChannelIdleFilter::StartTransportOp(grpc_transport_op* op) {
+ // Catch the disconnect_with_error transport op.
+ if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) Shutdown();
+ // Pass the op to the next filter.
+ return false;
+}
+
+void ChannelIdleFilter::Shutdown() {
+ // IncreaseCallCount() introduces a phony call and prevent the timer from
+ // being reset by other threads.
+ IncreaseCallCount();
+ activity_.Reset();
+}
+
+void ChannelIdleFilter::IncreaseCallCount() {
+ idle_filter_state_->IncreaseCallCount();
+}
+
+void ChannelIdleFilter::DecreaseCallCount() {
+ if (idle_filter_state_->DecreaseCallCount()) {
+ // If there are no more calls in progress, start the idle timer.
+ StartIdleTimer();
+ }
+}
+
+void ChannelIdleFilter::StartIdleTimer() {
+ GRPC_IDLE_FILTER_LOG("timer has started");
+ auto idle_filter_state = idle_filter_state_;
+ // Hold a ref to the channel stack for the timer callback.
+ auto channel_stack = channel_stack_->Ref();
+ auto timeout = client_idle_timeout_;
+ auto promise = Loop([timeout, idle_filter_state]() {
+ return TrySeq(Sleep(Timestamp::Now() + timeout),
+ [idle_filter_state]() -> Poll<LoopCtl<y_absl::Status>> {
+ if (idle_filter_state->CheckTimer()) {
+ return Continue{};
+ } else {
+ return y_absl::OkStatus();
+ }
+ });
+ });
+ activity_.Set(MakeActivity(std::move(promise), ExecCtxWakeupScheduler{},
+ [channel_stack, this](y_absl::Status status) {
+ if (status.ok()) CloseChannel();
+ }));
+}
+
+void ChannelIdleFilter::CloseChannel() {
+ auto* op = grpc_make_transport_op(nullptr);
+ op->disconnect_with_error = grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("enter idle"),
+ GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE, GRPC_CHANNEL_IDLE);
+ // Pass the transport op down to the channel stack.
+ auto* elem = grpc_channel_stack_element(channel_stack_, 0);
+ elem->filter->start_transport_op(elem, op);
+}
+
+const grpc_channel_filter ClientIdleFilter::kFilter =
+ MakePromiseBasedFilter<ClientIdleFilter, FilterEndpoint::kClient>(
+ "client_idle");
+const grpc_channel_filter MaxAgeFilter::kFilter =
+ MakePromiseBasedFilter<MaxAgeFilter, FilterEndpoint::kServer>("max_age");
+
+void RegisterChannelIdleFilters(CoreConfiguration::Builder* builder) {
+ builder->channel_init()->RegisterStage(
+ GRPC_CLIENT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
+ [](ChannelStackBuilder* builder) {
+ auto channel_args = builder->channel_args();
+ if (!channel_args.WantMinimalStack() &&
+ GetClientIdleTimeout(channel_args) != Duration::Infinity()) {
+ builder->PrependFilter(&ClientIdleFilter::kFilter);
+ }
+ return true;
+ });
+ builder->channel_init()->RegisterStage(
+ GRPC_SERVER_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
+ [](ChannelStackBuilder* builder) {
+ auto channel_args = builder->channel_args();
+ if (!channel_args.WantMinimalStack() &&
+ MaxAgeFilter::Config::FromChannelArgs(channel_args).enable()) {
+ builder->PrependFilter(&MaxAgeFilter::kFilter);
+ }
+ return true;
+ });
+}
+
+MaxAgeFilter::MaxAgeFilter(grpc_channel_stack* channel_stack,
+ const Config& max_age_config)
+ : ChannelIdleFilter(channel_stack, max_age_config.max_connection_idle),
+ max_connection_age_(max_age_config.max_connection_age),
+ max_connection_age_grace_(max_age_config.max_connection_age_grace) {}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/channel_idle/channel_idle_filter.h b/contrib/libs/grpc/src/core/ext/filters/channel_idle/channel_idle_filter.h
new file mode 100644
index 0000000000..f3bbf57b97
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/filters/channel_idle/channel_idle_filter.h
@@ -0,0 +1,141 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_EXT_FILTERS_CHANNEL_IDLE_CHANNEL_IDLE_FILTER_H
+#define GRPC_CORE_EXT_FILTERS_CHANNEL_IDLE_CHANNEL_IDLE_FILTER_H
+
+#include <grpc/support/port_platform.h>
+
+#include <memory>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+
+#include <grpc/impl/codegen/connectivity_state.h>
+
+#include "src/core/ext/filters/channel_idle/idle_filter_state.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/promise_based_filter.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/single_set_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/promise/activity.h"
+#include "src/core/lib/promise/arena_promise.h"
+#include "src/core/lib/transport/connectivity_state.h"
+#include "src/core/lib/transport/transport.h"
+
+namespace grpc_core {
+
+class ChannelIdleFilter : public ChannelFilter {
+ public:
+ ~ChannelIdleFilter() override = default;
+
+ ChannelIdleFilter(const ChannelIdleFilter&) = delete;
+ ChannelIdleFilter& operator=(const ChannelIdleFilter&) = delete;
+ ChannelIdleFilter(ChannelIdleFilter&&) = default;
+ ChannelIdleFilter& operator=(ChannelIdleFilter&&) = default;
+
+ // Construct a promise for one call.
+ ArenaPromise<ServerMetadataHandle> MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) override;
+
+ bool StartTransportOp(grpc_transport_op* op) override;
+
+ protected:
+ using SingleSetActivityPtr =
+ SingleSetPtr<Activity, typename ActivityPtr::deleter_type>;
+
+ ChannelIdleFilter(grpc_channel_stack* channel_stack,
+ Duration client_idle_timeout)
+ : channel_stack_(channel_stack),
+ client_idle_timeout_(client_idle_timeout) {}
+
+ grpc_channel_stack* channel_stack() { return channel_stack_; };
+
+ virtual void Shutdown();
+ void CloseChannel();
+
+ void IncreaseCallCount();
+ void DecreaseCallCount();
+
+ private:
+ void StartIdleTimer();
+
+ struct CallCountDecreaser {
+ void operator()(ChannelIdleFilter* filter) const {
+ filter->DecreaseCallCount();
+ }
+ };
+
+ // The channel stack to which we take refs for pending callbacks.
+ grpc_channel_stack* channel_stack_;
+ Duration client_idle_timeout_;
+ std::shared_ptr<IdleFilterState> idle_filter_state_{
+ std::make_shared<IdleFilterState>(false)};
+
+ SingleSetActivityPtr activity_;
+};
+
+class ClientIdleFilter final : public ChannelIdleFilter {
+ public:
+ static const grpc_channel_filter kFilter;
+
+ static y_absl::StatusOr<ClientIdleFilter> Create(
+ const ChannelArgs& args, ChannelFilter::Args filter_args);
+
+ private:
+ using ChannelIdleFilter::ChannelIdleFilter;
+};
+
+class MaxAgeFilter final : public ChannelIdleFilter {
+ public:
+ static const grpc_channel_filter kFilter;
+ struct Config;
+
+ static y_absl::StatusOr<MaxAgeFilter> Create(const ChannelArgs& args,
+ ChannelFilter::Args filter_args);
+
+ void PostInit() override;
+
+ private:
+ class ConnectivityWatcher : public AsyncConnectivityStateWatcherInterface {
+ public:
+ explicit ConnectivityWatcher(MaxAgeFilter* filter)
+ : channel_stack_(filter->channel_stack()->Ref()), filter_(filter) {}
+ ~ConnectivityWatcher() override = default;
+
+ void OnConnectivityStateChange(grpc_connectivity_state new_state,
+ const y_absl::Status&) override {
+ if (new_state == GRPC_CHANNEL_SHUTDOWN) filter_->Shutdown();
+ }
+
+ private:
+ RefCountedPtr<grpc_channel_stack> channel_stack_;
+ MaxAgeFilter* filter_;
+ };
+
+ MaxAgeFilter(grpc_channel_stack* channel_stack, const Config& max_age_config);
+
+ void Shutdown() override;
+
+ SingleSetActivityPtr max_age_activity_;
+ Duration max_connection_age_;
+ Duration max_connection_age_grace_;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_FILTERS_CHANNEL_IDLE_CHANNEL_IDLE_FILTER_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_idle/idle_filter_state.cc b/contrib/libs/grpc/src/core/ext/filters/channel_idle/idle_filter_state.cc
index cd0689721e..72b5448a1e 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_idle/idle_filter_state.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/channel_idle/idle_filter_state.cc
@@ -14,7 +14,7 @@
#include <grpc/support/port_platform.h>
-#include "src/core/ext/filters/client_idle/idle_filter_state.h"
+#include "src/core/ext/filters/channel_idle/idle_filter_state.h"
#include <assert.h>
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_idle/idle_filter_state.h b/contrib/libs/grpc/src/core/ext/filters/channel_idle/idle_filter_state.h
index 3c3a195216..b8cef4b03f 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_idle/idle_filter_state.h
+++ b/contrib/libs/grpc/src/core/ext/filters/channel_idle/idle_filter_state.h
@@ -12,11 +12,13 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_IDLE_IDLE_FILTER_STATE_H
-#define GRPC_CORE_EXT_FILTERS_CLIENT_IDLE_IDLE_FILTER_STATE_H
+#ifndef GRPC_CORE_EXT_FILTERS_CHANNEL_IDLE_IDLE_FILTER_STATE_H
+#define GRPC_CORE_EXT_FILTERS_CHANNEL_IDLE_IDLE_FILTER_STATE_H
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
#include <atomic>
namespace grpc_core {
@@ -63,4 +65,4 @@ class IdleFilterState {
} // namespace grpc_core
-#endif // GRPC_CORE_EXT_FILTERS_CLIENT_IDLE_IDLE_FILTER_STATE_H
+#endif // GRPC_CORE_EXT_FILTERS_CHANNEL_IDLE_IDLE_FILTER_STATE_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/backend_metric.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/backend_metric.cc
index a6d4f44fbd..303c8b3169 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/backend_metric.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/backend_metric.cc
@@ -18,7 +18,12 @@
#include "src/core/ext/filters/client_channel/backend_metric.h"
+#include <string.h>
+
+#include <map>
+
#include "y_absl/strings/string_view.h"
+#include "upb/upb.h"
#include "upb/upb.hpp"
#include "xds/data/orca/v3/orca_load_report.upb.h"
@@ -32,14 +37,15 @@ std::map<y_absl::string_view, double> ParseMap(
const EntryType* (*entry_func)(const xds_data_orca_v3_OrcaLoadReport*,
size_t*),
upb_StringView (*key_func)(const EntryType*),
- double (*value_func)(const EntryType*), Arena* arena) {
+ double (*value_func)(const EntryType*),
+ BackendMetricAllocatorInterface* allocator) {
std::map<y_absl::string_view, double> result;
size_t i = kUpb_Map_Begin;
while (true) {
const auto* entry = entry_func(msg, &i);
if (entry == nullptr) break;
upb_StringView key_view = key_func(entry);
- char* key = static_cast<char*>(arena->Alloc(key_view.size));
+ char* key = allocator->AllocateString(key_view.size);
memcpy(key, key_view.data, key_view.size);
result[y_absl::string_view(key, key_view.size)] = value_func(entry);
}
@@ -48,31 +54,30 @@ std::map<y_absl::string_view, double> ParseMap(
} // namespace
-const LoadBalancingPolicy::BackendMetricAccessor::BackendMetricData*
-ParseBackendMetricData(const Slice& serialized_load_report, Arena* arena) {
+const BackendMetricData* ParseBackendMetricData(
+ y_absl::string_view serialized_load_report,
+ BackendMetricAllocatorInterface* allocator) {
upb::Arena upb_arena;
xds_data_orca_v3_OrcaLoadReport* msg = xds_data_orca_v3_OrcaLoadReport_parse(
- reinterpret_cast<const char*>(serialized_load_report.begin()),
- serialized_load_report.size(), upb_arena.ptr());
+ serialized_load_report.data(), serialized_load_report.size(),
+ upb_arena.ptr());
if (msg == nullptr) return nullptr;
- auto* backend_metric_data = arena->New<
- LoadBalancingPolicy::BackendMetricAccessor::BackendMetricData>();
+ BackendMetricData* backend_metric_data =
+ allocator->AllocateBackendMetricData();
backend_metric_data->cpu_utilization =
xds_data_orca_v3_OrcaLoadReport_cpu_utilization(msg);
backend_metric_data->mem_utilization =
xds_data_orca_v3_OrcaLoadReport_mem_utilization(msg);
- backend_metric_data->requests_per_second =
- xds_data_orca_v3_OrcaLoadReport_rps(msg);
backend_metric_data->request_cost =
ParseMap<xds_data_orca_v3_OrcaLoadReport_RequestCostEntry>(
msg, xds_data_orca_v3_OrcaLoadReport_request_cost_next,
xds_data_orca_v3_OrcaLoadReport_RequestCostEntry_key,
- xds_data_orca_v3_OrcaLoadReport_RequestCostEntry_value, arena);
+ xds_data_orca_v3_OrcaLoadReport_RequestCostEntry_value, allocator);
backend_metric_data->utilization =
ParseMap<xds_data_orca_v3_OrcaLoadReport_UtilizationEntry>(
msg, xds_data_orca_v3_OrcaLoadReport_utilization_next,
xds_data_orca_v3_OrcaLoadReport_UtilizationEntry_key,
- xds_data_orca_v3_OrcaLoadReport_UtilizationEntry_value, arena);
+ xds_data_orca_v3_OrcaLoadReport_UtilizationEntry_value, allocator);
return backend_metric_data;
}
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/backend_metric.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/backend_metric.h
index 70efe6b7f9..1c3d632570 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/backend_metric.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/backend_metric.h
@@ -19,19 +19,29 @@
#include <grpc/support/port_platform.h>
-#include <grpc/slice.h>
+#include <stddef.h>
-#include "src/core/ext/filters/client_channel/lb_policy.h"
-#include "src/core/lib/resource_quota/arena.h"
-#include "src/core/lib/slice/slice.h"
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h"
namespace grpc_core {
-// Parses the serialized load report and allocates a BackendMetricData
-// object on the arena.
-const LoadBalancingPolicy::BackendMetricAccessor::BackendMetricData*
-ParseBackendMetricData(const Slice& serialized_load_report, Arena* arena);
+class BackendMetricAllocatorInterface {
+ public:
+ virtual ~BackendMetricAllocatorInterface() = default;
+
+ virtual BackendMetricData* AllocateBackendMetricData() = 0;
+
+ virtual char* AllocateString(size_t size) = 0;
+};
+
+// Parses the serialized load report and populates out.
+// Returns false on error.
+const BackendMetricData* ParseBackendMetricData(
+ y_absl::string_view serialized_load_report,
+ BackendMetricAllocatorInterface* allocator);
} // namespace grpc_core
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_BACKEND_METRIC_H */
+#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_BACKEND_METRIC_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/backup_poller.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/backup_poller.cc
index ba3365cd78..c84025dc37 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/backup_poller.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/backup_poller.cc
@@ -20,22 +20,23 @@
#include "src/core/ext/filters/client_channel/backup_poller.h"
-#include <grpc/grpc.h>
+#include <inttypes.h>
+
+#include "y_absl/status/status.h"
+
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
-#include "src/core/ext/filters/client_channel/client_channel.h"
-#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gprpp/global_config.h"
#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/iomgr.h"
#include "src/core/lib/iomgr/pollset.h"
+#include "src/core/lib/iomgr/pollset_set.h"
#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/surface/channel.h"
-#include "src/core/lib/surface/completion_queue.h"
#define DEFAULT_POLL_INTERVAL_MS 5000
@@ -52,7 +53,6 @@ struct backup_poller {
};
} // namespace
-static gpr_once g_once = GPR_ONCE_INIT;
static gpr_mu g_poller_mu;
static backup_poller* g_poller = nullptr; // guarded by g_poller_mu
// g_poll_interval_ms is set only once at the first time
@@ -71,7 +71,7 @@ GPR_GLOBAL_CONFIG_DEFINE_INT32(
"turn off the backup polls.");
void grpc_client_channel_global_init_backup_polling() {
- gpr_once_init(&g_once, [] { gpr_mu_init(&g_poller_mu); });
+ gpr_mu_init(&g_poller_mu);
int32_t poll_interval_ms =
GPR_GLOBAL_CONFIG_GET(grpc_client_channel_backup_poll_interval_ms);
if (poll_interval_ms < 0) {
@@ -117,7 +117,7 @@ static void g_poller_unref() {
static void run_poller(void* arg, grpc_error_handle error) {
backup_poller* p = static_cast<backup_poller*>(arg);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
if (error != GRPC_ERROR_CANCELLED) {
GRPC_LOG_IF_ERROR("run_poller", GRPC_ERROR_REF(error));
}
@@ -131,11 +131,11 @@ static void run_poller(void* arg, grpc_error_handle error) {
return;
}
grpc_error_handle err =
- grpc_pollset_work(p->pollset, nullptr, grpc_core::ExecCtx::Get()->Now());
+ grpc_pollset_work(p->pollset, nullptr, grpc_core::Timestamp::Now());
gpr_mu_unlock(p->pollset_mu);
GRPC_LOG_IF_ERROR("Run client channel backup poller", err);
grpc_timer_init(&p->polling_timer,
- grpc_core::ExecCtx::Get()->Now() + g_poll_interval,
+ grpc_core::Timestamp::Now() + g_poll_interval,
&p->run_poller_closure);
}
@@ -152,7 +152,7 @@ static void g_poller_init_locked() {
GRPC_CLOSURE_INIT(&g_poller->run_poller_closure, run_poller, g_poller,
grpc_schedule_on_exec_ctx);
grpc_timer_init(&g_poller->polling_timer,
- grpc_core::ExecCtx::Get()->Now() + g_poll_interval,
+ grpc_core::Timestamp::Now() + g_poll_interval,
&g_poller->run_poller_closure);
}
}
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/backup_poller.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/backup_poller.h
index ae47353a35..128f5b50b7 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/backup_poller.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/backup_poller.h
@@ -21,10 +21,8 @@
#include <grpc/support/port_platform.h>
-#include <grpc/grpc.h>
-
-#include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/gprpp/global_config.h"
+#include "src/core/lib/gprpp/global_config_generic.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
GPR_GLOBAL_CONFIG_DECLARE_INT32(grpc_client_channel_backup_poll_interval_ms);
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/channel_connectivity.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/channel_connectivity.cc
index e40cc0838f..010cda2890 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/channel_connectivity.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/channel_connectivity.cc
@@ -16,37 +16,58 @@
#include <grpc/support/port_platform.h>
+#include <inttypes.h>
+
+#include <grpc/grpc.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/log.h>
#include "src/core/ext/filters/client_channel/client_channel.h"
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/dual_ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/polling_entity.h"
#include "src/core/lib/iomgr/timer.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/channel.h"
#include "src/core/lib/surface/completion_queue.h"
#include "src/core/lib/surface/lame_client.h"
+namespace grpc_core {
namespace {
-bool IsLameChannel(grpc_channel* channel) {
+bool IsLameChannel(Channel* channel) {
grpc_channel_element* elem =
- grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
- return elem->filter == &grpc_lame_filter;
+ grpc_channel_stack_last_element(channel->channel_stack());
+ return elem->filter == &LameClientFilter::kFilter;
}
} // namespace
+} // namespace grpc_core
grpc_connectivity_state grpc_channel_check_connectivity_state(
- grpc_channel* channel, int try_to_connect) {
+ grpc_channel* c_channel, int try_to_connect) {
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
grpc_core::ExecCtx exec_ctx;
GRPC_API_TRACE(
"grpc_channel_check_connectivity_state(channel=%p, try_to_connect=%d)", 2,
- (channel, try_to_connect));
+ (c_channel, try_to_connect));
+ grpc_core::Channel* channel = grpc_core::Channel::FromC(c_channel);
// Forward through to the underlying client channel.
grpc_core::ClientChannel* client_channel =
grpc_core::ClientChannel::GetFromChannel(channel);
if (GPR_UNLIKELY(client_channel == nullptr)) {
- if (IsLameChannel(channel)) return GRPC_CHANNEL_TRANSIENT_FAILURE;
+ if (grpc_core::IsLameChannel(channel)) {
+ return GRPC_CHANNEL_TRANSIENT_FAILURE;
+ }
gpr_log(GPR_ERROR,
"grpc_channel_check_connectivity_state called on something that is "
"not a client channel");
@@ -55,11 +76,12 @@ grpc_connectivity_state grpc_channel_check_connectivity_state(
return client_channel->CheckConnectivityState(try_to_connect);
}
-int grpc_channel_num_external_connectivity_watchers(grpc_channel* channel) {
+int grpc_channel_num_external_connectivity_watchers(grpc_channel* c_channel) {
+ grpc_core::Channel* channel = grpc_core::Channel::FromC(c_channel);
grpc_core::ClientChannel* client_channel =
grpc_core::ClientChannel::GetFromChannel(channel);
if (client_channel == nullptr) {
- if (!IsLameChannel(channel)) {
+ if (!grpc_core::IsLameChannel(channel)) {
gpr_log(GPR_ERROR,
"grpc_channel_num_external_connectivity_watchers called on "
"something that is not a client channel");
@@ -70,7 +92,8 @@ int grpc_channel_num_external_connectivity_watchers(grpc_channel* channel) {
}
int grpc_channel_support_connectivity_watcher(grpc_channel* channel) {
- return grpc_core::ClientChannel::GetFromChannel(channel) != nullptr;
+ return grpc_core::ClientChannel::GetFromChannel(
+ grpc_core::Channel::FromC(channel)) != nullptr;
}
namespace grpc_core {
@@ -78,22 +101,25 @@ namespace {
class StateWatcher : public DualRefCounted<StateWatcher> {
public:
- StateWatcher(grpc_channel* channel, grpc_completion_queue* cq, void* tag,
+ StateWatcher(grpc_channel* c_channel, grpc_completion_queue* cq, void* tag,
grpc_connectivity_state last_observed_state,
gpr_timespec deadline)
- : channel_(channel), cq_(cq), tag_(tag), state_(last_observed_state) {
+ : channel_(Channel::FromC(c_channel)->Ref()),
+ cq_(cq),
+ tag_(tag),
+ state_(last_observed_state) {
GPR_ASSERT(grpc_cq_begin_op(cq, tag));
- GRPC_CHANNEL_INTERNAL_REF(channel, "watch_channel_connectivity");
GRPC_CLOSURE_INIT(&on_complete_, WatchComplete, this, nullptr);
GRPC_CLOSURE_INIT(&on_timeout_, TimeoutComplete, this, nullptr);
- ClientChannel* client_channel = ClientChannel::GetFromChannel(channel);
+ ClientChannel* client_channel =
+ ClientChannel::GetFromChannel(channel_.get());
if (client_channel == nullptr) {
// If the target URI used to create the channel was invalid, channel
// stack initialization failed, and that caused us to create a lame
// channel. In that case, connectivity state will never change (it
// will always be TRANSIENT_FAILURE), so we don't actually start a
// watch, but we are hiding that fact from the application.
- if (IsLameChannel(channel)) {
+ if (IsLameChannel(channel_.get())) {
// Ref from object creation is held by timer callback.
StartTimer(Timestamp::FromTimespecRoundUp(deadline));
return;
@@ -114,10 +140,6 @@ class StateWatcher : public DualRefCounted<StateWatcher> {
&on_complete_, watcher_timer_init_state->closure());
}
- ~StateWatcher() override {
- GRPC_CHANNEL_INTERNAL_UNREF(channel_, "watch_channel_connectivity");
- }
-
private:
// A fire-and-forget object used to delay starting the timer until the
// ClientChannel actually starts the watch.
@@ -157,10 +179,10 @@ class StateWatcher : public DualRefCounted<StateWatcher> {
static void TimeoutComplete(void* arg, grpc_error_handle error) {
auto* self = static_cast<StateWatcher*>(arg);
- self->timer_fired_ = error == GRPC_ERROR_NONE;
+ self->timer_fired_ = GRPC_ERROR_IS_NONE(error);
// If this is a client channel (not a lame channel), cancel the watch.
ClientChannel* client_channel =
- ClientChannel::GetFromChannel(self->channel_);
+ ClientChannel::GetFromChannel(self->channel_.get());
if (client_channel != nullptr) {
client_channel->CancelExternalConnectivityWatcher(&self->on_complete_);
}
@@ -184,7 +206,7 @@ class StateWatcher : public DualRefCounted<StateWatcher> {
self->WeakUnref();
}
- grpc_channel* channel_;
+ RefCountedPtr<Channel> channel_;
grpc_completion_queue* cq_;
void* tag_;
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel.cc
index 928b36891a..278da2aa9c 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel.cc
@@ -20,53 +20,66 @@
#include <inttypes.h>
#include <limits.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <string.h>
+#include <algorithm>
+#include <functional>
+#include <new>
#include <set>
+#include <vector>
-#include "y_absl/container/inlined_vector.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/cord.h"
#include "y_absl/strings/numbers.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_join.h"
#include "y_absl/strings/string_view.h"
#include "y_absl/types/optional.h"
+#include "y_absl/types/variant.h"
-#include <grpc/support/alloc.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/slice.h>
+#include <grpc/status.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
-#include <grpc/support/sync.h>
#include "src/core/ext/filters/client_channel/backend_metric.h"
#include "src/core/ext/filters/client_channel/backup_poller.h"
+#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
#include "src/core/ext/filters/client_channel/config_selector.h"
#include "src/core/ext/filters/client_channel/dynamic_filters.h"
#include "src/core/ext/filters/client_channel/global_subchannel_pool.h"
-#include "src/core/ext/filters/client_channel/http_connect_handshaker.h"
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
#include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
-#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
#include "src/core/ext/filters/client_channel/retry_filter.h"
#include "src/core/ext/filters/client_channel/subchannel.h"
+#include "src/core/ext/filters/client_channel/subchannel_interface_internal.h"
#include "src/core/ext/filters/deadline/deadline_filter.h"
-#include "src/core/lib/backoff/backoff.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/connected_channel.h"
+#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channel_trace.h"
#include "src/core/lib/channel/status_util.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/iomgr/iomgr.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/handshaker/proxy_mapper_registry.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/polling_entity.h"
-#include "src/core/lib/iomgr/work_serializer.h"
-#include "src/core/lib/profiling/timers.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
#include "src/core/lib/resolver/resolver_registry.h"
+#include "src/core/lib/resolver/server_address.h"
#include "src/core/lib/service_config/service_config_call_data.h"
#include "src/core/lib/service_config/service_config_impl.h"
#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/core/lib/surface/channel.h"
#include "src/core/lib/transport/connectivity_state.h"
#include "src/core/lib/transport/error_utils.h"
@@ -81,12 +94,11 @@
namespace grpc_core {
-using internal::ClientChannelGlobalParsedConfig;
using internal::ClientChannelMethodParsedConfig;
-using internal::ClientChannelServiceConfigParser;
+TraceFlag grpc_client_channel_trace(false, "client_channel");
TraceFlag grpc_client_channel_call_trace(false, "client_channel_call");
-TraceFlag grpc_client_channel_routing_trace(false, "client_channel_routing");
+TraceFlag grpc_client_channel_lb_call_trace(false, "client_channel_lb_call");
//
// ClientChannel::CallData definition
@@ -175,8 +187,6 @@ class ClientChannel::CallData {
static void RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
void* arg, grpc_error_handle error);
- void InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
- grpc_transport_stream_op_batch* batch);
void CreateDynamicCall(grpc_call_element* elem);
@@ -241,6 +251,7 @@ const grpc_channel_filter ClientChannel::kFilterVtable = {
ClientChannel::CallData::Destroy,
sizeof(ClientChannel),
ClientChannel::Init,
+ grpc_channel_stack_no_post_init,
ClientChannel::Destroy,
ClientChannel::GetChannelInfo,
"client-channel",
@@ -252,28 +263,6 @@ const grpc_channel_filter ClientChannel::kFilterVtable = {
namespace {
-// Channel arg pointer vtable for GRPC_ARG_CLIENT_CHANNEL.
-void* ClientChannelArgCopy(void* p) { return p; }
-void ClientChannelArgDestroy(void* /*p*/) {}
-int ClientChannelArgCmp(void* p, void* q) { return QsortCompare(p, q); }
-const grpc_arg_pointer_vtable kClientChannelArgPointerVtable = {
- ClientChannelArgCopy, ClientChannelArgDestroy, ClientChannelArgCmp};
-
-// Channel arg pointer vtable for GRPC_ARG_SERVICE_CONFIG_OBJ.
-void* ServiceConfigObjArgCopy(void* p) {
- auto* service_config = static_cast<ServiceConfig*>(p);
- service_config->Ref().release();
- return p;
-}
-void ServiceConfigObjArgDestroy(void* p) {
- auto* service_config = static_cast<ServiceConfig*>(p);
- service_config->Unref();
-}
-int ServiceConfigObjArgCmp(void* p, void* q) { return QsortCompare(p, q); }
-const grpc_arg_pointer_vtable kServiceConfigObjArgPointerVtable = {
- ServiceConfigObjArgCopy, ServiceConfigObjArgDestroy,
- ServiceConfigObjArgCmp};
-
class DynamicTerminationFilter {
public:
class CallData;
@@ -354,7 +343,7 @@ class DynamicTerminationFilter::CallData {
args, pollent, nullptr,
service_config_call_data->call_dispatch_controller(),
/*is_transparent_retry=*/false);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
gpr_log(GPR_INFO,
"chand=%p dynamic_termination_calld=%p: create lb_call=%p", chand,
client_channel, calld->lb_call_.get());
@@ -392,6 +381,7 @@ const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
DynamicTerminationFilter::CallData::Destroy,
sizeof(DynamicTerminationFilter),
DynamicTerminationFilter::Init,
+ grpc_channel_stack_no_post_init,
DynamicTerminationFilter::Destroy,
DynamicTerminationFilter::GetChannelInfo,
"dynamic_filter_termination",
@@ -410,7 +400,7 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
}
~ResolverResultHandler() override {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: resolver shutdown complete", chand_);
}
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ResolverResultHandler");
@@ -441,14 +431,13 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
public:
SubchannelWrapper(ClientChannel* chand, RefCountedPtr<Subchannel> subchannel,
y_absl::optional<TString> health_check_service_name)
- : SubchannelInterface(
- GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)
- ? "SubchannelWrapper"
- : nullptr),
+ : SubchannelInterface(GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)
+ ? "SubchannelWrapper"
+ : nullptr),
chand_(chand),
subchannel_(std::move(subchannel)),
health_check_service_name_(std::move(health_check_service_name)) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO,
"chand=%p: creating subchannel wrapper %p for subchannel %p",
chand, this, subchannel_.get());
@@ -470,7 +459,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
}
~SubchannelWrapper() override {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO,
"chand=%p: destroying subchannel wrapper %p for subchannel %p",
chand_, this, subchannel_.get());
@@ -492,21 +481,15 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "SubchannelWrapper");
}
- grpc_connectivity_state CheckConnectivityState() override {
- return subchannel_->CheckConnectivityState(health_check_service_name_);
- }
-
void WatchConnectivityState(
- grpc_connectivity_state initial_state,
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
auto& watcher_wrapper = watcher_map_[watcher.get()];
GPR_ASSERT(watcher_wrapper == nullptr);
watcher_wrapper = new WatcherWrapper(std::move(watcher),
- Ref(DEBUG_LOCATION, "WatcherWrapper"),
- initial_state);
+ Ref(DEBUG_LOCATION, "WatcherWrapper"));
subchannel_->WatchConnectivityState(
- initial_state, health_check_service_name_,
+ health_check_service_name_,
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
watcher_wrapper));
}
@@ -524,14 +507,21 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
return subchannel_->connected_subchannel();
}
- void AttemptToConnect() override { subchannel_->AttemptToConnect(); }
+ void RequestConnection() override { subchannel_->RequestConnection(); }
void ResetBackoff() override { subchannel_->ResetBackoff(); }
- const grpc_channel_args* channel_args() override {
- return subchannel_->channel_args();
+ void AddDataWatcher(std::unique_ptr<DataWatcherInterface> watcher) override
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
+ std::unique_ptr<InternalSubchannelDataWatcherInterface> internal_watcher(
+ static_cast<InternalSubchannelDataWatcherInterface*>(
+ watcher.release()));
+ internal_watcher->SetSubchannel(subchannel_.get());
+ data_watchers_.push_back(std::move(internal_watcher));
}
+ ChannelArgs channel_args() override { return subchannel_->channel_args(); }
+
void ThrottleKeepaliveTime(int new_keepalive_time) {
subchannel_->ThrottleKeepaliveTime(new_keepalive_time);
}
@@ -556,11 +546,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
WatcherWrapper(
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
watcher,
- RefCountedPtr<SubchannelWrapper> parent,
- grpc_connectivity_state initial_state)
- : watcher_(std::move(watcher)),
- parent_(std::move(parent)),
- last_seen_state_(initial_state) {}
+ RefCountedPtr<SubchannelWrapper> parent)
+ : watcher_(std::move(watcher)), parent_(std::move(parent)) {}
~WatcherWrapper() override {
auto* parent = parent_.release(); // ref owned by lambda
@@ -573,7 +560,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
}
void OnConnectivityStateChange() override {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO,
"chand=%p: connectivity change for subchannel wrapper %p "
"subchannel %p; hopping into work_serializer",
@@ -597,18 +584,15 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
}
WatcherWrapper* MakeReplacement() {
- auto* replacement =
- new WatcherWrapper(std::move(watcher_), parent_, last_seen_state_);
+ auto* replacement = new WatcherWrapper(std::move(watcher_), parent_);
replacement_ = replacement;
return replacement;
}
- grpc_connectivity_state last_seen_state() const { return last_seen_state_; }
-
private:
void ApplyUpdateInControlPlaneWorkSerializer()
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(*parent_->chand_->work_serializer_) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO,
"chand=%p: processing connectivity change in work serializer "
"for subchannel wrapper %p subchannel %p "
@@ -625,7 +609,7 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
&new_keepalive_time)) {
if (new_keepalive_time > parent_->chand_->keepalive_time_) {
parent_->chand_->keepalive_time_ = new_keepalive_time;
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: throttling keepalive time to %d",
parent_->chand_, parent_->chand_->keepalive_time_);
}
@@ -646,15 +630,21 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
// Ignore update if the parent WatcherWrapper has been replaced
// since this callback was scheduled.
if (watcher_ != nullptr) {
- last_seen_state_ = state_change.state;
- watcher_->OnConnectivityStateChange(state_change.state);
+ // Propagate status only in state TF.
+ // We specifically want to avoid propagating the status for
+ // state IDLE that the real subchannel gave us only for the
+ // purpose of keepalive propagation.
+ if (state_change.state != GRPC_CHANNEL_TRANSIENT_FAILURE) {
+ state_change.status = y_absl::OkStatus();
+ }
+ watcher_->OnConnectivityStateChange(state_change.state,
+ state_change.status);
}
}
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
watcher_;
RefCountedPtr<SubchannelWrapper> parent_;
- grpc_connectivity_state last_seen_state_;
WatcherWrapper* replacement_ = nullptr;
};
@@ -668,6 +658,8 @@ class ClientChannel::SubchannelWrapper : public SubchannelInterface {
// corresponding WrapperWatcher to cancel on the underlying subchannel.
std::map<ConnectivityStateWatcherInterface*, WatcherWrapper*> watcher_map_
Y_ABSL_GUARDED_BY(*chand_->work_serializer_);
+ std::vector<std::unique_ptr<InternalSubchannelDataWatcherInterface>>
+ data_watchers_ Y_ABSL_GUARDED_BY(*chand_->work_serializer_);
};
//
@@ -745,10 +737,14 @@ void ClientChannel::ExternalConnectivityWatcher::Notify(
// Hop back into the work_serializer to clean up.
// Not needed in state SHUTDOWN, because the tracker will
// automatically remove all watchers in that case.
+ // Note: The callback takes a ref in case the ref inside the state tracker
+ // gets removed before the callback runs via a SHUTDOWN notification.
if (state != GRPC_CHANNEL_SHUTDOWN) {
+ Ref(DEBUG_LOCATION, "RemoveWatcherLocked()").release();
chand_->work_serializer_->Run(
[this]() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
RemoveWatcherLocked();
+ Unref(DEBUG_LOCATION, "RemoveWatcherLocked()");
},
DEBUG_LOCATION);
}
@@ -762,9 +758,13 @@ void ClientChannel::ExternalConnectivityWatcher::Cancel() {
}
ExecCtx::Run(DEBUG_LOCATION, on_complete_, GRPC_ERROR_CANCELLED);
// Hop back into the work_serializer to clean up.
+ // Note: The callback takes a ref in case the ref inside the state tracker
+ // gets removed before the callback runs via a SHUTDOWN notification.
+ Ref(DEBUG_LOCATION, "RemoveWatcherLocked()").release();
chand_->work_serializer_->Run(
[this]() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
RemoveWatcherLocked();
+ Unref(DEBUG_LOCATION, "RemoveWatcherLocked()");
},
DEBUG_LOCATION);
}
@@ -860,67 +860,23 @@ class ClientChannel::ClientChannelControlHelper
}
RefCountedPtr<SubchannelInterface> CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) override
+ ServerAddress address, const ChannelArgs& args) override
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
if (chand_->resolver_ == nullptr) return nullptr; // Shutting down.
// Determine health check service name.
y_absl::optional<TString> health_check_service_name;
- const char* health_check_service_name_arg = grpc_channel_args_find_string(
- &args, GRPC_ARG_HEALTH_CHECK_SERVICE_NAME);
- if (health_check_service_name_arg != nullptr) {
- bool inhibit_health_checking = grpc_channel_args_find_bool(
- &args, GRPC_ARG_INHIBIT_HEALTH_CHECKING, false);
- if (!inhibit_health_checking) {
- health_check_service_name = health_check_service_name_arg;
- }
+ if (!args.GetBool(GRPC_ARG_INHIBIT_HEALTH_CHECKING).value_or(false)) {
+ health_check_service_name =
+ args.GetOwnedString(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME);
}
// Construct channel args for subchannel.
- // Remove channel args that should not affect subchannel uniqueness.
- y_absl::InlinedVector<const char*, 4> args_to_remove = {
- GRPC_ARG_HEALTH_CHECK_SERVICE_NAME,
- GRPC_ARG_INHIBIT_HEALTH_CHECKING,
- GRPC_ARG_CHANNELZ_CHANNEL_NODE,
- };
- // Add channel args needed for the subchannel.
- y_absl::InlinedVector<grpc_arg, 2> args_to_add = {
- SubchannelPoolInterface::CreateChannelArg(
- chand_->subchannel_pool_.get()),
- };
- // Check if default authority arg is already set.
- const char* default_authority =
- grpc_channel_args_find_string(&args, GRPC_ARG_DEFAULT_AUTHORITY);
- // Add args from subchannel address.
- if (address.args() != nullptr) {
- for (size_t j = 0; j < address.args()->num_args; ++j) {
- grpc_arg& arg = address.args()->args[j];
- if (strcmp(arg.key, GRPC_ARG_DEFAULT_AUTHORITY) == 0) {
- // Don't add default authority arg from subchannel address if
- // it's already set at the channel level -- the value from the
- // application should take precedence over what is set by the
- // resolver.
- if (default_authority != nullptr) continue;
- default_authority = arg.value.string;
- }
- args_to_add.emplace_back(arg);
- }
- }
- // If we haven't already set the default authority arg, add it from
- // the channel.
- if (default_authority == nullptr) {
- // Remove it, just in case it's actually present but is the wrong type.
- args_to_remove.push_back(GRPC_ARG_DEFAULT_AUTHORITY);
- args_to_add.push_back(grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
- const_cast<char*>(chand_->default_authority_.c_str())));
- }
- grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
- &args, args_to_remove.data(), args_to_remove.size(), args_to_add.data(),
- args_to_add.size());
+ ChannelArgs subchannel_args = ClientChannel::MakeSubchannelArgs(
+ args, address.args(), chand_->subchannel_pool_,
+ chand_->default_authority_);
// Create subchannel.
RefCountedPtr<Subchannel> subchannel =
chand_->client_channel_factory_->CreateSubchannel(address.address(),
- new_args);
- grpc_channel_args_destroy(new_args);
+ subchannel_args);
if (subchannel == nullptr) return nullptr;
// Make sure the subchannel has updated keepalive time.
subchannel->ThrottleKeepaliveTime(chand_->keepalive_time_);
@@ -934,8 +890,8 @@ class ClientChannel::ClientChannelControlHelper
std::unique_ptr<LoadBalancingPolicy::SubchannelPicker> picker) override
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
if (chand_->resolver_ == nullptr) return; // Shutting down.
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
- const char* extra = chand_->disconnect_error_ == GRPC_ERROR_NONE
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
+ const char* extra = GRPC_ERROR_IS_NONE(chand_->disconnect_error_)
? ""
: " (ignoring -- channel shutting down)";
gpr_log(GPR_INFO, "chand=%p: update: state=%s status=(%s) picker=%p%s",
@@ -943,7 +899,7 @@ class ClientChannel::ClientChannelControlHelper
picker.get(), extra);
}
// Do update only if not shutting down.
- if (chand_->disconnect_error_ == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(chand_->disconnect_error_)) {
chand_->UpdateStateAndPickerLocked(state, status, "helper",
std::move(picker));
}
@@ -952,7 +908,7 @@ class ClientChannel::ClientChannelControlHelper
void RequestReresolution() override
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
if (chand_->resolver_ == nullptr) return; // Shutting down.
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: started name re-resolving", chand_);
}
chand_->resolver_->RequestReresolutionLocked();
@@ -987,9 +943,9 @@ class ClientChannel::ClientChannelControlHelper
// ClientChannel implementation
//
-ClientChannel* ClientChannel::GetFromChannel(grpc_channel* channel) {
+ClientChannel* ClientChannel::GetFromChannel(Channel* channel) {
grpc_channel_element* elem =
- grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
+ grpc_channel_stack_last_element(channel->channel_stack());
if (elem->filter != &kFilterVtable) return nullptr;
return static_cast<ClientChannel*>(elem->channel_data);
}
@@ -1011,37 +967,29 @@ void ClientChannel::Destroy(grpc_channel_element* elem) {
namespace {
RefCountedPtr<SubchannelPoolInterface> GetSubchannelPool(
- const grpc_channel_args* args) {
- const bool use_local_subchannel_pool = grpc_channel_args_find_bool(
- args, GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL, false);
- if (use_local_subchannel_pool) {
+ const ChannelArgs& args) {
+ if (args.GetBool(GRPC_ARG_USE_LOCAL_SUBCHANNEL_POOL).value_or(false)) {
return MakeRefCounted<LocalSubchannelPool>();
}
return GlobalSubchannelPool::instance();
}
-channelz::ChannelNode* GetChannelzNode(const grpc_channel_args* args) {
- return grpc_channel_args_find_pointer<channelz::ChannelNode>(
- args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
-}
-
} // namespace
ClientChannel::ClientChannel(grpc_channel_element_args* args,
grpc_error_handle* error)
- : deadline_checking_enabled_(
- grpc_deadline_checking_enabled(args->channel_args)),
+ : channel_args_(ChannelArgs::FromC(args->channel_args)),
+ deadline_checking_enabled_(grpc_deadline_checking_enabled(channel_args_)),
owning_stack_(args->channel_stack),
- client_channel_factory_(
- ClientChannelFactory::GetFromChannelArgs(args->channel_args)),
- channelz_node_(GetChannelzNode(args->channel_args)),
+ client_channel_factory_(channel_args_.GetObject<ClientChannelFactory>()),
+ channelz_node_(channel_args_.GetObject<channelz::ChannelNode>()),
interested_parties_(grpc_pollset_set_create()),
service_config_parser_index_(
internal::ClientChannelServiceConfigParser::ParserIndex()),
work_serializer_(std::make_shared<WorkSerializer>()),
state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
- subchannel_pool_(GetSubchannelPool(args->channel_args)) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ subchannel_pool_(GetSubchannelPool(channel_args_)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: creating client_channel for channel stack %p",
this, owning_stack_);
}
@@ -1055,34 +1003,30 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
}
// Get default service config. If none is specified via the client API,
// we use an empty config.
- const char* service_config_json = grpc_channel_args_find_string(
- args->channel_args, GRPC_ARG_SERVICE_CONFIG);
- if (service_config_json == nullptr) service_config_json = "{}";
+ y_absl::optional<y_absl::string_view> service_config_json =
+ channel_args_.GetString(GRPC_ARG_SERVICE_CONFIG);
+ if (!service_config_json.has_value()) service_config_json = "{}";
*error = GRPC_ERROR_NONE;
- default_service_config_ =
- ServiceConfigImpl::Create(args->channel_args, service_config_json, error);
- if (*error != GRPC_ERROR_NONE) {
- default_service_config_.reset();
+ auto service_config =
+ ServiceConfigImpl::Create(channel_args_, *service_config_json);
+ if (!service_config.ok()) {
+ *error = absl_status_to_grpc_error(service_config.status());
return;
}
+ default_service_config_ = std::move(*service_config);
// Get URI to resolve, using proxy mapper if needed.
- const char* server_uri =
- grpc_channel_args_find_string(args->channel_args, GRPC_ARG_SERVER_URI);
- if (server_uri == nullptr) {
+ y_absl::optional<TString> server_uri =
+ channel_args_.GetOwnedString(GRPC_ARG_SERVER_URI);
+ if (!server_uri.has_value()) {
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"target URI channel arg missing or wrong type in client channel "
"filter");
return;
}
- uri_to_resolve_ = server_uri;
- char* proxy_name = nullptr;
- grpc_channel_args* new_args = nullptr;
- ProxyMapperRegistry::MapName(server_uri, args->channel_args, &proxy_name,
- &new_args);
- if (proxy_name != nullptr) {
- uri_to_resolve_ = proxy_name;
- gpr_free(proxy_name);
- }
+ uri_to_resolve_ = CoreConfiguration::Get()
+ .proxy_mapper_registry()
+ .MapName(*server_uri, &channel_args_)
+ .value_or(*server_uri);
// Make sure the URI to resolve is valid, so that we know that
// resolver creation will succeed later.
if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
@@ -1093,34 +1037,33 @@ ClientChannel::ClientChannel(grpc_channel_element_args* args,
}
// Strip out service config channel arg, so that it doesn't affect
// subchannel uniqueness when the args flow down to that layer.
- const char* arg_to_remove = GRPC_ARG_SERVICE_CONFIG;
- channel_args_ = grpc_channel_args_copy_and_remove(
- new_args != nullptr ? new_args : args->channel_args, &arg_to_remove, 1);
- grpc_channel_args_destroy(new_args);
+ channel_args_ = channel_args_.Remove(GRPC_ARG_SERVICE_CONFIG);
// Set initial keepalive time.
- keepalive_time_ = grpc_channel_args_find_integer(
- channel_args_, GRPC_ARG_KEEPALIVE_TIME_MS,
- {-1 /* default value, unset */, 1, INT_MAX});
+ auto keepalive_arg = channel_args_.GetInt(GRPC_ARG_KEEPALIVE_TIME_MS);
+ if (keepalive_arg.has_value()) {
+ keepalive_time_ = Clamp(*keepalive_arg, 1, INT_MAX);
+ } else {
+ keepalive_time_ = -1; // unset
+ }
// Set default authority.
- const char* default_authority =
- grpc_channel_args_find_string(channel_args_, GRPC_ARG_DEFAULT_AUTHORITY);
- if (default_authority == nullptr) {
+ y_absl::optional<TString> default_authority =
+ channel_args_.GetOwnedString(GRPC_ARG_DEFAULT_AUTHORITY);
+ if (!default_authority.has_value()) {
default_authority_ =
CoreConfiguration::Get().resolver_registry().GetDefaultAuthority(
- server_uri);
+ *server_uri);
} else {
- default_authority_ = default_authority;
+ default_authority_ = std::move(*default_authority);
}
// Success.
*error = GRPC_ERROR_NONE;
}
ClientChannel::~ClientChannel() {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: destroying channel", this);
}
DestroyResolverAndLbPolicyLocked();
- grpc_channel_args_destroy(channel_args_);
// Stop backup polling.
grpc_client_channel_stop_backup_polling(interested_parties_);
grpc_pollset_set_destroy(interested_parties_);
@@ -1138,6 +1081,29 @@ ClientChannel::CreateLoadBalancedCall(
call_dispatch_controller, is_transparent_retry));
}
+ChannelArgs ClientChannel::MakeSubchannelArgs(
+ const ChannelArgs& channel_args, const ChannelArgs& address_args,
+ const RefCountedPtr<SubchannelPoolInterface>& subchannel_pool,
+ const TString& channel_default_authority) {
+ // Note that we start with the channel-level args and then apply the
+ // per-address args, so that if a value is present in both, the one
+ // in the channel-level args is used. This is particularly important
+ // for the GRPC_ARG_DEFAULT_AUTHORITY arg, which we want to allow
+ // resolvers to set on a per-address basis only if the application
+ // did not explicitly set it at the channel level.
+ return channel_args.UnionWith(address_args)
+ .SetObject(subchannel_pool)
+ // If we haven't already set the default authority arg (i.e., it
+ // was not explicitly set by the application nor overridden by
+ // the resolver), add it from the channel's default.
+ .SetIfUnset(GRPC_ARG_DEFAULT_AUTHORITY, channel_default_authority)
+ // Remove channel args that should not affect subchannel
+ // uniqueness.
+ .Remove(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME)
+ .Remove(GRPC_ARG_INHIBIT_HEALTH_CHECKING)
+ .Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE);
+}
+
namespace {
RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
@@ -1149,41 +1115,41 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
}
// Try the deprecated LB policy name from the service config.
// If not, try the setting from channel args.
- const char* policy_name = nullptr;
+ y_absl::optional<y_absl::string_view> policy_name;
if (!parsed_service_config->parsed_deprecated_lb_policy().empty()) {
- policy_name = parsed_service_config->parsed_deprecated_lb_policy().c_str();
+ policy_name = parsed_service_config->parsed_deprecated_lb_policy();
} else {
- policy_name = grpc_channel_args_find_string(resolver_result.args,
- GRPC_ARG_LB_POLICY_NAME);
+ policy_name = resolver_result.args.GetString(GRPC_ARG_LB_POLICY_NAME);
bool requires_config = false;
- if (policy_name != nullptr &&
- (!LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
- policy_name, &requires_config) ||
+ if (policy_name.has_value() &&
+ (!CoreConfiguration::Get()
+ .lb_policy_registry()
+ .LoadBalancingPolicyExists(*policy_name, &requires_config) ||
requires_config)) {
if (requires_config) {
gpr_log(GPR_ERROR,
"LB policy: %s passed through channel_args must not "
"require a config. Using pick_first instead.",
- policy_name);
+ TString(*policy_name).c_str());
} else {
gpr_log(GPR_ERROR,
"LB policy: %s passed through channel_args does not exist. "
"Using pick_first instead.",
- policy_name);
+ TString(*policy_name).c_str());
}
policy_name = "pick_first";
}
}
// Use pick_first if nothing was specified and we didn't select grpclb
// above.
- if (policy_name == nullptr) policy_name = "pick_first";
+ if (!policy_name.has_value()) policy_name = "pick_first";
// Now that we have the policy name, construct an empty config for it.
Json config_json = Json::Array{Json::Object{
- {policy_name, Json::Object{}},
+ {TString(*policy_name), Json::Object{}},
}};
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
- auto lb_policy_config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
- config_json, &parse_error);
+ auto lb_policy_config =
+ CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
+ config_json);
// The policy name came from one of three places:
// - The deprecated loadBalancingPolicy field in the service config,
// in which case the code in ClientChannelServiceConfigParser
@@ -1193,9 +1159,8 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
// - A channel arg, in which case we check that the specified policy exists
// and accepts an empty config. If not, we revert to using pick_first
// lb_policy
- GPR_ASSERT(lb_policy_config != nullptr);
- GPR_ASSERT(parse_error == GRPC_ERROR_NONE);
- return lb_policy_config;
+ GPR_ASSERT(lb_policy_config.ok());
+ return std::move(*lb_policy_config);
}
} // namespace
@@ -1203,9 +1168,12 @@ RefCountedPtr<LoadBalancingPolicy::Config> ChooseLbPolicy(
void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
// Handle race conditions.
if (resolver_ == nullptr) return;
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: got resolver result", this);
}
+ // Grab resolver result health callback.
+ auto resolver_callback = std::move(result.result_health_callback);
+ y_absl::Status resolver_result_status;
// We only want to trace the address resolution in the follow cases:
// (a) Address resolution resulted in service config change.
// (b) Address resolution that causes number of backends to go from
@@ -1215,7 +1183,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
// (d) Address resolution that causes a new LB policy to be created.
//
// We track a list of strings to eventually be concatenated and traced.
- y_absl::InlinedVector<const char*, 3> trace_strings;
+ std::vector<const char*> trace_strings;
const bool resolution_contains_addresses =
result.addresses.ok() && !result.addresses->empty();
if (!resolution_contains_addresses &&
@@ -1236,14 +1204,14 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
RefCountedPtr<ServiceConfig> service_config;
RefCountedPtr<ConfigSelector> config_selector;
if (!result.service_config.ok()) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: resolver returned service config error: %s",
this, result.service_config.status().ToString().c_str());
}
// If the service config was invalid, then fallback to the
// previously returned service config.
if (saved_service_config_ != nullptr) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO,
"chand=%p: resolver returned invalid service config. "
"Continuing to use previous service config.",
@@ -1257,10 +1225,12 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
// TRANSIENT_FAILURE.
OnResolverErrorLocked(result.service_config.status());
trace_strings.push_back("no valid service config");
+ resolver_result_status =
+ y_absl::UnavailableError("no valid service config");
}
} else if (*result.service_config == nullptr) {
// Resolver did not return any service config.
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO,
"chand=%p: resolver returned no service config. Using default "
"service config for channel.",
@@ -1270,7 +1240,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
} else {
// Use ServiceConfig and ConfigSelector returned by resolver.
service_config = std::move(*result.service_config);
- config_selector = ConfigSelector::GetFromChannelArgs(*result.args);
+ config_selector = result.args.GetObjectRef<ConfigSelector>();
}
// Note: The only case in which service_config is null here is if the resolver
// returned a service config error and we don't have a previous service
@@ -1294,14 +1264,14 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
// If either has changed, apply the global parameters now.
if (service_config_changed || config_selector_changed) {
// Update service config in control plane.
- UpdateServiceConfigInControlPlaneLocked(std::move(service_config),
- std::move(config_selector),
- lb_policy_config->name());
- } else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ UpdateServiceConfigInControlPlaneLocked(
+ std::move(service_config), std::move(config_selector),
+ TString(lb_policy_config->name()));
+ } else if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: service config not changed", this);
}
// Create or update LB policy, as needed.
- CreateOrUpdateLbPolicyLocked(
+ resolver_result_status = CreateOrUpdateLbPolicyLocked(
std::move(lb_policy_config),
parsed_service_config->health_check_service_name(), std::move(result));
if (service_config_changed || config_selector_changed) {
@@ -1315,6 +1285,10 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
trace_strings.push_back("Service config changed");
}
}
+ // Invoke resolver callback if needed.
+ if (resolver_callback != nullptr) {
+ resolver_callback(std::move(resolver_result_status));
+ }
// Add channel trace event.
if (!trace_strings.empty()) {
TString message =
@@ -1328,7 +1302,7 @@ void ClientChannel::OnResolverResultChangedLocked(Resolver::Result result) {
void ClientChannel::OnResolverErrorLocked(y_absl::Status status) {
if (resolver_ == nullptr) return;
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: resolver transient failure: %s", this,
status.ToString().c_str());
}
@@ -1340,7 +1314,8 @@ void ClientChannel::OnResolverErrorLocked(y_absl::Status status) {
{
MutexLock lock(&resolution_mu_);
// Update resolver transient failure.
- resolver_transient_failure_error_ = status;
+ resolver_transient_failure_error_ =
+ MaybeRewriteIllegalStatusCode(status, "resolver");
// Process calls that were queued waiting for the resolver result.
for (ResolverQueuedCall* call = resolver_queued_calls_; call != nullptr;
call = call->next) {
@@ -1360,7 +1335,7 @@ void ClientChannel::OnResolverErrorLocked(y_absl::Status status) {
}
}
-void ClientChannel::CreateOrUpdateLbPolicyLocked(
+y_absl::Status ClientChannel::CreateOrUpdateLbPolicyLocked(
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config,
const y_absl::optional<TString>& health_check_service_name,
Resolver::Result result) {
@@ -1369,43 +1344,39 @@ void ClientChannel::CreateOrUpdateLbPolicyLocked(
update_args.addresses = std::move(result.addresses);
update_args.config = std::move(lb_policy_config);
update_args.resolution_note = std::move(result.resolution_note);
- // Add health check service name to channel args.
- y_absl::InlinedVector<grpc_arg, 1> args_to_add;
- if (health_check_service_name.has_value()) {
- args_to_add.push_back(grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME),
- const_cast<char*>(health_check_service_name->c_str())));
- }
// Remove the config selector from channel args so that we're not holding
// unnecessary refs that cause it to be destroyed somewhere other than in the
// WorkSerializer.
- const char* arg_to_remove = GRPC_ARG_CONFIG_SELECTOR;
- update_args.args = grpc_channel_args_copy_and_add_and_remove(
- result.args, &arg_to_remove, 1, args_to_add.data(), args_to_add.size());
+ update_args.args = result.args.Remove(GRPC_ARG_CONFIG_SELECTOR);
+ // Add health check service name to channel args.
+ if (health_check_service_name.has_value()) {
+ update_args.args = update_args.args.Set(GRPC_ARG_HEALTH_CHECK_SERVICE_NAME,
+ *health_check_service_name);
+ }
// Create policy if needed.
if (lb_policy_ == nullptr) {
- lb_policy_ = CreateLbPolicyLocked(*update_args.args);
+ lb_policy_ = CreateLbPolicyLocked(update_args.args);
}
// Update the policy.
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: Updating child policy %p", this,
lb_policy_.get());
}
- lb_policy_->UpdateLocked(std::move(update_args));
+ return lb_policy_->UpdateLocked(std::move(update_args));
}
// Creates a new LB policy.
OrphanablePtr<LoadBalancingPolicy> ClientChannel::CreateLbPolicyLocked(
- const grpc_channel_args& args) {
+ const ChannelArgs& args) {
LoadBalancingPolicy::Args lb_policy_args;
lb_policy_args.work_serializer = work_serializer_;
lb_policy_args.channel_control_helper =
y_absl::make_unique<ClientChannelControlHelper>(this);
- lb_policy_args.args = &args;
+ lb_policy_args.args = args;
OrphanablePtr<LoadBalancingPolicy> lb_policy =
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
- &grpc_client_channel_routing_trace);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ &grpc_client_channel_trace);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: created new LB policy %p", this,
lb_policy.get());
}
@@ -1442,9 +1413,8 @@ void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
RefCountedPtr<ServiceConfig> service_config,
RefCountedPtr<ConfigSelector> config_selector, TString lb_policy_name) {
TString service_config_json(service_config->json_string());
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
- gpr_log(GPR_INFO,
- "chand=%p: resolver returned updated service config: \"%s\"", this,
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
+ gpr_log(GPR_INFO, "chand=%p: using service config: \"%s\"", this,
service_config_json.c_str());
}
// Save service config.
@@ -1457,7 +1427,7 @@ void ClientChannel::UpdateServiceConfigInControlPlaneLocked(
}
// Save config selector.
saved_config_selector_ = std::move(config_selector);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: using ConfigSelector %p", this,
saved_config_selector_.get());
}
@@ -1468,7 +1438,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
RefCountedPtr<ServiceConfig> service_config = saved_service_config_;
// Grab ref to config selector. Use default if resolver didn't supply one.
RefCountedPtr<ConfigSelector> config_selector = saved_config_selector_;
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: switching to ConfigSelector %p", this,
saved_config_selector_.get());
}
@@ -1476,19 +1446,11 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
config_selector =
MakeRefCounted<DefaultConfigSelector>(saved_service_config_);
}
- y_absl::InlinedVector<grpc_arg, 2> args_to_add = {
- grpc_channel_arg_pointer_create(
- const_cast<char*>(GRPC_ARG_CLIENT_CHANNEL), this,
- &kClientChannelArgPointerVtable),
- grpc_channel_arg_pointer_create(
- const_cast<char*>(GRPC_ARG_SERVICE_CONFIG_OBJ), service_config.get(),
- &kServiceConfigObjArgPointerVtable),
- };
- grpc_channel_args* new_args = grpc_channel_args_copy_and_add(
- channel_args_, args_to_add.data(), args_to_add.size());
- new_args = config_selector->ModifyChannelArgs(new_args);
+ ChannelArgs new_args = config_selector->ModifyChannelArgs(
+ channel_args_.SetObject(this).SetObject(service_config));
bool enable_retries =
- grpc_channel_args_find_bool(new_args, GRPC_ARG_ENABLE_RETRIES, true);
+ !new_args.WantMinimalStack() &&
+ new_args.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true);
// Construct dynamic filter stack.
std::vector<const grpc_channel_filter*> filters =
config_selector->GetFilters();
@@ -1498,9 +1460,8 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
filters.push_back(&DynamicTerminationFilter::kFilterVtable);
}
RefCountedPtr<DynamicFilters> dynamic_filters =
- DynamicFilters::Create(new_args, std::move(filters));
+ DynamicFilters::Create(new_args.ToC().get(), std::move(filters));
GPR_ASSERT(dynamic_filters != nullptr);
- grpc_channel_args_destroy(new_args);
// Grab data plane lock to update service config.
//
// We defer unreffing the old values (and deallocating memory) until
@@ -1539,7 +1500,7 @@ void ClientChannel::UpdateServiceConfigInDataPlaneLocked() {
}
void ClientChannel::CreateResolverLocked() {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: starting name resolution", this);
}
resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
@@ -1552,20 +1513,20 @@ void ClientChannel::CreateResolverLocked() {
GRPC_CHANNEL_CONNECTING, y_absl::Status(), "started resolving",
y_absl::make_unique<LoadBalancingPolicy::QueuePicker>(nullptr));
resolver_->StartLocked();
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: created resolver=%p", this, resolver_.get());
}
}
void ClientChannel::DestroyResolverAndLbPolicyLocked() {
if (resolver_ != nullptr) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: shutting down resolver=%p", this,
resolver_.get());
}
resolver_.reset();
if (lb_policy_ != nullptr) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: shutting down lb_policy=%p", this,
lb_policy_.get());
}
@@ -1686,6 +1647,10 @@ grpc_error_handle ClientChannel::DoPingLocked(grpc_transport_op* op) {
complete_pick->subchannel.get());
RefCountedPtr<ConnectedSubchannel> connected_subchannel =
subchannel->connected_subchannel();
+ if (connected_subchannel == nullptr) {
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "LB pick for ping not connected");
+ }
connected_subchannel->Ping(op->send_ping.on_initiate,
op->send_ping.on_ack);
return GRPC_ERROR_NONE;
@@ -1716,7 +1681,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
// Ping.
if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
grpc_error_handle error = DoPingLocked(op);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate,
GRPC_ERROR_REF(error));
ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_ack, error);
@@ -1732,8 +1697,8 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
}
}
// Disconnect or enter IDLE.
- if (op->disconnect_with_error != GRPC_ERROR_NONE) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
+ if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
grpc_error_std_string(op->disconnect_with_error).c_str());
}
@@ -1742,7 +1707,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
if (grpc_error_get_int(op->disconnect_with_error,
GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE, &value) &&
static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
- if (disconnect_error_ == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(disconnect_error_)) {
// Enter IDLE state.
UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, y_absl::Status(),
"channel entering IDLE", nullptr);
@@ -1750,7 +1715,7 @@ void ClientChannel::StartTransportOpLocked(grpc_transport_op* op) {
GRPC_ERROR_UNREF(op->disconnect_with_error);
} else {
// Disconnect.
- GPR_ASSERT(disconnect_error_ == GRPC_ERROR_NONE);
+ GPR_ASSERT(GRPC_ERROR_IS_NONE(disconnect_error_));
disconnect_error_ = op->disconnect_with_error;
UpdateStateAndPickerLocked(
GRPC_CHANNEL_SHUTDOWN, y_absl::Status(), "shutdown from API",
@@ -1908,9 +1873,13 @@ void ClientChannel::CallData::Destroy(
void ClientChannel::CallData::StartTransportStreamOpBatch(
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
- GPR_TIMER_SCOPE("cc_start_transport_stream_op_batch", 0);
CallData* calld = static_cast<CallData*>(elem->call_data);
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace) &&
+ !GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
+ gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from above: %s", chand,
+ calld, grpc_transport_stream_op_batch_string(batch).c_str());
+ }
if (GPR_LIKELY(chand->deadline_checking_enabled_)) {
grpc_deadline_state_client_start_transport_stream_op_batch(elem, batch);
}
@@ -1918,8 +1887,13 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
// in case we wind up failing the call before we get down to the retry
// or LB call layer.
if (batch->recv_trailing_metadata) {
- calld->InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
- batch);
+ calld->original_recv_trailing_metadata_ready_ =
+ batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
+ GRPC_CLOSURE_INIT(&calld->recv_trailing_metadata_ready_,
+ RecvTrailingMetadataReadyForConfigSelectorCommitCallback,
+ elem, nullptr);
+ batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
+ &calld->recv_trailing_metadata_ready_;
}
// If we already have a dynamic call, pass the batch down to it.
// Note that once we have done so, we do not need to acquire the channel's
@@ -1935,7 +1909,7 @@ void ClientChannel::CallData::StartTransportStreamOpBatch(
// We do not yet have a dynamic call.
//
// If we've previously been cancelled, immediately fail any new batches.
- if (GPR_UNLIKELY(calld->cancel_error_ != GRPC_ERROR_NONE)) {
+ if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(calld->cancel_error_))) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
gpr_log(GPR_INFO, "chand=%p calld=%p: failing batch with error: %s",
chand, calld,
@@ -2047,7 +2021,7 @@ void ClientChannel::CallData::FailPendingBatchInCallCombiner(
void ClientChannel::CallData::PendingBatchesFail(
grpc_call_element* elem, grpc_error_handle error,
YieldCallCombinerPredicate yield_call_combiner_predicate) {
- GPR_ASSERT(error != GRPC_ERROR_NONE);
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
size_t num_batches = 0;
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
@@ -2144,14 +2118,15 @@ class ClientChannel::CallData::ResolverQueuedCallCanceller {
auto* calld = static_cast<CallData*>(self->elem_->call_data);
{
MutexLock lock(&chand->resolution_mu_);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
gpr_log(GPR_INFO,
"chand=%p calld=%p: cancelling resolver queued pick: "
"error=%s self=%p calld->resolver_pick_canceller=%p",
chand, calld, grpc_error_std_string(error).c_str(), self,
calld->resolver_call_canceller_);
}
- if (calld->resolver_call_canceller_ == self && error != GRPC_ERROR_NONE) {
+ if (calld->resolver_call_canceller_ == self &&
+ !GRPC_ERROR_IS_NONE(error)) {
// Remove pick from list of queued picks.
calld->MaybeRemoveCallFromResolverQueuedCallsLocked(self->elem_);
// Fail pending batches on the call.
@@ -2171,7 +2146,7 @@ void ClientChannel::CallData::MaybeRemoveCallFromResolverQueuedCallsLocked(
grpc_call_element* elem) {
if (!queued_pending_resolver_result_) return;
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
gpr_log(GPR_INFO,
"chand=%p calld=%p: removing from resolver queued picks list",
chand, this);
@@ -2186,7 +2161,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
grpc_call_element* elem) {
if (queued_pending_resolver_result_) return;
auto* chand = static_cast<ClientChannel*>(elem->channel_data);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
gpr_log(GPR_INFO, "chand=%p calld=%p: adding to resolver queued picks list",
chand, this);
}
@@ -2200,7 +2175,7 @@ void ClientChannel::CallData::MaybeAddCallToResolverQueuedCallsLocked(
grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
grpc_call_element* elem, grpc_metadata_batch* initial_metadata) {
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
gpr_log(GPR_INFO, "chand=%p calld=%p: applying service config to call",
chand, this);
}
@@ -2209,7 +2184,10 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
// Use the ConfigSelector to determine the config for the call.
ConfigSelector::CallConfig call_config =
config_selector->GetCallConfig({&path_, initial_metadata, arena_});
- if (call_config.error != GRPC_ERROR_NONE) return call_config.error;
+ if (!call_config.status.ok()) {
+ return absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
+ std::move(call_config.status), "ConfigSelector"));
+ }
// Create a ClientChannelServiceConfigCallData for the call. This stores
// a ref to the ServiceConfig and caches the right set of parsed configs
// to use for the call. The ClientChannelServiceConfigCallData will store
@@ -2239,17 +2217,13 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
}
// If the service config set wait_for_ready and the application
// did not explicitly set it, use the value from the service config.
- uint32_t* send_initial_metadata_flags =
- &pending_batches_[0]
- ->payload->send_initial_metadata.send_initial_metadata_flags;
+ auto* wait_for_ready =
+ pending_batches_[0]
+ ->payload->send_initial_metadata.send_initial_metadata
+ ->GetOrCreatePointer(WaitForReady());
if (method_params->wait_for_ready().has_value() &&
- !(*send_initial_metadata_flags &
- GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET)) {
- if (method_params->wait_for_ready().value()) {
- *send_initial_metadata_flags |= GRPC_INITIAL_METADATA_WAIT_FOR_READY;
- } else {
- *send_initial_metadata_flags &= ~GRPC_INITIAL_METADATA_WAIT_FOR_READY;
- }
+ !wait_for_ready->explicitly_set) {
+ wait_for_ready->value = method_params->wait_for_ready().value();
}
}
// Set the dynamic filter stack.
@@ -2261,30 +2235,27 @@ grpc_error_handle ClientChannel::CallData::ApplyServiceConfigToCallLocked(
void ClientChannel::CallData::
RecvTrailingMetadataReadyForConfigSelectorCommitCallback(
void* arg, grpc_error_handle error) {
- auto* self = static_cast<CallData*>(arg);
+ auto* elem = static_cast<grpc_call_element*>(arg);
+ auto* chand = static_cast<ClientChannel*>(elem->channel_data);
+ auto* calld = static_cast<CallData*>(elem->call_data);
auto* service_config_call_data =
static_cast<ClientChannelServiceConfigCallData*>(
- self->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
+ calld->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
+ gpr_log(GPR_INFO,
+ "chand=%p calld=%p: got recv_trailing_metadata_ready: error=%s "
+ "service_config_call_data=%p",
+ chand, calld, grpc_error_std_string(error).c_str(),
+ service_config_call_data);
+ }
if (service_config_call_data != nullptr) {
service_config_call_data->call_dispatch_controller()->Commit();
}
// Chain to original callback.
- Closure::Run(DEBUG_LOCATION, self->original_recv_trailing_metadata_ready_,
+ Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
GRPC_ERROR_REF(error));
}
-void ClientChannel::CallData::
- InjectRecvTrailingMetadataReadyForConfigSelectorCommitCallback(
- grpc_transport_stream_op_batch* batch) {
- original_recv_trailing_metadata_ready_ =
- batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
- GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_,
- RecvTrailingMetadataReadyForConfigSelectorCommitCallback,
- this, nullptr);
- batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
- &recv_trailing_metadata_ready_;
-}
-
void ClientChannel::CallData::AsyncResolutionDone(grpc_call_element* elem,
grpc_error_handle error) {
// TODO(roth): Does this callback need to hold a ref to the call stack?
@@ -2297,8 +2268,8 @@ void ClientChannel::CallData::ResolutionDone(void* arg,
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
CallData* calld = static_cast<CallData*>(elem->call_data);
- if (error != GRPC_ERROR_NONE) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
gpr_log(GPR_INFO,
"chand=%p calld=%p: error applying config to call: error=%s",
chand, calld, grpc_error_std_string(error).c_str());
@@ -2330,6 +2301,9 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
ClientChannel* chand = static_cast<ClientChannel*>(elem->channel_data);
// If we're still in IDLE, we need to start resolving.
if (GPR_UNLIKELY(chand->CheckConnectivityState(false) == GRPC_CHANNEL_IDLE)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
+ gpr_log(GPR_INFO, "chand=%p calld=%p: triggering exit idle", chand, this);
+ }
// Bounce into the control plane work serializer to start resolving,
// in case we are still in IDLE state. Since we are holding on to the
// resolution mutex here, we offload it on the ExecCtx so that we don't
@@ -2357,16 +2331,18 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
pending_batches_[0]->payload->send_initial_metadata;
grpc_metadata_batch* initial_metadata_batch =
send_initial_metadata.send_initial_metadata;
- const uint32_t send_initial_metadata_flags =
- send_initial_metadata.send_initial_metadata_flags;
// If we don't yet have a resolver result, we need to queue the call
// until we get one.
if (GPR_UNLIKELY(!chand->received_service_config_data_)) {
// If the resolver returned transient failure before returning the
// first service config, fail any non-wait_for_ready calls.
y_absl::Status resolver_error = chand->resolver_transient_failure_error_;
- if (!resolver_error.ok() && (send_initial_metadata_flags &
- GRPC_INITIAL_METADATA_WAIT_FOR_READY) == 0) {
+ if (!resolver_error.ok() &&
+ !initial_metadata_batch->GetOrCreatePointer(WaitForReady())->value) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
+ gpr_log(GPR_INFO, "chand=%p calld=%p: resolution failed, failing call",
+ chand, this);
+ }
MaybeRemoveCallFromResolverQueuedCallsLocked(elem);
*error = absl_status_to_grpc_error(resolver_error);
return true;
@@ -2374,6 +2350,10 @@ bool ClientChannel::CallData::CheckResolutionLocked(grpc_call_element* elem,
// Either the resolver has not yet returned a result, or it has
// returned transient failure but the call is wait_for_ready. In
// either case, queue the call.
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
+ gpr_log(GPR_INFO, "chand=%p calld=%p: queuing to wait for resolution",
+ chand, this);
+ }
MaybeAddCallToResolverQueuedCallsLocked(elem);
return false;
}
@@ -2398,15 +2378,15 @@ void ClientChannel::CallData::CreateDynamicCall(grpc_call_element* elem) {
call_combiner_};
grpc_error_handle error = GRPC_ERROR_NONE;
DynamicFilters* channel_stack = args.channel_stack.get();
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
gpr_log(
GPR_INFO,
"chand=%p calld=%p: creating dynamic call stack on channel_stack=%p",
chand, this, channel_stack);
}
dynamic_call_ = channel_stack->CreateCall(std::move(args), &error);
- if (error != GRPC_ERROR_NONE) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
gpr_log(GPR_INFO,
"chand=%p calld=%p: failed to create dynamic call: error=%s",
chand, this, grpc_error_std_string(error).c_str());
@@ -2496,25 +2476,16 @@ class ClientChannel::LoadBalancedCall::Metadata
// ClientChannel::LoadBalancedCall::LbCallState
//
-class ClientChannel::LoadBalancedCall::LbCallState
- : public LoadBalancingPolicy::CallState {
- public:
- explicit LbCallState(LoadBalancedCall* lb_call) : lb_call_(lb_call) {}
-
- void* Alloc(size_t size) override { return lb_call_->arena_->Alloc(size); }
-
- y_absl::string_view ExperimentalGetCallAttribute(const char* key) override {
- auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
- lb_call_->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
- auto& call_attributes = service_config_call_data->call_attributes();
- auto it = call_attributes.find(key);
- if (it == call_attributes.end()) return y_absl::string_view();
- return it->second;
- }
-
- private:
- LoadBalancedCall* lb_call_;
-};
+y_absl::string_view
+ClientChannel::LoadBalancedCall::LbCallState::GetCallAttribute(
+ UniqueTypeName type) {
+ auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
+ lb_call_->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
+ auto& call_attributes = service_config_call_data->call_attributes();
+ auto it = call_attributes.find(type);
+ if (it == call_attributes.end()) return y_absl::string_view();
+ return it->second;
+}
//
// ClientChannel::LoadBalancedCall::BackendMetricAccessor
@@ -2530,15 +2501,32 @@ class ClientChannel::LoadBalancedCall::BackendMetricAccessor
if (lb_call_->backend_metric_data_ == nullptr &&
lb_call_->recv_trailing_metadata_ != nullptr) {
if (const auto* md = lb_call_->recv_trailing_metadata_->get_pointer(
- XEndpointLoadMetricsBinMetadata())) {
+ EndpointLoadMetricsBinMetadata())) {
+ BackendMetricAllocator allocator(lb_call_->arena_);
lb_call_->backend_metric_data_ =
- ParseBackendMetricData(*md, lb_call_->arena_);
+ ParseBackendMetricData(md->as_string_view(), &allocator);
}
}
return lb_call_->backend_metric_data_;
}
private:
+ class BackendMetricAllocator : public BackendMetricAllocatorInterface {
+ public:
+ explicit BackendMetricAllocator(Arena* arena) : arena_(arena) {}
+
+ BackendMetricData* AllocateBackendMetricData() override {
+ return arena_->New<BackendMetricData>();
+ }
+
+ char* AllocateString(size_t size) override {
+ return static_cast<char*>(arena_->Alloc(size));
+ }
+
+ private:
+ Arena* arena_;
+ };
+
LoadBalancedCall* lb_call_;
};
@@ -2564,7 +2552,7 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
ConfigSelector::CallDispatchController* call_dispatch_controller,
bool is_transparent_retry)
: InternallyRefCounted(
- GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)
+ GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)
? "LoadBalancedCall"
: nullptr),
chand_(chand),
@@ -2578,14 +2566,17 @@ ClientChannel::LoadBalancedCall::LoadBalancedCall(
on_call_destruction_complete_(on_call_destruction_complete),
call_dispatch_controller_(call_dispatch_controller),
call_attempt_tracer_(
- GetCallAttemptTracer(args.context, is_transparent_retry)) {}
+ GetCallAttemptTracer(args.context, is_transparent_retry)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
+ gpr_log(GPR_INFO, "chand=%p lb_call=%p: created", chand_, this);
+ }
+}
ClientChannel::LoadBalancedCall::~LoadBalancedCall() {
GRPC_ERROR_UNREF(cancel_error_);
GRPC_ERROR_UNREF(failure_error_);
if (backend_metric_data_ != nullptr) {
- backend_metric_data_->LoadBalancingPolicy::BackendMetricAccessor::
- BackendMetricData::~BackendMetricData();
+ backend_metric_data_->BackendMetricData::~BackendMetricData();
}
// Make sure there are no remaining pending batches.
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
@@ -2630,7 +2621,7 @@ size_t ClientChannel::LoadBalancedCall::GetBatchIndex(
void ClientChannel::LoadBalancedCall::PendingBatchesAdd(
grpc_transport_stream_op_batch* batch) {
const size_t idx = GetBatchIndex(batch);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO,
"chand=%p lb_call=%p: adding pending batch at index %" PRIuPTR,
chand_, this, idx);
@@ -2654,10 +2645,10 @@ void ClientChannel::LoadBalancedCall::FailPendingBatchInCallCombiner(
void ClientChannel::LoadBalancedCall::PendingBatchesFail(
grpc_error_handle error,
YieldCallCombinerPredicate yield_call_combiner_predicate) {
- GPR_ASSERT(error != GRPC_ERROR_NONE);
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
GRPC_ERROR_UNREF(failure_error_);
failure_error_ = error;
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
size_t num_batches = 0;
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
if (pending_batches_[i] != nullptr) ++num_batches;
@@ -2699,7 +2690,7 @@ void ClientChannel::LoadBalancedCall::ResumePendingBatchInCallCombiner(
// This is called via the call combiner, so access to calld is synchronized.
void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
size_t num_batches = 0;
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
if (pending_batches_[i] != nullptr) ++num_batches;
@@ -2728,6 +2719,14 @@ void ClientChannel::LoadBalancedCall::PendingBatchesResume() {
void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
grpc_transport_stream_op_batch* batch) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace) ||
+ GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
+ gpr_log(GPR_INFO,
+ "chand=%p lb_call=%p: batch started from above: %s, "
+ "call_attempt_tracer_=%p",
+ chand_, this, grpc_transport_stream_op_batch_string(batch).c_str(),
+ call_attempt_tracer_);
+ }
// Handle call tracing.
if (call_attempt_tracer_ != nullptr) {
// Record send ops in tracer.
@@ -2737,8 +2736,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
}
if (batch->send_initial_metadata) {
call_attempt_tracer_->RecordSendInitialMetadata(
- batch->payload->send_initial_metadata.send_initial_metadata,
- batch->payload->send_initial_metadata.send_initial_metadata_flags);
+ batch->payload->send_initial_metadata.send_initial_metadata);
peer_string_ = batch->payload->send_initial_metadata.peer_string;
original_send_initial_metadata_on_complete_ = batch->on_complete;
GRPC_CLOSURE_INIT(&send_initial_metadata_on_complete_,
@@ -2791,7 +2789,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
// the channel's data plane mutex, which is more efficient (especially for
// streaming calls).
if (subchannel_call_ != nullptr) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO,
"chand=%p lb_call=%p: starting batch on subchannel_call=%p",
chand_, this, subchannel_call_.get());
@@ -2802,8 +2800,8 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
// We do not yet have a subchannel call.
//
// If we've previously been cancelled, immediately fail any new batches.
- if (GPR_UNLIKELY(cancel_error_ != GRPC_ERROR_NONE)) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
+ if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(cancel_error_))) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO, "chand=%p lb_call=%p: failing batch with error: %s",
chand_, this, grpc_error_std_string(cancel_error_).c_str());
}
@@ -2821,7 +2819,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
// error to the caller when the first batch does get passed down.
GRPC_ERROR_UNREF(cancel_error_);
cancel_error_ = GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO, "chand=%p lb_call=%p: recording cancel_error=%s",
chand_, this, grpc_error_std_string(cancel_error_).c_str());
}
@@ -2837,7 +2835,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
// For batches containing a send_initial_metadata op, acquire the
// channel's data plane mutex to pick a subchannel.
if (GPR_LIKELY(batch->send_initial_metadata)) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO,
"chand=%p lb_call=%p: grabbing data plane mutex to perform pick",
chand_, this);
@@ -2845,7 +2843,7 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
PickSubchannel(this, GRPC_ERROR_NONE);
} else {
// For all other batches, release the call combiner.
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO,
"chand=%p lb_call=%p: saved batch, yielding call combiner",
chand_, this);
@@ -2858,6 +2856,12 @@ void ClientChannel::LoadBalancedCall::StartTransportStreamOpBatch(
void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
void* arg, grpc_error_handle error) {
auto* self = static_cast<LoadBalancedCall*>(arg);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
+ gpr_log(GPR_INFO,
+ "chand=%p lb_call=%p: got on_complete for send_initial_metadata: "
+ "error=%s",
+ self->chand_, self, grpc_error_std_string(error).c_str());
+ }
self->call_attempt_tracer_->RecordOnDoneSendInitialMetadata(
self->peer_string_);
Closure::Run(DEBUG_LOCATION,
@@ -2868,7 +2872,12 @@ void ClientChannel::LoadBalancedCall::SendInitialMetadataOnComplete(
void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
void* arg, grpc_error_handle error) {
auto* self = static_cast<LoadBalancedCall*>(arg);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
+ gpr_log(GPR_INFO,
+ "chand=%p lb_call=%p: got recv_initial_metadata_ready: error=%s",
+ self->chand_, self, grpc_error_std_string(error).c_str());
+ }
+ if (GRPC_ERROR_IS_NONE(error)) {
// recv_initial_metadata_flags is not populated for clients
self->call_attempt_tracer_->RecordReceivedInitialMetadata(
self->recv_initial_metadata_, 0 /* recv_initial_metadata_flags */);
@@ -2880,7 +2889,11 @@ void ClientChannel::LoadBalancedCall::RecvInitialMetadataReady(
void ClientChannel::LoadBalancedCall::RecvMessageReady(
void* arg, grpc_error_handle error) {
auto* self = static_cast<LoadBalancedCall*>(arg);
- if (*self->recv_message_ != nullptr) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
+ gpr_log(GPR_INFO, "chand=%p lb_call=%p: got recv_message_ready: error=%s",
+ self->chand_, self, grpc_error_std_string(error).c_str());
+ }
+ if (self->recv_message_->has_value()) {
self->call_attempt_tracer_->RecordReceivedMessage(**self->recv_message_);
}
Closure::Run(DEBUG_LOCATION, self->original_recv_message_ready_,
@@ -2890,12 +2903,21 @@ void ClientChannel::LoadBalancedCall::RecvMessageReady(
void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
void* arg, grpc_error_handle error) {
auto* self = static_cast<LoadBalancedCall*>(arg);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
+ gpr_log(GPR_INFO,
+ "chand=%p lb_call=%p: got recv_trailing_metadata_ready: error=%s "
+ "call_attempt_tracer_=%p lb_subchannel_call_tracker_=%p "
+ "failure_error_=%s",
+ self->chand_, self, grpc_error_std_string(error).c_str(),
+ self->call_attempt_tracer_, self->lb_subchannel_call_tracker_.get(),
+ grpc_error_std_string(self->failure_error_).c_str());
+ }
// Check if we have a tracer or an LB callback to invoke.
if (self->call_attempt_tracer_ != nullptr ||
self->lb_subchannel_call_tracker_ != nullptr) {
// Get the call's status.
y_absl::Status status;
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
// Get status from error.
grpc_status_code code;
TString message;
@@ -2918,7 +2940,7 @@ void ClientChannel::LoadBalancedCall::RecvTrailingMetadataReady(
self->RecordCallCompletion(status);
}
// Chain to original callback.
- if (self->failure_error_ != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(self->failure_error_)) {
error = self->failure_error_;
self->failure_error_ = GRPC_ERROR_NONE;
} else {
@@ -2956,7 +2978,7 @@ void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
call_context_, call_combiner_};
grpc_error_handle error = GRPC_ERROR_NONE;
subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO,
"chand=%p lb_call=%p: create subchannel_call=%p: error=%s", chand_,
this, subchannel_call_.get(), grpc_error_std_string(error).c_str());
@@ -2965,7 +2987,7 @@ void ClientChannel::LoadBalancedCall::CreateSubchannelCall() {
subchannel_call_->SetAfterCallStackDestroy(on_call_destruction_complete_);
on_call_destruction_complete_ = nullptr;
}
- if (GPR_UNLIKELY(error != GRPC_ERROR_NONE)) {
+ if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(error))) {
PendingBatchesFail(error, YieldCallCombiner);
} else {
PendingBatchesResume();
@@ -2995,14 +3017,14 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
auto* chand = lb_call->chand_;
{
MutexLock lock(&chand->data_plane_mu_);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO,
"chand=%p lb_call=%p: cancelling queued pick: "
"error=%s self=%p calld->pick_canceller=%p",
chand, lb_call, grpc_error_std_string(error).c_str(), self,
lb_call->lb_call_canceller_);
}
- if (lb_call->lb_call_canceller_ == self && error != GRPC_ERROR_NONE) {
+ if (lb_call->lb_call_canceller_ == self && !GRPC_ERROR_IS_NONE(error)) {
lb_call->call_dispatch_controller_->Commit();
// Remove pick from list of queued picks.
lb_call->MaybeRemoveCallFromLbQueuedCallsLocked();
@@ -3021,7 +3043,7 @@ class ClientChannel::LoadBalancedCall::LbQueuedCallCanceller {
void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
if (!queued_pending_lb_pick_) return;
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO, "chand=%p lb_call=%p: removing from queued picks list",
chand_, this);
}
@@ -3033,7 +3055,7 @@ void ClientChannel::LoadBalancedCall::MaybeRemoveCallFromLbQueuedCallsLocked() {
void ClientChannel::LoadBalancedCall::MaybeAddCallToLbQueuedCallsLocked() {
if (queued_pending_lb_pick_) return;
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO, "chand=%p lb_call=%p: adding to queued picks list",
chand_, this);
}
@@ -3053,8 +3075,8 @@ void ClientChannel::LoadBalancedCall::AsyncPickDone(grpc_error_handle error) {
void ClientChannel::LoadBalancedCall::PickDone(void* arg,
grpc_error_handle error) {
auto* self = static_cast<LoadBalancedCall*>(arg);
- if (error != GRPC_ERROR_NONE) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO,
"chand=%p lb_call=%p: failed to pick subchannel: error=%s",
self->chand_, self, grpc_error_std_string(error).c_str());
@@ -3089,8 +3111,6 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
pending_batches_[0]->payload->send_initial_metadata;
grpc_metadata_batch* initial_metadata_batch =
send_initial_metadata.send_initial_metadata;
- const uint32_t send_initial_metadata_flags =
- send_initial_metadata.send_initial_metadata_flags;
// Perform LB pick.
LoadBalancingPolicy::PickArgs pick_args;
pick_args.path = path_.as_string_view();
@@ -3104,7 +3124,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
// CompletePick
[this](LoadBalancingPolicy::PickResult::Complete* complete_pick)
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO,
"chand=%p lb_call=%p: LB pick succeeded: subchannel=%p",
chand_, this, complete_pick->subchannel.get());
@@ -3120,7 +3140,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
// yet seen that change and given us a new picker), then just
// queue the pick. We'll try again as soon as we get a new picker.
if (connected_subchannel_ == nullptr) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO,
"chand=%p lb_call=%p: subchannel returned by LB picker "
"has no connected subchannel; queueing pick",
@@ -3140,7 +3160,7 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
// QueuePick
[this](LoadBalancingPolicy::PickResult::Queue* /*queue_pick*/)
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick queued", chand_,
this);
}
@@ -3148,22 +3168,19 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
return false;
},
// FailPick
- [this, send_initial_metadata_flags,
+ [this, initial_metadata_batch,
&error](LoadBalancingPolicy::PickResult::Fail* fail_pick)
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick failed: %s",
chand_, this, fail_pick->status.ToString().c_str());
}
// If wait_for_ready is false, then the error indicates the RPC
// attempt's final status.
- if ((send_initial_metadata_flags &
- GRPC_INITIAL_METADATA_WAIT_FOR_READY) == 0) {
- grpc_error_handle lb_error =
- absl_status_to_grpc_error(fail_pick->status);
- *error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
- "Failed to pick subchannel", &lb_error, 1);
- GRPC_ERROR_UNREF(lb_error);
+ if (!initial_metadata_batch->GetOrCreatePointer(WaitForReady())
+ ->value) {
+ *error = absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
+ std::move(fail_pick->status), "LB pick"));
MaybeRemoveCallFromLbQueuedCallsLocked();
return true;
}
@@ -3175,13 +3192,14 @@ bool ClientChannel::LoadBalancedCall::PickSubchannelLocked(
// DropPick
[this, &error](LoadBalancingPolicy::PickResult::Drop* drop_pick)
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannel::data_plane_mu_) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
gpr_log(GPR_INFO, "chand=%p lb_call=%p: LB pick dropped: %s",
chand_, this, drop_pick->status.ToString().c_str());
}
- *error =
- grpc_error_set_int(absl_status_to_grpc_error(drop_pick->status),
- GRPC_ERROR_INT_LB_POLICY_DROP, 1);
+ *error = grpc_error_set_int(
+ absl_status_to_grpc_error(MaybeRewriteIllegalStatusCode(
+ std::move(drop_pick->status), "LB drop")),
+ GRPC_ERROR_INT_LB_POLICY_DROP, 1);
MaybeRemoveCallFromLbQueuedCallsLocked();
return true;
});
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel.h
index fe8794cfdc..92762f4020 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel.h
@@ -19,38 +19,62 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <atomic>
#include <map>
#include <memory>
#include <set>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+#include "y_absl/base/thread_annotations.h"
#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/types/optional.h"
-#include <grpc/support/log.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/atm.h>
#include "src/core/ext/filters/client_channel/client_channel_factory.h"
#include "src/core/ext/filters/client_channel/config_selector.h"
#include "src/core/ext/filters/client_channel/dynamic_filters.h"
-#include "src/core/ext/filters/client_channel/lb_policy.h"
-#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
-#include "src/core/ext/filters/client_channel/retry_throttle.h"
+#include "src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h"
#include "src/core/ext/filters/client_channel/subchannel.h"
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
#include "src/core/lib/channel/call_tracer.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channelz.h"
#include "src/core/lib/channel/context.h"
+#include "src/core/lib/gpr/time_precise.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/iomgr/polling_entity.h"
-#include "src/core/lib/iomgr/work_serializer.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
#include "src/core/lib/resolver/resolver.h"
+#include "src/core/lib/resource_quota/arena.h"
#include "src/core/lib/service_config/service_config.h"
#include "src/core/lib/service_config/service_config_call_data.h"
#include "src/core/lib/service_config/service_config_parser.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/slice/slice_buffer.h"
#include "src/core/lib/surface/channel.h"
#include "src/core/lib/transport/connectivity_state.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
//
// Client channel filter
@@ -69,9 +93,6 @@
// Channel arg containing a pointer to the ClientChannel object.
#define GRPC_ARG_CLIENT_CHANNEL "grpc.internal.client_channel"
-// Channel arg containing a pointer to the ServiceConfig object.
-#define GRPC_ARG_SERVICE_CONFIG_OBJ "grpc.internal.service_config_obj"
-
// Max number of batches that can be pending on a call at any given
// time. This includes one batch for each of the following ops:
// recv_initial_metadata
@@ -90,9 +111,13 @@ class ClientChannel {
class LoadBalancedCall;
+ // Flag that this object gets stored in channel args as a raw pointer.
+ struct RawPointerChannelArgTag {};
+ static y_absl::string_view ChannelArgName() { return GRPC_ARG_CLIENT_CHANNEL; }
+
// Returns the ClientChannel object from channel, or null if channel
// is not a client channel.
- static ClientChannel* GetFromChannel(grpc_channel* channel);
+ static ClientChannel* GetFromChannel(Channel* channel);
grpc_connectivity_state CheckConnectivityState(bool try_to_connect);
@@ -144,6 +169,12 @@ class ClientChannel {
ConfigSelector::CallDispatchController* call_dispatch_controller,
bool is_transparent_retry);
+ // Exposed for testing only.
+ static ChannelArgs MakeSubchannelArgs(
+ const ChannelArgs& channel_args, const ChannelArgs& address_args,
+ const RefCountedPtr<SubchannelPoolInterface>& subchannel_pool,
+ const TString& channel_default_authority);
+
private:
class CallData;
class ResolverResultHandler;
@@ -220,13 +251,12 @@ class ClientChannel {
void OnResolverErrorLocked(y_absl::Status status)
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(*work_serializer_);
- void CreateOrUpdateLbPolicyLocked(
+ y_absl::Status CreateOrUpdateLbPolicyLocked(
RefCountedPtr<LoadBalancingPolicy::Config> lb_policy_config,
const y_absl::optional<TString>& health_check_service_name,
Resolver::Result result) Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(*work_serializer_);
OrphanablePtr<LoadBalancingPolicy> CreateLbPolicyLocked(
- const grpc_channel_args& args)
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(*work_serializer_);
+ const ChannelArgs& args) Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(*work_serializer_);
void UpdateStateAndPickerLocked(
grpc_connectivity_state state, const y_absl::Status& status,
@@ -271,10 +301,10 @@ class ClientChannel {
//
// Fields set at construction and never modified.
//
+ ChannelArgs channel_args_;
const bool deadline_checking_enabled_;
grpc_channel_stack* owning_stack_;
ClientChannelFactory* client_channel_factory_;
- const grpc_channel_args* channel_args_;
RefCountedPtr<ServiceConfig> default_service_config_;
TString uri_to_resolve_;
TString default_authority_;
@@ -362,6 +392,20 @@ class ClientChannel {
class ClientChannel::LoadBalancedCall
: public InternallyRefCounted<LoadBalancedCall, kUnrefCallDtor> {
public:
+ class LbCallState : public LoadBalancingPolicy::CallState {
+ public:
+ explicit LbCallState(LoadBalancedCall* lb_call) : lb_call_(lb_call) {}
+
+ void* Alloc(size_t size) override { return lb_call_->arena_->Alloc(size); }
+
+ // Internal API to allow first-party LB policies to access per-call
+ // attributes set by the ConfigSelector.
+ y_absl::string_view GetCallAttribute(UniqueTypeName type);
+
+ private:
+ LoadBalancedCall* lb_call_;
+ };
+
// If on_call_destruction_complete is non-null, then it will be
// invoked once the LoadBalancedCall is completely destroyed.
// If it is null, then the caller is responsible for checking whether
@@ -397,7 +441,6 @@ class ClientChannel::LoadBalancedCall
private:
class LbQueuedCallCanceller;
class Metadata;
- class LbCallState;
class BackendMetricAccessor;
// Returns the index into pending_batches_ to be used for batch.
@@ -482,8 +525,7 @@ class ClientChannel::LoadBalancedCall
Y_ABSL_GUARDED_BY(&ClientChannel::data_plane_mu_) = nullptr;
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
- const LoadBalancingPolicy::BackendMetricAccessor::BackendMetricData*
- backend_metric_data_ = nullptr;
+ const BackendMetricData* backend_metric_data_ = nullptr;
std::unique_ptr<LoadBalancingPolicy::SubchannelCallTrackerInterface>
lb_subchannel_call_tracker_;
@@ -500,7 +542,7 @@ class ClientChannel::LoadBalancedCall
grpc_closure* original_recv_initial_metadata_ready_ = nullptr;
// For intercepting recv_message_ready.
- OrphanablePtr<ByteStream>* recv_message_ = nullptr;
+ y_absl::optional<SliceBuffer>* recv_message_ = nullptr;
grpc_closure recv_message_ready_;
grpc_closure* original_recv_message_ready_ = nullptr;
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_channelz.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_channelz.cc
index e5f358f3d1..8385380a5f 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_channelz.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_channelz.cc
@@ -20,14 +20,12 @@
#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
-#include <grpc/support/string_util.h>
+#include <map>
-#include "src/core/ext/filters/client_channel/client_channel.h"
-#include "src/core/lib/channel/channelz_registry.h"
-#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/surface/channel.h"
#include "src/core/lib/transport/connectivity_state.h"
+// IWYU pragma: no_include <type_traits>
+
namespace grpc_core {
namespace channelz {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_channelz.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_channelz.h
index 5a3cd4cf3c..47e457b07a 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_channelz.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_channelz.h
@@ -21,13 +21,23 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <atomic>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/base/thread_annotations.h"
+
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/slice.h>
-#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/channel/channel_trace.h"
#include "src/core/lib/channel/channelz.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/json/json.h"
namespace grpc_core {
namespace channelz {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_factory.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_factory.cc
index 7e234a3e04..ef214ffa9c 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_factory.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_factory.cc
@@ -20,37 +20,13 @@
#include "src/core/ext/filters/client_channel/client_channel_factory.h"
-#include "src/core/lib/channel/channel_args.h"
-
// Channel arg key for client channel factory.
#define GRPC_ARG_CLIENT_CHANNEL_FACTORY "grpc.client_channel_factory"
namespace grpc_core {
-namespace {
-
-void* factory_arg_copy(void* f) { return f; }
-void factory_arg_destroy(void* /*f*/) {}
-int factory_arg_cmp(void* factory1, void* factory2) {
- return QsortCompare(factory1, factory2);
-}
-const grpc_arg_pointer_vtable factory_arg_vtable = {
- factory_arg_copy, factory_arg_destroy, factory_arg_cmp};
-
-} // namespace
-
-grpc_arg ClientChannelFactory::CreateChannelArg(ClientChannelFactory* factory) {
- return grpc_channel_arg_pointer_create(
- const_cast<char*>(GRPC_ARG_CLIENT_CHANNEL_FACTORY), factory,
- &factory_arg_vtable);
-}
-
-ClientChannelFactory* ClientChannelFactory::GetFromChannelArgs(
- const grpc_channel_args* args) {
- const grpc_arg* arg =
- grpc_channel_args_find(args, GRPC_ARG_CLIENT_CHANNEL_FACTORY);
- if (arg == nullptr || arg->type != GRPC_ARG_POINTER) return nullptr;
- return static_cast<ClientChannelFactory*>(arg->value.pointer.p);
+y_absl::string_view ClientChannelFactory::ChannelArgName() {
+ return GRPC_ARG_CLIENT_CHANNEL_FACTORY;
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_factory.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_factory.h
index 0e00edc5af..5697f7cba8 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_factory.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_factory.h
@@ -19,26 +19,26 @@
#include <grpc/support/port_platform.h>
-#include <grpc/impl/codegen/grpc_types.h>
+#include "y_absl/strings/string_view.h"
#include "src/core/ext/filters/client_channel/subchannel.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/resolved_address.h"
namespace grpc_core {
class ClientChannelFactory {
public:
+ struct RawPointerChannelArgTag {};
+
virtual ~ClientChannelFactory() = default;
// Creates a subchannel with the specified args.
virtual RefCountedPtr<Subchannel> CreateSubchannel(
- const grpc_resolved_address& address, const grpc_channel_args* args) = 0;
-
- // Returns a channel arg containing the specified factory.
- static grpc_arg CreateChannelArg(ClientChannelFactory* factory);
+ const grpc_resolved_address& address, const ChannelArgs& args) = 0;
- // Returns the factory from args, or null if not found.
- static ClientChannelFactory* GetFromChannelArgs(
- const grpc_channel_args* args);
+ static y_absl::string_view ChannelArgName();
};
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_plugin.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_plugin.cc
index 4b53c20fd8..bdb535ad5c 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_plugin.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/client_channel_plugin.cc
@@ -18,48 +18,23 @@
#include <grpc/support/port_platform.h>
-#include <limits.h>
-#include <stdbool.h>
-#include <string.h>
-
-#include <grpc/support/alloc.h>
-
-#include "src/core/ext/filters/client_channel/backup_poller.h"
#include "src/core/ext/filters/client_channel/client_channel.h"
-#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
-#include "src/core/ext/filters/client_channel/global_subchannel_pool.h"
-#include "src/core/ext/filters/client_channel/http_connect_handshaker.h"
-#include "src/core/ext/filters/client_channel/http_proxy.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
-#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
#include "src/core/ext/filters/client_channel/retry_service_config.h"
-#include "src/core/ext/filters/client_channel/retry_throttle.h"
+#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/resolver/resolver_registry.h"
-
-void grpc_client_channel_init(void) {
- grpc_core::LoadBalancingPolicyRegistry::Builder::InitRegistry();
- grpc_core::ProxyMapperRegistry::Init();
- grpc_core::RegisterHttpProxyMapper();
- grpc_client_channel_global_init_backup_polling();
-}
-
-void grpc_client_channel_shutdown(void) {
- grpc_core::ProxyMapperRegistry::Shutdown();
- grpc_core::LoadBalancingPolicyRegistry::Builder::ShutdownRegistry();
-}
+#include "src/core/lib/surface/channel_init.h"
+#include "src/core/lib/surface/channel_stack_type.h"
namespace grpc_core {
void BuildClientChannelConfiguration(CoreConfiguration::Builder* builder) {
- RegisterHttpConnectHandshaker(builder);
internal::ClientChannelServiceConfigParser::Register(builder);
internal::RetryServiceConfigParser::Register(builder);
builder->channel_init()->RegisterStage(
GRPC_CLIENT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
[](ChannelStackBuilder* builder) {
- builder->AppendFilter(&ClientChannel::kFilterVtable, nullptr);
+ builder->AppendFilter(&ClientChannel::kFilterVtable);
return true;
});
}
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/config_selector.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/config_selector.cc
index e741a3e6f2..cab51937d0 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/config_selector.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/config_selector.cc
@@ -19,6 +19,7 @@
#include "src/core/ext/filters/client_channel/config_selector.h"
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gpr/useful.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/config_selector.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/config_selector.h
index b31fcd3442..3b9b2676e4 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/config_selector.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/config_selector.h
@@ -19,15 +19,21 @@
#include <grpc/support/port_platform.h>
-#include <functional>
-#include <map>
+#include <string.h>
+
+#include <utility>
#include <vector>
+#include "y_absl/status/status.h"
#include "y_absl/strings/string_view.h"
-#include <grpc/grpc.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
+#include <grpc/support/log.h>
-#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/resource_quota/arena.h"
@@ -67,7 +73,7 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
struct CallConfig {
// Can be set to indicate the call should be failed.
- grpc_error_handle error = GRPC_ERROR_NONE;
+ y_absl::Status status;
// The per-method parsed configs that will be passed to
// ServiceConfigCallData.
const ServiceConfigParser::ParsedConfigVector* method_configs = nullptr;
@@ -99,8 +105,7 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
// to determine what set of dynamic filters will be configured.
virtual std::vector<const grpc_channel_filter*> GetFilters() { return {}; }
// Modifies channel args to be passed to the dynamic filter stack.
- // Takes ownership of argument. Caller takes ownership of result.
- virtual grpc_channel_args* ModifyChannelArgs(grpc_channel_args* args) {
+ virtual ChannelArgs ModifyChannelArgs(const ChannelArgs& args) {
return args;
}
@@ -109,6 +114,11 @@ class ConfigSelector : public RefCounted<ConfigSelector> {
grpc_arg MakeChannelArg() const;
static RefCountedPtr<ConfigSelector> GetFromChannelArgs(
const grpc_channel_args& args);
+ static y_absl::string_view ChannelArgName() { return GRPC_ARG_CONFIG_SELECTOR; }
+ static int ChannelArgsCompare(const ConfigSelector* a,
+ const ConfigSelector* b) {
+ return QsortCompare(a, b);
+ }
};
// Default ConfigSelector that gets the MethodConfig from the service config.
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/connector.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/connector.h
index 5777db70d5..a4762a1626 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/connector.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/connector.h
@@ -19,11 +19,16 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channelz.h"
#include "src/core/lib/gprpp/orphanable.h"
-#include "src/core/lib/iomgr/resolve_address.h"
-#include "src/core/lib/transport/transport.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/iomgr/resolved_address.h"
+#include "src/core/lib/transport/transport_fwd.h"
namespace grpc_core {
@@ -40,20 +45,20 @@ class SubchannelConnector : public InternallyRefCounted<SubchannelConnector> {
// Deadline for connection.
Timestamp deadline;
// Channel args to be passed to handshakers and transport.
- const grpc_channel_args* channel_args;
+ ChannelArgs channel_args;
};
struct Result {
// The connected transport.
grpc_transport* transport = nullptr;
// Channel args to be passed to filters.
- const grpc_channel_args* channel_args = nullptr;
+ ChannelArgs channel_args;
// Channelz socket node of the connected transport, if any.
RefCountedPtr<channelz::SocketNode> socket_node;
void Reset() {
transport = nullptr;
- channel_args = nullptr;
+ channel_args = ChannelArgs();
socket_node.reset();
}
};
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/dynamic_filters.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/dynamic_filters.cc
index c46cd29038..f11b31ffe0 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/dynamic_filters.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/dynamic_filters.cc
@@ -18,8 +18,22 @@
#include "src/core/ext/filters/client_channel/dynamic_filters.h"
+#include <stddef.h>
+
+#include <new>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/status/status.h"
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gpr/alloc.h"
#include "src/core/lib/surface/lame_client.h"
// Conversion between call and call stack.
@@ -52,7 +66,7 @@ DynamicFilters::Call::Call(Args args, grpc_error_handle* error)
};
*error = grpc_call_stack_init(channel_stack_->channel_stack_, 1, Destroy,
this, &call_args);
- if (GPR_UNLIKELY(*error != GRPC_ERROR_NONE)) {
+ if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(*error))) {
gpr_log(GPR_ERROR, "error: %s", grpc_error_std_string(*error).c_str());
return;
}
@@ -85,7 +99,7 @@ RefCountedPtr<DynamicFilters::Call> DynamicFilters::Call::Ref(
}
void DynamicFilters::Call::Unref() {
- GRPC_CALL_STACK_UNREF(CALL_TO_CALL_STACK(this), "");
+ GRPC_CALL_STACK_UNREF(CALL_TO_CALL_STACK(this), "dynamic-filters-unref");
}
void DynamicFilters::Call::Unref(const DebugLocation& /*location*/,
@@ -141,7 +155,7 @@ std::pair<grpc_channel_stack*, grpc_error_handle> CreateChannelStack(
grpc_error_handle error = grpc_channel_stack_init(
/*initial_refs=*/1, DestroyChannelStack, channel_stack, filters.data(),
filters.size(), args, "DynamicFilters", channel_stack);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_ERROR, "error initializing client internal stack: %s",
grpc_error_std_string(error).c_str());
grpc_channel_stack_destroy(channel_stack);
@@ -158,7 +172,7 @@ RefCountedPtr<DynamicFilters> DynamicFilters::Create(
std::vector<const grpc_channel_filter*> filters) {
// Attempt to create channel stack from requested filters.
auto p = CreateChannelStack(args, std::move(filters));
- if (p.second != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(p.second)) {
// Channel stack creation failed with requested filters.
// Create with lame filter instead.
grpc_error_handle error = p.second;
@@ -166,8 +180,8 @@ RefCountedPtr<DynamicFilters> DynamicFilters::Create(
grpc_channel_args* new_args =
grpc_channel_args_copy_and_add(args, &error_arg, 1);
GRPC_ERROR_UNREF(error);
- p = CreateChannelStack(new_args, {&grpc_lame_filter});
- GPR_ASSERT(p.second == GRPC_ERROR_NONE);
+ p = CreateChannelStack(new_args, {&LameClientFilter::kFilter});
+ GPR_ASSERT(GRPC_ERROR_IS_NONE(p.second));
grpc_channel_args_destroy(new_args);
}
return MakeRefCounted<DynamicFilters>(p.first);
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/dynamic_filters.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/dynamic_filters.h
index 515b9252f6..3f812a7f01 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/dynamic_filters.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/dynamic_filters.h
@@ -21,12 +21,22 @@
#include <vector>
-#include "src/core/lib/channel/channel_stack.h"
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
+
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/context.h"
#include "src/core/lib/gpr/time_precise.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/ref_counted.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/polling_entity.h"
#include "src/core/lib/resource_quota/arena.h"
+#include "src/core/lib/transport/transport.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/global_subchannel_pool.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/global_subchannel_pool.cc
index 4fc5ff9ccb..840e84b9e6 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/global_subchannel_pool.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/global_subchannel_pool.cc
@@ -20,6 +20,8 @@
#include "src/core/ext/filters/client_channel/global_subchannel_pool.h"
+#include <utility>
+
#include "src/core/ext/filters/client_channel/subchannel.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/global_subchannel_pool.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/global_subchannel_pool.h
index c17e8c840f..ba44c557f8 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/global_subchannel_pool.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/global_subchannel_pool.h
@@ -23,7 +23,10 @@
#include <map>
+#include "y_absl/base/thread_annotations.h"
+
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/health/health_check_client.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/health/health_check_client.cc
index 29c2195518..e708696d4d 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/health/health_check_client.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/health/health_check_client.cc
@@ -1,20 +1,18 @@
-/*
- *
- * Copyright 2018 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
+//
+// Copyright 2018 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
#include <grpc/support/port_platform.h>
@@ -22,599 +20,157 @@
#include <stdint.h>
#include <stdio.h>
+#include <string.h>
+
+#include <memory>
+#include <utility>
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+#include "upb/upb.h"
#include "upb/upb.hpp"
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/slice.h>
#include <grpc/status.h>
+#include <grpc/support/log.h>
+#include "src/core/lib/channel/channel_trace.h"
#include "src/core/lib/debug/trace.h"
-#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/resource_quota/api.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/slice/slice.h"
#include "src/proto/grpc/health/v1/health.upb.h"
-#define HEALTH_CHECK_INITIAL_CONNECT_BACKOFF_SECONDS 1
-#define HEALTH_CHECK_RECONNECT_BACKOFF_MULTIPLIER 1.6
-#define HEALTH_CHECK_RECONNECT_MAX_BACKOFF_SECONDS 120
-#define HEALTH_CHECK_RECONNECT_JITTER 0.2
-
namespace grpc_core {
TraceFlag grpc_health_check_client_trace(false, "health_check_client");
-//
-// HealthCheckClient
-//
-
-HealthCheckClient::HealthCheckClient(
- TString service_name,
- RefCountedPtr<ConnectedSubchannel> connected_subchannel,
- grpc_pollset_set* interested_parties,
- RefCountedPtr<channelz::SubchannelNode> channelz_node,
- RefCountedPtr<ConnectivityStateWatcherInterface> watcher)
- : InternallyRefCounted<HealthCheckClient>(
- GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)
- ? "HealthCheckClient"
- : nullptr),
- service_name_(std::move(service_name)),
- connected_subchannel_(std::move(connected_subchannel)),
- interested_parties_(interested_parties),
- channelz_node_(std::move(channelz_node)),
- call_allocator_(
- ResourceQuotaFromChannelArgs(connected_subchannel_->args())
- ->memory_quota()
- ->CreateMemoryAllocator(service_name_)),
- watcher_(std::move(watcher)),
- retry_backoff_(
- BackOff::Options()
- .set_initial_backoff(Duration::Seconds(
- HEALTH_CHECK_INITIAL_CONNECT_BACKOFF_SECONDS))
- .set_multiplier(HEALTH_CHECK_RECONNECT_BACKOFF_MULTIPLIER)
- .set_jitter(HEALTH_CHECK_RECONNECT_JITTER)
- .set_max_backoff(Duration::Seconds(
- HEALTH_CHECK_RECONNECT_MAX_BACKOFF_SECONDS))) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
- gpr_log(GPR_INFO, "created HealthCheckClient %p", this);
- }
- GRPC_CLOSURE_INIT(&retry_timer_callback_, OnRetryTimer, this,
- grpc_schedule_on_exec_ctx);
- StartCall();
-}
-
-HealthCheckClient::~HealthCheckClient() {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
- gpr_log(GPR_INFO, "destroying HealthCheckClient %p", this);
- }
-}
-
-void HealthCheckClient::SetHealthStatus(grpc_connectivity_state state,
- const char* reason) {
- MutexLock lock(&mu_);
- SetHealthStatusLocked(state, reason);
-}
-
-void HealthCheckClient::SetHealthStatusLocked(grpc_connectivity_state state,
- const char* reason) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
- gpr_log(GPR_INFO, "HealthCheckClient %p: setting state=%s reason=%s", this,
- ConnectivityStateName(state), reason);
- }
- if (watcher_ != nullptr) {
- watcher_->Notify(state,
- state == GRPC_CHANNEL_TRANSIENT_FAILURE
- ? y_absl::Status(y_absl::StatusCode::kUnavailable, reason)
- : y_absl::Status());
- }
-}
+namespace {
-void HealthCheckClient::Orphan() {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
- gpr_log(GPR_INFO, "HealthCheckClient %p: shutting down", this);
- }
- {
- MutexLock lock(&mu_);
- shutting_down_ = true;
- watcher_.reset();
- call_state_.reset();
- if (retry_timer_callback_pending_) {
- grpc_timer_cancel(&retry_timer_);
+class HealthStreamEventHandler
+ : public SubchannelStreamClient::CallEventHandler {
+ public:
+ HealthStreamEventHandler(
+ TString service_name,
+ RefCountedPtr<channelz::SubchannelNode> channelz_node,
+ RefCountedPtr<ConnectivityStateWatcherInterface> watcher)
+ : service_name_(std::move(service_name)),
+ channelz_node_(std::move(channelz_node)),
+ watcher_(std::move(watcher)) {}
+
+ Slice GetPathLocked() override {
+ return Slice::FromStaticString("/grpc.health.v1.Health/Watch");
+ }
+
+ void OnCallStartLocked(SubchannelStreamClient* client) override {
+ SetHealthStatusLocked(client, GRPC_CHANNEL_CONNECTING,
+ "starting health watch");
+ }
+
+ void OnRetryTimerStartLocked(SubchannelStreamClient* client) override {
+ SetHealthStatusLocked(client, GRPC_CHANNEL_TRANSIENT_FAILURE,
+ "health check call failed; will retry after backoff");
+ }
+
+ grpc_slice EncodeSendMessageLocked() override {
+ upb::Arena arena;
+ grpc_health_v1_HealthCheckRequest* request_struct =
+ grpc_health_v1_HealthCheckRequest_new(arena.ptr());
+ grpc_health_v1_HealthCheckRequest_set_service(
+ request_struct, upb_StringView_FromDataAndSize(service_name_.data(),
+ service_name_.size()));
+ size_t buf_length;
+ char* buf = grpc_health_v1_HealthCheckRequest_serialize(
+ request_struct, arena.ptr(), &buf_length);
+ grpc_slice request_slice = GRPC_SLICE_MALLOC(buf_length);
+ memcpy(GRPC_SLICE_START_PTR(request_slice), buf, buf_length);
+ return request_slice;
+ }
+
+ y_absl::Status RecvMessageReadyLocked(
+ SubchannelStreamClient* client,
+ y_absl::string_view serialized_message) override {
+ auto healthy = DecodeResponse(serialized_message);
+ if (!healthy.ok()) {
+ SetHealthStatusLocked(client, GRPC_CHANNEL_TRANSIENT_FAILURE,
+ healthy.status().ToString().c_str());
+ return healthy.status();
}
- }
- Unref(DEBUG_LOCATION, "orphan");
-}
-
-void HealthCheckClient::StartCall() {
- MutexLock lock(&mu_);
- StartCallLocked();
-}
-
-void HealthCheckClient::StartCallLocked() {
- if (shutting_down_) return;
- GPR_ASSERT(call_state_ == nullptr);
- SetHealthStatusLocked(GRPC_CHANNEL_CONNECTING, "starting health watch");
- call_state_ = MakeOrphanable<CallState>(Ref(), interested_parties_);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
- gpr_log(GPR_INFO, "HealthCheckClient %p: created CallState %p", this,
- call_state_.get());
- }
- call_state_->StartCall();
-}
-
-void HealthCheckClient::StartRetryTimerLocked() {
- SetHealthStatusLocked(GRPC_CHANNEL_TRANSIENT_FAILURE,
- "health check call failed; will retry after backoff");
- Timestamp next_try = retry_backoff_.NextAttemptTime();
- if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
- gpr_log(GPR_INFO, "HealthCheckClient %p: health check call lost...", this);
- Duration timeout = next_try - ExecCtx::Get()->Now();
- if (timeout > Duration::Zero()) {
- gpr_log(GPR_INFO,
- "HealthCheckClient %p: ... will retry in %" PRId64 "ms.", this,
- timeout.millis());
+ if (!*healthy) {
+ SetHealthStatusLocked(client, GRPC_CHANNEL_TRANSIENT_FAILURE,
+ "backend unhealthy");
} else {
- gpr_log(GPR_INFO, "HealthCheckClient %p: ... retrying immediately.",
- this);
+ SetHealthStatusLocked(client, GRPC_CHANNEL_READY, "OK");
}
- }
- // Ref for callback, tracked manually.
- Ref(DEBUG_LOCATION, "health_retry_timer").release();
- retry_timer_callback_pending_ = true;
- grpc_timer_init(&retry_timer_, next_try, &retry_timer_callback_);
-}
-
-void HealthCheckClient::OnRetryTimer(void* arg, grpc_error_handle error) {
- HealthCheckClient* self = static_cast<HealthCheckClient*>(arg);
- {
- MutexLock lock(&self->mu_);
- self->retry_timer_callback_pending_ = false;
- if (!self->shutting_down_ && error == GRPC_ERROR_NONE &&
- self->call_state_ == nullptr) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
- gpr_log(GPR_INFO, "HealthCheckClient %p: restarting health check call",
- self);
+ return y_absl::OkStatus();
+ }
+
+ void RecvTrailingMetadataReadyLocked(SubchannelStreamClient* client,
+ grpc_status_code status) override {
+ if (status == GRPC_STATUS_UNIMPLEMENTED) {
+ static const char kErrorMessage[] =
+ "health checking Watch method returned UNIMPLEMENTED; "
+ "disabling health checks but assuming server is healthy";
+ gpr_log(GPR_ERROR, kErrorMessage);
+ if (channelz_node_ != nullptr) {
+ channelz_node_->AddTraceEvent(
+ channelz::ChannelTrace::Error,
+ grpc_slice_from_static_string(kErrorMessage));
}
- self->StartCallLocked();
+ SetHealthStatusLocked(client, GRPC_CHANNEL_READY, kErrorMessage);
}
}
- self->Unref(DEBUG_LOCATION, "health_retry_timer");
-}
-
-//
-// protobuf helpers
-//
-
-namespace {
-
-void EncodeRequest(const TString& service_name,
- ManualConstructor<SliceBufferByteStream>* send_message) {
- upb::Arena arena;
- grpc_health_v1_HealthCheckRequest* request_struct =
- grpc_health_v1_HealthCheckRequest_new(arena.ptr());
- grpc_health_v1_HealthCheckRequest_set_service(
- request_struct,
- upb_StringView_FromDataAndSize(service_name.data(), service_name.size()));
- size_t buf_length;
- char* buf = grpc_health_v1_HealthCheckRequest_serialize(
- request_struct, arena.ptr(), &buf_length);
- grpc_slice request_slice = GRPC_SLICE_MALLOC(buf_length);
- memcpy(GRPC_SLICE_START_PTR(request_slice), buf, buf_length);
- grpc_slice_buffer slice_buffer;
- grpc_slice_buffer_init(&slice_buffer);
- grpc_slice_buffer_add(&slice_buffer, request_slice);
- send_message->Init(&slice_buffer, 0);
- grpc_slice_buffer_destroy_internal(&slice_buffer);
-}
-
-// Returns true if healthy.
-// If there was an error parsing the response, sets *error and returns false.
-bool DecodeResponse(grpc_slice_buffer* slice_buffer, grpc_error_handle* error) {
- // If message is empty, assume unhealthy.
- if (slice_buffer->length == 0) {
- *error =
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("health check response was empty");
- return false;
- }
- // Concatenate the slices to form a single string.
- std::unique_ptr<uint8_t> recv_message_deleter;
- uint8_t* recv_message;
- if (slice_buffer->count == 1) {
- recv_message = GRPC_SLICE_START_PTR(slice_buffer->slices[0]);
- } else {
- recv_message = static_cast<uint8_t*>(gpr_malloc(slice_buffer->length));
- recv_message_deleter.reset(recv_message);
- size_t offset = 0;
- for (size_t i = 0; i < slice_buffer->count; ++i) {
- memcpy(recv_message + offset,
- GRPC_SLICE_START_PTR(slice_buffer->slices[i]),
- GRPC_SLICE_LENGTH(slice_buffer->slices[i]));
- offset += GRPC_SLICE_LENGTH(slice_buffer->slices[i]);
- }
- }
- // Deserialize message.
- upb::Arena arena;
- grpc_health_v1_HealthCheckResponse* response_struct =
- grpc_health_v1_HealthCheckResponse_parse(
- reinterpret_cast<char*>(recv_message), slice_buffer->length,
- arena.ptr());
- if (response_struct == nullptr) {
- // Can't parse message; assume unhealthy.
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "cannot parse health check response");
- return false;
- }
- int32_t status = grpc_health_v1_HealthCheckResponse_status(response_struct);
- return status == grpc_health_v1_HealthCheckResponse_SERVING;
-}
-
-} // namespace
-
-//
-// HealthCheckClient::CallState
-//
-HealthCheckClient::CallState::CallState(
- RefCountedPtr<HealthCheckClient> health_check_client,
- grpc_pollset_set* interested_parties)
- : health_check_client_(std::move(health_check_client)),
- pollent_(grpc_polling_entity_create_from_pollset_set(interested_parties)),
- arena_(Arena::Create(health_check_client_->connected_subchannel_
- ->GetInitialCallSizeEstimate(),
- &health_check_client_->call_allocator_)),
- payload_(context_),
- send_initial_metadata_(arena_.get()),
- send_trailing_metadata_(arena_.get()),
- recv_initial_metadata_(arena_.get()),
- recv_trailing_metadata_(arena_.get()) {}
-
-HealthCheckClient::CallState::~CallState() {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
- gpr_log(GPR_INFO, "HealthCheckClient %p: destroying CallState %p",
- health_check_client_.get(), this);
- }
- for (size_t i = 0; i < GRPC_CONTEXT_COUNT; i++) {
- if (context_[i].destroy != nullptr) {
- context_[i].destroy(context_[i].value);
+ private:
+ // Returns true if healthy.
+ static y_absl::StatusOr<bool> DecodeResponse(
+ y_absl::string_view serialized_message) {
+ // Deserialize message.
+ upb::Arena arena;
+ auto* response = grpc_health_v1_HealthCheckResponse_parse(
+ serialized_message.data(), serialized_message.size(), arena.ptr());
+ if (response == nullptr) {
+ // Can't parse message; assume unhealthy.
+ return y_absl::InvalidArgumentError("cannot parse health check response");
}
+ int32_t status = grpc_health_v1_HealthCheckResponse_status(response);
+ return status == grpc_health_v1_HealthCheckResponse_SERVING;
}
- // Unset the call combiner cancellation closure. This has the
- // effect of scheduling the previously set cancellation closure, if
- // any, so that it can release any internal references it may be
- // holding to the call stack.
- call_combiner_.SetNotifyOnCancel(nullptr);
-}
-
-void HealthCheckClient::CallState::Orphan() {
- call_combiner_.Cancel(GRPC_ERROR_CANCELLED);
- Cancel();
-}
-
-void HealthCheckClient::CallState::StartCall() {
- SubchannelCall::Args args = {
- health_check_client_->connected_subchannel_,
- &pollent_,
- Slice::FromStaticString("/grpc.health.v1.Health/Watch"),
- gpr_get_cycle_counter(), // start_time
- Timestamp::InfFuture(), // deadline
- arena_.get(),
- context_,
- &call_combiner_,
- };
- grpc_error_handle error = GRPC_ERROR_NONE;
- call_ = SubchannelCall::Create(std::move(args), &error).release();
- // Register after-destruction callback.
- GRPC_CLOSURE_INIT(&after_call_stack_destruction_, AfterCallStackDestruction,
- this, grpc_schedule_on_exec_ctx);
- call_->SetAfterCallStackDestroy(&after_call_stack_destruction_);
- // Check if creation failed.
- if (error != GRPC_ERROR_NONE) {
- gpr_log(GPR_ERROR,
- "HealthCheckClient %p CallState %p: error creating health "
- "checking call on subchannel (%s); will retry",
- health_check_client_.get(), this,
- grpc_error_std_string(error).c_str());
- GRPC_ERROR_UNREF(error);
- CallEndedLocked(/*retry=*/true);
- return;
- }
- // Initialize payload and batch.
- payload_.context = context_;
- batch_.payload = &payload_;
- // on_complete callback takes ref, handled manually.
- call_->Ref(DEBUG_LOCATION, "on_complete").release();
- batch_.on_complete = GRPC_CLOSURE_INIT(&on_complete_, OnComplete, this,
- grpc_schedule_on_exec_ctx);
- // Add send_initial_metadata op.
- send_initial_metadata_.Set(
- HttpPathMetadata(),
- Slice::FromStaticString("/grpc.health.v1.Health/Watch"));
- GPR_ASSERT(error == GRPC_ERROR_NONE);
- payload_.send_initial_metadata.send_initial_metadata =
- &send_initial_metadata_;
- payload_.send_initial_metadata.send_initial_metadata_flags = 0;
- payload_.send_initial_metadata.peer_string = nullptr;
- batch_.send_initial_metadata = true;
- // Add send_message op.
- EncodeRequest(health_check_client_->service_name_, &send_message_);
- payload_.send_message.send_message.reset(send_message_.get());
- batch_.send_message = true;
- // Add send_trailing_metadata op.
- payload_.send_trailing_metadata.send_trailing_metadata =
- &send_trailing_metadata_;
- batch_.send_trailing_metadata = true;
- // Add recv_initial_metadata op.
- payload_.recv_initial_metadata.recv_initial_metadata =
- &recv_initial_metadata_;
- payload_.recv_initial_metadata.recv_flags = nullptr;
- payload_.recv_initial_metadata.trailing_metadata_available = nullptr;
- payload_.recv_initial_metadata.peer_string = nullptr;
- // recv_initial_metadata_ready callback takes ref, handled manually.
- call_->Ref(DEBUG_LOCATION, "recv_initial_metadata_ready").release();
- payload_.recv_initial_metadata.recv_initial_metadata_ready =
- GRPC_CLOSURE_INIT(&recv_initial_metadata_ready_, RecvInitialMetadataReady,
- this, grpc_schedule_on_exec_ctx);
- batch_.recv_initial_metadata = true;
- // Add recv_message op.
- payload_.recv_message.recv_message = &recv_message_;
- payload_.recv_message.call_failed_before_recv_message = nullptr;
- // recv_message callback takes ref, handled manually.
- call_->Ref(DEBUG_LOCATION, "recv_message_ready").release();
- payload_.recv_message.recv_message_ready = GRPC_CLOSURE_INIT(
- &recv_message_ready_, RecvMessageReady, this, grpc_schedule_on_exec_ctx);
- batch_.recv_message = true;
- // Start batch.
- StartBatch(&batch_);
- // Initialize recv_trailing_metadata batch.
- recv_trailing_metadata_batch_.payload = &payload_;
- // Add recv_trailing_metadata op.
- payload_.recv_trailing_metadata.recv_trailing_metadata =
- &recv_trailing_metadata_;
- payload_.recv_trailing_metadata.collect_stats = &collect_stats_;
- // This callback signals the end of the call, so it relies on the
- // initial ref instead of taking a new ref. When it's invoked, the
- // initial ref is released.
- payload_.recv_trailing_metadata.recv_trailing_metadata_ready =
- GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_,
- RecvTrailingMetadataReady, this,
- grpc_schedule_on_exec_ctx);
- recv_trailing_metadata_batch_.recv_trailing_metadata = true;
- // Start recv_trailing_metadata batch.
- StartBatch(&recv_trailing_metadata_batch_);
-}
-
-void HealthCheckClient::CallState::StartBatchInCallCombiner(
- void* arg, grpc_error_handle /*error*/) {
- grpc_transport_stream_op_batch* batch =
- static_cast<grpc_transport_stream_op_batch*>(arg);
- SubchannelCall* call =
- static_cast<SubchannelCall*>(batch->handler_private.extra_arg);
- call->StartTransportStreamOpBatch(batch);
-}
-
-void HealthCheckClient::CallState::StartBatch(
- grpc_transport_stream_op_batch* batch) {
- batch->handler_private.extra_arg = call_;
- GRPC_CLOSURE_INIT(&batch->handler_private.closure, StartBatchInCallCombiner,
- batch, grpc_schedule_on_exec_ctx);
- GRPC_CALL_COMBINER_START(&call_combiner_, &batch->handler_private.closure,
- GRPC_ERROR_NONE, "start_subchannel_batch");
-}
-
-void HealthCheckClient::CallState::AfterCallStackDestruction(
- void* arg, grpc_error_handle /*error*/) {
- HealthCheckClient::CallState* self =
- static_cast<HealthCheckClient::CallState*>(arg);
- delete self;
-}
-
-void HealthCheckClient::CallState::OnCancelComplete(
- void* arg, grpc_error_handle /*error*/) {
- HealthCheckClient::CallState* self =
- static_cast<HealthCheckClient::CallState*>(arg);
- GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "health_cancel");
- self->call_->Unref(DEBUG_LOCATION, "cancel");
-}
-
-void HealthCheckClient::CallState::StartCancel(void* arg,
- grpc_error_handle /*error*/) {
- HealthCheckClient::CallState* self =
- static_cast<HealthCheckClient::CallState*>(arg);
- auto* batch = grpc_make_transport_stream_op(
- GRPC_CLOSURE_CREATE(OnCancelComplete, self, grpc_schedule_on_exec_ctx));
- batch->cancel_stream = true;
- batch->payload->cancel_stream.cancel_error = GRPC_ERROR_CANCELLED;
- self->call_->StartTransportStreamOpBatch(batch);
-}
-
-void HealthCheckClient::CallState::Cancel() {
- bool expected = false;
- if (cancelled_.compare_exchange_strong(expected, true,
- std::memory_order_acq_rel,
- std::memory_order_acquire)) {
- call_->Ref(DEBUG_LOCATION, "cancel").release();
- GRPC_CALL_COMBINER_START(
- &call_combiner_,
- GRPC_CLOSURE_CREATE(StartCancel, this, grpc_schedule_on_exec_ctx),
- GRPC_ERROR_NONE, "health_cancel");
- }
-}
-
-void HealthCheckClient::CallState::OnComplete(void* arg,
- grpc_error_handle /*error*/) {
- HealthCheckClient::CallState* self =
- static_cast<HealthCheckClient::CallState*>(arg);
- GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "on_complete");
- self->send_initial_metadata_.Clear();
- self->send_trailing_metadata_.Clear();
- self->call_->Unref(DEBUG_LOCATION, "on_complete");
-}
-void HealthCheckClient::CallState::RecvInitialMetadataReady(
- void* arg, grpc_error_handle /*error*/) {
- HealthCheckClient::CallState* self =
- static_cast<HealthCheckClient::CallState*>(arg);
- GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "recv_initial_metadata_ready");
- self->recv_initial_metadata_.Clear();
- self->call_->Unref(DEBUG_LOCATION, "recv_initial_metadata_ready");
-}
-
-void HealthCheckClient::CallState::DoneReadingRecvMessage(
- grpc_error_handle error) {
- recv_message_.reset();
- if (error != GRPC_ERROR_NONE) {
- GRPC_ERROR_UNREF(error);
- Cancel();
- grpc_slice_buffer_destroy_internal(&recv_message_buffer_);
- call_->Unref(DEBUG_LOCATION, "recv_message_ready");
- return;
- }
- const bool healthy = DecodeResponse(&recv_message_buffer_, &error);
- const grpc_connectivity_state state =
- healthy ? GRPC_CHANNEL_READY : GRPC_CHANNEL_TRANSIENT_FAILURE;
- health_check_client_->SetHealthStatus(
- state, error == GRPC_ERROR_NONE && !healthy
- ? "backend unhealthy"
- : grpc_error_std_string(error).c_str());
- seen_response_.store(true, std::memory_order_release);
- grpc_slice_buffer_destroy_internal(&recv_message_buffer_);
- // Start another recv_message batch.
- // This re-uses the ref we're holding.
- // Note: Can't just reuse batch_ here, since we don't know that all
- // callbacks from the original batch have completed yet.
- recv_message_batch_.payload = &payload_;
- payload_.recv_message.recv_message = &recv_message_;
- payload_.recv_message.call_failed_before_recv_message = nullptr;
- payload_.recv_message.recv_message_ready = GRPC_CLOSURE_INIT(
- &recv_message_ready_, RecvMessageReady, this, grpc_schedule_on_exec_ctx);
- recv_message_batch_.recv_message = true;
- StartBatch(&recv_message_batch_);
-}
-
-grpc_error_handle HealthCheckClient::CallState::PullSliceFromRecvMessage() {
- grpc_slice slice;
- grpc_error_handle error = recv_message_->Pull(&slice);
- if (error == GRPC_ERROR_NONE) {
- grpc_slice_buffer_add(&recv_message_buffer_, slice);
- }
- return error;
-}
-
-void HealthCheckClient::CallState::ContinueReadingRecvMessage() {
- while (recv_message_->Next(SIZE_MAX, &recv_message_ready_)) {
- grpc_error_handle error = PullSliceFromRecvMessage();
- if (error != GRPC_ERROR_NONE) {
- DoneReadingRecvMessage(error);
- return;
- }
- if (recv_message_buffer_.length == recv_message_->length()) {
- DoneReadingRecvMessage(GRPC_ERROR_NONE);
- break;
+ void SetHealthStatusLocked(SubchannelStreamClient* client,
+ grpc_connectivity_state state,
+ const char* reason) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
+ gpr_log(GPR_INFO, "HealthCheckClient %p: setting state=%s reason=%s",
+ client, ConnectivityStateName(state), reason);
}
+ watcher_->Notify(state, state == GRPC_CHANNEL_TRANSIENT_FAILURE
+ ? y_absl::UnavailableError(reason)
+ : y_absl::Status());
}
-}
-
-void HealthCheckClient::CallState::OnByteStreamNext(void* arg,
- grpc_error_handle error) {
- HealthCheckClient::CallState* self =
- static_cast<HealthCheckClient::CallState*>(arg);
- if (error != GRPC_ERROR_NONE) {
- self->DoneReadingRecvMessage(GRPC_ERROR_REF(error));
- return;
- }
- error = self->PullSliceFromRecvMessage();
- if (error != GRPC_ERROR_NONE) {
- self->DoneReadingRecvMessage(error);
- return;
- }
- if (self->recv_message_buffer_.length == self->recv_message_->length()) {
- self->DoneReadingRecvMessage(GRPC_ERROR_NONE);
- } else {
- self->ContinueReadingRecvMessage();
- }
-}
-void HealthCheckClient::CallState::RecvMessageReady(
- void* arg, grpc_error_handle /*error*/) {
- HealthCheckClient::CallState* self =
- static_cast<HealthCheckClient::CallState*>(arg);
- GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "recv_message_ready");
- if (self->recv_message_ == nullptr) {
- self->call_->Unref(DEBUG_LOCATION, "recv_message_ready");
- return;
- }
- grpc_slice_buffer_init(&self->recv_message_buffer_);
- GRPC_CLOSURE_INIT(&self->recv_message_ready_, OnByteStreamNext, self,
- grpc_schedule_on_exec_ctx);
- self->ContinueReadingRecvMessage();
- // Ref will continue to be held until we finish draining the byte stream.
-}
+ TString service_name_;
+ RefCountedPtr<channelz::SubchannelNode> channelz_node_;
+ RefCountedPtr<ConnectivityStateWatcherInterface> watcher_;
+};
-void HealthCheckClient::CallState::RecvTrailingMetadataReady(
- void* arg, grpc_error_handle error) {
- HealthCheckClient::CallState* self =
- static_cast<HealthCheckClient::CallState*>(arg);
- GRPC_CALL_COMBINER_STOP(&self->call_combiner_,
- "recv_trailing_metadata_ready");
- // Get call status.
- grpc_status_code status =
- self->recv_trailing_metadata_.get(GrpcStatusMetadata())
- .value_or(GRPC_STATUS_UNKNOWN);
- if (error != GRPC_ERROR_NONE) {
- grpc_error_get_status(error, Timestamp::InfFuture(), &status,
- nullptr /* slice */, nullptr /* http_error */,
- nullptr /* error_string */);
- }
- if (GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)) {
- gpr_log(GPR_INFO,
- "HealthCheckClient %p CallState %p: health watch failed with "
- "status %d",
- self->health_check_client_.get(), self, status);
- }
- // Clean up.
- self->recv_trailing_metadata_.Clear();
- // For status UNIMPLEMENTED, give up and assume always healthy.
- bool retry = true;
- if (status == GRPC_STATUS_UNIMPLEMENTED) {
- static const char kErrorMessage[] =
- "health checking Watch method returned UNIMPLEMENTED; "
- "disabling health checks but assuming server is healthy";
- gpr_log(GPR_ERROR, kErrorMessage);
- if (self->health_check_client_->channelz_node_ != nullptr) {
- self->health_check_client_->channelz_node_->AddTraceEvent(
- channelz::ChannelTrace::Error,
- grpc_slice_from_static_string(kErrorMessage));
- }
- self->health_check_client_->SetHealthStatus(GRPC_CHANNEL_READY,
- kErrorMessage);
- retry = false;
- }
- MutexLock lock(&self->health_check_client_->mu_);
- self->CallEndedLocked(retry);
-}
+} // namespace
-void HealthCheckClient::CallState::CallEndedLocked(bool retry) {
- // If this CallState is still in use, this call ended because of a failure,
- // so we need to stop using it and optionally create a new one.
- // Otherwise, we have deliberately ended this call, and no further action
- // is required.
- if (this == health_check_client_->call_state_.get()) {
- health_check_client_->call_state_.reset();
- if (retry) {
- GPR_ASSERT(!health_check_client_->shutting_down_);
- if (seen_response_.load(std::memory_order_acquire)) {
- // If the call fails after we've gotten a successful response, reset
- // the backoff and restart the call immediately.
- health_check_client_->retry_backoff_.Reset();
- health_check_client_->StartCallLocked();
- } else {
- // If the call failed without receiving any messages, retry later.
- health_check_client_->StartRetryTimerLocked();
- }
- }
- }
- // When the last ref to the call stack goes away, the CallState object
- // will be automatically destroyed.
- call_->Unref(DEBUG_LOCATION, "call_ended");
+OrphanablePtr<SubchannelStreamClient> MakeHealthCheckClient(
+ TString service_name,
+ RefCountedPtr<ConnectedSubchannel> connected_subchannel,
+ grpc_pollset_set* interested_parties,
+ RefCountedPtr<channelz::SubchannelNode> channelz_node,
+ RefCountedPtr<ConnectivityStateWatcherInterface> watcher) {
+ return MakeOrphanable<SubchannelStreamClient>(
+ std::move(connected_subchannel), interested_parties,
+ y_absl::make_unique<HealthStreamEventHandler>(std::move(service_name),
+ std::move(channelz_node),
+ std::move(watcher)),
+ GRPC_TRACE_FLAG_ENABLED(grpc_health_check_client_trace)
+ ? "HealthCheckClient"
+ : nullptr);
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/health/health_check_client.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/health/health_check_client.h
index e9841fcfff..747d086b77 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/health/health_check_client.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/health/health_check_client.h
@@ -1,177 +1,44 @@
-/*
- *
- * Copyright 2018 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
+//
+// Copyright 2018 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HEALTH_HEALTH_CHECK_CLIENT_H
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HEALTH_HEALTH_CHECK_CLIENT_H
#include <grpc/support/port_platform.h>
-#include <atomic>
-
-#include <grpc/grpc.h>
-#include <grpc/support/sync.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
#include "src/core/ext/filters/client_channel/subchannel.h"
-#include "src/core/lib/backoff/backoff.h"
+#include "src/core/ext/filters/client_channel/subchannel_stream_client.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/iomgr/call_combiner.h"
-#include "src/core/lib/iomgr/closure.h"
-#include "src/core/lib/iomgr/polling_entity.h"
-#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/resource_quota/arena.h"
-#include "src/core/lib/transport/byte_stream.h"
-#include "src/core/lib/transport/metadata_batch.h"
-#include "src/core/lib/transport/transport.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/transport/connectivity_state.h"
namespace grpc_core {
-class HealthCheckClient : public InternallyRefCounted<HealthCheckClient> {
- public:
- HealthCheckClient(TString service_name,
- RefCountedPtr<ConnectedSubchannel> connected_subchannel,
- grpc_pollset_set* interested_parties,
- RefCountedPtr<channelz::SubchannelNode> channelz_node,
- RefCountedPtr<ConnectivityStateWatcherInterface> watcher);
-
- ~HealthCheckClient() override;
-
- void Orphan() override;
-
- private:
- // Contains a call to the backend and all the data related to the call.
- class CallState : public Orphanable {
- public:
- CallState(RefCountedPtr<HealthCheckClient> health_check_client,
- grpc_pollset_set* interested_parties);
- ~CallState() override;
-
- void Orphan() override;
-
- void StartCall() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&HealthCheckClient::mu_);
-
- private:
- void Cancel();
-
- void StartBatch(grpc_transport_stream_op_batch* batch);
- static void StartBatchInCallCombiner(void* arg, grpc_error_handle error);
-
- void CallEndedLocked(bool retry)
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(health_check_client_->mu_);
-
- static void OnComplete(void* arg, grpc_error_handle error);
- static void RecvInitialMetadataReady(void* arg, grpc_error_handle error);
- static void RecvMessageReady(void* arg, grpc_error_handle error);
- static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error);
- static void StartCancel(void* arg, grpc_error_handle error);
- static void OnCancelComplete(void* arg, grpc_error_handle error);
-
- static void OnByteStreamNext(void* arg, grpc_error_handle error);
- void ContinueReadingRecvMessage();
- grpc_error_handle PullSliceFromRecvMessage();
- void DoneReadingRecvMessage(grpc_error_handle error);
-
- static void AfterCallStackDestruction(void* arg, grpc_error_handle error);
-
- RefCountedPtr<HealthCheckClient> health_check_client_;
- grpc_polling_entity pollent_;
-
- ScopedArenaPtr arena_;
- CallCombiner call_combiner_;
- grpc_call_context_element context_[GRPC_CONTEXT_COUNT] = {};
-
- // The streaming call to the backend. Always non-null.
- // Refs are tracked manually; when the last ref is released, the
- // CallState object will be automatically destroyed.
- SubchannelCall* call_;
-
- grpc_transport_stream_op_batch_payload payload_;
- grpc_transport_stream_op_batch batch_;
- grpc_transport_stream_op_batch recv_message_batch_;
- grpc_transport_stream_op_batch recv_trailing_metadata_batch_;
-
- grpc_closure on_complete_;
-
- // send_initial_metadata
- grpc_metadata_batch send_initial_metadata_;
-
- // send_message
- ManualConstructor<SliceBufferByteStream> send_message_;
-
- // send_trailing_metadata
- grpc_metadata_batch send_trailing_metadata_;
-
- // recv_initial_metadata
- grpc_metadata_batch recv_initial_metadata_;
- grpc_closure recv_initial_metadata_ready_;
-
- // recv_message
- OrphanablePtr<ByteStream> recv_message_;
- grpc_closure recv_message_ready_;
- grpc_slice_buffer recv_message_buffer_;
- std::atomic<bool> seen_response_{false};
-
- // True if the cancel_stream batch has been started.
- std::atomic<bool> cancelled_{false};
-
- // recv_trailing_metadata
- grpc_metadata_batch recv_trailing_metadata_;
- grpc_transport_stream_stats collect_stats_;
- grpc_closure recv_trailing_metadata_ready_;
-
- // Closure for call stack destruction.
- grpc_closure after_call_stack_destruction_;
- };
-
- void StartCall();
- void StartCallLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
-
- void StartRetryTimerLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
- static void OnRetryTimer(void* arg, grpc_error_handle error);
-
- void SetHealthStatus(grpc_connectivity_state state, const char* reason);
- void SetHealthStatusLocked(grpc_connectivity_state state, const char* reason)
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
-
- TString service_name_;
- RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
- grpc_pollset_set* interested_parties_; // Do not own.
- RefCountedPtr<channelz::SubchannelNode> channelz_node_;
- MemoryAllocator call_allocator_;
-
- Mutex mu_;
- RefCountedPtr<ConnectivityStateWatcherInterface> watcher_
- Y_ABSL_GUARDED_BY(mu_);
- bool shutting_down_ Y_ABSL_GUARDED_BY(mu_) = false;
-
- // The data associated with the current health check call. It holds a ref
- // to this HealthCheckClient object.
- OrphanablePtr<CallState> call_state_ Y_ABSL_GUARDED_BY(mu_);
-
- // Call retry state.
- BackOff retry_backoff_ Y_ABSL_GUARDED_BY(mu_);
- grpc_timer retry_timer_ Y_ABSL_GUARDED_BY(mu_);
- grpc_closure retry_timer_callback_ Y_ABSL_GUARDED_BY(mu_);
- bool retry_timer_callback_pending_ Y_ABSL_GUARDED_BY(mu_) = false;
-};
+OrphanablePtr<SubchannelStreamClient> MakeHealthCheckClient(
+ TString service_name,
+ RefCountedPtr<ConnectedSubchannel> connected_subchannel,
+ grpc_pollset_set* interested_parties,
+ RefCountedPtr<channelz::SubchannelNode> channelz_node,
+ RefCountedPtr<ConnectivityStateWatcherInterface> watcher);
} // namespace grpc_core
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HEALTH_HEALTH_CHECK_CLIENT_H */
+#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HEALTH_HEALTH_CHECK_CLIENT_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/http_proxy.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/http_proxy.cc
index 3484b66468..430ca34783 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/http_proxy.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/http_proxy.cc
@@ -20,24 +20,35 @@
#include "src/core/ext/filters/client_channel/http_proxy.h"
-#include <stdbool.h>
#include <string.h>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/match.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_split.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/strings/strip.h"
+#include "y_absl/types/optional.h"
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
-#include "src/core/ext/filters/client_channel/http_connect_handshaker.h"
-#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/env.h"
#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gprpp/env.h"
#include "src/core/lib/gprpp/host_port.h"
+#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/handshaker/proxy_mapper_registry.h"
#include "src/core/lib/iomgr/resolve_address.h"
#include "src/core/lib/slice/b64.h"
+#include "src/core/lib/transport/http_connect_handshaker.h"
#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
@@ -45,17 +56,14 @@ namespace {
/**
* Parses the 'https_proxy' env var (fallback on 'http_proxy') and returns the
- * proxy hostname to resolve or nullptr on error. Also sets 'user_cred' to user
+ * proxy hostname to resolve or nullopt on error. Also sets 'user_cred' to user
* credentials if present in the 'http_proxy' env var, otherwise leaves it
- * unchanged. It is caller's responsibility to gpr_free user_cred.
+ * unchanged.
*/
-// TODO(hork): change this to return TString
-char* GetHttpProxyServer(const grpc_channel_args* args, char** user_cred) {
+y_absl::optional<TString> GetHttpProxyServer(
+ const ChannelArgs& args, y_absl::optional<TString>* user_cred) {
GPR_ASSERT(user_cred != nullptr);
y_absl::StatusOr<URI> uri;
- char* proxy_name = nullptr;
- char** authority_strs = nullptr;
- size_t authority_nstrs;
/* We check the following places to determine the HTTP proxy to use, stopping
* at the first one that is set:
* 1. GRPC_ARG_HTTP_PROXY channel arg
@@ -64,29 +72,32 @@ char* GetHttpProxyServer(const grpc_channel_args* args, char** user_cred) {
* 4. http_proxy environment variable
* If none of the above are set, then no HTTP proxy will be used.
*/
- char* uri_str =
- gpr_strdup(grpc_channel_args_find_string(args, GRPC_ARG_HTTP_PROXY));
- if (uri_str == nullptr) uri_str = gpr_getenv("grpc_proxy");
- if (uri_str == nullptr) uri_str = gpr_getenv("https_proxy");
- if (uri_str == nullptr) uri_str = gpr_getenv("http_proxy");
- if (uri_str == nullptr) return nullptr;
+ y_absl::optional<TString> uri_str =
+ args.GetOwnedString(GRPC_ARG_HTTP_PROXY);
+ if (!uri_str.has_value()) uri_str = GetEnv("grpc_proxy");
+ if (!uri_str.has_value()) uri_str = GetEnv("https_proxy");
+ if (!uri_str.has_value()) uri_str = GetEnv("http_proxy");
+ if (!uri_str.has_value()) return y_absl::nullopt;
// an emtpy value means "don't use proxy"
- if (uri_str[0] == '\0') goto done;
- uri = URI::Parse(uri_str);
+ if (uri_str->empty()) return y_absl::nullopt;
+ uri = URI::Parse(*uri_str);
if (!uri.ok() || uri->authority().empty()) {
gpr_log(GPR_ERROR, "cannot parse value of 'http_proxy' env var. Error: %s",
uri.status().ToString().c_str());
- goto done;
+ return y_absl::nullopt;
}
if (uri->scheme() != "http") {
gpr_log(GPR_ERROR, "'%s' scheme not supported in proxy URI",
uri->scheme().c_str());
- goto done;
+ return y_absl::nullopt;
}
/* Split on '@' to separate user credentials from host */
+ char** authority_strs = nullptr;
+ size_t authority_nstrs;
gpr_string_split(uri->authority().c_str(), "@", &authority_strs,
&authority_nstrs);
GPR_ASSERT(authority_nstrs != 0); /* should have at least 1 string */
+ y_absl::optional<TString> proxy_name;
if (authority_nstrs == 1) {
/* User cred not present in authority */
proxy_name = authority_strs[0];
@@ -97,14 +108,12 @@ char* GetHttpProxyServer(const grpc_channel_args* args, char** user_cred) {
gpr_log(GPR_DEBUG, "userinfo found in proxy URI");
} else {
/* Bad authority */
- for (size_t i = 0; i < authority_nstrs; i++) {
- gpr_free(authority_strs[i]);
- }
- proxy_name = nullptr;
+ proxy_name = y_absl::nullopt;
+ }
+ for (size_t i = 0; i < authority_nstrs; i++) {
+ gpr_free(authority_strs[i]);
}
gpr_free(authority_strs);
-done:
- gpr_free(uri_str);
return proxy_name;
}
@@ -119,114 +128,73 @@ TString MaybeAddDefaultPort(y_absl::string_view target) {
return TString(target);
}
-class HttpProxyMapper : public ProxyMapperInterface {
- public:
- bool MapName(const char* server_uri, const grpc_channel_args* args,
- char** name_to_resolve, grpc_channel_args** new_args) override {
- if (!grpc_channel_args_find_bool(args, GRPC_ARG_ENABLE_HTTP_PROXY, true)) {
- return false;
- }
- char* user_cred = nullptr;
- *name_to_resolve = GetHttpProxyServer(args, &user_cred);
- if (*name_to_resolve == nullptr) return false;
- char* no_proxy_str = nullptr;
- TString server_target;
- y_absl::StatusOr<URI> uri = URI::Parse(server_uri);
- if (!uri.ok() || uri->path().empty()) {
- gpr_log(GPR_ERROR,
- "'http_proxy' environment variable set, but cannot "
- "parse server URI '%s' -- not using proxy. Error: %s",
- server_uri, uri.status().ToString().c_str());
- goto no_use_proxy;
- }
- if (uri->scheme() == "unix") {
- gpr_log(GPR_INFO, "not using proxy for Unix domain socket '%s'",
- server_uri);
- goto no_use_proxy;
- }
- /* Prefer using 'no_grpc_proxy'. Fallback on 'no_proxy' if it is not set. */
- no_proxy_str = gpr_getenv("no_grpc_proxy");
- if (no_proxy_str == nullptr) no_proxy_str = gpr_getenv("no_proxy");
- if (no_proxy_str != nullptr) {
- static const char* NO_PROXY_SEPARATOR = ",";
- bool use_proxy = true;
- TString server_host;
- TString server_port;
- if (!SplitHostPort(y_absl::StripPrefix(uri->path(), "/"), &server_host,
- &server_port)) {
- gpr_log(GPR_INFO,
- "unable to split host and port, not checking no_proxy list for "
- "host '%s'",
- server_uri);
- gpr_free(no_proxy_str);
- } else {
- size_t uri_len = server_host.size();
- char** no_proxy_hosts;
- size_t num_no_proxy_hosts;
- gpr_string_split(no_proxy_str, NO_PROXY_SEPARATOR, &no_proxy_hosts,
- &num_no_proxy_hosts);
- for (size_t i = 0; i < num_no_proxy_hosts; i++) {
- char* no_proxy_entry = no_proxy_hosts[i];
- size_t no_proxy_len = strlen(no_proxy_entry);
- if (no_proxy_len <= uri_len &&
- gpr_stricmp(no_proxy_entry,
- &(server_host.c_str()[uri_len - no_proxy_len])) ==
- 0) {
- gpr_log(GPR_INFO, "not using proxy for host in no_proxy list '%s'",
- server_uri);
- use_proxy = false;
- break;
- }
- }
- for (size_t i = 0; i < num_no_proxy_hosts; i++) {
- gpr_free(no_proxy_hosts[i]);
+} // namespace
+
+y_absl::optional<TString> HttpProxyMapper::MapName(
+ y_absl::string_view server_uri, ChannelArgs* args) {
+ if (!args->GetBool(GRPC_ARG_ENABLE_HTTP_PROXY).value_or(true)) {
+ return y_absl::nullopt;
+ }
+ y_absl::optional<TString> user_cred;
+ auto name_to_resolve = GetHttpProxyServer(*args, &user_cred);
+ if (!name_to_resolve.has_value()) return name_to_resolve;
+ y_absl::StatusOr<URI> uri = URI::Parse(server_uri);
+ if (!uri.ok() || uri->path().empty()) {
+ gpr_log(GPR_ERROR,
+ "'http_proxy' environment variable set, but cannot "
+ "parse server URI '%s' -- not using proxy. Error: %s",
+ TString(server_uri).c_str(), uri.status().ToString().c_str());
+ return y_absl::nullopt;
+ }
+ if (uri->scheme() == "unix") {
+ gpr_log(GPR_INFO, "not using proxy for Unix domain socket '%s'",
+ TString(server_uri).c_str());
+ return y_absl::nullopt;
+ }
+ /* Prefer using 'no_grpc_proxy'. Fallback on 'no_proxy' if it is not set. */
+ auto no_proxy_str = GetEnv("no_grpc_proxy");
+ if (!no_proxy_str.has_value()) {
+ no_proxy_str = GetEnv("no_proxy");
+ }
+ if (no_proxy_str.has_value()) {
+ bool use_proxy = true;
+ TString server_host;
+ TString server_port;
+ if (!SplitHostPort(y_absl::StripPrefix(uri->path(), "/"), &server_host,
+ &server_port)) {
+ gpr_log(GPR_INFO,
+ "unable to split host and port, not checking no_proxy list for "
+ "host '%s'",
+ TString(server_uri).c_str());
+ } else {
+ std::vector<y_absl::string_view> no_proxy_hosts =
+ y_absl::StrSplit(*no_proxy_str, ',', y_absl::SkipEmpty());
+ for (const auto& no_proxy_entry : no_proxy_hosts) {
+ if (y_absl::EndsWithIgnoreCase(server_host, no_proxy_entry)) {
+ gpr_log(GPR_INFO, "not using proxy for host in no_proxy list '%s'",
+ TString(server_uri).c_str());
+ use_proxy = false;
+ break;
}
- gpr_free(no_proxy_hosts);
- gpr_free(no_proxy_str);
- if (!use_proxy) goto no_use_proxy;
}
+ if (!use_proxy) return y_absl::nullopt;
}
- server_target =
- MaybeAddDefaultPort(y_absl::StripPrefix(uri->path(), "/")).c_str();
- grpc_arg args_to_add[2];
- args_to_add[0] = grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_HTTP_CONNECT_SERVER),
- const_cast<char*>(server_target.c_str()));
- if (user_cred != nullptr) {
- /* Use base64 encoding for user credentials as stated in RFC 7617 */
- char* encoded_user_cred =
- grpc_base64_encode(user_cred, strlen(user_cred), 0, 0);
- TString header =
- y_absl::StrCat("Proxy-Authorization:Basic ", encoded_user_cred);
- gpr_free(encoded_user_cred);
- args_to_add[1] = grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_HTTP_CONNECT_HEADERS),
- const_cast<char*>(header.c_str()));
- *new_args = grpc_channel_args_copy_and_add(args, args_to_add, 2);
- } else {
- *new_args = grpc_channel_args_copy_and_add(args, args_to_add, 1);
- }
- gpr_free(user_cred);
- return true;
- no_use_proxy:
- gpr_free(*name_to_resolve);
- *name_to_resolve = nullptr;
- gpr_free(user_cred);
- return false;
}
-
- bool MapAddress(const grpc_resolved_address& /*address*/,
- const grpc_channel_args* /*args*/,
- grpc_resolved_address** /*new_address*/,
- grpc_channel_args** /*new_args*/) override {
- return false;
+ *args = args->Set(GRPC_ARG_HTTP_CONNECT_SERVER,
+ MaybeAddDefaultPort(y_absl::StripPrefix(uri->path(), "/")));
+ if (user_cred.has_value()) {
+ /* Use base64 encoding for user credentials as stated in RFC 7617 */
+ auto encoded_user_cred = UniquePtr<char>(
+ grpc_base64_encode(user_cred->data(), user_cred->length(), 0, 0));
+ *args = args->Set(
+ GRPC_ARG_HTTP_CONNECT_HEADERS,
+ y_absl::StrCat("Proxy-Authorization:Basic ", encoded_user_cred.get()));
}
-};
-
-} // namespace
+ return name_to_resolve;
+}
-void RegisterHttpProxyMapper() {
- ProxyMapperRegistry::Register(
+void RegisterHttpProxyMapper(CoreConfiguration::Builder* builder) {
+ builder->proxy_mapper_registry()->Register(
true /* at_start */,
std::unique_ptr<ProxyMapperInterface>(new HttpProxyMapper()));
}
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/http_proxy.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/http_proxy.h
index cecdaf8478..4662944bda 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/http_proxy.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/http_proxy.h
@@ -19,9 +19,34 @@
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_PROXY_H
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_PROXY_H
+#include <grpc/support/port_platform.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/handshaker/proxy_mapper.h"
+#include "src/core/lib/iomgr/resolved_address.h"
+
namespace grpc_core {
-void RegisterHttpProxyMapper();
+class HttpProxyMapper : public ProxyMapperInterface {
+ public:
+ y_absl::optional<TString> MapName(y_absl::string_view server_uri,
+ ChannelArgs* args) override;
+
+ y_absl::optional<grpc_resolved_address> MapAddress(
+ const grpc_resolved_address& /*address*/,
+ ChannelArgs* /*args*/) override {
+ return y_absl::nullopt;
+ }
+};
+
+void RegisterHttpProxyMapper(CoreConfiguration::Builder* builder);
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc
index 9a6d966ff2..db1836cefc 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc
@@ -18,11 +18,15 @@
#include "src/core/ext/filters/client_channel/lb_policy/address_filtering.h"
+#include <stddef.h>
+
+#include <algorithm>
+#include <utility>
+
+#include "y_absl/memory/memory.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_join.h"
-#include "src/core/lib/channel/channel_args.h"
-
#define GRPC_ARG_HIERARCHICAL_PATH "grpc.internal.address.hierarchical_path"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/address_filtering.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/address_filtering.h
index 95c27b4650..cf85f36421 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/address_filtering.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/address_filtering.h
@@ -20,6 +20,7 @@
#include <grpc/support/port_platform.h>
#include <map>
+#include <memory>
#include <util/generic/string.h>
#include <util/string/cast.h>
#include <vector>
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h
new file mode 100644
index 0000000000..2644b6acd5
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h
@@ -0,0 +1,49 @@
+/*
+ *
+ * Copyright 2022 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_BACKEND_METRIC_DATA_H
+#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_BACKEND_METRIC_DATA_H
+
+#include <grpc/support/port_platform.h>
+
+#include <map>
+
+#include "y_absl/strings/string_view.h"
+
+namespace grpc_core {
+
+// Represents backend metrics reported by the backend to the client.
+struct BackendMetricData {
+ /// CPU utilization expressed as a fraction of available CPU resources.
+ double cpu_utilization = -1;
+ /// Memory utilization expressed as a fraction of available memory
+ /// resources.
+ double mem_utilization = -1;
+ /// Application-specific requests cost metrics. Metric names are
+ /// determined by the application. Each value is an absolute cost
+ /// (e.g. 3487 bytes of storage) associated with the request.
+ std::map<y_absl::string_view, double> request_cost;
+ /// Application-specific resource utilization metrics. Metric names
+ /// are determined by the application. Each value is expressed as a
+ /// fraction of total resources available.
+ std::map<y_absl::string_view, double> utilization;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_BACKEND_METRIC_DATA_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc
index ab8cc7a8e5..609c18cb24 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc
@@ -18,11 +18,25 @@
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
-#include <cstring>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/support/log.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
+#include "src/core/lib/resolver/server_address.h"
+#include "src/core/lib/transport/connectivity_state.h"
namespace grpc_core {
@@ -39,7 +53,7 @@ class ChildPolicyHandler::Helper
~Helper() override { parent_.reset(DEBUG_LOCATION, "Helper"); }
RefCountedPtr<SubchannelInterface> CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) override {
+ ServerAddress address, const ChannelArgs& args) override {
if (parent_->shutting_down_) return nullptr;
if (!CalledByCurrentChild() && !CalledByPendingChild()) return nullptr;
return parent_->channel_control_helper()->CreateSubchannel(
@@ -148,7 +162,7 @@ void ChildPolicyHandler::ShutdownLocked() {
}
}
-void ChildPolicyHandler::UpdateLocked(UpdateArgs args) {
+y_absl::Status ChildPolicyHandler::UpdateLocked(UpdateArgs args) {
// If the child policy name changes, we need to create a new child
// policy. When this happens, we leave child_policy_ as-is and store
// the new child policy in pending_child_policy_. Once the new child
@@ -217,11 +231,12 @@ void ChildPolicyHandler::UpdateLocked(UpdateArgs args) {
if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
gpr_log(GPR_INFO,
"[child_policy_handler %p] creating new %schild policy %s", this,
- child_policy_ == nullptr ? "" : "pending ", args.config->name());
+ child_policy_ == nullptr ? "" : "pending ",
+ TString(args.config->name()).c_str());
}
auto& lb_policy =
child_policy_ == nullptr ? child_policy_ : pending_child_policy_;
- lb_policy = CreateChildPolicy(args.config->name(), *args.args);
+ lb_policy = CreateChildPolicy(args.config->name(), args.args);
policy_to_update = lb_policy.get();
} else {
// Cases 2a and 3a: update an existing policy.
@@ -239,7 +254,7 @@ void ChildPolicyHandler::UpdateLocked(UpdateArgs args) {
policy_to_update == pending_child_policy_.get() ? "pending " : "",
policy_to_update);
}
- policy_to_update->UpdateLocked(std::move(args));
+ return policy_to_update->UpdateLocked(std::move(args));
}
void ChildPolicyHandler::ExitIdleLocked() {
@@ -261,24 +276,25 @@ void ChildPolicyHandler::ResetBackoffLocked() {
}
OrphanablePtr<LoadBalancingPolicy> ChildPolicyHandler::CreateChildPolicy(
- const char* child_policy_name, const grpc_channel_args& args) {
+ y_absl::string_view child_policy_name, const ChannelArgs& args) {
Helper* helper = new Helper(Ref(DEBUG_LOCATION, "Helper"));
LoadBalancingPolicy::Args lb_policy_args;
lb_policy_args.work_serializer = work_serializer();
lb_policy_args.channel_control_helper =
std::unique_ptr<ChannelControlHelper>(helper);
- lb_policy_args.args = &args;
+ lb_policy_args.args = args;
OrphanablePtr<LoadBalancingPolicy> lb_policy =
CreateLoadBalancingPolicy(child_policy_name, std::move(lb_policy_args));
if (GPR_UNLIKELY(lb_policy == nullptr)) {
- gpr_log(GPR_ERROR, "could not create LB policy \"%s\"", child_policy_name);
+ gpr_log(GPR_ERROR, "could not create LB policy \"%s\"",
+ TString(child_policy_name).c_str());
return nullptr;
}
helper->set_child(lb_policy.get());
if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
gpr_log(GPR_INFO,
"[child_policy_handler %p] created new LB policy \"%s\" (%p)", this,
- child_policy_name, lb_policy.get());
+ TString(child_policy_name).c_str(), lb_policy.get());
}
channel_control_helper()->AddTraceEvent(
ChannelControlHelper::TRACE_INFO,
@@ -291,14 +307,15 @@ OrphanablePtr<LoadBalancingPolicy> ChildPolicyHandler::CreateChildPolicy(
bool ChildPolicyHandler::ConfigChangeRequiresNewPolicyInstance(
LoadBalancingPolicy::Config* old_config,
LoadBalancingPolicy::Config* new_config) const {
- return strcmp(old_config->name(), new_config->name()) != 0;
+ return old_config->name() != new_config->name();
}
OrphanablePtr<LoadBalancingPolicy>
ChildPolicyHandler::CreateLoadBalancingPolicy(
- const char* name, LoadBalancingPolicy::Args args) const {
- return LoadBalancingPolicyRegistry::CreateLoadBalancingPolicy(
- name, std::move(args));
+ y_absl::string_view name, LoadBalancingPolicy::Args args) const {
+ return CoreConfiguration::Get()
+ .lb_policy_registry()
+ .CreateLoadBalancingPolicy(name, std::move(args));
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h
index c902c0ec8d..331f2ab459 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h
@@ -16,29 +16,35 @@
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_CHILD_POLICY_HANDLER_H
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_CHILD_POLICY_HANDLER_H
-
#include <grpc/support/port_platform.h>
-#include "src/core/ext/filters/client_channel/lb_policy.h"
+#include <utility>
+
+#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
namespace grpc_core {
// A class that makes it easy to gracefully switch child policies.
//
// Callers should instantiate this instead of using
-// LoadBalancingPolicyRegistry::CreateLoadBalancingPolicy(). Once
-// instantiated, this object will automatically take care of
-// constructing the child policy as needed upon receiving an update.
+// CoreConfiguration::Get().lb_policy_registry().CreateLoadBalancingPolicy().
+// Once instantiated, this object will automatically take care of constructing
+// the child policy as needed upon receiving an update.
class ChildPolicyHandler : public LoadBalancingPolicy {
public:
ChildPolicyHandler(Args args, TraceFlag* tracer)
: LoadBalancingPolicy(std::move(args)), tracer_(tracer) {}
- const char* name() const override { return "child_policy_handler"; }
+ y_absl::string_view name() const override { return "child_policy_handler"; }
- void UpdateLocked(UpdateArgs args) override;
+ y_absl::Status UpdateLocked(UpdateArgs args) override;
void ExitIdleLocked() override;
void ResetBackoffLocked() override;
@@ -52,7 +58,7 @@ class ChildPolicyHandler : public LoadBalancingPolicy {
// May be overridden by subclasses to avoid recursion when an LB
// policy factory returns a ChildPolicyHandler.
virtual OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
- const char* name, LoadBalancingPolicy::Args args) const;
+ y_absl::string_view name, LoadBalancingPolicy::Args args) const;
private:
class Helper;
@@ -60,7 +66,7 @@ class ChildPolicyHandler : public LoadBalancingPolicy {
void ShutdownLocked() override;
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicy(
- const char* child_policy_name, const grpc_channel_args& args);
+ y_absl::string_view child_policy_name, const ChannelArgs& args);
// Passed in from caller at construction time.
TraceFlag* tracer_;
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc
index 3be5a7f278..1241a40faf 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc
@@ -20,15 +20,19 @@
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h"
-#include <string.h>
+#include <new>
+
+#include "y_absl/types/optional.h"
-#include <grpc/support/atm.h>
#include <grpc/support/log.h>
-#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/error.h"
-#include "src/core/lib/profiling/timers.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
static grpc_error_handle clr_init_channel_elem(
grpc_channel_element* /*elem*/, grpc_channel_element_args* /*args*/) {
@@ -56,7 +60,7 @@ struct call_data {
static void on_complete_for_send(void* arg, grpc_error_handle error) {
call_data* calld = static_cast<call_data*>(arg);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
calld->send_initial_metadata_succeeded = true;
}
grpc_core::Closure::Run(DEBUG_LOCATION, calld->original_on_complete_for_send,
@@ -65,7 +69,7 @@ static void on_complete_for_send(void* arg, grpc_error_handle error) {
static void recv_initial_metadata_ready(void* arg, grpc_error_handle error) {
call_data* calld = static_cast<call_data*>(arg);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
calld->recv_initial_metadata_succeeded = true;
}
grpc_core::Closure::Run(DEBUG_LOCATION,
@@ -97,7 +101,6 @@ static void clr_destroy_call_elem(grpc_call_element* elem,
static void clr_start_transport_stream_op_batch(
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
call_data* calld = static_cast<call_data*>(elem->call_data);
- GPR_TIMER_SCOPE("clr_start_transport_stream_op_batch", 0);
// Handle send_initial_metadata.
if (batch->send_initial_metadata) {
// Grab client stats object from metadata.
@@ -140,6 +143,7 @@ const grpc_channel_filter grpc_client_load_reporting_filter = {
clr_destroy_call_elem,
0, // sizeof(channel_data)
clr_init_channel_elem,
+ grpc_channel_stack_no_post_init,
clr_destroy_channel_elem,
grpc_channel_next_get_info,
"client_load_reporting"};
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h
index 838e2ef1ca..e1441ab0dd 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h
@@ -21,6 +21,7 @@
#include <grpc/support/port_platform.h>
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
extern const grpc_channel_filter grpc_client_load_reporting_filter;
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
index d10f1edd0c..e93ad916ad 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
@@ -53,23 +53,45 @@
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
+#include <grpc/event_engine/event_engine.h>
+
+// IWYU pragma: no_include <sys/socket.h>
+
#include <inttypes.h>
-#include <limits.h>
+#include <stdlib.h>
#include <string.h>
+#include <algorithm>
+#include <map>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
#include "y_absl/container/inlined_vector.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/strings/strip.h"
+#include "y_absl/types/optional.h"
+#include "y_absl/types/variant.h"
#include "upb/upb.hpp"
+#include <grpc/byte_buffer.h>
#include <grpc/byte_buffer_reader.h>
#include <grpc/grpc.h>
-#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/impl/codegen/propagation_bits.h>
+#include <grpc/slice.h>
+#include <grpc/status.h>
#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
-#include <grpc/support/time.h>
+#include <grpc/support/log.h>
#include "src/core/ext/filters/client_channel/client_channel.h"
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
@@ -77,30 +99,52 @@
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h"
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h"
-#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
#include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
-#include "src/core/lib/address_utils/parse_address.h"
#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/backoff/backoff.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/channel/channel_stack_builder.h"
+#include "src/core/lib/channel/channelz.h"
#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/event_engine/default_event_engine.h"
#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
-#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/validation_errors.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/iomgr/resolved_address.h"
#include "src/core/lib/iomgr/sockaddr.h"
#include "src/core/lib/iomgr/socket_utils.h"
#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/json/json_args.h"
+#include "src/core/lib/json/json_object_loader.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+#include "src/core/lib/load_balancing/lb_policy_factory.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
+#include "src/core/lib/resolver/resolver.h"
#include "src/core/lib/resolver/server_address.h"
#include "src/core/lib/security/credentials/credentials.h"
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/core/lib/slice/slice_string_helpers.h"
#include "src/core/lib/surface/call.h"
#include "src/core/lib/surface/channel.h"
+#include "src/core/lib/surface/channel_init.h"
+#include "src/core/lib/surface/channel_stack_type.h"
+#include "src/core/lib/transport/connectivity_state.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/uri/uri_parser.h"
#define GRPC_GRPCLB_INITIAL_CONNECT_BACKOFF_SECONDS 1
#define GRPC_GRPCLB_RECONNECT_BACKOFF_MULTIPLIER 1.6
@@ -117,15 +161,56 @@ const char kGrpcLbAddressAttributeKey[] = "grpclb";
namespace {
-constexpr char kGrpclb[] = "grpclb";
+using ::grpc_event_engine::experimental::EventEngine;
+using ::grpc_event_engine::experimental::GetDefaultEventEngine;
+
+constexpr y_absl::string_view kGrpclb = "grpclb";
class GrpcLbConfig : public LoadBalancingPolicy::Config {
public:
- GrpcLbConfig(RefCountedPtr<LoadBalancingPolicy::Config> child_policy,
- TString service_name)
- : child_policy_(std::move(child_policy)),
- service_name_(std::move(service_name)) {}
- const char* name() const override { return kGrpclb; }
+ GrpcLbConfig() = default;
+
+ GrpcLbConfig(const GrpcLbConfig&) = delete;
+ GrpcLbConfig& operator=(const GrpcLbConfig&) = delete;
+
+ GrpcLbConfig(GrpcLbConfig&& other) = delete;
+ GrpcLbConfig& operator=(GrpcLbConfig&& other) = delete;
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<GrpcLbConfig>()
+ // Note: "childPolicy" field requires custom parsing, so
+ // it's handled in JsonPostLoad() instead.
+ .OptionalField("serviceName", &GrpcLbConfig::service_name_)
+ .Finish();
+ return loader;
+ }
+
+ void JsonPostLoad(const Json& json, const JsonArgs&,
+ ValidationErrors* errors) {
+ ValidationErrors::ScopedField field(errors, ".childPolicy");
+ Json child_policy_config_json_tmp;
+ const Json* child_policy_config_json;
+ auto it = json.object_value().find("childPolicy");
+ if (it == json.object_value().end()) {
+ child_policy_config_json_tmp = Json::Array{Json::Object{
+ {"round_robin", Json::Object()},
+ }};
+ child_policy_config_json = &child_policy_config_json_tmp;
+ } else {
+ child_policy_config_json = &it->second;
+ }
+ auto child_policy_config =
+ CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
+ *child_policy_config_json);
+ if (!child_policy_config.ok()) {
+ errors->AddError(child_policy_config.status().message());
+ return;
+ }
+ child_policy_ = std::move(*child_policy_config);
+ }
+
+ y_absl::string_view name() const override { return kGrpclb; }
RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
return child_policy_;
@@ -142,9 +227,9 @@ class GrpcLb : public LoadBalancingPolicy {
public:
explicit GrpcLb(Args args);
- const char* name() const override { return kGrpclb; }
+ y_absl::string_view name() const override { return kGrpclb; }
- void UpdateLocked(UpdateArgs args) override;
+ y_absl::Status UpdateLocked(UpdateArgs args) override;
void ResetBackoffLocked() override;
private:
@@ -174,13 +259,14 @@ class GrpcLb : public LoadBalancingPolicy {
void ScheduleNextClientLoadReportLocked();
void SendClientLoadReportLocked();
- static void MaybeSendClientLoadReport(void* arg, grpc_error_handle error);
+ // EventEngine callbacks
+ void MaybeSendClientLoadReportLocked();
+
static void ClientLoadReportDone(void* arg, grpc_error_handle error);
static void OnInitialRequestSent(void* arg, grpc_error_handle error);
static void OnBalancerMessageReceived(void* arg, grpc_error_handle error);
static void OnBalancerStatusReceived(void* arg, grpc_error_handle error);
- void MaybeSendClientLoadReportLocked(grpc_error_handle error);
void ClientLoadReportDoneLocked(grpc_error_handle error);
void OnInitialRequestSentLocked();
void OnBalancerMessageReceivedLocked();
@@ -215,13 +301,11 @@ class GrpcLb : public LoadBalancingPolicy {
// Created after the first serverlist is received.
RefCountedPtr<GrpcLbClientStats> client_stats_;
Duration client_stats_report_interval_;
- grpc_timer client_load_report_timer_;
- bool client_load_report_timer_callback_pending_ = false;
+ y_absl::optional<EventEngine::TaskHandle> client_load_report_handle_;
bool last_client_load_report_counters_were_zero_ = false;
bool client_load_report_is_due_ = false;
- // The closure used for either the load report timer or the callback for
- // completion of sending the load report.
- grpc_closure client_load_report_closure_;
+ // The closure used for the completion of sending the load report.
+ grpc_closure client_load_report_done_closure_;
};
class SubchannelWrapper : public DelegatingSubchannel {
@@ -336,6 +420,39 @@ class GrpcLb : public LoadBalancingPolicy {
PickResult Pick(PickArgs args) override;
private:
+ // A subchannel call tracker that unrefs the GrpcLbClientStats object
+ // in the case where the subchannel call is never actually started,
+ // since the client load reporting filter will not be able to do it
+ // in that case.
+ class SubchannelCallTracker : public SubchannelCallTrackerInterface {
+ public:
+ SubchannelCallTracker(
+ RefCountedPtr<GrpcLbClientStats> client_stats,
+ std::unique_ptr<SubchannelCallTrackerInterface> original_call_tracker)
+ : client_stats_(std::move(client_stats)),
+ original_call_tracker_(std::move(original_call_tracker)) {}
+
+ void Start() override {
+ if (original_call_tracker_ != nullptr) {
+ original_call_tracker_->Start();
+ }
+ // If we're actually starting the subchannel call, then the
+ // client load reporting filter will take ownership of the ref
+ // passed down to it via metadata.
+ client_stats_.release();
+ }
+
+ void Finish(FinishArgs args) override {
+ if (original_call_tracker_ != nullptr) {
+ original_call_tracker_->Finish(args);
+ }
+ }
+
+ private:
+ RefCountedPtr<GrpcLbClientStats> client_stats_;
+ std::unique_ptr<SubchannelCallTrackerInterface> original_call_tracker_;
+ };
+
// Serverlist to be used for determining drops.
RefCountedPtr<Serverlist> serverlist_;
@@ -349,7 +466,7 @@ class GrpcLb : public LoadBalancingPolicy {
: parent_(std::move(parent)) {}
RefCountedPtr<SubchannelInterface> CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) override;
+ ServerAddress address, const ChannelArgs& args) override;
void UpdateState(grpc_connectivity_state state, const y_absl::Status& status,
std::unique_ptr<SubchannelPicker> picker) override;
void RequestReresolution() override;
@@ -393,12 +510,10 @@ class GrpcLb : public LoadBalancingPolicy {
RefCountedPtr<GrpcLb> parent_;
};
- ~GrpcLb() override;
-
void ShutdownLocked() override;
// Helper functions used in UpdateLocked().
- void UpdateBalancerChannelLocked(const grpc_channel_args& args);
+ y_absl::Status UpdateBalancerChannelLocked(const ChannelArgs& args);
void CancelBalancerChannelConnectivityWatchLocked();
@@ -414,10 +529,10 @@ class GrpcLb : public LoadBalancingPolicy {
void OnBalancerCallRetryTimerLocked(grpc_error_handle error);
// Methods for dealing with the child policy.
- grpc_channel_args* CreateChildPolicyArgsLocked(
+ ChannelArgs CreateChildPolicyArgsLocked(
bool is_backend_from_grpclb_load_balancer);
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
- const grpc_channel_args* args);
+ const ChannelArgs& args);
void CreateOrUpdateChildPolicyLocked();
// Subchannel caching.
@@ -433,7 +548,7 @@ class GrpcLb : public LoadBalancingPolicy {
RefCountedPtr<GrpcLbConfig> config_;
// Current channel args from the resolver.
- grpc_channel_args* args_ = nullptr;
+ ChannelArgs args_;
// Internal state.
bool shutting_down_ = false;
@@ -534,7 +649,8 @@ TString GrpcLb::Serverlist::AsText() const {
} else {
grpc_resolved_address addr;
ParseServer(server, &addr);
- ipport = grpc_sockaddr_to_string(&addr, false);
+ auto addr_str = grpc_sockaddr_to_string(&addr, false);
+ ipport = addr_str.ok() ? *addr_str : addr_str.status().ToString();
}
entries.push_back(y_absl::StrFormat(" %" PRIuPTR ": %s token=%s\n", i,
ipport, server.load_balance_token));
@@ -582,10 +698,12 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
server.load_balance_token, GPR_ARRAY_SIZE(server.load_balance_token));
TString lb_token(server.load_balance_token, lb_token_length);
if (lb_token.empty()) {
+ auto addr_uri = grpc_sockaddr_to_uri(&addr);
gpr_log(GPR_INFO,
"Missing LB token for backend address '%s'. The empty token will "
"be used instead",
- grpc_sockaddr_to_uri(&addr).c_str());
+ addr_uri.ok() ? addr_uri->c_str()
+ : addr_uri.status().ToString().c_str());
}
// Attach attribute to address containing LB token and stats object.
std::map<const char*, std::unique_ptr<ServerAddress::AttributeInterface>>
@@ -594,7 +712,7 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
y_absl::make_unique<TokenAndClientStatsAttribute>(std::move(lb_token),
stats);
// Add address.
- addresses.emplace_back(addr, /*args=*/nullptr, std::move(attributes));
+ addresses.emplace_back(addr, ChannelArgs(), std::move(attributes));
}
return addresses;
}
@@ -645,7 +763,10 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
// client_load_reporting filter.
GrpcLbClientStats* client_stats = subchannel_wrapper->client_stats();
if (client_stats != nullptr) {
- client_stats->Ref().release(); // Ref passed via metadata.
+ complete_pick->subchannel_call_tracker =
+ y_absl::make_unique<SubchannelCallTracker>(
+ client_stats->Ref(),
+ std::move(complete_pick->subchannel_call_tracker));
// The metadata value is a hack: we pretend the pointer points to
// a string and rely on the client_load_reporting filter to know
// how to interpret it.
@@ -676,7 +797,7 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
//
RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) {
+ ServerAddress address, const ChannelArgs& args) {
if (parent_->shutting_down_) return nullptr;
const TokenAndClientStatsAttribute* attribute =
static_cast<const TokenAndClientStatsAttribute*>(
@@ -782,12 +903,12 @@ GrpcLb::BalancerCallState::BalancerCallState(
OnBalancerMessageReceived, this, grpc_schedule_on_exec_ctx);
GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_, OnBalancerStatusReceived,
this, grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&client_load_report_closure_, MaybeSendClientLoadReport,
+ GRPC_CLOSURE_INIT(&client_load_report_done_closure_, ClientLoadReportDone,
this, grpc_schedule_on_exec_ctx);
const Timestamp deadline =
grpclb_policy()->lb_call_timeout_ == Duration::Zero()
? Timestamp::InfFuture()
- : ExecCtx::Get()->Now() + grpclb_policy()->lb_call_timeout_;
+ : Timestamp::Now() + grpclb_policy()->lb_call_timeout_;
lb_call_ = grpc_channel_create_pollset_set_call(
grpclb_policy()->lb_channel_, nullptr, GRPC_PROPAGATE_DEFAULTS,
grpclb_policy_->interested_parties(),
@@ -825,8 +946,9 @@ void GrpcLb::BalancerCallState::Orphan() {
// up. Otherwise, we are here because grpclb_policy has to orphan a failed
// call, then the following cancellation will be a no-op.
grpc_call_cancel_internal(lb_call_);
- if (client_load_report_timer_callback_pending_) {
- grpc_timer_cancel(&client_load_report_timer_);
+ if (client_load_report_handle_.has_value() &&
+ GetDefaultEventEngine()->Cancel(client_load_report_handle_.value())) {
+ Unref(DEBUG_LOCATION, "client_load_report cancelled");
}
// Note that the initial ref is hold by lb_on_balancer_status_received_
// instead of the caller of this function. So the corresponding unref happens
@@ -910,34 +1032,19 @@ void GrpcLb::BalancerCallState::StartQuery() {
}
void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
- // InvalidateNow to avoid getting stuck re-initializing this timer
- // in a loop while draining the currently-held WorkSerializer.
- // Also see https://github.com/grpc/grpc/issues/26079.
- ExecCtx::Get()->InvalidateNow();
- const Timestamp next_client_load_report_time =
- ExecCtx::Get()->Now() + client_stats_report_interval_;
- GRPC_CLOSURE_INIT(&client_load_report_closure_, MaybeSendClientLoadReport,
- this, grpc_schedule_on_exec_ctx);
- grpc_timer_init(&client_load_report_timer_, next_client_load_report_time,
- &client_load_report_closure_);
- client_load_report_timer_callback_pending_ = true;
-}
-
-void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(
- void* arg, grpc_error_handle error) {
- BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
- lb_calld->grpclb_policy()->work_serializer()->Run(
- [lb_calld, error]() { lb_calld->MaybeSendClientLoadReportLocked(error); },
- DEBUG_LOCATION);
+ client_load_report_handle_ =
+ GetDefaultEventEngine()->RunAfter(client_stats_report_interval_, [this] {
+ ApplicationCallbackExecCtx callback_exec_ctx;
+ ExecCtx exec_ctx;
+ grpclb_policy()->work_serializer()->Run(
+ [this] { MaybeSendClientLoadReportLocked(); }, DEBUG_LOCATION);
+ });
}
-void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked(
- grpc_error_handle error) {
- client_load_report_timer_callback_pending_ = false;
- if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
+void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked() {
+ client_load_report_handle_.reset();
+ if (this != grpclb_policy()->lb_calld_.get()) {
Unref(DEBUG_LOCATION, "client_load_report");
- GRPC_ERROR_UNREF(error);
return;
}
// If we've already sent the initial request, then we can go ahead and send
@@ -990,10 +1097,8 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
memset(&op, 0, sizeof(op));
op.op = GRPC_OP_SEND_MESSAGE;
op.data.send_message.send_message = send_message_payload_;
- GRPC_CLOSURE_INIT(&client_load_report_closure_, ClientLoadReportDone, this,
- grpc_schedule_on_exec_ctx);
grpc_call_error call_error = grpc_call_start_batch_and_execute(
- lb_call_, &op, 1, &client_load_report_closure_);
+ lb_call_, &op, 1, &client_load_report_done_closure_);
if (GPR_UNLIKELY(call_error != GRPC_CALL_OK)) {
gpr_log(GPR_ERROR,
"[grpclb %p] lb_calld=%p call_error=%d sending client load report",
@@ -1015,7 +1120,7 @@ void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(
grpc_error_handle error) {
grpc_byte_buffer_destroy(send_message_payload_);
send_message_payload_ = nullptr;
- if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
+ if (!GRPC_ERROR_IS_NONE(error) || this != grpclb_policy()->lb_calld_.get()) {
Unref(DEBUG_LOCATION, "client_load_report");
GRPC_ERROR_UNREF(error);
return;
@@ -1236,6 +1341,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
// If the fallback-at-startup checks are pending, go into fallback mode
// immediately. This short-circuits the timeout for the fallback-at-startup
// case.
+ grpclb_policy()->lb_calld_.reset();
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
GPR_ASSERT(!seen_serverlist_);
gpr_log(GPR_INFO,
@@ -1251,7 +1357,6 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
// This handles the fallback-after-startup case.
grpclb_policy()->MaybeEnterFallbackModeAfterStartup();
}
- grpclb_policy()->lb_calld_.reset();
GPR_ASSERT(!grpclb_policy()->shutting_down_);
grpclb_policy()->channel_control_helper()->RequestReresolution();
if (seen_initial_response_) {
@@ -1272,7 +1377,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
// helper code for creating balancer channel
//
-ServerAddressList ExtractBalancerAddresses(const grpc_channel_args& args) {
+ServerAddressList ExtractBalancerAddresses(const ChannelArgs& args) {
const ServerAddressList* addresses =
FindGrpclbBalancerAddressesInChannelArgs(args);
if (addresses != nullptr) return *addresses;
@@ -1286,88 +1391,90 @@ ServerAddressList ExtractBalancerAddresses(const grpc_channel_args& args) {
* - \a response_generator: in order to propagate updates from the resolver
* above the grpclb policy.
* - \a args: other args inherited from the grpclb policy. */
-grpc_channel_args* BuildBalancerChannelArgs(
+ChannelArgs BuildBalancerChannelArgs(
FakeResolverResponseGenerator* response_generator,
- const grpc_channel_args* args) {
- // Channel args to remove.
- static const char* args_to_remove[] = {
- // LB policy name, since we want to use the default (pick_first) in
- // the LB channel.
- GRPC_ARG_LB_POLICY_NAME,
- // Strip out the service config, since we don't want the LB policy
- // config specified for the parent channel to affect the LB channel.
- GRPC_ARG_SERVICE_CONFIG,
- // The channel arg for the server URI, since that will be different for
- // the LB channel than for the parent channel. The client channel
- // factory will re-add this arg with the right value.
- GRPC_ARG_SERVER_URI,
- // The fake resolver response generator, because we are replacing it
- // with the one from the grpclb policy, used to propagate updates to
- // the LB channel.
- GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR,
- // The LB channel should use the authority indicated by the target
- // authority table (see \a ModifyGrpclbBalancerChannelArgs),
- // as opposed to the authority from the parent channel.
- GRPC_ARG_DEFAULT_AUTHORITY,
- // Just as for \a GRPC_ARG_DEFAULT_AUTHORITY, the LB channel should be
- // treated as a stand-alone channel and not inherit this argument from the
- // args of the parent channel.
- GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
- // Don't want to pass down channelz node from parent; the balancer
- // channel will get its own.
- GRPC_ARG_CHANNELZ_CHANNEL_NODE,
- // Remove the channel args for channel credentials and replace it
- // with a version that does not contain call credentials. The loadbalancer
- // is not necessarily trusted to handle bearer token credentials.
- GRPC_ARG_CHANNEL_CREDENTIALS,
- };
+ const ChannelArgs& args) {
+ ChannelArgs grpclb_channel_args;
+ const grpc_channel_args* lb_channel_specific_args =
+ args.GetPointer<grpc_channel_args>(
+ GRPC_ARG_EXPERIMENTAL_GRPCLB_CHANNEL_ARGS);
+ if (lb_channel_specific_args != nullptr) {
+ grpclb_channel_args = ChannelArgs::FromC(lb_channel_specific_args);
+ } else {
+ // Set grpclb_channel_args based on the parent channel's channel args.
+ grpclb_channel_args =
+ args
+ // LB policy name, since we want to use the default (pick_first) in
+ // the LB channel.
+ .Remove(GRPC_ARG_LB_POLICY_NAME)
+ // Strip out the service config, since we don't want the LB policy
+ // config specified for the parent channel to affect the LB channel.
+ .Remove(GRPC_ARG_SERVICE_CONFIG)
+ // The channel arg for the server URI, since that will be different
+ // for the LB channel than for the parent channel. The client
+ // channel factory will re-add this arg with the right value.
+ .Remove(GRPC_ARG_SERVER_URI)
+ // The fake resolver response generator, because we are replacing it
+ // with the one from the grpclb policy, used to propagate updates to
+ // the LB channel.
+ .Remove(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR)
+ // The LB channel should use the authority indicated by the target
+ // authority table (see \a ModifyGrpclbBalancerChannelArgs),
+ // as opposed to the authority from the parent channel.
+ .Remove(GRPC_ARG_DEFAULT_AUTHORITY)
+ // Just as for \a GRPC_ARG_DEFAULT_AUTHORITY, the LB channel should
+ // be treated as a stand-alone channel and not inherit this argument
+ // from the args of the parent channel.
+ .Remove(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG)
+ // Don't want to pass down channelz node from parent; the balancer
+ // channel will get its own.
+ .Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE)
+ // Remove the channel args for channel credentials and replace it
+ // with a version that does not contain call credentials. The
+ // loadbalancer is not necessarily trusted to handle bearer token
+ // credentials.
+ .Remove(GRPC_ARG_CHANNEL_CREDENTIALS);
+ }
// Create channel args for channel credentials that does not contain bearer
// token credentials.
- grpc_channel_credentials* channel_credentials =
- grpc_channel_credentials_find_in_args(args);
+ auto* channel_credentials = args.GetObject<grpc_channel_credentials>();
GPR_ASSERT(channel_credentials != nullptr);
RefCountedPtr<grpc_channel_credentials> creds_sans_call_creds =
channel_credentials->duplicate_without_call_credentials();
GPR_ASSERT(creds_sans_call_creds != nullptr);
- // Channel args to add.
- y_absl::InlinedVector<grpc_arg, 4> args_to_add = {
- // The fake resolver response generator, which we use to inject
- // address updates into the LB channel.
- FakeResolverResponseGenerator::MakeChannelArg(response_generator),
+ return grpclb_channel_args
// A channel arg indicating the target is a grpclb load balancer.
- grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER), 1),
+ .Set(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER, 1)
// Tells channelz that this is an internal channel.
- grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
+ .Set(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL, 1)
// A channel args for new channel credentials that does not contain bearer
// tokens.
- grpc_channel_credentials_to_arg(creds_sans_call_creds.get()),
- };
- return grpc_channel_args_copy_and_add_and_remove(
- args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), args_to_add.data(),
- args_to_add.size());
+ .SetObject(creds_sans_call_creds)
+ // The fake resolver response generator, which we use to inject
+ // address updates into the LB channel.
+ .SetObject(response_generator->Ref());
}
//
// ctor and dtor
//
-TString GetServerNameFromChannelArgs(const grpc_channel_args* args) {
- const char* server_uri =
- grpc_channel_args_find_string(args, GRPC_ARG_SERVER_URI);
- GPR_ASSERT(server_uri != nullptr);
- y_absl::StatusOr<URI> uri = URI::Parse(server_uri);
+TString GetServerNameFromChannelArgs(const ChannelArgs& args) {
+ y_absl::StatusOr<URI> uri =
+ URI::Parse(args.GetString(GRPC_ARG_SERVER_URI).value());
GPR_ASSERT(uri.ok() && !uri->path().empty());
return TString(y_absl::StripPrefix(uri->path(), "/"));
}
GrpcLb::GrpcLb(Args args)
: LoadBalancingPolicy(std::move(args)),
- server_name_(GetServerNameFromChannelArgs(args.args)),
+ server_name_(GetServerNameFromChannelArgs(channel_args())),
response_generator_(MakeRefCounted<FakeResolverResponseGenerator>()),
- lb_call_timeout_(Duration::Milliseconds(grpc_channel_args_find_integer(
- args.args, GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS, {0, 0, INT_MAX}))),
+ lb_call_timeout_(std::max(
+ Duration::Zero(),
+ channel_args()
+ .GetDurationFromIntMillis(GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS)
+ .value_or(Duration::Zero()))),
lb_call_backoff_(
BackOff::Options()
.set_initial_backoff(Duration::Seconds(
@@ -1376,15 +1483,19 @@ GrpcLb::GrpcLb(Args args)
.set_jitter(GRPC_GRPCLB_RECONNECT_JITTER)
.set_max_backoff(Duration::Seconds(
GRPC_GRPCLB_RECONNECT_MAX_BACKOFF_SECONDS))),
- fallback_at_startup_timeout_(
- Duration::Milliseconds(grpc_channel_args_find_integer(
- args.args, GRPC_ARG_GRPCLB_FALLBACK_TIMEOUT_MS,
- {GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS, 0, INT_MAX}))),
- subchannel_cache_interval_(
- Duration::Milliseconds(grpc_channel_args_find_integer(
- args.args, GRPC_ARG_GRPCLB_SUBCHANNEL_CACHE_INTERVAL_MS,
- {GRPC_GRPCLB_DEFAULT_SUBCHANNEL_DELETION_DELAY_MS, 0,
- INT_MAX}))) {
+ fallback_at_startup_timeout_(std::max(
+ Duration::Zero(),
+ channel_args()
+ .GetDurationFromIntMillis(GRPC_ARG_GRPCLB_FALLBACK_TIMEOUT_MS)
+ .value_or(Duration::Milliseconds(
+ GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS)))),
+ subchannel_cache_interval_(std::max(
+ Duration::Zero(),
+ channel_args()
+ .GetDurationFromIntMillis(
+ GRPC_ARG_GRPCLB_SUBCHANNEL_CACHE_INTERVAL_MS)
+ .value_or(Duration::Milliseconds(
+ GRPC_GRPCLB_DEFAULT_SUBCHANNEL_DELETION_DELAY_MS)))) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
gpr_log(GPR_INFO,
"[grpclb %p] Will use '%s' as the server name for LB request.",
@@ -1399,8 +1510,6 @@ GrpcLb::GrpcLb(Args args)
nullptr);
}
-GrpcLb::~GrpcLb() { grpc_channel_args_destroy(args_); }
-
void GrpcLb::ShutdownLocked() {
shutting_down_ = true;
lb_calld_.reset();
@@ -1451,7 +1560,7 @@ void GrpcLb::ResetBackoffLocked() {
}
}
-void GrpcLb::UpdateLocked(UpdateArgs args) {
+y_absl::Status GrpcLb::UpdateLocked(UpdateArgs args) {
const bool is_initial_update = lb_channel_ == nullptr;
config_ = args.config;
GPR_ASSERT(config_ != nullptr);
@@ -1467,7 +1576,7 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
}
resolution_note_ = std::move(args.resolution_note);
// Update balancer channel.
- UpdateBalancerChannelLocked(*args.args);
+ y_absl::Status status = UpdateBalancerChannelLocked(args.args);
// Update the existing child policy, if any.
if (child_policy_ != nullptr) CreateOrUpdateChildPolicyLocked();
// If this is the initial update, start the fallback-at-startup checks
@@ -1475,13 +1584,14 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
if (is_initial_update) {
fallback_at_startup_checks_pending_ = true;
// Start timer.
- Timestamp deadline = ExecCtx::Get()->Now() + fallback_at_startup_timeout_;
+ Timestamp deadline = Timestamp::Now() + fallback_at_startup_timeout_;
Ref(DEBUG_LOCATION, "on_fallback_timer").release(); // Ref for callback
grpc_timer_init(&lb_fallback_timer_, deadline, &lb_on_fallback_);
// Start watching the channel's connectivity state. If the channel
// goes into state TRANSIENT_FAILURE before the timer fires, we go into
// fallback mode even if the fallback timeout has not elapsed.
- ClientChannel* client_channel = ClientChannel::GetFromChannel(lb_channel_);
+ ClientChannel* client_channel =
+ ClientChannel::GetFromChannel(Channel::FromC(lb_channel_));
GPR_ASSERT(client_channel != nullptr);
// Ref held by callback.
watcher_ = new StateWatcher(Ref(DEBUG_LOCATION, "StateWatcher"));
@@ -1491,43 +1601,40 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
// Start balancer call.
StartBalancerCallLocked();
}
+ return status;
}
//
// helpers for UpdateLocked()
//
-void GrpcLb::UpdateBalancerChannelLocked(const grpc_channel_args& args) {
+y_absl::Status GrpcLb::UpdateBalancerChannelLocked(const ChannelArgs& args) {
// Make sure that GRPC_ARG_LB_POLICY_NAME is set in channel args,
// since we use this to trigger the client_load_reporting filter.
- static const char* args_to_remove[] = {GRPC_ARG_LB_POLICY_NAME};
- grpc_arg new_arg = grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_LB_POLICY_NAME), const_cast<char*>("grpclb"));
- grpc_channel_args_destroy(args_);
- args_ = grpc_channel_args_copy_and_add_and_remove(
- &args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
- // Construct args for balancer channel.
+ args_ = args.Set(GRPC_ARG_LB_POLICY_NAME, "grpclb");
+ // Get balancer addresses.
ServerAddressList balancer_addresses = ExtractBalancerAddresses(args);
- grpc_channel_args* lb_channel_args =
- BuildBalancerChannelArgs(response_generator_.get(), &args);
+ y_absl::Status status;
+ if (balancer_addresses.empty()) {
+ status = y_absl::UnavailableError("balancer address list must be non-empty");
+ }
+ // Construct args for balancer channel.
+ ChannelArgs lb_channel_args =
+ BuildBalancerChannelArgs(response_generator_.get(), args);
// Create balancer channel if needed.
if (lb_channel_ == nullptr) {
TString uri_str = y_absl::StrCat("fake:///", server_name_);
- grpc_channel_credentials* creds =
- grpc_channel_credentials_find_in_args(lb_channel_args);
+ auto* creds = lb_channel_args.GetObject<grpc_channel_credentials>();
GPR_ASSERT(creds != nullptr);
- const char* arg_to_remove = GRPC_ARG_CHANNEL_CREDENTIALS;
- grpc_channel_args* new_args =
- grpc_channel_args_copy_and_remove(lb_channel_args, &arg_to_remove, 1);
- lb_channel_ = grpc_channel_create(uri_str.c_str(), creds, new_args);
+ lb_channel_ = grpc_channel_create(
+ uri_str.c_str(), creds,
+ lb_channel_args.Remove(GRPC_ARG_CHANNEL_CREDENTIALS).ToC().get());
GPR_ASSERT(lb_channel_ != nullptr);
- grpc_channel_args_destroy(new_args);
// Set up channelz linkage.
channelz::ChannelNode* child_channelz_node =
grpc_channel_get_channelz_node(lb_channel_);
channelz::ChannelNode* parent_channelz_node =
- grpc_channel_args_find_pointer<channelz::ChannelNode>(
- &args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
+ args.GetObject<channelz::ChannelNode>();
if (child_channelz_node != nullptr && parent_channelz_node != nullptr) {
parent_channelz_node->AddChildChannel(child_channelz_node->uuid());
parent_channelz_node_ = parent_channelz_node->Ref();
@@ -1539,10 +1646,13 @@ void GrpcLb::UpdateBalancerChannelLocked(const grpc_channel_args& args) {
result.addresses = std::move(balancer_addresses);
result.args = lb_channel_args;
response_generator_->SetResponse(std::move(result));
+ // Return status.
+ return status;
}
void GrpcLb::CancelBalancerChannelConnectivityWatchLocked() {
- ClientChannel* client_channel = ClientChannel::GetFromChannel(lb_channel_);
+ ClientChannel* client_channel =
+ ClientChannel::GetFromChannel(Channel::FromC(lb_channel_));
GPR_ASSERT(client_channel != nullptr);
client_channel->RemoveConnectivityWatcher(watcher_);
}
@@ -1569,7 +1679,7 @@ void GrpcLb::StartBalancerCallRetryTimerLocked() {
Timestamp next_try = lb_call_backoff_.NextAttemptTime();
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
gpr_log(GPR_INFO, "[grpclb %p] Connection to LB server lost...", this);
- Duration timeout = next_try - ExecCtx::Get()->Now();
+ Duration timeout = next_try - Timestamp::Now();
if (timeout > Duration::Zero()) {
gpr_log(GPR_INFO, "[grpclb %p] ... retry_timer_active in %" PRId64 "ms.",
this, timeout.millis());
@@ -1599,7 +1709,7 @@ void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error_handle error) {
void GrpcLb::OnBalancerCallRetryTimerLocked(grpc_error_handle error) {
retry_timer_callback_pending_ = false;
- if (!shutting_down_ && error == GRPC_ERROR_NONE && lb_calld_ == nullptr) {
+ if (!shutting_down_ && GRPC_ERROR_IS_NONE(error) && lb_calld_ == nullptr) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server", this);
}
@@ -1643,7 +1753,7 @@ void GrpcLb::OnFallbackTimerLocked(grpc_error_handle error) {
// If we receive a serverlist after the timer fires but before this callback
// actually runs, don't fall back.
if (fallback_at_startup_checks_pending_ && !shutting_down_ &&
- error == GRPC_ERROR_NONE) {
+ GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_INFO,
"[grpclb %p] No response from balancer after fallback timeout; "
"entering fallback mode",
@@ -1661,22 +1771,19 @@ void GrpcLb::OnFallbackTimerLocked(grpc_error_handle error) {
// code for interacting with the child policy
//
-grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
+ChannelArgs GrpcLb::CreateChildPolicyArgsLocked(
bool is_backend_from_grpclb_load_balancer) {
- y_absl::InlinedVector<grpc_arg, 2> args_to_add;
- args_to_add.emplace_back(grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER),
- is_backend_from_grpclb_load_balancer));
+ ChannelArgs r =
+ args_.Set(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER,
+ is_backend_from_grpclb_load_balancer);
if (is_backend_from_grpclb_load_balancer) {
- args_to_add.emplace_back(grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_INHIBIT_HEALTH_CHECKING), 1));
+ r = r.Set(GRPC_ARG_INHIBIT_HEALTH_CHECKING, 1);
}
- return grpc_channel_args_copy_and_add(args_, args_to_add.data(),
- args_to_add.size());
+ return r;
}
OrphanablePtr<LoadBalancingPolicy> GrpcLb::CreateChildPolicyLocked(
- const grpc_channel_args* args) {
+ const ChannelArgs& args) {
LoadBalancingPolicy::Args lb_policy_args;
lb_policy_args.work_serializer = work_serializer();
lb_policy_args.args = args;
@@ -1720,7 +1827,7 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
}
update_args.args =
CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
- GPR_ASSERT(update_args.args != nullptr);
+ GPR_ASSERT(update_args.args != ChannelArgs());
update_args.config = config_->child_policy();
// Create child policy if needed.
if (child_policy_ == nullptr) {
@@ -1731,7 +1838,9 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
gpr_log(GPR_INFO, "[grpclb %p] Updating child policy handler %p", this,
child_policy_.get());
}
- child_policy_->UpdateLocked(std::move(update_args));
+ // TODO(roth): If we're in fallback mode and the child policy rejects the
+ // update, we should propagate that failure back to the resolver somehow.
+ (void)child_policy_->UpdateLocked(std::move(update_args));
}
//
@@ -1740,7 +1849,7 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
void GrpcLb::CacheDeletedSubchannelLocked(
RefCountedPtr<SubchannelInterface> subchannel) {
- Timestamp deletion_time = ExecCtx::Get()->Now() + subchannel_cache_interval_;
+ Timestamp deletion_time = Timestamp::Now() + subchannel_cache_interval_;
cached_subchannels_[deletion_time].push_back(std::move(subchannel));
if (!subchannel_cache_timer_pending_) {
Ref(DEBUG_LOCATION, "OnSubchannelCacheTimer").release();
@@ -1764,7 +1873,7 @@ void GrpcLb::OnSubchannelCacheTimer(void* arg, grpc_error_handle error) {
}
void GrpcLb::OnSubchannelCacheTimerLocked(grpc_error_handle error) {
- if (subchannel_cache_timer_pending_ && error == GRPC_ERROR_NONE) {
+ if (subchannel_cache_timer_pending_ && GRPC_ERROR_IS_NONE(error)) {
auto it = cached_subchannels_.begin();
if (it != cached_subchannels_.end()) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
@@ -1795,54 +1904,12 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
return MakeOrphanable<GrpcLb>(std::move(args));
}
- const char* name() const override { return kGrpclb; }
+ y_absl::string_view name() const override { return kGrpclb; }
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
- const Json& json, grpc_error_handle* error) const override {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
- if (json.type() == Json::Type::JSON_NULL) {
- return MakeRefCounted<GrpcLbConfig>(nullptr, "");
- }
- std::vector<grpc_error_handle> error_list;
- Json child_policy_config_json_tmp;
- const Json* child_policy_config_json;
- TString service_name;
- auto it = json.object_value().find("serviceName");
- if (it != json.object_value().end()) {
- const Json& service_name_json = it->second;
- if (service_name_json.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:serviceName error:type should be string"));
- } else {
- service_name = service_name_json.string_value();
- }
- }
- it = json.object_value().find("childPolicy");
- if (it == json.object_value().end()) {
- child_policy_config_json_tmp = Json::Array{Json::Object{
- {"round_robin", Json::Object()},
- }};
- child_policy_config_json = &child_policy_config_json_tmp;
- } else {
- child_policy_config_json = &it->second;
- }
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
- RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config =
- LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
- *child_policy_config_json, &parse_error);
- if (parse_error != GRPC_ERROR_NONE) {
- std::vector<grpc_error_handle> child_errors;
- child_errors.push_back(parse_error);
- error_list.push_back(
- GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
- }
- if (error_list.empty()) {
- return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config),
- std::move(service_name));
- } else {
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("GrpcLb Parser", &error_list);
- return nullptr;
- }
+ y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+ ParseLoadBalancingConfig(const Json& json) const override {
+ return LoadRefCountedFromJson<GrpcLbConfig>(
+ json, JsonArgs(), "errors validating grpclb LB policy config");
}
};
@@ -1854,30 +1921,21 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
// Plugin registration
//
-void grpc_lb_policy_grpclb_init() {
- grpc_core::LoadBalancingPolicyRegistry::Builder::
- RegisterLoadBalancingPolicyFactory(
- y_absl::make_unique<grpc_core::GrpcLbFactory>());
-}
-
-void grpc_lb_policy_grpclb_shutdown() {}
-
namespace grpc_core {
-void RegisterGrpcLbLoadReportingFilter(CoreConfiguration::Builder* builder) {
+void RegisterGrpcLbPolicy(CoreConfiguration::Builder* builder) {
+ builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
+ y_absl::make_unique<GrpcLbFactory>());
builder->channel_init()->RegisterStage(
GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
[](ChannelStackBuilder* builder) {
- const grpc_channel_args* args = builder->channel_args();
- const grpc_arg* channel_arg =
- grpc_channel_args_find(args, GRPC_ARG_LB_POLICY_NAME);
- if (channel_arg != nullptr && channel_arg->type == GRPC_ARG_STRING &&
- strcmp(channel_arg->value.string, "grpclb") == 0) {
+ if (builder->channel_args().GetString(GRPC_ARG_LB_POLICY_NAME) ==
+ "grpclb") {
// TODO(roth): When we get around to re-attempting
// https://github.com/grpc/grpc/pull/16214, we should try to keep
// this filter at the very top of the subchannel stack, since that
// will minimize the number of metadata elements that the filter
// needs to iterate through to find the ClientStats object.
- builder->PrependFilter(&grpc_client_load_reporting_filter, nullptr);
+ builder->PrependFilter(&grpc_client_load_reporting_filter);
}
return true;
});
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc
index 8168d1568f..9b04d09b62 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc
@@ -18,6 +18,11 @@
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
+#include <stddef.h>
+
+#include <memory>
+#include <utility>
+
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gpr/useful.h"
@@ -68,9 +73,17 @@ grpc_arg CreateGrpclbBalancerAddressesArg(
}
const ServerAddressList* FindGrpclbBalancerAddressesInChannelArgs(
- const grpc_channel_args& args) {
- return grpc_channel_args_find_pointer<const ServerAddressList>(
- &args, const_cast<char*>(GRPC_ARG_GRPCLB_BALANCER_ADDRESSES));
+ const ChannelArgs& args) {
+ return args.GetPointer<const ServerAddressList>(
+ GRPC_ARG_GRPCLB_BALANCER_ADDRESSES);
+}
+
+ChannelArgs SetGrpcLbBalancerAddresses(const ChannelArgs& args,
+ ServerAddressList address_list) {
+ return args.Set(
+ GRPC_ARG_GRPCLB_BALANCER_ADDRESSES,
+ ChannelArgs::Pointer(new ServerAddressList(std::move(address_list)),
+ &kBalancerAddressesArgVtable));
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h
index 32ee1dd880..565335f36d 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h
@@ -21,14 +21,18 @@
#include <grpc/impl/codegen/grpc_types.h>
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/resolver/server_address.h"
namespace grpc_core {
grpc_arg CreateGrpclbBalancerAddressesArg(
const ServerAddressList* address_list);
+GRPC_MUST_USE_RESULT
+ChannelArgs SetGrpcLbBalancerAddresses(const ChannelArgs& args,
+ ServerAddressList address_list);
const ServerAddressList* FindGrpclbBalancerAddressesInChannelArgs(
- const grpc_channel_args& args);
+ const ChannelArgs& args);
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h
index b00c1007b0..de345edc40 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h
@@ -21,6 +21,12 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
+#include <memory>
+#include <utility>
+
+#include "y_absl/base/thread_annotations.h"
#include "y_absl/container/inlined_vector.h"
#include <grpc/support/atm.h>
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc
index c9d54a988e..4689edf287 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc
@@ -20,10 +20,20 @@
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h"
+#include <string.h>
+
+#include <algorithm>
+
#include "google/protobuf/duration.upb.h"
#include "google/protobuf/timestamp.upb.h"
+#include "upb/upb.h"
+
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/support/log.h>
+#include <grpc/support/time.h>
-#include <grpc/support/alloc.h>
+#include "src/core/lib/gprpp/memory.h"
+#include "src/proto/grpc/lb/v1/load_balancer.upb.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h
index a9ad62fa2f..4774bbf5d2 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h
@@ -18,16 +18,18 @@
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_LOAD_BALANCER_API_H
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_LOAD_BALANCER_API_H
-
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
#include <vector>
-#include <grpc/slice_buffer.h>
+#include "upb/arena.h"
+
+#include <grpc/slice.h>
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
-#include "src/proto/grpc/lb/v1/load_balancer.upb.h"
+#include "src/core/lib/gprpp/time.h"
#define GRPC_GRPCLB_SERVICE_NAME_MAX_LENGTH 128
#define GRPC_GRPCLB_SERVER_IP_ADDRESS_MAX_SIZE 16
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc
new file mode 100644
index 0000000000..8632ef415b
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc
@@ -0,0 +1,417 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h"
+
+#include <string.h>
+
+#include <algorithm>
+#include <set>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+#include "google/protobuf/duration.upb.h"
+#include "upb/upb.hpp"
+#include "xds/service/orca/v3/orca.upb.h"
+
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/slice.h>
+#include <grpc/status.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+
+#include "src/core/ext/filters/client_channel/backend_metric.h"
+#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
+#include "src/core/ext/filters/client_channel/subchannel.h"
+#include "src/core/ext/filters/client_channel/subchannel_interface_internal.h"
+#include "src/core/ext/filters/client_channel/subchannel_stream_client.h"
+#include "src/core/lib/channel/channel_trace.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/slice/slice.h"
+
+namespace grpc_core {
+
+namespace {
+
+TraceFlag grpc_orca_client_trace(false, "orca_client");
+
+class OrcaWatcher;
+
+// This producer is registered with a subchannel. It creates a
+// streaming ORCA call and reports the resulting backend metrics to all
+// registered watchers.
+class OrcaProducer : public Subchannel::DataProducerInterface {
+ public:
+ void Start(RefCountedPtr<Subchannel> subchannel);
+
+ void Orphan() override;
+
+ static UniqueTypeName Type() {
+ static UniqueTypeName::Factory kFactory("orca");
+ return kFactory.Create();
+ }
+
+ UniqueTypeName type() const override { return Type(); }
+
+ // Adds and removes watchers.
+ void AddWatcher(OrcaWatcher* watcher);
+ void RemoveWatcher(OrcaWatcher* watcher);
+
+ private:
+ class ConnectivityWatcher;
+ class OrcaStreamEventHandler;
+
+ // Returns the minimum requested reporting interval across all watchers.
+ Duration GetMinIntervalLocked() const Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
+
+ // Starts a new stream if we have a connected subchannel.
+ // Called whenever the reporting interval changes or the subchannel
+ // transitions to state READY.
+ void MaybeStartStreamLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
+
+ // Handles a connectivity state change on the subchannel.
+ void OnConnectivityStateChange(grpc_connectivity_state state);
+
+ // Called to notify watchers of a new backend metric report.
+ void NotifyWatchers(const BackendMetricData& backend_metric_data);
+
+ RefCountedPtr<Subchannel> subchannel_;
+ RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
+ ConnectivityWatcher* connectivity_watcher_;
+ Mutex mu_;
+ std::set<OrcaWatcher*> watchers_ Y_ABSL_GUARDED_BY(mu_);
+ Duration report_interval_ Y_ABSL_GUARDED_BY(mu_) = Duration::Infinity();
+ OrphanablePtr<SubchannelStreamClient> stream_client_ Y_ABSL_GUARDED_BY(mu_);
+};
+
+// This watcher is returned to the LB policy and added to the
+// client channel SubchannelWrapper.
+class OrcaWatcher : public InternalSubchannelDataWatcherInterface {
+ public:
+ OrcaWatcher(Duration report_interval,
+ std::unique_ptr<OobBackendMetricWatcher> watcher)
+ : report_interval_(report_interval), watcher_(std::move(watcher)) {}
+ ~OrcaWatcher() override;
+
+ Duration report_interval() const { return report_interval_; }
+ OobBackendMetricWatcher* watcher() const { return watcher_.get(); }
+
+ // When the client channel sees this wrapper, it will pass it the real
+ // subchannel to use.
+ void SetSubchannel(Subchannel* subchannel) override;
+
+ private:
+ const Duration report_interval_;
+ std::unique_ptr<OobBackendMetricWatcher> watcher_;
+ RefCountedPtr<OrcaProducer> producer_;
+};
+
+//
+// OrcaProducer::ConnectivityWatcher
+//
+
+class OrcaProducer::ConnectivityWatcher
+ : public Subchannel::ConnectivityStateWatcherInterface {
+ public:
+ explicit ConnectivityWatcher(WeakRefCountedPtr<OrcaProducer> producer)
+ : producer_(std::move(producer)),
+ interested_parties_(grpc_pollset_set_create()) {}
+
+ ~ConnectivityWatcher() override {
+ grpc_pollset_set_destroy(interested_parties_);
+ }
+
+ void OnConnectivityStateChange() override {
+ auto change = PopConnectivityStateChange();
+ producer_->OnConnectivityStateChange(change.state);
+ }
+
+ grpc_pollset_set* interested_parties() override {
+ return interested_parties_;
+ }
+
+ private:
+ WeakRefCountedPtr<OrcaProducer> producer_;
+ grpc_pollset_set* interested_parties_;
+};
+
+//
+// OrcaProducer::OrcaStreamEventHandler
+//
+
+class OrcaProducer::OrcaStreamEventHandler
+ : public SubchannelStreamClient::CallEventHandler {
+ public:
+ OrcaStreamEventHandler(WeakRefCountedPtr<OrcaProducer> producer,
+ Duration report_interval)
+ : producer_(std::move(producer)), report_interval_(report_interval) {}
+
+ Slice GetPathLocked() override {
+ return Slice::FromStaticString(
+ "/xds.service.orca.v3.OpenRcaService/StreamCoreMetrics");
+ }
+
+ void OnCallStartLocked(SubchannelStreamClient* /*client*/) override {}
+
+ void OnRetryTimerStartLocked(SubchannelStreamClient* /*client*/) override {}
+
+ grpc_slice EncodeSendMessageLocked() override {
+ upb::Arena arena;
+ xds_service_orca_v3_OrcaLoadReportRequest* request =
+ xds_service_orca_v3_OrcaLoadReportRequest_new(arena.ptr());
+ gpr_timespec timespec = report_interval_.as_timespec();
+ auto* report_interval =
+ xds_service_orca_v3_OrcaLoadReportRequest_mutable_report_interval(
+ request, arena.ptr());
+ google_protobuf_Duration_set_seconds(report_interval, timespec.tv_sec);
+ google_protobuf_Duration_set_nanos(report_interval, timespec.tv_nsec);
+ size_t buf_length;
+ char* buf = xds_service_orca_v3_OrcaLoadReportRequest_serialize(
+ request, arena.ptr(), &buf_length);
+ grpc_slice request_slice = GRPC_SLICE_MALLOC(buf_length);
+ memcpy(GRPC_SLICE_START_PTR(request_slice), buf, buf_length);
+ return request_slice;
+ }
+
+ y_absl::Status RecvMessageReadyLocked(
+ SubchannelStreamClient* /*client*/,
+ y_absl::string_view serialized_message) override {
+ auto* allocator = new BackendMetricAllocator(producer_);
+ auto* backend_metric_data =
+ ParseBackendMetricData(serialized_message, allocator);
+ if (backend_metric_data == nullptr) {
+ delete allocator;
+ return y_absl::InvalidArgumentError("unable to parse Orca response");
+ }
+ allocator->AsyncNotifyWatchersAndDelete();
+ return y_absl::OkStatus();
+ }
+
+ void RecvTrailingMetadataReadyLocked(SubchannelStreamClient* /*client*/,
+ grpc_status_code status) override {
+ if (status == GRPC_STATUS_UNIMPLEMENTED) {
+ static const char kErrorMessage[] =
+ "Orca stream returned UNIMPLEMENTED; disabling";
+ gpr_log(GPR_ERROR, kErrorMessage);
+ auto* channelz_node = producer_->subchannel_->channelz_node();
+ if (channelz_node != nullptr) {
+ channelz_node->AddTraceEvent(
+ channelz::ChannelTrace::Error,
+ grpc_slice_from_static_string(kErrorMessage));
+ }
+ }
+ }
+
+ private:
+ // This class acts as storage for the parsed backend metric data. It
+ // is injected into ParseBackendMetricData() as an allocator that
+ // returns internal storage. It then also acts as a place to hold
+ // onto the data during an async hop into the ExecCtx before sending
+ // notifications, which avoids lock inversion problems due to
+ // acquiring producer_->mu_ while holding the lock from inside of
+ // SubchannelStreamClient.
+ class BackendMetricAllocator : public BackendMetricAllocatorInterface {
+ public:
+ explicit BackendMetricAllocator(WeakRefCountedPtr<OrcaProducer> producer)
+ : producer_(std::move(producer)) {}
+
+ BackendMetricData* AllocateBackendMetricData() override {
+ return &backend_metric_data_;
+ }
+
+ char* AllocateString(size_t size) override {
+ char* string = static_cast<char*>(gpr_malloc(size));
+ string_storage_.emplace_back(string);
+ return string;
+ }
+
+ // Notifies watchers asynchronously and then deletes the
+ // BackendMetricAllocator object.
+ void AsyncNotifyWatchersAndDelete() {
+ GRPC_CLOSURE_INIT(&closure_, NotifyWatchersInExecCtx, this, nullptr);
+ ExecCtx::Run(DEBUG_LOCATION, &closure_, GRPC_ERROR_NONE);
+ }
+
+ private:
+ static void NotifyWatchersInExecCtx(void* arg,
+ grpc_error_handle /*error*/) {
+ auto* self = static_cast<BackendMetricAllocator*>(arg);
+ self->producer_->NotifyWatchers(self->backend_metric_data_);
+ delete self;
+ }
+
+ WeakRefCountedPtr<OrcaProducer> producer_;
+ BackendMetricData backend_metric_data_;
+ std::vector<UniquePtr<char>> string_storage_;
+ grpc_closure closure_;
+ };
+
+ WeakRefCountedPtr<OrcaProducer> producer_;
+ const Duration report_interval_;
+};
+
+//
+// OrcaProducer
+//
+
+void OrcaProducer::Start(RefCountedPtr<Subchannel> subchannel) {
+ subchannel_ = std::move(subchannel);
+ connected_subchannel_ = subchannel_->connected_subchannel();
+ auto connectivity_watcher = MakeRefCounted<ConnectivityWatcher>(WeakRef());
+ connectivity_watcher_ = connectivity_watcher.get();
+ subchannel_->WatchConnectivityState(
+ /*health_check_service_name=*/y_absl::nullopt,
+ std::move(connectivity_watcher));
+}
+
+void OrcaProducer::Orphan() {
+ {
+ MutexLock lock(&mu_);
+ stream_client_.reset();
+ }
+ GPR_ASSERT(subchannel_ != nullptr); // Should not be called before Start().
+ subchannel_->CancelConnectivityStateWatch(
+ /*health_check_service_name=*/y_absl::nullopt, connectivity_watcher_);
+ subchannel_->RemoveDataProducer(this);
+}
+
+void OrcaProducer::AddWatcher(OrcaWatcher* watcher) {
+ MutexLock lock(&mu_);
+ watchers_.insert(watcher);
+ Duration watcher_interval = watcher->report_interval();
+ if (watcher_interval < report_interval_) {
+ report_interval_ = watcher_interval;
+ stream_client_.reset();
+ MaybeStartStreamLocked();
+ }
+}
+
+void OrcaProducer::RemoveWatcher(OrcaWatcher* watcher) {
+ MutexLock lock(&mu_);
+ watchers_.erase(watcher);
+ if (watchers_.empty()) {
+ stream_client_.reset();
+ return;
+ }
+ Duration new_interval = GetMinIntervalLocked();
+ if (new_interval < report_interval_) {
+ report_interval_ = new_interval;
+ stream_client_.reset();
+ MaybeStartStreamLocked();
+ }
+}
+
+Duration OrcaProducer::GetMinIntervalLocked() const {
+ Duration duration = Duration::Infinity();
+ for (OrcaWatcher* watcher : watchers_) {
+ Duration watcher_interval = watcher->report_interval();
+ if (watcher_interval < duration) duration = watcher_interval;
+ }
+ return duration;
+}
+
+void OrcaProducer::MaybeStartStreamLocked() {
+ if (connected_subchannel_ == nullptr) return;
+ stream_client_ = MakeOrphanable<SubchannelStreamClient>(
+ connected_subchannel_, subchannel_->pollset_set(),
+ y_absl::make_unique<OrcaStreamEventHandler>(WeakRef(), report_interval_),
+ GRPC_TRACE_FLAG_ENABLED(grpc_orca_client_trace) ? "OrcaClient" : nullptr);
+}
+
+void OrcaProducer::NotifyWatchers(
+ const BackendMetricData& backend_metric_data) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_orca_client_trace)) {
+ gpr_log(GPR_INFO, "OrcaProducer %p: reporting backend metrics to watchers",
+ this);
+ }
+ MutexLock lock(&mu_);
+ for (OrcaWatcher* watcher : watchers_) {
+ watcher->watcher()->OnBackendMetricReport(backend_metric_data);
+ }
+}
+
+void OrcaProducer::OnConnectivityStateChange(grpc_connectivity_state state) {
+ MutexLock lock(&mu_);
+ if (state == GRPC_CHANNEL_READY) {
+ connected_subchannel_ = subchannel_->connected_subchannel();
+ if (!watchers_.empty()) MaybeStartStreamLocked();
+ } else {
+ connected_subchannel_.reset();
+ stream_client_.reset();
+ }
+}
+
+//
+// OrcaWatcher
+//
+
+OrcaWatcher::~OrcaWatcher() {
+ if (producer_ != nullptr) producer_->RemoveWatcher(this);
+}
+
+void OrcaWatcher::SetSubchannel(Subchannel* subchannel) {
+ bool created = false;
+ // Check if our producer is already registered with the subchannel.
+ // If not, create a new one.
+ subchannel->GetOrAddDataProducer(
+ OrcaProducer::Type(), [&](Subchannel::DataProducerInterface** producer) {
+ if (*producer != nullptr) producer_ = (*producer)->RefIfNonZero();
+ if (producer_ == nullptr) {
+ producer_ = MakeRefCounted<OrcaProducer>();
+ *producer = producer_.get();
+ created = true;
+ }
+ });
+ // If we just created the producer, start it.
+ // This needs to be done outside of the lambda passed to
+ // GetOrAddDataProducer() to avoid deadlocking by re-acquiring the
+ // subchannel lock while already holding it.
+ if (created) producer_->Start(subchannel->Ref());
+ // Register ourself with the producer.
+ producer_->AddWatcher(this);
+}
+
+} // namespace
+
+std::unique_ptr<SubchannelInterface::DataWatcherInterface>
+MakeOobBackendMetricWatcher(Duration report_interval,
+ std::unique_ptr<OobBackendMetricWatcher> watcher) {
+ return y_absl::make_unique<OrcaWatcher>(report_interval, std::move(watcher));
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h
new file mode 100644
index 0000000000..d99b239afd
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h
@@ -0,0 +1,57 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_OOB_BACKEND_METRIC_H
+#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_OOB_BACKEND_METRIC_H
+
+#include <grpc/support/port_platform.h>
+
+#include <memory>
+
+#include "src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
+
+namespace grpc_core {
+
+// Interface for LB policies to access out-of-band backend metric data
+// from a subchannel. The data is reported from via an ORCA stream
+// established on the subchannel whenever an LB policy registers a
+// watcher.
+//
+// To use this, an LB policy will implement its own subclass of
+// OobBackendMetricWatcher, which will receive backend metric data as it
+// is sent by the server. It will then register that watcher with the
+// subchannel like this:
+// subchannel->AddDataWatcher(
+// MakeOobBackendMetricWatcher(
+// y_absl::make_unique<MyOobBackendMetricWatcherSubclass>(...)));
+
+class OobBackendMetricWatcher {
+ public:
+ virtual ~OobBackendMetricWatcher() = default;
+
+ virtual void OnBackendMetricReport(
+ const BackendMetricData& backend_metric_data) = 0;
+};
+
+std::unique_ptr<SubchannelInterface::DataWatcherInterface>
+MakeOobBackendMetricWatcher(Duration report_interval,
+ std::unique_ptr<OobBackendMetricWatcher> watcher);
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_OOB_BACKEND_METRIC_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc
new file mode 100644
index 0000000000..437ad83ab2
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc
@@ -0,0 +1,1141 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h"
+
+#include <inttypes.h>
+#include <stddef.h>
+
+#include <algorithm>
+#include <atomic>
+#include <cmath>
+#include <cstdint>
+#include <map>
+#include <memory>
+#include <set>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/random/random.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/variant.h"
+
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/support/log.h>
+
+#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
+#include "src/core/lib/address_utils/sockaddr_utils.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/env.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/validation_errors.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+#include "src/core/lib/load_balancing/lb_policy_factory.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
+#include "src/core/lib/resolver/server_address.h"
+#include "src/core/lib/transport/connectivity_state.h"
+
+namespace grpc_core {
+
+TraceFlag grpc_outlier_detection_lb_trace(false, "outlier_detection_lb");
+
+// TODO(donnadionne): Remove once outlier detection is no longer experimental
+bool XdsOutlierDetectionEnabled() {
+ auto value = GetEnv("GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION");
+ if (!value.has_value()) return false;
+ bool parsed_value;
+ bool parse_succeeded = gpr_parse_bool_value(value->c_str(), &parsed_value);
+ return parse_succeeded && parsed_value;
+}
+
+namespace {
+
+constexpr y_absl::string_view kOutlierDetection =
+ "outlier_detection_experimental";
+
+// Config for xDS Cluster Impl LB policy.
+class OutlierDetectionLbConfig : public LoadBalancingPolicy::Config {
+ public:
+ OutlierDetectionLbConfig(
+ OutlierDetectionConfig outlier_detection_config,
+ RefCountedPtr<LoadBalancingPolicy::Config> child_policy)
+ : outlier_detection_config_(outlier_detection_config),
+ child_policy_(std::move(child_policy)) {}
+
+ y_absl::string_view name() const override { return kOutlierDetection; }
+
+ bool CountingEnabled() const {
+ return outlier_detection_config_.success_rate_ejection.has_value() ||
+ outlier_detection_config_.failure_percentage_ejection.has_value();
+ }
+
+ const OutlierDetectionConfig& outlier_detection_config() const {
+ return outlier_detection_config_;
+ }
+
+ RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
+ return child_policy_;
+ }
+
+ private:
+ OutlierDetectionConfig outlier_detection_config_;
+ RefCountedPtr<LoadBalancingPolicy::Config> child_policy_;
+};
+
+// xDS Cluster Impl LB policy.
+class OutlierDetectionLb : public LoadBalancingPolicy {
+ public:
+ explicit OutlierDetectionLb(Args args);
+
+ y_absl::string_view name() const override { return kOutlierDetection; }
+
+ y_absl::Status UpdateLocked(UpdateArgs args) override;
+ void ExitIdleLocked() override;
+ void ResetBackoffLocked() override;
+
+ private:
+ class SubchannelState;
+ class SubchannelWrapper : public DelegatingSubchannel {
+ public:
+ SubchannelWrapper(RefCountedPtr<SubchannelState> subchannel_state,
+ RefCountedPtr<SubchannelInterface> subchannel)
+ : DelegatingSubchannel(std::move(subchannel)),
+ subchannel_state_(std::move(subchannel_state)) {
+ if (subchannel_state_ != nullptr) {
+ subchannel_state_->AddSubchannel(this);
+ if (subchannel_state_->ejection_time().has_value()) {
+ ejected_ = true;
+ }
+ }
+ }
+
+ ~SubchannelWrapper() override {
+ if (subchannel_state_ != nullptr) {
+ subchannel_state_->RemoveSubchannel(this);
+ }
+ }
+
+ void Eject();
+
+ void Uneject();
+
+ void WatchConnectivityState(
+ std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override;
+
+ void CancelConnectivityStateWatch(
+ ConnectivityStateWatcherInterface* watcher) override;
+
+ RefCountedPtr<SubchannelState> subchannel_state() const {
+ return subchannel_state_;
+ }
+
+ private:
+ class WatcherWrapper
+ : public SubchannelInterface::ConnectivityStateWatcherInterface {
+ public:
+ WatcherWrapper(std::unique_ptr<
+ SubchannelInterface::ConnectivityStateWatcherInterface>
+ watcher,
+ bool ejected)
+ : watcher_(std::move(watcher)), ejected_(ejected) {}
+
+ void Eject() {
+ ejected_ = true;
+ if (last_seen_state_.has_value()) {
+ watcher_->OnConnectivityStateChange(
+ GRPC_CHANNEL_TRANSIENT_FAILURE,
+ y_absl::UnavailableError(
+ "subchannel ejected by outlier detection"));
+ }
+ }
+
+ void Uneject() {
+ ejected_ = false;
+ if (last_seen_state_.has_value()) {
+ watcher_->OnConnectivityStateChange(*last_seen_state_,
+ last_seen_status_);
+ }
+ }
+
+ void OnConnectivityStateChange(grpc_connectivity_state new_state,
+ y_absl::Status status) override {
+ const bool send_update = !last_seen_state_.has_value() || !ejected_;
+ last_seen_state_ = new_state;
+ last_seen_status_ = status;
+ if (send_update) {
+ if (ejected_) {
+ new_state = GRPC_CHANNEL_TRANSIENT_FAILURE;
+ status = y_absl::UnavailableError(
+ "subchannel ejected by outlier detection");
+ }
+ watcher_->OnConnectivityStateChange(new_state, status);
+ }
+ }
+
+ grpc_pollset_set* interested_parties() override {
+ return watcher_->interested_parties();
+ }
+
+ private:
+ std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
+ watcher_;
+ y_absl::optional<grpc_connectivity_state> last_seen_state_;
+ y_absl::Status last_seen_status_;
+ bool ejected_;
+ };
+
+ RefCountedPtr<SubchannelState> subchannel_state_;
+ bool ejected_ = false;
+ std::map<SubchannelInterface::ConnectivityStateWatcherInterface*,
+ WatcherWrapper*>
+ watchers_;
+ };
+
+ class SubchannelState : public RefCounted<SubchannelState> {
+ public:
+ struct Bucket {
+ std::atomic<uint64_t> successes;
+ std::atomic<uint64_t> failures;
+ };
+
+ void RotateBucket() {
+ backup_bucket_->successes = 0;
+ backup_bucket_->failures = 0;
+ current_bucket_.swap(backup_bucket_);
+ active_bucket_.store(current_bucket_.get());
+ }
+
+ y_absl::optional<std::pair<double, uint64_t>> GetSuccessRateAndVolume() {
+ uint64_t total_request =
+ backup_bucket_->successes + backup_bucket_->failures;
+ if (total_request == 0) {
+ return y_absl::nullopt;
+ }
+ double success_rate =
+ backup_bucket_->successes * 100.0 /
+ (backup_bucket_->successes + backup_bucket_->failures);
+ return {
+ {success_rate, backup_bucket_->successes + backup_bucket_->failures}};
+ }
+
+ void AddSubchannel(SubchannelWrapper* wrapper) {
+ subchannels_.insert(wrapper);
+ }
+
+ void RemoveSubchannel(SubchannelWrapper* wrapper) {
+ subchannels_.erase(wrapper);
+ }
+
+ void AddSuccessCount() { active_bucket_.load()->successes.fetch_add(1); }
+
+ void AddFailureCount() { active_bucket_.load()->failures.fetch_add(1); }
+
+ y_absl::optional<Timestamp> ejection_time() const { return ejection_time_; }
+
+ void Eject(const Timestamp& time) {
+ ejection_time_ = time;
+ ++multiplier_;
+ for (auto& subchannel : subchannels_) {
+ subchannel->Eject();
+ }
+ }
+
+ void Uneject() {
+ ejection_time_.reset();
+ for (auto& subchannel : subchannels_) {
+ subchannel->Uneject();
+ }
+ }
+
+ bool MaybeUneject(uint64_t base_ejection_time_in_millis,
+ uint64_t max_ejection_time_in_millis) {
+ if (!ejection_time_.has_value()) {
+ if (multiplier_ > 0) {
+ --multiplier_;
+ }
+ } else {
+ GPR_ASSERT(ejection_time_.has_value());
+ auto change_time = ejection_time_.value() +
+ Duration::Milliseconds(std::min(
+ base_ejection_time_in_millis * multiplier_,
+ std::max(base_ejection_time_in_millis,
+ max_ejection_time_in_millis)));
+ if (change_time < Timestamp::Now()) {
+ Uneject();
+ return true;
+ }
+ }
+ return false;
+ }
+
+ void DisableEjection() {
+ Uneject();
+ multiplier_ = 0;
+ }
+
+ private:
+ std::unique_ptr<Bucket> current_bucket_ = y_absl::make_unique<Bucket>();
+ std::unique_ptr<Bucket> backup_bucket_ = y_absl::make_unique<Bucket>();
+ // The bucket used to update call counts.
+ // Points to either current_bucket or active_bucket.
+ std::atomic<Bucket*> active_bucket_{current_bucket_.get()};
+ uint32_t multiplier_ = 0;
+ y_absl::optional<Timestamp> ejection_time_;
+ std::set<SubchannelWrapper*> subchannels_;
+ };
+
+ // A simple wrapper for ref-counting a picker from the child policy.
+ class RefCountedPicker : public RefCounted<RefCountedPicker> {
+ public:
+ explicit RefCountedPicker(std::unique_ptr<SubchannelPicker> picker)
+ : picker_(std::move(picker)) {}
+ PickResult Pick(PickArgs args) { return picker_->Pick(args); }
+
+ private:
+ std::unique_ptr<SubchannelPicker> picker_;
+ };
+
+ // A picker that wraps the picker from the child to perform outlier detection.
+ class Picker : public SubchannelPicker {
+ public:
+ Picker(OutlierDetectionLb* outlier_detection_lb,
+ RefCountedPtr<RefCountedPicker> picker, bool counting_enabled);
+
+ PickResult Pick(PickArgs args) override;
+
+ private:
+ class SubchannelCallTracker;
+ RefCountedPtr<RefCountedPicker> picker_;
+ bool counting_enabled_;
+ };
+
+ class Helper : public ChannelControlHelper {
+ public:
+ explicit Helper(RefCountedPtr<OutlierDetectionLb> outlier_detection_policy)
+ : outlier_detection_policy_(std::move(outlier_detection_policy)) {}
+
+ ~Helper() override {
+ outlier_detection_policy_.reset(DEBUG_LOCATION, "Helper");
+ }
+
+ RefCountedPtr<SubchannelInterface> CreateSubchannel(
+ ServerAddress address, const ChannelArgs& args) override;
+ void UpdateState(grpc_connectivity_state state, const y_absl::Status& status,
+ std::unique_ptr<SubchannelPicker> picker) override;
+ void RequestReresolution() override;
+ y_absl::string_view GetAuthority() override;
+ void AddTraceEvent(TraceSeverity severity,
+ y_absl::string_view message) override;
+
+ private:
+ RefCountedPtr<OutlierDetectionLb> outlier_detection_policy_;
+ };
+
+ class EjectionTimer : public InternallyRefCounted<EjectionTimer> {
+ public:
+ EjectionTimer(RefCountedPtr<OutlierDetectionLb> parent,
+ Timestamp start_time);
+
+ void Orphan() override;
+
+ Timestamp StartTime() const { return start_time_; }
+
+ private:
+ static void OnTimer(void* arg, grpc_error_handle error);
+ void OnTimerLocked(grpc_error_handle);
+
+ RefCountedPtr<OutlierDetectionLb> parent_;
+ grpc_timer timer_;
+ grpc_closure on_timer_;
+ bool timer_pending_ = true;
+ Timestamp start_time_;
+ y_absl::BitGen bit_gen_;
+ };
+
+ ~OutlierDetectionLb() override;
+
+ static TString MakeKeyForAddress(const ServerAddress& address);
+
+ void ShutdownLocked() override;
+
+ OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
+ const ChannelArgs& args);
+
+ void MaybeUpdatePickerLocked();
+
+ // Current config from the resolver.
+ RefCountedPtr<OutlierDetectionLbConfig> config_;
+
+ // Internal state.
+ bool shutting_down_ = false;
+
+ OrphanablePtr<LoadBalancingPolicy> child_policy_;
+
+ // Latest state and picker reported by the child policy.
+ grpc_connectivity_state state_ = GRPC_CHANNEL_IDLE;
+ y_absl::Status status_;
+ RefCountedPtr<RefCountedPicker> picker_;
+ std::map<TString, RefCountedPtr<SubchannelState>> subchannel_state_map_;
+ OrphanablePtr<EjectionTimer> ejection_timer_;
+};
+
+//
+// OutlierDetectionLb::SubchannelWrapper
+//
+
+void OutlierDetectionLb::SubchannelWrapper::Eject() {
+ ejected_ = true;
+ for (auto& watcher : watchers_) {
+ watcher.second->Eject();
+ }
+}
+
+void OutlierDetectionLb::SubchannelWrapper::Uneject() {
+ ejected_ = false;
+ for (auto& watcher : watchers_) {
+ watcher.second->Uneject();
+ }
+}
+
+void OutlierDetectionLb::SubchannelWrapper::WatchConnectivityState(
+ std::unique_ptr<ConnectivityStateWatcherInterface> watcher) {
+ ConnectivityStateWatcherInterface* watcher_ptr = watcher.get();
+ auto watcher_wrapper =
+ y_absl::make_unique<WatcherWrapper>(std::move(watcher), ejected_);
+ watchers_.emplace(watcher_ptr, watcher_wrapper.get());
+ wrapped_subchannel()->WatchConnectivityState(std::move(watcher_wrapper));
+}
+
+void OutlierDetectionLb::SubchannelWrapper::CancelConnectivityStateWatch(
+ ConnectivityStateWatcherInterface* watcher) {
+ auto it = watchers_.find(watcher);
+ if (it == watchers_.end()) return;
+ wrapped_subchannel()->CancelConnectivityStateWatch(it->second);
+ watchers_.erase(it);
+}
+
+//
+// OutlierDetectionLb::Picker::SubchannelCallTracker
+//
+
+class OutlierDetectionLb::Picker::SubchannelCallTracker
+ : public LoadBalancingPolicy::SubchannelCallTrackerInterface {
+ public:
+ SubchannelCallTracker(
+ std::unique_ptr<LoadBalancingPolicy::SubchannelCallTrackerInterface>
+ original_subchannel_call_tracker,
+ RefCountedPtr<SubchannelState> subchannel_state)
+ : original_subchannel_call_tracker_(
+ std::move(original_subchannel_call_tracker)),
+ subchannel_state_(std::move(subchannel_state)) {}
+
+ ~SubchannelCallTracker() override {
+ subchannel_state_.reset(DEBUG_LOCATION, "SubchannelCallTracker");
+ }
+
+ void Start() override {
+ // This tracker does not care about started calls only finished calls.
+ // Delegate if needed.
+ if (original_subchannel_call_tracker_ != nullptr) {
+ original_subchannel_call_tracker_->Start();
+ }
+ }
+
+ void Finish(FinishArgs args) override {
+ // Delegate if needed.
+ if (original_subchannel_call_tracker_ != nullptr) {
+ original_subchannel_call_tracker_->Finish(args);
+ }
+ // Record call completion based on status for outlier detection
+ // calculations.
+ if (subchannel_state_ != nullptr) {
+ if (args.status.ok()) {
+ subchannel_state_->AddSuccessCount();
+ } else {
+ subchannel_state_->AddFailureCount();
+ }
+ }
+ }
+
+ private:
+ std::unique_ptr<LoadBalancingPolicy::SubchannelCallTrackerInterface>
+ original_subchannel_call_tracker_;
+ RefCountedPtr<SubchannelState> subchannel_state_;
+};
+
+//
+// OutlierDetectionLb::Picker
+//
+
+OutlierDetectionLb::Picker::Picker(OutlierDetectionLb* outlier_detection_lb,
+ RefCountedPtr<RefCountedPicker> picker,
+ bool counting_enabled)
+ : picker_(std::move(picker)), counting_enabled_(counting_enabled) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] constructed new picker %p and counting "
+ "is %s",
+ outlier_detection_lb, this,
+ (counting_enabled ? "enabled" : "disabled"));
+ }
+}
+
+LoadBalancingPolicy::PickResult OutlierDetectionLb::Picker::Pick(
+ LoadBalancingPolicy::PickArgs args) {
+ if (picker_ == nullptr) { // Should never happen.
+ return PickResult::Fail(y_absl::InternalError(
+ "outlier_detection picker not given any child picker"));
+ }
+ // Delegate to child picker
+ PickResult result = picker_->Pick(args);
+ auto* complete_pick = y_absl::get_if<PickResult::Complete>(&result.result);
+ if (complete_pick != nullptr) {
+ // Unwrap subchannel to pass back up the stack.
+ auto* subchannel_wrapper =
+ static_cast<SubchannelWrapper*>(complete_pick->subchannel.get());
+ // Inject subchannel call tracker to record call completion as long as
+ // not both success_rate_ejection and failure_percentage_ejection are unset.
+ if (counting_enabled_) {
+ complete_pick->subchannel_call_tracker =
+ y_absl::make_unique<SubchannelCallTracker>(
+ std::move(complete_pick->subchannel_call_tracker),
+ subchannel_wrapper->subchannel_state());
+ }
+ complete_pick->subchannel = subchannel_wrapper->wrapped_subchannel();
+ }
+ return result;
+}
+
+//
+// OutlierDetectionLb
+//
+
+OutlierDetectionLb::OutlierDetectionLb(Args args)
+ : LoadBalancingPolicy(std::move(args)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO, "[outlier_detection_lb %p] created", this);
+ }
+}
+
+OutlierDetectionLb::~OutlierDetectionLb() {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] destroying outlier_detection LB policy",
+ this);
+ }
+}
+
+TString OutlierDetectionLb::MakeKeyForAddress(
+ const ServerAddress& address) {
+ // Use only the address, not the attributes.
+ auto addr_str = grpc_sockaddr_to_string(&address.address(), false);
+ return addr_str.ok() ? addr_str.value() : addr_str.status().ToString();
+}
+
+void OutlierDetectionLb::ShutdownLocked() {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO, "[outlier_detection_lb %p] shutting down", this);
+ }
+ ejection_timer_.reset();
+ shutting_down_ = true;
+ // Remove the child policy's interested_parties pollset_set from the
+ // xDS policy.
+ if (child_policy_ != nullptr) {
+ grpc_pollset_set_del_pollset_set(child_policy_->interested_parties(),
+ interested_parties());
+ child_policy_.reset();
+ }
+ // Drop our ref to the child's picker, in case it's holding a ref to
+ // the child.
+ picker_.reset();
+}
+
+void OutlierDetectionLb::ExitIdleLocked() {
+ if (child_policy_ != nullptr) child_policy_->ExitIdleLocked();
+}
+
+void OutlierDetectionLb::ResetBackoffLocked() {
+ if (child_policy_ != nullptr) child_policy_->ResetBackoffLocked();
+}
+
+y_absl::Status OutlierDetectionLb::UpdateLocked(UpdateArgs args) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO, "[outlier_detection_lb %p] Received update", this);
+ }
+ auto old_config = std::move(config_);
+ // Update config.
+ config_ = std::move(args.config);
+ // Update outlier detection timer.
+ if (!config_->CountingEnabled()) {
+ // No need for timer. Cancel the current timer, if any.
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] counting disabled, cancelling timer",
+ this);
+ }
+ ejection_timer_.reset();
+ } else if (ejection_timer_ == nullptr) {
+ // No timer running. Start it now.
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO, "[outlier_detection_lb %p] starting timer", this);
+ }
+ ejection_timer_ = MakeOrphanable<EjectionTimer>(Ref(), Timestamp::Now());
+ for (const auto& p : subchannel_state_map_) {
+ p.second->RotateBucket(); // Reset call counters.
+ }
+ } else if (old_config->outlier_detection_config().interval !=
+ config_->outlier_detection_config().interval) {
+ // Timer interval changed. Cancel the current timer and start a new one
+ // with the same start time.
+ // Note that if the new deadline is in the past, the timer will fire
+ // immediately.
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] interval changed, replacing timer",
+ this);
+ }
+ ejection_timer_ =
+ MakeOrphanable<EjectionTimer>(Ref(), ejection_timer_->StartTime());
+ }
+ // Update subchannel state map.
+ if (args.addresses.ok()) {
+ std::set<TString> current_addresses;
+ for (const ServerAddress& address : *args.addresses) {
+ TString address_key = MakeKeyForAddress(address);
+ auto& subchannel_state = subchannel_state_map_[address_key];
+ if (subchannel_state == nullptr) {
+ subchannel_state = MakeRefCounted<SubchannelState>();
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] adding map entry for %s (%p)",
+ this, address_key.c_str(), subchannel_state.get());
+ }
+ } else if (!config_->CountingEnabled()) {
+ // If counting is not enabled, reset state.
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] counting disabled; disabling "
+ "ejection for %s (%p)",
+ this, address_key.c_str(), subchannel_state.get());
+ }
+ subchannel_state->DisableEjection();
+ }
+ current_addresses.emplace(address_key);
+ }
+ for (auto it = subchannel_state_map_.begin();
+ it != subchannel_state_map_.end();) {
+ if (current_addresses.find(it->first) == current_addresses.end()) {
+ // remove each map entry for a subchannel address not in the updated
+ // address list.
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] removing map entry for %s (%p)",
+ this, it->first.c_str(), it->second.get());
+ }
+ it = subchannel_state_map_.erase(it);
+ } else {
+ ++it;
+ }
+ }
+ }
+ // Create child policy if needed.
+ if (child_policy_ == nullptr) {
+ child_policy_ = CreateChildPolicyLocked(args.args);
+ }
+ // Update child policy.
+ UpdateArgs update_args;
+ update_args.addresses = std::move(args.addresses);
+ update_args.resolution_note = std::move(args.resolution_note);
+ update_args.config = config_->child_policy();
+ // Update the policy.
+ update_args.args = std::move(args.args);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] Updating child policy handler %p", this,
+ child_policy_.get());
+ }
+ return child_policy_->UpdateLocked(std::move(update_args));
+}
+
+void OutlierDetectionLb::MaybeUpdatePickerLocked() {
+ if (picker_ != nullptr) {
+ auto outlier_detection_picker =
+ y_absl::make_unique<Picker>(this, picker_, config_->CountingEnabled());
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] updating connectivity: state=%s "
+ "status=(%s) picker=%p",
+ this, ConnectivityStateName(state_), status_.ToString().c_str(),
+ outlier_detection_picker.get());
+ }
+ channel_control_helper()->UpdateState(state_, status_,
+ std::move(outlier_detection_picker));
+ }
+}
+
+OrphanablePtr<LoadBalancingPolicy> OutlierDetectionLb::CreateChildPolicyLocked(
+ const ChannelArgs& args) {
+ LoadBalancingPolicy::Args lb_policy_args;
+ lb_policy_args.work_serializer = work_serializer();
+ lb_policy_args.args = args;
+ lb_policy_args.channel_control_helper =
+ y_absl::make_unique<Helper>(Ref(DEBUG_LOCATION, "Helper"));
+ OrphanablePtr<LoadBalancingPolicy> lb_policy =
+ MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
+ &grpc_outlier_detection_lb_trace);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] Created new child policy handler %p",
+ this, lb_policy.get());
+ }
+ // Add our interested_parties pollset_set to that of the newly created
+ // child policy. This will make the child policy progress upon activity on
+ // this policy, which in turn is tied to the application's call.
+ grpc_pollset_set_add_pollset_set(lb_policy->interested_parties(),
+ interested_parties());
+ return lb_policy;
+}
+
+//
+// OutlierDetectionLb::Helper
+//
+
+RefCountedPtr<SubchannelInterface> OutlierDetectionLb::Helper::CreateSubchannel(
+ ServerAddress address, const ChannelArgs& args) {
+ if (outlier_detection_policy_->shutting_down_) return nullptr;
+ TString key = MakeKeyForAddress(address);
+ RefCountedPtr<SubchannelState> subchannel_state;
+ auto it = outlier_detection_policy_->subchannel_state_map_.find(key);
+ if (it != outlier_detection_policy_->subchannel_state_map_.end()) {
+ subchannel_state = it->second->Ref();
+ }
+ auto subchannel = MakeRefCounted<SubchannelWrapper>(
+ subchannel_state,
+ outlier_detection_policy_->channel_control_helper()->CreateSubchannel(
+ std::move(address), args));
+ if (subchannel_state != nullptr) {
+ subchannel_state->AddSubchannel(subchannel.get());
+ }
+ return subchannel;
+}
+
+void OutlierDetectionLb::Helper::UpdateState(
+ grpc_connectivity_state state, const y_absl::Status& status,
+ std::unique_ptr<SubchannelPicker> picker) {
+ if (outlier_detection_policy_->shutting_down_) return;
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] child connectivity state update: "
+ "state=%s (%s) picker=%p",
+ outlier_detection_policy_.get(), ConnectivityStateName(state),
+ status.ToString().c_str(), picker.get());
+ }
+ // Save the state and picker.
+ outlier_detection_policy_->state_ = state;
+ outlier_detection_policy_->status_ = status;
+ outlier_detection_policy_->picker_ =
+ MakeRefCounted<RefCountedPicker>(std::move(picker));
+ // Wrap the picker and return it to the channel.
+ outlier_detection_policy_->MaybeUpdatePickerLocked();
+}
+
+void OutlierDetectionLb::Helper::RequestReresolution() {
+ if (outlier_detection_policy_->shutting_down_) return;
+ outlier_detection_policy_->channel_control_helper()->RequestReresolution();
+}
+
+y_absl::string_view OutlierDetectionLb::Helper::GetAuthority() {
+ return outlier_detection_policy_->channel_control_helper()->GetAuthority();
+}
+
+void OutlierDetectionLb::Helper::AddTraceEvent(TraceSeverity severity,
+ y_absl::string_view message) {
+ if (outlier_detection_policy_->shutting_down_) return;
+ outlier_detection_policy_->channel_control_helper()->AddTraceEvent(severity,
+ message);
+}
+
+//
+// OutlierDetectionLb::EjectionTimer
+//
+
+OutlierDetectionLb::EjectionTimer::EjectionTimer(
+ RefCountedPtr<OutlierDetectionLb> parent, Timestamp start_time)
+ : parent_(std::move(parent)), start_time_(start_time) {
+ auto interval = parent_->config_->outlier_detection_config().interval;
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO, "[outlier_detection_lb %p] ejection timer will run in %s",
+ parent_.get(), interval.ToString().c_str());
+ }
+ GRPC_CLOSURE_INIT(&on_timer_, OnTimer, this, nullptr);
+ Ref().release();
+ grpc_timer_init(&timer_, start_time_ + interval, &on_timer_);
+}
+
+void OutlierDetectionLb::EjectionTimer::Orphan() {
+ if (timer_pending_) {
+ timer_pending_ = false;
+ grpc_timer_cancel(&timer_);
+ }
+ Unref();
+}
+
+void OutlierDetectionLb::EjectionTimer::OnTimer(void* arg,
+ grpc_error_handle error) {
+ auto* self = static_cast<EjectionTimer*>(arg);
+ (void)GRPC_ERROR_REF(error); // ref owned by lambda
+ self->parent_->work_serializer()->Run(
+ [self, error]() { self->OnTimerLocked(error); }, DEBUG_LOCATION);
+}
+
+void OutlierDetectionLb::EjectionTimer::OnTimerLocked(grpc_error_handle error) {
+ if (GRPC_ERROR_IS_NONE(error) && timer_pending_) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO, "[outlier_detection_lb %p] ejection timer running",
+ parent_.get());
+ }
+ std::map<SubchannelState*, double> success_rate_ejection_candidates;
+ std::map<SubchannelState*, double> failure_percentage_ejection_candidates;
+ size_t ejected_host_count = 0;
+ double success_rate_sum = 0;
+ auto time_now = Timestamp::Now();
+ auto& config = parent_->config_->outlier_detection_config();
+ for (auto& state : parent_->subchannel_state_map_) {
+ auto* subchannel_state = state.second.get();
+ // For each address, swap the call counter's buckets in that address's
+ // map entry.
+ subchannel_state->RotateBucket();
+ // Gather data to run success rate algorithm or failure percentage
+ // algorithm.
+ if (subchannel_state->ejection_time().has_value()) {
+ ++ejected_host_count;
+ }
+ y_absl::optional<std::pair<double, uint64_t>> host_success_rate_and_volume =
+ subchannel_state->GetSuccessRateAndVolume();
+ if (!host_success_rate_and_volume.has_value()) {
+ continue;
+ }
+ double success_rate = host_success_rate_and_volume->first;
+ uint64_t request_volume = host_success_rate_and_volume->second;
+ if (config.success_rate_ejection.has_value()) {
+ if (request_volume >= config.success_rate_ejection->request_volume) {
+ success_rate_ejection_candidates[subchannel_state] = success_rate;
+ success_rate_sum += success_rate;
+ }
+ }
+ if (config.failure_percentage_ejection.has_value()) {
+ if (request_volume >=
+ config.failure_percentage_ejection->request_volume) {
+ failure_percentage_ejection_candidates[subchannel_state] =
+ success_rate;
+ }
+ }
+ }
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] found %" PRIuPTR
+ " success rate candidates and %" PRIuPTR
+ " failure percentage candidates; ejected_host_count=%" PRIuPTR
+ "; success_rate_sum=%.3f",
+ parent_.get(), success_rate_ejection_candidates.size(),
+ failure_percentage_ejection_candidates.size(), ejected_host_count,
+ success_rate_sum);
+ }
+ // success rate algorithm
+ if (!success_rate_ejection_candidates.empty() &&
+ success_rate_ejection_candidates.size() >=
+ config.success_rate_ejection->minimum_hosts) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] running success rate algorithm",
+ parent_.get());
+ }
+ // calculate ejection threshold: (mean - stdev *
+ // (success_rate_ejection.stdev_factor / 1000))
+ double mean = success_rate_sum / success_rate_ejection_candidates.size();
+ double variance = 0;
+ for (const auto& p : success_rate_ejection_candidates) {
+ variance += std::pow(p.second - mean, 2);
+ }
+ variance /= success_rate_ejection_candidates.size();
+ double stdev = std::sqrt(variance);
+ const double success_rate_stdev_factor =
+ static_cast<double>(config.success_rate_ejection->stdev_factor) /
+ 1000;
+ double ejection_threshold = mean - stdev * success_rate_stdev_factor;
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] stdev=%.3f, ejection_threshold=%.3f",
+ parent_.get(), stdev, ejection_threshold);
+ }
+ for (auto& candidate : success_rate_ejection_candidates) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] checking candidate %p: "
+ "success_rate=%.3f",
+ parent_.get(), candidate.first, candidate.second);
+ }
+ if (candidate.second < ejection_threshold) {
+ uint32_t random_key = y_absl::Uniform(bit_gen_, 1, 100);
+ double current_percent = 100.0 * ejected_host_count /
+ parent_->subchannel_state_map_.size();
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] random_key=%d "
+ "ejected_host_count=%" PRIuPTR " current_percent=%.3f",
+ parent_.get(), random_key, ejected_host_count,
+ current_percent);
+ }
+ if (random_key <
+ config.success_rate_ejection->enforcement_percentage &&
+ (ejected_host_count == 0 ||
+ (current_percent < config.max_ejection_percent))) {
+ // Eject and record the timestamp for use when ejecting addresses in
+ // this iteration.
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO, "[outlier_detection_lb %p] ejecting candidate",
+ parent_.get());
+ }
+ candidate.first->Eject(time_now);
+ ++ejected_host_count;
+ }
+ }
+ }
+ }
+ // failure percentage algorithm
+ if (!failure_percentage_ejection_candidates.empty() &&
+ failure_percentage_ejection_candidates.size() >=
+ config.failure_percentage_ejection->minimum_hosts) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(
+ GPR_INFO,
+ "[outlier_detection_lb %p] running failure percentage algorithm",
+ parent_.get());
+ }
+ for (auto& candidate : failure_percentage_ejection_candidates) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] checking candidate %p: "
+ "success_rate=%.3f",
+ parent_.get(), candidate.first, candidate.second);
+ }
+ // Extra check to make sure success rate algorithm didn't already
+ // eject this backend.
+ if (candidate.first->ejection_time().has_value()) continue;
+ if ((100.0 - candidate.second) >
+ config.failure_percentage_ejection->threshold) {
+ uint32_t random_key = y_absl::Uniform(bit_gen_, 1, 100);
+ double current_percent = 100.0 * ejected_host_count /
+ parent_->subchannel_state_map_.size();
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO,
+ "[outlier_detection_lb %p] random_key=%d "
+ "ejected_host_count=%" PRIuPTR " current_percent=%.3f",
+ parent_.get(), random_key, ejected_host_count,
+ current_percent);
+ }
+ if (random_key <
+ config.failure_percentage_ejection->enforcement_percentage &&
+ (ejected_host_count == 0 ||
+ (current_percent < config.max_ejection_percent))) {
+ // Eject and record the timestamp for use when ejecting addresses in
+ // this iteration.
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO, "[outlier_detection_lb %p] ejecting candidate",
+ parent_.get());
+ }
+ candidate.first->Eject(time_now);
+ ++ejected_host_count;
+ }
+ }
+ }
+ }
+ // For each address in the map:
+ // If the address is not ejected and the multiplier is greater than 0,
+ // decrease the multiplier by 1. If the address is ejected, and the
+ // current time is after ejection_timestamp + min(base_ejection_time *
+ // multiplier, max(base_ejection_time, max_ejection_time)), un-eject the
+ // address.
+ for (auto& state : parent_->subchannel_state_map_) {
+ auto* subchannel_state = state.second.get();
+ const bool unejected =
+ subchannel_state->MaybeUneject(config.base_ejection_time.millis(),
+ config.max_ejection_time.millis());
+ if (unejected &&
+ GRPC_TRACE_FLAG_ENABLED(grpc_outlier_detection_lb_trace)) {
+ gpr_log(GPR_INFO, "[outlier_detection_lb %p] unejected address %s (%p)",
+ parent_.get(), state.first.c_str(), subchannel_state);
+ }
+ }
+ timer_pending_ = false;
+ parent_->ejection_timer_ =
+ MakeOrphanable<EjectionTimer>(parent_, Timestamp::Now());
+ }
+ Unref(DEBUG_LOCATION, "Timer");
+ GRPC_ERROR_UNREF(error);
+}
+
+//
+// factory
+//
+
+class OutlierDetectionLbFactory : public LoadBalancingPolicyFactory {
+ public:
+ OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
+ LoadBalancingPolicy::Args args) const override {
+ return MakeOrphanable<OutlierDetectionLb>(std::move(args));
+ }
+
+ y_absl::string_view name() const override { return kOutlierDetection; }
+
+ y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+ ParseLoadBalancingConfig(const Json& json) const override {
+ if (json.type() == Json::Type::JSON_NULL) {
+ // This policy was configured in the deprecated loadBalancingPolicy
+ // field or in the client API.
+ return y_absl::InvalidArgumentError(
+ "field:loadBalancingPolicy error:outlier_detection policy requires "
+ "configuration. Please use loadBalancingConfig field of service "
+ "config instead.");
+ }
+ ValidationErrors errors;
+ OutlierDetectionConfig outlier_detection_config;
+ RefCountedPtr<LoadBalancingPolicy::Config> child_policy;
+ {
+ ValidationErrors::ScopedField field(
+ &errors, "[\"outlier_detection_experimental\"]");
+ outlier_detection_config =
+ LoadFromJson<OutlierDetectionConfig>(json, JsonArgs(), &errors);
+ // Parse childPolicy manually.
+ {
+ ValidationErrors::ScopedField field(&errors, ".childPolicy");
+ auto it = json.object_value().find("childPolicy");
+ if (it == json.object_value().end()) {
+ errors.AddError("field not present");
+ } else {
+ auto child_policy_config = CoreConfiguration::Get()
+ .lb_policy_registry()
+ .ParseLoadBalancingConfig(it->second);
+ if (!child_policy_config.ok()) {
+ errors.AddError(child_policy_config.status().message());
+ } else {
+ child_policy = std::move(*child_policy_config);
+ }
+ }
+ }
+ }
+ if (!errors.ok()) {
+ return errors.status(
+ "errors validating outlier_detection LB policy config");
+ }
+ return MakeRefCounted<OutlierDetectionLbConfig>(outlier_detection_config,
+ std::move(child_policy));
+ }
+};
+
+} // namespace
+
+//
+// OutlierDetectionConfig
+//
+
+const JsonLoaderInterface*
+OutlierDetectionConfig::SuccessRateEjection::JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<SuccessRateEjection>()
+ .OptionalField("stdevFactor", &SuccessRateEjection::stdev_factor)
+ .OptionalField("enforcementPercentage",
+ &SuccessRateEjection::enforcement_percentage)
+ .OptionalField("minimumHosts", &SuccessRateEjection::minimum_hosts)
+ .OptionalField("requestVolume", &SuccessRateEjection::request_volume)
+ .Finish();
+ return loader;
+}
+
+const JsonLoaderInterface*
+OutlierDetectionConfig::FailurePercentageEjection::JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<FailurePercentageEjection>()
+ .OptionalField("threshold", &FailurePercentageEjection::threshold)
+ .OptionalField("enforcementPercentage",
+ &FailurePercentageEjection::enforcement_percentage)
+ .OptionalField("minimumHosts",
+ &FailurePercentageEjection::minimum_hosts)
+ .OptionalField("requestVolume",
+ &FailurePercentageEjection::request_volume)
+ .Finish();
+ return loader;
+}
+
+const JsonLoaderInterface* OutlierDetectionConfig::JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<OutlierDetectionConfig>()
+ .OptionalField("interval", &OutlierDetectionConfig::interval)
+ .OptionalField("baseEjectionTime",
+ &OutlierDetectionConfig::base_ejection_time)
+ .OptionalField("maxEjectionTime",
+ &OutlierDetectionConfig::max_ejection_time)
+ .OptionalField("maxEjectionPercent",
+ &OutlierDetectionConfig::max_ejection_percent)
+ .OptionalField("successRateEjection",
+ &OutlierDetectionConfig::success_rate_ejection)
+ .OptionalField("failurePercentageEjection",
+ &OutlierDetectionConfig::failure_percentage_ejection)
+ .Finish();
+ return loader;
+}
+
+void OutlierDetectionConfig::JsonPostLoad(const Json& json, const JsonArgs&,
+ ValidationErrors* /*errors*/) {
+ if (json.object_value().find("maxEjectionTime") ==
+ json.object_value().end()) {
+ max_ejection_time = std::max(base_ejection_time, Duration::Seconds(300));
+ }
+}
+
+//
+// Plugin registration
+//
+
+void RegisterOutlierDetectionLbPolicy(CoreConfiguration::Builder* builder) {
+ if (XdsOutlierDetectionEnabled()) {
+ builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
+ y_absl::make_unique<OutlierDetectionLbFactory>());
+ }
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h
new file mode 100644
index 0000000000..f55c92b16b
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h
@@ -0,0 +1,94 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_OUTLIER_DETECTION_OUTLIER_DETECTION_H
+#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_OUTLIER_DETECTION_OUTLIER_DETECTION_H
+
+#include <grpc/support/port_platform.h>
+
+#include <stdint.h> // for uint32_t
+
+#include "y_absl/types/optional.h"
+
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/validation_errors.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/json/json_args.h"
+#include "src/core/lib/json/json_object_loader.h"
+
+namespace grpc_core {
+
+bool XdsOutlierDetectionEnabled();
+
+struct OutlierDetectionConfig {
+ Duration interval = Duration::Seconds(10);
+ Duration base_ejection_time = Duration::Milliseconds(30000);
+ Duration max_ejection_time = Duration::Milliseconds(30000);
+ uint32_t max_ejection_percent = 10;
+ struct SuccessRateEjection {
+ uint32_t stdev_factor = 1900;
+ uint32_t enforcement_percentage = 0;
+ uint32_t minimum_hosts = 5;
+ uint32_t request_volume = 100;
+
+ SuccessRateEjection() {}
+
+ bool operator==(const SuccessRateEjection& other) const {
+ return stdev_factor == other.stdev_factor &&
+ enforcement_percentage == other.enforcement_percentage &&
+ minimum_hosts == other.minimum_hosts &&
+ request_volume == other.request_volume;
+ }
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ };
+ struct FailurePercentageEjection {
+ uint32_t threshold = 85;
+ uint32_t enforcement_percentage = 0;
+ uint32_t minimum_hosts = 5;
+ uint32_t request_volume = 50;
+
+ FailurePercentageEjection() {}
+
+ bool operator==(const FailurePercentageEjection& other) const {
+ return threshold == other.threshold &&
+ enforcement_percentage == other.enforcement_percentage &&
+ minimum_hosts == other.minimum_hosts &&
+ request_volume == other.request_volume;
+ }
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ };
+ y_absl::optional<SuccessRateEjection> success_rate_ejection;
+ y_absl::optional<FailurePercentageEjection> failure_percentage_ejection;
+
+ bool operator==(const OutlierDetectionConfig& other) const {
+ return interval == other.interval &&
+ base_ejection_time == other.base_ejection_time &&
+ max_ejection_time == other.max_ejection_time &&
+ max_ejection_percent == other.max_ejection_percent &&
+ success_rate_ejection == other.success_rate_ejection &&
+ failure_percentage_ejection == other.failure_percentage_ejection;
+ }
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs&,
+ ValidationErrors* errors);
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_OUTLIER_DETECTION_OUTLIER_DETECTION_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc
index 581ba09876..ea0146ed9d 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc
@@ -16,19 +16,41 @@
#include <grpc/support/port_platform.h>
+#include <inttypes.h>
#include <string.h>
-#include <grpc/support/alloc.h>
+#include <algorithm>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/log.h>
#include "src/core/ext/filters/client_channel/lb_policy/subchannel_list.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
-#include "src/core/ext/filters/client_channel/subchannel.h"
-#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+#include "src/core/lib/load_balancing/lb_policy_factory.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
#include "src/core/lib/resolver/server_address.h"
#include "src/core/lib/transport/connectivity_state.h"
-#include "src/core/lib/transport/error_utils.h"
namespace grpc_core {
@@ -40,15 +62,15 @@ namespace {
// pick_first LB policy
//
-constexpr char kPickFirst[] = "pick_first";
+constexpr y_absl::string_view kPickFirst = "pick_first";
class PickFirst : public LoadBalancingPolicy {
public:
explicit PickFirst(Args args);
- const char* name() const override { return kPickFirst; }
+ y_absl::string_view name() const override { return kPickFirst; }
- void UpdateLocked(UpdateArgs args) override;
+ y_absl::Status UpdateLocked(UpdateArgs args) override;
void ExitIdleLocked() override;
void ResetBackoffLocked() override;
@@ -69,27 +91,32 @@ class PickFirst : public LoadBalancingPolicy {
: SubchannelData(subchannel_list, address, std::move(subchannel)) {}
void ProcessConnectivityChangeLocked(
- grpc_connectivity_state connectivity_state) override;
+ y_absl::optional<grpc_connectivity_state> old_state,
+ grpc_connectivity_state new_state) override;
// Processes the connectivity change to READY for an unselected subchannel.
void ProcessUnselectedReadyLocked();
-
- void CheckConnectivityStateAndStartWatchingLocked();
};
class PickFirstSubchannelList
: public SubchannelList<PickFirstSubchannelList,
PickFirstSubchannelData> {
public:
- PickFirstSubchannelList(PickFirst* policy, TraceFlag* tracer,
- ServerAddressList addresses,
- const grpc_channel_args& args)
- : SubchannelList(policy, tracer, std::move(addresses),
- policy->channel_control_helper(), args) {
+ PickFirstSubchannelList(PickFirst* policy, ServerAddressList addresses,
+ const ChannelArgs& args)
+ : SubchannelList(policy,
+ (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)
+ ? "PickFirstSubchannelList"
+ : nullptr),
+ std::move(addresses), policy->channel_control_helper(),
+ args) {
// Need to maintain a ref to the LB policy as long as we maintain
// any references to subchannels, since the subchannels'
// pollset_sets will include the LB policy's pollset_set.
policy->Ref(DEBUG_LOCATION, "subchannel_list").release();
+ // Note that we do not start trying to connect to any subchannel here,
+ // since we will wait until we see the initial connectivity state for all
+ // subchannels before doing that.
}
~PickFirstSubchannelList() override {
@@ -102,8 +129,19 @@ class PickFirst : public LoadBalancingPolicy {
in_transient_failure_ = in_transient_failure;
}
+ size_t attempting_index() const { return attempting_index_; }
+ void set_attempting_index(size_t index) { attempting_index_ = index; }
+
+ bool AllSubchannelsSeenInitialState() {
+ for (size_t i = 0; i < num_subchannels(); ++i) {
+ if (!subchannel(i)->connectivity_state().has_value()) return false;
+ }
+ return true;
+ }
+
private:
bool in_transient_failure_ = false;
+ size_t attempting_index_ = 0;
};
class Picker : public SubchannelPicker {
@@ -126,9 +164,9 @@ class PickFirst : public LoadBalancingPolicy {
// Lateset update args.
UpdateArgs latest_update_args_;
// All our subchannels.
- OrphanablePtr<PickFirstSubchannelList> subchannel_list_;
+ RefCountedPtr<PickFirstSubchannelList> subchannel_list_;
// Latest pending subchannel list.
- OrphanablePtr<PickFirstSubchannelList> latest_pending_subchannel_list_;
+ RefCountedPtr<PickFirstSubchannelList> latest_pending_subchannel_list_;
// Selected subchannel in \a subchannel_list_.
PickFirstSubchannelData* selected_ = nullptr;
// Are we in IDLE state?
@@ -184,15 +222,19 @@ void PickFirst::AttemptToConnectUsingLatestUpdateArgsLocked() {
if (latest_update_args_.addresses.ok()) {
addresses = *latest_update_args_.addresses;
}
- auto subchannel_list = MakeOrphanable<PickFirstSubchannelList>(
- this, &grpc_lb_pick_first_trace, std::move(addresses),
- *latest_update_args_.args);
- // Empty update or no valid subchannels.
- if (subchannel_list->num_subchannels() == 0) {
- // Unsubscribe from all current subchannels.
- subchannel_list_ = std::move(subchannel_list); // Empty list.
- selected_ = nullptr;
- // Put the channel in TRANSIENT_FAILURE.
+ // Replace latest_pending_subchannel_list_.
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace) &&
+ latest_pending_subchannel_list_ != nullptr) {
+ gpr_log(GPR_INFO,
+ "[PF %p] Shutting down previous pending subchannel list %p", this,
+ latest_pending_subchannel_list_.get());
+ }
+ latest_pending_subchannel_list_ = MakeRefCounted<PickFirstSubchannelList>(
+ this, std::move(addresses), latest_update_args_.args);
+ latest_pending_subchannel_list_->StartWatchingLocked();
+ // Empty update or no valid subchannels. Put the channel in
+ // TRANSIENT_FAILURE and request re-resolution.
+ if (latest_pending_subchannel_list_->num_subchannels() == 0) {
y_absl::Status status =
latest_update_args_.addresses.ok()
? y_absl::UnavailableError(y_absl::StrCat(
@@ -201,65 +243,29 @@ void PickFirst::AttemptToConnectUsingLatestUpdateArgsLocked() {
channel_control_helper()->UpdateState(
GRPC_CHANNEL_TRANSIENT_FAILURE, status,
y_absl::make_unique<TransientFailurePicker>(status));
- return;
+ channel_control_helper()->RequestReresolution();
}
- // If one of the subchannels in the new list is already in state
- // READY, then select it immediately. This can happen when the
- // currently selected subchannel is also present in the update. It
- // can also happen if one of the subchannels in the update is already
- // in the global subchannel pool because it's in use by another channel.
- for (size_t i = 0; i < subchannel_list->num_subchannels(); ++i) {
- PickFirstSubchannelData* sd = subchannel_list->subchannel(i);
- grpc_connectivity_state state = sd->CheckConnectivityStateLocked();
- if (state == GRPC_CHANNEL_READY) {
- subchannel_list_ = std::move(subchannel_list);
- sd->StartConnectivityWatchLocked();
- sd->ProcessUnselectedReadyLocked();
- // If there was a previously pending update (which may or may
- // not have contained the currently selected subchannel), drop
- // it, so that it doesn't override what we've done here.
- latest_pending_subchannel_list_.reset();
- return;
- }
+ // Otherwise, if this is the initial update, report CONNECTING.
+ else if (subchannel_list_.get() == nullptr) {
+ channel_control_helper()->UpdateState(
+ GRPC_CHANNEL_CONNECTING, y_absl::Status(),
+ y_absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
}
- if (selected_ == nullptr) {
- // We don't yet have a selected subchannel, so replace the current
- // subchannel list immediately.
- subchannel_list_ = std::move(subchannel_list);
- // If we're not in IDLE state, start trying to connect to the first
- // subchannel in the new list.
- // Note: No need to use CheckConnectivityStateAndStartWatchingLocked()
- // here, since we've already checked the initial connectivity
- // state of all subchannels above.
- subchannel_list_->subchannel(0)->StartConnectivityWatchLocked();
- subchannel_list_->subchannel(0)->subchannel()->AttemptToConnect();
- } else {
- // We do have a selected subchannel (which means it's READY), so keep
- // using it until one of the subchannels in the new list reports READY.
- if (latest_pending_subchannel_list_ != nullptr) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
- gpr_log(GPR_INFO,
- "Pick First %p Shutting down latest pending subchannel list "
- "%p, about to be replaced by newer latest %p",
- this, latest_pending_subchannel_list_.get(),
- subchannel_list.get());
- }
+ // If the new update is empty or we don't yet have a selected subchannel in
+ // the current list, replace the current subchannel list immediately.
+ if (latest_pending_subchannel_list_->num_subchannels() == 0 ||
+ selected_ == nullptr) {
+ selected_ = nullptr;
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace) &&
+ subchannel_list_ != nullptr) {
+ gpr_log(GPR_INFO, "[PF %p] Shutting down previous subchannel list %p",
+ this, subchannel_list_.get());
}
- latest_pending_subchannel_list_ = std::move(subchannel_list);
- // If we're not in IDLE state, start trying to connect to the first
- // subchannel in the new list.
- // Note: No need to use CheckConnectivityStateAndStartWatchingLocked()
- // here, since we've already checked the initial connectivity
- // state of all subchannels above.
- latest_pending_subchannel_list_->subchannel(0)
- ->StartConnectivityWatchLocked();
- latest_pending_subchannel_list_->subchannel(0)
- ->subchannel()
- ->AttemptToConnect();
+ subchannel_list_ = std::move(latest_pending_subchannel_list_);
}
}
-void PickFirst::UpdateLocked(UpdateArgs args) {
+y_absl::Status PickFirst::UpdateLocked(UpdateArgs args) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
if (args.addresses.ok()) {
gpr_log(GPR_INFO,
@@ -271,12 +277,14 @@ void PickFirst::UpdateLocked(UpdateArgs args) {
}
}
// Add GRPC_ARG_INHIBIT_HEALTH_CHECKING channel arg.
- grpc_arg new_arg = grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_INHIBIT_HEALTH_CHECKING), 1);
- const grpc_channel_args* new_args =
- grpc_channel_args_copy_and_add(args.args, &new_arg, 1);
- std::swap(new_args, args.args);
- grpc_channel_args_destroy(new_args);
+ args.args = args.args.Set(GRPC_ARG_INHIBIT_HEALTH_CHECKING, 1);
+ // Set return status based on the address list.
+ y_absl::Status status;
+ if (!args.addresses.ok()) {
+ status = args.addresses.status();
+ } else if (args.addresses->empty()) {
+ status = y_absl::UnavailableError("address list must not be empty");
+ }
// If the update contains a resolver error and we have a previous update
// that was not a resolver error, keep using the previous addresses.
if (!args.addresses.ok() && latest_update_args_.config != nullptr) {
@@ -289,28 +297,30 @@ void PickFirst::UpdateLocked(UpdateArgs args) {
if (!idle_) {
AttemptToConnectUsingLatestUpdateArgsLocked();
}
+ return status;
}
void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
- grpc_connectivity_state connectivity_state) {
+ y_absl::optional<grpc_connectivity_state> old_state,
+ grpc_connectivity_state new_state) {
PickFirst* p = static_cast<PickFirst*>(subchannel_list()->policy());
// The notification must be for a subchannel in either the current or
// latest pending subchannel lists.
GPR_ASSERT(subchannel_list() == p->subchannel_list_.get() ||
subchannel_list() == p->latest_pending_subchannel_list_.get());
- GPR_ASSERT(connectivity_state != GRPC_CHANNEL_SHUTDOWN);
+ GPR_ASSERT(new_state != GRPC_CHANNEL_SHUTDOWN);
// Handle updates for the currently selected subchannel.
if (p->selected_ == this) {
GPR_ASSERT(subchannel_list() == p->subchannel_list_.get());
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
gpr_log(GPR_INFO,
"Pick First %p selected subchannel connectivity changed to %s", p,
- ConnectivityStateName(connectivity_state));
+ ConnectivityStateName(new_state));
}
- // If the new state is anything other than READY and there is a
- // pending update, switch to the pending update.
- if (connectivity_state != GRPC_CHANNEL_READY &&
- p->latest_pending_subchannel_list_ != nullptr) {
+ // Any state change is considered to be a failure of the existing
+ // connection.
+ // If there is a pending update, switch to the pending update.
+ if (p->latest_pending_subchannel_list_ != nullptr) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
gpr_log(GPR_INFO,
"Pick First %p promoting pending subchannel list %p to "
@@ -319,13 +329,16 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
p->subchannel_list_.get());
}
p->selected_ = nullptr;
- CancelConnectivityWatchLocked(
- "selected subchannel failed; switching to pending update");
p->subchannel_list_ = std::move(p->latest_pending_subchannel_list_);
// Set our state to that of the pending subchannel list.
if (p->subchannel_list_->in_transient_failure()) {
- y_absl::Status status = y_absl::UnavailableError(
- "selected subchannel failed; switching to pending update");
+ y_absl::Status status = y_absl::UnavailableError(y_absl::StrCat(
+ "selected subchannel failed; switching to pending update; "
+ "last failure: ",
+ p->subchannel_list_
+ ->subchannel(p->subchannel_list_->num_subchannels())
+ ->connectivity_status()
+ .ToString()));
p->channel_control_helper()->UpdateState(
GRPC_CHANNEL_TRANSIENT_FAILURE, status,
y_absl::make_unique<TransientFailurePicker>(status));
@@ -335,38 +348,22 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
y_absl::make_unique<QueuePicker>(
p->Ref(DEBUG_LOCATION, "QueuePicker")));
}
- } else {
- if (connectivity_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
- // If the selected subchannel goes bad, request a re-resolution. We
- // also set the channel state to IDLE. The reason is that if the new
- // state is TRANSIENT_FAILURE due to a GOAWAY reception we don't want
- // to connect to the re-resolved backends until we leave IDLE state.
- // TODO(qianchengz): We may want to request re-resolution in
- // ExitIdleLocked().
- p->idle_ = true;
- p->channel_control_helper()->RequestReresolution();
- p->selected_ = nullptr;
- p->subchannel_list_.reset();
- p->channel_control_helper()->UpdateState(
- GRPC_CHANNEL_IDLE, y_absl::Status(),
- y_absl::make_unique<QueuePicker>(
- p->Ref(DEBUG_LOCATION, "QueuePicker")));
- } else {
- // This is unlikely but can happen when a subchannel has been asked
- // to reconnect by a different channel and this channel has dropped
- // some connectivity state notifications.
- if (connectivity_state == GRPC_CHANNEL_READY) {
- p->channel_control_helper()->UpdateState(
- GRPC_CHANNEL_READY, y_absl::Status(),
- y_absl::make_unique<Picker>(subchannel()->Ref()));
- } else { // CONNECTING
- p->channel_control_helper()->UpdateState(
- connectivity_state, y_absl::Status(),
- y_absl::make_unique<QueuePicker>(
- p->Ref(DEBUG_LOCATION, "QueuePicker")));
- }
- }
+ return;
}
+ // If the selected subchannel goes bad, request a re-resolution.
+ // TODO(qianchengz): We may want to request re-resolution in
+ // ExitIdleLocked().
+ p->channel_control_helper()->RequestReresolution();
+ // TODO(roth): We chould check the connectivity states of all the
+ // subchannels here, just in case one of them happens to be READY,
+ // and we could switch to that rather than going IDLE.
+ // Enter idle.
+ p->idle_ = true;
+ p->selected_ = nullptr;
+ p->subchannel_list_.reset();
+ p->channel_control_helper()->UpdateState(
+ GRPC_CHANNEL_IDLE, y_absl::Status(),
+ y_absl::make_unique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")));
return;
}
// If we get here, there are two possible cases:
@@ -378,18 +375,35 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
// for a subchannel in p->latest_pending_subchannel_list_. The
// goal here is to find a subchannel from the update that we can
// select in place of the current one.
- switch (connectivity_state) {
- case GRPC_CHANNEL_READY: {
- subchannel_list()->set_in_transient_failure(false);
- ProcessUnselectedReadyLocked();
- break;
+ // If the subchannel is READY, use it.
+ if (new_state == GRPC_CHANNEL_READY) {
+ subchannel_list()->set_in_transient_failure(false);
+ ProcessUnselectedReadyLocked();
+ return;
+ }
+ // If this is the initial connectivity state notification for this
+ // subchannel, check to see if it's the last one we were waiting for,
+ // in which case we start trying to connect to the first subchannel.
+ // Otherwise, do nothing, since we'll continue to wait until all of
+ // the subchannels report their state.
+ if (!old_state.has_value()) {
+ if (subchannel_list()->AllSubchannelsSeenInitialState()) {
+ subchannel_list()->subchannel(0)->subchannel()->RequestConnection();
}
+ return;
+ }
+ // Ignore any other updates for subchannels we're not currently trying to
+ // connect to.
+ if (Index() != subchannel_list()->attempting_index()) return;
+ // Otherwise, process connectivity state.
+ switch (new_state) {
+ case GRPC_CHANNEL_READY:
+ // Already handled this case above, so this should not happen.
+ GPR_UNREACHABLE_CODE(break);
case GRPC_CHANNEL_TRANSIENT_FAILURE: {
- CancelConnectivityWatchLocked("connection attempt failed");
- PickFirstSubchannelData* sd = this;
- size_t next_index =
- (sd->Index() + 1) % subchannel_list()->num_subchannels();
- sd = subchannel_list()->subchannel(next_index);
+ size_t next_index = (Index() + 1) % subchannel_list()->num_subchannels();
+ subchannel_list()->set_attempting_index(next_index);
+ PickFirstSubchannelData* sd = subchannel_list()->subchannel(next_index);
// If we're tried all subchannels, set state to TRANSIENT_FAILURE.
if (sd->Index() == 0) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
@@ -418,18 +432,31 @@ void PickFirst::PickFirstSubchannelData::ProcessConnectivityChangeLocked(
// be the current list), re-resolve and report new state.
if (subchannel_list() == p->subchannel_list_.get()) {
p->channel_control_helper()->RequestReresolution();
- y_absl::Status status =
- y_absl::UnavailableError("failed to connect to all addresses");
+ y_absl::Status status = y_absl::UnavailableError(
+ y_absl::StrCat("failed to connect to all addresses; last error: ",
+ connectivity_status().ToString()));
p->channel_control_helper()->UpdateState(
GRPC_CHANNEL_TRANSIENT_FAILURE, status,
y_absl::make_unique<TransientFailurePicker>(status));
}
}
- sd->CheckConnectivityStateAndStartWatchingLocked();
+ // If the next subchannel is in IDLE, trigger a connection attempt.
+ // If it's in READY, we can't get here, because we would already
+ // have selected the subchannel above.
+ // If it's already in CONNECTING, we don't need to do this.
+ // If it's in TRANSIENT_FAILURE, then we will trigger the
+ // connection attempt later when it reports IDLE.
+ auto sd_state = sd->connectivity_state();
+ if (sd_state.has_value() && *sd_state == GRPC_CHANNEL_IDLE) {
+ sd->subchannel()->RequestConnection();
+ }
break;
}
- case GRPC_CHANNEL_CONNECTING:
case GRPC_CHANNEL_IDLE: {
+ subchannel()->RequestConnection();
+ break;
+ }
+ case GRPC_CHANNEL_CONNECTING: {
// Only update connectivity state in case 1, and only if we're not
// already in TRANSIENT_FAILURE.
if (subchannel_list() == p->subchannel_list_.get() &&
@@ -485,27 +512,9 @@ void PickFirst::PickFirstSubchannelData::ProcessUnselectedReadyLocked() {
}
}
-void PickFirst::PickFirstSubchannelData::
- CheckConnectivityStateAndStartWatchingLocked() {
- PickFirst* p = static_cast<PickFirst*>(subchannel_list()->policy());
- // Check current state.
- grpc_connectivity_state current_state = CheckConnectivityStateLocked();
- // Start watch.
- StartConnectivityWatchLocked();
- // If current state is READY, select the subchannel now, since we started
- // watching from this state and will not get a notification of it
- // transitioning into this state.
- // If the current state is not READY, attempt to connect.
- if (current_state == GRPC_CHANNEL_READY) {
- if (p->selected_ != this) ProcessUnselectedReadyLocked();
- } else {
- subchannel()->AttemptToConnect();
- }
-}
-
class PickFirstConfig : public LoadBalancingPolicy::Config {
public:
- const char* name() const override { return kPickFirst; }
+ y_absl::string_view name() const override { return kPickFirst; }
};
//
@@ -519,22 +528,19 @@ class PickFirstFactory : public LoadBalancingPolicyFactory {
return MakeOrphanable<PickFirst>(std::move(args));
}
- const char* name() const override { return kPickFirst; }
+ y_absl::string_view name() const override { return kPickFirst; }
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
- const Json& /*json*/, grpc_error_handle* /*error*/) const override {
+ y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+ ParseLoadBalancingConfig(const Json& /*json*/) const override {
return MakeRefCounted<PickFirstConfig>();
}
};
} // namespace
-} // namespace grpc_core
-
-void grpc_lb_policy_pick_first_init() {
- grpc_core::LoadBalancingPolicyRegistry::Builder::
- RegisterLoadBalancingPolicyFactory(
- y_absl::make_unique<grpc_core::PickFirstFactory>());
+void RegisterPickFirstLbPolicy(CoreConfiguration::Builder* builder) {
+ builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
+ y_absl::make_unique<PickFirstFactory>());
}
-void grpc_lb_policy_pick_first_shutdown() {}
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc
index f3f3b5ed35..c1a1eab392 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc
@@ -17,24 +17,53 @@
#include <grpc/support/port_platform.h>
#include <inttypes.h>
-#include <limits.h>
+#include <algorithm>
+#include <map>
+#include <memory>
+#include <set>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
-#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
-#include <grpc/grpc.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/log.h>
-#include "src/core/ext/filters/client_channel/lb_policy.h"
#include "src/core/ext/filters/client_channel/lb_policy/address_filtering.h"
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
-#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/validation_errors.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/pollset_set.h"
#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/iomgr/work_serializer.h"
-#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/json/json_args.h"
+#include "src/core/lib/json/json_object_loader.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+#include "src/core/lib/load_balancing/lb_policy_factory.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
+#include "src/core/lib/resolver/server_address.h"
+#include "src/core/lib/transport/connectivity_state.h"
namespace grpc_core {
@@ -42,7 +71,7 @@ TraceFlag grpc_lb_priority_trace(false, "priority_lb");
namespace {
-constexpr char kPriority[] = "priority_experimental";
+constexpr y_absl::string_view kPriority = "priority_experimental";
// How long we keep a child around for after it is no longer being used
// (either because it has been removed from the config or because we
@@ -59,22 +88,34 @@ class PriorityLbConfig : public LoadBalancingPolicy::Config {
struct PriorityLbChild {
RefCountedPtr<LoadBalancingPolicy::Config> config;
bool ignore_reresolution_requests = false;
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs&,
+ ValidationErrors* errors);
};
- PriorityLbConfig(std::map<TString, PriorityLbChild> children,
- std::vector<TString> priorities)
- : children_(std::move(children)), priorities_(std::move(priorities)) {}
+ PriorityLbConfig() = default;
+
+ PriorityLbConfig(const PriorityLbConfig&) = delete;
+ PriorityLbConfig& operator=(const PriorityLbConfig&) = delete;
- const char* name() const override { return kPriority; }
+ PriorityLbConfig(PriorityLbConfig&& other) = delete;
+ PriorityLbConfig& operator=(PriorityLbConfig&& other) = delete;
+
+ y_absl::string_view name() const override { return kPriority; }
const std::map<TString, PriorityLbChild>& children() const {
return children_;
}
const std::vector<TString>& priorities() const { return priorities_; }
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs&,
+ ValidationErrors* errors);
+
private:
- const std::map<TString, PriorityLbChild> children_;
- const std::vector<TString> priorities_;
+ std::map<TString, PriorityLbChild> children_;
+ std::vector<TString> priorities_;
};
// priority LB policy.
@@ -82,9 +123,9 @@ class PriorityLb : public LoadBalancingPolicy {
public:
explicit PriorityLb(Args args);
- const char* name() const override { return kPriority; }
+ y_absl::string_view name() const override { return kPriority; }
- void UpdateLocked(UpdateArgs args) override;
+ y_absl::Status UpdateLocked(UpdateArgs args) override;
void ExitIdleLocked() override;
void ResetBackoffLocked() override;
@@ -100,18 +141,16 @@ class PriorityLb : public LoadBalancingPolicy {
const TString& name() const { return name_; }
- void UpdateLocked(RefCountedPtr<LoadBalancingPolicy::Config> config,
- bool ignore_reresolution_requests);
+ y_absl::Status UpdateLocked(RefCountedPtr<LoadBalancingPolicy::Config> config,
+ bool ignore_reresolution_requests);
void ExitIdleLocked();
void ResetBackoffLocked();
- void DeactivateLocked();
+ void MaybeDeactivateLocked();
void MaybeReactivateLocked();
void Orphan() override;
- std::unique_ptr<SubchannelPicker> GetPicker() {
- return y_absl::make_unique<RefCountedPickerWrapper>(picker_wrapper_);
- }
+ std::unique_ptr<SubchannelPicker> GetPicker();
grpc_connectivity_state connectivity_state() const {
return connectivity_state_;
@@ -154,7 +193,7 @@ class PriorityLb : public LoadBalancingPolicy {
~Helper() override { priority_.reset(DEBUG_LOCATION, "Helper"); }
RefCountedPtr<SubchannelInterface> CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) override;
+ ServerAddress address, const ChannelArgs& args) override;
void UpdateState(grpc_connectivity_state state,
const y_absl::Status& status,
std::unique_ptr<SubchannelPicker> picker) override;
@@ -201,7 +240,7 @@ class PriorityLb : public LoadBalancingPolicy {
// Methods for dealing with the child policy.
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
- const grpc_channel_args* args);
+ const ChannelArgs& args);
void OnConnectivityStateUpdateLocked(
grpc_connectivity_state state, const y_absl::Status& status,
@@ -217,6 +256,8 @@ class PriorityLb : public LoadBalancingPolicy {
y_absl::Status connectivity_status_;
RefCountedPtr<RefCountedPicker> picker_wrapper_;
+ bool seen_ready_or_idle_since_transient_failure_ = true;
+
OrphanablePtr<DeactivationTimer> deactivation_timer_;
OrphanablePtr<FailoverTimer> failover_timer_;
};
@@ -225,34 +266,51 @@ class PriorityLb : public LoadBalancingPolicy {
void ShutdownLocked() override;
- // Returns UINT32_MAX if child is not in current priority list.
+ // Returns the priority of the specified child name, or UINT32_MAX if
+ // the child is not in the current priority list.
uint32_t GetChildPriorityLocked(const TString& child_name) const;
- void HandleChildConnectivityStateChangeLocked(ChildPriority* child);
+ // Deletes a child. Called when the child's deactivation timer fires.
void DeleteChild(ChildPriority* child);
- void TryNextPriorityLocked(bool report_connecting);
- void SelectPriorityLocked(uint32_t priority);
+ // Iterates through the list of priorities to choose one:
+ // - If the child for a priority doesn't exist, creates it.
+ // - If a child's failover timer is pending, selects that priority
+ // while we wait for the child to attempt to connect.
+ // - If the child is connected, selects that priority.
+ // - Otherwise, continues on to the next child.
+ // Delegates to the last child if none of the children are connecting.
+ // Reports TRANSIENT_FAILURE if the priority list is empty.
+ //
+ // This method is idempotent; it should yield the same result every
+ // time as a function of the state of the children.
+ void ChoosePriorityLocked();
+
+ // Sets the specified priority as the current priority.
+ // Optionally deactivates any children at lower priorities.
+ // Returns the child's picker to the channel.
+ void SetCurrentPriorityLocked(int32_t priority,
+ bool deactivate_lower_priorities,
+ const char* reason);
const Duration child_failover_timeout_;
// Current channel args and config from the resolver.
- const grpc_channel_args* args_ = nullptr;
+ ChannelArgs args_;
RefCountedPtr<PriorityLbConfig> config_;
y_absl::StatusOr<HierarchicalAddressMap> addresses_;
+ TString resolution_note_;
// Internal state.
bool shutting_down_ = false;
bool update_in_progress_ = false;
+ // All children that currently exist.
+ // Some of these children may be in deactivated state.
std::map<TString, OrphanablePtr<ChildPriority>> children_;
// The priority that is being used.
uint32_t current_priority_ = UINT32_MAX;
- // Points to the current child from before the most recent update.
- // We will continue to use this child until we decide which of the new
- // children to use.
- ChildPriority* current_child_from_before_update_ = nullptr;
};
//
@@ -261,11 +319,11 @@ class PriorityLb : public LoadBalancingPolicy {
PriorityLb::PriorityLb(Args args)
: LoadBalancingPolicy(std::move(args)),
- child_failover_timeout_(
- Duration::Milliseconds(grpc_channel_args_find_integer(
- args.args, GRPC_ARG_PRIORITY_FAILOVER_TIMEOUT_MS,
- {static_cast<int>(kDefaultChildFailoverTimeout.millis()), 0,
- INT_MAX}))) {
+ child_failover_timeout_(std::max(
+ Duration::Zero(),
+ args.args
+ .GetDurationFromIntMillis(GRPC_ARG_PRIORITY_FAILOVER_TIMEOUT_MS)
+ .value_or(kDefaultChildFailoverTimeout))) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
gpr_log(GPR_INFO, "[priority_lb %p] created", this);
}
@@ -275,7 +333,6 @@ PriorityLb::~PriorityLb() {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
gpr_log(GPR_INFO, "[priority_lb %p] destroying priority LB policy", this);
}
- grpc_channel_args_destroy(args_);
}
void PriorityLb::ShutdownLocked() {
@@ -302,46 +359,47 @@ void PriorityLb::ResetBackoffLocked() {
for (const auto& p : children_) p.second->ResetBackoffLocked();
}
-void PriorityLb::UpdateLocked(UpdateArgs args) {
+y_absl::Status PriorityLb::UpdateLocked(UpdateArgs args) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
gpr_log(GPR_INFO, "[priority_lb %p] received update", this);
}
- // Save current child.
- if (current_priority_ != UINT32_MAX) {
- const TString& child_name = config_->priorities()[current_priority_];
- current_child_from_before_update_ = children_[child_name].get();
- // Unset current_priority_, since it was an index into the old
- // config's priority list and may no longer be valid. It will be
- // reset later by TryNextPriorityLocked(), but we unset it here in
- // case updating any of our children triggers a state update.
- current_priority_ = UINT32_MAX;
- }
// Update config.
config_ = std::move(args.config);
// Update args.
- grpc_channel_args_destroy(args_);
- args_ = args.args;
- args.args = nullptr;
+ args_ = std::move(args.args);
// Update addresses.
addresses_ = MakeHierarchicalAddressMap(args.addresses);
+ resolution_note_ = std::move(args.resolution_note);
// Check all existing children against the new config.
update_in_progress_ = true;
+ std::vector<TString> errors;
for (const auto& p : children_) {
const TString& child_name = p.first;
auto& child = p.second;
auto config_it = config_->children().find(child_name);
if (config_it == config_->children().end()) {
// Existing child not found in new config. Deactivate it.
- child->DeactivateLocked();
+ child->MaybeDeactivateLocked();
} else {
// Existing child found in new config. Update it.
- child->UpdateLocked(config_it->second.config,
- config_it->second.ignore_reresolution_requests);
+ y_absl::Status status =
+ child->UpdateLocked(config_it->second.config,
+ config_it->second.ignore_reresolution_requests);
+ if (!status.ok()) {
+ errors.emplace_back(
+ y_absl::StrCat("child ", child_name, ": ", status.ToString()));
+ }
}
}
update_in_progress_ = false;
// Try to get connected.
- TryNextPriorityLocked(/*report_connecting=*/children_.empty());
+ ChoosePriorityLocked();
+ // Return status.
+ if (!errors.empty()) {
+ return y_absl::UnavailableError(y_absl::StrCat(
+ "errors from children: [", y_absl::StrJoin(errors, "; "), "]"));
+ }
+ return y_absl::OkStatus();
}
uint32_t PriorityLb::GetChildPriorityLocked(
@@ -353,95 +411,22 @@ uint32_t PriorityLb::GetChildPriorityLocked(
return UINT32_MAX;
}
-void PriorityLb::HandleChildConnectivityStateChangeLocked(
- ChildPriority* child) {
- // If we're in the process of propagating an update from our parent to
- // our children, ignore any updates that come from the children. We
- // will instead choose a new priority once the update has been seen by
- // all children. This ensures that we don't incorrectly do the wrong
- // thing while state is inconsistent.
- if (update_in_progress_) return;
- // Special case for the child that was the current child before the
- // most recent update.
- if (child == current_child_from_before_update_) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
- gpr_log(GPR_INFO,
- "[priority_lb %p] state update for current child from before "
- "config update",
- this);
- }
- if (child->connectivity_state() == GRPC_CHANNEL_READY ||
- child->connectivity_state() == GRPC_CHANNEL_IDLE) {
- // If it's still READY or IDLE, we stick with this child, so pass
- // the new picker up to our parent.
- channel_control_helper()->UpdateState(child->connectivity_state(),
- child->connectivity_status(),
- child->GetPicker());
- } else {
- // If it's no longer READY or IDLE, we should stop using it.
- // We already started trying other priorities as a result of the
- // update, but calling TryNextPriorityLocked() ensures that we will
- // properly select between CONNECTING and TRANSIENT_FAILURE as the
- // new state to report to our parent.
- current_child_from_before_update_ = nullptr;
- TryNextPriorityLocked(/*report_connecting=*/true);
- }
- return;
- }
- // Otherwise, find the child's priority.
- uint32_t child_priority = GetChildPriorityLocked(child->name());
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
- gpr_log(GPR_INFO,
- "[priority_lb %p] state update for priority %u, child %s, current "
- "priority %u",
- this, child_priority, child->name().c_str(), current_priority_);
- }
- // Ignore priorities not in the current config.
- if (child_priority == UINT32_MAX) return;
- // Ignore lower-than-current priorities.
- if (child_priority > current_priority_) return;
- // If a child reports TRANSIENT_FAILURE, start trying the next priority.
- // Note that even if this is for a higher-than-current priority, we
- // may still need to create some children between this priority and
- // the current one (e.g., if we got an update that inserted new
- // priorities ahead of the current one).
- if (child->connectivity_state() == GRPC_CHANNEL_TRANSIENT_FAILURE) {
- TryNextPriorityLocked(
- /*report_connecting=*/child_priority == current_priority_);
- return;
- }
- // The update is for a higher-than-current priority (or for any
- // priority if we don't have any current priority).
- if (child_priority < current_priority_) {
- // If the child reports READY or IDLE, switch to that priority.
- // Otherwise, ignore the update.
- if (child->connectivity_state() == GRPC_CHANNEL_READY ||
- child->connectivity_state() == GRPC_CHANNEL_IDLE) {
- SelectPriorityLocked(child_priority);
- }
- return;
- }
- // The current priority has returned a new picker, so pass it up to
- // our parent.
- channel_control_helper()->UpdateState(child->connectivity_state(),
- child->connectivity_status(),
- child->GetPicker());
-}
-
void PriorityLb::DeleteChild(ChildPriority* child) {
- // If this was the current child from before the most recent update,
- // stop using it. We already started trying other priorities as a
- // result of the update, but calling TryNextPriorityLocked() ensures that
- // we will properly select between CONNECTING and TRANSIENT_FAILURE as the
- // new state to report to our parent.
- if (current_child_from_before_update_ == child) {
- current_child_from_before_update_ = nullptr;
- TryNextPriorityLocked(/*report_connecting=*/true);
- }
children_.erase(child->name());
}
-void PriorityLb::TryNextPriorityLocked(bool report_connecting) {
+void PriorityLb::ChoosePriorityLocked() {
+ // If priority list is empty, report TF.
+ if (config_->priorities().empty()) {
+ y_absl::Status status =
+ y_absl::UnavailableError("priority policy has empty priority list");
+ channel_control_helper()->UpdateState(
+ GRPC_CHANNEL_TRANSIENT_FAILURE, status,
+ y_absl::make_unique<TransientFailurePicker>(status));
+ return;
+ }
+ // Iterate through priorities, searching for one in READY or IDLE,
+ // creating new children as needed.
current_priority_ = UINT32_MAX;
for (uint32_t priority = 0; priority < config_->priorities().size();
++priority) {
@@ -452,75 +437,94 @@ void PriorityLb::TryNextPriorityLocked(bool report_connecting) {
priority, child_name.c_str());
}
auto& child = children_[child_name];
+ // Create child if needed.
if (child == nullptr) {
- if (report_connecting) {
- channel_control_helper()->UpdateState(
- GRPC_CHANNEL_CONNECTING, y_absl::Status(),
- y_absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
- }
child = MakeOrphanable<ChildPriority>(
Ref(DEBUG_LOCATION, "ChildPriority"), child_name);
auto child_config = config_->children().find(child_name);
GPR_DEBUG_ASSERT(child_config != config_->children().end());
- child->UpdateLocked(child_config->second.config,
- child_config->second.ignore_reresolution_requests);
- return;
+ // TODO(roth): If the child reports a non-OK status with the
+ // update, we need to propagate that back to the resolver somehow.
+ (void)child->UpdateLocked(
+ child_config->second.config,
+ child_config->second.ignore_reresolution_requests);
+ } else {
+ // The child already exists. Reactivate if needed.
+ child->MaybeReactivateLocked();
}
- // The child already exists.
- child->MaybeReactivateLocked();
- // If the child is in state READY or IDLE, switch to it.
+ // Select this child if it is in states READY or IDLE.
if (child->connectivity_state() == GRPC_CHANNEL_READY ||
child->connectivity_state() == GRPC_CHANNEL_IDLE) {
- SelectPriorityLocked(priority);
+ SetCurrentPriorityLocked(
+ priority, /*deactivate_lower_priorities=*/true,
+ ConnectivityStateName(child->connectivity_state()));
return;
}
- // Child is not READY or IDLE.
- // If its failover timer is still pending, give it time to fire.
+ // Select this child if its failover timer is pending.
if (child->FailoverTimerPending()) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
- gpr_log(GPR_INFO,
- "[priority_lb %p] priority %u, child %s: child still "
- "attempting to connect, will wait",
- this, priority, child_name.c_str());
- }
- if (report_connecting) {
- channel_control_helper()->UpdateState(
- GRPC_CHANNEL_CONNECTING, y_absl::Status(),
- y_absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
- }
+ SetCurrentPriorityLocked(priority, /*deactivate_lower_priorities=*/false,
+ "failover timer pending");
return;
}
// Child has been failing for a while. Move on to the next priority.
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
+ gpr_log(GPR_INFO,
+ "[priority_lb %p] skipping priority %u, child %s: state=%s, "
+ "failover timer not pending",
+ this, priority, child_name.c_str(),
+ ConnectivityStateName(child->connectivity_state()));
+ }
}
- // If there are no more priorities to try, report TRANSIENT_FAILURE.
+ // If we didn't find any priority to try, pick the first one in state
+ // CONNECTING.
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
gpr_log(GPR_INFO,
- "[priority_lb %p] no priority reachable, putting channel in "
- "TRANSIENT_FAILURE",
+ "[priority_lb %p] no priority reachable, checking for CONNECTING "
+ "priority to delegate to",
this);
}
- current_child_from_before_update_ = nullptr;
- y_absl::Status status = y_absl::UnavailableError("no ready priority");
- channel_control_helper()->UpdateState(
- GRPC_CHANNEL_TRANSIENT_FAILURE, status,
- y_absl::make_unique<TransientFailurePicker>(status));
+ for (uint32_t priority = 0; priority < config_->priorities().size();
+ ++priority) {
+ // If the child for the priority does not exist yet, create it.
+ const TString& child_name = config_->priorities()[priority];
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
+ gpr_log(GPR_INFO, "[priority_lb %p] trying priority %u, child %s", this,
+ priority, child_name.c_str());
+ }
+ auto& child = children_[child_name];
+ GPR_ASSERT(child != nullptr);
+ if (child->connectivity_state() == GRPC_CHANNEL_CONNECTING) {
+ SetCurrentPriorityLocked(priority, /*deactivate_lower_priorities=*/false,
+ "CONNECTING (pass 2)");
+ return;
+ }
+ }
+ // Did not find any child in CONNECTING, delegate to last child.
+ SetCurrentPriorityLocked(config_->priorities().size() - 1,
+ /*deactivate_lower_priorities=*/false,
+ "no usable children");
}
-void PriorityLb::SelectPriorityLocked(uint32_t priority) {
+void PriorityLb::SetCurrentPriorityLocked(int32_t priority,
+ bool deactivate_lower_priorities,
+ const char* reason) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
- gpr_log(GPR_INFO, "[priority_lb %p] selected priority %u, child %s", this,
- priority, config_->priorities()[priority].c_str());
+ gpr_log(GPR_INFO,
+ "[priority_lb %p] selecting priority %u, child %s (%s, "
+ "deactivate_lower_priorities=%d)",
+ this, priority, config_->priorities()[priority].c_str(), reason,
+ deactivate_lower_priorities);
}
current_priority_ = priority;
- current_child_from_before_update_ = nullptr;
- // Deactivate lower priorities.
- for (uint32_t p = priority + 1; p < config_->priorities().size(); ++p) {
- const TString& child_name = config_->priorities()[p];
- auto it = children_.find(child_name);
- if (it != children_.end()) it->second->DeactivateLocked();
- }
- // Update picker.
+ if (deactivate_lower_priorities) {
+ for (uint32_t p = priority + 1; p < config_->priorities().size(); ++p) {
+ const TString& child_name = config_->priorities()[p];
+ auto it = children_.find(child_name);
+ if (it != children_.end()) it->second->MaybeDeactivateLocked();
+ }
+ }
auto& child = children_[config_->priorities()[priority]];
+ GPR_ASSERT(child != nullptr);
channel_control_helper()->UpdateState(child->connectivity_state(),
child->connectivity_status(),
child->GetPicker());
@@ -543,7 +547,7 @@ PriorityLb::ChildPriority::DeactivationTimer::DeactivationTimer(
}
GRPC_CLOSURE_INIT(&on_timer_, OnTimer, this, nullptr);
Ref(DEBUG_LOCATION, "Timer").release();
- grpc_timer_init(&timer_, ExecCtx::Get()->Now() + kChildRetentionInterval,
+ grpc_timer_init(&timer_, Timestamp::Now() + kChildRetentionInterval,
&on_timer_);
}
@@ -570,7 +574,7 @@ void PriorityLb::ChildPriority::DeactivationTimer::OnTimer(
void PriorityLb::ChildPriority::DeactivationTimer::OnTimerLocked(
grpc_error_handle error) {
- if (error == GRPC_ERROR_NONE && timer_pending_) {
+ if (GRPC_ERROR_IS_NONE(error) && timer_pending_) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
gpr_log(GPR_INFO,
"[priority_lb %p] child %s (%p): deactivation timer fired, "
@@ -605,7 +609,7 @@ PriorityLb::ChildPriority::FailoverTimer::FailoverTimer(
Ref(DEBUG_LOCATION, "Timer").release();
grpc_timer_init(
&timer_,
- ExecCtx::Get()->Now() +
+ Timestamp::Now() +
child_priority_->priority_policy_->child_failover_timeout_,
&on_timer_);
}
@@ -634,7 +638,7 @@ void PriorityLb::ChildPriority::FailoverTimer::OnTimer(
void PriorityLb::ChildPriority::FailoverTimer::OnTimerLocked(
grpc_error_handle error) {
- if (error == GRPC_ERROR_NONE && timer_pending_) {
+ if (GRPC_ERROR_IS_NONE(error) && timer_pending_) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
gpr_log(GPR_INFO,
"[priority_lb %p] child %s (%p): failover timer fired, "
@@ -685,10 +689,19 @@ void PriorityLb::ChildPriority::Orphan() {
Unref(DEBUG_LOCATION, "ChildPriority+Orphan");
}
-void PriorityLb::ChildPriority::UpdateLocked(
+std::unique_ptr<LoadBalancingPolicy::SubchannelPicker>
+PriorityLb::ChildPriority::GetPicker() {
+ if (picker_wrapper_ == nullptr) {
+ return y_absl::make_unique<QueuePicker>(
+ priority_policy_->Ref(DEBUG_LOCATION, "QueuePicker"));
+ }
+ return y_absl::make_unique<RefCountedPickerWrapper>(picker_wrapper_);
+}
+
+y_absl::Status PriorityLb::ChildPriority::UpdateLocked(
RefCountedPtr<LoadBalancingPolicy::Config> config,
bool ignore_reresolution_requests) {
- if (priority_policy_->shutting_down_) return;
+ if (priority_policy_->shutting_down_) return y_absl::OkStatus();
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
gpr_log(GPR_INFO, "[priority_lb %p] child %s (%p): start update",
priority_policy_.get(), name_.c_str(), this);
@@ -706,19 +719,19 @@ void PriorityLb::ChildPriority::UpdateLocked(
} else {
update_args.addresses = priority_policy_->addresses_.status();
}
- update_args.args = grpc_channel_args_copy(priority_policy_->args_);
+ update_args.resolution_note = priority_policy_->resolution_note_;
+ update_args.args = priority_policy_->args_;
// Update the policy.
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_priority_trace)) {
gpr_log(GPR_INFO,
"[priority_lb %p] child %s (%p): updating child policy handler %p",
priority_policy_.get(), name_.c_str(), this, child_policy_.get());
}
- child_policy_->UpdateLocked(std::move(update_args));
+ return child_policy_->UpdateLocked(std::move(update_args));
}
OrphanablePtr<LoadBalancingPolicy>
-PriorityLb::ChildPriority::CreateChildPolicyLocked(
- const grpc_channel_args* args) {
+PriorityLb::ChildPriority::CreateChildPolicyLocked(const ChannelArgs& args) {
LoadBalancingPolicy::Args lb_policy_args;
lb_policy_args.work_serializer = priority_policy_->work_serializer();
lb_policy_args.args = args;
@@ -742,9 +755,6 @@ PriorityLb::ChildPriority::CreateChildPolicyLocked(
}
void PriorityLb::ChildPriority::ExitIdleLocked() {
- if (connectivity_state_ == GRPC_CHANNEL_IDLE && failover_timer_ == nullptr) {
- failover_timer_ = MakeOrphanable<FailoverTimer>(Ref());
- }
child_policy_->ExitIdleLocked();
}
@@ -765,21 +775,48 @@ void PriorityLb::ChildPriority::OnConnectivityStateUpdateLocked(
// Store the state and picker.
connectivity_state_ = state;
connectivity_status_ = status;
- picker_wrapper_ = MakeRefCounted<RefCountedPicker>(std::move(picker));
- // If READY or IDLE or TRANSIENT_FAILURE, cancel failover timer.
- if (state == GRPC_CHANNEL_READY || state == GRPC_CHANNEL_IDLE ||
- state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
+ // When the failover timer fires, this method will be called with picker
+ // set to null, because we want to consider the child to be in
+ // TRANSIENT_FAILURE, but we have no new picker to report. In that case,
+ // just keep using the old picker, in case we wind up delegating to this
+ // child when all priorities are failing.
+ if (picker != nullptr) {
+ picker_wrapper_ = MakeRefCounted<RefCountedPicker>(std::move(picker));
+ }
+ // If we transition to state CONNECTING and we've not seen
+ // TRANSIENT_FAILURE more recently than READY or IDLE, start failover
+ // timer if not already pending.
+ // In any other state, update seen_ready_or_idle_since_transient_failure_
+ // and cancel failover timer.
+ if (state == GRPC_CHANNEL_CONNECTING) {
+ if (seen_ready_or_idle_since_transient_failure_ &&
+ failover_timer_ == nullptr) {
+ failover_timer_ = MakeOrphanable<FailoverTimer>(Ref());
+ }
+ } else if (state == GRPC_CHANNEL_READY || state == GRPC_CHANNEL_IDLE) {
+ seen_ready_or_idle_since_transient_failure_ = true;
+ failover_timer_.reset();
+ } else if (state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
+ seen_ready_or_idle_since_transient_failure_ = false;
failover_timer_.reset();
}
- // Notify the parent policy.
- priority_policy_->HandleChildConnectivityStateChangeLocked(this);
+ // Call the LB policy's ChoosePriorityLocked() to choose a priority to
+ // use based on the updated state of this child.
+ //
+ // Note that if we're in the process of propagating an update from our
+ // parent to our children, we skip this, because we don't want to
+ // choose a new priority based on inconsistent state. Instead, the
+ // policy will choose a new priority once the update has been seen by
+ // all children.
+ if (!priority_policy_->update_in_progress_) {
+ priority_policy_->ChoosePriorityLocked();
+ }
}
-void PriorityLb::ChildPriority::DeactivateLocked() {
- // If already deactivated, don't do it again.
- if (deactivation_timer_ != nullptr) return;
- failover_timer_.reset();
- deactivation_timer_ = MakeOrphanable<DeactivationTimer>(Ref());
+void PriorityLb::ChildPriority::MaybeDeactivateLocked() {
+ if (deactivation_timer_ == nullptr) {
+ deactivation_timer_ = MakeOrphanable<DeactivationTimer>(Ref());
+ }
}
void PriorityLb::ChildPriority::MaybeReactivateLocked() {
@@ -791,8 +828,8 @@ void PriorityLb::ChildPriority::MaybeReactivateLocked() {
//
RefCountedPtr<SubchannelInterface>
-PriorityLb::ChildPriority::Helper::CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) {
+PriorityLb::ChildPriority::Helper::CreateSubchannel(ServerAddress address,
+ const ChannelArgs& args) {
if (priority_->priority_policy_->shutting_down_) return nullptr;
return priority_->priority_policy_->channel_control_helper()
->CreateSubchannel(std::move(address), args);
@@ -829,6 +866,61 @@ void PriorityLb::ChildPriority::Helper::AddTraceEvent(
// factory
//
+const JsonLoaderInterface* PriorityLbConfig::PriorityLbChild::JsonLoader(
+ const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<PriorityLbChild>()
+ // Note: The "config" field requires custom parsing, so it's
+ // handled in JsonPostLoad() instead of here.
+ .OptionalField("ignore_reresolution_requests",
+ &PriorityLbChild::ignore_reresolution_requests)
+ .Finish();
+ return loader;
+}
+
+void PriorityLbConfig::PriorityLbChild::JsonPostLoad(const Json& json,
+ const JsonArgs&,
+ ValidationErrors* errors) {
+ ValidationErrors::ScopedField field(errors, ".config");
+ auto it = json.object_value().find("config");
+ if (it == json.object_value().end()) {
+ errors->AddError("field not present");
+ return;
+ }
+ auto lb_config =
+ CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
+ it->second);
+ if (!lb_config.ok()) {
+ errors->AddError(lb_config.status().message());
+ return;
+ }
+ config = std::move(*lb_config);
+}
+
+const JsonLoaderInterface* PriorityLbConfig::JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<PriorityLbConfig>()
+ .Field("children", &PriorityLbConfig::children_)
+ .Field("priorities", &PriorityLbConfig::priorities_)
+ .Finish();
+ return loader;
+}
+
+void PriorityLbConfig::JsonPostLoad(const Json& /*json*/, const JsonArgs&,
+ ValidationErrors* errors) {
+ std::set<TString> unknown_priorities;
+ for (const TString& priority : priorities_) {
+ if (children_.find(priority) == children_.end()) {
+ unknown_priorities.insert(priority);
+ }
+ }
+ if (!unknown_priorities.empty()) {
+ errors->AddError(y_absl::StrCat("unknown priorit(ies): [",
+ y_absl::StrJoin(unknown_priorities, ", "),
+ "]"));
+ }
+}
+
class PriorityLbFactory : public LoadBalancingPolicyFactory {
public:
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
@@ -836,132 +928,28 @@ class PriorityLbFactory : public LoadBalancingPolicyFactory {
return MakeOrphanable<PriorityLb>(std::move(args));
}
- const char* name() const override { return kPriority; }
+ y_absl::string_view name() const override { return kPriority; }
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
- const Json& json, grpc_error_handle* error) const override {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
+ y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+ ParseLoadBalancingConfig(const Json& json) const override {
if (json.type() == Json::Type::JSON_NULL) {
// priority was mentioned as a policy in the deprecated
// loadBalancingPolicy field or in the client API.
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"field:loadBalancingPolicy error:priority policy requires "
"configuration. Please use loadBalancingConfig field of service "
"config instead.");
- return nullptr;
- }
- std::vector<grpc_error_handle> error_list;
- // Children.
- std::map<TString, PriorityLbConfig::PriorityLbChild> children;
- auto it = json.object_value().find("children");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:children error:required field missing"));
- } else if (it->second.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:children error:type should be object"));
- } else {
- const Json::Object& object = it->second.object_value();
- for (const auto& p : object) {
- const TString& child_name = p.first;
- const Json& element = p.second;
- if (element.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("field:children key:", child_name,
- " error:should be type object")));
- } else {
- auto it2 = element.object_value().find("config");
- if (it2 == element.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("field:children key:", child_name,
- " error:missing 'config' field")));
- } else {
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
- auto config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
- it2->second, &parse_error);
- bool ignore_resolution_requests = false;
- // If present, ignore_reresolution_requests must be of type
- // boolean.
- auto it3 =
- element.object_value().find("ignore_reresolution_requests");
- if (it3 != element.object_value().end()) {
- if (it3->second.type() == Json::Type::JSON_TRUE) {
- ignore_resolution_requests = true;
- } else if (it3->second.type() != Json::Type::JSON_FALSE) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("field:children key:", child_name,
- " field:ignore_reresolution_requests:should "
- "be type boolean")));
- }
- }
- if (config == nullptr) {
- GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
- error_list.push_back(
- GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(
- y_absl::StrCat("field:children key:", child_name).c_str(),
- &parse_error, 1));
- GRPC_ERROR_UNREF(parse_error);
- }
- children[child_name].config = std::move(config);
- children[child_name].ignore_reresolution_requests =
- ignore_resolution_requests;
- }
- }
- }
- }
- // Priorities.
- std::vector<TString> priorities;
- it = json.object_value().find("priorities");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:priorities error:required field missing"));
- } else if (it->second.type() != Json::Type::ARRAY) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:priorities error:type should be array"));
- } else {
- const Json::Array& array = it->second.array_value();
- for (size_t i = 0; i < array.size(); ++i) {
- const Json& element = array[i];
- if (element.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "field:priorities element:", i, " error:should be type string")));
- } else if (children.find(element.string_value()) == children.end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "field:priorities element:", i, " error:unknown child '",
- element.string_value(), "'")));
- } else {
- priorities.emplace_back(element.string_value());
- }
- }
- if (priorities.size() != children.size()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "field:priorities error:priorities size (", priorities.size(),
- ") != children size (", children.size(), ")")));
- }
- }
- if (error_list.empty()) {
- return MakeRefCounted<PriorityLbConfig>(std::move(children),
- std::move(priorities));
- } else {
- *error = GRPC_ERROR_CREATE_FROM_VECTOR(
- "priority_experimental LB policy config", &error_list);
- return nullptr;
}
+ return LoadRefCountedFromJson<PriorityLbConfig>(
+ json, JsonArgs(), "errors validating priority LB policy config");
}
};
} // namespace
-} // namespace grpc_core
-
-//
-// Plugin registration
-//
-
-void grpc_lb_policy_priority_init() {
- grpc_core::LoadBalancingPolicyRegistry::Builder::
- RegisterLoadBalancingPolicyFactory(
- y_absl::make_unique<grpc_core::PriorityLbFactory>());
+void RegisterPriorityLbPolicy(CoreConfiguration::Builder* builder) {
+ builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
+ y_absl::make_unique<PriorityLbFactory>());
}
-void grpc_lb_policy_priority_shutdown() {}
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc
index 860c00a996..d6e15c63e2 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc
@@ -16,84 +16,110 @@
#include <grpc/support/port_platform.h>
+#include "src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h"
+
+#include <inttypes.h>
#include <stdlib.h>
-#include <string.h>
+#include <algorithm>
+#include <atomic>
+#include <cmath>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/base/attributes.h"
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/container/inlined_vector.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/numbers.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
#define XXH_INLINE_ALL
#include "xxhash.h"
-#include <grpc/support/alloc.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/support/log.h>
+#include "src/core/ext/filters/client_channel/client_channel.h"
#include "src/core/ext/filters/client_channel/lb_policy/subchannel_list.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
-#include "src/core/ext/filters/client_channel/subchannel.h"
#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/debug/trace.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+#include "src/core/lib/load_balancing/lb_policy_factory.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
+#include "src/core/lib/resolver/server_address.h"
#include "src/core/lib/transport/connectivity_state.h"
-#include "src/core/lib/transport/error_utils.h"
namespace grpc_core {
-const char* kRequestRingHashAttribute = "request_ring_hash";
TraceFlag grpc_lb_ring_hash_trace(false, "ring_hash_lb");
+UniqueTypeName RequestHashAttributeName() {
+ static UniqueTypeName::Factory kFactory("request_hash");
+ return kFactory.Create();
+}
+
// Helper Parser method
-void ParseRingHashLbConfig(const Json& json, size_t* min_ring_size,
- size_t* max_ring_size,
- std::vector<grpc_error_handle>* error_list) {
- *min_ring_size = 1024;
- *max_ring_size = 8388608;
- if (json.type() != Json::Type::OBJECT) {
- error_list->push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "ring_hash_experimental should be of type object"));
- return;
- }
- const Json::Object& ring_hash = json.object_value();
- auto ring_hash_it = ring_hash.find("min_ring_size");
- if (ring_hash_it != ring_hash.end()) {
- if (ring_hash_it->second.type() != Json::Type::NUMBER) {
- error_list->push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:min_ring_size error: should be of type number"));
- } else {
- *min_ring_size = gpr_parse_nonnegative_int(
- ring_hash_it->second.string_value().c_str());
+
+const JsonLoaderInterface* RingHashConfig::JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<RingHashConfig>()
+ .OptionalField("min_ring_size", &RingHashConfig::min_ring_size)
+ .OptionalField("max_ring_size", &RingHashConfig::max_ring_size)
+ .Finish();
+ return loader;
+}
+
+void RingHashConfig::JsonPostLoad(const Json&, const JsonArgs&,
+ ValidationErrors* errors) {
+ {
+ ValidationErrors::ScopedField field(errors, ".min_ring_size");
+ if (!errors->FieldHasErrors() &&
+ (min_ring_size == 0 || min_ring_size > 8388608)) {
+ errors->AddError("must be in the range [1, 8388608]");
}
}
- ring_hash_it = ring_hash.find("max_ring_size");
- if (ring_hash_it != ring_hash.end()) {
- if (ring_hash_it->second.type() != Json::Type::NUMBER) {
- error_list->push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:max_ring_size error: should be of type number"));
- } else {
- *max_ring_size = gpr_parse_nonnegative_int(
- ring_hash_it->second.string_value().c_str());
+ {
+ ValidationErrors::ScopedField field(errors, ".max_ring_size");
+ if (!errors->FieldHasErrors() &&
+ (max_ring_size == 0 || max_ring_size > 8388608)) {
+ errors->AddError("must be in the range [1, 8388608]");
}
}
- if (*min_ring_size == 0 || *min_ring_size > 8388608 || *max_ring_size == 0 ||
- *max_ring_size > 8388608 || *min_ring_size > *max_ring_size) {
- error_list->push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:max_ring_size and or min_ring_size error: "
- "values need to be in the range of 1 to 8388608 "
- "and max_ring_size cannot be smaller than "
- "min_ring_size"));
+ if (min_ring_size > max_ring_size) {
+ errors->AddError("max_ring_size cannot be smaller than min_ring_size");
}
}
namespace {
-constexpr char kRingHash[] = "ring_hash_experimental";
+constexpr y_absl::string_view kRingHash = "ring_hash_experimental";
class RingHashLbConfig : public LoadBalancingPolicy::Config {
public:
RingHashLbConfig(size_t min_ring_size, size_t max_ring_size)
: min_ring_size_(min_ring_size), max_ring_size_(max_ring_size) {}
- const char* name() const override { return kRingHash; }
+ y_absl::string_view name() const override { return kRingHash; }
size_t min_ring_size() const { return min_ring_size_; }
size_t max_ring_size() const { return max_ring_size_; }
@@ -110,17 +136,16 @@ class RingHash : public LoadBalancingPolicy {
public:
explicit RingHash(Args args);
- const char* name() const override { return kRingHash; }
+ y_absl::string_view name() const override { return kRingHash; }
- void UpdateLocked(UpdateArgs args) override;
+ y_absl::Status UpdateLocked(UpdateArgs args) override;
void ResetBackoffLocked() override;
private:
~RingHash() override;
- // Forward declarations.
+ // Forward declaration.
class RingHashSubchannelList;
- class Ring;
// Data for a particular subchannel in a subchannel list.
// This subclass adds the following functionality:
@@ -137,54 +162,56 @@ class RingHash : public LoadBalancingPolicy {
: SubchannelData(subchannel_list, address, std::move(subchannel)),
address_(address) {}
- grpc_connectivity_state GetConnectivityState() const {
- return connectivity_state_for_picker_.load(std::memory_order_relaxed);
- }
-
const ServerAddress& address() const { return address_; }
- bool seen_failure_since_ready() const { return seen_failure_since_ready_; }
+ grpc_connectivity_state GetConnectivityState() const {
+ return connectivity_state_.load(std::memory_order_relaxed);
+ }
- // Performs connectivity state updates that need to be done both when we
- // first start watching and when a watcher notification is received.
- void UpdateConnectivityStateLocked(
- grpc_connectivity_state connectivity_state);
+ y_absl::Status GetConnectivityStatus() const {
+ MutexLock lock(&mu_);
+ return connectivity_status_;
+ }
private:
// Performs connectivity state updates that need to be done only
// after we have started watching.
void ProcessConnectivityChangeLocked(
- grpc_connectivity_state connectivity_state) override;
+ y_absl::optional<grpc_connectivity_state> old_state,
+ grpc_connectivity_state new_state) override;
ServerAddress address_;
- grpc_connectivity_state last_connectivity_state_ = GRPC_CHANNEL_SHUTDOWN;
- std::atomic<grpc_connectivity_state> connectivity_state_for_picker_{
- GRPC_CHANNEL_IDLE};
- bool seen_failure_since_ready_ = false;
+
+ // Last logical connectivity state seen.
+ // Note that this may differ from the state actually reported by the
+ // subchannel in some cases; for example, once this is set to
+ // TRANSIENT_FAILURE, we do not change it again until we get READY,
+ // so we skip any interim stops in CONNECTING.
+ // Uses an atomic so that it can be accessed outside of the WorkSerializer.
+ std::atomic<grpc_connectivity_state> connectivity_state_{GRPC_CHANNEL_IDLE};
+
+ mutable Mutex mu_;
+ y_absl::Status connectivity_status_ Y_ABSL_GUARDED_BY(&mu_);
};
- // A list of subchannels.
+ // A list of subchannels and the ring containing those subchannels.
class RingHashSubchannelList
: public SubchannelList<RingHashSubchannelList, RingHashSubchannelData> {
public:
- RingHashSubchannelList(RingHash* policy, TraceFlag* tracer,
- ServerAddressList addresses,
- const grpc_channel_args& args)
- : SubchannelList(policy, tracer, std::move(addresses),
- policy->channel_control_helper(), args) {
- // Need to maintain a ref to the LB policy as long as we maintain
- // any references to subchannels, since the subchannels'
- // pollset_sets will include the LB policy's pollset_set.
- policy->Ref(DEBUG_LOCATION, "subchannel_list").release();
- }
+ struct RingEntry {
+ uint64_t hash;
+ RingHashSubchannelData* subchannel;
+ };
+
+ RingHashSubchannelList(RingHash* policy, ServerAddressList addresses,
+ const ChannelArgs& args);
~RingHashSubchannelList() override {
RingHash* p = static_cast<RingHash*>(policy());
p->Unref(DEBUG_LOCATION, "subchannel_list");
}
- // Starts watching the subchannels in this list.
- void StartWatchingLocked();
+ const std::vector<RingEntry>& ring() const { return ring_; }
// Updates the counters of subchannels in each state when a
// subchannel transitions from old_state to new_state.
@@ -193,87 +220,118 @@ class RingHash : public LoadBalancingPolicy {
// Updates the RH policy's connectivity state based on the
// subchannel list's state counters, creating new picker and new ring.
- // Furthermore, return a bool indicating whether the aggregated state is
- // Transient Failure.
- bool UpdateRingHashConnectivityStateLocked();
-
- // Create a new ring from this subchannel list.
- RefCountedPtr<Ring> MakeRing();
+ // The index parameter indicates the index into the list of the subchannel
+ // whose status report triggered the call to
+ // UpdateRingHashConnectivityStateLocked().
+ // connection_attempt_complete is true if the subchannel just
+ // finished a connection attempt.
+ void UpdateRingHashConnectivityStateLocked(size_t index,
+ bool connection_attempt_complete,
+ y_absl::Status status);
private:
- size_t num_idle_ = 0;
+ bool AllSubchannelsSeenInitialState() {
+ for (size_t i = 0; i < num_subchannels(); ++i) {
+ if (!subchannel(i)->connectivity_state().has_value()) return false;
+ }
+ return true;
+ }
+
+ size_t num_idle_;
size_t num_ready_ = 0;
size_t num_connecting_ = 0;
size_t num_transient_failure_ = 0;
- };
- class Ring : public RefCounted<Ring> {
- public:
- struct Entry {
- uint64_t hash;
- RingHashSubchannelData* subchannel;
- };
+ std::vector<RingEntry> ring_;
- Ring(RingHash* parent,
- RefCountedPtr<RingHashSubchannelList> subchannel_list);
+ // The index of the subchannel currently doing an internally
+ // triggered connection attempt, if any.
+ y_absl::optional<size_t> internally_triggered_connection_index_;
- const std::vector<Entry>& ring() const { return ring_; }
-
- private:
- RefCountedPtr<RingHashSubchannelList> subchannel_list_;
- std::vector<Entry> ring_;
+ // TODO(roth): If we ever change the helper UpdateState() API to not
+ // need the status reported for TRANSIENT_FAILURE state (because
+ // it's not currently actually used for anything outside of the picker),
+ // then we will no longer need this data member.
+ y_absl::Status last_failure_;
};
class Picker : public SubchannelPicker {
public:
- Picker(RefCountedPtr<RingHash> parent, RefCountedPtr<Ring> ring)
- : parent_(std::move(parent)), ring_(std::move(ring)) {}
+ explicit Picker(RefCountedPtr<RingHashSubchannelList> subchannel_list)
+ : subchannel_list_(std::move(subchannel_list)) {}
+
+ ~Picker() override {
+ // Hop into WorkSerializer to unref the subchannel list, since that may
+ // trigger the unreffing of the underlying subchannels.
+ MakeOrphanable<WorkSerializerRunner>(std::move(subchannel_list_));
+ }
PickResult Pick(PickArgs args) override;
private:
- // A fire-and-forget class that schedules subchannel connection attempts
- // on the control plane WorkSerializer.
- class SubchannelConnectionAttempter : public Orphanable {
+ // An interface for running a callback in the control plane WorkSerializer.
+ class WorkSerializerRunner : public Orphanable {
public:
- explicit SubchannelConnectionAttempter(
- RefCountedPtr<RingHash> ring_hash_lb)
- : ring_hash_lb_(std::move(ring_hash_lb)) {
+ explicit WorkSerializerRunner(
+ RefCountedPtr<RingHashSubchannelList> subchannel_list)
+ : subchannel_list_(std::move(subchannel_list)) {
GRPC_CLOSURE_INIT(&closure_, RunInExecCtx, this, nullptr);
}
- void AddSubchannel(RefCountedPtr<SubchannelInterface> subchannel) {
- subchannels_.push_back(std::move(subchannel));
- }
-
void Orphan() override {
// Hop into ExecCtx, so that we're not holding the data plane mutex
// while we run control-plane code.
ExecCtx::Run(DEBUG_LOCATION, &closure_, GRPC_ERROR_NONE);
}
+ // Will be invoked inside of the WorkSerializer.
+ virtual void Run() {}
+
+ protected:
+ RingHash* ring_hash_lb() const {
+ return static_cast<RingHash*>(subchannel_list_->policy());
+ }
+
private:
static void RunInExecCtx(void* arg, grpc_error_handle /*error*/) {
auto* self = static_cast<SubchannelConnectionAttempter*>(arg);
- self->ring_hash_lb_->work_serializer()->Run(
+ self->ring_hash_lb()->work_serializer()->Run(
[self]() {
- if (!self->ring_hash_lb_->shutdown_) {
- for (auto& subchannel : self->subchannels_) {
- subchannel->AttemptToConnect();
- }
- }
+ self->Run();
delete self;
},
DEBUG_LOCATION);
}
- RefCountedPtr<RingHash> ring_hash_lb_;
+ RefCountedPtr<RingHashSubchannelList> subchannel_list_;
grpc_closure closure_;
- y_absl::InlinedVector<RefCountedPtr<SubchannelInterface>, 10> subchannels_;
};
- RefCountedPtr<RingHash> parent_;
- RefCountedPtr<Ring> ring_;
+ // A fire-and-forget class that schedules subchannel connection attempts
+ // on the control plane WorkSerializer.
+ class SubchannelConnectionAttempter : public WorkSerializerRunner {
+ public:
+ explicit SubchannelConnectionAttempter(
+ RefCountedPtr<RingHashSubchannelList> subchannel_list)
+ : WorkSerializerRunner(std::move(subchannel_list)) {}
+
+ void AddSubchannel(RefCountedPtr<SubchannelInterface> subchannel) {
+ subchannels_.push_back(std::move(subchannel));
+ }
+
+ void Run() override {
+ if (!ring_hash_lb()->shutdown_) {
+ for (auto& subchannel : subchannels_) {
+ subchannel->RequestConnection();
+ }
+ }
+ }
+
+ private:
+ std::vector<RefCountedPtr<SubchannelInterface>> subchannels_;
+ };
+
+ RefCountedPtr<RingHashSubchannelList> subchannel_list_;
};
void ShutdownLocked() override;
@@ -282,140 +340,35 @@ class RingHash : public LoadBalancingPolicy {
RefCountedPtr<RingHashLbConfig> config_;
// list of subchannels.
- OrphanablePtr<RingHashSubchannelList> subchannel_list_;
+ RefCountedPtr<RingHashSubchannelList> subchannel_list_;
+ RefCountedPtr<RingHashSubchannelList> latest_pending_subchannel_list_;
// indicating if we are shutting down.
bool shutdown_ = false;
-
- // Current ring.
- RefCountedPtr<Ring> ring_;
};
//
-// RingHash::Ring
-//
-
-RingHash::Ring::Ring(RingHash* parent,
- RefCountedPtr<RingHashSubchannelList> subchannel_list)
- : subchannel_list_(std::move(subchannel_list)) {
- size_t num_subchannels = subchannel_list_->num_subchannels();
- // Store the weights while finding the sum.
- struct AddressWeight {
- TString address;
- // Default weight is 1 for the cases where a weight is not provided,
- // each occurrence of the address will be counted a weight value of 1.
- uint32_t weight = 1;
- double normalized_weight;
- };
- std::vector<AddressWeight> address_weights;
- size_t sum = 0;
- address_weights.reserve(num_subchannels);
- for (size_t i = 0; i < num_subchannels; ++i) {
- RingHashSubchannelData* sd = subchannel_list_->subchannel(i);
- const ServerAddressWeightAttribute* weight_attribute = static_cast<
- const ServerAddressWeightAttribute*>(sd->address().GetAttribute(
- ServerAddressWeightAttribute::kServerAddressWeightAttributeKey));
- AddressWeight address_weight;
- address_weight.address =
- grpc_sockaddr_to_string(&sd->address().address(), false);
- if (weight_attribute != nullptr) {
- GPR_ASSERT(weight_attribute->weight() != 0);
- address_weight.weight = weight_attribute->weight();
- }
- sum += address_weight.weight;
- address_weights.push_back(std::move(address_weight));
- }
- // Calculating normalized weights and find min and max.
- double min_normalized_weight = 1.0;
- double max_normalized_weight = 0.0;
- for (auto& address : address_weights) {
- address.normalized_weight = static_cast<double>(address.weight) / sum;
- min_normalized_weight =
- std::min(address.normalized_weight, min_normalized_weight);
- max_normalized_weight =
- std::max(address.normalized_weight, max_normalized_weight);
- }
- // Scale up the number of hashes per host such that the least-weighted host
- // gets a whole number of hashes on the ring. Other hosts might not end up
- // with whole numbers, and that's fine (the ring-building algorithm below can
- // handle this). This preserves the original implementation's behavior: when
- // weights aren't provided, all hosts should get an equal number of hashes. In
- // the case where this number exceeds the max_ring_size, it's scaled back down
- // to fit.
- const size_t min_ring_size = parent->config_->min_ring_size();
- const size_t max_ring_size = parent->config_->max_ring_size();
- const double scale = std::min(
- std::ceil(min_normalized_weight * min_ring_size) / min_normalized_weight,
- static_cast<double>(max_ring_size));
- // Reserve memory for the entire ring up front.
- const uint64_t ring_size = std::ceil(scale);
- ring_.reserve(ring_size);
- // Populate the hash ring by walking through the (host, weight) pairs in
- // normalized_host_weights, and generating (scale * weight) hashes for each
- // host. Since these aren't necessarily whole numbers, we maintain running
- // sums -- current_hashes and target_hashes -- which allows us to populate the
- // ring in a mostly stable way.
- y_absl::InlinedVector<char, 196> hash_key_buffer;
- double current_hashes = 0.0;
- double target_hashes = 0.0;
- uint64_t min_hashes_per_host = ring_size;
- uint64_t max_hashes_per_host = 0;
- for (size_t i = 0; i < num_subchannels; ++i) {
- const TString& address_string = address_weights[i].address;
- hash_key_buffer.assign(address_string.begin(), address_string.end());
- hash_key_buffer.emplace_back('_');
- auto offset_start = hash_key_buffer.end();
- target_hashes += scale * address_weights[i].normalized_weight;
- size_t count = 0;
- while (current_hashes < target_hashes) {
- const TString count_str = y_absl::StrCat(count);
- hash_key_buffer.insert(offset_start, count_str.begin(), count_str.end());
- y_absl::string_view hash_key(hash_key_buffer.data(),
- hash_key_buffer.size());
- const uint64_t hash = XXH64(hash_key.data(), hash_key.size(), 0);
- ring_.push_back({hash, subchannel_list_->subchannel(i)});
- ++count;
- ++current_hashes;
- hash_key_buffer.erase(offset_start, hash_key_buffer.end());
- }
- min_hashes_per_host =
- std::min(static_cast<uint64_t>(i), min_hashes_per_host);
- max_hashes_per_host =
- std::max(static_cast<uint64_t>(i), max_hashes_per_host);
- }
- std::sort(ring_.begin(), ring_.end(),
- [](const Entry& lhs, const Entry& rhs) -> bool {
- return lhs.hash < rhs.hash;
- });
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace)) {
- gpr_log(GPR_INFO,
- "[RH %p picker %p] created ring from subchannel_list=%p "
- "with %" PRIuPTR " ring entries",
- parent, this, subchannel_list_.get(), ring_.size());
- }
-}
-
-//
// RingHash::Picker
//
RingHash::PickResult RingHash::Picker::Pick(PickArgs args) {
- auto hash =
- args.call_state->ExperimentalGetCallAttribute(kRequestRingHashAttribute);
+ auto* call_state = static_cast<ClientChannel::LoadBalancedCall::LbCallState*>(
+ args.call_state);
+ auto hash = call_state->GetCallAttribute(RequestHashAttributeName());
uint64_t h;
if (!y_absl::SimpleAtoi(hash, &h)) {
return PickResult::Fail(
- y_absl::InternalError("xds ring hash value is not a number"));
+ y_absl::InternalError("ring hash value is not a number"));
}
- const std::vector<Ring::Entry>& ring = ring_->ring();
+ const auto& ring = subchannel_list_->ring();
// Ported from https://github.com/RJ/ketama/blob/master/libketama/ketama.c
// (ketama_get_server) NOTE: The algorithm depends on using signed integers
// for lowp, highp, and first_index. Do not change them!
- int64_t lowp = 0;
- int64_t highp = ring.size();
- int64_t first_index = 0;
+ size_t lowp = 0;
+ size_t highp = ring.size();
+ size_t first_index = 0;
while (true) {
first_index = (lowp + highp) / 2;
- if (first_index == static_cast<int64_t>(ring.size())) {
+ if (first_index == ring.size()) {
first_index = 0;
break;
}
@@ -439,7 +392,9 @@ RingHash::PickResult RingHash::Picker::Pick(PickArgs args) {
[&](RefCountedPtr<SubchannelInterface> subchannel) {
if (subchannel_connection_attempter == nullptr) {
subchannel_connection_attempter =
- MakeOrphanable<SubchannelConnectionAttempter>(parent_);
+ MakeOrphanable<SubchannelConnectionAttempter>(
+ subchannel_list_->Ref(DEBUG_LOCATION,
+ "SubchannelConnectionAttempter"));
}
subchannel_connection_attempter->AddSubchannel(std::move(subchannel));
};
@@ -464,7 +419,7 @@ RingHash::PickResult RingHash::Picker::Pick(PickArgs args) {
bool found_second_subchannel = false;
bool found_first_non_failed = false;
for (size_t i = 1; i < ring.size(); ++i) {
- const Ring::Entry& entry = ring[(first_index + i) % ring.size()];
+ const auto& entry = ring[(first_index + i) % ring.size()];
if (entry.subchannel == ring[first_index].subchannel) {
continue;
}
@@ -499,39 +454,128 @@ RingHash::PickResult RingHash::Picker::Pick(PickArgs args) {
}
}
}
- return PickResult::Fail(y_absl::UnavailableError(
- "xds ring hash found a subchannel that is in TRANSIENT_FAILURE state"));
+ return PickResult::Fail(y_absl::UnavailableError(y_absl::StrCat(
+ "ring hash cannot find a connected subchannel; first failure: ",
+ ring[first_index].subchannel->GetConnectivityStatus().ToString())));
}
//
// RingHash::RingHashSubchannelList
//
-void RingHash::RingHashSubchannelList::StartWatchingLocked() {
- if (num_subchannels() == 0) return;
- // Check current state of each subchannel synchronously.
+RingHash::RingHashSubchannelList::RingHashSubchannelList(
+ RingHash* policy, ServerAddressList addresses, const ChannelArgs& args)
+ : SubchannelList(policy,
+ (GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace)
+ ? "RingHashSubchannelList"
+ : nullptr),
+ std::move(addresses), policy->channel_control_helper(),
+ args),
+ num_idle_(num_subchannels()) {
+ // Need to maintain a ref to the LB policy as long as we maintain
+ // any references to subchannels, since the subchannels'
+ // pollset_sets will include the LB policy's pollset_set.
+ policy->Ref(DEBUG_LOCATION, "subchannel_list").release();
+ // Construct the ring.
+ // Store the weights while finding the sum.
+ struct AddressWeight {
+ TString address;
+ // Default weight is 1 for the cases where a weight is not provided,
+ // each occurrence of the address will be counted a weight value of 1.
+ uint32_t weight = 1;
+ double normalized_weight;
+ };
+ std::vector<AddressWeight> address_weights;
+ size_t sum = 0;
+ address_weights.reserve(num_subchannels());
for (size_t i = 0; i < num_subchannels(); ++i) {
- grpc_connectivity_state state =
- subchannel(i)->CheckConnectivityStateLocked();
- subchannel(i)->UpdateConnectivityStateLocked(state);
+ RingHashSubchannelData* sd = subchannel(i);
+ const ServerAddressWeightAttribute* weight_attribute = static_cast<
+ const ServerAddressWeightAttribute*>(sd->address().GetAttribute(
+ ServerAddressWeightAttribute::kServerAddressWeightAttributeKey));
+ AddressWeight address_weight;
+ address_weight.address =
+ grpc_sockaddr_to_string(&sd->address().address(), false).value();
+ // Weight should never be zero, but ignore it just in case, since
+ // that value would screw up the ring-building algorithm.
+ if (weight_attribute != nullptr && weight_attribute->weight() > 0) {
+ address_weight.weight = weight_attribute->weight();
+ }
+ sum += address_weight.weight;
+ address_weights.push_back(std::move(address_weight));
+ }
+ // Calculating normalized weights and find min and max.
+ double min_normalized_weight = 1.0;
+ double max_normalized_weight = 0.0;
+ for (auto& address : address_weights) {
+ address.normalized_weight = static_cast<double>(address.weight) / sum;
+ min_normalized_weight =
+ std::min(address.normalized_weight, min_normalized_weight);
+ max_normalized_weight =
+ std::max(address.normalized_weight, max_normalized_weight);
}
- // Start connectivity watch for each subchannel.
- for (size_t i = 0; i < num_subchannels(); i++) {
- if (subchannel(i)->subchannel() != nullptr) {
- subchannel(i)->StartConnectivityWatchLocked();
+ // Scale up the number of hashes per host such that the least-weighted host
+ // gets a whole number of hashes on the ring. Other hosts might not end up
+ // with whole numbers, and that's fine (the ring-building algorithm below can
+ // handle this). This preserves the original implementation's behavior: when
+ // weights aren't provided, all hosts should get an equal number of hashes. In
+ // the case where this number exceeds the max_ring_size, it's scaled back down
+ // to fit.
+ const size_t min_ring_size = policy->config_->min_ring_size();
+ const size_t max_ring_size = policy->config_->max_ring_size();
+ const double scale = std::min(
+ std::ceil(min_normalized_weight * min_ring_size) / min_normalized_weight,
+ static_cast<double>(max_ring_size));
+ // Reserve memory for the entire ring up front.
+ const size_t ring_size = std::ceil(scale);
+ ring_.reserve(ring_size);
+ // Populate the hash ring by walking through the (host, weight) pairs in
+ // normalized_host_weights, and generating (scale * weight) hashes for each
+ // host. Since these aren't necessarily whole numbers, we maintain running
+ // sums -- current_hashes and target_hashes -- which allows us to populate the
+ // ring in a mostly stable way.
+ y_absl::InlinedVector<char, 196> hash_key_buffer;
+ double current_hashes = 0.0;
+ double target_hashes = 0.0;
+ uint64_t min_hashes_per_host = ring_size;
+ uint64_t max_hashes_per_host = 0;
+ for (size_t i = 0; i < num_subchannels(); ++i) {
+ const TString& address_string = address_weights[i].address;
+ hash_key_buffer.assign(address_string.begin(), address_string.end());
+ hash_key_buffer.emplace_back('_');
+ auto offset_start = hash_key_buffer.end();
+ target_hashes += scale * address_weights[i].normalized_weight;
+ size_t count = 0;
+ while (current_hashes < target_hashes) {
+ const TString count_str = y_absl::StrCat(count);
+ hash_key_buffer.insert(offset_start, count_str.begin(), count_str.end());
+ y_absl::string_view hash_key(hash_key_buffer.data(),
+ hash_key_buffer.size());
+ const uint64_t hash = XXH64(hash_key.data(), hash_key.size(), 0);
+ ring_.push_back({hash, subchannel(i)});
+ ++count;
+ ++current_hashes;
+ hash_key_buffer.erase(offset_start, hash_key_buffer.end());
}
+ min_hashes_per_host =
+ std::min(static_cast<uint64_t>(i), min_hashes_per_host);
+ max_hashes_per_host =
+ std::max(static_cast<uint64_t>(i), max_hashes_per_host);
+ }
+ std::sort(ring_.begin(), ring_.end(),
+ [](const RingHashSubchannelList::RingEntry& lhs,
+ const RingHashSubchannelList::RingEntry& rhs) -> bool {
+ return lhs.hash < rhs.hash;
+ });
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace)) {
+ gpr_log(GPR_INFO,
+ "[RH %p] created subchannel list %p with %" PRIuPTR " ring entries",
+ policy, this, ring_.size());
}
- RingHash* p = static_cast<RingHash*>(policy());
- // Sending up the initial picker while all subchannels are in IDLE state.
- p->channel_control_helper()->UpdateState(
- GRPC_CHANNEL_READY, y_absl::Status(),
- y_absl::make_unique<Picker>(p->Ref(DEBUG_LOCATION, "RingHashPicker"),
- p->ring_));
}
void RingHash::RingHashSubchannelList::UpdateStateCountersLocked(
grpc_connectivity_state old_state, grpc_connectivity_state new_state) {
- GPR_ASSERT(new_state != GRPC_CHANNEL_SHUTDOWN);
if (old_state == GRPC_CHANNEL_IDLE) {
GPR_ASSERT(num_idle_ > 0);
--num_idle_;
@@ -545,6 +589,7 @@ void RingHash::RingHashSubchannelList::UpdateStateCountersLocked(
GPR_ASSERT(num_transient_failure_ > 0);
--num_transient_failure_;
}
+ GPR_ASSERT(new_state != GRPC_CHANNEL_SHUTDOWN);
if (new_state == GRPC_CHANNEL_IDLE) {
++num_idle_;
} else if (new_state == GRPC_CHANNEL_READY) {
@@ -556,61 +601,115 @@ void RingHash::RingHashSubchannelList::UpdateStateCountersLocked(
}
}
-// Sets the RH policy's connectivity state and generates a new picker based
-// on the current subchannel list or requests an re-attempt by returning true..
-bool RingHash::RingHashSubchannelList::UpdateRingHashConnectivityStateLocked() {
+void RingHash::RingHashSubchannelList::UpdateRingHashConnectivityStateLocked(
+ size_t index, bool connection_attempt_complete, y_absl::Status status) {
RingHash* p = static_cast<RingHash*>(policy());
+ // If this is latest_pending_subchannel_list_, then swap it into
+ // subchannel_list_ as soon as we get the initial connectivity state
+ // report for every subchannel in the list.
+ if (p->latest_pending_subchannel_list_.get() == this &&
+ AllSubchannelsSeenInitialState()) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace)) {
+ gpr_log(GPR_INFO, "[RH %p] replacing subchannel list %p with %p", p,
+ p->subchannel_list_.get(), this);
+ }
+ p->subchannel_list_ = std::move(p->latest_pending_subchannel_list_);
+ }
// Only set connectivity state if this is the current subchannel list.
- if (p->subchannel_list_.get() != this) return false;
+ if (p->subchannel_list_.get() != this) return;
// The overall aggregation rules here are:
// 1. If there is at least one subchannel in READY state, report READY.
// 2. If there are 2 or more subchannels in TRANSIENT_FAILURE state, report
- // TRANSIENT_FAILURE.
+ // TRANSIENT_FAILURE.
// 3. If there is at least one subchannel in CONNECTING state, report
- // CONNECTING.
- // 4. If there is at least one subchannel in IDLE state, report IDLE.
- // 5. Otherwise, report TRANSIENT_FAILURE.
+ // CONNECTING.
+ // 4. If there is one subchannel in TRANSIENT_FAILURE state and there is
+ // more than one subchannel, report CONNECTING.
+ // 5. If there is at least one subchannel in IDLE state, report IDLE.
+ // 6. Otherwise, report TRANSIENT_FAILURE.
+ //
+ // We set start_connection_attempt to true if we match rules 2, 3, or 6.
+ grpc_connectivity_state state;
+ bool start_connection_attempt = false;
if (num_ready_ > 0) {
- /* READY */
- p->channel_control_helper()->UpdateState(
- GRPC_CHANNEL_READY, y_absl::Status(),
- y_absl::make_unique<Picker>(p->Ref(DEBUG_LOCATION, "RingHashPicker"),
- p->ring_));
- return false;
- }
- if (num_connecting_ > 0 && num_transient_failure_ < 2) {
- p->channel_control_helper()->UpdateState(
- GRPC_CHANNEL_CONNECTING, y_absl::Status(),
- y_absl::make_unique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")));
- return false;
+ state = GRPC_CHANNEL_READY;
+ } else if (num_transient_failure_ >= 2) {
+ state = GRPC_CHANNEL_TRANSIENT_FAILURE;
+ start_connection_attempt = true;
+ } else if (num_connecting_ > 0) {
+ state = GRPC_CHANNEL_CONNECTING;
+ } else if (num_transient_failure_ == 1 && num_subchannels() > 1) {
+ state = GRPC_CHANNEL_CONNECTING;
+ start_connection_attempt = true;
+ } else if (num_idle_ > 0) {
+ state = GRPC_CHANNEL_IDLE;
+ } else {
+ state = GRPC_CHANNEL_TRANSIENT_FAILURE;
+ start_connection_attempt = true;
}
- if (num_idle_ > 0 && num_transient_failure_ < 2) {
- p->channel_control_helper()->UpdateState(
- GRPC_CHANNEL_IDLE, y_absl::Status(),
- y_absl::make_unique<Picker>(p->Ref(DEBUG_LOCATION, "RingHashPicker"),
- p->ring_));
- return false;
+ // In TRANSIENT_FAILURE, report the last reported failure.
+ // Otherwise, report OK.
+ if (state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
+ if (!status.ok()) {
+ last_failure_ = y_absl::UnavailableError(y_absl::StrCat(
+ "no reachable subchannels; last error: ", status.ToString()));
+ }
+ status = last_failure_;
+ } else {
+ status = y_absl::OkStatus();
}
- y_absl::Status status =
- y_absl::UnavailableError("connections to backend failing or idle");
+ // Generate new picker and return it to the channel.
+ // Note that we use our own picker regardless of connectivity state.
p->channel_control_helper()->UpdateState(
- GRPC_CHANNEL_TRANSIENT_FAILURE, status,
- y_absl::make_unique<TransientFailurePicker>(status));
- return true;
-}
-
-RefCountedPtr<RingHash::Ring> RingHash::RingHashSubchannelList::MakeRing() {
- RingHash* p = static_cast<RingHash*>(policy());
- return MakeRefCounted<Ring>(p, Ref(DEBUG_LOCATION, "Ring"));
+ state, status,
+ y_absl::make_unique<Picker>(Ref(DEBUG_LOCATION, "RingHashPicker")));
+ // While the ring_hash policy is reporting TRANSIENT_FAILURE, it will
+ // not be getting any pick requests from the priority policy.
+ // However, because the ring_hash policy does not attempt to
+ // reconnect to subchannels unless it is getting pick requests,
+ // it will need special handling to ensure that it will eventually
+ // recover from TRANSIENT_FAILURE state once the problem is resolved.
+ // Specifically, it will make sure that it is attempting to connect to
+ // at least one subchannel at any given time. After a given subchannel
+ // fails a connection attempt, it will move on to the next subchannel
+ // in the ring. It will keep doing this until one of the subchannels
+ // successfully connects, at which point it will report READY and stop
+ // proactively trying to connect. The policy will remain in
+ // TRANSIENT_FAILURE until at least one subchannel becomes connected,
+ // even if subchannels are in state CONNECTING during that time.
+ //
+ // Note that we do the same thing when the policy is in state
+ // CONNECTING, just to ensure that we don't remain in CONNECTING state
+ // indefinitely if there are no new picks coming in.
+ if (internally_triggered_connection_index_.has_value() &&
+ *internally_triggered_connection_index_ == index &&
+ connection_attempt_complete) {
+ internally_triggered_connection_index_.reset();
+ }
+ if (start_connection_attempt &&
+ !internally_triggered_connection_index_.has_value()) {
+ size_t next_index = (index + 1) % num_subchannels();
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace)) {
+ gpr_log(GPR_INFO,
+ "[RH %p] triggering internal connection attempt for subchannel "
+ "%p, subchannel_list %p (index %" PRIuPTR " of %" PRIuPTR ")",
+ p, subchannel(next_index)->subchannel(), this, next_index,
+ num_subchannels());
+ }
+ internally_triggered_connection_index_ = next_index;
+ subchannel(next_index)->subchannel()->RequestConnection();
+ }
}
//
// RingHash::RingHashSubchannelData
//
-void RingHash::RingHashSubchannelData::UpdateConnectivityStateLocked(
- grpc_connectivity_state connectivity_state) {
+void RingHash::RingHashSubchannelData::ProcessConnectivityChangeLocked(
+ y_absl::optional<grpc_connectivity_state> old_state,
+ grpc_connectivity_state new_state) {
RingHash* p = static_cast<RingHash*>(subchannel_list()->policy());
+ grpc_connectivity_state last_connectivity_state = GetConnectivityState();
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace)) {
gpr_log(
GPR_INFO,
@@ -618,79 +717,54 @@ void RingHash::RingHashSubchannelData::UpdateConnectivityStateLocked(
"(index %" PRIuPTR " of %" PRIuPTR "): prev_state=%s new_state=%s",
p, subchannel(), subchannel_list(), Index(),
subchannel_list()->num_subchannels(),
- ConnectivityStateName(last_connectivity_state_),
- ConnectivityStateName(connectivity_state));
- }
- // Decide what state to report for aggregation purposes.
- // If we haven't seen a failure since the last time we were in state
- // READY, then we report the state change as-is. However, once we do see
- // a failure, we report TRANSIENT_FAILURE and do not report any subsequent
- // state changes until we go back into state READY.
- if (!seen_failure_since_ready_) {
- if (connectivity_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
- seen_failure_since_ready_ = true;
- }
- subchannel_list()->UpdateStateCountersLocked(last_connectivity_state_,
- connectivity_state);
- } else {
- if (connectivity_state == GRPC_CHANNEL_READY) {
- seen_failure_since_ready_ = false;
- subchannel_list()->UpdateStateCountersLocked(
- GRPC_CHANNEL_TRANSIENT_FAILURE, connectivity_state);
- }
+ ConnectivityStateName(last_connectivity_state),
+ ConnectivityStateName(new_state));
}
- // Record last seen connectivity state.
- last_connectivity_state_ = connectivity_state;
-}
-
-void RingHash::RingHashSubchannelData::ProcessConnectivityChangeLocked(
- grpc_connectivity_state connectivity_state) {
- RingHash* p = static_cast<RingHash*>(subchannel_list()->policy());
GPR_ASSERT(subchannel() != nullptr);
- // Update connectivity state used by picker.
- connectivity_state_for_picker_.store(connectivity_state,
- std::memory_order_relaxed);
- // If the new state is TRANSIENT_FAILURE, re-resolve.
- // Only do this if we've started watching, not at startup time.
- // Otherwise, if the subchannel was already in state TRANSIENT_FAILURE
- // when the subchannel list was created, we'd wind up in a constant
- // loop of re-resolution.
- // Also attempt to reconnect.
- if (connectivity_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
+ // If this is not the initial state notification and the new state is
+ // TRANSIENT_FAILURE or IDLE, re-resolve.
+ // Note that we don't want to do this on the initial state notification,
+ // because that would result in an endless loop of re-resolution.
+ if (old_state.has_value() && (new_state == GRPC_CHANNEL_TRANSIENT_FAILURE ||
+ new_state == GRPC_CHANNEL_IDLE)) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace)) {
gpr_log(GPR_INFO,
- "[RH %p] Subchannel %p has gone into TRANSIENT_FAILURE. "
- "Requesting re-resolution",
- p, subchannel());
+ "[RH %p] Subchannel %p reported %s; requesting re-resolution", p,
+ subchannel(), ConnectivityStateName(new_state));
}
p->channel_control_helper()->RequestReresolution();
}
- // Update state counters.
- UpdateConnectivityStateLocked(connectivity_state);
+ const bool connection_attempt_complete = new_state != GRPC_CHANNEL_CONNECTING;
+ // Decide what state to report for the purposes of aggregation and
+ // picker behavior.
+ // If the last recorded state was TRANSIENT_FAILURE, ignore the update
+ // unless the new state is READY.
+ bool update_status = true;
+ y_absl::Status status = connectivity_status();
+ if (last_connectivity_state == GRPC_CHANNEL_TRANSIENT_FAILURE &&
+ new_state != GRPC_CHANNEL_READY &&
+ new_state != GRPC_CHANNEL_TRANSIENT_FAILURE) {
+ new_state = GRPC_CHANNEL_TRANSIENT_FAILURE;
+ {
+ MutexLock lock(&mu_);
+ status = connectivity_status_;
+ }
+ update_status = false;
+ }
+ // Update state counters used for aggregation.
+ subchannel_list()->UpdateStateCountersLocked(last_connectivity_state,
+ new_state);
+ // Update status seen by picker if needed.
+ if (update_status) {
+ MutexLock lock(&mu_);
+ connectivity_status_ = connectivity_status();
+ }
+ // Update last seen state, also used by picker.
+ connectivity_state_.store(new_state, std::memory_order_relaxed);
// Update the RH policy's connectivity state, creating new picker and new
// ring.
- bool transient_failure =
- subchannel_list()->UpdateRingHashConnectivityStateLocked();
- // While the ring_hash policy is reporting TRANSIENT_FAILURE, it will
- // not be getting any pick requests from the priority policy.
- // However, because the ring_hash policy does not attempt to
- // reconnect to subchannels unless it is getting pick requests,
- // it will need special handling to ensure that it will eventually
- // recover from TRANSIENT_FAILURE state once the problem is resolved.
- // Specifically, it will make sure that it is attempting to connect to
- // at least one subchannel at any given time. After a given subchannel
- // fails a connection attempt, it will move on to the next subchannel
- // in the ring. It will keep doing this until one of the subchannels
- // successfully connects, at which point it will report READY and stop
- // proactively trying to connect. The policy will remain in
- // TRANSIENT_FAILURE until at least one subchannel becomes connected,
- // even if subchannels are in state CONNECTING during that time.
- if (transient_failure &&
- connectivity_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
- size_t next_index = (Index() + 1) % subchannel_list()->num_subchannels();
- RingHashSubchannelData* next_sd = subchannel_list()->subchannel(next_index);
- next_sd->subchannel()->AttemptToConnect();
- }
+ subchannel_list()->UpdateRingHashConnectivityStateLocked(
+ Index(), connection_attempt_complete, status);
}
//
@@ -708,6 +782,7 @@ RingHash::~RingHash() {
gpr_log(GPR_INFO, "[RH %p] Destroying Ring Hash policy", this);
}
GPR_ASSERT(subchannel_list_ == nullptr);
+ GPR_ASSERT(latest_pending_subchannel_list_ == nullptr);
}
void RingHash::ShutdownLocked() {
@@ -716,12 +791,17 @@ void RingHash::ShutdownLocked() {
}
shutdown_ = true;
subchannel_list_.reset();
- ring_.reset(DEBUG_LOCATION, "RingHash");
+ latest_pending_subchannel_list_.reset();
}
-void RingHash::ResetBackoffLocked() { subchannel_list_->ResetBackoffLocked(); }
+void RingHash::ResetBackoffLocked() {
+ subchannel_list_->ResetBackoffLocked();
+ if (latest_pending_subchannel_list_ != nullptr) {
+ latest_pending_subchannel_list_->ResetBackoffLocked();
+ }
+}
-void RingHash::UpdateLocked(UpdateArgs args) {
+y_absl::Status RingHash::UpdateLocked(UpdateArgs args) {
config_ = std::move(args.config);
ServerAddressList addresses;
if (args.addresses.ok()) {
@@ -729,42 +809,54 @@ void RingHash::UpdateLocked(UpdateArgs args) {
gpr_log(GPR_INFO, "[RH %p] received update with %" PRIuPTR " addresses",
this, args.addresses->size());
}
- // Filter out any address with weight 0.
- addresses.reserve(args.addresses->size());
- for (ServerAddress& address : *args.addresses) {
- const ServerAddressWeightAttribute* weight_attribute =
- static_cast<const ServerAddressWeightAttribute*>(address.GetAttribute(
- ServerAddressWeightAttribute::kServerAddressWeightAttributeKey));
- if (weight_attribute == nullptr || weight_attribute->weight() > 0) {
- addresses.emplace_back(std::move(address));
- }
- }
+ addresses = *std::move(args.addresses);
} else {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace)) {
gpr_log(GPR_INFO, "[RH %p] received update with addresses error: %s",
this, args.addresses.status().ToString().c_str());
}
- // If we already have a subchannel list, then ignore the resolver
- // failure and keep using the existing list.
- if (subchannel_list_ != nullptr) return;
+ // If we already have a subchannel list, then keep using the existing
+ // list, but still report back that the update was not accepted.
+ if (subchannel_list_ != nullptr) return args.addresses.status();
}
- subchannel_list_ = MakeOrphanable<RingHashSubchannelList>(
- this, &grpc_lb_ring_hash_trace, std::move(addresses), *args.args);
- if (subchannel_list_->num_subchannels() == 0) {
- // If the new list is empty, immediately transition to TRANSIENT_FAILURE.
- y_absl::Status status =
- args.addresses.ok() ? y_absl::UnavailableError(y_absl::StrCat(
- "empty address list: ", args.resolution_note))
- : args.addresses.status();
- channel_control_helper()->UpdateState(
- GRPC_CHANNEL_TRANSIENT_FAILURE, status,
- y_absl::make_unique<TransientFailurePicker>(status));
- } else {
- // Build the ring.
- ring_ = subchannel_list_->MakeRing();
- // Start watching the new list.
- subchannel_list_->StartWatchingLocked();
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace) &&
+ latest_pending_subchannel_list_ != nullptr) {
+ gpr_log(GPR_INFO, "[RH %p] replacing latest pending subchannel list %p",
+ this, latest_pending_subchannel_list_.get());
}
+ latest_pending_subchannel_list_ = MakeRefCounted<RingHashSubchannelList>(
+ this, std::move(addresses), args.args);
+ latest_pending_subchannel_list_->StartWatchingLocked();
+ // If we have no existing list or the new list is empty, immediately
+ // promote the new list.
+ // Otherwise, do nothing; the new list will be promoted when the
+ // initial subchannel states are reported.
+ if (subchannel_list_ == nullptr ||
+ latest_pending_subchannel_list_->num_subchannels() == 0) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_ring_hash_trace) &&
+ subchannel_list_ != nullptr) {
+ gpr_log(GPR_INFO,
+ "[RH %p] empty address list, replacing subchannel list %p", this,
+ subchannel_list_.get());
+ }
+ subchannel_list_ = std::move(latest_pending_subchannel_list_);
+ // If the new list is empty, report TRANSIENT_FAILURE.
+ if (subchannel_list_->num_subchannels() == 0) {
+ y_absl::Status status =
+ args.addresses.ok()
+ ? y_absl::UnavailableError(
+ y_absl::StrCat("empty address list: ", args.resolution_note))
+ : args.addresses.status();
+ channel_control_helper()->UpdateState(
+ GRPC_CHANNEL_TRANSIENT_FAILURE, status,
+ y_absl::make_unique<TransientFailurePicker>(status));
+ return status;
+ }
+ // Otherwise, report IDLE.
+ subchannel_list_->UpdateRingHashConnectivityStateLocked(
+ /*index=*/0, /*connection_attempt_complete=*/false, y_absl::OkStatus());
+ }
+ return y_absl::OkStatus();
}
//
@@ -778,31 +870,23 @@ class RingHashFactory : public LoadBalancingPolicyFactory {
return MakeOrphanable<RingHash>(std::move(args));
}
- const char* name() const override { return kRingHash; }
+ y_absl::string_view name() const override { return kRingHash; }
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
- const Json& json, grpc_error_handle* error) const override {
- size_t min_ring_size;
- size_t max_ring_size;
- std::vector<grpc_error_handle> error_list;
- ParseRingHashLbConfig(json, &min_ring_size, &max_ring_size, &error_list);
- if (error_list.empty()) {
- return MakeRefCounted<RingHashLbConfig>(min_ring_size, max_ring_size);
- } else {
- *error = GRPC_ERROR_CREATE_FROM_VECTOR(
- "ring_hash_experimental LB policy config", &error_list);
- return nullptr;
- }
+ y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+ ParseLoadBalancingConfig(const Json& json) const override {
+ auto config = LoadFromJson<RingHashConfig>(
+ json, JsonArgs(), "errors validating ring_hash LB policy config");
+ if (!config.ok()) return config.status();
+ return MakeRefCounted<RingHashLbConfig>(config->min_ring_size,
+ config->max_ring_size);
}
};
} // namespace
-void GrpcLbPolicyRingHashInit() {
- LoadBalancingPolicyRegistry::Builder::RegisterLoadBalancingPolicyFactory(
+void RegisterRingHashLbPolicy(CoreConfiguration::Builder* builder) {
+ builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
y_absl::make_unique<RingHashFactory>());
}
-void GrpcLbPolicyRingHashShutdown() {}
-
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h
index f0f86b2523..ecb19c9963 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h
@@ -19,19 +19,29 @@
#include <grpc/support/port_platform.h>
-#include <stdlib.h>
+#include <stdint.h>
-#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/gprpp/validation_errors.h"
#include "src/core/lib/json/json.h"
+#include "src/core/lib/json/json_args.h"
+#include "src/core/lib/json/json_object_loader.h"
namespace grpc_core {
-extern const char* kRequestRingHashAttribute;
+
+UniqueTypeName RequestHashAttributeName();
// Helper Parsing method to parse ring hash policy configs; for example, ring
// hash size validity.
-void ParseRingHashLbConfig(const Json& json, size_t* min_ring_size,
- size_t* max_ring_size,
- std::vector<grpc_error_handle>* error_list);
+struct RingHashConfig {
+ uint64_t min_ring_size = 1024;
+ uint64_t max_ring_size = 8388608;
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs&,
+ ValidationErrors* errors);
+};
+
} // namespace grpc_core
#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_RING_HASH_RING_HASH_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc
index f51b553477..7496aa3686 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc
@@ -22,55 +22,81 @@
#include <grpc/support/port_platform.h>
+#include <inttypes.h>
#include <stdlib.h>
+#include <string.h>
#include <algorithm>
#include <deque>
-#include <functional>
#include <list>
#include <map>
+#include <memory>
#include <random>
+#include <set>
#include <util/generic/string.h>
#include <util/string/cast.h>
#include <unordered_map>
#include <utility>
+#include <vector>
-#include "y_absl/container/inlined_vector.h"
+#include "y_absl/base/thread_annotations.h"
#include "y_absl/hash/hash.h"
#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
#include "y_absl/strings/string_view.h"
#include "y_absl/strings/strip.h"
+#include "y_absl/types/optional.h"
+#include "upb/upb.h"
#include "upb/upb.hpp"
+#include <grpc/byte_buffer.h>
+#include <grpc/byte_buffer_reader.h>
#include <grpc/grpc.h>
-#include <grpc/grpc_security.h>
-#include <grpc/impl/codegen/byte_buffer_reader.h>
+#include <grpc/impl/codegen/connectivity_state.h>
#include <grpc/impl/codegen/grpc_types.h>
-#include <grpc/support/time.h>
+#include <grpc/impl/codegen/propagation_bits.h>
+#include <grpc/slice.h>
+#include <grpc/status.h>
+#include <grpc/support/log.h>
#include "src/core/ext/filters/client_channel/client_channel.h"
-#include "src/core/ext/filters/client_channel/lb_policy.h"
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
-#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
#include "src/core/lib/backoff/backoff.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channelz.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/gpr/env.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/dual_ref_counted.h"
#include "src/core/lib/gprpp/orphanable.h"
-#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/validation_errors.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/pollset_set.h"
#include "src/core/lib/iomgr/timer.h"
#include "src/core/lib/json/json.h"
-#include "src/core/lib/json/json_util.h"
+#include "src/core/lib/json/json_args.h"
+#include "src/core/lib/json/json_object_loader.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+#include "src/core/lib/load_balancing/lb_policy_factory.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
#include "src/core/lib/resolver/resolver_registry.h"
+#include "src/core/lib/resolver/server_address.h"
#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/credentials/fake/fake_credentials.h"
#include "src/core/lib/service_config/service_config_impl.h"
+#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/core/lib/surface/call.h"
#include "src/core/lib/surface/channel.h"
#include "src/core/lib/transport/connectivity_state.h"
@@ -84,7 +110,7 @@ TraceFlag grpc_lb_rls_trace(false, "rls_lb");
namespace {
-const char* kRls = "rls";
+constexpr y_absl::string_view kRls = "rls_experimental";
const char kGrpc[] = "grpc";
const char* kRlsRequestPath = "/grpc.lookup.v1.RouteLookupService/RouteLookup";
const char* kFakeTargetFieldValue = "fake_target_field_value";
@@ -119,27 +145,26 @@ class RlsLbConfig : public LoadBalancingPolicy::Config {
struct RouteLookupConfig {
KeyBuilderMap key_builder_map;
TString lookup_service;
- Duration lookup_service_timeout;
- Duration max_age;
- Duration stale_age;
+ Duration lookup_service_timeout = kDefaultLookupServiceTimeout;
+ Duration max_age = kMaxMaxAge;
+ Duration stale_age = kMaxMaxAge;
int64_t cache_size_bytes = 0;
TString default_target;
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs& args,
+ ValidationErrors* errors);
};
- RlsLbConfig(RouteLookupConfig route_lookup_config,
- TString rls_channel_service_config, Json child_policy_config,
- TString child_policy_config_target_field_name,
- RefCountedPtr<LoadBalancingPolicy::Config>
- default_child_policy_parsed_config)
- : route_lookup_config_(std::move(route_lookup_config)),
- rls_channel_service_config_(std::move(rls_channel_service_config)),
- child_policy_config_(std::move(child_policy_config)),
- child_policy_config_target_field_name_(
- std::move(child_policy_config_target_field_name)),
- default_child_policy_parsed_config_(
- std::move(default_child_policy_parsed_config)) {}
-
- const char* name() const override { return kRls; }
+ RlsLbConfig() = default;
+
+ RlsLbConfig(const RlsLbConfig&) = delete;
+ RlsLbConfig& operator=(const RlsLbConfig&) = delete;
+
+ RlsLbConfig(RlsLbConfig&& other) = delete;
+ RlsLbConfig& operator=(RlsLbConfig&& other) = delete;
+
+ y_absl::string_view name() const override { return kRls; }
const KeyBuilderMap& key_builder_map() const {
return route_lookup_config_.key_builder_map;
@@ -170,6 +195,10 @@ class RlsLbConfig : public LoadBalancingPolicy::Config {
return default_child_policy_parsed_config_;
}
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs&,
+ ValidationErrors* errors);
+
private:
RouteLookupConfig route_lookup_config_;
TString rls_channel_service_config_;
@@ -184,8 +213,8 @@ class RlsLb : public LoadBalancingPolicy {
public:
explicit RlsLb(Args args);
- const char* name() const override { return kRls; }
- void UpdateLocked(UpdateArgs args) override;
+ y_absl::string_view name() const override { return kRls; }
+ y_absl::Status UpdateLocked(UpdateArgs args) override;
void ExitIdleLocked() override;
void ResetBackoffLocked() override;
@@ -270,8 +299,7 @@ class RlsLb : public LoadBalancingPolicy {
//
// Both methods grab the data they need from the parent object.
void StartUpdate() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&RlsLb::mu_);
- // Does not take ownership of channel_args.
- void MaybeFinishUpdate() Y_ABSL_LOCKS_EXCLUDED(&RlsLb::mu_);
+ y_absl::Status MaybeFinishUpdate() Y_ABSL_LOCKS_EXCLUDED(&RlsLb::mu_);
void ExitIdleLocked() {
if (child_policy_ != nullptr) child_policy_->ExitIdleLocked();
@@ -302,7 +330,7 @@ class RlsLb : public LoadBalancingPolicy {
}
RefCountedPtr<SubchannelInterface> CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) override;
+ ServerAddress address, const ChannelArgs& args) override;
void UpdateState(grpc_connectivity_state state,
const y_absl::Status& status,
std::unique_ptr<SubchannelPicker> picker) override;
@@ -669,6 +697,7 @@ class RlsLb : public LoadBalancingPolicy {
// Mutex to guard LB policy state that is accessed by the picker.
Mutex mu_;
bool is_shutdown_ Y_ABSL_GUARDED_BY(mu_) = false;
+ bool update_in_progress_ = false;
Cache cache_ Y_ABSL_GUARDED_BY(mu_);
// Maps an RLS request key to an RlsRequest object that represents a pending
// RLS request.
@@ -683,7 +712,7 @@ class RlsLb : public LoadBalancingPolicy {
// Accessed only from within WorkSerializer.
y_absl::StatusOr<ServerAddressList> addresses_;
- const grpc_channel_args* channel_args_ = nullptr;
+ ChannelArgs channel_args_;
RefCountedPtr<RlsLbConfig> config_;
RefCountedPtr<ChildPolicyWrapper> default_child_policy_;
std::map<TString /*target*/, ChildPolicyWrapper*> child_policy_map_;
@@ -719,28 +748,32 @@ void RlsLb::ChildPolicyWrapper::Orphan() {
picker_.reset();
}
-grpc_error_handle InsertOrUpdateChildPolicyField(const TString& field,
- const TString& value,
- Json* config) {
+bool InsertOrUpdateChildPolicyField(const TString& field,
+ const TString& value, Json* config,
+ ValidationErrors* errors) {
if (config->type() != Json::Type::ARRAY) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "child policy configuration is not an array");
+ errors->AddError("is not an array");
+ return false;
}
- std::vector<grpc_error_handle> error_list;
- for (Json& child_json : *config->mutable_array()) {
+ bool success = true;
+ for (size_t i = 0; i < config->array_value().size(); ++i) {
+ Json& child_json = (*config->mutable_array())[i];
+ ValidationErrors::ScopedField json_field(errors, y_absl::StrCat("[", i, "]"));
if (child_json.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "child policy item is not an object"));
+ errors->AddError("is not an object");
+ success = false;
} else {
Json::Object& child = *child_json.mutable_object();
if (child.size() != 1) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "child policy item contains more than one field"));
+ errors->AddError("child policy object contains more than one field");
+ success = false;
} else {
+ ValidationErrors::ScopedField json_field(
+ errors, y_absl::StrCat("[\"", child.begin()->first, "\"]"));
Json& child_config_json = child.begin()->second;
if (child_config_json.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "child policy item config is not an object"));
+ errors->AddError("child policy config is not an object");
+ success = false;
} else {
Json::Object& child_config = *child_config_json.mutable_object();
child_config[field] = Json(value);
@@ -748,18 +781,15 @@ grpc_error_handle InsertOrUpdateChildPolicyField(const TString& field,
}
}
}
- return GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(
- y_absl::StrCat("errors when inserting field \"", field,
- "\" for child policy"),
- &error_list);
+ return success;
}
void RlsLb::ChildPolicyWrapper::StartUpdate() {
Json child_policy_config = lb_policy_->config_->child_policy_config();
- grpc_error_handle error = InsertOrUpdateChildPolicyField(
+ ValidationErrors errors;
+ GPR_ASSERT(InsertOrUpdateChildPolicyField(
lb_policy_->config_->child_policy_config_target_field_name(), target_,
- &child_policy_config);
- GPR_ASSERT(error == GRPC_ERROR_NONE);
+ &child_policy_config, &errors));
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) {
gpr_log(
GPR_INFO,
@@ -767,30 +797,31 @@ void RlsLb::ChildPolicyWrapper::StartUpdate() {
lb_policy_.get(), this, target_.c_str(),
child_policy_config.Dump().c_str());
}
- pending_config_ = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
- child_policy_config, &error);
+ auto config =
+ CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
+ child_policy_config);
// Returned RLS target fails the validation.
- if (error != GRPC_ERROR_NONE) {
+ if (!config.ok()) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) {
gpr_log(GPR_INFO,
"[rlslb %p] ChildPolicyWrapper=%p [%s]: config failed to parse: "
- "%s; config: %s",
+ "%s",
lb_policy_.get(), this, target_.c_str(),
- grpc_error_std_string(error).c_str(),
- child_policy_config.Dump().c_str());
+ config.status().ToString().c_str());
}
pending_config_.reset();
picker_ = y_absl::make_unique<TransientFailurePicker>(
- grpc_error_to_absl_status(error));
- GRPC_ERROR_UNREF(error);
+ y_absl::UnavailableError(config.status().message()));
child_policy_.reset();
+ } else {
+ pending_config_ = std::move(*config);
}
}
-void RlsLb::ChildPolicyWrapper::MaybeFinishUpdate() {
+y_absl::Status RlsLb::ChildPolicyWrapper::MaybeFinishUpdate() {
// If pending_config_ is not set, that means StartUpdate() failed, so
// there's nothing to do here.
- if (pending_config_ == nullptr) return;
+ if (pending_config_ == nullptr) return y_absl::OkStatus();
// If child policy doesn't yet exist, create it.
if (child_policy_ == nullptr) {
Args create_args;
@@ -819,8 +850,8 @@ void RlsLb::ChildPolicyWrapper::MaybeFinishUpdate() {
UpdateArgs update_args;
update_args.config = std::move(pending_config_);
update_args.addresses = lb_policy_->addresses_;
- update_args.args = grpc_channel_args_copy(lb_policy_->channel_args_);
- child_policy_->UpdateLocked(std::move(update_args));
+ update_args.args = lb_policy_->channel_args_;
+ return child_policy_->UpdateLocked(std::move(update_args));
}
//
@@ -829,7 +860,7 @@ void RlsLb::ChildPolicyWrapper::MaybeFinishUpdate() {
RefCountedPtr<SubchannelInterface>
RlsLb::ChildPolicyWrapper::ChildPolicyHelper::CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) {
+ ServerAddress address, const ChannelArgs& args) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) {
gpr_log(GPR_INFO,
"[rlslb %p] ChildPolicyWrapper=%p [%s] ChildPolicyHelper=%p: "
@@ -990,7 +1021,7 @@ LoadBalancingPolicy::PickResult RlsLb::Picker::Pick(PickArgs args) {
gpr_log(GPR_INFO, "[rlslb %p] picker=%p: request keys: %s",
lb_policy_.get(), this, key.ToString().c_str());
}
- Timestamp now = ExecCtx::Get()->Now();
+ Timestamp now = Timestamp::Now();
MutexLock lock(&lb_policy_->mu_);
if (lb_policy_->is_shutdown_) {
return PickResult::Fail(
@@ -1060,7 +1091,8 @@ LoadBalancingPolicy::PickResult RlsLb::Picker::Pick(PickArgs args) {
"[rlslb %p] picker=%p: RLS call in backoff; failing pick",
lb_policy_.get(), this);
}
- return PickResult::Fail(entry->status());
+ return PickResult::Fail(y_absl::UnavailableError(
+ y_absl::StrCat("RLS request failed: ", entry->status().ToString())));
}
}
// RLS call pending. Queue the pick.
@@ -1139,7 +1171,7 @@ RlsLb::Cache::Entry::Entry(RefCountedPtr<RlsLb> lb_policy,
GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace) ? "CacheEntry" : nullptr),
lb_policy_(std::move(lb_policy)),
backoff_state_(MakeCacheEntryBackoff()),
- min_expiration_time_(ExecCtx::Get()->Now() + kMinExpirationTime),
+ min_expiration_time_(Timestamp::Now() + kMinExpirationTime),
lru_iterator_(lb_policy_->cache_.lru_list_.insert(
lb_policy_->cache_.lru_list_.end(), key)) {}
@@ -1167,46 +1199,48 @@ size_t RlsLb::Cache::Entry::Size() const {
}
LoadBalancingPolicy::PickResult RlsLb::Cache::Entry::Pick(PickArgs args) {
- for (const auto& child_policy_wrapper : child_policy_wrappers_) {
+ size_t i = 0;
+ ChildPolicyWrapper* child_policy_wrapper = nullptr;
+ // Skip targets before the last one that are in state TRANSIENT_FAILURE.
+ for (; i < child_policy_wrappers_.size(); ++i) {
+ child_policy_wrapper = child_policy_wrappers_[i].get();
if (child_policy_wrapper->connectivity_state() ==
- GRPC_CHANNEL_TRANSIENT_FAILURE) {
+ GRPC_CHANNEL_TRANSIENT_FAILURE &&
+ i < child_policy_wrappers_.size() - 1) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) {
gpr_log(GPR_INFO,
- "[rlslb %p] cache entry=%p %s: target %s in state "
- "TRANSIENT_FAILURE; skipping",
+ "[rlslb %p] cache entry=%p %s: target %s (%" PRIuPTR
+ " of %" PRIuPTR ") in state TRANSIENT_FAILURE; skipping",
lb_policy_.get(), this, lru_iterator_->ToString().c_str(),
- child_policy_wrapper->target().c_str());
+ child_policy_wrapper->target().c_str(), i,
+ child_policy_wrappers_.size());
}
continue;
}
- // Child policy not in TRANSIENT_FAILURE, so delegate.
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) {
- gpr_log(
- GPR_INFO,
- "[rlslb %p] cache entry=%p %s: target %s in state %s; "
- "delegating",
- lb_policy_.get(), this, lru_iterator_->ToString().c_str(),
- child_policy_wrapper->target().c_str(),
- ConnectivityStateName(child_policy_wrapper->connectivity_state()));
- }
- // Add header data.
- if (!header_data_.empty()) {
- char* copied_header_data =
- static_cast<char*>(args.call_state->Alloc(header_data_.length() + 1));
- strcpy(copied_header_data, header_data_.c_str());
- args.initial_metadata->Add(kRlsHeaderKey, copied_header_data);
- }
- return child_policy_wrapper->Pick(args);
+ break;
}
- // No child policy found.
+ // Child policy not in TRANSIENT_FAILURE or is the last target in
+ // the list, so delegate.
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) {
gpr_log(GPR_INFO,
- "[rlslb %p] cache entry=%p %s: no healthy target found; "
- "failing pick",
- lb_policy_.get(), this, lru_iterator_->ToString().c_str());
- }
- return PickResult::Fail(
- y_absl::UnavailableError("all RLS targets unreachable"));
+ "[rlslb %p] cache entry=%p %s: target %s (%" PRIuPTR " of %" PRIuPTR
+ ") in state %s; delegating",
+ lb_policy_.get(), this, lru_iterator_->ToString().c_str(),
+ child_policy_wrapper->target().c_str(), i,
+ child_policy_wrappers_.size(),
+ ConnectivityStateName(child_policy_wrapper->connectivity_state()));
+ }
+ // Add header data.
+ // Note that even if the target we're using is in TRANSIENT_FAILURE,
+ // the pick might still succeed (e.g., if the child is ring_hash), so
+ // we need to pass the right header info down in all cases.
+ if (!header_data_.empty()) {
+ char* copied_header_data =
+ static_cast<char*>(args.call_state->Alloc(header_data_.length() + 1));
+ strcpy(copied_header_data, header_data_.c_str());
+ args.initial_metadata->Add(kRlsHeaderKey, copied_header_data);
+ }
+ return child_policy_wrapper->Pick(args);
}
void RlsLb::Cache::Entry::ResetBackoff() {
@@ -1215,12 +1249,12 @@ void RlsLb::Cache::Entry::ResetBackoff() {
}
bool RlsLb::Cache::Entry::ShouldRemove() const {
- Timestamp now = ExecCtx::Get()->Now();
+ Timestamp now = Timestamp::Now();
return data_expiration_time_ < now && backoff_expiration_time_ < now;
}
bool RlsLb::Cache::Entry::CanEvict() const {
- Timestamp now = ExecCtx::Get()->Now();
+ Timestamp now = Timestamp::Now();
return min_expiration_time_ < now;
}
@@ -1246,7 +1280,7 @@ RlsLb::Cache::Entry::OnRlsResponseLocked(
backoff_state_ = MakeCacheEntryBackoff();
}
backoff_time_ = backoff_state_->NextAttemptTime();
- Timestamp now = ExecCtx::Get()->Now();
+ Timestamp now = Timestamp::Now();
backoff_expiration_time_ = now + (backoff_time_ - now) * 2;
backoff_timer_ = MakeOrphanable<BackoffTimer>(
Ref(DEBUG_LOCATION, "BackoffTimer"), backoff_time_);
@@ -1255,7 +1289,7 @@ RlsLb::Cache::Entry::OnRlsResponseLocked(
}
// Request succeeded, so store the result.
header_data_ = std::move(response.header_data);
- Timestamp now = ExecCtx::Get()->Now();
+ Timestamp now = Timestamp::Now();
data_expiration_time_ = now + lb_policy_->config_->max_age();
stale_time_ = now + lb_policy_->config_->stale_age();
status_ = y_absl::OkStatus();
@@ -1321,7 +1355,7 @@ RlsLb::Cache::Entry::OnRlsResponseLocked(
//
RlsLb::Cache::Cache(RlsLb* lb_policy) : lb_policy_(lb_policy) {
- Timestamp now = ExecCtx::Get()->Now();
+ Timestamp now = Timestamp::Now();
lb_policy_->Ref(DEBUG_LOCATION, "CacheCleanupTimer").release();
GRPC_CLOSURE_INIT(&timer_callback_, OnCleanupTimer, this, nullptr);
grpc_timer_init(&cleanup_timer_, now + kCacheCleanupTimerInterval,
@@ -1404,7 +1438,7 @@ void RlsLb::Cache::OnCleanupTimer(void* arg, grpc_error_handle error) {
++it;
}
}
- Timestamp now = ExecCtx::Get()->Now();
+ Timestamp now = Timestamp::Now();
lb_policy.release();
grpc_timer_init(&cache->cleanup_timer_,
now + kCacheCleanupTimerInterval,
@@ -1473,7 +1507,7 @@ void RlsLb::RlsChannel::StateWatcher::OnConnectivityStateChange(
//
bool RlsLb::RlsChannel::Throttle::ShouldThrottle() {
- Timestamp now = ExecCtx::Get()->Now();
+ Timestamp now = Timestamp::Now();
while (!requests_.empty() && now - requests_.front() > window_size_) {
requests_.pop_front();
}
@@ -1501,7 +1535,7 @@ bool RlsLb::RlsChannel::Throttle::ShouldThrottle() {
}
void RlsLb::RlsChannel::Throttle::RegisterResponse(bool success) {
- Timestamp now = ExecCtx::Get()->Now();
+ Timestamp now = Timestamp::Now();
requests_.push_back(now);
if (!success) failures_.push_back(now);
}
@@ -1517,41 +1551,32 @@ RlsLb::RlsChannel::RlsChannel(RefCountedPtr<RlsLb> lb_policy)
// Get channel creds from parent channel.
// TODO(roth): Once we eliminate insecure builds, get this via a
// method on the helper instead of digging through channel args.
- grpc_channel_credentials* creds =
- grpc_channel_credentials_find_in_args(lb_policy_->channel_args_);
+ auto* creds = lb_policy_->channel_args_.GetObject<grpc_channel_credentials>();
// Use the parent channel's authority.
TString authority(lb_policy_->channel_control_helper()->GetAuthority());
- y_absl::InlinedVector<grpc_arg, 3> args = {
- grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
- const_cast<char*>(authority.c_str())),
- grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
- };
+ ChannelArgs args = ChannelArgs()
+ .Set(GRPC_ARG_DEFAULT_AUTHORITY, authority)
+ .Set(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL, 1);
// Propagate fake security connector expected targets, if any.
// (This is ugly, but it seems better than propagating all channel args
// from the parent channel by default and then having a giant
// exclude list of args to strip out, like we do in grpclb.)
- const char* fake_security_expected_targets = grpc_channel_args_find_string(
- lb_policy_->channel_args_, GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS);
- if (fake_security_expected_targets != nullptr) {
- args.push_back(grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS),
- const_cast<char*>(fake_security_expected_targets)));
+ y_absl::optional<y_absl::string_view> fake_security_expected_targets =
+ lb_policy_->channel_args_.GetString(
+ GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS);
+ if (fake_security_expected_targets.has_value()) {
+ args = args.Set(GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS,
+ *fake_security_expected_targets);
}
// Add service config args if needed.
const TString& service_config =
lb_policy_->config_->rls_channel_service_config();
if (!service_config.empty()) {
- args.push_back(grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_SERVICE_CONFIG),
- const_cast<char*>(service_config.c_str())));
- args.push_back(grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION), 1));
+ args = args.Set(GRPC_ARG_SERVICE_CONFIG, service_config)
+ .Set(GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION, 1);
}
- grpc_channel_args rls_channel_args = {args.size(), args.data()};
channel_ = grpc_channel_create(lb_policy_->config_->lookup_service().c_str(),
- creds, &rls_channel_args);
+ creds, args.ToC().get());
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) {
gpr_log(GPR_INFO, "[rlslb %p] RlsChannel=%p: created channel %p for %s",
lb_policy_.get(), this, channel_,
@@ -1562,14 +1587,14 @@ RlsLb::RlsChannel::RlsChannel(RefCountedPtr<RlsLb> lb_policy)
channelz::ChannelNode* child_channelz_node =
grpc_channel_get_channelz_node(channel_);
channelz::ChannelNode* parent_channelz_node =
- grpc_channel_args_find_pointer<channelz::ChannelNode>(
- lb_policy_->channel_args_, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
+ lb_policy_->channel_args_.GetObject<channelz::ChannelNode>();
if (child_channelz_node != nullptr && parent_channelz_node != nullptr) {
parent_channelz_node->AddChildChannel(child_channelz_node->uuid());
parent_channelz_node_ = parent_channelz_node->Ref();
}
// Start connectivity watch.
- ClientChannel* client_channel = ClientChannel::GetFromChannel(channel_);
+ ClientChannel* client_channel =
+ ClientChannel::GetFromChannel(Channel::FromC(channel_));
GPR_ASSERT(client_channel != nullptr);
watcher_ = new StateWatcher(Ref(DEBUG_LOCATION, "StateWatcher"));
client_channel->AddConnectivityWatcher(
@@ -1594,7 +1619,8 @@ void RlsLb::RlsChannel::Orphan() {
}
// Stop connectivity watch.
if (watcher_ != nullptr) {
- ClientChannel* client_channel = ClientChannel::GetFromChannel(channel_);
+ ClientChannel* client_channel =
+ ClientChannel::GetFromChannel(Channel::FromC(channel_));
GPR_ASSERT(client_channel != nullptr);
client_channel->RemoveConnectivityWatcher(watcher_);
watcher_ = nullptr;
@@ -1689,7 +1715,7 @@ void RlsLb::RlsRequest::StartCallLocked() {
MutexLock lock(&lb_policy_->mu_);
if (lb_policy_->is_shutdown_) return;
}
- Timestamp now = ExecCtx::Get()->Now();
+ Timestamp now = Timestamp::Now();
deadline_ = now + lb_policy_->config_->lookup_service_timeout();
grpc_metadata_array_init(&recv_initial_metadata_);
grpc_metadata_array_init(&recv_trailing_metadata_);
@@ -1750,7 +1776,7 @@ void RlsLb::RlsRequest::OnRlsCallCompleteLocked(grpc_error_handle error) {
}
// Parse response.
ResponseInfo response;
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
grpc_status_code code;
TString message;
grpc_error_get_status(error, deadline_, &code, &message,
@@ -1790,7 +1816,9 @@ void RlsLb::RlsRequest::OnRlsCallCompleteLocked(grpc_error_handle error) {
// Now that we've released the lock, finish the update on any newly
// created child policies.
for (ChildPolicyWrapper* child : child_policies_to_finish_update) {
- child->MaybeFinishUpdate();
+ // TODO(roth): If the child reports an error with the update, we
+ // need to propagate that back to the resolver somehow.
+ (void)child->MaybeFinishUpdate();
}
}
@@ -1861,28 +1889,28 @@ RlsLb::ResponseInfo RlsLb::RlsRequest::ParseResponseProto() {
// RlsLb
//
-TString GetServerUri(const grpc_channel_args* args) {
- const char* server_uri_str =
- grpc_channel_args_find_string(args, GRPC_ARG_SERVER_URI);
- GPR_ASSERT(server_uri_str != nullptr);
- y_absl::StatusOr<URI> uri = URI::Parse(server_uri_str);
+TString GetServerUri(const ChannelArgs& args) {
+ auto server_uri_str = args.GetString(GRPC_ARG_SERVER_URI);
+ GPR_ASSERT(server_uri_str.has_value());
+ y_absl::StatusOr<URI> uri = URI::Parse(*server_uri_str);
GPR_ASSERT(uri.ok());
return TString(y_absl::StripPrefix(uri->path(), "/"));
}
RlsLb::RlsLb(Args args)
: LoadBalancingPolicy(std::move(args)),
- server_name_(GetServerUri(args.args)),
+ server_name_(GetServerUri(channel_args())),
cache_(this) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) {
gpr_log(GPR_INFO, "[rlslb %p] policy created", this);
}
}
-void RlsLb::UpdateLocked(UpdateArgs args) {
+y_absl::Status RlsLb::UpdateLocked(UpdateArgs args) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) {
gpr_log(GPR_INFO, "[rlslb %p] policy updated", this);
}
+ update_in_progress_ = true;
// Swap out config.
RefCountedPtr<RlsLbConfig> old_config = std::move(config_);
config_ = std::move(args.config);
@@ -1903,14 +1931,12 @@ void RlsLb::UpdateLocked(UpdateArgs args) {
old_addresses = addresses_;
}
// Swap out channel args.
- grpc_channel_args_destroy(channel_args_);
- channel_args_ = grpc_channel_args_copy(args.args);
+ channel_args_ = std::move(args.args);
// Determine whether we need to update all child policies.
bool update_child_policies =
old_config == nullptr ||
old_config->child_policy_config() != config_->child_policy_config() ||
- old_addresses != addresses_ ||
- grpc_channel_args_compare(args.args, channel_args_) != 0;
+ old_addresses != addresses_ || args.args != channel_args_;
// If default target changes, swap out child policy.
bool created_default_child = false;
if (old_config == nullptr ||
@@ -1952,7 +1978,7 @@ void RlsLb::UpdateLocked(UpdateArgs args) {
// Resize cache if needed.
if (old_config == nullptr ||
config_->cache_size_bytes() != old_config->cache_size_bytes()) {
- cache_.Resize(config_->cache_size_bytes());
+ cache_.Resize(static_cast<size_t>(config_->cache_size_bytes()));
}
// Start update of child policies if needed.
if (update_child_policies) {
@@ -1971,20 +1997,30 @@ void RlsLb::UpdateLocked(UpdateArgs args) {
}
}
// Now that we've released the lock, finish update of child policies.
+ std::vector<TString> errors;
if (update_child_policies) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) {
gpr_log(GPR_INFO, "[rlslb %p] finishing child policy updates", this);
}
for (auto& p : child_policy_map_) {
- p.second->MaybeFinishUpdate();
+ y_absl::Status status = p.second->MaybeFinishUpdate();
+ if (!status.ok()) {
+ errors.emplace_back(
+ y_absl::StrCat("target ", p.first, ": ", status.ToString()));
+ }
}
} else if (created_default_child) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) {
gpr_log(GPR_INFO, "[rlslb %p] finishing default child policy update",
this);
}
- default_child_policy_->MaybeFinishUpdate();
+ y_absl::Status status = default_child_policy_->MaybeFinishUpdate();
+ if (!status.ok()) {
+ errors.emplace_back(y_absl::StrCat("target ", config_->default_target(),
+ ": ", status.ToString()));
+ }
}
+ update_in_progress_ = false;
// In principle, we need to update the picker here only if the config
// fields used by the picker have changed. However, it seems fragile
// to check individual fields, since the picker logic could change in
@@ -1992,6 +2028,12 @@ void RlsLb::UpdateLocked(UpdateArgs args) {
// remember to update the code here. So for now, we just unconditionally
// update the picker here, even though it's probably redundant.
UpdatePickerLocked();
+ // Return status.
+ if (!errors.empty()) {
+ return y_absl::UnavailableError(y_absl::StrCat(
+ "errors from children: [", y_absl::StrJoin(errors, "; "), "]"));
+ }
+ return y_absl::OkStatus();
}
void RlsLb::ExitIdleLocked() {
@@ -2019,9 +2061,7 @@ void RlsLb::ShutdownLocked() {
MutexLock lock(&mu_);
is_shutdown_ = true;
config_.reset(DEBUG_LOCATION, "ShutdownLocked");
- if (channel_args_ != nullptr) {
- grpc_channel_args_destroy(channel_args_);
- }
+ channel_args_ = ChannelArgs();
cache_.Shutdown();
request_map_.clear();
rls_channel_.reset();
@@ -2052,6 +2092,12 @@ void RlsLb::UpdatePickerCallback(void* arg, grpc_error_handle /*error*/) {
}
void RlsLb::UpdatePickerLocked() {
+ // If we're in the process of propagating an update from our parent to
+ // our children, ignore any updates that come from the children. We
+ // will instead return a new picker once the update has been seen by
+ // all children. This avoids unnecessary picker churn while an update
+ // is being propagated to our children.
+ if (update_in_progress_) return;
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_rls_trace)) {
gpr_log(GPR_INFO, "[rlslb %p] updating picker", this);
}
@@ -2104,449 +2150,365 @@ void RlsLb::UpdatePickerLocked() {
// RlsLbFactory
//
-grpc_error_handle ParseJsonHeaders(size_t idx, const Json& json,
- TString* key,
- std::vector<TString>* headers) {
- if (json.type() != Json::Type::OBJECT) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "field:headers index:", idx, " error:type should be OBJECT"));
- }
- std::vector<grpc_error_handle> error_list;
- // requiredMatch must not be present.
- if (json.object_value().find("requiredMatch") != json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:requiredMatch error:must not be present"));
- }
- // Find key.
- if (ParseJsonObjectField(json.object_value(), "key", key, &error_list) &&
- key->empty()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:key error:must be non-empty"));
- }
- // Find headers.
- const Json::Array* headers_json = nullptr;
- ParseJsonObjectField(json.object_value(), "names", &headers_json,
- &error_list);
- if (headers_json != nullptr) {
- if (headers_json->empty()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:names error:list is empty"));
- } else {
- size_t name_idx = 0;
- for (const Json& name_json : *headers_json) {
- if (name_json.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "field:names index:", name_idx, " error:type should be STRING")));
- } else if (name_json.string_value().empty()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("field:names index:", name_idx,
- " error:header name must be non-empty")));
- } else {
- headers->push_back(name_json.string_value());
+struct GrpcKeyBuilder {
+ struct Name {
+ TString service;
+ TString method;
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
+ static const auto* loader = JsonObjectLoader<Name>()
+ .Field("service", &Name::service)
+ .OptionalField("method", &Name::method)
+ .Finish();
+ return loader;
+ }
+ };
+
+ struct NameMatcher {
+ TString key;
+ std::vector<TString> names;
+ y_absl::optional<bool> required_match;
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<NameMatcher>()
+ .Field("key", &NameMatcher::key)
+ .Field("names", &NameMatcher::names)
+ .OptionalField("requiredMatch", &NameMatcher::required_match)
+ .Finish();
+ return loader;
+ }
+
+ void JsonPostLoad(const Json&, const JsonArgs&, ValidationErrors* errors) {
+ // key must be non-empty.
+ {
+ ValidationErrors::ScopedField field(errors, ".key");
+ if (!errors->FieldHasErrors() && key.empty()) {
+ errors->AddError("must be non-empty");
}
- ++name_idx;
}
- }
- }
- return GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(
- y_absl::StrCat("field:headers index:", idx), &error_list);
-}
-
-TString ParseJsonMethodName(size_t idx, const Json& json,
- grpc_error_handle* error) {
- if (json.type() != Json::Type::OBJECT) {
- *error = GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "field:names index:", idx, " error:type should be OBJECT"));
- return "";
- }
- std::vector<grpc_error_handle> error_list;
- // Find service name.
- y_absl::string_view service_name;
- ParseJsonObjectField(json.object_value(), "service", &service_name,
- &error_list);
- // Find method name.
- y_absl::string_view method_name;
- ParseJsonObjectField(json.object_value(), "method", &method_name, &error_list,
- /*required=*/false);
- // Return error, if any.
- *error = GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(
- y_absl::StrCat("field:names index:", idx), &error_list);
- // Construct path.
- return y_absl::StrCat("/", service_name, "/", method_name);
-}
-
-grpc_error_handle ParseGrpcKeybuilder(
- size_t idx, const Json& json, RlsLbConfig::KeyBuilderMap* key_builder_map) {
- if (json.type() != Json::Type::OBJECT) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "field:grpc_keybuilders index:", idx, " error:type should be OBJECT"));
- }
- std::vector<grpc_error_handle> error_list;
- // Parse names.
- std::set<TString> names;
- const Json::Array* names_array = nullptr;
- if (ParseJsonObjectField(json.object_value(), "names", &names_array,
- &error_list)) {
- if (names_array->empty()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:names error:list is empty"));
- } else {
- size_t name_idx = 0;
- for (const Json& name_json : *names_array) {
- grpc_error_handle child_error = GRPC_ERROR_NONE;
- TString name =
- ParseJsonMethodName(name_idx++, name_json, &child_error);
- if (child_error != GRPC_ERROR_NONE) {
- error_list.push_back(child_error);
- } else {
- bool inserted = names.insert(name).second;
- if (!inserted) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("field:names error:duplicate entry for ", name)));
+ // List of header names must be non-empty.
+ {
+ ValidationErrors::ScopedField field(errors, ".names");
+ if (!errors->FieldHasErrors() && names.empty()) {
+ errors->AddError("must be non-empty");
+ }
+ // Individual header names must be non-empty.
+ for (size_t i = 0; i < names.size(); ++i) {
+ ValidationErrors::ScopedField field(errors,
+ y_absl::StrCat("[", i, "]"));
+ if (!errors->FieldHasErrors() && names[i].empty()) {
+ errors->AddError("must be non-empty");
}
}
}
- }
- }
- // Helper function to check for duplicate keys.
- std::set<TString> all_keys;
- auto duplicate_key_check_func = [&all_keys,
- &error_list](const TString& key) {
- auto it = all_keys.find(key);
- if (it != all_keys.end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("key \"", key, "\" listed multiple times")));
- } else {
- all_keys.insert(key);
+ // requiredMatch must not be present.
+ {
+ ValidationErrors::ScopedField field(errors, ".requiredMatch");
+ if (required_match.has_value()) {
+ errors->AddError("must not be present");
+ }
+ }
}
};
- // Parse headers.
- RlsLbConfig::KeyBuilder key_builder;
- const Json::Array* headers_array = nullptr;
- ParseJsonObjectField(json.object_value(), "headers", &headers_array,
- &error_list, /*required=*/false);
- if (headers_array != nullptr) {
- size_t header_idx = 0;
- for (const Json& header_json : *headers_array) {
- TString key;
- std::vector<TString> headers;
- grpc_error_handle child_error =
- ParseJsonHeaders(header_idx++, header_json, &key, &headers);
- if (child_error != GRPC_ERROR_NONE) {
- error_list.push_back(child_error);
- } else {
- duplicate_key_check_func(key);
- key_builder.header_keys.emplace(key, std::move(headers));
- }
+
+ struct ExtraKeys {
+ y_absl::optional<TString> host_key;
+ y_absl::optional<TString> service_key;
+ y_absl::optional<TString> method_key;
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<ExtraKeys>()
+ .OptionalField("host", &ExtraKeys::host_key)
+ .OptionalField("service", &ExtraKeys::service_key)
+ .OptionalField("method", &ExtraKeys::method_key)
+ .Finish();
+ return loader;
}
+
+ void JsonPostLoad(const Json&, const JsonArgs&, ValidationErrors* errors) {
+ auto check_field = [&](const TString& field_name,
+ y_absl::optional<TString>* struct_field) {
+ ValidationErrors::ScopedField field(errors,
+ y_absl::StrCat(".", field_name));
+ if (struct_field->has_value() && (*struct_field)->empty()) {
+ errors->AddError("must be non-empty if set");
+ }
+ };
+ check_field("host", &host_key);
+ check_field("service", &service_key);
+ check_field("method", &method_key);
+ }
+ };
+
+ std::vector<Name> names;
+ std::vector<NameMatcher> headers;
+ ExtraKeys extra_keys;
+ std::map<TString /*key*/, TString /*value*/> constant_keys;
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<GrpcKeyBuilder>()
+ .Field("names", &GrpcKeyBuilder::names)
+ .OptionalField("headers", &GrpcKeyBuilder::headers)
+ .OptionalField("extraKeys", &GrpcKeyBuilder::extra_keys)
+ .OptionalField("constantKeys", &GrpcKeyBuilder::constant_keys)
+ .Finish();
+ return loader;
}
- // Parse extraKeys.
- const Json::Object* extra_keys = nullptr;
- ParseJsonObjectField(json.object_value(), "extraKeys", &extra_keys,
- &error_list, /*required=*/false);
- if (extra_keys != nullptr) {
- std::vector<grpc_error_handle> extra_keys_errors;
- if (ParseJsonObjectField(*extra_keys, "host", &key_builder.host_key,
- &extra_keys_errors, /*required=*/false) &&
- key_builder.host_key.empty()) {
- extra_keys_errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:host error:must be non-empty"));
+
+ void JsonPostLoad(const Json&, const JsonArgs&, ValidationErrors* errors) {
+ // The names field must be non-empty.
+ {
+ ValidationErrors::ScopedField field(errors, ".names");
+ if (!errors->FieldHasErrors() && names.empty()) {
+ errors->AddError("must be non-empty");
+ }
}
- if (!key_builder.host_key.empty()) {
- duplicate_key_check_func(key_builder.host_key);
+ // Make sure no key in constantKeys is empty.
+ if (constant_keys.find("") != constant_keys.end()) {
+ ValidationErrors::ScopedField field(errors, ".constantKeys[\"\"]");
+ errors->AddError("key must be non-empty");
}
- if (ParseJsonObjectField(*extra_keys, "service", &key_builder.service_key,
- &extra_keys_errors, /*required=*/false) &&
- key_builder.service_key.empty()) {
- extra_keys_errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:service error:must be non-empty"));
+ // Check for duplicate keys.
+ std::set<y_absl::string_view> keys_seen;
+ auto duplicate_key_check_func = [&keys_seen, errors](
+ const TString& key,
+ const TString& field_name) {
+ if (key.empty()) return; // Already generated an error about this.
+ ValidationErrors::ScopedField field(errors, field_name);
+ auto it = keys_seen.find(key);
+ if (it != keys_seen.end()) {
+ errors->AddError(y_absl::StrCat("duplicate key \"", key, "\""));
+ } else {
+ keys_seen.insert(key);
+ }
+ };
+ for (size_t i = 0; i < headers.size(); ++i) {
+ NameMatcher& header = headers[i];
+ duplicate_key_check_func(header.key,
+ y_absl::StrCat(".headers[", i, "].key"));
}
- if (!key_builder.service_key.empty()) {
- duplicate_key_check_func(key_builder.service_key);
+ for (const auto& p : constant_keys) {
+ duplicate_key_check_func(
+ p.first, y_absl::StrCat(".constantKeys[\"", p.first, "\"]"));
}
- if (ParseJsonObjectField(*extra_keys, "method", &key_builder.method_key,
- &extra_keys_errors, /*required=*/false) &&
- key_builder.method_key.empty()) {
- extra_keys_errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:method error:must be non-empty"));
+ if (extra_keys.host_key.has_value()) {
+ duplicate_key_check_func(*extra_keys.host_key, ".extraKeys.host");
}
- if (!key_builder.method_key.empty()) {
- duplicate_key_check_func(key_builder.method_key);
+ if (extra_keys.service_key.has_value()) {
+ duplicate_key_check_func(*extra_keys.service_key, ".extraKeys.service");
}
- if (!extra_keys_errors.empty()) {
- error_list.push_back(
- GRPC_ERROR_CREATE_FROM_VECTOR("field:extraKeys", &extra_keys_errors));
+ if (extra_keys.method_key.has_value()) {
+ duplicate_key_check_func(*extra_keys.method_key, ".extraKeys.method");
}
}
- // Parse constantKeys.
- const Json::Object* constant_keys = nullptr;
- ParseJsonObjectField(json.object_value(), "constantKeys", &constant_keys,
- &error_list, /*required=*/false);
- if (constant_keys != nullptr) {
- std::vector<grpc_error_handle> constant_keys_errors;
- for (const auto& p : *constant_keys) {
- const TString& key = p.first;
- const Json& value = p.second;
- if (key.empty()) {
- constant_keys_errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "error:keys must be non-empty"));
+};
+
+const JsonLoaderInterface* RlsLbConfig::RouteLookupConfig::JsonLoader(
+ const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<RouteLookupConfig>()
+ // Note: Some fields require manual processing and are handled in
+ // JsonPostLoad() instead.
+ .Field("lookupService", &RouteLookupConfig::lookup_service)
+ .OptionalField("lookupServiceTimeout",
+ &RouteLookupConfig::lookup_service_timeout)
+ .OptionalField("maxAge", &RouteLookupConfig::max_age)
+ .OptionalField("staleAge", &RouteLookupConfig::stale_age)
+ .Field("cacheSizeBytes", &RouteLookupConfig::cache_size_bytes)
+ .OptionalField("defaultTarget", &RouteLookupConfig::default_target)
+ .Finish();
+ return loader;
+}
+
+void RlsLbConfig::RouteLookupConfig::JsonPostLoad(const Json& json,
+ const JsonArgs& args,
+ ValidationErrors* errors) {
+ // Parse grpcKeybuilders.
+ auto grpc_keybuilders = LoadJsonObjectField<std::vector<GrpcKeyBuilder>>(
+ json.object_value(), args, "grpcKeybuilders", errors);
+ if (grpc_keybuilders.has_value()) {
+ ValidationErrors::ScopedField field(errors, ".grpcKeybuilders");
+ for (size_t i = 0; i < grpc_keybuilders->size(); ++i) {
+ ValidationErrors::ScopedField field(errors, y_absl::StrCat("[", i, "]"));
+ auto& grpc_keybuilder = (*grpc_keybuilders)[i];
+ // Construct KeyBuilder.
+ RlsLbConfig::KeyBuilder key_builder;
+ for (const auto& header : grpc_keybuilder.headers) {
+ key_builder.header_keys.emplace(header.key, header.names);
+ }
+ if (grpc_keybuilder.extra_keys.host_key.has_value()) {
+ key_builder.host_key = std::move(*grpc_keybuilder.extra_keys.host_key);
+ }
+ if (grpc_keybuilder.extra_keys.service_key.has_value()) {
+ key_builder.service_key =
+ std::move(*grpc_keybuilder.extra_keys.service_key);
+ }
+ if (grpc_keybuilder.extra_keys.method_key.has_value()) {
+ key_builder.method_key =
+ std::move(*grpc_keybuilder.extra_keys.method_key);
+ }
+ key_builder.constant_keys = std::move(grpc_keybuilder.constant_keys);
+ // Add entries to map.
+ for (const auto& name : grpc_keybuilder.names) {
+ TString path = y_absl::StrCat("/", name.service, "/", name.method);
+ bool inserted = key_builder_map.emplace(path, key_builder).second;
+ if (!inserted) {
+ errors->AddError(y_absl::StrCat("duplicate entry for \"", path, "\""));
+ }
}
- duplicate_key_check_func(key);
- ExtractJsonString(value, key, &key_builder.constant_keys[key],
- &constant_keys_errors);
}
- if (!constant_keys_errors.empty()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_VECTOR(
- "field:constantKeys", &constant_keys_errors));
+ }
+ // Validate lookupService.
+ {
+ ValidationErrors::ScopedField field(errors, ".lookupService");
+ if (!errors->FieldHasErrors() &&
+ !CoreConfiguration::Get().resolver_registry().IsValidTarget(
+ lookup_service)) {
+ errors->AddError("must be valid gRPC target URI");
}
}
- // Insert key_builder into key_builder_map.
- for (const TString& name : names) {
- bool inserted = key_builder_map->emplace(name, key_builder).second;
- if (!inserted) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("field:names error:duplicate entry for ", name)));
+ // Clamp maxAge to the max allowed value.
+ if (max_age > kMaxMaxAge) max_age = kMaxMaxAge;
+ // If staleAge is set, then maxAge must also be set.
+ if (json.object_value().find("staleAge") != json.object_value().end() &&
+ json.object_value().find("maxAge") == json.object_value().end()) {
+ ValidationErrors::ScopedField field(errors, ".maxAge");
+ errors->AddError("must be set if staleAge is set");
+ }
+ // Ignore staleAge if greater than or equal to maxAge.
+ if (stale_age >= max_age) stale_age = max_age;
+ // Validate cacheSizeBytes.
+ {
+ ValidationErrors::ScopedField field(errors, ".cacheSizeBytes");
+ if (!errors->FieldHasErrors() && cache_size_bytes <= 0) {
+ errors->AddError("must be greater than 0");
}
}
- return GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(
- y_absl::StrCat("index:", idx), &error_list);
-}
-
-RlsLbConfig::KeyBuilderMap ParseGrpcKeybuilders(
- const Json::Array& key_builder_list, grpc_error_handle* error) {
- RlsLbConfig::KeyBuilderMap key_builder_map;
- if (key_builder_list.empty()) {
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:grpcKeybuilders error:list is empty");
- return key_builder_map;
+ // Clamp cacheSizeBytes to the max allowed value.
+ if (cache_size_bytes > kMaxCacheSizeBytes) {
+ cache_size_bytes = kMaxCacheSizeBytes;
}
- std::vector<grpc_error_handle> error_list;
- size_t idx = 0;
- for (const Json& key_builder : key_builder_list) {
- grpc_error_handle child_error =
- ParseGrpcKeybuilder(idx++, key_builder, &key_builder_map);
- if (child_error != GRPC_ERROR_NONE) error_list.push_back(child_error);
+ // Validate defaultTarget.
+ {
+ ValidationErrors::ScopedField field(errors, ".defaultTarget");
+ if (!errors->FieldHasErrors() &&
+ json.object_value().find("defaultTarget") !=
+ json.object_value().end() &&
+ default_target.empty()) {
+ errors->AddError("must be non-empty if set");
+ }
}
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("field:grpcKeybuilders", &error_list);
- return key_builder_map;
}
-RlsLbConfig::RouteLookupConfig ParseRouteLookupConfig(
- const Json::Object& json, grpc_error_handle* error) {
- std::vector<grpc_error_handle> error_list;
- RlsLbConfig::RouteLookupConfig route_lookup_config;
- // Parse grpcKeybuilders.
- const Json::Array* keybuilder_list = nullptr;
- ParseJsonObjectField(json, "grpcKeybuilders", &keybuilder_list, &error_list);
- if (keybuilder_list != nullptr) {
+const JsonLoaderInterface* RlsLbConfig::JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<RlsLbConfig>()
+ // Note: Some fields require manual processing and are handled in
+ // JsonPostLoad() instead.
+ .Field("routeLookupConfig", &RlsLbConfig::route_lookup_config_)
+ .Field("childPolicyConfigTargetFieldName",
+ &RlsLbConfig::child_policy_config_target_field_name_)
+ .Finish();
+ return loader;
+}
+
+void RlsLbConfig::JsonPostLoad(const Json& json, const JsonArgs&,
+ ValidationErrors* errors) {
+ // Parse routeLookupChannelServiceConfig.
+ auto it = json.object_value().find("routeLookupChannelServiceConfig");
+ if (it != json.object_value().end()) {
+ ValidationErrors::ScopedField field(errors,
+ ".routeLookupChannelServiceConfig");
grpc_error_handle child_error = GRPC_ERROR_NONE;
- route_lookup_config.key_builder_map =
- ParseGrpcKeybuilders(*keybuilder_list, &child_error);
- if (child_error != GRPC_ERROR_NONE) error_list.push_back(child_error);
- }
- // Parse lookupService.
- if (ParseJsonObjectField(json, "lookupService",
- &route_lookup_config.lookup_service, &error_list)) {
- if (!CoreConfiguration::Get().resolver_registry().IsValidTarget(
- route_lookup_config.lookup_service)) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:lookupService error:must be valid gRPC target URI"));
+ rls_channel_service_config_ = it->second.Dump();
+ auto service_config = MakeRefCounted<ServiceConfigImpl>(
+ ChannelArgs(), rls_channel_service_config_, it->second, &child_error);
+ if (!GRPC_ERROR_IS_NONE(child_error)) {
+ errors->AddError(grpc_error_std_string(child_error));
+ GRPC_ERROR_UNREF(child_error);
}
}
- // Parse lookupServiceTimeout.
- route_lookup_config.lookup_service_timeout = kDefaultLookupServiceTimeout;
- ParseJsonObjectFieldAsDuration(json, "lookupServiceTimeout",
- &route_lookup_config.lookup_service_timeout,
- &error_list, /*required=*/false);
- // Parse maxAge.
- route_lookup_config.max_age = kMaxMaxAge;
- bool max_age_set = ParseJsonObjectFieldAsDuration(
- json, "maxAge", &route_lookup_config.max_age, &error_list,
- /*required=*/false);
- // Clamp maxAge to the max allowed value.
- if (route_lookup_config.max_age > kMaxMaxAge) {
- route_lookup_config.max_age = kMaxMaxAge;
- }
- // Parse staleAge.
- route_lookup_config.stale_age = kMaxMaxAge;
- bool stale_age_set = ParseJsonObjectFieldAsDuration(
- json, "staleAge", &route_lookup_config.stale_age, &error_list,
- /*required=*/false);
- // If staleAge is set, then maxAge must also be set.
- if (stale_age_set && !max_age_set) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:maxAge error:must be set if staleAge is set"));
- }
- // Ignore staleAge if greater than or equal to maxAge.
- if (route_lookup_config.stale_age >= route_lookup_config.max_age) {
- route_lookup_config.stale_age = route_lookup_config.max_age;
- }
- // Parse cacheSizeBytes.
- ParseJsonObjectField(json, "cacheSizeBytes",
- &route_lookup_config.cache_size_bytes, &error_list);
- if (route_lookup_config.cache_size_bytes <= 0) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:cacheSizeBytes error:must be greater than 0"));
- }
- // Clamp cacheSizeBytes to the max allowed value.
- if (route_lookup_config.cache_size_bytes > kMaxCacheSizeBytes) {
- route_lookup_config.cache_size_bytes = kMaxCacheSizeBytes;
- }
- // Parse defaultTarget.
- if (ParseJsonObjectField(json, "defaultTarget",
- &route_lookup_config.default_target, &error_list,
- /*required=*/false)) {
- if (route_lookup_config.default_target.empty()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:defaultTarget error:must be non-empty if set"));
+ // Validate childPolicyConfigTargetFieldName.
+ {
+ ValidationErrors::ScopedField field(errors,
+ ".childPolicyConfigTargetFieldName");
+ if (!errors->FieldHasErrors() &&
+ child_policy_config_target_field_name_.empty()) {
+ errors->AddError("must be non-empty");
}
}
- *error =
- GRPC_ERROR_CREATE_FROM_VECTOR("field:routeLookupConfig", &error_list);
- return route_lookup_config;
-}
-
-grpc_error_handle ValidateChildPolicyList(
- const Json& child_policy_list,
- const TString& child_policy_config_target_field_name,
- const TString& default_target, Json* child_policy_config,
- RefCountedPtr<LoadBalancingPolicy::Config>*
- default_child_policy_parsed_config) {
- // Add target to each entry in the config proto.
- *child_policy_config = child_policy_list;
- TString target =
- default_target.empty() ? kFakeTargetFieldValue : default_target;
- grpc_error_handle error = InsertOrUpdateChildPolicyField(
- child_policy_config_target_field_name, target, child_policy_config);
- if (error != GRPC_ERROR_NONE) return error;
- // Parse the config.
- RefCountedPtr<LoadBalancingPolicy::Config> parsed_config =
- LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
- *child_policy_config, &error);
- if (error != GRPC_ERROR_NONE) return error;
- // Find the chosen config and return it in JSON form.
- // We remove all non-selected configs, and in the selected config, we leave
- // the target field in place, set to the default value. This slightly
- // optimizes what we need to do later when we update a child policy for a
- // given target.
- if (parsed_config != nullptr) {
- for (Json& config : *(child_policy_config->mutable_array())) {
- if (config.object_value().begin()->first == parsed_config->name()) {
- Json save_config = std::move(config);
- child_policy_config->mutable_array()->clear();
- child_policy_config->mutable_array()->push_back(std::move(save_config));
- break;
+ // Parse childPolicy.
+ {
+ ValidationErrors::ScopedField field(errors, ".childPolicy");
+ auto it = json.object_value().find("childPolicy");
+ if (it == json.object_value().end()) {
+ errors->AddError("field not present");
+ } else {
+ // Add target to all child policy configs in the list.
+ child_policy_config_ = it->second;
+ TString target = route_lookup_config_.default_target.empty()
+ ? kFakeTargetFieldValue
+ : route_lookup_config_.default_target;
+ if (InsertOrUpdateChildPolicyField(child_policy_config_target_field_name_,
+ target, &child_policy_config_,
+ errors)) {
+ // Parse the config.
+ auto parsed_config =
+ CoreConfiguration::Get()
+ .lb_policy_registry()
+ .ParseLoadBalancingConfig(child_policy_config_);
+ if (!parsed_config.ok()) {
+ errors->AddError(parsed_config.status().message());
+ } else {
+ // Find the chosen config and return it in JSON form.
+ // We remove all non-selected configs, and in the selected config,
+ // we leave the target field in place, set to the default value.
+ // This slightly optimizes what we need to do later when we update
+ // a child policy for a given target.
+ for (Json& config : *(child_policy_config_.mutable_array())) {
+ if (config.object_value().begin()->first ==
+ (*parsed_config)->name()) {
+ Json save_config = std::move(config);
+ child_policy_config_.mutable_array()->clear();
+ child_policy_config_.mutable_array()->push_back(
+ std::move(save_config));
+ break;
+ }
+ }
+ // If default target is set, set the default child config.
+ if (!route_lookup_config_.default_target.empty()) {
+ default_child_policy_parsed_config_ = std::move(*parsed_config);
+ }
+ }
}
}
}
- // If default target is set, return the parsed config.
- if (!default_target.empty()) {
- *default_child_policy_parsed_config = std::move(parsed_config);
- }
- return GRPC_ERROR_NONE;
}
class RlsLbFactory : public LoadBalancingPolicyFactory {
public:
- const char* name() const override { return kRls; }
+ y_absl::string_view name() const override { return kRls; }
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
LoadBalancingPolicy::Args args) const override {
return MakeOrphanable<RlsLb>(std::move(args));
}
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
- const Json& config, grpc_error_handle* error) const override {
- std::vector<grpc_error_handle> error_list;
- // Parse routeLookupConfig.
- RlsLbConfig::RouteLookupConfig route_lookup_config;
- const Json::Object* route_lookup_config_json = nullptr;
- if (ParseJsonObjectField(config.object_value(), "routeLookupConfig",
- &route_lookup_config_json, &error_list)) {
- grpc_error_handle child_error = GRPC_ERROR_NONE;
- route_lookup_config =
- ParseRouteLookupConfig(*route_lookup_config_json, &child_error);
- if (child_error != GRPC_ERROR_NONE) error_list.push_back(child_error);
- }
- // Parse routeLookupChannelServiceConfig.
- TString rls_channel_service_config;
- const Json::Object* rls_channel_service_config_json_obj = nullptr;
- if (ParseJsonObjectField(config.object_value(),
- "routeLookupChannelServiceConfig",
- &rls_channel_service_config_json_obj, &error_list,
- /*required=*/false)) {
- grpc_error_handle child_error = GRPC_ERROR_NONE;
- Json rls_channel_service_config_json(
- *rls_channel_service_config_json_obj);
- rls_channel_service_config = rls_channel_service_config_json.Dump();
- auto service_config = MakeRefCounted<ServiceConfigImpl>(
- /*args=*/nullptr, rls_channel_service_config,
- std::move(rls_channel_service_config_json), &child_error);
- if (child_error != GRPC_ERROR_NONE) {
- error_list.push_back(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
- "field:routeLookupChannelServiceConfig", &child_error, 1));
- GRPC_ERROR_UNREF(child_error);
- }
- }
- // Parse childPolicyConfigTargetFieldName.
- TString child_policy_config_target_field_name;
- if (ParseJsonObjectField(
- config.object_value(), "childPolicyConfigTargetFieldName",
- &child_policy_config_target_field_name, &error_list)) {
- if (child_policy_config_target_field_name.empty()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:childPolicyConfigTargetFieldName error:must be non-empty"));
- }
- }
- // Parse childPolicy.
- Json child_policy_config;
- RefCountedPtr<LoadBalancingPolicy::Config>
- default_child_policy_parsed_config;
- auto it = config.object_value().find("childPolicy");
- if (it == config.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:childPolicy error:does not exist."));
- } else if (it->second.type() != Json::Type::ARRAY) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:childPolicy error:type should be ARRAY"));
- } else {
- grpc_error_handle child_error = ValidateChildPolicyList(
- it->second, child_policy_config_target_field_name,
- route_lookup_config.default_target, &child_policy_config,
- &default_child_policy_parsed_config);
- if (child_error != GRPC_ERROR_NONE) {
- error_list.push_back(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
- "field:childPolicy", &child_error, 1));
- GRPC_ERROR_UNREF(child_error);
- }
- }
- // Return result.
- *error = GRPC_ERROR_CREATE_FROM_VECTOR(
- "errors parsing RLS LB policy config", &error_list);
- return MakeRefCounted<RlsLbConfig>(
- std::move(route_lookup_config), std::move(rls_channel_service_config),
- std::move(child_policy_config),
- std::move(child_policy_config_target_field_name),
- std::move(default_child_policy_parsed_config));
+ y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+ ParseLoadBalancingConfig(const Json& json) const override {
+ return LoadRefCountedFromJson<RlsLbConfig>(
+ json, JsonArgs(), "errors validing RLS LB policy config");
}
};
-bool RlsEnabled() {
- char* value = gpr_getenv("GRPC_EXPERIMENTAL_ENABLE_RLS_LB_POLICY");
- bool parsed_value;
- bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
- gpr_free(value);
- return parse_succeeded && parsed_value;
-}
-
} // namespace
-void RlsLbPluginInit() {
- if (!RlsEnabled()) return;
- LoadBalancingPolicyRegistry::Builder::RegisterLoadBalancingPolicyFactory(
+void RegisterRlsLbPolicy(CoreConfiguration::Builder* builder) {
+ builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
y_absl::make_unique<RlsLbFactory>());
}
-void RlsLbPluginShutdown() {}
-
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc
index a4aae3e85e..f69bceb2e3 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc
@@ -16,21 +16,40 @@
#include <grpc/support/port_platform.h>
+#include <inttypes.h>
#include <stdlib.h>
-#include <string.h>
-#include <grpc/support/alloc.h>
+#include <algorithm>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/support/log.h>
#include "src/core/ext/filters/client_channel/lb_policy/subchannel_list.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
-#include "src/core/ext/filters/client_channel/subchannel.h"
-#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+#include "src/core/lib/load_balancing/lb_policy_factory.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
+#include "src/core/lib/resolver/server_address.h"
#include "src/core/lib/transport/connectivity_state.h"
-#include "src/core/lib/transport/error_utils.h"
namespace grpc_core {
@@ -42,15 +61,15 @@ namespace {
// round_robin LB policy
//
-constexpr char kRoundRobin[] = "round_robin";
+constexpr y_absl::string_view kRoundRobin = "round_robin";
class RoundRobin : public LoadBalancingPolicy {
public:
explicit RoundRobin(Args args);
- const char* name() const override { return kRoundRobin; }
+ y_absl::string_view name() const override { return kRoundRobin; }
- void UpdateLocked(UpdateArgs args) override;
+ y_absl::Status UpdateLocked(UpdateArgs args) override;
void ResetBackoffLocked() override;
private:
@@ -74,25 +93,27 @@ class RoundRobin : public LoadBalancingPolicy {
RefCountedPtr<SubchannelInterface> subchannel)
: SubchannelData(subchannel_list, address, std::move(subchannel)) {}
- grpc_connectivity_state connectivity_state() const {
- return last_connectivity_state_;
+ y_absl::optional<grpc_connectivity_state> connectivity_state() const {
+ return logical_connectivity_state_;
}
- bool seen_failure_since_ready() const { return seen_failure_since_ready_; }
-
- // Performs connectivity state updates that need to be done both when we
- // first start watching and when a watcher notification is received.
- void UpdateConnectivityStateLocked(
- grpc_connectivity_state connectivity_state);
-
private:
// Performs connectivity state updates that need to be done only
// after we have started watching.
void ProcessConnectivityChangeLocked(
- grpc_connectivity_state connectivity_state) override;
+ y_absl::optional<grpc_connectivity_state> old_state,
+ grpc_connectivity_state new_state) override;
+
+ // Updates the logical connectivity state.
+ void UpdateLogicalConnectivityStateLocked(
+ grpc_connectivity_state connectivity_state);
- grpc_connectivity_state last_connectivity_state_ = GRPC_CHANNEL_IDLE;
- bool seen_failure_since_ready_ = false;
+ // The logical connectivity state of the subchannel.
+ // Note that the logical connectivity state may differ from the
+ // actual reported state in some cases (e.g., after we see
+ // TRANSIENT_FAILURE, we ignore any subsequent state changes until
+ // we see READY).
+ y_absl::optional<grpc_connectivity_state> logical_connectivity_state_;
};
// A list of subchannels.
@@ -100,11 +121,14 @@ class RoundRobin : public LoadBalancingPolicy {
: public SubchannelList<RoundRobinSubchannelList,
RoundRobinSubchannelData> {
public:
- RoundRobinSubchannelList(RoundRobin* policy, TraceFlag* tracer,
- ServerAddressList addresses,
- const grpc_channel_args& args)
- : SubchannelList(policy, tracer, std::move(addresses),
- policy->channel_control_helper(), args) {
+ RoundRobinSubchannelList(RoundRobin* policy, ServerAddressList addresses,
+ const ChannelArgs& args)
+ : SubchannelList(policy,
+ (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)
+ ? "RoundRobinSubchannelList"
+ : nullptr),
+ std::move(addresses), policy->channel_control_helper(),
+ args) {
// Need to maintain a ref to the LB policy as long as we maintain
// any references to subchannels, since the subchannels'
// pollset_sets will include the LB policy's pollset_set.
@@ -116,27 +140,31 @@ class RoundRobin : public LoadBalancingPolicy {
p->Unref(DEBUG_LOCATION, "subchannel_list");
}
- // Starts watching the subchannels in this list.
- void StartWatchingLocked();
-
// Updates the counters of subchannels in each state when a
// subchannel transitions from old_state to new_state.
- void UpdateStateCountersLocked(grpc_connectivity_state old_state,
- grpc_connectivity_state new_state);
+ void UpdateStateCountersLocked(
+ y_absl::optional<grpc_connectivity_state> old_state,
+ grpc_connectivity_state new_state);
- // If this subchannel list is the RR policy's current subchannel
- // list, updates the RR policy's connectivity state based on the
- // subchannel list's state counters.
- void MaybeUpdateRoundRobinConnectivityStateLocked();
-
- // Updates the RR policy's overall state based on the counters of
- // subchannels in each state.
- void UpdateRoundRobinStateFromSubchannelStateCountsLocked();
+ // Ensures that the right subchannel list is used and then updates
+ // the RR policy's connectivity state based on the subchannel list's
+ // state counters.
+ void MaybeUpdateRoundRobinConnectivityStateLocked(
+ y_absl::Status status_for_tf);
private:
+ TString CountersString() const {
+ return y_absl::StrCat("num_subchannels=", num_subchannels(),
+ " num_ready=", num_ready_,
+ " num_connecting=", num_connecting_,
+ " num_transient_failure=", num_transient_failure_);
+ }
+
size_t num_ready_ = 0;
size_t num_connecting_ = 0;
size_t num_transient_failure_ = 0;
+
+ y_absl::Status last_failure_;
};
class Picker : public SubchannelPicker {
@@ -150,18 +178,18 @@ class RoundRobin : public LoadBalancingPolicy {
RoundRobin* parent_;
size_t last_picked_index_;
- y_absl::InlinedVector<RefCountedPtr<SubchannelInterface>, 10> subchannels_;
+ std::vector<RefCountedPtr<SubchannelInterface>> subchannels_;
};
void ShutdownLocked() override;
// List of subchannels.
- OrphanablePtr<RoundRobinSubchannelList> subchannel_list_;
+ RefCountedPtr<RoundRobinSubchannelList> subchannel_list_;
// Latest pending subchannel list.
// When we get an updated address list, we create a new subchannel list
// for it here, and we wait to swap it into subchannel_list_ until the new
// list becomes READY.
- OrphanablePtr<RoundRobinSubchannelList> latest_pending_subchannel_list_;
+ RefCountedPtr<RoundRobinSubchannelList> latest_pending_subchannel_list_;
bool shutdown_ = false;
};
@@ -175,7 +203,8 @@ RoundRobin::Picker::Picker(RoundRobin* parent,
: parent_(parent) {
for (size_t i = 0; i < subchannel_list->num_subchannels(); ++i) {
RoundRobinSubchannelData* sd = subchannel_list->subchannel(i);
- if (sd->connectivity_state() == GRPC_CHANNEL_READY) {
+ if (sd->connectivity_state().value_or(GRPC_CHANNEL_IDLE) ==
+ GRPC_CHANNEL_READY) {
subchannels_.push_back(sd->subchannel()->Ref());
}
}
@@ -238,43 +267,82 @@ void RoundRobin::ResetBackoffLocked() {
}
}
-void RoundRobin::RoundRobinSubchannelList::StartWatchingLocked() {
- if (num_subchannels() == 0) return;
- // Check current state of each subchannel synchronously, since any
- // subchannel already used by some other channel may have a non-IDLE
- // state.
- for (size_t i = 0; i < num_subchannels(); ++i) {
- grpc_connectivity_state state =
- subchannel(i)->CheckConnectivityStateLocked();
- if (state != GRPC_CHANNEL_IDLE) {
- subchannel(i)->UpdateConnectivityStateLocked(state);
+y_absl::Status RoundRobin::UpdateLocked(UpdateArgs args) {
+ ServerAddressList addresses;
+ if (args.addresses.ok()) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
+ gpr_log(GPR_INFO, "[RR %p] received update with %" PRIuPTR " addresses",
+ this, args.addresses->size());
+ }
+ addresses = std::move(*args.addresses);
+ } else {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
+ gpr_log(GPR_INFO, "[RR %p] received update with address error: %s", this,
+ args.addresses.status().ToString().c_str());
}
+ // If we already have a subchannel list, then keep using the existing
+ // list, but still report back that the update was not accepted.
+ if (subchannel_list_ != nullptr) return args.addresses.status();
+ }
+ // Create new subchannel list, replacing the previous pending list, if any.
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace) &&
+ latest_pending_subchannel_list_ != nullptr) {
+ gpr_log(GPR_INFO, "[RR %p] replacing previous pending subchannel list %p",
+ this, latest_pending_subchannel_list_.get());
}
- // Start connectivity watch for each subchannel.
- for (size_t i = 0; i < num_subchannels(); i++) {
- if (subchannel(i)->subchannel() != nullptr) {
- subchannel(i)->StartConnectivityWatchLocked();
- subchannel(i)->subchannel()->AttemptToConnect();
+ latest_pending_subchannel_list_ = MakeRefCounted<RoundRobinSubchannelList>(
+ this, std::move(addresses), args.args);
+ latest_pending_subchannel_list_->StartWatchingLocked();
+ // If the new list is empty, immediately promote it to
+ // subchannel_list_ and report TRANSIENT_FAILURE.
+ if (latest_pending_subchannel_list_->num_subchannels() == 0) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace) &&
+ subchannel_list_ != nullptr) {
+ gpr_log(GPR_INFO, "[RR %p] replacing previous subchannel list %p", this,
+ subchannel_list_.get());
}
+ subchannel_list_ = std::move(latest_pending_subchannel_list_);
+ y_absl::Status status =
+ args.addresses.ok() ? y_absl::UnavailableError(y_absl::StrCat(
+ "empty address list: ", args.resolution_note))
+ : args.addresses.status();
+ channel_control_helper()->UpdateState(
+ GRPC_CHANNEL_TRANSIENT_FAILURE, status,
+ y_absl::make_unique<TransientFailurePicker>(status));
+ return status;
+ }
+ // Otherwise, if this is the initial update, immediately promote it to
+ // subchannel_list_ and report CONNECTING.
+ if (subchannel_list_.get() == nullptr) {
+ subchannel_list_ = std::move(latest_pending_subchannel_list_);
+ channel_control_helper()->UpdateState(
+ GRPC_CHANNEL_CONNECTING, y_absl::Status(),
+ y_absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
}
- // Now set the LB policy's state based on the subchannels' states.
- UpdateRoundRobinStateFromSubchannelStateCountsLocked();
+ return y_absl::OkStatus();
}
+//
+// RoundRobinSubchannelList
+//
+
void RoundRobin::RoundRobinSubchannelList::UpdateStateCountersLocked(
- grpc_connectivity_state old_state, grpc_connectivity_state new_state) {
- GPR_ASSERT(old_state != GRPC_CHANNEL_SHUTDOWN);
- GPR_ASSERT(new_state != GRPC_CHANNEL_SHUTDOWN);
- if (old_state == GRPC_CHANNEL_READY) {
- GPR_ASSERT(num_ready_ > 0);
- --num_ready_;
- } else if (old_state == GRPC_CHANNEL_CONNECTING) {
- GPR_ASSERT(num_connecting_ > 0);
- --num_connecting_;
- } else if (old_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
- GPR_ASSERT(num_transient_failure_ > 0);
- --num_transient_failure_;
+ y_absl::optional<grpc_connectivity_state> old_state,
+ grpc_connectivity_state new_state) {
+ if (old_state.has_value()) {
+ GPR_ASSERT(*old_state != GRPC_CHANNEL_SHUTDOWN);
+ if (*old_state == GRPC_CHANNEL_READY) {
+ GPR_ASSERT(num_ready_ > 0);
+ --num_ready_;
+ } else if (*old_state == GRPC_CHANNEL_CONNECTING) {
+ GPR_ASSERT(num_connecting_ > 0);
+ --num_connecting_;
+ } else if (*old_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
+ GPR_ASSERT(num_transient_failure_ > 0);
+ --num_transient_failure_;
+ }
}
+ GPR_ASSERT(new_state != GRPC_CHANNEL_SHUTDOWN);
if (new_state == GRPC_CHANNEL_READY) {
++num_ready_;
} else if (new_state == GRPC_CHANNEL_CONNECTING) {
@@ -284,80 +352,107 @@ void RoundRobin::RoundRobinSubchannelList::UpdateStateCountersLocked(
}
}
-// Sets the RR policy's connectivity state and generates a new picker based
-// on the current subchannel list.
void RoundRobin::RoundRobinSubchannelList::
- MaybeUpdateRoundRobinConnectivityStateLocked() {
+ MaybeUpdateRoundRobinConnectivityStateLocked(y_absl::Status status_for_tf) {
RoundRobin* p = static_cast<RoundRobin*>(policy());
+ // If this is latest_pending_subchannel_list_, then swap it into
+ // subchannel_list_ in the following cases:
+ // - subchannel_list_ has no READY subchannels.
+ // - This list has at least one READY subchannel.
+ // - All of the subchannels in this list are in TRANSIENT_FAILURE.
+ // (This may cause the channel to go from READY to TRANSIENT_FAILURE,
+ // but we're doing what the control plane told us to do.)
+ if (p->latest_pending_subchannel_list_.get() == this &&
+ (p->subchannel_list_->num_ready_ == 0 || num_ready_ > 0 ||
+ num_transient_failure_ == num_subchannels())) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
+ const TString old_counters_string =
+ p->subchannel_list_ != nullptr ? p->subchannel_list_->CountersString()
+ : "";
+ gpr_log(
+ GPR_INFO,
+ "[RR %p] swapping out subchannel list %p (%s) in favor of %p (%s)", p,
+ p->subchannel_list_.get(), old_counters_string.c_str(), this,
+ CountersString().c_str());
+ }
+ p->subchannel_list_ = std::move(p->latest_pending_subchannel_list_);
+ }
// Only set connectivity state if this is the current subchannel list.
if (p->subchannel_list_.get() != this) return;
- // In priority order. The first rule to match terminates the search (ie, if we
- // are on rule n, all previous rules were unfulfilled).
- //
- // 1) RULE: ANY subchannel is READY => policy is READY.
- // CHECK: subchannel_list->num_ready > 0.
- //
- // 2) RULE: ANY subchannel is CONNECTING => policy is CONNECTING.
- // CHECK: sd->curr_connectivity_state == CONNECTING.
- //
- // 3) RULE: ALL subchannels are TRANSIENT_FAILURE => policy is
- // TRANSIENT_FAILURE.
- // CHECK: subchannel_list->num_transient_failures ==
- // subchannel_list->num_subchannels.
+ // First matching rule wins:
+ // 1) ANY subchannel is READY => policy is READY.
+ // 2) ANY subchannel is CONNECTING => policy is CONNECTING.
+ // 3) ALL subchannels are TRANSIENT_FAILURE => policy is TRANSIENT_FAILURE.
if (num_ready_ > 0) {
- // 1) READY
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
+ gpr_log(GPR_INFO, "[RR %p] reporting READY with subchannel list %p", p,
+ this);
+ }
p->channel_control_helper()->UpdateState(
GRPC_CHANNEL_READY, y_absl::Status(), y_absl::make_unique<Picker>(p, this));
} else if (num_connecting_ > 0) {
- // 2) CONNECTING
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
+ gpr_log(GPR_INFO, "[RR %p] reporting CONNECTING with subchannel list %p",
+ p, this);
+ }
p->channel_control_helper()->UpdateState(
GRPC_CHANNEL_CONNECTING, y_absl::Status(),
y_absl::make_unique<QueuePicker>(p->Ref(DEBUG_LOCATION, "QueuePicker")));
} else if (num_transient_failure_ == num_subchannels()) {
- // 3) TRANSIENT_FAILURE
- y_absl::Status status =
- y_absl::UnavailableError("connections to all backends failing");
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
+ gpr_log(GPR_INFO,
+ "[RR %p] reporting TRANSIENT_FAILURE with subchannel list %p: %s",
+ p, this, status_for_tf.ToString().c_str());
+ }
+ if (!status_for_tf.ok()) {
+ last_failure_ = y_absl::UnavailableError(
+ y_absl::StrCat("connections to all backends failing; last error: ",
+ status_for_tf.ToString()));
+ }
p->channel_control_helper()->UpdateState(
- GRPC_CHANNEL_TRANSIENT_FAILURE, status,
- y_absl::make_unique<TransientFailurePicker>(status));
+ GRPC_CHANNEL_TRANSIENT_FAILURE, last_failure_,
+ y_absl::make_unique<TransientFailurePicker>(last_failure_));
}
}
-void RoundRobin::RoundRobinSubchannelList::
- UpdateRoundRobinStateFromSubchannelStateCountsLocked() {
- RoundRobin* p = static_cast<RoundRobin*>(policy());
- // If we have at least one READY subchannel, then swap to the new list.
- // Also, if all of the subchannels are in TRANSIENT_FAILURE, then we know
- // we've tried all of them and failed, so we go ahead and swap over
- // anyway; this may cause the channel to go from READY to TRANSIENT_FAILURE,
- // but we are doing what the control plane told us to do.
- if (num_ready_ > 0 || num_transient_failure_ == num_subchannels()) {
- if (p->subchannel_list_.get() != this) {
- // Promote this list to p->subchannel_list_.
- // This list must be p->latest_pending_subchannel_list_, because
- // any previous update would have been shut down already and
- // therefore we would not be receiving a notification for them.
- GPR_ASSERT(p->latest_pending_subchannel_list_.get() == this);
- GPR_ASSERT(!shutting_down());
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
- const size_t old_num_subchannels =
- p->subchannel_list_ != nullptr
- ? p->subchannel_list_->num_subchannels()
- : 0;
- gpr_log(GPR_INFO,
- "[RR %p] phasing out subchannel list %p (size %" PRIuPTR
- ") in favor of %p (size %" PRIuPTR ")",
- p, p->subchannel_list_.get(), old_num_subchannels, this,
- num_subchannels());
- }
- p->subchannel_list_ = std::move(p->latest_pending_subchannel_list_);
+//
+// RoundRobinSubchannelData
+//
+
+void RoundRobin::RoundRobinSubchannelData::ProcessConnectivityChangeLocked(
+ y_absl::optional<grpc_connectivity_state> old_state,
+ grpc_connectivity_state new_state) {
+ RoundRobin* p = static_cast<RoundRobin*>(subchannel_list()->policy());
+ GPR_ASSERT(subchannel() != nullptr);
+ // If this is not the initial state notification and the new state is
+ // TRANSIENT_FAILURE or IDLE, re-resolve.
+ // Note that we don't want to do this on the initial state notification,
+ // because that would result in an endless loop of re-resolution.
+ if (old_state.has_value() && (new_state == GRPC_CHANNEL_TRANSIENT_FAILURE ||
+ new_state == GRPC_CHANNEL_IDLE)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
+ gpr_log(GPR_INFO,
+ "[RR %p] Subchannel %p reported %s; requesting re-resolution", p,
+ subchannel(), ConnectivityStateName(new_state));
+ }
+ p->channel_control_helper()->RequestReresolution();
+ }
+ if (new_state == GRPC_CHANNEL_IDLE) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
+ gpr_log(GPR_INFO,
+ "[RR %p] Subchannel %p reported IDLE; requesting connection", p,
+ subchannel());
}
+ subchannel()->RequestConnection();
}
- // Update the RR policy's connectivity state if needed.
- MaybeUpdateRoundRobinConnectivityStateLocked();
+ // Update logical connectivity state.
+ UpdateLogicalConnectivityStateLocked(new_state);
+ // Update the policy state.
+ subchannel_list()->MaybeUpdateRoundRobinConnectivityStateLocked(
+ connectivity_status());
}
-void RoundRobin::RoundRobinSubchannelData::UpdateConnectivityStateLocked(
+void RoundRobin::RoundRobinSubchannelData::UpdateLogicalConnectivityStateLocked(
grpc_connectivity_state connectivity_state) {
RoundRobin* p = static_cast<RoundRobin*>(subchannel_list()->policy());
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
@@ -367,115 +462,51 @@ void RoundRobin::RoundRobinSubchannelData::UpdateConnectivityStateLocked(
"(index %" PRIuPTR " of %" PRIuPTR "): prev_state=%s new_state=%s",
p, subchannel(), subchannel_list(), Index(),
subchannel_list()->num_subchannels(),
- ConnectivityStateName(last_connectivity_state_),
+ (logical_connectivity_state_.has_value()
+ ? ConnectivityStateName(*logical_connectivity_state_)
+ : "N/A"),
ConnectivityStateName(connectivity_state));
}
// Decide what state to report for aggregation purposes.
- // If we haven't seen a failure since the last time we were in state
- // READY, then we report the state change as-is. However, once we do see
- // a failure, we report TRANSIENT_FAILURE and do not report any subsequent
- // state changes until we go back into state READY.
- if (!seen_failure_since_ready_) {
- if (connectivity_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
- seen_failure_since_ready_ = true;
- }
- subchannel_list()->UpdateStateCountersLocked(last_connectivity_state_,
- connectivity_state);
- } else {
- if (connectivity_state == GRPC_CHANNEL_READY) {
- seen_failure_since_ready_ = false;
- subchannel_list()->UpdateStateCountersLocked(
- GRPC_CHANNEL_TRANSIENT_FAILURE, connectivity_state);
- }
+ // If the last logical state was TRANSIENT_FAILURE, then ignore the
+ // state change unless the new state is READY.
+ if (logical_connectivity_state_.has_value() &&
+ *logical_connectivity_state_ == GRPC_CHANNEL_TRANSIENT_FAILURE &&
+ connectivity_state != GRPC_CHANNEL_READY) {
+ return;
}
- // Record last seen connectivity state.
- last_connectivity_state_ = connectivity_state;
-}
-
-void RoundRobin::RoundRobinSubchannelData::ProcessConnectivityChangeLocked(
- grpc_connectivity_state connectivity_state) {
- RoundRobin* p = static_cast<RoundRobin*>(subchannel_list()->policy());
- GPR_ASSERT(subchannel() != nullptr);
- // If the new state is TRANSIENT_FAILURE, re-resolve.
- // Only do this if we've started watching, not at startup time.
- // Otherwise, if the subchannel was already in state TRANSIENT_FAILURE
- // when the subchannel list was created, we'd wind up in a constant
- // loop of re-resolution.
- // Also attempt to reconnect.
- if (connectivity_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
+ // If the new state is IDLE, treat it as CONNECTING, since it will
+ // immediately transition into CONNECTING anyway.
+ if (connectivity_state == GRPC_CHANNEL_IDLE) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
gpr_log(GPR_INFO,
- "[RR %p] Subchannel %p has gone into TRANSIENT_FAILURE. "
- "Requesting re-resolution",
- p, subchannel());
- }
- p->channel_control_helper()->RequestReresolution();
- subchannel()->AttemptToConnect();
- }
- // Update state counters.
- UpdateConnectivityStateLocked(connectivity_state);
- // Update overall state and renew notification.
- subchannel_list()->UpdateRoundRobinStateFromSubchannelStateCountsLocked();
-}
-
-void RoundRobin::UpdateLocked(UpdateArgs args) {
- ServerAddressList addresses;
- if (args.addresses.ok()) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
- gpr_log(GPR_INFO, "[RR %p] received update with %" PRIuPTR " addresses",
- this, args.addresses->size());
- }
- addresses = std::move(*args.addresses);
- } else {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace)) {
- gpr_log(GPR_INFO, "[RR %p] received update with address error: %s", this,
- args.addresses.status().ToString().c_str());
+ "[RR %p] subchannel %p, subchannel_list %p (index %" PRIuPTR
+ " of %" PRIuPTR "): treating IDLE as CONNECTING",
+ p, subchannel(), subchannel_list(), Index(),
+ subchannel_list()->num_subchannels());
}
- // If we already have a subchannel list, then ignore the resolver
- // failure and keep using the existing list.
- if (subchannel_list_ != nullptr) return;
+ connectivity_state = GRPC_CHANNEL_CONNECTING;
}
- // Replace latest_pending_subchannel_list_.
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_round_robin_trace) &&
- latest_pending_subchannel_list_ != nullptr) {
- gpr_log(GPR_INFO,
- "[RR %p] Shutting down previous pending subchannel list %p", this,
- latest_pending_subchannel_list_.get());
- }
- latest_pending_subchannel_list_ = MakeOrphanable<RoundRobinSubchannelList>(
- this, &grpc_lb_round_robin_trace, std::move(addresses), *args.args);
- if (latest_pending_subchannel_list_->num_subchannels() == 0) {
- // If the new list is empty, immediately promote the new list to the
- // current list and transition to TRANSIENT_FAILURE.
- y_absl::Status status =
- args.addresses.ok() ? y_absl::UnavailableError(y_absl::StrCat(
- "empty address list: ", args.resolution_note))
- : args.addresses.status();
- channel_control_helper()->UpdateState(
- GRPC_CHANNEL_TRANSIENT_FAILURE, status,
- y_absl::make_unique<TransientFailurePicker>(status));
- subchannel_list_ = std::move(latest_pending_subchannel_list_);
- } else if (subchannel_list_ == nullptr) {
- // If there is no current list, immediately promote the new list to
- // the current list and start watching it.
- subchannel_list_ = std::move(latest_pending_subchannel_list_);
- subchannel_list_->StartWatchingLocked();
- } else {
- // Start watching the pending list. It will get swapped into the
- // current list when it reports READY.
- latest_pending_subchannel_list_->StartWatchingLocked();
+ // If no change, return false.
+ if (logical_connectivity_state_.has_value() &&
+ *logical_connectivity_state_ == connectivity_state) {
+ return;
}
+ // Otherwise, update counters and logical state.
+ subchannel_list()->UpdateStateCountersLocked(logical_connectivity_state_,
+ connectivity_state);
+ logical_connectivity_state_ = connectivity_state;
}
-class RoundRobinConfig : public LoadBalancingPolicy::Config {
- public:
- const char* name() const override { return kRoundRobin; }
-};
-
//
// factory
//
+class RoundRobinConfig : public LoadBalancingPolicy::Config {
+ public:
+ y_absl::string_view name() const override { return kRoundRobin; }
+};
+
class RoundRobinFactory : public LoadBalancingPolicyFactory {
public:
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
@@ -483,22 +514,19 @@ class RoundRobinFactory : public LoadBalancingPolicyFactory {
return MakeOrphanable<RoundRobin>(std::move(args));
}
- const char* name() const override { return kRoundRobin; }
+ y_absl::string_view name() const override { return kRoundRobin; }
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
- const Json& /*json*/, grpc_error_handle* /*error*/) const override {
+ y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+ ParseLoadBalancingConfig(const Json& /*json*/) const override {
return MakeRefCounted<RoundRobinConfig>();
}
};
} // namespace
-} // namespace grpc_core
-
-void grpc_lb_policy_round_robin_init() {
- grpc_core::LoadBalancingPolicyRegistry::Builder::
- RegisterLoadBalancingPolicyFactory(
- y_absl::make_unique<grpc_core::RoundRobinFactory>());
+void RegisterRoundRobinLbPolicy(CoreConfiguration::Builder* builder) {
+ builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
+ y_absl::make_unique<RoundRobinFactory>());
}
-void grpc_lb_policy_round_robin_shutdown() {}
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h
index 15a303d943..6e52d846e3 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h
@@ -1,43 +1,48 @@
-/*
- *
- * Copyright 2015 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
+//
+// Copyright 2015 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H
#include <grpc/support/port_platform.h>
+#include <inttypes.h>
#include <string.h>
#include <util/system/compiler.h> // Y_NO_SANITIZE
-#include "y_absl/container/inlined_vector.h"
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/status/status.h"
+#include "y_absl/types/optional.h"
-#include <grpc/support/alloc.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/support/log.h>
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
-#include "src/core/ext/filters/client_channel/subchannel_interface.h"
-#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/dual_ref_counted.h"
#include "src/core/lib/gprpp/manual_constructor.h"
-#include "src/core/lib/gprpp/orphanable.h"
-#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
#include "src/core/lib/resolver/server_address.h"
#include "src/core/lib/transport/connectivity_state.h"
@@ -52,7 +57,8 @@ class MySubchannelData
: public SubchannelData<MySubchannelList, MySubchannelData> {
public:
void ProcessConnectivityChangeLocked(
- grpc_connectivity_state connectivity_state) override {
+ y_absl::optional<grpc_connectivity_state> old_state,
+ grpc_connectivity_state new_state) override {
// ...code to handle connectivity changes...
}
};
@@ -90,29 +96,15 @@ class SubchannelData {
// Returns a pointer to the subchannel.
SubchannelInterface* subchannel() const { return subchannel_.get(); }
- // Synchronously checks the subchannel's connectivity state.
- // Must not be called while there is a connectivity notification
- // pending (i.e., between calling StartConnectivityWatchLocked() and
- // calling CancelConnectivityWatchLocked()).
- grpc_connectivity_state CheckConnectivityStateLocked() {
- GPR_ASSERT(pending_watcher_ == nullptr);
- connectivity_state_ = subchannel_->CheckConnectivityState();
+ // Returns the cached connectivity state, if any.
+ y_absl::optional<grpc_connectivity_state> connectivity_state() {
return connectivity_state_;
}
+ y_absl::Status connectivity_status() { return connectivity_status_; }
// Resets the connection backoff.
- // TODO(roth): This method should go away when we move the backoff
- // code out of the subchannel and into the LB policies.
void ResetBackoffLocked();
- // Starts watching the connectivity state of the subchannel.
- // ProcessConnectivityChangeLocked() will be called whenever the
- // connectivity state changes.
- void StartConnectivityWatchLocked();
-
- // Cancels watching the connectivity state of the subchannel.
- void CancelConnectivityWatchLocked(const char* reason);
-
// Cancels any pending connectivity watch and unrefs the subchannel.
void ShutdownLocked();
@@ -124,20 +116,24 @@ class SubchannelData {
virtual ~SubchannelData();
- // After StartConnectivityWatchLocked() is called, this method will be
- // invoked whenever the subchannel's connectivity state changes.
- // To stop watching, use CancelConnectivityWatchLocked().
+ // This method will be invoked once soon after instantiation to report
+ // the current connectivity state, and it will then be invoked again
+ // whenever the connectivity state changes.
virtual void ProcessConnectivityChangeLocked(
- grpc_connectivity_state connectivity_state) = 0;
+ y_absl::optional<grpc_connectivity_state> old_state,
+ grpc_connectivity_state new_state) = 0;
private:
+ // For accessing StartConnectivityWatchLocked().
+ friend class SubchannelList<SubchannelListType, SubchannelDataType>;
+
// Watcher for subchannel connectivity state.
class Watcher
: public SubchannelInterface::ConnectivityStateWatcherInterface {
public:
Watcher(
SubchannelData<SubchannelListType, SubchannelDataType>* subchannel_data,
- RefCountedPtr<SubchannelListType> subchannel_list)
+ WeakRefCountedPtr<SubchannelListType> subchannel_list)
: subchannel_data_(subchannel_data),
subchannel_list_(std::move(subchannel_list)) {}
@@ -145,7 +141,8 @@ class SubchannelData {
subchannel_list_.reset(DEBUG_LOCATION, "Watcher dtor");
}
- void OnConnectivityStateChange(grpc_connectivity_state new_state) override;
+ void OnConnectivityStateChange(grpc_connectivity_state new_state,
+ y_absl::Status status) override;
grpc_pollset_set* interested_parties() override {
return subchannel_list_->policy()->interested_parties();
@@ -153,9 +150,17 @@ class SubchannelData {
private:
SubchannelData<SubchannelListType, SubchannelDataType>* subchannel_data_;
- RefCountedPtr<SubchannelListType> subchannel_list_;
+ WeakRefCountedPtr<SubchannelListType> subchannel_list_;
};
+ // Starts watching the connectivity state of the subchannel.
+ // ProcessConnectivityChangeLocked() will be called whenever the
+ // connectivity state changes.
+ void StartConnectivityWatchLocked();
+
+ // Cancels watching the connectivity state of the subchannel.
+ void CancelConnectivityWatchLocked(const char* reason);
+
// Unrefs the subchannel.
void UnrefSubchannelLocked(const char* reason);
@@ -167,17 +172,17 @@ class SubchannelData {
SubchannelInterface::ConnectivityStateWatcherInterface* pending_watcher_ =
nullptr;
// Data updated by the watcher.
- grpc_connectivity_state connectivity_state_;
+ y_absl::optional<grpc_connectivity_state> connectivity_state_;
+ y_absl::Status connectivity_status_;
};
// A list of subchannels.
template <typename SubchannelListType, typename SubchannelDataType>
-class SubchannelList : public InternallyRefCounted<SubchannelListType> {
+class SubchannelList : public DualRefCounted<SubchannelListType> {
public:
- // We use ManualConstructor here to support SubchannelDataType classes
- // that are not copyable.
- typedef y_absl::InlinedVector<ManualConstructor<SubchannelDataType>, 10>
- SubchannelVector;
+ // Starts watching the connectivity state of all subchannels.
+ // Must be called immediately after instantiation.
+ void StartWatchingLocked();
// The number of subchannels in the list.
size_t num_subchannels() const { return subchannels_.size(); }
@@ -192,23 +197,18 @@ class SubchannelList : public InternallyRefCounted<SubchannelListType> {
// Accessors.
LoadBalancingPolicy* policy() const { return policy_; }
- TraceFlag* tracer() const { return tracer_; }
+ const char* tracer() const { return tracer_; }
// Resets connection backoff of all subchannels.
- // TODO(roth): We will probably need to rethink this as part of moving
- // the backoff code out of subchannels and into LB policies.
void ResetBackoffLocked();
- void Orphan() override {
- ShutdownLocked();
- InternallyRefCounted<SubchannelListType>::Unref(DEBUG_LOCATION, "shutdown");
- }
+ void Orphan() override;
protected:
- SubchannelList(LoadBalancingPolicy* policy, TraceFlag* tracer,
+ SubchannelList(LoadBalancingPolicy* policy, const char* tracer,
ServerAddressList addresses,
LoadBalancingPolicy::ChannelControlHelper* helper,
- const grpc_channel_args& args);
+ const ChannelArgs& args);
virtual ~SubchannelList();
@@ -216,15 +216,15 @@ class SubchannelList : public InternallyRefCounted<SubchannelListType> {
// For accessing Ref() and Unref().
friend class SubchannelData<SubchannelListType, SubchannelDataType>;
- void ShutdownLocked();
-
// Backpointer to owning policy.
LoadBalancingPolicy* policy_;
- TraceFlag* tracer_;
+ const char* tracer_;
// The list of subchannels.
- SubchannelVector subchannels_;
+ // We use ManualConstructor here to support SubchannelDataType classes
+ // that are not copyable.
+ std::vector<ManualConstructor<SubchannelDataType>> subchannels_;
// Is this list shutting down? This may be true due to the shutdown of the
// policy itself or because a newer update has arrived while this one hadn't
@@ -242,24 +242,32 @@ class SubchannelList : public InternallyRefCounted<SubchannelListType> {
template <typename SubchannelListType, typename SubchannelDataType>
void SubchannelData<SubchannelListType, SubchannelDataType>::Watcher::
- OnConnectivityStateChange(grpc_connectivity_state new_state) {
- if (GRPC_TRACE_FLAG_ENABLED(*subchannel_list_->tracer())) {
- gpr_log(GPR_INFO,
- "[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
- " (subchannel %p): connectivity changed: state=%s, "
- "shutting_down=%d, pending_watcher=%p",
- subchannel_list_->tracer()->name(), subchannel_list_->policy(),
- subchannel_list_.get(), subchannel_data_->Index(),
- subchannel_list_->num_subchannels(),
- subchannel_data_->subchannel_.get(),
- ConnectivityStateName(new_state), subchannel_list_->shutting_down(),
- subchannel_data_->pending_watcher_);
+ OnConnectivityStateChange(grpc_connectivity_state new_state,
+ y_absl::Status status) {
+ if (GPR_UNLIKELY(subchannel_list_->tracer() != nullptr)) {
+ gpr_log(
+ GPR_INFO,
+ "[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
+ " (subchannel %p): connectivity changed: old_state=%s, new_state=%s, "
+ "status=%s, shutting_down=%d, pending_watcher=%p",
+ subchannel_list_->tracer(), subchannel_list_->policy(),
+ subchannel_list_.get(), subchannel_data_->Index(),
+ subchannel_list_->num_subchannels(),
+ subchannel_data_->subchannel_.get(),
+ (subchannel_data_->connectivity_state_.has_value()
+ ? ConnectivityStateName(*subchannel_data_->connectivity_state_)
+ : "N/A"),
+ ConnectivityStateName(new_state), status.ToString().c_str(),
+ subchannel_list_->shutting_down(), subchannel_data_->pending_watcher_);
}
if (!subchannel_list_->shutting_down() &&
subchannel_data_->pending_watcher_ != nullptr) {
+ y_absl::optional<grpc_connectivity_state> old_state =
+ subchannel_data_->connectivity_state_;
subchannel_data_->connectivity_state_ = new_state;
+ subchannel_data_->connectivity_status_ = status;
// Call the subclass's ProcessConnectivityChangeLocked() method.
- subchannel_data_->ProcessConnectivityChangeLocked(new_state);
+ subchannel_data_->ProcessConnectivityChangeLocked(old_state, new_state);
}
}
@@ -272,11 +280,7 @@ SubchannelData<SubchannelListType, SubchannelDataType>::SubchannelData(
SubchannelList<SubchannelListType, SubchannelDataType>* subchannel_list,
const ServerAddress& /*address*/,
RefCountedPtr<SubchannelInterface> subchannel)
- : subchannel_list_(subchannel_list),
- subchannel_(std::move(subchannel)),
- // We assume that the current state is IDLE. If not, we'll get a
- // callback telling us that.
- connectivity_state_(GRPC_CHANNEL_IDLE) {}
+ : subchannel_list_(subchannel_list), subchannel_(std::move(subchannel)) {}
template <typename SubchannelListType, typename SubchannelDataType>
SubchannelData<SubchannelListType, SubchannelDataType>::~SubchannelData() {
@@ -287,11 +291,11 @@ template <typename SubchannelListType, typename SubchannelDataType>
void SubchannelData<SubchannelListType, SubchannelDataType>::
UnrefSubchannelLocked(const char* reason) {
if (subchannel_ != nullptr) {
- if (GRPC_TRACE_FLAG_ENABLED(*subchannel_list_->tracer())) {
+ if (GPR_UNLIKELY(subchannel_list_->tracer() != nullptr)) {
gpr_log(GPR_INFO,
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
" (subchannel %p): unreffing subchannel (%s)",
- subchannel_list_->tracer()->name(), subchannel_list_->policy(),
+ subchannel_list_->tracer(), subchannel_list_->policy(),
subchannel_list_, Index(), subchannel_list_->num_subchannels(),
subchannel_.get(), reason);
}
@@ -310,19 +314,18 @@ void SubchannelData<SubchannelListType,
template <typename SubchannelListType, typename SubchannelDataType>
void SubchannelData<SubchannelListType,
SubchannelDataType>::StartConnectivityWatchLocked() {
- if (GRPC_TRACE_FLAG_ENABLED(*subchannel_list_->tracer())) {
+ if (GPR_UNLIKELY(subchannel_list_->tracer() != nullptr)) {
gpr_log(GPR_INFO,
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
- " (subchannel %p): starting watch (from %s)",
- subchannel_list_->tracer()->name(), subchannel_list_->policy(),
+ " (subchannel %p): starting watch",
+ subchannel_list_->tracer(), subchannel_list_->policy(),
subchannel_list_, Index(), subchannel_list_->num_subchannels(),
- subchannel_.get(), ConnectivityStateName(connectivity_state_));
+ subchannel_.get());
}
GPR_ASSERT(pending_watcher_ == nullptr);
pending_watcher_ =
- new Watcher(this, subchannel_list()->Ref(DEBUG_LOCATION, "Watcher"));
+ new Watcher(this, subchannel_list()->WeakRef(DEBUG_LOCATION, "Watcher"));
subchannel_->WatchConnectivityState(
- connectivity_state_,
std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>(
pending_watcher_));
}
@@ -330,15 +333,15 @@ void SubchannelData<SubchannelListType,
template <typename SubchannelListType, typename SubchannelDataType>
void SubchannelData<SubchannelListType, SubchannelDataType>::
CancelConnectivityWatchLocked(const char* reason) {
- if (GRPC_TRACE_FLAG_ENABLED(*subchannel_list_->tracer())) {
- gpr_log(GPR_INFO,
- "[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
- " (subchannel %p): canceling connectivity watch (%s)",
- subchannel_list_->tracer()->name(), subchannel_list_->policy(),
- subchannel_list_, Index(), subchannel_list_->num_subchannels(),
- subchannel_.get(), reason);
- }
if (pending_watcher_ != nullptr) {
+ if (GPR_UNLIKELY(subchannel_list_->tracer() != nullptr)) {
+ gpr_log(GPR_INFO,
+ "[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
+ " (subchannel %p): canceling connectivity watch (%s)",
+ subchannel_list_->tracer(), subchannel_list_->policy(),
+ subchannel_list_, Index(), subchannel_list_->num_subchannels(),
+ subchannel_.get(), reason);
+ }
subchannel_->CancelConnectivityStateWatch(pending_watcher_);
pending_watcher_ = nullptr;
}
@@ -346,7 +349,7 @@ void SubchannelData<SubchannelListType, SubchannelDataType>::
template <typename SubchannelListType, typename SubchannelDataType>
void SubchannelData<SubchannelListType, SubchannelDataType>::ShutdownLocked() {
- if (pending_watcher_ != nullptr) CancelConnectivityWatchLocked("shutdown");
+ CancelConnectivityWatchLocked("shutdown");
UnrefSubchannelLocked("shutdown");
}
@@ -356,17 +359,16 @@ void SubchannelData<SubchannelListType, SubchannelDataType>::ShutdownLocked() {
template <typename SubchannelListType, typename SubchannelDataType>
SubchannelList<SubchannelListType, SubchannelDataType>::SubchannelList(
- LoadBalancingPolicy* policy, TraceFlag* tracer, ServerAddressList addresses,
- LoadBalancingPolicy::ChannelControlHelper* helper,
- const grpc_channel_args& args) Y_NO_SANITIZE("undefined")
- : InternallyRefCounted<SubchannelListType>(
- GRPC_TRACE_FLAG_ENABLED(*tracer) ? "SubchannelList" : nullptr),
+ LoadBalancingPolicy* policy, const char* tracer,
+ ServerAddressList addresses,
+ LoadBalancingPolicy::ChannelControlHelper* helper, const ChannelArgs& args) Y_NO_SANITIZE("undefined")
+ : DualRefCounted<SubchannelListType>(tracer),
policy_(policy),
tracer_(tracer) {
- if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
+ if (GPR_UNLIKELY(tracer_ != nullptr)) {
gpr_log(GPR_INFO,
"[%s %p] Creating subchannel list %p for %" PRIuPTR " subchannels",
- tracer_->name(), policy, this, addresses.size());
+ tracer_, policy, this, addresses.size());
}
subchannels_.reserve(addresses.size());
// Create a subchannel for each address.
@@ -375,20 +377,19 @@ SubchannelList<SubchannelListType, SubchannelDataType>::SubchannelList(
helper->CreateSubchannel(address, args);
if (subchannel == nullptr) {
// Subchannel could not be created.
- if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
+ if (GPR_UNLIKELY(tracer_ != nullptr)) {
gpr_log(GPR_INFO,
- "[%s %p] could not create subchannel for address %s, "
- "ignoring",
- tracer_->name(), policy_, address.ToString().c_str());
+ "[%s %p] could not create subchannel for address %s, ignoring",
+ tracer_, policy_, address.ToString().c_str());
}
continue;
}
- if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
+ if (GPR_UNLIKELY(tracer_ != nullptr)) {
gpr_log(GPR_INFO,
"[%s %p] subchannel list %p index %" PRIuPTR
": Created subchannel %p for address %s",
- tracer_->name(), policy_, this, subchannels_.size(),
- subchannel.get(), address.ToString().c_str());
+ tracer_, policy_, this, subchannels_.size(), subchannel.get(),
+ address.ToString().c_str());
}
subchannels_.emplace_back();
subchannels_.back().Init(this, std::move(address), std::move(subchannel));
@@ -397,9 +398,9 @@ SubchannelList<SubchannelListType, SubchannelDataType>::SubchannelList(
template <typename SubchannelListType, typename SubchannelDataType>
SubchannelList<SubchannelListType, SubchannelDataType>::~SubchannelList() {
- if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
- gpr_log(GPR_INFO, "[%s %p] Destroying subchannel_list %p", tracer_->name(),
- policy_, this);
+ if (GPR_UNLIKELY(tracer_ != nullptr)) {
+ gpr_log(GPR_INFO, "[%s %p] Destroying subchannel_list %p", tracer_, policy_,
+ this);
}
for (auto& sd : subchannels_) {
sd.Destroy();
@@ -407,10 +408,18 @@ SubchannelList<SubchannelListType, SubchannelDataType>::~SubchannelList() {
}
template <typename SubchannelListType, typename SubchannelDataType>
-void SubchannelList<SubchannelListType, SubchannelDataType>::ShutdownLocked() {
- if (GRPC_TRACE_FLAG_ENABLED(*tracer_)) {
- gpr_log(GPR_INFO, "[%s %p] Shutting down subchannel_list %p",
- tracer_->name(), policy_, this);
+void SubchannelList<SubchannelListType,
+ SubchannelDataType>::StartWatchingLocked() {
+ for (auto& sd : subchannels_) {
+ sd->StartConnectivityWatchLocked();
+ }
+}
+
+template <typename SubchannelListType, typename SubchannelDataType>
+void SubchannelList<SubchannelListType, SubchannelDataType>::Orphan() {
+ if (GPR_UNLIKELY(tracer_ != nullptr)) {
+ gpr_log(GPR_INFO, "[%s %p] Shutting down subchannel_list %p", tracer_,
+ policy_, this);
}
GPR_ASSERT(!shutting_down_);
shutting_down_ = true;
@@ -429,4 +438,4 @@ void SubchannelList<SubchannelListType,
} // namespace grpc_core
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H */
+#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc
index b3020ba64a..6ab58791bb 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc
@@ -16,27 +16,55 @@
#include <grpc/support/port_platform.h>
-#include <inttypes.h>
-#include <limits.h>
-#include <string.h>
-
-#include "y_absl/container/inlined_vector.h"
+#include <stdlib.h>
+
+#include <algorithm>
+#include <cstdint>
+#include <map>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
-#include <grpc/grpc.h>
+#include <grpc/event_engine/event_engine.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/support/log.h>
-#include "src/core/ext/filters/client_channel/lb_policy.h"
#include "src/core/ext/filters/client_channel/lb_policy/address_filtering.h"
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
-#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/event_engine/default_event_engine.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/iomgr/work_serializer.h"
-#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/validation_errors.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/json/json_args.h"
+#include "src/core/lib/json/json_object_loader.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+#include "src/core/lib/load_balancing/lb_policy_factory.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
+#include "src/core/lib/resolver/server_address.h"
+#include "src/core/lib/transport/connectivity_state.h"
+
+// IWYU pragma: no_include <type_traits>
namespace grpc_core {
@@ -44,7 +72,10 @@ TraceFlag grpc_lb_weighted_target_trace(false, "weighted_target_lb");
namespace {
-constexpr char kWeightedTarget[] = "weighted_target_experimental";
+using ::grpc_event_engine::experimental::EventEngine;
+using ::grpc_event_engine::experimental::GetDefaultEventEngine;
+
+constexpr y_absl::string_view kWeightedTarget = "weighted_target_experimental";
// How long we keep a child around for after it has been removed from
// the config.
@@ -56,17 +87,28 @@ class WeightedTargetLbConfig : public LoadBalancingPolicy::Config {
struct ChildConfig {
uint32_t weight;
RefCountedPtr<LoadBalancingPolicy::Config> config;
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs&,
+ ValidationErrors* errors);
};
using TargetMap = std::map<TString, ChildConfig>;
- explicit WeightedTargetLbConfig(TargetMap target_map)
- : target_map_(std::move(target_map)) {}
+ WeightedTargetLbConfig() = default;
- const char* name() const override { return kWeightedTarget; }
+ WeightedTargetLbConfig(const WeightedTargetLbConfig&) = delete;
+ WeightedTargetLbConfig& operator=(const WeightedTargetLbConfig&) = delete;
+
+ WeightedTargetLbConfig(WeightedTargetLbConfig&& other) = delete;
+ WeightedTargetLbConfig& operator=(WeightedTargetLbConfig&& other) = delete;
+
+ y_absl::string_view name() const override { return kWeightedTarget; }
const TargetMap& target_map() const { return target_map_; }
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+
private:
TargetMap target_map_;
};
@@ -76,9 +118,9 @@ class WeightedTargetLb : public LoadBalancingPolicy {
public:
explicit WeightedTargetLb(Args args);
- const char* name() const override { return kWeightedTarget; }
+ y_absl::string_view name() const override { return kWeightedTarget; }
- void UpdateLocked(UpdateArgs args) override;
+ y_absl::Status UpdateLocked(UpdateArgs args) override;
void ResetBackoffLocked() override;
private:
@@ -101,8 +143,8 @@ class WeightedTargetLb : public LoadBalancingPolicy {
// ready state. The first element in the pair represents the end of a
// range proportional to the child's weight. The start of the range
// is the previous value in the vector and is 0 for the first element.
- using PickerList = y_absl::InlinedVector<
- std::pair<uint32_t, RefCountedPtr<ChildPickerWrapper>>, 1>;
+ using PickerList =
+ std::vector<std::pair<uint32_t, RefCountedPtr<ChildPickerWrapper>>>;
explicit WeightedPicker(PickerList pickers)
: pickers_(std::move(pickers)) {}
@@ -122,9 +164,10 @@ class WeightedTargetLb : public LoadBalancingPolicy {
void Orphan() override;
- void UpdateLocked(const WeightedTargetLbConfig::ChildConfig& config,
- y_absl::StatusOr<ServerAddressList> addresses,
- const grpc_channel_args* args);
+ y_absl::Status UpdateLocked(const WeightedTargetLbConfig::ChildConfig& config,
+ y_absl::StatusOr<ServerAddressList> addresses,
+ const TString& resolution_note,
+ const ChannelArgs& args);
void ResetBackoffLocked();
void DeactivateLocked();
@@ -145,7 +188,7 @@ class WeightedTargetLb : public LoadBalancingPolicy {
~Helper() override { weighted_child_.reset(DEBUG_LOCATION, "Helper"); }
RefCountedPtr<SubchannelInterface> CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) override;
+ ServerAddress address, const ChannelArgs& args) override;
void UpdateState(grpc_connectivity_state state,
const y_absl::Status& status,
std::unique_ptr<SubchannelPicker> picker) override;
@@ -166,18 +209,15 @@ class WeightedTargetLb : public LoadBalancingPolicy {
void Orphan() override;
private:
- static void OnTimer(void* arg, grpc_error_handle error);
- void OnTimerLocked(grpc_error_handle error);
+ void OnTimerLocked();
RefCountedPtr<WeightedChild> weighted_child_;
- grpc_timer timer_;
- grpc_closure on_timer_;
- bool timer_pending_ = true;
+ y_absl::optional<EventEngine::TaskHandle> timer_handle_;
};
// Methods for dealing with the child policy.
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
- const grpc_channel_args* args);
+ const ChannelArgs& args);
void OnConnectivityStateUpdateLocked(
grpc_connectivity_state state, const y_absl::Status& status,
@@ -194,7 +234,6 @@ class WeightedTargetLb : public LoadBalancingPolicy {
RefCountedPtr<ChildPickerWrapper> picker_wrapper_;
grpc_connectivity_state connectivity_state_ = GRPC_CHANNEL_CONNECTING;
- bool seen_failure_since_ready_ = false;
OrphanablePtr<DelayedRemovalTimer> delayed_removal_timer_;
};
@@ -277,8 +316,8 @@ void WeightedTargetLb::ResetBackoffLocked() {
for (auto& p : targets_) p.second->ResetBackoffLocked();
}
-void WeightedTargetLb::UpdateLocked(UpdateArgs args) {
- if (shutting_down_) return;
+y_absl::Status WeightedTargetLb::UpdateLocked(UpdateArgs args) {
+ if (shutting_down_) return y_absl::OkStatus();
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_weighted_target_trace)) {
gpr_log(GPR_INFO, "[weighted_target_lb %p] Received update", this);
}
@@ -296,6 +335,7 @@ void WeightedTargetLb::UpdateLocked(UpdateArgs args) {
// Update all children.
y_absl::StatusOr<HierarchicalAddressMap> address_map =
MakeHierarchicalAddressMap(args.addresses);
+ std::vector<TString> errors;
for (const auto& p : config_->target_map()) {
const TString& name = p.first;
const WeightedTargetLbConfig::ChildConfig& config = p.second;
@@ -311,10 +351,29 @@ void WeightedTargetLb::UpdateLocked(UpdateArgs args) {
} else {
addresses = address_map.status();
}
- target->UpdateLocked(config, std::move(addresses), args.args);
+ y_absl::Status status = target->UpdateLocked(config, std::move(addresses),
+ args.resolution_note, args.args);
+ if (!status.ok()) {
+ errors.emplace_back(
+ y_absl::StrCat("child ", name, ": ", status.ToString()));
+ }
}
update_in_progress_ = false;
+ if (config_->target_map().empty()) {
+ y_absl::Status status = y_absl::UnavailableError(y_absl::StrCat(
+ "no children in weighted_target policy: ", args.resolution_note));
+ channel_control_helper()->UpdateState(
+ GRPC_CHANNEL_TRANSIENT_FAILURE, status,
+ y_absl::make_unique<TransientFailurePicker>(status));
+ return y_absl::OkStatus();
+ }
UpdateStateLocked();
+ // Return status.
+ if (!errors.empty()) {
+ return y_absl::UnavailableError(y_absl::StrCat(
+ "errors from children: [", y_absl::StrJoin(errors, "; "), "]"));
+ }
+ return y_absl::OkStatus();
}
void WeightedTargetLb::UpdateStateLocked() {
@@ -330,17 +389,19 @@ void WeightedTargetLb::UpdateStateLocked() {
"connectivity state",
this);
}
- // Construct a new picker which maintains a map of all child pickers
- // that are ready. Each child is represented by a portion of the range
- // proportional to its weight, such that the total range is the sum of the
- // weights of all children.
- WeightedPicker::PickerList picker_list;
- uint32_t end = 0;
- // Also count the number of children in each state, to determine the
- // overall state.
+ // Construct lists of child pickers with associated weights, one for
+ // children that are in state READY and another for children that are
+ // in state TRANSIENT_FAILURE. Each child is represented by a portion of
+ // the range proportional to its weight, such that the total range is the
+ // sum of the weights of all children.
+ WeightedPicker::PickerList ready_picker_list;
+ uint32_t ready_end = 0;
+ WeightedPicker::PickerList tf_picker_list;
+ uint32_t tf_end = 0;
+ // Also count the number of children in CONNECTING and IDLE, to determine
+ // the aggregated state.
size_t num_connecting = 0;
size_t num_idle = 0;
- size_t num_transient_failures = 0;
for (const auto& p : targets_) {
const TString& child_name = p.first;
const WeightedChild* child = p.second.get();
@@ -358,8 +419,8 @@ void WeightedTargetLb::UpdateStateLocked() {
switch (child->connectivity_state()) {
case GRPC_CHANNEL_READY: {
GPR_ASSERT(child->weight() > 0);
- end += child->weight();
- picker_list.push_back(std::make_pair(end, child->picker_wrapper()));
+ ready_end += child->weight();
+ ready_picker_list.emplace_back(ready_end, child->picker_wrapper());
break;
}
case GRPC_CHANNEL_CONNECTING: {
@@ -371,7 +432,9 @@ void WeightedTargetLb::UpdateStateLocked() {
break;
}
case GRPC_CHANNEL_TRANSIENT_FAILURE: {
- ++num_transient_failures;
+ GPR_ASSERT(child->weight() > 0);
+ tf_end += child->weight();
+ tf_picker_list.emplace_back(tf_end, child->picker_wrapper());
break;
}
default:
@@ -380,7 +443,7 @@ void WeightedTargetLb::UpdateStateLocked() {
}
// Determine aggregated connectivity state.
grpc_connectivity_state connectivity_state;
- if (!picker_list.empty()) {
+ if (!ready_picker_list.empty()) {
connectivity_state = GRPC_CHANNEL_READY;
} else if (num_connecting > 0) {
connectivity_state = GRPC_CHANNEL_CONNECTING;
@@ -397,7 +460,7 @@ void WeightedTargetLb::UpdateStateLocked() {
y_absl::Status status;
switch (connectivity_state) {
case GRPC_CHANNEL_READY:
- picker = y_absl::make_unique<WeightedPicker>(std::move(picker_list));
+ picker = y_absl::make_unique<WeightedPicker>(std::move(ready_picker_list));
break;
case GRPC_CHANNEL_CONNECTING:
case GRPC_CHANNEL_IDLE:
@@ -405,9 +468,7 @@ void WeightedTargetLb::UpdateStateLocked() {
y_absl::make_unique<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker"));
break;
default:
- status = y_absl::UnavailableError(
- "weighted_target: all children report state TRANSIENT_FAILURE");
- picker = y_absl::make_unique<TransientFailurePicker>(status);
+ picker = y_absl::make_unique<WeightedPicker>(std::move(tf_picker_list));
}
channel_control_helper()->UpdateState(connectivity_state, status,
std::move(picker));
@@ -420,14 +481,18 @@ void WeightedTargetLb::UpdateStateLocked() {
WeightedTargetLb::WeightedChild::DelayedRemovalTimer::DelayedRemovalTimer(
RefCountedPtr<WeightedTargetLb::WeightedChild> weighted_child)
: weighted_child_(std::move(weighted_child)) {
- GRPC_CLOSURE_INIT(&on_timer_, OnTimer, this, nullptr);
- Ref().release();
- grpc_timer_init(&timer_, ExecCtx::Get()->Now() + kChildRetentionInterval,
- &on_timer_);
+ timer_handle_ = GetDefaultEventEngine()->RunAfter(
+ kChildRetentionInterval, [self = Ref()]() mutable {
+ ApplicationCallbackExecCtx app_exec_ctx;
+ ExecCtx exec_ctx;
+ self->weighted_child_->weighted_target_policy_->work_serializer()->Run(
+ [self = std::move(self)] { self->OnTimerLocked(); },
+ DEBUG_LOCATION);
+ });
}
void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::Orphan() {
- if (timer_pending_) {
+ if (timer_handle_.has_value()) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_weighted_target_trace)) {
gpr_log(GPR_INFO,
"[weighted_target_lb %p] WeightedChild %p %s: cancelling "
@@ -435,29 +500,16 @@ void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::Orphan() {
weighted_child_->weighted_target_policy_.get(),
weighted_child_.get(), weighted_child_->name_.c_str());
}
- timer_pending_ = false;
- grpc_timer_cancel(&timer_);
+ GetDefaultEventEngine()->Cancel(*timer_handle_);
}
Unref();
}
-void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::OnTimer(
- void* arg, grpc_error_handle error) {
- auto* self = static_cast<DelayedRemovalTimer*>(arg);
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
- self->weighted_child_->weighted_target_policy_->work_serializer()->Run(
- [self, error]() { self->OnTimerLocked(error); }, DEBUG_LOCATION);
-}
-
-void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::OnTimerLocked(
- grpc_error_handle error) {
- if (error == GRPC_ERROR_NONE && timer_pending_) {
- timer_pending_ = false;
- weighted_child_->weighted_target_policy_->targets_.erase(
- weighted_child_->name_);
- }
- GRPC_ERROR_UNREF(error);
- Unref();
+void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::OnTimerLocked() {
+ GPR_ASSERT(timer_handle_.has_value());
+ timer_handle_.reset();
+ weighted_child_->weighted_target_policy_->targets_.erase(
+ weighted_child_->name_);
}
//
@@ -504,7 +556,7 @@ void WeightedTargetLb::WeightedChild::Orphan() {
OrphanablePtr<LoadBalancingPolicy>
WeightedTargetLb::WeightedChild::CreateChildPolicyLocked(
- const grpc_channel_args* args) {
+ const ChannelArgs& args) {
LoadBalancingPolicy::Args lb_policy_args;
lb_policy_args.work_serializer = weighted_target_policy_->work_serializer();
lb_policy_args.args = args;
@@ -529,11 +581,11 @@ WeightedTargetLb::WeightedChild::CreateChildPolicyLocked(
return lb_policy;
}
-void WeightedTargetLb::WeightedChild::UpdateLocked(
+y_absl::Status WeightedTargetLb::WeightedChild::UpdateLocked(
const WeightedTargetLbConfig::ChildConfig& config,
y_absl::StatusOr<ServerAddressList> addresses,
- const grpc_channel_args* args) {
- if (weighted_target_policy_->shutting_down_) return;
+ const TString& resolution_note, const ChannelArgs& args) {
+ if (weighted_target_policy_->shutting_down_) return y_absl::OkStatus();
// Update child weight.
weight_ = config.weight;
// Reactivate if needed.
@@ -553,7 +605,8 @@ void WeightedTargetLb::WeightedChild::UpdateLocked(
UpdateArgs update_args;
update_args.config = config.config;
update_args.addresses = std::move(addresses);
- update_args.args = grpc_channel_args_copy(args);
+ update_args.resolution_note = resolution_note;
+ update_args.args = args;
// Update the policy.
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_weighted_target_trace)) {
gpr_log(GPR_INFO,
@@ -562,7 +615,7 @@ void WeightedTargetLb::WeightedChild::UpdateLocked(
weighted_target_policy_.get(), this, name_.c_str(),
child_policy_.get());
}
- child_policy_->UpdateLocked(std::move(update_args));
+ return child_policy_->UpdateLocked(std::move(update_args));
}
void WeightedTargetLb::WeightedChild::ResetBackoffLocked() {
@@ -585,19 +638,12 @@ void WeightedTargetLb::WeightedChild::OnConnectivityStateUpdateLocked(
// If the child reports IDLE, immediately tell it to exit idle.
if (state == GRPC_CHANNEL_IDLE) child_policy_->ExitIdleLocked();
// Decide what state to report for aggregation purposes.
- // If we haven't seen a failure since the last time we were in state
- // READY, then we report the state change as-is. However, once we do see
- // a failure, we report TRANSIENT_FAILURE and ignore any subsequent state
- // changes until we go back into state READY.
- if (!seen_failure_since_ready_) {
- if (state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
- seen_failure_since_ready_ = true;
- }
- } else {
- if (state != GRPC_CHANNEL_READY) return;
- seen_failure_since_ready_ = false;
+ // If the last recorded state was TRANSIENT_FAILURE and the new state
+ // is something other than READY, don't change the state.
+ if (connectivity_state_ != GRPC_CHANNEL_TRANSIENT_FAILURE ||
+ state == GRPC_CHANNEL_READY) {
+ connectivity_state_ = state;
}
- connectivity_state_ = state;
// Notify the LB policy.
weighted_target_policy_->UpdateStateLocked();
}
@@ -623,7 +669,7 @@ void WeightedTargetLb::WeightedChild::DeactivateLocked() {
RefCountedPtr<SubchannelInterface>
WeightedTargetLb::WeightedChild::Helper::CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) {
+ ServerAddress address, const ChannelArgs& args) {
if (weighted_child_->weighted_target_policy_->shutting_down_) return nullptr;
return weighted_child_->weighted_target_policy_->channel_control_helper()
->CreateSubchannel(std::move(address), args);
@@ -659,6 +705,43 @@ void WeightedTargetLb::WeightedChild::Helper::AddTraceEvent(
// factory
//
+const JsonLoaderInterface* WeightedTargetLbConfig::ChildConfig::JsonLoader(
+ const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<ChildConfig>()
+ // Note: The config field requires custom parsing, so it's
+ // handled in JsonPostLoad() instead.
+ .Field("weight", &ChildConfig::weight)
+ .Finish();
+ return loader;
+}
+
+void WeightedTargetLbConfig::ChildConfig::JsonPostLoad(
+ const Json& json, const JsonArgs&, ValidationErrors* errors) {
+ ValidationErrors::ScopedField field(errors, ".childPolicy");
+ auto it = json.object_value().find("childPolicy");
+ if (it == json.object_value().end()) {
+ errors->AddError("field not present");
+ return;
+ }
+ auto lb_config =
+ CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
+ it->second);
+ if (!lb_config.ok()) {
+ errors->AddError(lb_config.status().message());
+ return;
+ }
+ config = std::move(*lb_config);
+}
+
+const JsonLoaderInterface* WeightedTargetLbConfig::JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<WeightedTargetLbConfig>()
+ .Field("targets", &WeightedTargetLbConfig::target_map_)
+ .Finish();
+ return loader;
+}
+
class WeightedTargetLbFactory : public LoadBalancingPolicyFactory {
public:
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
@@ -666,111 +749,28 @@ class WeightedTargetLbFactory : public LoadBalancingPolicyFactory {
return MakeOrphanable<WeightedTargetLb>(std::move(args));
}
- const char* name() const override { return kWeightedTarget; }
+ y_absl::string_view name() const override { return kWeightedTarget; }
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
- const Json& json, grpc_error_handle* error) const override {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
+ y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+ ParseLoadBalancingConfig(const Json& json) const override {
if (json.type() == Json::Type::JSON_NULL) {
// weighted_target was mentioned as a policy in the deprecated
// loadBalancingPolicy field or in the client API.
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"field:loadBalancingPolicy error:weighted_target policy requires "
"configuration. Please use loadBalancingConfig field of service "
"config instead.");
- return nullptr;
- }
- std::vector<grpc_error_handle> error_list;
- // Weight map.
- WeightedTargetLbConfig::TargetMap target_map;
- auto it = json.object_value().find("targets");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:targets error:required field not present"));
- } else if (it->second.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:targets error:type should be object"));
- } else {
- for (const auto& p : it->second.object_value()) {
- WeightedTargetLbConfig::ChildConfig child_config;
- std::vector<grpc_error_handle> child_errors =
- ParseChildConfig(p.second, &child_config);
- if (!child_errors.empty()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(
- y_absl::StrCat("field:targets key:", p.first), &child_errors));
- } else {
- target_map[p.first] = std::move(child_config);
- }
- }
- }
- if (!error_list.empty()) {
- *error = GRPC_ERROR_CREATE_FROM_VECTOR(
- "weighted_target_experimental LB policy config", &error_list);
- return nullptr;
}
- return MakeRefCounted<WeightedTargetLbConfig>(std::move(target_map));
- }
-
- private:
- static std::vector<grpc_error_handle> ParseChildConfig(
- const Json& json, WeightedTargetLbConfig::ChildConfig* child_config) {
- std::vector<grpc_error_handle> error_list;
- if (json.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "value should be of type object"));
- return error_list;
- }
- // Weight.
- auto it = json.object_value().find("weight");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "required field \"weight\" not specified"));
- } else if (it->second.type() != Json::Type::NUMBER) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:weight error:must be of type number"));
- } else {
- int weight = gpr_parse_nonnegative_int(it->second.string_value().c_str());
- if (weight == -1) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:weight error:unparseable value"));
- } else if (weight == 0) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:weight error:value must be greater than zero"));
- } else {
- child_config->weight = weight;
- }
- }
- // Child policy.
- it = json.object_value().find("childPolicy");
- if (it != json.object_value().end()) {
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
- child_config->config =
- LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(it->second,
- &parse_error);
- if (child_config->config == nullptr) {
- GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
- std::vector<grpc_error_handle> child_errors;
- child_errors.push_back(parse_error);
- error_list.push_back(
- GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
- }
- }
- return error_list;
+ return LoadRefCountedFromJson<WeightedTargetLbConfig>(
+ json, JsonArgs(), "errors validating weighted_target LB policy config");
}
};
} // namespace
-} // namespace grpc_core
-
-//
-// Plugin registration
-//
-
-void grpc_lb_policy_weighted_target_init() {
- grpc_core::LoadBalancingPolicyRegistry::Builder::
- RegisterLoadBalancingPolicyFactory(
- y_absl::make_unique<grpc_core::WeightedTargetLbFactory>());
+void RegisterWeightedTargetLbPolicy(CoreConfiguration::Builder* builder) {
+ builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
+ y_absl::make_unique<WeightedTargetLbFactory>());
}
-void grpc_lb_policy_weighted_target_shutdown() {}
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc
index b3503261de..c44bd77f3f 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc
@@ -16,24 +16,61 @@
#include <grpc/support/port_platform.h>
-#include <string.h>
-
+#include <algorithm>
+#include <map>
+#include <memory>
+#include <set>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/support/log.h>
-#include "src/core/ext/filters/client_channel/lb_policy.h"
-#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
+#include "src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h"
+#include "src/core/ext/xds/certificate_provider_store.h"
+#include "src/core/ext/xds/xds_bootstrap_grpc.h"
#include "src/core/ext/xds/xds_certificate_provider.h"
#include "src/core/ext/xds/xds_client.h"
+#include "src/core/ext/xds/xds_client_grpc.h"
#include "src/core/ext/xds/xds_cluster.h"
+#include "src/core/ext/xds/xds_common_types.h"
+#include "src/core/ext/xds/xds_resource_type_impl.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/closure.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/json/json_args.h"
+#include "src/core/lib/json/json_object_loader.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+#include "src/core/lib/load_balancing/lb_policy_factory.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
+#include "src/core/lib/matchers/matchers.h"
+#include "src/core/lib/resolver/server_address.h"
+#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
#include "src/core/lib/security/credentials/xds/xds_credentials.h"
-#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/transport/connectivity_state.h"
namespace grpc_core {
@@ -41,14 +78,30 @@ TraceFlag grpc_cds_lb_trace(false, "cds_lb");
namespace {
-constexpr char kCds[] = "cds_experimental";
+constexpr y_absl::string_view kCds = "cds_experimental";
+
+constexpr int kMaxAggregateClusterRecursionDepth = 16;
// Config for this LB policy.
class CdsLbConfig : public LoadBalancingPolicy::Config {
public:
- explicit CdsLbConfig(TString cluster) : cluster_(std::move(cluster)) {}
+ CdsLbConfig() = default;
+
+ CdsLbConfig(const CdsLbConfig&) = delete;
+ CdsLbConfig& operator=(const CdsLbConfig&) = delete;
+
+ CdsLbConfig(CdsLbConfig&& other) = delete;
+ CdsLbConfig& operator=(CdsLbConfig&& other) = delete;
+
const TString& cluster() const { return cluster_; }
- const char* name() const override { return kCds; }
+ y_absl::string_view name() const override { return kCds; }
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
+ static const auto* loader = JsonObjectLoader<CdsLbConfig>()
+ .Field("cluster", &CdsLbConfig::cluster_)
+ .Finish();
+ return loader;
+ }
private:
TString cluster_;
@@ -57,11 +110,11 @@ class CdsLbConfig : public LoadBalancingPolicy::Config {
// CDS LB policy.
class CdsLb : public LoadBalancingPolicy {
public:
- CdsLb(RefCountedPtr<XdsClient> xds_client, Args args);
+ CdsLb(RefCountedPtr<GrpcXdsClient> xds_client, Args args);
- const char* name() const override { return kCds; }
+ y_absl::string_view name() const override { return kCds; }
- void UpdateLocked(UpdateArgs args) override;
+ y_absl::Status UpdateLocked(UpdateArgs args) override;
void ResetBackoffLocked() override;
void ExitIdleLocked() override;
@@ -83,11 +136,11 @@ class CdsLb : public LoadBalancingPolicy {
},
DEBUG_LOCATION);
}
- void OnError(grpc_error_handle error) override {
+ void OnError(y_absl::Status status) override {
Ref().release(); // Ref held by lambda
parent_->work_serializer()->Run(
- [this, error]() {
- parent_->OnError(name_, error);
+ [this, status]() {
+ parent_->OnError(name_, status);
Unref();
},
DEBUG_LOCATION);
@@ -120,7 +173,7 @@ class CdsLb : public LoadBalancingPolicy {
public:
explicit Helper(RefCountedPtr<CdsLb> parent) : parent_(std::move(parent)) {}
RefCountedPtr<SubchannelInterface> CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) override;
+ ServerAddress address, const ChannelArgs& args) override;
void UpdateState(grpc_connectivity_state state, const y_absl::Status& status,
std::unique_ptr<SubchannelPicker> picker) override;
void RequestReresolution() override;
@@ -136,15 +189,15 @@ class CdsLb : public LoadBalancingPolicy {
void ShutdownLocked() override;
- bool GenerateDiscoveryMechanismForCluster(
- const TString& name, Json::Array* discovery_mechanisms,
- std::set<TString>* clusters_needed);
+ y_absl::StatusOr<bool> GenerateDiscoveryMechanismForCluster(
+ const TString& name, int depth, Json::Array* discovery_mechanisms,
+ std::set<TString>* clusters_added);
void OnClusterChanged(const TString& name,
XdsClusterResource cluster_data);
- void OnError(const TString& name, grpc_error_handle error);
+ void OnError(const TString& name, y_absl::Status status);
void OnResourceDoesNotExist(const TString& name);
- grpc_error_handle UpdateXdsCertificateProvider(
+ y_absl::Status UpdateXdsCertificateProvider(
const TString& cluster_name, const XdsClusterResource& cluster_data);
void CancelClusterDataWatch(y_absl::string_view cluster_name,
@@ -156,10 +209,10 @@ class CdsLb : public LoadBalancingPolicy {
RefCountedPtr<CdsLbConfig> config_;
// Current channel args from the resolver.
- const grpc_channel_args* args_ = nullptr;
+ ChannelArgs args_;
// The xds client.
- RefCountedPtr<XdsClient> xds_client_;
+ RefCountedPtr<GrpcXdsClient> xds_client_;
// Maps from cluster name to the state for that cluster.
// The root of the tree is config_->cluster().
@@ -181,7 +234,7 @@ class CdsLb : public LoadBalancingPolicy {
//
RefCountedPtr<SubchannelInterface> CdsLb::Helper::CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) {
+ ServerAddress address, const ChannelArgs& args) {
if (parent_->shutting_down_) return nullptr;
return parent_->channel_control_helper()->CreateSubchannel(std::move(address),
args);
@@ -192,8 +245,7 @@ void CdsLb::Helper::UpdateState(grpc_connectivity_state state,
std::unique_ptr<SubchannelPicker> picker) {
if (parent_->shutting_down_ || parent_->child_policy_ == nullptr) return;
if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
- gpr_log(GPR_INFO,
- "[cdslb %p] state updated by child: %s message_state: (%s)", this,
+ gpr_log(GPR_INFO, "[cdslb %p] state updated by child: %s (%s)", this,
ConnectivityStateName(state), status.ToString().c_str());
}
parent_->channel_control_helper()->UpdateState(state, status,
@@ -223,7 +275,7 @@ void CdsLb::Helper::AddTraceEvent(TraceSeverity severity,
// CdsLb
//
-CdsLb::CdsLb(RefCountedPtr<XdsClient> xds_client, Args args)
+CdsLb::CdsLb(RefCountedPtr<GrpcXdsClient> xds_client, Args args)
: LoadBalancingPolicy(std::move(args)), xds_client_(std::move(xds_client)) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
gpr_log(GPR_INFO, "[cdslb %p] created -- using xds client %p", this,
@@ -255,8 +307,7 @@ void CdsLb::ShutdownLocked() {
watchers_.clear();
xds_client_.reset(DEBUG_LOCATION, "CdsLb");
}
- grpc_channel_args_destroy(args_);
- args_ = nullptr;
+ args_ = ChannelArgs();
}
void CdsLb::MaybeDestroyChildPolicyLocked() {
@@ -275,7 +326,7 @@ void CdsLb::ExitIdleLocked() {
if (child_policy_ != nullptr) child_policy_->ExitIdleLocked();
}
-void CdsLb::UpdateLocked(UpdateArgs args) {
+y_absl::Status CdsLb::UpdateLocked(UpdateArgs args) {
// Update config.
auto old_config = std::move(config_);
config_ = std::move(args.config);
@@ -284,9 +335,7 @@ void CdsLb::UpdateLocked(UpdateArgs args) {
config_->cluster().c_str());
}
// Update args.
- grpc_channel_args_destroy(args_);
- args_ = args.args;
- args.args = nullptr;
+ args_ = std::move(args.args);
// If cluster name changed, cancel watcher and restart.
if (old_config == nullptr || old_config->cluster() != config_->cluster()) {
if (old_config != nullptr) {
@@ -305,20 +354,27 @@ void CdsLb::UpdateLocked(UpdateArgs args) {
XdsClusterResourceType::StartWatch(xds_client_.get(), config_->cluster(),
std::move(watcher));
}
+ return y_absl::OkStatus();
}
-// This method will attempt to generate one or multiple entries of discovery
-// mechanism recursively:
-// For cluster types EDS or LOGICAL_DNS, one discovery mechanism entry may be
-// generated cluster name, type and other data from the CdsUpdate inserted into
-// the entry and the entry appended to the array of entries.
-// Note, discovery mechanism entry can be generated if an CdsUpdate is
-// available; otherwise, just return false. For cluster type AGGREGATE,
-// recursively call the method for each child cluster.
-bool CdsLb::GenerateDiscoveryMechanismForCluster(
- const TString& name, Json::Array* discovery_mechanisms,
- std::set<TString>* clusters_needed) {
- clusters_needed->insert(name);
+// Generates the discovery mechanism config for the specified cluster name.
+//
+// If no CdsUpdate has been received for the cluster, starts the watcher
+// if needed, and returns false. Otherwise, generates the discovery
+// mechanism config, adds it to *discovery_mechanisms, and returns true.
+//
+// For aggregate clusters, may call itself recursively. Returns an
+// error if depth exceeds kMaxAggregateClusterRecursionDepth.
+y_absl::StatusOr<bool> CdsLb::GenerateDiscoveryMechanismForCluster(
+ const TString& name, int depth, Json::Array* discovery_mechanisms,
+ std::set<TString>* clusters_added) {
+ if (depth == kMaxAggregateClusterRecursionDepth) {
+ return y_absl::FailedPreconditionError(
+ "aggregate cluster graph exceeds max depth");
+ }
+ if (!clusters_added->insert(name).second) {
+ return true; // Discovery mechanism already added from some other branch.
+ }
auto& state = watchers_[name];
// Create a new watcher if needed.
if (state.watcher == nullptr) {
@@ -340,10 +396,10 @@ bool CdsLb::GenerateDiscoveryMechanismForCluster(
bool missing_cluster = false;
for (const TString& child_name :
state.update->prioritized_cluster_names) {
- if (!GenerateDiscoveryMechanismForCluster(
- child_name, discovery_mechanisms, clusters_needed)) {
- missing_cluster = true;
- }
+ auto result = GenerateDiscoveryMechanismForCluster(
+ child_name, depth + 1, discovery_mechanisms, clusters_added);
+ if (!result.ok()) return result;
+ if (!*result) missing_cluster = true;
}
return !missing_cluster;
}
@@ -351,6 +407,45 @@ bool CdsLb::GenerateDiscoveryMechanismForCluster(
{"clusterName", name},
{"max_concurrent_requests", state.update->max_concurrent_requests},
};
+ if (state.update->outlier_detection.has_value()) {
+ auto& outlier_detection_update = state.update->outlier_detection.value();
+ Json::Object outlier_detection;
+ outlier_detection["interval"] =
+ outlier_detection_update.interval.ToJsonString();
+ outlier_detection["baseEjectionTime"] =
+ outlier_detection_update.base_ejection_time.ToJsonString();
+ outlier_detection["maxEjectionTime"] =
+ outlier_detection_update.max_ejection_time.ToJsonString();
+ outlier_detection["maxEjectionPercent"] =
+ outlier_detection_update.max_ejection_percent;
+ if (outlier_detection_update.success_rate_ejection.has_value()) {
+ outlier_detection["successRateEjection"] = Json::Object{
+ {"stdevFactor",
+ outlier_detection_update.success_rate_ejection->stdev_factor},
+ {"enforcementPercentage",
+ outlier_detection_update.success_rate_ejection
+ ->enforcement_percentage},
+ {"minimumHosts",
+ outlier_detection_update.success_rate_ejection->minimum_hosts},
+ {"requestVolume",
+ outlier_detection_update.success_rate_ejection->request_volume},
+ };
+ }
+ if (outlier_detection_update.failure_percentage_ejection.has_value()) {
+ outlier_detection["failurePercentageEjection"] = Json::Object{
+ {"threshold",
+ outlier_detection_update.failure_percentage_ejection->threshold},
+ {"enforcementPercentage",
+ outlier_detection_update.failure_percentage_ejection
+ ->enforcement_percentage},
+ {"minimumHosts",
+ outlier_detection_update.failure_percentage_ejection->minimum_hosts},
+ {"requestVolume", outlier_detection_update
+ .failure_percentage_ejection->request_volume},
+ };
+ }
+ mechanism["outlierDetection"] = std::move(outlier_detection);
+ }
switch (state.update->cluster_type) {
case XdsClusterResource::ClusterType::EDS:
mechanism["type"] = "EDS";
@@ -390,19 +485,23 @@ void CdsLb::OnClusterChanged(const TString& name,
if (it == watchers_.end()) return;
it->second.update = cluster_data;
// Take care of integration with new certificate code.
- grpc_error_handle error = GRPC_ERROR_NONE;
- error = UpdateXdsCertificateProvider(name, it->second.update.value());
- if (error != GRPC_ERROR_NONE) {
- return OnError(name, error);
+ y_absl::Status status =
+ UpdateXdsCertificateProvider(name, it->second.update.value());
+ if (!status.ok()) {
+ return OnError(name, status);
}
// Scan the map starting from the root cluster to generate the list of
// discovery mechanisms. If we don't have some of the data we need (i.e., we
// just started up and not all watchers have returned data yet), then don't
// update the child policy at all.
Json::Array discovery_mechanisms;
- std::set<TString> clusters_needed;
- if (GenerateDiscoveryMechanismForCluster(
- config_->cluster(), &discovery_mechanisms, &clusters_needed)) {
+ std::set<TString> clusters_added;
+ auto result = GenerateDiscoveryMechanismForCluster(
+ config_->cluster(), /*depth=*/0, &discovery_mechanisms, &clusters_added);
+ if (!result.ok()) {
+ return OnError(name, result.status());
+ }
+ if (*result) {
// LB policy is configured by aggregate cluster, not by the individual
// underlying cluster that we may be processing an update for.
auto it = watchers_.find(config_->cluster());
@@ -435,10 +534,12 @@ void CdsLb::OnClusterChanged(const TString& name,
gpr_log(GPR_INFO, "[cdslb %p] generated config for child policy: %s",
this, json_str.c_str());
}
- RefCountedPtr<LoadBalancingPolicy::Config> config =
- LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(json, &error);
- if (error != GRPC_ERROR_NONE) {
- OnError(name, error);
+ grpc_error_handle error = GRPC_ERROR_NONE;
+ auto config =
+ CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
+ json);
+ if (!config.ok()) {
+ OnError(name, y_absl::UnavailableError(config.status().message()));
return;
}
// Create child policy if not already present.
@@ -447,35 +548,37 @@ void CdsLb::OnClusterChanged(const TString& name,
args.work_serializer = work_serializer();
args.args = args_;
args.channel_control_helper = y_absl::make_unique<Helper>(Ref());
- child_policy_ = LoadBalancingPolicyRegistry::CreateLoadBalancingPolicy(
- config->name(), std::move(args));
+ child_policy_ =
+ CoreConfiguration::Get()
+ .lb_policy_registry()
+ .CreateLoadBalancingPolicy((*config)->name(), std::move(args));
if (child_policy_ == nullptr) {
- OnError(name, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "failed to create child policy"));
+ OnError(name, y_absl::UnavailableError("failed to create child policy"));
return;
}
grpc_pollset_set_add_pollset_set(child_policy_->interested_parties(),
interested_parties());
if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
gpr_log(GPR_INFO, "[cdslb %p] created child policy %s (%p)", this,
- config->name(), child_policy_.get());
+ TString((*config)->name()).c_str(), child_policy_.get());
}
}
// Update child policy.
UpdateArgs args;
- args.config = std::move(config);
+ args.config = std::move(*config);
if (xds_certificate_provider_ != nullptr) {
- grpc_arg arg_to_add = xds_certificate_provider_->MakeChannelArg();
- args.args = grpc_channel_args_copy_and_add(args_, &arg_to_add, 1);
+ args.args = args_.SetObject(xds_certificate_provider_);
} else {
- args.args = grpc_channel_args_copy(args_);
+ args.args = args_;
}
- child_policy_->UpdateLocked(std::move(args));
+ // TODO(roth): If the child policy reports an error with the update,
+ // we need to propagate the error to the resolver somehow.
+ (void)child_policy_->UpdateLocked(std::move(args));
}
- // Remove entries in watchers_ for any clusters not in clusters_needed
+ // Remove entries in watchers_ for any clusters not in clusters_added
for (auto it = watchers_.begin(); it != watchers_.end();) {
const TString& cluster_name = it->first;
- if (clusters_needed.find(cluster_name) != clusters_needed.end()) {
+ if (clusters_added.find(cluster_name) != clusters_added.end()) {
++it;
continue;
}
@@ -489,19 +592,18 @@ void CdsLb::OnClusterChanged(const TString& name,
}
}
-void CdsLb::OnError(const TString& name, grpc_error_handle error) {
+void CdsLb::OnError(const TString& name, y_absl::Status status) {
gpr_log(GPR_ERROR, "[cdslb %p] xds error obtaining data for cluster %s: %s",
- this, name.c_str(), grpc_error_std_string(error).c_str());
+ this, name.c_str(), status.ToString().c_str());
// Go into TRANSIENT_FAILURE if we have not yet created the child
// policy (i.e., we have not yet received data from xds). Otherwise,
// we keep running with the data we had previously.
if (child_policy_ == nullptr) {
- y_absl::Status status = grpc_error_to_absl_status(error);
channel_control_helper()->UpdateState(
GRPC_CHANNEL_TRANSIENT_FAILURE, status,
- y_absl::make_unique<TransientFailurePicker>(status));
+ y_absl::make_unique<TransientFailurePicker>(y_absl::UnavailableError(
+ y_absl::StrCat(name, ": ", status.ToString()))));
}
- GRPC_ERROR_UNREF(error);
}
void CdsLb::OnResourceDoesNotExist(const TString& name) {
@@ -517,15 +619,14 @@ void CdsLb::OnResourceDoesNotExist(const TString& name) {
MaybeDestroyChildPolicyLocked();
}
-grpc_error_handle CdsLb::UpdateXdsCertificateProvider(
+y_absl::Status CdsLb::UpdateXdsCertificateProvider(
const TString& cluster_name, const XdsClusterResource& cluster_data) {
// Early out if channel is not configured to use xds security.
- grpc_channel_credentials* channel_credentials =
- grpc_channel_credentials_find_in_args(args_);
+ auto* channel_credentials = args_.GetObject<grpc_channel_credentials>();
if (channel_credentials == nullptr ||
- channel_credentials->type() != kCredentialsTypeXds) {
+ channel_credentials->type() != XdsCredentials::Type()) {
xds_certificate_provider_ = nullptr;
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
if (xds_certificate_provider_ == nullptr) {
xds_certificate_provider_ = MakeRefCounted<XdsCertificateProvider>();
@@ -543,11 +644,9 @@ grpc_error_handle CdsLb::UpdateXdsCertificateProvider(
xds_client_->certificate_provider_store()
.CreateOrGetCertificateProvider(root_provider_instance_name);
if (new_root_provider == nullptr) {
- return grpc_error_set_int(
- GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("Certificate provider instance name: \"",
- root_provider_instance_name, "\" not recognized.")),
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
+ return y_absl::UnavailableError(
+ y_absl::StrCat("Certificate provider instance name: \"",
+ root_provider_instance_name, "\" not recognized."));
}
}
if (root_certificate_provider_ != new_root_provider) {
@@ -582,11 +681,9 @@ grpc_error_handle CdsLb::UpdateXdsCertificateProvider(
xds_client_->certificate_provider_store()
.CreateOrGetCertificateProvider(identity_provider_instance_name);
if (new_identity_provider == nullptr) {
- return grpc_error_set_int(
- GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "Certificate provider instance name: \"",
- identity_provider_instance_name, "\" not recognized.")),
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
+ return y_absl::UnavailableError(
+ y_absl::StrCat("Certificate provider instance name: \"",
+ identity_provider_instance_name, "\" not recognized."));
}
}
if (identity_certificate_provider_ != new_identity_provider) {
@@ -614,7 +711,7 @@ grpc_error_handle CdsLb::UpdateXdsCertificateProvider(
.match_subject_alt_names;
xds_certificate_provider_->UpdateSubjectAlternativeNameMatchers(
cluster_name, match_subject_alt_names);
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
void CdsLb::CancelClusterDataWatch(y_absl::string_view cluster_name,
@@ -639,8 +736,8 @@ class CdsLbFactory : public LoadBalancingPolicyFactory {
public:
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
LoadBalancingPolicy::Args args) const override {
- RefCountedPtr<XdsClient> xds_client =
- XdsClient::GetFromChannelArgs(*args.args);
+ auto xds_client =
+ args.args.GetObjectRef<GrpcXdsClient>(DEBUG_LOCATION, "CdsLb");
if (xds_client == nullptr) {
gpr_log(GPR_ERROR,
"XdsClient not present in channel args -- cannot instantiate "
@@ -650,52 +747,27 @@ class CdsLbFactory : public LoadBalancingPolicyFactory {
return MakeOrphanable<CdsLb>(std::move(xds_client), std::move(args));
}
- const char* name() const override { return kCds; }
+ y_absl::string_view name() const override { return kCds; }
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
- const Json& json, grpc_error_handle* error) const override {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
+ y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+ ParseLoadBalancingConfig(const Json& json) const override {
if (json.type() == Json::Type::JSON_NULL) {
// xds was mentioned as a policy in the deprecated loadBalancingPolicy
// field or in the client API.
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"field:loadBalancingPolicy error:cds policy requires configuration. "
"Please use loadBalancingConfig field of service config instead.");
- return nullptr;
- }
- std::vector<grpc_error_handle> error_list;
- // cluster name.
- TString cluster;
- auto it = json.object_value().find("cluster");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "required field 'cluster' not present"));
- } else if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:cluster error:type should be string"));
- } else {
- cluster = it->second.string_value();
}
- if (!error_list.empty()) {
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("Cds Parser", &error_list);
- return nullptr;
- }
- return MakeRefCounted<CdsLbConfig>(std::move(cluster));
+ return LoadRefCountedFromJson<CdsLbConfig>(
+ json, JsonArgs(), "errors validating cds LB policy config");
}
};
} // namespace
-} // namespace grpc_core
-
-//
-// Plugin registration
-//
-
-void grpc_lb_policy_cds_init() {
- grpc_core::LoadBalancingPolicyRegistry::Builder::
- RegisterLoadBalancingPolicyFactory(
- y_absl::make_unique<grpc_core::CdsLbFactory>());
+void RegisterCdsLbPolicy(CoreConfiguration::Builder* builder) {
+ builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
+ y_absl::make_unique<CdsLbFactory>());
}
-void grpc_lb_policy_cds_shutdown() {}
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds.h
index 9a9c8901c6..3e579d9186 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds.h
@@ -19,6 +19,13 @@
#include <grpc/support/port_platform.h>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/memory/memory.h"
+
#include "src/core/ext/xds/xds_client_stats.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/resolver/server_address.h"
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc
index 1a1d77f1ca..5d4f2fb6ef 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc
@@ -16,28 +16,57 @@
#include <grpc/support/port_platform.h>
-#include <atomic>
+#include <stddef.h>
+#include <stdint.h>
+#include <atomic>
+#include <map>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+#include "y_absl/types/variant.h"
-#include <grpc/grpc.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/support/log.h>
-#include "src/core/ext/filters/client_channel/lb_policy.h"
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds.h"
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h"
-#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
+#include "src/core/ext/xds/xds_bootstrap.h"
+#include "src/core/ext/xds/xds_bootstrap_grpc.h"
#include "src/core/ext/xds/xds_client.h"
+#include "src/core/ext/xds/xds_client_grpc.h"
#include "src/core/ext/xds/xds_client_stats.h"
#include "src/core/ext/xds/xds_endpoint.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/env.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/iomgr/work_serializer.h"
+#include "src/core/lib/gprpp/validation_errors.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/json/json_args.h"
+#include "src/core/lib/json/json_object_loader.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+#include "src/core/lib/load_balancing/lb_policy_factory.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
+#include "src/core/lib/resolver/server_address.h"
+#include "src/core/lib/transport/connectivity_state.h"
namespace grpc_core {
@@ -78,7 +107,8 @@ class CircuitBreakerCallCounterMap {
std::map<Key, CallCounter*> map_ Y_ABSL_GUARDED_BY(mu_);
};
-CircuitBreakerCallCounterMap* g_call_counter_map = nullptr;
+CircuitBreakerCallCounterMap* const g_call_counter_map =
+ new CircuitBreakerCallCounterMap;
RefCountedPtr<CircuitBreakerCallCounterMap::CallCounter>
CircuitBreakerCallCounterMap::GetOrCreate(const TString& cluster,
@@ -111,33 +141,28 @@ CircuitBreakerCallCounterMap::CallCounter::~CallCounter() {
// LB policy
//
-constexpr char kXdsClusterImpl[] = "xds_cluster_impl_experimental";
+constexpr y_absl::string_view kXdsClusterImpl = "xds_cluster_impl_experimental";
// Config for xDS Cluster Impl LB policy.
class XdsClusterImplLbConfig : public LoadBalancingPolicy::Config {
public:
- XdsClusterImplLbConfig(
- RefCountedPtr<LoadBalancingPolicy::Config> child_policy,
- TString cluster_name, TString eds_service_name,
- y_absl::optional<XdsBootstrap::XdsServer> lrs_load_reporting_server,
- uint32_t max_concurrent_requests,
- RefCountedPtr<XdsEndpointResource::DropConfig> drop_config)
- : child_policy_(std::move(child_policy)),
- cluster_name_(std::move(cluster_name)),
- eds_service_name_(std::move(eds_service_name)),
- lrs_load_reporting_server_(std::move(lrs_load_reporting_server)),
- max_concurrent_requests_(max_concurrent_requests),
- drop_config_(std::move(drop_config)) {}
-
- const char* name() const override { return kXdsClusterImpl; }
+ XdsClusterImplLbConfig() = default;
+
+ XdsClusterImplLbConfig(const XdsClusterImplLbConfig&) = delete;
+ XdsClusterImplLbConfig& operator=(const XdsClusterImplLbConfig&) = delete;
+
+ XdsClusterImplLbConfig(XdsClusterImplLbConfig&& other) = delete;
+ XdsClusterImplLbConfig& operator=(XdsClusterImplLbConfig&& other) = delete;
+
+ y_absl::string_view name() const override { return kXdsClusterImpl; }
RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
return child_policy_;
}
const TString& cluster_name() const { return cluster_name_; }
const TString& eds_service_name() const { return eds_service_name_; }
- const y_absl::optional<XdsBootstrap::XdsServer>& lrs_load_reporting_server()
- const {
+ const y_absl::optional<GrpcXdsBootstrap::GrpcXdsServer>&
+ lrs_load_reporting_server() const {
return lrs_load_reporting_server_;
};
uint32_t max_concurrent_requests() const { return max_concurrent_requests_; }
@@ -145,11 +170,15 @@ class XdsClusterImplLbConfig : public LoadBalancingPolicy::Config {
return drop_config_;
}
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs& args,
+ ValidationErrors* errors);
+
private:
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_;
TString cluster_name_;
TString eds_service_name_;
- y_absl::optional<XdsBootstrap::XdsServer> lrs_load_reporting_server_;
+ y_absl::optional<GrpcXdsBootstrap::GrpcXdsServer> lrs_load_reporting_server_;
uint32_t max_concurrent_requests_;
RefCountedPtr<XdsEndpointResource::DropConfig> drop_config_;
};
@@ -159,9 +188,9 @@ class XdsClusterImplLb : public LoadBalancingPolicy {
public:
XdsClusterImplLb(RefCountedPtr<XdsClient> xds_client, Args args);
- const char* name() const override { return kXdsClusterImpl; }
+ y_absl::string_view name() const override { return kXdsClusterImpl; }
- void UpdateLocked(UpdateArgs args) override;
+ y_absl::Status UpdateLocked(UpdateArgs args) override;
void ExitIdleLocked() override;
void ResetBackoffLocked() override;
@@ -221,7 +250,7 @@ class XdsClusterImplLb : public LoadBalancingPolicy {
}
RefCountedPtr<SubchannelInterface> CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) override;
+ ServerAddress address, const ChannelArgs& args) override;
void UpdateState(grpc_connectivity_state state, const y_absl::Status& status,
std::unique_ptr<SubchannelPicker> picker) override;
void RequestReresolution() override;
@@ -238,9 +267,10 @@ class XdsClusterImplLb : public LoadBalancingPolicy {
void ShutdownLocked() override;
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
- const grpc_channel_args* args);
- void UpdateChildPolicyLocked(y_absl::StatusOr<ServerAddressList> addresses,
- const grpc_channel_args* args);
+ const ChannelArgs& args);
+ y_absl::Status UpdateChildPolicyLocked(
+ y_absl::StatusOr<ServerAddressList> addresses, TString resolution_note,
+ const ChannelArgs& args);
void MaybeUpdatePickerLocked();
@@ -439,7 +469,7 @@ void XdsClusterImplLb::ShutdownLocked() {
// the child.
picker_.reset();
drop_stats_.reset();
- xds_client_.reset();
+ xds_client_.reset(DEBUG_LOCATION, "XdsClusterImpl");
}
void XdsClusterImplLb::ExitIdleLocked() {
@@ -452,7 +482,7 @@ void XdsClusterImplLb::ResetBackoffLocked() {
if (child_policy_ != nullptr) child_policy_->ResetBackoffLocked();
}
-void XdsClusterImplLb::UpdateLocked(UpdateArgs args) {
+y_absl::Status XdsClusterImplLb::UpdateLocked(UpdateArgs args) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
gpr_log(GPR_INFO, "[xds_cluster_impl_lb %p] Received update", this);
}
@@ -471,7 +501,8 @@ void XdsClusterImplLb::UpdateLocked(UpdateArgs args) {
"[xds_cluster_impl_lb %p] Failed to get cluster drop stats for "
"LRS server %s, cluster %s, EDS service name %s, load "
"reporting for drops will not be done.",
- this, config_->lrs_load_reporting_server()->server_uri.c_str(),
+ this,
+ config_->lrs_load_reporting_server()->server_uri().c_str(),
config_->cluster_name().c_str(),
config_->eds_service_name().c_str());
}
@@ -493,7 +524,8 @@ void XdsClusterImplLb::UpdateLocked(UpdateArgs args) {
MaybeUpdatePickerLocked();
}
// Update child policy.
- UpdateChildPolicyLocked(std::move(args.addresses), args.args);
+ return UpdateChildPolicyLocked(std::move(args.addresses),
+ std::move(args.resolution_note), args.args);
}
void XdsClusterImplLb::MaybeUpdatePickerLocked() {
@@ -504,8 +536,7 @@ void XdsClusterImplLb::MaybeUpdatePickerLocked() {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
gpr_log(GPR_INFO,
"[xds_cluster_impl_lb %p] updating connectivity (drop all): "
- "state=READY "
- "picker=%p",
+ "state=READY picker=%p",
this, drop_picker.get());
}
channel_control_helper()->UpdateState(GRPC_CHANNEL_READY, y_absl::Status(),
@@ -518,8 +549,7 @@ void XdsClusterImplLb::MaybeUpdatePickerLocked() {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
gpr_log(GPR_INFO,
"[xds_cluster_impl_lb %p] updating connectivity: state=%s "
- "status=(%s) "
- "picker=%p",
+ "status=(%s) picker=%p",
this, ConnectivityStateName(state_), status_.ToString().c_str(),
drop_picker.get());
}
@@ -529,7 +559,7 @@ void XdsClusterImplLb::MaybeUpdatePickerLocked() {
}
OrphanablePtr<LoadBalancingPolicy> XdsClusterImplLb::CreateChildPolicyLocked(
- const grpc_channel_args* args) {
+ const ChannelArgs& args) {
LoadBalancingPolicy::Args lb_policy_args;
lb_policy_args.work_serializer = work_serializer();
lb_policy_args.args = args;
@@ -551,9 +581,9 @@ OrphanablePtr<LoadBalancingPolicy> XdsClusterImplLb::CreateChildPolicyLocked(
return lb_policy;
}
-void XdsClusterImplLb::UpdateChildPolicyLocked(
- y_absl::StatusOr<ServerAddressList> addresses,
- const grpc_channel_args* args) {
+y_absl::Status XdsClusterImplLb::UpdateChildPolicyLocked(
+ y_absl::StatusOr<ServerAddressList> addresses, TString resolution_note,
+ const ChannelArgs& args) {
// Create policy if needed.
if (child_policy_ == nullptr) {
child_policy_ = CreateChildPolicyLocked(args);
@@ -561,18 +591,17 @@ void XdsClusterImplLb::UpdateChildPolicyLocked(
// Construct update args.
UpdateArgs update_args;
update_args.addresses = std::move(addresses);
+ update_args.resolution_note = std::move(resolution_note);
update_args.config = config_->child_policy();
- grpc_arg cluster_arg = grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_XDS_CLUSTER_NAME),
- const_cast<char*>(config_->cluster_name().c_str()));
- update_args.args = grpc_channel_args_copy_and_add(args, &cluster_arg, 1);
+ update_args.args =
+ args.Set(GRPC_ARG_XDS_CLUSTER_NAME, config_->cluster_name());
// Update the policy.
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_impl_lb_trace)) {
gpr_log(GPR_INFO,
"[xds_cluster_impl_lb %p] Updating child policy handler %p", this,
child_policy_.get());
}
- child_policy_->UpdateLocked(std::move(update_args));
+ return child_policy_->UpdateLocked(std::move(update_args));
}
//
@@ -580,7 +609,7 @@ void XdsClusterImplLb::UpdateChildPolicyLocked(
//
RefCountedPtr<SubchannelInterface> XdsClusterImplLb::Helper::CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) {
+ ServerAddress address, const ChannelArgs& args) {
if (xds_cluster_impl_policy_->shutting_down_) return nullptr;
// If load reporting is enabled, wrap the subchannel such that it
// includes the locality stats object, which will be used by the EdsPicker.
@@ -612,7 +641,8 @@ RefCountedPtr<SubchannelInterface> XdsClusterImplLb::Helper::CreateSubchannel(
"not be generated (not wrapping subchannel)",
this,
xds_cluster_impl_policy_->config_->lrs_load_reporting_server()
- ->server_uri.c_str(),
+ ->server_uri()
+ .c_str(),
xds_cluster_impl_policy_->config_->cluster_name().c_str(),
xds_cluster_impl_policy_->config_->eds_service_name().c_str());
}
@@ -662,12 +692,77 @@ void XdsClusterImplLb::Helper::AddTraceEvent(TraceSeverity severity,
// factory
//
+struct DropCategory {
+ TString category;
+ uint32_t requests_per_million;
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<DropCategory>()
+ .Field("category", &DropCategory::category)
+ .Field("requests_per_million", &DropCategory::requests_per_million)
+ .Finish();
+ return loader;
+ }
+};
+
+const JsonLoaderInterface* XdsClusterImplLbConfig::JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<XdsClusterImplLbConfig>()
+ // Note: Some fields require custom processing, so they are
+ // handled in JsonPostLoad() instead.
+ .Field("clusterName", &XdsClusterImplLbConfig::cluster_name_)
+ .OptionalField("edsServiceName",
+ &XdsClusterImplLbConfig::eds_service_name_)
+ .OptionalField("lrsLoadReportingServer",
+ &XdsClusterImplLbConfig::lrs_load_reporting_server_)
+ .OptionalField("maxConcurrentRequests",
+ &XdsClusterImplLbConfig::max_concurrent_requests_)
+ .Finish();
+ return loader;
+}
+
+void XdsClusterImplLbConfig::JsonPostLoad(const Json& json,
+ const JsonArgs& args,
+ ValidationErrors* errors) {
+ // Parse "childPolicy" field.
+ {
+ ValidationErrors::ScopedField field(errors, ".childPolicy");
+ auto it = json.object_value().find("childPolicy");
+ if (it == json.object_value().end()) {
+ errors->AddError("field not present");
+ } else {
+ auto lb_config = CoreConfiguration::Get()
+ .lb_policy_registry()
+ .ParseLoadBalancingConfig(it->second);
+ if (!lb_config.ok()) {
+ errors->AddError(lb_config.status().message());
+ } else {
+ child_policy_ = std::move(*lb_config);
+ }
+ }
+ }
+ // Parse "dropCategories" field.
+ {
+ auto value = LoadJsonObjectField<std::vector<DropCategory>>(
+ json.object_value(), args, "dropCategories", errors);
+ if (value.has_value()) {
+ drop_config_ = MakeRefCounted<XdsEndpointResource::DropConfig>();
+ for (size_t i = 0; i < value->size(); ++i) {
+ DropCategory& drop_category = (*value)[i];
+ drop_config_->AddCategory(std::move(drop_category.category),
+ drop_category.requests_per_million);
+ }
+ }
+ }
+}
+
class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
public:
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
LoadBalancingPolicy::Args args) const override {
- RefCountedPtr<XdsClient> xds_client =
- XdsClient::GetFromChannelArgs(*args.args);
+ auto xds_client = args.args.GetObjectRef<GrpcXdsClient>(DEBUG_LOCATION,
+ "XdsClusterImplLb");
if (xds_client == nullptr) {
gpr_log(GPR_ERROR,
"XdsClient not present in channel args -- cannot instantiate "
@@ -678,195 +773,29 @@ class XdsClusterImplLbFactory : public LoadBalancingPolicyFactory {
std::move(args));
}
- const char* name() const override { return kXdsClusterImpl; }
+ y_absl::string_view name() const override { return kXdsClusterImpl; }
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
- const Json& json, grpc_error_handle* error) const override {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
+ y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+ ParseLoadBalancingConfig(const Json& json) const override {
if (json.type() == Json::Type::JSON_NULL) {
// This policy was configured in the deprecated loadBalancingPolicy
// field or in the client API.
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"field:loadBalancingPolicy error:xds_cluster_impl policy requires "
"configuration. Please use loadBalancingConfig field of service "
"config instead.");
- return nullptr;
- }
- std::vector<grpc_error_handle> error_list;
- // Child policy.
- RefCountedPtr<LoadBalancingPolicy::Config> child_policy;
- auto it = json.object_value().find("childPolicy");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:childPolicy error:required field missing"));
- } else {
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
- child_policy = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
- it->second, &parse_error);
- if (child_policy == nullptr) {
- GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
- std::vector<grpc_error_handle> child_errors;
- child_errors.push_back(parse_error);
- error_list.push_back(
- GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
- }
- }
- // Cluster name.
- TString cluster_name;
- it = json.object_value().find("clusterName");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:clusterName error:required field missing"));
- } else if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:clusterName error:type should be string"));
- } else {
- cluster_name = it->second.string_value();
- }
- // EDS service name.
- TString eds_service_name;
- it = json.object_value().find("edsServiceName");
- if (it != json.object_value().end()) {
- if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:edsServiceName error:type should be string"));
- } else {
- eds_service_name = it->second.string_value();
- }
}
- // LRS load reporting server name.
- y_absl::optional<XdsBootstrap::XdsServer> lrs_load_reporting_server;
- it = json.object_value().find("lrsLoadReportingServer");
- if (it != json.object_value().end()) {
- if (it->second.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:lrsLoadReportingServer error:type should be object"));
- } else {
- grpc_error_handle parser_error;
- lrs_load_reporting_server = XdsBootstrap::XdsServer::Parse(
- it->second.object_value(), &parser_error);
- if (parser_error != GRPC_ERROR_NONE) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("errors parsing lrs_load_reporting_server")));
- error_list.push_back(parser_error);
- }
- }
- }
- // Max concurrent requests.
- uint32_t max_concurrent_requests = 1024;
- it = json.object_value().find("maxConcurrentRequests");
- if (it != json.object_value().end()) {
- if (it->second.type() != Json::Type::NUMBER) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:max_concurrent_requests error:must be of type number"));
- } else {
- max_concurrent_requests =
- gpr_parse_nonnegative_int(it->second.string_value().c_str());
- }
- }
- // Drop config.
- auto drop_config = MakeRefCounted<XdsEndpointResource::DropConfig>();
- it = json.object_value().find("dropCategories");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:dropCategories error:required field missing"));
- } else {
- std::vector<grpc_error_handle> child_errors =
- ParseDropCategories(it->second, drop_config.get());
- if (!child_errors.empty()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_VECTOR(
- "field:dropCategories", &child_errors));
- }
- }
- if (!error_list.empty()) {
- *error = GRPC_ERROR_CREATE_FROM_VECTOR(
- "xds_cluster_impl_experimental LB policy config", &error_list);
- return nullptr;
- }
- return MakeRefCounted<XdsClusterImplLbConfig>(
- std::move(child_policy), std::move(cluster_name),
- std::move(eds_service_name), std::move(lrs_load_reporting_server),
- max_concurrent_requests, std::move(drop_config));
- }
-
- private:
- static std::vector<grpc_error_handle> ParseDropCategories(
- const Json& json, XdsEndpointResource::DropConfig* drop_config) {
- std::vector<grpc_error_handle> error_list;
- if (json.type() != Json::Type::ARRAY) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "dropCategories field is not an array"));
- return error_list;
- }
- for (size_t i = 0; i < json.array_value().size(); ++i) {
- const Json& entry = json.array_value()[i];
- std::vector<grpc_error_handle> child_errors =
- ParseDropCategory(entry, drop_config);
- if (!child_errors.empty()) {
- grpc_error_handle error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("errors parsing index ", i));
- for (size_t i = 0; i < child_errors.size(); ++i) {
- error = grpc_error_add_child(error, child_errors[i]);
- }
- error_list.push_back(error);
- }
- }
- return error_list;
- }
-
- static std::vector<grpc_error_handle> ParseDropCategory(
- const Json& json, XdsEndpointResource::DropConfig* drop_config) {
- std::vector<grpc_error_handle> error_list;
- if (json.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "dropCategories entry is not an object"));
- return error_list;
- }
- TString category;
- auto it = json.object_value().find("category");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"category\" field not present"));
- } else if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"category\" field is not a string"));
- } else {
- category = it->second.string_value();
- }
- uint32_t requests_per_million = 0;
- it = json.object_value().find("requests_per_million");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"requests_per_million\" field is not present"));
- } else if (it->second.type() != Json::Type::NUMBER) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"requests_per_million\" field is not a number"));
- } else {
- requests_per_million =
- gpr_parse_nonnegative_int(it->second.string_value().c_str());
- }
- if (error_list.empty()) {
- drop_config->AddCategory(std::move(category), requests_per_million);
- }
- return error_list;
+ return LoadRefCountedFromJson<XdsClusterImplLbConfig>(
+ json, JsonArgs(),
+ "errors validating xds_cluster_impl LB policy config");
}
};
} // namespace
-} // namespace grpc_core
-
-//
-// Plugin registration
-//
-
-void grpc_lb_policy_xds_cluster_impl_init() {
- grpc_core::g_call_counter_map = new grpc_core::CircuitBreakerCallCounterMap();
- grpc_core::LoadBalancingPolicyRegistry::Builder::
- RegisterLoadBalancingPolicyFactory(
- y_absl::make_unique<grpc_core::XdsClusterImplLbFactory>());
+void RegisterXdsClusterImplLbPolicy(CoreConfiguration::Builder* builder) {
+ builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
+ y_absl::make_unique<XdsClusterImplLbFactory>());
}
-void grpc_lb_policy_xds_cluster_impl_shutdown() {
- delete grpc_core::g_call_counter_map;
-}
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc
index a23a518797..f429a01de7 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc
@@ -16,29 +16,52 @@
#include <grpc/support/port_platform.h>
-#include <set>
+#include <stddef.h>
+
+#include <algorithm>
+#include <map>
+#include <memory>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
#include <vector>
+#include "y_absl/memory/memory.h"
#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_join.h"
#include "y_absl/strings/string_view.h"
-#include <grpc/grpc.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/support/log.h>
-#include "src/core/ext/filters/client_channel/lb_policy.h"
+#include "src/core/ext/filters/client_channel/client_channel.h"
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
-#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
#include "src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/validation_errors.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/pollset_set.h"
#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/iomgr/work_serializer.h"
-#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/json/json_args.h"
+#include "src/core/lib/json/json_object_loader.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+#include "src/core/lib/load_balancing/lb_policy_factory.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
+#include "src/core/lib/resolver/server_address.h"
+#include "src/core/lib/transport/connectivity_state.h"
#define GRPC_XDS_CLUSTER_MANAGER_CHILD_RETENTION_INTERVAL_MS (15 * 60 * 1000)
@@ -48,23 +71,42 @@ TraceFlag grpc_xds_cluster_manager_lb_trace(false, "xds_cluster_manager_lb");
namespace {
-constexpr char kXdsClusterManager[] = "xds_cluster_manager_experimental";
+constexpr y_absl::string_view kXdsClusterManager =
+ "xds_cluster_manager_experimental";
// Config for xds_cluster_manager LB policy.
class XdsClusterManagerLbConfig : public LoadBalancingPolicy::Config {
public:
- using ClusterMap =
- std::map<TString, RefCountedPtr<LoadBalancingPolicy::Config>>;
+ struct Child {
+ RefCountedPtr<LoadBalancingPolicy::Config> config;
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs&,
+ ValidationErrors* errors);
+ };
- explicit XdsClusterManagerLbConfig(ClusterMap cluster_map)
- : cluster_map_(std::move(cluster_map)) {}
+ XdsClusterManagerLbConfig() = default;
- const char* name() const override { return kXdsClusterManager; }
+ XdsClusterManagerLbConfig(const XdsClusterManagerLbConfig&) = delete;
+ XdsClusterManagerLbConfig& operator=(const XdsClusterManagerLbConfig&) =
+ delete;
- const ClusterMap& cluster_map() const { return cluster_map_; }
+ XdsClusterManagerLbConfig(XdsClusterManagerLbConfig&& other) = delete;
+ XdsClusterManagerLbConfig& operator=(XdsClusterManagerLbConfig&& other) =
+ delete;
+
+ y_absl::string_view name() const override { return kXdsClusterManager; }
+
+ const std::map<TString, Child>& cluster_map() const {
+ return cluster_map_;
+ }
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs&,
+ ValidationErrors* errors);
private:
- ClusterMap cluster_map_;
+ std::map<TString, Child> cluster_map_;
};
// xds_cluster_manager LB policy.
@@ -72,9 +114,9 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
public:
explicit XdsClusterManagerLb(Args args);
- const char* name() const override { return kXdsClusterManager; }
+ y_absl::string_view name() const override { return kXdsClusterManager; }
- void UpdateLocked(UpdateArgs args) override;
+ y_absl::Status UpdateLocked(UpdateArgs args) override;
void ExitIdleLocked() override;
void ResetBackoffLocked() override;
@@ -122,9 +164,10 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
void Orphan() override;
- void UpdateLocked(RefCountedPtr<LoadBalancingPolicy::Config> config,
- const y_absl::StatusOr<ServerAddressList>& addresses,
- const grpc_channel_args* args);
+ y_absl::Status UpdateLocked(
+ RefCountedPtr<LoadBalancingPolicy::Config> config,
+ const y_absl::StatusOr<ServerAddressList>& addresses,
+ const ChannelArgs& args);
void ExitIdleLocked();
void ResetBackoffLocked();
void DeactivateLocked();
@@ -147,7 +190,7 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
}
RefCountedPtr<SubchannelInterface> CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) override;
+ ServerAddress address, const ChannelArgs& args) override;
void UpdateState(grpc_connectivity_state state,
const y_absl::Status& status,
std::unique_ptr<SubchannelPicker> picker) override;
@@ -162,7 +205,7 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
// Methods for dealing with the child policy.
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
- const grpc_channel_args* args);
+ const ChannelArgs& args);
static void OnDelayedRemovalTimer(void* arg, grpc_error_handle error);
void OnDelayedRemovalTimerLocked(grpc_error_handle error);
@@ -177,7 +220,6 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
RefCountedPtr<ChildPickerWrapper> picker_wrapper_;
grpc_connectivity_state connectivity_state_ = GRPC_CHANNEL_IDLE;
- bool seen_failure_since_ready_ = false;
// States for delayed removal.
grpc_timer delayed_removal_timer_;
@@ -209,8 +251,10 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
XdsClusterManagerLb::PickResult XdsClusterManagerLb::ClusterPicker::Pick(
PickArgs args) {
+ auto* call_state = static_cast<ClientChannel::LoadBalancedCall::LbCallState*>(
+ args.call_state);
auto cluster_name =
- args.call_state->ExperimentalGetCallAttribute(kXdsClusterAttribute);
+ call_state->GetCallAttribute(XdsClusterAttributeTypeName());
auto it = cluster_map_.find(cluster_name);
if (it != cluster_map_.end()) {
return it->second->Pick(args);
@@ -251,8 +295,8 @@ void XdsClusterManagerLb::ResetBackoffLocked() {
for (auto& p : children_) p.second->ResetBackoffLocked();
}
-void XdsClusterManagerLb::UpdateLocked(UpdateArgs args) {
- if (shutting_down_) return;
+y_absl::Status XdsClusterManagerLb::UpdateLocked(UpdateArgs args) {
+ if (shutting_down_) return y_absl::OkStatus();
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_manager_lb_trace)) {
gpr_log(GPR_INFO, "[xds_cluster_manager_lb %p] Received update", this);
}
@@ -268,18 +312,30 @@ void XdsClusterManagerLb::UpdateLocked(UpdateArgs args) {
}
}
// Add or update the children in the new config.
+ std::vector<TString> errors;
for (const auto& p : config_->cluster_map()) {
const TString& name = p.first;
- const RefCountedPtr<LoadBalancingPolicy::Config>& config = p.second;
+ const RefCountedPtr<LoadBalancingPolicy::Config>& config = p.second.config;
auto& child = children_[name];
if (child == nullptr) {
child = MakeOrphanable<ClusterChild>(Ref(DEBUG_LOCATION, "ClusterChild"),
name);
}
- child->UpdateLocked(config, args.addresses, args.args);
+ y_absl::Status status =
+ child->UpdateLocked(config, args.addresses, args.args);
+ if (!status.ok()) {
+ errors.emplace_back(
+ y_absl::StrCat("child ", name, ": ", status.ToString()));
+ }
}
update_in_progress_ = false;
UpdateStateLocked();
+ // Return status.
+ if (!errors.empty()) {
+ return y_absl::UnavailableError(y_absl::StrCat(
+ "errors from children: [", y_absl::StrJoin(errors, "; "), "]"));
+ }
+ return y_absl::OkStatus();
}
void XdsClusterManagerLb::UpdateStateLocked() {
@@ -420,7 +476,7 @@ void XdsClusterManagerLb::ClusterChild::Orphan() {
OrphanablePtr<LoadBalancingPolicy>
XdsClusterManagerLb::ClusterChild::CreateChildPolicyLocked(
- const grpc_channel_args* args) {
+ const ChannelArgs& args) {
LoadBalancingPolicy::Args lb_policy_args;
lb_policy_args.work_serializer =
xds_cluster_manager_policy_->work_serializer();
@@ -447,11 +503,11 @@ XdsClusterManagerLb::ClusterChild::CreateChildPolicyLocked(
return lb_policy;
}
-void XdsClusterManagerLb::ClusterChild::UpdateLocked(
+y_absl::Status XdsClusterManagerLb::ClusterChild::UpdateLocked(
RefCountedPtr<LoadBalancingPolicy::Config> config,
const y_absl::StatusOr<ServerAddressList>& addresses,
- const grpc_channel_args* args) {
- if (xds_cluster_manager_policy_->shutting_down_) return;
+ const ChannelArgs& args) {
+ if (xds_cluster_manager_policy_->shutting_down_) return y_absl::OkStatus();
// Update child weight.
// Reactivate if needed.
if (delayed_removal_timer_callback_pending_) {
@@ -466,7 +522,7 @@ void XdsClusterManagerLb::ClusterChild::UpdateLocked(
UpdateArgs update_args;
update_args.config = std::move(config);
update_args.addresses = addresses;
- update_args.args = grpc_channel_args_copy(args);
+ update_args.args = args;
// Update the policy.
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_cluster_manager_lb_trace)) {
gpr_log(GPR_INFO,
@@ -476,7 +532,7 @@ void XdsClusterManagerLb::ClusterChild::UpdateLocked(
xds_cluster_manager_policy_.get(), this, name_.c_str(),
child_policy_.get());
}
- child_policy_->UpdateLocked(std::move(update_args));
+ return child_policy_->UpdateLocked(std::move(update_args));
}
void XdsClusterManagerLb::ClusterChild::ExitIdleLocked() {
@@ -494,7 +550,7 @@ void XdsClusterManagerLb::ClusterChild::DeactivateLocked() {
// Start a timer to delete the child.
Ref(DEBUG_LOCATION, "ClusterChild+timer").release();
grpc_timer_init(&delayed_removal_timer_,
- ExecCtx::Get()->Now() +
+ Timestamp::Now() +
Duration::Milliseconds(
GRPC_XDS_CLUSTER_MANAGER_CHILD_RETENTION_INTERVAL_MS),
&on_delayed_removal_timer_);
@@ -513,7 +569,7 @@ void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimer(
void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimerLocked(
grpc_error_handle error) {
delayed_removal_timer_callback_pending_ = false;
- if (error == GRPC_ERROR_NONE && !shutdown_) {
+ if (GRPC_ERROR_IS_NONE(error) && !shutdown_) {
xds_cluster_manager_policy_->children_.erase(name_);
}
Unref(DEBUG_LOCATION, "ClusterChild+timer");
@@ -526,7 +582,7 @@ void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimerLocked(
RefCountedPtr<SubchannelInterface>
XdsClusterManagerLb::ClusterChild::Helper::CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) {
+ ServerAddress address, const ChannelArgs& args) {
if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_) {
return nullptr;
}
@@ -555,19 +611,13 @@ void XdsClusterManagerLb::ClusterChild::Helper::UpdateState(
MakeRefCounted<ChildPickerWrapper>(xds_cluster_manager_child_->name_,
std::move(picker));
// Decide what state to report for aggregation purposes.
- // If we haven't seen a failure since the last time we were in state
- // READY, then we report the state change as-is. However, once we do see
- // a failure, we report TRANSIENT_FAILURE and ignore any subsequent state
- // changes until we go back into state READY.
- if (!xds_cluster_manager_child_->seen_failure_since_ready_) {
- if (state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
- xds_cluster_manager_child_->seen_failure_since_ready_ = true;
- }
- } else {
- if (state != GRPC_CHANNEL_READY) return;
- xds_cluster_manager_child_->seen_failure_since_ready_ = false;
+ // If the last recorded state was TRANSIENT_FAILURE and the new state
+ // is something other than READY, don't change the state.
+ if (xds_cluster_manager_child_->connectivity_state_ !=
+ GRPC_CHANNEL_TRANSIENT_FAILURE ||
+ state == GRPC_CHANNEL_READY) {
+ xds_cluster_manager_child_->connectivity_state_ = state;
}
- xds_cluster_manager_child_->connectivity_state_ = state;
// Notify the LB policy.
xds_cluster_manager_child_->xds_cluster_manager_policy_->UpdateStateLocked();
}
@@ -601,6 +651,52 @@ void XdsClusterManagerLb::ClusterChild::Helper::AddTraceEvent(
// factory
//
+const JsonLoaderInterface* XdsClusterManagerLbConfig::Child::JsonLoader(
+ const JsonArgs&) {
+ // Note: The "childPolicy" field requires custom processing, so
+ // it's handled in JsonPostLoad() instead.
+ static const auto* loader = JsonObjectLoader<Child>().Finish();
+ return loader;
+}
+
+void XdsClusterManagerLbConfig::Child::JsonPostLoad(const Json& json,
+ const JsonArgs&,
+ ValidationErrors* errors) {
+ ValidationErrors::ScopedField field(errors, ".childPolicy");
+ auto it = json.object_value().find("childPolicy");
+ if (it == json.object_value().end()) {
+ errors->AddError("field not present");
+ return;
+ }
+ auto lb_config =
+ CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
+ it->second);
+ if (!lb_config.ok()) {
+ errors->AddError(lb_config.status().message());
+ return;
+ }
+ config = std::move(*lb_config);
+}
+
+const JsonLoaderInterface* XdsClusterManagerLbConfig::JsonLoader(
+ const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<XdsClusterManagerLbConfig>()
+ .Field("children", &XdsClusterManagerLbConfig::cluster_map_)
+ .Finish();
+ return loader;
+}
+
+void XdsClusterManagerLbConfig::JsonPostLoad(const Json&, const JsonArgs&,
+ ValidationErrors* errors) {
+ if (cluster_map_.empty()) {
+ ValidationErrors::ScopedField field(errors, ".children");
+ if (!errors->FieldHasErrors()) {
+ errors->AddError("no valid children configured");
+ }
+ }
+}
+
class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
public:
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
@@ -608,104 +704,29 @@ class XdsClusterManagerLbFactory : public LoadBalancingPolicyFactory {
return MakeOrphanable<XdsClusterManagerLb>(std::move(args));
}
- const char* name() const override { return kXdsClusterManager; }
+ y_absl::string_view name() const override { return kXdsClusterManager; }
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
- const Json& json, grpc_error_handle* error) const override {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
+ y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+ ParseLoadBalancingConfig(const Json& json) const override {
if (json.type() == Json::Type::JSON_NULL) {
// xds_cluster_manager was mentioned as a policy in the deprecated
// loadBalancingPolicy field or in the client API.
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"field:loadBalancingPolicy error:xds_cluster_manager policy requires "
"configuration. Please use loadBalancingConfig field of service "
"config instead.");
- return nullptr;
- }
- std::vector<grpc_error_handle> error_list;
- XdsClusterManagerLbConfig::ClusterMap cluster_map;
- std::set<TString /*cluster_name*/> clusters_to_be_used;
- auto it = json.object_value().find("children");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:children error:required field not present"));
- } else if (it->second.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:children error:type should be object"));
- } else {
- for (const auto& p : it->second.object_value()) {
- const TString& child_name = p.first;
- if (child_name.empty()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:children element error: name cannot be empty"));
- continue;
- }
- RefCountedPtr<LoadBalancingPolicy::Config> child_config;
- std::vector<grpc_error_handle> child_errors =
- ParseChildConfig(p.second, &child_config);
- if (!child_errors.empty()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(
- y_absl::StrCat("field:children name:", child_name), &child_errors));
- } else {
- cluster_map[child_name] = std::move(child_config);
- clusters_to_be_used.insert(child_name);
- }
- }
- }
- if (cluster_map.empty()) {
- error_list.push_back(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("no valid children configured"));
- }
- if (!error_list.empty()) {
- *error = GRPC_ERROR_CREATE_FROM_VECTOR(
- "xds_cluster_manager_experimental LB policy config", &error_list);
- return nullptr;
- }
- return MakeRefCounted<XdsClusterManagerLbConfig>(std::move(cluster_map));
- }
-
- private:
- static std::vector<grpc_error_handle> ParseChildConfig(
- const Json& json,
- RefCountedPtr<LoadBalancingPolicy::Config>* child_config) {
- std::vector<grpc_error_handle> error_list;
- if (json.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "value should be of type object"));
- return error_list;
}
- auto it = json.object_value().find("childPolicy");
- if (it == json.object_value().end()) {
- error_list.push_back(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("did not find childPolicy"));
- } else {
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
- *child_config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
- it->second, &parse_error);
- if (*child_config == nullptr) {
- GPR_DEBUG_ASSERT(parse_error != GRPC_ERROR_NONE);
- std::vector<grpc_error_handle> child_errors;
- child_errors.push_back(parse_error);
- error_list.push_back(
- GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
- }
- }
- return error_list;
+ return LoadRefCountedFromJson<XdsClusterManagerLbConfig>(
+ json, JsonArgs(),
+ "errors validating xds_cluster_manager LB policy config");
}
};
} // namespace
-} // namespace grpc_core
-
-//
-// Plugin registration
-//
-
-void grpc_lb_policy_xds_cluster_manager_init() {
- grpc_core::LoadBalancingPolicyRegistry::Builder::
- RegisterLoadBalancingPolicyFactory(
- y_absl::make_unique<grpc_core::XdsClusterManagerLbFactory>());
+void RegisterXdsClusterManagerLbPolicy(CoreConfiguration::Builder* builder) {
+ builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
+ y_absl::make_unique<XdsClusterManagerLbFactory>());
}
-void grpc_lb_policy_xds_cluster_manager_shutdown() {}
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc
index 4d29c43c8d..9fd537125c 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc
@@ -17,38 +17,63 @@
#include <grpc/support/port_platform.h>
#include <inttypes.h>
-#include <limits.h>
-
+#include <stddef.h>
+
+#include <algorithm>
+#include <map>
+#include <memory>
+#include <set>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/types/optional.h"
-#include <grpc/grpc.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/log.h>
-#include "src/core/ext/filters/client_channel/client_channel.h"
-#include "src/core/ext/filters/client_channel/lb_policy.h"
#include "src/core/ext/filters/client_channel/lb_policy/address_filtering.h"
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
+#include "src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h"
#include "src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h"
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds.h"
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h"
-#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
#include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
#include "src/core/ext/xds/xds_bootstrap.h"
-#include "src/core/ext/xds/xds_channel_args.h"
+#include "src/core/ext/xds/xds_bootstrap_grpc.h"
#include "src/core/ext/xds/xds_client.h"
+#include "src/core/ext/xds/xds_client_grpc.h"
#include "src/core/ext/xds/xds_client_stats.h"
#include "src/core/ext/xds/xds_endpoint.h"
+#include "src/core/ext/xds/xds_resource_type_impl.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/work_serializer.h"
+#include "src/core/lib/gprpp/validation_errors.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/json/json_args.h"
+#include "src/core/lib/json/json_object_loader.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+#include "src/core/lib/load_balancing/lb_policy_factory.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
+#include "src/core/lib/resolver/resolver.h"
#include "src/core/lib/resolver/resolver_registry.h"
#include "src/core/lib/resolver/server_address.h"
-#include "src/core/lib/transport/error_utils.h"
-#include "src/core/lib/uri/uri_parser.h"
+#include "src/core/lib/transport/connectivity_state.h"
#define GRPC_EDS_DEFAULT_FALLBACK_TIMEOUT 10000
@@ -60,14 +85,15 @@ const char* kXdsLocalityNameAttributeKey = "xds_locality_name";
namespace {
-constexpr char kXdsClusterResolver[] = "xds_cluster_resolver_experimental";
+constexpr y_absl::string_view kXdsClusterResolver =
+ "xds_cluster_resolver_experimental";
// Config for EDS LB policy.
class XdsClusterResolverLbConfig : public LoadBalancingPolicy::Config {
public:
struct DiscoveryMechanism {
TString cluster_name;
- y_absl::optional<XdsBootstrap::XdsServer> lrs_load_reporting_server;
+ y_absl::optional<GrpcXdsBootstrap::GrpcXdsServer> lrs_load_reporting_server;
uint32_t max_concurrent_requests;
enum DiscoveryMechanismType {
EDS,
@@ -77,31 +103,54 @@ class XdsClusterResolverLbConfig : public LoadBalancingPolicy::Config {
TString eds_service_name;
TString dns_hostname;
+ // This is type Json::Object instead of OutlierDetectionConfig, because we
+ // don't actually need to validate the contents of the outlier detection
+ // config here. In this case, the JSON is generated by the CDS policy
+ // instead of coming from service config, so it's not actually any better
+ // to catch the problem here than it is to catch it in the
+ // outlier_detection policy itself, so here we just act as a pass-through.
+ y_absl::optional<Json::Object> outlier_detection_lb_config;
+
bool operator==(const DiscoveryMechanism& other) const {
return (cluster_name == other.cluster_name &&
lrs_load_reporting_server == other.lrs_load_reporting_server &&
max_concurrent_requests == other.max_concurrent_requests &&
type == other.type &&
eds_service_name == other.eds_service_name &&
- dns_hostname == other.dns_hostname);
+ dns_hostname == other.dns_hostname &&
+ outlier_detection_lb_config == other.outlier_detection_lb_config);
}
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs& args,
+ ValidationErrors* errors);
};
- XdsClusterResolverLbConfig(
- std::vector<DiscoveryMechanism> discovery_mechanisms, Json xds_lb_policy)
- : discovery_mechanisms_(std::move(discovery_mechanisms)),
- xds_lb_policy_(std::move(xds_lb_policy)) {}
+ XdsClusterResolverLbConfig() = default;
+
+ XdsClusterResolverLbConfig(const XdsClusterResolverLbConfig&) = delete;
+ XdsClusterResolverLbConfig& operator=(const XdsClusterResolverLbConfig&) =
+ delete;
+
+ XdsClusterResolverLbConfig(XdsClusterResolverLbConfig&& other) = delete;
+ XdsClusterResolverLbConfig& operator=(XdsClusterResolverLbConfig&& other) =
+ delete;
+
+ y_absl::string_view name() const override { return kXdsClusterResolver; }
- const char* name() const override { return kXdsClusterResolver; }
const std::vector<DiscoveryMechanism>& discovery_mechanisms() const {
return discovery_mechanisms_;
}
const Json& xds_lb_policy() const { return xds_lb_policy_; }
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs& args,
+ ValidationErrors* errors);
+
private:
std::vector<DiscoveryMechanism> discovery_mechanisms_;
- Json xds_lb_policy_;
+ Json xds_lb_policy_ = Json::Object{{"ROUND_ROBIN", Json::Object()}};
};
// Xds Cluster Resolver LB policy.
@@ -109,9 +158,9 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
public:
XdsClusterResolverLb(RefCountedPtr<XdsClient> xds_client, Args args);
- const char* name() const override { return kXdsClusterResolver; }
+ y_absl::string_view name() const override { return kXdsClusterResolver; }
- void UpdateLocked(UpdateArgs args) override;
+ y_absl::Status UpdateLocked(UpdateArgs args) override;
void ResetBackoffLocked() override;
void ExitIdleLocked() override;
@@ -176,11 +225,11 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
},
DEBUG_LOCATION);
}
- void OnError(grpc_error_handle error) override {
+ void OnError(y_absl::Status status) override {
Ref().release(); // ref held by callback
discovery_mechanism_->parent()->work_serializer()->Run(
- [this, error]() {
- OnErrorHelper(error);
+ [this, status]() {
+ OnErrorHelper(status);
Unref();
},
DEBUG_LOCATION);
@@ -200,16 +249,44 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
// in methods of this class rather than in lambdas to work around an MSVC
// bug.
void OnResourceChangedHelper(XdsEndpointResource update) {
+ TString resolution_note;
+ if (update.priorities.empty()) {
+ resolution_note = y_absl::StrCat(
+ "EDS resource ", discovery_mechanism_->GetEdsResourceName(),
+ " contains no localities");
+ } else {
+ std::set<TString> empty_localities;
+ for (const auto& priority : update.priorities) {
+ for (const auto& p : priority.localities) {
+ if (p.second.endpoints.empty()) {
+ empty_localities.insert(p.first->AsHumanReadableString());
+ }
+ }
+ }
+ if (!empty_localities.empty()) {
+ resolution_note = y_absl::StrCat(
+ "EDS resource ", discovery_mechanism_->GetEdsResourceName(),
+ " contains empty localities: [",
+ y_absl::StrJoin(empty_localities, "; "), "]");
+ }
+ }
discovery_mechanism_->parent()->OnEndpointChanged(
- discovery_mechanism_->index(), std::move(update));
+ discovery_mechanism_->index(), std::move(update),
+ std::move(resolution_note));
}
- void OnErrorHelper(grpc_error_handle error) {
- discovery_mechanism_->parent()->OnError(discovery_mechanism_->index(),
- error);
+ void OnErrorHelper(y_absl::Status status) {
+ discovery_mechanism_->parent()->OnError(
+ discovery_mechanism_->index(),
+ y_absl::StrCat("EDS watcher error for resource ",
+ discovery_mechanism_->GetEdsResourceName(), " (",
+ status.ToString(), ")"));
}
void OnResourceDoesNotExistHelper() {
discovery_mechanism_->parent()->OnResourceDoesNotExist(
- discovery_mechanism_->index());
+ discovery_mechanism_->index(),
+ y_absl::StrCat("EDS resource ",
+ discovery_mechanism_->GetEdsResourceName(),
+ " does not exist"));
}
RefCountedPtr<EdsDiscoveryMechanism> discovery_mechanism_;
};
@@ -264,6 +341,11 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
// access protected member in base class.
friend class ResolverResultHandler;
+ y_absl::string_view GetDnsHostname() const {
+ auto& config = parent()->config_->discovery_mechanisms()[index()];
+ return config.dns_hostname;
+ }
+
OrphanablePtr<Resolver> resolver_;
};
@@ -271,6 +353,8 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
OrphanablePtr<DiscoveryMechanism> discovery_mechanism;
// Most recent update reported by the discovery mechanism.
y_absl::optional<XdsEndpointResource> latest_update;
+ // Last resolution note reported by the discovery mechanism, if any.
+ TString resolution_note;
// State used to retain child policy names for priority policy.
std::vector<size_t /*child_number*/> priority_child_numbers;
size_t next_available_child_number = 0;
@@ -293,7 +377,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
}
RefCountedPtr<SubchannelInterface> CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) override;
+ ServerAddress address, const ChannelArgs& args) override;
void UpdateState(grpc_connectivity_state state, const y_absl::Status& status,
std::unique_ptr<SubchannelPicker> picker) override;
// This is a no-op, because we get the addresses from the xds
@@ -311,25 +395,26 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
void ShutdownLocked() override;
- void OnEndpointChanged(size_t index, XdsEndpointResource update);
- void OnError(size_t index, grpc_error_handle error);
- void OnResourceDoesNotExist(size_t index);
+ void OnEndpointChanged(size_t index, XdsEndpointResource update,
+ TString resolution_note);
+ void OnError(size_t index, TString resolution_note);
+ void OnResourceDoesNotExist(size_t index, TString resolution_note);
void MaybeDestroyChildPolicyLocked();
- void UpdateChildPolicyLocked();
+ y_absl::Status UpdateChildPolicyLocked();
OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
- const grpc_channel_args* args);
+ const ChannelArgs& args);
ServerAddressList CreateChildPolicyAddressesLocked();
+ TString CreateChildPolicyResolutionNoteLocked();
RefCountedPtr<Config> CreateChildPolicyConfigLocked();
- grpc_channel_args* CreateChildPolicyArgsLocked(
- const grpc_channel_args* args_in);
+ ChannelArgs CreateChildPolicyArgsLocked(const ChannelArgs& args_in);
// The xds client and endpoint watcher.
RefCountedPtr<XdsClient> xds_client_;
// Current channel args and config from the resolver.
- const grpc_channel_args* args_ = nullptr;
+ ChannelArgs args_;
RefCountedPtr<XdsClusterResolverLbConfig> config_;
// Internal state.
@@ -347,7 +432,7 @@ class XdsClusterResolverLb : public LoadBalancingPolicy {
RefCountedPtr<SubchannelInterface>
XdsClusterResolverLb::Helper::CreateSubchannel(ServerAddress address,
- const grpc_channel_args& args) {
+ const ChannelArgs& args) {
if (xds_cluster_resolver_policy_->shutting_down_) return nullptr;
return xds_cluster_resolver_policy_->channel_control_helper()
->CreateSubchannel(std::move(address), args);
@@ -417,30 +502,26 @@ void XdsClusterResolverLb::EdsDiscoveryMechanism::Orphan() {
//
void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::Start() {
- TString target =
- parent()->config_->discovery_mechanisms()[index()].dns_hostname;
- grpc_channel_args* args = nullptr;
- FakeResolverResponseGenerator* fake_resolver_response_generator =
- grpc_channel_args_find_pointer<FakeResolverResponseGenerator>(
- parent()->args_,
+ TString target;
+ ChannelArgs args = parent()->args_;
+ auto* fake_resolver_response_generator =
+ args.GetPointer<FakeResolverResponseGenerator>(
GRPC_ARG_XDS_LOGICAL_DNS_CLUSTER_FAKE_RESOLVER_RESPONSE_GENERATOR);
if (fake_resolver_response_generator != nullptr) {
- target = y_absl::StrCat("fake:", target);
- grpc_arg new_arg = FakeResolverResponseGenerator::MakeChannelArg(
- fake_resolver_response_generator);
- args = grpc_channel_args_copy_and_add(parent()->args_, &new_arg, 1);
+ target = y_absl::StrCat("fake:", GetDnsHostname());
+ args = args.SetObject(fake_resolver_response_generator->Ref());
} else {
- target = y_absl::StrCat("dns:", target);
- args = grpc_channel_args_copy(parent()->args_);
+ target = y_absl::StrCat("dns:", GetDnsHostname());
}
resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
target.c_str(), args, parent()->interested_parties(),
parent()->work_serializer(),
y_absl::make_unique<ResolverResultHandler>(
Ref(DEBUG_LOCATION, "LogicalDNSDiscoveryMechanism")));
- grpc_channel_args_destroy(args);
if (resolver_ == nullptr) {
- parent()->OnResourceDoesNotExist(index());
+ parent()->OnResourceDoesNotExist(
+ index(),
+ y_absl::StrCat("error creating DNS resolver for ", GetDnsHostname()));
return;
}
resolver_->StartLocked();
@@ -470,15 +551,18 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::Orphan() {
void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
ReportResult(Resolver::Result result) {
+ XdsClusterResolverLb* lb_policy = discovery_mechanism_->parent();
+ size_t index = discovery_mechanism_->index();
if (!result.addresses.ok()) {
- discovery_mechanism_->parent()->OnError(
- discovery_mechanism_->index(),
- absl_status_to_grpc_error(result.addresses.status()));
+ if (result.resolution_note.empty()) {
+ result.resolution_note = y_absl::StrCat(
+ "DNS resolution failed for ", discovery_mechanism_->GetDnsHostname(),
+ " (", result.addresses.status().ToString(), ")");
+ }
+ lb_policy->OnError(index, result.resolution_note);
return;
}
// Convert resolver result to EDS update.
- // TODO(roth): Figure out a way to pass resolution_note through to the
- // child policy.
XdsEndpointResource update;
XdsEndpointResource::Priority::Locality locality;
locality.name = MakeRefCounted<XdsLocalityName>("", "", "");
@@ -487,8 +571,8 @@ void XdsClusterResolverLb::LogicalDNSDiscoveryMechanism::ResolverResultHandler::
XdsEndpointResource::Priority priority;
priority.localities.emplace(locality.name.get(), std::move(locality));
update.priorities.emplace_back(std::move(priority));
- discovery_mechanism_->parent()->OnEndpointChanged(
- discovery_mechanism_->index(), std::move(update));
+ lb_policy->OnEndpointChanged(index, std::move(update),
+ std::move(result.resolution_note));
}
//
@@ -537,9 +621,7 @@ void XdsClusterResolverLb::ShutdownLocked() {
MaybeDestroyChildPolicyLocked();
discovery_mechanisms_.clear();
xds_client_.reset(DEBUG_LOCATION, "XdsClusterResolverLb");
- // Destroy channel args.
- grpc_channel_args_destroy(args_);
- args_ = nullptr;
+ args_ = ChannelArgs();
}
void XdsClusterResolverLb::MaybeDestroyChildPolicyLocked() {
@@ -550,20 +632,19 @@ void XdsClusterResolverLb::MaybeDestroyChildPolicyLocked() {
}
}
-void XdsClusterResolverLb::UpdateLocked(UpdateArgs args) {
+y_absl::Status XdsClusterResolverLb::UpdateLocked(UpdateArgs args) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_cluster_resolver_trace)) {
gpr_log(GPR_INFO, "[xds_cluster_resolver_lb %p] Received update", this);
}
- const bool is_initial_update = args_ == nullptr;
+ const bool is_initial_update = args_ == ChannelArgs();
// Update config.
auto old_config = std::move(config_);
config_ = std::move(args.config);
// Update args.
- grpc_channel_args_destroy(args_);
- args_ = args.args;
- args.args = nullptr;
+ args_ = std::move(args.args);
// Update child policy if needed.
- if (child_policy_ != nullptr) UpdateChildPolicyLocked();
+ y_absl::Status status;
+ if (child_policy_ != nullptr) status = UpdateChildPolicyLocked();
// Create endpoint watcher if needed.
if (is_initial_update) {
for (const auto& config : config_->discovery_mechanisms()) {
@@ -589,6 +670,7 @@ void XdsClusterResolverLb::UpdateLocked(UpdateArgs args) {
discovery_mechanism.discovery_mechanism->Start();
}
}
+ return status;
}
void XdsClusterResolverLb::ResetBackoffLocked() {
@@ -602,13 +684,14 @@ void XdsClusterResolverLb::ExitIdleLocked() {
}
void XdsClusterResolverLb::OnEndpointChanged(size_t index,
- XdsEndpointResource update) {
+ XdsEndpointResource update,
+ TString resolution_note) {
if (shutting_down_) return;
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_xds_cluster_resolver_trace)) {
gpr_log(GPR_INFO,
"[xds_cluster_resolver_lb %p] Received update from xds client"
- " for discovery mechanism %" PRIuPTR "",
- this, index);
+ " for discovery mechanism %" PRIuPTR " (resolution_note=\"%s\")",
+ this, index, resolution_note.c_str());
}
DiscoveryMechanismEntry& discovery_entry = discovery_mechanisms_[index];
// We need at least one priority for each discovery mechanism, just so that we
@@ -681,6 +764,7 @@ void XdsClusterResolverLb::OnEndpointChanged(size_t index,
}
// Save update.
discovery_entry.latest_update = std::move(update);
+ discovery_entry.resolution_note = std::move(resolution_note);
discovery_entry.priority_child_numbers = std::move(priority_child_numbers);
// If any discovery mechanism has not received its first update,
// wait until that happens before creating the child policy.
@@ -695,31 +779,33 @@ void XdsClusterResolverLb::OnEndpointChanged(size_t index,
if (!mechanism.latest_update.has_value()) return;
}
// Update child policy.
- UpdateChildPolicyLocked();
+ // TODO(roth): If the child policy reports an error with the update,
+ // we need to propagate that error back to the resolver somehow.
+ (void)UpdateChildPolicyLocked();
}
-void XdsClusterResolverLb::OnError(size_t index, grpc_error_handle error) {
+void XdsClusterResolverLb::OnError(size_t index, TString resolution_note) {
gpr_log(GPR_ERROR,
"[xds_cluster_resolver_lb %p] discovery mechanism %" PRIuPTR
- " xds watcher reported error: %s",
- this, index, grpc_error_std_string(error).c_str());
- GRPC_ERROR_UNREF(error);
+ " reported error: %s",
+ this, index, resolution_note.c_str());
if (shutting_down_) return;
if (!discovery_mechanisms_[index].latest_update.has_value()) {
- // Call OnEndpointChanged with an empty update just like
- // OnResourceDoesNotExist.
- OnEndpointChanged(index, XdsEndpointResource());
+ // Call OnEndpointChanged() with an empty update just like
+ // OnResourceDoesNotExist().
+ OnEndpointChanged(index, XdsEndpointResource(), std::move(resolution_note));
}
}
-void XdsClusterResolverLb::OnResourceDoesNotExist(size_t index) {
+void XdsClusterResolverLb::OnResourceDoesNotExist(size_t index,
+ TString resolution_note) {
gpr_log(GPR_ERROR,
"[xds_cluster_resolver_lb %p] discovery mechanism %" PRIuPTR
- " resource does not exist",
- this, index);
+ " resource does not exist: %s",
+ this, index, resolution_note.c_str());
if (shutting_down_) return;
- // Call OnEndpointChanged with an empty update.
- OnEndpointChanged(index, XdsEndpointResource());
+ // Call OnEndpointChanged() with an empty update.
+ OnEndpointChanged(index, XdsEndpointResource(), std::move(resolution_note));
}
//
@@ -768,6 +854,16 @@ ServerAddressList XdsClusterResolverLb::CreateChildPolicyAddressesLocked() {
return addresses;
}
+TString XdsClusterResolverLb::CreateChildPolicyResolutionNoteLocked() {
+ std::vector<y_absl::string_view> resolution_notes;
+ for (const auto& discovery_entry : discovery_mechanisms_) {
+ if (!discovery_entry.resolution_note.empty()) {
+ resolution_notes.push_back(discovery_entry.resolution_note);
+ }
+ }
+ return y_absl::StrJoin(resolution_notes, "; ");
+}
+
RefCountedPtr<LoadBalancingPolicy::Config>
XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
Json::Object priority_children;
@@ -857,9 +953,27 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
xds_cluster_impl_config["lrsLoadReportingServer"] =
discovery_config.lrs_load_reporting_server->ToJson();
}
- Json locality_picking_policy = Json::Array{Json::Object{
- {"xds_cluster_impl_experimental", std::move(xds_cluster_impl_config)},
- }};
+ Json locality_picking_policy;
+ if (XdsOutlierDetectionEnabled()) {
+ Json::Object outlier_detection_config;
+ if (discovery_entry.config().outlier_detection_lb_config.has_value()) {
+ outlier_detection_config =
+ discovery_entry.config().outlier_detection_lb_config.value();
+ }
+ outlier_detection_config["childPolicy"] = Json::Array{Json::Object{
+ {"xds_cluster_impl_experimental",
+ std::move(xds_cluster_impl_config)},
+ }};
+ locality_picking_policy = Json::Array{Json::Object{
+ {"outlier_detection_experimental",
+ std::move(outlier_detection_config)},
+ }};
+ } else {
+ locality_picking_policy = Json::Array{Json::Object{
+ {"xds_cluster_impl_experimental",
+ std::move(xds_cluster_impl_config)},
+ }};
+ }
// Add priority entry, with the appropriate child name.
TString child_name = discovery_entry.GetChildPolicyName(priority);
priority_priorities.emplace_back(child_name);
@@ -886,17 +1000,17 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
"[xds_cluster_resolver_lb %p] generated config for child policy: %s",
this, json_str.c_str());
}
- grpc_error_handle error = GRPC_ERROR_NONE;
- RefCountedPtr<LoadBalancingPolicy::Config> config =
- LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(json, &error);
- if (error != GRPC_ERROR_NONE) {
+ auto config =
+ CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
+ json);
+ if (!config.ok()) {
// This should never happen, but if it does, we basically have no
// way to fix it, so we put the channel in TRANSIENT_FAILURE.
gpr_log(GPR_ERROR,
"[xds_cluster_resolver_lb %p] error parsing generated child policy "
"config -- "
"will put channel in TRANSIENT_FAILURE: %s",
- this, grpc_error_std_string(error).c_str());
+ this, config.status().ToString().c_str());
y_absl::Status status = y_absl::InternalError(
"xds_cluster_resolver LB policy: error parsing generated child policy "
"config");
@@ -905,15 +1019,16 @@ XdsClusterResolverLb::CreateChildPolicyConfigLocked() {
y_absl::make_unique<TransientFailurePicker>(status));
return nullptr;
}
- return config;
+ return std::move(*config);
}
-void XdsClusterResolverLb::UpdateChildPolicyLocked() {
- if (shutting_down_) return;
+y_absl::Status XdsClusterResolverLb::UpdateChildPolicyLocked() {
+ if (shutting_down_) return y_absl::OkStatus();
UpdateArgs update_args;
update_args.config = CreateChildPolicyConfigLocked();
- if (update_args.config == nullptr) return;
+ if (update_args.config == nullptr) return y_absl::OkStatus();
update_args.addresses = CreateChildPolicyAddressesLocked();
+ update_args.resolution_note = CreateChildPolicyResolutionNoteLocked();
update_args.args = CreateChildPolicyArgsLocked(args_);
if (child_policy_ == nullptr) {
child_policy_ = CreateChildPolicyLocked(update_args.args);
@@ -922,29 +1037,25 @@ void XdsClusterResolverLb::UpdateChildPolicyLocked() {
gpr_log(GPR_INFO, "[xds_cluster_resolver_lb %p] Updating child policy %p",
this, child_policy_.get());
}
- child_policy_->UpdateLocked(std::move(update_args));
+ return child_policy_->UpdateLocked(std::move(update_args));
}
-grpc_channel_args* XdsClusterResolverLb::CreateChildPolicyArgsLocked(
- const grpc_channel_args* args) {
- y_absl::InlinedVector<grpc_arg, 2> new_args = {
- // Inhibit client-side health checking, since the balancer does this
- // for us.
- grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_INHIBIT_HEALTH_CHECKING), 1),
- };
- return grpc_channel_args_copy_and_add(args, new_args.data(), new_args.size());
+ChannelArgs XdsClusterResolverLb::CreateChildPolicyArgsLocked(
+ const ChannelArgs& args) {
+ // Inhibit client-side health checking, since the balancer does this
+ // for us.
+ return args.Set(GRPC_ARG_INHIBIT_HEALTH_CHECKING, 1);
}
OrphanablePtr<LoadBalancingPolicy>
-XdsClusterResolverLb::CreateChildPolicyLocked(const grpc_channel_args* args) {
+XdsClusterResolverLb::CreateChildPolicyLocked(const ChannelArgs& args) {
LoadBalancingPolicy::Args lb_policy_args;
lb_policy_args.work_serializer = work_serializer();
lb_policy_args.args = args;
lb_policy_args.channel_control_helper =
y_absl::make_unique<Helper>(Ref(DEBUG_LOCATION, "Helper"));
OrphanablePtr<LoadBalancingPolicy> lb_policy =
- LoadBalancingPolicyRegistry::CreateLoadBalancingPolicy(
+ CoreConfiguration::Get().lb_policy_registry().CreateLoadBalancingPolicy(
"priority_experimental", std::move(lb_policy_args));
if (GPR_UNLIKELY(lb_policy == nullptr)) {
gpr_log(GPR_ERROR,
@@ -968,207 +1079,158 @@ XdsClusterResolverLb::CreateChildPolicyLocked(const grpc_channel_args* args) {
// factory
//
-class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
- public:
- OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
- LoadBalancingPolicy::Args args) const override {
- RefCountedPtr<XdsClient> xds_client =
- XdsClient::GetFromChannelArgs(*args.args);
- if (xds_client == nullptr) {
- gpr_log(GPR_ERROR,
- "XdsClient not present in channel args -- cannot instantiate "
- "xds_cluster_resolver LB policy");
- return nullptr;
+const JsonLoaderInterface*
+XdsClusterResolverLbConfig::DiscoveryMechanism::JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<DiscoveryMechanism>()
+ // Note: Several fields requires custom processing,
+ // so they are handled in JsonPostLoad() instead.
+ .Field("clusterName", &DiscoveryMechanism::cluster_name)
+ .OptionalField("lrsLoadReportingServer",
+ &DiscoveryMechanism::lrs_load_reporting_server)
+ .OptionalField("max_concurrent_requests",
+ &DiscoveryMechanism::max_concurrent_requests)
+ .OptionalField("outlierDetection",
+ &DiscoveryMechanism::outlier_detection_lb_config,
+ "outlier_detection")
+ .Finish();
+ return loader;
+}
+
+void XdsClusterResolverLbConfig::DiscoveryMechanism::JsonPostLoad(
+ const Json& json, const JsonArgs& args, ValidationErrors* errors) {
+ // Parse "type".
+ {
+ auto type_field = LoadJsonObjectField<TString>(json.object_value(),
+ args, "type", errors);
+ if (type_field.has_value()) {
+ if (*type_field == "EDS") {
+ type = DiscoveryMechanismType::EDS;
+ } else if (*type_field == "LOGICAL_DNS") {
+ type = DiscoveryMechanismType::LOGICAL_DNS;
+ } else {
+ ValidationErrors::ScopedField field(errors, ".type");
+ errors->AddError(y_absl::StrCat("unknown type \"", *type_field, "\""));
+ }
}
- return MakeOrphanable<XdsClusterResolverChildHandler>(std::move(xds_client),
- std::move(args));
}
+ // Parse "edsServiceName" if type is EDS.
+ if (type == DiscoveryMechanismType::EDS) {
+ auto value = LoadJsonObjectField<TString>(json.object_value(), args,
+ "edsServiceName", errors,
+ /*required=*/false);
+ if (value.has_value()) eds_service_name = std::move(*value);
+ }
+ // Parse "dnsHostname" if type is LOGICAL_DNS.
+ if (type == DiscoveryMechanismType::LOGICAL_DNS) {
+ auto value = LoadJsonObjectField<TString>(json.object_value(), args,
+ "dnsHostname", errors);
+ if (value.has_value()) dns_hostname = std::move(*value);
+ }
+}
- const char* name() const override { return kXdsClusterResolver; }
+const JsonLoaderInterface* XdsClusterResolverLbConfig::JsonLoader(
+ const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<XdsClusterResolverLbConfig>()
+ // Note: The "xdsLbPolicy" field requires custom processing,
+ // so it's handled in JsonPostLoad() instead.
+ .Field("discoveryMechanisms",
+ &XdsClusterResolverLbConfig::discovery_mechanisms_)
+ .Finish();
+ return loader;
+}
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
- const Json& json, grpc_error_handle* error) const override {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
- if (json.type() == Json::Type::JSON_NULL) {
- // xds_cluster_resolver was mentioned as a policy in the deprecated
- // loadBalancingPolicy field or in the client API.
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:loadBalancingPolicy error:xds_cluster_resolver policy "
- "requires configuration. "
- "Please use loadBalancingConfig field of service config instead.");
- return nullptr;
- }
- std::vector<grpc_error_handle> error_list;
- std::vector<XdsClusterResolverLbConfig::DiscoveryMechanism>
- discovery_mechanisms;
- auto it = json.object_value().find("discoveryMechanisms");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:discoveryMechanisms error:required field missing"));
- } else if (it->second.type() != Json::Type::ARRAY) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:discoveryMechanisms error:type should be array"));
- } else {
- const Json::Array& array = it->second.array_value();
- for (size_t i = 0; i < array.size(); ++i) {
- XdsClusterResolverLbConfig::DiscoveryMechanism discovery_mechanism;
- std::vector<grpc_error_handle> discovery_mechanism_errors =
- ParseDiscoveryMechanism(array[i], &discovery_mechanism);
- if (!discovery_mechanism_errors.empty()) {
- grpc_error_handle error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("field:discovery_mechanism element: ", i, " error"));
- for (const grpc_error_handle& discovery_mechanism_error :
- discovery_mechanism_errors) {
- error = grpc_error_add_child(error, discovery_mechanism_error);
- }
- error_list.push_back(error);
- }
- discovery_mechanisms.emplace_back(std::move(discovery_mechanism));
- }
+void XdsClusterResolverLbConfig::JsonPostLoad(const Json& json,
+ const JsonArgs& args,
+ ValidationErrors* errors) {
+ // Validate discoveryMechanisms.
+ {
+ ValidationErrors::ScopedField field(errors, ".discoveryMechanisms");
+ if (!errors->FieldHasErrors() && discovery_mechanisms_.empty()) {
+ errors->AddError("must be non-empty");
}
- if (discovery_mechanisms.empty()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:discovery_mechanism error:list is missing or empty"));
- }
- Json xds_lb_policy = Json::Object{
- {"ROUND_ROBIN", Json::Object()},
- };
- it = json.object_value().find("xdsLbPolicy");
+ }
+ // Parse "xdsLbPolicy".
+ {
+ ValidationErrors::ScopedField field(errors, ".xdsLbPolicy");
+ auto it = json.object_value().find("xdsLbPolicy");
if (it != json.object_value().end()) {
if (it->second.type() != Json::Type::ARRAY) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:xdsLbPolicy error:type should be array"));
+ errors->AddError("is not an array");
} else {
const Json::Array& array = it->second.array_value();
for (size_t i = 0; i < array.size(); ++i) {
+ ValidationErrors::ScopedField field(errors,
+ y_absl::StrCat("[", i, "]"));
if (array[i].type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:xdsLbPolicy error:element should be of type object"));
+ errors->AddError("is not an object");
continue;
}
const Json::Object& policy = array[i].object_value();
auto policy_it = policy.find("ROUND_ROBIN");
if (policy_it != policy.end()) {
+ ValidationErrors::ScopedField field(errors, "[\"ROUND_ROBIN\"]");
if (policy_it->second.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:ROUND_ROBIN error:type should be object"));
+ errors->AddError("is not an object");
}
break;
}
- policy_it = policy.find("RING_HASH");
- if (policy_it != policy.end()) {
- xds_lb_policy = array[i];
- size_t min_ring_size;
- size_t max_ring_size;
- ParseRingHashLbConfig(policy_it->second, &min_ring_size,
- &max_ring_size, &error_list);
+ {
+ ValidationErrors::ScopedField field(errors, "[\"RING_HASH\"]");
+ policy_it = policy.find("RING_HASH");
+ if (policy_it != policy.end()) {
+ LoadFromJson<RingHashConfig>(policy_it->second, args, errors);
+ xds_lb_policy_ = array[i];
+ }
}
}
}
}
- // Construct config.
- if (error_list.empty()) {
- return MakeRefCounted<XdsClusterResolverLbConfig>(
- std::move(discovery_mechanisms), std::move(xds_lb_policy));
- } else {
- *error = GRPC_ERROR_CREATE_FROM_VECTOR(
- "xds_cluster_resolver_experimental LB policy config", &error_list);
+ }
+}
+
+class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
+ public:
+ OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
+ LoadBalancingPolicy::Args args) const override {
+ auto xds_client = args.args.GetObjectRef<GrpcXdsClient>(
+ DEBUG_LOCATION, "XdsClusterResolverLbFactory");
+ if (xds_client == nullptr) {
+ gpr_log(GPR_ERROR,
+ "XdsClient not present in channel args -- cannot instantiate "
+ "xds_cluster_resolver LB policy");
return nullptr;
}
+ return MakeOrphanable<XdsClusterResolverChildHandler>(std::move(xds_client),
+ std::move(args));
}
- private:
- static std::vector<grpc_error_handle> ParseDiscoveryMechanism(
- const Json& json,
- XdsClusterResolverLbConfig::DiscoveryMechanism* discovery_mechanism) {
- std::vector<grpc_error_handle> error_list;
- if (json.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "value should be of type object"));
- return error_list;
- }
- // Cluster name.
- auto it = json.object_value().find("clusterName");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:clusterName error:required field missing"));
- } else if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:clusterName error:type should be string"));
- } else {
- discovery_mechanism->cluster_name = it->second.string_value();
- }
- // LRS load reporting server name.
- it = json.object_value().find("lrsLoadReportingServer");
- if (it != json.object_value().end()) {
- if (it->second.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:lrsLoadReportingServer error:type should be object"));
- } else {
- grpc_error_handle parse_error;
- discovery_mechanism->lrs_load_reporting_server.emplace(
- XdsBootstrap::XdsServer::Parse(it->second, &parse_error));
- if (parse_error != GRPC_ERROR_NONE) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("errors parsing lrs_load_reporting_server")));
- error_list.push_back(parse_error);
- }
- }
- }
- // Max concurrent requests.
- discovery_mechanism->max_concurrent_requests = 1024;
- it = json.object_value().find("max_concurrent_requests");
- if (it != json.object_value().end()) {
- if (it->second.type() != Json::Type::NUMBER) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:max_concurrent_requests error:must be of type number"));
- } else {
- discovery_mechanism->max_concurrent_requests =
- gpr_parse_nonnegative_int(it->second.string_value().c_str());
- }
+ y_absl::string_view name() const override { return kXdsClusterResolver; }
+
+ y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+ ParseLoadBalancingConfig(const Json& json) const override {
+ if (json.type() == Json::Type::JSON_NULL) {
+ // xds_cluster_resolver was mentioned as a policy in the deprecated
+ // loadBalancingPolicy field or in the client API.
+ return y_absl::InvalidArgumentError(
+ "field:loadBalancingPolicy error:xds_cluster_resolver policy "
+ "requires configuration. "
+ "Please use loadBalancingConfig field of service config instead.");
}
- // Discovery Mechanism type
- it = json.object_value().find("type");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:type error:required field missing"));
- } else if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:type error:type should be string"));
- } else {
- if (it->second.string_value() == "EDS") {
- discovery_mechanism->type = XdsClusterResolverLbConfig::
- DiscoveryMechanism::DiscoveryMechanismType::EDS;
- it = json.object_value().find("edsServiceName");
- if (it != json.object_value().end()) {
- if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:edsServiceName error:type should be string"));
- } else {
- discovery_mechanism->eds_service_name = it->second.string_value();
- }
- }
- } else if (it->second.string_value() == "LOGICAL_DNS") {
- discovery_mechanism->type = XdsClusterResolverLbConfig::
- DiscoveryMechanism::DiscoveryMechanismType::LOGICAL_DNS;
- it = json.object_value().find("dnsHostname");
- if (it == json.object_value().end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:dnsHostname error:required field missing"));
- } else if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:dnsHostname error:type should be string"));
- } else {
- discovery_mechanism->dns_hostname = it->second.string_value();
- }
- } else {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:type error:invalid type"));
+ class XdsJsonArgs : public JsonArgs {
+ public:
+ bool IsEnabled(y_absl::string_view key) const override {
+ if (key == "outlier_detection") return XdsOutlierDetectionEnabled();
+ return true;
}
- }
- return error_list;
+ };
+ return LoadRefCountedFromJson<XdsClusterResolverLbConfig>(
+ json, XdsJsonArgs(),
+ "errors validating xds_cluster_resolver LB policy config");
}
+ private:
class XdsClusterResolverChildHandler : public ChildPolicyHandler {
public:
XdsClusterResolverChildHandler(RefCountedPtr<XdsClient> xds_client,
@@ -1177,6 +1239,10 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
&grpc_lb_xds_cluster_resolver_trace),
xds_client_(std::move(xds_client)) {}
+ ~XdsClusterResolverChildHandler() override {
+ xds_client_.reset(DEBUG_LOCATION, "XdsClusterResolverChildHandler");
+ }
+
bool ConfigChangeRequiresNewPolicyInstance(
LoadBalancingPolicy::Config* old_config,
LoadBalancingPolicy::Config* new_config) const override {
@@ -1186,13 +1252,38 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
static_cast<XdsClusterResolverLbConfig*>(old_config);
XdsClusterResolverLbConfig* new_xds_cluster_resolver_config =
static_cast<XdsClusterResolverLbConfig*>(new_config);
- return old_xds_cluster_resolver_config->discovery_mechanisms() !=
- new_xds_cluster_resolver_config->discovery_mechanisms();
+ if (old_xds_cluster_resolver_config->discovery_mechanisms().size() !=
+ new_xds_cluster_resolver_config->discovery_mechanisms().size()) {
+ return true;
+ }
+ for (size_t i = 0;
+ i < old_xds_cluster_resolver_config->discovery_mechanisms().size();
+ ++i) {
+ auto& old_discovery_mechanism =
+ old_xds_cluster_resolver_config->discovery_mechanisms()[i];
+ auto& new_discovery_mechanism =
+ new_xds_cluster_resolver_config->discovery_mechanisms()[i];
+ if (old_discovery_mechanism.type != new_discovery_mechanism.type ||
+ old_discovery_mechanism.cluster_name !=
+ new_discovery_mechanism.cluster_name ||
+ old_discovery_mechanism.eds_service_name !=
+ new_discovery_mechanism.eds_service_name ||
+ old_discovery_mechanism.dns_hostname !=
+ new_discovery_mechanism.dns_hostname ||
+ !(old_discovery_mechanism.lrs_load_reporting_server ==
+ new_discovery_mechanism.lrs_load_reporting_server)) {
+ return true;
+ }
+ }
+ return false;
}
OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
- const char* /*name*/, LoadBalancingPolicy::Args args) const override {
- return MakeOrphanable<XdsClusterResolverLb>(xds_client_, std::move(args));
+ y_absl::string_view /*name*/,
+ LoadBalancingPolicy::Args args) const override {
+ return MakeOrphanable<XdsClusterResolverLb>(
+ xds_client_->Ref(DEBUG_LOCATION, "XdsClusterResolverLb"),
+ std::move(args));
}
private:
@@ -1202,16 +1293,9 @@ class XdsClusterResolverLbFactory : public LoadBalancingPolicyFactory {
} // namespace
-} // namespace grpc_core
-
-//
-// Plugin registration
-//
-
-void grpc_lb_policy_xds_cluster_resolver_init() {
- grpc_core::LoadBalancingPolicyRegistry::Builder::
- RegisterLoadBalancingPolicyFactory(
- y_absl::make_unique<grpc_core::XdsClusterResolverLbFactory>());
+void RegisterXdsClusterResolverLbPolicy(CoreConfiguration::Builder* builder) {
+ builder->lb_policy_registry()->RegisterLoadBalancingPolicyFactory(
+ y_absl::make_unique<XdsClusterResolverLbFactory>());
}
-void grpc_lb_policy_xds_cluster_resolver_shutdown() {}
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_factory.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_factory.h
deleted file mode 100644
index d8163cee9e..0000000000
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_factory.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *
- * Copyright 2015 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_FACTORY_H
-#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_FACTORY_H
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/ext/filters/client_channel/lb_policy.h"
-#include "src/core/lib/gprpp/orphanable.h"
-#include "src/core/lib/json/json.h"
-
-namespace grpc_core {
-
-class LoadBalancingPolicyFactory {
- public:
- virtual ~LoadBalancingPolicyFactory() {}
-
- /// Returns a new LB policy instance.
- virtual OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
- LoadBalancingPolicy::Args) const = 0;
-
- /// Returns the LB policy name that this factory provides.
- /// Caller does NOT take ownership of result.
- virtual const char* name() const = 0;
-
- virtual RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
- const Json& json, grpc_error_handle* error) const = 0;
-};
-
-} // namespace grpc_core
-
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_FACTORY_H */
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_registry.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_registry.cc
deleted file mode 100644
index 259f8dd572..0000000000
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_registry.cc
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- *
- * Copyright 2015 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
-
-#include <string.h>
-
-#include "y_absl/container/inlined_vector.h"
-#include "y_absl/strings/str_cat.h"
-#include "y_absl/strings/str_format.h"
-#include "y_absl/strings/str_join.h"
-
-#include "src/core/lib/gpr/string.h"
-
-namespace grpc_core {
-
-namespace {
-
-class RegistryState {
- public:
- RegistryState() {}
-
- void RegisterLoadBalancingPolicyFactory(
- std::unique_ptr<LoadBalancingPolicyFactory> factory) {
- gpr_log(GPR_DEBUG, "registering LB policy factory for \"%s\"",
- factory->name());
- for (size_t i = 0; i < factories_.size(); ++i) {
- GPR_ASSERT(strcmp(factories_[i]->name(), factory->name()) != 0);
- }
- factories_.push_back(std::move(factory));
- }
-
- LoadBalancingPolicyFactory* GetLoadBalancingPolicyFactory(
- const char* name) const {
- for (size_t i = 0; i < factories_.size(); ++i) {
- if (strcmp(name, factories_[i]->name()) == 0) {
- return factories_[i].get();
- }
- }
- return nullptr;
- }
-
- private:
- y_absl::InlinedVector<std::unique_ptr<LoadBalancingPolicyFactory>, 10>
- factories_;
-};
-
-RegistryState* g_state = nullptr;
-
-} // namespace
-
-//
-// LoadBalancingPolicyRegistry::Builder
-//
-
-void LoadBalancingPolicyRegistry::Builder::InitRegistry() {
- if (g_state == nullptr) g_state = new RegistryState();
-}
-
-void LoadBalancingPolicyRegistry::Builder::ShutdownRegistry() {
- delete g_state;
- g_state = nullptr;
-}
-
-void LoadBalancingPolicyRegistry::Builder::RegisterLoadBalancingPolicyFactory(
- std::unique_ptr<LoadBalancingPolicyFactory> factory) {
- InitRegistry();
- g_state->RegisterLoadBalancingPolicyFactory(std::move(factory));
-}
-
-//
-// LoadBalancingPolicyRegistry
-//
-
-OrphanablePtr<LoadBalancingPolicy>
-LoadBalancingPolicyRegistry::CreateLoadBalancingPolicy(
- const char* name, LoadBalancingPolicy::Args args) {
- GPR_ASSERT(g_state != nullptr);
- // Find factory.
- LoadBalancingPolicyFactory* factory =
- g_state->GetLoadBalancingPolicyFactory(name);
- if (factory == nullptr) return nullptr; // Specified name not found.
- // Create policy via factory.
- return factory->CreateLoadBalancingPolicy(std::move(args));
-}
-
-bool LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
- const char* name, bool* requires_config) {
- GPR_ASSERT(g_state != nullptr);
- auto* factory = g_state->GetLoadBalancingPolicyFactory(name);
- if (factory == nullptr) {
- return false;
- }
- if (requires_config != nullptr) {
- grpc_error_handle error = GRPC_ERROR_NONE;
- // Check if the load balancing policy allows an empty config
- *requires_config =
- factory->ParseLoadBalancingConfig(Json(), &error) == nullptr;
- GRPC_ERROR_UNREF(error);
- }
- return true;
-}
-
-namespace {
-
-// Returns the JSON node of policy (with both policy name and config content)
-// given the JSON node of a LoadBalancingConfig array.
-grpc_error_handle ParseLoadBalancingConfigHelper(
- const Json& lb_config_array, Json::Object::const_iterator* result) {
- if (lb_config_array.type() != Json::Type::ARRAY) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("type should be array");
- }
- // Find the first LB policy that this client supports.
- std::vector<y_absl::string_view> policies_tried;
- for (const Json& lb_config : lb_config_array.array_value()) {
- if (lb_config.type() != Json::Type::OBJECT) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "child entry should be of type object");
- }
- if (lb_config.object_value().empty()) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "no policy found in child entry");
- }
- if (lb_config.object_value().size() > 1) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("oneOf violation");
- }
- auto it = lb_config.object_value().begin();
- if (it->second.type() != Json::Type::OBJECT) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "child entry should be of type object");
- }
- // If we support this policy, then select it.
- if (LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
- it->first.c_str(), nullptr)) {
- *result = it;
- return GRPC_ERROR_NONE;
- }
- policies_tried.push_back(it->first);
- }
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "No known policies in list: ", y_absl::StrJoin(policies_tried, " ")));
-}
-
-} // namespace
-
-RefCountedPtr<LoadBalancingPolicy::Config>
-LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
- const Json& json, grpc_error_handle* error) {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
- GPR_ASSERT(g_state != nullptr);
- Json::Object::const_iterator policy;
- *error = ParseLoadBalancingConfigHelper(json, &policy);
- if (*error != GRPC_ERROR_NONE) {
- return nullptr;
- }
- // Find factory.
- LoadBalancingPolicyFactory* factory =
- g_state->GetLoadBalancingPolicyFactory(policy->first.c_str());
- if (factory == nullptr) {
- *error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrFormat("Factory not found for policy \"%s\"", policy->first));
- return nullptr;
- }
- // Parse load balancing config via factory.
- return factory->ParseLoadBalancingConfig(policy->second, error);
-}
-
-} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_registry.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_registry.h
deleted file mode 100644
index aba44a8a70..0000000000
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy_registry.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *
- * Copyright 2015 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H
-#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
-#include "src/core/lib/gprpp/memory.h"
-#include "src/core/lib/gprpp/orphanable.h"
-
-namespace grpc_core {
-
-class LoadBalancingPolicyRegistry {
- public:
- /// Methods used to create and populate the LoadBalancingPolicyRegistry.
- /// NOT THREAD SAFE -- to be used only during global gRPC
- /// initialization and shutdown.
- class Builder {
- public:
- /// Global initialization and shutdown hooks.
- static void InitRegistry();
- static void ShutdownRegistry();
-
- /// Registers an LB policy factory. The factory will be used to create an
- /// LB policy whose name matches that of the factory.
- static void RegisterLoadBalancingPolicyFactory(
- std::unique_ptr<LoadBalancingPolicyFactory> factory);
- };
-
- /// Creates an LB policy of the type specified by \a name.
- static OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
- const char* name, LoadBalancingPolicy::Args args);
-
- /// Returns true if the LB policy factory specified by \a name exists in this
- /// registry. If the load balancing policy requires a config to be specified
- /// then sets \a requires_config to true.
- static bool LoadBalancingPolicyExists(const char* name,
- bool* requires_config);
-
- /// Returns a parsed object of the load balancing policy to be used from a
- /// LoadBalancingConfig array \a json.
- static RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
- const Json& json, grpc_error_handle* error);
-};
-
-} // namespace grpc_core
-
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H */
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/local_subchannel_pool.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/local_subchannel_pool.cc
index 49338ecc5e..53045b187c 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/local_subchannel_pool.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/local_subchannel_pool.cc
@@ -20,6 +20,10 @@
#include "src/core/ext/filters/client_channel/local_subchannel_pool.h"
+#include <utility>
+
+#include <grpc/support/log.h>
+
#include "src/core/ext/filters/client_channel/subchannel.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/local_subchannel_pool.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/local_subchannel_pool.h
index f039f6da9a..e16079d2b2 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/local_subchannel_pool.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/local_subchannel_pool.h
@@ -24,6 +24,7 @@
#include <map>
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper.h
deleted file mode 100644
index 3e297d9a6f..0000000000
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- *
- * Copyright 2017 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_H
-#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_H
-
-#include <grpc/support/port_platform.h>
-
-#include <grpc/impl/codegen/grpc_types.h>
-
-#include "src/core/lib/iomgr/resolve_address.h"
-
-namespace grpc_core {
-
-class ProxyMapperInterface {
- public:
- virtual ~ProxyMapperInterface() = default;
-
- /// Determines the proxy name to resolve for \a server_uri.
- /// If no proxy is needed, returns false.
- /// Otherwise, sets \a name_to_resolve, optionally sets \a new_args,
- /// and returns true.
- virtual bool MapName(const char* server_uri, const grpc_channel_args* args,
- char** name_to_resolve,
- grpc_channel_args** new_args) = 0;
-
- /// Determines the proxy address to use to contact \a address.
- /// If no proxy is needed, returns false.
- /// Otherwise, sets \a new_address, optionally sets \a new_args, and
- /// returns true.
- virtual bool MapAddress(const grpc_resolved_address& address,
- const grpc_channel_args* args,
- grpc_resolved_address** new_address,
- grpc_channel_args** new_args) = 0;
-};
-
-} // namespace grpc_core
-
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_H */
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper_registry.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper_registry.cc
deleted file mode 100644
index 2fc2572525..0000000000
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper_registry.cc
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *
- * Copyright 2017 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
-
-#include <memory>
-#include <vector>
-
-namespace grpc_core {
-
-namespace {
-
-using ProxyMapperList = std::vector<std::unique_ptr<ProxyMapperInterface>>;
-ProxyMapperList* g_proxy_mapper_list;
-
-} // namespace
-
-void ProxyMapperRegistry::Init() {
- if (g_proxy_mapper_list == nullptr) {
- g_proxy_mapper_list = new ProxyMapperList();
- }
-}
-
-void ProxyMapperRegistry::Shutdown() {
- delete g_proxy_mapper_list;
- // Clean up in case we re-initialze later.
- // TODO(roth): This should ideally live in Init(). However, if we did this
- // there, then we would do it AFTER we start registering proxy mappers from
- // third-party plugins, so they'd never show up (and would leak memory).
- // We probably need some sort of dependency system for plugins to fix
- // this.
- g_proxy_mapper_list = nullptr;
-}
-
-void ProxyMapperRegistry::Register(
- bool at_start, std::unique_ptr<ProxyMapperInterface> mapper) {
- Init();
- if (at_start) {
- g_proxy_mapper_list->insert(g_proxy_mapper_list->begin(),
- std::move(mapper));
- } else {
- g_proxy_mapper_list->emplace_back(std::move(mapper));
- }
-}
-
-bool ProxyMapperRegistry::MapName(const char* server_uri,
- const grpc_channel_args* args,
- char** name_to_resolve,
- grpc_channel_args** new_args) {
- Init();
- for (const auto& mapper : *g_proxy_mapper_list) {
- if (mapper->MapName(server_uri, args, name_to_resolve, new_args)) {
- return true;
- }
- }
- return false;
-}
-
-bool ProxyMapperRegistry::MapAddress(const grpc_resolved_address& address,
- const grpc_channel_args* args,
- grpc_resolved_address** new_address,
- grpc_channel_args** new_args) {
- Init();
- for (const auto& mapper : *g_proxy_mapper_list) {
- if (mapper->MapAddress(address, args, new_address, new_args)) {
- return true;
- }
- }
- return false;
-}
-
-} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper_registry.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper_registry.h
deleted file mode 100644
index b6273e1adf..0000000000
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/proxy_mapper_registry.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *
- * Copyright 2017 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_REGISTRY_H
-#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_REGISTRY_H
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/ext/filters/client_channel/proxy_mapper.h"
-
-namespace grpc_core {
-
-class ProxyMapperRegistry {
- public:
- static void Init();
- static void Shutdown();
-
- /// Registers a new proxy mapper.
- /// If \a at_start is true, the new mapper will be at the beginning of
- /// the list. Otherwise, it will be added to the end.
- static void Register(bool at_start,
- std::unique_ptr<ProxyMapperInterface> mapper);
-
- static bool MapName(const char* server_uri, const grpc_channel_args* args,
- char** name_to_resolve, grpc_channel_args** new_args);
-
- static bool MapAddress(const grpc_resolved_address& address,
- const grpc_channel_args* args,
- grpc_resolved_address** new_address,
- grpc_channel_args** new_args);
-};
-
-} // namespace grpc_core
-
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_PROXY_MAPPER_REGISTRY_H */
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc
index 2a5ea2d6c6..ad78fb9ccc 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc
@@ -14,21 +14,40 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/iomgr/port.h"
+#include <algorithm>
+
+#include "src/core/lib/iomgr/port.h" // IWYU pragma: keep
#ifdef GRPC_HAVE_UNIX_SOCKET
+#include <string.h>
+#include <sys/socket.h>
#include <sys/un.h>
-#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/strip.h"
+
+#include <grpc/support/log.h>
-#include "src/core/lib/address_utils/parse_address.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/port.h"
+#include "src/core/lib/iomgr/resolved_address.h"
+#include "src/core/lib/resolver/resolver.h"
+#include "src/core/lib/resolver/resolver_factory.h"
#include "src/core/lib/resolver/resolver_registry.h"
#include "src/core/lib/resolver/server_address.h"
+#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
namespace {
@@ -38,15 +57,13 @@ class BinderResolver : public Resolver {
BinderResolver(ServerAddressList addresses, ResolverArgs args)
: result_handler_(std::move(args.result_handler)),
addresses_(std::move(addresses)),
- channel_args_(grpc_channel_args_copy(args.args)) {}
-
- ~BinderResolver() override { grpc_channel_args_destroy(channel_args_); };
+ channel_args_(std::move(args.args)) {}
void StartLocked() override {
Result result;
result.addresses = std::move(addresses_);
result.args = channel_args_;
- channel_args_ = nullptr;
+ channel_args_ = ChannelArgs();
result_handler_->ReportResult(std::move(result));
}
@@ -55,7 +72,7 @@ class BinderResolver : public Resolver {
private:
std::unique_ptr<ResultHandler> result_handler_;
ServerAddressList addresses_;
- const grpc_channel_args* channel_args_ = nullptr;
+ ChannelArgs channel_args_;
};
class BinderResolverFactory : public ResolverFactory {
@@ -108,14 +125,14 @@ class BinderResolverFactory : public ResolverFactory {
return false;
}
grpc_error_handle error = BinderAddrPopulate(uri.path(), &addr);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_ERROR, "%s", grpc_error_std_string(error).c_str());
GRPC_ERROR_UNREF(error);
return false;
}
}
if (addresses != nullptr) {
- addresses->emplace_back(addr, nullptr /* args */);
+ addresses->emplace_back(addr, ChannelArgs());
}
return true;
}
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
index 8d69f1ffb5..673feb85e7 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc
@@ -16,35 +16,70 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#include <algorithm>
+#include <functional>
+#include <map>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/strip.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/event_engine/event_engine.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+
#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/global_config_generic.h"
+#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/iomgr/resolved_address.h"
+#include "src/core/lib/resolver/resolver.h"
+#include "src/core/lib/resolver/resolver_factory.h"
+#include "src/core/lib/service_config/service_config.h"
+#include "src/core/lib/uri/uri_parser.h"
#if GRPC_ARES == 1
-#include <limits.h>
#include <stdio.h>
#include <string.h>
#include <address_sorting/address_sorting.h>
-#include "y_absl/container/inlined_vector.h"
+#include "y_absl/container/flat_hash_set.h"
#include "y_absl/strings/str_cat.h"
-#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
-
-#include "src/core/ext/filters/client_channel/http_connect_handshaker.h"
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
#include "src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h"
+#include "src/core/ext/filters/client_channel/resolver/polling_resolver.h"
#include "src/core/lib/backoff/backoff.h"
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/event_engine/handle_containers.h"
#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
#include "src/core/lib/iomgr/gethostname.h"
#include "src/core/lib/iomgr/resolve_address.h"
-#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/iomgr/work_serializer.h"
#include "src/core/lib/json/json.h"
#include "src/core/lib/resolver/resolver_registry.h"
#include "src/core/lib/resolver/server_address.h"
@@ -60,165 +95,152 @@ namespace grpc_core {
namespace {
-class AresClientChannelDNSResolver : public Resolver {
+class AresClientChannelDNSResolver : public PollingResolver {
public:
- explicit AresClientChannelDNSResolver(ResolverArgs args);
+ AresClientChannelDNSResolver(ResolverArgs args,
+ const ChannelArgs& channel_args);
- void StartLocked() override;
+ OrphanablePtr<Orphanable> StartRequest() override;
- void RequestReresolutionLocked() override;
+ private:
+ class AresRequestWrapper : public InternallyRefCounted<AresRequestWrapper> {
+ public:
+ explicit AresRequestWrapper(
+ RefCountedPtr<AresClientChannelDNSResolver> resolver)
+ : resolver_(std::move(resolver)) {
+ // TODO(hork): replace this callback bookkeeping with promises.
+ // Locking to prevent completion before all records are queried
+ MutexLock lock(&on_resolved_mu_);
+ Ref(DEBUG_LOCATION, "OnHostnameResolved").release();
+ GRPC_CLOSURE_INIT(&on_hostname_resolved_, OnHostnameResolved, this,
+ nullptr);
+ hostname_request_.reset(grpc_dns_lookup_hostname_ares(
+ resolver_->authority().c_str(), resolver_->name_to_resolve().c_str(),
+ kDefaultSecurePort, resolver_->interested_parties(),
+ &on_hostname_resolved_, &addresses_, resolver_->query_timeout_ms_));
+ GRPC_CARES_TRACE_LOG(
+ "resolver:%p Started resolving hostnames. hostname_request_:%p",
+ resolver_.get(), hostname_request_.get());
+ if (resolver_->enable_srv_queries_) {
+ Ref(DEBUG_LOCATION, "OnSRVResolved").release();
+ GRPC_CLOSURE_INIT(&on_srv_resolved_, OnSRVResolved, this, nullptr);
+ srv_request_.reset(grpc_dns_lookup_srv_ares(
+ resolver_->authority().c_str(),
+ resolver_->name_to_resolve().c_str(),
+ resolver_->interested_parties(), &on_srv_resolved_,
+ &balancer_addresses_, resolver_->query_timeout_ms_));
+ GRPC_CARES_TRACE_LOG(
+ "resolver:%p Started resolving SRV records. srv_request_:%p",
+ resolver_.get(), srv_request_.get());
+ }
+ if (resolver_->request_service_config_) {
+ Ref(DEBUG_LOCATION, "OnTXTResolved").release();
+ GRPC_CLOSURE_INIT(&on_txt_resolved_, OnTXTResolved, this, nullptr);
+ txt_request_.reset(grpc_dns_lookup_txt_ares(
+ resolver_->authority().c_str(),
+ resolver_->name_to_resolve().c_str(),
+ resolver_->interested_parties(), &on_txt_resolved_,
+ &service_config_json_, resolver_->query_timeout_ms_));
+ GRPC_CARES_TRACE_LOG(
+ "resolver:%p Started resolving TXT records. txt_request_:%p",
+ resolver_.get(), srv_request_.get());
+ }
+ }
- void ResetBackoffLocked() override;
+ ~AresRequestWrapper() override {
+ gpr_free(service_config_json_);
+ resolver_.reset(DEBUG_LOCATION, "dns-resolving");
+ }
- void ShutdownLocked() override;
+ // Note that thread safety cannot be analyzed due to this being invoked from
+ // OrphanablePtr<>, and there's no way to pass the lock annotation through
+ // there.
+ void Orphan() override Y_ABSL_NO_THREAD_SAFETY_ANALYSIS {
+ {
+ MutexLock lock(&on_resolved_mu_);
+ if (hostname_request_ != nullptr) {
+ grpc_cancel_ares_request(hostname_request_.get());
+ }
+ if (srv_request_ != nullptr) {
+ grpc_cancel_ares_request(srv_request_.get());
+ }
+ if (txt_request_ != nullptr) {
+ grpc_cancel_ares_request(txt_request_.get());
+ }
+ }
+ Unref(DEBUG_LOCATION, "Orphan");
+ }
- private:
- ~AresClientChannelDNSResolver() override;
+ private:
+ static void OnHostnameResolved(void* arg, grpc_error_handle error);
+ static void OnSRVResolved(void* arg, grpc_error_handle error);
+ static void OnTXTResolved(void* arg, grpc_error_handle error);
+ y_absl::optional<Result> OnResolvedLocked(grpc_error_handle error)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(on_resolved_mu_);
+
+ Mutex on_resolved_mu_;
+ RefCountedPtr<AresClientChannelDNSResolver> resolver_;
+ grpc_closure on_hostname_resolved_;
+ std::unique_ptr<grpc_ares_request> hostname_request_
+ Y_ABSL_GUARDED_BY(on_resolved_mu_);
+ grpc_closure on_srv_resolved_;
+ std::unique_ptr<grpc_ares_request> srv_request_
+ Y_ABSL_GUARDED_BY(on_resolved_mu_);
+ grpc_closure on_txt_resolved_;
+ std::unique_ptr<grpc_ares_request> txt_request_
+ Y_ABSL_GUARDED_BY(on_resolved_mu_);
+ // Output fields from ares request.
+ std::unique_ptr<ServerAddressList> addresses_
+ Y_ABSL_GUARDED_BY(on_resolved_mu_);
+ std::unique_ptr<ServerAddressList> balancer_addresses_
+ Y_ABSL_GUARDED_BY(on_resolved_mu_);
+ char* service_config_json_ Y_ABSL_GUARDED_BY(on_resolved_mu_) = nullptr;
+ };
- void MaybeStartResolvingLocked();
- void StartResolvingLocked();
-
- static void OnNextResolution(void* arg, grpc_error_handle error);
- static void OnResolved(void* arg, grpc_error_handle error);
- void OnNextResolutionLocked(grpc_error_handle error);
- void OnResolvedLocked(grpc_error_handle error);
-
- /// DNS server to use (if not system default)
- TString dns_server_;
- /// name to resolve (usually the same as target_name)
- TString name_to_resolve_;
- /// channel args
- grpc_channel_args* channel_args_;
- std::shared_ptr<WorkSerializer> work_serializer_;
- std::unique_ptr<ResultHandler> result_handler_;
- /// pollset_set to drive the name resolution process
- grpc_pollset_set* interested_parties_;
+ ~AresClientChannelDNSResolver() override;
/// whether to request the service config
- bool request_service_config_;
+ const bool request_service_config_;
// whether or not to enable SRV DNS queries
- bool enable_srv_queries_;
+ const bool enable_srv_queries_;
// timeout in milliseconds for active DNS queries
- int query_timeout_ms_;
- /// min interval between DNS requests
- Duration min_time_between_resolutions_;
-
- /// closures used by the work_serializer
- grpc_closure on_next_resolution_;
- grpc_closure on_resolved_;
- /// are we currently resolving?
- bool resolving_ = false;
- /// the pending resolving request
- grpc_ares_request* pending_request_ = nullptr;
- /// next resolution timer
- bool have_next_resolution_timer_ = false;
- grpc_timer next_resolution_timer_;
- /// timestamp of last DNS request
- y_absl::optional<Timestamp> last_resolution_timestamp_;
- /// retry backoff state
- BackOff backoff_;
- /// currently resolving backend addresses
- std::unique_ptr<ServerAddressList> addresses_;
- /// currently resolving balancer addresses
- std::unique_ptr<ServerAddressList> balancer_addresses_;
- /// currently resolving service config
- char* service_config_json_ = nullptr;
- // has shutdown been initiated
- bool shutdown_initiated_ = false;
+ const int query_timeout_ms_;
};
-AresClientChannelDNSResolver::AresClientChannelDNSResolver(ResolverArgs args)
- : dns_server_(args.uri.authority()),
- name_to_resolve_(y_absl::StripPrefix(args.uri.path(), "/")),
- channel_args_(grpc_channel_args_copy(args.args)),
- work_serializer_(std::move(args.work_serializer)),
- result_handler_(std::move(args.result_handler)),
- interested_parties_(args.pollset_set),
- request_service_config_(!grpc_channel_args_find_bool(
- channel_args_, GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION, true)),
- enable_srv_queries_(grpc_channel_args_find_bool(
- channel_args_, GRPC_ARG_DNS_ENABLE_SRV_QUERIES, false)),
- query_timeout_ms_(grpc_channel_args_find_integer(
- channel_args_, GRPC_ARG_DNS_ARES_QUERY_TIMEOUT_MS,
- {GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS, 0, INT_MAX})),
- min_time_between_resolutions_(
- Duration::Milliseconds(grpc_channel_args_find_integer(
- channel_args_, GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS,
- {1000 * 30, 0, INT_MAX}))),
- backoff_(BackOff::Options()
- .set_initial_backoff(Duration::Milliseconds(
- GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS))
- .set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
- .set_jitter(GRPC_DNS_RECONNECT_JITTER)
- .set_max_backoff(Duration::Milliseconds(
- GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS))) {
- // Closure initialization.
- GRPC_CLOSURE_INIT(&on_next_resolution_, OnNextResolution, this,
- grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&on_resolved_, OnResolved, this, grpc_schedule_on_exec_ctx);
-}
+AresClientChannelDNSResolver::AresClientChannelDNSResolver(
+ ResolverArgs args, const ChannelArgs& channel_args)
+ : PollingResolver(
+ std::move(args), channel_args,
+ std::max(Duration::Zero(),
+ channel_args
+ .GetDurationFromIntMillis(
+ GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS)
+ .value_or(Duration::Seconds(30))),
+ BackOff::Options()
+ .set_initial_backoff(Duration::Milliseconds(
+ GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS * 1000))
+ .set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
+ .set_jitter(GRPC_DNS_RECONNECT_JITTER)
+ .set_max_backoff(Duration::Milliseconds(
+ GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000)),
+ &grpc_trace_cares_resolver),
+ request_service_config_(
+ !channel_args.GetBool(GRPC_ARG_SERVICE_CONFIG_DISABLE_RESOLUTION)
+ .value_or(true)),
+ enable_srv_queries_(channel_args.GetBool(GRPC_ARG_DNS_ENABLE_SRV_QUERIES)
+ .value_or(false)),
+ query_timeout_ms_(
+ std::max(0, channel_args.GetInt(GRPC_ARG_DNS_ARES_QUERY_TIMEOUT_MS)
+ .value_or(GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS))) {}
AresClientChannelDNSResolver::~AresClientChannelDNSResolver() {
GRPC_CARES_TRACE_LOG("resolver:%p destroying AresClientChannelDNSResolver",
this);
- grpc_channel_args_destroy(channel_args_);
-}
-
-void AresClientChannelDNSResolver::StartLocked() {
- GRPC_CARES_TRACE_LOG(
- "resolver:%p AresClientChannelDNSResolver::StartLocked() is called.",
- this);
- MaybeStartResolvingLocked();
}
-void AresClientChannelDNSResolver::RequestReresolutionLocked() {
- if (!resolving_) {
- MaybeStartResolvingLocked();
- }
-}
-
-void AresClientChannelDNSResolver::ResetBackoffLocked() {
- if (have_next_resolution_timer_) {
- grpc_timer_cancel(&next_resolution_timer_);
- }
- backoff_.Reset();
-}
-
-void AresClientChannelDNSResolver::ShutdownLocked() {
- shutdown_initiated_ = true;
- if (have_next_resolution_timer_) {
- grpc_timer_cancel(&next_resolution_timer_);
- }
- if (pending_request_ != nullptr) {
- grpc_cancel_ares_request(pending_request_);
- }
-}
-
-void AresClientChannelDNSResolver::OnNextResolution(void* arg,
- grpc_error_handle error) {
- AresClientChannelDNSResolver* r =
- static_cast<AresClientChannelDNSResolver*>(arg);
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
- r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); },
- DEBUG_LOCATION);
-}
-
-void AresClientChannelDNSResolver::OnNextResolutionLocked(
- grpc_error_handle error) {
- GRPC_CARES_TRACE_LOG(
- "resolver:%p re-resolution timer fired. error: %s. shutdown_initiated_: "
- "%d",
- this, grpc_error_std_string(error).c_str(), shutdown_initiated_);
- have_next_resolution_timer_ = false;
- if (error == GRPC_ERROR_NONE && !shutdown_initiated_) {
- if (!resolving_) {
- GRPC_CARES_TRACE_LOG(
- "resolver:%p start resolving due to re-resolution timer", this);
- StartResolvingLocked();
- }
- }
- Unref(DEBUG_LOCATION, "next_resolution_timer");
- GRPC_ERROR_UNREF(error);
+OrphanablePtr<Orphanable> AresClientChannelDNSResolver::StartRequest() {
+ return MakeOrphanable<AresRequestWrapper>(
+ Ref(DEBUG_LOCATION, "dns-resolving"));
}
bool ValueInJsonArray(const Json::Array& array, const char* value) {
@@ -232,16 +254,19 @@ bool ValueInJsonArray(const Json::Array& array, const char* value) {
TString ChooseServiceConfig(char* service_config_choice_json,
grpc_error_handle* error) {
- Json json = Json::Parse(service_config_choice_json, error);
- if (*error != GRPC_ERROR_NONE) return "";
- if (json.type() != Json::Type::ARRAY) {
+ auto json = Json::Parse(service_config_choice_json);
+ if (!json.ok()) {
+ *error = absl_status_to_grpc_error(json.status());
+ return "";
+ }
+ if (json->type() != Json::Type::ARRAY) {
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Service Config Choices, error: should be of type array");
return "";
}
const Json* service_config = nullptr;
- y_absl::InlinedVector<grpc_error_handle, 4> error_list;
- for (const Json& choice : json.array_value()) {
+ std::vector<grpc_error_handle> error_list;
+ for (const Json& choice : json->array_value()) {
if (choice.type() != Json::Type::OBJECT) {
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Service Config Choice, error: should be of type object"));
@@ -309,29 +334,74 @@ TString ChooseServiceConfig(char* service_config_choice_json,
return service_config->Dump();
}
-void AresClientChannelDNSResolver::OnResolved(void* arg,
- grpc_error_handle error) {
- AresClientChannelDNSResolver* r =
- static_cast<AresClientChannelDNSResolver*>(arg);
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
- r->work_serializer_->Run([r, error]() { r->OnResolvedLocked(error); },
- DEBUG_LOCATION);
+void AresClientChannelDNSResolver::AresRequestWrapper::OnHostnameResolved(
+ void* arg, grpc_error_handle error) {
+ auto* self = static_cast<AresRequestWrapper*>(arg);
+ y_absl::optional<Result> result;
+ {
+ MutexLock lock(&self->on_resolved_mu_);
+ self->hostname_request_.reset();
+ result = self->OnResolvedLocked(error);
+ }
+ if (result.has_value()) {
+ self->resolver_->OnRequestComplete(std::move(*result));
+ }
+ self->Unref(DEBUG_LOCATION, "OnHostnameResolved");
+}
+
+void AresClientChannelDNSResolver::AresRequestWrapper::OnSRVResolved(
+ void* arg, grpc_error_handle error) {
+ auto* self = static_cast<AresRequestWrapper*>(arg);
+ y_absl::optional<Result> result;
+ {
+ MutexLock lock(&self->on_resolved_mu_);
+ self->srv_request_.reset();
+ result = self->OnResolvedLocked(error);
+ }
+ if (result.has_value()) {
+ self->resolver_->OnRequestComplete(std::move(*result));
+ }
+ self->Unref(DEBUG_LOCATION, "OnSRVResolved");
}
-void AresClientChannelDNSResolver::OnResolvedLocked(grpc_error_handle error) {
- GPR_ASSERT(resolving_);
- resolving_ = false;
- delete pending_request_;
- pending_request_ = nullptr;
- if (shutdown_initiated_) {
- Unref(DEBUG_LOCATION, "OnResolvedLocked() shutdown");
- GRPC_ERROR_UNREF(error);
- return;
+void AresClientChannelDNSResolver::AresRequestWrapper::OnTXTResolved(
+ void* arg, grpc_error_handle error) {
+ auto* self = static_cast<AresRequestWrapper*>(arg);
+ y_absl::optional<Result> result;
+ {
+ MutexLock lock(&self->on_resolved_mu_);
+ self->txt_request_.reset();
+ result = self->OnResolvedLocked(error);
}
+ if (result.has_value()) {
+ self->resolver_->OnRequestComplete(std::move(*result));
+ }
+ self->Unref(DEBUG_LOCATION, "OnTXTResolved");
+}
+
+// Returns a Result if resolution is complete.
+// callers must release the lock and call OnRequestComplete if a Result is
+// returned. This is because OnRequestComplete may Orphan the resolver, which
+// requires taking the lock.
+y_absl::optional<AresClientChannelDNSResolver::Result>
+AresClientChannelDNSResolver::AresRequestWrapper::OnResolvedLocked(
+ grpc_error_handle error) Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(on_resolved_mu_) {
+ if (hostname_request_ != nullptr || srv_request_ != nullptr ||
+ txt_request_ != nullptr) {
+ GRPC_CARES_TRACE_LOG(
+ "resolver:%p OnResolved() waiting for results (hostname: %s, srv: %s, "
+ "txt: %s)",
+ this, hostname_request_ != nullptr ? "waiting" : "done",
+ srv_request_ != nullptr ? "waiting" : "done",
+ txt_request_ != nullptr ? "waiting" : "done");
+ return y_absl::nullopt;
+ }
+ GRPC_CARES_TRACE_LOG("resolver:%p OnResolved() proceeding", this);
+ Result result;
+ result.args = resolver_->channel_args();
// TODO(roth): Change logic to be able to report failures for addresses
// and service config independently of each other.
if (addresses_ != nullptr || balancer_addresses_ != nullptr) {
- Result result;
if (addresses_ != nullptr) {
result.addresses = std::move(*addresses_);
} else {
@@ -341,133 +411,46 @@ void AresClientChannelDNSResolver::OnResolvedLocked(grpc_error_handle error) {
grpc_error_handle service_config_error = GRPC_ERROR_NONE;
TString service_config_string =
ChooseServiceConfig(service_config_json_, &service_config_error);
- gpr_free(service_config_json_);
- RefCountedPtr<ServiceConfig> service_config;
- if (service_config_error == GRPC_ERROR_NONE &&
- !service_config_string.empty()) {
- GRPC_CARES_TRACE_LOG("resolver:%p selected service config choice: %s",
- this, service_config_string.c_str());
- service_config = ServiceConfigImpl::Create(
- channel_args_, service_config_string, &service_config_error);
- }
- if (service_config_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(service_config_error)) {
result.service_config = y_absl::UnavailableError(
y_absl::StrCat("failed to parse service config: ",
grpc_error_std_string(service_config_error)));
GRPC_ERROR_UNREF(service_config_error);
- } else {
- result.service_config = std::move(service_config);
+ } else if (!service_config_string.empty()) {
+ GRPC_CARES_TRACE_LOG("resolver:%p selected service config choice: %s",
+ this, service_config_string.c_str());
+ result.service_config = ServiceConfigImpl::Create(
+ resolver_->channel_args(), service_config_string);
+ if (!result.service_config.ok()) {
+ result.service_config = y_absl::UnavailableError(
+ y_absl::StrCat("failed to parse service config: ",
+ result.service_config.status().message()));
+ }
}
}
- y_absl::InlinedVector<grpc_arg, 1> new_args;
if (balancer_addresses_ != nullptr) {
- new_args.push_back(
- CreateGrpclbBalancerAddressesArg(balancer_addresses_.get()));
+ result.args = SetGrpcLbBalancerAddresses(
+ result.args, ServerAddressList(*balancer_addresses_));
}
- result.args = grpc_channel_args_copy_and_add(channel_args_, new_args.data(),
- new_args.size());
- result_handler_->ReportResult(std::move(result));
- addresses_.reset();
- balancer_addresses_.reset();
- // Reset backoff state so that we start from the beginning when the
- // next request gets triggered.
- backoff_.Reset();
} else {
GRPC_CARES_TRACE_LOG("resolver:%p dns resolution failed: %s", this,
grpc_error_std_string(error).c_str());
TString error_message;
grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION, &error_message);
- y_absl::Status status = y_absl::UnavailableError(y_absl::StrCat(
- "DNS resolution failed for ", name_to_resolve_, ": ", error_message));
- Result result;
+ y_absl::Status status = y_absl::UnavailableError(
+ y_absl::StrCat("DNS resolution failed for ", resolver_->name_to_resolve(),
+ ": ", error_message));
result.addresses = status;
result.service_config = status;
- result.args = grpc_channel_args_copy(channel_args_);
- result_handler_->ReportResult(std::move(result));
- // Set retry timer.
- // InvalidateNow to avoid getting stuck re-initializing this timer
- // in a loop while draining the currently-held WorkSerializer.
- // Also see https://github.com/grpc/grpc/issues/26079.
- ExecCtx::Get()->InvalidateNow();
- Timestamp next_try = backoff_.NextAttemptTime();
- Duration timeout = next_try - ExecCtx::Get()->Now();
- GRPC_CARES_TRACE_LOG("resolver:%p dns resolution failed (will retry): %s",
- this, grpc_error_std_string(error).c_str());
- GPR_ASSERT(!have_next_resolution_timer_);
- have_next_resolution_timer_ = true;
- // TODO(roth): We currently deal with this ref manually. Once the
- // new closure API is done, find a way to track this ref with the timer
- // callback as part of the type system.
- Ref(DEBUG_LOCATION, "retry-timer").release();
- if (timeout > Duration::Zero()) {
- GRPC_CARES_TRACE_LOG("resolver:%p retrying in %" PRId64 " milliseconds",
- this, timeout.millis());
- } else {
- GRPC_CARES_TRACE_LOG("resolver:%p retrying immediately", this);
- }
- grpc_timer_init(&next_resolution_timer_, next_try, &on_next_resolution_);
}
- Unref(DEBUG_LOCATION, "dns-resolving");
- GRPC_ERROR_UNREF(error);
-}
-void AresClientChannelDNSResolver::MaybeStartResolvingLocked() {
- // If there is an existing timer, the time it fires is the earliest time we
- // can start the next resolution.
- if (have_next_resolution_timer_) return;
- if (last_resolution_timestamp_.has_value()) {
- // InvalidateNow to avoid getting stuck re-initializing this timer
- // in a loop while draining the currently-held WorkSerializer.
- // Also see https://github.com/grpc/grpc/issues/26079.
- ExecCtx::Get()->InvalidateNow();
- const Timestamp earliest_next_resolution =
- *last_resolution_timestamp_ + min_time_between_resolutions_;
- const Duration time_until_next_resolution =
- earliest_next_resolution - ExecCtx::Get()->Now();
- if (time_until_next_resolution > Duration::Zero()) {
- const Duration last_resolution_ago =
- ExecCtx::Get()->Now() - *last_resolution_timestamp_;
- GRPC_CARES_TRACE_LOG(
- "resolver:%p In cooldown from last resolution (from %" PRId64
- " ms ago). Will resolve again in %" PRId64 " ms",
- this, last_resolution_ago.millis(),
- time_until_next_resolution.millis());
- have_next_resolution_timer_ = true;
- // TODO(roth): We currently deal with this ref manually. Once the
- // new closure API is done, find a way to track this ref with the timer
- // callback as part of the type system.
- Ref(DEBUG_LOCATION, "next_resolution_timer_cooldown").release();
- grpc_timer_init(&next_resolution_timer_,
- ExecCtx::Get()->Now() + time_until_next_resolution,
- &on_next_resolution_);
- return;
- }
- }
- StartResolvingLocked();
-}
-
-void AresClientChannelDNSResolver::StartResolvingLocked() {
- // TODO(roth): We currently deal with this ref manually. Once the
- // new closure API is done, find a way to track this ref with the timer
- // callback as part of the type system.
- Ref(DEBUG_LOCATION, "dns-resolving").release();
- GPR_ASSERT(!resolving_);
- resolving_ = true;
- service_config_json_ = nullptr;
- pending_request_ = grpc_dns_lookup_ares(
- dns_server_.c_str(), name_to_resolve_.c_str(), kDefaultSecurePort,
- interested_parties_, &on_resolved_, &addresses_,
- enable_srv_queries_ ? &balancer_addresses_ : nullptr,
- request_service_config_ ? &service_config_json_ : nullptr,
- query_timeout_ms_);
- last_resolution_timestamp_ = ExecCtx::Get()->Now();
- GRPC_CARES_TRACE_LOG("resolver:%p Started resolving. pending_request_:%p",
- this, pending_request_);
+ return std::move(result);
}
//
// Factory
//
+
class AresClientChannelDNSResolverFactory : public ResolverFactory {
public:
y_absl::string_view scheme() const override { return "dns"; }
@@ -481,103 +464,270 @@ class AresClientChannelDNSResolverFactory : public ResolverFactory {
}
OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
- return MakeOrphanable<AresClientChannelDNSResolver>(std::move(args));
+ ChannelArgs channel_args = args.args;
+ return MakeOrphanable<AresClientChannelDNSResolver>(std::move(args),
+ channel_args);
}
};
class AresDNSResolver : public DNSResolver {
public:
- class AresRequest : public DNSResolver::Request {
+ // Abstract class that centralizes common request handling logic via the
+ // template method pattern.
+ // This requires a two-phase initialization, where 1) a request is created via
+ // a subclass constructor, and 2) the request is initiated via Run()
+ class AresRequest {
public:
- AresRequest(
- y_absl::string_view name, y_absl::string_view default_port,
- grpc_pollset_set* interested_parties,
- std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
- on_resolve_address_done)
- : name_(TString(name)),
- default_port_(TString(default_port)),
- interested_parties_(interested_parties),
- on_resolve_address_done_(std::move(on_resolve_address_done)) {
- GRPC_CARES_TRACE_LOG("AresRequest:%p ctor", this);
- GRPC_CLOSURE_INIT(&on_dns_lookup_done_, OnDnsLookupDone, this,
- grpc_schedule_on_exec_ctx);
- }
-
- ~AresRequest() override {
+ virtual ~AresRequest() {
GRPC_CARES_TRACE_LOG("AresRequest:%p dtor ares_request_:%p", this,
- ares_request_.get());
+ grpc_ares_request_.get());
+ resolver_->UnregisterRequest(task_handle());
+ grpc_pollset_set_destroy(pollset_set_);
}
- void Start() override {
- y_absl::MutexLock lock(&mu_);
- Ref().release(); // ref held by resolution
- ares_request_ = std::unique_ptr<grpc_ares_request>(grpc_dns_lookup_ares(
- "" /* dns_server */, name_.c_str(), default_port_.c_str(),
- interested_parties_, &on_dns_lookup_done_, &addresses_,
- nullptr /* balancer_addresses */, nullptr /* service_config_json */,
- GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS));
- GRPC_CARES_TRACE_LOG("AresRequest:%p Start ares_request_:%p", this,
- ares_request_.get());
+ // Initiates the low-level c-ares request and returns its handle.
+ virtual std::unique_ptr<grpc_ares_request> MakeRequestLocked() = 0;
+ // Called on ares resolution, but not upon cancellation.
+ // After execution, the AresRequest will perform any final cleanup and
+ // delete itself.
+ virtual void OnComplete(grpc_error_handle error) = 0;
+
+ // Called to initiate the request.
+ void Run() {
+ MutexLock lock(&mu_);
+ grpc_ares_request_ = MakeRequestLocked();
}
- void Orphan() override {
- {
- y_absl::MutexLock lock(&mu_);
- GRPC_CARES_TRACE_LOG("AresRequest:%p Orphan ares_request_:%p", this,
- ares_request_.get());
- if (ares_request_ != nullptr) {
- grpc_cancel_ares_request(ares_request_.get());
- }
+ bool Cancel() {
+ MutexLock lock(&mu_);
+ if (grpc_ares_request_ != nullptr) {
+ GRPC_CARES_TRACE_LOG("AresRequest:%p Cancel ares_request_:%p", this,
+ grpc_ares_request_.get());
+ if (completed_) return false;
+ // OnDnsLookupDone will still be run
+ completed_ = true;
+ grpc_cancel_ares_request(grpc_ares_request_.get());
+ } else {
+ completed_ = true;
+ OnDnsLookupDone(this, GRPC_ERROR_CANCELLED);
}
- Unref();
+ grpc_pollset_set_del_pollset_set(pollset_set_, interested_parties_);
+ return true;
+ }
+
+ TaskHandle task_handle() {
+ return {reinterpret_cast<intptr_t>(this), aba_token_};
}
+ protected:
+ AresRequest(y_absl::string_view name, y_absl::string_view name_server,
+ Duration timeout, grpc_pollset_set* interested_parties,
+ AresDNSResolver* resolver, intptr_t aba_token)
+ : name_(name),
+ name_server_(name_server),
+ timeout_(timeout),
+ interested_parties_(interested_parties),
+ completed_(false),
+ resolver_(resolver),
+ aba_token_(aba_token),
+ pollset_set_(grpc_pollset_set_create()) {
+ GRPC_CLOSURE_INIT(&on_dns_lookup_done_, OnDnsLookupDone, this,
+ grpc_schedule_on_exec_ctx);
+ grpc_pollset_set_add_pollset_set(pollset_set_, interested_parties_);
+ }
+
+ grpc_pollset_set* pollset_set() { return pollset_set_; };
+ grpc_closure* on_dns_lookup_done() { return &on_dns_lookup_done_; };
+ const TString& name() { return name_; }
+ const TString& name_server() { return name_server_; }
+ const Duration& timeout() { return timeout_; }
+
private:
+ // Called by ares when lookup has completed or when cancelled. It is always
+ // called exactly once, and it triggers self-deletion.
static void OnDnsLookupDone(void* arg, grpc_error_handle error) {
AresRequest* r = static_cast<AresRequest*>(arg);
- std::vector<grpc_resolved_address> resolved_addresses;
+ auto deleter = std::unique_ptr<AresRequest>(r);
{
- y_absl::MutexLock lock(&r->mu_);
- GRPC_CARES_TRACE_LOG("AresRequest:%p OnDnsLookupDone error:%s", r,
- grpc_error_std_string(error).c_str());
- if (r->addresses_ != nullptr) {
- resolved_addresses.reserve(r->addresses_->size());
- for (const auto& server_address : *r->addresses_) {
- resolved_addresses.push_back(server_address.address());
- }
+ MutexLock lock(&r->mu_);
+ grpc_pollset_set_del_pollset_set(r->pollset_set_,
+ r->interested_parties_);
+ if (r->completed_) {
+ return;
}
+ r->completed_ = true;
}
- if (error == GRPC_ERROR_NONE) {
- // it's safe to run this inline since we've already been scheduled
- // on the ExecCtx
- r->on_resolve_address_done_(std::move(resolved_addresses));
- } else {
- r->on_resolve_address_done_(grpc_error_to_absl_status(error));
- }
- r->Unref();
+ r->OnComplete(error);
}
- // mutex to synchronize access to this object (but not to the ares_request
- // object itself).
- y_absl::Mutex mu_;
// the name to resolve
const TString name_;
- // the default port to use if name doesn't have one
- const TString default_port_;
+ // the name server to query
+ const TString name_server_;
+ // request-specific timeout
+ Duration timeout_;
+ // mutex to synchronize access to this object (but not to the ares_request
+ // object itself).
+ Mutex mu_;
// parties interested in our I/O
grpc_pollset_set* const interested_parties_;
+ // underlying cares_request that the query is performed on
+ std::unique_ptr<grpc_ares_request> grpc_ares_request_ Y_ABSL_GUARDED_BY(mu_);
+ // Set when the callback is either cancelled or executed.
+ // It is not the subclasses' responsibility to set this flag.
+ bool completed_ Y_ABSL_GUARDED_BY(mu_);
+ // Parent resolver that created this request
+ AresDNSResolver* resolver_;
+ // Unique token to help distinguish this request from others that may later
+ // be created in the same memory location.
+ intptr_t aba_token_;
+ // closure to call when the ares resolution request completes. Subclasses
+ // should use this as the ares callback in MakeRequestLocked()
+ grpc_closure on_dns_lookup_done_ Y_ABSL_GUARDED_BY(mu_);
+ // locally owned pollset_set, required to support cancellation of requests
+ // while ares still needs a valid pollset_set. Subclasses should give this
+ // pollset to ares in MakeRequestLocked();
+ grpc_pollset_set* pollset_set_;
+ };
+
+ class AresHostnameRequest : public AresRequest {
+ public:
+ AresHostnameRequest(
+ y_absl::string_view name, y_absl::string_view default_port,
+ y_absl::string_view name_server, Duration timeout,
+ grpc_pollset_set* interested_parties,
+ std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
+ on_resolve_address_done,
+ AresDNSResolver* resolver, intptr_t aba_token)
+ : AresRequest(name, name_server, timeout, interested_parties, resolver,
+ aba_token),
+ default_port_(default_port),
+ on_resolve_address_done_(std::move(on_resolve_address_done)) {
+ GRPC_CARES_TRACE_LOG("AresHostnameRequest:%p ctor", this);
+ }
+
+ std::unique_ptr<grpc_ares_request> MakeRequestLocked() override {
+ auto ares_request =
+ std::unique_ptr<grpc_ares_request>(grpc_dns_lookup_hostname_ares(
+ name_server().c_str(), name().c_str(), default_port_.c_str(),
+ pollset_set(), on_dns_lookup_done(), &addresses_,
+ timeout().millis()));
+ GRPC_CARES_TRACE_LOG("AresHostnameRequest:%p Start ares_request_:%p",
+ this, ares_request.get());
+ return ares_request;
+ }
+
+ void OnComplete(grpc_error_handle error) override {
+ GRPC_CARES_TRACE_LOG("AresHostnameRequest:%p OnComplete", this);
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ on_resolve_address_done_(grpc_error_to_absl_status(error));
+ return;
+ }
+ std::vector<grpc_resolved_address> resolved_addresses;
+ if (addresses_ != nullptr) {
+ resolved_addresses.reserve(addresses_->size());
+ for (const auto& server_address : *addresses_) {
+ resolved_addresses.push_back(server_address.address());
+ }
+ }
+ on_resolve_address_done_(std::move(resolved_addresses));
+ }
+
+ // the default port to use if name doesn't have one
+ const TString default_port_;
// user-provided completion callback
const std::function<void(
y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
on_resolve_address_done_;
// currently resolving addresses
- std::unique_ptr<ServerAddressList> addresses_ Y_ABSL_GUARDED_BY(mu_);
- // closure to call when the resolve_address_ares request completes
- // a closure wrapping on_resolve_address_done, which should be invoked
- // when the grpc_dns_lookup_ares operation is done.
- grpc_closure on_dns_lookup_done_ Y_ABSL_GUARDED_BY(mu_);
- // underlying ares_request that the query is performed on
- std::unique_ptr<grpc_ares_request> ares_request_ Y_ABSL_GUARDED_BY(mu_);
+ std::unique_ptr<ServerAddressList> addresses_;
+ };
+
+ class AresSRVRequest : public AresRequest {
+ public:
+ AresSRVRequest(
+ y_absl::string_view name, y_absl::string_view name_server, Duration timeout,
+ grpc_pollset_set* interested_parties,
+ std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
+ on_resolve_address_done,
+ AresDNSResolver* resolver, intptr_t aba_token)
+ : AresRequest(name, name_server, timeout, interested_parties, resolver,
+ aba_token),
+ on_resolve_address_done_(std::move(on_resolve_address_done)) {
+ GRPC_CARES_TRACE_LOG("AresSRVRequest:%p ctor", this);
+ }
+
+ std::unique_ptr<grpc_ares_request> MakeRequestLocked() override {
+ auto ares_request =
+ std::unique_ptr<grpc_ares_request>(grpc_dns_lookup_srv_ares(
+ name_server().c_str(), name().c_str(), pollset_set(),
+ on_dns_lookup_done(), &balancer_addresses_, timeout().millis()));
+ GRPC_CARES_TRACE_LOG("AresSRVRequest:%p Start ares_request_:%p", this,
+ ares_request.get());
+ return ares_request;
+ }
+
+ void OnComplete(grpc_error_handle error) override {
+ GRPC_CARES_TRACE_LOG("AresSRVRequest:%p OnComplete", this);
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ on_resolve_address_done_(grpc_error_to_absl_status(error));
+ return;
+ }
+ std::vector<grpc_resolved_address> resolved_addresses;
+ if (balancer_addresses_ != nullptr) {
+ resolved_addresses.reserve(balancer_addresses_->size());
+ for (const auto& server_address : *balancer_addresses_) {
+ resolved_addresses.push_back(server_address.address());
+ }
+ }
+ on_resolve_address_done_(std::move(resolved_addresses));
+ }
+
+ // user-provided completion callback
+ const std::function<void(
+ y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
+ on_resolve_address_done_;
+ // currently resolving addresses
+ std::unique_ptr<ServerAddressList> balancer_addresses_;
+ };
+
+ class AresTXTRequest : public AresRequest {
+ public:
+ AresTXTRequest(y_absl::string_view name, y_absl::string_view name_server,
+ Duration timeout, grpc_pollset_set* interested_parties,
+ std::function<void(y_absl::StatusOr<TString>)> on_resolved,
+ AresDNSResolver* resolver, intptr_t aba_token)
+ : AresRequest(name, name_server, timeout, interested_parties, resolver,
+ aba_token),
+ on_resolved_(std::move(on_resolved)) {
+ GRPC_CARES_TRACE_LOG("AresTXTRequest:%p ctor", this);
+ }
+
+ ~AresTXTRequest() override { gpr_free(service_config_json_); }
+
+ std::unique_ptr<grpc_ares_request> MakeRequestLocked() override {
+ auto ares_request =
+ std::unique_ptr<grpc_ares_request>(grpc_dns_lookup_txt_ares(
+ name_server().c_str(), name().c_str(), pollset_set(),
+ on_dns_lookup_done(), &service_config_json_, timeout().millis()));
+ GRPC_CARES_TRACE_LOG("AresSRVRequest:%p Start ares_request_:%p", this,
+ ares_request.get());
+ return ares_request;
+ }
+
+ void OnComplete(grpc_error_handle error) override {
+ GRPC_CARES_TRACE_LOG("AresSRVRequest:%p OnComplete", this);
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ on_resolved_(grpc_error_to_absl_status(error));
+ return;
+ }
+ on_resolved_(service_config_json_);
+ }
+
+ // service config from the TXT record
+ char* service_config_json_ = nullptr;
+ // user-provided completion callback
+ const std::function<void(y_absl::StatusOr<TString>)> on_resolved_;
};
// gets the singleton instance, possibly creating it first
@@ -586,25 +736,88 @@ class AresDNSResolver : public DNSResolver {
return instance;
}
- OrphanablePtr<DNSResolver::Request> ResolveName(
- y_absl::string_view name, y_absl::string_view default_port,
- grpc_pollset_set* interested_parties,
+ TaskHandle LookupHostname(
std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
- on_done) override {
- return MakeOrphanable<AresRequest>(name, default_port, interested_parties,
- std::move(on_done));
+ on_resolved,
+ y_absl::string_view name, y_absl::string_view default_port, Duration timeout,
+ grpc_pollset_set* interested_parties,
+ y_absl::string_view name_server) override {
+ MutexLock lock(&mu_);
+ auto* request = new AresHostnameRequest(
+ name, default_port, name_server, timeout, interested_parties,
+ std::move(on_resolved), this, aba_token_++);
+ request->Run();
+ auto handle = request->task_handle();
+ open_requests_.insert(handle);
+ return handle;
}
- y_absl::StatusOr<std::vector<grpc_resolved_address>> ResolveNameBlocking(
+ y_absl::StatusOr<std::vector<grpc_resolved_address>> LookupHostnameBlocking(
y_absl::string_view name, y_absl::string_view default_port) override {
// TODO(apolcyn): change this to wrap the async version of the c-ares
// API with a promise, and remove the reference to the previous resolver.
- return default_resolver_->ResolveNameBlocking(name, default_port);
+ return default_resolver_->LookupHostnameBlocking(name, default_port);
+ }
+
+ TaskHandle LookupSRV(
+ std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
+ on_resolved,
+ y_absl::string_view name, Duration timeout,
+ grpc_pollset_set* interested_parties,
+ y_absl::string_view name_server) override {
+ MutexLock lock(&mu_);
+ auto* request =
+ new AresSRVRequest(name, name_server, timeout, interested_parties,
+ std::move(on_resolved), this, aba_token_++);
+ request->Run();
+ auto handle = request->task_handle();
+ open_requests_.insert(handle);
+ return handle;
+ };
+
+ TaskHandle LookupTXT(
+ std::function<void(y_absl::StatusOr<TString>)> on_resolved,
+ y_absl::string_view name, Duration timeout,
+ grpc_pollset_set* interested_parties,
+ y_absl::string_view name_server) override {
+ MutexLock lock(&mu_);
+ auto* request =
+ new AresTXTRequest(name, name_server, timeout, interested_parties,
+ std::move(on_resolved), this, aba_token_++);
+ request->Run();
+ auto handle = request->task_handle();
+ open_requests_.insert(handle);
+ return handle;
+ };
+
+ bool Cancel(TaskHandle handle) override {
+ MutexLock lock(&mu_);
+ if (!open_requests_.contains(handle)) {
+ // Unknown request, possibly completed already, or an invalid handle.
+ GRPC_CARES_TRACE_LOG(
+ "AresDNSResolver:%p attempt to cancel unknown TaskHandle:%s", this,
+ HandleToString(handle).c_str());
+ return false;
+ }
+ auto* request = reinterpret_cast<AresRequest*>(handle.keys[0]);
+ GRPC_CARES_TRACE_LOG("AresDNSResolver:%p cancel ares_request:%p", this,
+ request);
+ return request->Cancel();
}
private:
+ // Called exclusively from the AresRequest destructor.
+ void UnregisterRequest(TaskHandle handle) {
+ MutexLock lock(&mu_);
+ open_requests_.erase(handle);
+ }
+
// the previous default DNS resolver, used to delegate blocking DNS calls to
DNSResolver* default_resolver_ = GetDNSResolver();
+ Mutex mu_;
+ grpc_event_engine::experimental::LookupTaskHandleSet open_requests_
+ Y_ABSL_GUARDED_BY(mu_);
+ intptr_t aba_token_ Y_ABSL_GUARDED_BY(mu_) = 0;
};
bool ShouldUseAres(const char* resolver_env) {
@@ -636,7 +849,7 @@ void grpc_resolver_dns_ares_init() {
if (grpc_core::UseAresDnsResolver()) {
address_sorting_init();
grpc_error_handle error = grpc_ares_init();
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
GRPC_LOG_IF_ERROR("grpc_ares_init() failed", error);
return;
}
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h
index 57d0299d4e..2ffefd5e7a 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h
@@ -21,10 +21,17 @@
#include <grpc/support/port_platform.h>
+#include <memory>
+
#include <ares.h>
+#include "y_absl/base/thread_annotations.h"
+
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
-#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc
index afb8ec451e..54a0c328df 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc
@@ -17,6 +17,17 @@
*/
#include <grpc/support/port_platform.h>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/memory/memory.h"
+
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/iomgr/port.h"
#if GRPC_ARES == 1 && defined(GRPC_POSIX_SOCKET_ARES_EV_DRIVER)
@@ -27,17 +38,9 @@
#include "y_absl/strings/str_cat.h"
-#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
-#include <grpc/support/time.h>
-
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h"
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
-#include "src/core/lib/address_utils/sockaddr_utils.h"
-#include "src/core/lib/gpr/string.h"
#include "src/core/lib/iomgr/ev_posix.h"
-#include "src/core/lib/iomgr/iomgr_internal.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc
index 82a50835d6..8448dea253 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc
@@ -17,7 +17,7 @@
*/
#include <grpc/support/port_platform.h>
-#include "src/core/lib/iomgr/port.h"
+#include "src/core/lib/iomgr/port.h" // IWYU pragma: keep
#if GRPC_ARES == 1 && defined(GRPC_WINDOWS_SOCKET_ARES_EV_DRIVER)
#include <string.h>
@@ -435,7 +435,7 @@ class GrpcPolledFdWindows {
GPR_ASSERT(!connect_done_);
connect_done_ = true;
GPR_ASSERT(wsa_connect_error_ == 0);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
DWORD transferred_bytes = 0;
DWORD flags;
BOOL wsa_success =
@@ -579,7 +579,7 @@ class GrpcPolledFdWindows {
// the entire resolution attempt. Doing so will allow the "inject broken
// nameserver list" test to pass on Windows.
void OnIocpReadableLocked(grpc_error_handle error) {
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
if (winsocket_->read_info.wsa_error != 0) {
/* WSAEMSGSIZE would be due to receiving more data
* than our read buffer's fixed capacity. Assume that
@@ -596,7 +596,7 @@ class GrpcPolledFdWindows {
}
}
}
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
read_buf_ = grpc_slice_sub_no_ref(
read_buf_, 0, winsocket_->read_info.bytes_transferred);
read_buf_has_data_ = true;
@@ -620,7 +620,7 @@ class GrpcPolledFdWindows {
void OnIocpWriteableLocked(grpc_error_handle error) {
GRPC_CARES_TRACE_LOG("OnIocpWriteableInner. fd:|%s|", GetName());
GPR_ASSERT(socket_type_ == SOCK_STREAM);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
if (winsocket_->write_info.wsa_error != 0) {
error = GRPC_WSA_ERROR(winsocket_->write_info.wsa_error,
"OnIocpWriteableInner");
@@ -632,7 +632,7 @@ class GrpcPolledFdWindows {
}
}
GPR_ASSERT(tcp_write_state_ == WRITE_PENDING);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
tcp_write_state_ = WRITE_WAITING_FOR_VERIFICATION_UPON_RETRY;
write_buf_ = grpc_slice_sub_no_ref(
write_buf_, 0, winsocket_->write_info.bytes_transferred);
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc
index ef2734f86a..4c4d855dab 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc
@@ -18,34 +18,57 @@
#include <grpc/support/port_platform.h>
+#include <algorithm>
+#include <vector>
+
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/lib/iomgr/sockaddr.h"
+
+// IWYU pragma: no_include <arpa/nameser.h>
+// IWYU pragma: no_include <inttypes.h>
+// IWYU pragma: no_include <netdb.h>
+// IWYU pragma: no_include <netinet/in.h>
+// IWYU pragma: no_include <stdlib.h>
+// IWYU pragma: no_include <sys/socket.h>
+
#if GRPC_ARES == 1
#include <string.h>
-#include <sys/types.h>
+#include <sys/types.h> // IWYU pragma: keep
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
#include <address_sorting/address_sorting.h>
#include <ares.h>
-#include "y_absl/container/inlined_vector.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
-#include <grpc/support/time.h>
+#include <grpc/support/sync.h>
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h"
#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
#include "src/core/lib/address_utils/parse_address.h"
#include "src/core/lib/address_utils/sockaddr_utils.h"
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/host_port.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/iomgr/error.h"
-#include "src/core/lib/iomgr/executor.h"
-#include "src/core/lib/iomgr/iomgr_internal.h"
-#include "src/core/lib/iomgr/nameser.h"
-#include "src/core/lib/iomgr/sockaddr.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/nameser.h" // IWYU pragma: keep
+#include "src/core/lib/iomgr/resolved_address.h"
#include "src/core/lib/iomgr/timer.h"
using grpc_core::ServerAddress;
@@ -262,7 +285,7 @@ static grpc_core::Timestamp calculate_next_ares_backup_poll_alarm(
"request:%p ev_driver=%p. next ares process poll time in "
"%" PRId64 " ms",
driver->request, driver, until_next_ares_backup_poll_alarm.millis());
- return grpc_core::ExecCtx::Get()->Now() + until_next_ares_backup_poll_alarm;
+ return grpc_core::Timestamp::Now() + until_next_ares_backup_poll_alarm;
}
static void on_timeout(void* arg, grpc_error_handle error) {
@@ -273,7 +296,7 @@ static void on_timeout(void* arg, grpc_error_handle error) {
"err=%s",
driver->request, driver, driver->shutting_down,
grpc_error_std_string(error).c_str());
- if (!driver->shutting_down && error == GRPC_ERROR_NONE) {
+ if (!driver->shutting_down && GRPC_ERROR_IS_NONE(error)) {
grpc_ares_ev_driver_shutdown_locked(driver);
}
grpc_ares_ev_driver_unref(driver);
@@ -299,7 +322,7 @@ static void on_ares_backup_poll_alarm(void* arg, grpc_error_handle error) {
"err=%s",
driver->request, driver, driver->shutting_down,
grpc_error_std_string(error).c_str());
- if (!driver->shutting_down && error == GRPC_ERROR_NONE) {
+ if (!driver->shutting_down && GRPC_ERROR_IS_NONE(error)) {
fd_node* fdn = driver->fds;
while (fdn != nullptr) {
if (!fdn->already_shutdown) {
@@ -341,7 +364,7 @@ static void on_readable(void* arg, grpc_error_handle error) {
fdn->readable_registered = false;
GRPC_CARES_TRACE_LOG("request:%p readable on %s", fdn->ev_driver->request,
fdn->grpc_polled_fd->GetName());
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
do {
ares_process_fd(ev_driver->channel, as, ARES_SOCKET_BAD);
} while (fdn->grpc_polled_fd->IsFdStillReadableLocked());
@@ -367,7 +390,7 @@ static void on_writable(void* arg, grpc_error_handle error) {
fdn->writable_registered = false;
GRPC_CARES_TRACE_LOG("request:%p writable on %s", ev_driver->request,
fdn->grpc_polled_fd->GetName());
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
ares_process_fd(ev_driver->channel, ARES_SOCKET_BAD, as);
} else {
// If error is not GRPC_ERROR_NONE, it means the fd has been shutdown or
@@ -474,7 +497,7 @@ void grpc_ares_ev_driver_start_locked(grpc_ares_ev_driver* ev_driver)
GRPC_CLOSURE_INIT(&ev_driver->on_timeout_locked, on_timeout, ev_driver,
grpc_schedule_on_exec_ctx);
grpc_timer_init(&ev_driver->query_timeout,
- grpc_core::ExecCtx::Get()->Now() + timeout,
+ grpc_core::Timestamp::Now() + timeout,
&ev_driver->on_timeout_locked);
// Initialize the backup poll alarm
grpc_core::Timestamp next_ares_backup_poll_alarm =
@@ -526,12 +549,13 @@ static void log_address_sorting_list(const grpc_ares_request* r,
const ServerAddressList& addresses,
const char* input_output_str) {
for (size_t i = 0; i < addresses.size(); i++) {
- TString addr_str =
- grpc_sockaddr_to_string(&addresses[i].address(), true);
+ auto addr_str = grpc_sockaddr_to_string(&addresses[i].address(), true);
gpr_log(GPR_INFO,
"(c-ares resolver) request:%p c-ares address sorting: %s[%" PRIuPTR
"]=%s",
- r, input_output_str, i, addr_str.c_str());
+ r, input_output_str, i,
+ addr_str.ok() ? addr_str->c_str()
+ : addr_str.status().ToString().c_str());
}
}
@@ -576,12 +600,10 @@ static void grpc_ares_request_unref_locked(grpc_ares_request* r)
void grpc_ares_complete_request_locked(grpc_ares_request* r)
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(r->mu) {
- /* Invoke on_done callback and destroy the
- request */
+ // Invoke on_done callback and destroy the request
r->ev_driver = nullptr;
- ServerAddressList* addresses = r->addresses_out->get();
- if (addresses != nullptr) {
- grpc_cares_wrapper_address_sorting_sort(r, addresses);
+ if (r->addresses_out != nullptr && *r->addresses_out != nullptr) {
+ grpc_cares_wrapper_address_sorting_sort(r, r->addresses_out->get());
GRPC_ERROR_UNREF(r->error);
r->error = GRPC_ERROR_NONE;
// TODO(apolcyn): allow c-ares to return a service config
@@ -642,13 +664,10 @@ static void on_hostbyname_done_locked(void* arg, int status, int /*timeouts*/,
}
ServerAddressList& addresses = **address_list_ptr;
for (size_t i = 0; hostent->h_addr_list[i] != nullptr; ++i) {
- y_absl::InlinedVector<grpc_arg, 1> args_to_add;
+ grpc_core::ChannelArgs args;
if (hr->is_balancer) {
- args_to_add.emplace_back(grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY), hr->host));
+ args = args.Set(GRPC_ARG_DEFAULT_AUTHORITY, hr->host);
}
- grpc_channel_args* args = grpc_channel_args_copy_and_add(
- nullptr, args_to_add.data(), args_to_add.size());
switch (hostent->h_addrtype) {
case AF_INET6: {
size_t addr_len = sizeof(struct sockaddr_in6);
@@ -794,6 +813,7 @@ static void on_txt_done_locked(void* arg, int status, int /*timeouts*/,
}
// Clean up.
ares_free_data(reply);
+ grpc_ares_request_unref_locked(r);
return;
fail:
TString error_msg =
@@ -805,38 +825,14 @@ fail:
r->error = grpc_error_add_child(error, r->error);
}
-void grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
- grpc_ares_request* r, const char* dns_server, const char* name,
- const char* default_port, grpc_pollset_set* interested_parties,
- int query_timeout_ms) Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(r->mu) {
- grpc_error_handle error = GRPC_ERROR_NONE;
- grpc_ares_hostbyname_request* hr = nullptr;
- /* parse name, splitting it into host and port parts */
- TString host;
- TString port;
- grpc_core::SplitHostPort(name, &host, &port);
- if (host.empty()) {
- error = grpc_error_set_str(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("unparseable host:port"),
- GRPC_ERROR_STR_TARGET_ADDRESS, name);
- goto error_cleanup;
- } else if (port.empty()) {
- if (default_port == nullptr || strlen(default_port) == 0) {
- error = grpc_error_set_str(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("no port in name"),
- GRPC_ERROR_STR_TARGET_ADDRESS, name);
- goto error_cleanup;
- }
- port = default_port;
- }
- error = grpc_ares_ev_driver_create_locked(&r->ev_driver, interested_parties,
- query_timeout_ms, r);
- if (error != GRPC_ERROR_NONE) goto error_cleanup;
- // If dns_server is specified, use it.
- if (dns_server != nullptr && dns_server[0] != '\0') {
- GRPC_CARES_TRACE_LOG("request:%p Using DNS server %s", r, dns_server);
+grpc_error_handle set_request_dns_server(grpc_ares_request* r,
+ y_absl::string_view dns_server)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(r->mu) {
+ if (!dns_server.empty()) {
+ GRPC_CARES_TRACE_LOG("request:%p Using DNS server %s", r,
+ dns_server.data());
grpc_resolved_address addr;
- if (grpc_parse_ipv4_hostport(dns_server, &addr, false /* log_errors */)) {
+ if (grpc_parse_ipv4_hostport(dns_server, &addr, /*log_errors=*/false)) {
r->dns_server_addr.family = AF_INET;
struct sockaddr_in* in = reinterpret_cast<struct sockaddr_in*>(addr.addr);
memcpy(&r->dns_server_addr.addr.addr4, &in->sin_addr,
@@ -844,7 +840,7 @@ void grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
r->dns_server_addr.tcp_port = grpc_sockaddr_get_port(&addr);
r->dns_server_addr.udp_port = grpc_sockaddr_get_port(&addr);
} else if (grpc_parse_ipv6_hostport(dns_server, &addr,
- false /* log_errors */)) {
+ /*log_errors=*/false)) {
r->dns_server_addr.family = AF_INET6;
struct sockaddr_in6* in6 =
reinterpret_cast<struct sockaddr_in6*>(addr.addr);
@@ -853,51 +849,49 @@ void grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
r->dns_server_addr.tcp_port = grpc_sockaddr_get_port(&addr);
r->dns_server_addr.udp_port = grpc_sockaddr_get_port(&addr);
} else {
- error = grpc_error_set_str(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("cannot parse authority"),
- GRPC_ERROR_STR_TARGET_ADDRESS, name);
- goto error_cleanup;
+ return GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ y_absl::StrCat("cannot parse authority ", dns_server));
}
int status =
ares_set_servers_ports(r->ev_driver->channel, &r->dns_server_addr);
if (status != ARES_SUCCESS) {
- error = GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
+ return GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
"C-ares status is not ARES_SUCCESS: ", ares_strerror(status)));
- goto error_cleanup;
}
}
- r->pending_queries = 1;
- if (grpc_ares_query_ipv6()) {
- hr = create_hostbyname_request_locked(r, host.c_str(),
- grpc_strhtons(port.c_str()),
- /*is_balancer=*/false, "AAAA");
- ares_gethostbyname(r->ev_driver->channel, hr->host, AF_INET6,
- on_hostbyname_done_locked, hr);
- }
- hr = create_hostbyname_request_locked(r, host.c_str(),
- grpc_strhtons(port.c_str()),
- /*is_balancer=*/false, "A");
- ares_gethostbyname(r->ev_driver->channel, hr->host, AF_INET,
- on_hostbyname_done_locked, hr);
- if (r->balancer_addresses_out != nullptr) {
- /* Query the SRV record */
- TString service_name = y_absl::StrCat("_grpclb._tcp.", host);
- GrpcAresQuery* srv_query = new GrpcAresQuery(r, service_name);
- ares_query(r->ev_driver->channel, service_name.c_str(), ns_c_in, ns_t_srv,
- on_srv_query_done_locked, srv_query);
- }
- if (r->service_config_json_out != nullptr) {
- TString config_name = y_absl::StrCat("_grpc_config.", host);
- GrpcAresQuery* txt_query = new GrpcAresQuery(r, config_name);
- ares_search(r->ev_driver->channel, config_name.c_str(), ns_c_in, ns_t_txt,
- on_txt_done_locked, txt_query);
- }
- grpc_ares_ev_driver_start_locked(r->ev_driver);
- grpc_ares_request_unref_locked(r);
- return;
+ return GRPC_ERROR_NONE;
+}
-error_cleanup:
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, r->on_done, error);
+// Common logic for all lookup methods.
+// If an error occurs, callers must run the client callback.
+grpc_error_handle grpc_dns_lookup_ares_continued(
+ grpc_ares_request* r, const char* dns_server, const char* name,
+ const char* default_port, grpc_pollset_set* interested_parties,
+ int query_timeout_ms, TString* host, TString* port, bool check_port)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(r->mu) {
+ grpc_error_handle error = GRPC_ERROR_NONE;
+ /* parse name, splitting it into host and port parts */
+ grpc_core::SplitHostPort(name, host, port);
+ if (host->empty()) {
+ error = grpc_error_set_str(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("unparseable host:port"),
+ GRPC_ERROR_STR_TARGET_ADDRESS, name);
+ return error;
+ } else if (check_port && port->empty()) {
+ if (default_port == nullptr || strlen(default_port) == 0) {
+ error = grpc_error_set_str(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("no port in name"),
+ GRPC_ERROR_STR_TARGET_ADDRESS, name);
+ return error;
+ }
+ *port = default_port;
+ }
+ error = grpc_ares_ev_driver_create_locked(&r->ev_driver, interested_parties,
+ query_timeout_ms, r);
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
+ // If dns_server is specified, use it.
+ error = set_request_dns_server(r, dns_server);
+ return error;
}
static bool inner_resolve_as_ip_literal_locked(
@@ -929,7 +923,7 @@ static bool inner_resolve_as_ip_literal_locked(
false /* log errors */)) {
GPR_ASSERT(*addrs == nullptr);
*addrs = y_absl::make_unique<ServerAddressList>();
- (*addrs)->emplace_back(addr.addr, addr.len, nullptr /* args */);
+ (*addrs)->emplace_back(addr.addr, addr.len, grpc_core::ChannelArgs());
return true;
}
return false;
@@ -995,7 +989,7 @@ static bool inner_maybe_resolve_localhost_manually_locked(
ipv6_loopback_addr.sin6_family = AF_INET6;
ipv6_loopback_addr.sin6_port = numeric_port;
(*addrs)->emplace_back(&ipv6_loopback_addr, sizeof(ipv6_loopback_addr),
- nullptr /* args */);
+ grpc_core::ChannelArgs() /* args */);
// Append the ipv4 loopback address.
struct sockaddr_in ipv4_loopback_addr;
memset(&ipv4_loopback_addr, 0, sizeof(ipv4_loopback_addr));
@@ -1004,7 +998,7 @@ static bool inner_maybe_resolve_localhost_manually_locked(
ipv4_loopback_addr.sin_family = AF_INET;
ipv4_loopback_addr.sin_port = numeric_port;
(*addrs)->emplace_back(&ipv4_loopback_addr, sizeof(ipv4_loopback_addr),
- nullptr /* args */);
+ grpc_core::ChannelArgs() /* args */);
// Let the address sorter figure out which one should be tried first.
grpc_cares_wrapper_address_sorting_sort(r, addrs->get());
return true;
@@ -1029,21 +1023,18 @@ static bool grpc_ares_maybe_resolve_localhost_manually_locked(
}
#endif /* GRPC_ARES_RESOLVE_LOCALHOST_MANUALLY */
-static grpc_ares_request* grpc_dns_lookup_ares_impl(
+static grpc_ares_request* grpc_dns_lookup_hostname_ares_impl(
const char* dns_server, const char* name, const char* default_port,
grpc_pollset_set* interested_parties, grpc_closure* on_done,
std::unique_ptr<grpc_core::ServerAddressList>* addrs,
- std::unique_ptr<grpc_core::ServerAddressList>* balancer_addrs,
- char** service_config_json, int query_timeout_ms) {
+ int query_timeout_ms) {
grpc_ares_request* r = new grpc_ares_request();
grpc_core::MutexLock lock(&r->mu);
r->ev_driver = nullptr;
r->on_done = on_done;
r->addresses_out = addrs;
- r->balancer_addresses_out = balancer_addrs;
- r->service_config_json_out = service_config_json;
GRPC_CARES_TRACE_LOG(
- "request:%p c-ares grpc_dns_lookup_ares_impl name=%s, "
+ "request:%p c-ares grpc_dns_lookup_hostname_ares_impl name=%s, "
"default_port=%s",
r, name, default_port);
// Early out if the target is an ipv4 or ipv6 literal.
@@ -1057,26 +1048,129 @@ static grpc_ares_request* grpc_dns_lookup_ares_impl(
grpc_ares_complete_request_locked(r);
return r;
}
- // Don't query for SRV and TXT records if the target is "localhost", so
- // as to cut down on lookups over the network, especially in tests:
- // https://github.com/grpc/proposal/pull/79
+ // Look up name using c-ares lib.
+ TString host;
+ TString port;
+ grpc_error_handle error = grpc_dns_lookup_ares_continued(
+ r, dns_server, name, default_port, interested_parties, query_timeout_ms,
+ &host, &port, true);
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, r->on_done, error);
+ return r;
+ }
+ r->pending_queries = 1;
+ grpc_ares_hostbyname_request* hr = nullptr;
+ if (grpc_ares_query_ipv6()) {
+ hr = create_hostbyname_request_locked(r, host.c_str(),
+ grpc_strhtons(port.c_str()),
+ /*is_balancer=*/false, "AAAA");
+ ares_gethostbyname(r->ev_driver->channel, hr->host, AF_INET6,
+ on_hostbyname_done_locked, hr);
+ }
+ hr = create_hostbyname_request_locked(r, host.c_str(),
+ grpc_strhtons(port.c_str()),
+ /*is_balancer=*/false, "A");
+ ares_gethostbyname(r->ev_driver->channel, hr->host, AF_INET,
+ on_hostbyname_done_locked, hr);
+ grpc_ares_ev_driver_start_locked(r->ev_driver);
+ grpc_ares_request_unref_locked(r);
+ return r;
+}
+
+grpc_ares_request* grpc_dns_lookup_srv_ares_impl(
+ const char* dns_server, const char* name,
+ grpc_pollset_set* interested_parties, grpc_closure* on_done,
+ std::unique_ptr<grpc_core::ServerAddressList>* balancer_addresses,
+ int query_timeout_ms) {
+ grpc_ares_request* r = new grpc_ares_request();
+ grpc_core::MutexLock lock(&r->mu);
+ r->ev_driver = nullptr;
+ r->on_done = on_done;
+ r->balancer_addresses_out = balancer_addresses;
+ GRPC_CARES_TRACE_LOG(
+ "request:%p c-ares grpc_dns_lookup_srv_ares_impl name=%s", r, name);
+ grpc_error_handle error = GRPC_ERROR_NONE;
+ // Don't query for SRV records if the target is "localhost"
if (target_matches_localhost(name)) {
- r->balancer_addresses_out = nullptr;
- r->service_config_json_out = nullptr;
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, r->on_done, error);
+ return r;
}
// Look up name using c-ares lib.
- grpc_dns_lookup_ares_continue_after_check_localhost_and_ip_literals_locked(
- r, dns_server, name, default_port, interested_parties, query_timeout_ms);
+ TString host;
+ TString port;
+ error = grpc_dns_lookup_ares_continued(r, dns_server, name, nullptr,
+ interested_parties, query_timeout_ms,
+ &host, &port, false);
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, r->on_done, error);
+ return r;
+ }
+ r->pending_queries = 1;
+ /* Query the SRV record */
+ TString service_name = y_absl::StrCat("_grpclb._tcp.", host);
+ GrpcAresQuery* srv_query = new GrpcAresQuery(r, service_name);
+ ares_query(r->ev_driver->channel, service_name.c_str(), ns_c_in, ns_t_srv,
+ on_srv_query_done_locked, srv_query);
+ grpc_ares_ev_driver_start_locked(r->ev_driver);
+ grpc_ares_request_unref_locked(r);
+ return r;
+}
+
+grpc_ares_request* grpc_dns_lookup_txt_ares_impl(
+ const char* dns_server, const char* name,
+ grpc_pollset_set* interested_parties, grpc_closure* on_done,
+ char** service_config_json, int query_timeout_ms) {
+ grpc_ares_request* r = new grpc_ares_request();
+ grpc_core::MutexLock lock(&r->mu);
+ r->ev_driver = nullptr;
+ r->on_done = on_done;
+ r->service_config_json_out = service_config_json;
+ GRPC_CARES_TRACE_LOG(
+ "request:%p c-ares grpc_dns_lookup_txt_ares_impl name=%s", r, name);
+ grpc_error_handle error = GRPC_ERROR_NONE;
+ // Don't query for TXT records if the target is "localhost"
+ if (target_matches_localhost(name)) {
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, r->on_done, error);
+ return r;
+ }
+ // Look up name using c-ares lib.
+ TString host;
+ TString port;
+ error = grpc_dns_lookup_ares_continued(r, dns_server, name, nullptr,
+ interested_parties, query_timeout_ms,
+ &host, &port, false);
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, r->on_done, error);
+ return r;
+ }
+ r->pending_queries = 1;
+ /* Query the TXT record */
+ TString config_name = y_absl::StrCat("_grpc_config.", host);
+ GrpcAresQuery* txt_query = new GrpcAresQuery(r, config_name);
+ ares_search(r->ev_driver->channel, config_name.c_str(), ns_c_in, ns_t_txt,
+ on_txt_done_locked, txt_query);
+ grpc_ares_ev_driver_start_locked(r->ev_driver);
+ grpc_ares_request_unref_locked(r);
return r;
}
-grpc_ares_request* (*grpc_dns_lookup_ares)(
+grpc_ares_request* (*grpc_dns_lookup_hostname_ares)(
const char* dns_server, const char* name, const char* default_port,
grpc_pollset_set* interested_parties, grpc_closure* on_done,
std::unique_ptr<grpc_core::ServerAddressList>* addrs,
- std::unique_ptr<grpc_core::ServerAddressList>* balancer_addrs,
+ int query_timeout_ms) = grpc_dns_lookup_hostname_ares_impl;
+
+grpc_ares_request* (*grpc_dns_lookup_srv_ares)(
+ const char* dns_server, const char* name,
+ grpc_pollset_set* interested_parties, grpc_closure* on_done,
+ std::unique_ptr<grpc_core::ServerAddressList>* balancer_addresses,
+ int query_timeout_ms) = grpc_dns_lookup_srv_ares_impl;
+
+grpc_ares_request* (*grpc_dns_lookup_txt_ares)(
+ const char* dns_server, const char* name,
+ grpc_pollset_set* interested_parties, grpc_closure* on_done,
char** service_config_json,
- int query_timeout_ms) = grpc_dns_lookup_ares_impl;
+ int query_timeout_ms) = grpc_dns_lookup_txt_ares_impl;
static void grpc_cancel_ares_request_impl(grpc_ares_request* r) {
GPR_ASSERT(r != nullptr);
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h
index 3d92548a97..e8c9ad6789 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h
@@ -21,12 +21,21 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <memory>
+
#include <ares.h>
-#include "src/core/lib/iomgr/iomgr.h"
-#include "src/core/lib/iomgr/polling_entity.h"
-#include "src/core/lib/iomgr/resolve_address.h"
-#include "src/core/lib/iomgr/work_serializer.h"
+#include "y_absl/base/thread_annotations.h"
+
+#include <grpc/support/log.h>
+
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/resolver/server_address.h"
#define GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS 120000
@@ -69,23 +78,36 @@ struct grpc_ares_request {
grpc_error_handle error Y_ABSL_GUARDED_BY(mu) = GRPC_ERROR_NONE;
};
-/* Asynchronously resolve \a name. It will try to resolve grpclb SRV records in
- addition to the normal address records. For normal address records, it uses
- \a default_port if a port isn't designated in \a name, otherwise it uses the
- port in \a name. grpc_ares_init() must be called at least once before this
- function. The returned grpc_ares_request object is owned by the caller and it
- is safe to free after on_done is called back.
+/* Asynchronously resolve \a name (A/AAAA records only).
+ It uses \a default_port if a port isn't designated in \a name, otherwise it
+ uses the port in \a name. grpc_ares_init() must be called at least once before
+ this function. The returned grpc_ares_request object is owned by the caller
+ and it is safe to free after on_done is called back.
Note on synchronization: \a as on_done might be called from another thread
~immediately, access to the grpc_ares_request* return value must be
synchronized by the caller. TODO(apolcyn): we should remove this requirement
by changing this API to use two phase initialization - one API to create
the grpc_ares_request* and another to start the async work. */
-extern grpc_ares_request* (*grpc_dns_lookup_ares)(
+extern grpc_ares_request* (*grpc_dns_lookup_hostname_ares)(
const char* dns_server, const char* name, const char* default_port,
grpc_pollset_set* interested_parties, grpc_closure* on_done,
std::unique_ptr<grpc_core::ServerAddressList>* addresses,
+ int query_timeout_ms);
+
+// Asynchronously resolve a SRV record.
+// See \a grpc_dns_lookup_hostname_ares for usage details and caveats.
+extern grpc_ares_request* (*grpc_dns_lookup_srv_ares)(
+ const char* dns_server, const char* name,
+ grpc_pollset_set* interested_parties, grpc_closure* on_done,
std::unique_ptr<grpc_core::ServerAddressList>* balancer_addresses,
+ int query_timeout_ms);
+
+// Asynchronously resolve a TXT record.
+// See \a grpc_dns_lookup_hostname_ares for usage details and caveats.
+extern grpc_ares_request* (*grpc_dns_lookup_txt_ares)(
+ const char* dns_server, const char* name,
+ grpc_pollset_set* interested_parties, grpc_closure* on_done,
char** service_config_json, int query_timeout_ms);
/* Cancel the pending grpc_ares_request \a request */
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc
index 5269a06e26..1085accd29 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc
@@ -18,7 +18,8 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/iomgr/port.h"
+#include "src/core/lib/iomgr/port.h" // IWYU pragma: keep
+
#if GRPC_ARES == 1 && defined(GRPC_WINDOWS_SOCKET_ARES_EV_DRIVER)
#include <grpc/support/string_util.h>
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc
index 07a617c14d..97920b9ba1 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc
@@ -21,6 +21,8 @@
#include "src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h"
+#include "src/core/lib/gprpp/global_config.h"
+
GPR_GLOBAL_CONFIG_DEFINE_STRING(
grpc_dns_resolver, "",
"Declares which DNS resolver to use. The default is ares if gRPC is built "
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h
index d0a3486ea3..964fa1df89 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h
@@ -21,7 +21,8 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/gprpp/global_config.h"
+#include "src/core/lib/gprpp/global_config_generic.h"
+#include "src/core/lib/gprpp/memory.h"
GPR_GLOBAL_CONFIG_DECLARE_STRING(grpc_dns_resolver);
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc
index dddf01bd20..665527308f 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc
@@ -16,29 +16,45 @@
#include <grpc/support/port_platform.h>
-#include <inttypes.h>
-
-#include <climits>
-#include <cstring>
+#include <algorithm>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
#include "y_absl/functional/bind_front.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/strip.h"
+#include "y_absl/types/optional.h"
-#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
-#include <grpc/support/time.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/log.h>
#include "src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h"
+#include "src/core/ext/filters/client_channel/resolver/polling_resolver.h"
#include "src/core/lib/backoff/backoff.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/global_config_generic.h"
+#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/iomgr/resolve_address.h"
-#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/iomgr/work_serializer.h"
+#include "src/core/lib/iomgr/resolved_address.h"
+#include "src/core/lib/resolver/resolver.h"
+#include "src/core/lib/resolver/resolver_factory.h"
#include "src/core/lib/resolver/resolver_registry.h"
#include "src/core/lib/resolver/server_address.h"
+#include "src/core/lib/uri/uri_parser.h"
#define GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS 1
#define GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER 1.6
@@ -49,247 +65,94 @@ namespace grpc_core {
namespace {
-class NativeClientChannelDNSResolver : public Resolver {
- public:
- explicit NativeClientChannelDNSResolver(ResolverArgs args);
-
- void StartLocked() override;
-
- void RequestReresolutionLocked() override;
+TraceFlag grpc_trace_dns_resolver(false, "dns_resolver");
- void ResetBackoffLocked() override;
+class NativeClientChannelDNSResolver : public PollingResolver {
+ public:
+ NativeClientChannelDNSResolver(ResolverArgs args,
+ const ChannelArgs& channel_args);
+ ~NativeClientChannelDNSResolver() override;
- void ShutdownLocked() override;
+ OrphanablePtr<Orphanable> StartRequest() override;
private:
- ~NativeClientChannelDNSResolver() override;
+ // No-op request class, used so that the PollingResolver code knows
+ // when there is a request in flight, even if the request is not
+ // actually cancellable.
+ class Request : public Orphanable {
+ public:
+ Request() = default;
- void MaybeStartResolvingLocked();
- void StartResolvingLocked();
+ void Orphan() override { delete this; }
+ };
- static void OnNextResolution(void* arg, grpc_error_handle error);
- void OnNextResolutionLocked(grpc_error_handle error);
void OnResolved(
y_absl::StatusOr<std::vector<grpc_resolved_address>> addresses_or);
- void OnResolvedLocked(
- y_absl::StatusOr<std::vector<grpc_resolved_address>> addresses_or);
-
- /// name to resolve
- TString name_to_resolve_;
- /// channel args
- grpc_channel_args* channel_args_ = nullptr;
- std::shared_ptr<WorkSerializer> work_serializer_;
- std::unique_ptr<ResultHandler> result_handler_;
- /// pollset_set to drive the name resolution process
- grpc_pollset_set* interested_parties_ = nullptr;
- /// are we shutting down?
- bool shutdown_ = false;
- /// are we currently resolving?
- bool resolving_ = false;
- /// next resolution timer
- bool have_next_resolution_timer_ = false;
- grpc_timer next_resolution_timer_;
- grpc_closure on_next_resolution_;
- /// min time between DNS requests
- Duration min_time_between_resolutions_;
- /// timestamp of last DNS request
- y_absl::optional<Timestamp> last_resolution_timestamp_;
- /// retry backoff state
- BackOff backoff_;
- /// tracks pending resolutions
- OrphanablePtr<DNSResolver::Request> dns_request_;
};
NativeClientChannelDNSResolver::NativeClientChannelDNSResolver(
- ResolverArgs args)
- : name_to_resolve_(y_absl::StripPrefix(args.uri.path(), "/")),
- channel_args_(grpc_channel_args_copy(args.args)),
- work_serializer_(std::move(args.work_serializer)),
- result_handler_(std::move(args.result_handler)),
- interested_parties_(grpc_pollset_set_create()),
- min_time_between_resolutions_(
- Duration::Milliseconds(grpc_channel_args_find_integer(
- channel_args_, GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS,
- {1000 * 30, 0, INT_MAX}))),
- backoff_(BackOff::Options()
- .set_initial_backoff(Duration::Seconds(
- GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS))
- .set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
- .set_jitter(GRPC_DNS_RECONNECT_JITTER)
- .set_max_backoff(Duration::Seconds(
- GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS))) {
- if (args.pollset_set != nullptr) {
- grpc_pollset_set_add_pollset_set(interested_parties_, args.pollset_set);
+ ResolverArgs args, const ChannelArgs& channel_args)
+ : PollingResolver(
+ std::move(args), channel_args,
+ std::max(Duration::Zero(),
+ channel_args
+ .GetDurationFromIntMillis(
+ GRPC_ARG_DNS_MIN_TIME_BETWEEN_RESOLUTIONS_MS)
+ .value_or(Duration::Seconds(30))),
+ BackOff::Options()
+ .set_initial_backoff(Duration::Milliseconds(
+ GRPC_DNS_INITIAL_CONNECT_BACKOFF_SECONDS * 1000))
+ .set_multiplier(GRPC_DNS_RECONNECT_BACKOFF_MULTIPLIER)
+ .set_jitter(GRPC_DNS_RECONNECT_JITTER)
+ .set_max_backoff(Duration::Milliseconds(
+ GRPC_DNS_RECONNECT_MAX_BACKOFF_SECONDS * 1000)),
+ &grpc_trace_dns_resolver) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_dns_resolver)) {
+ gpr_log(GPR_DEBUG, "[dns_resolver=%p] created", this);
}
}
NativeClientChannelDNSResolver::~NativeClientChannelDNSResolver() {
- grpc_channel_args_destroy(channel_args_);
- grpc_pollset_set_destroy(interested_parties_);
-}
-
-void NativeClientChannelDNSResolver::StartLocked() {
- MaybeStartResolvingLocked();
-}
-
-void NativeClientChannelDNSResolver::RequestReresolutionLocked() {
- if (!resolving_) {
- MaybeStartResolvingLocked();
- }
-}
-
-void NativeClientChannelDNSResolver::ResetBackoffLocked() {
- if (have_next_resolution_timer_) {
- grpc_timer_cancel(&next_resolution_timer_);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_dns_resolver)) {
+ gpr_log(GPR_DEBUG, "[dns_resolver=%p] destroyed", this);
}
- backoff_.Reset();
}
-void NativeClientChannelDNSResolver::ShutdownLocked() {
- shutdown_ = true;
- if (have_next_resolution_timer_) {
- grpc_timer_cancel(&next_resolution_timer_);
+OrphanablePtr<Orphanable> NativeClientChannelDNSResolver::StartRequest() {
+ Ref(DEBUG_LOCATION, "dns_request").release();
+ auto dns_request_handle = GetDNSResolver()->LookupHostname(
+ y_absl::bind_front(&NativeClientChannelDNSResolver::OnResolved, this),
+ name_to_resolve(), kDefaultSecurePort, kDefaultDNSRequestTimeout,
+ interested_parties(), /*name_server=*/"");
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_dns_resolver)) {
+ gpr_log(GPR_DEBUG, "[dns_resolver=%p] starting request=%p", this,
+ DNSResolver::HandleToString(dns_request_handle).c_str());
}
- dns_request_.reset();
-}
-
-void NativeClientChannelDNSResolver::OnNextResolution(void* arg,
- grpc_error_handle error) {
- NativeClientChannelDNSResolver* r =
- static_cast<NativeClientChannelDNSResolver*>(arg);
- (void)GRPC_ERROR_REF(error); // ref owned by lambda
- r->work_serializer_->Run([r, error]() { r->OnNextResolutionLocked(error); },
- DEBUG_LOCATION);
-}
-
-void NativeClientChannelDNSResolver::OnNextResolutionLocked(
- grpc_error_handle error) {
- have_next_resolution_timer_ = false;
- if (error == GRPC_ERROR_NONE && !resolving_) {
- StartResolvingLocked();
- }
- Unref(DEBUG_LOCATION, "retry-timer");
- GRPC_ERROR_UNREF(error);
+ return MakeOrphanable<Request>();
}
void NativeClientChannelDNSResolver::OnResolved(
y_absl::StatusOr<std::vector<grpc_resolved_address>> addresses_or) {
- work_serializer_->Run(
- [this, addresses_or]() mutable {
- OnResolvedLocked(std::move(addresses_or));
- },
- DEBUG_LOCATION);
-}
-
-void NativeClientChannelDNSResolver::OnResolvedLocked(
- y_absl::StatusOr<std::vector<grpc_resolved_address>> addresses_or) {
- GPR_ASSERT(resolving_);
- resolving_ = false;
- dns_request_.reset();
- if (shutdown_) {
- Unref(DEBUG_LOCATION, "dns-resolving");
- return;
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_dns_resolver)) {
+ gpr_log(GPR_DEBUG, "[dns_resolver=%p] request complete, status=\"%s\"",
+ this, addresses_or.status().ToString().c_str());
}
+ // Convert result from iomgr DNS API into Resolver::Result.
+ Result result;
if (addresses_or.ok()) {
ServerAddressList addresses;
for (auto& addr : *addresses_or) {
- addresses.emplace_back(addr, nullptr /* args */);
+ addresses.emplace_back(addr, ChannelArgs());
}
- Result result;
result.addresses = std::move(addresses);
- result.args = grpc_channel_args_copy(channel_args_);
- result_handler_->ReportResult(std::move(result));
- // Reset backoff state so that we start from the beginning when the
- // next request gets triggered.
- backoff_.Reset();
} else {
- TString error_message = addresses_or.status().ToString();
- gpr_log(GPR_INFO, "dns resolution failed (will retry): %s",
- error_message.c_str());
- // Return transient error.
- Result result;
- result.addresses = y_absl::UnavailableError(y_absl::StrCat(
- "DNS resolution failed for ", name_to_resolve_, ": ", error_message));
- result.args = grpc_channel_args_copy(channel_args_);
- result_handler_->ReportResult(std::move(result));
- // Set up for retry.
- // InvalidateNow to avoid getting stuck re-initializing this timer
- // in a loop while draining the currently-held WorkSerializer.
- // Also see https://github.com/grpc/grpc/issues/26079.
- ExecCtx::Get()->InvalidateNow();
- Timestamp next_try = backoff_.NextAttemptTime();
- Duration timeout = next_try - ExecCtx::Get()->Now();
- GPR_ASSERT(!have_next_resolution_timer_);
- have_next_resolution_timer_ = true;
- // TODO(roth): We currently deal with this ref manually. Once the
- // new closure API is done, find a way to track this ref with the timer
- // callback as part of the type system.
- Ref(DEBUG_LOCATION, "next_resolution_timer").release();
- if (timeout > Duration::Zero()) {
- gpr_log(GPR_DEBUG, "retrying in %" PRId64 " milliseconds",
- timeout.millis());
- } else {
- gpr_log(GPR_DEBUG, "retrying immediately");
- }
- GRPC_CLOSURE_INIT(&on_next_resolution_,
- NativeClientChannelDNSResolver::OnNextResolution, this,
- grpc_schedule_on_exec_ctx);
- grpc_timer_init(&next_resolution_timer_, next_try, &on_next_resolution_);
+ result.addresses = y_absl::UnavailableError(
+ y_absl::StrCat("DNS resolution failed for ", name_to_resolve(), ": ",
+ addresses_or.status().ToString()));
}
- Unref(DEBUG_LOCATION, "dns-resolving");
-}
-
-void NativeClientChannelDNSResolver::MaybeStartResolvingLocked() {
- // If there is an existing timer, the time it fires is the earliest time we
- // can start the next resolution.
- if (have_next_resolution_timer_) return;
- if (last_resolution_timestamp_.has_value()) {
- // InvalidateNow to avoid getting stuck re-initializing this timer
- // in a loop while draining the currently-held WorkSerializer.
- // Also see https://github.com/grpc/grpc/issues/26079.
- ExecCtx::Get()->InvalidateNow();
- const Timestamp earliest_next_resolution =
- *last_resolution_timestamp_ + min_time_between_resolutions_;
- const Duration time_until_next_resolution =
- earliest_next_resolution - ExecCtx::Get()->Now();
- if (time_until_next_resolution > Duration::Zero()) {
- const Duration last_resolution_ago =
- ExecCtx::Get()->Now() - *last_resolution_timestamp_;
- gpr_log(GPR_DEBUG,
- "In cooldown from last resolution (from %" PRId64
- " ms ago). Will resolve again in %" PRId64 " ms",
- last_resolution_ago.millis(),
- time_until_next_resolution.millis());
- have_next_resolution_timer_ = true;
- // TODO(roth): We currently deal with this ref manually. Once the
- // new closure API is done, find a way to track this ref with the timer
- // callback as part of the type system.
- Ref(DEBUG_LOCATION, "next_resolution_timer_cooldown").release();
- GRPC_CLOSURE_INIT(&on_next_resolution_,
- NativeClientChannelDNSResolver::OnNextResolution, this,
- grpc_schedule_on_exec_ctx);
- grpc_timer_init(&next_resolution_timer_,
- ExecCtx::Get()->Now() + time_until_next_resolution,
- &on_next_resolution_);
- return;
- }
- }
- StartResolvingLocked();
-}
-
-void NativeClientChannelDNSResolver::StartResolvingLocked() {
- gpr_log(GPR_DEBUG, "Start resolving.");
- // TODO(roth): We currently deal with this ref manually. Once the
- // new closure API is done, find a way to track this ref with the timer
- // callback as part of the type system.
- Ref(DEBUG_LOCATION, "dns-resolving").release();
- GPR_ASSERT(!resolving_);
- resolving_ = true;
- dns_request_ = GetDNSResolver()->ResolveName(
- name_to_resolve_, kDefaultSecurePort, interested_parties_,
- y_absl::bind_front(&NativeClientChannelDNSResolver::OnResolved, this));
- dns_request_->Start();
- last_resolution_timestamp_ = ExecCtx::Get()->Now();
+ result.args = channel_args();
+ OnRequestComplete(std::move(result));
+ Unref(DEBUG_LOCATION, "dns_request");
}
//
@@ -314,7 +177,9 @@ class NativeClientChannelDNSResolverFactory : public ResolverFactory {
OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
if (!IsValidUri(args.uri)) return nullptr;
- return MakeOrphanable<NativeClientChannelDNSResolver>(std::move(args));
+ auto channel_args = args.args;
+ return MakeOrphanable<NativeClientChannelDNSResolver>(
+ std::move(args), std::move(channel_args));
}
};
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
index 653f90ad21..5fdbf01618 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
@@ -21,28 +21,27 @@
#include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
-#include <limits.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <memory>
+#include <utility>
-#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/support/log.h>
-#include "src/core/lib/address_utils/parse_address.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/iomgr/closure.h"
-#include "src/core/lib/iomgr/resolve_address.h"
-#include "src/core/lib/iomgr/unix_sockets_posix.h"
-#include "src/core/lib/iomgr/work_serializer.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/resolver/resolver_factory.h"
#include "src/core/lib/resolver/resolver_registry.h"
#include "src/core/lib/resolver/server_address.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/lib/service_config/service_config.h"
+#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
@@ -60,8 +59,6 @@ class FakeResolver : public Resolver {
friend class FakeResolverResponseGenerator;
friend class FakeResolverResponseSetter;
- ~FakeResolver() override;
-
void ShutdownLocked() override;
void MaybeSendResultLocked();
@@ -69,7 +66,7 @@ class FakeResolver : public Resolver {
void ReturnReresolutionResult();
// passed-in parameters
- grpc_channel_args* channel_args_ = nullptr;
+ ChannelArgs channel_args_;
std::shared_ptr<WorkSerializer> work_serializer_;
std::unique_ptr<ResultHandler> result_handler_;
RefCountedPtr<FakeResolverResponseGenerator> response_generator_;
@@ -95,21 +92,17 @@ FakeResolver::FakeResolver(ResolverArgs args)
: work_serializer_(std::move(args.work_serializer)),
result_handler_(std::move(args.result_handler)),
response_generator_(
- FakeResolverResponseGenerator::GetFromArgs(args.args)) {
+ args.args.GetObjectRef<FakeResolverResponseGenerator>()) {
// Channels sharing the same subchannels may have different resolver response
// generators. If we don't remove this arg, subchannel pool will create new
// subchannels for the same address instead of reusing existing ones because
// of different values of this channel arg.
- const char* args_to_remove[] = {GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR};
- channel_args_ = grpc_channel_args_copy_and_remove(
- args.args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove));
+ channel_args_ = args.args.Remove(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR);
if (response_generator_ != nullptr) {
response_generator_->SetFakeResolver(Ref());
}
}
-FakeResolver::~FakeResolver() { grpc_channel_args_destroy(channel_args_); }
-
void FakeResolver::StartLocked() {
started_ = true;
MaybeSendResultLocked();
@@ -148,18 +141,14 @@ void FakeResolver::MaybeSendResultLocked() {
Result result;
result.addresses = y_absl::UnavailableError("Resolver transient failure");
result.service_config = result.addresses.status();
- result.args = grpc_channel_args_copy(channel_args_);
+ result.args = channel_args_;
result_handler_->ReportResult(std::move(result));
return_failure_ = false;
} else if (has_next_result_) {
- Result result;
- result.addresses = std::move(next_result_.addresses);
- result.service_config = std::move(next_result_.service_config);
// When both next_results_ and channel_args_ contain an arg with the same
- // name, only the one in next_results_ will be kept since next_results_ is
- // before channel_args_.
- result.args = grpc_channel_args_union(next_result_.args, channel_args_);
- result_handler_->ReportResult(std::move(result));
+ // name, only the one in next_results_.
+ next_result_.args = next_result_.args.UnionWith(channel_args_);
+ result_handler_->ReportResult(std::move(next_result_));
has_next_result_ = false;
}
}
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h
index 27bd6cc1d1..083a1d4d70 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h
@@ -19,10 +19,15 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/channel/channel_args.h"
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
+
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/resolver/resolver.h"
#define GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR \
@@ -79,6 +84,15 @@ class FakeResolverResponseGenerator
static RefCountedPtr<FakeResolverResponseGenerator> GetFromArgs(
const grpc_channel_args* args);
+ static y_absl::string_view ChannelArgName() {
+ return GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR;
+ }
+
+ static int ChannelArgsCompare(const FakeResolverResponseGenerator* a,
+ const FakeResolverResponseGenerator* b) {
+ return QsortCompare(a, b);
+ }
+
private:
friend class FakeResolver;
// Set the corresponding FakeResolver to this generator.
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc
index c499f81278..91655f678d 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc
@@ -16,16 +16,52 @@
#include <grpc/support/port_platform.h>
-#include <random>
+#include <string.h>
-#include "src/core/ext/xds/xds_client.h"
-#include "src/core/lib/gpr/env.h"
-#include "src/core/lib/gpr/string.h"
+#include <cstdint>
+#include <map>
+#include <memory>
+#include <random>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/strip.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/log.h>
+
+#include "src/core/ext/xds/xds_client_grpc.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/env.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/work_serializer.h"
#include "src/core/lib/http/httpcli.h"
+#include "src/core/lib/http/parser.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/polling_entity.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/resolver/resolver.h"
+#include "src/core/lib/resolver/resolver_factory.h"
#include "src/core/lib/resolver/resolver_registry.h"
-#include "src/core/lib/resource_quota/api.h"
+#include "src/core/lib/resource_quota/resource_quota.h"
#include "src/core/lib/security/credentials/alts/check_gcp_environment.h"
+#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
@@ -131,12 +167,12 @@ GoogleCloud2ProdResolver::MetadataQuery::MetadataQuery(
const_cast<char*>(GRPC_ARG_RESOURCE_QUOTA),
resolver_->resource_quota_.get(), grpc_resource_quota_arg_vtable());
grpc_channel_args args = {1, &resource_quota_arg};
- http_request_ = HttpRequest::Get(
- std::move(*uri), &args, pollent, &request,
- ExecCtx::Get()->Now() + Duration::Seconds(10), // 10s timeout
- &on_done_, &response_,
- RefCountedPtr<grpc_channel_credentials>(
- grpc_insecure_credentials_create()));
+ http_request_ =
+ HttpRequest::Get(std::move(*uri), &args, pollent, &request,
+ Timestamp::Now() + Duration::Seconds(10), // 10s timeout
+ &on_done_, &response_,
+ RefCountedPtr<grpc_channel_credentials>(
+ grpc_insecure_credentials_create()));
http_request_->Start();
}
@@ -177,7 +213,7 @@ void GoogleCloud2ProdResolver::ZoneQuery::OnDone(
GoogleCloud2ProdResolver* resolver, const grpc_http_response* response,
grpc_error_handle error) {
y_absl::StatusOr<TString> zone;
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
zone = y_absl::UnknownError(
y_absl::StrCat("error fetching zone from metadata server: ",
grpc_error_std_string(error)));
@@ -218,11 +254,11 @@ GoogleCloud2ProdResolver::IPv6Query::IPv6Query(
void GoogleCloud2ProdResolver::IPv6Query::OnDone(
GoogleCloud2ProdResolver* resolver, const grpc_http_response* response,
grpc_error_handle error) {
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_ERROR, "error fetching IPv6 address from metadata server: %s",
grpc_error_std_string(error).c_str());
}
- resolver->IPv6QueryDone(error == GRPC_ERROR_NONE && response->status == 200);
+ resolver->IPv6QueryDone(GRPC_ERROR_IS_NONE(error) && response->status == 200);
GRPC_ERROR_UNREF(error);
}
@@ -231,24 +267,25 @@ void GoogleCloud2ProdResolver::IPv6Query::OnDone(
//
GoogleCloud2ProdResolver::GoogleCloud2ProdResolver(ResolverArgs args)
- : resource_quota_(ResourceQuotaFromChannelArgs(args.args)),
+ : resource_quota_(args.args.GetObjectRef<ResourceQuota>()),
work_serializer_(std::move(args.work_serializer)),
pollent_(grpc_polling_entity_create_from_pollset_set(args.pollset_set)) {
y_absl::string_view name_to_resolve = y_absl::StripPrefix(args.uri.path(), "/");
// If we're not running on GCP, we can't use DirectPath, so delegate
// to the DNS resolver.
- bool test_only_pretend_running_on_gcp = grpc_channel_args_find_bool(
- args.args, "grpc.testing.google_c2p_resolver_pretend_running_on_gcp",
- false);
- bool running_on_gcp =
+ const bool test_only_pretend_running_on_gcp =
+ args.args
+ .GetBool("grpc.testing.google_c2p_resolver_pretend_running_on_gcp")
+ .value_or(false);
+ const bool running_on_gcp =
test_only_pretend_running_on_gcp || grpc_alts_is_running_on_gcp();
if (!running_on_gcp ||
// If the client is already using xDS, we can't use it here, because
// they may be talking to a completely different xDS server than we
// want to.
// TODO(roth): When we implement xDS federation, remove this constraint.
- UniquePtr<char>(gpr_getenv("GRPC_XDS_BOOTSTRAP")) != nullptr ||
- UniquePtr<char>(gpr_getenv("GRPC_XDS_BOOTSTRAP_CONFIG")) != nullptr) {
+ GetEnv("GRPC_XDS_BOOTSTRAP").has_value() ||
+ GetEnv("GRPC_XDS_BOOTSTRAP_CONFIG").has_value()) {
using_dns_ = true;
child_resolver_ =
CoreConfiguration::Get().resolver_registry().CreateResolver(
@@ -258,13 +295,12 @@ GoogleCloud2ProdResolver::GoogleCloud2ProdResolver(ResolverArgs args)
return;
}
// Maybe override metadata server name for testing
- const char* test_only_metadata_server_override =
- grpc_channel_args_find_string(
- args.args,
+ y_absl::optional<TString> test_only_metadata_server_override =
+ args.args.GetOwnedString(
"grpc.testing.google_c2p_resolver_metadata_server_override");
- if (test_only_metadata_server_override != nullptr &&
- strlen(test_only_metadata_server_override) > 0) {
- metadata_server_name_ = TString(test_only_metadata_server_override);
+ if (test_only_metadata_server_override.has_value() &&
+ !test_only_metadata_server_override->empty()) {
+ metadata_server_name_ = std::move(*test_only_metadata_server_override);
}
// Create xds resolver.
child_resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
@@ -336,25 +372,32 @@ void GoogleCloud2ProdResolver::StartXdsResolver() {
};
}
// Allow the TD server uri to be overridden for testing purposes.
- UniquePtr<char> override_server(
- gpr_getenv("GRPC_TEST_ONLY_GOOGLE_C2P_RESOLVER_TRAFFIC_DIRECTOR_URI"));
+ auto override_server =
+ GetEnv("GRPC_TEST_ONLY_GOOGLE_C2P_RESOLVER_TRAFFIC_DIRECTOR_URI");
const char* server_uri =
- override_server != nullptr && strlen(override_server.get()) > 0
- ? override_server.get()
+ override_server.has_value() && !override_server->empty()
+ ? override_server->c_str()
: "directpath-pa.googleapis.com";
+ Json xds_server = Json::Array{
+ Json::Object{
+ {"server_uri", server_uri},
+ {"channel_creds",
+ Json::Array{
+ Json::Object{
+ {"type", "google_default"},
+ },
+ }},
+ {"server_features", Json::Array{"xds_v3"}},
+ },
+ };
Json bootstrap = Json::Object{
- {"xds_servers",
- Json::Array{
- Json::Object{
- {"server_uri", server_uri},
- {"channel_creds",
- Json::Array{
- Json::Object{
- {"type", "google_default"},
- },
- }},
- {"server_features", Json::Array{"xds_v3"}},
- },
+ {"xds_servers", xds_server},
+ {"authorities",
+ Json::Object{
+ {"traffic-director-c2p.xds.googleapis.com",
+ Json::Object{
+ {"xds_servers", std::move(xds_server)},
+ }},
}},
{"node", std::move(node)},
};
@@ -370,15 +413,35 @@ void GoogleCloud2ProdResolver::StartXdsResolver() {
class GoogleCloud2ProdResolverFactory : public ResolverFactory {
public:
- // TODO(roth): Remove experimental suffix once this code is proven stable,
- // and update the scheme in google_c2p_resolver_test.cc when doing so.
+ y_absl::string_view scheme() const override { return "google-c2p"; }
+
+ bool IsValidUri(const URI& uri) const override {
+ if (GPR_UNLIKELY(!uri.authority().empty())) {
+ gpr_log(GPR_ERROR, "google-c2p URI scheme does not support authorities");
+ return false;
+ }
+ return true;
+ }
+
+ OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
+ if (!IsValidUri(args.uri)) return nullptr;
+ return MakeOrphanable<GoogleCloud2ProdResolver>(std::move(args));
+ }
+};
+
+// TODO(apolcyn): remove this class after user code has updated to the
+// stable "google-c2p" URI scheme.
+class ExperimentalGoogleCloud2ProdResolverFactory : public ResolverFactory {
+ public:
y_absl::string_view scheme() const override {
return "google-c2p-experimental";
}
bool IsValidUri(const URI& uri) const override {
if (GPR_UNLIKELY(!uri.authority().empty())) {
- gpr_log(GPR_ERROR, "google-c2p URI scheme does not support authorities");
+ gpr_log(
+ GPR_ERROR,
+ "google-c2p-experimental URI scheme does not support authorities");
return false;
}
return true;
@@ -395,6 +458,8 @@ class GoogleCloud2ProdResolverFactory : public ResolverFactory {
void RegisterCloud2ProdResolver(CoreConfiguration::Builder* builder) {
builder->resolver_registry()->RegisterResolverFactory(
y_absl::make_unique<GoogleCloud2ProdResolverFactory>());
+ builder->resolver_registry()->RegisterResolverFactory(
+ y_absl::make_unique<ExperimentalGoogleCloud2ProdResolverFactory>());
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/polling_resolver.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/polling_resolver.cc
new file mode 100644
index 0000000000..9ba97476e0
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/polling_resolver.cc
@@ -0,0 +1,259 @@
+//
+// Copyright 2015 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/filters/client_channel/resolver/polling_resolver.h"
+
+#include <inttypes.h>
+
+#include <functional>
+#include <utility>
+#include <vector>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/strip.h"
+
+#include <grpc/support/log.h>
+
+#include "src/core/lib/backoff/backoff.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/service_config/service_config.h"
+#include "src/core/lib/uri/uri_parser.h"
+
+namespace grpc_core {
+
+PollingResolver::PollingResolver(ResolverArgs args,
+ const ChannelArgs& channel_args,
+ Duration min_time_between_resolutions,
+ BackOff::Options backoff_options,
+ TraceFlag* tracer)
+ : authority_(args.uri.authority()),
+ name_to_resolve_(y_absl::StripPrefix(args.uri.path(), "/")),
+ channel_args_(channel_args),
+ work_serializer_(std::move(args.work_serializer)),
+ result_handler_(std::move(args.result_handler)),
+ tracer_(tracer),
+ interested_parties_(args.pollset_set),
+ min_time_between_resolutions_(min_time_between_resolutions),
+ backoff_(backoff_options) {
+ if (GPR_UNLIKELY(tracer_ != nullptr && tracer_->enabled())) {
+ gpr_log(GPR_INFO, "[polling resolver %p] created", this);
+ }
+}
+
+PollingResolver::~PollingResolver() {
+ if (GPR_UNLIKELY(tracer_ != nullptr && tracer_->enabled())) {
+ gpr_log(GPR_INFO, "[polling resolver %p] destroying", this);
+ }
+}
+
+void PollingResolver::StartLocked() { MaybeStartResolvingLocked(); }
+
+void PollingResolver::RequestReresolutionLocked() {
+ if (request_ == nullptr) {
+ // If we're still waiting for a result-health callback from the last
+ // result we reported, don't trigger the re-resolution until we get
+ // that callback.
+ if (result_status_state_ ==
+ ResultStatusState::kResultHealthCallbackPending) {
+ result_status_state_ =
+ ResultStatusState::kReresolutionRequestedWhileCallbackWasPending;
+ } else {
+ MaybeStartResolvingLocked();
+ }
+ }
+}
+
+void PollingResolver::ResetBackoffLocked() {
+ if (have_next_resolution_timer_) {
+ grpc_timer_cancel(&next_resolution_timer_);
+ }
+ backoff_.Reset();
+}
+
+void PollingResolver::ShutdownLocked() {
+ if (GPR_UNLIKELY(tracer_ != nullptr && tracer_->enabled())) {
+ gpr_log(GPR_INFO, "[polling resolver %p] shutting down", this);
+ }
+ shutdown_ = true;
+ if (have_next_resolution_timer_) {
+ grpc_timer_cancel(&next_resolution_timer_);
+ }
+ request_.reset();
+}
+
+void PollingResolver::OnNextResolution(void* arg, grpc_error_handle error) {
+ auto* self = static_cast<PollingResolver*>(arg);
+ (void)GRPC_ERROR_REF(error); // ref owned by lambda
+ self->work_serializer_->Run(
+ [self, error]() { self->OnNextResolutionLocked(error); }, DEBUG_LOCATION);
+}
+
+void PollingResolver::OnNextResolutionLocked(grpc_error_handle error) {
+ if (GPR_UNLIKELY(tracer_ != nullptr && tracer_->enabled())) {
+ gpr_log(GPR_INFO,
+ "[polling resolver %p] re-resolution timer fired: error=\"%s\", "
+ "shutdown_=%d",
+ this, grpc_error_std_string(error).c_str(), shutdown_);
+ }
+ have_next_resolution_timer_ = false;
+ if (GRPC_ERROR_IS_NONE(error) && !shutdown_) {
+ StartResolvingLocked();
+ }
+ Unref(DEBUG_LOCATION, "retry-timer");
+ GRPC_ERROR_UNREF(error);
+}
+
+void PollingResolver::OnRequestComplete(Result result) {
+ Ref(DEBUG_LOCATION, "OnRequestComplete").release();
+ work_serializer_->Run(
+ [this, result]() mutable { OnRequestCompleteLocked(std::move(result)); },
+ DEBUG_LOCATION);
+}
+
+void PollingResolver::OnRequestCompleteLocked(Result result) {
+ if (GPR_UNLIKELY(tracer_ != nullptr && tracer_->enabled())) {
+ gpr_log(GPR_INFO, "[polling resolver %p] request complete", this);
+ }
+ request_.reset();
+ if (!shutdown_) {
+ if (GPR_UNLIKELY(tracer_ != nullptr && tracer_->enabled())) {
+ gpr_log(GPR_INFO,
+ "[polling resolver %p] returning result: "
+ "addresses=%s, service_config=%s",
+ this,
+ result.addresses.ok()
+ ? y_absl::StrCat("<", result.addresses->size(), " addresses>")
+ .c_str()
+ : result.addresses.status().ToString().c_str(),
+ result.service_config.ok()
+ ? (*result.service_config == nullptr
+ ? "<null>"
+ : TString((*result.service_config)->json_string())
+ .c_str())
+ : result.service_config.status().ToString().c_str());
+ }
+ GPR_ASSERT(result.result_health_callback == nullptr);
+ RefCountedPtr<PollingResolver> self =
+ Ref(DEBUG_LOCATION, "result_health_callback");
+ result.result_health_callback = [self =
+ std::move(self)](y_absl::Status status) {
+ self->GetResultStatus(std::move(status));
+ };
+ result_status_state_ = ResultStatusState::kResultHealthCallbackPending;
+ result_handler_->ReportResult(std::move(result));
+ }
+ Unref(DEBUG_LOCATION, "OnRequestComplete");
+}
+
+void PollingResolver::GetResultStatus(y_absl::Status status) {
+ if (GPR_UNLIKELY(tracer_ != nullptr && tracer_->enabled())) {
+ gpr_log(GPR_INFO, "[polling resolver %p] result status from channel: %s",
+ this, status.ToString().c_str());
+ }
+ if (status.ok()) {
+ // Reset backoff state so that we start from the beginning when the
+ // next request gets triggered.
+ backoff_.Reset();
+ // If a re-resolution attempt was requested while the result-status
+ // callback was pending, trigger a new request now.
+ if (std::exchange(result_status_state_, ResultStatusState::kNone) ==
+ ResultStatusState::kReresolutionRequestedWhileCallbackWasPending) {
+ MaybeStartResolvingLocked();
+ }
+ } else {
+ // Set up for retry.
+ // InvalidateNow to avoid getting stuck re-initializing this timer
+ // in a loop while draining the currently-held WorkSerializer.
+ // Also see https://github.com/grpc/grpc/issues/26079.
+ ExecCtx::Get()->InvalidateNow();
+ Timestamp next_try = backoff_.NextAttemptTime();
+ Duration timeout = next_try - Timestamp::Now();
+ GPR_ASSERT(!have_next_resolution_timer_);
+ have_next_resolution_timer_ = true;
+ if (GPR_UNLIKELY(tracer_ != nullptr && tracer_->enabled())) {
+ if (timeout > Duration::Zero()) {
+ gpr_log(GPR_INFO, "[polling resolver %p] retrying in %" PRId64 " ms",
+ this, timeout.millis());
+ } else {
+ gpr_log(GPR_INFO, "[polling resolver %p] retrying immediately", this);
+ }
+ }
+ Ref(DEBUG_LOCATION, "next_resolution_timer").release();
+ GRPC_CLOSURE_INIT(&on_next_resolution_, OnNextResolution, this, nullptr);
+ grpc_timer_init(&next_resolution_timer_, next_try, &on_next_resolution_);
+ // Reset result_status_state_. Note that even if re-resolution was
+ // requested while the result-health callback was pending, we can
+ // ignore it here, because we are in backoff to re-resolve anyway.
+ result_status_state_ = ResultStatusState::kNone;
+ }
+}
+
+void PollingResolver::MaybeStartResolvingLocked() {
+ // If there is an existing timer, the time it fires is the earliest time we
+ // can start the next resolution.
+ if (have_next_resolution_timer_) return;
+ if (last_resolution_timestamp_.has_value()) {
+ // InvalidateNow to avoid getting stuck re-initializing this timer
+ // in a loop while draining the currently-held WorkSerializer.
+ // Also see https://github.com/grpc/grpc/issues/26079.
+ ExecCtx::Get()->InvalidateNow();
+ const Timestamp earliest_next_resolution =
+ *last_resolution_timestamp_ + min_time_between_resolutions_;
+ const Duration time_until_next_resolution =
+ earliest_next_resolution - Timestamp::Now();
+ if (time_until_next_resolution > Duration::Zero()) {
+ if (GPR_UNLIKELY(tracer_ != nullptr && tracer_->enabled())) {
+ const Duration last_resolution_ago =
+ Timestamp::Now() - *last_resolution_timestamp_;
+ gpr_log(GPR_INFO,
+ "[polling resolver %p] in cooldown from last resolution "
+ "(from %" PRId64 " ms ago); will resolve again in %" PRId64
+ " ms",
+ this, last_resolution_ago.millis(),
+ time_until_next_resolution.millis());
+ }
+ have_next_resolution_timer_ = true;
+ Ref(DEBUG_LOCATION, "next_resolution_timer_cooldown").release();
+ GRPC_CLOSURE_INIT(&on_next_resolution_, OnNextResolution, this, nullptr);
+ grpc_timer_init(&next_resolution_timer_,
+ Timestamp::Now() + time_until_next_resolution,
+ &on_next_resolution_);
+ return;
+ }
+ }
+ StartResolvingLocked();
+}
+
+void PollingResolver::StartResolvingLocked() {
+ request_ = StartRequest();
+ last_resolution_timestamp_ = Timestamp::Now();
+ if (GPR_UNLIKELY(tracer_ != nullptr && tracer_->enabled())) {
+ gpr_log(GPR_INFO, "[polling resolver %p] starting resolution, request_=%p",
+ this, request_.get());
+ }
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/polling_resolver.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/polling_resolver.h
new file mode 100644
index 0000000000..641e9cd004
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/polling_resolver.h
@@ -0,0 +1,124 @@
+//
+// Copyright 2015 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_POLLING_RESOLVER_H
+#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_POLLING_RESOLVER_H
+
+#include <grpc/support/port_platform.h>
+
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/status/status.h"
+#include "y_absl/types/optional.h"
+
+#include "src/core/lib/backoff/backoff.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/resolver/resolver.h"
+#include "src/core/lib/resolver/resolver_factory.h"
+
+namespace grpc_core {
+
+// A base class for polling-based resolvers.
+// Handles cooldown and backoff timers.
+// Implementations need only to implement StartRequest().
+class PollingResolver : public Resolver {
+ public:
+ PollingResolver(ResolverArgs args, const ChannelArgs& channel_args,
+ Duration min_time_between_resolutions,
+ BackOff::Options backoff_options, TraceFlag* tracer);
+ ~PollingResolver() override;
+
+ void StartLocked() override;
+ void RequestReresolutionLocked() override;
+ void ResetBackoffLocked() override;
+ void ShutdownLocked() override;
+
+ protected:
+ // Implemented by subclass.
+ // Starts a request, returning an object representing the pending
+ // request. Orphaning that object should cancel the request.
+ // When the request is complete, the implementation must call
+ // OnRequestComplete() with the result.
+ virtual OrphanablePtr<Orphanable> StartRequest() = 0;
+
+ // To be invoked by the subclass when a request is complete.
+ void OnRequestComplete(Result result);
+
+ // Convenient accessor methods for subclasses.
+ const TString& authority() const { return authority_; }
+ const TString& name_to_resolve() const { return name_to_resolve_; }
+ grpc_pollset_set* interested_parties() const { return interested_parties_; }
+ const ChannelArgs& channel_args() const { return channel_args_; }
+
+ private:
+ void MaybeStartResolvingLocked();
+ void StartResolvingLocked();
+
+ void OnRequestCompleteLocked(Result result);
+
+ void GetResultStatus(y_absl::Status status);
+
+ static void OnNextResolution(void* arg, grpc_error_handle error);
+ void OnNextResolutionLocked(grpc_error_handle error);
+
+ /// authority
+ TString authority_;
+ /// name to resolve
+ TString name_to_resolve_;
+ /// channel args
+ ChannelArgs channel_args_;
+ std::shared_ptr<WorkSerializer> work_serializer_;
+ std::unique_ptr<ResultHandler> result_handler_;
+ TraceFlag* tracer_;
+ /// pollset_set to drive the name resolution process
+ grpc_pollset_set* interested_parties_ = nullptr;
+ /// are we shutting down?
+ bool shutdown_ = false;
+ /// are we currently resolving?
+ OrphanablePtr<Orphanable> request_;
+ /// next resolution timer
+ bool have_next_resolution_timer_ = false;
+ grpc_timer next_resolution_timer_;
+ grpc_closure on_next_resolution_;
+ /// min time between DNS requests
+ Duration min_time_between_resolutions_;
+ /// timestamp of last DNS request
+ y_absl::optional<Timestamp> last_resolution_timestamp_;
+ /// retry backoff state
+ BackOff backoff_;
+ /// state for handling interactions between re-resolution requests and
+ /// result health callbacks
+ enum class ResultStatusState {
+ kNone,
+ kResultHealthCallbackPending,
+ kReresolutionRequestedWhileCallbackWasPending,
+ };
+ ResultStatusState result_status_state_ = ResultStatusState::kNone;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_POLLING_RESOLVER_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc
index d6952d618f..caf4683ba7 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc
@@ -16,26 +16,31 @@
#include <grpc/support/port_platform.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
+#include <algorithm>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_split.h"
+#include "y_absl/strings/string_view.h"
-#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
+#include <grpc/support/log.h>
#include "src/core/lib/address_utils/parse_address.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/iomgr/resolve_address.h"
-#include "src/core/lib/iomgr/unix_sockets_posix.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/iomgr/port.h"
+#include "src/core/lib/iomgr/resolved_address.h"
+#include "src/core/lib/resolver/resolver.h"
+#include "src/core/lib/resolver/resolver_factory.h"
#include "src/core/lib/resolver/resolver_registry.h"
#include "src/core/lib/resolver/server_address.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
@@ -44,7 +49,6 @@ namespace {
class SockaddrResolver : public Resolver {
public:
SockaddrResolver(ServerAddressList addresses, ResolverArgs args);
- ~SockaddrResolver() override;
void StartLocked() override;
@@ -53,25 +57,19 @@ class SockaddrResolver : public Resolver {
private:
std::unique_ptr<ResultHandler> result_handler_;
ServerAddressList addresses_;
- const grpc_channel_args* channel_args_ = nullptr;
+ ChannelArgs channel_args_;
};
SockaddrResolver::SockaddrResolver(ServerAddressList addresses,
ResolverArgs args)
: result_handler_(std::move(args.result_handler)),
addresses_(std::move(addresses)),
- channel_args_(grpc_channel_args_copy(args.args)) {}
-
-SockaddrResolver::~SockaddrResolver() {
- grpc_channel_args_destroy(channel_args_);
-}
+ channel_args_(std::move(args.args)) {}
void SockaddrResolver::StartLocked() {
Result result;
result.addresses = std::move(addresses_);
- // TODO(roth): Use std::move() once channel args is converted to C++.
- result.args = channel_args_;
- channel_args_ = nullptr;
+ result.args = std::move(channel_args_);
result_handler_->ReportResult(std::move(result));
}
@@ -101,7 +99,7 @@ bool ParseUri(const URI& uri,
break;
}
if (addresses != nullptr) {
- addresses->emplace_back(addr, nullptr /* args */);
+ addresses->emplace_back(addr, ChannelArgs());
}
}
return !errors_found;
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc
index e170e1cec2..e175595da7 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc
@@ -1,54 +1,105 @@
-/*
- *
- * Copyright 2019 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
+//
+// Copyright 2019 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
#include <grpc/support/port_platform.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <algorithm>
+#include <cstdint>
+#include <map>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/meta/type_traits.h"
#include "y_absl/random/random.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/match.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
#include "y_absl/strings/str_replace.h"
-#include "y_absl/strings/str_split.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/strip.h"
+#include "y_absl/types/optional.h"
+#include "y_absl/types/variant.h"
#include "re2/re2.h"
+
+#include "src/core/lib/gprpp/unique_type_name.h"
+
#define XXH_INLINE_ALL
#include "xxhash.h"
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
+#include <grpc/status.h>
+#include <grpc/support/log.h>
+
#include "src/core/ext/filters/client_channel/config_selector.h"
#include "src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h"
-#include "src/core/ext/xds/xds_channel_args.h"
+#include "src/core/ext/xds/xds_bootstrap.h"
+#include "src/core/ext/xds/xds_bootstrap_grpc.h"
#include "src/core/ext/xds/xds_client.h"
+#include "src/core/ext/xds/xds_client_grpc.h"
#include "src/core/ext/xds/xds_http_filters.h"
#include "src/core/ext/xds/xds_listener.h"
+#include "src/core/ext/xds/xds_resource_type_impl.h"
#include "src/core/ext/xds/xds_route_config.h"
#include "src/core/ext/xds/xds_routing.h"
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/status_util.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/iomgr/closure.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/dual_ref_counted.h"
+#include "src/core/lib/gprpp/match.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/resolver/resolver.h"
+#include "src/core/lib/resolver/resolver_factory.h"
#include "src/core/lib/resolver/resolver_registry.h"
+#include "src/core/lib/resolver/server_address.h"
+#include "src/core/lib/resource_quota/arena.h"
+#include "src/core/lib/service_config/service_config.h"
+#include "src/core/lib/service_config/service_config_call_data.h"
#include "src/core/lib/service_config/service_config_impl.h"
-#include "src/core/lib/transport/error_utils.h"
-#include "src/core/lib/transport/timeout_encoding.h"
+#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
TraceFlag grpc_xds_resolver_trace(false, "xds_resolver");
-const char* kXdsClusterAttribute = "xds_cluster_name";
+UniqueTypeName XdsClusterAttributeTypeName() {
+ static UniqueTypeName::Factory kFactory("xds_cluster_name");
+ return kFactory.Create();
+}
namespace {
@@ -62,11 +113,10 @@ TString GetDefaultAuthorityInternal(const URI& uri) {
return uri.path().substr(pos + 1);
}
-TString GetDataPlaneAuthority(const grpc_channel_args& args,
- const URI& uri) {
- const char* authority =
- grpc_channel_args_find_string(&args, GRPC_ARG_DEFAULT_AUTHORITY);
- if (authority != nullptr) return authority;
+TString GetDataPlaneAuthority(const ChannelArgs& args, const URI& uri) {
+ y_absl::optional<TString> authority =
+ args.GetOwnedString(GRPC_ARG_DEFAULT_AUTHORITY);
+ if (authority.has_value()) return std::move(*authority);
return GetDefaultAuthorityInternal(uri);
}
@@ -79,10 +129,10 @@ class XdsResolver : public Resolver {
explicit XdsResolver(ResolverArgs args)
: work_serializer_(std::move(args.work_serializer)),
result_handler_(std::move(args.result_handler)),
- args_(grpc_channel_args_copy(args.args)),
+ args_(std::move(args.args)),
interested_parties_(args.pollset_set),
uri_(std::move(args.uri)),
- data_plane_authority_(GetDataPlaneAuthority(*args.args, uri_)),
+ data_plane_authority_(GetDataPlaneAuthority(args_, uri_)),
channel_id_(y_absl::Uniform<uint64_t>(y_absl::BitGen())) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) {
gpr_log(
@@ -93,7 +143,6 @@ class XdsResolver : public Resolver {
}
~XdsResolver() override {
- grpc_channel_args_destroy(args_);
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) {
gpr_log(GPR_INFO, "[xds_resolver %p] destroyed", this);
}
@@ -123,11 +172,11 @@ class XdsResolver : public Resolver {
},
DEBUG_LOCATION);
}
- void OnError(grpc_error_handle error) override {
+ void OnError(y_absl::Status status) override {
Ref().release(); // ref held by lambda
resolver_->work_serializer_->Run(
- [this, error]() {
- resolver_->OnError(error);
+ [this, status]() {
+ resolver_->OnError(resolver_->lds_resource_name_, status);
Unref();
},
DEBUG_LOCATION);
@@ -136,7 +185,9 @@ class XdsResolver : public Resolver {
Ref().release(); // ref held by lambda
resolver_->work_serializer_->Run(
[this]() {
- resolver_->OnResourceDoesNotExist();
+ resolver_->OnResourceDoesNotExist(
+ y_absl::StrCat(resolver_->lds_resource_name_,
+ ": xDS listener resource does not exist"));
Unref();
},
DEBUG_LOCATION);
@@ -162,11 +213,11 @@ class XdsResolver : public Resolver {
},
DEBUG_LOCATION);
}
- void OnError(grpc_error_handle error) override {
+ void OnError(y_absl::Status status) override {
Ref().release(); // ref held by lambda
resolver_->work_serializer_->Run(
- [this, error]() {
- resolver_->OnError(error);
+ [this, status]() {
+ resolver_->OnError(resolver_->route_config_name_, status);
Unref();
},
DEBUG_LOCATION);
@@ -175,7 +226,9 @@ class XdsResolver : public Resolver {
Ref().release(); // ref held by lambda
resolver_->work_serializer_->Run(
[this]() {
- resolver_->OnResourceDoesNotExist();
+ resolver_->OnResourceDoesNotExist(y_absl::StrCat(
+ resolver_->route_config_name_,
+ ": xDS route configuration resource does not exist"));
Unref();
},
DEBUG_LOCATION);
@@ -250,7 +303,7 @@ class XdsResolver : public Resolver {
class XdsConfigSelector : public ConfigSelector {
public:
XdsConfigSelector(RefCountedPtr<XdsResolver> resolver,
- grpc_error_handle* error);
+ y_absl::Status* status);
~XdsConfigSelector() override;
const char* name() const override { return "XdsConfigSelector"; }
@@ -268,7 +321,7 @@ class XdsResolver : public Resolver {
return filters_;
}
- grpc_channel_args* ModifyChannelArgs(grpc_channel_args* args) override;
+ ChannelArgs ModifyChannelArgs(const ChannelArgs& args) override;
private:
struct Route {
@@ -282,7 +335,7 @@ class XdsResolver : public Resolver {
XdsRouteConfigResource::Route route;
RefCountedPtr<ServiceConfig> method_config;
- y_absl::InlinedVector<ClusterWeightState, 2> weighted_cluster_state;
+ std::vector<ClusterWeightState> weighted_cluster_state;
bool operator==(const Route& other) const;
};
@@ -291,11 +344,10 @@ class XdsResolver : public Resolver {
class RouteListIterator;
void MaybeAddCluster(const TString& name);
- grpc_error_handle CreateMethodConfig(
+ y_absl::StatusOr<RefCountedPtr<ServiceConfig>> CreateMethodConfig(
const XdsRouteConfigResource::Route& route,
const XdsRouteConfigResource::Route::RouteAction::ClusterWeight*
- cluster_weight,
- RefCountedPtr<ServiceConfig>* method_config);
+ cluster_weight);
RefCountedPtr<XdsResolver> resolver_;
RouteTable route_table_;
@@ -305,8 +357,8 @@ class XdsResolver : public Resolver {
void OnListenerUpdate(XdsListenerResource listener);
void OnRouteConfigUpdate(XdsRouteConfigResource rds_update);
- void OnError(grpc_error_handle error);
- void OnResourceDoesNotExist();
+ void OnError(y_absl::string_view context, y_absl::Status status);
+ void OnResourceDoesNotExist(TString context);
y_absl::StatusOr<RefCountedPtr<ServiceConfig>> CreateServiceConfig();
void GenerateResult();
@@ -315,10 +367,10 @@ class XdsResolver : public Resolver {
std::shared_ptr<WorkSerializer> work_serializer_;
std::unique_ptr<ResultHandler> result_handler_;
- const grpc_channel_args* args_;
+ ChannelArgs args_;
grpc_pollset_set* interested_parties_;
URI uri_;
- RefCountedPtr<XdsClient> xds_client_;
+ RefCountedPtr<GrpcXdsClient> xds_client_;
TString lds_resource_name_;
TString data_plane_authority_;
uint64_t channel_id_;
@@ -332,6 +384,9 @@ class XdsResolver : public Resolver {
TString route_config_name_;
RouteConfigWatcher* route_config_watcher_ = nullptr;
XdsRouteConfigResource::VirtualHost current_virtual_host_;
+ std::map<TString /*cluster_specifier_plugin_name*/,
+ TString /*LB policy config*/>
+ cluster_specifier_plugin_map_;
ClusterState::ClusterStateMap cluster_state_map_;
};
@@ -383,7 +438,7 @@ class XdsResolver::XdsConfigSelector::RouteListIterator
//
XdsResolver::XdsConfigSelector::XdsConfigSelector(
- RefCountedPtr<XdsResolver> resolver, grpc_error_handle* error)
+ RefCountedPtr<XdsResolver> resolver, y_absl::Status* status)
: resolver_(std::move(resolver)) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) {
gpr_log(GPR_INFO, "[xds_resolver %p] creating XdsConfigSelector %p",
@@ -418,25 +473,56 @@ XdsResolver::XdsConfigSelector::XdsConfigSelector(
resolver_->current_listener_.http_connection_manager
.http_max_stream_duration;
}
- if (route_action->weighted_clusters.empty()) {
- *error = CreateMethodConfig(route_entry.route, nullptr,
- &route_entry.method_config);
- MaybeAddCluster(route_action->cluster_name);
- } else {
- uint32_t end = 0;
- for (const auto& weighted_cluster : route_action->weighted_clusters) {
- Route::ClusterWeightState cluster_weight_state;
- *error = CreateMethodConfig(route_entry.route, &weighted_cluster,
- &cluster_weight_state.method_config);
- if (*error != GRPC_ERROR_NONE) return;
- end += weighted_cluster.weight;
- cluster_weight_state.range_end = end;
- cluster_weight_state.cluster = weighted_cluster.name;
- route_entry.weighted_cluster_state.push_back(
- std::move(cluster_weight_state));
- MaybeAddCluster(weighted_cluster.name);
- }
- }
+ Match(
+ route_action->action,
+ // cluster name
+ [&](const XdsRouteConfigResource::Route::RouteAction::ClusterName&
+ cluster_name) {
+ auto result = CreateMethodConfig(route_entry.route, nullptr);
+ if (!result.ok()) {
+ *status = result.status();
+ return;
+ }
+ route_entry.method_config = std::move(*result);
+ MaybeAddCluster(
+ y_absl::StrCat("cluster:", cluster_name.cluster_name));
+ },
+ // WeightedClusters
+ [&](const std::vector<
+ XdsRouteConfigResource::Route::RouteAction::ClusterWeight>&
+ weighted_clusters) {
+ uint32_t end = 0;
+ for (const auto& weighted_cluster : weighted_clusters) {
+ Route::ClusterWeightState cluster_weight_state;
+ auto result =
+ CreateMethodConfig(route_entry.route, &weighted_cluster);
+ if (!result.ok()) {
+ *status = result.status();
+ return;
+ }
+ cluster_weight_state.method_config = std::move(*result);
+ end += weighted_cluster.weight;
+ cluster_weight_state.range_end = end;
+ cluster_weight_state.cluster = weighted_cluster.name;
+ route_entry.weighted_cluster_state.push_back(
+ std::move(cluster_weight_state));
+ MaybeAddCluster(y_absl::StrCat("cluster:", weighted_cluster.name));
+ }
+ },
+ // ClusterSpecifierPlugin
+ [&](const XdsRouteConfigResource::Route::RouteAction::
+ ClusterSpecifierPluginName& cluster_specifier_plugin_name) {
+ auto result = CreateMethodConfig(route_entry.route, nullptr);
+ if (!result.ok()) {
+ *status = result.status();
+ return;
+ }
+ route_entry.method_config = std::move(*result);
+ MaybeAddCluster(y_absl::StrCat(
+ "cluster_specifier_plugin:",
+ cluster_specifier_plugin_name.cluster_specifier_plugin_name));
+ });
+ if (!status->ok()) return;
}
}
// Populate filter list.
@@ -464,11 +550,11 @@ XdsResolver::XdsConfigSelector::~XdsConfigSelector() {
resolver_->MaybeRemoveUnusedClusters();
}
-grpc_error_handle XdsResolver::XdsConfigSelector::CreateMethodConfig(
+y_absl::StatusOr<RefCountedPtr<ServiceConfig>>
+XdsResolver::XdsConfigSelector::CreateMethodConfig(
const XdsRouteConfigResource::Route& route,
const XdsRouteConfigResource::Route::RouteAction::ClusterWeight*
- cluster_weight,
- RefCountedPtr<ServiceConfig>* method_config) {
+ cluster_weight) {
std::vector<TString> fields;
const auto& route_action =
y_absl::get<XdsRouteConfigResource::Route::RouteAction>(route.action);
@@ -476,18 +562,15 @@ grpc_error_handle XdsResolver::XdsConfigSelector::CreateMethodConfig(
if (route_action.retry_policy.has_value() &&
!route_action.retry_policy->retry_on.Empty()) {
std::vector<TString> retry_parts;
- const auto base_interval =
- route_action.retry_policy->retry_back_off.base_interval.as_timespec();
- const auto max_interval =
- route_action.retry_policy->retry_back_off.max_interval.as_timespec();
retry_parts.push_back(y_absl::StrFormat(
"\"retryPolicy\": {\n"
" \"maxAttempts\": %d,\n"
- " \"initialBackoff\": \"%d.%09ds\",\n"
- " \"maxBackoff\": \"%d.%09ds\",\n"
+ " \"initialBackoff\": \"%s\",\n"
+ " \"maxBackoff\": \"%s\",\n"
" \"backoffMultiplier\": 2,\n",
- route_action.retry_policy->num_retries + 1, base_interval.tv_sec,
- base_interval.tv_nsec, max_interval.tv_sec, max_interval.tv_nsec));
+ route_action.retry_policy->num_retries + 1,
+ route_action.retry_policy->retry_back_off.base_interval.ToJsonString(),
+ route_action.retry_policy->retry_back_off.max_interval.ToJsonString()));
std::vector<TString> code_parts;
if (route_action.retry_policy->retry_on.Contains(GRPC_STATUS_CANCELLED)) {
code_parts.push_back(" \"CANCELLED\"");
@@ -515,26 +598,22 @@ grpc_error_handle XdsResolver::XdsConfigSelector::CreateMethodConfig(
// Set timeout.
if (route_action.max_stream_duration.has_value() &&
(route_action.max_stream_duration != Duration::Zero())) {
- gpr_timespec ts = route_action.max_stream_duration->as_timespec();
- fields.emplace_back(y_absl::StrFormat(" \"timeout\": \"%d.%09ds\"",
- ts.tv_sec, ts.tv_nsec));
+ fields.emplace_back(
+ y_absl::StrFormat(" \"timeout\": \"%s\"",
+ route_action.max_stream_duration->ToJsonString()));
}
// Handle xDS HTTP filters.
- XdsRouting::GeneratePerHttpFilterConfigsResult result =
- XdsRouting::GeneratePerHTTPFilterConfigs(
- resolver_->current_listener_.http_connection_manager.http_filters,
- resolver_->current_virtual_host_, route, cluster_weight,
- grpc_channel_args_copy(resolver_->args_));
- if (result.error != GRPC_ERROR_NONE) {
- return result.error;
- }
- for (const auto& p : result.per_filter_configs) {
+ auto result = XdsRouting::GeneratePerHTTPFilterConfigs(
+ resolver_->current_listener_.http_connection_manager.http_filters,
+ resolver_->current_virtual_host_, route, cluster_weight,
+ resolver_->args_);
+ if (!result.ok()) return result.status();
+ for (const auto& p : result->per_filter_configs) {
fields.emplace_back(y_absl::StrCat(" \"", p.first, "\": [\n",
y_absl::StrJoin(p.second, ",\n"),
"\n ]"));
}
// Construct service config.
- grpc_error_handle error = GRPC_ERROR_NONE;
if (!fields.empty()) {
TString json = y_absl::StrCat(
"{\n"
@@ -546,15 +625,13 @@ grpc_error_handle XdsResolver::XdsConfigSelector::CreateMethodConfig(
y_absl::StrJoin(fields, ",\n"),
"\n } ]\n"
"}");
- *method_config =
- ServiceConfigImpl::Create(result.args, json.c_str(), &error);
+ return ServiceConfigImpl::Create(result->args, json.c_str());
}
- grpc_channel_args_destroy(result.args);
- return error;
+ return nullptr;
}
-grpc_channel_args* XdsResolver::XdsConfigSelector::ModifyChannelArgs(
- grpc_channel_args* args) {
+ChannelArgs XdsResolver::XdsConfigSelector::ModifyChannelArgs(
+ const ChannelArgs& args) {
return args;
}
@@ -608,43 +685,60 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
&entry.route.action);
if (route_action == nullptr) {
CallConfig call_config;
- call_config.error =
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Matching route has inappropriate action"),
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
+ call_config.status =
+ y_absl::UnavailableError("Matching route has inappropriate action");
return call_config;
}
- y_absl::string_view cluster_name;
+ TString cluster_name;
RefCountedPtr<ServiceConfig> method_config;
- if (route_action->weighted_clusters.empty()) {
- cluster_name = route_action->cluster_name;
- method_config = entry.method_config;
- } else {
- const uint32_t key =
- rand() %
- entry.weighted_cluster_state[entry.weighted_cluster_state.size() - 1]
- .range_end;
- // Find the index in weighted clusters corresponding to key.
- size_t mid = 0;
- size_t start_index = 0;
- size_t end_index = entry.weighted_cluster_state.size() - 1;
- size_t index = 0;
- while (end_index > start_index) {
- mid = (start_index + end_index) / 2;
- if (entry.weighted_cluster_state[mid].range_end > key) {
- end_index = mid;
- } else if (entry.weighted_cluster_state[mid].range_end < key) {
- start_index = mid + 1;
- } else {
- index = mid + 1;
- break;
- }
- }
- if (index == 0) index = start_index;
- GPR_ASSERT(entry.weighted_cluster_state[index].range_end > key);
- cluster_name = entry.weighted_cluster_state[index].cluster;
- method_config = entry.weighted_cluster_state[index].method_config;
- }
+ Match(
+ route_action->action,
+ // cluster name
+ [&](const XdsRouteConfigResource::Route::RouteAction::ClusterName&
+ action_cluster_name) {
+ cluster_name =
+ y_absl::StrCat("cluster:", action_cluster_name.cluster_name);
+ method_config = entry.method_config;
+ },
+ // WeightedClusters
+ [&](const std::vector<
+ XdsRouteConfigResource::Route::RouteAction::ClusterWeight>&
+ /*weighted_clusters*/) {
+ const uint32_t key =
+ rand() %
+ entry
+ .weighted_cluster_state[entry.weighted_cluster_state.size() - 1]
+ .range_end;
+ // Find the index in weighted clusters corresponding to key.
+ size_t mid = 0;
+ size_t start_index = 0;
+ size_t end_index = entry.weighted_cluster_state.size() - 1;
+ size_t index = 0;
+ while (end_index > start_index) {
+ mid = (start_index + end_index) / 2;
+ if (entry.weighted_cluster_state[mid].range_end > key) {
+ end_index = mid;
+ } else if (entry.weighted_cluster_state[mid].range_end < key) {
+ start_index = mid + 1;
+ } else {
+ index = mid + 1;
+ break;
+ }
+ }
+ if (index == 0) index = start_index;
+ GPR_ASSERT(entry.weighted_cluster_state[index].range_end > key);
+ cluster_name = y_absl::StrCat(
+ "cluster:", entry.weighted_cluster_state[index].cluster);
+ method_config = entry.weighted_cluster_state[index].method_config;
+ },
+ // ClusterSpecifierPlugin
+ [&](const XdsRouteConfigResource::Route::RouteAction::
+ ClusterSpecifierPluginName& cluster_specifier_plugin_name) {
+ cluster_name = y_absl::StrCat(
+ "cluster_specifier_plugin:",
+ cluster_specifier_plugin_name.cluster_specifier_plugin_name);
+ method_config = entry.method_config;
+ });
auto it = clusters_.find(cluster_name);
GPR_ASSERT(it != clusters_.end());
// Generate a hash.
@@ -683,13 +777,13 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
method_config->GetMethodParsedConfigVector(grpc_empty_slice());
call_config.service_config = std::move(method_config);
}
- call_config.call_attributes[kXdsClusterAttribute] = it->first;
+ call_config.call_attributes[XdsClusterAttributeTypeName()] = it->first;
TString hash_string = y_absl::StrCat(hash.value());
char* hash_value =
static_cast<char*>(args.arena->Alloc(hash_string.size() + 1));
memcpy(hash_value, hash_string.c_str(), hash_string.size());
hash_value[hash_string.size()] = '\0';
- call_config.call_attributes[kRequestRingHashAttribute] = hash_value;
+ call_config.call_attributes[RequestHashAttributeName()] = hash_value;
call_config.call_dispatch_controller =
args.arena->New<XdsCallDispatchController>(it->second->Ref());
return call_config;
@@ -701,36 +795,41 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
void XdsResolver::StartLocked() {
grpc_error_handle error = GRPC_ERROR_NONE;
- xds_client_ = XdsClient::GetOrCreate(args_, &error);
- if (error != GRPC_ERROR_NONE) {
+ auto xds_client = GrpcXdsClient::GetOrCreate(args_, "xds resolver");
+ if (!xds_client.ok()) {
gpr_log(GPR_ERROR,
"Failed to create xds client -- channel will remain in "
"TRANSIENT_FAILURE: %s",
- grpc_error_std_string(error).c_str());
- TString error_message;
- grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION, &error_message);
+ xds_client.status().ToString().c_str());
+ y_absl::Status status = y_absl::UnavailableError(y_absl::StrCat(
+ "Failed to create XdsClient: ", xds_client.status().message()));
Result result;
- result.service_config = y_absl::UnavailableError(
- y_absl::StrCat("Failed to create XdsClient: ", error_message));
+ result.addresses = status;
+ result.service_config = std::move(status);
+ result.args = args_;
result_handler_->ReportResult(std::move(result));
- GRPC_ERROR_UNREF(error);
return;
}
+ xds_client_ = std::move(*xds_client);
TString resource_name_fragment(y_absl::StripPrefix(uri_.path(), "/"));
if (!uri_.authority().empty()) {
// target_uri.authority is set case
const auto* authority_config =
- xds_client_->bootstrap().LookupAuthority(uri_.authority());
+ static_cast<const GrpcXdsBootstrap::GrpcAuthority*>(
+ xds_client_->bootstrap().LookupAuthority(uri_.authority()));
if (authority_config == nullptr) {
- Result result;
- result.service_config = y_absl::UnavailableError(
- y_absl::StrCat("Invalid target URI -- authority not found for %s.",
+ y_absl::Status status = y_absl::UnavailableError(
+ y_absl::StrCat("Invalid target URI -- authority not found for ",
uri_.authority().c_str()));
+ Result result;
+ result.addresses = status;
+ result.service_config = std::move(status);
+ result.args = args_;
result_handler_->ReportResult(std::move(result));
return;
}
TString name_template =
- authority_config->client_listener_resource_name_template;
+ authority_config->client_listener_resource_name_template();
if (name_template.empty()) {
name_template = y_absl::StrCat(
"xdstp://", URI::PercentEncodeAuthority(uri_.authority()),
@@ -742,7 +841,7 @@ void XdsResolver::StartLocked() {
} else {
// target_uri.authority not set
y_absl::string_view name_template =
- xds_client_->bootstrap()
+ static_cast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
.client_default_listener_resource_name_template();
if (name_template.empty()) {
name_template = "%s";
@@ -757,8 +856,9 @@ void XdsResolver::StartLocked() {
gpr_log(GPR_INFO, "[xds_resolver %p] Started with lds_resource_name %s.",
this, lds_resource_name_.c_str());
}
- grpc_pollset_set_add_pollset_set(xds_client_->interested_parties(),
- interested_parties_);
+ grpc_pollset_set_add_pollset_set(
+ static_cast<GrpcXdsClient*>(xds_client_.get())->interested_parties(),
+ interested_parties_);
auto watcher = MakeRefCounted<ListenerWatcher>(Ref());
listener_watcher_ = watcher.get();
XdsListenerResourceType::StartWatch(xds_client_.get(), lds_resource_name_,
@@ -780,9 +880,10 @@ void XdsResolver::ShutdownLocked() {
xds_client_.get(), route_config_name_, route_config_watcher_,
/*delay_unsubscription=*/false);
}
- grpc_pollset_set_del_pollset_set(xds_client_->interested_parties(),
- interested_parties_);
- xds_client_.reset();
+ grpc_pollset_set_del_pollset_set(
+ static_cast<GrpcXdsClient*>(xds_client_.get())->interested_parties(),
+ interested_parties_);
+ xds_client_.reset(DEBUG_LOCATION, "xds resolver");
}
}
@@ -856,34 +957,39 @@ void XdsResolver::OnRouteConfigUpdate(XdsRouteConfigResource rds_update) {
VirtualHostListIterator(&rds_update.virtual_hosts),
data_plane_authority_);
if (!vhost_index.has_value()) {
- OnError(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("could not find VirtualHost for ", data_plane_authority_,
- " in RouteConfiguration")));
+ OnError(
+ route_config_name_.empty() ? lds_resource_name_ : route_config_name_,
+ y_absl::UnavailableError(y_absl::StrCat("could not find VirtualHost for ",
+ data_plane_authority_,
+ " in RouteConfiguration")));
return;
}
// Save the virtual host in the resolver.
current_virtual_host_ = std::move(rds_update.virtual_hosts[*vhost_index]);
+ cluster_specifier_plugin_map_ =
+ std::move(rds_update.cluster_specifier_plugin_map);
// Send a new result to the channel.
GenerateResult();
}
-void XdsResolver::OnError(grpc_error_handle error) {
- gpr_log(GPR_ERROR, "[xds_resolver %p] received error from XdsClient: %s",
- this, grpc_error_std_string(error).c_str());
- if (xds_client_ == nullptr) {
- GRPC_ERROR_UNREF(error);
- return;
- }
+void XdsResolver::OnError(y_absl::string_view context, y_absl::Status status) {
+ gpr_log(GPR_ERROR, "[xds_resolver %p] received error from XdsClient: %s: %s",
+ this, TString(context).c_str(), status.ToString().c_str());
+ if (xds_client_ == nullptr) return;
+ status =
+ y_absl::UnavailableError(y_absl::StrCat(context, ": ", status.ToString()));
Result result;
- grpc_arg new_arg = xds_client_->MakeChannelArg();
- result.args = grpc_channel_args_copy_and_add(args_, &new_arg, 1);
- result.service_config = y_absl::UnavailableError(y_absl::StrCat(
- "error obtaining xDS resources: ", grpc_error_std_string(error)));
+ result.addresses = status;
+ result.service_config = std::move(status);
+ // Need to explicitly convert to the right RefCountedPtr<> type for
+ // use with ChannelArgs::SetObject().
+ RefCountedPtr<GrpcXdsClient> xds_client =
+ xds_client_->Ref(DEBUG_LOCATION, "xds resolver result");
+ result.args = args_.SetObject(std::move(xds_client));
result_handler_->ReportResult(std::move(result));
- GRPC_ERROR_UNREF(error);
}
-void XdsResolver::OnResourceDoesNotExist() {
+void XdsResolver::OnResourceDoesNotExist(TString context) {
gpr_log(GPR_ERROR,
"[xds_resolver %p] LDS/RDS resource does not exist -- clearing "
"update and returning empty service config",
@@ -893,10 +999,11 @@ void XdsResolver::OnResourceDoesNotExist() {
}
current_virtual_host_.routes.clear();
Result result;
- grpc_error_handle error = GRPC_ERROR_NONE;
- result.service_config = ServiceConfigImpl::Create(args_, "{}", &error);
- GPR_ASSERT(*result.service_config != nullptr);
- result.args = grpc_channel_args_copy(args_);
+ result.addresses.emplace();
+ result.service_config = ServiceConfigImpl::Create(args_, "{}");
+ GPR_ASSERT(result.service_config.ok());
+ result.resolution_note = std::move(context);
+ result.args = args_;
result_handler_->ReportResult(std::move(result));
}
@@ -904,15 +1011,26 @@ y_absl::StatusOr<RefCountedPtr<ServiceConfig>>
XdsResolver::CreateServiceConfig() {
std::vector<TString> clusters;
for (const auto& cluster : cluster_state_map_) {
- clusters.push_back(
- y_absl::StrFormat(" \"%s\":{\n"
- " \"childPolicy\":[ {\n"
- " \"cds_experimental\":{\n"
- " \"cluster\": \"%s\"\n"
- " }\n"
- " } ]\n"
- " }",
- cluster.first, cluster.first));
+ y_absl::string_view child_name = cluster.first;
+ if (y_absl::ConsumePrefix(&child_name, "cluster_specifier_plugin:")) {
+ clusters.push_back(y_absl::StrFormat(
+ " \"%s\":{\n"
+ " \"childPolicy\": %s\n"
+ " }",
+ cluster.first,
+ cluster_specifier_plugin_map_[TString(child_name)]));
+ } else {
+ y_absl::ConsumePrefix(&child_name, "cluster:");
+ clusters.push_back(
+ y_absl::StrFormat(" \"%s\":{\n"
+ " \"childPolicy\":[ {\n"
+ " \"cds_experimental\":{\n"
+ " \"cluster\": \"%s\"\n"
+ " }\n"
+ " } ]\n"
+ " }",
+ cluster.first, child_name));
+ }
}
std::vector<TString> config_parts;
config_parts.push_back(
@@ -927,28 +1045,22 @@ XdsResolver::CreateServiceConfig() {
" ]\n"
"}");
TString json = y_absl::StrJoin(config_parts, "");
- grpc_error_handle error = GRPC_ERROR_NONE;
- y_absl::StatusOr<RefCountedPtr<ServiceConfig>> result =
- ServiceConfigImpl::Create(args_, json.c_str(), &error);
- if (error != GRPC_ERROR_NONE) {
- result = grpc_error_to_absl_status(error);
- GRPC_ERROR_UNREF(error);
- }
- return result;
+ return ServiceConfigImpl::Create(args_, json.c_str());
}
void XdsResolver::GenerateResult() {
if (current_virtual_host_.routes.empty()) return;
// First create XdsConfigSelector, which may add new entries to the cluster
// state map, and then CreateServiceConfig for LB policies.
- grpc_error_handle error = GRPC_ERROR_NONE;
- auto config_selector = MakeRefCounted<XdsConfigSelector>(Ref(), &error);
- if (error != GRPC_ERROR_NONE) {
- OnError(grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_UNAVAILABLE));
+ y_absl::Status status;
+ auto config_selector = MakeRefCounted<XdsConfigSelector>(Ref(), &status);
+ if (!status.ok()) {
+ OnError("could not create ConfigSelector",
+ y_absl::UnavailableError(status.message()));
return;
}
Result result;
+ result.addresses.emplace();
result.service_config = CreateServiceConfig();
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) {
gpr_log(GPR_INFO, "[xds_resolver %p] generated service config: %s", this,
@@ -956,12 +1068,12 @@ void XdsResolver::GenerateResult() {
? TString((*result.service_config)->json_string()).c_str()
: result.service_config.status().ToString().c_str());
}
- grpc_arg new_args[] = {
- xds_client_->MakeChannelArg(),
- config_selector->MakeChannelArg(),
- };
+ // Need to explicitly convert to the right RefCountedPtr<> type for
+ // use with ChannelArgs::SetObject().
+ RefCountedPtr<GrpcXdsClient> xds_client =
+ xds_client_->Ref(DEBUG_LOCATION, "xds resolver result");
result.args =
- grpc_channel_args_copy_and_add(args_, new_args, GPR_ARRAY_SIZE(new_args));
+ args_.SetObject(std::move(xds_client)).SetObject(config_selector);
result_handler_->ReportResult(std::move(result));
}
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h
index 72a80a97e1..09889e4f73 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h
@@ -19,9 +19,11 @@
#include <grpc/support/port_platform.h>
+#include "src/core/lib/gprpp/unique_type_name.h"
+
namespace grpc_core {
-extern const char* kXdsClusterAttribute;
+UniqueTypeName XdsClusterAttributeTypeName();
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.cc
index 258369e98b..4838ade7e7 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.cc
@@ -19,25 +19,22 @@
#include "src/core/ext/filters/client_channel/resolver_result_parsing.h"
#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
+#include <algorithm>
+#include <map>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/types/optional.h"
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
-
-#include "src/core/ext/filters/client_channel/client_channel.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
-#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/status_util.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/memory.h"
+
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/json/json_util.h"
-#include "src/core/lib/resolver/server_address.h"
-#include "src/core/lib/uri/uri_parser.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
// As per the retry design, we do not allow more than 5 retry attempts.
#define MAX_MAX_RETRY_ATTEMPTS 5
@@ -60,7 +57,7 @@ namespace {
y_absl::optional<TString> ParseHealthCheckConfig(const Json& field,
grpc_error_handle* error) {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
+ GPR_DEBUG_ASSERT(error != nullptr && GRPC_ERROR_IS_NONE(*error));
if (field.type() != Json::Type::OBJECT) {
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"field:healthCheckConfig error:should be of type object");
@@ -84,24 +81,22 @@ y_absl::optional<TString> ParseHealthCheckConfig(const Json& field,
} // namespace
-std::unique_ptr<ServiceConfigParser::ParsedConfig>
-ClientChannelServiceConfigParser::ParseGlobalParams(
- const grpc_channel_args* /*args*/, const Json& json,
- grpc_error_handle* error) {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
+y_absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
+ClientChannelServiceConfigParser::ParseGlobalParams(const ChannelArgs& /*args*/,
+ const Json& json) {
std::vector<grpc_error_handle> error_list;
+ const auto& lb_policy_registry =
+ CoreConfiguration::Get().lb_policy_registry();
// Parse LB config.
RefCountedPtr<LoadBalancingPolicy::Config> parsed_lb_config;
auto it = json.object_value().find("loadBalancingConfig");
if (it != json.object_value().end()) {
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
- parsed_lb_config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
- it->second, &parse_error);
- if (parse_error != GRPC_ERROR_NONE) {
- std::vector<grpc_error_handle> lb_errors;
- lb_errors.push_back(parse_error);
- error_list.push_back(GRPC_ERROR_CREATE_FROM_VECTOR(
- "field:loadBalancingConfig", &lb_errors));
+ auto config = lb_policy_registry.ParseLoadBalancingConfig(it->second);
+ if (!config.ok()) {
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
+ "field:loadBalancingConfig error:", config.status().message())));
+ } else {
+ parsed_lb_config = std::move(*config);
}
}
// Parse deprecated LB policy.
@@ -117,8 +112,8 @@ ClientChannelServiceConfigParser::ParseGlobalParams(
lb_policy_name[i] = tolower(lb_policy_name[i]);
}
bool requires_config = false;
- if (!LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
- lb_policy_name.c_str(), &requires_config)) {
+ if (!lb_policy_registry.LoadBalancingPolicyExists(lb_policy_name.c_str(),
+ &requires_config)) {
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"field:loadBalancingPolicy error:Unknown lb policy"));
} else if (requires_config) {
@@ -136,25 +131,27 @@ ClientChannelServiceConfigParser::ParseGlobalParams(
grpc_error_handle parsing_error = GRPC_ERROR_NONE;
health_check_service_name =
ParseHealthCheckConfig(it->second, &parsing_error);
- if (parsing_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(parsing_error)) {
error_list.push_back(parsing_error);
}
}
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("Client channel global parser",
- &error_list);
- if (*error == GRPC_ERROR_NONE) {
- return y_absl::make_unique<ClientChannelGlobalParsedConfig>(
- std::move(parsed_lb_config), std::move(lb_policy_name),
- std::move(health_check_service_name));
+ if (!error_list.empty()) {
+ grpc_error_handle error = GRPC_ERROR_CREATE_FROM_VECTOR(
+ "Client channel global parser", &error_list);
+ y_absl::Status status = y_absl::InvalidArgumentError(
+ y_absl::StrCat("error parsing client channel global parameters: ",
+ grpc_error_std_string(error)));
+ GRPC_ERROR_UNREF(error);
+ return status;
}
- return nullptr;
+ return y_absl::make_unique<ClientChannelGlobalParsedConfig>(
+ std::move(parsed_lb_config), std::move(lb_policy_name),
+ std::move(health_check_service_name));
}
-std::unique_ptr<ServiceConfigParser::ParsedConfig>
+y_absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
ClientChannelServiceConfigParser::ParsePerMethodParams(
- const grpc_channel_args* /*args*/, const Json& json,
- grpc_error_handle* error) {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
+ const ChannelArgs& /*args*/, const Json& json) {
std::vector<grpc_error_handle> error_list;
// Parse waitForReady.
y_absl::optional<bool> wait_for_ready;
@@ -174,12 +171,17 @@ ClientChannelServiceConfigParser::ParsePerMethodParams(
ParseJsonObjectFieldAsDuration(json.object_value(), "timeout", &timeout,
&error_list, false);
// Return result.
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("Client channel parser", &error_list);
- if (*error == GRPC_ERROR_NONE) {
- return y_absl::make_unique<ClientChannelMethodParsedConfig>(timeout,
- wait_for_ready);
+ if (!error_list.empty()) {
+ grpc_error_handle error =
+ GRPC_ERROR_CREATE_FROM_VECTOR("Client channel parser", &error_list);
+ y_absl::Status status = y_absl::InvalidArgumentError(
+ y_absl::StrCat("error parsing client channel method parameters: ",
+ grpc_error_std_string(error)));
+ GRPC_ERROR_UNREF(error);
+ return status;
}
- return nullptr;
+ return y_absl::make_unique<ClientChannelMethodParsedConfig>(timeout,
+ wait_for_ready);
}
} // namespace internal
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.h
index 10bfaadcd9..306853dc13 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver_result_parsing.h
@@ -19,17 +19,23 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/types/optional.h"
-#include "src/core/ext/filters/client_channel/lb_policy.h"
-#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
-#include "src/core/lib/channel/status_util.h"
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/exec_ctx.h" // for grpc_core::Timestamp
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/json/json.h"
-#include "src/core/lib/resolver/resolver.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
#include "src/core/lib/service_config/service_config_parser.h"
namespace grpc_core {
@@ -84,13 +90,11 @@ class ClientChannelServiceConfigParser : public ServiceConfigParser::Parser {
public:
y_absl::string_view name() const override { return parser_name(); }
- std::unique_ptr<ServiceConfigParser::ParsedConfig> ParseGlobalParams(
- const grpc_channel_args* /*args*/, const Json& json,
- grpc_error_handle* error) override;
+ y_absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
+ ParseGlobalParams(const ChannelArgs& /*args*/, const Json& json) override;
- std::unique_ptr<ServiceConfigParser::ParsedConfig> ParsePerMethodParams(
- const grpc_channel_args* /*args*/, const Json& json,
- grpc_error_handle* error) override;
+ y_absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
+ ParsePerMethodParams(const ChannelArgs& /*args*/, const Json& json) override;
static size_t ParserIndex();
static void Register(CoreConfiguration::Builder* builder);
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_filter.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_filter.cc
index 4e894c7049..a647596533 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_filter.cc
@@ -18,28 +18,60 @@
#include "src/core/ext/filters/client_channel/retry_filter.h"
+#include <inttypes.h>
+#include <limits.h>
+#include <stddef.h>
+
+#include <memory>
+#include <new>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
#include "y_absl/container/inlined_vector.h"
#include "y_absl/status/statusor.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/strings/strip.h"
+#include "y_absl/types/optional.h"
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
#include <grpc/status.h>
+#include <grpc/support/atm.h>
#include <grpc/support/log.h>
#include "src/core/ext/filters/client_channel/client_channel.h"
+#include "src/core/ext/filters/client_channel/config_selector.h"
#include "src/core/ext/filters/client_channel/retry_service_config.h"
#include "src/core/ext/filters/client_channel/retry_throttle.h"
#include "src/core/lib/backoff/backoff.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/context.h"
#include "src/core/lib/channel/status_util.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/construct_destruct.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/polling_entity.h"
+#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/resource_quota/arena.h"
#include "src/core/lib/service_config/service_config.h"
#include "src/core/lib/service_config/service_config_call_data.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/lib/slice/slice_buffer.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/core/lib/transport/error_utils.h"
#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
#include "src/core/lib/uri/uri_parser.h"
//
@@ -319,7 +351,11 @@ class RetryFilter::CallData {
// cancel_stream op.
static void OnCompleteForCancelOp(void* arg, grpc_error_handle error);
- RefCountedPtr<CallAttempt> call_attempt_;
+ // This DOES hold a ref, but it cannot be a RefCountedPtr<>, because
+ // our dtor unrefs the owning call, which may delete the arena in
+ // which we are allocated, which means that running the dtor of any
+ // data members after that would cause a crash.
+ CallAttempt* call_attempt_;
// The batch to use in the LB call.
// Its payload field points to CallAttempt::batch_payload_.
grpc_transport_stream_op_batch batch_;
@@ -425,9 +461,6 @@ class RetryFilter::CallData {
grpc_transport_stream_op_batch_payload batch_payload_;
// For send_initial_metadata.
grpc_metadata_batch send_initial_metadata_{calld_->arena_};
- // For send_message.
- // TODO(roth): Restructure this to eliminate use of ManualConstructor.
- ManualConstructor<ByteStreamCache::CachingByteStream> send_message_;
// For send_trailing_metadata.
grpc_metadata_batch send_trailing_metadata_{calld_->arena_};
// For intercepting recv_initial_metadata.
@@ -436,7 +469,8 @@ class RetryFilter::CallData {
bool trailing_metadata_available_ = false;
// For intercepting recv_message.
grpc_closure recv_message_ready_;
- OrphanablePtr<ByteStream> recv_message_;
+ y_absl::optional<SliceBuffer> recv_message_;
+ uint32_t recv_message_flags_;
// For intercepting recv_trailing_metadata.
grpc_metadata_batch recv_trailing_metadata_{calld_->arena_};
grpc_transport_stream_stats collect_stats_;
@@ -580,7 +614,6 @@ class RetryFilter::CallData {
// send_initial_metadata
bool seen_send_initial_metadata_ = false;
grpc_metadata_batch send_initial_metadata_{arena_};
- uint32_t send_initial_metadata_flags_;
// TODO(roth): As part of implementing hedging, we'll probably need to
// have the LB call set a value in CallAttempt and then propagate it
// from CallAttempt to the parent call when we commit. Otherwise, we
@@ -597,11 +630,11 @@ class RetryFilter::CallData {
// Note: We inline the cache for the first 3 send_message ops and use
// dynamic allocation after that. This number was essentially picked
// at random; it could be changed in the future to tune performance.
- // TODO(roth): As part of implementing hedging, we may need some
- // synchronization here, since ByteStreamCache does not provide any
- // synchronization, so it's not safe to have multiple
- // CachingByteStreams read from the same ByteStreamCache concurrently.
- y_absl::InlinedVector<ByteStreamCache*, 3> send_messages_;
+ struct CachedSendMessage {
+ SliceBuffer* slices;
+ uint32_t flags;
+ };
+ y_absl::InlinedVector<CachedSendMessage, 3> send_messages_;
// send_trailing_metadata
bool seen_send_trailing_metadata_ = false;
grpc_metadata_batch send_trailing_metadata_{arena_};
@@ -685,15 +718,15 @@ RetryFilter::CallData::CallAttempt::CallAttempt(CallData* calld,
lb_call_ = calld->CreateLoadBalancedCall(&attempt_dispatch_controller_,
is_transparent_retry);
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
- gpr_log(GPR_INFO, "chand=%p calld=%p attempt=%p: create lb_call=%p",
+ gpr_log(GPR_INFO,
+ "chand=%p calld=%p attempt=%p: created attempt, lb_call=%p",
calld->chand_, calld, this, lb_call_.get());
}
// If per_attempt_recv_timeout is set, start a timer.
if (calld->retry_policy_ != nullptr &&
calld->retry_policy_->per_attempt_recv_timeout().has_value()) {
Timestamp per_attempt_recv_deadline =
- ExecCtx::Get()->Now() +
- *calld->retry_policy_->per_attempt_recv_timeout();
+ Timestamp::Now() + *calld->retry_policy_->per_attempt_recv_timeout();
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
gpr_log(GPR_INFO,
"chand=%p calld=%p attempt=%p: per-attempt timeout in %" PRId64
@@ -926,7 +959,16 @@ void RetryFilter::CallData::CallAttempt::AddBatchesForPendingBatches(
has_send_ops = true;
}
if (batch->send_message) {
- if (completed_send_message_count_ < started_send_message_count_) {
+ // Cases where we can't start this send_message op:
+ // - We are currently replaying a previous cached send_message op.
+ // - We have already replayed all send_message ops, including this
+ // one. (This can happen if a send_message op is in the same
+ // batch as a recv op, the send_message op has already completed
+ // but the recv op hasn't, and then a subsequent batch with another
+ // recv op is started from the surface.)
+ if (completed_send_message_count_ < started_send_message_count_ ||
+ completed_send_message_count_ ==
+ (calld_->send_messages_.size() + !pending->send_ops_cached)) {
continue;
}
has_send_ops = true;
@@ -1028,8 +1070,6 @@ void RetryFilter::CallData::CallAttempt::AddBatchesForPendingBatches(
}
// recv_initial_metadata.
if (batch->recv_initial_metadata) {
- // recv_flags is only used on the server side.
- GPR_ASSERT(batch->payload->recv_initial_metadata.recv_flags == nullptr);
batch_data->AddRetriableRecvInitialMetadataOp();
}
// recv_message.
@@ -1240,7 +1280,7 @@ void RetryFilter::CallData::CallAttempt::OnPerAttemptRecvTimerLocked(
call_attempt->per_attempt_recv_timer_pending_);
}
CallCombinerClosureList closures;
- if (error == GRPC_ERROR_NONE &&
+ if (GRPC_ERROR_IS_NONE(error) &&
call_attempt->per_attempt_recv_timer_pending_) {
call_attempt->per_attempt_recv_timer_pending_ = false;
// Cancel this attempt.
@@ -1293,11 +1333,11 @@ RetryFilter::CallData::CallAttempt::BatchData::BatchData(
: RefCounted(
GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace) ? "BatchData" : nullptr,
refcount),
- call_attempt_(std::move(attempt)) {
+ call_attempt_(attempt.release()) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
gpr_log(GPR_INFO, "chand=%p calld=%p attempt=%p: creating batch %p",
- call_attempt_->calld_->chand_, call_attempt_->calld_,
- call_attempt_.get(), this);
+ call_attempt_->calld_->chand_, call_attempt_->calld_, call_attempt_,
+ this);
}
// We hold a ref to the call stack for every batch sent on a call attempt.
// This is because some batches on the call attempt may not complete
@@ -1317,11 +1357,12 @@ RetryFilter::CallData::CallAttempt::BatchData::BatchData(
RetryFilter::CallData::CallAttempt::BatchData::~BatchData() {
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
gpr_log(GPR_INFO, "chand=%p calld=%p attempt=%p: destroying batch %p",
- call_attempt_->calld_->chand_, call_attempt_->calld_,
- call_attempt_.get(), this);
+ call_attempt_->calld_->chand_, call_attempt_->calld_, call_attempt_,
+ this);
}
- GRPC_CALL_STACK_UNREF(call_attempt_->calld_->owning_call_, "Retry BatchData");
- call_attempt_.reset(DEBUG_LOCATION, "~BatchData");
+ CallAttempt* call_attempt = std::exchange(call_attempt_, nullptr);
+ GRPC_CALL_STACK_UNREF(call_attempt->calld_->owning_call_, "Retry BatchData");
+ call_attempt->Unref(DEBUG_LOCATION, "~BatchData");
}
void RetryFilter::CallData::CallAttempt::BatchData::
@@ -1385,7 +1426,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::
void RetryFilter::CallData::CallAttempt::BatchData::RecvInitialMetadataReady(
void* arg, grpc_error_handle error) {
RefCountedPtr<BatchData> batch_data(static_cast<BatchData*>(arg));
- CallAttempt* call_attempt = batch_data->call_attempt_.get();
+ CallAttempt* call_attempt = batch_data->call_attempt_;
CallData* calld = call_attempt->calld_;
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
gpr_log(GPR_INFO,
@@ -1412,7 +1453,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvInitialMetadataReady(
// callback back to the surface. We can evaluate whether to retry when
// recv_trailing_metadata comes back.
if (GPR_UNLIKELY((call_attempt->trailing_metadata_available_ ||
- error != GRPC_ERROR_NONE) &&
+ !GRPC_ERROR_IS_NONE(error)) &&
!call_attempt->completed_recv_trailing_metadata_)) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
gpr_log(GPR_INFO,
@@ -1424,7 +1465,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvInitialMetadataReady(
std::move(batch_data);
call_attempt->recv_initial_metadata_error_ = GRPC_ERROR_REF(error);
CallCombinerClosureList closures;
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
call_attempt->MaybeAddBatchForCancelOp(GRPC_ERROR_REF(error),
&closures);
}
@@ -1470,6 +1511,8 @@ void RetryFilter::CallData::CallAttempt::BatchData::
// Return payload.
*pending->batch->payload->recv_message.recv_message =
std::move(call_attempt_->recv_message_);
+ *pending->batch->payload->recv_message.flags =
+ call_attempt_->recv_message_flags_;
// Update bookkeeping.
// Note: Need to do this before invoking the callback, since invoking
// the callback will result in yielding the call combiner.
@@ -1485,7 +1528,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::
void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady(
void* arg, grpc_error_handle error) {
RefCountedPtr<BatchData> batch_data(static_cast<BatchData*>(arg));
- CallAttempt* call_attempt = batch_data->call_attempt_.get();
+ CallAttempt* call_attempt = batch_data->call_attempt_;
CallData* calld = call_attempt->calld_;
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
gpr_log(GPR_INFO,
@@ -1498,6 +1541,10 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady(
// If this attempt has been abandoned, then we're not going to use the
// result of this recv_message op, so do nothing.
if (call_attempt->abandoned_) {
+ // The transport will not invoke recv_trailing_metadata_ready until the byte
+ // stream for any recv_message op is orphaned, so we do that here to ensure
+ // that any pending recv_trailing_metadata op can complete.
+ call_attempt->recv_message_.reset();
GRPC_CALL_COMBINER_STOP(calld->call_combiner_,
"recv_message_ready for abandoned attempt");
return;
@@ -1510,8 +1557,8 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady(
// the recv_trailing_metadata_ready callback, then defer propagating this
// callback back to the surface. We can evaluate whether to retry when
// recv_trailing_metadata comes back.
- if (GPR_UNLIKELY((call_attempt->recv_message_ == nullptr ||
- error != GRPC_ERROR_NONE) &&
+ if (GPR_UNLIKELY((!call_attempt->recv_message_.has_value() ||
+ !GRPC_ERROR_IS_NONE(error)) &&
!call_attempt->completed_recv_trailing_metadata_)) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
gpr_log(GPR_INFO,
@@ -1522,7 +1569,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvMessageReady(
call_attempt->recv_message_ready_deferred_batch_ = std::move(batch_data);
call_attempt->recv_message_error_ = GRPC_ERROR_REF(error);
CallCombinerClosureList closures;
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
call_attempt->MaybeAddBatchForCancelOp(GRPC_ERROR_REF(error),
&closures);
}
@@ -1560,7 +1607,7 @@ void GetCallStatus(
grpc_status_code* status, y_absl::optional<Duration>* server_pushback,
bool* is_lb_drop,
y_absl::optional<GrpcStreamNetworkState::ValueType>* stream_network_state) {
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
grpc_error_get_status(error, deadline, status, nullptr, nullptr, nullptr);
intptr_t value = 0;
if (grpc_error_get_int(error, GRPC_ERROR_INT_LB_POLICY_DROP, &value) &&
@@ -1680,7 +1727,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RunClosuresForCompletedCall(
void RetryFilter::CallData::CallAttempt::BatchData::RecvTrailingMetadataReady(
void* arg, grpc_error_handle error) {
RefCountedPtr<BatchData> batch_data(static_cast<BatchData*>(arg));
- CallAttempt* call_attempt = batch_data->call_attempt_.get();
+ CallAttempt* call_attempt = batch_data->call_attempt_;
CallData* calld = call_attempt->calld_;
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
gpr_log(GPR_INFO,
@@ -1748,7 +1795,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::RecvTrailingMetadataReady(
CallCombinerClosureList closures;
// Cancel call attempt.
call_attempt->MaybeAddBatchForCancelOp(
- error == GRPC_ERROR_NONE
+ GRPC_ERROR_IS_NONE(error)
? grpc_error_set_int(
GRPC_ERROR_CREATE_FROM_STATIC_STRING("call attempt failed"),
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_CANCELLED)
@@ -1836,7 +1883,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::
gpr_log(GPR_INFO,
"chand=%p calld=%p attempt=%p: starting next batch for pending "
"send op(s)",
- calld->chand_, calld, call_attempt_.get());
+ calld->chand_, calld, call_attempt_);
}
call_attempt_->AddRetriableBatches(closures);
}
@@ -1845,7 +1892,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::
void RetryFilter::CallData::CallAttempt::BatchData::OnComplete(
void* arg, grpc_error_handle error) {
RefCountedPtr<BatchData> batch_data(static_cast<BatchData*>(arg));
- CallAttempt* call_attempt = batch_data->call_attempt_.get();
+ CallAttempt* call_attempt = batch_data->call_attempt_;
CallData* calld = call_attempt->calld_;
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
gpr_log(GPR_INFO,
@@ -1866,7 +1913,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnComplete(
// recv_trailing_metadata_ready callback, then defer propagating this
// callback back to the surface. We can evaluate whether to retry when
// recv_trailing_metadata comes back.
- if (GPR_UNLIKELY(!calld->retry_committed_ && error != GRPC_ERROR_NONE &&
+ if (GPR_UNLIKELY(!calld->retry_committed_ && !GRPC_ERROR_IS_NONE(error) &&
!call_attempt->completed_recv_trailing_metadata_)) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
gpr_log(GPR_INFO, "chand=%p calld=%p attempt=%p: deferring on_complete",
@@ -1921,7 +1968,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::OnComplete(
void RetryFilter::CallData::CallAttempt::BatchData::OnCompleteForCancelOp(
void* arg, grpc_error_handle error) {
RefCountedPtr<BatchData> batch_data(static_cast<BatchData*>(arg));
- CallAttempt* call_attempt = batch_data->call_attempt_.get();
+ CallAttempt* call_attempt = batch_data->call_attempt_;
CallData* calld = call_attempt->calld_;
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
gpr_log(GPR_INFO,
@@ -1961,8 +2008,6 @@ void RetryFilter::CallData::CallAttempt::BatchData::
batch_.send_initial_metadata = true;
batch_.payload->send_initial_metadata.send_initial_metadata =
&call_attempt_->send_initial_metadata_;
- batch_.payload->send_initial_metadata.send_initial_metadata_flags =
- calld->send_initial_metadata_flags_;
batch_.payload->send_initial_metadata.peer_string = calld->peer_string_;
}
@@ -1974,16 +2019,15 @@ void RetryFilter::CallData::CallAttempt::BatchData::
GPR_INFO,
"chand=%p calld=%p attempt=%p: starting calld->send_messages[%" PRIuPTR
"]",
- calld->chand_, calld, call_attempt_.get(),
+ calld->chand_, calld, call_attempt_,
call_attempt_->started_send_message_count_);
}
- ByteStreamCache* cache =
+ CachedSendMessage cache =
calld->send_messages_[call_attempt_->started_send_message_count_];
++call_attempt_->started_send_message_count_;
- call_attempt_->send_message_.Init(cache);
batch_.send_message = true;
- batch_.payload->send_message.send_message.reset(
- call_attempt_->send_message_.get());
+ batch_.payload->send_message.send_message = cache.slices;
+ batch_.payload->send_message.flags = cache.flags;
}
void RetryFilter::CallData::CallAttempt::BatchData::
@@ -2020,6 +2064,7 @@ void RetryFilter::CallData::CallAttempt::BatchData::
++call_attempt_->started_recv_message_count_;
batch_.recv_message = true;
batch_.payload->recv_message.recv_message = &call_attempt_->recv_message_;
+ batch_.payload->recv_message.flags = &call_attempt_->recv_message_flags_;
batch_.payload->recv_message.call_failed_before_recv_message = nullptr;
GRPC_CLOSURE_INIT(&call_attempt_->recv_message_ready_, RecvMessageReady, this,
grpc_schedule_on_exec_ctx);
@@ -2153,7 +2198,8 @@ RetryFilter::CallData::~CallData() {
void RetryFilter::CallData::StartTransportStreamOpBatch(
grpc_transport_stream_op_batch* batch) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace) &&
+ !GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) {
gpr_log(GPR_INFO, "chand=%p calld=%p: batch started from surface: %s",
chand_, this, grpc_transport_stream_op_batch_string(batch).c_str());
}
@@ -2165,7 +2211,7 @@ void RetryFilter::CallData::StartTransportStreamOpBatch(
}
// If we were previously cancelled from the surface, fail this
// batch immediately.
- if (cancelled_from_surface_ != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(cancelled_from_surface_)) {
// Note: This will release the call combiner.
grpc_transport_stream_op_batch_finish_with_failure(
batch, GRPC_ERROR_REF(cancelled_from_surface_), call_combiner_);
@@ -2313,15 +2359,13 @@ void RetryFilter::CallData::MaybeCacheSendOpsForBatch(PendingBatch* pending) {
grpc_metadata_batch* send_initial_metadata =
batch->payload->send_initial_metadata.send_initial_metadata;
send_initial_metadata_ = send_initial_metadata->Copy();
- send_initial_metadata_flags_ =
- batch->payload->send_initial_metadata.send_initial_metadata_flags;
peer_string_ = batch->payload->send_initial_metadata.peer_string;
}
// Set up cache for send_message ops.
if (batch->send_message) {
- ByteStreamCache* cache = arena_->New<ByteStreamCache>(
- std::move(batch->payload->send_message.send_message));
- send_messages_.push_back(cache);
+ SliceBuffer* cache = arena_->New<SliceBuffer>(std::move(
+ *std::exchange(batch->payload->send_message.send_message, nullptr)));
+ send_messages_.push_back({cache, batch->payload->send_message.flags});
}
// Save metadata batch for send_trailing_metadata ops.
if (batch->send_trailing_metadata) {
@@ -2341,14 +2385,13 @@ void RetryFilter::CallData::FreeCachedSendInitialMetadata() {
}
void RetryFilter::CallData::FreeCachedSendMessage(size_t idx) {
- if (send_messages_[idx] != nullptr) {
+ if (send_messages_[idx].slices != nullptr) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
gpr_log(GPR_INFO,
"chand=%p calld=%p: destroying send_messages[%" PRIuPTR "]",
chand_, this, idx);
}
- send_messages_[idx]->Destroy();
- send_messages_[idx] = nullptr;
+ Destruct(std::exchange(send_messages_[idx].slices, nullptr));
}
}
@@ -2412,7 +2455,7 @@ RetryFilter::CallData::PendingBatch* RetryFilter::CallData::PendingBatchesAdd(
if (batch->send_message) {
pending_send_message_ = true;
bytes_buffered_for_retry_ +=
- batch->payload->send_message.send_message->length();
+ batch->payload->send_message.send_message->Length();
}
if (batch->send_trailing_metadata) {
pending_send_trailing_metadata_ = true;
@@ -2479,7 +2522,7 @@ void RetryFilter::CallData::FailPendingBatchInCallCombiner(
// This is called via the call combiner, so access to calld is synchronized.
void RetryFilter::CallData::PendingBatchesFail(grpc_error_handle error) {
- GPR_ASSERT(error != GRPC_ERROR_NONE);
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
size_t num_batches = 0;
for (size_t i = 0; i < GPR_ARRAY_SIZE(pending_batches_); ++i) {
@@ -2561,7 +2604,7 @@ void RetryFilter::CallData::StartRetryTimer(
Timestamp next_attempt_time;
if (server_pushback.has_value()) {
GPR_ASSERT(*server_pushback >= Duration::Zero());
- next_attempt_time = ExecCtx::Get()->Now() + *server_pushback;
+ next_attempt_time = Timestamp::Now() + *server_pushback;
retry_backoff_.Reset();
} else {
next_attempt_time = retry_backoff_.NextAttemptTime();
@@ -2569,7 +2612,7 @@ void RetryFilter::CallData::StartRetryTimer(
if (GRPC_TRACE_FLAG_ENABLED(grpc_retry_trace)) {
gpr_log(GPR_INFO,
"chand=%p calld=%p: retrying failed call in %" PRId64 " ms", chand_,
- this, (next_attempt_time - ExecCtx::Get()->Now()).millis());
+ this, (next_attempt_time - Timestamp::Now()).millis());
}
// Schedule retry after computed delay.
GRPC_CLOSURE_INIT(&retry_closure_, OnRetryTimer, this, nullptr);
@@ -2588,7 +2631,7 @@ void RetryFilter::CallData::OnRetryTimer(void* arg, grpc_error_handle error) {
void RetryFilter::CallData::OnRetryTimerLocked(void* arg,
grpc_error_handle error) {
auto* calld = static_cast<CallData*>(arg);
- if (error == GRPC_ERROR_NONE && calld->retry_timer_pending_) {
+ if (GRPC_ERROR_IS_NONE(error) && calld->retry_timer_pending_) {
calld->retry_timer_pending_ = false;
calld->CreateCallAttempt(/*is_transparent_retry=*/false);
} else {
@@ -2611,7 +2654,7 @@ void RetryFilter::CallData::AddClosureToStartTransparentRetry(
void RetryFilter::CallData::StartTransparentRetry(void* arg,
grpc_error_handle /*error*/) {
auto* calld = static_cast<CallData*>(arg);
- if (calld->cancelled_from_surface_ == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(calld->cancelled_from_surface_)) {
calld->CreateCallAttempt(/*is_transparent_retry=*/true);
} else {
GRPC_CALL_COMBINER_STOP(calld->call_combiner_,
@@ -2632,6 +2675,7 @@ const grpc_channel_filter kRetryFilterVtable = {
RetryFilter::CallData::Destroy,
sizeof(RetryFilter),
RetryFilter::Init,
+ grpc_channel_stack_no_post_init,
RetryFilter::Destroy,
RetryFilter::GetChannelInfo,
"retry_filter",
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_filter.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_filter.h
index a96df8af1f..f00c52f76d 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_filter.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_filter.h
@@ -19,6 +19,7 @@
#include <grpc/support/port_platform.h>
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_service_config.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_service_config.cc
index 29d34b3186..bab199e5cf 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_service_config.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_service_config.cc
@@ -18,27 +18,31 @@
#include "src/core/ext/filters/client_channel/retry_service_config.h"
-#include <ctype.h>
#include <stdio.h>
#include <string.h>
+#include <algorithm>
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/types/optional.h"
-#include <grpc/support/alloc.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/status.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
-#include "src/core/ext/filters/client_channel/client_channel.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/status_util.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/json/json_util.h"
-#include "src/core/lib/resolver/server_address.h"
-#include "src/core/lib/uri/uri_parser.h"
// As per the retry design, we do not allow more than 5 retry attempts.
#define MAX_MAX_RETRY_ATTEMPTS 5
@@ -138,18 +142,22 @@ grpc_error_handle ParseRetryThrottling(const Json& json,
} // namespace
-std::unique_ptr<ServiceConfigParser::ParsedConfig>
-RetryServiceConfigParser::ParseGlobalParams(const grpc_channel_args* /*args*/,
- const Json& json,
- grpc_error_handle* error) {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
+y_absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
+RetryServiceConfigParser::ParseGlobalParams(const ChannelArgs& /*args*/,
+ const Json& json) {
auto it = json.object_value().find("retryThrottling");
if (it == json.object_value().end()) return nullptr;
intptr_t max_milli_tokens = 0;
intptr_t milli_token_ratio = 0;
- *error =
+ grpc_error_handle error =
ParseRetryThrottling(it->second, &max_milli_tokens, &milli_token_ratio);
- if (*error != GRPC_ERROR_NONE) return nullptr;
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ y_absl::Status status = y_absl::InvalidArgumentError(
+ y_absl::StrCat("error parsing retry global parameters: ",
+ grpc_error_std_string(error)));
+ GRPC_ERROR_UNREF(error);
+ return status;
+ }
return y_absl::make_unique<RetryGlobalConfig>(max_milli_tokens,
milli_token_ratio);
}
@@ -157,7 +165,7 @@ RetryServiceConfigParser::ParseGlobalParams(const grpc_channel_args* /*args*/,
namespace {
grpc_error_handle ParseRetryPolicy(
- const grpc_channel_args* args, const Json& json, int* max_attempts,
+ const ChannelArgs& args, const Json& json, int* max_attempts,
Duration* initial_backoff, Duration* max_backoff, float* backoff_multiplier,
StatusCodeSet* retryable_status_codes,
y_absl::optional<Duration>* per_attempt_recv_timeout) {
@@ -249,8 +257,7 @@ grpc_error_handle ParseRetryPolicy(
}
}
// Parse perAttemptRecvTimeout.
- if (grpc_channel_args_find_bool(args, GRPC_ARG_EXPERIMENTAL_ENABLE_HEDGING,
- false)) {
+ if (args.GetBool(GRPC_ARG_EXPERIMENTAL_ENABLE_HEDGING).value_or(false)) {
it = json.object_value().find("perAttemptRecvTimeout");
if (it != json.object_value().end()) {
Duration per_attempt_recv_timeout_value;
@@ -287,11 +294,9 @@ grpc_error_handle ParseRetryPolicy(
} // namespace
-std::unique_ptr<ServiceConfigParser::ParsedConfig>
-RetryServiceConfigParser::ParsePerMethodParams(const grpc_channel_args* args,
- const Json& json,
- grpc_error_handle* error) {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
+y_absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
+RetryServiceConfigParser::ParsePerMethodParams(const ChannelArgs& args,
+ const Json& json) {
// Parse retry policy.
auto it = json.object_value().find("retryPolicy");
if (it == json.object_value().end()) return nullptr;
@@ -301,10 +306,16 @@ RetryServiceConfigParser::ParsePerMethodParams(const grpc_channel_args* args,
float backoff_multiplier = 0;
StatusCodeSet retryable_status_codes;
y_absl::optional<Duration> per_attempt_recv_timeout;
- *error = ParseRetryPolicy(args, it->second, &max_attempts, &initial_backoff,
- &max_backoff, &backoff_multiplier,
- &retryable_status_codes, &per_attempt_recv_timeout);
- if (*error != GRPC_ERROR_NONE) return nullptr;
+ grpc_error_handle error = ParseRetryPolicy(
+ args, it->second, &max_attempts, &initial_backoff, &max_backoff,
+ &backoff_multiplier, &retryable_status_codes, &per_attempt_recv_timeout);
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ y_absl::Status status = y_absl::InvalidArgumentError(
+ y_absl::StrCat("error parsing retry method parameters: ",
+ grpc_error_std_string(error)));
+ GRPC_ERROR_UNREF(error);
+ return status;
+ }
return y_absl::make_unique<RetryMethodConfig>(
max_attempts, initial_backoff, max_backoff, backoff_multiplier,
retryable_status_codes, per_attempt_recv_timeout);
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_service_config.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_service_config.h
index 56cee2289d..b31aa07072 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_service_config.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_service_config.h
@@ -19,12 +19,20 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+#include <stdint.h>
+
#include <memory>
-#include "src/core/ext/filters/client_channel/retry_throttle.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/status_util.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/json/json.h"
#include "src/core/lib/service_config/service_config_parser.h"
namespace grpc_core {
@@ -81,13 +89,11 @@ class RetryServiceConfigParser : public ServiceConfigParser::Parser {
public:
y_absl::string_view name() const override { return parser_name(); }
- std::unique_ptr<ServiceConfigParser::ParsedConfig> ParseGlobalParams(
- const grpc_channel_args* /*args*/, const Json& json,
- grpc_error_handle* error) override;
+ y_absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
+ ParseGlobalParams(const ChannelArgs& /*args*/, const Json& json) override;
- std::unique_ptr<ServiceConfigParser::ParsedConfig> ParsePerMethodParams(
- const grpc_channel_args* args, const Json& json,
- grpc_error_handle* error) override;
+ y_absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
+ ParsePerMethodParams(const ChannelArgs& args, const Json& json) override;
static size_t ParserIndex();
static void Register(CoreConfiguration::Builder* builder);
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_throttle.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_throttle.cc
index 9c6b7ebf14..daa3aef123 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_throttle.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_throttle.cc
@@ -20,19 +20,12 @@
#include "src/core/ext/filters/client_channel/retry_throttle.h"
-#include <limits.h>
-#include <string.h>
-
#include <map>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
-#include <grpc/support/alloc.h>
#include <grpc/support/atm.h>
-#include <grpc/support/string_util.h>
-#include <grpc/support/sync.h>
-
-#include "src/core/lib/gprpp/manual_constructor.h"
namespace grpc_core {
namespace internal {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_throttle.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_throttle.h
index 20f86224d3..bcc2c861cf 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_throttle.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/retry_throttle.h
@@ -21,12 +21,18 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
#include <map>
#include <util/generic/string.h>
#include <util/string/cast.h>
-#include "src/core/lib/gprpp/memory.h"
+#include "y_absl/base/thread_annotations.h"
+
+#include <grpc/support/atm.h>
+
#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc
index 34d3382d5c..dc26925c46 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc
@@ -19,12 +19,33 @@
#include <grpc/support/port_platform.h>
+#include <new>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/log.h>
+
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/channel/channel_stack_builder.h"
+#include "src/core/lib/channel/context.h"
#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/service_config/service_config.h"
#include "src/core/lib/service_config/service_config_call_data.h"
#include "src/core/lib/service_config/service_config_impl.h"
+#include "src/core/lib/service_config/service_config_parser.h"
+#include "src/core/lib/surface/channel_init.h"
+#include "src/core/lib/surface/channel_stack_type.h"
namespace grpc_core {
@@ -37,16 +58,13 @@ class ServiceConfigChannelArgChannelData {
const char* service_config_str = grpc_channel_args_find_string(
args->channel_args, GRPC_ARG_SERVICE_CONFIG);
if (service_config_str != nullptr) {
- grpc_error_handle service_config_error = GRPC_ERROR_NONE;
auto service_config = ServiceConfigImpl::Create(
- args->channel_args, service_config_str, &service_config_error);
- if (service_config_error == GRPC_ERROR_NONE) {
- service_config_ = std::move(service_config);
+ ChannelArgs::FromC(args->channel_args), service_config_str);
+ if (!service_config.ok()) {
+ gpr_log(GPR_ERROR, "%s", service_config.status().ToString().c_str());
} else {
- gpr_log(GPR_ERROR, "%s",
- grpc_error_std_string(service_config_error).c_str());
+ service_config_ = std::move(*service_config);
}
- GRPC_ERROR_UNREF(service_config_error);
}
}
@@ -132,6 +150,7 @@ const grpc_channel_filter ServiceConfigChannelArgFilter = {
ServiceConfigChannelArgDestroyCallElem,
sizeof(ServiceConfigChannelArgChannelData),
ServiceConfigChannelArgInitChannelElem,
+ grpc_channel_stack_no_post_init,
ServiceConfigChannelArgDestroyChannelElem,
grpc_channel_next_get_info,
"service_config_channel_arg"};
@@ -143,13 +162,12 @@ void RegisterServiceConfigChannelArgFilter(
builder->channel_init()->RegisterStage(
GRPC_CLIENT_DIRECT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
[](ChannelStackBuilder* builder) {
- const grpc_channel_args* channel_args = builder->channel_args();
- if (grpc_channel_args_want_minimal_stack(channel_args) ||
- grpc_channel_args_find_string(channel_args,
- GRPC_ARG_SERVICE_CONFIG) == nullptr) {
+ auto channel_args = builder->channel_args();
+ if (channel_args.WantMinimalStack() ||
+ !channel_args.GetString(GRPC_ARG_SERVICE_CONFIG).has_value()) {
return true;
}
- builder->PrependFilter(&ServiceConfigChannelArgFilter, nullptr);
+ builder->PrependFilter(&ServiceConfigChannelArgFilter);
return true;
});
}
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel.cc
index b43c3cb1df..491a1a0263 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel.cc
@@ -22,40 +22,48 @@
#include <limits.h>
#include <algorithm>
-#include <cstring>
+#include <memory>
+#include <new>
+#include <utility>
-#include "y_absl/strings/str_format.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/cord.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
#include <grpc/status.h>
-#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
+#include <grpc/support/log.h>
-#include "src/core/ext/filters/client_channel/client_channel.h"
#include "src/core/ext/filters/client_channel/health/health_check_client.h"
-#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
-#include "src/core/lib/address_utils/parse_address.h"
+#include "src/core/ext/filters/client_channel/subchannel_stream_client.h"
#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/backoff/backoff.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/connected_channel.h"
+#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channel_stack_builder.h"
+#include "src/core/lib/channel/channel_stack_builder_impl.h"
+#include "src/core/lib/channel/channel_trace.h"
+#include "src/core/lib/channel/channelz.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/debug/stats.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/event_engine/default_event_engine.h"
#include "src/core/lib/gpr/alloc.h"
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/debug_location.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/profiling/timers.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/surface/channel.h"
+#include "src/core/lib/handshaker/proxy_mapper_registry.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/surface/channel_init.h"
+#include "src/core/lib/surface/channel_stack_type.h"
+#include "src/core/lib/surface/init_internally.h"
#include "src/core/lib/transport/connectivity_state.h"
#include "src/core/lib/transport/error_utils.h"
-#include "src/core/lib/uri/uri_parser.h"
-
-// Strong and weak refs.
-#define INTERNAL_REF_BITS 16
-#define STRONG_REF_MASK (~(gpr_atm)((1 << INTERNAL_REF_BITS) - 1))
// Backoff parameters.
#define GRPC_SUBCHANNEL_INITIAL_CONNECT_BACKOFF_SECONDS 1
@@ -73,6 +81,7 @@
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(SubchannelCall)))
namespace grpc_core {
+using ::grpc_event_engine::experimental::GetDefaultEventEngine;
TraceFlag grpc_trace_subchannel(false, "subchannel");
DebugOnlyTraceFlag grpc_trace_subchannel_refcount(false, "subchannel_refcount");
@@ -82,18 +91,17 @@ DebugOnlyTraceFlag grpc_trace_subchannel_refcount(false, "subchannel_refcount");
//
ConnectedSubchannel::ConnectedSubchannel(
- grpc_channel_stack* channel_stack, const grpc_channel_args* args,
+ grpc_channel_stack* channel_stack, const ChannelArgs& args,
RefCountedPtr<channelz::SubchannelNode> channelz_subchannel)
: RefCounted<ConnectedSubchannel>(
GRPC_TRACE_FLAG_ENABLED(grpc_trace_subchannel_refcount)
? "ConnectedSubchannel"
: nullptr),
channel_stack_(channel_stack),
- args_(grpc_channel_args_copy(args)),
+ args_(args),
channelz_subchannel_(std::move(channelz_subchannel)) {}
ConnectedSubchannel::~ConnectedSubchannel() {
- grpc_channel_args_destroy(args_);
GRPC_CHANNEL_STACK_UNREF(channel_stack_, "connected_subchannel_dtor");
}
@@ -152,7 +160,7 @@ SubchannelCall::SubchannelCall(Args args, grpc_error_handle* error)
};
*error = grpc_call_stack_init(connected_subchannel_->channel_stack(), 1,
SubchannelCall::Destroy, this, &call_args);
- if (GPR_UNLIKELY(*error != GRPC_ERROR_NONE)) {
+ if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(*error))) {
gpr_log(GPR_ERROR, "error: %s", grpc_error_std_string(*error).c_str());
return;
}
@@ -165,7 +173,6 @@ SubchannelCall::SubchannelCall(Args args, grpc_error_handle* error)
void SubchannelCall::StartTransportStreamOpBatch(
grpc_transport_stream_op_batch* batch) {
- GPR_TIMER_SCOPE("subchannel_call_process_op", 0);
MaybeInterceptRecvTrailingMetadata(batch);
grpc_call_stack* call_stack = SUBCHANNEL_CALL_TO_CALL_STACK(this);
grpc_call_element* top_elem = grpc_call_stack_element(call_stack, 0);
@@ -204,7 +211,6 @@ void SubchannelCall::Unref(const DebugLocation& /*location*/,
}
void SubchannelCall::Destroy(void* arg, grpc_error_handle /*error*/) {
- GPR_TIMER_SCOPE("subchannel_call_destroy", 0);
SubchannelCall* self = static_cast<SubchannelCall*>(arg);
// Keep some members before destroying the subchannel call.
grpc_closure* after_call_stack_destroy = self->after_call_stack_destroy_;
@@ -249,7 +255,7 @@ namespace {
// Sets *status based on the rest of the parameters.
void GetCallStatus(grpc_status_code* status, Timestamp deadline,
grpc_metadata_batch* md_batch, grpc_error_handle error) {
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
grpc_error_get_status(error, deadline, status, nullptr, nullptr, nullptr);
} else {
*status = md_batch->get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN);
@@ -307,43 +313,33 @@ class Subchannel::ConnectedSubchannelStateWatcher
const y_absl::Status& status) override {
Subchannel* c = subchannel_.get();
MutexLock lock(&c->mu_);
- switch (new_state) {
- case GRPC_CHANNEL_TRANSIENT_FAILURE:
- case GRPC_CHANNEL_SHUTDOWN: {
- if (!c->disconnected_ && c->connected_subchannel_ != nullptr) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_subchannel)) {
- gpr_log(GPR_INFO,
- "subchannel %p %s: Connected subchannel %p has gone into "
- "%s. Attempting to reconnect.",
- c, c->key_.ToString().c_str(),
- c->connected_subchannel_.get(),
- ConnectivityStateName(new_state));
- }
- c->connected_subchannel_.reset();
- if (c->channelz_node() != nullptr) {
- c->channelz_node()->SetChildSocket(nullptr);
- }
- // We need to construct our own status if the underlying state was
- // shutdown since the accompanying status will be StatusCode::OK
- // otherwise.
- c->SetConnectivityStateLocked(
- GRPC_CHANNEL_TRANSIENT_FAILURE,
- new_state == GRPC_CHANNEL_SHUTDOWN
- ? y_absl::Status(y_absl::StatusCode::kUnavailable,
- "Subchannel has disconnected.")
- : status);
- c->backoff_begun_ = false;
- c->backoff_.Reset();
- }
- break;
+ // If we're either shutting down or have already seen this connection
+ // failure (i.e., c->connected_subchannel_ is null), do nothing.
+ //
+ // The transport reports TRANSIENT_FAILURE upon GOAWAY but SHUTDOWN
+ // upon connection close. So if the server gracefully shuts down,
+ // we will see TRANSIENT_FAILURE followed by SHUTDOWN, but if not, we
+ // will see only SHUTDOWN. Either way, we react to the first one we
+ // see, ignoring anything that happens after that.
+ if (c->connected_subchannel_ == nullptr) return;
+ if (new_state == GRPC_CHANNEL_TRANSIENT_FAILURE ||
+ new_state == GRPC_CHANNEL_SHUTDOWN) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_subchannel)) {
+ gpr_log(GPR_INFO,
+ "subchannel %p %s: Connected subchannel %p reports %s: %s", c,
+ c->key_.ToString().c_str(), c->connected_subchannel_.get(),
+ ConnectivityStateName(new_state), status.ToString().c_str());
}
- default: {
- // In principle, this should never happen. We should not get
- // a callback for READY, because that was the state we started
- // this watch from. And a connected subchannel should never go
- // from READY to CONNECTING or IDLE.
- c->SetConnectivityStateLocked(new_state, status);
+ c->connected_subchannel_.reset();
+ if (c->channelz_node() != nullptr) {
+ c->channelz_node()->SetChildSocket(nullptr);
}
+ // Even though we're reporting IDLE instead of TRANSIENT_FAILURE here,
+ // pass along the status from the transport, since it may have
+ // keepalive info attached to it that the channel needs.
+ // TODO(roth): Consider whether there's a cleaner way to do this.
+ c->SetConnectivityStateLocked(GRPC_CHANNEL_IDLE, status);
+ c->backoff_.Reset();
}
}
@@ -429,11 +425,8 @@ class Subchannel::HealthWatcherMap::HealthWatcher
grpc_connectivity_state state() const { return state_; }
void AddWatcherLocked(
- grpc_connectivity_state initial_state,
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface> watcher) {
- if (state_ != initial_state) {
- new AsyncWatcherNotifierLocked(watcher, state_, status_);
- }
+ new AsyncWatcherNotifierLocked(watcher, state_, status_);
watcher_list_.AddWatcherLocked(std::move(watcher));
}
@@ -487,14 +480,14 @@ class Subchannel::HealthWatcherMap::HealthWatcher
void StartHealthCheckingLocked()
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(subchannel_->mu_) {
GPR_ASSERT(health_check_client_ == nullptr);
- health_check_client_ = MakeOrphanable<HealthCheckClient>(
+ health_check_client_ = MakeHealthCheckClient(
health_check_service_name_, subchannel_->connected_subchannel_,
subchannel_->pollset_set_, subchannel_->channelz_node_, Ref());
}
WeakRefCountedPtr<Subchannel> subchannel_;
TString health_check_service_name_;
- OrphanablePtr<HealthCheckClient> health_check_client_;
+ OrphanablePtr<SubchannelStreamClient> health_check_client_;
grpc_connectivity_state state_;
y_absl::Status status_;
ConnectivityStateWatcherList watcher_list_;
@@ -506,7 +499,6 @@ class Subchannel::HealthWatcherMap::HealthWatcher
void Subchannel::HealthWatcherMap::AddWatcherLocked(
WeakRefCountedPtr<Subchannel> subchannel,
- grpc_connectivity_state initial_state,
const TString& health_check_service_name,
RefCountedPtr<ConnectivityStateWatcherInterface> watcher) {
// If the health check service name is not already present in the map,
@@ -522,7 +514,7 @@ void Subchannel::HealthWatcherMap::AddWatcherLocked(
health_watcher = it->second.get();
}
// Add the watcher to the entry.
- health_watcher->AddWatcherLocked(initial_state, std::move(watcher));
+ health_watcher->AddWatcherLocked(std::move(watcher));
}
void Subchannel::HealthWatcherMap::RemoveWatcherLocked(
@@ -563,64 +555,9 @@ Subchannel::HealthWatcherMap::CheckConnectivityStateLocked(
void Subchannel::HealthWatcherMap::ShutdownLocked() { map_.clear(); }
//
-// Subchannel
+// Subchannel::ConnectivityStateWatcherInterface
//
-namespace {
-
-BackOff::Options ParseArgsForBackoffValues(const grpc_channel_args* args,
- Duration* min_connect_timeout) {
- Duration initial_backoff =
- Duration::Seconds(GRPC_SUBCHANNEL_INITIAL_CONNECT_BACKOFF_SECONDS);
- *min_connect_timeout =
- Duration::Seconds(GRPC_SUBCHANNEL_RECONNECT_MIN_TIMEOUT_SECONDS);
- Duration max_backoff =
- Duration::Seconds(GRPC_SUBCHANNEL_RECONNECT_MAX_BACKOFF_SECONDS);
- bool fixed_reconnect_backoff = false;
- if (args != nullptr) {
- for (size_t i = 0; i < args->num_args; i++) {
- if (0 == strcmp(args->args[i].key,
- "grpc.testing.fixed_reconnect_backoff_ms")) {
- fixed_reconnect_backoff = true;
- initial_backoff = *min_connect_timeout = max_backoff =
- Duration::Milliseconds(grpc_channel_arg_get_integer(
- &args->args[i],
- {static_cast<int>(initial_backoff.millis()), 100, INT_MAX}));
- } else if (0 ==
- strcmp(args->args[i].key, GRPC_ARG_MIN_RECONNECT_BACKOFF_MS)) {
- fixed_reconnect_backoff = false;
- *min_connect_timeout =
- Duration::Milliseconds(grpc_channel_arg_get_integer(
- &args->args[i],
- {static_cast<int>(min_connect_timeout->millis()), 100,
- INT_MAX}));
- } else if (0 ==
- strcmp(args->args[i].key, GRPC_ARG_MAX_RECONNECT_BACKOFF_MS)) {
- fixed_reconnect_backoff = false;
- max_backoff = Duration::Milliseconds(grpc_channel_arg_get_integer(
- &args->args[i],
- {static_cast<int>(max_backoff.millis()), 100, INT_MAX}));
- } else if (0 == strcmp(args->args[i].key,
- GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS)) {
- fixed_reconnect_backoff = false;
- initial_backoff = Duration::Milliseconds(grpc_channel_arg_get_integer(
- &args->args[i],
- {static_cast<int>(initial_backoff.millis()), 100, INT_MAX}));
- }
- }
- }
- return BackOff::Options()
- .set_initial_backoff(initial_backoff)
- .set_multiplier(fixed_reconnect_backoff
- ? 1.0
- : GRPC_SUBCHANNEL_RECONNECT_BACKOFF_MULTIPLIER)
- .set_jitter(fixed_reconnect_backoff ? 0.0
- : GRPC_SUBCHANNEL_RECONNECT_JITTER)
- .set_max_backoff(max_backoff);
-}
-
-} // namespace
-
void Subchannel::ConnectivityStateWatcherInterface::PushConnectivityStateChange(
ConnectivityStateChange state_change) {
MutexLock lock(&mu_);
@@ -636,46 +573,91 @@ Subchannel::ConnectivityStateWatcherInterface::PopConnectivityStateChange() {
return state_change;
}
+//
+// Subchannel
+//
+
+namespace {
+
+BackOff::Options ParseArgsForBackoffValues(const ChannelArgs& args,
+ Duration* min_connect_timeout) {
+ const y_absl::optional<Duration> fixed_reconnect_backoff =
+ args.GetDurationFromIntMillis("grpc.testing.fixed_reconnect_backoff_ms");
+ if (fixed_reconnect_backoff.has_value()) {
+ const Duration backoff =
+ std::max(Duration::Milliseconds(100), *fixed_reconnect_backoff);
+ *min_connect_timeout = backoff;
+ return BackOff::Options()
+ .set_initial_backoff(backoff)
+ .set_multiplier(1.0)
+ .set_jitter(0.0)
+ .set_max_backoff(backoff);
+ }
+ const Duration initial_backoff = std::max(
+ Duration::Milliseconds(100),
+ args.GetDurationFromIntMillis(GRPC_ARG_INITIAL_RECONNECT_BACKOFF_MS)
+ .value_or(Duration::Seconds(
+ GRPC_SUBCHANNEL_INITIAL_CONNECT_BACKOFF_SECONDS)));
+ *min_connect_timeout =
+ std::max(Duration::Milliseconds(100),
+ args.GetDurationFromIntMillis(GRPC_ARG_MIN_RECONNECT_BACKOFF_MS)
+ .value_or(Duration::Seconds(
+ GRPC_SUBCHANNEL_RECONNECT_MIN_TIMEOUT_SECONDS)));
+ const Duration max_backoff =
+ std::max(Duration::Milliseconds(100),
+ args.GetDurationFromIntMillis(GRPC_ARG_MAX_RECONNECT_BACKOFF_MS)
+ .value_or(Duration::Seconds(
+ GRPC_SUBCHANNEL_RECONNECT_MAX_BACKOFF_SECONDS)));
+ return BackOff::Options()
+ .set_initial_backoff(initial_backoff)
+ .set_multiplier(GRPC_SUBCHANNEL_RECONNECT_BACKOFF_MULTIPLIER)
+ .set_jitter(GRPC_SUBCHANNEL_RECONNECT_JITTER)
+ .set_max_backoff(max_backoff);
+}
+
+} // namespace
+
Subchannel::Subchannel(SubchannelKey key,
OrphanablePtr<SubchannelConnector> connector,
- const grpc_channel_args* args)
+ const ChannelArgs& args)
: DualRefCounted<Subchannel>(
GRPC_TRACE_FLAG_ENABLED(grpc_trace_subchannel_refcount) ? "Subchannel"
: nullptr),
key_(std::move(key)),
+ args_(args),
pollset_set_(grpc_pollset_set_create()),
connector_(std::move(connector)),
- backoff_(ParseArgsForBackoffValues(args, &min_connect_timeout_)) {
+ backoff_(ParseArgsForBackoffValues(args_, &min_connect_timeout_)) {
+ // A grpc_init is added here to ensure that grpc_shutdown does not happen
+ // until the subchannel is destroyed. Subchannels can persist longer than
+ // channels because they maybe reused/shared among multiple channels. As a
+ // result the subchannel destruction happens asynchronously to channel
+ // destruction. If the last channel destruction triggers a grpc_shutdown
+ // before the last subchannel destruction, then there maybe race conditions
+ // triggering segmentation faults. To prevent this issue, we call a grpc_init
+ // here and a grpc_shutdown in the subchannel destructor.
+ InitInternally();
GRPC_STATS_INC_CLIENT_SUBCHANNELS_CREATED();
GRPC_CLOSURE_INIT(&on_connecting_finished_, OnConnectingFinished, this,
grpc_schedule_on_exec_ctx);
// Check proxy mapper to determine address to connect to and channel
// args to use.
- address_for_connect_ = key_.address();
- grpc_resolved_address* new_address = nullptr;
- grpc_channel_args* new_args = nullptr;
- if (ProxyMapperRegistry::MapAddress(address_for_connect_, args, &new_address,
- &new_args)) {
- GPR_ASSERT(new_address != nullptr);
- address_for_connect_ = *new_address;
- gpr_free(new_address);
- }
- if (new_args != nullptr) {
- args_ = new_args;
- } else {
- args_ = grpc_channel_args_copy(args);
- }
+ address_for_connect_ = CoreConfiguration::Get()
+ .proxy_mapper_registry()
+ .MapAddress(key_.address(), &args_)
+ .value_or(key_.address());
// Initialize channelz.
- const bool channelz_enabled = grpc_channel_args_find_bool(
- args_, GRPC_ARG_ENABLE_CHANNELZ, GRPC_ENABLE_CHANNELZ_DEFAULT);
+ const bool channelz_enabled = args_.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
+ .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT);
if (channelz_enabled) {
- const size_t channel_tracer_max_memory =
- static_cast<size_t>(grpc_channel_args_find_integer(
- args_, GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE,
- {GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT, 0,
- INT_MAX}));
+ const size_t channel_tracer_max_memory = Clamp(
+ args_.GetInt(GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE)
+ .value_or(GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT),
+ 0, INT_MAX);
channelz_node_ = MakeRefCounted<channelz::SubchannelNode>(
- grpc_sockaddr_to_uri(&key_.address()), channel_tracer_max_memory);
+ grpc_sockaddr_to_uri(&key_.address())
+ .value_or("<unknown address type>"),
+ channel_tracer_max_memory);
channelz_node_->AddTraceEvent(
channelz::ChannelTrace::Severity::Info,
grpc_slice_from_static_string("subchannel created"));
@@ -689,17 +671,17 @@ Subchannel::~Subchannel() {
grpc_slice_from_static_string("Subchannel destroyed"));
channelz_node_->UpdateConnectivityState(GRPC_CHANNEL_SHUTDOWN);
}
- grpc_channel_args_destroy(args_);
connector_.reset();
grpc_pollset_set_destroy(pollset_set_);
+ // grpc_shutdown is called here because grpc_init is called in the ctor.
+ ShutdownInternally();
}
RefCountedPtr<Subchannel> Subchannel::Create(
OrphanablePtr<SubchannelConnector> connector,
- const grpc_resolved_address& address, const grpc_channel_args* args) {
+ const grpc_resolved_address& address, const ChannelArgs& args) {
SubchannelKey key(address, args);
- SubchannelPoolInterface* subchannel_pool =
- SubchannelPoolInterface::GetSubchannelPoolFromChannelArgs(args);
+ auto* subchannel_pool = args.GetObject<SubchannelPoolInterface>();
GPR_ASSERT(subchannel_pool != nullptr);
RefCountedPtr<Subchannel> c = subchannel_pool->FindSubchannel(key);
if (c != nullptr) {
@@ -725,13 +707,7 @@ void Subchannel::ThrottleKeepaliveTime(int new_keepalive_time) {
gpr_log(GPR_INFO, "subchannel %p %s: throttling keepalive time to %d",
this, key_.ToString().c_str(), new_keepalive_time);
}
- const grpc_arg arg_to_add = grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_KEEPALIVE_TIME_MS), new_keepalive_time);
- const char* arg_to_remove = GRPC_ARG_KEEPALIVE_TIME_MS;
- grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
- args_, &arg_to_remove, 1, &arg_to_add, 1);
- grpc_channel_args_destroy(args_);
- args_ = new_args;
+ args_ = args_.Set(GRPC_ARG_KEEPALIVE_TIME_MS, new_keepalive_time);
}
}
@@ -739,18 +715,7 @@ channelz::SubchannelNode* Subchannel::channelz_node() {
return channelz_node_.get();
}
-grpc_connectivity_state Subchannel::CheckConnectivityState(
- const y_absl::optional<TString>& health_check_service_name) {
- MutexLock lock(&mu_);
- if (health_check_service_name.has_value()) {
- return health_watcher_map_.CheckConnectivityStateLocked(
- this, *health_check_service_name);
- }
- return state_;
-}
-
void Subchannel::WatchConnectivityState(
- grpc_connectivity_state initial_state,
const y_absl::optional<TString>& health_check_service_name,
RefCountedPtr<ConnectivityStateWatcherInterface> watcher) {
MutexLock lock(&mu_);
@@ -759,14 +724,12 @@ void Subchannel::WatchConnectivityState(
grpc_pollset_set_add_pollset_set(pollset_set_, interested_parties);
}
if (!health_check_service_name.has_value()) {
- if (state_ != initial_state) {
- new AsyncWatcherNotifierLocked(watcher, state_, status_);
- }
+ new AsyncWatcherNotifierLocked(watcher, state_, status_);
watcher_list_.AddWatcherLocked(std::move(watcher));
} else {
health_watcher_map_.AddWatcherLocked(
- WeakRef(DEBUG_LOCATION, "health_watcher"), initial_state,
- *health_check_service_name, std::move(watcher));
+ WeakRef(DEBUG_LOCATION, "health_watcher"), *health_check_service_name,
+ std::move(watcher));
}
}
@@ -786,20 +749,25 @@ void Subchannel::CancelConnectivityStateWatch(
}
}
-void Subchannel::AttemptToConnect() {
+void Subchannel::RequestConnection() {
MutexLock lock(&mu_);
- MaybeStartConnectingLocked();
+ if (state_ == GRPC_CHANNEL_IDLE) {
+ StartConnectingLocked();
+ }
}
void Subchannel::ResetBackoff() {
+ // Hold a ref to ensure cancellation and subsequent deletion of the closure
+ // does not eliminate the last ref and destroy the Subchannel before the
+ // method returns.
+ auto self = WeakRef(DEBUG_LOCATION, "ResetBackoff");
MutexLock lock(&mu_);
backoff_.Reset();
- if (have_retry_alarm_) {
- retry_immediately_ = true;
- grpc_timer_cancel(&retry_alarm_);
- } else {
- backoff_begun_ = false;
- MaybeStartConnectingLocked();
+ if (state_ == GRPC_CHANNEL_TRANSIENT_FAILURE &&
+ GetDefaultEventEngine()->Cancel(retry_timer_handle_)) {
+ OnRetryTimerLocked();
+ } else if (state_ == GRPC_CHANNEL_CONNECTING) {
+ next_attempt_time_ = Timestamp::Now();
}
}
@@ -811,13 +779,29 @@ void Subchannel::Orphan() {
subchannel_pool_.reset();
}
MutexLock lock(&mu_);
- GPR_ASSERT(!disconnected_);
- disconnected_ = true;
+ GPR_ASSERT(!shutdown_);
+ shutdown_ = true;
connector_.reset();
connected_subchannel_.reset();
health_watcher_map_.ShutdownLocked();
}
+void Subchannel::GetOrAddDataProducer(
+ UniqueTypeName type,
+ std::function<void(DataProducerInterface**)> get_or_add) {
+ MutexLock lock(&mu_);
+ auto it = data_producer_map_.emplace(type, nullptr).first;
+ get_or_add(&it->second);
+}
+
+void Subchannel::RemoveDataProducer(DataProducerInterface* data_producer) {
+ MutexLock lock(&mu_);
+ auto it = data_producer_map_.find(data_producer->type());
+ if (it != data_producer_map_.end() && it->second == data_producer) {
+ data_producer_map_.erase(it);
+ }
+}
+
namespace {
// Returns a string indicating the subchannel's connectivity state change to
@@ -845,7 +829,21 @@ const char* SubchannelConnectivityStateChangeString(
void Subchannel::SetConnectivityStateLocked(grpc_connectivity_state state,
const y_absl::Status& status) {
state_ = state;
- status_ = status;
+ if (status.ok()) {
+ status_ = status;
+ } else {
+ // Augment status message to include IP address.
+ status_ = y_absl::Status(status.code(),
+ y_absl::StrCat(grpc_sockaddr_to_uri(&key_.address())
+ .value_or("<unknown address type>"),
+ ": ", status.message()));
+ status.ForEachPayload(
+ [this](y_absl::string_view key, const y_absl::Cord& value)
+ // Want to use Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_) here,
+ // but that won't work, because we can't pass the lock
+ // annotation through y_absl::Status::ForEachPayload().
+ Y_ABSL_NO_THREAD_SAFETY_ANALYSIS { status_.SetPayload(key, value); });
+ }
if (channelz_node_ != nullptr) {
channelz_node_->UpdateConnectivityState(state);
channelz_node_->AddTraceEvent(
@@ -854,129 +852,99 @@ void Subchannel::SetConnectivityStateLocked(grpc_connectivity_state state,
SubchannelConnectivityStateChangeString(state)));
}
// Notify non-health watchers.
- watcher_list_.NotifyLocked(state, status);
+ watcher_list_.NotifyLocked(state, status_);
// Notify health watchers.
- health_watcher_map_.NotifyLocked(state, status);
+ health_watcher_map_.NotifyLocked(state, status_);
}
-void Subchannel::MaybeStartConnectingLocked() {
- if (disconnected_) {
- // Don't try to connect if we're already disconnected.
- return;
- }
- if (connecting_) {
- // Already connecting: don't restart.
- return;
- }
- if (connected_subchannel_ != nullptr) {
- // Already connected: don't restart.
- return;
- }
- connecting_ = true;
- WeakRef(DEBUG_LOCATION, "connecting")
- .release(); // ref held by pending connect
- if (!backoff_begun_) {
- backoff_begun_ = true;
- ContinueConnectingLocked();
- } else {
- GPR_ASSERT(!have_retry_alarm_);
- have_retry_alarm_ = true;
- const Duration time_til_next =
- next_attempt_deadline_ - ExecCtx::Get()->Now();
- if (time_til_next <= Duration::Zero()) {
- gpr_log(GPR_INFO, "subchannel %p %s: Retry immediately", this,
- key_.ToString().c_str());
- } else {
- gpr_log(GPR_INFO, "subchannel %p %s: Retry in %" PRId64 " milliseconds",
- this, key_.ToString().c_str(), time_til_next.millis());
- }
- GRPC_CLOSURE_INIT(&on_retry_alarm_, OnRetryAlarm, this,
- grpc_schedule_on_exec_ctx);
- grpc_timer_init(&retry_alarm_, next_attempt_deadline_, &on_retry_alarm_);
- }
+void Subchannel::OnRetryTimer() {
+ MutexLock lock(&mu_);
+ OnRetryTimerLocked();
}
-void Subchannel::OnRetryAlarm(void* arg, grpc_error_handle error) {
- WeakRefCountedPtr<Subchannel> c(static_cast<Subchannel*>(arg));
- MutexLock lock(&c->mu_);
- c->have_retry_alarm_ = false;
- if (c->disconnected_) {
- error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Disconnected",
- &error, 1);
- } else if (c->retry_immediately_) {
- c->retry_immediately_ = false;
- error = GRPC_ERROR_NONE;
- } else {
- (void)GRPC_ERROR_REF(error);
- }
- if (error == GRPC_ERROR_NONE) {
- gpr_log(GPR_INFO,
- "subchannel %p %s: failed to connect to channel, retrying", c.get(),
- c->key_.ToString().c_str());
- c->ContinueConnectingLocked();
- // Still connecting, keep ref around. Note that this stolen ref won't
- // be dropped without first acquiring c->mu_.
- c.release();
- }
- GRPC_ERROR_UNREF(error);
+void Subchannel::OnRetryTimerLocked() {
+ if (shutdown_) return;
+ gpr_log(GPR_INFO, "subchannel %p %s: backoff delay elapsed, reporting IDLE",
+ this, key_.ToString().c_str());
+ SetConnectivityStateLocked(GRPC_CHANNEL_IDLE, y_absl::OkStatus());
}
-void Subchannel::ContinueConnectingLocked() {
+void Subchannel::StartConnectingLocked() {
+ // Set next attempt time.
+ const Timestamp min_deadline = min_connect_timeout_ + Timestamp::Now();
+ next_attempt_time_ = backoff_.NextAttemptTime();
+ // Report CONNECTING.
+ SetConnectivityStateLocked(GRPC_CHANNEL_CONNECTING, y_absl::OkStatus());
+ // Start connection attempt.
SubchannelConnector::Args args;
args.address = &address_for_connect_;
args.interested_parties = pollset_set_;
- const Timestamp min_deadline = min_connect_timeout_ + ExecCtx::Get()->Now();
- next_attempt_deadline_ = backoff_.NextAttemptTime();
- args.deadline = std::max(next_attempt_deadline_, min_deadline);
+ args.deadline = std::max(next_attempt_time_, min_deadline);
args.channel_args = args_;
- SetConnectivityStateLocked(GRPC_CHANNEL_CONNECTING, y_absl::Status());
+ WeakRef(DEBUG_LOCATION, "Connect").release(); // Ref held by callback.
connector_->Connect(args, &connecting_result_, &on_connecting_finished_);
}
void Subchannel::OnConnectingFinished(void* arg, grpc_error_handle error) {
WeakRefCountedPtr<Subchannel> c(static_cast<Subchannel*>(arg));
- const grpc_channel_args* delete_channel_args =
- c->connecting_result_.channel_args;
{
MutexLock lock(&c->mu_);
- c->connecting_ = false;
- if (c->connecting_result_.transport != nullptr &&
- c->PublishTransportLocked()) {
- // Do nothing, transport was published.
- } else if (!c->disconnected_) {
- gpr_log(GPR_INFO, "subchannel %p %s: connect failed: %s", c.get(),
- c->key_.ToString().c_str(), grpc_error_std_string(error).c_str());
- c->SetConnectivityStateLocked(GRPC_CHANNEL_TRANSIENT_FAILURE,
- grpc_error_to_absl_status(error));
- }
+ c->OnConnectingFinishedLocked(GRPC_ERROR_REF(error));
}
- grpc_channel_args_destroy(delete_channel_args);
- c.reset(DEBUG_LOCATION, "connecting");
+ c.reset(DEBUG_LOCATION, "Connect");
}
-namespace {
-
-void ConnectionDestroy(void* arg, grpc_error_handle /*error*/) {
- grpc_channel_stack* stk = static_cast<grpc_channel_stack*>(arg);
- grpc_channel_stack_destroy(stk);
- gpr_free(stk);
+void Subchannel::OnConnectingFinishedLocked(grpc_error_handle error) {
+ if (shutdown_) {
+ (void)GRPC_ERROR_UNREF(error);
+ return;
+ }
+ // If we didn't get a transport or we fail to publish it, report
+ // TRANSIENT_FAILURE and start the retry timer.
+ // Note that if the connection attempt took longer than the backoff
+ // time, then the timer will fire immediately, and we will quickly
+ // transition back to IDLE.
+ if (connecting_result_.transport == nullptr || !PublishTransportLocked()) {
+ const Duration time_until_next_attempt =
+ next_attempt_time_ - Timestamp::Now();
+ gpr_log(GPR_INFO,
+ "subchannel %p %s: connect failed (%s), backing off for %" PRId64
+ " ms",
+ this, key_.ToString().c_str(), grpc_error_std_string(error).c_str(),
+ time_until_next_attempt.millis());
+ SetConnectivityStateLocked(GRPC_CHANNEL_TRANSIENT_FAILURE,
+ grpc_error_to_absl_status(error));
+ retry_timer_handle_ = GetDefaultEventEngine()->RunAfter(
+ time_until_next_attempt,
+ [self = WeakRef(DEBUG_LOCATION, "RetryTimer")]() mutable {
+ {
+ ApplicationCallbackExecCtx callback_exec_ctx;
+ ExecCtx exec_ctx;
+ self->OnRetryTimer();
+ // Subchannel deletion might require an active ExecCtx. So if
+ // self.reset() is not called here, the WeakRefCountedPtr destructor
+ // may run after the ExecCtx declared in the callback is destroyed.
+ // Since subchannel may get destroyed when the WeakRefCountedPtr
+ // destructor runs, it may not have an active ExecCtx - thus leading
+ // to crashes.
+ self.reset();
+ }
+ });
+ }
+ (void)GRPC_ERROR_UNREF(error);
}
-} // namespace
-
bool Subchannel::PublishTransportLocked() {
// Construct channel stack.
- ChannelStackBuilder builder("subchannel");
+ ChannelStackBuilderImpl builder("subchannel", GRPC_CLIENT_SUBCHANNEL);
builder.SetChannelArgs(connecting_result_.channel_args)
.SetTransport(connecting_result_.transport);
- if (!CoreConfiguration::Get().channel_init().CreateStack(
- &builder, GRPC_CLIENT_SUBCHANNEL)) {
+ if (!CoreConfiguration::Get().channel_init().CreateStack(&builder)) {
return false;
}
- grpc_channel_stack* stk;
- grpc_error_handle error = builder.Build(0, 1, ConnectionDestroy, nullptr,
- reinterpret_cast<void**>(&stk));
- if (error != GRPC_ERROR_NONE) {
+ y_absl::StatusOr<RefCountedPtr<grpc_channel_stack>> stk = builder.Build();
+ if (!stk.ok()) {
+ auto error = absl_status_to_grpc_error(stk.status());
grpc_transport_destroy(connecting_result_.transport);
gpr_log(GPR_ERROR,
"subchannel %p %s: error initializing subchannel stack: %s", this,
@@ -987,14 +955,10 @@ bool Subchannel::PublishTransportLocked() {
RefCountedPtr<channelz::SocketNode> socket =
std::move(connecting_result_.socket_node);
connecting_result_.Reset();
- if (disconnected_) {
- grpc_channel_stack_destroy(stk);
- gpr_free(stk);
- return false;
- }
+ if (shutdown_) return false;
// Publish.
connected_subchannel_.reset(
- new ConnectedSubchannel(stk, args_, channelz_node_));
+ new ConnectedSubchannel(stk->release(), args_, channelz_node_));
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_subchannel)) {
gpr_log(GPR_INFO, "subchannel %p %s: new connected subchannel at %p", this,
key_.ToString().c_str(), connected_subchannel_.get());
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel.h
index 54f63531c1..7098423224 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel.h
@@ -19,22 +19,48 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
#include <deque>
+#include <functional>
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/status/status.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/event_engine/event_engine.h>
+#include <grpc/impl/codegen/connectivity_state.h>
#include "src/core/ext/filters/client_channel/client_channel_channelz.h"
#include "src/core/ext/filters/client_channel/connector.h"
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
#include "src/core/lib/backoff/backoff.h"
-#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/context.h"
#include "src/core/lib/gpr/time_precise.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/dual_ref_counted.h"
+#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/iomgr/polling_entity.h"
-#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/iomgr/resolved_address.h"
#include "src/core/lib/resource_quota/arena.h"
+#include "src/core/lib/slice/slice.h"
#include "src/core/lib/transport/connectivity_state.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
namespace grpc_core {
@@ -43,7 +69,7 @@ class SubchannelCall;
class ConnectedSubchannel : public RefCounted<ConnectedSubchannel> {
public:
ConnectedSubchannel(
- grpc_channel_stack* channel_stack, const grpc_channel_args* args,
+ grpc_channel_stack* channel_stack, const ChannelArgs& args,
RefCountedPtr<channelz::SubchannelNode> channelz_subchannel);
~ConnectedSubchannel() override;
@@ -53,7 +79,7 @@ class ConnectedSubchannel : public RefCounted<ConnectedSubchannel> {
void Ping(grpc_closure* on_initiate, grpc_closure* on_ack);
grpc_channel_stack* channel_stack() const { return channel_stack_; }
- const grpc_channel_args* args() const { return args_; }
+ const ChannelArgs& args() const { return args_; }
channelz::SubchannelNode* channelz_subchannel() const {
return channelz_subchannel_.get();
}
@@ -62,7 +88,7 @@ class ConnectedSubchannel : public RefCounted<ConnectedSubchannel> {
private:
grpc_channel_stack* channel_stack_;
- grpc_channel_args* args_;
+ ChannelArgs args_;
// ref counted pointer to the channelz node in this connected subchannel's
// owning subchannel.
RefCountedPtr<channelz::SubchannelNode> channelz_subchannel_;
@@ -183,14 +209,28 @@ class Subchannel : public DualRefCounted<Subchannel> {
Y_ABSL_GUARDED_BY(&mu_);
};
+ // A base class for producers of subchannel-specific data.
+ // Implementations will typically add their own methods as needed.
+ class DataProducerInterface : public DualRefCounted<DataProducerInterface> {
+ public:
+ // A unique identifier for this implementation.
+ // Only one producer may be registered under a given type name on a
+ // given subchannel at any given time.
+ // Note that we use the pointer address instead of the string
+ // contents for uniqueness; all instances for a given implementation
+ // are expected to return the same string *instance*, not just the
+ // same string contents.
+ virtual UniqueTypeName type() const = 0;
+ };
+
// Creates a subchannel.
static RefCountedPtr<Subchannel> Create(
OrphanablePtr<SubchannelConnector> connector,
- const grpc_resolved_address& address, const grpc_channel_args* args);
+ const grpc_resolved_address& address, const ChannelArgs& args);
// The ctor and dtor are not intended to use directly.
Subchannel(SubchannelKey key, OrphanablePtr<SubchannelConnector> connector,
- const grpc_channel_args* args);
+ const ChannelArgs& args);
~Subchannel() override;
// Throttles keepalive time to \a new_keepalive_time iff \a new_keepalive_time
@@ -198,28 +238,19 @@ class Subchannel : public DualRefCounted<Subchannel> {
// will have an affect when the subchannel creates a new ConnectedSubchannel.
void ThrottleKeepaliveTime(int new_keepalive_time) Y_ABSL_LOCKS_EXCLUDED(mu_);
- const grpc_channel_args* channel_args() const { return args_; }
+ grpc_pollset_set* pollset_set() const { return pollset_set_; }
- channelz::SubchannelNode* channelz_node();
+ const ChannelArgs& channel_args() const { return args_; }
- // Returns the current connectivity state of the subchannel.
- // If health_check_service_name is non-null, the returned connectivity
- // state will be based on the state reported by the backend for that
- // service name.
- grpc_connectivity_state CheckConnectivityState(
- const y_absl::optional<TString>& health_check_service_name)
- Y_ABSL_LOCKS_EXCLUDED(mu_);
+ channelz::SubchannelNode* channelz_node();
// Starts watching the subchannel's connectivity state.
- // The first callback to the watcher will be delivered when the
- // subchannel's connectivity state becomes a value other than
- // initial_state, which may happen immediately.
+ // The first callback to the watcher will be delivered ~immediately.
// Subsequent callbacks will be delivered as the subchannel's state
// changes.
// The watcher will be destroyed either when the subchannel is
// destroyed or when CancelConnectivityStateWatch() is called.
void WatchConnectivityState(
- grpc_connectivity_state initial_state,
const y_absl::optional<TString>& health_check_service_name,
RefCountedPtr<ConnectivityStateWatcherInterface> watcher)
Y_ABSL_LOCKS_EXCLUDED(mu_);
@@ -237,7 +268,7 @@ class Subchannel : public DualRefCounted<Subchannel> {
}
// Attempt to connect to the backend. Has no effect if already connected.
- void AttemptToConnect() Y_ABSL_LOCKS_EXCLUDED(mu_);
+ void RequestConnection() Y_ABSL_LOCKS_EXCLUDED(mu_);
// Resets the connection backoff of the subchannel.
void ResetBackoff() Y_ABSL_LOCKS_EXCLUDED(mu_);
@@ -245,6 +276,25 @@ class Subchannel : public DualRefCounted<Subchannel> {
// Tears down any existing connection, and arranges for destruction
void Orphan() override Y_ABSL_LOCKS_EXCLUDED(mu_);
+ // Access to data producer map.
+ // We do not hold refs to the data producer; the implementation is
+ // expected to register itself upon construction and remove itself
+ // upon destruction.
+ //
+ // Looks up the current data producer for type and invokes get_or_add()
+ // with a pointer to that producer in the map. The get_or_add() function
+ // can modify the pointed-to value to update the map. This provides a
+ // way to either re-use an existing producer or register a new one in
+ // a non-racy way.
+ void GetOrAddDataProducer(
+ UniqueTypeName type,
+ std::function<void(DataProducerInterface**)> get_or_add)
+ Y_ABSL_LOCKS_EXCLUDED(mu_);
+ // Removes the data producer from the map, if the current producer for
+ // this type is the specified producer.
+ void RemoveDataProducer(DataProducerInterface* data_producer)
+ Y_ABSL_LOCKS_EXCLUDED(mu_);
+
private:
// A linked list of ConnectivityStateWatcherInterfaces that are monitoring
// the subchannel's state.
@@ -285,7 +335,6 @@ class Subchannel : public DualRefCounted<Subchannel> {
public:
void AddWatcherLocked(
WeakRefCountedPtr<Subchannel> subchannel,
- grpc_connectivity_state initial_state,
const TString& health_check_service_name,
RefCountedPtr<ConnectivityStateWatcherInterface> watcher);
void RemoveWatcherLocked(const TString& health_check_service_name,
@@ -308,7 +357,6 @@ class Subchannel : public DualRefCounted<Subchannel> {
};
class ConnectedSubchannelStateWatcher;
-
class AsyncWatcherNotifierLocked;
// Sets the subchannel's connectivity state to \a state.
@@ -317,12 +365,13 @@ class Subchannel : public DualRefCounted<Subchannel> {
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
// Methods for connection.
- void MaybeStartConnectingLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
- static void OnRetryAlarm(void* arg, grpc_error_handle error)
- Y_ABSL_LOCKS_EXCLUDED(mu_);
- void ContinueConnectingLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
+ void OnRetryTimer() Y_ABSL_LOCKS_EXCLUDED(mu_);
+ void OnRetryTimerLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
+ void StartConnectingLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
static void OnConnectingFinished(void* arg, grpc_error_handle error)
Y_ABSL_LOCKS_EXCLUDED(mu_);
+ void OnConnectingFinishedLocked(grpc_error_handle error)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
bool PublishTransportLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
// The subchannel pool this subchannel is in.
@@ -333,11 +382,13 @@ class Subchannel : public DualRefCounted<Subchannel> {
// key_ if overridden by proxy mapper.
grpc_resolved_address address_for_connect_;
// Channel args.
- grpc_channel_args* args_;
+ ChannelArgs args_;
// pollset_set tracking who's interested in a connection being setup.
grpc_pollset_set* pollset_set_;
// Channelz tracking.
RefCountedPtr<channelz::SubchannelNode> channelz_node_;
+ // Minimum connection timeout.
+ Duration min_connect_timeout_;
// Connection state.
OrphanablePtr<SubchannelConnector> connector_;
@@ -347,12 +398,15 @@ class Subchannel : public DualRefCounted<Subchannel> {
// Protects the other members.
Mutex mu_;
- // Active connection, or null.
- RefCountedPtr<ConnectedSubchannel> connected_subchannel_ Y_ABSL_GUARDED_BY(mu_);
- bool connecting_ Y_ABSL_GUARDED_BY(mu_) = false;
- bool disconnected_ Y_ABSL_GUARDED_BY(mu_) = false;
+ bool shutdown_ Y_ABSL_GUARDED_BY(mu_) = false;
// Connectivity state tracking.
+ // Note that the connectivity state implies the state of the
+ // Subchannel object:
+ // - IDLE: no retry timer pending, can start a connection attempt at any time
+ // - CONNECTING: connection attempt in progress
+ // - READY: connection attempt succeeded, connected_subchannel_ created
+ // - TRANSIENT_FAILURE: connection attempt failed, retry timer pending
grpc_connectivity_state state_ Y_ABSL_GUARDED_BY(mu_) = GRPC_CHANNEL_IDLE;
y_absl::Status status_ Y_ABSL_GUARDED_BY(mu_);
// The list of watchers without a health check service name.
@@ -360,21 +414,21 @@ class Subchannel : public DualRefCounted<Subchannel> {
// The map of watchers with health check service names.
HealthWatcherMap health_watcher_map_ Y_ABSL_GUARDED_BY(mu_);
- // Minimum connect timeout - must be located before backoff_.
- Duration min_connect_timeout_ Y_ABSL_GUARDED_BY(mu_);
+ // Active connection, or null.
+ RefCountedPtr<ConnectedSubchannel> connected_subchannel_ Y_ABSL_GUARDED_BY(mu_);
+
// Backoff state.
BackOff backoff_ Y_ABSL_GUARDED_BY(mu_);
- Timestamp next_attempt_deadline_ Y_ABSL_GUARDED_BY(mu_);
- bool backoff_begun_ Y_ABSL_GUARDED_BY(mu_) = false;
-
- // Retry alarm.
- grpc_timer retry_alarm_ Y_ABSL_GUARDED_BY(mu_);
- grpc_closure on_retry_alarm_ Y_ABSL_GUARDED_BY(mu_);
- bool have_retry_alarm_ Y_ABSL_GUARDED_BY(mu_) = false;
- // reset_backoff() was called while alarm was pending.
- bool retry_immediately_ Y_ABSL_GUARDED_BY(mu_) = false;
+ Timestamp next_attempt_time_ Y_ABSL_GUARDED_BY(mu_);
+ grpc_event_engine::experimental::EventEngine::TaskHandle retry_timer_handle_
+ Y_ABSL_GUARDED_BY(mu_);
+
// Keepalive time period (-1 for unset)
int keepalive_time_ Y_ABSL_GUARDED_BY(mu_) = -1;
+
+ // Data producer map.
+ std::map<UniqueTypeName, DataProducerInterface*> data_producer_map_
+ Y_ABSL_GUARDED_BY(mu_);
};
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_interface_internal.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_interface_internal.h
new file mode 100644
index 0000000000..3cea2221c4
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_interface_internal.h
@@ -0,0 +1,38 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INTERFACE_INTERNAL_H
+#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INTERFACE_INTERNAL_H
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/filters/client_channel/subchannel.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
+
+namespace grpc_core {
+
+// Internal interface for watching data of a particular type for this
+// subchannel.
+class InternalSubchannelDataWatcherInterface
+ : public SubchannelInterface::DataWatcherInterface {
+ public:
+ // Tells the watcher which subchannel to register itself with.
+ virtual void SetSubchannel(Subchannel* subchannel) = 0;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INTERFACE_INTERNAL_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_pool_interface.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_pool_interface.cc
index 409d6c3315..b7fac13056 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_pool_interface.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_pool_interface.cc
@@ -20,8 +20,14 @@
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
+#include <string.h>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/str_cat.h"
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
-#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/channel/channel_args.h"
// The subchannel pool to reuse subchannels.
#define GRPC_ARG_SUBCHANNEL_POOL "grpc.internal.subchannel_pool"
@@ -33,39 +39,8 @@ namespace grpc_core {
TraceFlag grpc_subchannel_pool_trace(false, "subchannel_pool");
SubchannelKey::SubchannelKey(const grpc_resolved_address& address,
- const grpc_channel_args* args) {
- Init(address, args, grpc_channel_args_normalize);
-}
-
-SubchannelKey::~SubchannelKey() {
- grpc_channel_args_destroy(const_cast<grpc_channel_args*>(args_));
-}
-
-SubchannelKey::SubchannelKey(const SubchannelKey& other) {
- Init(other.address_, other.args_, grpc_channel_args_copy);
-}
-
-SubchannelKey& SubchannelKey::operator=(const SubchannelKey& other) {
- if (&other == this) {
- return *this;
- }
- grpc_channel_args_destroy(const_cast<grpc_channel_args*>(args_));
- Init(other.address_, other.args_, grpc_channel_args_copy);
- return *this;
-}
-
-SubchannelKey::SubchannelKey(SubchannelKey&& other) noexcept {
- address_ = other.address_;
- args_ = other.args_;
- other.args_ = nullptr;
-}
-
-SubchannelKey& SubchannelKey::operator=(SubchannelKey&& other) noexcept {
- address_ = other.address_;
- args_ = other.args_;
- other.args_ = nullptr;
- return *this;
-}
+ const ChannelArgs& args)
+ : address_(address), args_(args) {}
bool SubchannelKey::operator<(const SubchannelKey& other) const {
if (address_.len < other.address_.len) return true;
@@ -73,54 +48,19 @@ bool SubchannelKey::operator<(const SubchannelKey& other) const {
int r = memcmp(address_.addr, other.address_.addr, address_.len);
if (r < 0) return true;
if (r > 0) return false;
- return grpc_channel_args_compare(args_, other.args_) < 0;
-}
-
-void SubchannelKey::Init(
- const grpc_resolved_address& address, const grpc_channel_args* args,
- grpc_channel_args* (*copy_channel_args)(const grpc_channel_args* args)) {
- address_ = address;
- args_ = copy_channel_args(args);
+ return args_ < other.args();
}
TString SubchannelKey::ToString() const {
- return y_absl::StrCat("{address=", grpc_sockaddr_to_uri(&address_),
- ", args=", grpc_channel_args_string(args_), "}");
-}
-
-namespace {
-
-void* arg_copy(void* p) {
- auto* subchannel_pool = static_cast<SubchannelPoolInterface*>(p);
- subchannel_pool->Ref().release();
- return p;
-}
-
-void arg_destroy(void* p) {
- auto* subchannel_pool = static_cast<SubchannelPoolInterface*>(p);
- subchannel_pool->Unref();
-}
-
-int arg_cmp(void* a, void* b) { return QsortCompare(a, b); }
-
-const grpc_arg_pointer_vtable subchannel_pool_arg_vtable = {
- arg_copy, arg_destroy, arg_cmp};
-
-} // namespace
-
-grpc_arg SubchannelPoolInterface::CreateChannelArg(
- SubchannelPoolInterface* subchannel_pool) {
- return grpc_channel_arg_pointer_create(
- const_cast<char*>(GRPC_ARG_SUBCHANNEL_POOL), subchannel_pool,
- &subchannel_pool_arg_vtable);
+ auto addr_uri = grpc_sockaddr_to_uri(&address_);
+ return y_absl::StrCat(
+ "{address=",
+ addr_uri.ok() ? addr_uri.value() : addr_uri.status().ToString(),
+ ", args=", args_.ToString(), "}");
}
-SubchannelPoolInterface*
-SubchannelPoolInterface::GetSubchannelPoolFromChannelArgs(
- const grpc_channel_args* args) {
- const grpc_arg* arg = grpc_channel_args_find(args, GRPC_ARG_SUBCHANNEL_POOL);
- if (arg == nullptr || arg->type != GRPC_ARG_POINTER) return nullptr;
- return static_cast<SubchannelPoolInterface*>(arg->value.pointer.p);
+y_absl::string_view SubchannelPoolInterface::ChannelArgName() {
+ return GRPC_ARG_SUBCHANNEL_POOL;
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_pool_interface.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_pool_interface.h
index e5e341716c..947a2c95f8 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_pool_interface.h
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_pool_interface.h
@@ -21,11 +21,17 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/avl/avl.h"
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/strings/string_view.h"
+
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/ref_counted.h"
-#include "src/core/lib/iomgr/resolve_address.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/resolved_address.h"
namespace grpc_core {
@@ -36,34 +42,24 @@ extern TraceFlag grpc_subchannel_pool_trace;
// A key that can uniquely identify a subchannel.
class SubchannelKey {
public:
- SubchannelKey(const grpc_resolved_address& address,
- const grpc_channel_args* args);
- ~SubchannelKey();
+ SubchannelKey(const grpc_resolved_address& address, const ChannelArgs& args);
- // Copyable.
- SubchannelKey(const SubchannelKey& other);
- SubchannelKey& operator=(const SubchannelKey& other);
- // Movable
- SubchannelKey(SubchannelKey&&) noexcept;
- SubchannelKey& operator=(SubchannelKey&&) noexcept;
+ SubchannelKey(const SubchannelKey& other) = default;
+ SubchannelKey& operator=(const SubchannelKey& other) = default;
+ SubchannelKey(SubchannelKey&& other) noexcept = default;
+ SubchannelKey& operator=(SubchannelKey&& other) noexcept = default;
bool operator<(const SubchannelKey& other) const;
const grpc_resolved_address& address() const { return address_; }
- const grpc_channel_args* args() const { return args_; }
+ const ChannelArgs& args() const { return args_; }
// Human-readable string suitable for logging.
TString ToString() const;
private:
- // Initializes the subchannel key with the given \a args and the function to
- // copy channel args.
- void Init(
- const grpc_resolved_address& address, const grpc_channel_args* args,
- grpc_channel_args* (*copy_channel_args)(const grpc_channel_args* args));
-
grpc_resolved_address address_;
- const grpc_channel_args* args_;
+ ChannelArgs args_;
};
// Interface for subchannel pool.
@@ -78,6 +74,12 @@ class SubchannelPoolInterface : public RefCounted<SubchannelPoolInterface> {
: nullptr) {}
~SubchannelPoolInterface() override {}
+ static y_absl::string_view ChannelArgName();
+ static int ChannelArgsCompare(const SubchannelPoolInterface* a,
+ const SubchannelPoolInterface* b) {
+ return QsortCompare(a, b);
+ }
+
// Registers a subchannel against a key. Returns the subchannel registered
// with \a key, which may be different from \a constructed because we reuse
// (instead of update) any existing subchannel already registered with \a key.
@@ -92,13 +94,6 @@ class SubchannelPoolInterface : public RefCounted<SubchannelPoolInterface> {
// if no such channel exists. Thread-safe.
virtual RefCountedPtr<Subchannel> FindSubchannel(
const SubchannelKey& key) = 0;
-
- // Creates a channel arg from \a subchannel pool.
- static grpc_arg CreateChannelArg(SubchannelPoolInterface* subchannel_pool);
-
- // Gets the subchannel pool from the channel args.
- static SubchannelPoolInterface* GetSubchannelPoolFromChannelArgs(
- const grpc_channel_args* args);
};
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_stream_client.cc b/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_stream_client.cc
new file mode 100644
index 0000000000..990462aa7c
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_stream_client.cc
@@ -0,0 +1,472 @@
+//
+// Copyright 2018 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/filters/client_channel/subchannel_stream_client.h"
+
+#include <inttypes.h>
+#include <stdio.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include <grpc/status.h>
+#include <grpc/support/log.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gpr/time_precise.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/resource_quota/resource_quota.h"
+#include "src/core/lib/transport/error_utils.h"
+
+#define SUBCHANNEL_STREAM_INITIAL_CONNECT_BACKOFF_SECONDS 1
+#define SUBCHANNEL_STREAM_RECONNECT_BACKOFF_MULTIPLIER 1.6
+#define SUBCHANNEL_STREAM_RECONNECT_MAX_BACKOFF_SECONDS 120
+#define SUBCHANNEL_STREAM_RECONNECT_JITTER 0.2
+
+namespace grpc_core {
+
+//
+// SubchannelStreamClient
+//
+
+SubchannelStreamClient::SubchannelStreamClient(
+ RefCountedPtr<ConnectedSubchannel> connected_subchannel,
+ grpc_pollset_set* interested_parties,
+ std::unique_ptr<CallEventHandler> event_handler, const char* tracer)
+ : InternallyRefCounted<SubchannelStreamClient>(tracer),
+ connected_subchannel_(std::move(connected_subchannel)),
+ interested_parties_(interested_parties),
+ tracer_(tracer),
+ call_allocator_(
+ connected_subchannel_->args()
+ .GetObject<ResourceQuota>()
+ ->memory_quota()
+ ->CreateMemoryAllocator(
+ (tracer != nullptr) ? tracer : "SubchannelStreamClient")),
+ event_handler_(std::move(event_handler)),
+ retry_backoff_(
+ BackOff::Options()
+ .set_initial_backoff(Duration::Seconds(
+ SUBCHANNEL_STREAM_INITIAL_CONNECT_BACKOFF_SECONDS))
+ .set_multiplier(SUBCHANNEL_STREAM_RECONNECT_BACKOFF_MULTIPLIER)
+ .set_jitter(SUBCHANNEL_STREAM_RECONNECT_JITTER)
+ .set_max_backoff(Duration::Seconds(
+ SUBCHANNEL_STREAM_RECONNECT_MAX_BACKOFF_SECONDS))) {
+ if (GPR_UNLIKELY(tracer_ != nullptr)) {
+ gpr_log(GPR_INFO, "%s %p: created SubchannelStreamClient", tracer_, this);
+ }
+ GRPC_CLOSURE_INIT(&retry_timer_callback_, OnRetryTimer, this,
+ grpc_schedule_on_exec_ctx);
+ StartCall();
+}
+
+SubchannelStreamClient::~SubchannelStreamClient() {
+ if (GPR_UNLIKELY(tracer_ != nullptr)) {
+ gpr_log(GPR_INFO, "%s %p: destroying SubchannelStreamClient", tracer_,
+ this);
+ }
+}
+
+void SubchannelStreamClient::Orphan() {
+ if (GPR_UNLIKELY(tracer_ != nullptr)) {
+ gpr_log(GPR_INFO, "%s %p: SubchannelStreamClient shutting down", tracer_,
+ this);
+ }
+ {
+ MutexLock lock(&mu_);
+ event_handler_.reset();
+ call_state_.reset();
+ if (retry_timer_callback_pending_) {
+ grpc_timer_cancel(&retry_timer_);
+ }
+ }
+ Unref(DEBUG_LOCATION, "orphan");
+}
+
+void SubchannelStreamClient::StartCall() {
+ MutexLock lock(&mu_);
+ StartCallLocked();
+}
+
+void SubchannelStreamClient::StartCallLocked() {
+ if (event_handler_ == nullptr) return;
+ GPR_ASSERT(call_state_ == nullptr);
+ if (event_handler_ != nullptr) {
+ event_handler_->OnCallStartLocked(this);
+ }
+ call_state_ = MakeOrphanable<CallState>(Ref(), interested_parties_);
+ if (GPR_UNLIKELY(tracer_ != nullptr)) {
+ gpr_log(GPR_INFO, "%s %p: SubchannelStreamClient created CallState %p",
+ tracer_, this, call_state_.get());
+ }
+ call_state_->StartCallLocked();
+}
+
+void SubchannelStreamClient::StartRetryTimerLocked() {
+ if (event_handler_ != nullptr) {
+ event_handler_->OnRetryTimerStartLocked(this);
+ }
+ Timestamp next_try = retry_backoff_.NextAttemptTime();
+ if (GPR_UNLIKELY(tracer_ != nullptr)) {
+ gpr_log(GPR_INFO, "%s %p: SubchannelStreamClient health check call lost...",
+ tracer_, this);
+ Duration timeout = next_try - Timestamp::Now();
+ if (timeout > Duration::Zero()) {
+ gpr_log(GPR_INFO, "%s %p: ... will retry in %" PRId64 "ms.", tracer_,
+ this, timeout.millis());
+ } else {
+ gpr_log(GPR_INFO, "%s %p: ... retrying immediately.", tracer_, this);
+ }
+ }
+ // Ref for callback, tracked manually.
+ Ref(DEBUG_LOCATION, "health_retry_timer").release();
+ retry_timer_callback_pending_ = true;
+ grpc_timer_init(&retry_timer_, next_try, &retry_timer_callback_);
+}
+
+void SubchannelStreamClient::OnRetryTimer(void* arg, grpc_error_handle error) {
+ auto* self = static_cast<SubchannelStreamClient*>(arg);
+ {
+ MutexLock lock(&self->mu_);
+ self->retry_timer_callback_pending_ = false;
+ if (self->event_handler_ != nullptr && GRPC_ERROR_IS_NONE(error) &&
+ self->call_state_ == nullptr) {
+ if (GPR_UNLIKELY(self->tracer_ != nullptr)) {
+ gpr_log(GPR_INFO,
+ "%s %p: SubchannelStreamClient restarting health check call",
+ self->tracer_, self);
+ }
+ self->StartCallLocked();
+ }
+ }
+ self->Unref(DEBUG_LOCATION, "health_retry_timer");
+}
+
+//
+// SubchannelStreamClient::CallState
+//
+
+SubchannelStreamClient::CallState::CallState(
+ RefCountedPtr<SubchannelStreamClient> health_check_client,
+ grpc_pollset_set* interested_parties)
+ : subchannel_stream_client_(std::move(health_check_client)),
+ pollent_(grpc_polling_entity_create_from_pollset_set(interested_parties)),
+ arena_(Arena::Create(subchannel_stream_client_->connected_subchannel_
+ ->GetInitialCallSizeEstimate(),
+ &subchannel_stream_client_->call_allocator_)),
+ payload_(context_),
+ send_initial_metadata_(arena_.get()),
+ send_trailing_metadata_(arena_.get()),
+ recv_initial_metadata_(arena_.get()),
+ recv_trailing_metadata_(arena_.get()) {}
+
+SubchannelStreamClient::CallState::~CallState() {
+ if (GPR_UNLIKELY(subchannel_stream_client_->tracer_ != nullptr)) {
+ gpr_log(GPR_INFO, "%s %p: SubchannelStreamClient destroying CallState %p",
+ subchannel_stream_client_->tracer_, subchannel_stream_client_.get(),
+ this);
+ }
+ for (size_t i = 0; i < GRPC_CONTEXT_COUNT; ++i) {
+ if (context_[i].destroy != nullptr) {
+ context_[i].destroy(context_[i].value);
+ }
+ }
+ // Unset the call combiner cancellation closure. This has the
+ // effect of scheduling the previously set cancellation closure, if
+ // any, so that it can release any internal references it may be
+ // holding to the call stack.
+ call_combiner_.SetNotifyOnCancel(nullptr);
+}
+
+void SubchannelStreamClient::CallState::Orphan() {
+ call_combiner_.Cancel(GRPC_ERROR_CANCELLED);
+ Cancel();
+}
+
+void SubchannelStreamClient::CallState::StartCallLocked() {
+ SubchannelCall::Args args = {
+ subchannel_stream_client_->connected_subchannel_,
+ &pollent_,
+ Slice::FromStaticString("/grpc.health.v1.Health/Watch"),
+ gpr_get_cycle_counter(), // start_time
+ Timestamp::InfFuture(), // deadline
+ arena_.get(),
+ context_,
+ &call_combiner_,
+ };
+ grpc_error_handle error = GRPC_ERROR_NONE;
+ call_ = SubchannelCall::Create(std::move(args), &error).release();
+ // Register after-destruction callback.
+ GRPC_CLOSURE_INIT(&after_call_stack_destruction_, AfterCallStackDestruction,
+ this, grpc_schedule_on_exec_ctx);
+ call_->SetAfterCallStackDestroy(&after_call_stack_destruction_);
+ // Check if creation failed.
+ if (!GRPC_ERROR_IS_NONE(error) ||
+ subchannel_stream_client_->event_handler_ == nullptr) {
+ gpr_log(GPR_ERROR,
+ "SubchannelStreamClient %p CallState %p: error creating "
+ "stream on subchannel (%s); will retry",
+ subchannel_stream_client_.get(), this,
+ grpc_error_std_string(error).c_str());
+ GRPC_ERROR_UNREF(error);
+ CallEndedLocked(/*retry=*/true);
+ return;
+ }
+ // Initialize payload and batch.
+ payload_.context = context_;
+ batch_.payload = &payload_;
+ // on_complete callback takes ref, handled manually.
+ call_->Ref(DEBUG_LOCATION, "on_complete").release();
+ batch_.on_complete = GRPC_CLOSURE_INIT(&on_complete_, OnComplete, this,
+ grpc_schedule_on_exec_ctx);
+ // Add send_initial_metadata op.
+ send_initial_metadata_.Set(
+ HttpPathMetadata(),
+ subchannel_stream_client_->event_handler_->GetPathLocked());
+ GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
+ payload_.send_initial_metadata.send_initial_metadata =
+ &send_initial_metadata_;
+ payload_.send_initial_metadata.peer_string = nullptr;
+ batch_.send_initial_metadata = true;
+ // Add send_message op.
+ send_message_.Append(Slice(
+ subchannel_stream_client_->event_handler_->EncodeSendMessageLocked()));
+ payload_.send_message.send_message = &send_message_;
+ batch_.send_message = true;
+ // Add send_trailing_metadata op.
+ payload_.send_trailing_metadata.send_trailing_metadata =
+ &send_trailing_metadata_;
+ batch_.send_trailing_metadata = true;
+ // Add recv_initial_metadata op.
+ payload_.recv_initial_metadata.recv_initial_metadata =
+ &recv_initial_metadata_;
+ payload_.recv_initial_metadata.trailing_metadata_available = nullptr;
+ payload_.recv_initial_metadata.peer_string = nullptr;
+ // recv_initial_metadata_ready callback takes ref, handled manually.
+ call_->Ref(DEBUG_LOCATION, "recv_initial_metadata_ready").release();
+ payload_.recv_initial_metadata.recv_initial_metadata_ready =
+ GRPC_CLOSURE_INIT(&recv_initial_metadata_ready_, RecvInitialMetadataReady,
+ this, grpc_schedule_on_exec_ctx);
+ batch_.recv_initial_metadata = true;
+ // Add recv_message op.
+ payload_.recv_message.recv_message = &recv_message_;
+ payload_.recv_message.call_failed_before_recv_message = nullptr;
+ // recv_message callback takes ref, handled manually.
+ call_->Ref(DEBUG_LOCATION, "recv_message_ready").release();
+ payload_.recv_message.recv_message_ready = GRPC_CLOSURE_INIT(
+ &recv_message_ready_, RecvMessageReady, this, grpc_schedule_on_exec_ctx);
+ batch_.recv_message = true;
+ // Start batch.
+ StartBatch(&batch_);
+ // Initialize recv_trailing_metadata batch.
+ recv_trailing_metadata_batch_.payload = &payload_;
+ // Add recv_trailing_metadata op.
+ payload_.recv_trailing_metadata.recv_trailing_metadata =
+ &recv_trailing_metadata_;
+ payload_.recv_trailing_metadata.collect_stats = &collect_stats_;
+ // This callback signals the end of the call, so it relies on the
+ // initial ref instead of taking a new ref. When it's invoked, the
+ // initial ref is released.
+ payload_.recv_trailing_metadata.recv_trailing_metadata_ready =
+ GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_,
+ RecvTrailingMetadataReady, this,
+ grpc_schedule_on_exec_ctx);
+ recv_trailing_metadata_batch_.recv_trailing_metadata = true;
+ // Start recv_trailing_metadata batch.
+ StartBatch(&recv_trailing_metadata_batch_);
+}
+
+void SubchannelStreamClient::CallState::StartBatchInCallCombiner(
+ void* arg, grpc_error_handle /*error*/) {
+ auto* batch = static_cast<grpc_transport_stream_op_batch*>(arg);
+ auto* call = static_cast<SubchannelCall*>(batch->handler_private.extra_arg);
+ call->StartTransportStreamOpBatch(batch);
+}
+
+void SubchannelStreamClient::CallState::StartBatch(
+ grpc_transport_stream_op_batch* batch) {
+ batch->handler_private.extra_arg = call_;
+ GRPC_CLOSURE_INIT(&batch->handler_private.closure, StartBatchInCallCombiner,
+ batch, grpc_schedule_on_exec_ctx);
+ GRPC_CALL_COMBINER_START(&call_combiner_, &batch->handler_private.closure,
+ GRPC_ERROR_NONE, "start_subchannel_batch");
+}
+
+void SubchannelStreamClient::CallState::AfterCallStackDestruction(
+ void* arg, grpc_error_handle /*error*/) {
+ auto* self = static_cast<SubchannelStreamClient::CallState*>(arg);
+ delete self;
+}
+
+void SubchannelStreamClient::CallState::OnCancelComplete(
+ void* arg, grpc_error_handle /*error*/) {
+ auto* self = static_cast<SubchannelStreamClient::CallState*>(arg);
+ GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "health_cancel");
+ self->call_->Unref(DEBUG_LOCATION, "cancel");
+}
+
+void SubchannelStreamClient::CallState::StartCancel(
+ void* arg, grpc_error_handle /*error*/) {
+ auto* self = static_cast<SubchannelStreamClient::CallState*>(arg);
+ auto* batch = grpc_make_transport_stream_op(
+ GRPC_CLOSURE_CREATE(OnCancelComplete, self, grpc_schedule_on_exec_ctx));
+ batch->cancel_stream = true;
+ batch->payload->cancel_stream.cancel_error = GRPC_ERROR_CANCELLED;
+ self->call_->StartTransportStreamOpBatch(batch);
+}
+
+void SubchannelStreamClient::CallState::Cancel() {
+ bool expected = false;
+ if (cancelled_.compare_exchange_strong(expected, true,
+ std::memory_order_acq_rel,
+ std::memory_order_acquire)) {
+ call_->Ref(DEBUG_LOCATION, "cancel").release();
+ GRPC_CALL_COMBINER_START(
+ &call_combiner_,
+ GRPC_CLOSURE_CREATE(StartCancel, this, grpc_schedule_on_exec_ctx),
+ GRPC_ERROR_NONE, "health_cancel");
+ }
+}
+
+void SubchannelStreamClient::CallState::OnComplete(
+ void* arg, grpc_error_handle /*error*/) {
+ auto* self = static_cast<SubchannelStreamClient::CallState*>(arg);
+ GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "on_complete");
+ self->send_initial_metadata_.Clear();
+ self->send_trailing_metadata_.Clear();
+ self->call_->Unref(DEBUG_LOCATION, "on_complete");
+}
+
+void SubchannelStreamClient::CallState::RecvInitialMetadataReady(
+ void* arg, grpc_error_handle /*error*/) {
+ auto* self = static_cast<SubchannelStreamClient::CallState*>(arg);
+ GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "recv_initial_metadata_ready");
+ self->recv_initial_metadata_.Clear();
+ self->call_->Unref(DEBUG_LOCATION, "recv_initial_metadata_ready");
+}
+
+void SubchannelStreamClient::CallState::RecvMessageReady() {
+ if (!recv_message_.has_value()) {
+ call_->Unref(DEBUG_LOCATION, "recv_message_ready");
+ return;
+ }
+ // Report payload.
+ {
+ MutexLock lock(&subchannel_stream_client_->mu_);
+ if (subchannel_stream_client_->event_handler_ != nullptr) {
+ y_absl::Status status =
+ subchannel_stream_client_->event_handler_->RecvMessageReadyLocked(
+ subchannel_stream_client_.get(), recv_message_->JoinIntoString());
+ if (!status.ok()) {
+ if (GPR_UNLIKELY(subchannel_stream_client_->tracer_ != nullptr)) {
+ gpr_log(GPR_INFO,
+ "%s %p: SubchannelStreamClient CallState %p: failed to "
+ "parse response message: %s",
+ subchannel_stream_client_->tracer_,
+ subchannel_stream_client_.get(), this,
+ status.ToString().c_str());
+ }
+ Cancel();
+ }
+ }
+ }
+ seen_response_.store(true, std::memory_order_release);
+ recv_message_.reset();
+ // Start another recv_message batch.
+ // This re-uses the ref we're holding.
+ // Note: Can't just reuse batch_ here, since we don't know that all
+ // callbacks from the original batch have completed yet.
+ recv_message_batch_.payload = &payload_;
+ payload_.recv_message.recv_message = &recv_message_;
+ payload_.recv_message.call_failed_before_recv_message = nullptr;
+ payload_.recv_message.recv_message_ready = GRPC_CLOSURE_INIT(
+ &recv_message_ready_, RecvMessageReady, this, grpc_schedule_on_exec_ctx);
+ recv_message_batch_.recv_message = true;
+ StartBatch(&recv_message_batch_);
+}
+
+void SubchannelStreamClient::CallState::RecvMessageReady(
+ void* arg, grpc_error_handle /*error*/) {
+ auto* self = static_cast<SubchannelStreamClient::CallState*>(arg);
+ GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "recv_message_ready");
+ self->RecvMessageReady();
+}
+
+void SubchannelStreamClient::CallState::RecvTrailingMetadataReady(
+ void* arg, grpc_error_handle error) {
+ auto* self = static_cast<SubchannelStreamClient::CallState*>(arg);
+ GRPC_CALL_COMBINER_STOP(&self->call_combiner_,
+ "recv_trailing_metadata_ready");
+ // Get call status.
+ grpc_status_code status =
+ self->recv_trailing_metadata_.get(GrpcStatusMetadata())
+ .value_or(GRPC_STATUS_UNKNOWN);
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ grpc_error_get_status(error, Timestamp::InfFuture(), &status,
+ nullptr /* slice */, nullptr /* http_error */,
+ nullptr /* error_string */);
+ }
+ if (GPR_UNLIKELY(self->subchannel_stream_client_->tracer_ != nullptr)) {
+ gpr_log(GPR_INFO,
+ "%s %p: SubchannelStreamClient CallState %p: health watch failed "
+ "with status %d",
+ self->subchannel_stream_client_->tracer_,
+ self->subchannel_stream_client_.get(), self, status);
+ }
+ // Clean up.
+ self->recv_trailing_metadata_.Clear();
+ // Report call end.
+ MutexLock lock(&self->subchannel_stream_client_->mu_);
+ if (self->subchannel_stream_client_->event_handler_ != nullptr) {
+ self->subchannel_stream_client_->event_handler_
+ ->RecvTrailingMetadataReadyLocked(self->subchannel_stream_client_.get(),
+ status);
+ }
+ // For status UNIMPLEMENTED, give up and assume always healthy.
+ self->CallEndedLocked(/*retry=*/status != GRPC_STATUS_UNIMPLEMENTED);
+}
+
+void SubchannelStreamClient::CallState::CallEndedLocked(bool retry) {
+ // If this CallState is still in use, this call ended because of a failure,
+ // so we need to stop using it and optionally create a new one.
+ // Otherwise, we have deliberately ended this call, and no further action
+ // is required.
+ if (this == subchannel_stream_client_->call_state_.get()) {
+ subchannel_stream_client_->call_state_.reset();
+ if (retry) {
+ GPR_ASSERT(subchannel_stream_client_->event_handler_ != nullptr);
+ if (seen_response_.load(std::memory_order_acquire)) {
+ // If the call fails after we've gotten a successful response, reset
+ // the backoff and restart the call immediately.
+ subchannel_stream_client_->retry_backoff_.Reset();
+ subchannel_stream_client_->StartCallLocked();
+ } else {
+ // If the call failed without receiving any messages, retry later.
+ subchannel_stream_client_->StartRetryTimerLocked();
+ }
+ }
+ }
+ // When the last ref to the call stack goes away, the CallState object
+ // will be automatically destroyed.
+ call_->Unref(DEBUG_LOCATION, "call_ended");
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_stream_client.h b/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_stream_client.h
new file mode 100644
index 0000000000..902cd0b366
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_stream_client.h
@@ -0,0 +1,222 @@
+//
+// Copyright 2018 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_STREAM_CLIENT_H
+#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_STREAM_CLIENT_H
+
+#include <grpc/support/port_platform.h>
+
+#include <atomic>
+#include <memory>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/event_engine/memory_allocator.h>
+#include <grpc/slice.h>
+#include <grpc/status.h>
+
+#include "src/core/ext/filters/client_channel/subchannel.h"
+#include "src/core/lib/backoff/backoff.h"
+#include "src/core/lib/channel/context.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/iomgr/polling_entity.h"
+#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/resource_quota/arena.h"
+#include "src/core/lib/resource_quota/memory_quota.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/slice/slice_buffer.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
+
+namespace grpc_core {
+
+// Represents a streaming call on a subchannel that should be maintained
+// open at all times.
+// If the call fails with UNIMPLEMENTED, no further attempts are made.
+// If the call fails with any other status (including OK), we retry the
+// call with appropriate backoff.
+// The backoff state is reset when we receive a message on a stream.
+//
+// Currently, this assumes server-side streaming, but it could be extended
+// to support full bidi streaming if there is a need in the future.
+class SubchannelStreamClient
+ : public InternallyRefCounted<SubchannelStreamClient> {
+ public:
+ // Interface implemented by caller. Thread safety is provided for the
+ // implementation; only one method will be called by any thread at any
+ // one time (including destruction).
+ //
+ // The address of the SubchannelStreamClient object is passed to most
+ // methods for logging purposes.
+ class CallEventHandler {
+ public:
+ virtual ~CallEventHandler() = default;
+
+ // Returns the path for the streaming call.
+ virtual Slice GetPathLocked()
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_) = 0;
+ // Called when a new call attempt is being started.
+ virtual void OnCallStartLocked(SubchannelStreamClient* client)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_) = 0;
+ // Called when a previous call attempt has failed and the retry
+ // timer is started before the next attempt.
+ virtual void OnRetryTimerStartLocked(SubchannelStreamClient* client)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_) = 0;
+ // Returns the message payload to send from the client.
+ virtual grpc_slice EncodeSendMessageLocked()
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_) = 0;
+ // Called whenever a message is received from the server.
+ virtual y_absl::Status RecvMessageReadyLocked(
+ SubchannelStreamClient* client, y_absl::string_view serialized_message)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_) = 0;
+ // Called when a stream fails.
+ virtual void RecvTrailingMetadataReadyLocked(SubchannelStreamClient* client,
+ grpc_status_code status)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_) = 0;
+ };
+
+ // If tracer is non-null, it enables trace logging, with the specified
+ // string being the first part of the log message.
+ // Does not take ownership of interested_parties; the caller is responsible
+ // for ensuring that it will outlive the SubchannelStreamClient.
+ SubchannelStreamClient(
+ RefCountedPtr<ConnectedSubchannel> connected_subchannel,
+ grpc_pollset_set* interested_parties,
+ std::unique_ptr<CallEventHandler> event_handler, const char* tracer);
+
+ ~SubchannelStreamClient() override;
+
+ void Orphan() override;
+
+ private:
+ // Contains a call to the backend and all the data related to the call.
+ class CallState : public Orphanable {
+ public:
+ CallState(RefCountedPtr<SubchannelStreamClient> client,
+ grpc_pollset_set* interested_parties);
+ ~CallState() override;
+
+ void Orphan() override;
+
+ void StartCallLocked()
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&SubchannelStreamClient::mu_);
+
+ private:
+ void Cancel();
+
+ void StartBatch(grpc_transport_stream_op_batch* batch);
+ static void StartBatchInCallCombiner(void* arg, grpc_error_handle error);
+
+ void CallEndedLocked(bool retry)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&subchannel_stream_client_->mu_);
+
+ void RecvMessageReady();
+
+ static void OnComplete(void* arg, grpc_error_handle error);
+ static void RecvInitialMetadataReady(void* arg, grpc_error_handle error);
+ static void RecvMessageReady(void* arg, grpc_error_handle error);
+ static void RecvTrailingMetadataReady(void* arg, grpc_error_handle error);
+ static void StartCancel(void* arg, grpc_error_handle error);
+ static void OnCancelComplete(void* arg, grpc_error_handle error);
+
+ static void AfterCallStackDestruction(void* arg, grpc_error_handle error);
+
+ RefCountedPtr<SubchannelStreamClient> subchannel_stream_client_;
+ grpc_polling_entity pollent_;
+
+ ScopedArenaPtr arena_;
+ CallCombiner call_combiner_;
+ grpc_call_context_element context_[GRPC_CONTEXT_COUNT] = {};
+
+ // The streaming call to the backend. Always non-null.
+ // Refs are tracked manually; when the last ref is released, the
+ // CallState object will be automatically destroyed.
+ SubchannelCall* call_;
+
+ grpc_transport_stream_op_batch_payload payload_;
+ grpc_transport_stream_op_batch batch_;
+ grpc_transport_stream_op_batch recv_message_batch_;
+ grpc_transport_stream_op_batch recv_trailing_metadata_batch_;
+
+ grpc_closure on_complete_;
+
+ // send_initial_metadata
+ grpc_metadata_batch send_initial_metadata_;
+
+ // send_message
+ SliceBuffer send_message_;
+
+ // send_trailing_metadata
+ grpc_metadata_batch send_trailing_metadata_;
+
+ // recv_initial_metadata
+ grpc_metadata_batch recv_initial_metadata_;
+ grpc_closure recv_initial_metadata_ready_;
+
+ // recv_message
+ y_absl::optional<SliceBuffer> recv_message_;
+ grpc_closure recv_message_ready_;
+ std::atomic<bool> seen_response_{false};
+
+ // True if the cancel_stream batch has been started.
+ std::atomic<bool> cancelled_{false};
+
+ // recv_trailing_metadata
+ grpc_metadata_batch recv_trailing_metadata_;
+ grpc_transport_stream_stats collect_stats_;
+ grpc_closure recv_trailing_metadata_ready_;
+
+ // Closure for call stack destruction.
+ grpc_closure after_call_stack_destruction_;
+ };
+
+ void StartCall();
+ void StartCallLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
+
+ void StartRetryTimerLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
+ static void OnRetryTimer(void* arg, grpc_error_handle error);
+
+ RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
+ grpc_pollset_set* interested_parties_; // Do not own.
+ const char* tracer_;
+ MemoryAllocator call_allocator_;
+
+ Mutex mu_;
+ std::unique_ptr<CallEventHandler> event_handler_ Y_ABSL_GUARDED_BY(mu_);
+
+ // The data associated with the current health check call. It holds a ref
+ // to this SubchannelStreamClient object.
+ OrphanablePtr<CallState> call_state_ Y_ABSL_GUARDED_BY(mu_);
+
+ // Call retry state.
+ BackOff retry_backoff_ Y_ABSL_GUARDED_BY(mu_);
+ grpc_timer retry_timer_ Y_ABSL_GUARDED_BY(mu_);
+ grpc_closure retry_timer_callback_ Y_ABSL_GUARDED_BY(mu_);
+ bool retry_timer_callback_pending_ Y_ABSL_GUARDED_BY(mu_) = false;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_STREAM_CLIENT_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_idle/client_idle_filter.cc b/contrib/libs/grpc/src/core/ext/filters/client_idle/client_idle_filter.cc
deleted file mode 100644
index 5a49fc0c3b..0000000000
--- a/contrib/libs/grpc/src/core/ext/filters/client_idle/client_idle_filter.cc
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- *
- * Copyright 2019 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/support/port_platform.h>
-
-#include <limits.h>
-
-#include <atomic>
-
-#include "src/core/ext/filters/client_idle/idle_filter_state.h"
-#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channel_stack_builder.h"
-#include "src/core/lib/channel/promise_based_filter.h"
-#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/gprpp/capture.h"
-#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/promise/exec_ctx_wakeup_scheduler.h"
-#include "src/core/lib/promise/loop.h"
-#include "src/core/lib/promise/sleep.h"
-#include "src/core/lib/promise/try_seq.h"
-#include "src/core/lib/transport/http2_errors.h"
-
-// TODO(juanlishen): The idle filter is disabled in client channel by default
-// due to b/143502997. Try to fix the bug and enable the filter by default.
-#define DEFAULT_IDLE_TIMEOUT_MS INT_MAX
-// The user input idle timeout smaller than this would be capped to it.
-#define MIN_IDLE_TIMEOUT_MS (1 /*second*/ * 1000)
-
-namespace grpc_core {
-
-TraceFlag grpc_trace_client_idle_filter(false, "client_idle_filter");
-
-#define GRPC_IDLE_FILTER_LOG(format, ...) \
- do { \
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_client_idle_filter)) { \
- gpr_log(GPR_INFO, "(client idle filter) " format, ##__VA_ARGS__); \
- } \
- } while (0)
-
-namespace {
-
-Duration GetClientIdleTimeout(const grpc_channel_args* args) {
- auto millis = std::max(
- grpc_channel_arg_get_integer(
- grpc_channel_args_find(args, GRPC_ARG_CLIENT_IDLE_TIMEOUT_MS),
- {DEFAULT_IDLE_TIMEOUT_MS, 0, INT_MAX}),
- MIN_IDLE_TIMEOUT_MS);
- if (millis == INT_MAX) return Duration::Infinity();
- return Duration::Milliseconds(millis);
-}
-
-class ClientIdleFilter : public ChannelFilter {
- public:
- static y_absl::StatusOr<ClientIdleFilter> Create(
- const grpc_channel_args* args, ChannelFilter::Args filter_args);
- ~ClientIdleFilter() override = default;
-
- ClientIdleFilter(const ClientIdleFilter&) = delete;
- ClientIdleFilter& operator=(const ClientIdleFilter&) = delete;
- ClientIdleFilter(ClientIdleFilter&&) = default;
- ClientIdleFilter& operator=(ClientIdleFilter&&) = default;
-
- // Construct a promise for one call.
- ArenaPromise<TrailingMetadata> MakeCallPromise(
- ClientInitialMetadata initial_metadata,
- NextPromiseFactory next_promise_factory) override;
-
- bool StartTransportOp(grpc_transport_op* op) override;
-
- private:
- ClientIdleFilter(grpc_channel_stack* channel_stack,
- Duration client_idle_timeout)
- : channel_stack_(channel_stack),
- client_idle_timeout_(client_idle_timeout) {}
-
- void StartIdleTimer();
-
- void IncreaseCallCount();
- void DecreaseCallCount();
-
- struct CallCountDecreaser {
- void operator()(ClientIdleFilter* filter) const {
- filter->DecreaseCallCount();
- }
- };
-
- // The channel stack to which we take refs for pending callbacks.
- grpc_channel_stack* channel_stack_;
- Duration client_idle_timeout_;
- std::shared_ptr<IdleFilterState> idle_filter_state_{
- std::make_shared<IdleFilterState>(false)};
-
- ActivityPtr activity_;
-};
-
-y_absl::StatusOr<ClientIdleFilter> ClientIdleFilter::Create(
- const grpc_channel_args* args, ChannelFilter::Args filter_args) {
- ClientIdleFilter filter(filter_args.channel_stack(),
- GetClientIdleTimeout(args));
- return y_absl::StatusOr<ClientIdleFilter>(std::move(filter));
-}
-
-// Construct a promise for one call.
-ArenaPromise<TrailingMetadata> ClientIdleFilter::MakeCallPromise(
- ClientInitialMetadata initial_metadata,
- NextPromiseFactory next_promise_factory) {
- using Decrementer = std::unique_ptr<ClientIdleFilter, CallCountDecreaser>;
- IncreaseCallCount();
- return ArenaPromise<TrailingMetadata>(Capture(
- [](Decrementer*, ArenaPromise<TrailingMetadata>* next)
- -> Poll<TrailingMetadata> { return (*next)(); },
- Decrementer(this), next_promise_factory(std::move(initial_metadata))));
-}
-
-bool ClientIdleFilter::StartTransportOp(grpc_transport_op* op) {
- // Catch the disconnect_with_error transport op.
- if (op->disconnect_with_error != GRPC_ERROR_NONE) {
- // IncreaseCallCount() introduces a phony call and prevent the timer from
- // being reset by other threads.
- IncreaseCallCount();
- activity_.reset();
- }
- // Pass the op to the next filter.
- return false;
-}
-
-void ClientIdleFilter::IncreaseCallCount() {
- idle_filter_state_->IncreaseCallCount();
-}
-
-void ClientIdleFilter::DecreaseCallCount() {
- if (idle_filter_state_->DecreaseCallCount()) {
- // If there are no more calls in progress, start the idle timer.
- StartIdleTimer();
- }
-}
-
-void ClientIdleFilter::StartIdleTimer() {
- GRPC_IDLE_FILTER_LOG("timer has started");
- auto idle_filter_state = idle_filter_state_;
- // Hold a ref to the channel stack for the timer callback.
- auto channel_stack = channel_stack_->Ref();
- auto timeout = client_idle_timeout_;
- auto promise = Loop([timeout, idle_filter_state]() {
- return TrySeq(Sleep(ExecCtx::Get()->Now() + timeout),
- [idle_filter_state]() -> Poll<LoopCtl<y_absl::Status>> {
- if (idle_filter_state->CheckTimer()) {
- return Continue{};
- } else {
- return y_absl::OkStatus();
- }
- });
- });
- activity_ = MakeActivity(
- std::move(promise), ExecCtxWakeupScheduler{},
- [channel_stack](y_absl::Status status) {
- if (!status.ok()) return;
- auto* op = grpc_make_transport_op(nullptr);
- op->disconnect_with_error = grpc_error_set_int(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("enter idle"),
- GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE, GRPC_CHANNEL_IDLE);
- // Pass the transport op down to the channel stack.
- auto* elem = grpc_channel_stack_element(channel_stack.get(), 0);
- elem->filter->start_transport_op(elem, op);
- });
-}
-
-const grpc_channel_filter grpc_client_idle_filter =
- MakePromiseBasedFilter<ClientIdleFilter, FilterEndpoint::kClient>(
- "client_idle");
-
-} // namespace
-
-void RegisterClientIdleFilter(CoreConfiguration::Builder* builder) {
- builder->channel_init()->RegisterStage(
- GRPC_CLIENT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
- [](ChannelStackBuilder* builder) {
- const grpc_channel_args* channel_args = builder->channel_args();
- if (!grpc_channel_args_want_minimal_stack(channel_args) &&
- GetClientIdleTimeout(channel_args) != Duration::Infinity()) {
- builder->PrependFilter(&grpc_client_idle_filter, nullptr);
- }
- return true;
- });
-}
-} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/deadline/deadline_filter.cc b/contrib/libs/grpc/src/core/ext/filters/deadline/deadline_filter.cc
index 8ff05762c1..41de733875 100644
--- a/contrib/libs/grpc/src/core/ext/filters/deadline/deadline_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/deadline/deadline_filter.cc
@@ -18,19 +18,25 @@
#include "src/core/ext/filters/deadline/deadline_filter.h"
-#include <stdbool.h>
-#include <string.h>
+#include <new>
-#include <grpc/support/alloc.h>
+#include "y_absl/status/status.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/status.h>
#include <grpc/support/log.h>
-#include <grpc/support/sync.h>
-#include <grpc/support/time.h>
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/surface/channel_init.h"
+#include "src/core/lib/surface/channel_stack_type.h"
+#include "src/core/lib/transport/metadata_batch.h"
namespace grpc_core {
@@ -347,6 +353,7 @@ const grpc_channel_filter grpc_client_deadline_filter = {
deadline_destroy_call_elem,
0, // sizeof(channel_data)
deadline_init_channel_elem,
+ grpc_channel_stack_no_post_init,
deadline_destroy_channel_elem,
grpc_channel_next_get_info,
"deadline",
@@ -362,15 +369,16 @@ const grpc_channel_filter grpc_server_deadline_filter = {
deadline_destroy_call_elem,
0, // sizeof(channel_data)
deadline_init_channel_elem,
+ grpc_channel_stack_no_post_init,
deadline_destroy_channel_elem,
grpc_channel_next_get_info,
"deadline",
};
-bool grpc_deadline_checking_enabled(const grpc_channel_args* channel_args) {
- return grpc_channel_arg_get_bool(
- grpc_channel_args_find(channel_args, GRPC_ARG_ENABLE_DEADLINE_CHECKS),
- !grpc_channel_args_want_minimal_stack(channel_args));
+bool grpc_deadline_checking_enabled(
+ const grpc_core::ChannelArgs& channel_args) {
+ return channel_args.GetBool(GRPC_ARG_ENABLE_DEADLINE_CHECKS)
+ .value_or(!channel_args.WantMinimalStack());
}
namespace grpc_core {
@@ -380,8 +388,9 @@ void RegisterDeadlineFilter(CoreConfiguration::Builder* builder) {
builder->channel_init()->RegisterStage(
type, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
[filter](ChannelStackBuilder* builder) {
- if (grpc_deadline_checking_enabled(builder->channel_args())) {
- builder->PrependFilter(filter, nullptr);
+ auto args = builder->channel_args();
+ if (grpc_deadline_checking_enabled(args)) {
+ builder->PrependFilter(filter);
}
return true;
});
diff --git a/contrib/libs/grpc/src/core/ext/filters/deadline/deadline_filter.h b/contrib/libs/grpc/src/core/ext/filters/deadline/deadline_filter.h
index 6aaa1a05df..85071a90f3 100644
--- a/contrib/libs/grpc/src/core/ext/filters/deadline/deadline_filter.h
+++ b/contrib/libs/grpc/src/core/ext/filters/deadline/deadline_filter.h
@@ -19,8 +19,14 @@
#include <grpc/support/port_platform.h>
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/resource_quota/arena.h"
+#include "src/core/lib/transport/transport.h"
namespace grpc_core {
class TimerState;
@@ -76,7 +82,7 @@ void grpc_deadline_state_client_start_transport_stream_op_batch(
grpc_call_element* elem, grpc_transport_stream_op_batch* op);
// Should deadline checking be performed (according to channel args)
-bool grpc_deadline_checking_enabled(const grpc_channel_args* args);
+bool grpc_deadline_checking_enabled(const grpc_core::ChannelArgs& args);
// Deadline filters for direct client channels and server channels.
// Note: Deadlines for non-direct client channels are handled by the
diff --git a/contrib/libs/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.cc b/contrib/libs/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.cc
index d8fc17b24e..e6188f85d2 100644
--- a/contrib/libs/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.cc
@@ -18,22 +18,37 @@
#include "src/core/ext/filters/fault_injection/fault_injection_filter.h"
+#include <stdint.h>
+
+#include <algorithm>
#include <atomic>
+#include <functional>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include "y_absl/status/status.h"
#include "y_absl/strings/numbers.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
#include <grpc/status.h>
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include "src/core/ext/filters/fault_injection/service_config_parser.h"
#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/context.h"
#include "src/core/lib/channel/status_util.h"
-#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/iomgr/closure.h"
-#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/promise/context.h"
+#include "src/core/lib/promise/sleep.h"
+#include "src/core/lib/promise/try_seq.h"
#include "src/core/lib/service_config/service_config_call_data.h"
-#include "src/core/lib/transport/status_conversion.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
namespace grpc_core {
@@ -53,443 +68,210 @@ auto AsInt(y_absl::string_view s) -> y_absl::optional<T> {
return y_absl::nullopt;
}
-inline bool UnderFraction(const uint32_t numerator,
+inline bool UnderFraction(y_absl::InsecureBitGen* rand_generator,
+ const uint32_t numerator,
const uint32_t denominator) {
if (numerator <= 0) return false;
if (numerator >= denominator) return true;
// Generate a random number in [0, denominator).
- const uint32_t random_number = rand() % denominator;
+ const uint32_t random_number =
+ y_absl::Uniform(y_absl::IntervalClosedOpen, *rand_generator, 0u, denominator);
return random_number < numerator;
}
-class ChannelData {
+// Tracks an active faults lifetime.
+// Increments g_active_faults when created, and decrements it when destroyed.
+class FaultHandle {
public:
- static grpc_error_handle Init(grpc_channel_element* elem,
- grpc_channel_element_args* args);
- static void Destroy(grpc_channel_element* elem);
-
- int index() const { return index_; }
- size_t service_config_parser_index() const {
- return service_config_parser_index_;
+ explicit FaultHandle(bool active) : active_(active) {
+ if (active) {
+ g_active_faults.fetch_add(1, std::memory_order_relaxed);
+ }
+ }
+ ~FaultHandle() {
+ if (active_) {
+ g_active_faults.fetch_sub(1, std::memory_order_relaxed);
+ }
+ }
+ FaultHandle(const FaultHandle&) = delete;
+ FaultHandle& operator=(const FaultHandle&) = delete;
+ FaultHandle(FaultHandle&& other) noexcept
+ : active_(std::exchange(other.active_, false)) {}
+ FaultHandle& operator=(FaultHandle&& other) noexcept {
+ std::swap(active_, other.active_);
+ return *this;
}
private:
- ChannelData(grpc_channel_element* elem, grpc_channel_element_args* args);
- ~ChannelData() = default;
-
- // The relative index of instances of the same filter.
- int index_;
- const size_t service_config_parser_index_;
+ bool active_;
};
-class CallData {
- public:
- static grpc_error_handle Init(grpc_call_element* elem,
- const grpc_call_element_args* args);
+} // namespace
- static void Destroy(grpc_call_element* elem,
- const grpc_call_final_info* /*final_info*/,
- grpc_closure* /*then_schedule_closure*/);
+class FaultInjectionFilter::InjectionDecision {
+ public:
+ InjectionDecision(uint32_t max_faults, Duration delay_time,
+ y_absl::optional<y_absl::Status> abort_request)
+ : max_faults_(max_faults),
+ delay_time_(delay_time),
+ abort_request_(abort_request) {}
- static void StartTransportStreamOpBatch(
- grpc_call_element* elem, grpc_transport_stream_op_batch* batch);
+ TString ToString() const;
+ Timestamp DelayUntil();
+ y_absl::Status MaybeAbort() const;
private:
- class ResumeBatchCanceller;
-
- CallData(grpc_call_element* elem, const grpc_call_element_args* args);
- ~CallData();
-
- void DecideWhetherToInjectFaults(grpc_metadata_batch* initial_metadata);
-
- // Checks if current active faults exceed the allowed max faults.
- bool HaveActiveFaultsQuota(bool increment);
-
- // Returns true if this RPC needs to be delayed. If so, this call will be
- // counted as an active fault.
- bool MaybeDelay();
-
- // Returns the aborted RPC status if this RPC needs to be aborted. If so,
- // this call will be counted as an active fault. Otherwise, it returns
- // GRPC_ERROR_NONE.
- // If this call is already been delay injected, skip the active faults
- // quota check.
- grpc_error_handle MaybeAbort();
-
- // Delays the stream operations batch.
- void DelayBatch(grpc_call_element* elem,
- grpc_transport_stream_op_batch* batch);
-
- // Cancels the delay timer.
- void CancelDelayTimer() { grpc_timer_cancel(&delay_timer_); }
+ bool HaveActiveFaultsQuota() const;
- // Finishes the fault injection, should only be called once.
- void FaultInjectionFinished() {
- g_active_faults.fetch_sub(1, std::memory_order_relaxed);
- }
-
- // This is a callback that will be invoked after the delay timer is up.
- static void ResumeBatch(void* arg, grpc_error_handle error);
-
- // This is a callback invoked upon completion of recv_trailing_metadata.
- // Injects the abort_error_ to the recv_trailing_metadata batch if needed.
- static void HijackedRecvTrailingMetadataReady(void* arg, grpc_error_handle);
-
- // Used to track the policy structs that needs to be destroyed in dtor.
- bool fi_policy_owned_ = false;
- const FaultInjectionMethodParsedConfig::FaultInjectionPolicy* fi_policy_;
- grpc_call_stack* owning_call_;
- Arena* arena_;
- CallCombiner* call_combiner_;
-
- // Indicates whether we are doing a delay and/or an abort for this call.
- bool delay_request_ = false;
- bool abort_request_ = false;
-
- // Delay states
- grpc_timer delay_timer_ Y_ABSL_GUARDED_BY(delay_mu_);
- ResumeBatchCanceller* resume_batch_canceller_ Y_ABSL_GUARDED_BY(delay_mu_);
- grpc_transport_stream_op_batch* delayed_batch_ Y_ABSL_GUARDED_BY(delay_mu_);
- // Abort states
- grpc_error_handle abort_error_ = GRPC_ERROR_NONE;
- grpc_closure recv_trailing_metadata_ready_;
- grpc_closure* original_recv_trailing_metadata_ready_;
- // Protects the asynchronous delay, resume, and cancellation.
- Mutex delay_mu_;
+ uint32_t max_faults_;
+ Duration delay_time_;
+ y_absl::optional<y_absl::Status> abort_request_;
+ FaultHandle active_fault_{false};
};
-// ChannelData
-
-grpc_error_handle ChannelData::Init(grpc_channel_element* elem,
- grpc_channel_element_args* args) {
- GPR_ASSERT(elem->filter == &FaultInjectionFilterVtable);
- new (elem->channel_data) ChannelData(elem, args);
- return GRPC_ERROR_NONE;
-}
-
-void ChannelData::Destroy(grpc_channel_element* elem) {
- auto* chand = static_cast<ChannelData*>(elem->channel_data);
- chand->~ChannelData();
+y_absl::StatusOr<FaultInjectionFilter> FaultInjectionFilter::Create(
+ const ChannelArgs&, ChannelFilter::Args filter_args) {
+ return FaultInjectionFilter(filter_args);
}
-ChannelData::ChannelData(grpc_channel_element* elem,
- grpc_channel_element_args* args)
- : index_(
- grpc_channel_stack_filter_instance_number(args->channel_stack, elem)),
+FaultInjectionFilter::FaultInjectionFilter(ChannelFilter::Args filter_args)
+ : index_(grpc_channel_stack_filter_instance_number(
+ filter_args.channel_stack(),
+ filter_args.uninitialized_channel_element())),
service_config_parser_index_(
- FaultInjectionServiceConfigParser::ParserIndex()) {}
-
-// CallData::ResumeBatchCanceller
-
-class CallData::ResumeBatchCanceller {
- public:
- explicit ResumeBatchCanceller(grpc_call_element* elem) : elem_(elem) {
- auto* calld = static_cast<CallData*>(elem->call_data);
- GRPC_CALL_STACK_REF(calld->owning_call_, "ResumeBatchCanceller");
- GRPC_CLOSURE_INIT(&closure_, &Cancel, this, grpc_schedule_on_exec_ctx);
- calld->call_combiner_->SetNotifyOnCancel(&closure_);
- }
-
- private:
- static void Cancel(void* arg, grpc_error_handle error) {
- auto* self = static_cast<ResumeBatchCanceller*>(arg);
- auto* chand = static_cast<ChannelData*>(self->elem_->channel_data);
- auto* calld = static_cast<CallData*>(self->elem_->call_data);
- {
- MutexLock lock(&calld->delay_mu_);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_fault_injection_filter_trace)) {
- gpr_log(GPR_INFO,
- "chand=%p calld=%p: cancelling schdueled pick: "
- "error=%s self=%p calld->resume_batch_canceller_=%p",
- chand, calld, grpc_error_std_string(error).c_str(), self,
- calld->resume_batch_canceller_);
- }
- if (error != GRPC_ERROR_NONE && calld->resume_batch_canceller_ == self) {
- // Cancel the delayed pick.
- calld->CancelDelayTimer();
- calld->FaultInjectionFinished();
- // Fail pending batches on the call.
- grpc_transport_stream_op_batch_finish_with_failure(
- calld->delayed_batch_, GRPC_ERROR_REF(error),
- calld->call_combiner_);
- }
- }
- GRPC_CALL_STACK_UNREF(calld->owning_call_, "ResumeBatchCanceller");
- delete self;
- }
-
- grpc_call_element* elem_;
- grpc_closure closure_;
-};
-
-// CallData
-
-grpc_error_handle CallData::Init(grpc_call_element* elem,
- const grpc_call_element_args* args) {
- auto* calld = new (elem->call_data) CallData(elem, args);
- if (calld->fi_policy_ == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "failed to find fault injection policy");
- }
- return GRPC_ERROR_NONE;
-}
+ FaultInjectionServiceConfigParser::ParserIndex()),
+ mu_(new Mutex) {}
-void CallData::Destroy(grpc_call_element* elem,
- const grpc_call_final_info* /*final_info*/,
- grpc_closure* /*then_schedule_closure*/) {
- auto* calld = static_cast<CallData*>(elem->call_data);
- calld->~CallData();
-}
-
-void CallData::StartTransportStreamOpBatch(
- grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
- auto* calld = static_cast<CallData*>(elem->call_data);
- // There should only be one send_initial_metdata op, and fault injection also
- // only need to be enforced once.
- if (batch->send_initial_metadata) {
- calld->DecideWhetherToInjectFaults(
- batch->payload->send_initial_metadata.send_initial_metadata);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_fault_injection_filter_trace)) {
- gpr_log(GPR_INFO,
- "chand=%p calld=%p: Fault injection triggered delay=%d abort=%d",
- elem->channel_data, calld, calld->delay_request_,
- calld->abort_request_);
- }
- if (calld->MaybeDelay()) {
- // Delay the batch, and pass down the batch in the scheduled closure.
- calld->DelayBatch(elem, batch);
- return;
- }
- grpc_error_handle abort_error = calld->MaybeAbort();
- if (abort_error != GRPC_ERROR_NONE) {
- calld->abort_error_ = abort_error;
- grpc_transport_stream_op_batch_finish_with_failure(
- batch, GRPC_ERROR_REF(calld->abort_error_), calld->call_combiner_);
- return;
- }
- } else {
- if (batch->recv_trailing_metadata) {
- // Intercept recv_trailing_metadata callback so that we can inject the
- // failure when aborting streaming calls, because their
- // recv_trailing_metatdata op may not be on the same batch as the
- // send_initial_metadata op.
- calld->original_recv_trailing_metadata_ready_ =
- batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
- batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
- &calld->recv_trailing_metadata_ready_;
- }
- if (calld->abort_error_ != GRPC_ERROR_NONE) {
- // If we already decided to abort, then immediately fail this batch.
- grpc_transport_stream_op_batch_finish_with_failure(
- batch, GRPC_ERROR_REF(calld->abort_error_), calld->call_combiner_);
- return;
- }
+// Construct a promise for one call.
+ArenaPromise<ServerMetadataHandle> FaultInjectionFilter::MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) {
+ auto decision = MakeInjectionDecision(call_args.client_initial_metadata);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_fault_injection_filter_trace)) {
+ gpr_log(GPR_INFO, "chand=%p: Fault injection triggered %s", this,
+ decision.ToString().c_str());
}
- // Chain to the next filter.
- grpc_call_next_op(elem, batch);
+ auto delay = decision.DelayUntil();
+ return TrySeq(
+ Sleep(delay),
+ [decision = std::move(decision)]() { return decision.MaybeAbort(); },
+ next_promise_factory(std::move(call_args)));
}
-CallData::CallData(grpc_call_element* elem, const grpc_call_element_args* args)
- : owning_call_(args->call_stack),
- arena_(args->arena),
- call_combiner_(args->call_combiner) {
- auto* chand = static_cast<ChannelData*>(elem->channel_data);
+FaultInjectionFilter::InjectionDecision
+FaultInjectionFilter::MakeInjectionDecision(
+ const ClientMetadataHandle& initial_metadata) {
// Fetch the fault injection policy from the service config, based on the
// relative index for which policy should this CallData use.
auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
- args->context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
+ GetContext<
+ grpc_call_context_element>()[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA]
+ .value);
auto* method_params = static_cast<FaultInjectionMethodParsedConfig*>(
service_config_call_data->GetMethodParsedConfig(
- chand->service_config_parser_index()));
+ service_config_parser_index_));
+ const FaultInjectionMethodParsedConfig::FaultInjectionPolicy* fi_policy =
+ nullptr;
if (method_params != nullptr) {
- fi_policy_ = method_params->fault_injection_policy(chand->index());
+ fi_policy = method_params->fault_injection_policy(index_);
}
- GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_,
- HijackedRecvTrailingMetadataReady, elem,
- grpc_schedule_on_exec_ctx);
-}
-CallData::~CallData() {
- if (fi_policy_owned_) {
- fi_policy_->~FaultInjectionPolicy();
- }
- GRPC_ERROR_UNREF(abort_error_);
-}
+ grpc_status_code abort_code = fi_policy->abort_code;
+ uint32_t abort_percentage_numerator = fi_policy->abort_percentage_numerator;
+ uint32_t delay_percentage_numerator = fi_policy->delay_percentage_numerator;
+ Duration delay = fi_policy->delay;
-void CallData::DecideWhetherToInjectFaults(
- grpc_metadata_batch* initial_metadata) {
- FaultInjectionMethodParsedConfig::FaultInjectionPolicy* copied_policy =
- nullptr;
// Update the policy with values in initial metadata.
- if (!fi_policy_->abort_code_header.empty() ||
- !fi_policy_->abort_percentage_header.empty() ||
- !fi_policy_->delay_header.empty() ||
- !fi_policy_->delay_percentage_header.empty()) {
- // Defer the actual copy until the first matched header.
- auto maybe_copy_policy_func = [this, &copied_policy]() {
- if (copied_policy == nullptr) {
- copied_policy =
- arena_->New<FaultInjectionMethodParsedConfig::FaultInjectionPolicy>(
- *fi_policy_);
- }
- };
+ if (!fi_policy->abort_code_header.empty() ||
+ !fi_policy->abort_percentage_header.empty() ||
+ !fi_policy->delay_header.empty() ||
+ !fi_policy->delay_percentage_header.empty()) {
TString buffer;
- if (!fi_policy_->abort_code_header.empty() &&
- (copied_policy == nullptr ||
- copied_policy->abort_code == GRPC_STATUS_OK)) {
+ if (!fi_policy->abort_code_header.empty() && abort_code == GRPC_STATUS_OK) {
auto value = initial_metadata->GetStringValue(
- fi_policy_->abort_code_header, &buffer);
+ fi_policy->abort_code_header, &buffer);
if (value.has_value()) {
- maybe_copy_policy_func();
grpc_status_code_from_int(
- AsInt<int>(*value).value_or(GRPC_STATUS_UNKNOWN),
- &copied_policy->abort_code);
+ AsInt<int>(*value).value_or(GRPC_STATUS_UNKNOWN), &abort_code);
}
}
- if (!fi_policy_->abort_percentage_header.empty()) {
+ if (!fi_policy->abort_percentage_header.empty()) {
auto value = initial_metadata->GetStringValue(
- fi_policy_->abort_percentage_header, &buffer);
+ fi_policy->abort_percentage_header, &buffer);
if (value.has_value()) {
- maybe_copy_policy_func();
- copied_policy->abort_percentage_numerator =
- std::min(AsInt<uint32_t>(*value).value_or(-1),
- fi_policy_->abort_percentage_numerator);
+ abort_percentage_numerator = std::min(
+ AsInt<uint32_t>(*value).value_or(-1), abort_percentage_numerator);
}
}
- if (!fi_policy_->delay_header.empty() &&
- (copied_policy == nullptr ||
- copied_policy->delay == Duration::Zero())) {
+ if (!fi_policy->delay_header.empty() && delay == Duration::Zero()) {
auto value =
- initial_metadata->GetStringValue(fi_policy_->delay_header, &buffer);
+ initial_metadata->GetStringValue(fi_policy->delay_header, &buffer);
if (value.has_value()) {
- maybe_copy_policy_func();
- copied_policy->delay = Duration::Milliseconds(
+ delay = Duration::Milliseconds(
std::max(AsInt<int64_t>(*value).value_or(0), int64_t(0)));
}
}
- if (!fi_policy_->delay_percentage_header.empty()) {
+ if (!fi_policy->delay_percentage_header.empty()) {
auto value = initial_metadata->GetStringValue(
- fi_policy_->delay_percentage_header, &buffer);
+ fi_policy->delay_percentage_header, &buffer);
if (value.has_value()) {
- maybe_copy_policy_func();
- copied_policy->delay_percentage_numerator =
- std::min(AsInt<uint32_t>(*value).value_or(-1),
- fi_policy_->delay_percentage_numerator);
+ delay_percentage_numerator = std::min(
+ AsInt<uint32_t>(*value).value_or(-1), delay_percentage_numerator);
}
}
- if (copied_policy != nullptr) fi_policy_ = copied_policy;
}
// Roll the dice
- delay_request_ = fi_policy_->delay != Duration::Zero() &&
- UnderFraction(fi_policy_->delay_percentage_numerator,
- fi_policy_->delay_percentage_denominator);
- abort_request_ = fi_policy_->abort_code != GRPC_STATUS_OK &&
- UnderFraction(fi_policy_->abort_percentage_numerator,
- fi_policy_->abort_percentage_denominator);
- if (!delay_request_ && !abort_request_) {
- if (copied_policy != nullptr) copied_policy->~FaultInjectionPolicy();
- // No fault injection for this call
- } else {
- fi_policy_owned_ = copied_policy != nullptr;
+ bool delay_request = delay != Duration::Zero();
+ bool abort_request = abort_code != GRPC_STATUS_OK;
+ if (delay_request || abort_request) {
+ MutexLock lock(mu_.get());
+ if (delay_request) {
+ delay_request =
+ UnderFraction(&delay_rand_generator_, delay_percentage_numerator,
+ fi_policy->delay_percentage_denominator);
+ }
+ if (abort_request) {
+ abort_request =
+ UnderFraction(&abort_rand_generator_, abort_percentage_numerator,
+ fi_policy->abort_percentage_denominator);
+ }
}
-}
-bool CallData::HaveActiveFaultsQuota(bool increment) {
- if (g_active_faults.load(std::memory_order_acquire) >=
- fi_policy_->max_faults) {
- return false;
- }
- if (increment) g_active_faults.fetch_add(1, std::memory_order_relaxed);
- return true;
+ return InjectionDecision(
+ fi_policy->max_faults, delay_request ? delay : Duration::Zero(),
+ abort_request ? y_absl::optional<y_absl::Status>(y_absl::Status(
+ static_cast<y_absl::StatusCode>(abort_code),
+ fi_policy->abort_message))
+ : y_absl::nullopt);
}
-bool CallData::MaybeDelay() {
- if (delay_request_) {
- return HaveActiveFaultsQuota(true);
- }
- return false;
+bool FaultInjectionFilter::InjectionDecision::HaveActiveFaultsQuota() const {
+ return g_active_faults.load(std::memory_order_acquire) < max_faults_;
}
-grpc_error_handle CallData::MaybeAbort() {
- if (abort_request_ && (delay_request_ || HaveActiveFaultsQuota(false))) {
- return grpc_error_set_int(
- GRPC_ERROR_CREATE_FROM_COPIED_STRING(fi_policy_->abort_message.c_str()),
- GRPC_ERROR_INT_GRPC_STATUS, fi_policy_->abort_code);
+Timestamp FaultInjectionFilter::InjectionDecision::DelayUntil() {
+ if (delay_time_ != Duration::Zero() && HaveActiveFaultsQuota()) {
+ active_fault_ = FaultHandle{true};
+ return Timestamp::Now() + delay_time_;
}
- return GRPC_ERROR_NONE;
-}
-
-void CallData::DelayBatch(grpc_call_element* elem,
- grpc_transport_stream_op_batch* batch) {
- MutexLock lock(&delay_mu_);
- delayed_batch_ = batch;
- resume_batch_canceller_ = new ResumeBatchCanceller(elem);
- Timestamp resume_time = ExecCtx::Get()->Now() + fi_policy_->delay;
- GRPC_CLOSURE_INIT(&batch->handler_private.closure, ResumeBatch, elem,
- grpc_schedule_on_exec_ctx);
- grpc_timer_init(&delay_timer_, resume_time, &batch->handler_private.closure);
+ return Timestamp::InfPast();
}
-void CallData::ResumeBatch(void* arg, grpc_error_handle error) {
- grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
- auto* calld = static_cast<CallData*>(elem->call_data);
- MutexLock lock(&calld->delay_mu_);
- // Cancelled or canceller has already run
- if (error == GRPC_ERROR_CANCELLED ||
- calld->resume_batch_canceller_ == nullptr) {
- return;
- }
- if (GRPC_TRACE_FLAG_ENABLED(grpc_fault_injection_filter_trace)) {
- gpr_log(GPR_INFO, "chand=%p calld=%p: Resuming delayed stream op batch %p",
- elem->channel_data, calld, calld->delayed_batch_);
- }
- // Lame the canceller
- calld->resume_batch_canceller_ = nullptr;
- // Finish fault injection.
- calld->FaultInjectionFinished();
- // Abort if needed.
- error = calld->MaybeAbort();
- if (error != GRPC_ERROR_NONE) {
- calld->abort_error_ = error;
- grpc_transport_stream_op_batch_finish_with_failure(
- calld->delayed_batch_, GRPC_ERROR_REF(calld->abort_error_),
- calld->call_combiner_);
- return;
+y_absl::Status FaultInjectionFilter::InjectionDecision::MaybeAbort() const {
+ if (abort_request_.has_value() &&
+ (delay_time_ != Duration::Zero() || HaveActiveFaultsQuota())) {
+ return abort_request_.value();
}
- // Chain to the next filter.
- grpc_call_next_op(elem, calld->delayed_batch_);
+ return y_absl::OkStatus();
}
-void CallData::HijackedRecvTrailingMetadataReady(void* arg,
- grpc_error_handle error) {
- grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
- auto* calld = static_cast<CallData*>(elem->call_data);
- if (calld->abort_error_ != GRPC_ERROR_NONE) {
- error = grpc_error_add_child(GRPC_ERROR_REF(error),
- GRPC_ERROR_REF(calld->abort_error_));
- } else {
- error = GRPC_ERROR_REF(error);
- }
- Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
- error);
+TString FaultInjectionFilter::InjectionDecision::ToString() const {
+ return y_absl::StrCat("delay=", delay_time_ != Duration::Zero(),
+ " abort=", abort_request_.has_value());
}
-} // namespace
-
-extern const grpc_channel_filter FaultInjectionFilterVtable = {
- CallData::StartTransportStreamOpBatch,
- nullptr,
- grpc_channel_next_op,
- sizeof(CallData),
- CallData::Init,
- grpc_call_stack_ignore_set_pollset_or_pollset_set,
- CallData::Destroy,
- sizeof(ChannelData),
- ChannelData::Init,
- ChannelData::Destroy,
- grpc_channel_next_get_info,
- "fault_injection_filter",
-};
+const grpc_channel_filter FaultInjectionFilter::kFilter =
+ MakePromiseBasedFilter<FaultInjectionFilter, FilterEndpoint::kClient>(
+ "fault_injection_filter");
void FaultInjectionFilterRegister(CoreConfiguration::Builder* builder) {
FaultInjectionServiceConfigParser::Register(builder);
diff --git a/contrib/libs/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.h b/contrib/libs/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.h
index fbc1eb0cf9..b31322e590 100644
--- a/contrib/libs/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.h
+++ b/contrib/libs/grpc/src/core/ext/filters/fault_injection/fault_injection_filter.h
@@ -19,8 +19,20 @@
#include <grpc/support/port_platform.h>
-#include "src/core/ext/filters/fault_injection/service_config_parser.h"
-#include "src/core/lib/channel/channel_stack.h"
+#include <stddef.h>
+
+#include <memory>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/random/random.h"
+#include "y_absl/status/statusor.h"
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/promise_based_filter.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/promise/arena_promise.h"
+#include "src/core/lib/transport/transport.h"
// Channel arg key for enabling parsing fault injection via method config.
#define GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG \
@@ -32,7 +44,31 @@ namespace grpc_core {
// of the ordinary channel stack. The fault injection filter fetches fault
// injection policy from the method config of service config returned by the
// resolver, and enforces the fault injection policy.
-extern const grpc_channel_filter FaultInjectionFilterVtable;
+class FaultInjectionFilter : public ChannelFilter {
+ public:
+ static const grpc_channel_filter kFilter;
+
+ static y_absl::StatusOr<FaultInjectionFilter> Create(
+ const ChannelArgs& args, ChannelFilter::Args filter_args);
+
+ // Construct a promise for one call.
+ ArenaPromise<ServerMetadataHandle> MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) override;
+
+ private:
+ explicit FaultInjectionFilter(ChannelFilter::Args filter_args);
+
+ class InjectionDecision;
+ InjectionDecision MakeInjectionDecision(
+ const ClientMetadataHandle& initial_metadata);
+
+ // The relative index of instances of the same filter.
+ size_t index_;
+ const size_t service_config_parser_index_;
+ std::unique_ptr<Mutex> mu_;
+ y_absl::InsecureBitGen abort_rand_generator_ Y_ABSL_GUARDED_BY(mu_);
+ y_absl::InsecureBitGen delay_rand_generator_ Y_ABSL_GUARDED_BY(mu_);
+};
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/fault_injection/service_config_parser.cc b/contrib/libs/grpc/src/core/ext/filters/fault_injection/service_config_parser.cc
index 220f3650d7..85ca26538f 100644
--- a/contrib/libs/grpc/src/core/ext/filters/fault_injection/service_config_parser.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/fault_injection/service_config_parser.cc
@@ -18,15 +18,18 @@
#include "src/core/ext/filters/fault_injection/service_config_parser.h"
+#include <algorithm>
#include <vector>
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_cat.h"
-#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
#include "src/core/ext/filters/fault_injection/fault_injection_filter.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/status_util.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/json/json_util.h"
namespace grpc_core {
@@ -138,13 +141,12 @@ ParseFaultInjectionPolicy(const Json::Array& policies_json_array,
} // namespace
-std::unique_ptr<ServiceConfigParser::ParsedConfig>
-FaultInjectionServiceConfigParser::ParsePerMethodParams(
- const grpc_channel_args* args, const Json& json, grpc_error_handle* error) {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
+y_absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
+FaultInjectionServiceConfigParser::ParsePerMethodParams(const ChannelArgs& args,
+ const Json& json) {
// Only parse fault injection policy if the following channel arg is present.
- if (!grpc_channel_args_find_bool(
- args, GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG, false)) {
+ if (!args.GetBool(GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG)
+ .value_or(false)) {
return nullptr;
}
// Parse fault injection policy from given Json
@@ -157,10 +159,16 @@ FaultInjectionServiceConfigParser::ParsePerMethodParams(
fault_injection_policies =
ParseFaultInjectionPolicy(*policies_json_array, &error_list);
}
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("Fault injection parser", &error_list);
- if (*error != GRPC_ERROR_NONE || fault_injection_policies.empty()) {
- return nullptr;
+ if (!error_list.empty()) {
+ grpc_error_handle error =
+ GRPC_ERROR_CREATE_FROM_VECTOR("Fault injection parser", &error_list);
+ y_absl::Status status = y_absl::InvalidArgumentError(
+ y_absl::StrCat("error parsing fault injection method parameters: ",
+ grpc_error_std_string(error)));
+ GRPC_ERROR_UNREF(error);
+ return status;
}
+ if (fault_injection_policies.empty()) return nullptr;
return y_absl::make_unique<FaultInjectionMethodParsedConfig>(
std::move(fault_injection_policies));
}
diff --git a/contrib/libs/grpc/src/core/ext/filters/fault_injection/service_config_parser.h b/contrib/libs/grpc/src/core/ext/filters/fault_injection/service_config_parser.h
index 96d559eb56..8c3cf284ee 100644
--- a/contrib/libs/grpc/src/core/ext/filters/fault_injection/service_config_parser.h
+++ b/contrib/libs/grpc/src/core/ext/filters/fault_injection/service_config_parser.h
@@ -19,10 +19,25 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include <limits>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
#include <vector>
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/status.h>
+
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/json/json.h"
#include "src/core/lib/service_config/service_config_parser.h"
namespace grpc_core {
@@ -58,8 +73,8 @@ class FaultInjectionMethodParsedConfig
// keep track of their relative positions. The FaultInjectionFilter uses this
// method to access the parsed fault injection policy in service config,
// whether it came from xDS resolver or directly from service config
- const FaultInjectionPolicy* fault_injection_policy(int index) const {
- if (static_cast<size_t>(index) >= fault_injection_policies_.size()) {
+ const FaultInjectionPolicy* fault_injection_policy(size_t index) const {
+ if (index >= fault_injection_policies_.size()) {
return nullptr;
}
return &fault_injection_policies_[index];
@@ -74,9 +89,8 @@ class FaultInjectionServiceConfigParser final
public:
y_absl::string_view name() const override { return parser_name(); }
// Parses the per-method service config for fault injection filter.
- std::unique_ptr<ServiceConfigParser::ParsedConfig> ParsePerMethodParams(
- const grpc_channel_args* args, const Json& json,
- grpc_error_handle* error) override;
+ y_absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
+ ParsePerMethodParams(const ChannelArgs& args, const Json& json) override;
// Returns the parser index for FaultInjectionServiceConfigParser.
static size_t ParserIndex();
// Registers FaultInjectionServiceConfigParser to ServiceConfigParser.
diff --git a/contrib/libs/grpc/src/core/ext/filters/http/client/http_client_filter.cc b/contrib/libs/grpc/src/core/ext/filters/http/client/http_client_filter.cc
index 49ecb49393..478739c165 100644
--- a/contrib/libs/grpc/src/core/ext/filters/http/client/http_client_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/http/client/http_client_filter.cc
@@ -19,504 +19,142 @@
#include "src/core/ext/filters/http/client/http_client_filter.h"
-#include <stdint.h>
-#include <string.h>
-
+#include <algorithm>
+#include <functional>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
#include <vector>
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
-#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
+#include <grpc/grpc.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/status.h>
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
-#include "src/core/lib/profiling/timers.h"
-#include "src/core/lib/slice/b64.h"
+#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/promise/call_push_pull.h"
+#include "src/core/lib/promise/context.h"
+#include "src/core/lib/promise/detail/basic_seq.h"
+#include "src/core/lib/promise/latch.h"
+#include "src/core/lib/promise/seq.h"
+#include "src/core/lib/resource_quota/arena.h"
#include "src/core/lib/slice/percent_encoding.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
#include "src/core/lib/transport/status_conversion.h"
+#include "src/core/lib/transport/transport_fwd.h"
#include "src/core/lib/transport/transport_impl.h"
-#define EXPECTED_CONTENT_TYPE "application/grpc"
-#define EXPECTED_CONTENT_TYPE_LENGTH (sizeof(EXPECTED_CONTENT_TYPE) - 1)
-
-/* default maximum size of payload eligible for GET request */
-static constexpr size_t kMaxPayloadSizeForGet = 2048;
+namespace grpc_core {
-static void recv_initial_metadata_ready(void* user_data,
- grpc_error_handle error);
-static void recv_trailing_metadata_ready(void* user_data,
- grpc_error_handle error);
-static void on_send_message_next_done(void* arg, grpc_error_handle error);
-static void send_message_on_complete(void* arg, grpc_error_handle error);
+const grpc_channel_filter HttpClientFilter::kFilter =
+ MakePromiseBasedFilter<HttpClientFilter, FilterEndpoint::kClient,
+ kFilterExaminesServerInitialMetadata>("http-client");
namespace {
-struct call_data {
- call_data(grpc_call_element* elem, const grpc_call_element_args& args)
- : call_combiner(args.call_combiner) {
- GRPC_CLOSURE_INIT(&recv_initial_metadata_ready,
- ::recv_initial_metadata_ready, elem,
- grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready,
- ::recv_trailing_metadata_ready, elem,
- grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&on_send_message_next_done, ::on_send_message_next_done,
- elem, grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&send_message_on_complete, ::send_message_on_complete,
- elem, grpc_schedule_on_exec_ctx);
- }
-
- ~call_data() { GRPC_ERROR_UNREF(recv_initial_metadata_error); }
-
- grpc_core::CallCombiner* call_combiner;
- // State for handling recv_initial_metadata ops.
- grpc_metadata_batch* recv_initial_metadata;
- grpc_error_handle recv_initial_metadata_error = GRPC_ERROR_NONE;
- grpc_closure* original_recv_initial_metadata_ready = nullptr;
- grpc_closure recv_initial_metadata_ready;
- // State for handling recv_trailing_metadata ops.
- grpc_metadata_batch* recv_trailing_metadata;
- grpc_closure* original_recv_trailing_metadata_ready;
- grpc_closure recv_trailing_metadata_ready;
- grpc_error_handle recv_trailing_metadata_error = GRPC_ERROR_NONE;
- bool seen_recv_trailing_metadata_ready = false;
- // State for handling send_message ops.
- grpc_transport_stream_op_batch* send_message_batch;
- size_t send_message_bytes_read = 0;
- grpc_core::ManualConstructor<grpc_core::ByteStreamCache> send_message_cache;
- grpc_core::ManualConstructor<grpc_core::ByteStreamCache::CachingByteStream>
- send_message_caching_stream;
- grpc_closure on_send_message_next_done;
- grpc_closure* original_send_message_on_complete;
- grpc_closure send_message_on_complete;
-};
-
-struct channel_data {
- grpc_core::HttpSchemeMetadata::ValueType static_scheme;
- grpc_core::Slice user_agent;
- size_t max_payload_size_for_get;
-};
-} // namespace
-
-static grpc_error_handle client_filter_incoming_metadata(
- grpc_metadata_batch* b) {
- if (auto* status = b->get_pointer(grpc_core::HttpStatusMetadata())) {
+y_absl::Status CheckServerMetadata(ServerMetadata* b) {
+ if (auto* status = b->get_pointer(HttpStatusMetadata())) {
/* If both gRPC status and HTTP status are provided in the response, we
* should prefer the gRPC status code, as mentioned in
* https://github.com/grpc/grpc/blob/master/doc/http-grpc-status-mapping.md.
*/
- const grpc_status_code* grpc_status =
- b->get_pointer(grpc_core::GrpcStatusMetadata());
+ const grpc_status_code* grpc_status = b->get_pointer(GrpcStatusMetadata());
if (grpc_status != nullptr || *status == 200) {
- b->Remove(grpc_core::HttpStatusMetadata());
+ b->Remove(HttpStatusMetadata());
} else {
- TString msg =
- y_absl::StrCat("Received http2 header with status: ", *status);
- grpc_error_handle e = grpc_error_set_str(
- grpc_error_set_int(
- grpc_error_set_str(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Received http2 :status header with non-200 OK status"),
- GRPC_ERROR_STR_VALUE, ::ToString(*status)),
- GRPC_ERROR_INT_GRPC_STATUS,
+ return y_absl::Status(
+ static_cast<y_absl::StatusCode>(
grpc_http2_status_to_grpc_status(*status)),
- GRPC_ERROR_STR_GRPC_MESSAGE, msg);
- return e;
- }
- }
-
- if (grpc_core::Slice* grpc_message =
- b->get_pointer(grpc_core::GrpcMessageMetadata())) {
- *grpc_message =
- grpc_core::PermissivePercentDecodeSlice(std::move(*grpc_message));
- }
-
- b->Remove(grpc_core::ContentTypeMetadata());
-
- return GRPC_ERROR_NONE;
-}
-
-static void recv_initial_metadata_ready(void* user_data,
- grpc_error_handle error) {
- grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
- call_data* calld = static_cast<call_data*>(elem->call_data);
- if (error == GRPC_ERROR_NONE) {
- error = client_filter_incoming_metadata(calld->recv_initial_metadata);
- calld->recv_initial_metadata_error = GRPC_ERROR_REF(error);
- } else {
- (void)GRPC_ERROR_REF(error);
- }
- grpc_closure* closure = calld->original_recv_initial_metadata_ready;
- calld->original_recv_initial_metadata_ready = nullptr;
- if (calld->seen_recv_trailing_metadata_ready) {
- GRPC_CALL_COMBINER_START(
- calld->call_combiner, &calld->recv_trailing_metadata_ready,
- calld->recv_trailing_metadata_error, "continue recv_trailing_metadata");
- }
- grpc_core::Closure::Run(DEBUG_LOCATION, closure, error);
-}
-
-static void recv_trailing_metadata_ready(void* user_data,
- grpc_error_handle error) {
- grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
- call_data* calld = static_cast<call_data*>(elem->call_data);
- if (calld->original_recv_initial_metadata_ready != nullptr) {
- calld->recv_trailing_metadata_error = GRPC_ERROR_REF(error);
- calld->seen_recv_trailing_metadata_ready = true;
- GRPC_CALL_COMBINER_STOP(calld->call_combiner,
- "deferring recv_trailing_metadata_ready until "
- "after recv_initial_metadata_ready");
- return;
- }
- if (error == GRPC_ERROR_NONE) {
- error = client_filter_incoming_metadata(calld->recv_trailing_metadata);
- } else {
- (void)GRPC_ERROR_REF(error);
- }
- error = grpc_error_add_child(
- error, GRPC_ERROR_REF(calld->recv_initial_metadata_error));
- grpc_core::Closure::Run(DEBUG_LOCATION,
- calld->original_recv_trailing_metadata_ready, error);
-}
-
-static void send_message_on_complete(void* arg, grpc_error_handle error) {
- grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
- call_data* calld = static_cast<call_data*>(elem->call_data);
- calld->send_message_cache.Destroy();
- // Set the batch's send_message bit back to true, so the retry code
- // above knows what was in this batch.
- calld->send_message_batch->send_message = true;
- grpc_core::Closure::Run(DEBUG_LOCATION,
- calld->original_send_message_on_complete,
- GRPC_ERROR_REF(error));
-}
-
-// Pulls a slice from the send_message byte stream, updating
-// calld->send_message_bytes_read.
-static grpc_error_handle pull_slice_from_send_message(call_data* calld) {
- grpc_slice incoming_slice;
- grpc_error_handle error =
- calld->send_message_caching_stream->Pull(&incoming_slice);
- if (error == GRPC_ERROR_NONE) {
- calld->send_message_bytes_read += GRPC_SLICE_LENGTH(incoming_slice);
- grpc_slice_unref_internal(incoming_slice);
- }
- return error;
-}
-
-// Reads as many slices as possible from the send_message byte stream.
-// Upon successful return, if calld->send_message_bytes_read ==
-// calld->send_message_caching_stream->length(), then we have completed
-// reading from the byte stream; otherwise, an async read has been dispatched
-// and on_send_message_next_done() will be invoked when it is complete.
-static grpc_error_handle read_all_available_send_message_data(
- call_data* calld) {
- while (calld->send_message_caching_stream->Next(
- SIZE_MAX, &calld->on_send_message_next_done)) {
- grpc_error_handle error = pull_slice_from_send_message(calld);
- if (error != GRPC_ERROR_NONE) return error;
- if (calld->send_message_bytes_read ==
- calld->send_message_caching_stream->length()) {
- break;
+ y_absl::StrCat("Received http2 header with status: ", *status));
}
}
- return GRPC_ERROR_NONE;
-}
-// Async callback for ByteStream::Next().
-static void on_send_message_next_done(void* arg, grpc_error_handle error) {
- grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
- call_data* calld = static_cast<call_data*>(elem->call_data);
- if (error != GRPC_ERROR_NONE) {
- grpc_transport_stream_op_batch_finish_with_failure(
- calld->send_message_batch, error, calld->call_combiner);
- return;
+ if (Slice* grpc_message = b->get_pointer(GrpcMessageMetadata())) {
+ *grpc_message = PermissivePercentDecodeSlice(std::move(*grpc_message));
}
- error = pull_slice_from_send_message(calld);
- if (error != GRPC_ERROR_NONE) {
- grpc_transport_stream_op_batch_finish_with_failure(
- calld->send_message_batch, error, calld->call_combiner);
- return;
- }
- // There may or may not be more to read, but we don't care. If we got
- // here, then we know that all of the data was not available
- // synchronously, so we were not able to do a cached call. Instead,
- // we just reset the byte stream and then send down the batch as-is.
- calld->send_message_caching_stream->Reset();
- grpc_call_next_op(elem, calld->send_message_batch);
-}
-static char* slice_buffer_to_string(grpc_slice_buffer* slice_buffer) {
- char* payload_bytes =
- static_cast<char*>(gpr_malloc(slice_buffer->length + 1));
- size_t offset = 0;
- for (size_t i = 0; i < slice_buffer->count; ++i) {
- memcpy(payload_bytes + offset,
- GRPC_SLICE_START_PTR(slice_buffer->slices[i]),
- GRPC_SLICE_LENGTH(slice_buffer->slices[i]));
- offset += GRPC_SLICE_LENGTH(slice_buffer->slices[i]);
- }
- *(payload_bytes + offset) = '\0';
- return payload_bytes;
+ b->Remove(ContentTypeMetadata());
+ return y_absl::OkStatus();
}
-// Modifies the path entry in the batch's send_initial_metadata to
-// append the base64-encoded query for a GET request.
-static void update_path_for_get(grpc_call_element* elem,
- grpc_transport_stream_op_batch* batch) {
- grpc_metadata_batch* b =
- batch->payload->send_initial_metadata.send_initial_metadata;
- call_data* calld = static_cast<call_data*>(elem->call_data);
- const grpc_core::Slice& path_slice =
- *b->get_pointer(grpc_core::HttpPathMetadata());
- /* sum up individual component's lengths and allocate enough memory to
- * hold combined path+query */
- size_t estimated_len = path_slice.size();
- estimated_len++; /* for the '?' */
- estimated_len += grpc_base64_estimate_encoded_size(
- batch->payload->send_message.send_message->length(),
- false /* multi_line */);
- grpc_core::MutableSlice path_with_query_slice =
- grpc_core::MutableSlice::CreateUninitialized(estimated_len);
- /* memcopy individual pieces into this slice */
- uint8_t* write_ptr = path_with_query_slice.begin();
- const uint8_t* original_path = path_slice.data();
- memcpy(write_ptr, original_path, path_slice.size());
- write_ptr += path_slice.size();
- *write_ptr++ = '?';
- char* payload_bytes =
- slice_buffer_to_string(calld->send_message_cache->cache_buffer());
- grpc_base64_encode_core(reinterpret_cast<char*>(write_ptr), payload_bytes,
- batch->payload->send_message.send_message->length(),
- true /* url_safe */, false /* multi_line */);
- gpr_free(payload_bytes);
- char* t = reinterpret_cast<char*>(path_with_query_slice.begin()) +
- path_slice.size();
- /* safe to use strlen since base64_encode will always add '\0' */
- /* substitute previous path with the new path+query */
- b->Set(grpc_core::HttpPathMetadata(),
- grpc_core::Slice(path_with_query_slice.TakeSubSlice(
- 0, path_slice.size() + strlen(t))));
+HttpSchemeMetadata::ValueType SchemeFromArgs(const ChannelArgs& args) {
+ HttpSchemeMetadata::ValueType scheme = HttpSchemeMetadata::Parse(
+ args.GetString(GRPC_ARG_HTTP2_SCHEME).value_or(""),
+ [](y_absl::string_view, const Slice&) {});
+ if (scheme == HttpSchemeMetadata::kInvalid) return HttpSchemeMetadata::kHttp;
+ return scheme;
}
-static void http_client_start_transport_stream_op_batch(
- grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
- call_data* calld = static_cast<call_data*>(elem->call_data);
- channel_data* channeld = static_cast<channel_data*>(elem->channel_data);
- GPR_TIMER_SCOPE("http_client_start_transport_stream_op_batch", 0);
+Slice UserAgentFromArgs(const ChannelArgs& args, const char* transport_name) {
+ std::vector<TString> fields;
+ auto add = [&fields](y_absl::string_view x) {
+ if (!x.empty()) fields.push_back(TString(x));
+ };
- if (batch->recv_initial_metadata) {
- /* substitute our callback for the higher callback */
- calld->recv_initial_metadata =
- batch->payload->recv_initial_metadata.recv_initial_metadata;
- calld->original_recv_initial_metadata_ready =
- batch->payload->recv_initial_metadata.recv_initial_metadata_ready;
- batch->payload->recv_initial_metadata.recv_initial_metadata_ready =
- &calld->recv_initial_metadata_ready;
- }
-
- if (batch->recv_trailing_metadata) {
- /* substitute our callback for the higher callback */
- calld->recv_trailing_metadata =
- batch->payload->recv_trailing_metadata.recv_trailing_metadata;
- calld->original_recv_trailing_metadata_ready =
- batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
- batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
- &calld->recv_trailing_metadata_ready;
- }
-
- grpc_error_handle error = GRPC_ERROR_NONE;
- bool batch_will_be_handled_asynchronously = false;
- if (batch->send_initial_metadata) {
- // Decide which HTTP VERB to use. We use GET if the request is marked
- // cacheable, and the operation contains both initial metadata and send
- // message, and the payload is below the size threshold, and all the data
- // for this request is immediately available.
- grpc_core::HttpMethodMetadata::ValueType method =
- grpc_core::HttpMethodMetadata::kPost;
- if (batch->send_message &&
- (batch->payload->send_initial_metadata.send_initial_metadata_flags &
- GRPC_INITIAL_METADATA_CACHEABLE_REQUEST) &&
- batch->payload->send_message.send_message->length() <
- channeld->max_payload_size_for_get) {
- calld->send_message_bytes_read = 0;
- calld->send_message_cache.Init(
- std::move(batch->payload->send_message.send_message));
- calld->send_message_caching_stream.Init(calld->send_message_cache.get());
- batch->payload->send_message.send_message.reset(
- calld->send_message_caching_stream.get());
- calld->original_send_message_on_complete = batch->on_complete;
- batch->on_complete = &calld->send_message_on_complete;
- calld->send_message_batch = batch;
- error = read_all_available_send_message_data(calld);
- if (error != GRPC_ERROR_NONE) goto done;
- // If all the data has been read, then we can use GET.
- if (calld->send_message_bytes_read ==
- calld->send_message_caching_stream->length()) {
- method = grpc_core::HttpMethodMetadata::kGet;
- update_path_for_get(elem, batch);
- batch->send_message = false;
- calld->send_message_caching_stream->Orphan();
- } else {
- // Not all data is available. The batch will be sent down
- // asynchronously in on_send_message_next_done().
- batch_will_be_handled_asynchronously = true;
- // Fall back to POST.
- gpr_log(GPR_DEBUG,
- "Request is marked Cacheable but not all data is available. "
- "Falling back to POST");
- }
- } else if (batch->payload->send_initial_metadata
- .send_initial_metadata_flags &
- GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST) {
- method = grpc_core::HttpMethodMetadata::kPut;
- }
-
- /* Send : prefixed headers, which have to be before any application
- layer headers. */
- batch->payload->send_initial_metadata.send_initial_metadata->Set(
- grpc_core::HttpMethodMetadata(), method);
- batch->payload->send_initial_metadata.send_initial_metadata->Set(
- grpc_core::HttpSchemeMetadata(), channeld->static_scheme);
- batch->payload->send_initial_metadata.send_initial_metadata->Set(
- grpc_core::TeMetadata(), grpc_core::TeMetadata::kTrailers);
- batch->payload->send_initial_metadata.send_initial_metadata->Set(
- grpc_core::ContentTypeMetadata(),
- grpc_core::ContentTypeMetadata::kApplicationGrpc);
- batch->payload->send_initial_metadata.send_initial_metadata->Set(
- grpc_core::UserAgentMetadata(), channeld->user_agent.Ref());
- }
-
-done:
- if (error != GRPC_ERROR_NONE) {
- grpc_transport_stream_op_batch_finish_with_failure(batch, error,
- calld->call_combiner);
- } else if (!batch_will_be_handled_asynchronously) {
- grpc_call_next_op(elem, batch);
- }
-}
-
-/* Constructor for call_data */
-static grpc_error_handle http_client_init_call_elem(
- grpc_call_element* elem, const grpc_call_element_args* args) {
- new (elem->call_data) call_data(elem, *args);
- return GRPC_ERROR_NONE;
-}
-
-/* Destructor for call_data */
-static void http_client_destroy_call_elem(
- grpc_call_element* elem, const grpc_call_final_info* /*final_info*/,
- grpc_closure* /*ignored*/) {
- call_data* calld = static_cast<call_data*>(elem->call_data);
- calld->~call_data();
-}
-
-static grpc_core::HttpSchemeMetadata::ValueType scheme_from_args(
- const grpc_channel_args* args) {
- if (args != nullptr) {
- for (size_t i = 0; i < args->num_args; ++i) {
- if (args->args[i].type == GRPC_ARG_STRING &&
- 0 == strcmp(args->args[i].key, GRPC_ARG_HTTP2_SCHEME)) {
- grpc_core::HttpSchemeMetadata::ValueType scheme =
- grpc_core::HttpSchemeMetadata::Parse(
- args->args[i].value.string,
- [](y_absl::string_view, const grpc_core::Slice&) {});
- if (scheme != grpc_core::HttpSchemeMetadata::kInvalid) return scheme;
- }
- }
- }
- return grpc_core::HttpSchemeMetadata::kHttp;
-}
-
-static size_t max_payload_size_from_args(const grpc_channel_args* args) {
- if (args != nullptr) {
- for (size_t i = 0; i < args->num_args; ++i) {
- if (0 == strcmp(args->args[i].key, GRPC_ARG_MAX_PAYLOAD_SIZE_FOR_GET)) {
- if (args->args[i].type != GRPC_ARG_INTEGER) {
- gpr_log(GPR_ERROR, "%s: must be an integer",
- GRPC_ARG_MAX_PAYLOAD_SIZE_FOR_GET);
- } else {
- return static_cast<size_t>(args->args[i].value.integer);
- }
- }
- }
- }
- return kMaxPayloadSizeForGet;
-}
-
-static grpc_core::Slice user_agent_from_args(const grpc_channel_args* args,
- const char* transport_name) {
- std::vector<TString> user_agent_fields;
-
- for (size_t i = 0; args && i < args->num_args; i++) {
- if (0 == strcmp(args->args[i].key, GRPC_ARG_PRIMARY_USER_AGENT_STRING)) {
- if (args->args[i].type != GRPC_ARG_STRING) {
- gpr_log(GPR_ERROR, "Channel argument '%s' should be a string",
- GRPC_ARG_PRIMARY_USER_AGENT_STRING);
- } else {
- user_agent_fields.push_back(args->args[i].value.string);
- }
- }
- }
-
- user_agent_fields.push_back(
- y_absl::StrFormat("grpc-c/%s (%s; %s)", grpc_version_string(),
+ add(args.GetString(GRPC_ARG_PRIMARY_USER_AGENT_STRING).value_or(""));
+ add(y_absl::StrFormat("grpc-c/%s (%s; %s)", grpc_version_string(),
GPR_PLATFORM_STRING, transport_name));
+ add(args.GetString(GRPC_ARG_SECONDARY_USER_AGENT_STRING).value_or(""));
- for (size_t i = 0; args && i < args->num_args; i++) {
- if (0 == strcmp(args->args[i].key, GRPC_ARG_SECONDARY_USER_AGENT_STRING)) {
- if (args->args[i].type != GRPC_ARG_STRING) {
- gpr_log(GPR_ERROR, "Channel argument '%s' should be a string",
- GRPC_ARG_SECONDARY_USER_AGENT_STRING);
- } else {
- user_agent_fields.push_back(args->args[i].value.string);
- }
- }
- }
-
- TString user_agent_string = y_absl::StrJoin(user_agent_fields, " ");
- return grpc_core::Slice::FromCopiedString(user_agent_string.c_str());
-}
-
-/* Constructor for channel_data */
-static grpc_error_handle http_client_init_channel_elem(
- grpc_channel_element* elem, grpc_channel_element_args* args) {
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
- new (chand) channel_data();
- GPR_ASSERT(!args->is_last);
- auto* transport = grpc_channel_args_find_pointer<grpc_transport>(
- args->channel_args, GRPC_ARG_TRANSPORT);
- GPR_ASSERT(transport != nullptr);
- chand->static_scheme = scheme_from_args(args->channel_args);
- chand->max_payload_size_for_get =
- max_payload_size_from_args(args->channel_args);
- chand->user_agent = grpc_core::Slice(
- user_agent_from_args(args->channel_args, transport->vtable->name));
- return GRPC_ERROR_NONE;
-}
-
-/* Destructor for channel data */
-static void http_client_destroy_channel_elem(grpc_channel_element* elem) {
- static_cast<channel_data*>(elem->channel_data)->~channel_data();
+ return Slice::FromCopiedString(y_absl::StrJoin(fields, " "));
}
+} // namespace
-const grpc_channel_filter grpc_http_client_filter = {
- http_client_start_transport_stream_op_batch,
- nullptr,
- grpc_channel_next_op,
- sizeof(call_data),
- http_client_init_call_elem,
- grpc_call_stack_ignore_set_pollset_or_pollset_set,
- http_client_destroy_call_elem,
- sizeof(channel_data),
- http_client_init_channel_elem,
- http_client_destroy_channel_elem,
- grpc_channel_next_get_info,
- "http-client"};
+ArenaPromise<ServerMetadataHandle> HttpClientFilter::MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) {
+ auto& md = call_args.client_initial_metadata;
+ if (test_only_use_put_requests_) {
+ md->Set(HttpMethodMetadata(), HttpMethodMetadata::kPut);
+ } else {
+ md->Set(HttpMethodMetadata(), HttpMethodMetadata::kPost);
+ }
+ md->Set(HttpSchemeMetadata(), scheme_);
+ md->Set(TeMetadata(), TeMetadata::kTrailers);
+ md->Set(ContentTypeMetadata(), ContentTypeMetadata::kApplicationGrpc);
+ md->Set(UserAgentMetadata(), user_agent_.Ref());
+
+ auto* read_latch = GetContext<Arena>()->New<Latch<ServerMetadata*>>();
+ auto* write_latch =
+ std::exchange(call_args.server_initial_metadata, read_latch);
+
+ return CallPushPull(
+ Seq(next_promise_factory(std::move(call_args)),
+ [](ServerMetadataHandle md) -> ServerMetadataHandle {
+ auto r = CheckServerMetadata(md.get());
+ if (!r.ok()) return ServerMetadataHandle(r);
+ return md;
+ }),
+ []() { return y_absl::OkStatus(); },
+ Seq(read_latch->Wait(),
+ [write_latch](ServerMetadata** md) -> y_absl::Status {
+ auto r =
+ *md == nullptr ? y_absl::OkStatus() : CheckServerMetadata(*md);
+ write_latch->Set(*md);
+ return r;
+ }));
+}
+
+HttpClientFilter::HttpClientFilter(HttpSchemeMetadata::ValueType scheme,
+ Slice user_agent,
+ bool test_only_use_put_requests)
+ : scheme_(scheme),
+ user_agent_(std::move(user_agent)),
+ test_only_use_put_requests_(test_only_use_put_requests) {}
+
+y_absl::StatusOr<HttpClientFilter> HttpClientFilter::Create(
+ const ChannelArgs& args, ChannelFilter::Args) {
+ auto* transport = args.GetObject<grpc_transport>();
+ if (transport == nullptr) {
+ return y_absl::InvalidArgumentError("HttpClientFilter needs a transport");
+ }
+ return HttpClientFilter(
+ SchemeFromArgs(args), UserAgentFromArgs(args, transport->vtable->name),
+ args.GetInt(GRPC_ARG_TEST_ONLY_USE_PUT_REQUESTS).value_or(false));
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/http/client/http_client_filter.h b/contrib/libs/grpc/src/core/ext/filters/http/client/http_client_filter.h
index a2f16ddbfb..db34c07bad 100644
--- a/contrib/libs/grpc/src/core/ext/filters/http/client/http_client_filter.h
+++ b/contrib/libs/grpc/src/core/ext/filters/http/client/http_client_filter.h
@@ -20,12 +20,42 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/channel/channel_stack.h"
+#include "y_absl/status/statusor.h"
-/* Processes metadata on the client side for HTTP2 transports */
-extern const grpc_channel_filter grpc_http_client_filter;
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/promise_based_filter.h"
+#include "src/core/lib/promise/arena_promise.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
-/* Channel arg to determine maximum size of payload eligible for GET request */
-#define GRPC_ARG_MAX_PAYLOAD_SIZE_FOR_GET "grpc.max_payload_size_for_get"
+namespace grpc_core {
+
+class HttpClientFilter : public ChannelFilter {
+ public:
+ static const grpc_channel_filter kFilter;
+
+ static y_absl::StatusOr<HttpClientFilter> Create(
+ const ChannelArgs& args, ChannelFilter::Args filter_args);
+
+ // Construct a promise for one call.
+ ArenaPromise<ServerMetadataHandle> MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) override;
+
+ private:
+ HttpClientFilter(HttpSchemeMetadata::ValueType scheme, Slice user_agent,
+ bool test_only_use_put_requests);
+
+ HttpSchemeMetadata::ValueType scheme_;
+ Slice user_agent_;
+ bool test_only_use_put_requests_;
+};
+
+// A test-only channel arg to allow testing gRPC Core server behavior on PUT
+// requests.
+#define GRPC_ARG_TEST_ONLY_USE_PUT_REQUESTS "grpc.testing.use_put_requests"
+
+} // namespace grpc_core
#endif /* GRPC_CORE_EXT_FILTERS_HTTP_CLIENT_HTTP_CLIENT_FILTER_H */
diff --git a/contrib/libs/grpc/src/core/ext/filters/http/client_authority_filter.cc b/contrib/libs/grpc/src/core/ext/filters/http/client_authority_filter.cc
index e5cbd42122..98f68eec1d 100644
--- a/contrib/libs/grpc/src/core/ext/filters/http/client_authority_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/http/client_authority_filter.cc
@@ -20,72 +20,62 @@
#include "src/core/ext/filters/http/client_authority_filter.h"
-#include <assert.h>
#include <limits.h>
-#include <string.h>
-#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
+#include <functional>
-#include "src/core/ext/filters/http/client_authority_filter.h"
+#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
+
+#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
-#include "src/core/lib/surface/call.h"
+#include "src/core/lib/surface/channel_init.h"
#include "src/core/lib/surface/channel_stack_type.h"
+#include "src/core/lib/transport/metadata_batch.h"
namespace grpc_core {
y_absl::StatusOr<ClientAuthorityFilter> ClientAuthorityFilter::Create(
- const grpc_channel_args* args, ChannelFilter::Args) {
- const grpc_arg* default_authority_arg =
- grpc_channel_args_find(args, GRPC_ARG_DEFAULT_AUTHORITY);
- if (default_authority_arg == nullptr) {
+ const ChannelArgs& args, ChannelFilter::Args) {
+ y_absl::optional<y_absl::string_view> default_authority =
+ args.GetString(GRPC_ARG_DEFAULT_AUTHORITY);
+ if (!default_authority.has_value()) {
return y_absl::InvalidArgumentError(
- "GRPC_ARG_DEFAULT_AUTHORITY channel arg. not found. Note that direct "
- "channels must explicitly specify a value for this argument.");
+ "GRPC_ARG_DEFAULT_AUTHORITY string channel arg. not found. Note that "
+ "direct channels must explicitly specify a value for this argument.");
}
- const char* default_authority_str =
- grpc_channel_arg_get_string(default_authority_arg);
- if (default_authority_str == nullptr) {
- return y_absl::InvalidArgumentError(
- "GRPC_ARG_DEFAULT_AUTHORITY channel arg. must be a string");
- }
- return ClientAuthorityFilter(Slice::FromCopiedString(default_authority_str));
+ return ClientAuthorityFilter(Slice::FromCopiedString(*default_authority));
}
-ArenaPromise<TrailingMetadata> ClientAuthorityFilter::MakeCallPromise(
- ClientInitialMetadata initial_metadata,
- NextPromiseFactory next_promise_factory) {
+ArenaPromise<ServerMetadataHandle> ClientAuthorityFilter::MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) {
// If no authority is set, set the default authority.
- if (initial_metadata->get_pointer(HttpAuthorityMetadata()) == nullptr) {
- initial_metadata->Set(HttpAuthorityMetadata(), default_authority_.Ref());
+ if (call_args.client_initial_metadata->get_pointer(HttpAuthorityMetadata()) ==
+ nullptr) {
+ call_args.client_initial_metadata->Set(HttpAuthorityMetadata(),
+ default_authority_.Ref());
}
// We have no asynchronous work, so we can just ask the next promise to run,
// passing down initial_metadata.
- return next_promise_factory(std::move(initial_metadata));
+ return next_promise_factory(std::move(call_args));
}
-namespace {
-const grpc_channel_filter grpc_client_authority_filter =
+const grpc_channel_filter ClientAuthorityFilter::kFilter =
MakePromiseBasedFilter<ClientAuthorityFilter, FilterEndpoint::kClient>(
"authority");
+namespace {
bool add_client_authority_filter(ChannelStackBuilder* builder) {
- const grpc_channel_args* channel_args = builder->channel_args();
- const grpc_arg* disable_client_authority_filter_arg = grpc_channel_args_find(
- channel_args, GRPC_ARG_DISABLE_CLIENT_AUTHORITY_FILTER);
- if (disable_client_authority_filter_arg != nullptr) {
- const bool is_client_authority_filter_disabled =
- grpc_channel_arg_get_bool(disable_client_authority_filter_arg, false);
- if (is_client_authority_filter_disabled) {
- return true;
- }
+ if (builder->channel_args()
+ .GetBool(GRPC_ARG_DISABLE_CLIENT_AUTHORITY_FILTER)
+ .value_or(false)) {
+ return true;
}
- builder->PrependFilter(&grpc_client_authority_filter, nullptr);
+ builder->PrependFilter(&ClientAuthorityFilter::kFilter);
return true;
}
} // namespace
diff --git a/contrib/libs/grpc/src/core/ext/filters/http/client_authority_filter.h b/contrib/libs/grpc/src/core/ext/filters/http/client_authority_filter.h
index 3326a3388b..0b2599f5a2 100644
--- a/contrib/libs/grpc/src/core/ext/filters/http/client_authority_filter.h
+++ b/contrib/libs/grpc/src/core/ext/filters/http/client_authority_filter.h
@@ -21,25 +21,29 @@
#include <grpc/support/port_platform.h>
-#include "y_absl/status/statusor.h"
+#include <utility>
-#include <grpc/impl/codegen/compression_types.h>
+#include "y_absl/status/statusor.h"
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/promise_based_filter.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/transport/transport.h"
namespace grpc_core {
class ClientAuthorityFilter final : public ChannelFilter {
public:
- static y_absl::StatusOr<ClientAuthorityFilter> Create(
- const grpc_channel_args* args, ChannelFilter::Args);
+ static const grpc_channel_filter kFilter;
+
+ static y_absl::StatusOr<ClientAuthorityFilter> Create(const ChannelArgs& args,
+ ChannelFilter::Args);
// Construct a promise for one call.
- ArenaPromise<TrailingMetadata> MakeCallPromise(
- ClientInitialMetadata initial_metadata,
- NextPromiseFactory next_promise_factory) override;
+ ArenaPromise<ServerMetadataHandle> MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) override;
private:
explicit ClientAuthorityFilter(Slice default_authority)
diff --git a/contrib/libs/grpc/src/core/ext/filters/http/http_filters_plugin.cc b/contrib/libs/grpc/src/core/ext/filters/http/http_filters_plugin.cc
index c3285cec2e..109cd2ad3a 100644
--- a/contrib/libs/grpc/src/core/ext/filters/http/http_filters_plugin.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/http/http_filters_plugin.cc
@@ -20,13 +20,21 @@
#include <string.h>
+#include "y_absl/types/optional.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
+
#include "src/core/ext/filters/http/client/http_client_filter.h"
#include "src/core/ext/filters/http/message_compress/message_compress_filter.h"
#include "src/core/ext/filters/http/message_compress/message_decompress_filter.h"
#include "src/core/ext/filters/http/server/http_server_filter.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/surface/call.h"
+#include "src/core/lib/surface/channel_init.h"
+#include "src/core/lib/surface/channel_stack_type.h"
+#include "src/core/lib/transport/transport_fwd.h"
#include "src/core/lib/transport/transport_impl.h"
static bool is_building_http_like_transport(
@@ -46,12 +54,11 @@ void RegisterHttpFilters(CoreConfiguration::Builder* builder) {
[enable_in_minimal_stack, control_channel_arg,
filter](ChannelStackBuilder* builder) {
if (!is_building_http_like_transport(builder)) return true;
- const grpc_channel_args* channel_args = builder->channel_args();
- bool enable = grpc_channel_arg_get_bool(
- grpc_channel_args_find(channel_args, control_channel_arg),
- enable_in_minimal_stack ||
- !grpc_channel_args_want_minimal_stack(channel_args));
- if (enable) builder->PrependFilter(filter, nullptr);
+ auto args = builder->channel_args();
+ const bool enable = args.GetBool(control_channel_arg)
+ .value_or(enable_in_minimal_stack ||
+ !args.WantMinimalStack());
+ if (enable) builder->PrependFilter(filter);
return true;
});
};
@@ -61,11 +68,14 @@ void RegisterHttpFilters(CoreConfiguration::Builder* builder) {
channel_type, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
[filter](ChannelStackBuilder* builder) {
if (is_building_http_like_transport(builder)) {
- builder->PrependFilter(filter, nullptr);
+ builder->PrependFilter(filter);
}
return true;
});
};
+ // TODO(ctiller): return this flag to true once the promise conversion is
+ // complete.
+ static constexpr bool kMinimalStackHasDecompression = false;
optional(GRPC_CLIENT_SUBCHANNEL, false,
GRPC_ARG_ENABLE_PER_MESSAGE_COMPRESSION,
&grpc_message_compress_filter);
@@ -74,14 +84,14 @@ void RegisterHttpFilters(CoreConfiguration::Builder* builder) {
&grpc_message_compress_filter);
optional(GRPC_SERVER_CHANNEL, false, GRPC_ARG_ENABLE_PER_MESSAGE_COMPRESSION,
&grpc_message_compress_filter);
- optional(GRPC_CLIENT_SUBCHANNEL, true,
+ optional(GRPC_CLIENT_SUBCHANNEL, kMinimalStackHasDecompression,
+ GRPC_ARG_ENABLE_PER_MESSAGE_DECOMPRESSION, &MessageDecompressFilter);
+ optional(GRPC_CLIENT_DIRECT_CHANNEL, kMinimalStackHasDecompression,
GRPC_ARG_ENABLE_PER_MESSAGE_DECOMPRESSION, &MessageDecompressFilter);
- optional(GRPC_CLIENT_DIRECT_CHANNEL, true,
+ optional(GRPC_SERVER_CHANNEL, kMinimalStackHasDecompression,
GRPC_ARG_ENABLE_PER_MESSAGE_DECOMPRESSION, &MessageDecompressFilter);
- optional(GRPC_SERVER_CHANNEL, true, GRPC_ARG_ENABLE_PER_MESSAGE_DECOMPRESSION,
- &MessageDecompressFilter);
- required(GRPC_CLIENT_SUBCHANNEL, &grpc_http_client_filter);
- required(GRPC_CLIENT_DIRECT_CHANNEL, &grpc_http_client_filter);
- required(GRPC_SERVER_CHANNEL, &grpc_http_server_filter);
+ required(GRPC_CLIENT_SUBCHANNEL, &HttpClientFilter::kFilter);
+ required(GRPC_CLIENT_DIRECT_CHANNEL, &HttpClientFilter::kFilter);
+ required(GRPC_SERVER_CHANNEL, &HttpServerFilter::kFilter);
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.cc b/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.cc
index 8c4e8e0780..c5c63df416 100644
--- a/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.cc
@@ -20,25 +20,30 @@
#include "src/core/ext/filters/http/message_compress/message_compress_filter.h"
-#include <assert.h>
-#include <string.h>
+#include <inttypes.h>
+#include <stdlib.h>
+#include <new>
+#include <utility>
+
+#include "y_absl/meta/type_traits.h"
#include "y_absl/types/optional.h"
#include <grpc/compression.h>
-#include <grpc/slice_buffer.h>
-#include <grpc/support/alloc.h>
+#include <grpc/impl/codegen/compression_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/log.h>
-#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/compression/compression_internal.h"
#include "src/core/lib/compression/message_compress.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
-#include "src/core/lib/profiling/timers.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/slice/slice_buffer.h"
#include "src/core/lib/surface/call.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
namespace {
@@ -94,66 +99,40 @@ class CallData {
channeld->default_compression_algorithm()))) {
compression_algorithm_ = channeld->default_compression_algorithm();
}
- GRPC_CLOSURE_INIT(&start_send_message_batch_in_call_combiner_,
- StartSendMessageBatch, elem, grpc_schedule_on_exec_ctx);
+ GRPC_CLOSURE_INIT(&forward_send_message_batch_in_call_combiner_,
+ ForwardSendMessageBatch, elem, grpc_schedule_on_exec_ctx);
}
- ~CallData() {
- if (state_initialized_) {
- grpc_slice_buffer_destroy_internal(&slices_);
- }
- GRPC_ERROR_UNREF(cancel_error_);
- }
+ ~CallData() { GRPC_ERROR_UNREF(cancel_error_); }
void CompressStartTransportStreamOpBatch(
grpc_call_element* elem, grpc_transport_stream_op_batch* batch);
private:
bool SkipMessageCompression();
- void InitializeState(grpc_call_element* elem);
+ void FinishSendMessage(grpc_call_element* elem);
void ProcessSendInitialMetadata(grpc_call_element* elem,
grpc_metadata_batch* initial_metadata);
// Methods for processing a send_message batch
- static void StartSendMessageBatch(void* elem_arg, grpc_error_handle unused);
- static void OnSendMessageNextDone(void* elem_arg, grpc_error_handle error);
- grpc_error_handle PullSliceFromSendMessage();
- void ContinueReadingSendMessage(grpc_call_element* elem);
- void FinishSendMessage(grpc_call_element* elem);
- void SendMessageBatchContinue(grpc_call_element* elem);
static void FailSendMessageBatchInCallCombiner(void* calld_arg,
grpc_error_handle error);
-
- static void SendMessageOnComplete(void* calld_arg, grpc_error_handle error);
+ static void ForwardSendMessageBatch(void* elem_arg, grpc_error_handle unused);
grpc_core::CallCombiner* call_combiner_;
grpc_compression_algorithm compression_algorithm_ = GRPC_COMPRESS_NONE;
grpc_error_handle cancel_error_ = GRPC_ERROR_NONE;
grpc_transport_stream_op_batch* send_message_batch_ = nullptr;
bool seen_initial_metadata_ = false;
- /* Set to true, if the fields below are initialized. */
- bool state_initialized_ = false;
- grpc_closure start_send_message_batch_in_call_combiner_;
- /* The fields below are only initialized when we compress the payload.
- * Keep them at the bottom of the struct, so they don't pollute the
- * cache-lines. */
- grpc_slice_buffer slices_; /**< Buffers up input slices to be compressed */
- // Allocate space for the replacement stream
- std::aligned_storage<sizeof(grpc_core::SliceBufferByteStream),
- alignof(grpc_core::SliceBufferByteStream)>::type
- replacement_stream_;
- grpc_closure* original_send_message_on_complete_ = nullptr;
- grpc_closure send_message_on_complete_;
- grpc_closure on_send_message_next_done_;
+ grpc_closure forward_send_message_batch_in_call_combiner_;
};
// Returns true if we should skip message compression for the current message.
bool CallData::SkipMessageCompression() {
// If the flags of this message indicate that it shouldn't be compressed, we
// skip message compression.
- uint32_t flags =
- send_message_batch_->payload->send_message.send_message->flags();
+ uint32_t flags = send_message_batch_->payload->send_message.flags;
if (flags & (GRPC_WRITE_NO_COMPRESS | GRPC_WRITE_INTERNAL_COMPRESS)) {
return true;
}
@@ -162,16 +141,6 @@ bool CallData::SkipMessageCompression() {
return compression_algorithm_ == GRPC_COMPRESS_NONE;
}
-void CallData::InitializeState(grpc_call_element* elem) {
- GPR_DEBUG_ASSERT(!state_initialized_);
- state_initialized_ = true;
- grpc_slice_buffer_init(&slices_);
- GRPC_CLOSURE_INIT(&send_message_on_complete_, SendMessageOnComplete, this,
- grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&on_send_message_next_done_, OnSendMessageNextDone, elem,
- grpc_schedule_on_exec_ctx);
-}
-
void CallData::ProcessSendInitialMetadata(
grpc_call_element* elem, grpc_metadata_batch* initial_metadata) {
ChannelData* channeld = static_cast<ChannelData*>(elem->channel_data);
@@ -184,7 +153,6 @@ void CallData::ProcessSendInitialMetadata(
break;
case GRPC_COMPRESS_DEFLATE:
case GRPC_COMPRESS_GZIP:
- InitializeState(elem);
initial_metadata->Set(grpc_core::GrpcEncodingMetadata(),
compression_algorithm_);
break;
@@ -196,68 +164,46 @@ void CallData::ProcessSendInitialMetadata(
channeld->enabled_compression_algorithms());
}
-void CallData::SendMessageOnComplete(void* calld_arg, grpc_error_handle error) {
- CallData* calld = static_cast<CallData*>(calld_arg);
- grpc_slice_buffer_reset_and_unref_internal(&calld->slices_);
- grpc_core::Closure::Run(DEBUG_LOCATION,
- calld->original_send_message_on_complete_,
- GRPC_ERROR_REF(error));
-}
-
-void CallData::SendMessageBatchContinue(grpc_call_element* elem) {
- // Note: The call to grpc_call_next_op() results in yielding the
- // call combiner, so we need to clear send_message_batch_ before we do that.
- grpc_transport_stream_op_batch* send_message_batch = send_message_batch_;
- send_message_batch_ = nullptr;
- grpc_call_next_op(elem, send_message_batch);
-}
-
void CallData::FinishSendMessage(grpc_call_element* elem) {
- GPR_DEBUG_ASSERT(compression_algorithm_ != GRPC_COMPRESS_NONE);
// Compress the data if appropriate.
- grpc_slice_buffer tmp;
- grpc_slice_buffer_init(&tmp);
- uint32_t send_flags =
- send_message_batch_->payload->send_message.send_message->flags();
- bool did_compress = grpc_msg_compress(compression_algorithm_, &slices_, &tmp);
- if (did_compress) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
- const char* algo_name;
- const size_t before_size = slices_.length;
- const size_t after_size = tmp.length;
- const float savings_ratio = 1.0f - static_cast<float>(after_size) /
- static_cast<float>(before_size);
- GPR_ASSERT(
- grpc_compression_algorithm_name(compression_algorithm_, &algo_name));
- gpr_log(GPR_INFO,
- "Compressed[%s] %" PRIuPTR " bytes vs. %" PRIuPTR
- " bytes (%.2f%% savings)",
- algo_name, before_size, after_size, 100 * savings_ratio);
- }
- grpc_slice_buffer_swap(&slices_, &tmp);
- send_flags |= GRPC_WRITE_INTERNAL_COMPRESS;
- } else {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
- const char* algo_name;
- GPR_ASSERT(
- grpc_compression_algorithm_name(compression_algorithm_, &algo_name));
- gpr_log(GPR_INFO,
- "Algorithm '%s' enabled but decided not to compress. Input size: "
- "%" PRIuPTR,
- algo_name, slices_.length);
+ if (!SkipMessageCompression()) {
+ grpc_core::SliceBuffer tmp;
+ uint32_t& send_flags = send_message_batch_->payload->send_message.flags;
+ grpc_core::SliceBuffer* payload =
+ send_message_batch_->payload->send_message.send_message;
+ bool did_compress =
+ grpc_msg_compress(compression_algorithm_, payload->c_slice_buffer(),
+ tmp.c_slice_buffer());
+ if (did_compress) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
+ const char* algo_name;
+ const size_t before_size = payload->Length();
+ const size_t after_size = tmp.Length();
+ const float savings_ratio = 1.0f - static_cast<float>(after_size) /
+ static_cast<float>(before_size);
+ GPR_ASSERT(grpc_compression_algorithm_name(compression_algorithm_,
+ &algo_name));
+ gpr_log(GPR_INFO,
+ "Compressed[%s] %" PRIuPTR " bytes vs. %" PRIuPTR
+ " bytes (%.2f%% savings)",
+ algo_name, before_size, after_size, 100 * savings_ratio);
+ }
+ tmp.Swap(payload);
+ send_flags |= GRPC_WRITE_INTERNAL_COMPRESS;
+ } else {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
+ const char* algo_name;
+ GPR_ASSERT(grpc_compression_algorithm_name(compression_algorithm_,
+ &algo_name));
+ gpr_log(
+ GPR_INFO,
+ "Algorithm '%s' enabled but decided not to compress. Input size: "
+ "%" PRIuPTR,
+ algo_name, payload->Length());
+ }
}
}
- grpc_slice_buffer_destroy_internal(&tmp);
- // Swap out the original byte stream with our new one and send the
- // batch down.
- new (&replacement_stream_)
- grpc_core::SliceBufferByteStream(&slices_, send_flags);
- send_message_batch_->payload->send_message.send_message.reset(
- reinterpret_cast<grpc_core::SliceBufferByteStream*>(
- &replacement_stream_));
- original_send_message_on_complete_ = send_message_batch_->on_complete;
- send_message_batch_->on_complete = &send_message_on_complete_;
- SendMessageBatchContinue(elem);
+ grpc_call_next_op(elem, std::exchange(send_message_batch_, nullptr));
}
void CallData::FailSendMessageBatchInCallCombiner(void* calld_arg,
@@ -271,83 +217,15 @@ void CallData::FailSendMessageBatchInCallCombiner(void* calld_arg,
}
}
-// Pulls a slice from the send_message byte stream and adds it to slices_.
-grpc_error_handle CallData::PullSliceFromSendMessage() {
- grpc_slice incoming_slice;
- grpc_error_handle error =
- send_message_batch_->payload->send_message.send_message->Pull(
- &incoming_slice);
- if (error == GRPC_ERROR_NONE) {
- grpc_slice_buffer_add(&slices_, incoming_slice);
- }
- return error;
-}
-
-// Reads as many slices as possible from the send_message byte stream.
-// If all data has been read, invokes FinishSendMessage(). Otherwise,
-// an async call to ByteStream::Next() has been started, which will
-// eventually result in calling OnSendMessageNextDone().
-void CallData::ContinueReadingSendMessage(grpc_call_element* elem) {
- if (slices_.length ==
- send_message_batch_->payload->send_message.send_message->length()) {
- FinishSendMessage(elem);
- return;
- }
- while (send_message_batch_->payload->send_message.send_message->Next(
- ~static_cast<size_t>(0), &on_send_message_next_done_)) {
- grpc_error_handle error = PullSliceFromSendMessage();
- if (error != GRPC_ERROR_NONE) {
- // Closure callback; does not take ownership of error.
- FailSendMessageBatchInCallCombiner(this, error);
- GRPC_ERROR_UNREF(error);
- return;
- }
- if (slices_.length ==
- send_message_batch_->payload->send_message.send_message->length()) {
- FinishSendMessage(elem);
- break;
- }
- }
-}
-
-// Async callback for ByteStream::Next().
-void CallData::OnSendMessageNextDone(void* elem_arg, grpc_error_handle error) {
- grpc_call_element* elem = static_cast<grpc_call_element*>(elem_arg);
- CallData* calld = static_cast<CallData*>(elem->call_data);
- if (error != GRPC_ERROR_NONE) {
- // Closure callback; does not take ownership of error.
- FailSendMessageBatchInCallCombiner(calld, error);
- return;
- }
- error = calld->PullSliceFromSendMessage();
- if (error != GRPC_ERROR_NONE) {
- // Closure callback; does not take ownership of error.
- FailSendMessageBatchInCallCombiner(calld, error);
- GRPC_ERROR_UNREF(error);
- return;
- }
- if (calld->slices_.length == calld->send_message_batch_->payload->send_message
- .send_message->length()) {
- calld->FinishSendMessage(elem);
- } else {
- calld->ContinueReadingSendMessage(elem);
- }
-}
-
-void CallData::StartSendMessageBatch(void* elem_arg,
- grpc_error_handle /*unused*/) {
+void CallData::ForwardSendMessageBatch(void* elem_arg,
+ grpc_error_handle /*unused*/) {
grpc_call_element* elem = static_cast<grpc_call_element*>(elem_arg);
CallData* calld = static_cast<CallData*>(elem->call_data);
- if (calld->SkipMessageCompression()) {
- calld->SendMessageBatchContinue(elem);
- } else {
- calld->ContinueReadingSendMessage(elem);
- }
+ calld->FinishSendMessage(elem);
}
void CallData::CompressStartTransportStreamOpBatch(
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
- GPR_TIMER_SCOPE("compress_start_transport_stream_op_batch", 0);
// Handle cancel_stream.
if (batch->cancel_stream) {
GRPC_ERROR_UNREF(cancel_error_);
@@ -359,12 +237,9 @@ void CallData::CompressStartTransportStreamOpBatch(
GRPC_CLOSURE_CREATE(FailSendMessageBatchInCallCombiner, this,
grpc_schedule_on_exec_ctx),
GRPC_ERROR_REF(cancel_error_), "failing send_message op");
- } else {
- send_message_batch_->payload->send_message.send_message->Shutdown(
- GRPC_ERROR_REF(cancel_error_));
}
}
- } else if (cancel_error_ != GRPC_ERROR_NONE) {
+ } else if (!GRPC_ERROR_IS_NONE(cancel_error_)) {
grpc_transport_stream_op_batch_finish_with_failure(
batch, GRPC_ERROR_REF(cancel_error_), call_combiner_);
return;
@@ -382,7 +257,7 @@ void CallData::CompressStartTransportStreamOpBatch(
// the call stack) will release the call combiner for each batch it sees.
if (send_message_batch_ != nullptr) {
GRPC_CALL_COMBINER_START(
- call_combiner_, &start_send_message_batch_in_call_combiner_,
+ call_combiner_, &forward_send_message_batch_in_call_combiner_,
GRPC_ERROR_NONE, "starting send_message after send_initial_metadata");
}
}
@@ -398,7 +273,7 @@ void CallData::CompressStartTransportStreamOpBatch(
call_combiner_, "send_message batch pending send_initial_metadata");
return;
}
- StartSendMessageBatch(elem, GRPC_ERROR_NONE);
+ FinishSendMessage(elem);
} else {
// Pass control down the stack.
grpc_call_next_op(elem, batch);
@@ -451,6 +326,7 @@ const grpc_channel_filter grpc_message_compress_filter = {
CompressDestroyCallElem,
sizeof(ChannelData),
CompressInitChannelElem,
+ grpc_channel_stack_no_post_init,
CompressDestroyChannelElem,
grpc_channel_next_get_info,
"message_compress"};
diff --git a/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.h b/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.h
index e163e3cf98..4593a276af 100644
--- a/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.h
+++ b/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_compress_filter.h
@@ -21,8 +21,7 @@
#include <grpc/support/port_platform.h>
-#include <grpc/impl/codegen/compression_types.h>
-
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
/** Compression filter for outgoing data.
diff --git a/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_decompress_filter.cc b/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_decompress_filter.cc
index c6e719612c..4b6d9f8fd6 100644
--- a/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_decompress_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_decompress_filter.cc
@@ -20,24 +20,29 @@
#include "src/core/ext/filters/http/message_compress/message_decompress_filter.h"
-#include <assert.h>
+#include <stdint.h>
#include <string.h>
+#include <new>
+
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
+#include "y_absl/types/optional.h"
-#include <grpc/compression.h>
-#include <grpc/slice_buffer.h>
-#include <grpc/support/alloc.h>
+#include <grpc/impl/codegen/compression_types.h>
+#include <grpc/status.h>
#include <grpc/support/log.h>
#include "src/core/ext/filters/message_size/message_size_filter.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/compression/compression_internal.h"
#include "src/core/lib/compression/message_compress.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/slice/slice_buffer.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
namespace grpc_core {
namespace {
@@ -45,7 +50,8 @@ namespace {
class ChannelData {
public:
explicit ChannelData(const grpc_channel_element_args* args)
- : max_recv_size_(GetMaxRecvSizeFromChannelArgs(args->channel_args)),
+ : max_recv_size_(GetMaxRecvSizeFromChannelArgs(
+ ChannelArgs::FromC(args->channel_args))),
message_size_service_config_parser_index_(
MessageSizeParser::ParserIndex()) {}
@@ -69,9 +75,6 @@ class CallData {
OnRecvInitialMetadataReady, this,
grpc_schedule_on_exec_ctx);
// Initialize state for recv_message_ready callback
- grpc_slice_buffer_init(&recv_slices_);
- GRPC_CLOSURE_INIT(&on_recv_message_next_done_, OnRecvMessageNextDone, this,
- grpc_schedule_on_exec_ctx);
GRPC_CLOSURE_INIT(&on_recv_message_ready_, OnRecvMessageReady, this,
grpc_schedule_on_exec_ctx);
// Initialize state for recv_trailing_metadata_ready callback
@@ -88,8 +91,6 @@ class CallData {
}
}
- ~CallData() { grpc_slice_buffer_destroy_internal(&recv_slices_); }
-
void DecompressStartTransportStreamOpBatch(
grpc_call_element* elem, grpc_transport_stream_op_batch* batch);
@@ -99,10 +100,6 @@ class CallData {
// Methods for processing a receive message event
void MaybeResumeOnRecvMessageReady();
static void OnRecvMessageReady(void* arg, grpc_error_handle error);
- static void OnRecvMessageNextDone(void* arg, grpc_error_handle error);
- grpc_error_handle PullSliceFromRecvMessage();
- void ContinueReadingRecvMessage();
- void FinishRecvMessage();
void ContinueRecvMessageReadyCallback(grpc_error_handle error);
// Methods for processing a recv_trailing_metadata event
@@ -120,17 +117,10 @@ class CallData {
bool seen_recv_message_ready_ = false;
int max_recv_message_length_;
grpc_compression_algorithm algorithm_ = GRPC_COMPRESS_NONE;
+ y_absl::optional<SliceBuffer>* recv_message_ = nullptr;
+ uint32_t* recv_message_flags_ = nullptr;
grpc_closure on_recv_message_ready_;
grpc_closure* original_recv_message_ready_ = nullptr;
- grpc_closure on_recv_message_next_done_;
- OrphanablePtr<ByteStream>* recv_message_ = nullptr;
- // recv_slices_ holds the slices read from the original recv_message stream.
- // It is initialized during construction and reset when a new stream is
- // created using it.
- grpc_slice_buffer recv_slices_;
- std::aligned_storage<sizeof(SliceBufferByteStream),
- alignof(SliceBufferByteStream)>::type
- recv_replacement_stream_;
// Fields for handling recv_trailing_metadata_ready callback
bool seen_recv_trailing_metadata_ready_ = false;
grpc_closure on_recv_trailing_metadata_ready_;
@@ -140,7 +130,7 @@ class CallData {
void CallData::OnRecvInitialMetadataReady(void* arg, grpc_error_handle error) {
CallData* calld = static_cast<CallData*>(arg);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
calld->algorithm_ =
calld->recv_initial_metadata_->get(GrpcEncodingMetadata())
.value_or(GRPC_COMPRESS_NONE);
@@ -163,7 +153,7 @@ void CallData::MaybeResumeOnRecvMessageReady() {
void CallData::OnRecvMessageReady(void* arg, grpc_error_handle error) {
CallData* calld = static_cast<CallData*>(arg);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
if (calld->original_recv_initial_metadata_ready_ != nullptr) {
calld->seen_recv_message_ready_ = true;
GRPC_CALL_COMBINER_STOP(calld->call_combiner_,
@@ -174,101 +164,46 @@ void CallData::OnRecvMessageReady(void* arg, grpc_error_handle error) {
if (calld->algorithm_ != GRPC_COMPRESS_NONE) {
// recv_message can be NULL if trailing metadata is received instead of
// message, or it's possible that the message was not compressed.
- if (*calld->recv_message_ == nullptr ||
- (*calld->recv_message_)->length() == 0 ||
- ((*calld->recv_message_)->flags() & GRPC_WRITE_INTERNAL_COMPRESS) ==
- 0) {
+ if (!calld->recv_message_->has_value() ||
+ (*calld->recv_message_)->Length() == 0 ||
+ ((*calld->recv_message_flags_ & GRPC_WRITE_INTERNAL_COMPRESS) == 0)) {
return calld->ContinueRecvMessageReadyCallback(GRPC_ERROR_NONE);
}
if (calld->max_recv_message_length_ >= 0 &&
- (*calld->recv_message_)->length() >
+ (*calld->recv_message_)->Length() >
static_cast<uint32_t>(calld->max_recv_message_length_)) {
- GPR_DEBUG_ASSERT(calld->error_ == GRPC_ERROR_NONE);
+ GPR_DEBUG_ASSERT(GRPC_ERROR_IS_NONE(calld->error_));
calld->error_ = grpc_error_set_int(
GRPC_ERROR_CREATE_FROM_CPP_STRING(
y_absl::StrFormat("Received message larger than max (%u vs. %d)",
- (*calld->recv_message_)->length(),
+ (*calld->recv_message_)->Length(),
calld->max_recv_message_length_)),
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED);
return calld->ContinueRecvMessageReadyCallback(
GRPC_ERROR_REF(calld->error_));
}
- grpc_slice_buffer_destroy_internal(&calld->recv_slices_);
- grpc_slice_buffer_init(&calld->recv_slices_);
- return calld->ContinueReadingRecvMessage();
+ SliceBuffer decompressed_slices;
+ if (grpc_msg_decompress(calld->algorithm_,
+ (*calld->recv_message_)->c_slice_buffer(),
+ decompressed_slices.c_slice_buffer()) == 0) {
+ GPR_DEBUG_ASSERT(GRPC_ERROR_IS_NONE(calld->error_));
+ calld->error_ = GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
+ "Unexpected error decompressing data for algorithm with "
+ "enum value ",
+ calld->algorithm_));
+ } else {
+ *calld->recv_message_flags_ =
+ (*calld->recv_message_flags_ & (~GRPC_WRITE_INTERNAL_COMPRESS)) |
+ GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED;
+ (*calld->recv_message_)->Swap(&decompressed_slices);
+ }
+ return calld->ContinueRecvMessageReadyCallback(
+ GRPC_ERROR_REF(calld->error_));
}
}
calld->ContinueRecvMessageReadyCallback(GRPC_ERROR_REF(error));
}
-void CallData::ContinueReadingRecvMessage() {
- while ((*recv_message_)
- ->Next((*recv_message_)->length() - recv_slices_.length,
- &on_recv_message_next_done_)) {
- grpc_error_handle error = PullSliceFromRecvMessage();
- if (error != GRPC_ERROR_NONE) {
- return ContinueRecvMessageReadyCallback(error);
- }
- // We have read the entire message.
- if (recv_slices_.length == (*recv_message_)->length()) {
- return FinishRecvMessage();
- }
- }
-}
-
-grpc_error_handle CallData::PullSliceFromRecvMessage() {
- grpc_slice incoming_slice;
- grpc_error_handle error = (*recv_message_)->Pull(&incoming_slice);
- if (error == GRPC_ERROR_NONE) {
- grpc_slice_buffer_add(&recv_slices_, incoming_slice);
- }
- return error;
-}
-
-void CallData::OnRecvMessageNextDone(void* arg, grpc_error_handle error) {
- CallData* calld = static_cast<CallData*>(arg);
- if (error != GRPC_ERROR_NONE) {
- return calld->ContinueRecvMessageReadyCallback(GRPC_ERROR_REF(error));
- }
- error = calld->PullSliceFromRecvMessage();
- if (error != GRPC_ERROR_NONE) {
- return calld->ContinueRecvMessageReadyCallback(error);
- }
- if (calld->recv_slices_.length == (*calld->recv_message_)->length()) {
- calld->FinishRecvMessage();
- } else {
- calld->ContinueReadingRecvMessage();
- }
-}
-
-void CallData::FinishRecvMessage() {
- grpc_slice_buffer decompressed_slices;
- grpc_slice_buffer_init(&decompressed_slices);
- if (grpc_msg_decompress(algorithm_, &recv_slices_, &decompressed_slices) ==
- 0) {
- GPR_DEBUG_ASSERT(error_ == GRPC_ERROR_NONE);
- error_ = GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("Unexpected error decompressing data for algorithm with "
- "enum value ",
- algorithm_));
- grpc_slice_buffer_destroy_internal(&decompressed_slices);
- } else {
- uint32_t recv_flags =
- ((*recv_message_)->flags() & (~GRPC_WRITE_INTERNAL_COMPRESS)) |
- GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED;
- // Swap out the original receive byte stream with our new one and send the
- // batch down.
- // Initializing recv_replacement_stream_ with decompressed_slices removes
- // all the slices from decompressed_slices leaving it empty.
- new (&recv_replacement_stream_)
- SliceBufferByteStream(&decompressed_slices, recv_flags);
- recv_message_->reset(
- reinterpret_cast<SliceBufferByteStream*>(&recv_replacement_stream_));
- recv_message_ = nullptr;
- }
- ContinueRecvMessageReadyCallback(GRPC_ERROR_REF(error_));
-}
-
void CallData::ContinueRecvMessageReadyCallback(grpc_error_handle error) {
MaybeResumeOnRecvTrailingMetadataReady();
// The surface will clean up the receiving stream if there is an error.
@@ -320,6 +255,7 @@ void CallData::DecompressStartTransportStreamOpBatch(
// Handle recv_message
if (batch->recv_message) {
recv_message_ = batch->payload->recv_message.recv_message;
+ recv_message_flags_ = batch->payload->recv_message.flags;
original_recv_message_ready_ =
batch->payload->recv_message.recv_message_ready;
batch->payload->recv_message.recv_message_ready = &on_recv_message_ready_;
@@ -337,7 +273,6 @@ void CallData::DecompressStartTransportStreamOpBatch(
void DecompressStartTransportStreamOpBatch(
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
- GPR_TIMER_SCOPE("decompress_start_transport_stream_op_batch", 0);
CallData* calld = static_cast<CallData*>(elem->call_data);
calld->DecompressStartTransportStreamOpBatch(elem, batch);
}
@@ -380,6 +315,7 @@ const grpc_channel_filter MessageDecompressFilter = {
DecompressDestroyCallElem,
sizeof(ChannelData),
DecompressInitChannelElem,
+ grpc_channel_stack_no_post_init,
DecompressDestroyChannelElem,
grpc_channel_next_get_info,
"message_decompress"};
diff --git a/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_decompress_filter.h b/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_decompress_filter.h
index f19a4ca0cb..52addca71f 100644
--- a/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_decompress_filter.h
+++ b/contrib/libs/grpc/src/core/ext/filters/http/message_compress/message_decompress_filter.h
@@ -21,6 +21,7 @@
#include <grpc/support/port_platform.h>
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/filters/http/server/http_server_filter.cc b/contrib/libs/grpc/src/core/ext/filters/http/server/http_server_filter.cc
index 04405e9bcc..8e53cec1ef 100644
--- a/contrib/libs/grpc/src/core/ext/filters/http/server/http_server_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/http/server/http_server_filter.cc
@@ -20,417 +20,141 @@
#include "src/core/ext/filters/http/server/http_server_filter.h"
-#include <string.h>
+#include <functional>
+#include <utility>
-#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
+#include "y_absl/base/attributes.h"
+#include "y_absl/status/status.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
-#include "src/core/lib/profiling/timers.h"
-#include "src/core/lib/slice/b64.h"
+#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/promise/call_push_pull.h"
+#include "src/core/lib/promise/context.h"
+#include "src/core/lib/promise/detail/basic_seq.h"
+#include "src/core/lib/promise/latch.h"
+#include "src/core/lib/promise/promise.h"
+#include "src/core/lib/promise/seq.h"
+#include "src/core/lib/resource_quota/arena.h"
#include "src/core/lib/slice/percent_encoding.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
-
-static void hs_recv_initial_metadata_ready(void* user_data,
- grpc_error_handle err);
-static void hs_recv_trailing_metadata_ready(void* user_data,
- grpc_error_handle err);
-static void hs_recv_message_ready(void* user_data, grpc_error_handle err);
-
-namespace {
-
-struct call_data {
- call_data(grpc_call_element* elem, const grpc_call_element_args& args)
- : call_combiner(args.call_combiner) {
- GRPC_CLOSURE_INIT(&recv_initial_metadata_ready,
- hs_recv_initial_metadata_ready, elem,
- grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&recv_message_ready, hs_recv_message_ready, elem,
- grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready,
- hs_recv_trailing_metadata_ready, elem,
- grpc_schedule_on_exec_ctx);
- }
-
- ~call_data() {
- GRPC_ERROR_UNREF(recv_initial_metadata_ready_error);
- if (have_read_stream) {
- read_stream->Orphan();
- }
- }
-
- grpc_core::CallCombiner* call_combiner;
-
- // If we see the recv_message contents in the GET query string, we
- // store it here.
- grpc_core::ManualConstructor<grpc_core::SliceBufferByteStream> read_stream;
- bool have_read_stream = false;
-
- // State for intercepting recv_initial_metadata.
- grpc_closure recv_initial_metadata_ready;
- grpc_error_handle recv_initial_metadata_ready_error = GRPC_ERROR_NONE;
- grpc_closure* original_recv_initial_metadata_ready;
- grpc_metadata_batch* recv_initial_metadata = nullptr;
- uint32_t* recv_initial_metadata_flags;
- bool seen_recv_initial_metadata_ready = false;
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/transport/metadata_batch.h"
- // State for intercepting recv_message.
- grpc_closure* original_recv_message_ready;
- grpc_closure recv_message_ready;
- grpc_core::OrphanablePtr<grpc_core::ByteStream>* recv_message;
- bool seen_recv_message_ready = false;
+namespace grpc_core {
- // State for intercepting recv_trailing_metadata
- grpc_closure recv_trailing_metadata_ready;
- grpc_closure* original_recv_trailing_metadata_ready;
- grpc_error_handle recv_trailing_metadata_ready_error;
- bool seen_recv_trailing_metadata_ready = false;
-};
+const grpc_channel_filter HttpServerFilter::kFilter =
+ MakePromiseBasedFilter<HttpServerFilter, FilterEndpoint::kServer,
+ kFilterExaminesServerInitialMetadata>("http-server");
-struct channel_data {
- bool surface_user_agent;
-};
-
-} // namespace
-
-static grpc_error_handle hs_filter_outgoing_metadata(grpc_metadata_batch* b) {
- if (grpc_core::Slice* grpc_message =
- b->get_pointer(grpc_core::GrpcMessageMetadata())) {
- *grpc_message = grpc_core::PercentEncodeSlice(
- std::move(*grpc_message), grpc_core::PercentEncodingType::Compatible);
- }
- return GRPC_ERROR_NONE;
-}
-
-static void hs_add_error(const char* error_name, grpc_error_handle* cumulative,
- grpc_error_handle new_err) {
- if (new_err == GRPC_ERROR_NONE) return;
- if (*cumulative == GRPC_ERROR_NONE) {
- *cumulative = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_name);
+namespace {
+void FilterOutgoingMetadata(ServerMetadata* md) {
+ if (Slice* grpc_message = md->get_pointer(GrpcMessageMetadata())) {
+ *grpc_message = PercentEncodeSlice(std::move(*grpc_message),
+ PercentEncodingType::Compatible);
}
- *cumulative = grpc_error_add_child(*cumulative, new_err);
}
+} // namespace
-static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
- grpc_metadata_batch* b) {
- call_data* calld = static_cast<call_data*>(elem->call_data);
- grpc_error_handle error = GRPC_ERROR_NONE;
- static const char* error_name = "Failed processing incoming headers";
+ArenaPromise<ServerMetadataHandle> HttpServerFilter::MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) {
+ const auto& md = call_args.client_initial_metadata;
- auto method = b->get(grpc_core::HttpMethodMetadata());
+ auto method = md->get(HttpMethodMetadata());
if (method.has_value()) {
switch (*method) {
- case grpc_core::HttpMethodMetadata::kPost:
- *calld->recv_initial_metadata_flags &=
- ~(GRPC_INITIAL_METADATA_CACHEABLE_REQUEST |
- GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST);
- break;
- case grpc_core::HttpMethodMetadata::kPut:
- *calld->recv_initial_metadata_flags &=
- ~GRPC_INITIAL_METADATA_CACHEABLE_REQUEST;
- *calld->recv_initial_metadata_flags |=
- GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST;
- break;
- case grpc_core::HttpMethodMetadata::kGet:
- *calld->recv_initial_metadata_flags |=
- GRPC_INITIAL_METADATA_CACHEABLE_REQUEST;
- *calld->recv_initial_metadata_flags &=
- ~GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST;
- break;
- case grpc_core::HttpMethodMetadata::kInvalid:
- hs_add_error(error_name, &error,
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad method header"));
+ case HttpMethodMetadata::kPost:
break;
+ case HttpMethodMetadata::kPut:
+ if (allow_put_requests_) {
+ break;
+ }
+ Y_ABSL_FALLTHROUGH_INTENDED;
+ case HttpMethodMetadata::kInvalid:
+ case HttpMethodMetadata::kGet:
+ return Immediate(
+ ServerMetadataHandle(y_absl::UnknownError("Bad method header")));
}
} else {
- hs_add_error(error_name, &error,
- grpc_error_set_str(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
- GRPC_ERROR_STR_KEY, ":method"));
+ return Immediate(
+ ServerMetadataHandle(y_absl::UnknownError("Missing :method header")));
}
- auto te = b->Take(grpc_core::TeMetadata());
- if (te == grpc_core::TeMetadata::kTrailers) {
+ auto te = md->Take(TeMetadata());
+ if (te == TeMetadata::kTrailers) {
// Do nothing, ok.
} else if (!te.has_value()) {
- hs_add_error(error_name, &error,
- grpc_error_set_str(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
- GRPC_ERROR_STR_KEY, "te"));
+ return Immediate(
+ ServerMetadataHandle(y_absl::UnknownError("Missing :te header")));
} else {
- hs_add_error(error_name, &error,
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad te header"));
+ return Immediate(
+ ServerMetadataHandle(y_absl::UnknownError("Bad :te header")));
}
- auto scheme = b->Take(grpc_core::HttpSchemeMetadata());
+ auto scheme = md->Take(HttpSchemeMetadata());
if (scheme.has_value()) {
- if (*scheme == grpc_core::HttpSchemeMetadata::kInvalid) {
- hs_add_error(error_name, &error,
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad :scheme header"));
+ if (*scheme == HttpSchemeMetadata::kInvalid) {
+ return Immediate(
+ ServerMetadataHandle(y_absl::UnknownError("Bad :scheme header")));
}
} else {
- hs_add_error(error_name, &error,
- grpc_error_set_str(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
- GRPC_ERROR_STR_KEY, ":scheme"));
+ return Immediate(
+ ServerMetadataHandle(y_absl::UnknownError("Missing :scheme header")));
}
- b->Remove(grpc_core::ContentTypeMetadata());
+ md->Remove(ContentTypeMetadata());
- grpc_core::Slice* path_slice = b->get_pointer(grpc_core::HttpPathMetadata());
+ Slice* path_slice = md->get_pointer(HttpPathMetadata());
if (path_slice == nullptr) {
- hs_add_error(error_name, &error,
- grpc_error_set_str(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
- GRPC_ERROR_STR_KEY, ":path"));
- } else if (*calld->recv_initial_metadata_flags &
- GRPC_INITIAL_METADATA_CACHEABLE_REQUEST) {
- /* We have a cacheable request made with GET verb. The path contains the
- * query parameter which is base64 encoded request payload. */
- static const char kQuerySeparator = '?';
- /* offset of the character '?' */
- auto it =
- std::find(path_slice->begin(), path_slice->end(), kQuerySeparator);
- if (it != path_slice->end()) {
- const auto query_start = it - path_slice->begin() + 1;
- auto query_slice = path_slice->RefSubSlice(
- query_start, path_slice->size() - query_start);
-
- /* substitute path metadata with just the path (not query) */
- auto path_without_query = path_slice->TakeSubSlice(0, query_start - 1);
- *path_slice = std::move(path_without_query);
-
- /* decode payload from query and add to the slice buffer to be returned */
- const int k_url_safe = 1;
- grpc_slice_buffer read_slice_buffer;
- grpc_slice_buffer_init(&read_slice_buffer);
- grpc_slice_buffer_add(
- &read_slice_buffer,
- grpc_base64_decode_with_len(
- reinterpret_cast<const char*>(query_slice.begin()),
- query_slice.size(), k_url_safe));
- calld->read_stream.Init(&read_slice_buffer, 0);
- grpc_slice_buffer_destroy_internal(&read_slice_buffer);
- calld->have_read_stream = true;
- } else {
- gpr_log(GPR_ERROR, "GET request without QUERY");
- }
+ return Immediate(
+ ServerMetadataHandle(y_absl::UnknownError("Missing :path header")));
}
- if (b->get_pointer(grpc_core::HttpAuthorityMetadata()) == nullptr) {
- y_absl::optional<grpc_core::Slice> host = b->Take(grpc_core::HostMetadata());
+ if (md->get_pointer(HttpAuthorityMetadata()) == nullptr) {
+ y_absl::optional<Slice> host = md->Take(HostMetadata());
if (host.has_value()) {
- b->Set(grpc_core::HttpAuthorityMetadata(), std::move(*host));
+ md->Set(HttpAuthorityMetadata(), std::move(*host));
}
}
- if (b->get_pointer(grpc_core::HttpAuthorityMetadata()) == nullptr) {
- hs_add_error(error_name, &error,
- grpc_error_set_str(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
- GRPC_ERROR_STR_KEY, ":authority"));
+ if (md->get_pointer(HttpAuthorityMetadata()) == nullptr) {
+ return Immediate(
+ ServerMetadataHandle(y_absl::UnknownError("Missing :authority header")));
}
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
- if (!chand->surface_user_agent) {
- b->Remove(grpc_core::UserAgentMetadata());
+ if (!surface_user_agent_) {
+ md->Remove(UserAgentMetadata());
}
- return error;
-}
+ auto* read_latch = GetContext<Arena>()->New<Latch<ServerMetadata*>>();
+ auto* write_latch =
+ std::exchange(call_args.server_initial_metadata, read_latch);
-static void hs_recv_initial_metadata_ready(void* user_data,
- grpc_error_handle err) {
- grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
- call_data* calld = static_cast<call_data*>(elem->call_data);
- calld->seen_recv_initial_metadata_ready = true;
- if (err == GRPC_ERROR_NONE) {
- err = hs_filter_incoming_metadata(elem, calld->recv_initial_metadata);
- calld->recv_initial_metadata_ready_error = GRPC_ERROR_REF(err);
- if (calld->seen_recv_message_ready) {
- // We've already seen the recv_message callback, but we previously
- // deferred it, so we need to return it here.
- // Replace the recv_message byte stream if needed.
- if (calld->have_read_stream) {
- calld->recv_message->reset(calld->read_stream.get());
- calld->have_read_stream = false;
- }
- // Re-enter call combiner for original_recv_message_ready, since the
- // surface code will release the call combiner for each callback it
- // receives.
- GRPC_CALL_COMBINER_START(
- calld->call_combiner, calld->original_recv_message_ready,
- GRPC_ERROR_REF(err),
- "resuming recv_message_ready from recv_initial_metadata_ready");
- }
- } else {
- (void)GRPC_ERROR_REF(err);
- }
- if (calld->seen_recv_trailing_metadata_ready) {
- GRPC_CALL_COMBINER_START(calld->call_combiner,
- &calld->recv_trailing_metadata_ready,
- calld->recv_trailing_metadata_ready_error,
- "resuming hs_recv_trailing_metadata_ready from "
- "hs_recv_initial_metadata_ready");
- }
- grpc_core::Closure::Run(DEBUG_LOCATION,
- calld->original_recv_initial_metadata_ready, err);
+ return CallPushPull(Seq(next_promise_factory(std::move(call_args)),
+ [](ServerMetadataHandle md) -> ServerMetadataHandle {
+ FilterOutgoingMetadata(md.get());
+ return md;
+ }),
+ Seq(read_latch->Wait(),
+ [write_latch](ServerMetadata** md) {
+ FilterOutgoingMetadata(*md);
+ (*md)->Set(HttpStatusMetadata(), 200);
+ (*md)->Set(ContentTypeMetadata(),
+ ContentTypeMetadata::kApplicationGrpc);
+ write_latch->Set(*md);
+ return y_absl::OkStatus();
+ }),
+ []() { return y_absl::OkStatus(); });
}
-static void hs_recv_message_ready(void* user_data, grpc_error_handle err) {
- grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
- call_data* calld = static_cast<call_data*>(elem->call_data);
- calld->seen_recv_message_ready = true;
- if (calld->seen_recv_initial_metadata_ready) {
- // We've already seen the recv_initial_metadata callback, so
- // replace the recv_message byte stream if needed and invoke the
- // original recv_message callback immediately.
- if (calld->have_read_stream) {
- calld->recv_message->reset(calld->read_stream.get());
- calld->have_read_stream = false;
- }
- grpc_core::Closure::Run(DEBUG_LOCATION, calld->original_recv_message_ready,
- GRPC_ERROR_REF(err));
- } else {
- // We have not yet seen the recv_initial_metadata callback, so we
- // need to wait to see if this is a GET request.
- // Note that we release the call combiner here, so that other
- // callbacks can run.
- GRPC_CALL_COMBINER_STOP(
- calld->call_combiner,
- "pausing recv_message_ready until recv_initial_metadata_ready");
- }
-}
-
-static void hs_recv_trailing_metadata_ready(void* user_data,
- grpc_error_handle err) {
- grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
- call_data* calld = static_cast<call_data*>(elem->call_data);
- if (!calld->seen_recv_initial_metadata_ready) {
- calld->recv_trailing_metadata_ready_error = GRPC_ERROR_REF(err);
- calld->seen_recv_trailing_metadata_ready = true;
- GRPC_CALL_COMBINER_STOP(calld->call_combiner,
- "deferring hs_recv_trailing_metadata_ready until "
- "ater hs_recv_initial_metadata_ready");
- return;
- }
- err = grpc_error_add_child(
- GRPC_ERROR_REF(err),
- GRPC_ERROR_REF(calld->recv_initial_metadata_ready_error));
- grpc_core::Closure::Run(DEBUG_LOCATION,
- calld->original_recv_trailing_metadata_ready, err);
-}
-
-static grpc_error_handle hs_mutate_op(grpc_call_element* elem,
- grpc_transport_stream_op_batch* op) {
- /* grab pointers to our data from the call element */
- call_data* calld = static_cast<call_data*>(elem->call_data);
-
- if (op->send_initial_metadata) {
- grpc_error_handle error = GRPC_ERROR_NONE;
- static const char* error_name = "Failed sending initial metadata";
- op->payload->send_initial_metadata.send_initial_metadata->Set(
- grpc_core::HttpStatusMetadata(), 200);
- op->payload->send_initial_metadata.send_initial_metadata->Set(
- grpc_core::ContentTypeMetadata(),
- grpc_core::ContentTypeMetadata::kApplicationGrpc);
- hs_add_error(error_name, &error,
- hs_filter_outgoing_metadata(
- op->payload->send_initial_metadata.send_initial_metadata));
- if (error != GRPC_ERROR_NONE) return error;
- }
-
- if (op->recv_initial_metadata) {
- /* substitute our callback for the higher callback */
- GPR_ASSERT(op->payload->recv_initial_metadata.recv_flags != nullptr);
- calld->recv_initial_metadata =
- op->payload->recv_initial_metadata.recv_initial_metadata;
- calld->recv_initial_metadata_flags =
- op->payload->recv_initial_metadata.recv_flags;
- calld->original_recv_initial_metadata_ready =
- op->payload->recv_initial_metadata.recv_initial_metadata_ready;
- op->payload->recv_initial_metadata.recv_initial_metadata_ready =
- &calld->recv_initial_metadata_ready;
- }
-
- if (op->recv_message) {
- calld->recv_message = op->payload->recv_message.recv_message;
- calld->original_recv_message_ready =
- op->payload->recv_message.recv_message_ready;
- op->payload->recv_message.recv_message_ready = &calld->recv_message_ready;
- }
-
- if (op->recv_trailing_metadata) {
- calld->original_recv_trailing_metadata_ready =
- op->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
- op->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
- &calld->recv_trailing_metadata_ready;
- }
-
- if (op->send_trailing_metadata) {
- grpc_error_handle error = hs_filter_outgoing_metadata(
- op->payload->send_trailing_metadata.send_trailing_metadata);
- if (error != GRPC_ERROR_NONE) return error;
- }
-
- return GRPC_ERROR_NONE;
-}
-
-static void hs_start_transport_stream_op_batch(
- grpc_call_element* elem, grpc_transport_stream_op_batch* op) {
- GPR_TIMER_SCOPE("hs_start_transport_stream_op_batch", 0);
- call_data* calld = static_cast<call_data*>(elem->call_data);
- grpc_error_handle error = hs_mutate_op(elem, op);
- if (error != GRPC_ERROR_NONE) {
- grpc_transport_stream_op_batch_finish_with_failure(op, error,
- calld->call_combiner);
- } else {
- grpc_call_next_op(elem, op);
- }
+y_absl::StatusOr<HttpServerFilter> HttpServerFilter::Create(
+ const ChannelArgs& args, ChannelFilter::Args) {
+ return HttpServerFilter(
+ args.GetBool(GRPC_ARG_SURFACE_USER_AGENT).value_or(true),
+ args.GetBool(
+ GRPC_ARG_DO_NOT_USE_UNLESS_YOU_HAVE_PERMISSION_FROM_GRPC_TEAM_ALLOW_BROKEN_PUT_REQUESTS)
+ .value_or(false));
}
-/* Constructor for call_data */
-static grpc_error_handle hs_init_call_elem(grpc_call_element* elem,
- const grpc_call_element_args* args) {
- new (elem->call_data) call_data(elem, *args);
- return GRPC_ERROR_NONE;
-}
-
-/* Destructor for call_data */
-static void hs_destroy_call_elem(grpc_call_element* elem,
- const grpc_call_final_info* /*final_info*/,
- grpc_closure* /*ignored*/) {
- call_data* calld = static_cast<call_data*>(elem->call_data);
- calld->~call_data();
-}
-
-/* Constructor for channel_data */
-static grpc_error_handle hs_init_channel_elem(grpc_channel_element* elem,
- grpc_channel_element_args* args) {
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
- GPR_ASSERT(!args->is_last);
- chand->surface_user_agent = grpc_channel_arg_get_bool(
- grpc_channel_args_find(args->channel_args,
- const_cast<char*>(GRPC_ARG_SURFACE_USER_AGENT)),
- true);
- return GRPC_ERROR_NONE;
-}
-
-/* Destructor for channel data */
-static void hs_destroy_channel_elem(grpc_channel_element* /*elem*/) {}
-
-const grpc_channel_filter grpc_http_server_filter = {
- hs_start_transport_stream_op_batch,
- nullptr,
- grpc_channel_next_op,
- sizeof(call_data),
- hs_init_call_elem,
- grpc_call_stack_ignore_set_pollset_or_pollset_set,
- hs_destroy_call_elem,
- sizeof(channel_data),
- hs_init_channel_elem,
- hs_destroy_channel_elem,
- grpc_channel_next_get_info,
- "http-server"};
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/http/server/http_server_filter.h b/contrib/libs/grpc/src/core/ext/filters/http/server/http_server_filter.h
index e4e0546f6d..cec771fb7f 100644
--- a/contrib/libs/grpc/src/core/ext/filters/http/server/http_server_filter.h
+++ b/contrib/libs/grpc/src/core/ext/filters/http/server/http_server_filter.h
@@ -21,9 +21,43 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/channel/channel_stack.h"
+#include "y_absl/status/statusor.h"
-/* Processes metadata on the server side for HTTP2 transports */
-extern const grpc_channel_filter grpc_http_server_filter;
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/promise_based_filter.h"
+#include "src/core/lib/promise/arena_promise.h"
+#include "src/core/lib/transport/transport.h"
+
+namespace grpc_core {
+
+// Processes metadata on the server side for HTTP2 transports
+class HttpServerFilter : public ChannelFilter {
+ public:
+ static const grpc_channel_filter kFilter;
+
+ static y_absl::StatusOr<HttpServerFilter> Create(
+ const ChannelArgs& args, ChannelFilter::Args filter_args);
+
+ // Construct a promise for one call.
+ ArenaPromise<ServerMetadataHandle> MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) override;
+
+ private:
+ HttpServerFilter(bool surface_user_agent, bool allow_put_requests)
+ : surface_user_agent_(surface_user_agent),
+ allow_put_requests_(allow_put_requests) {}
+
+ bool surface_user_agent_;
+ bool allow_put_requests_;
+};
+
+} // namespace grpc_core
+
+// A Temporary channel arg that allows servers to accept PUT requests. DO NOT
+// USE WITHOUT PERMISSION.
+#define GRPC_ARG_DO_NOT_USE_UNLESS_YOU_HAVE_PERMISSION_FROM_GRPC_TEAM_ALLOW_BROKEN_PUT_REQUESTS \
+ "grpc.http.do_not_use_unless_you_have_permission_from_grpc_team_allow_" \
+ "broken_put_requests"
#endif /* GRPC_CORE_EXT_FILTERS_HTTP_SERVER_HTTP_SERVER_FILTER_H */
diff --git a/contrib/libs/grpc/src/core/ext/filters/max_age/max_age_filter.cc b/contrib/libs/grpc/src/core/ext/filters/max_age/max_age_filter.cc
deleted file mode 100644
index 4bfda8e9bb..0000000000
--- a/contrib/libs/grpc/src/core/ext/filters/max_age/max_age_filter.cc
+++ /dev/null
@@ -1,566 +0,0 @@
-/*
- *
- * Copyright 2017 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/ext/filters/max_age/max_age_filter.h"
-
-#include <limits.h>
-#include <string.h>
-
-#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channel_stack_builder.h"
-#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/transport/http2_errors.h"
-
-/* If these settings change, make sure that we are not sending a GOAWAY for
- * inproc transport, since a GOAWAY to inproc ends up destroying the transport.
- */
-#define DEFAULT_MAX_CONNECTION_AGE_MS INT_MAX
-#define DEFAULT_MAX_CONNECTION_AGE_GRACE_MS INT_MAX
-#define DEFAULT_MAX_CONNECTION_IDLE_MS INT_MAX
-#define MAX_CONNECTION_AGE_JITTER 0.1
-
-#define MAX_CONNECTION_AGE_INTEGER_OPTIONS \
- { DEFAULT_MAX_CONNECTION_AGE_MS, 1, INT_MAX }
-#define MAX_CONNECTION_IDLE_INTEGER_OPTIONS \
- { DEFAULT_MAX_CONNECTION_IDLE_MS, 1, INT_MAX }
-
-/* States for idle_state in channel_data */
-#define MAX_IDLE_STATE_INIT ((gpr_atm)0)
-#define MAX_IDLE_STATE_SEEN_EXIT_IDLE ((gpr_atm)1)
-#define MAX_IDLE_STATE_SEEN_ENTER_IDLE ((gpr_atm)2)
-#define MAX_IDLE_STATE_TIMER_SET ((gpr_atm)3)
-
-namespace {
-struct channel_data {
- /* The channel stack to which we take refs for pending callbacks. */
- grpc_channel_stack* channel_stack;
- /* Guards access to max_age_timer, max_age_timer_pending, max_age_grace_timer
- and max_age_grace_timer_pending */
- grpc_core::Mutex max_age_timer_mu;
- /* True if the max_age timer callback is currently pending */
- bool max_age_timer_pending Y_ABSL_GUARDED_BY(max_age_timer_mu) = false;
- /* True if the max_age_grace timer callback is currently pending */
- bool max_age_grace_timer_pending Y_ABSL_GUARDED_BY(max_age_timer_mu) = false;
- /* The timer for checking if the channel has reached its max age */
- grpc_timer max_age_timer Y_ABSL_GUARDED_BY(max_age_timer_mu);
- /* The timer for checking if the max-aged channel has uesed up the grace
- period */
- grpc_timer max_age_grace_timer Y_ABSL_GUARDED_BY(max_age_timer_mu);
- /* The timer for checking if the channel's idle duration reaches
- max_connection_idle */
- grpc_timer max_idle_timer;
- /* Allowed max time a channel may have no outstanding rpcs */
- grpc_core::Duration max_connection_idle;
- /* Allowed max time a channel may exist */
- grpc_core::Duration max_connection_age;
- /* Allowed grace period after the channel reaches its max age */
- grpc_core::Duration max_connection_age_grace;
- /* Closure to run when the channel's idle duration reaches max_connection_idle
- and should be closed gracefully */
- grpc_closure max_idle_timer_cb;
- /* Closure to run when the channel reaches its max age and should be closed
- gracefully */
- grpc_closure close_max_age_channel;
- /* Closure to run the channel uses up its max age grace time and should be
- closed forcibly */
- grpc_closure force_close_max_age_channel;
- /* Closure to run when the init fo channel stack is done and the max_idle
- timer should be started */
- grpc_closure start_max_idle_timer_after_init;
- /* Closure to run when the init fo channel stack is done and the max_age timer
- should be started */
- grpc_closure start_max_age_timer_after_init;
- /* Closure to run when the goaway op is finished and the max_age_timer */
- grpc_closure start_max_age_grace_timer_after_goaway_op;
- /* Number of active calls */
- gpr_atm call_count;
- /* TODO(zyc): C++lize this state machine */
- /* 'idle_state' holds the states of max_idle_timer and channel idleness.
- It can contain one of the following values:
- +--------------------------------+----------------+---------+
- | idle_state | max_idle_timer | channel |
- +--------------------------------+----------------+---------+
- | MAX_IDLE_STATE_INIT | unset | busy |
- | MAX_IDLE_STATE_TIMER_SET | set, valid | idle |
- | MAX_IDLE_STATE_SEEN_EXIT_IDLE | set, invalid | busy |
- | MAX_IDLE_STATE_SEEN_ENTER_IDLE | set, invalid | idle |
- +--------------------------------+----------------+---------+
-
- MAX_IDLE_STATE_INIT: The initial and final state of 'idle_state'. The
- channel has 1 or 1+ active calls, and the timer is not set. Note that
- we may put a virtual call to hold this state at channel initialization or
- shutdown, so that the channel won't enter other states.
-
- MAX_IDLE_STATE_TIMER_SET: The state after the timer is set and no calls
- have arrived after the timer is set. The channel must have 0 active call in
- this state. If the timer is fired in this state, we will close the channel
- due to idleness.
-
- MAX_IDLE_STATE_SEEN_EXIT_IDLE: The state after the timer is set and at
- least one call has arrived after the timer is set. The channel must have 1
- or 1+ active calls in this state. If the timer is fired in this state, we
- won't reschudle it.
-
- MAX_IDLE_STATE_SEEN_ENTER_IDLE: The state after the timer is set and the at
- least one call has arrived after the timer is set, BUT the channel
- currently has 0 active calls. If the timer is fired in this state, we will
- reschudle it.
-
- max_idle_timer will not be cancelled (unless the channel is shutting down).
- If the timer callback is called when the max_idle_timer is valid (i.e.
- idle_state is MAX_IDLE_STATE_TIMER_SET), the channel will be closed due to
- idleness, otherwise the channel won't be changed.
-
- State transitions:
- MAX_IDLE_STATE_INIT <-------3------ MAX_IDLE_STATE_SEEN_EXIT_IDLE
- ^ | ^ ^ |
- | | | | |
- 1 2 +-----------4------------+ 6 7
- | | | | |
- | v | | v
- MAX_IDLE_STATE_TIMER_SET <----5------ MAX_IDLE_STATE_SEEN_ENTER_IDLE
-
- For 1, 3, 5 : See max_idle_timer_cb() function
- For 2, 7 : See decrease_call_count() function
- For 4, 6 : See increase_call_count() function */
- gpr_atm idle_state;
- /* Time when the channel finished its last outstanding call, in
- * grpc_core::Timestamp */
- gpr_atm last_enter_idle_time_millis;
-};
-} // namespace
-
-/* Increase the nubmer of active calls. Before the increasement, if there are no
- calls, the max_idle_timer should be cancelled. */
-static void increase_call_count(channel_data* chand) {
- /* Exit idle */
- if (gpr_atm_full_fetch_add(&chand->call_count, 1) == 0) {
- while (true) {
- gpr_atm idle_state = gpr_atm_acq_load(&chand->idle_state);
- switch (idle_state) {
- case MAX_IDLE_STATE_TIMER_SET:
- /* max_idle_timer_cb may have already set idle_state to
- MAX_IDLE_STATE_INIT, in this case, we don't need to set it to
- MAX_IDLE_STATE_SEEN_EXIT_IDLE */
- gpr_atm_rel_cas(&chand->idle_state, MAX_IDLE_STATE_TIMER_SET,
- MAX_IDLE_STATE_SEEN_EXIT_IDLE);
- return;
- case MAX_IDLE_STATE_SEEN_ENTER_IDLE:
- gpr_atm_rel_store(&chand->idle_state, MAX_IDLE_STATE_SEEN_EXIT_IDLE);
- return;
- default:
- /* try again */
- break;
- }
- }
- }
-}
-
-/* Decrease the nubmer of active calls. After the decrement, if there are no
- calls, the max_idle_timer should be started. */
-static void decrease_call_count(channel_data* chand) {
- /* Enter idle */
- if (gpr_atm_full_fetch_add(&chand->call_count, -1) == 1) {
- gpr_atm_no_barrier_store(&chand->last_enter_idle_time_millis,
- (gpr_atm)grpc_core::ExecCtx::Get()
- ->Now()
- .milliseconds_after_process_epoch());
- while (true) {
- gpr_atm idle_state = gpr_atm_acq_load(&chand->idle_state);
- switch (idle_state) {
- case MAX_IDLE_STATE_INIT:
- GRPC_CHANNEL_STACK_REF(chand->channel_stack,
- "max_age max_idle_timer");
- grpc_timer_init(
- &chand->max_idle_timer,
- grpc_core::ExecCtx::Get()->Now() + chand->max_connection_idle,
- &chand->max_idle_timer_cb);
- gpr_atm_rel_store(&chand->idle_state, MAX_IDLE_STATE_TIMER_SET);
- return;
- case MAX_IDLE_STATE_SEEN_EXIT_IDLE:
- if (gpr_atm_rel_cas(&chand->idle_state, MAX_IDLE_STATE_SEEN_EXIT_IDLE,
- MAX_IDLE_STATE_SEEN_ENTER_IDLE)) {
- return;
- }
- break;
- default:
- /* try again */
- break;
- }
- }
- }
-}
-
-static void start_max_idle_timer_after_init(void* arg,
- grpc_error_handle /*error*/) {
- channel_data* chand = static_cast<channel_data*>(arg);
- /* Decrease call_count. If there are no active calls at this time,
- max_idle_timer will start here. If the number of active calls is not 0,
- max_idle_timer will start after all the active calls end. */
- decrease_call_count(chand);
- GRPC_CHANNEL_STACK_UNREF(chand->channel_stack,
- "max_age start_max_idle_timer_after_init");
-}
-
-namespace grpc_core {
-
-class ConnectivityWatcher : public AsyncConnectivityStateWatcherInterface {
- public:
- explicit ConnectivityWatcher(channel_data* chand) : chand_(chand) {
- GRPC_CHANNEL_STACK_REF(chand_->channel_stack, "max_age conn_watch");
- }
-
- ~ConnectivityWatcher() override {
- GRPC_CHANNEL_STACK_UNREF(chand_->channel_stack, "max_age conn_watch");
- }
-
- private:
- void OnConnectivityStateChange(grpc_connectivity_state new_state,
- const y_absl::Status& /* status */) override {
- if (new_state != GRPC_CHANNEL_SHUTDOWN) return;
- {
- MutexLock lock(&chand_->max_age_timer_mu);
- if (chand_->max_age_timer_pending) {
- grpc_timer_cancel(&chand_->max_age_timer);
- chand_->max_age_timer_pending = false;
- }
- if (chand_->max_age_grace_timer_pending) {
- grpc_timer_cancel(&chand_->max_age_grace_timer);
- chand_->max_age_grace_timer_pending = false;
- }
- }
- /* If there are no active calls, this increasement will cancel
- max_idle_timer, and prevent max_idle_timer from being started in the
- future. */
- increase_call_count(chand_);
- if (gpr_atm_acq_load(&chand_->idle_state) ==
- MAX_IDLE_STATE_SEEN_EXIT_IDLE) {
- grpc_timer_cancel(&chand_->max_idle_timer);
- }
- }
-
- channel_data* chand_;
-};
-
-} // namespace grpc_core
-
-static void start_max_age_timer_after_init(void* arg,
- grpc_error_handle /*error*/) {
- channel_data* chand = static_cast<channel_data*>(arg);
- {
- grpc_core::MutexLock lock(&chand->max_age_timer_mu);
- chand->max_age_timer_pending = true;
- GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age max_age_timer");
- grpc_timer_init(
- &chand->max_age_timer,
- grpc_core::ExecCtx::Get()->Now() + chand->max_connection_age,
- &chand->close_max_age_channel);
- }
- grpc_transport_op* op = grpc_make_transport_op(nullptr);
- op->start_connectivity_watch.reset(new grpc_core::ConnectivityWatcher(chand));
- op->start_connectivity_watch_state = GRPC_CHANNEL_IDLE;
- grpc_channel_next_op(grpc_channel_stack_element(chand->channel_stack, 0), op);
- GRPC_CHANNEL_STACK_UNREF(chand->channel_stack,
- "max_age start_max_age_timer_after_init");
-}
-
-static void start_max_age_grace_timer_after_goaway_op(
- void* arg, grpc_error_handle /*error*/) {
- channel_data* chand = static_cast<channel_data*>(arg);
- {
- grpc_core::MutexLock lock(&chand->max_age_timer_mu);
- chand->max_age_grace_timer_pending = true;
- GRPC_CHANNEL_STACK_REF(chand->channel_stack, "max_age max_age_grace_timer");
- grpc_timer_init(
- &chand->max_age_grace_timer,
- grpc_core::ExecCtx::Get()->Now() + chand->max_connection_age_grace,
- &chand->force_close_max_age_channel);
- }
- GRPC_CHANNEL_STACK_UNREF(chand->channel_stack,
- "max_age start_max_age_grace_timer_after_goaway_op");
-}
-
-static void close_max_idle_channel(channel_data* chand) {
- /* Prevent the max idle timer from being set again */
- gpr_atm_no_barrier_fetch_add(&chand->call_count, 1);
- grpc_transport_op* op = grpc_make_transport_op(nullptr);
- op->goaway_error =
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("max_idle"),
- GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_NO_ERROR);
- grpc_channel_element* elem =
- grpc_channel_stack_element(chand->channel_stack, 0);
- elem->filter->start_transport_op(elem, op);
-}
-
-static void max_idle_timer_cb(void* arg, grpc_error_handle error) {
- channel_data* chand = static_cast<channel_data*>(arg);
- if (error == GRPC_ERROR_NONE) {
- bool try_again = true;
- while (try_again) {
- gpr_atm idle_state = gpr_atm_acq_load(&chand->idle_state);
- switch (idle_state) {
- case MAX_IDLE_STATE_TIMER_SET:
- close_max_idle_channel(chand);
- /* This MAX_IDLE_STATE_INIT is a final state, we don't have to check
- * if idle_state has been changed */
- gpr_atm_rel_store(&chand->idle_state, MAX_IDLE_STATE_INIT);
- try_again = false;
- break;
- case MAX_IDLE_STATE_SEEN_EXIT_IDLE:
- if (gpr_atm_rel_cas(&chand->idle_state, MAX_IDLE_STATE_SEEN_EXIT_IDLE,
- MAX_IDLE_STATE_INIT)) {
- try_again = false;
- }
- break;
- case MAX_IDLE_STATE_SEEN_ENTER_IDLE:
- GRPC_CHANNEL_STACK_REF(chand->channel_stack,
- "max_age max_idle_timer");
- grpc_timer_init(
- &chand->max_idle_timer,
- grpc_core::Timestamp::FromMillisecondsAfterProcessEpoch(
- gpr_atm_no_barrier_load(
- &chand->last_enter_idle_time_millis)) +
- chand->max_connection_idle,
- &chand->max_idle_timer_cb);
- /* idle_state may have already been set to
- MAX_IDLE_STATE_SEEN_EXIT_IDLE by increase_call_count(), in this
- case, we don't need to set it to MAX_IDLE_STATE_TIMER_SET */
- gpr_atm_rel_cas(&chand->idle_state, MAX_IDLE_STATE_SEEN_ENTER_IDLE,
- MAX_IDLE_STATE_TIMER_SET);
- try_again = false;
- break;
- default:
- /* try again */
- break;
- }
- }
- }
- GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age max_idle_timer");
-}
-
-static void close_max_age_channel(void* arg, grpc_error_handle error) {
- channel_data* chand = static_cast<channel_data*>(arg);
- {
- grpc_core::MutexLock lock(&chand->max_age_timer_mu);
- chand->max_age_timer_pending = false;
- }
- if (error == GRPC_ERROR_NONE) {
- GRPC_CHANNEL_STACK_REF(chand->channel_stack,
- "max_age start_max_age_grace_timer_after_goaway_op");
- grpc_transport_op* op = grpc_make_transport_op(
- &chand->start_max_age_grace_timer_after_goaway_op);
- op->goaway_error =
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING("max_age"),
- GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_NO_ERROR);
- grpc_channel_element* elem =
- grpc_channel_stack_element(chand->channel_stack, 0);
- elem->filter->start_transport_op(elem, op);
- } else if (error != GRPC_ERROR_CANCELLED) {
- GRPC_LOG_IF_ERROR("close_max_age_channel", error);
- }
- GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age max_age_timer");
-}
-
-static void force_close_max_age_channel(void* arg, grpc_error_handle error) {
- channel_data* chand = static_cast<channel_data*>(arg);
- {
- grpc_core::MutexLock lock(&chand->max_age_timer_mu);
- chand->max_age_grace_timer_pending = false;
- }
- if (error == GRPC_ERROR_NONE) {
- grpc_transport_op* op = grpc_make_transport_op(nullptr);
- op->disconnect_with_error =
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel reaches max age");
- grpc_channel_element* elem =
- grpc_channel_stack_element(chand->channel_stack, 0);
- elem->filter->start_transport_op(elem, op);
- } else if (error != GRPC_ERROR_CANCELLED) {
- GRPC_LOG_IF_ERROR("force_close_max_age_channel", error);
- }
- GRPC_CHANNEL_STACK_UNREF(chand->channel_stack, "max_age max_age_grace_timer");
-}
-
-/* A random jitter of +/-10% will be added to MAX_CONNECTION_AGE to spread out
- connection storms. Note that the MAX_CONNECTION_AGE option without jitter
- would not create connection storms by itself, but if there happened to be a
- connection storm it could cause it to repeat at a fixed period. */
-static grpc_core::Duration
-add_random_max_connection_age_jitter_and_convert_to_duration(int value) {
- /* generate a random number between 1 - MAX_CONNECTION_AGE_JITTER and
- 1 + MAX_CONNECTION_AGE_JITTER */
- double multiplier = rand() * MAX_CONNECTION_AGE_JITTER * 2.0 / RAND_MAX +
- 1.0 - MAX_CONNECTION_AGE_JITTER;
- double result = multiplier * value;
- /* INT_MAX - 0.5 converts the value to float, so that result will not be
- cast to int implicitly before the comparison. */
- return result > (static_cast<double>(
- grpc_core::Duration::Infinity().millis())) -
- 0.5
- ? grpc_core::Duration::Infinity()
- : grpc_core::Duration::Milliseconds(result);
-}
-
-/* Constructor for call_data. */
-static grpc_error_handle max_age_init_call_elem(
- grpc_call_element* elem, const grpc_call_element_args* /*args*/) {
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
- increase_call_count(chand);
- return GRPC_ERROR_NONE;
-}
-
-/* Destructor for call_data. */
-static void max_age_destroy_call_elem(
- grpc_call_element* elem, const grpc_call_final_info* /*final_info*/,
- grpc_closure* /*ignored*/) {
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
- decrease_call_count(chand);
-}
-
-/* Constructor for channel_data. */
-static grpc_error_handle max_age_init_channel_elem(
- grpc_channel_element* elem, grpc_channel_element_args* args) {
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
- new (chand) channel_data();
- chand->channel_stack = args->channel_stack;
- chand->max_connection_age =
- add_random_max_connection_age_jitter_and_convert_to_duration(
- DEFAULT_MAX_CONNECTION_AGE_MS);
- chand->max_connection_age_grace =
- DEFAULT_MAX_CONNECTION_AGE_GRACE_MS == INT_MAX
- ? grpc_core::Duration::Infinity()
- : grpc_core::Duration::Milliseconds(
- DEFAULT_MAX_CONNECTION_AGE_GRACE_MS);
- chand->max_connection_idle =
- DEFAULT_MAX_CONNECTION_IDLE_MS == INT_MAX
- ? grpc_core::Duration::Infinity()
- : grpc_core::Duration::Milliseconds(DEFAULT_MAX_CONNECTION_IDLE_MS);
- chand->idle_state = MAX_IDLE_STATE_INIT;
- gpr_atm_no_barrier_store(&chand->last_enter_idle_time_millis, GPR_ATM_MIN);
- for (size_t i = 0; i < args->channel_args->num_args; ++i) {
- if (0 == strcmp(args->channel_args->args[i].key,
- GRPC_ARG_MAX_CONNECTION_AGE_MS)) {
- const int value = grpc_channel_arg_get_integer(
- &args->channel_args->args[i], MAX_CONNECTION_AGE_INTEGER_OPTIONS);
- chand->max_connection_age =
- add_random_max_connection_age_jitter_and_convert_to_duration(value);
- } else if (0 == strcmp(args->channel_args->args[i].key,
- GRPC_ARG_MAX_CONNECTION_AGE_GRACE_MS)) {
- const int value = grpc_channel_arg_get_integer(
- &args->channel_args->args[i],
- {DEFAULT_MAX_CONNECTION_AGE_GRACE_MS, 0, INT_MAX});
- chand->max_connection_age_grace =
- value == INT_MAX ? grpc_core::Duration::Infinity()
- : grpc_core::Duration::Milliseconds(value);
- } else if (0 == strcmp(args->channel_args->args[i].key,
- GRPC_ARG_MAX_CONNECTION_IDLE_MS)) {
- const int value = grpc_channel_arg_get_integer(
- &args->channel_args->args[i], MAX_CONNECTION_IDLE_INTEGER_OPTIONS);
- chand->max_connection_idle =
- value == INT_MAX ? grpc_core::Duration::Infinity()
- : grpc_core::Duration::Milliseconds(value);
- }
- }
- GRPC_CLOSURE_INIT(&chand->max_idle_timer_cb, max_idle_timer_cb, chand,
- grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&chand->close_max_age_channel, close_max_age_channel, chand,
- grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&chand->force_close_max_age_channel,
- force_close_max_age_channel, chand,
- grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&chand->start_max_idle_timer_after_init,
- start_max_idle_timer_after_init, chand,
- grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&chand->start_max_age_timer_after_init,
- start_max_age_timer_after_init, chand,
- grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&chand->start_max_age_grace_timer_after_goaway_op,
- start_max_age_grace_timer_after_goaway_op, chand,
- grpc_schedule_on_exec_ctx);
-
- if (chand->max_connection_age != grpc_core::Duration::Infinity()) {
- /* When the channel reaches its max age, we send down an op with
- goaway_error set. However, we can't send down any ops until after the
- channel stack is fully initialized. If we start the timer here, we have
- no guarantee that the timer won't pop before channel stack initialization
- is finished. To avoid that problem, we create a closure to start the
- timer, and we schedule that closure to be run after call stack
- initialization is done. */
- GRPC_CHANNEL_STACK_REF(chand->channel_stack,
- "max_age start_max_age_timer_after_init");
- grpc_core::ExecCtx::Run(DEBUG_LOCATION,
- &chand->start_max_age_timer_after_init,
- GRPC_ERROR_NONE);
- }
-
- /* Initialize the number of calls as 1, so that the max_idle_timer will not
- start until start_max_idle_timer_after_init is invoked. */
- gpr_atm_rel_store(&chand->call_count, 1);
- if (chand->max_connection_idle != grpc_core::Duration::Infinity()) {
- GRPC_CHANNEL_STACK_REF(chand->channel_stack,
- "max_age start_max_idle_timer_after_init");
- grpc_core::ExecCtx::Run(DEBUG_LOCATION,
- &chand->start_max_idle_timer_after_init,
- GRPC_ERROR_NONE);
- }
- return GRPC_ERROR_NONE;
-}
-
-/* Destructor for channel_data. */
-static void max_age_destroy_channel_elem(grpc_channel_element* elem) {
- channel_data* chand = static_cast<channel_data*>(elem->channel_data);
- chand->~channel_data();
-}
-
-const grpc_channel_filter grpc_max_age_filter = {
- grpc_call_next_op,
- nullptr,
- grpc_channel_next_op,
- 0, /* sizeof_call_data */
- max_age_init_call_elem,
- grpc_call_stack_ignore_set_pollset_or_pollset_set,
- max_age_destroy_call_elem,
- sizeof(channel_data),
- max_age_init_channel_elem,
- max_age_destroy_channel_elem,
- grpc_channel_next_get_info,
- "max_age"};
-
-namespace grpc_core {
-void RegisterMaxAgeFilter(CoreConfiguration::Builder* builder) {
- builder->channel_init()->RegisterStage(
- GRPC_SERVER_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
- [](ChannelStackBuilder* builder) {
- const grpc_channel_args* channel_args = builder->channel_args();
- bool enable = grpc_channel_arg_get_integer(
- grpc_channel_args_find(
- channel_args, GRPC_ARG_MAX_CONNECTION_AGE_MS),
- MAX_CONNECTION_AGE_INTEGER_OPTIONS) != INT_MAX ||
- grpc_channel_arg_get_integer(
- grpc_channel_args_find(
- channel_args, GRPC_ARG_MAX_CONNECTION_IDLE_MS),
- MAX_CONNECTION_IDLE_INTEGER_OPTIONS) != INT_MAX;
- if (enable) {
- builder->PrependFilter(&grpc_max_age_filter, nullptr);
- }
- return true;
- });
-}
-} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/message_size/message_size_filter.cc b/contrib/libs/grpc/src/core/ext/filters/message_size/message_size_filter.cc
index bf6d273d70..b08c49631c 100644
--- a/contrib/libs/grpc/src/core/ext/filters/message_size/message_size_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/message_size/message_size_filter.cc
@@ -18,24 +18,38 @@
#include "src/core/ext/filters/message_size/message_size_filter.h"
-#include <limits.h>
-#include <string.h>
-
+#include <algorithm>
+#include <map>
+#include <new>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
+#include "y_absl/types/optional.h"
#include <grpc/impl/codegen/grpc_types.h>
-#include <grpc/support/alloc.h>
+#include <grpc/status.h>
#include <grpc/support/log.h>
-#include "src/core/ext/filters/message_size/message_size_filter.h"
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/ref_counted.h"
-#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/service_config/service_config_call_data.h"
-#include "src/core/lib/surface/call.h"
+#include "src/core/lib/slice/slice_buffer.h"
+#include "src/core/lib/surface/channel_init.h"
+#include "src/core/lib/surface/channel_stack_type.h"
+#include "src/core/lib/transport/transport.h"
static void recv_message_ready(void* user_data, grpc_error_handle error);
static void recv_trailing_metadata_ready(void* user_data,
@@ -62,11 +76,9 @@ const MessageSizeParsedConfig* MessageSizeParsedConfig::GetFromCallContext(
// MessageSizeParser
//
-std::unique_ptr<ServiceConfigParser::ParsedConfig>
-MessageSizeParser::ParsePerMethodParams(const grpc_channel_args* /*args*/,
- const Json& json,
- grpc_error_handle* error) {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
+y_absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
+MessageSizeParser::ParsePerMethodParams(const ChannelArgs& /*args*/,
+ const Json& json) {
std::vector<grpc_error_handle> error_list;
// Max request size.
int max_request_message_bytes = -1;
@@ -103,8 +115,13 @@ MessageSizeParser::ParsePerMethodParams(const grpc_channel_args* /*args*/,
}
}
if (!error_list.empty()) {
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("Message size parser", &error_list);
- return nullptr;
+ grpc_error_handle error =
+ GRPC_ERROR_CREATE_FROM_VECTOR("Message size parser", &error_list);
+ y_absl::Status status = y_absl::InvalidArgumentError(
+ y_absl::StrCat("error parsing message size method parameters: ",
+ grpc_error_std_string(error)));
+ GRPC_ERROR_UNREF(error);
+ return status;
}
return y_absl::make_unique<MessageSizeParsedConfig>(max_request_message_bytes,
max_response_message_bytes);
@@ -120,18 +137,16 @@ size_t MessageSizeParser::ParserIndex() {
parser_name());
}
-int GetMaxRecvSizeFromChannelArgs(const grpc_channel_args* args) {
- if (grpc_channel_args_want_minimal_stack(args)) return -1;
- return grpc_channel_args_find_integer(
- args, GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH,
- {GRPC_DEFAULT_MAX_RECV_MESSAGE_LENGTH, -1, INT_MAX});
+int GetMaxRecvSizeFromChannelArgs(const ChannelArgs& args) {
+ if (args.WantMinimalStack()) return -1;
+ return std::max(-1, args.GetInt(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH)
+ .value_or(GRPC_DEFAULT_MAX_RECV_MESSAGE_LENGTH));
}
-int GetMaxSendSizeFromChannelArgs(const grpc_channel_args* args) {
- if (grpc_channel_args_want_minimal_stack(args)) return -1;
- return grpc_channel_args_find_integer(
- args, GRPC_ARG_MAX_SEND_MESSAGE_LENGTH,
- {GRPC_DEFAULT_MAX_SEND_MESSAGE_LENGTH, -1, INT_MAX});
+int GetMaxSendSizeFromChannelArgs(const ChannelArgs& args) {
+ if (args.WantMinimalStack()) return -1;
+ return std::max(-1, args.GetInt(GRPC_ARG_MAX_SEND_MESSAGE_LENGTH)
+ .value_or(GRPC_DEFAULT_MAX_SEND_MESSAGE_LENGTH));
}
} // namespace grpc_core
@@ -185,7 +200,7 @@ struct call_data {
// The error caused by a message that is too large, or GRPC_ERROR_NONE
grpc_error_handle error = GRPC_ERROR_NONE;
// Used by recv_message_ready.
- grpc_core::OrphanablePtr<grpc_core::ByteStream>* recv_message = nullptr;
+ y_absl::optional<grpc_core::SliceBuffer>* recv_message = nullptr;
// Original recv_message_ready callback, invoked after our own.
grpc_closure* next_recv_message_ready = nullptr;
// Original recv_trailing_metadata callback, invoked after our own.
@@ -201,13 +216,13 @@ struct call_data {
static void recv_message_ready(void* user_data, grpc_error_handle error) {
grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
call_data* calld = static_cast<call_data*>(elem->call_data);
- if (*calld->recv_message != nullptr && calld->limits.max_recv_size >= 0 &&
- (*calld->recv_message)->length() >
+ if (calld->recv_message->has_value() && calld->limits.max_recv_size >= 0 &&
+ (*calld->recv_message)->Length() >
static_cast<size_t>(calld->limits.max_recv_size)) {
grpc_error_handle new_error = grpc_error_set_int(
GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrFormat(
"Received message larger than max (%u vs. %d)",
- (*calld->recv_message)->length(), calld->limits.max_recv_size)),
+ (*calld->recv_message)->Length(), calld->limits.max_recv_size)),
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED);
error = grpc_error_add_child(GRPC_ERROR_REF(error), new_error);
GRPC_ERROR_UNREF(calld->error);
@@ -260,13 +275,13 @@ static void message_size_start_transport_stream_op_batch(
call_data* calld = static_cast<call_data*>(elem->call_data);
// Check max send message size.
if (op->send_message && calld->limits.max_send_size >= 0 &&
- op->payload->send_message.send_message->length() >
+ op->payload->send_message.send_message->Length() >
static_cast<size_t>(calld->limits.max_send_size)) {
grpc_transport_stream_op_batch_finish_with_failure(
op,
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrFormat(
"Sent message larger than max (%u vs. %d)",
- op->payload->send_message.send_message->length(),
+ op->payload->send_message.send_message->Length(),
calld->limits.max_send_size)),
GRPC_ERROR_INT_GRPC_STATUS,
GRPC_STATUS_RESOURCE_EXHAUSTED),
@@ -308,7 +323,7 @@ static void message_size_destroy_call_elem(
}
grpc_core::MessageSizeParsedConfig::message_size_limits get_message_size_limits(
- const grpc_channel_args* channel_args) {
+ const grpc_core::ChannelArgs& channel_args) {
grpc_core::MessageSizeParsedConfig::message_size_limits lim;
lim.max_send_size = grpc_core::GetMaxSendSizeFromChannelArgs(channel_args);
lim.max_recv_size = grpc_core::GetMaxRecvSizeFromChannelArgs(channel_args);
@@ -321,7 +336,8 @@ static grpc_error_handle message_size_init_channel_elem(
GPR_ASSERT(!args->is_last);
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
new (chand) channel_data();
- chand->limits = get_message_size_limits(args->channel_args);
+ chand->limits = get_message_size_limits(
+ grpc_core::ChannelArgs::FromC(args->channel_args));
return GRPC_ERROR_NONE;
}
@@ -341,6 +357,7 @@ const grpc_channel_filter grpc_message_size_filter = {
message_size_destroy_call_elem,
sizeof(channel_data),
message_size_init_channel_elem,
+ grpc_channel_stack_no_post_init,
message_size_destroy_channel_elem,
grpc_channel_next_get_info,
"message_size"};
@@ -348,11 +365,10 @@ const grpc_channel_filter grpc_message_size_filter = {
// Used for GRPC_CLIENT_SUBCHANNEL
static bool maybe_add_message_size_filter_subchannel(
grpc_core::ChannelStackBuilder* builder) {
- const grpc_channel_args* channel_args = builder->channel_args();
- if (grpc_channel_args_want_minimal_stack(channel_args)) {
+ if (builder->channel_args().WantMinimalStack()) {
return true;
}
- builder->PrependFilter(&grpc_message_size_filter, nullptr);
+ builder->PrependFilter(&grpc_message_size_filter);
return true;
}
@@ -360,21 +376,16 @@ static bool maybe_add_message_size_filter_subchannel(
// only if message size limits or service config is specified.
static bool maybe_add_message_size_filter(
grpc_core::ChannelStackBuilder* builder) {
- const grpc_channel_args* channel_args = builder->channel_args();
- if (grpc_channel_args_want_minimal_stack(channel_args)) {
+ auto channel_args = builder->channel_args();
+ if (channel_args.WantMinimalStack()) {
return true;
}
- bool enable = false;
grpc_core::MessageSizeParsedConfig::message_size_limits lim =
get_message_size_limits(channel_args);
- if (lim.max_send_size != -1 || lim.max_recv_size != -1) {
- enable = true;
- }
- const grpc_arg* a =
- grpc_channel_args_find(channel_args, GRPC_ARG_SERVICE_CONFIG);
- const char* svc_cfg_str = grpc_channel_arg_get_string(a);
- if (svc_cfg_str != nullptr) enable = true;
- if (enable) builder->PrependFilter(&grpc_message_size_filter, nullptr);
+ const bool enable =
+ lim.max_send_size != -1 || lim.max_recv_size != -1 ||
+ channel_args.GetString(GRPC_ARG_SERVICE_CONFIG).has_value();
+ if (enable) builder->PrependFilter(&grpc_message_size_filter);
return true;
}
diff --git a/contrib/libs/grpc/src/core/ext/filters/message_size/message_size_filter.h b/contrib/libs/grpc/src/core/ext/filters/message_size/message_size_filter.h
index e56e5e4d9c..a0ce2bfa3a 100644
--- a/contrib/libs/grpc/src/core/ext/filters/message_size/message_size_filter.h
+++ b/contrib/libs/grpc/src/core/ext/filters/message_size/message_size_filter.h
@@ -19,8 +19,19 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <memory>
+
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/context.h"
#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/json/json.h"
#include "src/core/lib/service_config/service_config_parser.h"
extern const grpc_channel_filter grpc_message_size_filter;
@@ -53,9 +64,8 @@ class MessageSizeParser : public ServiceConfigParser::Parser {
public:
y_absl::string_view name() const override { return parser_name(); }
- std::unique_ptr<ServiceConfigParser::ParsedConfig> ParsePerMethodParams(
- const grpc_channel_args* /*args*/, const Json& json,
- grpc_error_handle* error) override;
+ y_absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
+ ParsePerMethodParams(const ChannelArgs& /*args*/, const Json& json) override;
static void Register(CoreConfiguration::Builder* builder);
@@ -65,8 +75,8 @@ class MessageSizeParser : public ServiceConfigParser::Parser {
static y_absl::string_view parser_name() { return "message_size"; }
};
-int GetMaxRecvSizeFromChannelArgs(const grpc_channel_args* args);
-int GetMaxSendSizeFromChannelArgs(const grpc_channel_args* args);
+int GetMaxRecvSizeFromChannelArgs(const ChannelArgs& args);
+int GetMaxSendSizeFromChannelArgs(const ChannelArgs& args);
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_filter.cc b/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_filter.cc
index 8e9abae06a..3ce6252610 100644
--- a/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_filter.cc
@@ -18,10 +18,21 @@
#include "src/core/ext/filters/rbac/rbac_filter.h"
+#include <new>
+#include <utility>
+
+#include <grpc/status.h>
+#include <grpc/support/log.h>
+
#include "src/core/ext/filters/rbac/rbac_service_config_parser.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/security/authorization/authorization_engine.h"
#include "src/core/lib/security/authorization/grpc_authorization_engine.h"
+#include "src/core/lib/security/context/security_context.h"
#include "src/core/lib/service_config/service_config_call_data.h"
-#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport_fwd.h"
namespace grpc_core {
@@ -71,7 +82,7 @@ void RbacFilter::CallData::RecvInitialMetadataReady(void* user_data,
grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
CallData* calld = static_cast<CallData*>(elem->call_data);
RbacFilter* filter = static_cast<RbacFilter*>(elem->channel_data);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
// Fetch and apply the rbac policy from the service config.
auto* service_config_call_data = static_cast<ServiceConfigCallData*>(
calld->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value);
@@ -92,7 +103,7 @@ void RbacFilter::CallData::RecvInitialMetadataReady(void* user_data,
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unauthorized RPC rejected");
}
}
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS,
GRPC_STATUS_PERMISSION_DENIED);
}
@@ -118,6 +129,7 @@ const grpc_channel_filter RbacFilter::kFilterVtable = {
RbacFilter::CallData::Destroy,
sizeof(RbacFilter),
RbacFilter::Init,
+ grpc_channel_stack_no_post_init,
RbacFilter::Destroy,
grpc_channel_next_get_info,
"rbac_filter",
diff --git a/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_filter.h b/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_filter.h
index 1c8a31e685..30297d7c54 100644
--- a/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_filter.h
+++ b/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_filter.h
@@ -19,8 +19,16 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/context.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/security/authorization/evaluate_args.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_service_config_parser.cc b/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_service_config_parser.cc
index f75e26f71e..13131d1e3b 100644
--- a/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_service_config_parser.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_service_config_parser.cc
@@ -18,10 +18,23 @@
#include "src/core/ext/filters/rbac/rbac_service_config_parser.h"
+#include <stdint.h>
+
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
+#include "y_absl/types/optional.h"
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/json/json_util.h"
+#include "src/core/lib/matchers/matchers.h"
#include "src/core/lib/transport/error_utils.h"
namespace grpc_core {
@@ -569,14 +582,11 @@ std::vector<Rbac> ParseRbacArray(const Json::Array& policies_json_array,
} // namespace
-std::unique_ptr<ServiceConfigParser::ParsedConfig>
-RbacServiceConfigParser::ParsePerMethodParams(const grpc_channel_args* args,
- const Json& json,
- grpc_error_handle* error) {
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
+y_absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
+RbacServiceConfigParser::ParsePerMethodParams(const ChannelArgs& args,
+ const Json& json) {
// Only parse rbac policy if the channel arg is present
- if (!grpc_channel_args_find_bool(args, GRPC_ARG_PARSE_RBAC_METHOD_CONFIG,
- false)) {
+ if (!args.GetBool(GRPC_ARG_PARSE_RBAC_METHOD_CONFIG).value_or(false)) {
return nullptr;
}
std::vector<Rbac> rbac_policies;
@@ -586,10 +596,16 @@ RbacServiceConfigParser::ParsePerMethodParams(const grpc_channel_args* args,
&policies_json_array, &error_list)) {
rbac_policies = ParseRbacArray(*policies_json_array, &error_list);
}
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("Rbac parser", &error_list);
- if (*error != GRPC_ERROR_NONE || rbac_policies.empty()) {
- return nullptr;
+ grpc_error_handle error =
+ GRPC_ERROR_CREATE_FROM_VECTOR("Rbac parser", &error_list);
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ y_absl::Status status = y_absl::InvalidArgumentError(
+ y_absl::StrCat("error parsing RBAC method parameters: ",
+ grpc_error_std_string(error)));
+ GRPC_ERROR_UNREF(error);
+ return status;
}
+ if (rbac_policies.empty()) return nullptr;
return y_absl::make_unique<RbacMethodParsedConfig>(std::move(rbac_policies));
}
diff --git a/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_service_config_parser.h b/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_service_config_parser.h
index 43803d5a6e..e0b10fbdc0 100644
--- a/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_service_config_parser.h
+++ b/contrib/libs/grpc/src/core/ext/filters/rbac/rbac_service_config_parser.h
@@ -19,10 +19,21 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <algorithm>
+#include <memory>
+#include <utility>
#include <vector>
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/json/json.h"
#include "src/core/lib/security/authorization/grpc_authorization_engine.h"
+#include "src/core/lib/security/authorization/rbac_policy.h"
#include "src/core/lib/service_config/service_config_parser.h"
namespace grpc_core {
@@ -43,8 +54,8 @@ class RbacMethodParsedConfig : public ServiceConfigParser::ParsedConfig {
// a connection on the server, multiple RBAC policies might be active. The
// RBAC filter uses this method to get the RBAC policy configured for a
// instance at a particular instance.
- const GrpcAuthorizationEngine* authorization_engine(int index) const {
- if (static_cast<size_t>(index) >= authorization_engines_.size()) {
+ const GrpcAuthorizationEngine* authorization_engine(size_t index) const {
+ if (index >= authorization_engines_.size()) {
return nullptr;
}
return &authorization_engines_[index];
@@ -58,9 +69,8 @@ class RbacServiceConfigParser : public ServiceConfigParser::Parser {
public:
y_absl::string_view name() const override { return parser_name(); }
// Parses the per-method service config for rbac filter.
- std::unique_ptr<ServiceConfigParser::ParsedConfig> ParsePerMethodParams(
- const grpc_channel_args* args, const Json& json,
- grpc_error_handle* error) override;
+ y_absl::StatusOr<std::unique_ptr<ServiceConfigParser::ParsedConfig>>
+ ParsePerMethodParams(const ChannelArgs& args, const Json& json) override;
// Returns the parser index for RbacServiceConfigParser.
static size_t ParserIndex();
// Registers RbacServiceConfigParser to ServiceConfigParser.
diff --git a/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector.cc b/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector.cc
index 85df64e4c2..97c7080813 100644
--- a/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector.cc
@@ -19,6 +19,7 @@
#include "src/core/ext/filters/server_config_selector/server_config_selector.h"
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gpr/useful.h"
namespace grpc_core {
namespace {
@@ -54,14 +55,8 @@ grpc_arg ServerConfigSelectorProvider::MakeChannelArg() const {
const_cast<ServerConfigSelectorProvider*>(this), &kChannelArgVtable);
}
-RefCountedPtr<ServerConfigSelectorProvider>
-ServerConfigSelectorProvider::GetFromChannelArgs(
- const grpc_channel_args& args) {
- ServerConfigSelectorProvider* config_selector_provider =
- grpc_channel_args_find_pointer<ServerConfigSelectorProvider>(
- &args, kServerConfigSelectorProviderChannelArgName);
- return config_selector_provider != nullptr ? config_selector_provider->Ref()
- : nullptr;
+y_absl::string_view ServerConfigSelectorProvider::ChannelArgName() {
+ return kServerConfigSelectorProviderChannelArgName;
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector.h b/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector.h
index 070e8bafab..fc6f88e2a7 100644
--- a/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector.h
+++ b/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector.h
@@ -19,10 +19,20 @@
#include <grpc/support/port_platform.h>
+#include <memory>
+
#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/dual_ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/service_config/service_config.h"
+#include "src/core/lib/service_config/service_config_parser.h"
#include "src/core/lib/transport/metadata_batch.h"
namespace grpc_core {
@@ -61,9 +71,13 @@ class ServerConfigSelectorProvider
std::unique_ptr<ServerConfigSelectorWatcher> watcher) = 0;
virtual void CancelWatch() = 0;
+ static y_absl::string_view ChannelArgName();
+ static int ChannelArgsCompare(const ServerConfigSelectorProvider* a,
+ const ServerConfigSelectorProvider* b) {
+ return QsortCompare(a, b);
+ }
+
grpc_arg MakeChannelArg() const;
- static RefCountedPtr<ServerConfigSelectorProvider> GetFromChannelArgs(
- const grpc_channel_args& args);
};
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc b/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc
index b82fe38b8e..09be073211 100644
--- a/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc
@@ -1,5 +1,3 @@
-//
-//
// Copyright 2021 gRPC authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,259 +11,151 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
-//
-//
#include <grpc/support/port_platform.h>
#include "src/core/ext/filters/server_config_selector/server_config_selector_filter.h"
+#include <functional>
+#include <memory>
+#include <utility>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/support/log.h>
+
#include "src/core/ext/filters/server_config_selector/server_config_selector.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/context.h"
+#include "src/core/lib/channel/promise_based_filter.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/promise/arena_promise.h"
+#include "src/core/lib/promise/context.h"
+#include "src/core/lib/promise/promise.h"
+#include "src/core/lib/resource_quota/arena.h"
#include "src/core/lib/service_config/service_config_call_data.h"
-#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/transport/transport.h"
namespace grpc_core {
namespace {
-class ChannelData {
+class ServerConfigSelectorFilter final : public ChannelFilter {
public:
- static grpc_error_handle Init(grpc_channel_element* elem,
- grpc_channel_element_args* args);
- static void Destroy(grpc_channel_element* elem);
+ ~ServerConfigSelectorFilter() override;
+
+ ServerConfigSelectorFilter(const ServerConfigSelectorFilter&) = delete;
+ ServerConfigSelectorFilter& operator=(const ServerConfigSelectorFilter&) =
+ delete;
+ ServerConfigSelectorFilter(ServerConfigSelectorFilter&&) = default;
+ ServerConfigSelectorFilter& operator=(ServerConfigSelectorFilter&&) = default;
+
+ static y_absl::StatusOr<ServerConfigSelectorFilter> Create(
+ const ChannelArgs& args, ChannelFilter::Args);
+
+ ArenaPromise<ServerMetadataHandle> MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) override;
y_absl::StatusOr<RefCountedPtr<ServerConfigSelector>> config_selector() {
- MutexLock lock(&mu_);
- return config_selector_.value();
+ MutexLock lock(&state_->mu);
+ return state_->config_selector.value();
}
private:
+ struct State {
+ Mutex mu;
+ y_absl::optional<y_absl::StatusOr<RefCountedPtr<ServerConfigSelector>>>
+ config_selector Y_ABSL_GUARDED_BY(mu);
+ };
class ServerConfigSelectorWatcher
: public ServerConfigSelectorProvider::ServerConfigSelectorWatcher {
public:
- explicit ServerConfigSelectorWatcher(ChannelData* chand) : chand_(chand) {}
+ explicit ServerConfigSelectorWatcher(std::shared_ptr<State> state)
+ : state_(state) {}
void OnServerConfigSelectorUpdate(
y_absl::StatusOr<RefCountedPtr<ServerConfigSelector>> update) override {
- MutexLock lock(&chand_->mu_);
- chand_->config_selector_ = std::move(update);
+ MutexLock lock(&state_->mu);
+ state_->config_selector = std::move(update);
}
private:
- ChannelData* chand_;
+ std::shared_ptr<State> state_;
};
- explicit ChannelData(RefCountedPtr<ServerConfigSelectorProvider>
- server_config_selector_provider);
- ~ChannelData();
+ explicit ServerConfigSelectorFilter(
+ RefCountedPtr<ServerConfigSelectorProvider>
+ server_config_selector_provider);
RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider_;
- Mutex mu_;
- y_absl::optional<y_absl::StatusOr<RefCountedPtr<ServerConfigSelector>>>
- config_selector_ Y_ABSL_GUARDED_BY(mu_);
-};
-
-class CallData {
- public:
- static grpc_error_handle Init(grpc_call_element* elem,
- const grpc_call_element_args* args);
- static void Destroy(grpc_call_element* elem,
- const grpc_call_final_info* /* final_info */,
- grpc_closure* /* then_schedule_closure */);
- static void StartTransportStreamOpBatch(grpc_call_element* elem,
- grpc_transport_stream_op_batch* op);
-
- private:
- CallData(grpc_call_element* elem, const grpc_call_element_args& args);
- ~CallData();
- static void RecvInitialMetadataReady(void* user_data,
- grpc_error_handle error);
- static void RecvTrailingMetadataReady(void* user_data,
- grpc_error_handle error);
- void MaybeResumeRecvTrailingMetadataReady();
-
- grpc_call_context_element* call_context_;
- CallCombiner* call_combiner_;
- ServiceConfigCallData service_config_call_data_;
- // Overall error for the call
- grpc_error_handle error_ = GRPC_ERROR_NONE;
- // State for keeping track of recv_initial_metadata
- grpc_metadata_batch* recv_initial_metadata_ = nullptr;
- grpc_closure* original_recv_initial_metadata_ready_ = nullptr;
- grpc_closure recv_initial_metadata_ready_;
- // State for keeping of track of recv_trailing_metadata
- grpc_closure* original_recv_trailing_metadata_ready_;
- grpc_closure recv_trailing_metadata_ready_;
- grpc_error_handle recv_trailing_metadata_ready_error_;
- bool seen_recv_trailing_metadata_ready_ = false;
+ std::shared_ptr<State> state_;
};
-// ChannelData
-
-grpc_error_handle ChannelData::Init(grpc_channel_element* elem,
- grpc_channel_element_args* args) {
- GPR_ASSERT(elem->filter == &kServerConfigSelectorFilter);
- RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider =
- ServerConfigSelectorProvider::GetFromChannelArgs(*args->channel_args);
+y_absl::StatusOr<ServerConfigSelectorFilter> ServerConfigSelectorFilter::Create(
+ const ChannelArgs& args, ChannelFilter::Args) {
+ ServerConfigSelectorProvider* server_config_selector_provider =
+ args.GetObject<ServerConfigSelectorProvider>();
if (server_config_selector_provider == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "No ServerConfigSelectorProvider object found");
+ return y_absl::UnknownError("No ServerConfigSelectorProvider object found");
}
- new (elem->channel_data)
- ChannelData(std::move(server_config_selector_provider));
- return GRPC_ERROR_NONE;
-}
-
-void ChannelData::Destroy(grpc_channel_element* elem) {
- auto* chand = static_cast<ChannelData*>(elem->channel_data);
- chand->~ChannelData();
+ return ServerConfigSelectorFilter(server_config_selector_provider->Ref());
}
-ChannelData::ChannelData(
+ServerConfigSelectorFilter::ServerConfigSelectorFilter(
RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider)
: server_config_selector_provider_(
- std::move(server_config_selector_provider)) {
+ std::move(server_config_selector_provider)),
+ state_(std::make_shared<State>()) {
GPR_ASSERT(server_config_selector_provider_ != nullptr);
auto server_config_selector_watcher =
- y_absl::make_unique<ServerConfigSelectorWatcher>(this);
+ y_absl::make_unique<ServerConfigSelectorWatcher>(state_);
auto config_selector = server_config_selector_provider_->Watch(
std::move(server_config_selector_watcher));
- MutexLock lock(&mu_);
+ MutexLock lock(&state_->mu);
// It's possible for the watcher to have already updated config_selector_
- if (!config_selector_.has_value()) {
- config_selector_ = std::move(config_selector);
+ if (!state_->config_selector.has_value()) {
+ state_->config_selector = std::move(config_selector);
}
}
-ChannelData::~ChannelData() { server_config_selector_provider_->CancelWatch(); }
-
-// CallData
-
-grpc_error_handle CallData::Init(grpc_call_element* elem,
- const grpc_call_element_args* args) {
- new (elem->call_data) CallData(elem, *args);
- return GRPC_ERROR_NONE;
-}
-
-void CallData::Destroy(grpc_call_element* elem,
- const grpc_call_final_info* /*final_info*/,
- grpc_closure* /*then_schedule_closure*/) {
- auto* calld = static_cast<CallData*>(elem->call_data);
- calld->~CallData();
-}
-
-void CallData::StartTransportStreamOpBatch(grpc_call_element* elem,
- grpc_transport_stream_op_batch* op) {
- CallData* calld = static_cast<CallData*>(elem->call_data);
- if (op->recv_initial_metadata) {
- calld->recv_initial_metadata_ =
- op->payload->recv_initial_metadata.recv_initial_metadata;
- calld->original_recv_initial_metadata_ready_ =
- op->payload->recv_initial_metadata.recv_initial_metadata_ready;
- op->payload->recv_initial_metadata.recv_initial_metadata_ready =
- &calld->recv_initial_metadata_ready_;
- }
- if (op->recv_trailing_metadata) {
- // We might generate errors on receiving initial metadata which we need to
- // bubble up through recv_trailing_metadata_ready
- calld->original_recv_trailing_metadata_ready_ =
- op->payload->recv_trailing_metadata.recv_trailing_metadata_ready;
- op->payload->recv_trailing_metadata.recv_trailing_metadata_ready =
- &calld->recv_trailing_metadata_ready_;
- }
- // Chain to the next filter.
- grpc_call_next_op(elem, op);
-}
-
-CallData::CallData(grpc_call_element* elem, const grpc_call_element_args& args)
- : call_context_(args.context), call_combiner_(args.call_combiner) {
- GRPC_CLOSURE_INIT(&recv_initial_metadata_ready_, RecvInitialMetadataReady,
- elem, grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_, RecvTrailingMetadataReady,
- elem, grpc_schedule_on_exec_ctx);
-}
-
-CallData::~CallData() {
- // Remove the entry from call context, just in case anyone above us
- // tries to look at it during call stack destruction.
- call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value = nullptr;
- GRPC_ERROR_UNREF(error_);
-}
-
-void CallData::RecvInitialMetadataReady(void* user_data,
- grpc_error_handle error) {
- grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
- CallData* calld = static_cast<CallData*>(elem->call_data);
- ChannelData* chand = static_cast<ChannelData*>(elem->channel_data);
- if (error == GRPC_ERROR_NONE) {
- auto config_selector = chand->config_selector();
- if (config_selector.ok()) {
- auto call_config =
- config_selector.value()->GetCallConfig(calld->recv_initial_metadata_);
- if (call_config.error != GRPC_ERROR_NONE) {
- calld->error_ = call_config.error;
- error = call_config.error; // Does not take a ref
- } else {
- calld->service_config_call_data_ =
- ServiceConfigCallData(std::move(call_config.service_config),
- call_config.method_configs, {});
- calld->call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value =
- &calld->service_config_call_data_;
- }
- } else {
- calld->error_ = absl_status_to_grpc_error(config_selector.status());
- error = calld->error_;
- }
+ServerConfigSelectorFilter::~ServerConfigSelectorFilter() {
+ if (server_config_selector_provider_ != nullptr) {
+ server_config_selector_provider_->CancelWatch();
}
- calld->MaybeResumeRecvTrailingMetadataReady();
- grpc_closure* closure = calld->original_recv_initial_metadata_ready_;
- calld->original_recv_initial_metadata_ready_ = nullptr;
- Closure::Run(DEBUG_LOCATION, closure, GRPC_ERROR_REF(error));
}
-void CallData::RecvTrailingMetadataReady(void* user_data,
- grpc_error_handle error) {
- grpc_call_element* elem = static_cast<grpc_call_element*>(user_data);
- CallData* calld = static_cast<CallData*>(elem->call_data);
- if (calld->original_recv_initial_metadata_ready_ != nullptr) {
- calld->seen_recv_trailing_metadata_ready_ = true;
- calld->recv_trailing_metadata_ready_error_ = GRPC_ERROR_REF(error);
- GRPC_CALL_COMBINER_STOP(calld->call_combiner_,
- "Deferring RecvTrailingMetadataReady until after "
- "RecvInitialMetadataReady");
- return;
- }
- error = grpc_error_add_child(GRPC_ERROR_REF(error), calld->error_);
- calld->error_ = GRPC_ERROR_NONE;
- grpc_closure* closure = calld->original_recv_trailing_metadata_ready_;
- calld->original_recv_trailing_metadata_ready_ = nullptr;
- Closure::Run(DEBUG_LOCATION, closure, error);
-}
-
-void CallData::MaybeResumeRecvTrailingMetadataReady() {
- if (seen_recv_trailing_metadata_ready_) {
- seen_recv_trailing_metadata_ready_ = false;
- grpc_error_handle error = recv_trailing_metadata_ready_error_;
- recv_trailing_metadata_ready_error_ = GRPC_ERROR_NONE;
- GRPC_CALL_COMBINER_START(call_combiner_, &recv_trailing_metadata_ready_,
- error, "Continuing RecvTrailingMetadataReady");
+ArenaPromise<ServerMetadataHandle> ServerConfigSelectorFilter::MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) {
+ auto sel = config_selector();
+ if (!sel.ok()) return Immediate(ServerMetadataHandle(sel.status()));
+ auto call_config =
+ sel.value()->GetCallConfig(call_args.client_initial_metadata.get());
+ if (!GRPC_ERROR_IS_NONE(call_config.error)) {
+ auto r = Immediate(ServerMetadataHandle(
+ y_absl::UnavailableError(grpc_error_std_string(call_config.error))));
+ GRPC_ERROR_UNREF(call_config.error);
+ return std::move(r);
}
+ auto& ctx = GetContext<
+ grpc_call_context_element>()[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA];
+ ctx.value = GetContext<Arena>()->New<ServiceConfigCallData>(
+ std::move(call_config.service_config), call_config.method_configs,
+ ServiceConfigCallData::CallAttributes{});
+ ctx.destroy = [](void* p) {
+ static_cast<ServiceConfigCallData*>(p)->~ServiceConfigCallData();
+ };
+ return next_promise_factory(std::move(call_args));
}
} // namespace
-const grpc_channel_filter kServerConfigSelectorFilter = {
- CallData::StartTransportStreamOpBatch,
- nullptr,
- grpc_channel_next_op,
- sizeof(CallData),
- CallData::Init,
- grpc_call_stack_ignore_set_pollset_or_pollset_set,
- CallData::Destroy,
- sizeof(ChannelData),
- ChannelData::Init,
- ChannelData::Destroy,
- grpc_channel_next_get_info,
- "server_config_selector_filter",
-};
+const grpc_channel_filter kServerConfigSelectorFilter =
+ MakePromiseBasedFilter<ServerConfigSelectorFilter, FilterEndpoint::kServer>(
+ "server_config_selector_filter");
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector_filter.h b/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector_filter.h
index 370a229be4..36c43a6cd1 100644
--- a/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector_filter.h
+++ b/contrib/libs/grpc/src/core/ext/filters/server_config_selector/server_config_selector_filter.h
@@ -21,6 +21,7 @@
#include <grpc/support/port_platform.h>
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/client/binder_connector.cc b/contrib/libs/grpc/src/core/ext/transport/binder/client/binder_connector.cc
index 0f0676d5aa..98f1ceea62 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/client/binder_connector.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/client/binder_connector.cc
@@ -84,7 +84,7 @@ class BinderConnector : public grpc_core::SubchannelConnector {
std::move(endpoint_binder),
grpc_binder::GetSecurityPolicySetting()->Get(conn_id_));
GPR_ASSERT(transport != nullptr);
- result_->channel_args = grpc_channel_args_copy(args_.channel_args);
+ result_->channel_args = args_.channel_args;
result_->transport = transport;
GPR_ASSERT(notify_ != nullptr);
@@ -114,18 +114,11 @@ class BinderConnector : public grpc_core::SubchannelConnector {
namespace grpc_core {
RefCountedPtr<Subchannel> BinderClientChannelFactory::CreateSubchannel(
- const grpc_resolved_address& address, const grpc_channel_args* args) {
+ const grpc_resolved_address& address, const ChannelArgs& args) {
gpr_log(GPR_INFO, "BinderClientChannelFactory creating subchannel %p", this);
- grpc_arg default_authority_arg = grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
- const_cast<char*>("binder.authority"));
- grpc_channel_args* new_args =
- grpc_channel_args_copy_and_add(args, &default_authority_arg, 1);
-
- RefCountedPtr<Subchannel> s =
- Subchannel::Create(MakeOrphanable<BinderConnector>(), address, new_args);
-
- return s;
+ return Subchannel::Create(
+ MakeOrphanable<BinderConnector>(), address,
+ args.Set(GRPC_ARG_DEFAULT_AUTHORITY, "binder.authority"));
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/client/binder_connector.h b/contrib/libs/grpc/src/core/ext/transport/binder/client/binder_connector.h
index e03bbfc5c6..cf1bb98008 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/client/binder_connector.h
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/client/binder_connector.h
@@ -35,8 +35,7 @@ namespace grpc_core {
class BinderClientChannelFactory : public ClientChannelFactory {
public:
RefCountedPtr<Subchannel> CreateSubchannel(
- const grpc_resolved_address& address,
- const grpc_channel_args* args) override;
+ const grpc_resolved_address& address, const ChannelArgs& args) override;
};
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/client/channel_create.cc b/contrib/libs/grpc/src/core/ext/transport/binder/client/channel_create.cc
index bf8f464d53..b682f538a7 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/client/channel_create.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/client/channel_create.cc
@@ -35,6 +35,7 @@
#include <grpc/support/port_platform.h>
#include "y_absl/memory/memory.h"
+#include "y_absl/strings/substitute.h"
#include "y_absl/time/clock.h"
#include "y_absl/time/time.h"
@@ -59,10 +60,6 @@ namespace {
// grpc.io.action.BIND is the standard action name for binding to binder
// transport server.
const char* kStandardActionName = "grpc.io.action.BIND";
-
-// grpc::ChannelArguments key for specifying custom action name.
-const char* kCustomIntentActionNameArgKey =
- "grpc.binder.custom_android_intent_action_name";
} // namespace
namespace grpc {
@@ -83,6 +80,25 @@ std::shared_ptr<grpc::Channel> CreateCustomBinderChannel(
y_absl::string_view class_name,
std::shared_ptr<grpc::experimental::binder::SecurityPolicy> security_policy,
const ChannelArguments& args) {
+ return CreateCustomBinderChannel(
+ jni_env_void, application,
+ y_absl::Substitute("android-app://$0#Intent;action=$1;component=$0/$2;end",
+ package_name, kStandardActionName, class_name),
+ security_policy, args);
+}
+
+std::shared_ptr<grpc::Channel> CreateBinderChannel(
+ void* jni_env_void, jobject application, y_absl::string_view uri,
+ std::shared_ptr<grpc::experimental::binder::SecurityPolicy>
+ security_policy) {
+ return CreateCustomBinderChannel(jni_env_void, application, uri,
+ security_policy, ChannelArguments());
+}
+
+std::shared_ptr<grpc::Channel> CreateCustomBinderChannel(
+ void* jni_env_void, jobject application, y_absl::string_view uri,
+ std::shared_ptr<grpc::experimental::binder::SecurityPolicy> security_policy,
+ const ChannelArguments& args) {
grpc::internal::GrpcLibrary init_lib;
init_lib.init();
@@ -91,54 +107,34 @@ std::shared_ptr<grpc::Channel> CreateCustomBinderChannel(
// Generate an unique connection ID that identifies this connection (Useful
// for mapping connection between Java and C++ code).
- TString connection_id = grpc_binder::GetConnectionIdGenerator()->Generate(
- TString(package_name), TString(class_name));
-
- grpc_channel_args channel_args_with_custom_action;
- args.SetChannelArgs(&channel_args_with_custom_action);
-
- // Check if user set an option to use non-standard action name to bind to
- // server. At this moment this option is not intend for general production use
- // and is mainly for stress testing purpose.
- TString action_name = kStandardActionName;
- const grpc_arg* action_name_arg = grpc_channel_args_find(
- &channel_args_with_custom_action, kCustomIntentActionNameArgKey);
- if (action_name_arg != nullptr) {
- // The option is set. Now check if it is a string.
- char* action_name_arg_string = grpc_channel_arg_get_string(action_name_arg);
- if (action_name_arg_string != nullptr) {
- action_name = action_name_arg_string;
- }
- }
- grpc_channel_args* channel_args;
- {
- // Passing the key down will cause gRPC internal error for unclear reason.
- // Remove it here.
- const char* to_remove[] = {kCustomIntentActionNameArgKey};
- channel_args = grpc_channel_args_copy_and_remove(
- &channel_args_with_custom_action, to_remove, 1);
- }
+ TString connection_id =
+ grpc_binder::GetConnectionIdGenerator()->Generate(uri);
+
+ gpr_log(GPR_ERROR, "connection id is %s", connection_id.c_str());
// After invoking this Java method, Java code will put endpoint binder into
// `EndpointBinderPool` after the connection succeeds
// TODO(mingcl): Consider if we want to delay the connection establishment
// until SubchannelConnector start establishing connection. For now we don't
// see any benifits doing that.
- grpc_binder::TryEstablishConnection(static_cast<JNIEnv*>(jni_env_void),
- application, package_name, class_name,
- action_name, connection_id);
+ grpc_binder::TryEstablishConnectionWithUri(static_cast<JNIEnv*>(jni_env_void),
+ application, uri, connection_id);
+
+ grpc_channel_args channel_args;
+ args.SetChannelArgs(&channel_args);
// Set server URI to a URI that contains connection id. The URI will be used
// by subchannel connector to obtain correct endpoint binder from
// `EndpointBinderPool`.
grpc_channel_args* new_args;
{
- grpc_arg server_uri_arg = grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_SERVER_URI),
- const_cast<char*>(("binder:" + connection_id).c_str()));
+ string server_uri = "binder:" + connection_id;
+ grpc_arg server_uri_arg =
+ grpc_channel_arg_string_create(const_cast<char*>(GRPC_ARG_SERVER_URI),
+ const_cast<char*>(server_uri.c_str()));
const char* to_remove[] = {GRPC_ARG_SERVER_URI};
new_args = grpc_channel_args_copy_and_add_and_remove(
- channel_args, to_remove, 1, &server_uri_arg, 1);
+ &channel_args, to_remove, 1, &server_uri_arg, 1);
}
grpc_binder::GetSecurityPolicySetting()->Set(connection_id, security_policy);
@@ -149,7 +145,6 @@ std::shared_ptr<grpc::Channel> CreateCustomBinderChannel(
std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>());
grpc_channel_args_destroy(new_args);
- grpc_channel_args_destroy(channel_args);
return channel;
}
@@ -196,6 +191,29 @@ std::shared_ptr<grpc::Channel> CreateCustomBinderChannel(
return {};
}
+std::shared_ptr<grpc::Channel> CreateBinderChannel(
+ void*, jobject, y_absl::string_view,
+ std::shared_ptr<grpc::experimental::binder::SecurityPolicy>) {
+ gpr_log(GPR_ERROR,
+ "This APK is compiled with Android API level = %d, which is not "
+ "supported. See port_platform.h for supported versions.",
+ __ANDROID_API__);
+ GPR_ASSERT(0);
+ return {};
+}
+
+std::shared_ptr<grpc::Channel> CreateCustomBinderChannel(
+ void*, jobject, y_absl::string_view,
+ std::shared_ptr<grpc::experimental::binder::SecurityPolicy>,
+ const ChannelArguments&) {
+ gpr_log(GPR_ERROR,
+ "This APK is compiled with Android API level = %d, which is not "
+ "supported. See port_platform.h for supported versions.",
+ __ANDROID_API__);
+ GPR_ASSERT(0);
+ return {};
+}
+
bool InitializeBinderChannelJavaClass(void* jni_env_void) {
gpr_log(GPR_ERROR,
"This APK is compiled with Android API level = %d, which is not "
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/client/channel_create_impl.cc b/contrib/libs/grpc/src/core/ext/transport/binder/client/channel_create_impl.cc
index 843e3113d8..9ae3eb7a3d 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/client/channel_create_impl.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/client/channel_create_impl.cc
@@ -51,23 +51,17 @@ grpc_channel* CreateDirectBinderChannelImplForTesting(
std::move(endpoint_binder), security_policy);
GPR_ASSERT(transport != nullptr);
- grpc_arg default_authority_arg = grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
- const_cast<char*>("binder.authority"));
- args = grpc_core::CoreConfiguration::Get()
- .channel_args_preconditioning()
- .PreconditionChannelArgs(args);
- grpc_channel_args* final_args =
- grpc_channel_args_copy_and_add(args, &default_authority_arg, 1);
- grpc_error_handle error = GRPC_ERROR_NONE;
- grpc_channel* channel = grpc_channel_create_internal(
- "binder_target_placeholder", final_args, GRPC_CLIENT_DIRECT_CHANNEL,
- transport, &error);
+ auto channel_args = grpc_core::CoreConfiguration::Get()
+ .channel_args_preconditioning()
+ .PreconditionChannelArgs(args)
+ .Set(GRPC_ARG_DEFAULT_AUTHORITY, "binder.authority");
+ auto channel =
+ grpc_core::Channel::Create("binder_target_placeholder", channel_args,
+ GRPC_CLIENT_DIRECT_CHANNEL, transport);
// TODO(mingcl): Handle error properly
- GPR_ASSERT(error == GRPC_ERROR_NONE);
+ GPR_ASSERT(channel.ok());
grpc_channel_args_destroy(args);
- grpc_channel_args_destroy(final_args);
- return channel;
+ return channel->release()->c_ptr();
}
grpc_channel* CreateClientBinderChannelImpl(const grpc_channel_args* args) {
@@ -75,39 +69,23 @@ grpc_channel* CreateClientBinderChannelImpl(const grpc_channel_args* args) {
gpr_once_init(&g_factory_once, FactoryInit);
- args = grpc_core::CoreConfiguration::Get()
- .channel_args_preconditioning()
- .PreconditionChannelArgs(args);
+ auto channel_args = grpc_core::CoreConfiguration::Get()
+ .channel_args_preconditioning()
+ .PreconditionChannelArgs(args)
+ .SetObject(g_factory);
- // Set channel factory argument
- grpc_arg channel_factory_arg =
- grpc_core::ClientChannelFactory::CreateChannelArg(g_factory);
- const char* arg_to_remove = channel_factory_arg.key;
- grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
- args, &arg_to_remove, 1, &channel_factory_arg, 1);
+ auto channel =
+ grpc_core::Channel::Create("binder_channel_target_placeholder",
+ channel_args, GRPC_CLIENT_CHANNEL, nullptr);
- grpc_error_handle error = GRPC_ERROR_NONE;
- grpc_channel* channel = grpc_channel_create_internal(
- "binder_channel_target_placeholder", new_args, GRPC_CLIENT_CHANNEL,
- nullptr, &error);
-
- // Clean up.
- grpc_channel_args_destroy(new_args);
- grpc_channel_args_destroy(args);
-
- if (channel == nullptr) {
- intptr_t integer;
- grpc_status_code status = GRPC_STATUS_INTERNAL;
- if (grpc_error_get_int(error, GRPC_ERROR_INT_GRPC_STATUS, &integer)) {
- status = static_cast<grpc_status_code>(integer);
- }
- GRPC_ERROR_UNREF(error);
- channel = grpc_lame_client_channel_create(
- "binder_channel_target_placeholder", status,
+ if (!channel.ok()) {
+ return grpc_lame_client_channel_create(
+ "binder_channel_target_placeholder",
+ static_cast<grpc_status_code>(channel.status().code()),
"Failed to create binder channel");
}
- return channel;
+ return channel->release()->c_ptr();
}
} // namespace internal
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/client/connection_id_generator.cc b/contrib/libs/grpc/src/core/ext/transport/binder/client/connection_id_generator.cc
index 096a4f0556..cf0e39d352 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/client/connection_id_generator.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/client/connection_id_generator.cc
@@ -44,13 +44,11 @@ TString StripToLength(const TString& s, size_t len) {
namespace grpc_binder {
-TString ConnectionIdGenerator::Generate(y_absl::string_view package_name,
- y_absl::string_view class_name) {
+TString ConnectionIdGenerator::Generate(y_absl::string_view uri) {
// reserve some room for serial number
const size_t kReserveForNumbers = 15;
- TString s = StripToLength(
- y_absl::StrCat(Normalize(package_name), "-", Normalize(class_name)),
- kPathLengthLimit - kReserveForNumbers);
+ TString s =
+ StripToLength(Normalize(uri), kPathLengthLimit - kReserveForNumbers);
TString ret;
{
grpc_core::MutexLock l(&m_);
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/client/connection_id_generator.h b/contrib/libs/grpc/src/core/ext/transport/binder/client/connection_id_generator.h
index ebadb8e912..144802717e 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/client/connection_id_generator.h
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/client/connection_id_generator.h
@@ -31,8 +31,7 @@ namespace grpc_binder {
// underscore, and tilde).
class ConnectionIdGenerator {
public:
- TString Generate(y_absl::string_view package_name,
- y_absl::string_view class_name);
+ TString Generate(y_absl::string_view uri);
private:
// Our generated Id need to fit in unix socket path length limit. We use 100
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/client/endpoint_binder_pool.cc b/contrib/libs/grpc/src/core/ext/transport/binder/client/endpoint_binder_pool.cc
index e534fd7418..679e4f92d4 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/client/endpoint_binder_pool.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/client/endpoint_binder_pool.cc
@@ -53,7 +53,7 @@ Java_io_grpc_binder_cpp_GrpcBinderConnection_notifyConnected__Ljava_lang_String_
namespace grpc_binder {
-void EndpointBinderPool ::GetEndpointBinder(
+void EndpointBinderPool::GetEndpointBinder(
TString conn_id,
std::function<void(std::unique_ptr<grpc_binder::Binder>)> cb) {
gpr_log(GPR_INFO, "EndpointBinder requested. conn_id = %s", conn_id.c_str());
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.cc b/contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.cc
index 4a1c2392ce..f9278ca7bd 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.cc
@@ -89,6 +89,28 @@ void TryEstablishConnection(JNIEnv* env, jobject application,
env->NewStringUTF(TString(conn_id).c_str()));
}
+void TryEstablishConnectionWithUri(JNIEnv* env, jobject application,
+ y_absl::string_view uri,
+ y_absl::string_view conn_id) {
+ TString method = "tryEstablishConnectionWithUri";
+ TString type =
+ "(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V";
+
+ jclass cl = FindNativeConnectionHelper(env);
+ if (cl == nullptr) {
+ return;
+ }
+
+ jmethodID mid = env->GetStaticMethodID(cl, method.c_str(), type.c_str());
+ if (mid == nullptr) {
+ gpr_log(GPR_ERROR, "No method id %s", method.c_str());
+ }
+
+ env->CallStaticVoidMethod(cl, mid, application,
+ env->NewStringUTF(TString(uri).c_str()),
+ env->NewStringUTF(TString(conn_id).c_str()));
+}
+
bool IsSignatureMatch(JNIEnv* env, jobject context, int uid1, int uid2) {
const TString method = "isSignatureMatch";
const TString type = "(Landroid/content/Context;II)Z";
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.h b/contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.h
index 663236498c..caeb43657b 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.h
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.h
@@ -44,6 +44,10 @@ void TryEstablishConnection(JNIEnv* env, jobject application,
y_absl::string_view action_name,
y_absl::string_view conn_id);
+void TryEstablishConnectionWithUri(JNIEnv* env, jobject application,
+ y_absl::string_view uri,
+ y_absl::string_view conn_id);
+
// Calls Java method NativeConnectionHelper.isSignatureMatch.
// Will also return false if failed to invoke Java.
bool IsSignatureMatch(JNIEnv* env, jobject context, int uid1, int uid2);
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/server/binder_server.cc b/contrib/libs/grpc/src/core/ext/transport/binder/server/binder_server.cc
index 5414b2045d..672ff397d7 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/server/binder_server.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/server/binder_server.cc
@@ -214,10 +214,8 @@ class BinderServerListener : public Server::ListenerInterface {
grpc_transport* server_transport = grpc_create_binder_transport_server(
std::move(client_binder), security_policy_);
GPR_ASSERT(server_transport);
- grpc_channel_args* args = grpc_channel_args_copy(server_->channel_args());
- grpc_error_handle error =
- server_->SetupTransport(server_transport, nullptr, args, nullptr);
- grpc_channel_args_destroy(args);
+ grpc_error_handle error = server_->SetupTransport(
+ server_transport, nullptr, server_->channel_args(), nullptr);
return grpc_error_to_absl_status(error);
}
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_stream.h b/contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_stream.h
index da376656c8..0b3614288a 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_stream.h
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_stream.h
@@ -41,6 +41,11 @@ struct RecvTrailingMetadataArgs {
int status;
};
+struct RegisterStreamArgs {
+ grpc_binder_stream* gbs;
+ grpc_binder_transport* gbt;
+};
+
// TODO(mingcl): Figure out if we want to use class instead of struct here
struct grpc_binder_stream {
// server_data will be null for client, and for server it will be whatever
@@ -54,9 +59,6 @@ struct grpc_binder_stream {
tx_code(tx_code),
is_client(is_client),
is_closed(false) {
- // TODO(waynetu): Should this be protected?
- t->registered_stream[tx_code] = this;
-
recv_initial_metadata_args.gbs = this;
recv_initial_metadata_args.gbt = t;
recv_message_args.gbs = this;
@@ -78,7 +80,6 @@ struct grpc_binder_stream {
grpc_binder_transport* t;
grpc_stream_refcount* refcount;
grpc_core::Arena* arena;
- grpc_core::ManualConstructor<grpc_core::SliceBufferByteStream> sbs;
int tx_code;
const bool is_client;
bool is_closed;
@@ -96,12 +97,15 @@ struct grpc_binder_stream {
grpc_closure recv_trailing_metadata_closure;
RecvTrailingMetadataArgs recv_trailing_metadata_args;
+ grpc_closure register_stream_closure;
+ RegisterStreamArgs register_stream_args;
+
// We store these fields passed from op batch, in order to access them through
// grpc_binder_stream
grpc_metadata_batch* recv_initial_metadata;
grpc_closure* recv_initial_metadata_ready = nullptr;
bool* trailing_metadata_available = nullptr;
- grpc_core::OrphanablePtr<grpc_core::ByteStream>* recv_message;
+ y_absl::optional<grpc_core::SliceBuffer>* recv_message;
grpc_closure* recv_message_ready = nullptr;
bool* call_failed_before_recv_message = nullptr;
grpc_metadata_batch* recv_trailing_metadata;
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_transport.cc b/contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_transport.cc
index f2541006fc..2fb37da5e7 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_transport.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_transport.cc
@@ -38,7 +38,6 @@
#include "src/core/ext/transport/binder/wire_format/wire_writer.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/transport/byte_stream.h"
#include "src/core/lib/transport/error_utils.h"
#include "src/core/lib/transport/metadata_batch.h"
#include "src/core/lib/transport/transport.h"
@@ -97,17 +96,32 @@ static void grpc_binder_unref_transport(grpc_binder_transport* t) {
#define GRPC_BINDER_UNREF_TRANSPORT(t, r) grpc_binder_unref_transport(t)
#endif
+static void register_stream_locked(void* arg, grpc_error_handle /*error*/) {
+ RegisterStreamArgs* args = static_cast<RegisterStreamArgs*>(arg);
+ args->gbt->registered_stream[args->gbs->GetTxCode()] = args->gbs;
+}
+
static int init_stream(grpc_transport* gt, grpc_stream* gs,
grpc_stream_refcount* refcount, const void* server_data,
grpc_core::Arena* arena) {
- GPR_TIMER_SCOPE("init_stream", 0);
gpr_log(GPR_INFO, "%s = %p %p %p %p %p", __func__, gt, gs, refcount,
server_data, arena);
+ // Note that this function is not locked and may be invoked concurrently
grpc_binder_transport* t = reinterpret_cast<grpc_binder_transport*>(gt);
- // TODO(mingcl): Figure out if we need to worry about concurrent invocation
- // here
new (gs) grpc_binder_stream(t, refcount, server_data, arena,
t->NewStreamTxCode(), t->is_client);
+
+ // `grpc_binder_transport::registered_stream` should only be updated in
+ // combiner
+ grpc_binder_stream* gbs = reinterpret_cast<grpc_binder_stream*>(gs);
+ gbs->register_stream_args.gbs = gbs;
+ gbs->register_stream_args.gbt = t;
+ grpc_core::ExecCtx exec_ctx;
+ t->combiner->Run(
+ GRPC_CLOSURE_INIT(&gbs->register_stream_closure, register_stream_locked,
+ &gbs->register_stream_args, nullptr),
+ GRPC_ERROR_NONE);
+
return 0;
}
@@ -137,7 +151,7 @@ static void cancel_stream_locked(grpc_binder_transport* gbt,
grpc_error_handle error) {
gpr_log(GPR_INFO, "cancel_stream_locked");
if (!gbs->is_closed) {
- GPR_ASSERT(gbs->cancel_self_error == GRPC_ERROR_NONE);
+ GPR_ASSERT(GRPC_ERROR_IS_NONE(gbs->cancel_self_error));
gbs->is_closed = true;
gbs->cancel_self_error = GRPC_ERROR_REF(error);
gbt->transport_stream_receiver->CancelStream(gbs->tx_code);
@@ -242,16 +256,13 @@ static void recv_message_locked(void* arg, grpc_error_handle /*error*/) {
return absl_status_to_grpc_error(args->message.status());
}
}
- grpc_slice_buffer buf;
- grpc_slice_buffer_init(&buf);
- grpc_slice_buffer_add(&buf, grpc_slice_from_cpp_string(*args->message));
-
- gbs->sbs.Init(&buf, 0);
- gbs->recv_message->reset(gbs->sbs.get());
+ grpc_core::SliceBuffer buf;
+ buf.Append(grpc_core::Slice(grpc_slice_from_cpp_string(*args->message)));
+ *gbs->recv_message = std::move(buf);
return GRPC_ERROR_NONE;
}();
- if (error != GRPC_ERROR_NONE &&
+ if (!GRPC_ERROR_IS_NONE(error) &&
gbs->call_failed_before_recv_message != nullptr) {
*gbs->call_failed_before_recv_message = true;
}
@@ -380,10 +391,11 @@ static void perform_stream_op_locked(void* stream_op,
if (!gbs->is_client) {
// Send trailing metadata to inform the other end about the cancellation,
// regardless if we'd already done that or not.
- grpc_binder::Transaction cancel_tx(gbs->GetTxCode(), gbt->is_client);
- cancel_tx.SetSuffix(grpc_binder::Metadata{});
- cancel_tx.SetStatus(1);
- y_absl::Status status = gbt->wire_writer->RpcCall(cancel_tx);
+ auto cancel_tx = y_absl::make_unique<grpc_binder::Transaction>(
+ gbs->GetTxCode(), gbt->is_client);
+ cancel_tx->SetSuffix(grpc_binder::Metadata{});
+ cancel_tx->SetStatus(1);
+ y_absl::Status status = gbt->wire_writer->RpcCall(std::move(cancel_tx));
}
cancel_stream_locked(gbt, gbs, op->payload->cancel_stream.cancel_error);
if (op->on_complete != nullptr) {
@@ -396,7 +408,7 @@ static void perform_stream_op_locked(void* stream_op,
if (gbs->is_closed) {
if (op->send_message) {
// Reset the send_message payload to prevent memory leaks.
- op->payload->send_message.send_message.reset();
+ op->payload->send_message.send_message->Clear();
}
if (op->recv_initial_metadata) {
grpc_core::ExecCtx::Run(
@@ -424,40 +436,21 @@ static void perform_stream_op_locked(void* stream_op,
}
int tx_code = gbs->tx_code;
- grpc_binder::Transaction tx(tx_code, gbt->is_client);
+ auto tx =
+ y_absl::make_unique<grpc_binder::Transaction>(tx_code, gbt->is_client);
if (op->send_initial_metadata) {
gpr_log(GPR_INFO, "send_initial_metadata");
grpc_binder::Metadata init_md;
auto batch = op->payload->send_initial_metadata.send_initial_metadata;
- grpc_binder::MetadataEncoder encoder(gbt->is_client, &tx, &init_md);
+ grpc_binder::MetadataEncoder encoder(gbt->is_client, tx.get(), &init_md);
batch->Encode(&encoder);
- tx.SetPrefix(init_md);
+ tx->SetPrefix(init_md);
}
if (op->send_message) {
gpr_log(GPR_INFO, "send_message");
- size_t remaining = op->payload->send_message.send_message->length();
- TString message_data;
- while (remaining > 0) {
- grpc_slice message_slice;
- // TODO(waynetu): Temporarily assume that the message is ready.
- GPR_ASSERT(
- op->payload->send_message.send_message->Next(SIZE_MAX, nullptr));
- grpc_error_handle error =
- op->payload->send_message.send_message->Pull(&message_slice);
- // TODO(waynetu): Cancel the stream if error is not GRPC_ERROR_NONE.
- GPR_ASSERT(error == GRPC_ERROR_NONE);
- uint8_t* p = GRPC_SLICE_START_PTR(message_slice);
- size_t len = GRPC_SLICE_LENGTH(message_slice);
- remaining -= len;
- message_data += TString(reinterpret_cast<char*>(p), len);
- grpc_slice_unref_internal(message_slice);
- }
- tx.SetData(message_data);
- // TODO(b/192369787): Are we supposed to reset here to avoid
- // use-after-free issue in call.cc?
- op->payload->send_message.send_message.reset();
+ tx->SetData(op->payload->send_message.send_message->JoinIntoString());
}
if (op->send_trailing_metadata) {
@@ -465,13 +458,13 @@ static void perform_stream_op_locked(void* stream_op,
auto batch = op->payload->send_trailing_metadata.send_trailing_metadata;
grpc_binder::Metadata trailing_metadata;
- grpc_binder::MetadataEncoder encoder(gbt->is_client, &tx,
+ grpc_binder::MetadataEncoder encoder(gbt->is_client, tx.get(),
&trailing_metadata);
batch->Encode(&encoder);
// TODO(mingcl): Will we ever has key-value pair here? According to
// wireformat client suffix data is always empty.
- tx.SetSuffix(trailing_metadata);
+ tx->SetSuffix(trailing_metadata);
}
if (op->recv_initial_metadata) {
gpr_log(GPR_INFO, "recv_initial_metadata");
@@ -541,10 +534,7 @@ static void perform_stream_op_locked(void* stream_op,
y_absl::Status status = y_absl::OkStatus();
if (op->send_initial_metadata || op->send_message ||
op->send_trailing_metadata) {
- // TODO(waynetu): RpcCall() is doing a lot of work (including waiting for
- // acknowledgements from the other side). Consider delaying this operation
- // with combiner.
- status = gbt->wire_writer->RpcCall(tx);
+ status = gbt->wire_writer->RpcCall(std::move(tx));
if (!gbs->is_client && op->send_trailing_metadata) {
gbs->trailing_metadata_sent = true;
// According to transport explaineer - "Server extra: This op shouldn't
@@ -573,7 +563,6 @@ static void perform_stream_op_locked(void* stream_op,
static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
grpc_transport_stream_op_batch* op) {
- GPR_TIMER_SCOPE("perform_stream_op", 0);
grpc_binder_transport* gbt = reinterpret_cast<grpc_binder_transport*>(gt);
grpc_binder_stream* gbs = reinterpret_cast<grpc_binder_stream*>(gs);
gpr_log(GPR_INFO, "%s = %p %p %p is_client = %d", __func__, gt, gs, op,
@@ -618,11 +607,11 @@ static void perform_transport_op_locked(void* transport_op,
grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, GRPC_ERROR_NONE);
}
bool do_close = false;
- if (op->disconnect_with_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
do_close = true;
GRPC_ERROR_UNREF(op->disconnect_with_error);
}
- if (op->goaway_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(op->goaway_error)) {
do_close = true;
GRPC_ERROR_UNREF(op->goaway_error);
}
@@ -720,13 +709,13 @@ grpc_binder_transport::grpc_binder_transport(
refs(1, nullptr) {
gpr_log(GPR_INFO, __func__);
base.vtable = get_vtable();
- GRPC_CLOSURE_INIT(&accept_stream_closure, accept_stream_locked, this,
- nullptr);
transport_stream_receiver =
std::make_shared<grpc_binder::TransportStreamReceiverImpl>(
is_client, /*accept_stream_callback=*/[this] {
grpc_core::ExecCtx exec_ctx;
- combiner->Run(&accept_stream_closure, GRPC_ERROR_NONE);
+ combiner->Run(
+ GRPC_CLOSURE_CREATE(accept_stream_locked, this, nullptr),
+ GRPC_ERROR_NONE);
});
// WireReader holds a ref to grpc_binder_transport.
GRPC_BINDER_REF_TRANSPORT(this, "wire reader");
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_transport.h b/contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_transport.h
index 81b06e4a8a..0765c397fc 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_transport.h
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/transport/binder_transport.h
@@ -17,6 +17,7 @@
#include <grpc/support/port_platform.h>
+#include <atomic>
#include <memory>
#include <util/generic/string.h>
#include <util/string/cast.h>
@@ -69,8 +70,6 @@ struct grpc_binder_transport {
y_absl::flat_hash_map<int, grpc_binder_stream*> registered_stream;
grpc_core::Combiner* combiner;
- grpc_closure accept_stream_closure;
-
// The callback and the data for the callback when the stream is connected
// between client and server.
void (*accept_stream_fn)(void* user_data, grpc_transport* transport,
@@ -81,7 +80,7 @@ struct grpc_binder_transport {
grpc_core::RefCount refs;
private:
- int next_free_tx_code = grpc_binder::kFirstCallId;
+ std::atomic<int> next_free_tx_code{grpc_binder::kFirstCallId};
};
grpc_transport* grpc_create_binder_transport_client(
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/utils/ndk_binder.cc b/contrib/libs/grpc/src/core/ext/transport/binder/utils/ndk_binder.cc
index 5c0aedd7d5..f5aafc053d 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/utils/ndk_binder.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/utils/ndk_binder.cc
@@ -24,6 +24,9 @@
#include <grpc/support/log.h>
+#include "src/core/lib/gpr/tls.h"
+#include "src/core/lib/gprpp/sync.h"
+
namespace {
void* GetNdkBinderHandle() {
// TODO(mingcl): Consider using RTLD_NOLOAD to check if it is already loaded
@@ -37,6 +40,53 @@ void* GetNdkBinderHandle() {
}
return handle;
}
+
+JavaVM* g_jvm = nullptr;
+grpc_core::Mutex g_jvm_mu;
+
+// Whether the thread has already attached to JVM (this is to prevent
+// repeated attachment in `AttachJvm()`)
+GPR_THREAD_LOCAL(bool) g_is_jvm_attached = false;
+
+void SetJvm(JNIEnv* env) {
+ // OK to lock here since this function will only be called once for each
+ // connection.
+ grpc_core::MutexLock lock(&g_jvm_mu);
+ if (g_jvm != nullptr) {
+ return;
+ }
+ JavaVM* jvm = nullptr;
+ jint error = env->GetJavaVM(&jvm);
+ if (error != JNI_OK) {
+ gpr_log(GPR_ERROR, "Failed to get JVM");
+ }
+ g_jvm = jvm;
+ gpr_log(GPR_INFO, "JVM cached");
+}
+
+// `SetJvm` need to be called in the process before `AttachJvm`. This is always
+// the case because one of `AIBinder_fromJavaBinder`/`AIBinder_toJavaBinder`
+// will be called before we actually uses the binder. Return `false` if not able
+// to attach to JVM. Return `true` if JVM is attached (or already attached).
+bool AttachJvm() {
+ if (g_is_jvm_attached) {
+ return true;
+ }
+ // Note: The following code would be run at most once per thread.
+ grpc_core::MutexLock lock(&g_jvm_mu);
+ if (g_jvm == nullptr) {
+ gpr_log(GPR_ERROR, "JVM not cached yet");
+ return false;
+ }
+ JNIEnv* env_unused;
+ // Note that attach a thread that is already attached is a no-op, so it is
+ // fine to call this again if the thread has already been attached by other.
+ g_jvm->AttachCurrentThread(&env_unused, /* thr_args= */ nullptr);
+ gpr_log(GPR_INFO, "JVM attached successfully");
+ g_is_jvm_attached = true;
+ return true;
+}
+
} // namespace
namespace grpc_binder {
@@ -67,6 +117,7 @@ void* AIBinder_getUserData(AIBinder* binder) {
uid_t AIBinder_getCallingUid() { FORWARD(AIBinder_getCallingUid)(); }
AIBinder* AIBinder_fromJavaBinder(JNIEnv* env, jobject binder) {
+ SetJvm(env);
FORWARD(AIBinder_fromJavaBinder)(env, binder);
}
@@ -97,6 +148,9 @@ void AIBinder_decStrong(AIBinder* binder) {
binder_status_t AIBinder_transact(AIBinder* binder, transaction_code_t code,
AParcel** in, AParcel** out,
binder_flags_t flags) {
+ if (!AttachJvm()) {
+ gpr_log(GPR_ERROR, "failed to attach JVM. AIBinder_transact might fail.");
+ }
FORWARD(AIBinder_transact)(binder, code, in, out, flags);
}
@@ -155,6 +209,7 @@ binder_status_t AIBinder_prepareTransaction(AIBinder* binder, AParcel** in) {
}
jobject AIBinder_toJavaBinder(JNIEnv* env, AIBinder* binder) {
+ SetJvm(env);
FORWARD(AIBinder_toJavaBinder)(env, binder);
}
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_constants.cc b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_constants.cc
index 42048bdb0a..c0988a1df7 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_constants.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_constants.cc
@@ -18,12 +18,12 @@
#include "src/core/ext/transport/binder/wire_format/binder_constants.h"
-const int FIRST_CALL_TRANSACTION = 0x00000001;
-const int LAST_CALL_TRANSACTION = 0x00FFFFFF;
+Y_ABSL_CONST_INIT const int FIRST_CALL_TRANSACTION = 0x00000001;
+Y_ABSL_CONST_INIT const int LAST_CALL_TRANSACTION = 0x00FFFFFF;
namespace grpc_binder {
-const int kFirstCallId = FIRST_CALL_TRANSACTION + 1000;
+Y_ABSL_CONST_INIT const int kFirstCallId = FIRST_CALL_TRANSACTION + 1000;
} // namespace grpc_binder
#endif
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_constants.h b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_constants.h
index c3a7402a95..14247c1aa7 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_constants.h
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_constants.h
@@ -28,7 +28,7 @@ Y_ABSL_CONST_INIT extern const int LAST_CALL_TRANSACTION;
namespace grpc_binder {
-enum class BinderTransportTxCode {
+enum class BinderTransportTxCode : int32_t {
SETUP_TRANSPORT = 1,
SHUTDOWN_TRANSPORT = 2,
ACKNOWLEDGE_BYTES = 3,
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/transaction.cc b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/transaction.cc
index 939b5574c0..2c1e39a751 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/transaction.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/transaction.cc
@@ -20,14 +20,14 @@
namespace grpc_binder {
-const int kFlagPrefix = 0x1;
-const int kFlagMessageData = 0x2;
-const int kFlagSuffix = 0x4;
-const int kFlagOutOfBandClose = 0x8;
-const int kFlagExpectSingleMessage = 0x10;
-const int kFlagStatusDescription = 0x20;
-const int kFlagMessageDataIsParcelable = 0x40;
-const int kFlagMessageDataIsPartial = 0x80;
+Y_ABSL_CONST_INIT const int kFlagPrefix = 0x1;
+Y_ABSL_CONST_INIT const int kFlagMessageData = 0x2;
+Y_ABSL_CONST_INIT const int kFlagSuffix = 0x4;
+Y_ABSL_CONST_INIT const int kFlagOutOfBandClose = 0x8;
+Y_ABSL_CONST_INIT const int kFlagExpectSingleMessage = 0x10;
+Y_ABSL_CONST_INIT const int kFlagStatusDescription = 0x20;
+Y_ABSL_CONST_INIT const int kFlagMessageDataIsParcelable = 0x40;
+Y_ABSL_CONST_INIT const int kFlagMessageDataIsPartial = 0x80;
} // namespace grpc_binder
#endif
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/transaction.h b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/transaction.h
index 294c91bbdf..8c9617f406 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/transaction.h
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/transaction.h
@@ -86,6 +86,9 @@ class Transaction {
y_absl::string_view GetMessageData() const { return message_data_; }
y_absl::string_view GetStatusDesc() const { return status_desc_; }
+ Transaction(const Transaction&) = delete;
+ void operator=(const Transaction&) = delete;
+
private:
int tx_code_;
bool is_client_;
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_reader_impl.cc b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_reader_impl.cc
index f47d5e7de9..64d3a63379 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_reader_impl.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_reader_impl.cc
@@ -33,22 +33,17 @@
#include "src/core/ext/transport/binder/utils/transport_stream_receiver.h"
#include "src/core/ext/transport/binder/wire_format/binder.h"
#include "src/core/ext/transport/binder/wire_format/wire_writer.h"
-
-#define RETURN_IF_ERROR(expr) \
- do { \
- const y_absl::Status status = (expr); \
- if (!status.ok()) return status; \
- } while (0)
+#include "src/core/lib/gprpp/status_helper.h"
namespace grpc_binder {
namespace {
const int32_t kWireFormatVersion = 1;
+const char kAuthorityMetadataKey[] = ":authority";
y_absl::StatusOr<Metadata> parse_metadata(ReadableParcel* reader) {
int num_header;
RETURN_IF_ERROR(reader->ReadInt32(&num_header));
- gpr_log(GPR_INFO, "num_header = %d", num_header);
if (num_header < 0) {
return y_absl::InvalidArgumentError("num_header cannot be negative");
}
@@ -56,15 +51,11 @@ y_absl::StatusOr<Metadata> parse_metadata(ReadableParcel* reader) {
for (int i = 0; i < num_header; i++) {
int count;
RETURN_IF_ERROR(reader->ReadInt32(&count));
- gpr_log(GPR_INFO, "count = %d", count);
TString key{};
if (count > 0) RETURN_IF_ERROR(reader->ReadByteArray(&key));
- gpr_log(GPR_INFO, "key = %s", key.c_str());
RETURN_IF_ERROR(reader->ReadInt32(&count));
- gpr_log(GPR_INFO, "count = %d", count);
TString value{};
if (count > 0) RETURN_IF_ERROR(reader->ReadByteArray(&value));
- gpr_log(GPR_INFO, "value = %s", value.c_str());
ret.emplace_back(key, value);
}
return ret;
@@ -90,7 +81,6 @@ WireReaderImpl::~WireReaderImpl() {
std::shared_ptr<WireWriter> WireReaderImpl::SetupTransport(
std::unique_ptr<Binder> binder) {
- gpr_log(GPR_INFO, "Setting up transport");
if (!is_client_) {
SendSetupTransport(binder.get());
{
@@ -114,10 +104,10 @@ std::shared_ptr<WireWriter> WireReaderImpl::SetupTransport(
void WireReaderImpl::SendSetupTransport(Binder* binder) {
binder->Initialize();
- gpr_log(GPR_INFO, "prepare transaction = %d",
+ gpr_log(GPR_DEBUG, "prepare transaction = %d",
binder->PrepareTransaction().ok());
WritableParcel* writable_parcel = binder->GetWritableParcel();
- gpr_log(GPR_INFO, "write int32 = %d",
+ gpr_log(GPR_DEBUG, "write int32 = %d",
writable_parcel->WriteInt32(kWireFormatVersion).ok());
// The lifetime of the transaction receiver is the same as the wire writer's.
// The transaction receiver is responsible for not calling the on-transact
@@ -132,29 +122,26 @@ void WireReaderImpl::SendSetupTransport(Binder* binder) {
return this->ProcessTransaction(code, readable_parcel, uid);
});
- gpr_log(GPR_INFO, "tx_receiver = %p", tx_receiver_->GetRawBinder());
- gpr_log(GPR_INFO, "AParcel_writeStrongBinder = %d",
+ gpr_log(GPR_DEBUG, "tx_receiver = %p", tx_receiver_->GetRawBinder());
+ gpr_log(GPR_DEBUG, "AParcel_writeStrongBinder = %d",
writable_parcel->WriteBinder(tx_receiver_.get()).ok());
- gpr_log(GPR_INFO, "AIBinder_transact = %d",
+ gpr_log(GPR_DEBUG, "AIBinder_transact = %d",
binder->Transact(BinderTransportTxCode::SETUP_TRANSPORT).ok());
}
std::unique_ptr<Binder> WireReaderImpl::RecvSetupTransport() {
// TODO(b/191941760): avoid blocking, handle wire_writer_noti lifetime
// better
- gpr_log(GPR_INFO, "start waiting for noti");
+ gpr_log(GPR_DEBUG, "start waiting for noti");
connection_noti_.WaitForNotification();
- gpr_log(GPR_INFO, "end waiting for noti");
+ gpr_log(GPR_DEBUG, "end waiting for noti");
return std::move(other_end_binder_);
}
y_absl::Status WireReaderImpl::ProcessTransaction(transaction_code_t code,
ReadableParcel* parcel,
int uid) {
- gpr_log(GPR_INFO, __func__);
- gpr_log(GPR_INFO, "tx code = %u", code);
if (code >= static_cast<unsigned>(kFirstCallId)) {
- gpr_log(GPR_INFO, "This is probably a Streaming Tx");
return ProcessStreamingTransaction(code, parcel);
}
@@ -168,11 +155,12 @@ y_absl::Status WireReaderImpl::ProcessTransaction(transaction_code_t code,
return y_absl::OkStatus();
}
- grpc_core::MutexLock lock(&mu_);
-
- if (BinderTransportTxCode(code) != BinderTransportTxCode::SETUP_TRANSPORT &&
- !connected_) {
- return y_absl::InvalidArgumentError("Transports not connected yet");
+ {
+ grpc_core::MutexLock lock(&mu_);
+ if (BinderTransportTxCode(code) != BinderTransportTxCode::SETUP_TRANSPORT &&
+ !connected_) {
+ return y_absl::InvalidArgumentError("Transports not connected yet");
+ }
}
// TODO(mingcl): See if we want to check the security policy for every RPC
@@ -180,13 +168,14 @@ y_absl::Status WireReaderImpl::ProcessTransaction(transaction_code_t code,
switch (BinderTransportTxCode(code)) {
case BinderTransportTxCode::SETUP_TRANSPORT: {
+ grpc_core::MutexLock lock(&mu_);
if (recvd_setup_transport_) {
return y_absl::InvalidArgumentError(
"Already received a SETUP_TRANSPORT request");
}
recvd_setup_transport_ = true;
- gpr_log(GPR_ERROR, "calling uid = %d", uid);
+ gpr_log(GPR_DEBUG, "calling uid = %d", uid);
if (!security_policy_->IsAuthorized(uid)) {
return y_absl::PermissionDeniedError(
"UID " + ::ToString(uid) +
@@ -196,7 +185,7 @@ y_absl::Status WireReaderImpl::ProcessTransaction(transaction_code_t code,
int version;
RETURN_IF_ERROR(parcel->ReadInt32(&version));
- gpr_log(GPR_INFO, "The other end respond with version = %d", version);
+ gpr_log(GPR_DEBUG, "The other end respond with version = %d", version);
// We only support this single lowest possible version, so server must
// respond that version too.
if (version != kWireFormatVersion) {
@@ -223,8 +212,7 @@ y_absl::Status WireReaderImpl::ProcessTransaction(transaction_code_t code,
case BinderTransportTxCode::ACKNOWLEDGE_BYTES: {
int64_t num_bytes = -1;
RETURN_IF_ERROR(parcel->ReadInt64(&num_bytes));
- gpr_log(GPR_INFO, "received acknowledge bytes = %lld",
- static_cast<long long>(num_bytes));
+ gpr_log(GPR_DEBUG, "received acknowledge bytes = %" PRId64, num_bytes);
wire_writer_->OnAckReceived(num_bytes);
break;
}
@@ -234,14 +222,14 @@ y_absl::Status WireReaderImpl::ProcessTransaction(transaction_code_t code,
}
int ping_id = -1;
RETURN_IF_ERROR(parcel->ReadInt32(&ping_id));
- gpr_log(GPR_INFO, "received ping id = %d", ping_id);
+ gpr_log(GPR_DEBUG, "received ping id = %d", ping_id);
// TODO(waynetu): Ping back.
break;
}
case BinderTransportTxCode::PING_RESPONSE: {
int value = -1;
RETURN_IF_ERROR(parcel->ReadInt32(&value));
- gpr_log(GPR_INFO, "received ping response = %d", value);
+ gpr_log(GPR_DEBUG, "received ping response = %d", value);
break;
}
}
@@ -250,54 +238,73 @@ y_absl::Status WireReaderImpl::ProcessTransaction(transaction_code_t code,
y_absl::Status WireReaderImpl::ProcessStreamingTransaction(
transaction_code_t code, ReadableParcel* parcel) {
- grpc_core::MutexLock lock(&mu_);
- if (!connected_) {
- return y_absl::InvalidArgumentError("Transports not connected yet");
- }
-
- // Indicate which callbacks should be cancelled. It will be initialized as the
- // flags the in-coming transaction carries, and when a particular callback is
- // completed, the corresponding bit in cancellation_flag will be set to 0 so
- // that we won't cancel it afterward.
- int cancellation_flags = 0;
- y_absl::Status status =
- ProcessStreamingTransactionImpl(code, parcel, &cancellation_flags);
- if (!status.ok()) {
- gpr_log(GPR_ERROR, "Failed to process streaming transaction: %s",
- status.ToString().c_str());
- // Something went wrong when receiving transaction. Cancel failed requests.
- if (cancellation_flags & kFlagPrefix) {
- gpr_log(GPR_INFO, "cancelling initial metadata");
- transport_stream_receiver_->NotifyRecvInitialMetadata(code, status);
+ bool need_to_send_ack = false;
+ int64_t num_bytes = 0;
+ y_absl::Status tx_process_result;
+ {
+ grpc_core::MutexLock lock(&mu_);
+ if (!connected_) {
+ return y_absl::InvalidArgumentError("Transports not connected yet");
}
- if (cancellation_flags & kFlagMessageData) {
- gpr_log(GPR_INFO, "cancelling message data");
- transport_stream_receiver_->NotifyRecvMessage(code, status);
+
+ // Indicate which callbacks should be cancelled. It will be initialized as
+ // the flags the in-coming transaction carries, and when a particular
+ // callback is completed, the corresponding bit in cancellation_flag will be
+ // set to 0 so that we won't cancel it afterward.
+ int cancellation_flags = 0;
+ tx_process_result =
+ ProcessStreamingTransactionImpl(code, parcel, &cancellation_flags);
+ if (!tx_process_result.ok()) {
+ gpr_log(GPR_ERROR, "Failed to process streaming transaction: %s",
+ tx_process_result.ToString().c_str());
+ // Something went wrong when receiving transaction. Cancel failed
+ // requests.
+ if (cancellation_flags & kFlagPrefix) {
+ gpr_log(GPR_INFO, "cancelling initial metadata");
+ transport_stream_receiver_->NotifyRecvInitialMetadata(
+ code, tx_process_result);
+ }
+ if (cancellation_flags & kFlagMessageData) {
+ gpr_log(GPR_INFO, "cancelling message data");
+ transport_stream_receiver_->NotifyRecvMessage(code, tx_process_result);
+ }
+ if (cancellation_flags & kFlagSuffix) {
+ gpr_log(GPR_INFO, "cancelling trailing metadata");
+ transport_stream_receiver_->NotifyRecvTrailingMetadata(
+ code, tx_process_result, 0);
+ }
}
- if (cancellation_flags & kFlagSuffix) {
- gpr_log(GPR_INFO, "cancelling trailing metadata");
- transport_stream_receiver_->NotifyRecvTrailingMetadata(code, status, 0);
+ if ((num_incoming_bytes_ - num_acknowledged_bytes_) >=
+ kFlowControlAckBytes) {
+ need_to_send_ack = true;
+ num_bytes = num_incoming_bytes_;
+ num_acknowledged_bytes_ = num_incoming_bytes_;
}
}
- if ((num_incoming_bytes_ - num_acknowledged_bytes_) >= kFlowControlAckBytes) {
+ if (need_to_send_ack) {
GPR_ASSERT(wire_writer_);
- y_absl::Status ack_status = wire_writer_->SendAck(num_incoming_bytes_);
- if (status.ok()) {
- status = ack_status;
+ // wire_writer_ should not be accessed while holding mu_!
+ // Otherwise, it is possible that
+ // 1. wire_writer_::mu_ is acquired before mu_ (NDK call back during
+ // transaction)
+ // 2. mu_ is acquired before wire_writer_::mu_ (e.g. Java call back us, and
+ // we call WireWriter::SendAck which will try to acquire wire_writer_::mu_)
+ y_absl::Status ack_status = wire_writer_->SendAck(num_bytes);
+ if (tx_process_result.ok()) {
+ return ack_status;
}
- num_acknowledged_bytes_ = num_incoming_bytes_;
}
- return status;
+ return tx_process_result;
}
y_absl::Status WireReaderImpl::ProcessStreamingTransactionImpl(
transaction_code_t code, ReadableParcel* parcel, int* cancellation_flags) {
GPR_ASSERT(cancellation_flags);
num_incoming_bytes_ += parcel->GetDataSize();
+ gpr_log(GPR_INFO, "Total incoming bytes: %" PRId64, num_incoming_bytes_);
int flags;
RETURN_IF_ERROR(parcel->ReadInt32(&flags));
- gpr_log(GPR_INFO, "flags = %d", flags);
*cancellation_flags = flags;
// Ignore in-coming transaction with flag = 0 to match with Java
@@ -311,10 +318,10 @@ y_absl::Status WireReaderImpl::ProcessStreamingTransactionImpl(
}
int status = flags >> 16;
- gpr_log(GPR_INFO, "status = %d", status);
- gpr_log(GPR_INFO, "FLAG_PREFIX = %d", (flags & kFlagPrefix));
- gpr_log(GPR_INFO, "FLAG_MESSAGE_DATA = %d", (flags & kFlagMessageData));
- gpr_log(GPR_INFO, "FLAG_SUFFIX = %d", (flags & kFlagSuffix));
+ gpr_log(GPR_DEBUG, "status = %d", status);
+ gpr_log(GPR_DEBUG, "FLAG_PREFIX = %d", (flags & kFlagPrefix));
+ gpr_log(GPR_DEBUG, "FLAG_MESSAGE_DATA = %d", (flags & kFlagMessageData));
+ gpr_log(GPR_DEBUG, "FLAG_SUFFIX = %d", (flags & kFlagSuffix));
int seq_num;
RETURN_IF_ERROR(parcel->ReadInt32(&seq_num));
// TODO(waynetu): For now we'll just assume that the transactions commit in
@@ -332,7 +339,7 @@ y_absl::Status WireReaderImpl::ProcessStreamingTransactionImpl(
GPR_ASSERT(expectation < std::numeric_limits<int32_t>::max() &&
"Sequence number too large");
expectation++;
- gpr_log(GPR_INFO, "sequence number = %d", seq_num);
+ gpr_log(GPR_DEBUG, "sequence number = %d", seq_num);
if (flags & kFlagPrefix) {
TString method_ref;
if (!is_client_) {
@@ -343,8 +350,23 @@ y_absl::Status WireReaderImpl::ProcessStreamingTransactionImpl(
return initial_metadata_or_error.status();
}
if (!is_client_) {
+ // In BinderChannel wireformat specification, path is not encoded as part
+ // of metadata. So we extract the path and turn it into metadata here
+ // (this is what core API layer expects).
initial_metadata_or_error->emplace_back(":path",
TString("/") + method_ref);
+ // Since authority metadata is not part of BinderChannel wireformat
+ // specification, and gRPC core API layer expects the presence of
+ // authority for message sent from client to server, we add one if
+ // missing (it will be missing if client grpc-java).
+ bool has_authority = false;
+ for (const auto& p : *initial_metadata_or_error) {
+ if (p.first == kAuthorityMetadataKey) has_authority = true;
+ }
+ if (!has_authority) {
+ initial_metadata_or_error->emplace_back(kAuthorityMetadataKey,
+ "binder.authority");
+ }
}
transport_stream_receiver_->NotifyRecvInitialMetadata(
code, *initial_metadata_or_error);
@@ -353,12 +375,11 @@ y_absl::Status WireReaderImpl::ProcessStreamingTransactionImpl(
if (flags & kFlagMessageData) {
int count;
RETURN_IF_ERROR(parcel->ReadInt32(&count));
- gpr_log(GPR_INFO, "count = %d", count);
+ gpr_log(GPR_DEBUG, "count = %d", count);
TString msg_data{};
if (count > 0) {
RETURN_IF_ERROR(parcel->ReadByteArray(&msg_data));
}
- gpr_log(GPR_INFO, "msg_data = %s", msg_data.c_str());
message_buffer_[code] += msg_data;
if ((flags & kFlagMessageDataIsPartial) == 0) {
TString s = std::move(message_buffer_[code]);
@@ -372,7 +393,7 @@ y_absl::Status WireReaderImpl::ProcessStreamingTransactionImpl(
// FLAG_STATUS_DESCRIPTION set
TString desc;
RETURN_IF_ERROR(parcel->ReadString(&desc));
- gpr_log(GPR_INFO, "description = %s", desc.c_str());
+ gpr_log(GPR_DEBUG, "description = %s", desc.c_str());
}
Metadata trailing_metadata;
if (is_client_) {
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_reader_impl.h b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_reader_impl.h
index 973ae64261..824456614a 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_reader_impl.h
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_reader_impl.h
@@ -21,7 +21,6 @@
#include <utility>
#include "y_absl/container/flat_hash_map.h"
-#include "y_absl/synchronization/notification.h"
#include <grpcpp/security/binder_security_policy.h>
@@ -29,6 +28,7 @@
#include "src/core/ext/transport/binder/wire_format/binder.h"
#include "src/core/ext/transport/binder/wire_format/wire_reader.h"
#include "src/core/ext/transport/binder/wire_format/wire_writer.h"
+#include "src/core/lib/gprpp/notification.h"
namespace grpc_binder {
@@ -105,7 +105,7 @@ class WireReaderImpl : public WireReader {
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
std::shared_ptr<TransportStreamReceiver> transport_stream_receiver_;
- y_absl::Notification connection_noti_;
+ grpc_core::Notification connection_noti_;
grpc_core::Mutex mu_;
bool connected_ Y_ABSL_GUARDED_BY(mu_) = false;
bool recvd_setup_transport_ Y_ABSL_GUARDED_BY(mu_) = false;
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_writer.cc b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_writer.cc
index 51b77e9c1d..6d56571398 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_writer.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_writer.cc
@@ -20,6 +20,9 @@
#include <utility>
+#include "y_absl/cleanup/cleanup.h"
+#include "y_absl/types/variant.h"
+
#include <grpc/support/log.h>
#define RETURN_IF_ERROR(expr) \
@@ -29,11 +32,22 @@
} while (0)
namespace grpc_binder {
-WireWriterImpl::WireWriterImpl(std::unique_ptr<Binder> binder)
- : binder_(std::move(binder)) {}
-y_absl::Status WireWriterImpl::WriteInitialMetadata(const Transaction& tx,
- WritableParcel* parcel) {
+bool CanBeSentInOneTransaction(const Transaction& tx) {
+ return (tx.GetFlags() & kFlagMessageData) == 0 ||
+ static_cast<int64_t>(tx.GetMessageData().size()) <=
+ WireWriterImpl::kBlockSize;
+}
+
+// Simply forward the call to `WireWriterImpl::RunScheduledTx`.
+void RunScheduledTx(void* arg, grpc_error_handle /*error*/) {
+ auto* run_scheduled_tx_args =
+ static_cast<WireWriterImpl::RunScheduledTxArgs*>(arg);
+ run_scheduled_tx_args->writer->RunScheduledTxInternal(run_scheduled_tx_args);
+}
+
+y_absl::Status WriteInitialMetadata(const Transaction& tx,
+ WritableParcel* parcel) {
if (tx.IsClient()) {
// Only client sends method ref.
RETURN_IF_ERROR(parcel->WriteString(tx.GetMethodRef()));
@@ -46,8 +60,8 @@ y_absl::Status WireWriterImpl::WriteInitialMetadata(const Transaction& tx,
return y_absl::OkStatus();
}
-y_absl::Status WireWriterImpl::WriteTrailingMetadata(const Transaction& tx,
- WritableParcel* parcel) {
+y_absl::Status WriteTrailingMetadata(const Transaction& tx,
+ WritableParcel* parcel) {
if (tx.IsServer()) {
if (tx.GetFlags() & kFlagStatusDescription) {
RETURN_IF_ERROR(parcel->WriteString(tx.GetStatusDesc()));
@@ -66,119 +80,321 @@ y_absl::Status WireWriterImpl::WriteTrailingMetadata(const Transaction& tx,
return y_absl::OkStatus();
}
-const int64_t WireWriterImpl::kBlockSize = 16 * 1024;
-const int64_t WireWriterImpl::kFlowControlWindowSize = 128 * 1024;
+WireWriterImpl::WireWriterImpl(std::unique_ptr<Binder> binder)
+ : binder_(std::move(binder)), combiner_(grpc_combiner_create()) {}
-bool WireWriterImpl::CanBeSentInOneTransaction(const Transaction& tx) const {
- return (tx.GetFlags() & kFlagMessageData) == 0 ||
- tx.GetMessageData().size() <= kBlockSize;
+WireWriterImpl::~WireWriterImpl() {
+ GRPC_COMBINER_UNREF(combiner_, "wire_writer_impl");
+ while (!pending_outgoing_tx_.empty()) {
+ delete pending_outgoing_tx_.front();
+ pending_outgoing_tx_.pop();
+ }
}
-y_absl::Status WireWriterImpl::RpcCallFastPath(const Transaction& tx) {
- int& seq = seq_num_[tx.GetTxCode()];
- // Fast path: send data in one transaction.
+// Flow control constant are specified at
+// https://github.com/grpc/proposal/blob/master/L73-java-binderchannel/wireformat.md#flow-control
+const int64_t WireWriterImpl::kBlockSize = 16 * 1024;
+const int64_t WireWriterImpl::kFlowControlWindowSize = 128 * 1024;
+
+y_absl::Status WireWriterImpl::MakeBinderTransaction(
+ BinderTransportTxCode tx_code,
+ std::function<y_absl::Status(WritableParcel*)> fill_parcel) {
+ grpc_core::MutexLock lock(&write_mu_);
RETURN_IF_ERROR(binder_->PrepareTransaction());
WritableParcel* parcel = binder_->GetWritableParcel();
- RETURN_IF_ERROR(parcel->WriteInt32(tx.GetFlags()));
- RETURN_IF_ERROR(parcel->WriteInt32(seq++));
- if (tx.GetFlags() & kFlagPrefix) {
- RETURN_IF_ERROR(WriteInitialMetadata(tx, parcel));
- }
- if (tx.GetFlags() & kFlagMessageData) {
- RETURN_IF_ERROR(parcel->WriteByteArrayWithLength(tx.GetMessageData()));
- }
- if (tx.GetFlags() & kFlagSuffix) {
- RETURN_IF_ERROR(WriteTrailingMetadata(tx, parcel));
+ RETURN_IF_ERROR(fill_parcel(parcel));
+ // Only stream transaction is accounted in flow control spec.
+ if (static_cast<int32_t>(tx_code) >= kFirstCallId) {
+ int64_t parcel_size = parcel->GetDataSize();
+ if (parcel_size > 2 * kBlockSize) {
+ gpr_log(GPR_ERROR,
+ "Unexpected large transaction (possibly caused by a very large "
+ "metadata). This might overflow the binder "
+ "transaction buffer. Size: %" PRId64 " bytes",
+ parcel_size);
+ }
+ num_outgoing_bytes_ += parcel_size;
+ gpr_log(GPR_INFO, "Total outgoing bytes: %" PRId64,
+ num_outgoing_bytes_.load());
}
- // FIXME(waynetu): Construct BinderTransportTxCode from an arbitrary integer
- // is an undefined behavior.
- return binder_->Transact(BinderTransportTxCode(tx.GetTxCode()));
+ GPR_ASSERT(!is_transacting_);
+ is_transacting_ = true;
+ y_absl::Status result = binder_->Transact(tx_code);
+ is_transacting_ = false;
+ return result;
}
-bool WireWriterImpl::WaitForAcknowledgement() {
- if (num_outgoing_bytes_ < num_acknowledged_bytes_ + kFlowControlWindowSize) {
- return true;
- }
- y_absl::Time deadline = y_absl::Now() + y_absl::Seconds(1);
- do {
- if (cv_.WaitWithDeadline(&mu_, deadline)) {
- return false;
+y_absl::Status WireWriterImpl::RpcCallFastPath(std::unique_ptr<Transaction> tx) {
+ return MakeBinderTransaction(
+ BinderTransportTxCode(tx->GetTxCode()),
+ [this, tx = tx.get()](
+ WritableParcel* parcel) Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(write_mu_) {
+ RETURN_IF_ERROR(parcel->WriteInt32(tx->GetFlags()));
+ RETURN_IF_ERROR(parcel->WriteInt32(next_seq_num_[tx->GetTxCode()]++));
+ if (tx->GetFlags() & kFlagPrefix) {
+ RETURN_IF_ERROR(WriteInitialMetadata(*tx, parcel));
+ }
+ if (tx->GetFlags() & kFlagMessageData) {
+ RETURN_IF_ERROR(
+ parcel->WriteByteArrayWithLength(tx->GetMessageData()));
+ }
+ if (tx->GetFlags() & kFlagSuffix) {
+ RETURN_IF_ERROR(WriteTrailingMetadata(*tx, parcel));
+ }
+ return y_absl::OkStatus();
+ });
+}
+
+y_absl::Status WireWriterImpl::RunStreamTx(
+ RunScheduledTxArgs::StreamTx* stream_tx, WritableParcel* parcel,
+ bool* is_last_chunk) {
+ Transaction* tx = stream_tx->tx.get();
+ // Transaction without data flag should go to fast path.
+ GPR_ASSERT(tx->GetFlags() & kFlagMessageData);
+
+ y_absl::string_view data = tx->GetMessageData();
+ GPR_ASSERT(stream_tx->bytes_sent <= static_cast<int64_t>(data.size()));
+
+ int flags = kFlagMessageData;
+
+ if (stream_tx->bytes_sent == 0) {
+ // This is the first transaction. Include initial
+ // metadata if there's any.
+ if (tx->GetFlags() & kFlagPrefix) {
+ flags |= kFlagPrefix;
}
- if (y_absl::Now() >= deadline) {
- return false;
+ }
+ // There is also prefix/suffix in transaction beside the transaction data so
+ // actual transaction size will be greater than `kBlockSize`. This is
+ // unavoidable because we cannot split the prefix metadata and trailing
+ // metadata into different binder transactions. In most cases this is fine
+ // because single transaction size is not required to be strictly lower than
+ // `kBlockSize`, as long as it won't overflow Android's binder buffer.
+ int64_t size = std::min<int64_t>(WireWriterImpl::kBlockSize,
+ data.size() - stream_tx->bytes_sent);
+ if (stream_tx->bytes_sent + WireWriterImpl::kBlockSize >=
+ static_cast<int64_t>(data.size())) {
+ // This is the last transaction. Include trailing
+ // metadata if there's any.
+ if (tx->GetFlags() & kFlagSuffix) {
+ flags |= kFlagSuffix;
}
- } while (num_outgoing_bytes_ >=
- num_acknowledged_bytes_ + kFlowControlWindowSize);
- return true;
+ size = data.size() - stream_tx->bytes_sent;
+ *is_last_chunk = true;
+ } else {
+ // There are more messages to send.
+ flags |= kFlagMessageDataIsPartial;
+ *is_last_chunk = false;
+ }
+ RETURN_IF_ERROR(parcel->WriteInt32(flags));
+ RETURN_IF_ERROR(parcel->WriteInt32(next_seq_num_[tx->GetTxCode()]++));
+ if (flags & kFlagPrefix) {
+ RETURN_IF_ERROR(WriteInitialMetadata(*tx, parcel));
+ }
+ RETURN_IF_ERROR(parcel->WriteByteArrayWithLength(
+ data.substr(stream_tx->bytes_sent, size)));
+ if (flags & kFlagSuffix) {
+ RETURN_IF_ERROR(WriteTrailingMetadata(*tx, parcel));
+ }
+ stream_tx->bytes_sent += size;
+ return y_absl::OkStatus();
}
-y_absl::Status WireWriterImpl::RpcCall(const Transaction& tx) {
- // TODO(mingcl): check tx_code <= last call id
- grpc_core::MutexLock lock(&mu_);
- GPR_ASSERT(tx.GetTxCode() >= kFirstCallId);
- if (CanBeSentInOneTransaction(tx)) {
- return RpcCallFastPath(tx);
- }
- // Slow path: the message data is too large to fit in one transaction.
- int& seq = seq_num_[tx.GetTxCode()];
- int original_flags = tx.GetFlags();
- GPR_ASSERT(original_flags & kFlagMessageData);
- y_absl::string_view data = tx.GetMessageData();
- size_t bytes_sent = 0;
- while (bytes_sent < data.size()) {
- if (!WaitForAcknowledgement()) {
- return y_absl::InternalError("Timeout waiting for acknowledgement");
- }
- RETURN_IF_ERROR(binder_->PrepareTransaction());
- WritableParcel* parcel = binder_->GetWritableParcel();
- size_t size =
- std::min(static_cast<size_t>(kBlockSize), data.size() - bytes_sent);
- int flags = kFlagMessageData;
- if (bytes_sent == 0) {
- // This is the first transaction. Include initial metadata if there's any.
- if (original_flags & kFlagPrefix) {
- flags |= kFlagPrefix;
- }
+void WireWriterImpl::RunScheduledTxInternal(RunScheduledTxArgs* args) {
+ GPR_ASSERT(args->writer == this);
+ if (y_absl::holds_alternative<RunScheduledTxArgs::AckTx>(args->tx)) {
+ int64_t num_bytes =
+ y_absl::get<RunScheduledTxArgs::AckTx>(args->tx).num_bytes;
+ y_absl::Status result =
+ MakeBinderTransaction(BinderTransportTxCode::ACKNOWLEDGE_BYTES,
+ [num_bytes](WritableParcel* parcel) {
+ RETURN_IF_ERROR(parcel->WriteInt64(num_bytes));
+ return y_absl::OkStatus();
+ });
+ if (!result.ok()) {
+ gpr_log(GPR_ERROR, "Failed to make binder transaction %s",
+ result.ToString().c_str());
}
- if (bytes_sent + kBlockSize >= data.size()) {
- // This is the last transaction. Include trailing metadata if there's any.
- if (original_flags & kFlagSuffix) {
- flags |= kFlagSuffix;
- }
- } else {
- // There are more messages to send.
- flags |= kFlagMessageDataIsPartial;
+ delete args;
+ return;
+ }
+ GPR_ASSERT(y_absl::holds_alternative<RunScheduledTxArgs::StreamTx>(args->tx));
+ RunScheduledTxArgs::StreamTx* stream_tx =
+ &y_absl::get<RunScheduledTxArgs::StreamTx>(args->tx);
+ // Be reservative. Decrease CombinerTxCount after the data size of this
+ // transaction has already been added to `num_outgoing_bytes_`, to make sure
+ // we never underestimate `num_outgoing_bytes_`.
+ auto decrease_combiner_tx_count = y_absl::MakeCleanup([this]() {
+ {
+ grpc_core::MutexLock lock(&flow_control_mu_);
+ GPR_ASSERT(num_non_acked_tx_in_combiner_ > 0);
+ num_non_acked_tx_in_combiner_--;
}
- RETURN_IF_ERROR(parcel->WriteInt32(flags));
- RETURN_IF_ERROR(parcel->WriteInt32(seq++));
- if (flags & kFlagPrefix) {
- RETURN_IF_ERROR(WriteInitialMetadata(tx, parcel));
+ // New transaction might be ready to be scheduled.
+ TryScheduleTransaction();
+ });
+ if (CanBeSentInOneTransaction(*stream_tx->tx.get())) { // NOLINT
+ y_absl::Status result = RpcCallFastPath(std::move(stream_tx->tx));
+ if (!result.ok()) {
+ gpr_log(GPR_ERROR, "Failed to handle non-chunked RPC call %s",
+ result.ToString().c_str());
}
- RETURN_IF_ERROR(
- parcel->WriteByteArrayWithLength(data.substr(bytes_sent, size)));
- if (flags & kFlagSuffix) {
- RETURN_IF_ERROR(WriteTrailingMetadata(tx, parcel));
+ delete args;
+ return;
+ }
+ bool is_last_chunk = true;
+ y_absl::Status result = MakeBinderTransaction(
+ BinderTransportTxCode(stream_tx->tx->GetTxCode()),
+ [stream_tx, &is_last_chunk, this](WritableParcel* parcel)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(write_mu_) {
+ return RunStreamTx(stream_tx, parcel, &is_last_chunk);
+ });
+ if (!result.ok()) {
+ gpr_log(GPR_ERROR, "Failed to make binder transaction %s",
+ result.ToString().c_str());
+ }
+ if (!is_last_chunk) {
+ {
+ grpc_core::MutexLock lock(&flow_control_mu_);
+ pending_outgoing_tx_.push(args);
}
- num_outgoing_bytes_ += parcel->GetDataSize();
- RETURN_IF_ERROR(binder_->Transact(BinderTransportTxCode(tx.GetTxCode())));
- bytes_sent += size;
+ TryScheduleTransaction();
+ } else {
+ delete args;
}
+}
+
+y_absl::Status WireWriterImpl::RpcCall(std::unique_ptr<Transaction> tx) {
+ // TODO(mingcl): check tx_code <= last call id
+ GPR_ASSERT(tx->GetTxCode() >= kFirstCallId);
+ auto args = new RunScheduledTxArgs();
+ args->writer = this;
+ args->tx = RunScheduledTxArgs::StreamTx();
+ y_absl::get<RunScheduledTxArgs::StreamTx>(args->tx).tx = std::move(tx);
+ y_absl::get<RunScheduledTxArgs::StreamTx>(args->tx).bytes_sent = 0;
+ {
+ grpc_core::MutexLock lock(&flow_control_mu_);
+ pending_outgoing_tx_.push(args);
+ }
+ TryScheduleTransaction();
return y_absl::OkStatus();
}
y_absl::Status WireWriterImpl::SendAck(int64_t num_bytes) {
- grpc_core::MutexLock lock(&mu_);
- RETURN_IF_ERROR(binder_->PrepareTransaction());
- WritableParcel* parcel = binder_->GetWritableParcel();
- RETURN_IF_ERROR(parcel->WriteInt64(num_bytes));
- return binder_->Transact(BinderTransportTxCode::ACKNOWLEDGE_BYTES);
+ // Ensure combiner will be run if this is not called from top-level gRPC API
+ // entrypoint.
+ grpc_core::ExecCtx exec_ctx;
+ gpr_log(GPR_INFO, "Ack %" PRId64 " bytes received", num_bytes);
+ if (is_transacting_) {
+ // This can happen because NDK might call our registered callback function
+ // in the same thread while we are telling it to send a transaction
+ // `is_transacting_` will be true. `Binder::Transact` is now being called on
+ // the same thread or the other thread. We are currently in the call stack
+ // of other transaction, Liveness of ACK is still guaranteed even if this is
+ // a race with another thread.
+ gpr_log(
+ GPR_INFO,
+ "Scheduling ACK transaction instead of directly execute it to avoid "
+ "deadlock.");
+ auto args = new RunScheduledTxArgs();
+ args->writer = this;
+ args->tx = RunScheduledTxArgs::AckTx();
+ y_absl::get<RunScheduledTxArgs::AckTx>(args->tx).num_bytes = num_bytes;
+ auto cl = GRPC_CLOSURE_CREATE(RunScheduledTx, args, nullptr);
+ combiner_->Run(cl, GRPC_ERROR_NONE);
+ return y_absl::OkStatus();
+ }
+ // Otherwise, we can directly send ack.
+ y_absl::Status result = MakeBinderTransaction(
+ BinderTransportTxCode(BinderTransportTxCode::ACKNOWLEDGE_BYTES),
+ [num_bytes](WritableParcel* parcel) {
+ RETURN_IF_ERROR(parcel->WriteInt64(num_bytes));
+ return y_absl::OkStatus();
+ });
+ if (!result.ok()) {
+ gpr_log(GPR_ERROR, "Failed to make binder transaction %s",
+ result.ToString().c_str());
+ }
+ return result;
}
void WireWriterImpl::OnAckReceived(int64_t num_bytes) {
- grpc_core::MutexLock lock(&mu_);
- num_acknowledged_bytes_ = std::max(num_acknowledged_bytes_, num_bytes);
- cv_.Signal();
+ // Ensure combiner will be run if this is not called from top-level gRPC API
+ // entrypoint.
+ grpc_core::ExecCtx exec_ctx;
+ gpr_log(GPR_INFO, "OnAckReceived %" PRId64, num_bytes);
+ // Do not try to obtain `write_mu_` in this function. NDKBinder might invoke
+ // the callback to notify us about new incoming binder transaction when we are
+ // sending transaction. i.e. `write_mu_` might have already been acquired by
+ // this thread.
+ {
+ grpc_core::MutexLock lock(&flow_control_mu_);
+ num_acknowledged_bytes_ = std::max(num_acknowledged_bytes_, num_bytes);
+ int64_t num_outgoing_bytes = num_outgoing_bytes_;
+ if (num_acknowledged_bytes_ > num_outgoing_bytes) {
+ gpr_log(GPR_ERROR,
+ "The other end of transport acked more bytes than we ever sent, "
+ "%" PRId64 " > %" PRId64,
+ num_acknowledged_bytes_, num_outgoing_bytes);
+ }
+ }
+ TryScheduleTransaction();
+}
+
+void WireWriterImpl::TryScheduleTransaction() {
+ while (true) {
+ grpc_core::MutexLock lock(&flow_control_mu_);
+ if (pending_outgoing_tx_.empty()) {
+ // Nothing to be schduled.
+ break;
+ }
+ // Number of bytes we have scheduled in combiner but have not yet be
+ // executed by combiner. Here we make an assumption that every binder
+ // transaction will take `kBlockSize`. This should be close to truth when a
+ // large message is being cut to `kBlockSize` chunks.
+ int64_t num_bytes_scheduled_in_combiner =
+ num_non_acked_tx_in_combiner_ * kBlockSize;
+ // An estimation of number of bytes of traffic we will eventually send to
+ // the other end, assuming all tasks in combiner will be executed and we
+ // receive no new ACK from the other end of transport.
+ int64_t num_total_bytes_will_be_sent =
+ num_outgoing_bytes_ + num_bytes_scheduled_in_combiner;
+ // An estimation of number of bytes of traffic that will not be
+ // acknowledged, assuming all tasks in combiner will be executed and we
+ // receive no new ack message fomr the other end of transport.
+ int64_t num_non_acked_bytes_estimation =
+ num_total_bytes_will_be_sent - num_acknowledged_bytes_;
+ if (num_non_acked_bytes_estimation < 0) {
+ gpr_log(
+ GPR_ERROR,
+ "Something went wrong. `num_non_acked_bytes_estimation` should be "
+ "non-negative but it is %" PRId64,
+ num_non_acked_bytes_estimation);
+ }
+ // If we can schedule another transaction (which has size estimation of
+ // `kBlockSize`) without exceeding `kFlowControlWindowSize`, schedule it.
+ if ((num_non_acked_bytes_estimation + kBlockSize <
+ kFlowControlWindowSize)) {
+ num_non_acked_tx_in_combiner_++;
+ combiner_->Run(GRPC_CLOSURE_CREATE(RunScheduledTx,
+ pending_outgoing_tx_.front(), nullptr),
+ GRPC_ERROR_NONE);
+ pending_outgoing_tx_.pop();
+ } else {
+ // It is common to fill `kFlowControlWindowSize` completely because
+ // transactions are send at faster rate than the other end of transport
+ // can handle it, so here we use `GPR_DEBUG` log level.
+ gpr_log(GPR_DEBUG,
+ "Some work cannot be scheduled yet due to slow ack from the "
+ "other end of transport. This transport might be blocked if this "
+ "number don't go down. pending_outgoing_tx_.size() = %zu "
+ "pending_outgoing_tx_.front() = %p",
+ pending_outgoing_tx_.size(), pending_outgoing_tx_.front());
+ break;
+ }
+ }
}
} // namespace grpc_binder
+
#endif
diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_writer.h b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_writer.h
index 093fac4113..6fcb13a572 100644
--- a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_writer.h
+++ b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/wire_writer.h
@@ -17,6 +17,7 @@
#include <grpc/support/port_platform.h>
+#include <queue>
#include <util/generic/string.h>
#include <util/string/cast.h>
#include <vector>
@@ -26,13 +27,15 @@
#include "src/core/ext/transport/binder/wire_format/binder.h"
#include "src/core/ext/transport/binder/wire_format/transaction.h"
#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/combiner.h"
namespace grpc_binder {
+// Member functions are thread safe.
class WireWriter {
public:
virtual ~WireWriter() = default;
- virtual y_absl::Status RpcCall(const Transaction& call) = 0;
+ virtual y_absl::Status RpcCall(std::unique_ptr<Transaction> tx) = 0;
virtual y_absl::Status SendAck(int64_t num_bytes) = 0;
virtual void OnAckReceived(int64_t num_bytes) = 0;
};
@@ -40,44 +43,84 @@ class WireWriter {
class WireWriterImpl : public WireWriter {
public:
explicit WireWriterImpl(std::unique_ptr<Binder> binder);
- y_absl::Status RpcCall(const Transaction& tx) override;
+ ~WireWriterImpl() override;
+ y_absl::Status RpcCall(std::unique_ptr<Transaction> tx) override;
y_absl::Status SendAck(int64_t num_bytes) override;
void OnAckReceived(int64_t num_bytes) override;
+ // Required to be public because we would like to call this in combiner (which
+ // cannot invoke class member function). `RunScheduledTxArgs` and
+ // `RunScheduledTxInternal` should not be used by user directly.
+ struct RunScheduledTxArgs {
+ WireWriterImpl* writer;
+ struct StreamTx {
+ std::unique_ptr<Transaction> tx;
+ // How many data in transaction's `data` field has been sent.
+ int64_t bytes_sent = 0;
+ };
+ struct AckTx {
+ int64_t num_bytes;
+ };
+ y_absl::variant<AckTx, StreamTx> tx;
+ };
+
+ void RunScheduledTxInternal(RunScheduledTxArgs* arg);
+
// Split long message into chunks of size 16k. This doesn't necessarily have
// to be the same as the flow control acknowledgement size, but it should not
// exceed 128k.
static const int64_t kBlockSize;
+
// Flow control allows sending at most 128k between acknowledgements.
static const int64_t kFlowControlWindowSize;
private:
- y_absl::Status WriteInitialMetadata(const Transaction& tx,
- WritableParcel* parcel)
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
- y_absl::Status WriteTrailingMetadata(const Transaction& tx,
- WritableParcel* parcel)
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
-
- bool CanBeSentInOneTransaction(const Transaction& tx) const;
- y_absl::Status RpcCallFastPath(const Transaction& tx)
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
-
- // Wait for acknowledgement from the other side for a while (the timeout is
- // currently set to 10ms for debugability). Returns true if we are able to
- // proceed, and false otherwise.
- //
- // TODO(waynetu): Currently, RpcCall() will fail if we are blocked for 10ms.
- // In the future, we should queue the transactions and release them later when
- // acknowledgement comes.
- bool WaitForAcknowledgement() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
-
- grpc_core::Mutex mu_;
- grpc_core::CondVar cv_;
- std::unique_ptr<Binder> binder_ Y_ABSL_GUARDED_BY(mu_);
- y_absl::flat_hash_map<int, int> seq_num_ Y_ABSL_GUARDED_BY(mu_);
- int64_t num_outgoing_bytes_ Y_ABSL_GUARDED_BY(mu_) = 0;
- int64_t num_acknowledged_bytes_ Y_ABSL_GUARDED_BY(mu_) = 0;
+ // Fast path: send data in one transaction.
+ y_absl::Status RpcCallFastPath(std::unique_ptr<Transaction> tx);
+
+ // This function will acquire `write_mu_` to make sure the binder is not used
+ // concurrently, so this can be called by different threads safely.
+ y_absl::Status MakeBinderTransaction(
+ BinderTransportTxCode tx_code,
+ std::function<y_absl::Status(WritableParcel*)> fill_parcel);
+
+ // Send a stream to `binder_`. Set `is_last_chunk` to `true` if the stream
+ // transaction has been sent completely. Otherwise set to `false`.
+ y_absl::Status RunStreamTx(RunScheduledTxArgs::StreamTx* stream_tx,
+ WritableParcel* parcel, bool* is_last_chunk)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(write_mu_);
+
+ // Schdule `RunScheduledTxArgs*` in `pending_outgoing_tx_` to `combiner_`, as
+ // many as possible (under the constraint of `kFlowControlWindowSize`).
+ void TryScheduleTransaction();
+
+ // Guards variables related to transport state.
+ grpc_core::Mutex write_mu_;
+ std::unique_ptr<Binder> binder_ Y_ABSL_GUARDED_BY(write_mu_);
+
+ // Maps the transaction code (which identifies streams) to their next
+ // available sequence number. See
+ // https://github.com/grpc/proposal/blob/master/L73-java-binderchannel/wireformat.md#sequence-number
+ y_absl::flat_hash_map<int, int> next_seq_num_ Y_ABSL_GUARDED_BY(write_mu_);
+
+ // Number of bytes we have already sent in stream transactions.
+ std::atomic<int64_t> num_outgoing_bytes_{0};
+
+ // Guards variables related to flow control logic.
+ grpc_core::Mutex flow_control_mu_;
+ int64_t num_acknowledged_bytes_ Y_ABSL_GUARDED_BY(flow_control_mu_) = 0;
+
+ // The queue takes ownership of the pointer.
+ std::queue<RunScheduledTxArgs*> pending_outgoing_tx_
+ Y_ABSL_GUARDED_BY(flow_control_mu_);
+ int num_non_acked_tx_in_combiner_ Y_ABSL_GUARDED_BY(flow_control_mu_) = 0;
+
+ // Helper variable for determining if we are currently calling into
+ // `Binder::Transact`. Useful for avoiding the attempt of acquiring
+ // `write_mu_` multiple times on the same thread.
+ std::atomic_bool is_transacting_{false};
+
+ grpc_core::Combiner* combiner_;
};
} // namespace grpc_binder
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/client/chttp2_connector.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/client/chttp2_connector.cc
index bdb2cb51e7..bf885d941d 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/client/chttp2_connector.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/client/chttp2_connector.cc
@@ -20,48 +20,77 @@
#include "src/core/ext/transport/chttp2/client/chttp2_connector.h"
-#include <string.h>
+#include <stdint.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/str_format.h"
#include <grpc/grpc.h>
#include <grpc/grpc_posix.h>
-#include <grpc/slice_buffer.h>
+#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/status.h>
#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
+#include <grpc/support/log.h>
+#include <grpc/support/sync.h>
#include "src/core/ext/filters/client_channel/client_channel.h"
+#include "src/core/ext/filters/client_channel/client_channel_factory.h"
#include "src/core/ext/filters/client_channel/connector.h"
+#include "src/core/ext/filters/client_channel/subchannel.h"
#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/handshaker.h"
+#include "src/core/lib/channel/channel_args_preconditioning.h"
+#include "src/core/lib/channel/channelz.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/event_engine/channel_args_endpoint_config.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
#include "src/core/lib/iomgr/endpoint.h"
-#include "src/core/lib/iomgr/tcp_client.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/resolved_address.h"
#include "src/core/lib/resolver/resolver_registry.h"
-#include "src/core/lib/resource_quota/api.h"
#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/credentials/insecure/insecure_credentials.h"
#include "src/core/lib/security/security_connector/security_connector.h"
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/channel.h"
+#include "src/core/lib/surface/channel_stack_type.h"
+#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/transport/handshaker.h"
+#include "src/core/lib/transport/handshaker_registry.h"
+#include "src/core/lib/transport/tcp_connect_handshaker.h"
#include "src/core/lib/transport/transport.h"
-#include "src/core/lib/uri/uri_parser.h"
+#include "src/core/lib/transport/transport_fwd.h"
#ifdef GPR_SUPPORT_CHANNELS_FROM_FD
#include <fcntl.h>
+#include "src/core/lib/iomgr/ev_posix.h"
#include "src/core/lib/iomgr/tcp_client_posix.h"
-#include "src/core/lib/iomgr/tcp_posix.h"
#endif // GPR_SUPPORT_CHANNELS_FROM_FD
namespace grpc_core {
-Chttp2Connector::Chttp2Connector() {
- GRPC_CLOSURE_INIT(&connected_, Connected, this, grpc_schedule_on_exec_ctx);
+namespace {
+void NullThenSchedClosure(const DebugLocation& location, grpc_closure** closure,
+ grpc_error_handle error) {
+ grpc_closure* c = *closure;
+ *closure = nullptr;
+ ExecCtx::Run(location, c, error);
}
+} // namespace
Chttp2Connector::~Chttp2Connector() {
if (endpoint_ != nullptr) {
@@ -71,99 +100,52 @@ Chttp2Connector::~Chttp2Connector() {
void Chttp2Connector::Connect(const Args& args, Result* result,
grpc_closure* notify) {
- grpc_endpoint** ep;
{
MutexLock lock(&mu_);
GPR_ASSERT(notify_ == nullptr);
args_ = args;
result_ = result;
notify_ = notify;
- GPR_ASSERT(!connecting_);
- connecting_ = true;
GPR_ASSERT(endpoint_ == nullptr);
- ep = &endpoint_;
}
- // In some implementations, the closure can be flushed before
- // grpc_tcp_client_connect() returns, and since the closure requires access
- // to mu_, this can result in a deadlock (see
- // https://github.com/grpc/grpc/issues/16427 for details).
- // grpc_tcp_client_connect() will fill endpoint_ with proper contents, and we
- // make sure that we still exist at that point by taking a ref.
- Ref().release(); // Ref held by callback.
- grpc_tcp_client_connect(&connected_, ep, args.interested_parties,
- args.channel_args, args.address, args.deadline);
+ y_absl::StatusOr<TString> address = grpc_sockaddr_to_uri(args.address);
+ if (!address.ok()) {
+ grpc_error_handle error =
+ GRPC_ERROR_CREATE_FROM_CPP_STRING(address.status().ToString());
+ NullThenSchedClosure(DEBUG_LOCATION, &notify_, error);
+ return;
+ }
+ ChannelArgs channel_args =
+ args_.channel_args
+ .Set(GRPC_ARG_TCP_HANDSHAKER_RESOLVED_ADDRESS, address.value())
+ .Set(GRPC_ARG_TCP_HANDSHAKER_BIND_ENDPOINT_TO_POLLSET, 1);
+ handshake_mgr_ = MakeRefCounted<HandshakeManager>();
+ CoreConfiguration::Get().handshaker_registry().AddHandshakers(
+ HANDSHAKER_CLIENT, channel_args, args_.interested_parties,
+ handshake_mgr_.get());
+ Ref().release(); // Ref held by OnHandshakeDone().
+ handshake_mgr_->DoHandshake(nullptr /* endpoint */, channel_args,
+ args.deadline, nullptr /* acceptor */,
+ OnHandshakeDone, this);
}
void Chttp2Connector::Shutdown(grpc_error_handle error) {
MutexLock lock(&mu_);
shutdown_ = true;
if (handshake_mgr_ != nullptr) {
+ // Handshaker will also shutdown the endpoint if it exists
handshake_mgr_->Shutdown(GRPC_ERROR_REF(error));
}
- // If handshaking is not yet in progress, shutdown the endpoint.
- // Otherwise, the handshaker will do this for us.
- if (!connecting_ && endpoint_ != nullptr) {
- grpc_endpoint_shutdown(endpoint_, GRPC_ERROR_REF(error));
- }
GRPC_ERROR_UNREF(error);
}
-void Chttp2Connector::Connected(void* arg, grpc_error_handle error) {
- Chttp2Connector* self = static_cast<Chttp2Connector*>(arg);
- bool unref = false;
- {
- MutexLock lock(&self->mu_);
- GPR_ASSERT(self->connecting_);
- self->connecting_ = false;
- if (error != GRPC_ERROR_NONE || self->shutdown_) {
- if (error == GRPC_ERROR_NONE) {
- error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("connector shutdown");
- } else {
- error = GRPC_ERROR_REF(error);
- }
- if (self->endpoint_ != nullptr) {
- grpc_endpoint_shutdown(self->endpoint_, GRPC_ERROR_REF(error));
- }
- self->result_->Reset();
- grpc_closure* notify = self->notify_;
- self->notify_ = nullptr;
- ExecCtx::Run(DEBUG_LOCATION, notify, error);
- unref = true;
- } else {
- GPR_ASSERT(self->endpoint_ != nullptr);
- self->StartHandshakeLocked();
- }
- }
- if (unref) self->Unref();
-}
-
-void Chttp2Connector::StartHandshakeLocked() {
- handshake_mgr_ = MakeRefCounted<HandshakeManager>();
- CoreConfiguration::Get().handshaker_registry().AddHandshakers(
- HANDSHAKER_CLIENT, args_.channel_args, args_.interested_parties,
- handshake_mgr_.get());
- grpc_endpoint_add_to_pollset_set(endpoint_, args_.interested_parties);
- handshake_mgr_->DoHandshake(endpoint_, args_.channel_args, args_.deadline,
- nullptr /* acceptor */, OnHandshakeDone, this);
- endpoint_ = nullptr; // Endpoint handed off to handshake manager.
-}
-
-namespace {
-void NullThenSchedClosure(const DebugLocation& location, grpc_closure** closure,
- grpc_error_handle error) {
- grpc_closure* c = *closure;
- *closure = nullptr;
- ExecCtx::Run(location, c, error);
-}
-} // namespace
-
void Chttp2Connector::OnHandshakeDone(void* arg, grpc_error_handle error) {
auto* args = static_cast<HandshakerArgs*>(arg);
Chttp2Connector* self = static_cast<Chttp2Connector*>(args->user_data);
{
MutexLock lock(&self->mu_);
- if (error != GRPC_ERROR_NONE || self->shutdown_) {
- if (error == GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error) || self->shutdown_) {
+ if (GRPC_ERROR_IS_NONE(error)) {
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("connector shutdown");
// We were shut down after handshaking completed successfully, so
// destroy the endpoint here.
@@ -174,7 +156,6 @@ void Chttp2Connector::OnHandshakeDone(void* arg, grpc_error_handle error) {
// point this can be removed.
grpc_endpoint_shutdown(args->endpoint, GRPC_ERROR_REF(error));
grpc_endpoint_destroy(args->endpoint);
- grpc_channel_args_destroy(args->args);
grpc_slice_buffer_destroy_internal(args->read_buffer);
gpr_free(args->read_buffer);
}
@@ -220,12 +201,11 @@ void Chttp2Connector::OnReceiveSettings(void* arg, grpc_error_handle error) {
if (!self->notify_error_.has_value()) {
grpc_endpoint_delete_from_pollset_set(self->endpoint_,
self->args_.interested_parties);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
// Transport got an error while waiting on SETTINGS frame.
// TODO(yashykt): The following two lines should be moved to
// SubchannelConnector::Result::Reset()
grpc_transport_destroy(self->result_->transport);
- grpc_channel_args_destroy(self->result_->channel_args);
self->result_->Reset();
}
self->MaybeNotify(GRPC_ERROR_REF(error));
@@ -251,7 +231,6 @@ void Chttp2Connector::OnTimeout(void* arg, grpc_error_handle /*error*/) {
// TODO(yashykt): The following two lines should be moved to
// SubchannelConnector::Result::Reset()
grpc_transport_destroy(self->result_->transport);
- grpc_channel_args_destroy(self->result_->channel_args);
self->result_->Reset();
self->MaybeNotify(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"connection attempt timed out before receiving SETTINGS frame"));
@@ -283,89 +262,66 @@ namespace {
class Chttp2SecureClientChannelFactory : public ClientChannelFactory {
public:
RefCountedPtr<Subchannel> CreateSubchannel(
- const grpc_resolved_address& address,
- const grpc_channel_args* args) override {
- grpc_channel_args* new_args = GetSecureNamingChannelArgs(args);
- if (new_args == nullptr) {
+ const grpc_resolved_address& address, const ChannelArgs& args) override {
+ y_absl::StatusOr<ChannelArgs> new_args = GetSecureNamingChannelArgs(args);
+ if (!new_args.ok()) {
gpr_log(GPR_ERROR,
- "Failed to create channel args during subchannel creation.");
+ "Failed to create channel args during subchannel creation: %s; "
+ "Got args: %s",
+ new_args.status().ToString().c_str(), args.ToString().c_str());
return nullptr;
}
RefCountedPtr<Subchannel> s = Subchannel::Create(
- MakeOrphanable<Chttp2Connector>(), address, new_args);
- grpc_channel_args_destroy(new_args);
+ MakeOrphanable<Chttp2Connector>(), address, *new_args);
return s;
}
private:
- static grpc_channel_args* GetSecureNamingChannelArgs(
- const grpc_channel_args* args) {
- grpc_channel_credentials* channel_credentials =
- grpc_channel_credentials_find_in_args(args);
+ static y_absl::StatusOr<ChannelArgs> GetSecureNamingChannelArgs(
+ ChannelArgs args) {
+ auto* channel_credentials = args.GetObject<grpc_channel_credentials>();
if (channel_credentials == nullptr) {
- gpr_log(GPR_ERROR,
- "Can't create subchannel: channel credentials missing for secure "
- "channel.");
- return nullptr;
+ return y_absl::InternalError(
+ "channel credentials missing for secure channel");
}
// Make sure security connector does not already exist in args.
- if (grpc_security_connector_find_in_args(args) != nullptr) {
- gpr_log(GPR_ERROR,
- "Can't create subchannel: security connector already present in "
- "channel args.");
- return nullptr;
+ if (args.Contains(GRPC_ARG_SECURITY_CONNECTOR)) {
+ return y_absl::InternalError(
+ "security connector already present in channel args.");
}
// Find the authority to use in the security connector.
- const char* authority =
- grpc_channel_args_find_string(args, GRPC_ARG_DEFAULT_AUTHORITY);
- GPR_ASSERT(authority != nullptr);
+ y_absl::optional<TString> authority =
+ args.GetOwnedString(GRPC_ARG_DEFAULT_AUTHORITY);
+ if (!authority.has_value()) {
+ return y_absl::InternalError("authority not present in channel args");
+ }
// Create the security connector using the credentials and target name.
- grpc_channel_args* new_args_from_connector = nullptr;
RefCountedPtr<grpc_channel_security_connector>
subchannel_security_connector =
channel_credentials->create_security_connector(
- /*call_creds=*/nullptr, authority, args,
- &new_args_from_connector);
+ /*call_creds=*/nullptr, authority->c_str(), &args);
if (subchannel_security_connector == nullptr) {
- gpr_log(GPR_ERROR,
- "Failed to create secure subchannel for secure name '%s'",
- authority);
- return nullptr;
+ return y_absl::InternalError(y_absl::StrFormat(
+ "Failed to create secure subchannel for secure name '%s'",
+ *authority));
}
- grpc_arg new_security_connector_arg =
- grpc_security_connector_to_arg(subchannel_security_connector.get());
- grpc_channel_args* new_args = grpc_channel_args_copy_and_add(
- new_args_from_connector != nullptr ? new_args_from_connector : args,
- &new_security_connector_arg, 1);
- subchannel_security_connector.reset(DEBUG_LOCATION, "lb_channel_create");
- grpc_channel_args_destroy(new_args_from_connector);
- return new_args;
+ return args.SetObject(std::move(subchannel_security_connector));
}
};
-grpc_channel* CreateChannel(const char* target, const grpc_channel_args* args,
- grpc_error_handle* error) {
+y_absl::StatusOr<RefCountedPtr<Channel>> CreateChannel(const char* target,
+ const ChannelArgs& args) {
if (target == nullptr) {
gpr_log(GPR_ERROR, "cannot create channel with NULL target name");
- if (error != nullptr) {
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("channel target is NULL");
- }
- return nullptr;
+ return y_absl::InvalidArgumentError("channel target is NULL");
}
// Add channel arg containing the server URI.
TString canonical_target =
CoreConfiguration::Get().resolver_registry().AddDefaultPrefixIfNeeded(
target);
- grpc_arg arg = grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_SERVER_URI),
- const_cast<char*>(canonical_target.c_str()));
- const char* to_remove[] = {GRPC_ARG_SERVER_URI};
- grpc_channel_args* new_args =
- grpc_channel_args_copy_and_add_and_remove(args, to_remove, 1, &arg, 1);
- grpc_channel* channel = grpc_channel_create_internal(
- target, new_args, GRPC_CLIENT_CHANNEL, nullptr, error);
- grpc_channel_args_destroy(new_args);
- return channel;
+ return Channel::Create(target,
+ args.Set(GRPC_ARG_SERVER_URI, canonical_target),
+ GRPC_CLIENT_CHANNEL, nullptr);
}
} // namespace
@@ -388,33 +344,30 @@ void FactoryInit() {
// - perform handshakes
grpc_channel* grpc_channel_create(const char* target,
grpc_channel_credentials* creds,
- const grpc_channel_args* args) {
+ const grpc_channel_args* c_args) {
grpc_core::ExecCtx exec_ctx;
GRPC_API_TRACE("grpc_secure_channel_create(target=%s, creds=%p, args=%p)", 3,
- (target, (void*)creds, (void*)args));
- args = grpc_core::CoreConfiguration::Get()
- .channel_args_preconditioning()
- .PreconditionChannelArgs(args);
+ (target, (void*)creds, (void*)c_args));
grpc_channel* channel = nullptr;
grpc_error_handle error = GRPC_ERROR_NONE;
if (creds != nullptr) {
// Add channel args containing the client channel factory and channel
// credentials.
gpr_once_init(&g_factory_once, FactoryInit);
- grpc_arg channel_factory_arg =
- grpc_core::ClientChannelFactory::CreateChannelArg(g_factory);
- grpc_arg args_to_add[] = {channel_factory_arg,
- grpc_channel_credentials_to_arg(creds)};
- const char* arg_to_remove = channel_factory_arg.key;
- grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
- args, &arg_to_remove, 1, args_to_add, GPR_ARRAY_SIZE(args_to_add));
- new_args = creds->update_arguments(new_args);
+ grpc_core::ChannelArgs args =
+ creds->update_arguments(grpc_core::CoreConfiguration::Get()
+ .channel_args_preconditioning()
+ .PreconditionChannelArgs(c_args)
+ .SetObject(creds->Ref())
+ .SetObject(g_factory));
// Create channel.
- channel = grpc_core::CreateChannel(target, new_args, &error);
- // Clean up.
- grpc_channel_args_destroy(new_args);
+ auto r = grpc_core::CreateChannel(target, args);
+ if (r.ok()) {
+ channel = r->release()->c_ptr();
+ } else {
+ error = absl_status_to_grpc_error(r.status());
+ }
}
- grpc_channel_args_destroy(args);
if (channel == nullptr) {
intptr_t integer;
grpc_status_code status = GRPC_STATUS_INTERNAL;
@@ -438,47 +391,39 @@ grpc_channel* grpc_channel_create_from_fd(const char* target, int fd,
(target, fd, creds, args));
// For now, we only support insecure channel credentials.
if (creds == nullptr ||
- strcmp(creds->type(), GRPC_CREDENTIALS_TYPE_INSECURE) != 0) {
+ creds->type() != grpc_core::InsecureCredentials::Type()) {
return grpc_lame_client_channel_create(
target, GRPC_STATUS_INTERNAL,
"Failed to create client channel due to invalid creds");
}
- grpc_arg default_authority_arg = grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY),
- const_cast<char*>("test.authority"));
- args = grpc_channel_args_copy_and_add(args, &default_authority_arg, 1);
- const grpc_channel_args* final_args = grpc_core::CoreConfiguration::Get()
- .channel_args_preconditioning()
- .PreconditionChannelArgs(args);
- grpc_channel_args_destroy(args);
+ grpc_core::ChannelArgs final_args =
+ grpc_core::CoreConfiguration::Get()
+ .channel_args_preconditioning()
+ .PreconditionChannelArgs(args)
+ .SetIfUnset(GRPC_ARG_DEFAULT_AUTHORITY, "test.authority")
+ .SetObject(creds->Ref());
int flags = fcntl(fd, F_GETFL, 0);
GPR_ASSERT(fcntl(fd, F_SETFL, flags | O_NONBLOCK) == 0);
- grpc_endpoint* client = grpc_tcp_client_create_from_fd(
- grpc_fd_create(fd, "client", true), final_args, "fd-client");
+ grpc_endpoint* client = grpc_tcp_create_from_fd(
+ grpc_fd_create(fd, "client", true),
+ grpc_event_engine::experimental::ChannelArgsEndpointConfig(final_args),
+ "fd-client");
grpc_transport* transport =
grpc_create_chttp2_transport(final_args, client, true);
GPR_ASSERT(transport);
- grpc_error_handle error = GRPC_ERROR_NONE;
- grpc_channel* channel = grpc_channel_create_internal(
- target, final_args, GRPC_CLIENT_DIRECT_CHANNEL, transport, &error);
- grpc_channel_args_destroy(final_args);
- if (channel != nullptr) {
+ auto channel = grpc_core::Channel::Create(
+ target, final_args, GRPC_CLIENT_DIRECT_CHANNEL, transport);
+ if (channel.ok()) {
grpc_chttp2_transport_start_reading(transport, nullptr, nullptr, nullptr);
grpc_core::ExecCtx::Get()->Flush();
+ return channel->release()->c_ptr();
} else {
- intptr_t integer;
- grpc_status_code status = GRPC_STATUS_INTERNAL;
- if (grpc_error_get_int(error, GRPC_ERROR_INT_GRPC_STATUS, &integer)) {
- status = static_cast<grpc_status_code>(integer);
- }
- GRPC_ERROR_UNREF(error);
grpc_transport_destroy(transport);
- channel = grpc_lame_client_channel_create(
- target, status, "Failed to create client channel");
+ return grpc_lame_client_channel_create(
+ target, static_cast<grpc_status_code>(channel.status().code()),
+ "Failed to create client channel");
}
-
- return channel;
}
#else // !GPR_SUPPORT_CHANNELS_FROM_FD
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/client/chttp2_connector.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/client/chttp2_connector.h
index 7f17d68505..008e765756 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/client/chttp2_connector.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/client/chttp2_connector.h
@@ -21,23 +21,27 @@
#include <grpc/support/port_platform.h>
+#include "y_absl/types/optional.h"
+
#include "src/core/ext/filters/client_channel/connector.h"
-#include "src/core/lib/channel/handshaker.h"
-#include "src/core/lib/channel/handshaker_registry.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/transport/handshaker.h"
namespace grpc_core {
class Chttp2Connector : public SubchannelConnector {
public:
- Chttp2Connector();
~Chttp2Connector() override;
void Connect(const Args& args, Result* result, grpc_closure* notify) override;
void Shutdown(grpc_error_handle error) override;
private:
- static void Connected(void* arg, grpc_error_handle error);
- void StartHandshakeLocked();
static void OnHandshakeDone(void* arg, grpc_error_handle error);
static void OnReceiveSettings(void* arg, grpc_error_handle error);
static void OnTimeout(void* arg, grpc_error_handle error);
@@ -58,11 +62,9 @@ class Chttp2Connector : public SubchannelConnector {
Result* result_ = nullptr;
grpc_closure* notify_ = nullptr;
bool shutdown_ = false;
- bool connecting_ = false;
// Holds the endpoint when first created before being handed off to
// the handshake manager, and then again after handshake is done.
grpc_endpoint* endpoint_ = nullptr;
- grpc_closure connected_;
grpc_closure on_receive_settings_;
grpc_timer timer_;
grpc_closure on_timeout_;
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/server/chttp2_server.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/server/chttp2_server.cc
index a2dbdd3d4a..dd178342b7 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/server/chttp2_server.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/server/chttp2_server.cc
@@ -21,52 +21,75 @@
#include "src/core/ext/transport/chttp2/server/chttp2_server.h"
#include <inttypes.h>
-#include <limits.h>
#include <string.h>
+#include <algorithm>
+#include <map>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
#include <vector>
-#include "y_absl/strings/match.h"
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/strings/strip.h"
+#include "y_absl/types/optional.h"
#include <grpc/grpc.h>
#include <grpc/grpc_posix.h>
#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/sync.h>
-#include "src/core/ext/filters/http/server/http_server_filter.h"
#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
+#include "src/core/ext/transport/chttp2/transport/frame.h"
#include "src/core/ext/transport/chttp2/transport/internal.h"
#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/handshaker.h"
+#include "src/core/lib/channel/channelz.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/event_engine/channel_args_endpoint_config.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/iomgr/pollset_set.h"
#include "src/core/lib/iomgr/resolve_address.h"
+#include "src/core/lib/iomgr/resolved_address.h"
#include "src/core/lib/iomgr/tcp_server.h"
+#include "src/core/lib/iomgr/timer.h"
#include "src/core/lib/iomgr/unix_sockets_posix.h"
-#include "src/core/lib/resource_quota/api.h"
#include "src/core/lib/resource_quota/memory_quota.h"
-#include "src/core/lib/security/context/security_context.h"
+#include "src/core/lib/resource_quota/resource_quota.h"
#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/credentials/insecure/insecure_credentials.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/server.h"
#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/transport/handshaker.h"
+#include "src/core/lib/transport/handshaker_registry.h"
+#include "src/core/lib/transport/transport.h"
+#include "src/core/lib/transport/transport_fwd.h"
#include "src/core/lib/uri/uri_parser.h"
#ifdef GPR_SUPPORT_CHANNELS_FROM_FD
-
+#include "src/core/lib/iomgr/ev_posix.h"
#include "src/core/lib/iomgr/exec_ctx.h"
-#include "src/core/lib/iomgr/tcp_posix.h"
-#include "src/core/lib/surface/completion_queue.h"
-
+#include "src/core/lib/iomgr/tcp_client_posix.h"
#endif // GPR_SUPPORT_CHANNELS_FROM_FD
namespace grpc_core {
@@ -78,16 +101,16 @@ const char kUnixAbstractUriPrefix[] = "unix-abstract:";
class Chttp2ServerListener : public Server::ListenerInterface {
public:
static grpc_error_handle Create(Server* server, grpc_resolved_address* addr,
- grpc_channel_args* args,
+ const ChannelArgs& args,
Chttp2ServerArgsModifier args_modifier,
int* port_num);
static grpc_error_handle CreateWithAcceptor(
- Server* server, const char* name, grpc_channel_args* args,
+ Server* server, const char* name, const ChannelArgs& args,
Chttp2ServerArgsModifier args_modifier);
// Do not instantiate directly. Use one of the factory methods above.
- Chttp2ServerListener(Server* server, grpc_channel_args* args,
+ Chttp2ServerListener(Server* server, const ChannelArgs& args,
Chttp2ServerArgsModifier args_modifier);
~Chttp2ServerListener() override;
@@ -126,15 +149,16 @@ class Chttp2ServerListener : public Server::ListenerInterface {
HandshakingState(RefCountedPtr<ActiveConnection> connection_ref,
grpc_pollset* accepting_pollset,
grpc_tcp_server_acceptor* acceptor,
- grpc_channel_args* args);
+ const ChannelArgs& args);
~HandshakingState() override;
void Orphan() override;
- void Start(grpc_endpoint* endpoint, grpc_channel_args* args);
+ void Start(grpc_endpoint* endpoint, const ChannelArgs& args);
- // Needed to be able to grab an external ref in ActiveConnection::Start()
+ // Needed to be able to grab an external ref in
+ // ActiveConnection::Start()
using InternallyRefCounted<HandshakingState>::Ref;
private:
@@ -156,7 +180,7 @@ class Chttp2ServerListener : public Server::ListenerInterface {
ActiveConnection(grpc_pollset* accepting_pollset,
grpc_tcp_server_acceptor* acceptor,
- grpc_channel_args* args, MemoryOwner memory_owner);
+ const ChannelArgs& args, MemoryOwner memory_owner);
~ActiveConnection() override;
void Orphan() override;
@@ -164,7 +188,7 @@ class Chttp2ServerListener : public Server::ListenerInterface {
void SendGoAway();
void Start(RefCountedPtr<Chttp2ServerListener> listener,
- grpc_endpoint* endpoint, grpc_channel_args* args);
+ grpc_endpoint* endpoint, const ChannelArgs& args);
// Needed to be able to grab an external ref in
// Chttp2ServerListener::OnAccept()
@@ -179,8 +203,8 @@ class Chttp2ServerListener : public Server::ListenerInterface {
// Set by HandshakingState before the handshaking begins and reset when
// handshaking is done.
OrphanablePtr<HandshakingState> handshaking_state_ Y_ABSL_GUARDED_BY(&mu_);
- // Set by HandshakingState when handshaking is done and a valid transport is
- // created.
+ // Set by HandshakingState when handshaking is done and a valid transport
+ // is created.
grpc_chttp2_transport* transport_ Y_ABSL_GUARDED_BY(&mu_) = nullptr;
grpc_closure on_close_;
grpc_timer drain_grace_timer_;
@@ -206,11 +230,11 @@ class Chttp2ServerListener : public Server::ListenerInterface {
grpc_closure* destroy_done);
// The interface required by RefCountedPtr<> has been manually implemented
- // here to take a ref on tcp_server_ instead. Note that, the handshaker needs
- // tcp_server_ to exist for the lifetime of the handshake since it's needed by
- // acceptor. Sharing refs between the listener and tcp_server_ is just an
- // optimization to avoid taking additional refs on the listener, since
- // TcpServerShutdownComplete already holds a ref to the listener.
+ // here to take a ref on tcp_server_ instead. Note that, the handshaker
+ // needs tcp_server_ to exist for the lifetime of the handshake since it's
+ // needed by acceptor. Sharing refs between the listener and tcp_server_ is
+ // just an optimization to avoid taking additional refs on the listener,
+ // since TcpServerShutdownComplete already holds a ref to the listener.
void IncrementRefCount() { grpc_tcp_server_ref(tcp_server_); }
void IncrementRefCount(const DebugLocation& /* location */,
const char* /* reason */) {
@@ -237,7 +261,7 @@ class Chttp2ServerListener : public Server::ListenerInterface {
grpc_resolved_address resolved_address_;
Chttp2ServerArgsModifier const args_modifier_;
ConfigFetcherWatcher* config_fetcher_watcher_ = nullptr;
- grpc_channel_args* args_;
+ ChannelArgs args_;
Mutex mu_;
RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
connection_manager_ Y_ABSL_GUARDED_BY(mu_);
@@ -300,7 +324,7 @@ void Chttp2ServerListener::ConfigFetcherWatcher::UpdateConnectionManager(
int port_temp;
grpc_error_handle error = grpc_tcp_server_add_port(
listener_->tcp_server_, &listener_->resolved_address_, &port_temp);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
GRPC_ERROR_UNREF(error);
gpr_log(GPR_ERROR, "Error adding port to server: %s",
grpc_error_std_string(error).c_str());
@@ -323,8 +347,8 @@ void Chttp2ServerListener::ConfigFetcherWatcher::StopServing() {
listener_->is_serving_ = false;
connections = std::move(listener_->connections_);
}
- // Send GOAWAYs on the transports so that they disconnected when existing RPCs
- // finish.
+ // Send GOAWAYs on the transports so that they disconnected when existing
+ // RPCs finish.
for (auto& connection : connections) {
connection.first->SendGoAway();
}
@@ -334,17 +358,18 @@ void Chttp2ServerListener::ConfigFetcherWatcher::StopServing() {
// Chttp2ServerListener::ActiveConnection::HandshakingState
//
-Timestamp GetConnectionDeadline(const grpc_channel_args* args) {
- auto timeout_ms = Duration::Milliseconds(
- grpc_channel_args_find_integer(args, GRPC_ARG_SERVER_HANDSHAKE_TIMEOUT_MS,
- {120 * GPR_MS_PER_SEC, 1, INT_MAX}));
- return ExecCtx::Get()->Now() + timeout_ms;
+Timestamp GetConnectionDeadline(const ChannelArgs& args) {
+ return Timestamp::Now() +
+ std::max(
+ Duration::Milliseconds(1),
+ args.GetDurationFromIntMillis(GRPC_ARG_SERVER_HANDSHAKE_TIMEOUT_MS)
+ .value_or(Duration::Seconds(120)));
}
Chttp2ServerListener::ActiveConnection::HandshakingState::HandshakingState(
RefCountedPtr<ActiveConnection> connection_ref,
grpc_pollset* accepting_pollset, grpc_tcp_server_acceptor* acceptor,
- grpc_channel_args* args)
+ const ChannelArgs& args)
: connection_(std::move(connection_ref)),
accepting_pollset_(accepting_pollset),
acceptor_(acceptor),
@@ -374,7 +399,7 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::Orphan() {
}
void Chttp2ServerListener::ActiveConnection::HandshakingState::Start(
- grpc_endpoint* endpoint, grpc_channel_args* args) {
+ grpc_endpoint* endpoint, const ChannelArgs& channel_args) {
Ref().release(); // Held by OnHandshakeDone
RefCountedPtr<HandshakeManager> handshake_mgr;
{
@@ -382,7 +407,7 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::Start(
if (handshake_mgr_ == nullptr) return;
handshake_mgr = handshake_mgr_;
}
- handshake_mgr->DoHandshake(endpoint, args, deadline_, acceptor_,
+ handshake_mgr->DoHandshake(endpoint, channel_args, deadline_, acceptor_,
OnHandshakeDone, this);
}
@@ -421,11 +446,11 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone(
bool cleanup_connection = false;
{
MutexLock connection_lock(&self->connection_->mu_);
- if (error != GRPC_ERROR_NONE || self->connection_->shutdown_) {
+ if (!GRPC_ERROR_IS_NONE(error) || self->connection_->shutdown_) {
TString error_str = grpc_error_std_string(error);
gpr_log(GPR_DEBUG, "Handshaking failed: %s", error_str.c_str());
cleanup_connection = true;
- if (error == GRPC_ERROR_NONE && args->endpoint != nullptr) {
+ if (GRPC_ERROR_IS_NONE(error) && args->endpoint != nullptr) {
// We were shut down or stopped serving after handshaking completed
// successfully, so destroy the endpoint here.
// TODO(ctiller): It is currently necessary to shutdown endpoints
@@ -434,7 +459,6 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone(
// point this can be removed.
grpc_endpoint_shutdown(args->endpoint, GRPC_ERROR_NONE);
grpc_endpoint_destroy(args->endpoint);
- grpc_channel_args_destroy(args->args);
grpc_slice_buffer_destroy_internal(args->read_buffer);
gpr_free(args->read_buffer);
}
@@ -449,7 +473,7 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone(
self->connection_->listener_->server_->SetupTransport(
transport, self->accepting_pollset_, args->args,
grpc_chttp2_transport_get_socket_node(transport));
- if (channel_init_err == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(channel_init_err)) {
// Use notify_on_receive_settings callback to enforce the
// handshake deadline.
// Note: The reinterpret_cast<>s here are safe, because
@@ -465,9 +489,9 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone(
self->Ref().release(); // Held by OnReceiveSettings().
GRPC_CLOSURE_INIT(&self->on_receive_settings_, OnReceiveSettings,
self, grpc_schedule_on_exec_ctx);
- // If the listener has been configured with a config fetcher, we need
- // to watch on the transport being closed so that we can an updated
- // list of active connections.
+ // If the listener has been configured with a config fetcher, we
+ // need to watch on the transport being closed so that we can an
+ // updated list of active connections.
grpc_closure* on_close = nullptr;
if (self->connection_->listener_->config_fetcher_watcher_ !=
nullptr) {
@@ -482,7 +506,6 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone(
grpc_chttp2_transport_start_reading(transport, args->read_buffer,
&self->on_receive_settings_,
on_close);
- grpc_channel_args_destroy(args->args);
self->Ref().release(); // Held by OnTimeout().
GRPC_CLOSURE_INIT(&self->on_timeout_, OnTimeout, self,
grpc_schedule_on_exec_ctx);
@@ -496,7 +519,6 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone(
grpc_slice_buffer_destroy_internal(args->read_buffer);
gpr_free(args->read_buffer);
cleanup_connection = true;
- grpc_channel_args_destroy(args->args);
}
} else {
cleanup_connection = true;
@@ -530,7 +552,7 @@ void Chttp2ServerListener::ActiveConnection::HandshakingState::OnHandshakeDone(
Chttp2ServerListener::ActiveConnection::ActiveConnection(
grpc_pollset* accepting_pollset, grpc_tcp_server_acceptor* acceptor,
- grpc_channel_args* args, MemoryOwner memory_owner)
+ const ChannelArgs& args, MemoryOwner memory_owner)
: handshaking_state_(memory_owner.MakeOrphanable<HandshakingState>(
Ref(), accepting_pollset, acceptor, args)) {
GRPC_CLOSURE_INIT(&on_close_, ActiveConnection::OnClose, this,
@@ -564,13 +586,16 @@ void Chttp2ServerListener::ActiveConnection::SendGoAway() {
Ref().release(); // Ref held by OnDrainGraceTimeExpiry
GRPC_CLOSURE_INIT(&on_drain_grace_time_expiry_, OnDrainGraceTimeExpiry,
this, nullptr);
- grpc_timer_init(&drain_grace_timer_,
- ExecCtx::Get()->Now() +
- Duration::Milliseconds(grpc_channel_args_find_integer(
- listener_->args_,
- GRPC_ARG_SERVER_CONFIG_CHANGE_DRAIN_GRACE_TIME_MS,
- {10 * 60 * GPR_MS_PER_SEC, 0, INT_MAX})),
- &on_drain_grace_time_expiry_);
+ grpc_timer_init(
+ &drain_grace_timer_,
+ Timestamp::Now() +
+ std::max(
+ Duration::Zero(),
+ listener_->args_
+ .GetDurationFromIntMillis(
+ GRPC_ARG_SERVER_CONFIG_CHANGE_DRAIN_GRACE_TIME_MS)
+ .value_or(Duration::Minutes(10))),
+ &on_drain_grace_time_expiry_);
drain_grace_timer_expiry_callback_pending_ = true;
shutdown_ = true;
}
@@ -585,7 +610,7 @@ void Chttp2ServerListener::ActiveConnection::SendGoAway() {
void Chttp2ServerListener::ActiveConnection::Start(
RefCountedPtr<Chttp2ServerListener> listener, grpc_endpoint* endpoint,
- grpc_channel_args* args) {
+ const ChannelArgs& args) {
RefCountedPtr<HandshakingState> handshaking_state_ref;
listener_ = std::move(listener);
{
@@ -605,8 +630,8 @@ void Chttp2ServerListener::ActiveConnection::OnClose(
{
MutexLock listener_lock(&self->listener_->mu_);
MutexLock connection_lock(&self->mu_);
- // The node was already deleted from the connections_ list if the connection
- // is shutdown.
+ // The node was already deleted from the connections_ list if the
+ // connection is shutdown.
if (!self->shutdown_) {
auto it = self->listener_->connections_.find(self);
if (it != self->listener_->connections_.end()) {
@@ -628,7 +653,7 @@ void Chttp2ServerListener::ActiveConnection::OnDrainGraceTimeExpiry(
ActiveConnection* self = static_cast<ActiveConnection*>(arg);
// If the drain_grace_timer_ was not cancelled, disconnect the transport
// immediately.
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
grpc_chttp2_transport* transport = nullptr;
{
MutexLock lock(&self->mu_);
@@ -647,7 +672,7 @@ void Chttp2ServerListener::ActiveConnection::OnDrainGraceTimeExpiry(
//
grpc_error_handle Chttp2ServerListener::Create(
- Server* server, grpc_resolved_address* addr, grpc_channel_args* args,
+ Server* server, grpc_resolved_address* addr, const ChannelArgs& args,
Chttp2ServerArgsModifier args_modifier, int* port_num) {
Chttp2ServerListener* listener = nullptr;
// The bulk of this method is inside of a lambda to make cleanup
@@ -656,31 +681,37 @@ grpc_error_handle Chttp2ServerListener::Create(
grpc_error_handle error = GRPC_ERROR_NONE;
// Create Chttp2ServerListener.
listener = new Chttp2ServerListener(server, args, args_modifier);
- error = grpc_tcp_server_create(&listener->tcp_server_shutdown_complete_,
- args, &listener->tcp_server_);
- if (error != GRPC_ERROR_NONE) return error;
+ error = grpc_tcp_server_create(
+ &listener->tcp_server_shutdown_complete_,
+ grpc_event_engine::experimental::ChannelArgsEndpointConfig(args),
+ &listener->tcp_server_);
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
if (server->config_fetcher() != nullptr) {
listener->resolved_address_ = *addr;
// TODO(yashykt): Consider binding so as to be able to return the port
// number.
} else {
error = grpc_tcp_server_add_port(listener->tcp_server_, addr, port_num);
- if (error != GRPC_ERROR_NONE) return error;
+ if (!GRPC_ERROR_IS_NONE(error)) return error;
}
// Create channelz node.
- if (grpc_channel_args_find_bool(args, GRPC_ARG_ENABLE_CHANNELZ,
- GRPC_ENABLE_CHANNELZ_DEFAULT)) {
- TString string_address = grpc_sockaddr_to_uri(addr);
+ if (args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
+ .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
+ auto string_address = grpc_sockaddr_to_uri(addr);
+ if (!string_address.ok()) {
+ return GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ string_address.status().ToString());
+ }
listener->channelz_listen_socket_ =
MakeRefCounted<channelz::ListenSocketNode>(
- string_address.c_str(),
- y_absl::StrFormat("chttp2 listener %s", string_address.c_str()));
+ *string_address,
+ y_absl::StrCat("chttp2 listener ", *string_address));
}
// Register with the server only upon success
server->AddListener(OrphanablePtr<Server::ListenerInterface>(listener));
return GRPC_ERROR_NONE;
}();
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
if (listener != nullptr) {
if (listener->tcp_server_ != nullptr) {
// listener is deleted when tcp_server_ is shutdown.
@@ -688,39 +719,38 @@ grpc_error_handle Chttp2ServerListener::Create(
} else {
delete listener;
}
- } else {
- grpc_channel_args_destroy(args);
}
}
return error;
}
grpc_error_handle Chttp2ServerListener::CreateWithAcceptor(
- Server* server, const char* name, grpc_channel_args* args,
+ Server* server, const char* name, const ChannelArgs& args,
Chttp2ServerArgsModifier args_modifier) {
Chttp2ServerListener* listener =
new Chttp2ServerListener(server, args, args_modifier);
grpc_error_handle error = grpc_tcp_server_create(
- &listener->tcp_server_shutdown_complete_, args, &listener->tcp_server_);
- if (error != GRPC_ERROR_NONE) {
+ &listener->tcp_server_shutdown_complete_,
+ grpc_event_engine::experimental::ChannelArgsEndpointConfig(args),
+ &listener->tcp_server_);
+ if (!GRPC_ERROR_IS_NONE(error)) {
delete listener;
return error;
}
// TODO(yangg) channelz
- TcpServerFdHandler** arg_val =
- grpc_channel_args_find_pointer<TcpServerFdHandler*>(args, name);
+ TcpServerFdHandler** arg_val = args.GetPointer<TcpServerFdHandler*>(name);
*arg_val = grpc_tcp_server_create_fd_handler(listener->tcp_server_);
server->AddListener(OrphanablePtr<Server::ListenerInterface>(listener));
return GRPC_ERROR_NONE;
}
Chttp2ServerListener::Chttp2ServerListener(
- Server* server, grpc_channel_args* args,
+ Server* server, const ChannelArgs& args,
Chttp2ServerArgsModifier args_modifier)
: server_(server),
args_modifier_(args_modifier),
args_(args),
- memory_quota_(ResourceQuotaFromChannelArgs(args)->memory_quota()) {
+ memory_quota_(args.GetObject<ResourceQuota>()->memory_quota()) {
GRPC_CLOSURE_INIT(&tcp_server_shutdown_complete_, TcpServerShutdownComplete,
this, grpc_schedule_on_exec_ctx);
}
@@ -733,7 +763,6 @@ Chttp2ServerListener::~Chttp2ServerListener() {
ExecCtx::Run(DEBUG_LOCATION, on_destroy_done_, GRPC_ERROR_NONE);
ExecCtx::Get()->Flush();
}
- grpc_channel_args_destroy(args_);
}
/* Server callback: start listening on our ports */
@@ -743,7 +772,8 @@ void Chttp2ServerListener::Start(
auto watcher = y_absl::make_unique<ConfigFetcherWatcher>(Ref());
config_fetcher_watcher_ = watcher.get();
server_->config_fetcher()->StartWatch(
- grpc_sockaddr_to_string(&resolved_address_, false), std::move(watcher));
+ grpc_sockaddr_to_string(&resolved_address_, false).value(),
+ std::move(watcher));
} else {
{
MutexLock lock(&mu_);
@@ -767,8 +797,7 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
grpc_pollset* accepting_pollset,
grpc_tcp_server_acceptor* acceptor) {
Chttp2ServerListener* self = static_cast<Chttp2ServerListener*>(arg);
- grpc_channel_args* args = self->args_;
- grpc_channel_args* args_to_destroy = nullptr;
+ ChannelArgs args = self->args_;
RefCountedPtr<grpc_server_config_fetcher::ConnectionManager>
connection_manager;
{
@@ -787,11 +816,7 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
endpoint_cleanup(error);
return;
}
- // TODO(yashykt): Maybe combine the following two arg modifiers into a
- // single one.
- // Make a copy of the args so as to avoid destroying the original.
- args = grpc_channel_args_copy(args);
- y_absl::StatusOr<grpc_channel_args*> args_result =
+ y_absl::StatusOr<ChannelArgs> args_result =
connection_manager->UpdateChannelArgsForConnection(args, tcp);
if (!args_result.ok()) {
gpr_log(GPR_DEBUG, "Closing connection: %s",
@@ -802,14 +827,12 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
}
grpc_error_handle error = GRPC_ERROR_NONE;
args = self->args_modifier_(*args_result, &error);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_DEBUG, "Closing connection: %s",
grpc_error_std_string(error).c_str());
endpoint_cleanup(error);
- grpc_channel_args_destroy(args);
return;
}
- args_to_destroy = args;
}
auto memory_owner = self->memory_quota_->CreateMemoryOwner(
y_absl::StrCat(grpc_endpoint_get_peer(tcp), ":server_channel"));
@@ -841,7 +864,6 @@ void Chttp2ServerListener::OnAccept(void* arg, grpc_endpoint* tcp,
} else {
connection_ref->Start(std::move(listener_ref), tcp, args);
}
- grpc_channel_args_destroy(args_to_destroy);
}
void Chttp2ServerListener::TcpServerShutdownComplete(void* arg,
@@ -887,7 +909,7 @@ void Chttp2ServerListener::Orphan() {
//
grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
- grpc_channel_args* args,
+ const ChannelArgs& args,
Chttp2ServerArgsModifier args_modifier,
int* port_num) {
if (addr == nullptr) {
@@ -913,7 +935,8 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
resolved_or =
grpc_resolve_unix_abstract_domain_address(parsed_addr_unprefixed);
} else {
- resolved_or = GetDNSResolver()->ResolveNameBlocking(parsed_addr, "https");
+ resolved_or =
+ GetDNSResolver()->LookupHostnameBlocking(parsed_addr, "https");
}
if (!resolved_or.ok()) {
return absl_status_to_grpc_error(resolved_or.status());
@@ -926,10 +949,9 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
grpc_sockaddr_set_port(&addr, *port_num);
}
int port_temp = -1;
- error = Chttp2ServerListener::Create(server, &addr,
- grpc_channel_args_copy(args),
- args_modifier, &port_temp);
- if (error != GRPC_ERROR_NONE) {
+ error = Chttp2ServerListener::Create(server, &addr, args, args_modifier,
+ &port_temp);
+ if (!GRPC_ERROR_IS_NONE(error)) {
error_list.push_back(error);
} else {
if (*port_num == -1) {
@@ -940,9 +962,9 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
}
}
if (error_list.size() == resolved_or->size()) {
- TString msg =
- y_absl::StrFormat("No address added out of total %" PRIuPTR " resolved",
- resolved_or->size());
+ TString msg = y_absl::StrFormat(
+ "No address added out of total %" PRIuPTR " resolved for '%s'",
+ resolved_or->size(), addr);
return GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(
msg.c_str(), error_list.data(), error_list.size());
} else if (!error_list.empty()) {
@@ -961,19 +983,15 @@ grpc_error_handle Chttp2ServerAddPort(Server* server, const char* addr,
for (const grpc_error_handle& error : error_list) {
GRPC_ERROR_UNREF(error);
}
- grpc_channel_args_destroy(args);
- if (error != GRPC_ERROR_NONE) *port_num = 0;
+ if (!GRPC_ERROR_IS_NONE(error)) *port_num = 0;
return error;
}
-} // namespace grpc_core
-
namespace {
-grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args,
- grpc_error_handle* error) {
- grpc_server_credentials* server_credentials =
- grpc_find_server_credentials_in_args(args);
+ChannelArgs ModifyArgsForConnection(const ChannelArgs& args,
+ grpc_error_handle* error) {
+ auto* server_credentials = args.GetObject<grpc_server_credentials>();
if (server_credentials == nullptr) {
*error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Could not find server credentials");
@@ -983,18 +1001,14 @@ grpc_channel_args* ModifyArgsForConnection(grpc_channel_args* args,
if (security_connector == nullptr) {
*error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
y_absl::StrCat("Unable to create secure server with credentials of type ",
- server_credentials->type()));
+ server_credentials->type().name()));
return args;
}
- grpc_arg arg_to_add =
- grpc_security_connector_to_arg(security_connector.get());
- grpc_channel_args* new_args =
- grpc_channel_args_copy_and_add(args, &arg_to_add, 1);
- grpc_channel_args_destroy(args);
- return new_args;
+ return args.SetObject(security_connector);
}
} // namespace
+} // namespace grpc_core
int grpc_server_add_http2_port(grpc_server* server, const char* addr,
grpc_server_credentials* creds) {
@@ -1002,8 +1016,8 @@ int grpc_server_add_http2_port(grpc_server* server, const char* addr,
grpc_error_handle err = GRPC_ERROR_NONE;
grpc_core::RefCountedPtr<grpc_server_security_connector> sc;
int port_num = 0;
- grpc_channel_args* args = nullptr;
grpc_core::Server* core_server = grpc_core::Server::FromC(server);
+ grpc_core::ChannelArgs args = core_server->channel_args();
GRPC_API_TRACE("grpc_server_add_http2_port(server=%p, addr=%s, creds=%p)", 3,
(server, addr, creds));
// Create security context.
@@ -1024,29 +1038,23 @@ int grpc_server_add_http2_port(grpc_server* server, const char* addr,
// fetchers need to be registered before adding ports to the server.
if (core_server->config_fetcher() != nullptr) {
// Create channel args.
- grpc_arg arg_to_add = grpc_server_credentials_to_arg(creds);
- args = grpc_channel_args_copy_and_add(core_server->channel_args(),
- &arg_to_add, 1);
+ args = args.SetObject(creds->Ref());
} else {
- sc = creds->create_security_connector(nullptr);
+ sc = creds->create_security_connector(grpc_core::ChannelArgs());
if (sc == nullptr) {
err = GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
"Unable to create secure server with credentials of type ",
- creds->type()));
+ creds->type().name()));
goto done;
}
- grpc_arg args_to_add[2];
- args_to_add[0] = grpc_server_credentials_to_arg(creds);
- args_to_add[1] = grpc_security_connector_to_arg(sc.get());
- args = grpc_channel_args_copy_and_add(
- core_server->channel_args(), args_to_add, GPR_ARRAY_SIZE(args_to_add));
+ args = args.SetObject(creds->Ref()).SetObject(sc);
}
// Add server port.
- err = grpc_core::Chttp2ServerAddPort(core_server, addr, args,
- ModifyArgsForConnection, &port_num);
+ err = grpc_core::Chttp2ServerAddPort(
+ core_server, addr, args, grpc_core::ModifyArgsForConnection, &port_num);
done:
sc.reset(DEBUG_LOCATION, "server");
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
gpr_log(GPR_ERROR, "%s", grpc_error_std_string(err).c_str());
GRPC_ERROR_UNREF(err);
@@ -1059,25 +1067,27 @@ void grpc_server_add_channel_from_fd(grpc_server* server, int fd,
grpc_server_credentials* creds) {
// For now, we only support insecure server credentials
if (creds == nullptr ||
- strcmp(creds->type(), GRPC_CREDENTIALS_TYPE_INSECURE) != 0) {
+ creds->type() != grpc_core::InsecureServerCredentials::Type()) {
gpr_log(GPR_ERROR, "Failed to create channel due to invalid creds");
return;
}
grpc_core::ExecCtx exec_ctx;
grpc_core::Server* core_server = grpc_core::Server::FromC(server);
- const grpc_channel_args* server_args = core_server->channel_args();
+ grpc_core::ChannelArgs server_args = core_server->channel_args();
TString name = y_absl::StrCat("fd:", fd);
auto memory_quota =
- grpc_core::ResourceQuotaFromChannelArgs(server_args)->memory_quota();
- grpc_endpoint* server_endpoint = grpc_tcp_create(
- grpc_fd_create(fd, name.c_str(), true), server_args, name);
+ server_args.GetObject<grpc_core::ResourceQuota>()->memory_quota();
+ grpc_endpoint* server_endpoint = grpc_tcp_create_from_fd(
+ grpc_fd_create(fd, name.c_str(), true),
+ grpc_event_engine::experimental::ChannelArgsEndpointConfig(server_args),
+ name);
grpc_transport* transport = grpc_create_chttp2_transport(
server_args, server_endpoint, false /* is_client */
);
grpc_error_handle error =
core_server->SetupTransport(transport, nullptr, server_args, nullptr);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
for (grpc_pollset* pollset : core_server->pollsets()) {
grpc_endpoint_add_to_pollset(server_endpoint, pollset);
}
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/server/chttp2_server.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/server/chttp2_server.h
index e4e6b7cc97..5db3a4f440 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/server/chttp2_server.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/server/chttp2_server.h
@@ -21,8 +21,9 @@
#include <grpc/support/port_platform.h>
-#include <grpc/impl/codegen/grpc_types.h>
+#include <functional>
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/surface/server.h"
@@ -31,15 +32,14 @@ namespace grpc_core {
// A function to modify channel args for a listening addr:port. Note that this
// is used to create a security connector for listeners when the servers are
// configured with a config fetcher. Not invoked if there is no config fetcher
-// added to the server. Takes ownership of the args. Caller takes ownership of
-// returned args. On failure, the error parameter will be set.
+// added to the server. On failure, the error parameter will be set.
using Chttp2ServerArgsModifier =
- std::function<grpc_channel_args*(grpc_channel_args*, grpc_error_handle*)>;
+ std::function<ChannelArgs(const ChannelArgs&, grpc_error_handle*)>;
/// Adds a port to \a server. Sets \a port_num to the port number.
/// Takes ownership of \a args.
grpc_error_handle Chttp2ServerAddPort(
- Server* server, const char* addr, grpc_channel_args* args,
+ Server* server, const char* addr, const ChannelArgs& args,
Chttp2ServerArgsModifier connection_args_modifier, int* port_num);
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_decoder.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_decoder.cc
index 595210addc..04cb372352 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_decoder.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_decoder.cc
@@ -20,12 +20,12 @@
#include "src/core/ext/transport/chttp2/transport/bin_decoder.h"
+#include "y_absl/base/attributes.h"
+
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/lib/slice/slice_refcount.h"
static uint8_t decode_table[] = {
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_decoder.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_decoder.h
index a2d614207f..e494b46f20 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_decoder.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_decoder.h
@@ -21,7 +21,8 @@
#include <grpc/support/port_platform.h>
-#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
#include <grpc/slice.h>
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_encoder.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_encoder.cc
index cd92f726aa..248d89c1da 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_encoder.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/bin_encoder.cc
@@ -20,6 +20,7 @@
#include "src/core/ext/transport/chttp2/transport/bin_encoder.h"
+#include <stdint.h>
#include <string.h>
#include <grpc/support/log.h>
@@ -97,7 +98,7 @@ grpc_slice grpc_chttp2_huffman_compress(const grpc_slice& input) {
const uint8_t* in;
uint8_t* out;
grpc_slice output;
- uint32_t temp = 0;
+ uint64_t temp = 0;
uint32_t temp_length = 0;
nbits = 0;
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
index 66eef09e0b..26747dab2f 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.cc
@@ -20,49 +20,77 @@
#include <inttypes.h>
#include <limits.h>
-#include <math.h>
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
+#include <algorithm>
+#include <memory>
+#include <new>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/base/attributes.h"
+#include "y_absl/status/status.h"
+#include "y_absl/strings/cord.h"
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+#include "y_absl/types/variant.h"
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/slice_buffer.h>
#include <grpc/status.h>
#include <grpc/support/alloc.h>
+#include <grpc/support/atm.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
#include "src/core/ext/transport/chttp2/transport/context_list.h"
+#include "src/core/ext/transport/chttp2/transport/flow_control.h"
+#include "src/core/ext/transport/chttp2/transport/frame.h"
#include "src/core/ext/transport/chttp2/transport/frame_data.h"
+#include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
+#include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
+#include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
+#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
#include "src/core/ext/transport/chttp2/transport/internal.h"
+#include "src/core/ext/transport/chttp2/transport/stream_map.h"
#include "src/core/ext/transport/chttp2/transport/varint.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/debug/stats.h"
-#include "src/core/lib/gpr/env.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/experiments/experiments.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/bitset.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/status_helper.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/http/parser.h"
-#include "src/core/lib/iomgr/executor.h"
-#include "src/core/lib/iomgr/iomgr.h"
+#include "src/core/lib/iomgr/combiner.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/profiling/timers.h"
-#include "src/core/lib/resource_quota/api.h"
+#include "src/core/lib/promise/poll.h"
+#include "src/core/lib/resource_quota/arena.h"
+#include "src/core/lib/resource_quota/memory_quota.h"
+#include "src/core/lib/resource_quota/resource_quota.h"
#include "src/core/lib/resource_quota/trace.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/slice/slice_buffer.h"
#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/lib/slice/slice_refcount.h"
+#include "src/core/lib/transport/bdp_estimator.h"
+#include "src/core/lib/transport/connectivity_state.h"
#include "src/core/lib/transport/error_utils.h"
#include "src/core/lib/transport/http2_errors.h"
+#include "src/core/lib/transport/metadata_batch.h"
#include "src/core/lib/transport/status_conversion.h"
-#include "src/core/lib/transport/timeout_encoding.h"
#include "src/core/lib/transport/transport.h"
#include "src/core/lib/transport/transport_impl.h"
-#include "src/core/lib/uri/uri_parser.h"
-
-GPR_GLOBAL_CONFIG_DEFINE_BOOL(
- grpc_experimental_disable_flow_control, false,
- "If set, flow control will be effectively disabled. Max out all values and "
- "assume the remote peer does the same. Thus we can ignore any flow control "
- "bookkeeping, error checking, and decision making");
#define DEFAULT_CONNECTION_WINDOW_TARGET (1024 * 1024)
#define MAX_WINDOW 0x7fffffffu
@@ -116,8 +144,6 @@ static void read_action(void* t, grpc_error_handle error);
static void read_action_locked(void* t, grpc_error_handle error);
static void continue_read_action_locked(grpc_chttp2_transport* t);
-static void complete_fetch(void* gs, grpc_error_handle error);
-static void complete_fetch_locked(void* gs, grpc_error_handle error);
// Set a transport level setting, and push it to our peer
static void queue_setting_update(grpc_chttp2_transport* t,
grpc_chttp2_setting_id id, uint32_t value);
@@ -167,8 +193,6 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error);
static void keepalive_watchdog_fired(void* arg, grpc_error_handle error);
static void keepalive_watchdog_fired_locked(void* arg, grpc_error_handle error);
-static void reset_byte_stream(void* arg, grpc_error_handle error);
-
namespace grpc_core {
namespace {
@@ -245,8 +269,6 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
write_cb_pool = next;
}
- flow_control.Destroy();
-
GRPC_ERROR_UNREF(closed_with_error);
gpr_free(ping_acks);
if (grpc_core::test_only_destruct_callback != nullptr) {
@@ -256,155 +278,128 @@ grpc_chttp2_transport::~grpc_chttp2_transport() {
static const grpc_transport_vtable* get_vtable(void);
-// Returns whether bdp is enabled
-static bool read_channel_args(grpc_chttp2_transport* t,
- const grpc_channel_args* channel_args,
+static void read_channel_args(grpc_chttp2_transport* t,
+ const grpc_core::ChannelArgs& channel_args,
bool is_client) {
- bool enable_bdp = true;
- bool channelz_enabled = GRPC_ENABLE_CHANNELZ_DEFAULT;
- size_t i;
- int j;
-
- for (i = 0; i < channel_args->num_args; i++) {
- if (0 == strcmp(channel_args->args[i].key,
- GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER)) {
- const grpc_integer_options options = {-1, 0, INT_MAX};
- const int value =
- grpc_channel_arg_get_integer(&channel_args->args[i], options);
- if (value >= 0) {
- if ((t->next_stream_id & 1) != (value & 1)) {
- gpr_log(GPR_ERROR, "%s: low bit must be %d on %s",
- GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER, t->next_stream_id & 1,
- is_client ? "client" : "server");
- } else {
- t->next_stream_id = static_cast<uint32_t>(value);
- }
- }
- } else if (0 == strcmp(channel_args->args[i].key,
- GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER)) {
- const grpc_integer_options options = {-1, 0, INT_MAX};
- const int value =
- grpc_channel_arg_get_integer(&channel_args->args[i], options);
- if (value >= 0) {
- t->hpack_compressor.SetMaxUsableSize(value);
- }
- } else if (0 == strcmp(channel_args->args[i].key,
- GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)) {
- t->ping_policy.max_pings_without_data = grpc_channel_arg_get_integer(
- &channel_args->args[i],
- {g_default_max_pings_without_data, 0, INT_MAX});
- } else if (0 == strcmp(channel_args->args[i].key,
- GRPC_ARG_HTTP2_MAX_PING_STRIKES)) {
- t->ping_policy.max_ping_strikes = grpc_channel_arg_get_integer(
- &channel_args->args[i], {g_default_max_ping_strikes, 0, INT_MAX});
- } else if (0 ==
- strcmp(channel_args->args[i].key,
- GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)) {
- t->ping_policy.min_recv_ping_interval_without_data =
- grpc_core::Duration::Milliseconds(grpc_channel_arg_get_integer(
- &channel_args->args[i],
- grpc_integer_options{
- g_default_min_recv_ping_interval_without_data_ms, 0,
- INT_MAX}));
- } else if (0 == strcmp(channel_args->args[i].key,
- GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE)) {
- t->write_buffer_size = static_cast<uint32_t>(grpc_channel_arg_get_integer(
- &channel_args->args[i], {0, 0, MAX_WRITE_BUFFER_SIZE}));
- } else if (0 ==
- strcmp(channel_args->args[i].key, GRPC_ARG_HTTP2_BDP_PROBE)) {
- enable_bdp = grpc_channel_arg_get_bool(&channel_args->args[i], true);
- } else if (0 ==
- strcmp(channel_args->args[i].key, GRPC_ARG_KEEPALIVE_TIME_MS)) {
- const int value = grpc_channel_arg_get_integer(
- &channel_args->args[i],
- grpc_integer_options{t->is_client
- ? g_default_client_keepalive_time_ms
- : g_default_server_keepalive_time_ms,
- 1, INT_MAX});
- t->keepalive_time = value == INT_MAX
- ? grpc_core::Duration::Infinity()
- : grpc_core::Duration::Milliseconds(value);
- } else if (0 == strcmp(channel_args->args[i].key,
- GRPC_ARG_KEEPALIVE_TIMEOUT_MS)) {
- const int value = grpc_channel_arg_get_integer(
- &channel_args->args[i],
- grpc_integer_options{t->is_client
- ? g_default_client_keepalive_timeout_ms
- : g_default_server_keepalive_timeout_ms,
- 0, INT_MAX});
- t->keepalive_timeout = value == INT_MAX
- ? grpc_core::Duration::Infinity()
- : grpc_core::Duration::Milliseconds(value);
- } else if (0 == strcmp(channel_args->args[i].key,
- GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)) {
- t->keepalive_permit_without_calls = static_cast<uint32_t>(
- grpc_channel_arg_get_integer(&channel_args->args[i], {0, 0, 1}));
- } else if (0 == strcmp(channel_args->args[i].key,
- GRPC_ARG_OPTIMIZATION_TARGET)) {
- gpr_log(GPR_INFO, "GRPC_ARG_OPTIMIZATION_TARGET is deprecated");
- } else if (0 ==
- strcmp(channel_args->args[i].key, GRPC_ARG_ENABLE_CHANNELZ)) {
- channelz_enabled = grpc_channel_arg_get_bool(
- &channel_args->args[i], GRPC_ENABLE_CHANNELZ_DEFAULT);
+ const int initial_sequence_number =
+ channel_args.GetInt(GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER).value_or(-1);
+ if (initial_sequence_number > 0) {
+ if ((t->next_stream_id & 1) != (initial_sequence_number & 1)) {
+ gpr_log(GPR_ERROR, "%s: low bit must be %d on %s",
+ GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER, t->next_stream_id & 1,
+ is_client ? "client" : "server");
} else {
- static const struct {
- const char* channel_arg_name;
- grpc_chttp2_setting_id setting_id;
- grpc_integer_options integer_options;
- bool availability[2] /* server, client */;
- } settings_map[] = {{GRPC_ARG_MAX_CONCURRENT_STREAMS,
- GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS,
- {-1, 0, INT32_MAX},
- {true, false}},
- {GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER,
- GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE,
- {-1, 0, INT32_MAX},
- {true, true}},
- {GRPC_ARG_MAX_METADATA_SIZE,
- GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
- {-1, 0, INT32_MAX},
- {true, true}},
- {GRPC_ARG_HTTP2_MAX_FRAME_SIZE,
- GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
- {-1, 16384, 16777215},
- {true, true}},
- {GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY,
- GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA,
- {1, 0, 1},
- {true, true}},
- {GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES,
- GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
- {-1, 5, INT32_MAX},
- {true, true}}};
- for (j = 0; j < static_cast<int> GPR_ARRAY_SIZE(settings_map); j++) {
- if (0 == strcmp(channel_args->args[i].key,
- settings_map[j].channel_arg_name)) {
- if (!settings_map[j].availability[is_client]) {
- gpr_log(GPR_DEBUG, "%s is not available on %s",
- settings_map[j].channel_arg_name,
- is_client ? "clients" : "servers");
- } else {
- int value = grpc_channel_arg_get_integer(
- &channel_args->args[i], settings_map[j].integer_options);
- if (value >= 0) {
- queue_setting_update(t, settings_map[j].setting_id,
- static_cast<uint32_t>(value));
- }
- }
- break;
- }
- }
+ t->next_stream_id = static_cast<uint32_t>(initial_sequence_number);
}
}
- if (channelz_enabled) {
+
+ const int max_hpack_table_size =
+ channel_args.GetInt(GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER).value_or(-1);
+ if (max_hpack_table_size >= 0) {
+ t->hpack_compressor.SetMaxUsableSize(max_hpack_table_size);
+ }
+
+ t->ping_policy.max_pings_without_data =
+ std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)
+ .value_or(g_default_max_pings_without_data));
+ t->ping_policy.max_ping_strikes =
+ std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_MAX_PING_STRIKES)
+ .value_or(g_default_max_ping_strikes));
+ t->ping_policy.min_recv_ping_interval_without_data =
+ std::max(grpc_core::Duration::Zero(),
+ channel_args
+ .GetDurationFromIntMillis(
+ GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS)
+ .value_or(grpc_core::Duration::Milliseconds(
+ g_default_min_recv_ping_interval_without_data_ms)));
+ t->write_buffer_size =
+ std::max(0, channel_args.GetInt(GRPC_ARG_HTTP2_WRITE_BUFFER_SIZE)
+ .value_or(grpc_core::chttp2::kDefaultWindow));
+ t->keepalive_time =
+ std::max(grpc_core::Duration::Milliseconds(1),
+ channel_args.GetDurationFromIntMillis(GRPC_ARG_KEEPALIVE_TIME_MS)
+ .value_or(grpc_core::Duration::Milliseconds(
+ t->is_client ? g_default_client_keepalive_time_ms
+ : g_default_server_keepalive_time_ms)));
+ t->keepalive_timeout = std::max(
+ grpc_core::Duration::Zero(),
+ channel_args.GetDurationFromIntMillis(GRPC_ARG_KEEPALIVE_TIMEOUT_MS)
+ .value_or(grpc_core::Duration::Milliseconds(
+ t->is_client ? g_default_client_keepalive_timeout_ms
+ : g_default_server_keepalive_timeout_ms)));
+ t->keepalive_permit_without_calls =
+ channel_args.GetBool(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS)
+ .value_or(false);
+
+ if (channel_args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
+ .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
t->channelz_socket =
grpc_core::MakeRefCounted<grpc_core::channelz::SocketNode>(
TString(grpc_endpoint_get_local_address(t->ep)), t->peer_string,
y_absl::StrFormat("%s %s", get_vtable()->name, t->peer_string),
- grpc_core::channelz::SocketNode::Security::GetFromChannelArgs(
- channel_args));
+ channel_args
+ .GetObjectRef<grpc_core::channelz::SocketNode::Security>());
+ }
+
+ static const struct {
+ y_absl::string_view channel_arg_name;
+ grpc_chttp2_setting_id setting_id;
+ int default_value;
+ int min;
+ int max;
+ bool availability[2] /* server, client */;
+ } settings_map[] = {{GRPC_ARG_MAX_CONCURRENT_STREAMS,
+ GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS,
+ -1,
+ 0,
+ INT32_MAX,
+ {true, false}},
+ {GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER,
+ GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE,
+ -1,
+ 0,
+ INT32_MAX,
+ {true, true}},
+ {GRPC_ARG_MAX_METADATA_SIZE,
+ GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
+ -1,
+ 0,
+ INT32_MAX,
+ {true, true}},
+ {GRPC_ARG_HTTP2_MAX_FRAME_SIZE,
+ GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
+ -1,
+ 16384,
+ 16777215,
+ {true, true}},
+ {GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY,
+ GRPC_CHTTP2_SETTINGS_GRPC_ALLOW_TRUE_BINARY_METADATA,
+ 1,
+ 0,
+ 1,
+ {true, true}},
+ {GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES,
+ GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
+ -1,
+ 5,
+ INT32_MAX,
+ {true, true}}};
+
+ for (size_t i = 0; i < GPR_ARRAY_SIZE(settings_map); i++) {
+ const auto& setting = settings_map[i];
+ if (setting.availability[is_client]) {
+ const int value = channel_args.GetInt(setting.channel_arg_name)
+ .value_or(setting.default_value);
+ if (value >= 0) {
+ queue_setting_update(t, setting.setting_id,
+ grpc_core::Clamp(value, setting.min, setting.max));
+ }
+ } else if (channel_args.Contains(setting.channel_arg_name)) {
+ gpr_log(GPR_DEBUG, "%s is not available on %s",
+ TString(setting.channel_arg_name).c_str(),
+ is_client ? "clients" : "servers");
+ }
}
- return enable_bdp;
}
static void init_transport_keepalive_settings(grpc_chttp2_transport* t) {
@@ -448,7 +443,7 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
grpc_schedule_on_exec_ctx);
grpc_timer_init(&t->keepalive_ping_timer,
- grpc_core::ExecCtx::Get()->Now() + t->keepalive_time,
+ grpc_core::Timestamp::Now() + t->keepalive_time,
&t->init_keepalive_ping_locked);
} else {
// Use GRPC_CHTTP2_KEEPALIVE_STATE_DISABLED to indicate there are no
@@ -458,13 +453,14 @@ static void init_keepalive_pings_if_enabled(grpc_chttp2_transport* t) {
}
grpc_chttp2_transport::grpc_chttp2_transport(
- const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client)
+ const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep,
+ bool is_client)
: refs(1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_chttp2_refcount)
? "chttp2_refcount"
: nullptr),
ep(ep),
peer_string(grpc_endpoint_get_peer(ep)),
- memory_owner(grpc_core::ResourceQuotaFromChannelArgs(channel_args)
+ memory_owner(channel_args.GetObject<grpc_core::ResourceQuota>()
->memory_quota()
->CreateMemoryOwner(y_absl::StrCat(
grpc_endpoint_get_peer(ep), ":client_transport"))),
@@ -475,6 +471,10 @@ grpc_chttp2_transport::grpc_chttp2_transport(
GRPC_CHANNEL_READY),
is_client(is_client),
next_stream_id(is_client ? 1 : 2),
+ flow_control(
+ peer_string.c_str(),
+ channel_args.GetBool(GRPC_ARG_HTTP2_BDP_PROBE).value_or(true),
+ &memory_owner),
deframe_state(is_client ? GRPC_DTS_FH_0 : GRPC_DTS_CLIENT_PREFIX_0) {
GPR_ASSERT(strlen(GRPC_CHTTP2_CLIENT_CONNECT_STRING) ==
GRPC_CHTTP2_CLIENT_CONNECT_STRLEN);
@@ -516,20 +516,7 @@ grpc_chttp2_transport::grpc_chttp2_transport(
configure_transport_ping_policy(this);
init_transport_keepalive_settings(this);
- bool enable_bdp = true;
- if (channel_args) {
- enable_bdp = read_channel_args(this, channel_args, is_client);
- }
-
- static const bool kEnableFlowControl =
- !GPR_GLOBAL_CONFIG_GET(grpc_experimental_disable_flow_control);
- if (kEnableFlowControl) {
- flow_control.Init<grpc_core::chttp2::TransportFlowControl>(this,
- enable_bdp);
- } else {
- flow_control.Init<grpc_core::chttp2::TransportFlowControlDisabled>(this);
- enable_bdp = false;
- }
+ read_channel_args(this, channel_args, is_client);
// No pings allowed before receiving a header or data frame.
ping_state.pings_before_data_required = 0;
@@ -541,9 +528,9 @@ grpc_chttp2_transport::grpc_chttp2_transport(
init_keepalive_pings_if_enabled(this);
- if (enable_bdp) {
+ if (flow_control.bdp_probe()) {
bdp_ping_blocked = true;
- grpc_chttp2_act_on_flowctl_action(flow_control->PeriodicUpdate(), this,
+ grpc_chttp2_act_on_flowctl_action(flow_control.PeriodicUpdate(), this,
nullptr);
}
@@ -576,13 +563,13 @@ static void close_transport_locked(grpc_chttp2_transport* t,
grpc_error_handle error) {
end_all_the_calls(t, GRPC_ERROR_REF(error));
cancel_pings(t, GRPC_ERROR_REF(error));
- if (t->closed_with_error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(t->closed_with_error)) {
if (!grpc_error_has_clear_grpc_status(error)) {
error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS,
GRPC_STATUS_UNAVAILABLE);
}
if (t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE) {
- if (t->close_transport_on_writes_finished == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(t->close_transport_on_writes_finished)) {
t->close_transport_on_writes_finished =
GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Delayed close due to in-progress write");
@@ -591,7 +578,7 @@ static void close_transport_locked(grpc_chttp2_transport* t,
grpc_error_add_child(t->close_transport_on_writes_finished, error);
return;
}
- GPR_ASSERT(error != GRPC_ERROR_NONE);
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
t->closed_with_error = GRPC_ERROR_REF(error);
connectivity_state_set(t, GRPC_CHANNEL_SHUTDOWN, y_absl::Status(),
"close_transport");
@@ -668,29 +655,23 @@ grpc_chttp2_stream::grpc_chttp2_stream(grpc_chttp2_transport* t,
refcount(refcount),
reffer(this),
initial_metadata_buffer(arena),
- trailing_metadata_buffer(arena) {
+ trailing_metadata_buffer(arena),
+ flow_control(&t->flow_control) {
if (server_data) {
id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(server_data));
*t->accepting_stream = this;
grpc_chttp2_stream_map_add(&t->stream_map, id, this);
post_destructive_reclaimer(t);
}
- if (t->flow_control->flow_control_enabled()) {
- flow_control.Init<grpc_core::chttp2::StreamFlowControl>(
- static_cast<grpc_core::chttp2::TransportFlowControl*>(
- t->flow_control.get()),
- this);
- } else {
- flow_control.Init<grpc_core::chttp2::StreamFlowControlDisabled>();
- }
grpc_slice_buffer_init(&frame_storage);
- grpc_slice_buffer_init(&unprocessed_incoming_frames_buffer);
grpc_slice_buffer_init(&flow_controlled_buffer);
- GRPC_CLOSURE_INIT(&reset_byte_stream, ::reset_byte_stream, this, nullptr);
}
grpc_chttp2_stream::~grpc_chttp2_stream() {
+ grpc_chttp2_list_remove_stalled_by_stream(t, this);
+ grpc_chttp2_list_remove_stalled_by_transport(t, this);
+
if (t->channelz_socket != nullptr) {
if ((t->is_client && eos_received) || (!t->is_client && eos_sent)) {
t->channelz_socket->RecordStreamSucceeded();
@@ -704,11 +685,10 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
GPR_ASSERT(grpc_chttp2_stream_map_find(&t->stream_map, id) == nullptr);
}
- grpc_slice_buffer_destroy_internal(&unprocessed_incoming_frames_buffer);
grpc_slice_buffer_destroy_internal(&frame_storage);
for (int i = 0; i < STREAM_LIST_COUNT; i++) {
- if (GPR_UNLIKELY(included[i])) {
+ if (GPR_UNLIKELY(included.is_set(i))) {
gpr_log(GPR_ERROR, "%s stream %d still included in list %d",
t->is_client ? "client" : "server", id, i);
abort();
@@ -716,7 +696,6 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
}
GPR_ASSERT(send_initial_metadata_finished == nullptr);
- GPR_ASSERT(fetching_send_message == nullptr);
GPR_ASSERT(send_trailing_metadata_finished == nullptr);
GPR_ASSERT(recv_initial_metadata_ready == nullptr);
GPR_ASSERT(recv_message_ready == nullptr);
@@ -724,8 +703,6 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
grpc_slice_buffer_destroy_internal(&flow_controlled_buffer);
GRPC_ERROR_UNREF(read_closed_error);
GRPC_ERROR_UNREF(write_closed_error);
- GRPC_ERROR_UNREF(byte_stream_error);
- flow_control.Destroy();
GRPC_CHTTP2_UNREF_TRANSPORT(t, "stream");
grpc_core::ExecCtx::Run(DEBUG_LOCATION, destroy_stream_arg, GRPC_ERROR_NONE);
}
@@ -733,21 +710,18 @@ grpc_chttp2_stream::~grpc_chttp2_stream() {
static int init_stream(grpc_transport* gt, grpc_stream* gs,
grpc_stream_refcount* refcount, const void* server_data,
grpc_core::Arena* arena) {
- GPR_TIMER_SCOPE("init_stream", 0);
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
new (gs) grpc_chttp2_stream(t, refcount, server_data, arena);
return 0;
}
static void destroy_stream_locked(void* sp, grpc_error_handle /*error*/) {
- GPR_TIMER_SCOPE("destroy_stream", 0);
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(sp);
s->~grpc_chttp2_stream();
}
static void destroy_stream(grpc_transport* gt, grpc_stream* gs,
grpc_closure* then_schedule_closure) {
- GPR_TIMER_SCOPE("destroy_stream", 0);
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
grpc_chttp2_stream* s = reinterpret_cast<grpc_chttp2_stream*>(gs);
@@ -802,7 +776,7 @@ static void set_write_state(grpc_chttp2_transport* t,
// from peer while we had some pending writes)
if (st == GRPC_CHTTP2_WRITE_STATE_IDLE) {
grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &t->run_after_write);
- if (t->close_transport_on_writes_finished != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(t->close_transport_on_writes_finished)) {
grpc_error_handle err = t->close_transport_on_writes_finished;
t->close_transport_on_writes_finished = GRPC_ERROR_NONE;
close_transport_locked(t, err);
@@ -810,82 +784,10 @@ static void set_write_state(grpc_chttp2_transport* t,
}
}
-static void inc_initiate_write_reason(
- grpc_chttp2_initiate_write_reason reason) {
- switch (reason) {
- case GRPC_CHTTP2_INITIATE_WRITE_INITIAL_WRITE:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_INITIAL_WRITE();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_START_NEW_STREAM:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_START_NEW_STREAM();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_SEND_MESSAGE:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_MESSAGE();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_INITIAL_METADATA();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_TRAILING_METADATA();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RETRY_SEND_PING();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_CONTINUE_PINGS:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CONTINUE_PINGS();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_GOAWAY_SENT();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RST_STREAM();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_CLOSE_FROM_API:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CLOSE_FROM_API();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_STREAM_FLOW_CONTROL:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_STREAM_FLOW_CONTROL();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_UPDATE:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_UPDATE();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_BDP_PING:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_KEEPALIVE_PING:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL_UNSTALLED();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_PING_RESPONSE:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_PING_RESPONSE();
- break;
- case GRPC_CHTTP2_INITIATE_WRITE_FORCE_RST_STREAM:
- GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FORCE_RST_STREAM();
- break;
- }
-}
-
void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
grpc_chttp2_initiate_write_reason reason) {
- GPR_TIMER_SCOPE("grpc_chttp2_initiate_write", 0);
-
switch (t->write_state) {
case GRPC_CHTTP2_WRITE_STATE_IDLE:
- inc_initiate_write_reason(reason);
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING,
grpc_chttp2_initiate_write_reason_string(reason));
GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
@@ -921,7 +823,7 @@ void grpc_chttp2_initiate_write(grpc_chttp2_transport* t,
void grpc_chttp2_mark_stream_writable(grpc_chttp2_transport* t,
grpc_chttp2_stream* s) {
- if (t->closed_with_error == GRPC_ERROR_NONE &&
+ if (GRPC_ERROR_IS_NONE(t->closed_with_error) &&
grpc_chttp2_list_add_writable_stream(t, s)) {
GRPC_CHTTP2_STREAM_REF(s, "chttp2_writing:become");
}
@@ -937,19 +839,15 @@ static const char* begin_writing_desc(bool partial) {
static void write_action_begin_locked(void* gt,
grpc_error_handle /*error_ignored*/) {
- GPR_TIMER_SCOPE("write_action_begin_locked", 0);
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
GPR_ASSERT(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
grpc_chttp2_begin_write_result r;
- if (t->closed_with_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(t->closed_with_error)) {
r.writing = false;
} else {
r = grpc_chttp2_begin_write(t);
}
if (r.writing) {
- if (r.partial) {
- GRPC_STATS_INC_HTTP2_PARTIAL_WRITES();
- }
set_write_state(t,
r.partial ? GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE
: GRPC_CHTTP2_WRITE_STATE_WRITING,
@@ -969,22 +867,30 @@ static void write_action_begin_locked(void* gt,
continue_read_action_locked(t);
}
} else {
- GRPC_STATS_INC_HTTP2_SPURIOUS_WRITES_BEGUN();
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_IDLE, "begin writing nothing");
GRPC_CHTTP2_UNREF_TRANSPORT(t, "writing");
}
}
static void write_action(void* gt, grpc_error_handle /*error*/) {
- GPR_TIMER_SCOPE("write_action", 0);
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(gt);
void* cl = t->cl;
t->cl = nullptr;
+ // If the peer_state_based_framing experiment is set to true,
+ // choose max_frame_size as 2 * max http2 frame size of peer. If peer is under
+ // high memory pressure, then it would advertise a smaller max http2 frame
+ // size. With this logic, the sender would automatically reduce the sending
+ // frame size as well.
+ int max_frame_size =
+ grpc_core::IsPeerStateBasedFramingEnabled()
+ ? 2 * t->settings[GRPC_PEER_SETTINGS]
+ [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]
+ : INT_MAX;
grpc_endpoint_write(
t->ep, &t->outbuf,
GRPC_CLOSURE_INIT(&t->write_action_end_locked, write_action_end, t,
grpc_schedule_on_exec_ctx),
- cl);
+ cl, max_frame_size);
}
static void write_action_end(void* tp, grpc_error_handle error) {
@@ -997,17 +903,16 @@ static void write_action_end(void* tp, grpc_error_handle error) {
// Callback from the grpc_endpoint after bytes have been written by calling
// sendmsg
static void write_action_end_locked(void* tp, grpc_error_handle error) {
- GPR_TIMER_SCOPE("terminate_writing_with_lock", 0);
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
bool closed = false;
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
close_transport_locked(t, GRPC_ERROR_REF(error));
closed = true;
}
- if (t->sent_goaway_state == GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED) {
- t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SENT;
+ if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED) {
+ t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SENT;
closed = true;
if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
close_transport_locked(
@@ -1019,11 +924,9 @@ static void write_action_end_locked(void* tp, grpc_error_handle error) {
case GRPC_CHTTP2_WRITE_STATE_IDLE:
GPR_UNREACHABLE_CODE(break);
case GRPC_CHTTP2_WRITE_STATE_WRITING:
- GPR_TIMER_MARK("state=writing", 0);
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_IDLE, "finish writing");
break;
case GRPC_CHTTP2_WRITE_STATE_WRITING_WITH_MORE:
- GPR_TIMER_MARK("state=writing_stale_no_poller", 0);
set_write_state(t, GRPC_CHTTP2_WRITE_STATE_WRITING, "continue writing");
GRPC_CHTTP2_REF_TRANSPORT(t, "writing");
// If the transport is closed, we will retry writing on the endpoint
@@ -1080,7 +983,7 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
uint32_t last_stream_id,
y_absl::string_view goaway_text) {
// Discard the error from a previous goaway frame (if any)
- if (t->goaway_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(t->goaway_error)) {
GRPC_ERROR_UNREF(t->goaway_error);
}
t->goaway_error = grpc_error_set_str(
@@ -1127,16 +1030,18 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
goaway_error == GRPC_HTTP2_ENHANCE_YOUR_CALM &&
goaway_text == "too_many_pings")) {
gpr_log(GPR_ERROR,
- "Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
- "data equal to \"too_many_pings\"");
- constexpr auto max_keepalive_time = grpc_core::Duration::Milliseconds(
- INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER);
- t->keepalive_time =
- t->keepalive_time > max_keepalive_time
- ? grpc_core::Duration::Infinity()
- : t->keepalive_time * KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
+ "%s: Received a GOAWAY with error code ENHANCE_YOUR_CALM and debug "
+ "data equal to \"too_many_pings\". Current keepalive time (before "
+ "throttling): %s",
+ t->peer_string.c_str(), t->keepalive_time.ToString().c_str());
+ constexpr int max_keepalive_time_millis =
+ INT_MAX / KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
+ int throttled_keepalive_time =
+ t->keepalive_time.millis() > max_keepalive_time_millis
+ ? INT_MAX
+ : t->keepalive_time.millis() * KEEPALIVE_TIME_BACKOFF_MULTIPLIER;
status.SetPayload(grpc_core::kKeepaliveThrottlingKey,
- y_absl::Cord(::ToString(t->keepalive_time.millis())));
+ y_absl::Cord(::ToString(throttled_keepalive_time)));
}
// lie: use transient failure from the transport to indicate goaway has been
// received.
@@ -1150,7 +1055,7 @@ static void maybe_start_some_streams(grpc_chttp2_transport* t) {
grpc_chttp2_stream* s;
// maybe cancel out streams that haven't yet started if we have received a
// GOAWAY
- if (t->goaway_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(t->goaway_error)) {
cancel_unstarted_streams(t, GRPC_ERROR_REF(t->goaway_error));
return;
}
@@ -1214,6 +1119,12 @@ static grpc_closure* add_closure_barrier(grpc_closure* closure) {
static void null_then_sched_closure(grpc_closure** closure) {
grpc_closure* c = *closure;
*closure = nullptr;
+ // null_then_schedule_closure might be run during a start_batch which might
+ // subsequently examine the batch for more operations contained within.
+ // However, the closure run might make it back to the call object, push a
+ // completion, have the application see it, and make a new operation on the
+ // call which recycles the batch BEFORE the call to start_batch completes,
+ // forcing a race.
grpc_core::ExecCtx::Run(DEBUG_LOCATION, c, GRPC_ERROR_NONE);
}
@@ -1242,39 +1153,28 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
desc, grpc_error_std_string(error).c_str(),
write_state_name(t->write_state));
}
- if (error != GRPC_ERROR_NONE) {
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
+ if (!GRPC_ERROR_IS_NONE(error)) {
grpc_error_handle cl_err =
grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
-#else
- grpc_error_handle cl_err =
- reinterpret_cast<grpc_error_handle>(closure->error_data.error);
-#endif
- if (cl_err == GRPC_ERROR_NONE) {
- cl_err = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Error in HTTP transport completing operation");
+ if (GRPC_ERROR_IS_NONE(cl_err)) {
+ cl_err = GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
+ "Error in HTTP transport completing operation: ", desc,
+ " write_state=", write_state_name(t->write_state), " refs=",
+ closure->next_data.scratch / CLOSURE_BARRIER_FIRST_REF_BIT, " flags=",
+ closure->next_data.scratch % CLOSURE_BARRIER_FIRST_REF_BIT));
cl_err = grpc_error_set_str(cl_err, GRPC_ERROR_STR_TARGET_ADDRESS,
t->peer_string);
}
cl_err = grpc_error_add_child(cl_err, error);
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
closure->error_data.error = grpc_core::internal::StatusAllocHeapPtr(cl_err);
-#else
- closure->error_data.error = reinterpret_cast<intptr_t>(cl_err);
-#endif
}
if (closure->next_data.scratch < CLOSURE_BARRIER_FIRST_REF_BIT) {
if ((t->write_state == GRPC_CHTTP2_WRITE_STATE_IDLE) ||
!(closure->next_data.scratch & CLOSURE_BARRIER_MAY_COVER_WRITE)) {
// Using GRPC_CLOSURE_SCHED instead of GRPC_CLOSURE_RUN to avoid running
// closures earlier than when it is safe to do so.
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
grpc_error_handle run_error =
grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
-#else
- grpc_error_handle run_error =
- reinterpret_cast<grpc_error_handle>(closure->error_data.error);
-#endif
closure->error_data.error = 0;
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, run_error);
} else {
@@ -1288,94 +1188,6 @@ static bool contains_non_ok_status(grpc_metadata_batch* batch) {
GRPC_STATUS_OK;
}
-static void maybe_become_writable_due_to_send_msg(grpc_chttp2_transport* t,
- grpc_chttp2_stream* s) {
- if (s->id != 0 && (!s->write_buffering ||
- s->flow_controlled_buffer.length > t->write_buffer_size)) {
- grpc_chttp2_mark_stream_writable(t, s);
- grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_SEND_MESSAGE);
- }
-}
-
-static void add_fetched_slice_locked(grpc_chttp2_transport* t,
- grpc_chttp2_stream* s) {
- s->fetched_send_message_length +=
- static_cast<uint32_t> GRPC_SLICE_LENGTH(s->fetching_slice);
- grpc_slice_buffer_add(&s->flow_controlled_buffer, s->fetching_slice);
- maybe_become_writable_due_to_send_msg(t, s);
-}
-
-static void continue_fetching_send_locked(grpc_chttp2_transport* t,
- grpc_chttp2_stream* s) {
- for (;;) {
- if (s->fetching_send_message == nullptr) {
- // Stream was cancelled before message fetch completed
- abort(); /* TODO(ctiller): what cleanup here? */
- }
- if (s->fetched_send_message_length == s->fetching_send_message->length()) {
- int64_t notify_offset = s->next_message_end_offset;
- if (notify_offset <= s->flow_controlled_bytes_written) {
- grpc_chttp2_complete_closure_step(
- t, s, &s->fetching_send_message_finished, GRPC_ERROR_NONE,
- "fetching_send_message_finished");
- } else {
- grpc_chttp2_write_cb* cb = t->write_cb_pool;
- if (cb == nullptr) {
- cb = static_cast<grpc_chttp2_write_cb*>(gpr_malloc(sizeof(*cb)));
- } else {
- t->write_cb_pool = cb->next;
- }
- cb->call_at_byte = notify_offset;
- cb->closure = s->fetching_send_message_finished;
- s->fetching_send_message_finished = nullptr;
- grpc_chttp2_write_cb** list =
- s->fetching_send_message->flags() & GRPC_WRITE_THROUGH
- ? &s->on_write_finished_cbs
- : &s->on_flow_controlled_cbs;
- cb->next = *list;
- *list = cb;
- }
- s->fetching_send_message.reset();
- return; /* early out */
- } else if (s->fetching_send_message->Next(
- UINT32_MAX, GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
- ::complete_fetch, s,
- grpc_schedule_on_exec_ctx))) {
- grpc_error_handle error =
- s->fetching_send_message->Pull(&s->fetching_slice);
- if (error != GRPC_ERROR_NONE) {
- s->fetching_send_message.reset();
- grpc_chttp2_cancel_stream(t, s, error);
- } else {
- add_fetched_slice_locked(t, s);
- }
- }
- }
-}
-
-static void complete_fetch(void* gs, grpc_error_handle error) {
- grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
- s->t->combiner->Run(GRPC_CLOSURE_INIT(&s->complete_fetch_locked,
- ::complete_fetch_locked, s, nullptr),
- GRPC_ERROR_REF(error));
-}
-
-static void complete_fetch_locked(void* gs, grpc_error_handle error) {
- grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(gs);
- grpc_chttp2_transport* t = s->t;
- if (error == GRPC_ERROR_NONE) {
- error = s->fetching_send_message->Pull(&s->fetching_slice);
- if (error == GRPC_ERROR_NONE) {
- add_fetched_slice_locked(t, s);
- continue_fetching_send_locked(t, s);
- }
- }
- if (error != GRPC_ERROR_NONE) {
- s->fetching_send_message.reset();
- grpc_chttp2_cancel_stream(t, s, error);
- }
-}
-
static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
bool is_client, bool is_initial) {
const TString prefix = y_absl::StrCat(
@@ -1387,8 +1199,6 @@ static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
static void perform_stream_op_locked(void* stream_op,
grpc_error_handle /*error_ignored*/) {
- GPR_TIMER_SCOPE("perform_stream_op_locked", 0);
-
grpc_transport_stream_op_batch* op =
static_cast<grpc_transport_stream_op_batch*>(stream_op);
grpc_chttp2_stream* s =
@@ -1396,8 +1206,6 @@ static void perform_stream_op_locked(void* stream_op,
grpc_transport_stream_op_batch_payload* op_payload = op->payload;
grpc_chttp2_transport* t = s->t;
- GRPC_STATS_INC_HTTP2_OP_BATCHES();
-
s->context = op->payload->context;
s->traced = op->is_traced;
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
@@ -1425,7 +1233,6 @@ static void perform_stream_op_locked(void* stream_op,
}
if (op->cancel_stream) {
- GRPC_STATS_INC_HTTP2_OP_CANCEL();
grpc_chttp2_cancel_stream(t, s, op_payload->cancel_stream.cancel_error);
}
@@ -1433,7 +1240,6 @@ static void perform_stream_op_locked(void* stream_op,
if (t->is_client && t->channelz_socket != nullptr) {
t->channelz_socket->RecordStreamStartedFromLocal();
}
- GRPC_STATS_INC_HTTP2_OP_SEND_INITIAL_METADATA();
GPR_ASSERT(s->send_initial_metadata_finished == nullptr);
on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
@@ -1451,7 +1257,7 @@ static void perform_stream_op_locked(void* stream_op,
}
if (!s->write_closed) {
if (t->is_client) {
- if (t->closed_with_error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(t->closed_with_error)) {
GPR_ASSERT(s->id == 0);
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
maybe_start_some_streams(t);
@@ -1470,8 +1276,7 @@ static void perform_stream_op_locked(void* stream_op,
GPR_ASSERT(s->id != 0);
grpc_chttp2_mark_stream_writable(t, s);
if (!(op->send_message &&
- (op->payload->send_message.send_message->flags() &
- GRPC_WRITE_BUFFER_HINT))) {
+ (op->payload->send_message.flags & GRPC_WRITE_BUFFER_HINT))) {
grpc_chttp2_initiate_write(
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
}
@@ -1492,35 +1297,30 @@ static void perform_stream_op_locked(void* stream_op,
}
if (op->send_message) {
- GRPC_STATS_INC_HTTP2_OP_SEND_MESSAGE();
t->num_messages_in_next_write++;
GRPC_STATS_INC_HTTP2_SEND_MESSAGE_SIZE(
- op->payload->send_message.send_message->length());
+ op->payload->send_message.send_message->Length());
on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
- s->fetching_send_message_finished = add_closure_barrier(op->on_complete);
+ s->send_message_finished = add_closure_barrier(op->on_complete);
+ const uint32_t flags = op_payload->send_message.flags;
if (s->write_closed) {
op->payload->send_message.stream_write_closed = true;
// We should NOT return an error here, so as to avoid a cancel OP being
// started. The surface layer will notice that the stream has been closed
// for writes and fail the send message op.
- op->payload->send_message.send_message.reset();
- grpc_chttp2_complete_closure_step(
- t, s, &s->fetching_send_message_finished, GRPC_ERROR_NONE,
- "fetching_send_message_finished");
+ grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished,
+ GRPC_ERROR_NONE,
+ "fetching_send_message_finished");
} else {
- GPR_ASSERT(s->fetching_send_message == nullptr);
uint8_t* frame_hdr = grpc_slice_buffer_tiny_add(
&s->flow_controlled_buffer, GRPC_HEADER_SIZE_IN_BYTES);
- uint32_t flags = op_payload->send_message.send_message->flags();
frame_hdr[0] = (flags & GRPC_WRITE_INTERNAL_COMPRESS) != 0;
- size_t len = op_payload->send_message.send_message->length();
+ size_t len = op_payload->send_message.send_message->Length();
frame_hdr[1] = static_cast<uint8_t>(len >> 24);
frame_hdr[2] = static_cast<uint8_t>(len >> 16);
frame_hdr[3] = static_cast<uint8_t>(len >> 8);
frame_hdr[4] = static_cast<uint8_t>(len);
- s->fetching_send_message =
- std::move(op_payload->send_message.send_message);
- s->fetched_send_message_length = 0;
+
s->next_message_end_offset =
s->flow_controlled_bytes_written +
static_cast<int64_t>(s->flow_controlled_buffer.length) +
@@ -1531,13 +1331,48 @@ static void perform_stream_op_locked(void* stream_op,
} else {
s->write_buffering = false;
}
- continue_fetching_send_locked(t, s);
- maybe_become_writable_due_to_send_msg(t, s);
+
+ grpc_slice* const slices =
+ op_payload->send_message.send_message->c_slice_buffer()->slices;
+ grpc_slice* const end =
+ slices + op_payload->send_message.send_message->Count();
+ for (grpc_slice* slice = slices; slice != end; slice++) {
+ grpc_slice_buffer_add(&s->flow_controlled_buffer,
+ grpc_slice_ref_internal(*slice));
+ }
+
+ int64_t notify_offset = s->next_message_end_offset;
+ if (notify_offset <= s->flow_controlled_bytes_written) {
+ grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished,
+ GRPC_ERROR_NONE,
+ "fetching_send_message_finished");
+ } else {
+ grpc_chttp2_write_cb* cb = t->write_cb_pool;
+ if (cb == nullptr) {
+ cb = static_cast<grpc_chttp2_write_cb*>(gpr_malloc(sizeof(*cb)));
+ } else {
+ t->write_cb_pool = cb->next;
+ }
+ cb->call_at_byte = notify_offset;
+ cb->closure = s->send_message_finished;
+ s->send_message_finished = nullptr;
+ grpc_chttp2_write_cb** list = flags & GRPC_WRITE_THROUGH
+ ? &s->on_write_finished_cbs
+ : &s->on_flow_controlled_cbs;
+ cb->next = *list;
+ *list = cb;
+ }
+
+ if (s->id != 0 &&
+ (!s->write_buffering ||
+ s->flow_controlled_buffer.length > t->write_buffer_size)) {
+ grpc_chttp2_mark_stream_writable(t, s);
+ grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_SEND_MESSAGE);
+ }
}
}
if (op->send_trailing_metadata) {
- GRPC_STATS_INC_HTTP2_OP_SEND_TRAILING_METADATA();
GPR_ASSERT(s->send_trailing_metadata_finished == nullptr);
on_complete->next_data.scratch |= CLOSURE_BARRIER_MAY_COVER_WRITE;
s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
@@ -1569,7 +1404,6 @@ static void perform_stream_op_locked(void* stream_op,
}
if (op->recv_initial_metadata) {
- GRPC_STATS_INC_HTTP2_OP_RECV_INITIAL_METADATA();
GPR_ASSERT(s->recv_initial_metadata_ready == nullptr);
s->recv_initial_metadata_ready =
op_payload->recv_initial_metadata.recv_initial_metadata_ready;
@@ -1585,33 +1419,17 @@ static void perform_stream_op_locked(void* stream_op,
}
if (op->recv_message) {
- GRPC_STATS_INC_HTTP2_OP_RECV_MESSAGE();
- size_t before = 0;
GPR_ASSERT(s->recv_message_ready == nullptr);
- GPR_ASSERT(!s->pending_byte_stream);
s->recv_message_ready = op_payload->recv_message.recv_message_ready;
s->recv_message = op_payload->recv_message.recv_message;
+ s->recv_message->emplace();
+ s->recv_message_flags = op_payload->recv_message.flags;
s->call_failed_before_recv_message =
op_payload->recv_message.call_failed_before_recv_message;
- if (s->id != 0) {
- if (!s->read_closed) {
- before = s->frame_storage.length +
- s->unprocessed_incoming_frames_buffer.length;
- }
- }
- grpc_chttp2_maybe_complete_recv_message(t, s);
- if (s->id != 0) {
- if (!s->read_closed && s->frame_storage.length == 0) {
- size_t after = s->unprocessed_incoming_frames_buffer_cached_length;
- s->flow_control->IncomingByteStreamUpdate(GRPC_HEADER_SIZE_IN_BYTES,
- before - after);
- grpc_chttp2_act_on_flowctl_action(s->flow_control->MakeAction(), t, s);
- }
- }
+ grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
}
if (op->recv_trailing_metadata) {
- GRPC_STATS_INC_HTTP2_OP_RECV_TRAILING_METADATA();
GPR_ASSERT(s->collecting_stats == nullptr);
s->collecting_stats = op_payload->recv_trailing_metadata.collect_stats;
GPR_ASSERT(s->recv_trailing_metadata_finished == nullptr);
@@ -1633,7 +1451,6 @@ static void perform_stream_op_locked(void* stream_op,
static void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
grpc_transport_stream_op_batch* op) {
- GPR_TIMER_SCOPE("perform_stream_op", 0);
grpc_chttp2_transport* t = reinterpret_cast<grpc_chttp2_transport*>(gt);
grpc_chttp2_stream* s = reinterpret_cast<grpc_chttp2_stream*>(gs);
@@ -1666,7 +1483,7 @@ static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
// callback remaining pings: they're not allowed to call into the transport,
// and maybe they hold resources that need to be freed
grpc_chttp2_ping_queue* pq = &t->ping_queue;
- GPR_ASSERT(error != GRPC_ERROR_NONE);
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
for (size_t j = 0; j < GRPC_CHTTP2_PCL_COUNT; j++) {
grpc_closure_list_fail_all(&pq->lists[j], GRPC_ERROR_REF(error));
grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &pq->lists[j]);
@@ -1676,7 +1493,7 @@ static void cancel_pings(grpc_chttp2_transport* t, grpc_error_handle error) {
static void send_ping_locked(grpc_chttp2_transport* t,
grpc_closure* on_initiate, grpc_closure* on_ack) {
- if (t->closed_with_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(t->closed_with_error)) {
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_initiate,
GRPC_ERROR_REF(t->closed_with_error));
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_ack,
@@ -1694,7 +1511,7 @@ static void send_ping_locked(grpc_chttp2_transport* t,
// a ping in progress, the keepalive ping would piggyback onto that ping,
// instead of waiting for that ping to complete and then starting a new ping.
static void send_keepalive_ping_locked(grpc_chttp2_transport* t) {
- if (t->closed_with_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(t->closed_with_error)) {
t->combiner->Run(GRPC_CLOSURE_INIT(&t->start_keepalive_ping_locked,
start_keepalive_ping_locked, t, nullptr),
GRPC_ERROR_REF(t->closed_with_error));
@@ -1739,7 +1556,7 @@ void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error) {
static void retry_initiate_ping_locked(void* tp, grpc_error_handle error) {
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
t->ping_state.is_delayed_ping_timer_set = false;
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RETRY_SEND_PING);
}
GRPC_CHTTP2_UNREF_TRANSPORT(t, "retry_initiate_ping_locked");
@@ -1759,18 +1576,128 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id) {
}
}
-static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error) {
- // We want to log this irrespective of whether http tracing is enabled
- gpr_log(GPR_DEBUG, "%s: Sending goaway err=%s", t->peer_string.c_str(),
- grpc_error_std_string(error).c_str());
- t->sent_goaway_state = GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED;
+namespace {
+
+// Fire and forget (deletes itself on completion). Does a graceful shutdown by
+// sending a GOAWAY frame with the last stream id set to 2^31-1, sending a ping
+// and waiting for an ack (effective waiting for an RTT) and then sending a
+// final GOAWAY freame with an updated last stream identifier. This helps ensure
+// that a connection can be cleanly shut down without losing requests.
+// In the event, that the client does not respond to the ping for some reason,
+// we add a 20 second deadline, after which we send the second goaway.
+class GracefulGoaway : public grpc_core::RefCounted<GracefulGoaway> {
+ public:
+ static void Start(grpc_chttp2_transport* t) { new GracefulGoaway(t); }
+
+ ~GracefulGoaway() override {
+ GRPC_CHTTP2_UNREF_TRANSPORT(t_, "graceful goaway");
+ }
+
+ private:
+ explicit GracefulGoaway(grpc_chttp2_transport* t) : t_(t) {
+ t->sent_goaway_state = GRPC_CHTTP2_GRACEFUL_GOAWAY;
+ GRPC_CHTTP2_REF_TRANSPORT(t_, "graceful goaway");
+ grpc_chttp2_goaway_append((1u << 31) - 1, 0, grpc_empty_slice(), &t->qbuf);
+ send_ping_locked(
+ t, nullptr, GRPC_CLOSURE_INIT(&on_ping_ack_, OnPingAck, this, nullptr));
+ grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
+ Ref().release(); // Ref for the timer
+ grpc_timer_init(
+ &timer_, grpc_core::Timestamp::Now() + grpc_core::Duration::Seconds(20),
+ GRPC_CLOSURE_INIT(&on_timer_, OnTimer, this, nullptr));
+ }
+
+ void MaybeSendFinalGoawayLocked() {
+ if (t_->sent_goaway_state != GRPC_CHTTP2_GRACEFUL_GOAWAY) {
+ // We already sent the final GOAWAY.
+ return;
+ }
+ if (t_->destroying || !GRPC_ERROR_IS_NONE(t_->closed_with_error)) {
+ GRPC_CHTTP2_IF_TRACING(gpr_log(
+ GPR_INFO,
+ "transport:%p %s peer:%s Transport already shutting down. "
+ "Graceful GOAWAY abandoned.",
+ t_, t_->is_client ? "CLIENT" : "SERVER", t_->peer_string.c_str()));
+ return;
+ }
+ // Ping completed. Send final goaway.
+ GRPC_CHTTP2_IF_TRACING(
+ gpr_log(GPR_INFO,
+ "transport:%p %s peer:%s Graceful shutdown: Ping received. "
+ "Sending final GOAWAY with stream_id:%d",
+ t_, t_->is_client ? "CLIENT" : "SERVER",
+ t_->peer_string.c_str(), t_->last_new_stream_id));
+ t_->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
+ grpc_chttp2_goaway_append(t_->last_new_stream_id, 0, grpc_empty_slice(),
+ &t_->qbuf);
+ grpc_chttp2_initiate_write(t_, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
+ }
+
+ static void OnPingAck(void* arg, grpc_error_handle /* error */) {
+ auto* self = static_cast<GracefulGoaway*>(arg);
+ self->t_->combiner->Run(
+ GRPC_CLOSURE_INIT(&self->on_ping_ack_, OnPingAckLocked, self, nullptr),
+ GRPC_ERROR_NONE);
+ }
+
+ static void OnPingAckLocked(void* arg, grpc_error_handle /* error */) {
+ auto* self = static_cast<GracefulGoaway*>(arg);
+ grpc_timer_cancel(&self->timer_);
+ self->MaybeSendFinalGoawayLocked();
+ self->Unref();
+ }
+
+ static void OnTimer(void* arg, grpc_error_handle error) {
+ auto* self = static_cast<GracefulGoaway*>(arg);
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ self->Unref();
+ return;
+ }
+ self->t_->combiner->Run(
+ GRPC_CLOSURE_INIT(&self->on_timer_, OnTimerLocked, self, nullptr),
+ GRPC_ERROR_NONE);
+ }
+
+ static void OnTimerLocked(void* arg, grpc_error_handle /* error */) {
+ auto* self = static_cast<GracefulGoaway*>(arg);
+ self->MaybeSendFinalGoawayLocked();
+ self->Unref();
+ }
+
+ grpc_chttp2_transport* t_;
+ grpc_closure on_ping_ack_;
+ grpc_timer timer_;
+ grpc_closure on_timer_;
+};
+
+} // namespace
+
+static void send_goaway(grpc_chttp2_transport* t, grpc_error_handle error,
+ bool immediate_disconnect_hint) {
grpc_http2_error_code http_error;
TString message;
grpc_error_get_status(error, grpc_core::Timestamp::InfFuture(), nullptr,
&message, &http_error, nullptr);
- grpc_chttp2_goaway_append(
- t->last_new_stream_id, static_cast<uint32_t>(http_error),
- grpc_slice_from_cpp_string(std::move(message)), &t->qbuf);
+ if (!t->is_client && http_error == GRPC_HTTP2_NO_ERROR &&
+ !immediate_disconnect_hint) {
+ // Do a graceful shutdown.
+ if (t->sent_goaway_state == GRPC_CHTTP2_NO_GOAWAY_SEND) {
+ GracefulGoaway::Start(t);
+ } else {
+ // Graceful GOAWAY is already in progress.
+ }
+ } else if (t->sent_goaway_state == GRPC_CHTTP2_NO_GOAWAY_SEND ||
+ t->sent_goaway_state == GRPC_CHTTP2_GRACEFUL_GOAWAY) {
+ // We want to log this irrespective of whether http tracing is enabled
+ gpr_log(GPR_DEBUG, "%s: Sending goaway err=%s", t->peer_string.c_str(),
+ grpc_error_std_string(error).c_str());
+ t->sent_goaway_state = GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED;
+ grpc_chttp2_goaway_append(
+ t->last_new_stream_id, static_cast<uint32_t>(http_error),
+ grpc_slice_from_cpp_string(std::move(message)), &t->qbuf);
+ } else {
+ // Final GOAWAY has already been sent.
+ }
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_GOAWAY_SENT);
GRPC_ERROR_UNREF(error);
}
@@ -1781,7 +1708,8 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
send_goaway(t,
grpc_error_set_int(
GRPC_ERROR_CREATE_FROM_STATIC_STRING("too_many_pings"),
- GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
+ GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM),
+ /*immediate_disconnect_hint=*/true);
// The transport will be closed after the write is done
close_transport_locked(
t, grpc_error_set_int(
@@ -1805,8 +1733,8 @@ static void perform_transport_op_locked(void* stream_op,
grpc_chttp2_transport* t =
static_cast<grpc_chttp2_transport*>(op->handler_private.extra_arg);
- if (op->goaway_error != GRPC_ERROR_NONE) {
- send_goaway(t, op->goaway_error);
+ if (!GRPC_ERROR_IS_NONE(op->goaway_error)) {
+ send_goaway(t, op->goaway_error, /*immediate_disconnect_hint=*/false);
}
if (op->set_accept_stream) {
@@ -1835,7 +1763,9 @@ static void perform_transport_op_locked(void* stream_op,
t->state_tracker.RemoveWatcher(op->stop_connectivity_watch);
}
- if (op->disconnect_with_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
+ send_goaway(t, GRPC_ERROR_REF(op->disconnect_with_error),
+ /*immediate_disconnect_hint=*/true);
close_transport_locked(t, op->disconnect_with_error);
}
@@ -1861,18 +1791,15 @@ static void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
// INPUT PROCESSING - GENERAL
//
-void grpc_chttp2_maybe_complete_recv_initial_metadata(
- grpc_chttp2_transport* /*t*/, grpc_chttp2_stream* s) {
+void grpc_chttp2_maybe_complete_recv_initial_metadata(grpc_chttp2_transport* t,
+ grpc_chttp2_stream* s) {
if (s->recv_initial_metadata_ready != nullptr &&
s->published_metadata[0] != GRPC_METADATA_NOT_PUBLISHED) {
if (s->seen_error) {
grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
- if (!s->pending_byte_stream) {
- grpc_slice_buffer_reset_and_unref_internal(
- &s->unprocessed_incoming_frames_buffer);
- }
}
*s->recv_initial_metadata = std::move(s->initial_metadata_buffer);
+ s->recv_initial_metadata->Set(grpc_core::PeerString(), t->peer_string);
// If we didn't receive initial metadata from the wire and instead faked a
// status (due to stream cancellations for example), let upper layers know
// that trailing metadata is immediately available.
@@ -1886,47 +1813,62 @@ void grpc_chttp2_maybe_complete_recv_initial_metadata(
}
}
-void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
+void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
grpc_chttp2_stream* s) {
+ if (s->recv_message_ready == nullptr) return;
+
+ grpc_core::chttp2::StreamFlowControl::IncomingUpdateContext upd(
+ &s->flow_control);
grpc_error_handle error = GRPC_ERROR_NONE;
- if (s->recv_message_ready != nullptr) {
- *s->recv_message = nullptr;
+
+ // Lambda is immediately invoked as a big scoped section that can be
+ // exited out of at any point by returning.
+ [&]() {
if (s->final_metadata_requested && s->seen_error) {
grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
- if (!s->pending_byte_stream) {
- grpc_slice_buffer_reset_and_unref_internal(
- &s->unprocessed_incoming_frames_buffer);
- }
- }
- if (!s->pending_byte_stream) {
- while (s->unprocessed_incoming_frames_buffer.length > 0 ||
- s->frame_storage.length > 0) {
- if (s->unprocessed_incoming_frames_buffer.length == 0) {
- grpc_slice_buffer_swap(&s->unprocessed_incoming_frames_buffer,
- &s->frame_storage);
- }
- error = grpc_deframe_unprocessed_incoming_frames(
- &s->data_parser, s, &s->unprocessed_incoming_frames_buffer, nullptr,
- s->recv_message);
- if (error != GRPC_ERROR_NONE) {
- s->seen_error = true;
- grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
- grpc_slice_buffer_reset_and_unref_internal(
- &s->unprocessed_incoming_frames_buffer);
- break;
- } else if (*s->recv_message != nullptr) {
- break;
+ s->recv_message->reset();
+ } else {
+ if (s->frame_storage.length != 0) {
+ while (true) {
+ GPR_ASSERT(s->frame_storage.length > 0);
+ uint32_t min_progress_size;
+ auto r = grpc_deframe_unprocessed_incoming_frames(
+ s, &min_progress_size, &**s->recv_message, s->recv_message_flags);
+ if (y_absl::holds_alternative<grpc_core::Pending>(r)) {
+ if (s->read_closed) {
+ grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
+ s->recv_message->reset();
+ break;
+ } else {
+ upd.SetMinProgressSize(min_progress_size);
+ return; // Out of lambda to enclosing function
+ }
+ } else {
+ error = y_absl::get<grpc_error_handle>(r);
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ s->seen_error = true;
+ grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
+ break;
+ } else {
+ if (t->channelz_socket != nullptr) {
+ t->channelz_socket->RecordMessageReceived();
+ }
+ break;
+ }
+ }
}
+ } else if (s->read_closed) {
+ s->recv_message->reset();
+ } else {
+ upd.SetMinProgressSize(GRPC_HEADER_SIZE_IN_BYTES);
+ return; // Out of lambda to enclosing function
}
}
// save the length of the buffer before handing control back to application
// threads. Needed to support correct flow control bookkeeping
- s->unprocessed_incoming_frames_buffer_cached_length =
- s->unprocessed_incoming_frames_buffer.length;
- if (error == GRPC_ERROR_NONE && *s->recv_message != nullptr) {
+ if (GRPC_ERROR_IS_NONE(error) && s->recv_message->has_value()) {
null_then_sched_closure(&s->recv_message_ready);
} else if (s->published_metadata[1] != GRPC_METADATA_NOT_PUBLISHED) {
- *s->recv_message = nullptr;
if (s->call_failed_before_recv_message != nullptr) {
*s->call_failed_before_recv_message =
(s->published_metadata[1] != GRPC_METADATA_PUBLISHED_AT_CLOSE);
@@ -1934,7 +1876,10 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* /*t*/,
null_then_sched_closure(&s->recv_message_ready);
}
GRPC_ERROR_UNREF(error);
- }
+ }();
+
+ upd.SetPendingSize(s->frame_storage.length);
+ grpc_chttp2_act_on_flowctl_action(upd.MakeAction(), t, s);
}
void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
@@ -1944,30 +1889,13 @@ void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
s->write_closed) {
if (s->seen_error || !t->is_client) {
grpc_slice_buffer_reset_and_unref_internal(&s->frame_storage);
- if (!s->pending_byte_stream) {
- grpc_slice_buffer_reset_and_unref_internal(
- &s->unprocessed_incoming_frames_buffer);
- }
- }
- bool pending_data = s->pending_byte_stream ||
- s->unprocessed_incoming_frames_buffer.length > 0;
- if (s->read_closed && s->frame_storage.length > 0 && !pending_data &&
- !s->seen_error && s->recv_trailing_metadata_finished != nullptr) {
- // Maybe some SYNC_FLUSH data is left in frame_storage. Consume them and
- // maybe decompress the next 5 bytes in the stream.
- grpc_slice_buffer_move_first(
- &s->frame_storage,
- std::min(s->frame_storage.length, size_t(GRPC_HEADER_SIZE_IN_BYTES)),
- &s->unprocessed_incoming_frames_buffer);
- if (s->unprocessed_incoming_frames_buffer.length > 0) {
- pending_data = true;
- }
}
- if (s->read_closed && s->frame_storage.length == 0 && !pending_data &&
+ if (s->read_closed && s->frame_storage.length == 0 &&
s->recv_trailing_metadata_finished != nullptr) {
grpc_transport_move_stats(&s->stats, s->collecting_stats);
s->collecting_stats = nullptr;
*s->recv_trailing_metadata = std::move(s->trailing_metadata_buffer);
+ s->recv_trailing_metadata->Set(grpc_core::PeerString(), t->peer_string);
null_then_sched_closure(&s->recv_trailing_metadata_finished);
}
}
@@ -1982,24 +1910,10 @@ static void remove_stream(grpc_chttp2_transport* t, uint32_t id,
t->incoming_stream = nullptr;
grpc_chttp2_parsing_become_skip_parser(t);
}
- if (s->pending_byte_stream) {
- if (s->on_next != nullptr) {
- grpc_core::Chttp2IncomingByteStream* bs = s->data_parser.parsing_frame;
- if (error == GRPC_ERROR_NONE) {
- error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message");
- }
- bs->PublishError(error);
- bs->Unref();
- s->data_parser.parsing_frame = nullptr;
- } else {
- GRPC_ERROR_UNREF(s->byte_stream_error);
- s->byte_stream_error = GRPC_ERROR_REF(error);
- }
- }
if (grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
post_benign_reclaimer(t);
- if (t->sent_goaway_state == GRPC_CHTTP2_GOAWAY_SENT) {
+ if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SENT) {
close_transport_locked(
t, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Last stream closed after sending GOAWAY", &error, 1));
@@ -2034,7 +1948,7 @@ void grpc_chttp2_cancel_stream(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_RST_STREAM);
}
}
- if (due_to_error != GRPC_ERROR_NONE && !s->seen_error) {
+ if (!GRPC_ERROR_IS_NONE(due_to_error) && !s->seen_error) {
s->seen_error = true;
}
grpc_chttp2_mark_stream_closed(t, s, 1, 1, due_to_error);
@@ -2072,7 +1986,7 @@ void grpc_chttp2_fake_status(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
static void add_error(grpc_error_handle error, grpc_error_handle* refs,
size_t* nrefs) {
- if (error == GRPC_ERROR_NONE) return;
+ if (GRPC_ERROR_IS_NONE(error)) return;
for (size_t i = 0; i < *nrefs; i++) {
if (error == refs[i]) {
return;
@@ -2129,8 +2043,7 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
GRPC_ERROR_REF(error),
"send_trailing_metadata_finished");
- s->fetching_send_message.reset();
- grpc_chttp2_complete_closure_step(t, s, &s->fetching_send_message_finished,
+ grpc_chttp2_complete_closure_step(t, s, &s->send_message_finished,
GRPC_ERROR_REF(error),
"fetching_send_message_finished");
flush_write_list(t, s, &s->on_write_finished_cbs, GRPC_ERROR_REF(error));
@@ -2143,7 +2056,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
if (s->read_closed && s->write_closed) {
// already closed, but we should still fake the status if needed.
grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
- if (overall_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(overall_error)) {
grpc_chttp2_fake_status(t, s, overall_error);
}
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
@@ -2171,7 +2084,7 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
// Purge streams waiting on concurrency still waiting for id assignment
grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
}
- if (overall_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(overall_error)) {
grpc_chttp2_fake_status(t, s, overall_error);
}
}
@@ -2400,8 +2313,11 @@ void grpc_chttp2_act_on_flowctl_action(
const grpc_core::chttp2::FlowControlAction& action,
grpc_chttp2_transport* t, grpc_chttp2_stream* s) {
WithUrgency(t, action.send_stream_update(),
- GRPC_CHTTP2_INITIATE_WRITE_STREAM_FLOW_CONTROL,
- [t, s]() { grpc_chttp2_mark_stream_writable(t, s); });
+ GRPC_CHTTP2_INITIATE_WRITE_STREAM_FLOW_CONTROL, [t, s]() {
+ if (s->id != 0 && !s->read_closed) {
+ grpc_chttp2_mark_stream_writable(t, s);
+ }
+ });
WithUrgency(t, action.send_transport_update(),
GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL, []() {});
WithUrgency(t, action.send_initial_window_update(),
@@ -2426,11 +2342,11 @@ static grpc_error_handle try_http_parsing(grpc_chttp2_transport* t) {
grpc_http_parser_init(&parser, GRPC_HTTP_RESPONSE, &response);
grpc_error_handle parse_error = GRPC_ERROR_NONE;
- for (; i < t->read_buffer.count && parse_error == GRPC_ERROR_NONE; i++) {
+ for (; i < t->read_buffer.count && GRPC_ERROR_IS_NONE(parse_error); i++) {
parse_error =
grpc_http_parser_parse(&parser, t->read_buffer.slices[i], nullptr);
}
- if (parse_error == GRPC_ERROR_NONE &&
+ if (GRPC_ERROR_IS_NONE(parse_error) &&
(parse_error = grpc_http_parser_eof(&parser)) == GRPC_ERROR_NONE) {
error = grpc_error_set_int(
grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
@@ -2454,14 +2370,12 @@ static void read_action(void* tp, grpc_error_handle error) {
}
static void read_action_locked(void* tp, grpc_error_handle error) {
- GPR_TIMER_SCOPE("reading_action_locked", 0);
-
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
(void)GRPC_ERROR_REF(error);
grpc_error_handle err = error;
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
err = grpc_error_set_int(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Endpoint read failed", &err, 1),
GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
@@ -2469,8 +2383,7 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
}
std::swap(err, error);
GRPC_ERROR_UNREF(err);
- if (t->closed_with_error == GRPC_ERROR_NONE) {
- GPR_TIMER_SCOPE("reading_action.parse", 0);
+ if (GRPC_ERROR_IS_NONE(t->closed_with_error)) {
size_t i = 0;
grpc_error_handle errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
GRPC_ERROR_NONE};
@@ -2487,7 +2400,6 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
GRPC_ERROR_UNREF(errors[i]);
}
- GPR_TIMER_SCOPE("post_parse_locked", 0);
if (t->initial_window_update != 0) {
if (t->initial_window_update > 0) {
grpc_chttp2_stream* s;
@@ -2501,22 +2413,21 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
}
}
- GPR_TIMER_SCOPE("post_reading_action_locked", 0);
bool keep_reading = false;
- if (error == GRPC_ERROR_NONE && t->closed_with_error != GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error) && !GRPC_ERROR_IS_NONE(t->closed_with_error)) {
error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Transport closed", &t->closed_with_error, 1);
}
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
// If a goaway frame was received, this might be the reason why the read
// failed. Add this info to the error
- if (t->goaway_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(t->goaway_error)) {
error = grpc_error_add_child(error, GRPC_ERROR_REF(t->goaway_error));
}
close_transport_locked(t, GRPC_ERROR_REF(error));
t->endpoint_reading = 0;
- } else if (t->closed_with_error == GRPC_ERROR_NONE) {
+ } else if (GRPC_ERROR_IS_NONE(t->closed_with_error)) {
keep_reading = true;
// Since we have read a byte, reset the keepalive timer
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
@@ -2544,17 +2455,17 @@ static void read_action_locked(void* tp, grpc_error_handle error) {
}
static void continue_read_action_locked(grpc_chttp2_transport* t) {
- const bool urgent = t->goaway_error != GRPC_ERROR_NONE;
+ const bool urgent = !GRPC_ERROR_IS_NONE(t->goaway_error);
GRPC_CLOSURE_INIT(&t->read_action_locked, read_action, t,
grpc_schedule_on_exec_ctx);
- grpc_endpoint_read(t->ep, &t->read_buffer, &t->read_action_locked, urgent);
- grpc_chttp2_act_on_flowctl_action(t->flow_control->MakeAction(), t, nullptr);
+ grpc_endpoint_read(t->ep, &t->read_buffer, &t->read_action_locked, urgent,
+ grpc_chttp2_min_read_progress_size(t));
}
// t is reffed prior to calling the first time, and once the callback chain
// that kicks off finishes, it's unreffed
void schedule_bdp_ping_locked(grpc_chttp2_transport* t) {
- t->flow_control->bdp_estimator()->SchedulePing();
+ t->flow_control.bdp_estimator()->SchedulePing();
send_ping_locked(
t,
GRPC_CLOSURE_INIT(&t->start_bdp_ping_locked, start_bdp_ping, t,
@@ -2577,14 +2488,14 @@ static void start_bdp_ping_locked(void* tp, grpc_error_handle error) {
gpr_log(GPR_INFO, "%s: Start BDP ping err=%s", t->peer_string.c_str(),
grpc_error_std_string(error).c_str());
}
- if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error) || !GRPC_ERROR_IS_NONE(t->closed_with_error)) {
return;
}
// Reset the keepalive ping timer
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
grpc_timer_cancel(&t->keepalive_ping_timer);
}
- t->flow_control->bdp_estimator()->StartPing();
+ t->flow_control.bdp_estimator()->StartPing();
t->bdp_ping_started = true;
}
@@ -2601,7 +2512,7 @@ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
gpr_log(GPR_INFO, "%s: Complete BDP ping err=%s", t->peer_string.c_str(),
grpc_error_std_string(error).c_str());
}
- if (error != GRPC_ERROR_NONE || t->closed_with_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error) || !GRPC_ERROR_IS_NONE(t->closed_with_error)) {
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
return;
}
@@ -2615,8 +2526,8 @@ static void finish_bdp_ping_locked(void* tp, grpc_error_handle error) {
}
t->bdp_ping_started = false;
grpc_core::Timestamp next_ping =
- t->flow_control->bdp_estimator()->CompletePing();
- grpc_chttp2_act_on_flowctl_action(t->flow_control->PeriodicUpdate(), t,
+ t->flow_control.bdp_estimator()->CompletePing();
+ grpc_chttp2_act_on_flowctl_action(t->flow_control.PeriodicUpdate(), t,
nullptr);
GPR_ASSERT(!t->have_next_bdp_ping_timer);
t->have_next_bdp_ping_timer = true;
@@ -2639,11 +2550,11 @@ static void next_bdp_ping_timer_expired_locked(void* tp,
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(tp);
GPR_ASSERT(t->have_next_bdp_ping_timer);
t->have_next_bdp_ping_timer = false;
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
return;
}
- if (t->flow_control->bdp_estimator()->accumulator() == 0) {
+ if (t->flow_control.bdp_estimator()->accumulator() == 0) {
// Block the bdp ping till we receive more data.
t->bdp_ping_blocked = true;
GRPC_CHTTP2_UNREF_TRANSPORT(t, "bdp_ping");
@@ -2721,9 +2632,9 @@ static void init_keepalive_ping(void* arg, grpc_error_handle error) {
static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
GPR_ASSERT(t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING);
- if (t->destroying || t->closed_with_error != GRPC_ERROR_NONE) {
+ if (t->destroying || !GRPC_ERROR_IS_NONE(t->closed_with_error)) {
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
- } else if (error == GRPC_ERROR_NONE) {
+ } else if (GRPC_ERROR_IS_NONE(error)) {
if (t->keepalive_permit_without_calls ||
grpc_chttp2_stream_map_size(&t->stream_map) > 0) {
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_PINGING;
@@ -2736,16 +2647,21 @@ static void init_keepalive_ping_locked(void* arg, grpc_error_handle error) {
GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
grpc_schedule_on_exec_ctx);
grpc_timer_init(&t->keepalive_ping_timer,
- grpc_core::ExecCtx::Get()->Now() + t->keepalive_time,
+ grpc_core::Timestamp::Now() + t->keepalive_time,
&t->init_keepalive_ping_locked);
}
} else if (error == GRPC_ERROR_CANCELLED) {
// The keepalive ping timer may be cancelled by bdp
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
+ GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
+ gpr_log(GPR_INFO, "%s: Keepalive ping cancelled. Resetting timer.",
+ t->peer_string.c_str());
+ }
GRPC_CHTTP2_REF_TRANSPORT(t, "init keepalive ping");
GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
grpc_schedule_on_exec_ctx);
grpc_timer_init(&t->keepalive_ping_timer,
- grpc_core::ExecCtx::Get()->Now() + t->keepalive_time,
+ grpc_core::Timestamp::Now() + t->keepalive_time,
&t->init_keepalive_ping_locked);
}
GRPC_CHTTP2_UNREF_TRANSPORT(t, "init keepalive ping");
@@ -2760,7 +2676,7 @@ static void start_keepalive_ping(void* arg, grpc_error_handle error) {
static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
return;
}
if (t->channelz_socket != nullptr) {
@@ -2774,7 +2690,7 @@ static void start_keepalive_ping_locked(void* arg, grpc_error_handle error) {
GRPC_CLOSURE_INIT(&t->keepalive_watchdog_fired_locked,
keepalive_watchdog_fired, t, grpc_schedule_on_exec_ctx);
grpc_timer_init(&t->keepalive_watchdog_timer,
- grpc_core::ExecCtx::Get()->Now() + t->keepalive_timeout,
+ grpc_core::Timestamp::Now() + t->keepalive_timeout,
&t->keepalive_watchdog_fired_locked);
t->keepalive_ping_started = true;
}
@@ -2789,7 +2705,7 @@ static void finish_keepalive_ping(void* arg, grpc_error_handle error) {
static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
gpr_log(GPR_INFO, "%s: Finish keepalive ping", t->peer_string.c_str());
@@ -2810,7 +2726,7 @@ static void finish_keepalive_ping_locked(void* arg, grpc_error_handle error) {
GRPC_CLOSURE_INIT(&t->init_keepalive_ping_locked, init_keepalive_ping, t,
grpc_schedule_on_exec_ctx);
grpc_timer_init(&t->keepalive_ping_timer,
- grpc_core::ExecCtx::Get()->Now() + t->keepalive_time,
+ grpc_core::Timestamp::Now() + t->keepalive_time,
&t->init_keepalive_ping_locked);
}
}
@@ -2829,7 +2745,7 @@ static void keepalive_watchdog_fired_locked(void* arg,
grpc_error_handle error) {
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
t->peer_string.c_str());
t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
@@ -2880,187 +2796,6 @@ static void set_pollset_set(grpc_transport* gt, grpc_stream* /*gs*/,
}
//
-// BYTE STREAM
-//
-
-static void reset_byte_stream(void* arg, grpc_error_handle error) {
- grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(arg);
- s->pending_byte_stream = false;
- if (error == GRPC_ERROR_NONE) {
- grpc_chttp2_maybe_complete_recv_message(s->t, s);
- grpc_chttp2_maybe_complete_recv_trailing_metadata(s->t, s);
- } else {
- GPR_ASSERT(error != GRPC_ERROR_NONE);
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, s->on_next, GRPC_ERROR_REF(error));
- s->on_next = nullptr;
- GRPC_ERROR_UNREF(s->byte_stream_error);
- s->byte_stream_error = GRPC_ERROR_NONE;
- grpc_chttp2_cancel_stream(s->t, s, GRPC_ERROR_REF(error));
- s->byte_stream_error = GRPC_ERROR_REF(error);
- }
-}
-
-namespace grpc_core {
-
-Chttp2IncomingByteStream::Chttp2IncomingByteStream(
- grpc_chttp2_transport* transport, grpc_chttp2_stream* stream,
- uint32_t frame_size, uint32_t flags)
- : ByteStream(frame_size, flags),
- transport_(transport),
- stream_(stream),
- refs_(2),
- remaining_bytes_(frame_size) {
- GRPC_ERROR_UNREF(stream->byte_stream_error);
- stream->byte_stream_error = GRPC_ERROR_NONE;
-}
-
-void Chttp2IncomingByteStream::OrphanLocked(
- void* arg, grpc_error_handle /*error_ignored*/) {
- Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
- grpc_chttp2_stream* s = bs->stream_;
- grpc_chttp2_transport* t = s->t;
- bs->Unref();
- s->pending_byte_stream = false;
- grpc_chttp2_maybe_complete_recv_message(t, s);
- grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
-}
-
-void Chttp2IncomingByteStream::Orphan() {
- GPR_TIMER_SCOPE("incoming_byte_stream_destroy", 0);
- transport_->combiner->Run(
- GRPC_CLOSURE_INIT(&destroy_action_,
- &Chttp2IncomingByteStream::OrphanLocked, this, nullptr),
- GRPC_ERROR_NONE);
-}
-
-void Chttp2IncomingByteStream::NextLocked(void* arg,
- grpc_error_handle /*error_ignored*/) {
- Chttp2IncomingByteStream* bs = static_cast<Chttp2IncomingByteStream*>(arg);
- grpc_chttp2_transport* t = bs->transport_;
- grpc_chttp2_stream* s = bs->stream_;
- size_t cur_length = s->frame_storage.length;
- if (!s->read_closed) {
- s->flow_control->IncomingByteStreamUpdate(bs->next_action_.max_size_hint,
- cur_length);
- grpc_chttp2_act_on_flowctl_action(s->flow_control->MakeAction(), t, s);
- }
- GPR_ASSERT(s->unprocessed_incoming_frames_buffer.length == 0);
- if (s->frame_storage.length > 0) {
- grpc_slice_buffer_swap(&s->frame_storage,
- &s->unprocessed_incoming_frames_buffer);
- ExecCtx::Run(DEBUG_LOCATION, bs->next_action_.on_complete, GRPC_ERROR_NONE);
- } else if (s->byte_stream_error != GRPC_ERROR_NONE) {
- ExecCtx::Run(DEBUG_LOCATION, bs->next_action_.on_complete,
- GRPC_ERROR_REF(s->byte_stream_error));
- if (s->data_parser.parsing_frame != nullptr) {
- s->data_parser.parsing_frame->Unref();
- s->data_parser.parsing_frame = nullptr;
- }
- } else if (s->read_closed) {
- if (bs->remaining_bytes_ != 0) {
- s->byte_stream_error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
- "Truncated message", &s->read_closed_error, 1);
- ExecCtx::Run(DEBUG_LOCATION, bs->next_action_.on_complete,
- GRPC_ERROR_REF(s->byte_stream_error));
- if (s->data_parser.parsing_frame != nullptr) {
- s->data_parser.parsing_frame->Unref();
- s->data_parser.parsing_frame = nullptr;
- }
- } else {
- // Should never reach here.
- GPR_ASSERT(false);
- }
- } else {
- s->on_next = bs->next_action_.on_complete;
- }
- bs->Unref();
-}
-
-bool Chttp2IncomingByteStream::Next(size_t max_size_hint,
- grpc_closure* on_complete) {
- GPR_TIMER_SCOPE("incoming_byte_stream_next", 0);
- if (stream_->unprocessed_incoming_frames_buffer.length > 0) {
- return true;
- } else {
- Ref();
- next_action_.max_size_hint = max_size_hint;
- next_action_.on_complete = on_complete;
- transport_->combiner->Run(
- GRPC_CLOSURE_INIT(&next_action_.closure,
- &Chttp2IncomingByteStream::NextLocked, this, nullptr),
- GRPC_ERROR_NONE);
- return false;
- }
-}
-
-grpc_error_handle Chttp2IncomingByteStream::Pull(grpc_slice* slice) {
- GPR_TIMER_SCOPE("incoming_byte_stream_pull", 0);
- grpc_error_handle error;
- if (stream_->unprocessed_incoming_frames_buffer.length > 0) {
- error = grpc_deframe_unprocessed_incoming_frames(
- &stream_->data_parser, stream_,
- &stream_->unprocessed_incoming_frames_buffer, slice, nullptr);
- if (error != GRPC_ERROR_NONE) {
- return error;
- }
- } else {
- error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message");
- stream_->t->combiner->Run(&stream_->reset_byte_stream,
- GRPC_ERROR_REF(error));
- return error;
- }
- return GRPC_ERROR_NONE;
-}
-
-void Chttp2IncomingByteStream::PublishError(grpc_error_handle error) {
- GPR_ASSERT(error != GRPC_ERROR_NONE);
- ExecCtx::Run(DEBUG_LOCATION, stream_->on_next, GRPC_ERROR_REF(error));
- stream_->on_next = nullptr;
- GRPC_ERROR_UNREF(stream_->byte_stream_error);
- stream_->byte_stream_error = GRPC_ERROR_REF(error);
- grpc_chttp2_cancel_stream(transport_, stream_, GRPC_ERROR_REF(error));
-}
-
-grpc_error_handle Chttp2IncomingByteStream::Push(const grpc_slice& slice,
- grpc_slice* slice_out) {
- if (remaining_bytes_ < GRPC_SLICE_LENGTH(slice)) {
- grpc_error_handle error =
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Too many bytes in stream");
- transport_->combiner->Run(&stream_->reset_byte_stream,
- GRPC_ERROR_REF(error));
- grpc_slice_unref_internal(slice);
- return error;
- } else {
- remaining_bytes_ -= static_cast<uint32_t> GRPC_SLICE_LENGTH(slice);
- if (slice_out != nullptr) {
- *slice_out = slice;
- }
- return GRPC_ERROR_NONE;
- }
-}
-
-grpc_error_handle Chttp2IncomingByteStream::Finished(grpc_error_handle error,
- bool reset_on_error) {
- if (error == GRPC_ERROR_NONE) {
- if (remaining_bytes_ != 0) {
- error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Truncated message");
- }
- }
- if (error != GRPC_ERROR_NONE && reset_on_error) {
- transport_->combiner->Run(&stream_->reset_byte_stream,
- GRPC_ERROR_REF(error));
- }
- Unref();
- return error;
-}
-
-void Chttp2IncomingByteStream::Shutdown(grpc_error_handle error) {
- GRPC_ERROR_UNREF(Finished(error, true /* reset_on_error */));
-}
-
-} // namespace grpc_core
-
-//
// RESOURCE QUOTAS
//
@@ -3106,7 +2841,7 @@ static void post_destructive_reclaimer(grpc_chttp2_transport* t) {
static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
- if (error == GRPC_ERROR_NONE &&
+ if (GRPC_ERROR_IS_NONE(error) &&
grpc_chttp2_stream_map_size(&t->stream_map) == 0) {
// Channel with no active streams: send a goaway to try and make it
// disconnect cleanly
@@ -3117,8 +2852,9 @@ static void benign_reclaimer_locked(void* arg, grpc_error_handle error) {
send_goaway(t,
grpc_error_set_int(
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Buffers full"),
- GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM));
- } else if (error == GRPC_ERROR_NONE &&
+ GRPC_ERROR_INT_HTTP2_ERROR, GRPC_HTTP2_ENHANCE_YOUR_CALM),
+ /*immediate_disconnect_hint=*/true);
+ } else if (GRPC_ERROR_IS_NONE(error) &&
GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
gpr_log(GPR_INFO,
"HTTP2: %s - skip benign reclamation, there are still %" PRIdPTR
@@ -3137,7 +2873,7 @@ static void destructive_reclaimer_locked(void* arg, grpc_error_handle error) {
grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
size_t n = grpc_chttp2_stream_map_size(&t->stream_map);
t->destructive_reclaimer_registered = false;
- if (error == GRPC_ERROR_NONE && n > 0) {
+ if (GRPC_ERROR_IS_NONE(error) && n > 0) {
grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(
grpc_chttp2_stream_map_rand(&t->stream_map));
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
@@ -3196,6 +2932,8 @@ const char* grpc_chttp2_initiate_write_reason_string(
return "TRANSPORT_FLOW_CONTROL";
case GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS:
return "SEND_SETTINGS";
+ case GRPC_CHTTP2_INITIATE_WRITE_SETTINGS_ACK:
+ return "SETTINGS_ACK";
case GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING:
return "FLOW_CONTROL_UNSTALLED_BY_SETTING";
case GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_UPDATE:
@@ -3242,7 +2980,8 @@ grpc_chttp2_transport_get_socket_node(grpc_transport* transport) {
}
grpc_transport* grpc_create_chttp2_transport(
- const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client) {
+ const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep,
+ bool is_client) {
auto t = new grpc_chttp2_transport(channel_args, ep, is_client);
return &t->base;
}
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.h
index aab837e484..62161b0e43 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.h
@@ -21,10 +21,15 @@
#include <grpc/support/port_platform.h>
+#include <grpc/slice.h>
+
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channelz.h"
#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/endpoint.h"
-#include "src/core/lib/transport/transport.h"
+#include "src/core/lib/transport/transport_fwd.h"
extern grpc_core::TraceFlag grpc_http_trace;
extern grpc_core::TraceFlag grpc_keepalive_trace;
@@ -36,7 +41,8 @@ extern grpc_core::DebugOnlyTraceFlag grpc_trace_chttp2_hpack_parser;
/// from the caller; if the caller still needs the resource_user after creating
/// a transport, the caller must take another ref.
grpc_transport* grpc_create_chttp2_transport(
- const grpc_channel_args* channel_args, grpc_endpoint* ep, bool is_client);
+ const grpc_core::ChannelArgs& channel_args, grpc_endpoint* ep,
+ bool is_client);
grpc_core::RefCountedPtr<grpc_core::channelz::SocketNode>
grpc_chttp2_transport_get_socket_node(grpc_transport* transport);
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/context_list.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/context_list.cc
index 70e3774699..d714c34c93 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/context_list.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/context_list.cc
@@ -20,6 +20,10 @@
#include "src/core/ext/transport/chttp2/transport/context_list.h"
+#include <stdint.h>
+
+#include "src/core/ext/transport/chttp2/transport/internal.h"
+
namespace {
void (*write_timestamps_callback_g)(void*, grpc_core::Timestamps*,
grpc_error_handle error) = nullptr;
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/context_list.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/context_list.h
index f4963d849c..db8e33ae85 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/context_list.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/context_list.h
@@ -21,8 +21,11 @@
#include <grpc/support/port_platform.h>
-#include "src/core/ext/transport/chttp2/transport/internal.h"
+#include <stddef.h>
+
+#include "src/core/ext/transport/chttp2/transport/frame.h"
#include "src/core/lib/iomgr/buffer_list.h"
+#include "src/core/lib/iomgr/error.h"
namespace grpc_core {
/** A list of RPC Contexts */
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/decode_huff.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/decode_huff.cc
new file mode 100644
index 0000000000..677016b092
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/decode_huff.cc
@@ -0,0 +1,287 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// This file is autogenerated: see
+// tools/codegen/core/gen_huffman_decompressor.cc
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/transport/chttp2/transport/decode_huff.h"
+namespace grpc_core {
+const uint8_t HuffDecoderCommon::table2_0_emit_[10] = {
+ 0x30, 0x31, 0x32, 0x61, 0x63, 0x65, 0x69, 0x6f, 0x73, 0x74};
+const uint8_t HuffDecoderCommon::table2_0_ops_[32] = {
+ 0x02, 0x06, 0x0a, 0x0e, 0x12, 0x16, 0x1a, 0x1e, 0x22, 0x26, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00};
+const uint8_t HuffDecoderCommon::table3_0_emit_[36] = {
+ 0x30, 0x31, 0x32, 0x61, 0x63, 0x65, 0x69, 0x6f, 0x73, 0x74, 0x20, 0x25,
+ 0x2d, 0x2e, 0x2f, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3d, 0x41,
+ 0x5f, 0x62, 0x64, 0x66, 0x67, 0x68, 0x6c, 0x6d, 0x6e, 0x70, 0x72, 0x75};
+const uint8_t HuffDecoderCommon::table3_0_ops_[64] = {
+ 0x01, 0x02, 0x01, 0x06, 0x01, 0x0a, 0x01, 0x0e, 0x01, 0x12, 0x01,
+ 0x16, 0x01, 0x1a, 0x01, 0x1e, 0x01, 0x22, 0x01, 0x26, 0x2a, 0x2e,
+ 0x32, 0x36, 0x3a, 0x3e, 0x42, 0x46, 0x4a, 0x4e, 0x52, 0x56, 0x5a,
+ 0x5e, 0x62, 0x66, 0x6a, 0x6e, 0x72, 0x76, 0x7a, 0x7e, 0x82, 0x86,
+ 0x8a, 0x8e, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00};
+const uint8_t HuffDecoderCommon::table4_0_emit_[22] = {
+ 0x30, 0x31, 0x32, 0x61, 0x63, 0x65, 0x69, 0x6f, 0x73, 0x74, 0x20,
+ 0x25, 0x2d, 0x2e, 0x2f, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39};
+const uint8_t HuffDecoderCommon::table4_0_ops_[64] = {
+ 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x06, 0x01, 0x01, 0x01,
+ 0x0a, 0x01, 0x01, 0x01, 0x0e, 0x01, 0x01, 0x01, 0x12, 0x01, 0x01,
+ 0x01, 0x16, 0x01, 0x01, 0x01, 0x1a, 0x01, 0x01, 0x01, 0x1e, 0x01,
+ 0x01, 0x01, 0x22, 0x01, 0x01, 0x01, 0x26, 0x01, 0x2a, 0x01, 0x2e,
+ 0x01, 0x32, 0x01, 0x36, 0x01, 0x3a, 0x01, 0x3e, 0x01, 0x42, 0x01,
+ 0x46, 0x01, 0x4a, 0x01, 0x4e, 0x01, 0x52, 0x01, 0x56};
+const uint8_t HuffDecoderCommon::table4_1_emit_[46] = {
+ 0x3d, 0x41, 0x5f, 0x62, 0x64, 0x66, 0x67, 0x68, 0x6c, 0x6d, 0x6e, 0x70,
+ 0x72, 0x75, 0x3a, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a,
+ 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56,
+ 0x57, 0x59, 0x6a, 0x6b, 0x71, 0x76, 0x77, 0x78, 0x79, 0x7a};
+const uint8_t HuffDecoderCommon::table4_1_ops_[64] = {
+ 0x01, 0x02, 0x01, 0x06, 0x01, 0x0a, 0x01, 0x0e, 0x01, 0x12, 0x01,
+ 0x16, 0x01, 0x1a, 0x01, 0x1e, 0x01, 0x22, 0x01, 0x26, 0x01, 0x2a,
+ 0x01, 0x2e, 0x01, 0x32, 0x01, 0x36, 0x3a, 0x3e, 0x42, 0x46, 0x4a,
+ 0x4e, 0x52, 0x56, 0x5a, 0x5e, 0x62, 0x66, 0x6a, 0x6e, 0x72, 0x76,
+ 0x7a, 0x7e, 0x82, 0x86, 0x8a, 0x8e, 0x92, 0x96, 0x9a, 0x9e, 0xa2,
+ 0xa6, 0xaa, 0xae, 0xb2, 0xb6, 0x01, 0x01, 0x01, 0x00};
+const uint8_t* const HuffDecoderCommon::table4_emit_[2] = {
+ table4_0_emit_,
+ table4_1_emit_,
+};
+const uint8_t* const HuffDecoderCommon::table4_ops_[2] = {
+ table4_0_ops_,
+ table4_1_ops_,
+};
+const uint8_t HuffDecoderCommon::table1_0_emit_[74] = {
+ 0x30, 0x31, 0x32, 0x61, 0x63, 0x65, 0x69, 0x6f, 0x73, 0x74, 0x20,
+ 0x25, 0x2d, 0x2e, 0x2f, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
+ 0x3d, 0x41, 0x5f, 0x62, 0x64, 0x66, 0x67, 0x68, 0x6c, 0x6d, 0x6e,
+ 0x70, 0x72, 0x75, 0x3a, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
+ 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53,
+ 0x54, 0x55, 0x56, 0x57, 0x59, 0x6a, 0x6b, 0x71, 0x76, 0x77, 0x78,
+ 0x79, 0x7a, 0x26, 0x2a, 0x2c, 0x3b, 0x58, 0x5a};
+const uint16_t HuffDecoderCommon::table1_0_inner_[76] = {
+ 0x0005, 0x0045, 0x0085, 0x00c5, 0x0105, 0x0145, 0x0185, 0x01c5, 0x0205,
+ 0x0245, 0x0286, 0x02c6, 0x0306, 0x0346, 0x0386, 0x03c6, 0x0406, 0x0446,
+ 0x0486, 0x04c6, 0x0506, 0x0546, 0x0586, 0x05c6, 0x0606, 0x0646, 0x0686,
+ 0x06c6, 0x0706, 0x0746, 0x0786, 0x07c6, 0x0806, 0x0846, 0x0886, 0x08c6,
+ 0x0907, 0x0947, 0x0987, 0x09c7, 0x0a07, 0x0a47, 0x0a87, 0x0ac7, 0x0b07,
+ 0x0b47, 0x0b87, 0x0bc7, 0x0c07, 0x0c47, 0x0c87, 0x0cc7, 0x0d07, 0x0d47,
+ 0x0d87, 0x0dc7, 0x0e07, 0x0e47, 0x0e87, 0x0ec7, 0x0f07, 0x0f47, 0x0f87,
+ 0x0fc7, 0x1007, 0x1047, 0x1087, 0x10c7, 0x1108, 0x1148, 0x1188, 0x11c8,
+ 0x1208, 0x1248, 0x0018, 0x0028};
+const uint8_t HuffDecoderCommon::table1_0_outer_[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
+ 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
+ 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7,
+ 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,
+ 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13,
+ 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18,
+ 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23,
+ 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27,
+ 28, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 32, 32, 32,
+ 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 35, 35, 36, 36, 37, 37, 38, 38,
+ 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48,
+ 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, 56, 57, 57,
+ 58, 58, 59, 59, 60, 60, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 66, 66, 67,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75};
+const uint8_t HuffDecoderCommon::table5_0_emit_[4] = {0x21, 0x22, 0x28, 0x29};
+const uint8_t HuffDecoderCommon::table5_0_inner_[4] = {0x02, 0x06, 0x0a, 0x0e};
+const uint8_t HuffDecoderCommon::table5_0_outer_[4] = {0, 1, 2, 3};
+const uint8_t HuffDecoderCommon::table7_0_emit_[1] = {0x3f};
+const uint8_t HuffDecoderCommon::table7_0_inner_[3] = {0x02, 0x01, 0x00};
+const uint8_t HuffDecoderCommon::table7_0_outer_[4] = {0, 1, 1, 2};
+const uint8_t HuffDecoderCommon::table8_0_emit_[4] = {0x3f, 0x27, 0x2b, 0x7c};
+const uint8_t HuffDecoderCommon::table8_0_inner_[6] = {0x01, 0x02, 0x06,
+ 0x0a, 0x0e, 0x00};
+const uint8_t HuffDecoderCommon::table8_0_outer_[8] = {0, 1, 2, 3, 4, 0, 0, 5};
+const uint8_t HuffDecoderCommon::table9_0_emit_[6] = {0x3f, 0x27, 0x2b,
+ 0x7c, 0x23, 0x3e};
+const uint8_t HuffDecoderCommon::table9_0_inner_[8] = {0x01, 0x02, 0x06, 0x0a,
+ 0x0e, 0x12, 0x16, 0x00};
+const uint8_t HuffDecoderCommon::table9_0_outer_[16] = {0, 0, 0, 1, 0, 2, 0, 3,
+ 0, 4, 5, 6, 0, 0, 0, 7};
+const uint8_t HuffDecoderCommon::table10_0_emit_[12] = {
+ 0x3f, 0x27, 0x2b, 0x7c, 0x23, 0x3e, 0x00, 0x24, 0x40, 0x5b, 0x5d, 0x7e};
+const uint8_t HuffDecoderCommon::table10_0_ops_[32] = {
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01,
+ 0x06, 0x01, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x01, 0x0e, 0x01, 0x12,
+ 0x01, 0x16, 0x1a, 0x1e, 0x22, 0x26, 0x2a, 0x2e, 0x01, 0x00};
+const uint8_t HuffDecoderCommon::table11_0_emit_[14] = {
+ 0x3f, 0x27, 0x2b, 0x7c, 0x23, 0x3e, 0x00,
+ 0x24, 0x40, 0x5b, 0x5d, 0x7e, 0x5e, 0x7d};
+const uint8_t HuffDecoderCommon::table11_0_ops_[64] = {
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0a, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0e, 0x01, 0x01, 0x01, 0x12,
+ 0x01, 0x01, 0x01, 0x16, 0x01, 0x1a, 0x01, 0x1e, 0x01, 0x22, 0x01,
+ 0x26, 0x01, 0x2a, 0x01, 0x2e, 0x32, 0x36, 0x01, 0x00};
+const uint8_t HuffDecoderCommon::table6_0_emit_[3] = {0x3f, 0x27, 0x2b};
+const uint8_t HuffDecoderCommon::table6_0_ops_[64] = {
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x13,
+ 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
+ 0x13, 0x13, 0x13, 0x13, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23,
+ 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23};
+const uint8_t HuffDecoderCommon::table6_1_emit_[14] = {
+ 0x7c, 0x23, 0x3e, 0x00, 0x24, 0x40, 0x5b,
+ 0x5d, 0x7e, 0x5e, 0x7d, 0x3c, 0x60, 0x7b};
+const uint8_t HuffDecoderCommon::table6_1_ops_[64] = {
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
+ 0x14, 0x14, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x35,
+ 0x35, 0x35, 0x35, 0x45, 0x45, 0x45, 0x45, 0x55, 0x55, 0x55, 0x55,
+ 0x65, 0x65, 0x65, 0x65, 0x75, 0x75, 0x75, 0x75, 0x85, 0x85, 0x85,
+ 0x85, 0x96, 0x96, 0xa6, 0xa6, 0xb7, 0xc7, 0xd7, 0x0f};
+const uint8_t* const HuffDecoderCommon::table6_emit_[2] = {
+ table6_0_emit_,
+ table6_1_emit_,
+};
+const uint8_t* const HuffDecoderCommon::table6_ops_[2] = {
+ table6_0_ops_,
+ table6_1_ops_,
+};
+const uint8_t HuffDecoderCommon::table13_0_emit_[3] = {0x5c, 0xc3, 0xd0};
+const uint8_t HuffDecoderCommon::table13_0_inner_[5] = {0x02, 0x06, 0x0a, 0x01,
+ 0x00};
+const uint8_t HuffDecoderCommon::table13_0_outer_[16] = {
+ 0, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4};
+const uint8_t HuffDecoderCommon::table14_0_emit_[11] = {
+ 0x5c, 0xc3, 0xd0, 0x80, 0x82, 0x83, 0xa2, 0xb8, 0xc2, 0xe0, 0xe2};
+const uint8_t HuffDecoderCommon::table14_0_ops_[32] = {
+ 0x01, 0x02, 0x01, 0x06, 0x01, 0x0a, 0x0e, 0x12, 0x16, 0x1a, 0x1e,
+ 0x22, 0x26, 0x2a, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00};
+const uint8_t HuffDecoderCommon::table15_0_emit_[24] = {
+ 0x5c, 0xc3, 0xd0, 0x80, 0x82, 0x83, 0xa2, 0xb8, 0xc2, 0xe0, 0xe2, 0x99,
+ 0xa1, 0xa7, 0xac, 0xb0, 0xb1, 0xb3, 0xd1, 0xd8, 0xd9, 0xe3, 0xe5, 0xe6};
+const uint8_t HuffDecoderCommon::table15_0_ops_[64] = {
+ 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x06, 0x01, 0x01, 0x01,
+ 0x0a, 0x01, 0x0e, 0x01, 0x12, 0x01, 0x16, 0x01, 0x1a, 0x01, 0x1e,
+ 0x01, 0x22, 0x01, 0x26, 0x01, 0x2a, 0x2e, 0x32, 0x36, 0x3a, 0x3e,
+ 0x42, 0x46, 0x4a, 0x4e, 0x52, 0x56, 0x5a, 0x5e, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00};
+const uint8_t HuffDecoderCommon::table16_0_emit_[50] = {
+ 0x5c, 0xc3, 0xd0, 0x80, 0x82, 0x83, 0xa2, 0xb8, 0xc2, 0xe0,
+ 0xe2, 0x99, 0xa1, 0xa7, 0xac, 0xb0, 0xb1, 0xb3, 0xd1, 0xd8,
+ 0xd9, 0xe3, 0xe5, 0xe6, 0x81, 0x84, 0x85, 0x86, 0x88, 0x92,
+ 0x9a, 0x9c, 0xa0, 0xa3, 0xa4, 0xa9, 0xaa, 0xad, 0xb2, 0xb5,
+ 0xb9, 0xba, 0xbb, 0xbd, 0xbe, 0xc4, 0xc6, 0xe4, 0xe8, 0xe9};
+const uint8_t HuffDecoderCommon::table16_0_ops_[128] = {
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0a,
+ 0x01, 0x01, 0x01, 0x0e, 0x01, 0x01, 0x01, 0x12, 0x01, 0x01, 0x01, 0x16,
+ 0x01, 0x01, 0x01, 0x1a, 0x01, 0x01, 0x01, 0x1e, 0x01, 0x01, 0x01, 0x22,
+ 0x01, 0x01, 0x01, 0x26, 0x01, 0x01, 0x01, 0x2a, 0x01, 0x2e, 0x01, 0x32,
+ 0x01, 0x36, 0x01, 0x3a, 0x01, 0x3e, 0x01, 0x42, 0x01, 0x46, 0x01, 0x4a,
+ 0x01, 0x4e, 0x01, 0x52, 0x01, 0x56, 0x01, 0x5a, 0x01, 0x5e, 0x62, 0x66,
+ 0x6a, 0x6e, 0x72, 0x76, 0x7a, 0x7e, 0x82, 0x86, 0x8a, 0x8e, 0x92, 0x96,
+ 0x9a, 0x9e, 0xa2, 0xa6, 0xaa, 0xae, 0xb2, 0xb6, 0xba, 0xbe, 0xc2, 0xc6,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00};
+const uint8_t HuffDecoderCommon::table12_0_emit_[79] = {
+ 0x5c, 0xc3, 0xd0, 0x80, 0x82, 0x83, 0xa2, 0xb8, 0xc2, 0xe0, 0xe2, 0x99,
+ 0xa1, 0xa7, 0xac, 0xb0, 0xb1, 0xb3, 0xd1, 0xd8, 0xd9, 0xe3, 0xe5, 0xe6,
+ 0x81, 0x84, 0x85, 0x86, 0x88, 0x92, 0x9a, 0x9c, 0xa0, 0xa3, 0xa4, 0xa9,
+ 0xaa, 0xad, 0xb2, 0xb5, 0xb9, 0xba, 0xbb, 0xbd, 0xbe, 0xc4, 0xc6, 0xe4,
+ 0xe8, 0xe9, 0x01, 0x87, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8f, 0x93, 0x95,
+ 0x96, 0x97, 0x98, 0x9b, 0x9d, 0x9e, 0xa5, 0xa6, 0xa8, 0xae, 0xaf, 0xb4,
+ 0xb6, 0xb7, 0xbc, 0xbf, 0xc5, 0xe7, 0xef};
+const uint16_t HuffDecoderCommon::table12_0_inner_[90] = {
+ 0x0004, 0x0104, 0x0204, 0x0305, 0x0405, 0x0505, 0x0605, 0x0705, 0x0805,
+ 0x0905, 0x0a05, 0x0b06, 0x0c06, 0x0d06, 0x0e06, 0x0f06, 0x1006, 0x1106,
+ 0x1206, 0x1306, 0x1406, 0x1506, 0x1606, 0x1706, 0x1807, 0x1907, 0x1a07,
+ 0x1b07, 0x1c07, 0x1d07, 0x1e07, 0x1f07, 0x2007, 0x2107, 0x2207, 0x2307,
+ 0x2407, 0x2507, 0x2607, 0x2707, 0x2807, 0x2907, 0x2a07, 0x2b07, 0x2c07,
+ 0x2d07, 0x2e07, 0x2f07, 0x3007, 0x3107, 0x3208, 0x3308, 0x3408, 0x3508,
+ 0x3608, 0x3708, 0x3808, 0x3908, 0x3a08, 0x3b08, 0x3c08, 0x3d08, 0x3e08,
+ 0x3f08, 0x4008, 0x4108, 0x4208, 0x4308, 0x4408, 0x4508, 0x4608, 0x4708,
+ 0x4808, 0x4908, 0x4a08, 0x4b08, 0x4c08, 0x4d08, 0x4e08, 0x0018, 0x0028,
+ 0x0038, 0x0048, 0x0058, 0x0068, 0x0078, 0x0088, 0x0098, 0x00a8, 0x00b8};
+const uint8_t HuffDecoderCommon::table12_0_outer_[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4,
+ 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6,
+ 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8,
+ 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11,
+ 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16,
+ 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20,
+ 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 25, 25, 26, 26, 27,
+ 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36,
+ 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46,
+ 46, 47, 47, 48, 48, 49, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89};
+const uint8_t HuffDecoderCommon::table17_0_emit_[2] = {0x09, 0x8e};
+const uint8_t HuffDecoderCommon::table17_0_inner_[2] = {0x01, 0x03};
+const uint8_t HuffDecoderCommon::table17_0_outer_[2] = {0, 1};
+const uint8_t HuffDecoderCommon::table18_0_emit_[2] = {0x90, 0x91};
+const uint8_t HuffDecoderCommon::table18_0_inner_[2] = {0x01, 0x03};
+const uint8_t HuffDecoderCommon::table18_0_outer_[2] = {0, 1};
+const uint8_t HuffDecoderCommon::table19_0_emit_[2] = {0x94, 0x9f};
+const uint8_t HuffDecoderCommon::table20_0_emit_[2] = {0xab, 0xce};
+const uint8_t HuffDecoderCommon::table21_0_emit_[2] = {0xd7, 0xe1};
+const uint8_t HuffDecoderCommon::table22_0_emit_[2] = {0xec, 0xed};
+const uint8_t HuffDecoderCommon::table23_0_emit_[4] = {0xc7, 0xcf, 0xea, 0xeb};
+const uint8_t HuffDecoderCommon::table23_0_outer_[4] = {0, 1, 2, 3};
+const uint8_t HuffDecoderCommon::table24_0_emit_[8] = {0xc0, 0xc1, 0xc8, 0xc9,
+ 0xca, 0xcd, 0xd2, 0xd5};
+const uint8_t HuffDecoderCommon::table24_0_inner_[8] = {0x03, 0x07, 0x0b, 0x0f,
+ 0x13, 0x17, 0x1b, 0x1f};
+const uint8_t HuffDecoderCommon::table24_0_outer_[8] = {0, 1, 2, 3, 4, 5, 6, 7};
+const uint8_t HuffDecoderCommon::table25_0_emit_[16] = {
+ 0xd3, 0xd4, 0xd6, 0xdd, 0xde, 0xdf, 0xf1, 0xf4,
+ 0xf5, 0xf6, 0xf7, 0xf8, 0xfa, 0xfb, 0xfc, 0xfd};
+const uint8_t HuffDecoderCommon::table25_0_inner_[16] = {
+ 0x04, 0x0c, 0x14, 0x1c, 0x24, 0x2c, 0x34, 0x3c,
+ 0x44, 0x4c, 0x54, 0x5c, 0x64, 0x6c, 0x74, 0x7c};
+const uint8_t HuffDecoderCommon::table25_0_outer_[16] = {
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
+const uint8_t HuffDecoderCommon::table27_0_emit_[1] = {0xfe};
+const uint8_t HuffDecoderCommon::table27_0_inner_[3] = {0x02, 0x01, 0x00};
+const uint8_t HuffDecoderCommon::table27_0_outer_[16] = {
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2};
+const uint8_t HuffDecoderCommon::table26_0_emit_[30] = {
+ 0xfe, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0b, 0x0c,
+ 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x17, 0x18,
+ 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x7f, 0xdc, 0xf9};
+const uint16_t HuffDecoderCommon::table26_0_inner_[31] = {
+ 0x0004, 0x0015, 0x0025, 0x0035, 0x0045, 0x0055, 0x0065, 0x0075,
+ 0x0085, 0x0095, 0x00a5, 0x00b5, 0x00c5, 0x00d5, 0x00e5, 0x00f5,
+ 0x0105, 0x0115, 0x0125, 0x0135, 0x0145, 0x0155, 0x0165, 0x0175,
+ 0x0185, 0x0195, 0x01a5, 0x01b5, 0x01c5, 0x01d5, 0x000d};
+const uint8_t HuffDecoderCommon::table26_0_outer_[32] = {
+ 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30};
+const uint8_t HuffDecoderCommon::table28_0_emit_[3] = {0x0a, 0x0d, 0x16};
+const uint8_t HuffDecoderCommon::table28_0_inner_[4] = {0x02, 0x0a, 0x12, 0x06};
+const uint8_t HuffDecoderCommon::table30_0_emit_[7] = {0xda, 0xdb, 0xee, 0xf0,
+ 0xf2, 0xf3, 0xff};
+const uint8_t HuffDecoderCommon::table30_0_inner_[8] = {0x02, 0x06, 0x0a, 0x0e,
+ 0x12, 0x16, 0x1a, 0x01};
+const uint8_t HuffDecoderCommon::table29_0_emit_[9] = {
+ 0xda, 0xdb, 0xee, 0xf0, 0xf2, 0xf3, 0xff, 0xcb, 0xcc};
+const uint8_t HuffDecoderCommon::table29_0_inner_[9] = {
+ 0x03, 0x0b, 0x13, 0x1b, 0x23, 0x2b, 0x33, 0x3c, 0x44};
+const uint8_t HuffDecoderCommon::table29_0_outer_[16] = {
+ 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 8};
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/decode_huff.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/decode_huff.h
new file mode 100644
index 0000000000..6fb13efd29
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/decode_huff.h
@@ -0,0 +1,1018 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+////////////////////////////////////////////////////////////////////////////////
+// This file is autogenerated: see
+// tools/codegen/core/gen_huffman_decompressor.cc
+
+#ifndef GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_DECODE_HUFF_H
+#define GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_DECODE_HUFF_H
+#include <grpc/support/port_platform.h>
+
+#include <cstddef>
+#include <cstdint>
+// GEOMETRY: 8,7,8,5
+namespace grpc_core {
+class HuffDecoderCommon {
+ protected:
+ static inline uint64_t GetOp2(size_t i) { return table2_0_ops_[i]; }
+ static inline uint64_t GetEmit2(size_t, size_t emit) {
+ return table2_0_emit_[emit];
+ }
+ static inline uint64_t GetOp3(size_t i) { return table3_0_ops_[i]; }
+ static inline uint64_t GetEmit3(size_t, size_t emit) {
+ return table3_0_emit_[emit];
+ }
+ static inline uint64_t GetOp4(size_t i) {
+ return table4_ops_[i >> 6][i & 0x3f];
+ }
+ static inline uint64_t GetEmit4(size_t i, size_t emit) {
+ return table4_emit_[i >> 6][emit];
+ }
+ static inline uint64_t GetOp1(size_t i) {
+ return table1_0_inner_[table1_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit1(size_t, size_t emit) {
+ return table1_0_emit_[emit];
+ }
+ static inline uint64_t GetOp5(size_t i) {
+ return table5_0_inner_[table5_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit5(size_t, size_t emit) {
+ return table5_0_emit_[emit];
+ }
+ static inline uint64_t GetOp7(size_t i) {
+ return table7_0_inner_[table7_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit7(size_t, size_t emit) {
+ return table7_0_emit_[emit];
+ }
+ static inline uint64_t GetOp8(size_t i) {
+ return table8_0_inner_[table8_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit8(size_t, size_t emit) {
+ return table8_0_emit_[emit];
+ }
+ static inline uint64_t GetOp9(size_t i) {
+ return table9_0_inner_[table9_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit9(size_t, size_t emit) {
+ return table9_0_emit_[emit];
+ }
+ static inline uint64_t GetOp10(size_t i) { return table10_0_ops_[i]; }
+ static inline uint64_t GetEmit10(size_t, size_t emit) {
+ return table10_0_emit_[emit];
+ }
+ static inline uint64_t GetOp11(size_t i) { return table11_0_ops_[i]; }
+ static inline uint64_t GetEmit11(size_t, size_t emit) {
+ return table11_0_emit_[emit];
+ }
+ static inline uint64_t GetOp6(size_t i) {
+ return table6_ops_[i >> 6][i & 0x3f];
+ }
+ static inline uint64_t GetEmit6(size_t i, size_t emit) {
+ return table6_emit_[i >> 6][emit];
+ }
+ static inline uint64_t GetOp13(size_t i) {
+ return table13_0_inner_[table13_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit13(size_t, size_t emit) {
+ return table13_0_emit_[emit];
+ }
+ static inline uint64_t GetOp14(size_t i) { return table14_0_ops_[i]; }
+ static inline uint64_t GetEmit14(size_t, size_t emit) {
+ return table14_0_emit_[emit];
+ }
+ static inline uint64_t GetOp15(size_t i) { return table15_0_ops_[i]; }
+ static inline uint64_t GetEmit15(size_t, size_t emit) {
+ return table15_0_emit_[emit];
+ }
+ static inline uint64_t GetOp16(size_t i) { return table16_0_ops_[i]; }
+ static inline uint64_t GetEmit16(size_t, size_t emit) {
+ return table16_0_emit_[emit];
+ }
+ static inline uint64_t GetOp12(size_t i) {
+ return table12_0_inner_[table12_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit12(size_t, size_t emit) {
+ return table12_0_emit_[emit];
+ }
+ static inline uint64_t GetOp17(size_t i) {
+ return table17_0_inner_[table17_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit17(size_t, size_t emit) {
+ return table17_0_emit_[emit];
+ }
+ static inline uint64_t GetOp18(size_t i) {
+ return table18_0_inner_[table18_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit18(size_t, size_t emit) {
+ return table18_0_emit_[emit];
+ }
+ static inline uint64_t GetOp19(size_t i) {
+ return table17_0_inner_[table18_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit19(size_t, size_t emit) {
+ return table19_0_emit_[emit];
+ }
+ static inline uint64_t GetOp20(size_t i) {
+ return table17_0_inner_[table18_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit20(size_t, size_t emit) {
+ return table20_0_emit_[emit];
+ }
+ static inline uint64_t GetOp21(size_t i) {
+ return table17_0_inner_[table18_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit21(size_t, size_t emit) {
+ return table21_0_emit_[emit];
+ }
+ static inline uint64_t GetOp22(size_t i) {
+ return table17_0_inner_[table18_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit22(size_t, size_t emit) {
+ return table22_0_emit_[emit];
+ }
+ static inline uint64_t GetOp23(size_t i) {
+ return table5_0_inner_[table23_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit23(size_t, size_t emit) {
+ return table23_0_emit_[emit];
+ }
+ static inline uint64_t GetOp24(size_t i) {
+ return table24_0_inner_[table24_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit24(size_t, size_t emit) {
+ return table24_0_emit_[emit];
+ }
+ static inline uint64_t GetOp25(size_t i) {
+ return table25_0_inner_[table25_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit25(size_t, size_t emit) {
+ return table25_0_emit_[emit];
+ }
+ static inline uint64_t GetOp27(size_t i) {
+ return table27_0_inner_[table27_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit27(size_t, size_t emit) {
+ return table27_0_emit_[emit];
+ }
+ static inline uint64_t GetOp26(size_t i) {
+ return table26_0_inner_[table26_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit26(size_t, size_t emit) {
+ return table26_0_emit_[emit];
+ }
+ static inline uint64_t GetOp28(size_t i) {
+ return table28_0_inner_[table5_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit28(size_t, size_t emit) {
+ return table28_0_emit_[emit];
+ }
+ static inline uint64_t GetOp30(size_t i) {
+ return table30_0_inner_[table24_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit30(size_t, size_t emit) {
+ return table30_0_emit_[emit];
+ }
+ static inline uint64_t GetOp29(size_t i) {
+ return table29_0_inner_[table29_0_outer_[i]];
+ }
+ static inline uint64_t GetEmit29(size_t, size_t emit) {
+ return table29_0_emit_[emit];
+ }
+
+ private:
+ static const uint8_t table2_0_emit_[10];
+ static const uint8_t table2_0_ops_[32];
+ static const uint8_t table3_0_emit_[36];
+ static const uint8_t table3_0_ops_[64];
+ static const uint8_t table4_0_emit_[22];
+ static const uint8_t table4_0_ops_[64];
+ static const uint8_t table4_1_emit_[46];
+ static const uint8_t table4_1_ops_[64];
+ static const uint8_t* const table4_emit_[2];
+ static const uint8_t* const table4_ops_[2];
+ static const uint8_t table1_0_emit_[74];
+ static const uint16_t table1_0_inner_[76];
+ static const uint8_t table1_0_outer_[256];
+ static const uint8_t table5_0_emit_[4];
+ static const uint8_t table5_0_inner_[4];
+ static const uint8_t table5_0_outer_[4];
+ static const uint8_t table7_0_emit_[1];
+ static const uint8_t table7_0_inner_[3];
+ static const uint8_t table7_0_outer_[4];
+ static const uint8_t table8_0_emit_[4];
+ static const uint8_t table8_0_inner_[6];
+ static const uint8_t table8_0_outer_[8];
+ static const uint8_t table9_0_emit_[6];
+ static const uint8_t table9_0_inner_[8];
+ static const uint8_t table9_0_outer_[16];
+ static const uint8_t table10_0_emit_[12];
+ static const uint8_t table10_0_ops_[32];
+ static const uint8_t table11_0_emit_[14];
+ static const uint8_t table11_0_ops_[64];
+ static const uint8_t table6_0_emit_[3];
+ static const uint8_t table6_0_ops_[64];
+ static const uint8_t table6_1_emit_[14];
+ static const uint8_t table6_1_ops_[64];
+ static const uint8_t* const table6_emit_[2];
+ static const uint8_t* const table6_ops_[2];
+ static const uint8_t table13_0_emit_[3];
+ static const uint8_t table13_0_inner_[5];
+ static const uint8_t table13_0_outer_[16];
+ static const uint8_t table14_0_emit_[11];
+ static const uint8_t table14_0_ops_[32];
+ static const uint8_t table15_0_emit_[24];
+ static const uint8_t table15_0_ops_[64];
+ static const uint8_t table16_0_emit_[50];
+ static const uint8_t table16_0_ops_[128];
+ static const uint8_t table12_0_emit_[79];
+ static const uint16_t table12_0_inner_[90];
+ static const uint8_t table12_0_outer_[256];
+ static const uint8_t table17_0_emit_[2];
+ static const uint8_t table17_0_inner_[2];
+ static const uint8_t table17_0_outer_[2];
+ static const uint8_t table18_0_emit_[2];
+ static const uint8_t table18_0_inner_[2];
+ static const uint8_t table18_0_outer_[2];
+ static const uint8_t table19_0_emit_[2];
+ static const uint8_t table20_0_emit_[2];
+ static const uint8_t table21_0_emit_[2];
+ static const uint8_t table22_0_emit_[2];
+ static const uint8_t table23_0_emit_[4];
+ static const uint8_t table23_0_outer_[4];
+ static const uint8_t table24_0_emit_[8];
+ static const uint8_t table24_0_inner_[8];
+ static const uint8_t table24_0_outer_[8];
+ static const uint8_t table25_0_emit_[16];
+ static const uint8_t table25_0_inner_[16];
+ static const uint8_t table25_0_outer_[16];
+ static const uint8_t table27_0_emit_[1];
+ static const uint8_t table27_0_inner_[3];
+ static const uint8_t table27_0_outer_[16];
+ static const uint8_t table26_0_emit_[30];
+ static const uint16_t table26_0_inner_[31];
+ static const uint8_t table26_0_outer_[32];
+ static const uint8_t table28_0_emit_[3];
+ static const uint8_t table28_0_inner_[4];
+ static const uint8_t table30_0_emit_[7];
+ static const uint8_t table30_0_inner_[8];
+ static const uint8_t table29_0_emit_[9];
+ static const uint8_t table29_0_inner_[9];
+ static const uint8_t table29_0_outer_[16];
+};
+template <typename F>
+class HuffDecoder : public HuffDecoderCommon {
+ public:
+ HuffDecoder(F sink, const uint8_t* begin, const uint8_t* end)
+ : sink_(sink), begin_(begin), end_(end) {}
+ bool Run() {
+ while (!done_) {
+ if (!RefillTo8()) {
+ Done0();
+ break;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 8)) & 0xff;
+ const auto op = GetOp1(index);
+ const int consumed = op & 15;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 6;
+ switch ((op >> 4) & 3) {
+ case 1: {
+ DecodeStep0();
+ break;
+ }
+ case 2: {
+ DecodeStep1();
+ break;
+ }
+ case 0: {
+ sink_(GetEmit1(index, emit_ofs + 0));
+ break;
+ }
+ }
+ }
+ return ok_;
+ }
+
+ private:
+ bool RefillTo8() {
+ switch (buffer_len_) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7: {
+ return Read1();
+ }
+ }
+ return true;
+ }
+ bool Read1() {
+ if (end_ - begin_ < 1) return false;
+ buffer_ <<= 8;
+ buffer_ |= static_cast<uint64_t>(*begin_++) << 0;
+ buffer_len_ += 8;
+ return true;
+ }
+ void Done0() {
+ done_ = true;
+ switch (buffer_len_) {
+ case 7: {
+ const auto index = buffer_ & 127;
+ const auto op = GetOp4(index);
+ switch (op & 3) {
+ case 1: {
+ ok_ = false;
+ break;
+ }
+ case 2: {
+ sink_(GetEmit4(index, op >> 2));
+ break;
+ }
+ }
+ return;
+ }
+ case 5: {
+ const auto index = buffer_ & 31;
+ const auto op = GetOp2(index);
+ switch (op & 3) {
+ case 1: {
+ ok_ = false;
+ break;
+ }
+ case 2: {
+ sink_(GetEmit2(index, op >> 2));
+ break;
+ }
+ }
+ return;
+ }
+ case 6: {
+ const auto index = buffer_ & 63;
+ const auto op = GetOp3(index);
+ switch (op & 3) {
+ case 1: {
+ ok_ = false;
+ break;
+ }
+ case 2: {
+ sink_(GetEmit3(index, op >> 2));
+ break;
+ }
+ }
+ return;
+ }
+ case 1:
+ case 2:
+ case 3:
+ case 4: {
+ ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1;
+ return;
+ }
+ case 0: {
+ return;
+ }
+ }
+ }
+ void DecodeStep0() {
+ if (!RefillTo2()) {
+ Done1();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 2)) & 0x3;
+ const auto op = GetOp5(index);
+ const int consumed = op & 3;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 2;
+ sink_(GetEmit5(index, emit_ofs + 0));
+ }
+ bool RefillTo2() {
+ switch (buffer_len_) {
+ case 0:
+ case 1: {
+ return Read1();
+ }
+ }
+ return true;
+ }
+ void Done1() {
+ done_ = true;
+ switch (buffer_len_) {
+ case 0:
+ case 1: {
+ ok_ = false;
+ return;
+ }
+ }
+ }
+ void DecodeStep1() {
+ if (!RefillTo7()) {
+ Done2();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 7)) & 0x7f;
+ const auto op = GetOp6(index);
+ const int consumed = op & 7;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 4;
+ switch ((op >> 3) & 1) {
+ case 1: {
+ DecodeStep2();
+ break;
+ }
+ case 0: {
+ sink_(GetEmit6(index, emit_ofs + 0));
+ break;
+ }
+ }
+ }
+ bool RefillTo7() {
+ switch (buffer_len_) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6: {
+ return Read1();
+ }
+ }
+ return true;
+ }
+ void Done2() {
+ done_ = true;
+ switch (buffer_len_) {
+ case 4: {
+ const auto index = buffer_ & 15;
+ const auto op = GetOp9(index);
+ switch (op & 3) {
+ case 1: {
+ ok_ = false;
+ break;
+ }
+ case 2: {
+ sink_(GetEmit9(index, op >> 2));
+ break;
+ }
+ }
+ return;
+ }
+ case 5: {
+ const auto index = buffer_ & 31;
+ const auto op = GetOp10(index);
+ switch (op & 3) {
+ case 1: {
+ ok_ = false;
+ break;
+ }
+ case 2: {
+ sink_(GetEmit10(index, op >> 2));
+ break;
+ }
+ }
+ return;
+ }
+ case 2: {
+ const auto index = buffer_ & 3;
+ const auto op = GetOp7(index);
+ switch (op & 3) {
+ case 1: {
+ ok_ = false;
+ break;
+ }
+ case 2: {
+ sink_(GetEmit7(index, op >> 2));
+ break;
+ }
+ }
+ return;
+ }
+ case 6: {
+ const auto index = buffer_ & 63;
+ const auto op = GetOp11(index);
+ switch (op & 3) {
+ case 1: {
+ ok_ = false;
+ break;
+ }
+ case 2: {
+ sink_(GetEmit11(index, op >> 2));
+ break;
+ }
+ }
+ return;
+ }
+ case 3: {
+ const auto index = buffer_ & 7;
+ const auto op = GetOp8(index);
+ switch (op & 3) {
+ case 1: {
+ ok_ = false;
+ break;
+ }
+ case 2: {
+ sink_(GetEmit8(index, op >> 2));
+ break;
+ }
+ }
+ return;
+ }
+ case 1: {
+ ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1;
+ return;
+ }
+ case 0: {
+ return;
+ }
+ }
+ }
+ void DecodeStep2() {
+ if (!RefillTo8()) {
+ Done3();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 8)) & 0xff;
+ const auto op = GetOp12(index);
+ const int consumed = op & 15;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 8;
+ switch ((op >> 4) & 15) {
+ case 8: {
+ DecodeStep10();
+ break;
+ }
+ case 10: {
+ DecodeStep11();
+ break;
+ }
+ case 11: {
+ DecodeStep12();
+ break;
+ }
+ case 9: {
+ DecodeStep14();
+ break;
+ }
+ case 1: {
+ DecodeStep3();
+ break;
+ }
+ case 2: {
+ DecodeStep4();
+ break;
+ }
+ case 3: {
+ DecodeStep5();
+ break;
+ }
+ case 4: {
+ DecodeStep6();
+ break;
+ }
+ case 5: {
+ DecodeStep7();
+ break;
+ }
+ case 6: {
+ DecodeStep8();
+ break;
+ }
+ case 7: {
+ DecodeStep9();
+ break;
+ }
+ case 0: {
+ sink_(GetEmit12(index, emit_ofs + 0));
+ break;
+ }
+ }
+ }
+ void Done3() {
+ done_ = true;
+ switch (buffer_len_) {
+ case 7: {
+ const auto index = buffer_ & 127;
+ const auto op = GetOp16(index);
+ switch (op & 3) {
+ case 1: {
+ ok_ = false;
+ break;
+ }
+ case 2: {
+ sink_(GetEmit16(index, op >> 2));
+ break;
+ }
+ }
+ return;
+ }
+ case 4: {
+ const auto index = buffer_ & 15;
+ const auto op = GetOp13(index);
+ switch (op & 3) {
+ case 1: {
+ ok_ = false;
+ break;
+ }
+ case 2: {
+ sink_(GetEmit13(index, op >> 2));
+ break;
+ }
+ }
+ return;
+ }
+ case 5: {
+ const auto index = buffer_ & 31;
+ const auto op = GetOp14(index);
+ switch (op & 3) {
+ case 1: {
+ ok_ = false;
+ break;
+ }
+ case 2: {
+ sink_(GetEmit14(index, op >> 2));
+ break;
+ }
+ }
+ return;
+ }
+ case 6: {
+ const auto index = buffer_ & 63;
+ const auto op = GetOp15(index);
+ switch (op & 3) {
+ case 1: {
+ ok_ = false;
+ break;
+ }
+ case 2: {
+ sink_(GetEmit15(index, op >> 2));
+ break;
+ }
+ }
+ return;
+ }
+ case 1:
+ case 2:
+ case 3: {
+ ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1;
+ return;
+ }
+ case 0: {
+ return;
+ }
+ }
+ }
+ void DecodeStep3() {
+ if (!RefillTo1()) {
+ Done4();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1;
+ const auto op = GetOp17(index);
+ const int consumed = op & 1;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 1;
+ sink_(GetEmit17(index, emit_ofs + 0));
+ }
+ bool RefillTo1() {
+ switch (buffer_len_) {
+ case 0: {
+ return Read1();
+ }
+ }
+ return true;
+ }
+ void Done4() {
+ done_ = true;
+ ok_ = false;
+ }
+ void DecodeStep4() {
+ if (!RefillTo1()) {
+ Done5();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1;
+ const auto op = GetOp18(index);
+ const int consumed = op & 1;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 1;
+ sink_(GetEmit18(index, emit_ofs + 0));
+ }
+ void Done5() {
+ done_ = true;
+ ok_ = false;
+ }
+ void DecodeStep5() {
+ if (!RefillTo1()) {
+ Done6();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1;
+ const auto op = GetOp19(index);
+ const int consumed = op & 1;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 1;
+ sink_(GetEmit19(index, emit_ofs + 0));
+ }
+ void Done6() {
+ done_ = true;
+ ok_ = false;
+ }
+ void DecodeStep6() {
+ if (!RefillTo1()) {
+ Done7();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1;
+ const auto op = GetOp20(index);
+ const int consumed = op & 1;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 1;
+ sink_(GetEmit20(index, emit_ofs + 0));
+ }
+ void Done7() {
+ done_ = true;
+ ok_ = false;
+ }
+ void DecodeStep7() {
+ if (!RefillTo1()) {
+ Done8();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1;
+ const auto op = GetOp21(index);
+ const int consumed = op & 1;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 1;
+ sink_(GetEmit21(index, emit_ofs + 0));
+ }
+ void Done8() {
+ done_ = true;
+ ok_ = false;
+ }
+ void DecodeStep8() {
+ if (!RefillTo1()) {
+ Done9();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 1)) & 0x1;
+ const auto op = GetOp22(index);
+ const int consumed = op & 1;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 1;
+ sink_(GetEmit22(index, emit_ofs + 0));
+ }
+ void Done9() {
+ done_ = true;
+ ok_ = false;
+ }
+ void DecodeStep9() {
+ if (!RefillTo2()) {
+ Done10();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 2)) & 0x3;
+ const auto op = GetOp23(index);
+ const int consumed = op & 3;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 2;
+ sink_(GetEmit23(index, emit_ofs + 0));
+ }
+ void Done10() {
+ done_ = true;
+ switch (buffer_len_) {
+ case 0:
+ case 1: {
+ ok_ = false;
+ return;
+ }
+ }
+ }
+ void DecodeStep10() {
+ if (!RefillTo3()) {
+ Done11();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 3)) & 0x7;
+ const auto op = GetOp24(index);
+ const int consumed = op & 3;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 2;
+ sink_(GetEmit24(index, emit_ofs + 0));
+ }
+ bool RefillTo3() {
+ switch (buffer_len_) {
+ case 0:
+ case 1:
+ case 2: {
+ return Read1();
+ }
+ }
+ return true;
+ }
+ void Done11() {
+ done_ = true;
+ switch (buffer_len_) {
+ case 0:
+ case 1:
+ case 2: {
+ ok_ = false;
+ return;
+ }
+ }
+ }
+ void DecodeStep11() {
+ if (!RefillTo4()) {
+ Done12();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 4)) & 0xf;
+ const auto op = GetOp25(index);
+ const int consumed = op & 7;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 3;
+ sink_(GetEmit25(index, emit_ofs + 0));
+ }
+ bool RefillTo4() {
+ switch (buffer_len_) {
+ case 0:
+ case 1:
+ case 2:
+ case 3: {
+ return Read1();
+ }
+ }
+ return true;
+ }
+ void Done12() {
+ done_ = true;
+ switch (buffer_len_) {
+ case 0:
+ case 1:
+ case 2:
+ case 3: {
+ ok_ = false;
+ return;
+ }
+ }
+ }
+ void DecodeStep12() {
+ if (!RefillTo5()) {
+ Done13();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 5)) & 0x1f;
+ const auto op = GetOp26(index);
+ const int consumed = op & 7;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 4;
+ switch ((op >> 3) & 1) {
+ case 1: {
+ DecodeStep13();
+ break;
+ }
+ case 0: {
+ sink_(GetEmit26(index, emit_ofs + 0));
+ break;
+ }
+ }
+ }
+ bool RefillTo5() {
+ switch (buffer_len_) {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4: {
+ return Read1();
+ }
+ }
+ return true;
+ }
+ void Done13() {
+ done_ = true;
+ switch (buffer_len_) {
+ case 4: {
+ const auto index = buffer_ & 15;
+ const auto op = GetOp27(index);
+ switch (op & 3) {
+ case 1: {
+ ok_ = false;
+ break;
+ }
+ case 2: {
+ sink_(GetEmit27(index, op >> 2));
+ break;
+ }
+ }
+ return;
+ }
+ case 1:
+ case 2:
+ case 3: {
+ ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1;
+ return;
+ }
+ case 0: {
+ return;
+ }
+ }
+ }
+ void DecodeStep13() {
+ if (!RefillTo2()) {
+ Done14();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 2)) & 0x3;
+ const auto op = GetOp28(index);
+ const int consumed = op & 3;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 3;
+ switch ((op >> 2) & 1) {
+ case 1: {
+ begin_ = end_;
+ buffer_len_ = 0;
+ break;
+ }
+ case 0: {
+ sink_(GetEmit28(index, emit_ofs + 0));
+ break;
+ }
+ }
+ }
+ void Done14() {
+ done_ = true;
+ switch (buffer_len_) {
+ case 1: {
+ ok_ = (buffer_ & ((1 << buffer_len_) - 1)) == (1 << buffer_len_) - 1;
+ return;
+ }
+ case 0: {
+ return;
+ }
+ }
+ }
+ void DecodeStep14() {
+ if (!RefillTo4()) {
+ Done15();
+ return;
+ }
+ const auto index = (buffer_ >> (buffer_len_ - 4)) & 0xf;
+ const auto op = GetOp29(index);
+ const int consumed = op & 7;
+ buffer_len_ -= consumed;
+ const auto emit_ofs = op >> 3;
+ sink_(GetEmit29(index, emit_ofs + 0));
+ }
+ void Done15() {
+ done_ = true;
+ switch (buffer_len_) {
+ case 3: {
+ const auto index = buffer_ & 7;
+ const auto op = GetOp30(index);
+ switch (op & 3) {
+ case 1: {
+ ok_ = false;
+ break;
+ }
+ case 2: {
+ sink_(GetEmit30(index, op >> 2));
+ break;
+ }
+ }
+ return;
+ }
+ case 0:
+ case 1:
+ case 2: {
+ ok_ = false;
+ return;
+ }
+ }
+ }
+ F sink_;
+ const uint8_t* begin_;
+ const uint8_t* const end_;
+ uint64_t buffer_ = 0;
+ int buffer_len_ = 0;
+ bool ok_ = true;
+ bool done_ = false;
+};
+} // namespace grpc_core
+#endif // GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_DECODE_HUFF_H
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/flow_control.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/flow_control.cc
index 460b0885d0..4e69fbe19c 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/flow_control.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/flow_control.cc
@@ -22,19 +22,24 @@
#include <inttypes.h>
#include <limits.h>
-#include <math.h>
-#include <string.h>
+#include <algorithm>
+#include <cmath>
+#include <ostream>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <vector>
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/str_join.h"
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include "src/core/ext/transport/chttp2/transport/internal.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
+#include "src/core/lib/experiments/experiments.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/resource_quota/memory_quota.h"
grpc_core::TraceFlag grpc_flowctl_trace(false, "flowctl");
@@ -44,144 +49,63 @@ namespace chttp2 {
TestOnlyTransportTargetWindowEstimatesMocker*
g_test_only_transport_target_window_estimates_mocker;
-bool g_test_only_transport_flow_control_window_check;
-
namespace {
-constexpr const int kTracePadding = 30;
constexpr const int64_t kMaxWindowUpdateSize = (1u << 31) - 1;
-char* fmt_int64_diff_str(int64_t old_val, int64_t new_val) {
- TString str;
- if (old_val != new_val) {
- str = y_absl::StrFormat("%" PRId64 " -> %" PRId64 "", old_val, new_val);
- } else {
- str = y_absl::StrFormat("%" PRId64 "", old_val);
- }
- return gpr_leftpad(str.c_str(), ' ', kTracePadding);
-}
-
-char* fmt_uint32_diff_str(uint32_t old_val, uint32_t new_val) {
- TString str;
- if (old_val != new_val) {
- str = y_absl::StrFormat("%" PRIu32 " -> %" PRIu32 "", old_val, new_val);
- } else {
- str = y_absl::StrFormat("%" PRIu32 "", old_val);
- }
- return gpr_leftpad(str.c_str(), ' ', kTracePadding);
-}
} // namespace
-void FlowControlTrace::Init(const char* reason, TransportFlowControl* tfc,
- StreamFlowControl* sfc) {
- tfc_ = tfc;
- sfc_ = sfc;
- reason_ = reason;
- remote_window_ = tfc->remote_window();
- target_window_ = tfc->target_window();
- announced_window_ = tfc->announced_window();
- if (sfc != nullptr) {
- remote_window_delta_ = sfc->remote_window_delta();
- local_window_delta_ = sfc->local_window_delta();
- announced_window_delta_ = sfc->announced_window_delta();
- }
-}
-
-void FlowControlTrace::Finish() {
- uint32_t acked_local_window =
- tfc_->transport()->settings[GRPC_SENT_SETTINGS]
- [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE];
- uint32_t remote_window =
- tfc_->transport()->settings[GRPC_PEER_SETTINGS]
- [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE];
- char* trw_str = fmt_int64_diff_str(remote_window_, tfc_->remote_window());
- char* tlw_str = fmt_int64_diff_str(target_window_, tfc_->target_window());
- char* taw_str =
- fmt_int64_diff_str(announced_window_, tfc_->announced_window());
- char* srw_str;
- char* slw_str;
- char* saw_str;
- if (sfc_ != nullptr) {
- srw_str = fmt_int64_diff_str(remote_window_delta_ + remote_window,
- sfc_->remote_window_delta() + remote_window);
- slw_str =
- fmt_int64_diff_str(local_window_delta_ + acked_local_window,
- sfc_->local_window_delta() + acked_local_window);
- saw_str =
- fmt_int64_diff_str(announced_window_delta_ + acked_local_window,
- sfc_->announced_window_delta() + acked_local_window);
- } else {
- srw_str = gpr_leftpad("", ' ', kTracePadding);
- slw_str = gpr_leftpad("", ' ', kTracePadding);
- saw_str = gpr_leftpad("", ' ', kTracePadding);
- }
- gpr_log(GPR_DEBUG,
- "%p[%u][%s] | %s | trw:%s, tlw:%s, taw:%s, srw:%s, slw:%s, saw:%s",
- tfc_, sfc_ != nullptr ? sfc_->stream()->id : 0,
- tfc_->transport()->is_client ? "cli" : "svr", reason_, trw_str,
- tlw_str, taw_str, srw_str, slw_str, saw_str);
- gpr_free(trw_str);
- gpr_free(tlw_str);
- gpr_free(taw_str);
- gpr_free(srw_str);
- gpr_free(slw_str);
- gpr_free(saw_str);
-}
-
const char* FlowControlAction::UrgencyString(Urgency u) {
switch (u) {
case Urgency::NO_ACTION_NEEDED:
- return "no action";
+ return "no-action";
case Urgency::UPDATE_IMMEDIATELY:
- return "update immediately";
+ return "now";
case Urgency::QUEUE_UPDATE:
- return "queue update";
+ return "queue";
default:
GPR_UNREACHABLE_CODE(return "unknown");
}
GPR_UNREACHABLE_CODE(return "unknown");
}
-void FlowControlAction::Trace(grpc_chttp2_transport* t) const {
- char* iw_str = fmt_uint32_diff_str(
- t->settings[GRPC_SENT_SETTINGS][GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE],
- initial_window_size_);
- char* mf_str = fmt_uint32_diff_str(
- t->settings[GRPC_SENT_SETTINGS][GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE],
- max_frame_size_);
- gpr_log(GPR_DEBUG, "t[%s], s[%s], iw:%s:%s mf:%s:%s",
- UrgencyString(send_transport_update_),
- UrgencyString(send_stream_update_),
- UrgencyString(send_initial_window_update_), iw_str,
- UrgencyString(send_max_frame_size_update_), mf_str);
- gpr_free(iw_str);
- gpr_free(mf_str);
+std::ostream& operator<<(std::ostream& out, FlowControlAction::Urgency u) {
+ return out << FlowControlAction::UrgencyString(u);
}
-TransportFlowControlDisabled::TransportFlowControlDisabled(
- grpc_chttp2_transport* t) {
- remote_window_ = kMaxWindow;
- target_initial_window_size_ = kMaxWindow;
- announced_window_ = kMaxWindow;
- t->settings[GRPC_PEER_SETTINGS][GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE] =
- kFrameSize;
- t->settings[GRPC_SENT_SETTINGS][GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE] =
- kFrameSize;
- t->settings[GRPC_ACKED_SETTINGS][GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE] =
- kFrameSize;
- t->settings[GRPC_PEER_SETTINGS][GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE] =
- kMaxWindow;
- t->settings[GRPC_SENT_SETTINGS][GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE] =
- kMaxWindow;
- t->settings[GRPC_ACKED_SETTINGS][GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE] =
- kMaxWindow;
+TString FlowControlAction::DebugString() const {
+ std::vector<TString> segments;
+ if (send_transport_update_ != Urgency::NO_ACTION_NEEDED) {
+ segments.push_back(
+ y_absl::StrCat("t:", UrgencyString(send_transport_update_)));
+ }
+ if (send_stream_update_ != Urgency::NO_ACTION_NEEDED) {
+ segments.push_back(y_absl::StrCat("s:", UrgencyString(send_stream_update_)));
+ }
+ if (send_initial_window_update_ != Urgency::NO_ACTION_NEEDED) {
+ segments.push_back(
+ y_absl::StrCat("iw=", initial_window_size_, ":",
+ UrgencyString(send_initial_window_update_)));
+ }
+ if (send_max_frame_size_update_ != Urgency::NO_ACTION_NEEDED) {
+ segments.push_back(
+ y_absl::StrCat("mf=", max_frame_size_, ":",
+ UrgencyString(send_max_frame_size_update_)));
+ }
+ if (segments.empty()) return "no action";
+ return y_absl::StrJoin(segments, ",");
}
-TransportFlowControl::TransportFlowControl(const grpc_chttp2_transport* t,
- bool enable_bdp_probe)
- : t_(t),
+std::ostream& operator<<(std::ostream& out, const FlowControlAction& action) {
+ return out << action.DebugString();
+}
+
+TransportFlowControl::TransportFlowControl(const char* name,
+ bool enable_bdp_probe,
+ MemoryOwner* memory_owner)
+ : memory_owner_(memory_owner),
enable_bdp_probe_(enable_bdp_probe),
- bdp_estimator_(t->peer_string.c_str()),
+ bdp_estimator_(name),
pid_controller_(PidController::Args()
.set_gain_p(4)
.set_gain_i(8)
@@ -190,10 +114,9 @@ TransportFlowControl::TransportFlowControl(const grpc_chttp2_transport* t,
.set_min_control_value(-1)
.set_max_control_value(25)
.set_integral_range(10)),
- last_pid_update_(ExecCtx::Get()->Now()) {}
+ last_pid_update_(Timestamp::Now()) {}
uint32_t TransportFlowControl::MaybeSendUpdate(bool writing_anyway) {
- FlowControlTrace trace("t updt sent", this, nullptr);
const uint32_t target_announced_window =
static_cast<uint32_t>(target_window());
if ((writing_anyway || announced_window_ <= target_announced_window / 2) &&
@@ -207,116 +130,55 @@ uint32_t TransportFlowControl::MaybeSendUpdate(bool writing_anyway) {
return 0;
}
-grpc_error_handle TransportFlowControl::ValidateRecvData(
- int64_t incoming_frame_size) {
- if (incoming_frame_size > announced_window_) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrFormat(
- "frame of size %" PRId64 " overflows local window of %" PRId64,
- incoming_frame_size, announced_window_));
- }
- return GRPC_ERROR_NONE;
-}
+StreamFlowControl::StreamFlowControl(TransportFlowControl* tfc) : tfc_(tfc) {}
-StreamFlowControl::StreamFlowControl(TransportFlowControl* tfc,
- const grpc_chttp2_stream* s)
- : tfc_(tfc), s_(s) {}
-
-grpc_error_handle StreamFlowControl::RecvData(int64_t incoming_frame_size) {
- FlowControlTrace trace(" data recv", tfc_, this);
-
- grpc_error_handle error = GRPC_ERROR_NONE;
- error = tfc_->ValidateRecvData(incoming_frame_size);
- if (error != GRPC_ERROR_NONE) return error;
-
- uint32_t sent_init_window =
- tfc_->transport()->settings[GRPC_SENT_SETTINGS]
- [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE];
- uint32_t acked_init_window =
- tfc_->transport()->settings[GRPC_ACKED_SETTINGS]
- [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE];
-
- int64_t acked_stream_window = announced_window_delta_ + acked_init_window;
- int64_t sent_stream_window = announced_window_delta_ + sent_init_window;
- if (incoming_frame_size > acked_stream_window) {
- //hotfix - do not check incoming_frame_size <= sent_stream_window - with old grpc version this is not true
- gpr_log(GPR_ERROR,
- "Incoming frame of size %" PRId64
- " exceeds local window size of %" PRId64
- ".\n"
- "The (un-acked, future) window size would be %" PRId64
- " which is not exceeded.\n"
- "This would usually cause a disconnection, but allowing it due to"
- "broken HTTP2 implementations in the wild.\n"
- "See (for example) https://github.com/netty/netty/issues/6520.",
- incoming_frame_size, acked_stream_window, sent_stream_window);
- }
+y_absl::Status StreamFlowControl::IncomingUpdateContext::RecvData(
+ int64_t incoming_frame_size) {
+ return tfc_upd_.RecvData(incoming_frame_size, [this, incoming_frame_size]() {
+ int64_t acked_stream_window =
+ sfc_->announced_window_delta_ + sfc_->tfc_->acked_init_window();
+ if (incoming_frame_size > acked_stream_window) {
+ return y_absl::InternalError(y_absl::StrFormat(
+ "frame of size %" PRId64 " overflows local window of %" PRId64,
+ incoming_frame_size, acked_stream_window));
+ }
- UpdateAnnouncedWindowDelta(tfc_, -incoming_frame_size);
- local_window_delta_ -= incoming_frame_size;
- tfc_->CommitRecvData(incoming_frame_size);
- return GRPC_ERROR_NONE;
+ tfc_upd_.UpdateAnnouncedWindowDelta(&sfc_->announced_window_delta_,
+ -incoming_frame_size);
+ sfc_->min_progress_size_ -=
+ std::min(sfc_->min_progress_size_, incoming_frame_size);
+ return y_absl::OkStatus();
+ });
}
-uint32_t StreamFlowControl::MaybeSendUpdate() {
- FlowControlTrace trace("s updt sent", tfc_, this);
- // If a recently sent settings frame caused the stream's flow control window
- // to go in the negative (or < GRPC_HEADER_SIZE_IN_BYTES), update the delta if
- // one of the following conditions is satisfied -
- // 1) There is a pending byte_stream and higher layers have expressed interest
- // in reading additional data through the invokation of `Next()` where the
- // bytes are to be available asynchronously. 2) There is a pending
- // recv_message op.
- // In these cases, we want to make sure that bytes are still flowing.
- if (local_window_delta_ < GRPC_HEADER_SIZE_IN_BYTES) {
- if (s_->on_next != nullptr) {
- GPR_DEBUG_ASSERT(s_->pending_byte_stream);
- IncomingByteStreamUpdate(GRPC_HEADER_SIZE_IN_BYTES, 0);
- } else if (s_->recv_message != nullptr) {
- IncomingByteStreamUpdate(GRPC_HEADER_SIZE_IN_BYTES,
- s_->frame_storage.length);
- }
- }
- if (local_window_delta_ > announced_window_delta_) {
- uint32_t announce = static_cast<uint32_t>(
- Clamp(local_window_delta_ - announced_window_delta_, int64_t(0),
- kMaxWindowUpdateSize));
- UpdateAnnouncedWindowDelta(tfc_, announce);
- return announce;
+y_absl::Status TransportFlowControl::IncomingUpdateContext::RecvData(
+ int64_t incoming_frame_size, y_absl::FunctionRef<y_absl::Status()> stream) {
+ if (incoming_frame_size > tfc_->announced_window_) {
+ return y_absl::InternalError(y_absl::StrFormat(
+ "frame of size %" PRId64 " overflows local window of %" PRId64,
+ incoming_frame_size, tfc_->announced_window_));
}
- return 0;
+ y_absl::Status error = stream();
+ if (!error.ok()) return error;
+ tfc_->announced_window_ -= incoming_frame_size;
+ return y_absl::OkStatus();
}
-void StreamFlowControl::IncomingByteStreamUpdate(size_t max_size_hint,
- size_t have_already) {
- FlowControlTrace trace("app st recv", tfc_, this);
- uint32_t max_recv_bytes;
-
- /* clamp max recv hint to an allowable size */
- if (max_size_hint >= kMaxWindowDelta) {
- max_recv_bytes = kMaxWindowDelta;
- } else {
- max_recv_bytes = static_cast<uint32_t>(max_size_hint);
- }
-
- /* account for bytes already received but unknown to higher layers */
- if (max_recv_bytes >= have_already) {
- max_recv_bytes -= static_cast<uint32_t>(have_already);
- } else {
- max_recv_bytes = 0;
- }
+int64_t TransportFlowControl::target_window() const {
+ // See comment above announced_stream_total_over_incoming_window_ for the
+ // logic behind this decision.
+ return static_cast<uint32_t>(
+ std::min(static_cast<int64_t>((1u << 31) - 1),
+ announced_stream_total_over_incoming_window_ +
+ target_initial_window_size_));
+}
- /* add some small lookahead to keep pipelines flowing */
- GPR_DEBUG_ASSERT(
- max_recv_bytes <=
- kMaxWindowUpdateSize -
- tfc_->transport()
- ->settings[GRPC_SENT_SETTINGS]
- [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]);
- if (local_window_delta_ < max_recv_bytes) {
- uint32_t add_max_recv_bytes =
- static_cast<uint32_t>(max_recv_bytes - local_window_delta_);
- local_window_delta_ += add_max_recv_bytes;
+FlowControlAction TransportFlowControl::UpdateAction(FlowControlAction action) {
+ if (announced_window_ < target_window() / 2) {
+ action.set_send_transport_update(
+ FlowControlAction::Urgency::UPDATE_IMMEDIATELY);
}
+ return action;
}
// Take in a target and modifies it based on the memory pressure of the system
@@ -337,14 +199,15 @@ static double AdjustForMemoryPressure(double memory_pressure, double target) {
}
double TransportFlowControl::TargetLogBdp() {
- return AdjustForMemoryPressure(t_->memory_owner.is_valid()
- ? t_->memory_owner.InstantaneousPressure()
- : 0.0,
- 1 + log2(bdp_estimator_.EstimateBdp()));
+ return AdjustForMemoryPressure(
+ memory_owner_->is_valid()
+ ? memory_owner_->GetPressureInfo().pressure_control_value
+ : 0.0,
+ 1 + log2(bdp_estimator_.EstimateBdp()));
}
double TransportFlowControl::SmoothLogBdp(double value) {
- Timestamp now = ExecCtx::Get()->Now();
+ Timestamp now = Timestamp::Now();
double bdp_error = value - pid_controller_.last_control_value();
const double dt = (now - last_pid_update_).seconds();
last_pid_update_ = now;
@@ -353,74 +216,197 @@ double TransportFlowControl::SmoothLogBdp(double value) {
return pid_controller_.Update(bdp_error, dt > kMaxDt ? kMaxDt : dt);
}
-FlowControlAction::Urgency TransportFlowControl::DeltaUrgency(
- int64_t value, grpc_chttp2_setting_id setting_id) {
- int64_t delta = value - static_cast<int64_t>(
- t_->settings[GRPC_LOCAL_SETTINGS][setting_id]);
- // TODO(ncteisen): tune this
- if (delta != 0 && (delta <= -value / 5 || delta >= value / 5)) {
- return FlowControlAction::Urgency::QUEUE_UPDATE;
+double
+TransportFlowControl::TargetInitialWindowSizeBasedOnMemoryPressureAndBdp()
+ const {
+ const double bdp = bdp_estimator_.EstimateBdp() * 2.0;
+ const double memory_pressure =
+ memory_owner_->GetPressureInfo().pressure_control_value;
+ // Linear interpolation between two values.
+ // Given a line segment between the two points (t_min, a), and (t_max, b),
+ // and a value t such that t_min <= t <= t_max, return the value on the line
+ // segment at t.
+ auto lerp = [](double t, double t_min, double t_max, double a, double b) {
+ return a + (b - a) * (t - t_min) / (t_max - t_min);
+ };
+ // We split memory pressure into three broad regions:
+ // 1. Low memory pressure, the "anything goes" case - we assume no memory
+ // pressure concerns and advertise a huge window to keep things flowing.
+ // 2. Moderate memory pressure, the "adjust to BDP" case - we linearly ramp
+ // down window size to 2*BDP - which should still allow bytes to flow, but
+ // is arguably more considered.
+ // 3. High memory pressure - past 50% we linearly ramp down window size from
+ // BDP to 0 - at which point senders effectively must request to send bytes
+ // to us.
+ //
+ // ▲
+ // │
+ // 16mb ────┤---------x----
+ // │ -----
+ // BDP ────┤ ----x---
+ // │ ----
+ // │ -----
+ // │ ----
+ // │ -----
+ // │ ---x
+ // ├─────────┬─────────────┬────────────────────────┬─────►
+ // │Anything │Adjust to │Drop to zero │
+ // │Goes │BDP │ │
+ // 0% 20% 50% 100% memory
+ // pressure
+ const double kAnythingGoesPressure = 0.2;
+ const double kAdjustedToBdpPressure = 0.5;
+ const double kAnythingGoesWindow = std::max(double(1 << 24), bdp);
+ if (memory_pressure < kAnythingGoesPressure) {
+ return kAnythingGoesWindow;
+ } else if (memory_pressure < kAdjustedToBdpPressure) {
+ return lerp(memory_pressure, kAnythingGoesPressure, kAdjustedToBdpPressure,
+ kAnythingGoesWindow, bdp);
+ } else if (memory_pressure < 1.0) {
+ return lerp(memory_pressure, kAdjustedToBdpPressure, 1.0, bdp, 0);
+ } else {
+ return 0;
+ }
+}
+
+void TransportFlowControl::UpdateSetting(
+ grpc_chttp2_setting_id id, int64_t* desired_value,
+ uint32_t new_desired_value, FlowControlAction* action,
+ FlowControlAction& (FlowControlAction::*set)(FlowControlAction::Urgency,
+ uint32_t)) {
+ if (IsFlowControlFixesEnabled()) {
+ new_desired_value =
+ Clamp(new_desired_value, grpc_chttp2_settings_parameters[id].min_value,
+ grpc_chttp2_settings_parameters[id].max_value);
+ if (new_desired_value != *desired_value) {
+ *desired_value = new_desired_value;
+ (action->*set)(FlowControlAction::Urgency::QUEUE_UPDATE, *desired_value);
+ }
} else {
- return FlowControlAction::Urgency::NO_ACTION_NEEDED;
+ int64_t delta = new_desired_value - *desired_value;
+ // TODO(ncteisen): tune this
+ if (delta != 0 &&
+ (delta <= -*desired_value / 5 || delta >= *desired_value / 5)) {
+ *desired_value = new_desired_value;
+ (action->*set)(FlowControlAction::Urgency::QUEUE_UPDATE, *desired_value);
+ }
}
}
FlowControlAction TransportFlowControl::PeriodicUpdate() {
FlowControlAction action;
if (enable_bdp_probe_) {
- // get bdp estimate and update initial_window accordingly.
- // target might change based on how much memory pressure we are under
- // TODO(ncteisen): experiment with setting target to be huge under low
- // memory pressure.
- double target = pow(2, SmoothLogBdp(TargetLogBdp()));
- if (g_test_only_transport_target_window_estimates_mocker != nullptr) {
- // Hook for simulating unusual flow control situations in tests.
- target = g_test_only_transport_target_window_estimates_mocker
- ->ComputeNextTargetInitialWindowSizeFromPeriodicUpdate(
- target_initial_window_size_ /* current target */);
+ if (IsFlowControlFixesEnabled()) {
+ // get bdp estimate and update initial_window accordingly.
+ // target might change based on how much memory pressure we are under
+ // TODO(ncteisen): experiment with setting target to be huge under low
+ // memory pressure.
+ uint32_t target = static_cast<uint32_t>(RoundUpToPowerOf2(
+ Clamp(IsMemoryPressureControllerEnabled()
+ ? TargetInitialWindowSizeBasedOnMemoryPressureAndBdp()
+ : pow(2, SmoothLogBdp(TargetLogBdp())),
+ 0.0, static_cast<double>(kMaxInitialWindowSize))));
+ if (target < kMinPositiveInitialWindowSize) target = 0;
+ if (g_test_only_transport_target_window_estimates_mocker != nullptr) {
+ // Hook for simulating unusual flow control situations in tests.
+ target = g_test_only_transport_target_window_estimates_mocker
+ ->ComputeNextTargetInitialWindowSizeFromPeriodicUpdate(
+ target_initial_window_size_ /* current target */);
+ }
+ // Though initial window 'could' drop to 0, we keep the floor at
+ // kMinInitialWindowSize
+ UpdateSetting(GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
+ &target_initial_window_size_, target, &action,
+ &FlowControlAction::set_send_initial_window_update);
+ // we target the max of BDP or bandwidth in microseconds.
+ UpdateSetting(GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE, &target_frame_size_,
+ target, &action,
+ &FlowControlAction::set_send_max_frame_size_update);
+ } else {
+ // get bdp estimate and update initial_window accordingly.
+ // target might change based on how much memory pressure we are under
+ // TODO(ncteisen): experiment with setting target to be huge under low
+ // memory pressure.
+ double target = IsMemoryPressureControllerEnabled()
+ ? TargetInitialWindowSizeBasedOnMemoryPressureAndBdp()
+ : pow(2, SmoothLogBdp(TargetLogBdp()));
+ if (g_test_only_transport_target_window_estimates_mocker != nullptr) {
+ // Hook for simulating unusual flow control situations in tests.
+ target = g_test_only_transport_target_window_estimates_mocker
+ ->ComputeNextTargetInitialWindowSizeFromPeriodicUpdate(
+ target_initial_window_size_ /* current target */);
+ }
+ // Though initial window 'could' drop to 0, we keep the floor at
+ // kMinInitialWindowSize
+ UpdateSetting(
+ GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
+ &target_initial_window_size_,
+ static_cast<int32_t>(Clamp(target, double(kMinInitialWindowSize),
+ double(kMaxInitialWindowSize))),
+ &action, &FlowControlAction::set_send_initial_window_update);
+ // get bandwidth estimate and update max_frame accordingly.
+ double bw_dbl = bdp_estimator_.EstimateBandwidth();
+ // we target the max of BDP or bandwidth in microseconds.
+ UpdateSetting(
+ GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE, &target_frame_size_,
+ static_cast<int32_t>(Clamp(
+ std::max(
+ static_cast<int32_t>(Clamp(bw_dbl, 0.0, double(INT_MAX))) /
+ 1000,
+ static_cast<int32_t>(target_initial_window_size_)),
+ 16384, 16777215)),
+ &action, &FlowControlAction::set_send_max_frame_size_update);
}
- // Though initial window 'could' drop to 0, we keep the floor at
- // kMinInitialWindowSize
- target_initial_window_size_ = static_cast<int32_t>(Clamp(
- target, double(kMinInitialWindowSize), double(kMaxInitialWindowSize)));
- action.set_send_initial_window_update(
- DeltaUrgency(target_initial_window_size_,
- GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE),
- static_cast<uint32_t>(target_initial_window_size_));
-
- // get bandwidth estimate and update max_frame accordingly.
- double bw_dbl = bdp_estimator_.EstimateBandwidth();
- // we target the max of BDP or bandwidth in microseconds.
- int32_t frame_size = static_cast<int32_t>(Clamp(
- std::max(
- static_cast<int32_t>(Clamp(bw_dbl, 0.0, double(INT_MAX))) / 1000,
- static_cast<int32_t>(target_initial_window_size_)),
- 16384, 16777215));
- action.set_send_max_frame_size_update(
- DeltaUrgency(static_cast<int64_t>(frame_size),
- GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE),
- frame_size);
}
return UpdateAction(action);
}
+uint32_t StreamFlowControl::MaybeSendUpdate() {
+ TransportFlowControl::IncomingUpdateContext tfc_upd(tfc_);
+ const uint32_t announce = DesiredAnnounceSize();
+ pending_size_ = y_absl::nullopt;
+ tfc_upd.UpdateAnnouncedWindowDelta(&announced_window_delta_, announce);
+ GPR_ASSERT(DesiredAnnounceSize() == 0);
+ tfc_upd.MakeAction();
+ return announce;
+}
+
+uint32_t StreamFlowControl::DesiredAnnounceSize() const {
+ int64_t desired_window_delta = [this]() {
+ if (min_progress_size_ == 0) {
+ if (pending_size_.has_value() &&
+ announced_window_delta_ < -*pending_size_) {
+ return -*pending_size_;
+ } else {
+ return announced_window_delta_;
+ }
+ } else {
+ return std::min(min_progress_size_, kMaxWindowDelta);
+ }
+ }();
+ return Clamp(desired_window_delta - announced_window_delta_, int64_t(0),
+ kMaxWindowUpdateSize);
+}
+
FlowControlAction StreamFlowControl::UpdateAction(FlowControlAction action) {
- // TODO(ncteisen): tune this
- if (!s_->read_closed) {
- uint32_t sent_init_window =
- tfc_->transport()->settings[GRPC_SENT_SETTINGS]
- [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE];
- if (local_window_delta_ > announced_window_delta_ &&
- announced_window_delta_ + sent_init_window <= sent_init_window / 2) {
+ const int64_t desired_announce_size = DesiredAnnounceSize();
+ if (desired_announce_size > 0) {
+ if ((min_progress_size_ > 0 && announced_window_delta_ <= 0) ||
+ desired_announce_size >= 8192) {
action.set_send_stream_update(
FlowControlAction::Urgency::UPDATE_IMMEDIATELY);
- } else if (local_window_delta_ > announced_window_delta_) {
+ } else {
action.set_send_stream_update(FlowControlAction::Urgency::QUEUE_UPDATE);
}
}
-
return action;
}
+void StreamFlowControl::IncomingUpdateContext::SetPendingSize(
+ int64_t pending_size) {
+ GPR_ASSERT(pending_size >= 0);
+ sfc_->pending_size_ = pending_size;
+}
+
} // namespace chttp2
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/flow_control.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/flow_control.h
index 9bce7c8a94..efc17cffb7 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/flow_control.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/flow_control.h
@@ -23,15 +23,24 @@
#include <stdint.h>
+#include <iosfwd>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/functional/function_ref.h"
+#include "y_absl/status/status.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/support/log.h>
+
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
-#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/resource_quota/memory_quota.h"
#include "src/core/lib/transport/bdp_estimator.h"
#include "src/core/lib/transport/pid_controller.h"
-struct grpc_chttp2_transport;
-struct grpc_chttp2_stream;
-
extern grpc_core::TraceFlag grpc_flowctl_trace;
namespace grpc {
@@ -44,18 +53,22 @@ namespace grpc_core {
namespace chttp2 {
static constexpr uint32_t kDefaultWindow = 65535;
+static constexpr uint32_t kDefaultFrameSize = 16384;
static constexpr int64_t kMaxWindow = static_cast<int64_t>((1u << 31) - 1);
-// TODO(ncteisen): Tune this
-static constexpr uint32_t kFrameSize = 1024 * 1024;
-static constexpr const uint32_t kMinInitialWindowSize = 128;
+// If smaller than this, advertise zero window.
+static constexpr uint32_t kMinPositiveInitialWindowSize = 1024;
static constexpr const uint32_t kMaxInitialWindowSize = (1u << 30);
// The maximum per-stream flow control window delta to advertise.
-static constexpr const uint32_t kMaxWindowDelta = (1u << 20);
+static constexpr const int64_t kMaxWindowDelta = (1u << 20);
+
+// TODO(ctiller): clean up when flow_control_fixes is enabled by default
+static constexpr uint32_t kFrameSize = 1024 * 1024;
+static constexpr const uint32_t kMinInitialWindowSize = 128;
class TransportFlowControl;
class StreamFlowControl;
-extern bool g_test_only_transport_flow_control_window_check;
+enum class StallEdge { kNoChange, kStalled, kUnstalled };
// Encapsulates a collections of actions the transport needs to take with
// regard to flow control. Each action comes with urgencies that tell the
@@ -105,7 +118,20 @@ class FlowControlAction {
}
static const char* UrgencyString(Urgency u);
- void Trace(grpc_chttp2_transport* t) const;
+ TString DebugString() const;
+
+ void AssertEmpty() { GPR_ASSERT(*this == FlowControlAction()); }
+
+ bool operator==(const FlowControlAction& other) const {
+ return send_stream_update_ == other.send_stream_update_ &&
+ send_transport_update_ == other.send_transport_update_ &&
+ send_initial_window_update_ == other.send_initial_window_update_ &&
+ send_max_frame_size_update_ == other.send_max_frame_size_update_ &&
+ (send_initial_window_update_ == Urgency::NO_ACTION_NEEDED ||
+ initial_window_size_ == other.initial_window_size_) &&
+ (send_max_frame_size_update_ == Urgency::NO_ACTION_NEEDED ||
+ max_frame_size_ == other.max_frame_size_);
+ }
private:
Urgency send_stream_update_ = Urgency::NO_ACTION_NEEDED;
@@ -116,120 +142,16 @@ class FlowControlAction {
uint32_t max_frame_size_ = 0;
};
-class FlowControlTrace {
- public:
- FlowControlTrace(const char* reason, TransportFlowControl* tfc,
- StreamFlowControl* sfc) {
- if (enabled_) Init(reason, tfc, sfc);
- }
-
- ~FlowControlTrace() {
- if (enabled_) Finish();
- }
-
- private:
- void Init(const char* reason, TransportFlowControl* tfc,
- StreamFlowControl* sfc);
- void Finish();
-
- const bool enabled_ = GRPC_TRACE_FLAG_ENABLED(grpc_flowctl_trace);
-
- TransportFlowControl* tfc_;
- StreamFlowControl* sfc_;
- const char* reason_;
- int64_t remote_window_;
- int64_t target_window_;
- int64_t announced_window_;
- int64_t remote_window_delta_;
- int64_t local_window_delta_;
- int64_t announced_window_delta_;
-};
-
-// Fat interface with all methods a flow control implementation needs to
-// support.
-class TransportFlowControlBase {
- public:
- TransportFlowControlBase() {}
- virtual ~TransportFlowControlBase() {}
-
- // Is flow control enabled? This is needed in other codepaths like the checks
- // in parsing and in writing.
- virtual bool flow_control_enabled() const = 0;
-
- // Called to check if the transport needs to send a WINDOW_UPDATE frame
- virtual uint32_t MaybeSendUpdate(bool /* writing_anyway */) = 0;
-
- // Using the protected members, returns and Action to be taken by the
- // tranport.
- virtual FlowControlAction MakeAction() = 0;
-
- // Using the protected members, returns and Action to be taken by the
- // tranport. Also checks for updates to our BDP estimate and acts
- // accordingly.
- virtual FlowControlAction PeriodicUpdate() = 0;
-
- // Called to do bookkeeping when a stream owned by this transport sends
- // data on the wire
- virtual void StreamSentData(int64_t /* size */) = 0;
-
- // Called to do bookkeeping when a stream owned by this transport receives
- // data from the wire. Also does error checking for frame size.
- virtual grpc_error_handle RecvData(int64_t /* incoming_frame_size */) = 0;
-
- // Called to do bookkeeping when we receive a WINDOW_UPDATE frame.
- virtual void RecvUpdate(uint32_t /* size */) = 0;
-
- // Returns the BdpEstimator held by this object. Caller is responsible for
- // checking for nullptr. TODO(ncteisen): consider fully encapsulating all
- // bdp estimator actions inside TransportFlowControl
- virtual BdpEstimator* bdp_estimator() { return nullptr; }
-
- // Getters
- int64_t remote_window() const { return remote_window_; }
- virtual int64_t target_window() const { return target_initial_window_size_; }
- int64_t announced_window() const { return announced_window_; }
-
- // Used in certain benchmarks in which we don't want FlowControl to be a
- // factor
- virtual void TestOnlyForceHugeWindow() {}
-
- protected:
- friend class grpc::testing::TrickledCHTTP2;
- int64_t remote_window_ = kDefaultWindow;
- int64_t target_initial_window_size_ = kDefaultWindow;
- int64_t announced_window_ = kDefaultWindow;
-};
-
-// Implementation of flow control that does NOTHING. Always returns maximum
-// values, never initiates writes, and assumes that the remote peer is doing
-// the same. To be used to narrow down on flow control as the cause of negative
-// performance.
-class TransportFlowControlDisabled final : public TransportFlowControlBase {
- public:
- // Maxes out all values
- explicit TransportFlowControlDisabled(grpc_chttp2_transport* t);
-
- bool flow_control_enabled() const override { return false; }
-
- // Never do anything.
- uint32_t MaybeSendUpdate(bool /* writing_anyway */) override { return 0; }
- FlowControlAction MakeAction() override { return FlowControlAction(); }
- FlowControlAction PeriodicUpdate() override { return FlowControlAction(); }
- void StreamSentData(int64_t /* size */) override {}
- grpc_error_handle RecvData(int64_t /* incoming_frame_size */) override {
- return GRPC_ERROR_NONE;
- }
- void RecvUpdate(uint32_t /* size */) override {}
-};
+std::ostream& operator<<(std::ostream& out, FlowControlAction::Urgency urgency);
+std::ostream& operator<<(std::ostream& out, const FlowControlAction& action);
// Implementation of flow control that abides to HTTP/2 spec and attempts
// to be as performant as possible.
-class TransportFlowControl final : public TransportFlowControlBase {
+class TransportFlowControl final {
public:
- TransportFlowControl(const grpc_chttp2_transport* t, bool enable_bdp_probe);
- ~TransportFlowControl() override {}
-
- bool flow_control_enabled() const override { return true; }
+ explicit TransportFlowControl(const char* name, bool enable_bdp_probe,
+ MemoryOwner* memory_owner);
+ ~TransportFlowControl() {}
bool bdp_probe() const { return enable_bdp_probe_; }
@@ -237,85 +159,114 @@ class TransportFlowControl final : public TransportFlowControlBase {
// else returns zero; writing_anyway indicates if a write would happen
// regardless of the send - if it is false and this function returns non-zero,
// this announce will cause a write to occur
- uint32_t MaybeSendUpdate(bool writing_anyway) override;
+ uint32_t MaybeSendUpdate(bool writing_anyway);
+
+ // Track an update to the incoming flow control counters - that is how many
+ // tokens we report to our peer that we're willing to accept.
+ // Instantiators *must* call MakeAction before destruction of this value.
+ class IncomingUpdateContext {
+ public:
+ explicit IncomingUpdateContext(TransportFlowControl* tfc) : tfc_(tfc) {}
+ ~IncomingUpdateContext() { GPR_ASSERT(tfc_ == nullptr); }
+
+ IncomingUpdateContext(const IncomingUpdateContext&) = delete;
+ IncomingUpdateContext& operator=(const IncomingUpdateContext&) = delete;
+
+ // Reads the flow control data and returns an actionable struct that will
+ // tell chttp2 exactly what it needs to do
+ FlowControlAction MakeAction() {
+ return std::exchange(tfc_, nullptr)->UpdateAction(FlowControlAction());
+ }
- // Reads the flow control data and returns and actionable struct that will
- // tell chttp2 exactly what it needs to do
- FlowControlAction MakeAction() override {
- return UpdateAction(FlowControlAction());
- }
+ // Notify of data receipt. Returns OkStatus if the data was accepted,
+ // else an error status if the connection should be closed.
+ y_absl::Status RecvData(
+ int64_t incoming_frame_size, y_absl::FunctionRef<y_absl::Status()> stream =
+ []() { return y_absl::OkStatus(); });
+
+ // Update a stream announce window delta, keeping track of how much total
+ // positive delta is present on the transport.
+ void UpdateAnnouncedWindowDelta(int64_t* delta, int64_t change) {
+ if (change == 0) return;
+ if (*delta > 0) {
+ tfc_->announced_stream_total_over_incoming_window_ -= *delta;
+ }
+ *delta += change;
+ if (*delta > 0) {
+ tfc_->announced_stream_total_over_incoming_window_ += *delta;
+ }
+ }
+
+ private:
+ TransportFlowControl* tfc_;
+ };
+
+ // Track an update to the outgoing flow control counters - that is how many
+ // tokens our peer has said we can send.
+ class OutgoingUpdateContext {
+ public:
+ explicit OutgoingUpdateContext(TransportFlowControl* tfc) : tfc_(tfc) {}
+ void StreamSentData(int64_t size) { tfc_->remote_window_ -= size; }
+
+ // we have received a WINDOW_UPDATE frame for a transport
+ void RecvUpdate(uint32_t size) { tfc_->remote_window_ += size; }
+
+ // Finish the update and check whether we became stalled or unstalled.
+ StallEdge Finish() {
+ bool is_stalled = tfc_->remote_window_ <= 0;
+ if (is_stalled != was_stalled_) {
+ return is_stalled ? StallEdge::kStalled : StallEdge::kUnstalled;
+ } else {
+ return StallEdge::kNoChange;
+ }
+ }
+
+ private:
+ TransportFlowControl* tfc_;
+ const bool was_stalled_ = tfc_->remote_window_ <= 0;
+ };
// Call periodically (at a low-ish rate, 100ms - 10s makes sense)
// to perform more complex flow control calculations and return an action
// to let chttp2 change its parameters
- FlowControlAction PeriodicUpdate() override;
+ FlowControlAction PeriodicUpdate();
- void StreamSentData(int64_t size) override { remote_window_ -= size; }
+ int64_t target_window() const;
+ int64_t target_frame_size() const { return target_frame_size_; }
- grpc_error_handle ValidateRecvData(int64_t incoming_frame_size);
- void CommitRecvData(int64_t incoming_frame_size) {
- announced_window_ -= incoming_frame_size;
- }
+ BdpEstimator* bdp_estimator() { return &bdp_estimator_; }
- grpc_error_handle RecvData(int64_t incoming_frame_size) override {
- FlowControlTrace trace(" data recv", this, nullptr);
- grpc_error_handle error = ValidateRecvData(incoming_frame_size);
- if (error != GRPC_ERROR_NONE) return error;
- CommitRecvData(incoming_frame_size);
- return GRPC_ERROR_NONE;
- }
+ uint32_t acked_init_window() const { return acked_init_window_; }
- // we have received a WINDOW_UPDATE frame for a transport
- void RecvUpdate(uint32_t size) override {
- FlowControlTrace trace("t updt recv", this, nullptr);
- remote_window_ += size;
- }
-
- // See comment above announced_stream_total_over_incoming_window_ for the
- // logic behind this decision.
- int64_t target_window() const override {
- return static_cast<uint32_t>(
- std::min(static_cast<int64_t>((1u << 31) - 1),
- announced_stream_total_over_incoming_window_ +
- target_initial_window_size_));
- }
+ void SetAckedInitialWindow(uint32_t value) { acked_init_window_ = value; }
- const grpc_chttp2_transport* transport() const { return t_; }
+ // Getters
+ int64_t remote_window() const { return remote_window_; }
+ int64_t announced_window() const { return announced_window_; }
- void PreUpdateAnnouncedWindowOverIncomingWindow(int64_t delta) {
- if (delta > 0) {
- announced_stream_total_over_incoming_window_ -= delta;
- }
+ int64_t announced_stream_total_over_incoming_window() const {
+ return announced_stream_total_over_incoming_window_;
}
- void PostUpdateAnnouncedWindowOverIncomingWindow(int64_t delta) {
+ void RemoveAnnouncedWindowDelta(int64_t delta) {
if (delta > 0) {
- announced_stream_total_over_incoming_window_ += delta;
+ announced_stream_total_over_incoming_window_ -= delta;
}
}
- BdpEstimator* bdp_estimator() override { return &bdp_estimator_; }
-
- void TestOnlyForceHugeWindow() override {
- announced_window_ = 1024 * 1024 * 1024;
- remote_window_ = 1024 * 1024 * 1024;
- }
-
private:
double TargetLogBdp();
double SmoothLogBdp(double value);
- FlowControlAction::Urgency DeltaUrgency(int64_t value,
- grpc_chttp2_setting_id setting_id);
+ double TargetInitialWindowSizeBasedOnMemoryPressureAndBdp() const;
+ static void UpdateSetting(grpc_chttp2_setting_id id, int64_t* desired_value,
+ uint32_t new_desired_value,
+ FlowControlAction* action,
+ FlowControlAction& (FlowControlAction::*set)(
+ FlowControlAction::Urgency, uint32_t));
- FlowControlAction UpdateAction(FlowControlAction action) {
- if (announced_window_ < target_window() / 2) {
- action.set_send_transport_update(
- FlowControlAction::Urgency::UPDATE_IMMEDIATELY);
- }
- return action;
- }
+ FlowControlAction UpdateAction(FlowControlAction action);
- const grpc_chttp2_transport* const t_;
+ MemoryOwner* const memory_owner_;
/** calculating what we should give for local window:
we track the total amount of flow control over initial window size
@@ -336,140 +287,87 @@ class TransportFlowControl final : public TransportFlowControlBase {
/* pid controller */
PidController pid_controller_;
Timestamp last_pid_update_;
+
+ int64_t remote_window_ = kDefaultWindow;
+ int64_t target_initial_window_size_ = kDefaultWindow;
+ int64_t target_frame_size_ = kDefaultFrameSize;
+ int64_t announced_window_ = kDefaultWindow;
+ uint32_t acked_init_window_ = kDefaultWindow;
};
-// Fat interface with all methods a stream flow control implementation needs
-// to support.
-class StreamFlowControlBase {
+// Implementation of flow control that abides to HTTP/2 spec and attempts
+// to be as performant as possible.
+class StreamFlowControl final {
public:
- StreamFlowControlBase() {}
- virtual ~StreamFlowControlBase() {}
-
- // Updates an action using the protected members.
- virtual FlowControlAction UpdateAction(FlowControlAction /* action */) {
- abort();
- }
-
- // Using the protected members, returns an Action for this stream to be
- // taken by the tranport.
- virtual FlowControlAction MakeAction() = 0;
-
- // Bookkeeping for when data is sent on this stream.
- virtual void SentData(int64_t /* outgoing_frame_size */) = 0;
-
- // Bookkeeping and error checking for when data is received by this stream.
- virtual grpc_error_handle RecvData(int64_t /* incoming_frame_size */) = 0;
-
- // Called to check if this stream needs to send a WINDOW_UPDATE frame.
- virtual uint32_t MaybeSendUpdate() = 0;
-
- // Bookkeeping for receiving a WINDOW_UPDATE from for this stream.
- virtual void RecvUpdate(uint32_t /* size */) = 0;
-
- // Bookkeeping for when a call pulls bytes out of the transport. At this
- // point we consider the data 'used' and can thus let out peer know we are
- // ready for more data.
- virtual void IncomingByteStreamUpdate(size_t /* max_size_hint */,
- size_t /* have_already */) {
- abort();
+ explicit StreamFlowControl(TransportFlowControl* tfc);
+ ~StreamFlowControl() {
+ tfc_->RemoveAnnouncedWindowDelta(announced_window_delta_);
}
- // Used in certain benchmarks in which we don't want FlowControl to be a
- // factor
- virtual void TestOnlyForceHugeWindow() {}
+ // Track an update to the incoming flow control counters - that is how many
+ // tokens we report to our peer that we're willing to accept.
+ // Instantiators *must* call MakeAction before destruction of this value.
+ class IncomingUpdateContext {
+ public:
+ explicit IncomingUpdateContext(StreamFlowControl* sfc)
+ : tfc_upd_(sfc->tfc_), sfc_(sfc) {}
- // Getters
- int64_t remote_window_delta() const { return remote_window_delta_; }
- int64_t local_window_delta() const { return local_window_delta_; }
- int64_t announced_window_delta() const { return announced_window_delta_; }
+ FlowControlAction MakeAction() {
+ return sfc_->UpdateAction(tfc_upd_.MakeAction());
+ }
- protected:
- friend class grpc::testing::TrickledCHTTP2;
- int64_t remote_window_delta_ = 0;
- int64_t local_window_delta_ = 0;
- int64_t announced_window_delta_ = 0;
-};
+ // we have received data from the wire
+ y_absl::Status RecvData(int64_t incoming_frame_size);
-// Implementation of flow control that does NOTHING. Always returns maximum
-// values, never initiates writes, and assumes that the remote peer is doing
-// the same. To be used to narrow down on flow control as the cause of negative
-// performance.
-class StreamFlowControlDisabled : public StreamFlowControlBase {
- public:
- FlowControlAction UpdateAction(FlowControlAction action) override {
- return action;
- }
- FlowControlAction MakeAction() override { return FlowControlAction(); }
- void SentData(int64_t /* outgoing_frame_size */) override {}
- grpc_error_handle RecvData(int64_t /* incoming_frame_size */) override {
- return GRPC_ERROR_NONE;
- }
- uint32_t MaybeSendUpdate() override { return 0; }
- void RecvUpdate(uint32_t /* size */) override {}
- void IncomingByteStreamUpdate(size_t /* max_size_hint */,
- size_t /* have_already */) override {}
-};
+ // the application is asking for a certain amount of bytes
+ void SetMinProgressSize(uint32_t min_progress_size) {
+ sfc_->min_progress_size_ = min_progress_size;
+ }
-// Implementation of flow control that abides to HTTP/2 spec and attempts
-// to be as performant as possible.
-class StreamFlowControl final : public StreamFlowControlBase {
- public:
- StreamFlowControl(TransportFlowControl* tfc, const grpc_chttp2_stream* s);
- ~StreamFlowControl() override {
- tfc_->PreUpdateAnnouncedWindowOverIncomingWindow(announced_window_delta_);
- }
+ void SetPendingSize(int64_t pending_size);
- FlowControlAction UpdateAction(FlowControlAction action) override;
- FlowControlAction MakeAction() override {
- return UpdateAction(tfc_->MakeAction());
- }
+ private:
+ TransportFlowControl::IncomingUpdateContext tfc_upd_;
+ StreamFlowControl* const sfc_;
+ };
- // we have sent data on the wire, we must track this in our bookkeeping for
- // the remote peer's flow control.
- void SentData(int64_t outgoing_frame_size) override {
- FlowControlTrace tracer(" data sent", tfc_, this);
- tfc_->StreamSentData(outgoing_frame_size);
- remote_window_delta_ -= outgoing_frame_size;
- }
+ // Track an update to the outgoing flow control counters - that is how many
+ // tokens our peer has said we can send.
+ class OutgoingUpdateContext {
+ public:
+ explicit OutgoingUpdateContext(StreamFlowControl* sfc)
+ : tfc_upd_(sfc->tfc_), sfc_(sfc) {}
+ // we have received a WINDOW_UPDATE frame for a stream
+ void RecvUpdate(uint32_t size) { sfc_->remote_window_delta_ += size; }
+ // we have sent data on the wire, we must track this in our bookkeeping for
+ // the remote peer's flow control.
+ void SentData(int64_t outgoing_frame_size) {
+ tfc_upd_.StreamSentData(outgoing_frame_size);
+ sfc_->remote_window_delta_ -= outgoing_frame_size;
+ }
- // we have received data from the wire
- grpc_error_handle RecvData(int64_t incoming_frame_size) override;
+ private:
+ TransportFlowControl::OutgoingUpdateContext tfc_upd_;
+ StreamFlowControl* const sfc_;
+ };
// returns an announce if we should send a stream update to our peer, else
// returns zero
- uint32_t MaybeSendUpdate() override;
-
- // we have received a WINDOW_UPDATE frame for a stream
- void RecvUpdate(uint32_t size) override {
- FlowControlTrace trace("s updt recv", tfc_, this);
- remote_window_delta_ += size;
- }
-
- // the application is asking for a certain amount of bytes
- void IncomingByteStreamUpdate(size_t max_size_hint,
- size_t have_already) override;
+ uint32_t MaybeSendUpdate();
int64_t remote_window_delta() const { return remote_window_delta_; }
- int64_t local_window_delta() const { return local_window_delta_; }
int64_t announced_window_delta() const { return announced_window_delta_; }
-
- const grpc_chttp2_stream* stream() const { return s_; }
-
- void TestOnlyForceHugeWindow() override {
- announced_window_delta_ = 1024 * 1024 * 1024;
- local_window_delta_ = 1024 * 1024 * 1024;
- remote_window_delta_ = 1024 * 1024 * 1024;
- }
+ uint32_t min_progress_size() const { return min_progress_size_; }
private:
TransportFlowControl* const tfc_;
- const grpc_chttp2_stream* const s_;
+ int64_t min_progress_size_ = 0;
+ int64_t remote_window_delta_ = 0;
+ int64_t announced_window_delta_ = 0;
+ y_absl::optional<int64_t> pending_size_;
- void UpdateAnnouncedWindowDelta(TransportFlowControl* tfc, int64_t change) {
- tfc->PreUpdateAnnouncedWindowOverIncomingWindow(announced_window_delta_);
- announced_window_delta_ += change;
- tfc->PostUpdateAnnouncedWindowOverIncomingWindow(announced_window_delta_);
- }
+ FlowControlAction UpdateAction(FlowControlAction action);
+ uint32_t DesiredAnnounceSize() const;
};
class TestOnlyTransportTargetWindowEstimatesMocker {
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame.h
index 083c0076e7..fa5d74a8ec 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame.h
@@ -21,10 +21,6 @@
#include <grpc/support/port_platform.h>
-#include <grpc/slice.h>
-
-#include "src/core/lib/iomgr/error.h"
-
/* defined in internal.h */
typedef struct grpc_chttp2_stream grpc_chttp2_stream;
typedef struct grpc_chttp2_transport grpc_chttp2_transport;
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_data.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_data.cc
index 0a2197505a..5f8c850e43 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_data.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_data.cc
@@ -20,36 +20,25 @@
#include "src/core/ext/transport/chttp2/transport/frame_data.h"
-#include <string.h>
+#include <stdlib.h>
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_format.h"
-#include <grpc/support/alloc.h>
+#include <grpc/slice_buffer.h>
#include <grpc/support/log.h>
#include "src/core/ext/transport/chttp2/transport/internal.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/memory.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/lib/slice/slice_buffer.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/core/lib/transport/transport.h"
-grpc_chttp2_data_parser::~grpc_chttp2_data_parser() {
- if (parsing_frame != nullptr) {
- GRPC_ERROR_UNREF(parsing_frame->Finished(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Parser destroyed"), false));
- }
- GRPC_ERROR_UNREF(error);
-}
-
-grpc_error_handle grpc_chttp2_data_parser_begin_frame(
- grpc_chttp2_data_parser* /*parser*/, uint8_t flags, uint32_t stream_id,
- grpc_chttp2_stream* s) {
+y_absl::Status grpc_chttp2_data_parser_begin_frame(uint8_t flags,
+ uint32_t stream_id,
+ grpc_chttp2_stream* s) {
if (flags & ~GRPC_CHTTP2_DATA_FLAG_END_STREAM) {
- return grpc_error_set_int(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrFormat(
- "unsupported data flags: 0x%02x", flags)),
- GRPC_ERROR_INT_STREAM_ID,
- static_cast<intptr_t>(stream_id));
+ return y_absl::InternalError(y_absl::StrFormat(
+ "unsupported data flags: 0x%02x stream: %d", flags, stream_id));
}
if (flags & GRPC_CHTTP2_DATA_FLAG_END_STREAM) {
@@ -59,7 +48,7 @@ grpc_error_handle grpc_chttp2_data_parser_begin_frame(
s->received_last_frame = false;
}
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
void grpc_chttp2_encode_data(uint32_t id, grpc_slice_buffer* inbuf,
@@ -90,188 +79,58 @@ void grpc_chttp2_encode_data(uint32_t id, grpc_slice_buffer* inbuf,
stats->data_bytes += write_bytes;
}
-grpc_error_handle grpc_deframe_unprocessed_incoming_frames(
- grpc_chttp2_data_parser* p, grpc_chttp2_stream* s,
- grpc_slice_buffer* slices, grpc_slice* slice_out,
- grpc_core::OrphanablePtr<grpc_core::ByteStream>* stream_out) {
+grpc_core::Poll<grpc_error_handle> grpc_deframe_unprocessed_incoming_frames(
+ grpc_chttp2_stream* s, uint32_t* min_progress_size,
+ grpc_core::SliceBuffer* stream_out, uint32_t* message_flags) {
+ grpc_slice_buffer* slices = &s->frame_storage;
grpc_error_handle error = GRPC_ERROR_NONE;
- grpc_chttp2_transport* t = s->t;
- while (slices->count > 0) {
- uint8_t* beg = nullptr;
- uint8_t* end = nullptr;
- uint8_t* cur = nullptr;
-
- grpc_slice* slice = grpc_slice_buffer_peek_first(slices);
- beg = GRPC_SLICE_START_PTR(*slice);
- end = GRPC_SLICE_END_PTR(*slice);
- cur = beg;
- uint32_t message_flags;
+ if (slices->length < 5) {
+ if (min_progress_size != nullptr) *min_progress_size = 5 - slices->length;
+ return grpc_core::Pending{};
+ }
- if (cur == end) {
- grpc_slice_buffer_remove_first(slices);
- continue;
- }
+ uint8_t header[5];
+ grpc_slice_buffer_copy_first_into_buffer(slices, 5, header);
- switch (p->state) {
- case GRPC_CHTTP2_DATA_ERROR:
- p->state = GRPC_CHTTP2_DATA_ERROR;
- grpc_slice_buffer_remove_first(slices);
- return GRPC_ERROR_REF(p->error);
- case GRPC_CHTTP2_DATA_FH_0:
- s->stats.incoming.framing_bytes++;
- p->frame_type = *cur;
- switch (p->frame_type) {
- case 0:
- p->is_frame_compressed = false; /* GPR_FALSE */
- break;
- case 1:
- p->is_frame_compressed = true; /* GPR_TRUE */
- break;
- default:
- p->error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrFormat("Bad GRPC frame type 0x%02x", p->frame_type));
- p->error = grpc_error_set_int(p->error, GRPC_ERROR_INT_STREAM_ID,
- static_cast<intptr_t>(s->id));
- grpc_core::UniquePtr<char> dmp(
- grpc_dump_slice(*slice, GPR_DUMP_HEX | GPR_DUMP_ASCII));
- p->error = grpc_error_set_str(p->error, GRPC_ERROR_STR_RAW_BYTES,
- dmp.get());
- p->error =
- grpc_error_set_int(p->error, GRPC_ERROR_INT_OFFSET, cur - beg);
- p->state = GRPC_CHTTP2_DATA_ERROR;
- grpc_slice_buffer_remove_first(slices);
- return GRPC_ERROR_REF(p->error);
- }
- if (++cur == end) {
- p->state = GRPC_CHTTP2_DATA_FH_1;
- grpc_slice_buffer_remove_first(slices);
- continue;
- }
- Y_ABSL_FALLTHROUGH_INTENDED;
- case GRPC_CHTTP2_DATA_FH_1:
- s->stats.incoming.framing_bytes++;
- p->frame_size = (static_cast<uint32_t>(*cur)) << 24;
- if (++cur == end) {
- p->state = GRPC_CHTTP2_DATA_FH_2;
- grpc_slice_buffer_remove_first(slices);
- continue;
- }
- Y_ABSL_FALLTHROUGH_INTENDED;
- case GRPC_CHTTP2_DATA_FH_2:
- s->stats.incoming.framing_bytes++;
- p->frame_size |= (static_cast<uint32_t>(*cur)) << 16;
- if (++cur == end) {
- p->state = GRPC_CHTTP2_DATA_FH_3;
- grpc_slice_buffer_remove_first(slices);
- continue;
- }
- Y_ABSL_FALLTHROUGH_INTENDED;
- case GRPC_CHTTP2_DATA_FH_3:
- s->stats.incoming.framing_bytes++;
- p->frame_size |= (static_cast<uint32_t>(*cur)) << 8;
- if (++cur == end) {
- p->state = GRPC_CHTTP2_DATA_FH_4;
- grpc_slice_buffer_remove_first(slices);
- continue;
- }
- Y_ABSL_FALLTHROUGH_INTENDED;
- case GRPC_CHTTP2_DATA_FH_4:
- s->stats.incoming.framing_bytes++;
- GPR_ASSERT(stream_out != nullptr);
- GPR_ASSERT(p->parsing_frame == nullptr);
- p->frame_size |= (static_cast<uint32_t>(*cur));
- if (t->channelz_socket != nullptr) {
- t->channelz_socket->RecordMessageReceived();
- }
- p->state = GRPC_CHTTP2_DATA_FRAME;
- ++cur;
- message_flags = 0;
- if (p->is_frame_compressed) {
- message_flags |= GRPC_WRITE_INTERNAL_COMPRESS;
- }
- p->parsing_frame = new grpc_core::Chttp2IncomingByteStream(
- t, s, p->frame_size, message_flags);
- stream_out->reset(p->parsing_frame);
- if (p->parsing_frame->remaining_bytes() == 0) {
- GRPC_ERROR_UNREF(p->parsing_frame->Finished(GRPC_ERROR_NONE, true));
- p->parsing_frame = nullptr;
- p->state = GRPC_CHTTP2_DATA_FH_0;
- }
- s->pending_byte_stream = true;
- if (cur != end) {
- grpc_slice_buffer_sub_first(slices, static_cast<size_t>(cur - beg),
- static_cast<size_t>(end - beg));
- } else {
- grpc_slice_buffer_remove_first(slices);
- }
- return GRPC_ERROR_NONE;
- case GRPC_CHTTP2_DATA_FRAME: {
- GPR_ASSERT(p->parsing_frame != nullptr);
- GPR_ASSERT(slice_out != nullptr);
- if (cur == end) {
- grpc_slice_buffer_remove_first(slices);
- continue;
- }
- uint32_t remaining = static_cast<uint32_t>(end - cur);
- if (remaining == p->frame_size) {
- s->stats.incoming.data_bytes += remaining;
- if (GRPC_ERROR_NONE !=
- (error = p->parsing_frame->Push(
- grpc_slice_sub(*slice, static_cast<size_t>(cur - beg),
- static_cast<size_t>(end - beg)),
- slice_out))) {
- grpc_slice_buffer_remove_first(slices);
- return error;
- }
- if (GRPC_ERROR_NONE !=
- (error = p->parsing_frame->Finished(GRPC_ERROR_NONE, true))) {
- grpc_slice_buffer_remove_first(slices);
- return error;
- }
- p->parsing_frame = nullptr;
- p->state = GRPC_CHTTP2_DATA_FH_0;
- grpc_slice_buffer_remove_first(slices);
- return GRPC_ERROR_NONE;
- } else if (remaining < p->frame_size) {
- s->stats.incoming.data_bytes += remaining;
- if (GRPC_ERROR_NONE !=
- (error = p->parsing_frame->Push(
- grpc_slice_sub(*slice, static_cast<size_t>(cur - beg),
- static_cast<size_t>(end - beg)),
- slice_out))) {
- return error;
- }
- p->frame_size -= remaining;
- grpc_slice_buffer_remove_first(slices);
- return GRPC_ERROR_NONE;
- } else {
- GPR_ASSERT(remaining > p->frame_size);
- s->stats.incoming.data_bytes += p->frame_size;
- if (GRPC_ERROR_NONE !=
- p->parsing_frame->Push(
- grpc_slice_sub(
- *slice, static_cast<size_t>(cur - beg),
- static_cast<size_t>(cur + p->frame_size - beg)),
- slice_out)) {
- grpc_slice_buffer_remove_first(slices);
- return error;
- }
- if (GRPC_ERROR_NONE !=
- (error = p->parsing_frame->Finished(GRPC_ERROR_NONE, true))) {
- grpc_slice_buffer_remove_first(slices);
- return error;
- }
- p->parsing_frame = nullptr;
- p->state = GRPC_CHTTP2_DATA_FH_0;
- cur += p->frame_size;
- grpc_slice_buffer_sub_first(slices, static_cast<size_t>(cur - beg),
- static_cast<size_t>(end - beg));
- return GRPC_ERROR_NONE;
- }
+ switch (header[0]) {
+ case 0:
+ if (message_flags != nullptr) *message_flags = 0;
+ break;
+ case 1:
+ if (message_flags != nullptr) {
+ *message_flags = GRPC_WRITE_INTERNAL_COMPRESS;
}
+ break;
+ default:
+ error = GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ y_absl::StrFormat("Bad GRPC frame type 0x%02x", header[0]));
+ error = grpc_error_set_int(error, GRPC_ERROR_INT_STREAM_ID,
+ static_cast<intptr_t>(s->id));
+ return error;
+ }
+
+ uint64_t length = (static_cast<uint32_t>(header[1]) << 24) |
+ (static_cast<uint32_t>(header[2]) << 16) |
+ (static_cast<uint32_t>(header[3]) << 8) |
+ static_cast<uint32_t>(header[4]);
+
+ if (slices->length < length + 5) {
+ if (min_progress_size != nullptr) {
+ *min_progress_size = length + 5 - slices->length;
}
+ return grpc_core::Pending{};
+ }
+
+ if (min_progress_size != nullptr) *min_progress_size = 0;
+
+ if (stream_out != nullptr) {
+ s->stats.incoming.framing_bytes += 5;
+ s->stats.incoming.data_bytes += length;
+ grpc_slice_buffer_move_first_into_buffer(slices, 5, header);
+ grpc_slice_buffer_move_first(slices, length, stream_out->c_slice_buffer());
}
+
return GRPC_ERROR_NONE;
}
@@ -280,20 +139,9 @@ grpc_error_handle grpc_chttp2_data_parser_parse(void* /*parser*/,
grpc_chttp2_stream* s,
const grpc_slice& slice,
int is_last) {
- if (!s->pending_byte_stream) {
- grpc_slice_ref_internal(slice);
- grpc_slice_buffer_add(&s->frame_storage, slice);
- grpc_chttp2_maybe_complete_recv_message(t, s);
- } else if (s->on_next) {
- GPR_ASSERT(s->frame_storage.length == 0);
- grpc_slice_ref_internal(slice);
- grpc_slice_buffer_add(&s->unprocessed_incoming_frames_buffer, slice);
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, s->on_next, GRPC_ERROR_NONE);
- s->on_next = nullptr;
- } else {
- grpc_slice_ref_internal(slice);
- grpc_slice_buffer_add(&s->frame_storage, slice);
- }
+ grpc_slice_ref_internal(slice);
+ grpc_slice_buffer_add(&s->frame_storage, slice);
+ grpc_chttp2_maybe_complete_recv_message(t, s);
if (is_last && s->received_last_frame) {
grpc_chttp2_mark_stream_closed(
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_data.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_data.h
index 6690e5f309..2f5a3741e3 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_data.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_data.h
@@ -23,44 +23,22 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
+#include "y_absl/status/status.h"
+
#include <grpc/slice.h>
-#include <grpc/slice_buffer.h>
#include "src/core/ext/transport/chttp2/transport/frame.h"
-#include "src/core/lib/transport/byte_stream.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/promise/poll.h"
+#include "src/core/lib/slice/slice_buffer.h"
#include "src/core/lib/transport/transport.h"
-typedef enum {
- GRPC_CHTTP2_DATA_FH_0,
- GRPC_CHTTP2_DATA_FH_1,
- GRPC_CHTTP2_DATA_FH_2,
- GRPC_CHTTP2_DATA_FH_3,
- GRPC_CHTTP2_DATA_FH_4,
- GRPC_CHTTP2_DATA_FRAME,
- GRPC_CHTTP2_DATA_ERROR
-} grpc_chttp2_stream_state;
-
-namespace grpc_core {
-class Chttp2IncomingByteStream;
-} // namespace grpc_core
-
-struct grpc_chttp2_data_parser {
- grpc_chttp2_data_parser() = default;
- ~grpc_chttp2_data_parser();
-
- grpc_chttp2_stream_state state = GRPC_CHTTP2_DATA_FH_0;
- uint8_t frame_type = 0;
- uint32_t frame_size = 0;
- grpc_error_handle error = GRPC_ERROR_NONE;
-
- bool is_frame_compressed = false;
- grpc_core::Chttp2IncomingByteStream* parsing_frame = nullptr;
-};
-
/* start processing a new data frame */
-grpc_error_handle grpc_chttp2_data_parser_begin_frame(
- grpc_chttp2_data_parser* parser, uint8_t flags, uint32_t stream_id,
- grpc_chttp2_stream* s);
+y_absl::Status grpc_chttp2_data_parser_begin_frame(uint8_t flags,
+ uint32_t stream_id,
+ grpc_chttp2_stream* s);
/* handle a slice of a data frame - is_last indicates the last slice of a
frame */
@@ -75,9 +53,8 @@ void grpc_chttp2_encode_data(uint32_t id, grpc_slice_buffer* inbuf,
grpc_transport_one_way_stats* stats,
grpc_slice_buffer* outbuf);
-grpc_error_handle grpc_deframe_unprocessed_incoming_frames(
- grpc_chttp2_data_parser* p, grpc_chttp2_stream* s,
- grpc_slice_buffer* slices, grpc_slice* slice_out,
- grpc_core::OrphanablePtr<grpc_core::ByteStream>* stream_out);
+grpc_core::Poll<grpc_error_handle> grpc_deframe_unprocessed_incoming_frames(
+ grpc_chttp2_stream* s, uint32_t* min_progress_size,
+ grpc_core::SliceBuffer* stream_out, uint32_t* message_flags);
#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_DATA_H */
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.cc
index 07930cf5f7..76472a6745 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.cc
@@ -22,8 +22,11 @@
#include <string.h>
+#include "y_absl/base/attributes.h"
#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/string_view.h"
+#include <grpc/slice_buffer.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.h
index 2ceb620242..cc86146b76 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_goaway.h
@@ -21,10 +21,12 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
#include <grpc/slice.h>
-#include <grpc/slice_buffer.h>
#include "src/core/ext/transport/chttp2/transport/frame.h"
+#include "src/core/lib/iomgr/error.h"
typedef enum {
GRPC_CHTTP2_GOAWAY_LSI0,
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_ping.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_ping.cc
index 12a337bee4..6af0deeb57 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_ping.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_ping.cc
@@ -22,12 +22,16 @@
#include <string.h>
+#include <algorithm>
+
#include "y_absl/strings/str_format.h"
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include "src/core/ext/transport/chttp2/transport/internal.h"
+#include "src/core/ext/transport/chttp2/transport/stream_map.h"
+#include "src/core/lib/gprpp/time.h"
static bool g_disable_ping_ack = false;
@@ -90,7 +94,7 @@ grpc_error_handle grpc_chttp2_ping_parser_parse(void* parser,
grpc_chttp2_ack_ping(t, p->opaque_8bytes);
} else {
if (!t->is_client) {
- grpc_core::Timestamp now = grpc_core::ExecCtx::Get()->Now();
+ grpc_core::Timestamp now = grpc_core::Timestamp::Now();
grpc_core::Timestamp next_allowed_ping =
t->ping_recv_state.last_ping_recv_time +
t->ping_policy.min_recv_ping_interval_without_data;
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_ping.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_ping.h
index c878cff851..46ed6bcd75 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_ping.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_ping.h
@@ -21,9 +21,12 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
#include <grpc/slice.h>
#include "src/core/ext/transport/chttp2/transport/frame.h"
+#include "src/core/lib/iomgr/error.h"
struct grpc_chttp2_ping_parser {
uint8_t byte;
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc
index e994d46632..43c85632b0 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc
@@ -20,16 +20,20 @@
#include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
+#include <stddef.h>
+
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
-#include <grpc/support/alloc.h>
+#include <grpc/slice_buffer.h>
#include <grpc/support/log.h>
#include "src/core/ext/transport/chttp2/transport/frame.h"
+#include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
#include "src/core/ext/transport/chttp2/transport/internal.h"
-#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/transport/http2_errors.h"
+#include "src/core/lib/transport/metadata_batch.h"
grpc_slice grpc_chttp2_rst_stream_create(uint32_t id, uint32_t code,
grpc_transport_one_way_stats* stats) {
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_rst_stream.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_rst_stream.h
index 6581317617..840e71e3ab 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_rst_stream.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_rst_stream.h
@@ -21,9 +21,12 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
#include <grpc/slice.h>
#include "src/core/ext/transport/chttp2/transport/frame.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/transport/transport.h"
struct grpc_chttp2_rst_stream_parser {
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_settings.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_settings.cc
index 36b730f662..8c3615c327 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_settings.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_settings.cc
@@ -22,16 +22,24 @@
#include <string.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/base/attributes.h"
#include "y_absl/strings/str_format.h"
-#include <grpc/support/alloc.h>
+#include <grpc/slice_buffer.h>
#include <grpc/support/log.h>
-#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
+#include "src/core/ext/transport/chttp2/transport/flow_control.h"
#include "src/core/ext/transport/chttp2/transport/frame.h"
+#include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
+#include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
#include "src/core/ext/transport/chttp2/transport/internal.h"
#include "src/core/lib/debug/trace.h"
-#include "src/core/lib/transport/http2_errors.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
static uint8_t* fill_header(uint8_t* out, uint32_t length, uint8_t flags) {
*out++ = static_cast<uint8_t>(length >> 16);
@@ -110,22 +118,6 @@ grpc_error_handle grpc_chttp2_settings_parser_begin_frame(
}
}
-namespace {
-
-void StreamFlowControlWindowCheck(void* user_data, uint32_t /* key */,
- void* stream) {
- bool* error = static_cast<bool*>(user_data);
- grpc_chttp2_stream* s = static_cast<grpc_chttp2_stream*>(stream);
- if ((s->t->settings[GRPC_PEER_SETTINGS]
- [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE] +
- s->t->initial_window_update + s->flow_control->remote_window_delta()) >
- ((1u << 31) - 1)) {
- *error = true;
- }
-}
-
-} // namespace
-
grpc_error_handle grpc_chttp2_settings_parser_parse(void* p,
grpc_chttp2_transport* t,
grpc_chttp2_stream* /*s*/,
@@ -151,6 +143,8 @@ grpc_error_handle grpc_chttp2_settings_parser_parse(void* p,
GRPC_CHTTP2_NUM_SETTINGS * sizeof(uint32_t));
t->num_pending_induced_frames++;
grpc_slice_buffer_add(&t->qbuf, grpc_chttp2_settings_ack_create());
+ grpc_chttp2_initiate_write(t,
+ GRPC_CHTTP2_INITIATE_WRITE_SETTINGS_ACK);
if (t->notify_on_receive_settings != nullptr) {
grpc_core::ExecCtx::Run(DEBUG_LOCATION,
t->notify_on_receive_settings,
@@ -208,12 +202,6 @@ grpc_error_handle grpc_chttp2_settings_parser_parse(void* p,
if (grpc_wire_id_to_setting_id(parser->id, &id)) {
const grpc_chttp2_setting_parameters* sp =
&grpc_chttp2_settings_parameters[id];
- // If flow control is disabled we skip these.
- if (!t->flow_control->flow_control_enabled() &&
- (id == GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE ||
- id == GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE)) {
- continue;
- }
if (parser->value < sp->min_value || parser->value > sp->max_value) {
switch (sp->invalid_value_behavior) {
case GRPC_CHTTP2_CLAMP_INVALID_VALUE:
@@ -239,23 +227,6 @@ grpc_error_handle grpc_chttp2_settings_parser_parse(void* p,
t->is_client ? "cli" : "svr",
static_cast<int>(t->initial_window_update));
}
- if (grpc_core::chttp2::
- g_test_only_transport_flow_control_window_check) {
- bool error = false;
- if (parser->value > grpc_core::chttp2::kMaxInitialWindowSize ||
- parser->value < grpc_core::chttp2::kMinInitialWindowSize) {
- error = true;
- } else {
- grpc_chttp2_stream_map_for_each(
- &t->stream_map, StreamFlowControlWindowCheck, &error);
- }
- if (error) {
- grpc_chttp2_goaway_append(
- t->last_new_stream_id, sp->error_value,
- grpc_slice_from_static_string("HTTP2 settings error"),
- &t->qbuf);
- }
- }
}
parser->incoming_settings[id] = parser->value;
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_settings.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_settings.h
index 9ec116b728..5616a11e00 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_settings.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_settings.h
@@ -21,10 +21,14 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+#include <stdint.h>
+
#include <grpc/slice.h>
#include "src/core/ext/transport/chttp2/transport/frame.h"
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
+#include "src/core/lib/iomgr/error.h"
typedef enum {
GRPC_CHTTP2_SPS_ID0,
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_window_update.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_window_update.cc
index 55cf7b29a8..c5a8b2ff08 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_window_update.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_window_update.cc
@@ -20,12 +20,14 @@
#include "src/core/ext/transport/chttp2/transport/frame_window_update.h"
+#include <stddef.h>
+
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
+#include "src/core/ext/transport/chttp2/transport/flow_control.h"
#include "src/core/ext/transport/chttp2/transport/internal.h"
grpc_slice grpc_chttp2_window_update_create(
@@ -95,13 +97,9 @@ grpc_error_handle grpc_chttp2_window_update_parser_parse(
if (t->incoming_stream_id != 0) {
if (s != nullptr) {
- s->flow_control->RecvUpdate(received_update);
- if (grpc_core::chttp2::
- g_test_only_transport_flow_control_window_check &&
- s->flow_control->remote_window_delta() >
- grpc_core::chttp2::kMaxWindowDelta) {
- GPR_ASSERT(false);
- }
+ grpc_core::chttp2::StreamFlowControl::OutgoingUpdateContext(
+ &s->flow_control)
+ .RecvUpdate(received_update);
if (grpc_chttp2_list_remove_stalled_by_stream(t, s)) {
grpc_chttp2_mark_stream_writable(t, s);
grpc_chttp2_initiate_write(
@@ -109,10 +107,10 @@ grpc_error_handle grpc_chttp2_window_update_parser_parse(
}
}
} else {
- bool was_zero = t->flow_control->remote_window() <= 0;
- t->flow_control->RecvUpdate(received_update);
- bool is_zero = t->flow_control->remote_window() <= 0;
- if (was_zero && !is_zero) {
+ grpc_core::chttp2::TransportFlowControl::OutgoingUpdateContext upd(
+ &t->flow_control);
+ upd.RecvUpdate(received_update);
+ if (upd.Finish() == grpc_core::chttp2::StallEdge::kUnstalled) {
grpc_chttp2_initiate_write(
t, GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL_UNSTALLED);
}
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_window_update.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_window_update.h
index ea414d7a8d..05dee14f3f 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_window_update.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/frame_window_update.h
@@ -21,9 +21,12 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
#include <grpc/slice.h>
#include "src/core/ext/transport/chttp2/transport/frame.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/transport/transport.h"
struct grpc_chttp2_window_update_parser {
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_constants.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_constants.h
index f588652933..ca1a8b92a5 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_constants.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_constants.h
@@ -17,7 +17,8 @@
#include <grpc/support/port_platform.h>
-#include <stdint.h>
+#include <cstddef>
+#include <cstdint>
namespace grpc_core {
namespace hpack_constants {
@@ -33,6 +34,11 @@ static constexpr uint32_t EntriesForBytes(uint32_t bytes) noexcept {
return (bytes + kEntryOverhead - 1) / kEntryOverhead;
}
+static constexpr size_t SizeForEntry(size_t key_length,
+ size_t value_length) noexcept {
+ return key_length + value_length + kEntryOverhead;
+}
+
static constexpr uint32_t kInitialTableEntries =
EntriesForBytes(kInitialTableSize);
} // namespace hpack_constants
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.cc
index 7083c2c4d2..edf0adad6a 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.cc
@@ -20,27 +20,19 @@
#include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
-#include <assert.h>
-#include <string.h>
-
+#include <algorithm>
#include <cstdint>
+#include <memory>
-#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
-#include "src/core/ext/transport/chttp2/transport/hpack_encoder_table.h"
-
-/* This is here for grpc_is_binary_header
- * TODO(murgatroid99): Remove this
- */
-#include <grpc/grpc.h>
#include <grpc/slice.h>
-#include <grpc/support/alloc.h>
+#include <grpc/slice_buffer.h>
#include <grpc/support/log.h>
#include "src/core/ext/transport/chttp2/transport/bin_encoder.h"
+#include "src/core/ext/transport/chttp2/transport/frame.h"
+#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
+#include "src/core/ext/transport/chttp2/transport/hpack_encoder_table.h"
#include "src/core/ext/transport/chttp2/transport/varint.h"
-#include "src/core/lib/debug/stats.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
#include "src/core/lib/surface/validate_metadata.h"
#include "src/core/lib/transport/timeout_encoding.h"
@@ -162,7 +154,6 @@ uint8_t* HPackCompressor::Framer::AddTiny(size_t len) {
}
void HPackCompressor::Framer::EmitIndexed(uint32_t elem_index) {
- GRPC_STATS_INC_HPACK_SEND_INDEXED();
VarintWriter<1> w(elem_index);
w.Write(0x80, AddTiny(w.length()));
}
@@ -184,17 +175,14 @@ static WireValue GetWireValue(Slice value, bool true_binary_enabled,
bool is_bin_hdr) {
if (is_bin_hdr) {
if (true_binary_enabled) {
- GRPC_STATS_INC_HPACK_SEND_BINARY();
return WireValue(0x00, true, std::move(value));
} else {
- GRPC_STATS_INC_HPACK_SEND_BINARY_BASE64();
return WireValue(0x80, false,
Slice(grpc_chttp2_base64_encode_and_huffman_compress(
value.c_slice())));
}
} else {
/* TODO(ctiller): opportunistically compress non-binary headers */
- GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED();
return WireValue(0x00, false, std::move(value));
}
}
@@ -273,8 +261,6 @@ class StringKey {
void HPackCompressor::Framer::EmitLitHdrWithNonBinaryStringKeyIncIdx(
Slice key_slice, Slice value_slice) {
- GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX_V();
- GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED();
StringKey key(std::move(key_slice));
key.WritePrefix(0x40, AddTiny(key.prefix_length()));
Add(key.key());
@@ -285,8 +271,6 @@ void HPackCompressor::Framer::EmitLitHdrWithNonBinaryStringKeyIncIdx(
void HPackCompressor::Framer::EmitLitHdrWithBinaryStringKeyNotIdx(
Slice key_slice, Slice value_slice) {
- GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX_V();
- GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED();
StringKey key(std::move(key_slice));
key.WritePrefix(0x00, AddTiny(key.prefix_length()));
Add(key.key());
@@ -297,8 +281,6 @@ void HPackCompressor::Framer::EmitLitHdrWithBinaryStringKeyNotIdx(
void HPackCompressor::Framer::EmitLitHdrWithBinaryStringKeyIncIdx(
Slice key_slice, Slice value_slice) {
- GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX_V();
- GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED();
StringKey key(std::move(key_slice));
key.WritePrefix(0x40, AddTiny(key.prefix_length()));
Add(key.key());
@@ -309,8 +291,6 @@ void HPackCompressor::Framer::EmitLitHdrWithBinaryStringKeyIncIdx(
void HPackCompressor::Framer::EmitLitHdrWithBinaryStringKeyNotIdx(
uint32_t key_index, Slice value_slice) {
- GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX();
- GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED();
BinaryStringValue emit(std::move(value_slice), use_true_binary_metadata_);
VarintWriter<4> key(key_index);
uint8_t* data = AddTiny(key.length() + emit.prefix_length());
@@ -321,8 +301,6 @@ void HPackCompressor::Framer::EmitLitHdrWithBinaryStringKeyNotIdx(
void HPackCompressor::Framer::EmitLitHdrWithNonBinaryStringKeyNotIdx(
Slice key_slice, Slice value_slice) {
- GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX_V();
- GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED();
StringKey key(std::move(key_slice));
key.WritePrefix(0x00, AddTiny(key.prefix_length()));
Add(key.key());
@@ -435,13 +413,15 @@ void HPackCompressor::Framer::Encode(HttpSchemeMetadata,
}
void HPackCompressor::Framer::Encode(GrpcTraceBinMetadata, const Slice& slice) {
- EncodeIndexedKeyWithBinaryValue(&compressor_->grpc_trace_bin_index_,
- "grpc-trace-bin", slice.Ref());
+ EncodeRepeatingSliceValue(GrpcTraceBinMetadata::key(), slice,
+ &compressor_->grpc_trace_bin_index_,
+ HPackEncoderTable::MaxEntrySize());
}
void HPackCompressor::Framer::Encode(GrpcTagsBinMetadata, const Slice& slice) {
- EncodeIndexedKeyWithBinaryValue(&compressor_->grpc_tags_bin_index_,
- "grpc-tags-bin", slice.Ref());
+ EncodeRepeatingSliceValue(GrpcTagsBinMetadata::key(), slice,
+ &compressor_->grpc_tags_bin_index_,
+ HPackEncoderTable::MaxEntrySize());
}
void HPackCompressor::Framer::Encode(HttpStatusMetadata, uint32_t status) {
@@ -481,13 +461,15 @@ void HPackCompressor::Framer::Encode(HttpStatusMetadata, uint32_t status) {
void HPackCompressor::Framer::Encode(HttpMethodMetadata,
HttpMethodMetadata::ValueType method) {
switch (method) {
- case HttpMethodMetadata::ValueType::kGet:
- EmitIndexed(2); // :method: GET
- break;
case HttpMethodMetadata::ValueType::kPost:
EmitIndexed(3); // :method: POST
break;
+ case HttpMethodMetadata::ValueType::kGet:
+ EmitIndexed(2); // :method: GET
+ break;
case HttpMethodMetadata::ValueType::kPut:
+ // Right now, we only emit PUT as a method for testing purposes, so it's
+ // fine to not index it.
EmitLitHdrWithNonBinaryStringKeyNotIdx(Slice::FromStaticString(":method"),
Slice::FromStaticString("PUT"));
break;
@@ -523,8 +505,20 @@ void HPackCompressor::Framer::EncodeIndexedKeyWithBinaryValue(
}
}
+void HPackCompressor::Framer::EncodeRepeatingSliceValue(
+ const y_absl::string_view& key, const Slice& slice, uint32_t* index,
+ size_t max_compression_size) {
+ if (hpack_constants::SizeForEntry(key.size(), slice.size()) >
+ max_compression_size) {
+ EmitLitHdrWithBinaryStringKeyNotIdx(Slice::FromStaticString(key),
+ slice.Ref());
+ } else {
+ EncodeIndexedKeyWithBinaryValue(index, key, slice.Ref());
+ }
+}
+
void HPackCompressor::Framer::Encode(GrpcTimeoutMetadata, Timestamp deadline) {
- Timeout timeout = Timeout::FromDuration(deadline - ExecCtx::Get()->Now());
+ Timeout timeout = Timeout::FromDuration(deadline - Timestamp::Now());
for (auto it = compressor_->previous_timeouts_.begin();
it != compressor_->previous_timeouts_.end(); ++it) {
double ratio = timeout.RatioVersus(it->timeout);
@@ -555,7 +549,9 @@ void HPackCompressor::Framer::Encode(GrpcTimeoutMetadata, Timestamp deadline) {
}
void HPackCompressor::Framer::Encode(UserAgentMetadata, const Slice& slice) {
- if (slice.length() > HPackEncoderTable::MaxEntrySize()) {
+ if (hpack_constants::SizeForEntry(UserAgentMetadata::key().size(),
+ slice.size()) >
+ HPackEncoderTable::MaxEntrySize()) {
EmitLitHdrWithNonBinaryStringKeyNotIdx(
Slice::FromStaticString(UserAgentMetadata::key()), slice.Ref());
return;
@@ -564,9 +560,10 @@ void HPackCompressor::Framer::Encode(UserAgentMetadata, const Slice& slice) {
compressor_->user_agent_ = slice.Ref();
compressor_->user_agent_index_ = 0;
}
- EncodeAlwaysIndexed(
- &compressor_->user_agent_index_, "user-agent", slice.Ref(),
- 10 /* user-agent */ + slice.size() + hpack_constants::kEntryOverhead);
+ EncodeAlwaysIndexed(&compressor_->user_agent_index_, UserAgentMetadata::key(),
+ slice.Ref(),
+ hpack_constants::SizeForEntry(
+ UserAgentMetadata::key().size(), slice.size()));
}
void HPackCompressor::Framer::Encode(GrpcStatusMetadata,
@@ -663,7 +660,7 @@ HPackCompressor::Framer::Framer(const EncodeHeaderOptions& options,
stats_(options.stats),
compressor_(compressor),
prefix_(BeginFrame()) {
- if (y_absl::exchange(compressor_->advertise_table_size_change_, false)) {
+ if (std::exchange(compressor_->advertise_table_size_change_, false)) {
AdvertiseTableSizeChange();
}
}
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.h
index f258766a17..f309b0883b 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder.h
@@ -21,14 +21,27 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
#include <cstdint>
+#include <utility>
+#include <vector>
+
+#include "y_absl/strings/match.h"
+#include "y_absl/strings/string_view.h"
+#include <grpc/impl/codegen/compression_types.h>
#include <grpc/slice.h>
-#include <grpc/slice_buffer.h>
+#include <grpc/status.h>
-#include "src/core/ext/transport/chttp2/transport/frame.h"
+#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
#include "src/core/ext/transport/chttp2/transport/hpack_encoder_table.h"
+#include "src/core/lib/compression/compression_internal.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/slice/slice.h"
#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/timeout_encoding.h"
#include "src/core/lib/transport/transport.h"
extern grpc_core::TraceFlag grpc_http_trace;
@@ -141,6 +154,10 @@ class HPackCompressor {
void EncodeIndexedKeyWithBinaryValue(uint32_t* index, y_absl::string_view key,
Slice value);
+ void EncodeRepeatingSliceValue(const y_absl::string_view& key,
+ const Slice& slice, uint32_t* index,
+ size_t max_compression_size);
+
size_t CurrentFrameSize() const;
void Add(Slice slice);
uint8_t* AddTiny(size_t len);
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc
index ef31a01924..9282b76971 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc
@@ -16,6 +16,8 @@
#include "src/core/ext/transport/chttp2/transport/hpack_encoder_table.h"
+#include <algorithm>
+
#include <grpc/support/log.h>
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h
index 7aedd2c8b9..6145b083df 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h
@@ -17,6 +17,11 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include <limits>
+
#include "y_absl/container/inlined_vector.h"
#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
@@ -27,9 +32,13 @@ namespace grpc_core {
// sizes.
class HPackEncoderTable {
public:
+ using EntrySize = uint16_t;
+
HPackEncoderTable() : elem_size_(hpack_constants::kInitialTableEntries) {}
- static constexpr size_t MaxEntrySize() { return 65535; }
+ static constexpr size_t MaxEntrySize() {
+ return std::numeric_limits<EntrySize>::max();
+ }
// Reserve space in table for the new element, evict entries if needed.
// Return the new index of the element. Return 0 to indicate not adding to
@@ -62,7 +71,7 @@ class HPackEncoderTable {
uint32_t table_elems_ = 0;
uint32_t table_size_ = 0;
// The size of each element in the HPACK table.
- y_absl::InlinedVector<uint16_t, hpack_constants::kInitialTableEntries>
+ y_absl::InlinedVector<EntrySize, hpack_constants::kInitialTableEntries>
elem_size_;
};
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser.cc
index 69993c76a7..321834b5a9 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser.cc
@@ -21,32 +21,44 @@
#include "src/core/ext/transport/chttp2/transport/hpack_parser.h"
#include <assert.h>
+#include <inttypes.h>
#include <stddef.h>
-#include <string.h>
+#include <stdlib.h>
+#include <algorithm>
+#include <cstdint>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/base/attributes.h"
+#include "y_absl/status/status.h"
+#include "y_absl/strings/match.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+#include "y_absl/types/span.h"
+#include "y_absl/types/variant.h"
-#include <grpc/support/alloc.h>
+#include <grpc/status.h>
#include <grpc/support/log.h>
-#include "src/core/ext/transport/chttp2/transport/bin_encoder.h"
+#include "src/core/ext/transport/chttp2/transport/decode_huff.h"
+#include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
+#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
#include "src/core/ext/transport/chttp2/transport/internal.h"
-#include "src/core/lib/debug/stats.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/profiling/timers.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
-#include "src/core/lib/surface/validate_metadata.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/experiments/experiments.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/combiner.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/slice/slice_refcount_base.h"
#include "src/core/lib/transport/http2_errors.h"
+#include "src/core/lib/transport/parsed_metadata.h"
+#include "src/core/lib/transport/transport.h"
-#if __cplusplus > 201103L
-#define GRPC_HPACK_CONSTEXPR_FN constexpr
-#define GRPC_HPACK_CONSTEXPR_VALUE constexpr
-#else
-#define GRPC_HPACK_CONSTEXPR_FN
-#define GRPC_HPACK_CONSTEXPR_VALUE const
-#endif
+// IWYU pragma: no_include <type_traits>
namespace grpc_core {
@@ -55,8 +67,9 @@ TraceFlag grpc_trace_chttp2_hpack_parser(false, "chttp2_hpack_parser");
/* state table for huffman decoding: given a state, gives an index/16 into
next_sub_tbl. Taking that index and adding the value of the nibble being
considered returns the next state.
-
- generated by gen_hpack_tables.c */
+ generated by gen_hpack_tables.c
+ TODO(ctiller): remove once the new_hpack_huffman_decoder experiment is
+ complete. */
static const uint8_t next_tbl[256] = {
0, 1, 2, 3, 4, 1, 2, 5, 6, 1, 7, 8, 1, 3, 3, 9, 10, 11, 1, 1,
1, 12, 1, 2, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
@@ -132,7 +145,6 @@ static const int16_t next_sub_tbl[48 * 16] = {
/* emission table: indexed like next_tbl, ultimately gives the byte to be
emitted, or -1 for no byte, or 256 for end of stream
-
generated by gen_hpack_tables.c */
static const uint16_t emit_tbl[256] = {
0, 1, 2, 3, 4, 5, 6, 7, 0, 8, 9, 10, 11, 12, 13,
@@ -435,7 +447,7 @@ constexpr char kBase64Alphabet[] =
// any complicated runtime logic.
struct Base64InverseTable {
uint8_t table[256]{};
- GRPC_HPACK_CONSTEXPR_FN Base64InverseTable() {
+ constexpr Base64InverseTable() {
for (int i = 0; i < 256; i++) {
table[i] = 255;
}
@@ -447,7 +459,7 @@ struct Base64InverseTable {
}
};
-GRPC_HPACK_CONSTEXPR_VALUE Base64InverseTable kBase64InverseTable;
+constexpr Base64InverseTable kBase64InverseTable;
} // namespace
// Input tracks the current byte through the input data and provides it
@@ -582,7 +594,7 @@ class HPackParser::Input {
// Set the current error - allows the rest of the code not to need to pass
// around StatusOr<> which would be prohibitive here.
GPR_ATTRIBUTE_NOINLINE void SetError(grpc_error_handle error) {
- if (error_ != GRPC_ERROR_NONE || eof_error_) {
+ if (!GRPC_ERROR_IS_NONE(error_) || eof_error_) {
GRPC_ERROR_UNREF(error);
return;
}
@@ -595,7 +607,7 @@ class HPackParser::Input {
template <typename F, typename T>
GPR_ATTRIBUTE_NOINLINE T MaybeSetErrorAndReturn(F error_factory,
T return_value) {
- if (error_ != GRPC_ERROR_NONE || eof_error_) return return_value;
+ if (!GRPC_ERROR_IS_NONE(error_) || eof_error_) return return_value;
error_ = error_factory();
begin_ = end_;
return return_value;
@@ -605,7 +617,7 @@ class HPackParser::Input {
// is a common case)
template <typename T>
T UnexpectedEOF(T return_value) {
- if (error_ != GRPC_ERROR_NONE) return return_value;
+ if (!GRPC_ERROR_IS_NONE(error_)) return return_value;
eof_error_ = true;
return return_value;
}
@@ -755,22 +767,6 @@ class HPackParser::String {
// decoded byte.
template <typename Out>
static bool ParseHuff(Input* input, uint32_t length, Out output) {
- GRPC_STATS_INC_HPACK_RECV_HUFFMAN();
- int16_t state = 0;
- // Parse one half byte... we leverage some lookup tables to keep the logic
- // here really simple.
- auto nibble = [&output, &state](uint8_t nibble) {
- int16_t emit = emit_sub_tbl[16 * emit_tbl[state] + nibble];
- int16_t next = next_sub_tbl[16 * next_tbl[state] + nibble];
- if (emit != -1) {
- if (emit >= 0 && emit < 256) {
- output(static_cast<uint8_t>(emit));
- } else {
- assert(emit == 256);
- }
- }
- state = next;
- };
// If there's insufficient bytes remaining, return now.
if (input->remaining() < length) {
return input->UnexpectedEOF(false);
@@ -778,17 +774,35 @@ class HPackParser::String {
// Grab the byte range, and iterate through it.
const uint8_t* p = input->cur_ptr();
input->Advance(length);
- for (uint32_t i = 0; i < length; i++) {
- nibble(p[i] >> 4);
- nibble(p[i] & 0xf);
+ if (IsNewHpackHuffmanDecoderEnabled()) {
+ return HuffDecoder<Out>(output, p, p + length).Run();
+ } else {
+ int16_t state = 0;
+ // Parse one half byte... we leverage some lookup tables to keep the logic
+ // here really simple.
+ auto nibble = [&output, &state](uint8_t nibble) {
+ int16_t emit = emit_sub_tbl[16 * emit_tbl[state] + nibble];
+ int16_t next = next_sub_tbl[16 * next_tbl[state] + nibble];
+ if (emit != -1) {
+ if (emit >= 0 && emit < 256) {
+ output(static_cast<uint8_t>(emit));
+ } else {
+ assert(emit == 256);
+ }
+ }
+ state = next;
+ };
+ for (uint32_t i = 0; i < length; i++) {
+ nibble(p[i] >> 4);
+ nibble(p[i] & 0xf);
+ }
+ return true;
}
- return true;
}
// Parse some uncompressed string bytes.
static y_absl::optional<String> ParseUncompressed(Input* input,
uint32_t length) {
- GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED();
// Check there's enough bytes
if (input->remaining() < length) {
return input->UnexpectedEOF(y_absl::optional<String>());
@@ -1071,7 +1085,7 @@ class HPackParser::Parser {
auto r = EmitHeader(*md);
// Add to the hpack table
grpc_error_handle err = table_->Add(std::move(*md));
- if (GPR_UNLIKELY(err != GRPC_ERROR_NONE)) {
+ if (GPR_UNLIKELY(!GRPC_ERROR_IS_NONE(err))) {
input_->SetError(err);
return false;
};
@@ -1150,7 +1164,6 @@ class HPackParser::Parser {
if (GPR_UNLIKELY(elem == nullptr)) {
return InvalidHPackIndexError(*index, false);
}
- GRPC_STATS_INC_HPACK_RECV_INDEXED();
return FinishHeaderOmitFromTable(*elem);
}
@@ -1167,7 +1180,7 @@ class HPackParser::Parser {
}
(*dynamic_table_updates_allowed_)--;
grpc_error_handle err = table_->SetCurrentTableSize(*size);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
input_->SetError(err);
return false;
}
@@ -1336,13 +1349,12 @@ grpc_error_handle grpc_chttp2_header_parser_parse(void* hpack_parser,
grpc_chttp2_stream* s,
const grpc_slice& slice,
int is_last) {
- GPR_TIMER_SCOPE("grpc_chttp2_header_parser_parse", 0);
auto* parser = static_cast<grpc_core::HPackParser*>(hpack_parser);
if (s != nullptr) {
s->stats.incoming.header_bytes += GRPC_SLICE_LENGTH(slice);
}
grpc_error_handle error = parser->Parse(slice, is_last != 0);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
return error;
}
if (is_last) {
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser.h
index 2e52021014..d01b6061f5 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser.h
@@ -21,12 +21,19 @@
#include <grpc/support/port_platform.h>
-#include <stddef.h>
+#include <stdint.h>
+
+#include <vector>
+
+#include <grpc/slice.h>
#include "src/core/ext/transport/chttp2/transport/frame.h"
#include "src/core/ext/transport/chttp2/transport/hpack_parser_table.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/transport/metadata_batch.h"
+// IWYU pragma: no_include <type_traits>
+
namespace grpc_core {
// Top level interface for parsing a sequence of header, continuation frames.
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc
index f4297e2125..3b394faa4e 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc
@@ -20,47 +20,71 @@
#include "src/core/ext/transport/chttp2/transport/hpack_parser_table.h"
-#include <assert.h>
-#include <string.h>
+#include <stdlib.h>
+
+#include <algorithm>
+#include <cstddef>
+#include <cstring>
+#include <utility>
#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/string_view.h"
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
#include "src/core/lib/debug/trace.h"
-#include "src/core/lib/gpr/murmur_hash.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/surface/validate_metadata.h"
+#include "src/core/lib/slice/slice.h"
extern grpc_core::TraceFlag grpc_http_trace;
namespace grpc_core {
-HPackTable::HPackTable() : static_metadata_(GetStaticMementos()) {}
+void HPackTable::MementoRingBuffer::Put(Memento m) {
+ GPR_ASSERT(num_entries_ < max_entries_);
+ if (entries_.size() < max_entries_) {
+ ++num_entries_;
+ return entries_.push_back(std::move(m));
+ }
+ size_t index = (first_entry_ + num_entries_) % max_entries_;
+ entries_[index] = std::move(m);
+ ++num_entries_;
+}
-HPackTable::~HPackTable() = default;
+auto HPackTable::MementoRingBuffer::PopOne() -> Memento {
+ GPR_ASSERT(num_entries_ > 0);
+ size_t index = first_entry_ % max_entries_;
+ ++first_entry_;
+ --num_entries_;
+ return std::move(entries_[index]);
+}
-/* Evict one element from the table */
-void HPackTable::EvictOne() {
- auto first_entry = std::move(entries_[first_entry_]);
- GPR_ASSERT(first_entry.transport_size() <= mem_used_);
- mem_used_ -= first_entry.transport_size();
- first_entry_ = ((first_entry_ + 1) % entries_.size());
- num_entries_--;
+auto HPackTable::MementoRingBuffer::Lookup(uint32_t index) const
+ -> const Memento* {
+ if (index >= num_entries_) return nullptr;
+ uint32_t offset = (num_entries_ - 1u - index + first_entry_) % max_entries_;
+ return &entries_[offset];
}
-void HPackTable::Rebuild(uint32_t new_cap) {
- EntriesVec entries;
- entries.resize(new_cap);
+void HPackTable::MementoRingBuffer::Rebuild(uint32_t max_entries) {
+ if (max_entries == max_entries_) return;
+ std::vector<Memento> entries;
+ entries.reserve(num_entries_);
for (size_t i = 0; i < num_entries_; i++) {
- entries[i] = std::move(entries_[(first_entry_ + i) % entries_.size()]);
+ entries.push_back(
+ std::move(entries_[(first_entry_ + i) % entries_.size()]));
}
first_entry_ = 0;
entries_.swap(entries);
}
+/* Evict one element from the table */
+void HPackTable::EvictOne() {
+ auto first_entry = entries_.PopOne();
+ GPR_ASSERT(first_entry.transport_size() <= mem_used_);
+ mem_used_ -= first_entry.transport_size();
+}
+
void HPackTable::SetMaxBytes(uint32_t max_bytes) {
if (max_bytes_ == max_bytes) {
return;
@@ -90,18 +114,9 @@ grpc_error_handle HPackTable::SetCurrentTableSize(uint32_t bytes) {
EvictOne();
}
current_table_bytes_ = bytes;
- max_entries_ = hpack_constants::EntriesForBytes(bytes);
- if (max_entries_ > entries_.size()) {
- Rebuild(max_entries_);
- } else if (max_entries_ < entries_.size() / 3) {
- // TODO(ctiller): move to resource quota system, only shrink under memory
- // pressure
- uint32_t new_cap =
- std::max(max_entries_, static_cast<uint32_t>(kInlineEntries));
- if (new_cap != entries_.size()) {
- Rebuild(new_cap);
- }
- }
+ uint32_t new_cap = std::max(hpack_constants::EntriesForBytes(bytes),
+ hpack_constants::kInitialTableEntries);
+ entries_.Rebuild(new_cap);
return GRPC_ERROR_NONE;
}
@@ -122,7 +137,7 @@ grpc_error_handle HPackTable::Add(Memento md) {
// attempt to add an entry larger than the entire table causes
// the table to be emptied of all existing entries, and results in an
// empty table.
- while (num_entries_) {
+ while (entries_.num_entries()) {
EvictOne();
}
return GRPC_ERROR_NONE;
@@ -136,10 +151,7 @@ grpc_error_handle HPackTable::Add(Memento md) {
// copy the finalized entry in
mem_used_ += md.transport_size();
- entries_[(first_entry_ + num_entries_) % entries_.size()] = std::move(md);
-
- // update accounting values
- num_entries_++;
+ entries_.Put(std::move(md));
return GRPC_ERROR_NONE;
}
@@ -213,7 +225,7 @@ const StaticTableEntry kStaticTable[hpack_constants::kLastStaticEntry] = {
{"www-authenticate", ""},
};
-GPR_ATTRIBUTE_NOINLINE HPackTable::Memento MakeMemento(size_t i) {
+HPackTable::Memento MakeMemento(size_t i) {
auto sm = kStaticTable[i];
return grpc_metadata_batch::Parse(
sm.key, Slice::FromStaticString(sm.value),
@@ -225,11 +237,6 @@ GPR_ATTRIBUTE_NOINLINE HPackTable::Memento MakeMemento(size_t i) {
} // namespace
-const HPackTable::StaticMementos& HPackTable::GetStaticMementos() {
- static const StaticMementos* const static_mementos = new StaticMementos();
- return *static_mementos;
-}
-
HPackTable::StaticMementos::StaticMementos() {
for (uint32_t i = 0; i < hpack_constants::kLastStaticEntry; i++) {
memento[i] = MakeMemento(i);
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser_table.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser_table.h
index c1ff236082..a1b0733655 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser_table.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/hpack_parser_table.h
@@ -21,20 +21,23 @@
#include <grpc/support/port_platform.h>
-#include <grpc/slice.h>
+#include <stdint.h>
+
+#include <vector>
#include "src/core/ext/transport/chttp2/transport/hpack_constants.h"
-#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/gprpp/no_destruct.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/parsed_metadata.h"
namespace grpc_core {
// HPACK header table
class HPackTable {
public:
- HPackTable();
- ~HPackTable();
+ HPackTable() = default;
+ ~HPackTable() = default;
HPackTable(const HPackTable&) = delete;
HPackTable& operator=(const HPackTable&) = delete;
@@ -53,7 +56,7 @@ class HPackTable {
// reading the core static metadata table here; at that point we'd need our
// own singleton static metadata in the correct order.
if (index <= hpack_constants::kLastStaticEntry) {
- return &static_metadata_.memento[index - 1];
+ return &static_mementos_->memento[index - 1];
} else {
return LookupDynamic(index);
}
@@ -63,37 +66,59 @@ class HPackTable {
grpc_error_handle Add(Memento md) GRPC_MUST_USE_RESULT;
// Current entry count in the table.
- uint32_t num_entries() const { return num_entries_; }
+ uint32_t num_entries() const { return entries_.num_entries(); }
private:
struct StaticMementos {
StaticMementos();
Memento memento[hpack_constants::kLastStaticEntry];
};
- static const StaticMementos& GetStaticMementos() GPR_ATTRIBUTE_NOINLINE;
- enum { kInlineEntries = hpack_constants::kInitialTableEntries };
- using EntriesVec = y_absl::InlinedVector<Memento, kInlineEntries>;
+ class MementoRingBuffer {
+ public:
+ // Rebuild this buffer with a new max_entries_ size.
+ void Rebuild(uint32_t max_entries);
+
+ // Put a new memento.
+ // REQUIRES: num_entries < max_entries
+ void Put(Memento m);
+
+ // Pop the oldest memento.
+ // REQUIRES: num_entries > 0
+ Memento PopOne();
+
+ // Lookup the entry at index, or return nullptr if none exists.
+ const Memento* Lookup(uint32_t index) const;
+
+ uint32_t max_entries() const { return max_entries_; }
+ uint32_t num_entries() const { return num_entries_; }
+
+ private:
+ // The index of the first entry in the buffer. May be greater than
+ // max_entries_, in which case a wraparound has occurred.
+ uint32_t first_entry_ = 0;
+ // How many entries are in the table.
+ uint32_t num_entries_ = 0;
+ // Maximum number of entries we could possibly fit in the table, given
+ // defined overheads.
+ uint32_t max_entries_ = hpack_constants::kInitialTableEntries;
+
+ std::vector<Memento> entries_;
+ };
const Memento* LookupDynamic(uint32_t index) const {
// Not static - find the value in the list of valid entries
const uint32_t tbl_index = index - (hpack_constants::kLastStaticEntry + 1);
- if (tbl_index < num_entries_) {
- uint32_t offset =
- (num_entries_ - 1u - tbl_index + first_entry_) % entries_.size();
- return &entries_[offset];
- }
- // Invalid entry: return error
- return nullptr;
+ return entries_.Lookup(tbl_index);
}
void EvictOne();
- void Rebuild(uint32_t new_cap);
- // The first used entry in ents.
- uint32_t first_entry_ = 0;
- // How many entries are in the table.
- uint32_t num_entries_ = 0;
+ static const StaticMementos* GetStaticMementos() {
+ static const NoDestruct<StaticMementos> static_mementos;
+ return static_mementos.get();
+ }
+
// The amount of memory used by the table, according to the hpack algorithm
uint32_t mem_used_ = 0;
// The max memory allowed to be used by the table, according to the hpack
@@ -101,13 +126,10 @@ class HPackTable {
uint32_t max_bytes_ = hpack_constants::kInitialTableSize;
// The currently agreed size of the table, according to the hpack algorithm.
uint32_t current_table_bytes_ = hpack_constants::kInitialTableSize;
- // Maximum number of entries we could possibly fit in the table, given defined
- // overheads.
- uint32_t max_entries_ = hpack_constants::kInitialTableEntries;
// HPack table entries
- EntriesVec entries_{hpack_constants::kInitialTableEntries};
- // Mementos for static data
- const StaticMementos& static_metadata_;
+ MementoRingBuffer entries_;
+ // Static mementos
+ const StaticMementos* const static_mementos_ = GetStaticMementos();
};
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/http2_settings.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/http2_settings.h
index 3e8ead60f4..c96391b44a 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/http2_settings.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/http2_settings.h
@@ -23,7 +23,6 @@
#include <grpc/support/port_platform.h>
-#include <stdbool.h>
#include <stdint.h>
enum grpc_chttp2_setting_id {
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/internal.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/internal.h
index a3b1d5a621..437610cebe 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/internal.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/internal.h
@@ -21,12 +21,21 @@
#include <grpc/support/port_platform.h>
-#include <assert.h>
-#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/event_engine/memory_allocator.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
#include "src/core/ext/transport/chttp2/transport/flow_control.h"
#include "src/core/ext/transport/chttp2/transport/frame.h"
-#include "src/core/ext/transport/chttp2/transport/frame_data.h"
#include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
#include "src/core/ext/transport/chttp2/transport/frame_ping.h"
#include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
@@ -34,15 +43,28 @@
#include "src/core/ext/transport/chttp2/transport/frame_window_update.h"
#include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
#include "src/core/ext/transport/chttp2/transport/hpack_parser.h"
+#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
#include "src/core/ext/transport/chttp2/transport/stream_map.h"
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channelz.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/bitset.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/combiner.h"
#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/resource_quota/arena.h"
#include "src/core/lib/resource_quota/memory_quota.h"
+#include "src/core/lib/slice/slice_buffer.h"
#include "src/core/lib/transport/connectivity_state.h"
#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
+#include "src/core/lib/transport/transport_fwd.h"
#include "src/core/lib/transport/transport_impl.h"
namespace grpc_core {
@@ -98,6 +120,7 @@ typedef enum {
GRPC_CHTTP2_INITIATE_WRITE_STREAM_FLOW_CONTROL,
GRPC_CHTTP2_INITIATE_WRITE_TRANSPORT_FLOW_CONTROL,
GRPC_CHTTP2_INITIATE_WRITE_SEND_SETTINGS,
+ GRPC_CHTTP2_INITIATE_WRITE_SETTINGS_ACK,
GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_SETTING,
GRPC_CHTTP2_INITIATE_WRITE_FLOW_CONTROL_UNSTALLED_BY_UPDATE,
GRPC_CHTTP2_INITIATE_WRITE_APPLICATION_PING,
@@ -196,8 +219,9 @@ typedef enum {
typedef enum {
GRPC_CHTTP2_NO_GOAWAY_SEND,
- GRPC_CHTTP2_GOAWAY_SEND_SCHEDULED,
- GRPC_CHTTP2_GOAWAY_SENT,
+ GRPC_CHTTP2_GRACEFUL_GOAWAY,
+ GRPC_CHTTP2_FINAL_GOAWAY_SEND_SCHEDULED,
+ GRPC_CHTTP2_FINAL_GOAWAY_SENT,
} grpc_chttp2_sent_goaway_state;
typedef struct grpc_chttp2_write_cb {
@@ -206,76 +230,6 @@ typedef struct grpc_chttp2_write_cb {
struct grpc_chttp2_write_cb* next;
} grpc_chttp2_write_cb;
-namespace grpc_core {
-
-class Chttp2IncomingByteStream : public ByteStream {
- public:
- Chttp2IncomingByteStream(grpc_chttp2_transport* transport,
- grpc_chttp2_stream* stream, uint32_t frame_size,
- uint32_t flags);
-
- void Orphan() override;
-
- bool Next(size_t max_size_hint, grpc_closure* on_complete) override;
- grpc_error_handle Pull(grpc_slice* slice) override;
- void Shutdown(grpc_error_handle error) override;
-
- // TODO(roth): When I converted this class to C++, I wanted to make it
- // inherit from RefCounted or InternallyRefCounted instead of continuing
- // to use its own custom ref-counting code. However, that would require
- // using multiple inheritance, which sucks in general. And to make matters
- // worse, it causes problems with our New<> and Delete<> wrappers.
- // Specifically, unless RefCounted is first in the list of parent classes,
- // it will see a different value of the address of the object than the one
- // we actually allocated, in which case gpr_free() will be called on a
- // different address than the one we got from gpr_malloc(), thus causing a
- // crash. Given the fragility of depending on that, as well as a desire to
- // avoid multiple inheritance in general, I've decided to leave this
- // alone for now. We can revisit this once we're able to link against
- // libc++, at which point we can eliminate New<> and Delete<> and
- // switch to std::shared_ptr<>.
- void Ref() { refs_.Ref(); }
- void Unref() {
- if (GPR_UNLIKELY(refs_.Unref())) {
- delete this;
- }
- }
-
- void PublishError(grpc_error_handle error);
-
- grpc_error_handle Push(const grpc_slice& slice, grpc_slice* slice_out);
-
- grpc_error_handle Finished(grpc_error_handle error, bool reset_on_error);
-
- uint32_t remaining_bytes() const { return remaining_bytes_; }
-
- private:
- static void NextLocked(void* arg, grpc_error_handle error_ignored);
- static void OrphanLocked(void* arg, grpc_error_handle error_ignored);
-
- grpc_chttp2_transport* transport_; // Immutable.
- grpc_chttp2_stream* stream_; // Immutable.
-
- RefCount refs_;
-
- /* Accessed only by transport thread when stream->pending_byte_stream == false
- * Accessed only by application thread when stream->pending_byte_stream ==
- * true */
- uint32_t remaining_bytes_;
-
- /* Accessed only by transport thread when stream->pending_byte_stream == false
- * Accessed only by application thread when stream->pending_byte_stream ==
- * true */
- struct {
- grpc_closure closure;
- size_t max_size_hint;
- grpc_closure* on_complete;
- } next_action_;
- grpc_closure destroy_action_;
-};
-
-} // namespace grpc_core
-
typedef enum {
GRPC_CHTTP2_KEEPALIVE_STATE_WAITING,
GRPC_CHTTP2_KEEPALIVE_STATE_PINGING,
@@ -284,7 +238,7 @@ typedef enum {
} grpc_chttp2_keepalive_state;
struct grpc_chttp2_transport {
- grpc_chttp2_transport(const grpc_channel_args* channel_args,
+ grpc_chttp2_transport(const grpc_core::ChannelArgs& channel_args,
grpc_endpoint* ep, bool is_client);
~grpc_chttp2_transport();
@@ -404,11 +358,7 @@ struct grpc_chttp2_transport {
/** parser for goaway frames */
grpc_chttp2_goaway_parser goaway_parser;
- grpc_core::PolymorphicManualConstructor<
- grpc_core::chttp2::TransportFlowControlBase,
- grpc_core::chttp2::TransportFlowControl,
- grpc_core::chttp2::TransportFlowControlDisabled>
- flow_control;
+ grpc_core::chttp2::TransportFlowControl flow_control;
/** initial window change. This is tracked as we parse settings frames from
* the remote peer. If there is a positive delta, then we will make all
* streams readable since they may have become unstalled */
@@ -524,7 +474,7 @@ struct grpc_chttp2_stream {
grpc_closure* destroy_stream_arg;
grpc_chttp2_stream_link links[STREAM_LIST_COUNT];
- uint8_t included[STREAM_LIST_COUNT] = {};
+ grpc_core::BitSet<STREAM_LIST_COUNT> included;
/** HTTP2 stream id for this stream, or zero if one has not been assigned */
uint32_t id = 0;
@@ -542,19 +492,16 @@ struct grpc_chttp2_stream {
bool* sent_trailing_metadata_op = nullptr;
grpc_closure* send_trailing_metadata_finished = nullptr;
- grpc_core::OrphanablePtr<grpc_core::ByteStream> fetching_send_message;
- uint32_t fetched_send_message_length = 0;
- grpc_slice fetching_slice = grpc_empty_slice();
int64_t next_message_end_offset;
int64_t flow_controlled_bytes_written = 0;
int64_t flow_controlled_bytes_flowed = 0;
- grpc_closure complete_fetch_locked;
- grpc_closure* fetching_send_message_finished = nullptr;
+ grpc_closure* send_message_finished = nullptr;
grpc_metadata_batch* recv_initial_metadata;
grpc_closure* recv_initial_metadata_ready = nullptr;
bool* trailing_metadata_available = nullptr;
- grpc_core::OrphanablePtr<grpc_core::ByteStream>* recv_message = nullptr;
+ y_absl::optional<grpc_core::SliceBuffer>* recv_message = nullptr;
+ uint32_t* recv_message_flags = nullptr;
bool* call_failed_before_recv_message = nullptr;
grpc_closure* recv_message_ready = nullptr;
grpc_metadata_batch* recv_trailing_metadata;
@@ -591,22 +538,7 @@ struct grpc_chttp2_stream {
grpc_metadata_batch initial_metadata_buffer;
grpc_metadata_batch trailing_metadata_buffer;
- grpc_slice_buffer frame_storage; /* protected by t combiner */
-
- grpc_closure* on_next = nullptr; /* protected by t combiner */
- bool pending_byte_stream = false; /* protected by t combiner */
- // cached length of buffer to be used by the transport thread in cases where
- // stream->pending_byte_stream == true. The value is saved before
- // application threads are allowed to modify
- // unprocessed_incoming_frames_buffer
- size_t unprocessed_incoming_frames_buffer_cached_length = 0;
- /* Accessed only by transport thread when stream->pending_byte_stream == false
- * Accessed only by application thread when stream->pending_byte_stream ==
- * true */
- grpc_slice_buffer unprocessed_incoming_frames_buffer;
- grpc_closure reset_byte_stream;
- grpc_error_handle byte_stream_error =
- GRPC_ERROR_NONE; /* protected by t combiner */
+ grpc_slice_buffer frame_storage; /* protected by t combiner */
bool received_last_frame = false; /* protected by t combiner */
grpc_core::Timestamp deadline = grpc_core::Timestamp::InfFuture();
@@ -615,22 +547,13 @@ struct grpc_chttp2_stream {
grpc_error_handle forced_close_error = GRPC_ERROR_NONE;
/** how many header frames have we received? */
uint8_t header_frames_received = 0;
- /** parsing state for data frames */
- /* Accessed only by transport thread when stream->pending_byte_stream == false
- * Accessed only by application thread when stream->pending_byte_stream ==
- * true */
- grpc_chttp2_data_parser data_parser;
/** number of bytes received - reset at end of parse thread execution */
int64_t received_bytes = 0;
bool sent_initial_metadata = false;
bool sent_trailing_metadata = false;
- grpc_core::PolymorphicManualConstructor<
- grpc_core::chttp2::StreamFlowControlBase,
- grpc_core::chttp2::StreamFlowControl,
- grpc_core::chttp2::StreamFlowControlDisabled>
- flow_control;
+ grpc_core::chttp2::StreamFlowControl flow_control;
grpc_slice_buffer flow_controlled_buffer;
@@ -860,4 +783,6 @@ void grpc_chttp2_retry_initiate_ping(void* tp, grpc_error_handle error);
void schedule_bdp_ping_locked(grpc_chttp2_transport* t);
+uint32_t grpc_chttp2_min_read_progress_size(grpc_chttp2_transport* t);
+
#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_INTERNAL_H */
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/parsing.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/parsing.cc
index ce19cc6bab..00f9b93ed5 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/parsing.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/parsing.cc
@@ -18,21 +18,44 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
#include <string.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/base/attributes.h"
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
-#include <grpc/support/alloc.h>
+#include <grpc/slice.h>
#include <grpc/support/log.h>
+#include "src/core/ext/transport/chttp2/transport/flow_control.h"
+#include "src/core/ext/transport/chttp2/transport/frame.h"
+#include "src/core/ext/transport/chttp2/transport/frame_data.h"
+#include "src/core/ext/transport/chttp2/transport/frame_goaway.h"
+#include "src/core/ext/transport/chttp2/transport/frame_ping.h"
+#include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
+#include "src/core/ext/transport/chttp2/transport/frame_settings.h"
+#include "src/core/ext/transport/chttp2/transport/frame_window_update.h"
+#include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
+#include "src/core/ext/transport/chttp2/transport/hpack_parser.h"
+#include "src/core/ext/transport/chttp2/transport/hpack_parser_table.h"
+#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
#include "src/core/ext/transport/chttp2/transport/internal.h"
-#include "src/core/lib/profiling/timers.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/ext/transport/chttp2/transport/stream_map.h"
+#include "src/core/lib/channel/channelz.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/transport/bdp_estimator.h"
+#include "src/core/lib/transport/error_utils.h"
#include "src/core/lib/transport/http2_errors.h"
-#include "src/core/lib/transport/status_conversion.h"
-#include "src/core/lib/transport/timeout_encoding.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
using grpc_core::HPackParser;
@@ -53,6 +76,54 @@ static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t,
const grpc_slice& slice,
int is_last);
+static char get_utf8_safe_char(char c) {
+ return static_cast<unsigned char>(c) < 128 ? c : 32;
+}
+
+uint32_t grpc_chttp2_min_read_progress_size(grpc_chttp2_transport* t) {
+ switch (t->deframe_state) {
+ case GRPC_DTS_CLIENT_PREFIX_0:
+ case GRPC_DTS_CLIENT_PREFIX_1:
+ case GRPC_DTS_CLIENT_PREFIX_2:
+ case GRPC_DTS_CLIENT_PREFIX_3:
+ case GRPC_DTS_CLIENT_PREFIX_4:
+ case GRPC_DTS_CLIENT_PREFIX_5:
+ case GRPC_DTS_CLIENT_PREFIX_6:
+ case GRPC_DTS_CLIENT_PREFIX_7:
+ case GRPC_DTS_CLIENT_PREFIX_8:
+ case GRPC_DTS_CLIENT_PREFIX_9:
+ case GRPC_DTS_CLIENT_PREFIX_10:
+ case GRPC_DTS_CLIENT_PREFIX_11:
+ case GRPC_DTS_CLIENT_PREFIX_12:
+ case GRPC_DTS_CLIENT_PREFIX_13:
+ case GRPC_DTS_CLIENT_PREFIX_14:
+ case GRPC_DTS_CLIENT_PREFIX_15:
+ case GRPC_DTS_CLIENT_PREFIX_16:
+ case GRPC_DTS_CLIENT_PREFIX_17:
+ case GRPC_DTS_CLIENT_PREFIX_18:
+ case GRPC_DTS_CLIENT_PREFIX_19:
+ case GRPC_DTS_CLIENT_PREFIX_20:
+ case GRPC_DTS_CLIENT_PREFIX_21:
+ case GRPC_DTS_CLIENT_PREFIX_22:
+ case GRPC_DTS_CLIENT_PREFIX_23:
+ // Need the client prefix *and* the first fixed header to make progress.
+ return 9 + 24 - (t->deframe_state - GRPC_DTS_CLIENT_PREFIX_0);
+ case GRPC_DTS_FH_0:
+ case GRPC_DTS_FH_1:
+ case GRPC_DTS_FH_2:
+ case GRPC_DTS_FH_3:
+ case GRPC_DTS_FH_4:
+ case GRPC_DTS_FH_5:
+ case GRPC_DTS_FH_6:
+ case GRPC_DTS_FH_7:
+ case GRPC_DTS_FH_8:
+ return 9 - (t->deframe_state - GRPC_DTS_FH_0);
+ case GRPC_DTS_FRAME:
+ return t->incoming_frame_size;
+ }
+ GPR_UNREACHABLE_CODE(return 1);
+}
+
grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
const grpc_slice& slice) {
const uint8_t* beg = GRPC_SLICE_START_PTR(slice);
@@ -92,10 +163,12 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
return GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrFormat(
"Connect string mismatch: expected '%c' (%d) got '%c' (%d) "
"at byte %d",
- GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state],
+ get_utf8_safe_char(
+ GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state]),
static_cast<int>(static_cast<uint8_t>(
GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state])),
- *cur, static_cast<int>(*cur), t->deframe_state));
+ get_utf8_safe_char(*cur), static_cast<int>(*cur),
+ t->deframe_state));
}
++cur;
// NOLINTNEXTLINE(bugprone-misplaced-widening-cast)
@@ -176,12 +249,12 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
t->incoming_stream_id |= (static_cast<uint32_t>(*cur));
t->deframe_state = GRPC_DTS_FRAME;
err = init_frame_parser(t);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
return err;
}
if (t->incoming_frame_size == 0) {
err = parse_frame_slice(t, grpc_empty_slice(), 1);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
return err;
}
t->incoming_stream = nullptr;
@@ -190,10 +263,9 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
return GRPC_ERROR_NONE;
}
goto dts_fh_0; /* loop */
- } else if (t->flow_control->flow_control_enabled() &&
- t->incoming_frame_size >
- t->settings[GRPC_ACKED_SETTINGS]
- [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]) {
+ } else if (t->incoming_frame_size >
+ t->settings[GRPC_ACKED_SETTINGS]
+ [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]) {
return GRPC_ERROR_CREATE_FROM_CPP_STRING(
y_absl::StrFormat("Frame size %d is larger than max frame size %d",
t->incoming_frame_size,
@@ -212,7 +284,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
grpc_slice_sub_no_ref(slice, static_cast<size_t>(cur - beg),
static_cast<size_t>(end - beg)),
1);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
return err;
}
t->deframe_state = GRPC_DTS_FH_0;
@@ -225,7 +297,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
grpc_slice_sub_no_ref(slice, cur_offset,
cur_offset + t->incoming_frame_size),
1);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
return err;
}
cur += t->incoming_frame_size;
@@ -237,7 +309,7 @@ grpc_error_handle grpc_chttp2_perform_read(grpc_chttp2_transport* t,
grpc_slice_sub_no_ref(slice, static_cast<size_t>(cur - beg),
static_cast<size_t>(end - beg)),
0);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
return err;
}
t->incoming_frame_size -= static_cast<uint32_t>(end - cur);
@@ -357,7 +429,7 @@ void grpc_chttp2_parsing_become_skip_parser(grpc_chttp2_transport* t) {
static grpc_error_handle init_data_frame_parser(grpc_chttp2_transport* t) {
// Update BDP accounting since we have received a data frame.
- grpc_core::BdpEstimator* bdp_est = t->flow_control->bdp_estimator();
+ grpc_core::BdpEstimator* bdp_est = t->flow_control.bdp_estimator();
if (bdp_est) {
if (t->bdp_ping_blocked) {
t->bdp_ping_blocked = false;
@@ -368,17 +440,21 @@ static grpc_error_handle init_data_frame_parser(grpc_chttp2_transport* t) {
}
grpc_chttp2_stream* s =
grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
- grpc_error_handle err = GRPC_ERROR_NONE;
+ y_absl::Status status;
grpc_core::chttp2::FlowControlAction action;
if (s == nullptr) {
- err = t->flow_control->RecvData(t->incoming_frame_size);
- action = t->flow_control->MakeAction();
+ grpc_core::chttp2::TransportFlowControl::IncomingUpdateContext upd(
+ &t->flow_control);
+ status = upd.RecvData(t->incoming_frame_size);
+ action = upd.MakeAction();
} else {
- err = s->flow_control->RecvData(t->incoming_frame_size);
- action = s->flow_control->MakeAction();
+ grpc_core::chttp2::StreamFlowControl::IncomingUpdateContext upd(
+ &s->flow_control);
+ status = upd.RecvData(t->incoming_frame_size);
+ action = upd.MakeAction();
}
grpc_chttp2_act_on_flowctl_action(action, t, s);
- if (err != GRPC_ERROR_NONE) {
+ if (!status.ok()) {
goto error_handler;
}
if (s == nullptr) {
@@ -386,33 +462,29 @@ static grpc_error_handle init_data_frame_parser(grpc_chttp2_transport* t) {
}
s->received_bytes += t->incoming_frame_size;
s->stats.incoming.framing_bytes += 9;
- if (err == GRPC_ERROR_NONE && s->read_closed) {
+ if (s->read_closed) {
return init_non_header_skip_frame_parser(t);
}
- if (err == GRPC_ERROR_NONE) {
- err = grpc_chttp2_data_parser_begin_frame(
- &s->data_parser, t->incoming_frame_flags, s->id, s);
- }
+ status =
+ grpc_chttp2_data_parser_begin_frame(t->incoming_frame_flags, s->id, s);
error_handler:
- intptr_t unused;
- if (err == GRPC_ERROR_NONE) {
+ if (status.ok()) {
t->incoming_stream = s;
/* t->parser = grpc_chttp2_data_parser_parse;*/
t->parser = grpc_chttp2_data_parser_parse;
- t->parser_data = &s->data_parser;
+ t->parser_data = nullptr;
t->ping_state.last_ping_sent_time = grpc_core::Timestamp::InfPast();
return GRPC_ERROR_NONE;
- } else if (grpc_error_get_int(err, GRPC_ERROR_INT_STREAM_ID, &unused)) {
+ } else if (s != nullptr) {
/* handle stream errors by closing the stream */
- if (s != nullptr) {
- grpc_chttp2_mark_stream_closed(t, s, true, false, err);
- }
+ grpc_chttp2_mark_stream_closed(t, s, true, false,
+ absl_status_to_grpc_error(status));
grpc_chttp2_add_rst_stream_to_next_write(t, t->incoming_stream_id,
GRPC_HTTP2_PROTOCOL_ERROR,
&s->stats.outgoing);
return init_non_header_skip_frame_parser(t);
} else {
- return err;
+ return absl_status_to_grpc_error(status);
}
}
@@ -479,6 +551,14 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
t->settings[GRPC_ACKED_SETTINGS]
[GRPC_CHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS])) {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Max stream count exceeded");
+ } else if (t->sent_goaway_state == GRPC_CHTTP2_FINAL_GOAWAY_SENT) {
+ GRPC_CHTTP2_IF_TRACING(gpr_log(
+ GPR_INFO,
+ "transport:%p SERVER peer:%s Final GOAWAY sent. Ignoring new "
+ "grpc_chttp2_stream request id=%d, last grpc_chttp2_stream id=%d",
+ t, t->peer_string.c_str(), t->incoming_stream_id,
+ t->last_new_stream_id));
+ return init_header_skip_frame_parser(t, priority_type);
}
t->last_new_stream_id = t->incoming_stream_id;
s = t->incoming_stream =
@@ -533,6 +613,10 @@ static grpc_error_handle init_header_frame_parser(grpc_chttp2_transport* t,
gpr_log(GPR_ERROR, "too many header frames received");
return init_header_skip_frame_parser(t, priority_type);
}
+ if (frame_type == HPackParser::LogInfo::kTrailers && !t->header_eof) {
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Trailing metadata frame received without an end-o-stream");
+ }
t->hpack_parser.BeginFrame(
incoming_metadata_buffer,
t->settings[GRPC_ACKED_SETTINGS]
@@ -547,7 +631,7 @@ static grpc_error_handle init_window_update_frame_parser(
grpc_error_handle err = grpc_chttp2_window_update_parser_begin_frame(
&t->simple.window_update, t->incoming_frame_size,
t->incoming_frame_flags);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
if (t->incoming_stream_id != 0) {
grpc_chttp2_stream* s = t->incoming_stream =
grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
@@ -564,7 +648,7 @@ static grpc_error_handle init_window_update_frame_parser(
static grpc_error_handle init_ping_parser(grpc_chttp2_transport* t) {
grpc_error_handle err = grpc_chttp2_ping_parser_begin_frame(
&t->simple.ping, t->incoming_frame_size, t->incoming_frame_flags);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
t->parser = grpc_chttp2_ping_parser_parse;
t->parser_data = &t->simple.ping;
return GRPC_ERROR_NONE;
@@ -573,7 +657,7 @@ static grpc_error_handle init_ping_parser(grpc_chttp2_transport* t) {
static grpc_error_handle init_rst_stream_parser(grpc_chttp2_transport* t) {
grpc_error_handle err = grpc_chttp2_rst_stream_parser_begin_frame(
&t->simple.rst_stream, t->incoming_frame_size, t->incoming_frame_flags);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
grpc_chttp2_stream* s = t->incoming_stream =
grpc_chttp2_parsing_lookup_stream(t, t->incoming_stream_id);
if (!t->incoming_stream) {
@@ -588,7 +672,7 @@ static grpc_error_handle init_rst_stream_parser(grpc_chttp2_transport* t) {
static grpc_error_handle init_goaway_parser(grpc_chttp2_transport* t) {
grpc_error_handle err = grpc_chttp2_goaway_parser_begin_frame(
&t->goaway_parser, t->incoming_frame_size, t->incoming_frame_flags);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
t->parser = grpc_chttp2_goaway_parser_parse;
t->parser_data = &t->goaway_parser;
return GRPC_ERROR_NONE;
@@ -603,7 +687,7 @@ static grpc_error_handle init_settings_frame_parser(grpc_chttp2_transport* t) {
grpc_error_handle err = grpc_chttp2_settings_parser_begin_frame(
&t->simple.settings, t->incoming_frame_size, t->incoming_frame_flags,
t->settings[GRPC_PEER_SETTINGS]);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
return err;
}
if (t->incoming_frame_flags & GRPC_CHTTP2_FLAG_ACK) {
@@ -612,6 +696,9 @@ static grpc_error_handle init_settings_frame_parser(grpc_chttp2_transport* t) {
t->hpack_parser.hpack_table()->SetMaxBytes(
t->settings[GRPC_ACKED_SETTINGS]
[GRPC_CHTTP2_SETTINGS_HEADER_TABLE_SIZE]);
+ t->flow_control.SetAckedInitialWindow(
+ t->settings[GRPC_ACKED_SETTINGS]
+ [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]);
t->sent_local_settings = false;
}
t->parser = grpc_chttp2_settings_parser_parse;
@@ -625,7 +712,7 @@ static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t,
grpc_chttp2_stream* s = t->incoming_stream;
grpc_error_handle err = t->parser(t->parser_data, t, s, slice, is_last);
intptr_t unused;
- if (GPR_LIKELY(err == GRPC_ERROR_NONE)) {
+ if (GPR_LIKELY(GRPC_ERROR_IS_NONE(err))) {
return err;
} else if (grpc_error_get_int(err, GRPC_ERROR_INT_STREAM_ID, &unused)) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_lists.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_lists.cc
index 9c3c3e6922..92c36a6093 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_lists.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_lists.cc
@@ -20,8 +20,10 @@
#include <grpc/support/log.h>
-#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
+#include "src/core/ext/transport/chttp2/transport/frame.h"
#include "src/core/ext/transport/chttp2/transport/internal.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/bitset.h"
static const char* stream_list_id_string(grpc_chttp2_stream_list_id id) {
switch (id) {
@@ -56,7 +58,7 @@ static bool stream_list_pop(grpc_chttp2_transport* t,
grpc_chttp2_stream* s = t->lists[id].head;
if (s) {
grpc_chttp2_stream* new_head = s->links[id].next;
- GPR_ASSERT(s->included[id]);
+ GPR_ASSERT(s->included.is_set(id));
if (new_head) {
t->lists[id].head = new_head;
new_head->links[id].prev = nullptr;
@@ -64,7 +66,7 @@ static bool stream_list_pop(grpc_chttp2_transport* t,
t->lists[id].head = nullptr;
t->lists[id].tail = nullptr;
}
- s->included[id] = 0;
+ s->included.clear(id);
}
*stream = s;
if (s && GRPC_TRACE_FLAG_ENABLED(grpc_trace_http2_stream_state)) {
@@ -76,8 +78,8 @@ static bool stream_list_pop(grpc_chttp2_transport* t,
static void stream_list_remove(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
grpc_chttp2_stream_list_id id) {
- GPR_ASSERT(s->included[id]);
- s->included[id] = 0;
+ GPR_ASSERT(s->included.is_set(id));
+ s->included.clear(id);
if (s->links[id].prev) {
s->links[id].prev->links[id].next = s->links[id].next;
} else {
@@ -98,7 +100,7 @@ static void stream_list_remove(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
static bool stream_list_maybe_remove(grpc_chttp2_transport* t,
grpc_chttp2_stream* s,
grpc_chttp2_stream_list_id id) {
- if (s->included[id]) {
+ if (s->included.is_set(id)) {
stream_list_remove(t, s, id);
return true;
} else {
@@ -110,7 +112,7 @@ static void stream_list_add_tail(grpc_chttp2_transport* t,
grpc_chttp2_stream* s,
grpc_chttp2_stream_list_id id) {
grpc_chttp2_stream* old_tail;
- GPR_ASSERT(!s->included[id]);
+ GPR_ASSERT(!s->included.is_set(id));
old_tail = t->lists[id].tail;
s->links[id].next = nullptr;
s->links[id].prev = old_tail;
@@ -120,7 +122,7 @@ static void stream_list_add_tail(grpc_chttp2_transport* t,
t->lists[id].head = s;
}
t->lists[id].tail = s;
- s->included[id] = 1;
+ s->included.set(id);
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_http2_stream_state)) {
gpr_log(GPR_INFO, "%p[%d][%s]: add to %s", t, s->id,
t->is_client ? "cli" : "svr", stream_list_id_string(id));
@@ -129,7 +131,7 @@ static void stream_list_add_tail(grpc_chttp2_transport* t,
static bool stream_list_add(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
grpc_chttp2_stream_list_id id) {
- if (s->included[id]) {
+ if (s->included.is_set(id)) {
return false;
}
stream_list_add_tail(t, s, id);
@@ -185,7 +187,6 @@ void grpc_chttp2_list_remove_waiting_for_concurrency(grpc_chttp2_transport* t,
void grpc_chttp2_list_add_stalled_by_transport(grpc_chttp2_transport* t,
grpc_chttp2_stream* s) {
- GPR_ASSERT(t->flow_control->flow_control_enabled());
stream_list_add(t, s, GRPC_CHTTP2_LIST_STALLED_BY_TRANSPORT);
}
@@ -201,7 +202,6 @@ void grpc_chttp2_list_remove_stalled_by_transport(grpc_chttp2_transport* t,
void grpc_chttp2_list_add_stalled_by_stream(grpc_chttp2_transport* t,
grpc_chttp2_stream* s) {
- GPR_ASSERT(t->flow_control->flow_control_enabled());
stream_list_add(t, s, GRPC_CHTTP2_LIST_STALLED_BY_STREAM);
}
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_map.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_map.cc
index 647214b94a..c837f4df3b 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_map.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_map.cc
@@ -20,7 +20,7 @@
#include "src/core/ext/transport/chttp2/transport/stream_map.h"
-#include <string.h>
+#include <stdlib.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_map.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_map.h
index 485abd2d13..845fa01dbe 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_map.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/stream_map.h
@@ -22,6 +22,7 @@
#include <grpc/support/port_platform.h>
#include <stddef.h>
+#include <stdint.h>
/* Data structure to map a uint32_t to a data object (represented by a void*)
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/varint.h b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/varint.h
index d4ba48756a..36bfd44474 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/varint.h
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/varint.h
@@ -21,6 +21,8 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
/* Helpers for hpack varint encoding */
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/writing.cc b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/writing.cc
index 3d3602f048..97bcba78c0 100644
--- a/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/writing.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/chttp2/transport/writing.cc
@@ -18,17 +18,52 @@
#include <grpc/support/port_platform.h>
-#include <limits.h>
+#include <inttypes.h>
+#include <stddef.h>
+#include <algorithm>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/types/optional.h"
+
+#include <grpc/slice.h>
+#include <grpc/slice_buffer.h>
#include <grpc/support/log.h>
+// IWYU pragma: no_include "src/core/lib/gprpp/orphanable.h"
+
#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
#include "src/core/ext/transport/chttp2/transport/context_list.h"
+#include "src/core/ext/transport/chttp2/transport/flow_control.h"
+#include "src/core/ext/transport/chttp2/transport/frame.h"
+#include "src/core/ext/transport/chttp2/transport/frame_data.h"
+#include "src/core/ext/transport/chttp2/transport/frame_ping.h"
+#include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
+#include "src/core/ext/transport/chttp2/transport/frame_settings.h"
+#include "src/core/ext/transport/chttp2/transport/frame_window_update.h"
+#include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
+#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
#include "src/core/ext/transport/chttp2/transport/internal.h"
+#include "src/core/ext/transport/chttp2/transport/stream_map.h"
+#include "src/core/lib/channel/channelz.h"
#include "src/core/lib/debug/stats.h"
-#include "src/core/lib/profiling/timers.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/slice/slice.h"
#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/transport/bdp_estimator.h"
#include "src/core/lib/transport/http2_errors.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
static void add_to_write_list(grpc_chttp2_write_cb** list,
grpc_chttp2_write_cb* cb) {
@@ -60,15 +95,15 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
}
return;
}
- if (t->ping_state.pings_before_data_required == 0 &&
+ if (t->is_client && t->ping_state.pings_before_data_required == 0 &&
t->ping_policy.max_pings_without_data != 0) {
/* need to receive something of substance before sending a ping again */
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
- gpr_log(GPR_INFO, "%s: Ping delayed [%s]: too many recent pings: %d/%d",
- t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
- t->ping_state.pings_before_data_required,
+ gpr_log(GPR_INFO,
+ "CLIENT: Ping delayed [%s]: too many recent pings: %d/%d",
+ t->peer_string.c_str(), t->ping_state.pings_before_data_required,
t->ping_policy.max_pings_without_data);
}
return;
@@ -77,15 +112,25 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
// in a loop while draining the currently-held combiner. Also see
// https://github.com/grpc/grpc/issues/26079.
grpc_core::ExecCtx::Get()->InvalidateNow();
- grpc_core::Timestamp now = grpc_core::ExecCtx::Get()->Now();
-
- grpc_core::Duration next_allowed_ping_interval =
- (t->keepalive_permit_without_calls == 0 &&
- grpc_chttp2_stream_map_size(&t->stream_map) == 0)
- ? grpc_core::Duration::Hours(2)
- : grpc_core::Duration::Seconds(
- 1); /* A second is added to deal with network delays and timing
- imprecision */
+ grpc_core::Timestamp now = grpc_core::Timestamp::Now();
+
+ grpc_core::Duration next_allowed_ping_interval = grpc_core::Duration::Zero();
+ if (t->is_client) {
+ next_allowed_ping_interval =
+ (t->keepalive_permit_without_calls == 0 &&
+ grpc_chttp2_stream_map_size(&t->stream_map) == 0)
+ ? grpc_core::Duration::Hours(2)
+ : grpc_core::Duration::Seconds(1); /* A second is added to deal with
+ network delays and timing imprecision */
+ } else if (t->sent_goaway_state != GRPC_CHTTP2_GRACEFUL_GOAWAY) {
+ // The gRPC keepalive spec doesn't call for any throttling on the server
+ // side, but we are adding some throttling for protection anyway, unless
+ // we are doing a graceful GOAWAY in which case we don't want to wait.
+ next_allowed_ping_interval =
+ t->keepalive_time == grpc_core::Duration::Infinity()
+ ? grpc_core::Duration::Seconds(20)
+ : t->keepalive_time / 2;
+ }
grpc_core::Timestamp next_allowed_ping =
t->ping_state.last_ping_sent_time + next_allowed_ping_interval;
@@ -96,7 +141,8 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
gpr_log(
GPR_INFO,
- "%s: Ping delayed [%s]: not enough time elapsed since last ping. "
+ "%s: Ping delayed [%s]: not enough time elapsed since last "
+ "ping. "
" Last ping %" PRId64 ": Next ping %" PRId64 ": Now %" PRId64,
t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
t->ping_state.last_ping_sent_time.milliseconds_after_process_epoch(),
@@ -114,6 +160,7 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
}
return;
}
+ t->ping_state.last_ping_sent_time = now;
pq->inflight_id = t->ping_ctr;
t->ping_ctr++;
@@ -124,7 +171,6 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
grpc_slice_buffer_add(&t->outbuf,
grpc_chttp2_ping_create(false, pq->inflight_id));
GRPC_STATS_INC_HTTP2_PINGS_SENT();
- t->ping_state.last_ping_sent_time = now;
if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
@@ -172,14 +218,14 @@ static void report_stall(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
s->flow_controlled_buffer.length, s->flow_controlled_bytes_flowed,
t->settings[GRPC_ACKED_SETTINGS]
[GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE],
- t->flow_control->remote_window(),
+ t->flow_control.remote_window(),
static_cast<uint32_t>(std::max(
int64_t(0),
- s->flow_control->remote_window_delta() +
+ s->flow_control.remote_window_delta() +
static_cast<int64_t>(
t->settings[GRPC_PEER_SETTINGS]
[GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]))),
- s->flow_control->remote_window_delta());
+ s->flow_control.remote_window_delta());
}
}
@@ -215,23 +261,11 @@ static bool is_default_initial_metadata(grpc_metadata_batch* initial_metadata) {
}
namespace {
-class StreamWriteContext;
class WriteContext {
public:
explicit WriteContext(grpc_chttp2_transport* t) : t_(t) {
GRPC_STATS_INC_HTTP2_WRITES_BEGUN();
- GPR_TIMER_SCOPE("grpc_chttp2_begin_write", 0);
- }
-
- // TODO(ctiller): make this the destructor
- void FlushStats() {
- GRPC_STATS_INC_HTTP2_SEND_INITIAL_METADATA_PER_WRITE(
- initial_metadata_writes_);
- GRPC_STATS_INC_HTTP2_SEND_MESSAGE_PER_WRITE(message_writes_);
- GRPC_STATS_INC_HTTP2_SEND_TRAILING_METADATA_PER_WRITE(
- trailing_metadata_writes_);
- GRPC_STATS_INC_HTTP2_SEND_FLOWCTL_PER_WRITE(flow_control_writes_);
}
void FlushSettings() {
@@ -257,7 +291,7 @@ class WriteContext {
void FlushWindowUpdates() {
uint32_t transport_announce =
- t_->flow_control->MaybeSendUpdate(t_->outbuf.count > 0);
+ t_->flow_control.MaybeSendUpdate(t_->outbuf.count > 0);
if (transport_announce) {
grpc_transport_one_way_stats throwaway_stats;
grpc_slice_buffer_add(
@@ -284,7 +318,7 @@ class WriteContext {
void UpdateStreamsNoLongerStalled() {
grpc_chttp2_stream* s;
while (grpc_chttp2_list_pop_stalled_by_transport(t_, &s)) {
- if (t_->closed_with_error == GRPC_ERROR_NONE &&
+ if (GRPC_ERROR_IS_NONE(t_->closed_with_error) &&
grpc_chttp2_list_add_writable_stream(t_, s)) {
if (!s->refcount->refs.RefIfNonZero()) {
grpc_chttp2_list_remove_writable_stream(t_, s);
@@ -345,7 +379,7 @@ class DataSendContext {
uint32_t stream_remote_window() const {
return static_cast<uint32_t>(std::max(
int64_t(0),
- s_->flow_control->remote_window_delta() +
+ s_->flow_control.remote_window_delta() +
static_cast<int64_t>(
t_->settings[GRPC_PEER_SETTINGS]
[GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE])));
@@ -355,7 +389,7 @@ class DataSendContext {
return static_cast<uint32_t>(std::min(
t_->settings[GRPC_PEER_SETTINGS][GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE],
static_cast<uint32_t>(std::min(int64_t(stream_remote_window()),
- t_->flow_control->remote_window()))));
+ t_->flow_control.remote_window()))));
}
bool AnyOutgoing() const { return max_outgoing() > 0; }
@@ -364,12 +398,11 @@ class DataSendContext {
uint32_t send_bytes = static_cast<uint32_t>(
std::min(size_t(max_outgoing()), s_->flow_controlled_buffer.length));
is_last_frame_ = send_bytes == s_->flow_controlled_buffer.length &&
- s_->fetching_send_message == nullptr &&
s_->send_trailing_metadata != nullptr &&
s_->send_trailing_metadata->empty();
grpc_chttp2_encode_data(s_->id, &s_->flow_controlled_buffer, send_bytes,
is_last_frame_, &s_->stats.outgoing, &t_->outbuf);
- s_->flow_control->SentData(send_bytes);
+ sfc_upd_.SentData(send_bytes);
s_->sending_bytes += send_bytes;
}
@@ -389,6 +422,8 @@ class DataSendContext {
WriteContext* write_context_;
grpc_chttp2_transport* t_;
grpc_chttp2_stream* s_;
+ grpc_core::chttp2::StreamFlowControl::OutgoingUpdateContext sfc_upd_{
+ &s_->flow_control};
const size_t sending_bytes_before_;
bool is_last_frame_ = false;
};
@@ -398,11 +433,9 @@ class StreamWriteContext {
StreamWriteContext(WriteContext* write_context, grpc_chttp2_stream* s)
: write_context_(write_context), t_(write_context->transport()), s_(s) {
GRPC_CHTTP2_IF_TRACING(
- gpr_log(GPR_INFO, "W:%p %s[%d] im-(sent,send)=(%d,%d) announce=%d", t_,
+ gpr_log(GPR_INFO, "W:%p %s[%d] im-(sent,send)=(%d,%d)", t_,
t_->is_client ? "CLIENT" : "SERVER", s->id,
- s->sent_initial_metadata, s->send_initial_metadata != nullptr,
- (int)(s->flow_control->local_window_delta() -
- s->flow_control->announced_window_delta())));
+ s->sent_initial_metadata, s->send_initial_metadata != nullptr));
}
void FlushInitialMetadata() {
@@ -415,8 +448,7 @@ class StreamWriteContext {
// trailing metadata. This results in a Trailers-Only response,
// which is required for retries, as per:
// https://github.com/grpc/proposal/blob/master/A6-client-retries.md#when-retries-are-valid
- if (!t_->is_client && s_->fetching_send_message == nullptr &&
- s_->flow_controlled_buffer.length == 0 &&
+ if (!t_->is_client && s_->flow_controlled_buffer.length == 0 &&
s_->send_trailing_metadata != nullptr &&
is_default_initial_metadata(s_->send_initial_metadata)) {
ConvertInitialMetadataToTrailingMetadata();
@@ -448,8 +480,10 @@ class StreamWriteContext {
}
void FlushWindowUpdates() {
+ if (s_->read_closed) return;
+
/* send any window updates */
- const uint32_t stream_announce = s_->flow_control->MaybeSendUpdate();
+ const uint32_t stream_announce = s_->flow_control.MaybeSendUpdate();
if (stream_announce == 0) return;
grpc_slice_buffer_add(
@@ -469,10 +503,12 @@ class StreamWriteContext {
DataSendContext data_send_context(write_context_, t_, s_);
if (!data_send_context.AnyOutgoing()) {
- if (t_->flow_control->remote_window() <= 0) {
+ if (t_->flow_control.remote_window() <= 0) {
+ GRPC_STATS_INC_HTTP2_TRANSPORT_STALLS();
report_stall(t_, s_, "transport");
grpc_chttp2_list_add_stalled_by_transport(t_, s_);
} else if (data_send_context.stream_remote_window() <= 0) {
+ GRPC_STATS_INC_HTTP2_STREAM_STALLS();
report_stall(t_, s_, "stream");
grpc_chttp2_list_add_stalled_by_stream(t_, s_);
}
@@ -500,7 +536,6 @@ class StreamWriteContext {
if (!s_->sent_initial_metadata) return;
if (s_->send_trailing_metadata == nullptr) return;
- if (s_->fetching_send_message != nullptr) return;
if (s_->flow_controlled_buffer.length != 0) return;
GRPC_CHTTP2_IF_TRACING(gpr_log(GPR_INFO, "sending trailing_metadata"));
@@ -588,7 +623,7 @@ grpc_chttp2_begin_write_result grpc_chttp2_begin_write(
ctx.FlushQueuedBuffers();
ctx.EnactHpackSettings();
- if (t->flow_control->remote_window() > 0) {
+ if (t->flow_control.remote_window() > 0) {
ctx.UpdateStreamsNoLongerStalled();
}
@@ -628,7 +663,6 @@ grpc_chttp2_begin_write_result grpc_chttp2_begin_write(
}
void grpc_chttp2_end_write(grpc_chttp2_transport* t, grpc_error_handle error) {
- GPR_TIMER_SCOPE("grpc_chttp2_end_write", 0);
grpc_chttp2_stream* s;
if (t->channelz_socket != nullptr) {
diff --git a/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_plugin.cc b/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_plugin.cc
index 34de19aecc..e0abdbbe63 100644
--- a/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_plugin.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_plugin.cc
@@ -18,7 +18,6 @@
#include <grpc/support/port_platform.h>
-#include "src/core/ext/transport/inproc/inproc_transport.h"
#include "src/core/lib/debug/trace.h"
grpc_core::TraceFlag grpc_inproc_trace(false, "inproc");
diff --git a/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_transport.cc b/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_transport.cc
index 06f238b885..a26ff22f65 100644
--- a/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_transport.cc
+++ b/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_transport.cc
@@ -20,22 +20,51 @@
#include "src/core/ext/transport/inproc/inproc_transport.h"
-#include <string.h>
-
+#include <stdint.h>
+
+#include <algorithm>
+#include <memory>
+#include <new>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/grpc.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/status.h>
#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
+#include <grpc/support/log.h>
#include <grpc/support/sync.h>
-#include <grpc/support/time.h>
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
-#include "src/core/lib/resource_quota/api.h"
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/channel/channel_args_preconditioning.h"
+#include "src/core/lib/channel/channelz.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/resource_quota/arena.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/slice/slice_buffer.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/channel.h"
+#include "src/core/lib/surface/channel_stack_type.h"
#include "src/core/lib/surface/server.h"
#include "src/core/lib/transport/connectivity_state.h"
-#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
+#include "src/core/lib/transport/transport_fwd.h"
#include "src/core/lib/transport/transport_impl.h"
#define INPROC_LOG(...) \
@@ -53,8 +82,11 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error);
void log_metadata(const grpc_metadata_batch* md_batch, bool is_client,
bool is_initial);
void fill_in_metadata(inproc_stream* s, const grpc_metadata_batch* metadata,
- uint32_t flags, grpc_metadata_batch* out_md,
- uint32_t* outflags, bool* markfilled);
+ grpc_metadata_batch* out_md, bool* markfilled);
+
+void ResetSendMessage(grpc_transport_stream_op_batch* batch) {
+ std::exchange(batch->payload->send_message.send_message, nullptr)->Clear();
+}
struct shared_mu {
shared_mu() {
@@ -160,22 +192,19 @@ struct inproc_stream {
// Now transfer from the other side's write_buffer if any to the to_read
// buffer
if (cs->write_buffer_initial_md_filled) {
- (void)fill_in_metadata(this, &cs->write_buffer_initial_md,
- cs->write_buffer_initial_md_flags,
- &to_read_initial_md, &to_read_initial_md_flags,
- &to_read_initial_md_filled);
+ fill_in_metadata(this, &cs->write_buffer_initial_md,
+ &to_read_initial_md, &to_read_initial_md_filled);
deadline = std::min(deadline, cs->write_buffer_deadline);
cs->write_buffer_initial_md.Clear();
cs->write_buffer_initial_md_filled = false;
}
if (cs->write_buffer_trailing_md_filled) {
- (void)fill_in_metadata(this, &cs->write_buffer_trailing_md, 0,
- &to_read_trailing_md, nullptr,
- &to_read_trailing_md_filled);
+ fill_in_metadata(this, &cs->write_buffer_trailing_md,
+ &to_read_trailing_md, &to_read_trailing_md_filled);
cs->write_buffer_trailing_md.Clear();
cs->write_buffer_trailing_md_filled = false;
}
- if (cs->write_buffer_cancel_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(cs->write_buffer_cancel_error)) {
cancel_other_error = cs->write_buffer_cancel_error;
cs->write_buffer_cancel_error = GRPC_ERROR_NONE;
maybe_process_ops_locked(this, cancel_other_error);
@@ -190,10 +219,6 @@ struct inproc_stream {
GRPC_ERROR_UNREF(cancel_self_error);
GRPC_ERROR_UNREF(cancel_other_error);
- if (recv_inited) {
- grpc_slice_buffer_destroy_internal(&recv_message);
- }
-
t->unref();
}
@@ -221,7 +246,6 @@ struct inproc_stream {
grpc_core::Arena* arena;
grpc_metadata_batch to_read_initial_md{arena};
- uint32_t to_read_initial_md_flags = 0;
bool to_read_initial_md_filled = false;
grpc_metadata_batch to_read_trailing_md{arena};
bool to_read_trailing_md_filled = false;
@@ -230,7 +254,6 @@ struct inproc_stream {
// stream is set up but server side stream is not yet set up
grpc_metadata_batch write_buffer_initial_md{arena};
bool write_buffer_initial_md_filled = false;
- uint32_t write_buffer_initial_md_flags = 0;
grpc_core::Timestamp write_buffer_deadline =
grpc_core::Timestamp::InfFuture();
grpc_metadata_batch write_buffer_trailing_md{arena};
@@ -247,10 +270,6 @@ struct inproc_stream {
grpc_transport_stream_op_batch* recv_message_op = nullptr;
grpc_transport_stream_op_batch* recv_trailing_md_op = nullptr;
- grpc_slice_buffer recv_message;
- grpc_core::ManualConstructor<grpc_core::SliceBufferByteStream> recv_stream;
- bool recv_inited = false;
-
bool initial_md_sent = false;
bool trailing_md_sent = false;
bool initial_md_recvd = false;
@@ -310,22 +329,19 @@ class CopySink {
} // namespace
void fill_in_metadata(inproc_stream* s, const grpc_metadata_batch* metadata,
- uint32_t flags, grpc_metadata_batch* out_md,
- uint32_t* outflags, bool* markfilled) {
+ grpc_metadata_batch* out_md, bool* markfilled) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_inproc_trace)) {
- log_metadata(metadata, s->t->is_client, outflags != nullptr);
+ log_metadata(metadata, s->t->is_client,
+ metadata->get_pointer(grpc_core::WaitForReady()) != nullptr);
}
- if (outflags != nullptr) {
- *outflags = flags;
- }
if (markfilled != nullptr) {
*markfilled = true;
}
// TODO(ctiller): copy the metadata batch, don't rely on a bespoke copy
- // function. Can only do this once mdelems are out of the way though, too many
- // edge cases otherwise.
+ // function. Can only do this once mdelems are out of the way though, too
+ // many edge cases otherwise.
out_md->Clear();
CopySink sink(out_md);
metadata->Encode(&sink);
@@ -406,7 +422,7 @@ void complete_if_batch_end_locked(inproc_stream* s, grpc_error_handle error,
}
void maybe_process_ops_locked(inproc_stream* s, grpc_error_handle error) {
- if (s && (error != GRPC_ERROR_NONE || s->ops_needed)) {
+ if (s && (!GRPC_ERROR_IS_NONE(error) || s->ops_needed)) {
s->ops_needed = false;
op_state_machine_locked(s, error);
}
@@ -427,34 +443,32 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
: &other->to_read_trailing_md;
bool* destfilled = (other == nullptr) ? &s->write_buffer_trailing_md_filled
: &other->to_read_trailing_md_filled;
- (void)fill_in_metadata(s, &fake_md, 0, dest, nullptr, destfilled);
+ fill_in_metadata(s, &fake_md, dest, destfilled);
if (other != nullptr) {
- if (other->cancel_other_error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(other->cancel_other_error)) {
other->cancel_other_error = GRPC_ERROR_REF(error);
}
maybe_process_ops_locked(other, error);
- } else if (s->write_buffer_cancel_error == GRPC_ERROR_NONE) {
+ } else if (GRPC_ERROR_IS_NONE(s->write_buffer_cancel_error)) {
s->write_buffer_cancel_error = GRPC_ERROR_REF(error);
}
}
if (s->recv_initial_md_op) {
grpc_error_handle err;
if (!s->t->is_client) {
- // If this is a server, provide initial metadata with a path and authority
- // since it expects that as well as no error yet
+ // If this is a server, provide initial metadata with a path and
+ // authority since it expects that as well as no error yet
grpc_metadata_batch fake_md(s->arena);
fake_md.Set(grpc_core::HttpPathMetadata(),
grpc_core::Slice::FromStaticString("/"));
fake_md.Set(grpc_core::HttpAuthorityMetadata(),
grpc_core::Slice::FromStaticString("inproc-fail"));
- (void)fill_in_metadata(
- s, &fake_md, 0,
- s->recv_initial_md_op->payload->recv_initial_metadata
- .recv_initial_metadata,
- s->recv_initial_md_op->payload->recv_initial_metadata.recv_flags,
- nullptr);
+ fill_in_metadata(s, &fake_md,
+ s->recv_initial_md_op->payload->recv_initial_metadata
+ .recv_initial_metadata,
+ nullptr);
err = GRPC_ERROR_NONE;
} else {
err = GRPC_ERROR_REF(error);
@@ -501,7 +515,7 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
s->recv_message_op = nullptr;
}
if (s->send_message_op) {
- s->send_message_op->payload->send_message.send_message.reset();
+ ResetSendMessage(s->send_message_op);
complete_if_batch_end_locked(
s, error, s->send_message_op,
"fail_helper scheduling send-message-on-complete");
@@ -543,35 +557,11 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
// synchronously. That assumption is true today but may not always be
// true in the future.
void message_transfer_locked(inproc_stream* sender, inproc_stream* receiver) {
- size_t remaining =
- sender->send_message_op->payload->send_message.send_message->length();
- if (receiver->recv_inited) {
- grpc_slice_buffer_destroy_internal(&receiver->recv_message);
- }
- grpc_slice_buffer_init(&receiver->recv_message);
- receiver->recv_inited = true;
- do {
- grpc_slice message_slice;
- grpc_closure unused;
- GPR_ASSERT(
- sender->send_message_op->payload->send_message.send_message->Next(
- SIZE_MAX, &unused));
- grpc_error_handle error =
- sender->send_message_op->payload->send_message.send_message->Pull(
- &message_slice);
- if (error != GRPC_ERROR_NONE) {
- cancel_stream_locked(sender, GRPC_ERROR_REF(error));
- break;
- }
- GPR_ASSERT(error == GRPC_ERROR_NONE);
- remaining -= GRPC_SLICE_LENGTH(message_slice);
- grpc_slice_buffer_add(&receiver->recv_message, message_slice);
- } while (remaining > 0);
- sender->send_message_op->payload->send_message.send_message.reset();
-
- receiver->recv_stream.Init(&receiver->recv_message, 0);
- receiver->recv_message_op->payload->recv_message.recv_message->reset(
- receiver->recv_stream.get());
+ *receiver->recv_message_op->payload->recv_message.recv_message =
+ std::move(*sender->send_message_op->payload->send_message.send_message);
+ *receiver->recv_message_op->payload->recv_message.flags =
+ sender->send_message_op->payload->send_message.flags;
+
INPROC_LOG(GPR_INFO, "message_transfer_locked %p scheduling message-ready",
receiver);
grpc_core::ExecCtx::Run(
@@ -603,13 +593,13 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
// cancellation takes precedence
inproc_stream* other = s->other_side;
- if (s->cancel_self_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(s->cancel_self_error)) {
fail_helper_locked(s, GRPC_ERROR_REF(s->cancel_self_error));
goto done;
- } else if (s->cancel_other_error != GRPC_ERROR_NONE) {
+ } else if (!GRPC_ERROR_IS_NONE(s->cancel_other_error)) {
fail_helper_locked(s, GRPC_ERROR_REF(s->cancel_other_error));
goto done;
- } else if (error != GRPC_ERROR_NONE) {
+ } else if (!GRPC_ERROR_IS_NONE(error)) {
fail_helper_locked(s, GRPC_ERROR_REF(error));
goto done;
}
@@ -620,7 +610,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
maybe_process_ops_locked(other, GRPC_ERROR_NONE);
} else if (!s->t->is_client && s->trailing_md_sent) {
// A server send will never be matched if the server already sent status
- s->send_message_op->payload->send_message.send_message.reset();
+ ResetSendMessage(s->send_message_op);
complete_if_batch_end_locked(
s, GRPC_ERROR_NONE, s->send_message_op,
"op_state_machine scheduling send-message-on-complete case 1");
@@ -652,11 +642,10 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
goto done;
} else {
if (!other || !other->closed) {
- (void)fill_in_metadata(
- s,
- s->send_trailing_md_op->payload->send_trailing_metadata
- .send_trailing_metadata,
- 0, dest, nullptr, destfilled);
+ fill_in_metadata(s,
+ s->send_trailing_md_op->payload->send_trailing_metadata
+ .send_trailing_metadata,
+ dest, destfilled);
}
s->trailing_md_sent = true;
if (s->send_trailing_md_op->payload->send_trailing_metadata.sent) {
@@ -700,12 +689,10 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
if (s->to_read_initial_md_filled) {
s->initial_md_recvd = true;
- fill_in_metadata(
- s, &s->to_read_initial_md, s->to_read_initial_md_flags,
- s->recv_initial_md_op->payload->recv_initial_metadata
- .recv_initial_metadata,
- s->recv_initial_md_op->payload->recv_initial_metadata.recv_flags,
- nullptr);
+ fill_in_metadata(s, &s->to_read_initial_md,
+ s->recv_initial_md_op->payload->recv_initial_metadata
+ .recv_initial_metadata,
+ nullptr);
if (s->deadline != grpc_core::Timestamp::InfFuture()) {
s->recv_initial_md_op->payload->recv_initial_metadata
.recv_initial_metadata->Set(grpc_core::GrpcTimeoutMetadata(),
@@ -761,7 +748,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
if (s->recv_message_op != nullptr) {
// This message needs to be wrapped up because it will never be
// satisfied
- *s->recv_message_op->payload->recv_message.recv_message = nullptr;
+ s->recv_message_op->payload->recv_message.recv_message->reset();
INPROC_LOG(GPR_INFO, "op_state_machine %p scheduling message-ready", s);
grpc_core::ExecCtx::Run(
DEBUG_LOCATION,
@@ -775,7 +762,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
if ((s->trailing_md_sent || s->t->is_client) && s->send_message_op) {
// Nothing further will try to receive from this stream, so finish off
// any outstanding send_message op
- s->send_message_op->payload->send_message.send_message.reset();
+ ResetSendMessage(s->send_message_op);
s->send_message_op->payload->send_message.stream_write_closed = true;
complete_if_batch_end_locked(
s, new_err, s->send_message_op,
@@ -785,17 +772,18 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
if (s->recv_trailing_md_op != nullptr) {
// We wanted trailing metadata and we got it
s->trailing_md_recvd = true;
- fill_in_metadata(s, &s->to_read_trailing_md, 0,
+ fill_in_metadata(s, &s->to_read_trailing_md,
s->recv_trailing_md_op->payload->recv_trailing_metadata
.recv_trailing_metadata,
- nullptr, nullptr);
+ nullptr);
s->to_read_trailing_md.Clear();
s->to_read_trailing_md_filled = false;
// We should schedule the recv_trailing_md_op completion if
// 1. this stream is the client-side
// 2. this stream is the server-side AND has already sent its trailing md
- // (If the server hasn't already sent its trailing md, it doesn't have
+ // (If the server hasn't already sent its trailing md, it doesn't
+ // have
// a final status, so don't mark this op complete)
if (s->t->is_client || s->trailing_md_sent) {
grpc_core::ExecCtx::Run(
@@ -840,7 +828,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
// No further message will come on this stream, so finish off the
// recv_message_op
INPROC_LOG(GPR_INFO, "op_state_machine %p scheduling message-ready", s);
- *s->recv_message_op->payload->recv_message.recv_message = nullptr;
+ s->recv_message_op->payload->recv_message.recv_message->reset();
grpc_core::ExecCtx::Run(
DEBUG_LOCATION,
s->recv_message_op->payload->recv_message.recv_message_ready,
@@ -853,7 +841,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
if (s->trailing_md_recvd && s->send_message_op && s->t->is_client) {
// Nothing further will try to receive from this stream, so finish off
// any outstanding send_message op
- s->send_message_op->payload->send_message.send_message.reset();
+ ResetSendMessage(s->send_message_op);
complete_if_batch_end_locked(
s, new_err, s->send_message_op,
"op_state_machine scheduling send-message-on-complete case 3");
@@ -881,7 +869,7 @@ bool cancel_stream_locked(inproc_stream* s, grpc_error_handle error) {
bool ret = false; // was the cancel accepted
INPROC_LOG(GPR_INFO, "cancel_stream %p with %s", s,
grpc_error_std_string(error).c_str());
- if (s->cancel_self_error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(s->cancel_self_error)) {
ret = true;
s->cancel_self_error = GRPC_ERROR_REF(error);
// Catch current value of other before it gets closed off
@@ -898,14 +886,14 @@ bool cancel_stream_locked(inproc_stream* s, grpc_error_handle error) {
: &other->to_read_trailing_md;
bool* destfilled = (other == nullptr) ? &s->write_buffer_trailing_md_filled
: &other->to_read_trailing_md_filled;
- (void)fill_in_metadata(s, &cancel_md, 0, dest, nullptr, destfilled);
+ fill_in_metadata(s, &cancel_md, dest, destfilled);
if (other != nullptr) {
- if (other->cancel_other_error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(other->cancel_other_error)) {
other->cancel_other_error = GRPC_ERROR_REF(s->cancel_self_error);
}
maybe_process_ops_locked(other, other->cancel_other_error);
- } else if (s->write_buffer_cancel_error == GRPC_ERROR_NONE) {
+ } else if (GRPC_ERROR_IS_NONE(s->write_buffer_cancel_error)) {
s->write_buffer_cancel_error = GRPC_ERROR_REF(s->cancel_self_error);
}
@@ -968,7 +956,7 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
// this function is responsible to make sure that that field gets unref'ed
cancel_stream_locked(s, op->payload->cancel_stream.cancel_error);
// this op can complete without an error
- } else if (s->cancel_self_error != GRPC_ERROR_NONE) {
+ } else if (!GRPC_ERROR_IS_NONE(s->cancel_self_error)) {
// already self-canceled so still give it an error
error = GRPC_ERROR_REF(s->cancel_self_error);
} else {
@@ -983,18 +971,15 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
}
inproc_stream* other = s->other_side;
- if (error == GRPC_ERROR_NONE &&
+ if (GRPC_ERROR_IS_NONE(error) &&
(op->send_initial_metadata || op->send_trailing_metadata)) {
if (s->t->is_closed) {
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Endpoint already shutdown");
}
- if (error == GRPC_ERROR_NONE && op->send_initial_metadata) {
+ if (GRPC_ERROR_IS_NONE(error) && op->send_initial_metadata) {
grpc_metadata_batch* dest = (other == nullptr)
? &s->write_buffer_initial_md
: &other->to_read_initial_md;
- uint32_t* destflags = (other == nullptr)
- ? &s->write_buffer_initial_md_flags
- : &other->to_read_initial_md_flags;
bool* destfilled = (other == nullptr) ? &s->write_buffer_initial_md_filled
: &other->to_read_initial_md_filled;
if (*destfilled || s->initial_md_sent) {
@@ -1003,10 +988,9 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Extra initial metadata");
} else {
if (!s->other_side_closed) {
- (void)fill_in_metadata(
- s, op->payload->send_initial_metadata.send_initial_metadata,
- op->payload->send_initial_metadata.send_initial_metadata_flags,
- dest, destflags, destfilled);
+ fill_in_metadata(
+ s, op->payload->send_initial_metadata.send_initial_metadata, dest,
+ destfilled);
}
if (s->t->is_client) {
grpc_core::Timestamp* dl =
@@ -1022,7 +1006,7 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
}
}
- if (error == GRPC_ERROR_NONE &&
+ if (GRPC_ERROR_IS_NONE(error) &&
(op->send_message || op->send_trailing_metadata ||
op->recv_initial_metadata || op->recv_message ||
op->recv_trailing_metadata)) {
@@ -1062,11 +1046,11 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
s->ops_needed = true;
}
} else {
- if (error != GRPC_ERROR_NONE) {
- // Consume any send message that was sent here but that we are not pushing
- // to the other side
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ // Consume any send message that was sent here but that we are not
+ // pushing to the other side
if (op->send_message) {
- op->payload->send_message.send_message.reset();
+ ResetSendMessage(op);
}
// Schedule op's closures that we didn't push to op state machine
if (op->recv_initial_metadata) {
@@ -1102,10 +1086,10 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
GRPC_ERROR_REF(error));
}
if (op->recv_trailing_metadata) {
- INPROC_LOG(
- GPR_INFO,
- "perform_stream_op error %p scheduling trailing-metadata-ready %s",
- s, grpc_error_std_string(error).c_str());
+ INPROC_LOG(GPR_INFO,
+ "perform_stream_op error %p scheduling "
+ "trailing-metadata-ready %s",
+ s, grpc_error_std_string(error).c_str());
grpc_core::ExecCtx::Run(
DEBUG_LOCATION,
op->payload->recv_trailing_metadata.recv_trailing_metadata_ready,
@@ -1158,11 +1142,11 @@ void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
}
bool do_close = false;
- if (op->goaway_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(op->goaway_error)) {
do_close = true;
GRPC_ERROR_UNREF(op->goaway_error);
}
- if (op->disconnect_with_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
do_close = true;
GRPC_ERROR_UNREF(op->disconnect_with_error);
}
@@ -1224,9 +1208,7 @@ const grpc_transport_vtable inproc_vtable = {
* Main inproc transport functions
*/
void inproc_transports_create(grpc_transport** server_transport,
- const grpc_channel_args* /*server_args*/,
- grpc_transport** client_transport,
- const grpc_channel_args* /*client_args*/) {
+ grpc_transport** client_transport) {
INPROC_LOG(GPR_INFO, "inproc_transports_create");
shared_mu* mu = new (gpr_malloc(sizeof(*mu))) shared_mu();
inproc_transport* st = new (gpr_malloc(sizeof(*st)))
@@ -1251,35 +1233,29 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
grpc_core::Server* core_server = grpc_core::Server::FromC(server);
// Remove max_connection_idle and max_connection_age channel arguments since
// those do not apply to inproc transports.
- const char* args_to_remove[] = {GRPC_ARG_MAX_CONNECTION_IDLE_MS,
- GRPC_ARG_MAX_CONNECTION_AGE_MS};
- const grpc_channel_args* server_args = grpc_channel_args_copy_and_remove(
- core_server->channel_args(), args_to_remove,
- GPR_ARRAY_SIZE(args_to_remove));
+ grpc_core::ChannelArgs server_args =
+ core_server->channel_args()
+ .Remove(GRPC_ARG_MAX_CONNECTION_IDLE_MS)
+ .Remove(GRPC_ARG_MAX_CONNECTION_AGE_MS);
+
// Add a default authority channel argument for the client
- grpc_arg default_authority_arg;
- default_authority_arg.type = GRPC_ARG_STRING;
- default_authority_arg.key = const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY);
- default_authority_arg.value.string = const_cast<char*>("inproc.authority");
- args = grpc_channel_args_copy_and_add(args, &default_authority_arg, 1);
- const grpc_channel_args* client_args = grpc_core::CoreConfiguration::Get()
- .channel_args_preconditioning()
- .PreconditionChannelArgs(args);
- grpc_channel_args_destroy(args);
+ grpc_core::ChannelArgs client_args =
+ grpc_core::CoreConfiguration::Get()
+ .channel_args_preconditioning()
+ .PreconditionChannelArgs(args)
+ .Set(GRPC_ARG_DEFAULT_AUTHORITY, "inproc.authority");
grpc_transport* server_transport;
grpc_transport* client_transport;
- inproc_transports_create(&server_transport, server_args, &client_transport,
- client_args);
+ inproc_transports_create(&server_transport, &client_transport);
// TODO(ncteisen): design and support channelz GetSocket for inproc.
grpc_error_handle error = core_server->SetupTransport(
server_transport, nullptr, server_args, nullptr);
grpc_channel* channel = nullptr;
- if (error == GRPC_ERROR_NONE) {
- channel = grpc_channel_create_internal("inproc", client_args,
- GRPC_CLIENT_DIRECT_CHANNEL,
- client_transport, &error);
- if (error != GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
+ auto new_channel = grpc_core::Channel::Create(
+ "inproc", client_args, GRPC_CLIENT_DIRECT_CHANNEL, client_transport);
+ if (!new_channel.ok()) {
GPR_ASSERT(!channel);
gpr_log(GPR_ERROR, "Failed to create client channel: %s",
grpc_error_std_string(error).c_str());
@@ -1294,6 +1270,8 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
grpc_transport_destroy(server_transport);
channel = grpc_lame_client_channel_create(
nullptr, status, "Failed to create client channel");
+ } else {
+ channel = new_channel->release()->c_ptr();
}
} else {
GPR_ASSERT(!channel);
@@ -1311,11 +1289,5 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
nullptr, status, "Failed to create server channel");
}
- // Free up created channel args
- grpc_channel_args_destroy(server_args);
- grpc_channel_args_destroy(client_args);
-
- // Now finish scheduled operations
-
return channel;
}
diff --git a/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_transport.h b/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_transport.h
index 0ff22ffa59..465d9b41b7 100644
--- a/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_transport.h
+++ b/contrib/libs/grpc/src/core/ext/transport/inproc/inproc_transport.h
@@ -21,7 +21,9 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/transport/transport_impl.h"
+#include <grpc/impl/codegen/grpc_types.h>
+
+#include "src/core/lib/debug/trace.h"
grpc_channel* grpc_inproc_channel_create(grpc_server* server,
const grpc_channel_args* args,
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c
index dd46be7bc3..86c3c1d844 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c
@@ -20,77 +20,80 @@ static const upb_MiniTable_Sub envoy_admin_v3_Certificates_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_admin_v3_Certificates__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_Certificates_msginit = {
&envoy_admin_v3_Certificates_submsgs[0],
&envoy_admin_v3_Certificates__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub envoy_admin_v3_Certificate_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_admin_v3_Certificate_submsgs[2] = {
+ {.submsg = &envoy_admin_v3_CertificateDetails_msginit},
{.submsg = &envoy_admin_v3_CertificateDetails_msginit},
};
static const upb_MiniTable_Field envoy_admin_v3_Certificate__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_Certificate_msginit = {
&envoy_admin_v3_Certificate_submsgs[0],
&envoy_admin_v3_Certificate__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_admin_v3_CertificateDetails_submsgs[3] = {
- {.submsg = &envoy_admin_v3_CertificateDetails_OcspDetails_msginit},
+static const upb_MiniTable_Sub envoy_admin_v3_CertificateDetails_submsgs[4] = {
{.submsg = &envoy_admin_v3_SubjectAlternateName_msginit},
{.submsg = &google_protobuf_Timestamp_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
+ {.submsg = &envoy_admin_v3_CertificateDetails_OcspDetails_msginit},
};
static const upb_MiniTable_Field envoy_admin_v3_CertificateDetails__fields[7] = {
- {1, UPB_SIZE(16, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(24, 32), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(44, 72), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 8), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(32, 48), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(36, 56), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(40, 64), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 40), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(40, 72), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 48), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 56), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(32, 64), UPB_SIZE(3, 3), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_CertificateDetails_msginit = {
&envoy_admin_v3_CertificateDetails_submsgs[0],
&envoy_admin_v3_CertificateDetails__fields[0],
- UPB_SIZE(48, 80), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(48, 80), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
-static const upb_MiniTable_Sub envoy_admin_v3_CertificateDetails_OcspDetails_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_admin_v3_CertificateDetails_OcspDetails_submsgs[2] = {
+ {.submsg = &google_protobuf_Timestamp_msginit},
{.submsg = &google_protobuf_Timestamp_msginit},
};
static const upb_MiniTable_Field envoy_admin_v3_CertificateDetails_OcspDetails__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_CertificateDetails_OcspDetails_msginit = {
&envoy_admin_v3_CertificateDetails_OcspDetails_submsgs[0],
&envoy_admin_v3_CertificateDetails_OcspDetails__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_admin_v3_SubjectAlternateName__fields[3] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_SubjectAlternateName_msginit = {
NULL,
&envoy_admin_v3_SubjectAlternateName__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable *messages_layout[5] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h
index d0f2b566c7..3d93f72bb8 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h
@@ -65,25 +65,35 @@ UPB_INLINE envoy_admin_v3_Certificates* envoy_admin_v3_Certificates_parse_ex(con
return ret;
}
UPB_INLINE char* envoy_admin_v3_Certificates_serialize(const envoy_admin_v3_Certificates* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_Certificates_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_Certificates_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_Certificates_serialize_ex(const envoy_admin_v3_Certificates* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_Certificates_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_Certificates_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_Certificates_has_certificates(const envoy_admin_v3_Certificates* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_admin_v3_Certificates_clear_certificates(const envoy_admin_v3_Certificates* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_admin_v3_Certificate* const* envoy_admin_v3_Certificates_certificates(const envoy_admin_v3_Certificates* msg, size_t* len) {
+ return (const envoy_admin_v3_Certificate* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_admin_v3_Certificates_has_certificates(const envoy_admin_v3_Certificates *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_admin_v3_Certificate* const* envoy_admin_v3_Certificates_certificates(const envoy_admin_v3_Certificates *msg, size_t *len) { return (const envoy_admin_v3_Certificate* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_admin_v3_Certificate** envoy_admin_v3_Certificates_mutable_certificates(envoy_admin_v3_Certificates *msg, size_t *len) {
+UPB_INLINE envoy_admin_v3_Certificate** envoy_admin_v3_Certificates_mutable_certificates(envoy_admin_v3_Certificates* msg, size_t* len) {
return (envoy_admin_v3_Certificate**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_admin_v3_Certificate** envoy_admin_v3_Certificates_resize_certificates(envoy_admin_v3_Certificates *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_admin_v3_Certificate** envoy_admin_v3_Certificates_resize_certificates(envoy_admin_v3_Certificates* msg, size_t len, upb_Arena* arena) {
return (envoy_admin_v3_Certificate**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_admin_v3_Certificate* envoy_admin_v3_Certificates_add_certificates(envoy_admin_v3_Certificates *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_Certificate* envoy_admin_v3_Certificates_add_certificates(envoy_admin_v3_Certificates* msg, upb_Arena* arena) {
struct envoy_admin_v3_Certificate* sub = (struct envoy_admin_v3_Certificate*)_upb_Message_New(&envoy_admin_v3_Certificate_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -113,40 +123,56 @@ UPB_INLINE envoy_admin_v3_Certificate* envoy_admin_v3_Certificate_parse_ex(const
return ret;
}
UPB_INLINE char* envoy_admin_v3_Certificate_serialize(const envoy_admin_v3_Certificate* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_Certificate_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_Certificate_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_Certificate_serialize_ex(const envoy_admin_v3_Certificate* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_Certificate_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_Certificate_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_Certificate_has_ca_cert(const envoy_admin_v3_Certificate* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_admin_v3_Certificate_clear_ca_cert(const envoy_admin_v3_Certificate* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_admin_v3_CertificateDetails* const* envoy_admin_v3_Certificate_ca_cert(const envoy_admin_v3_Certificate* msg, size_t* len) {
+ return (const envoy_admin_v3_CertificateDetails* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE bool envoy_admin_v3_Certificate_has_cert_chain(const envoy_admin_v3_Certificate* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_admin_v3_Certificate_clear_cert_chain(const envoy_admin_v3_Certificate* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_admin_v3_CertificateDetails* const* envoy_admin_v3_Certificate_cert_chain(const envoy_admin_v3_Certificate* msg, size_t* len) {
+ return (const envoy_admin_v3_CertificateDetails* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE bool envoy_admin_v3_Certificate_has_ca_cert(const envoy_admin_v3_Certificate *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_admin_v3_CertificateDetails* const* envoy_admin_v3_Certificate_ca_cert(const envoy_admin_v3_Certificate *msg, size_t *len) { return (const envoy_admin_v3_CertificateDetails* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE bool envoy_admin_v3_Certificate_has_cert_chain(const envoy_admin_v3_Certificate *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE const envoy_admin_v3_CertificateDetails* const* envoy_admin_v3_Certificate_cert_chain(const envoy_admin_v3_Certificate *msg, size_t *len) { return (const envoy_admin_v3_CertificateDetails* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
-UPB_INLINE envoy_admin_v3_CertificateDetails** envoy_admin_v3_Certificate_mutable_ca_cert(envoy_admin_v3_Certificate *msg, size_t *len) {
+UPB_INLINE envoy_admin_v3_CertificateDetails** envoy_admin_v3_Certificate_mutable_ca_cert(envoy_admin_v3_Certificate* msg, size_t* len) {
return (envoy_admin_v3_CertificateDetails**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_admin_v3_CertificateDetails** envoy_admin_v3_Certificate_resize_ca_cert(envoy_admin_v3_Certificate *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_admin_v3_CertificateDetails** envoy_admin_v3_Certificate_resize_ca_cert(envoy_admin_v3_Certificate* msg, size_t len, upb_Arena* arena) {
return (envoy_admin_v3_CertificateDetails**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_admin_v3_CertificateDetails* envoy_admin_v3_Certificate_add_ca_cert(envoy_admin_v3_Certificate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_CertificateDetails* envoy_admin_v3_Certificate_add_ca_cert(envoy_admin_v3_Certificate* msg, upb_Arena* arena) {
struct envoy_admin_v3_CertificateDetails* sub = (struct envoy_admin_v3_CertificateDetails*)_upb_Message_New(&envoy_admin_v3_CertificateDetails_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE envoy_admin_v3_CertificateDetails** envoy_admin_v3_Certificate_mutable_cert_chain(envoy_admin_v3_Certificate *msg, size_t *len) {
+UPB_INLINE envoy_admin_v3_CertificateDetails** envoy_admin_v3_Certificate_mutable_cert_chain(envoy_admin_v3_Certificate* msg, size_t* len) {
return (envoy_admin_v3_CertificateDetails**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE envoy_admin_v3_CertificateDetails** envoy_admin_v3_Certificate_resize_cert_chain(envoy_admin_v3_Certificate *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_admin_v3_CertificateDetails** envoy_admin_v3_Certificate_resize_cert_chain(envoy_admin_v3_Certificate* msg, size_t len, upb_Arena* arena) {
return (envoy_admin_v3_CertificateDetails**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_admin_v3_CertificateDetails* envoy_admin_v3_Certificate_add_cert_chain(envoy_admin_v3_Certificate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_CertificateDetails* envoy_admin_v3_Certificate_add_cert_chain(envoy_admin_v3_Certificate* msg, upb_Arena* arena) {
struct envoy_admin_v3_CertificateDetails* sub = (struct envoy_admin_v3_CertificateDetails*)_upb_Message_New(&envoy_admin_v3_CertificateDetails_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -176,63 +202,97 @@ UPB_INLINE envoy_admin_v3_CertificateDetails* envoy_admin_v3_CertificateDetails_
return ret;
}
UPB_INLINE char* envoy_admin_v3_CertificateDetails_serialize(const envoy_admin_v3_CertificateDetails* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_CertificateDetails_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_CertificateDetails_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_CertificateDetails_serialize_ex(const envoy_admin_v3_CertificateDetails* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_CertificateDetails_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_CertificateDetails_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_CertificateDetails_clear_path(const envoy_admin_v3_CertificateDetails* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_CertificateDetails_path(const envoy_admin_v3_CertificateDetails* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE void envoy_admin_v3_CertificateDetails_clear_serial_number(const envoy_admin_v3_CertificateDetails* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_CertificateDetails_serial_number(const envoy_admin_v3_CertificateDetails* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+}
+UPB_INLINE bool envoy_admin_v3_CertificateDetails_has_subject_alt_names(const envoy_admin_v3_CertificateDetails* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE void envoy_admin_v3_CertificateDetails_clear_subject_alt_names(const envoy_admin_v3_CertificateDetails* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE const envoy_admin_v3_SubjectAlternateName* const* envoy_admin_v3_CertificateDetails_subject_alt_names(const envoy_admin_v3_CertificateDetails* msg, size_t* len) {
+ return (const envoy_admin_v3_SubjectAlternateName* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len);
+}
+UPB_INLINE void envoy_admin_v3_CertificateDetails_clear_days_until_expiration(const envoy_admin_v3_CertificateDetails* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), uint64_t) = 0;
}
-UPB_INLINE bool envoy_admin_v3_CertificateDetails_has_subject_alt_names(const envoy_admin_v3_CertificateDetails *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 72)); }
-UPB_INLINE const envoy_admin_v3_SubjectAlternateName* const* envoy_admin_v3_CertificateDetails_subject_alt_names(const envoy_admin_v3_CertificateDetails *msg, size_t *len) { return (const envoy_admin_v3_SubjectAlternateName* const*)_upb_array_accessor(msg, UPB_SIZE(44, 72), len); }
UPB_INLINE uint64_t envoy_admin_v3_CertificateDetails_days_until_expiration(const envoy_admin_v3_CertificateDetails* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), uint64_t);
+}
+UPB_INLINE bool envoy_admin_v3_CertificateDetails_has_valid_from(const envoy_admin_v3_CertificateDetails* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_CertificateDetails_clear_valid_from(const envoy_admin_v3_CertificateDetails* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_CertificateDetails_has_valid_from(const envoy_admin_v3_CertificateDetails *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_CertificateDetails_valid_from(const envoy_admin_v3_CertificateDetails* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 48), const struct google_protobuf_Timestamp*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct google_protobuf_Timestamp*);
+}
+UPB_INLINE bool envoy_admin_v3_CertificateDetails_has_expiration_time(const envoy_admin_v3_CertificateDetails* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_CertificateDetails_clear_expiration_time(const envoy_admin_v3_CertificateDetails* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_CertificateDetails_has_expiration_time(const envoy_admin_v3_CertificateDetails *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_CertificateDetails_expiration_time(const envoy_admin_v3_CertificateDetails* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(36, 56), const struct google_protobuf_Timestamp*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct google_protobuf_Timestamp*);
+}
+UPB_INLINE bool envoy_admin_v3_CertificateDetails_has_ocsp_details(const envoy_admin_v3_CertificateDetails* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_admin_v3_CertificateDetails_clear_ocsp_details(const envoy_admin_v3_CertificateDetails* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_CertificateDetails_has_ocsp_details(const envoy_admin_v3_CertificateDetails *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const envoy_admin_v3_CertificateDetails_OcspDetails* envoy_admin_v3_CertificateDetails_ocsp_details(const envoy_admin_v3_CertificateDetails* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 64), const envoy_admin_v3_CertificateDetails_OcspDetails*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const envoy_admin_v3_CertificateDetails_OcspDetails*);
}
UPB_INLINE void envoy_admin_v3_CertificateDetails_set_path(envoy_admin_v3_CertificateDetails *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_admin_v3_CertificateDetails_set_serial_number(envoy_admin_v3_CertificateDetails *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(24, 32), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
}
-UPB_INLINE envoy_admin_v3_SubjectAlternateName** envoy_admin_v3_CertificateDetails_mutable_subject_alt_names(envoy_admin_v3_CertificateDetails *msg, size_t *len) {
- return (envoy_admin_v3_SubjectAlternateName**)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 72), len);
+UPB_INLINE envoy_admin_v3_SubjectAlternateName** envoy_admin_v3_CertificateDetails_mutable_subject_alt_names(envoy_admin_v3_CertificateDetails* msg, size_t* len) {
+ return (envoy_admin_v3_SubjectAlternateName**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
}
-UPB_INLINE envoy_admin_v3_SubjectAlternateName** envoy_admin_v3_CertificateDetails_resize_subject_alt_names(envoy_admin_v3_CertificateDetails *msg, size_t len, upb_Arena *arena) {
- return (envoy_admin_v3_SubjectAlternateName**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 72), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_admin_v3_SubjectAlternateName** envoy_admin_v3_CertificateDetails_resize_subject_alt_names(envoy_admin_v3_CertificateDetails* msg, size_t len, upb_Arena* arena) {
+ return (envoy_admin_v3_SubjectAlternateName**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_admin_v3_SubjectAlternateName* envoy_admin_v3_CertificateDetails_add_subject_alt_names(envoy_admin_v3_CertificateDetails *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_SubjectAlternateName* envoy_admin_v3_CertificateDetails_add_subject_alt_names(envoy_admin_v3_CertificateDetails* msg, upb_Arena* arena) {
struct envoy_admin_v3_SubjectAlternateName* sub = (struct envoy_admin_v3_SubjectAlternateName*)_upb_Message_New(&envoy_admin_v3_SubjectAlternateName_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(44, 72), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_admin_v3_CertificateDetails_set_days_until_expiration(envoy_admin_v3_CertificateDetails *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), uint64_t) = value;
}
UPB_INLINE void envoy_admin_v3_CertificateDetails_set_valid_from(envoy_admin_v3_CertificateDetails *msg, struct google_protobuf_Timestamp* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 48), struct google_protobuf_Timestamp*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct google_protobuf_Timestamp*) = value;
}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_CertificateDetails_mutable_valid_from(envoy_admin_v3_CertificateDetails *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_CertificateDetails_mutable_valid_from(envoy_admin_v3_CertificateDetails* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_CertificateDetails_valid_from(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -243,9 +303,9 @@ UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_CertificateDetails_m
}
UPB_INLINE void envoy_admin_v3_CertificateDetails_set_expiration_time(envoy_admin_v3_CertificateDetails *msg, struct google_protobuf_Timestamp* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(36, 56), struct google_protobuf_Timestamp*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct google_protobuf_Timestamp*) = value;
}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_CertificateDetails_mutable_expiration_time(envoy_admin_v3_CertificateDetails *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_CertificateDetails_mutable_expiration_time(envoy_admin_v3_CertificateDetails* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_CertificateDetails_expiration_time(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -256,9 +316,9 @@ UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_CertificateDetails_m
}
UPB_INLINE void envoy_admin_v3_CertificateDetails_set_ocsp_details(envoy_admin_v3_CertificateDetails *msg, envoy_admin_v3_CertificateDetails_OcspDetails* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 64), envoy_admin_v3_CertificateDetails_OcspDetails*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), envoy_admin_v3_CertificateDetails_OcspDetails*) = value;
}
-UPB_INLINE struct envoy_admin_v3_CertificateDetails_OcspDetails* envoy_admin_v3_CertificateDetails_mutable_ocsp_details(envoy_admin_v3_CertificateDetails *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_CertificateDetails_OcspDetails* envoy_admin_v3_CertificateDetails_mutable_ocsp_details(envoy_admin_v3_CertificateDetails* msg, upb_Arena* arena) {
struct envoy_admin_v3_CertificateDetails_OcspDetails* sub = (struct envoy_admin_v3_CertificateDetails_OcspDetails*)envoy_admin_v3_CertificateDetails_ocsp_details(msg);
if (sub == NULL) {
sub = (struct envoy_admin_v3_CertificateDetails_OcspDetails*)_upb_Message_New(&envoy_admin_v3_CertificateDetails_OcspDetails_msginit, arena);
@@ -293,17 +353,31 @@ UPB_INLINE envoy_admin_v3_CertificateDetails_OcspDetails* envoy_admin_v3_Certifi
return ret;
}
UPB_INLINE char* envoy_admin_v3_CertificateDetails_OcspDetails_serialize(const envoy_admin_v3_CertificateDetails_OcspDetails* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_CertificateDetails_OcspDetails_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_CertificateDetails_OcspDetails_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_CertificateDetails_OcspDetails_serialize_ex(const envoy_admin_v3_CertificateDetails_OcspDetails* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_CertificateDetails_OcspDetails_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_CertificateDetails_OcspDetails_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_CertificateDetails_OcspDetails_has_valid_from(const envoy_admin_v3_CertificateDetails_OcspDetails* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_CertificateDetails_OcspDetails_clear_valid_from(const envoy_admin_v3_CertificateDetails_OcspDetails* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_CertificateDetails_OcspDetails_has_valid_from(const envoy_admin_v3_CertificateDetails_OcspDetails *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_CertificateDetails_OcspDetails_valid_from(const envoy_admin_v3_CertificateDetails_OcspDetails* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Timestamp*);
}
-UPB_INLINE bool envoy_admin_v3_CertificateDetails_OcspDetails_has_expiration(const envoy_admin_v3_CertificateDetails_OcspDetails *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_admin_v3_CertificateDetails_OcspDetails_has_expiration(const envoy_admin_v3_CertificateDetails_OcspDetails* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_CertificateDetails_OcspDetails_clear_expiration(const envoy_admin_v3_CertificateDetails_OcspDetails* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_CertificateDetails_OcspDetails_expiration(const envoy_admin_v3_CertificateDetails_OcspDetails* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Timestamp*);
}
@@ -312,7 +386,7 @@ UPB_INLINE void envoy_admin_v3_CertificateDetails_OcspDetails_set_valid_from(env
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Timestamp*) = value;
}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_CertificateDetails_OcspDetails_mutable_valid_from(envoy_admin_v3_CertificateDetails_OcspDetails *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_CertificateDetails_OcspDetails_mutable_valid_from(envoy_admin_v3_CertificateDetails_OcspDetails* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_CertificateDetails_OcspDetails_valid_from(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -325,7 +399,7 @@ UPB_INLINE void envoy_admin_v3_CertificateDetails_OcspDetails_set_expiration(env
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Timestamp*) = value;
}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_CertificateDetails_OcspDetails_mutable_expiration(envoy_admin_v3_CertificateDetails_OcspDetails *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_CertificateDetails_OcspDetails_mutable_expiration(envoy_admin_v3_CertificateDetails_OcspDetails* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_CertificateDetails_OcspDetails_expiration(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -360,11 +434,15 @@ UPB_INLINE envoy_admin_v3_SubjectAlternateName* envoy_admin_v3_SubjectAlternateN
return ret;
}
UPB_INLINE char* envoy_admin_v3_SubjectAlternateName_serialize(const envoy_admin_v3_SubjectAlternateName* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_SubjectAlternateName_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_SubjectAlternateName_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_SubjectAlternateName_serialize_ex(const envoy_admin_v3_SubjectAlternateName* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_SubjectAlternateName_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_SubjectAlternateName_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_admin_v3_SubjectAlternateName_name_dns = 1,
@@ -372,23 +450,45 @@ typedef enum {
envoy_admin_v3_SubjectAlternateName_name_ip_address = 3,
envoy_admin_v3_SubjectAlternateName_name_NOT_SET = 0
} envoy_admin_v3_SubjectAlternateName_name_oneofcases;
-UPB_INLINE envoy_admin_v3_SubjectAlternateName_name_oneofcases envoy_admin_v3_SubjectAlternateName_name_case(const envoy_admin_v3_SubjectAlternateName* msg) { return (envoy_admin_v3_SubjectAlternateName_name_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool envoy_admin_v3_SubjectAlternateName_has_dns(const envoy_admin_v3_SubjectAlternateName *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE upb_StringView envoy_admin_v3_SubjectAlternateName_dns(const envoy_admin_v3_SubjectAlternateName *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_admin_v3_SubjectAlternateName_has_uri(const envoy_admin_v3_SubjectAlternateName *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 2; }
-UPB_INLINE upb_StringView envoy_admin_v3_SubjectAlternateName_uri(const envoy_admin_v3_SubjectAlternateName *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 2, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_admin_v3_SubjectAlternateName_has_ip_address(const envoy_admin_v3_SubjectAlternateName *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 3; }
-UPB_INLINE upb_StringView envoy_admin_v3_SubjectAlternateName_ip_address(const envoy_admin_v3_SubjectAlternateName *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 3, upb_StringView_FromString("")); }
+UPB_INLINE envoy_admin_v3_SubjectAlternateName_name_oneofcases envoy_admin_v3_SubjectAlternateName_name_case(const envoy_admin_v3_SubjectAlternateName* msg) {
+ return (envoy_admin_v3_SubjectAlternateName_name_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_admin_v3_SubjectAlternateName_has_dns(const envoy_admin_v3_SubjectAlternateName* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_admin_v3_SubjectAlternateName_clear_dns(const envoy_admin_v3_SubjectAlternateName* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_admin_v3_SubjectAlternateName_name_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_SubjectAlternateName_dns(const envoy_admin_v3_SubjectAlternateName* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_admin_v3_SubjectAlternateName_has_uri(const envoy_admin_v3_SubjectAlternateName* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_admin_v3_SubjectAlternateName_clear_uri(const envoy_admin_v3_SubjectAlternateName* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_admin_v3_SubjectAlternateName_name_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_SubjectAlternateName_uri(const envoy_admin_v3_SubjectAlternateName* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_admin_v3_SubjectAlternateName_has_ip_address(const envoy_admin_v3_SubjectAlternateName* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_admin_v3_SubjectAlternateName_clear_ip_address(const envoy_admin_v3_SubjectAlternateName* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_admin_v3_SubjectAlternateName_name_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_SubjectAlternateName_ip_address(const envoy_admin_v3_SubjectAlternateName* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, upb_StringView_FromString(""));
+}
UPB_INLINE void envoy_admin_v3_SubjectAlternateName_set_dns(envoy_admin_v3_SubjectAlternateName *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
UPB_INLINE void envoy_admin_v3_SubjectAlternateName_set_uri(envoy_admin_v3_SubjectAlternateName *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
UPB_INLINE void envoy_admin_v3_SubjectAlternateName_set_ip_address(envoy_admin_v3_SubjectAlternateName *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 3);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
extern const upb_MiniTable_File envoy_admin_v3_certs_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c
index 5914970889..ffb3c9537b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c
@@ -25,78 +25,80 @@ static const upb_MiniTable_Sub envoy_admin_v3_Clusters_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_admin_v3_Clusters__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_Clusters_msginit = {
&envoy_admin_v3_Clusters_submsgs[0],
&envoy_admin_v3_Clusters__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub envoy_admin_v3_ClusterStatus_submsgs[3] = {
+static const upb_MiniTable_Sub envoy_admin_v3_ClusterStatus_submsgs[4] = {
+ {.submsg = &envoy_type_v3_Percent_msginit},
{.submsg = &envoy_admin_v3_HostStatus_msginit},
- {.submsg = &envoy_config_cluster_v3_CircuitBreakers_msginit},
{.submsg = &envoy_type_v3_Percent_msginit},
+ {.submsg = &envoy_config_cluster_v3_CircuitBreakers_msginit},
};
static const upb_MiniTable_Field envoy_admin_v3_ClusterStatus__fields[7] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 40), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 64), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(24, 48), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(28, 56), 3, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 40), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 48), UPB_SIZE(3, 3), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(28, 56), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_ClusterStatus_msginit = {
&envoy_admin_v3_ClusterStatus_submsgs[0],
&envoy_admin_v3_ClusterStatus__fields[0],
- UPB_SIZE(40, 80), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(40, 72), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
-static const upb_MiniTable_Sub envoy_admin_v3_HostStatus_submsgs[5] = {
- {.submsg = &envoy_admin_v3_HostHealthStatus_msginit},
- {.submsg = &envoy_admin_v3_SimpleMetric_msginit},
+static const upb_MiniTable_Sub envoy_admin_v3_HostStatus_submsgs[6] = {
{.submsg = &envoy_config_core_v3_Address_msginit},
- {.submsg = &envoy_config_core_v3_Locality_msginit},
+ {.submsg = &envoy_admin_v3_SimpleMetric_msginit},
+ {.submsg = &envoy_admin_v3_HostHealthStatus_msginit},
{.submsg = &envoy_type_v3_Percent_msginit},
+ {.submsg = &envoy_type_v3_Percent_msginit},
+ {.submsg = &envoy_config_core_v3_Locality_msginit},
};
static const upb_MiniTable_Field envoy_admin_v3_HostStatus__fields[9] = {
- {1, UPB_SIZE(20, 32), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(40, 72), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 40), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(28, 48), 3, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(4, 4), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(12, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {7, UPB_SIZE(8, 8), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {8, UPB_SIZE(32, 56), 4, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(36, 64), 5, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 16), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 32), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 40), UPB_SIZE(3, 3), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(36, 64), UPB_SIZE(4, 4), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(40, 72), UPB_SIZE(5, 5), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_HostStatus_msginit = {
&envoy_admin_v3_HostStatus_submsgs[0],
&envoy_admin_v3_HostStatus__fields[0],
- UPB_SIZE(48, 80), 9, upb_ExtMode_NonExtendable, 9, 255, 0,
+ UPB_SIZE(48, 80), 9, kUpb_ExtMode_NonExtendable, 9, 255, 0,
};
static const upb_MiniTable_Field envoy_admin_v3_HostHealthStatus__fields[8] = {
- {1, UPB_SIZE(4, 4), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(5, 5), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(6, 6), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(7, 7), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(8, 8), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(9, 9), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {8, UPB_SIZE(10, 10), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(9, 9), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(10, 10), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(11, 11), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(12, 12), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_HostHealthStatus_msginit = {
NULL,
&envoy_admin_v3_HostHealthStatus__fields[0],
- UPB_SIZE(16, 16), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(16, 16), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable *messages_layout[4] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h
index 0b822e730e..261542aede 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h
@@ -70,25 +70,35 @@ UPB_INLINE envoy_admin_v3_Clusters* envoy_admin_v3_Clusters_parse_ex(const char*
return ret;
}
UPB_INLINE char* envoy_admin_v3_Clusters_serialize(const envoy_admin_v3_Clusters* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_Clusters_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_Clusters_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_Clusters_serialize_ex(const envoy_admin_v3_Clusters* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_Clusters_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_Clusters_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_Clusters_has_cluster_statuses(const envoy_admin_v3_Clusters* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_admin_v3_Clusters_clear_cluster_statuses(const envoy_admin_v3_Clusters* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_admin_v3_ClusterStatus* const* envoy_admin_v3_Clusters_cluster_statuses(const envoy_admin_v3_Clusters* msg, size_t* len) {
+ return (const envoy_admin_v3_ClusterStatus* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_admin_v3_Clusters_has_cluster_statuses(const envoy_admin_v3_Clusters *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_admin_v3_ClusterStatus* const* envoy_admin_v3_Clusters_cluster_statuses(const envoy_admin_v3_Clusters *msg, size_t *len) { return (const envoy_admin_v3_ClusterStatus* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_admin_v3_ClusterStatus** envoy_admin_v3_Clusters_mutable_cluster_statuses(envoy_admin_v3_Clusters *msg, size_t *len) {
+UPB_INLINE envoy_admin_v3_ClusterStatus** envoy_admin_v3_Clusters_mutable_cluster_statuses(envoy_admin_v3_Clusters* msg, size_t* len) {
return (envoy_admin_v3_ClusterStatus**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_admin_v3_ClusterStatus** envoy_admin_v3_Clusters_resize_cluster_statuses(envoy_admin_v3_Clusters *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_admin_v3_ClusterStatus** envoy_admin_v3_Clusters_resize_cluster_statuses(envoy_admin_v3_Clusters* msg, size_t len, upb_Arena* arena) {
return (envoy_admin_v3_ClusterStatus**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_admin_v3_ClusterStatus* envoy_admin_v3_Clusters_add_cluster_statuses(envoy_admin_v3_Clusters *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_ClusterStatus* envoy_admin_v3_Clusters_add_cluster_statuses(envoy_admin_v3_Clusters* msg, upb_Arena* arena) {
struct envoy_admin_v3_ClusterStatus* sub = (struct envoy_admin_v3_ClusterStatus*)_upb_Message_New(&envoy_admin_v3_ClusterStatus_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -118,34 +128,69 @@ UPB_INLINE envoy_admin_v3_ClusterStatus* envoy_admin_v3_ClusterStatus_parse_ex(c
return ret;
}
UPB_INLINE char* envoy_admin_v3_ClusterStatus_serialize(const envoy_admin_v3_ClusterStatus* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ClusterStatus_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ClusterStatus_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_ClusterStatus_serialize_ex(const envoy_admin_v3_ClusterStatus* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ClusterStatus_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ClusterStatus_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_ClusterStatus_clear_name(const envoy_admin_v3_ClusterStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_ClusterStatus_name(const envoy_admin_v3_ClusterStatus* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
+UPB_INLINE void envoy_admin_v3_ClusterStatus_clear_added_via_api(const envoy_admin_v3_ClusterStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_admin_v3_ClusterStatus_added_via_api(const envoy_admin_v3_ClusterStatus* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE bool envoy_admin_v3_ClusterStatus_has_success_rate_ejection_threshold(const envoy_admin_v3_ClusterStatus *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_admin_v3_ClusterStatus_has_success_rate_ejection_threshold(const envoy_admin_v3_ClusterStatus* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_ClusterStatus_clear_success_rate_ejection_threshold(const envoy_admin_v3_ClusterStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_Percent* envoy_admin_v3_ClusterStatus_success_rate_ejection_threshold(const envoy_admin_v3_ClusterStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct envoy_type_v3_Percent*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_type_v3_Percent*);
+}
+UPB_INLINE bool envoy_admin_v3_ClusterStatus_has_host_statuses(const envoy_admin_v3_ClusterStatus* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE void envoy_admin_v3_ClusterStatus_clear_host_statuses(const envoy_admin_v3_ClusterStatus* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE const envoy_admin_v3_HostStatus* const* envoy_admin_v3_ClusterStatus_host_statuses(const envoy_admin_v3_ClusterStatus* msg, size_t* len) {
+ return (const envoy_admin_v3_HostStatus* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
+UPB_INLINE bool envoy_admin_v3_ClusterStatus_has_local_origin_success_rate_ejection_threshold(const envoy_admin_v3_ClusterStatus* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_ClusterStatus_clear_local_origin_success_rate_ejection_threshold(const envoy_admin_v3_ClusterStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_ClusterStatus_has_host_statuses(const envoy_admin_v3_ClusterStatus *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 64)); }
-UPB_INLINE const envoy_admin_v3_HostStatus* const* envoy_admin_v3_ClusterStatus_host_statuses(const envoy_admin_v3_ClusterStatus *msg, size_t *len) { return (const envoy_admin_v3_HostStatus* const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len); }
-UPB_INLINE bool envoy_admin_v3_ClusterStatus_has_local_origin_success_rate_ejection_threshold(const envoy_admin_v3_ClusterStatus *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct envoy_type_v3_Percent* envoy_admin_v3_ClusterStatus_local_origin_success_rate_ejection_threshold(const envoy_admin_v3_ClusterStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct envoy_type_v3_Percent*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct envoy_type_v3_Percent*);
+}
+UPB_INLINE bool envoy_admin_v3_ClusterStatus_has_circuit_breakers(const envoy_admin_v3_ClusterStatus* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_admin_v3_ClusterStatus_clear_circuit_breakers(const envoy_admin_v3_ClusterStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_ClusterStatus_has_circuit_breakers(const envoy_admin_v3_ClusterStatus *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct envoy_config_cluster_v3_CircuitBreakers* envoy_admin_v3_ClusterStatus_circuit_breakers(const envoy_admin_v3_ClusterStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct envoy_config_cluster_v3_CircuitBreakers*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct envoy_config_cluster_v3_CircuitBreakers*);
+}
+UPB_INLINE void envoy_admin_v3_ClusterStatus_clear_observability_name(const envoy_admin_v3_ClusterStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_ClusterStatus_observability_name(const envoy_admin_v3_ClusterStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView);
}
UPB_INLINE void envoy_admin_v3_ClusterStatus_set_name(envoy_admin_v3_ClusterStatus *msg, upb_StringView value) {
@@ -156,9 +201,9 @@ UPB_INLINE void envoy_admin_v3_ClusterStatus_set_added_via_api(envoy_admin_v3_Cl
}
UPB_INLINE void envoy_admin_v3_ClusterStatus_set_success_rate_ejection_threshold(envoy_admin_v3_ClusterStatus *msg, struct envoy_type_v3_Percent* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct envoy_type_v3_Percent*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_type_v3_Percent*) = value;
}
-UPB_INLINE struct envoy_type_v3_Percent* envoy_admin_v3_ClusterStatus_mutable_success_rate_ejection_threshold(envoy_admin_v3_ClusterStatus *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Percent* envoy_admin_v3_ClusterStatus_mutable_success_rate_ejection_threshold(envoy_admin_v3_ClusterStatus* msg, upb_Arena* arena) {
struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_admin_v3_ClusterStatus_success_rate_ejection_threshold(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
@@ -167,24 +212,23 @@ UPB_INLINE struct envoy_type_v3_Percent* envoy_admin_v3_ClusterStatus_mutable_su
}
return sub;
}
-UPB_INLINE envoy_admin_v3_HostStatus** envoy_admin_v3_ClusterStatus_mutable_host_statuses(envoy_admin_v3_ClusterStatus *msg, size_t *len) {
- return (envoy_admin_v3_HostStatus**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
+UPB_INLINE envoy_admin_v3_HostStatus** envoy_admin_v3_ClusterStatus_mutable_host_statuses(envoy_admin_v3_ClusterStatus* msg, size_t* len) {
+ return (envoy_admin_v3_HostStatus**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE envoy_admin_v3_HostStatus** envoy_admin_v3_ClusterStatus_resize_host_statuses(envoy_admin_v3_ClusterStatus *msg, size_t len, upb_Arena *arena) {
- return (envoy_admin_v3_HostStatus**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_admin_v3_HostStatus** envoy_admin_v3_ClusterStatus_resize_host_statuses(envoy_admin_v3_ClusterStatus* msg, size_t len, upb_Arena* arena) {
+ return (envoy_admin_v3_HostStatus**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_admin_v3_HostStatus* envoy_admin_v3_ClusterStatus_add_host_statuses(envoy_admin_v3_ClusterStatus *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_HostStatus* envoy_admin_v3_ClusterStatus_add_host_statuses(envoy_admin_v3_ClusterStatus* msg, upb_Arena* arena) {
struct envoy_admin_v3_HostStatus* sub = (struct envoy_admin_v3_HostStatus*)_upb_Message_New(&envoy_admin_v3_HostStatus_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(32, 64), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_admin_v3_ClusterStatus_set_local_origin_success_rate_ejection_threshold(envoy_admin_v3_ClusterStatus *msg, struct envoy_type_v3_Percent* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct envoy_type_v3_Percent*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct envoy_type_v3_Percent*) = value;
}
-UPB_INLINE struct envoy_type_v3_Percent* envoy_admin_v3_ClusterStatus_mutable_local_origin_success_rate_ejection_threshold(envoy_admin_v3_ClusterStatus *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Percent* envoy_admin_v3_ClusterStatus_mutable_local_origin_success_rate_ejection_threshold(envoy_admin_v3_ClusterStatus* msg, upb_Arena* arena) {
struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_admin_v3_ClusterStatus_local_origin_success_rate_ejection_threshold(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
@@ -195,9 +239,9 @@ UPB_INLINE struct envoy_type_v3_Percent* envoy_admin_v3_ClusterStatus_mutable_lo
}
UPB_INLINE void envoy_admin_v3_ClusterStatus_set_circuit_breakers(envoy_admin_v3_ClusterStatus *msg, struct envoy_config_cluster_v3_CircuitBreakers* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct envoy_config_cluster_v3_CircuitBreakers*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct envoy_config_cluster_v3_CircuitBreakers*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_CircuitBreakers* envoy_admin_v3_ClusterStatus_mutable_circuit_breakers(envoy_admin_v3_ClusterStatus *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_CircuitBreakers* envoy_admin_v3_ClusterStatus_mutable_circuit_breakers(envoy_admin_v3_ClusterStatus* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_CircuitBreakers* sub = (struct envoy_config_cluster_v3_CircuitBreakers*)envoy_admin_v3_ClusterStatus_circuit_breakers(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_CircuitBreakers*)_upb_Message_New(&envoy_config_cluster_v3_CircuitBreakers_msginit, arena);
@@ -207,7 +251,7 @@ UPB_INLINE struct envoy_config_cluster_v3_CircuitBreakers* envoy_admin_v3_Cluste
return sub;
}
UPB_INLINE void envoy_admin_v3_ClusterStatus_set_observability_name(envoy_admin_v3_ClusterStatus *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView) = value;
}
/* envoy.admin.v3.HostStatus */
@@ -235,49 +279,94 @@ UPB_INLINE envoy_admin_v3_HostStatus* envoy_admin_v3_HostStatus_parse_ex(const c
return ret;
}
UPB_INLINE char* envoy_admin_v3_HostStatus_serialize(const envoy_admin_v3_HostStatus* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_HostStatus_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_HostStatus_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_HostStatus_serialize_ex(const envoy_admin_v3_HostStatus* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_HostStatus_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_HostStatus_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_HostStatus_has_address(const envoy_admin_v3_HostStatus* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_HostStatus_clear_address(const envoy_admin_v3_HostStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_HostStatus_has_address(const envoy_admin_v3_HostStatus *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_Address* envoy_admin_v3_HostStatus_address(const envoy_admin_v3_HostStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct envoy_config_core_v3_Address*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct envoy_config_core_v3_Address*);
+}
+UPB_INLINE bool envoy_admin_v3_HostStatus_has_stats(const envoy_admin_v3_HostStatus* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE void envoy_admin_v3_HostStatus_clear_stats(const envoy_admin_v3_HostStatus* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE const struct envoy_admin_v3_SimpleMetric* const* envoy_admin_v3_HostStatus_stats(const envoy_admin_v3_HostStatus* msg, size_t* len) {
+ return (const struct envoy_admin_v3_SimpleMetric* const*)_upb_array_accessor(msg, UPB_SIZE(16, 24), len);
+}
+UPB_INLINE bool envoy_admin_v3_HostStatus_has_health_status(const envoy_admin_v3_HostStatus* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_HostStatus_clear_health_status(const envoy_admin_v3_HostStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_HostStatus_has_stats(const envoy_admin_v3_HostStatus *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(40, 72)); }
-UPB_INLINE const struct envoy_admin_v3_SimpleMetric* const* envoy_admin_v3_HostStatus_stats(const envoy_admin_v3_HostStatus *msg, size_t *len) { return (const struct envoy_admin_v3_SimpleMetric* const*)_upb_array_accessor(msg, UPB_SIZE(40, 72), len); }
-UPB_INLINE bool envoy_admin_v3_HostStatus_has_health_status(const envoy_admin_v3_HostStatus *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const envoy_admin_v3_HostHealthStatus* envoy_admin_v3_HostStatus_health_status(const envoy_admin_v3_HostStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const envoy_admin_v3_HostHealthStatus*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const envoy_admin_v3_HostHealthStatus*);
+}
+UPB_INLINE bool envoy_admin_v3_HostStatus_has_success_rate(const envoy_admin_v3_HostStatus* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_admin_v3_HostStatus_clear_success_rate(const envoy_admin_v3_HostStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_HostStatus_has_success_rate(const envoy_admin_v3_HostStatus *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct envoy_type_v3_Percent* envoy_admin_v3_HostStatus_success_rate(const envoy_admin_v3_HostStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const struct envoy_type_v3_Percent*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct envoy_type_v3_Percent*);
+}
+UPB_INLINE void envoy_admin_v3_HostStatus_clear_weight(const envoy_admin_v3_HostStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_admin_v3_HostStatus_weight(const envoy_admin_v3_HostStatus* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
}
+UPB_INLINE void envoy_admin_v3_HostStatus_clear_hostname(const envoy_admin_v3_HostStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_admin_v3_HostStatus_hostname(const envoy_admin_v3_HostStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView);
+}
+UPB_INLINE void envoy_admin_v3_HostStatus_clear_priority(const envoy_admin_v3_HostStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_admin_v3_HostStatus_priority(const envoy_admin_v3_HostStatus* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint32_t);
}
-UPB_INLINE bool envoy_admin_v3_HostStatus_has_local_origin_success_rate(const envoy_admin_v3_HostStatus *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_admin_v3_HostStatus_has_local_origin_success_rate(const envoy_admin_v3_HostStatus* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_admin_v3_HostStatus_clear_local_origin_success_rate(const envoy_admin_v3_HostStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_Percent* envoy_admin_v3_HostStatus_local_origin_success_rate(const envoy_admin_v3_HostStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const struct envoy_type_v3_Percent*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const struct envoy_type_v3_Percent*);
+}
+UPB_INLINE bool envoy_admin_v3_HostStatus_has_locality(const envoy_admin_v3_HostStatus* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_admin_v3_HostStatus_clear_locality(const envoy_admin_v3_HostStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_HostStatus_has_locality(const envoy_admin_v3_HostStatus *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE const struct envoy_config_core_v3_Locality* envoy_admin_v3_HostStatus_locality(const envoy_admin_v3_HostStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const struct envoy_config_core_v3_Locality*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const struct envoy_config_core_v3_Locality*);
}
UPB_INLINE void envoy_admin_v3_HostStatus_set_address(envoy_admin_v3_HostStatus *msg, struct envoy_config_core_v3_Address* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct envoy_config_core_v3_Address*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct envoy_config_core_v3_Address*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Address* envoy_admin_v3_HostStatus_mutable_address(envoy_admin_v3_HostStatus *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Address* envoy_admin_v3_HostStatus_mutable_address(envoy_admin_v3_HostStatus* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Address* sub = (struct envoy_config_core_v3_Address*)envoy_admin_v3_HostStatus_address(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Address*)_upb_Message_New(&envoy_config_core_v3_Address_msginit, arena);
@@ -286,24 +375,23 @@ UPB_INLINE struct envoy_config_core_v3_Address* envoy_admin_v3_HostStatus_mutabl
}
return sub;
}
-UPB_INLINE struct envoy_admin_v3_SimpleMetric** envoy_admin_v3_HostStatus_mutable_stats(envoy_admin_v3_HostStatus *msg, size_t *len) {
- return (struct envoy_admin_v3_SimpleMetric**)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 72), len);
+UPB_INLINE struct envoy_admin_v3_SimpleMetric** envoy_admin_v3_HostStatus_mutable_stats(envoy_admin_v3_HostStatus* msg, size_t* len) {
+ return (struct envoy_admin_v3_SimpleMetric**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 24), len);
}
-UPB_INLINE struct envoy_admin_v3_SimpleMetric** envoy_admin_v3_HostStatus_resize_stats(envoy_admin_v3_HostStatus *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_admin_v3_SimpleMetric**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 72), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_admin_v3_SimpleMetric** envoy_admin_v3_HostStatus_resize_stats(envoy_admin_v3_HostStatus* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_admin_v3_SimpleMetric**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_admin_v3_SimpleMetric* envoy_admin_v3_HostStatus_add_stats(envoy_admin_v3_HostStatus *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_SimpleMetric* envoy_admin_v3_HostStatus_add_stats(envoy_admin_v3_HostStatus* msg, upb_Arena* arena) {
struct envoy_admin_v3_SimpleMetric* sub = (struct envoy_admin_v3_SimpleMetric*)_upb_Message_New(&envoy_admin_v3_SimpleMetric_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(40, 72), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_admin_v3_HostStatus_set_health_status(envoy_admin_v3_HostStatus *msg, envoy_admin_v3_HostHealthStatus* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), envoy_admin_v3_HostHealthStatus*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), envoy_admin_v3_HostHealthStatus*) = value;
}
-UPB_INLINE struct envoy_admin_v3_HostHealthStatus* envoy_admin_v3_HostStatus_mutable_health_status(envoy_admin_v3_HostStatus *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_HostHealthStatus* envoy_admin_v3_HostStatus_mutable_health_status(envoy_admin_v3_HostStatus* msg, upb_Arena* arena) {
struct envoy_admin_v3_HostHealthStatus* sub = (struct envoy_admin_v3_HostHealthStatus*)envoy_admin_v3_HostStatus_health_status(msg);
if (sub == NULL) {
sub = (struct envoy_admin_v3_HostHealthStatus*)_upb_Message_New(&envoy_admin_v3_HostHealthStatus_msginit, arena);
@@ -314,9 +402,9 @@ UPB_INLINE struct envoy_admin_v3_HostHealthStatus* envoy_admin_v3_HostStatus_mut
}
UPB_INLINE void envoy_admin_v3_HostStatus_set_success_rate(envoy_admin_v3_HostStatus *msg, struct envoy_type_v3_Percent* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 48), struct envoy_type_v3_Percent*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct envoy_type_v3_Percent*) = value;
}
-UPB_INLINE struct envoy_type_v3_Percent* envoy_admin_v3_HostStatus_mutable_success_rate(envoy_admin_v3_HostStatus *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Percent* envoy_admin_v3_HostStatus_mutable_success_rate(envoy_admin_v3_HostStatus* msg, upb_Arena* arena) {
struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_admin_v3_HostStatus_success_rate(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
@@ -329,16 +417,16 @@ UPB_INLINE void envoy_admin_v3_HostStatus_set_weight(envoy_admin_v3_HostStatus *
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = value;
}
UPB_INLINE void envoy_admin_v3_HostStatus_set_hostname(envoy_admin_v3_HostStatus *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView) = value;
}
UPB_INLINE void envoy_admin_v3_HostStatus_set_priority(envoy_admin_v3_HostStatus *msg, uint32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint32_t) = value;
}
UPB_INLINE void envoy_admin_v3_HostStatus_set_local_origin_success_rate(envoy_admin_v3_HostStatus *msg, struct envoy_type_v3_Percent* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 56), struct envoy_type_v3_Percent*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), struct envoy_type_v3_Percent*) = value;
}
-UPB_INLINE struct envoy_type_v3_Percent* envoy_admin_v3_HostStatus_mutable_local_origin_success_rate(envoy_admin_v3_HostStatus *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Percent* envoy_admin_v3_HostStatus_mutable_local_origin_success_rate(envoy_admin_v3_HostStatus* msg, upb_Arena* arena) {
struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_admin_v3_HostStatus_local_origin_success_rate(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
@@ -349,9 +437,9 @@ UPB_INLINE struct envoy_type_v3_Percent* envoy_admin_v3_HostStatus_mutable_local
}
UPB_INLINE void envoy_admin_v3_HostStatus_set_locality(envoy_admin_v3_HostStatus *msg, struct envoy_config_core_v3_Locality* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(36, 64), struct envoy_config_core_v3_Locality*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), struct envoy_config_core_v3_Locality*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Locality* envoy_admin_v3_HostStatus_mutable_locality(envoy_admin_v3_HostStatus *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Locality* envoy_admin_v3_HostStatus_mutable_locality(envoy_admin_v3_HostStatus* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Locality* sub = (struct envoy_config_core_v3_Locality*)envoy_admin_v3_HostStatus_locality(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Locality*)_upb_Message_New(&envoy_config_core_v3_Locality_msginit, arena);
@@ -386,60 +474,88 @@ UPB_INLINE envoy_admin_v3_HostHealthStatus* envoy_admin_v3_HostHealthStatus_pars
return ret;
}
UPB_INLINE char* envoy_admin_v3_HostHealthStatus_serialize(const envoy_admin_v3_HostHealthStatus* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_HostHealthStatus_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_HostHealthStatus_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_HostHealthStatus_serialize_ex(const envoy_admin_v3_HostHealthStatus* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_HostHealthStatus_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_HostHealthStatus_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_HostHealthStatus_clear_failed_active_health_check(const envoy_admin_v3_HostHealthStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_HostHealthStatus_failed_active_health_check(const envoy_admin_v3_HostHealthStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
+}
+UPB_INLINE void envoy_admin_v3_HostHealthStatus_clear_failed_outlier_check(const envoy_admin_v3_HostHealthStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_HostHealthStatus_failed_outlier_check(const envoy_admin_v3_HostHealthStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(5, 5), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
+}
+UPB_INLINE void envoy_admin_v3_HostHealthStatus_clear_eds_health_status(const envoy_admin_v3_HostHealthStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t envoy_admin_v3_HostHealthStatus_eds_health_status(const envoy_admin_v3_HostHealthStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_admin_v3_HostHealthStatus_clear_failed_active_degraded_check(const envoy_admin_v3_HostHealthStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_HostHealthStatus_failed_active_degraded_check(const envoy_admin_v3_HostHealthStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(6, 6), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+}
+UPB_INLINE void envoy_admin_v3_HostHealthStatus_clear_pending_dynamic_removal(const envoy_admin_v3_HostHealthStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_HostHealthStatus_pending_dynamic_removal(const envoy_admin_v3_HostHealthStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(7, 7), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool);
+}
+UPB_INLINE void envoy_admin_v3_HostHealthStatus_clear_pending_active_hc(const envoy_admin_v3_HostHealthStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(10, 10), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_HostHealthStatus_pending_active_hc(const envoy_admin_v3_HostHealthStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(10, 10), bool);
+}
+UPB_INLINE void envoy_admin_v3_HostHealthStatus_clear_excluded_via_immediate_hc_fail(const envoy_admin_v3_HostHealthStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(11, 11), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_HostHealthStatus_excluded_via_immediate_hc_fail(const envoy_admin_v3_HostHealthStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(11, 11), bool);
+}
+UPB_INLINE void envoy_admin_v3_HostHealthStatus_clear_active_hc_timeout(const envoy_admin_v3_HostHealthStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_HostHealthStatus_active_hc_timeout(const envoy_admin_v3_HostHealthStatus* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(10, 10), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool);
}
UPB_INLINE void envoy_admin_v3_HostHealthStatus_set_failed_active_health_check(envoy_admin_v3_HostHealthStatus *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = value;
}
UPB_INLINE void envoy_admin_v3_HostHealthStatus_set_failed_outlier_check(envoy_admin_v3_HostHealthStatus *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(5, 5), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
UPB_INLINE void envoy_admin_v3_HostHealthStatus_set_eds_health_status(envoy_admin_v3_HostHealthStatus *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
UPB_INLINE void envoy_admin_v3_HostHealthStatus_set_failed_active_degraded_check(envoy_admin_v3_HostHealthStatus *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(6, 6), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
}
UPB_INLINE void envoy_admin_v3_HostHealthStatus_set_pending_dynamic_removal(envoy_admin_v3_HostHealthStatus *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(7, 7), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool) = value;
}
UPB_INLINE void envoy_admin_v3_HostHealthStatus_set_pending_active_hc(envoy_admin_v3_HostHealthStatus *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(10, 10), bool) = value;
}
UPB_INLINE void envoy_admin_v3_HostHealthStatus_set_excluded_via_immediate_hc_fail(envoy_admin_v3_HostHealthStatus *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(11, 11), bool) = value;
}
UPB_INLINE void envoy_admin_v3_HostHealthStatus_set_active_hc_timeout(envoy_admin_v3_HostHealthStatus *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(10, 10), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool) = value;
}
extern const upb_MiniTable_File envoy_admin_v3_clusters_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c
index a655007bdb..129e9c561c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c
@@ -9,6 +9,7 @@
#include <stddef.h>
#include "upb/msg_internal.h"
#include "envoy/admin/v3/config_dump.upb.h"
+#include "envoy/admin/v3/config_dump_shared.upb.h"
#include "envoy/config/bootstrap/v3/bootstrap.upb.h"
#include "google/protobuf/any.upb.h"
#include "google/protobuf/timestamp.upb.h"
@@ -22,31 +23,13 @@ static const upb_MiniTable_Sub envoy_admin_v3_ConfigDump_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_admin_v3_ConfigDump__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_ConfigDump_msginit = {
&envoy_admin_v3_ConfigDump_submsgs[0],
&envoy_admin_v3_ConfigDump__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_UpdateFailureState_submsgs[2] = {
- {.submsg = &google_protobuf_Any_msginit},
- {.submsg = &google_protobuf_Timestamp_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_UpdateFailureState__fields[4] = {
- {1, UPB_SIZE(20, 40), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(24, 48), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_UpdateFailureState_msginit = {
- &envoy_admin_v3_UpdateFailureState_submsgs[0],
- &envoy_admin_v3_UpdateFailureState__fields[0],
- UPB_SIZE(32, 64), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_admin_v3_BootstrapConfigDump_submsgs[2] = {
@@ -55,383 +38,85 @@ static const upb_MiniTable_Sub envoy_admin_v3_BootstrapConfigDump_submsgs[2] = {
};
static const upb_MiniTable_Field envoy_admin_v3_BootstrapConfigDump__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_BootstrapConfigDump_msginit = {
&envoy_admin_v3_BootstrapConfigDump_submsgs[0],
&envoy_admin_v3_BootstrapConfigDump__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_ListenersConfigDump_submsgs[2] = {
- {.submsg = &envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit},
- {.submsg = &envoy_admin_v3_ListenersConfigDump_StaticListener_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_ListenersConfigDump__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_ListenersConfigDump_msginit = {
- &envoy_admin_v3_ListenersConfigDump_submsgs[0],
- &envoy_admin_v3_ListenersConfigDump__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_ListenersConfigDump_StaticListener_submsgs[2] = {
- {.submsg = &google_protobuf_Any_msginit},
- {.submsg = &google_protobuf_Timestamp_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_ListenersConfigDump_StaticListener__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_ListenersConfigDump_StaticListener_msginit = {
- &envoy_admin_v3_ListenersConfigDump_StaticListener_submsgs[0],
- &envoy_admin_v3_ListenersConfigDump_StaticListener__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_ListenersConfigDump_DynamicListenerState_submsgs[2] = {
- {.submsg = &google_protobuf_Any_msginit},
- {.submsg = &google_protobuf_Timestamp_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_ListenersConfigDump_DynamicListenerState__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit = {
- &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_submsgs[0],
- &envoy_admin_v3_ListenersConfigDump_DynamicListenerState__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_ListenersConfigDump_DynamicListener_submsgs[2] = {
- {.submsg = &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit},
- {.submsg = &envoy_admin_v3_UpdateFailureState_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_ListenersConfigDump_DynamicListener__fields[6] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 32), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 40), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(28, 48), 4, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit = {
- &envoy_admin_v3_ListenersConfigDump_DynamicListener_submsgs[0],
- &envoy_admin_v3_ListenersConfigDump_DynamicListener__fields[0],
- UPB_SIZE(32, 64), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_ClustersConfigDump_submsgs[2] = {
- {.submsg = &envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit},
- {.submsg = &envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_ClustersConfigDump__fields[4] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_ClustersConfigDump_msginit = {
- &envoy_admin_v3_ClustersConfigDump_submsgs[0],
- &envoy_admin_v3_ClustersConfigDump__fields[0],
- UPB_SIZE(24, 48), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_ClustersConfigDump_StaticCluster_submsgs[2] = {
- {.submsg = &google_protobuf_Any_msginit},
- {.submsg = &google_protobuf_Timestamp_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_ClustersConfigDump_StaticCluster__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit = {
- &envoy_admin_v3_ClustersConfigDump_StaticCluster_submsgs[0],
- &envoy_admin_v3_ClustersConfigDump_StaticCluster__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_ClustersConfigDump_DynamicCluster_submsgs[3] = {
- {.submsg = &envoy_admin_v3_UpdateFailureState_msginit},
- {.submsg = &google_protobuf_Any_msginit},
- {.submsg = &google_protobuf_Timestamp_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_ClustersConfigDump_DynamicCluster__fields[5] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 32), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 40), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit = {
- &envoy_admin_v3_ClustersConfigDump_DynamicCluster_submsgs[0],
- &envoy_admin_v3_ClustersConfigDump_DynamicCluster__fields[0],
- UPB_SIZE(32, 48), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_RoutesConfigDump_submsgs[2] = {
- {.submsg = &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit},
- {.submsg = &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_RoutesConfigDump__fields[2] = {
- {2, UPB_SIZE(0, 0), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_RoutesConfigDump_msginit = {
- &envoy_admin_v3_RoutesConfigDump_submsgs[0],
- &envoy_admin_v3_RoutesConfigDump__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 0, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_submsgs[2] = {
- {.submsg = &google_protobuf_Any_msginit},
- {.submsg = &google_protobuf_Timestamp_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_RoutesConfigDump_StaticRouteConfig__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit = {
- &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_submsgs[0],
- &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_submsgs[3] = {
- {.submsg = &envoy_admin_v3_UpdateFailureState_msginit},
- {.submsg = &google_protobuf_Any_msginit},
- {.submsg = &google_protobuf_Timestamp_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig__fields[5] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 32), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 40), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit = {
- &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_submsgs[0],
- &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig__fields[0],
- UPB_SIZE(32, 48), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_ScopedRoutesConfigDump_submsgs[2] = {
- {.submsg = &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit},
- {.submsg = &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_ScopedRoutesConfigDump__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_ScopedRoutesConfigDump_msginit = {
- &envoy_admin_v3_ScopedRoutesConfigDump_submsgs[0],
- &envoy_admin_v3_ScopedRoutesConfigDump__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_submsgs[2] = {
- {.submsg = &google_protobuf_Any_msginit},
- {.submsg = &google_protobuf_Timestamp_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit = {
- &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_submsgs[0],
- &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_submsgs[3] = {
- {.submsg = &envoy_admin_v3_UpdateFailureState_msginit},
- {.submsg = &google_protobuf_Any_msginit},
- {.submsg = &google_protobuf_Timestamp_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs__fields[6] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(32, 56), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 40), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(28, 48), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-const upb_MiniTable envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit = {
- &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_submsgs[0],
- &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs__fields[0],
- UPB_SIZE(40, 64), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_SecretsConfigDump_submsgs[2] = {
- {.submsg = &envoy_admin_v3_SecretsConfigDump_DynamicSecret_msginit},
+static const upb_MiniTable_Sub envoy_admin_v3_SecretsConfigDump_submsgs[3] = {
{.submsg = &envoy_admin_v3_SecretsConfigDump_StaticSecret_msginit},
+ {.submsg = &envoy_admin_v3_SecretsConfigDump_DynamicSecret_msginit},
+ {.submsg = &envoy_admin_v3_SecretsConfigDump_DynamicSecret_msginit},
};
static const upb_MiniTable_Field envoy_admin_v3_SecretsConfigDump__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_SecretsConfigDump_msginit = {
&envoy_admin_v3_SecretsConfigDump_submsgs[0],
&envoy_admin_v3_SecretsConfigDump__fields[0],
- UPB_SIZE(16, 24), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_admin_v3_SecretsConfigDump_DynamicSecret_submsgs[3] = {
- {.submsg = &envoy_admin_v3_UpdateFailureState_msginit},
- {.submsg = &google_protobuf_Any_msginit},
{.submsg = &google_protobuf_Timestamp_msginit},
+ {.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &envoy_admin_v3_UpdateFailureState_msginit},
};
static const upb_MiniTable_Field envoy_admin_v3_SecretsConfigDump_DynamicSecret__fields[6] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 40), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(28, 48), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(32, 56), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(24, 40), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(28, 48), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(32, 56), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_SecretsConfigDump_DynamicSecret_msginit = {
&envoy_admin_v3_SecretsConfigDump_DynamicSecret_submsgs[0],
&envoy_admin_v3_SecretsConfigDump_DynamicSecret__fields[0],
- UPB_SIZE(40, 64), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(40, 64), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable_Sub envoy_admin_v3_SecretsConfigDump_StaticSecret_submsgs[2] = {
- {.submsg = &google_protobuf_Any_msginit},
{.submsg = &google_protobuf_Timestamp_msginit},
+ {.submsg = &google_protobuf_Any_msginit},
};
static const upb_MiniTable_Field envoy_admin_v3_SecretsConfigDump_StaticSecret__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_SecretsConfigDump_StaticSecret_msginit = {
&envoy_admin_v3_SecretsConfigDump_StaticSecret_submsgs[0],
&envoy_admin_v3_SecretsConfigDump_StaticSecret__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_EndpointsConfigDump_submsgs[2] = {
- {.submsg = &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit},
- {.submsg = &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_EndpointsConfigDump__fields[2] = {
- {2, UPB_SIZE(0, 0), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_EndpointsConfigDump_msginit = {
- &envoy_admin_v3_EndpointsConfigDump_submsgs[0],
- &envoy_admin_v3_EndpointsConfigDump__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 0, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_submsgs[2] = {
- {.submsg = &google_protobuf_Any_msginit},
- {.submsg = &google_protobuf_Timestamp_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit = {
- &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_submsgs[0],
- &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_submsgs[3] = {
- {.submsg = &envoy_admin_v3_UpdateFailureState_msginit},
- {.submsg = &google_protobuf_Any_msginit},
- {.submsg = &google_protobuf_Timestamp_msginit},
-};
-
-static const upb_MiniTable_Field envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig__fields[5] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 32), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 40), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit = {
- &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_submsgs[0],
- &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig__fields[0],
- UPB_SIZE(32, 48), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
-static const upb_MiniTable *messages_layout[22] = {
+static const upb_MiniTable *messages_layout[5] = {
&envoy_admin_v3_ConfigDump_msginit,
- &envoy_admin_v3_UpdateFailureState_msginit,
&envoy_admin_v3_BootstrapConfigDump_msginit,
- &envoy_admin_v3_ListenersConfigDump_msginit,
- &envoy_admin_v3_ListenersConfigDump_StaticListener_msginit,
- &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit,
- &envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit,
- &envoy_admin_v3_ClustersConfigDump_msginit,
- &envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit,
- &envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit,
- &envoy_admin_v3_RoutesConfigDump_msginit,
- &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit,
- &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit,
- &envoy_admin_v3_ScopedRoutesConfigDump_msginit,
- &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit,
- &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit,
&envoy_admin_v3_SecretsConfigDump_msginit,
&envoy_admin_v3_SecretsConfigDump_DynamicSecret_msginit,
&envoy_admin_v3_SecretsConfigDump_StaticSecret_msginit,
- &envoy_admin_v3_EndpointsConfigDump_msginit,
- &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit,
- &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit,
};
const upb_MiniTable_File envoy_admin_v3_config_dump_proto_upb_file_layout = {
messages_layout,
NULL,
NULL,
- 22,
+ 5,
0,
0,
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h
index c94d052931..2ea4790226 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h
@@ -21,86 +21,29 @@ extern "C" {
#endif
struct envoy_admin_v3_ConfigDump;
-struct envoy_admin_v3_UpdateFailureState;
struct envoy_admin_v3_BootstrapConfigDump;
-struct envoy_admin_v3_ListenersConfigDump;
-struct envoy_admin_v3_ListenersConfigDump_StaticListener;
-struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState;
-struct envoy_admin_v3_ListenersConfigDump_DynamicListener;
-struct envoy_admin_v3_ClustersConfigDump;
-struct envoy_admin_v3_ClustersConfigDump_StaticCluster;
-struct envoy_admin_v3_ClustersConfigDump_DynamicCluster;
-struct envoy_admin_v3_RoutesConfigDump;
-struct envoy_admin_v3_RoutesConfigDump_StaticRouteConfig;
-struct envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig;
-struct envoy_admin_v3_ScopedRoutesConfigDump;
-struct envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs;
-struct envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs;
struct envoy_admin_v3_SecretsConfigDump;
struct envoy_admin_v3_SecretsConfigDump_DynamicSecret;
struct envoy_admin_v3_SecretsConfigDump_StaticSecret;
-struct envoy_admin_v3_EndpointsConfigDump;
-struct envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig;
-struct envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig;
typedef struct envoy_admin_v3_ConfigDump envoy_admin_v3_ConfigDump;
-typedef struct envoy_admin_v3_UpdateFailureState envoy_admin_v3_UpdateFailureState;
typedef struct envoy_admin_v3_BootstrapConfigDump envoy_admin_v3_BootstrapConfigDump;
-typedef struct envoy_admin_v3_ListenersConfigDump envoy_admin_v3_ListenersConfigDump;
-typedef struct envoy_admin_v3_ListenersConfigDump_StaticListener envoy_admin_v3_ListenersConfigDump_StaticListener;
-typedef struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState envoy_admin_v3_ListenersConfigDump_DynamicListenerState;
-typedef struct envoy_admin_v3_ListenersConfigDump_DynamicListener envoy_admin_v3_ListenersConfigDump_DynamicListener;
-typedef struct envoy_admin_v3_ClustersConfigDump envoy_admin_v3_ClustersConfigDump;
-typedef struct envoy_admin_v3_ClustersConfigDump_StaticCluster envoy_admin_v3_ClustersConfigDump_StaticCluster;
-typedef struct envoy_admin_v3_ClustersConfigDump_DynamicCluster envoy_admin_v3_ClustersConfigDump_DynamicCluster;
-typedef struct envoy_admin_v3_RoutesConfigDump envoy_admin_v3_RoutesConfigDump;
-typedef struct envoy_admin_v3_RoutesConfigDump_StaticRouteConfig envoy_admin_v3_RoutesConfigDump_StaticRouteConfig;
-typedef struct envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig;
-typedef struct envoy_admin_v3_ScopedRoutesConfigDump envoy_admin_v3_ScopedRoutesConfigDump;
-typedef struct envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs;
-typedef struct envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs;
typedef struct envoy_admin_v3_SecretsConfigDump envoy_admin_v3_SecretsConfigDump;
typedef struct envoy_admin_v3_SecretsConfigDump_DynamicSecret envoy_admin_v3_SecretsConfigDump_DynamicSecret;
typedef struct envoy_admin_v3_SecretsConfigDump_StaticSecret envoy_admin_v3_SecretsConfigDump_StaticSecret;
-typedef struct envoy_admin_v3_EndpointsConfigDump envoy_admin_v3_EndpointsConfigDump;
-typedef struct envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig;
-typedef struct envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig;
extern const upb_MiniTable envoy_admin_v3_ConfigDump_msginit;
-extern const upb_MiniTable envoy_admin_v3_UpdateFailureState_msginit;
extern const upb_MiniTable envoy_admin_v3_BootstrapConfigDump_msginit;
-extern const upb_MiniTable envoy_admin_v3_ListenersConfigDump_msginit;
-extern const upb_MiniTable envoy_admin_v3_ListenersConfigDump_StaticListener_msginit;
-extern const upb_MiniTable envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit;
-extern const upb_MiniTable envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit;
-extern const upb_MiniTable envoy_admin_v3_ClustersConfigDump_msginit;
-extern const upb_MiniTable envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit;
-extern const upb_MiniTable envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit;
-extern const upb_MiniTable envoy_admin_v3_RoutesConfigDump_msginit;
-extern const upb_MiniTable envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit;
-extern const upb_MiniTable envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit;
-extern const upb_MiniTable envoy_admin_v3_ScopedRoutesConfigDump_msginit;
-extern const upb_MiniTable envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit;
-extern const upb_MiniTable envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit;
extern const upb_MiniTable envoy_admin_v3_SecretsConfigDump_msginit;
extern const upb_MiniTable envoy_admin_v3_SecretsConfigDump_DynamicSecret_msginit;
extern const upb_MiniTable envoy_admin_v3_SecretsConfigDump_StaticSecret_msginit;
-extern const upb_MiniTable envoy_admin_v3_EndpointsConfigDump_msginit;
-extern const upb_MiniTable envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit;
-extern const upb_MiniTable envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit;
+struct envoy_admin_v3_UpdateFailureState;
struct envoy_config_bootstrap_v3_Bootstrap;
struct google_protobuf_Any;
struct google_protobuf_Timestamp;
+extern const upb_MiniTable envoy_admin_v3_UpdateFailureState_msginit;
extern const upb_MiniTable envoy_config_bootstrap_v3_Bootstrap_msginit;
extern const upb_MiniTable google_protobuf_Any_msginit;
extern const upb_MiniTable google_protobuf_Timestamp_msginit;
-typedef enum {
- envoy_admin_v3_UNKNOWN = 0,
- envoy_admin_v3_REQUESTED = 1,
- envoy_admin_v3_DOES_NOT_EXIST = 2,
- envoy_admin_v3_ACKED = 3,
- envoy_admin_v3_NACKED = 4
-} envoy_admin_v3_ClientResourceStatus;
-
/* envoy.admin.v3.ConfigDump */
@@ -128,108 +71,39 @@ UPB_INLINE envoy_admin_v3_ConfigDump* envoy_admin_v3_ConfigDump_parse_ex(const c
return ret;
}
UPB_INLINE char* envoy_admin_v3_ConfigDump_serialize(const envoy_admin_v3_ConfigDump* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ConfigDump_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ConfigDump_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_ConfigDump_serialize_ex(const envoy_admin_v3_ConfigDump* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ConfigDump_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ConfigDump_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_ConfigDump_has_configs(const envoy_admin_v3_ConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_admin_v3_ConfigDump_clear_configs(const envoy_admin_v3_ConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const struct google_protobuf_Any* const* envoy_admin_v3_ConfigDump_configs(const envoy_admin_v3_ConfigDump* msg, size_t* len) {
+ return (const struct google_protobuf_Any* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_admin_v3_ConfigDump_has_configs(const envoy_admin_v3_ConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const struct google_protobuf_Any* const* envoy_admin_v3_ConfigDump_configs(const envoy_admin_v3_ConfigDump *msg, size_t *len) { return (const struct google_protobuf_Any* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE struct google_protobuf_Any** envoy_admin_v3_ConfigDump_mutable_configs(envoy_admin_v3_ConfigDump *msg, size_t *len) {
+UPB_INLINE struct google_protobuf_Any** envoy_admin_v3_ConfigDump_mutable_configs(envoy_admin_v3_ConfigDump* msg, size_t* len) {
return (struct google_protobuf_Any**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE struct google_protobuf_Any** envoy_admin_v3_ConfigDump_resize_configs(envoy_admin_v3_ConfigDump *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any** envoy_admin_v3_ConfigDump_resize_configs(envoy_admin_v3_ConfigDump* msg, size_t len, upb_Arena* arena) {
return (struct google_protobuf_Any**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_ConfigDump_add_configs(envoy_admin_v3_ConfigDump *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_ConfigDump_add_configs(envoy_admin_v3_ConfigDump* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-/* envoy.admin.v3.UpdateFailureState */
-
-UPB_INLINE envoy_admin_v3_UpdateFailureState* envoy_admin_v3_UpdateFailureState_new(upb_Arena* arena) {
- return (envoy_admin_v3_UpdateFailureState*)_upb_Message_New(&envoy_admin_v3_UpdateFailureState_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_UpdateFailureState* envoy_admin_v3_UpdateFailureState_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_UpdateFailureState* ret = envoy_admin_v3_UpdateFailureState_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_UpdateFailureState_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_UpdateFailureState* envoy_admin_v3_UpdateFailureState_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_UpdateFailureState* ret = envoy_admin_v3_UpdateFailureState_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_UpdateFailureState_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_UpdateFailureState_serialize(const envoy_admin_v3_UpdateFailureState* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_UpdateFailureState_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_UpdateFailureState_serialize_ex(const envoy_admin_v3_UpdateFailureState* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_UpdateFailureState_msginit, options, arena, len);
-}
-UPB_INLINE bool envoy_admin_v3_UpdateFailureState_has_failed_configuration(const envoy_admin_v3_UpdateFailureState *msg) { return _upb_hasbit(msg, 1); }
-UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_UpdateFailureState_failed_configuration(const envoy_admin_v3_UpdateFailureState* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct google_protobuf_Any*);
-}
-UPB_INLINE bool envoy_admin_v3_UpdateFailureState_has_last_update_attempt(const envoy_admin_v3_UpdateFailureState *msg) { return _upb_hasbit(msg, 2); }
-UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_UpdateFailureState_last_update_attempt(const envoy_admin_v3_UpdateFailureState* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct google_protobuf_Timestamp*);
-}
-UPB_INLINE upb_StringView envoy_admin_v3_UpdateFailureState_details(const envoy_admin_v3_UpdateFailureState* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
-}
-UPB_INLINE upb_StringView envoy_admin_v3_UpdateFailureState_version_info(const envoy_admin_v3_UpdateFailureState* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
-}
-
-UPB_INLINE void envoy_admin_v3_UpdateFailureState_set_failed_configuration(envoy_admin_v3_UpdateFailureState *msg, struct google_protobuf_Any* value) {
- _upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct google_protobuf_Any*) = value;
-}
-UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_UpdateFailureState_mutable_failed_configuration(envoy_admin_v3_UpdateFailureState *msg, upb_Arena *arena) {
- struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_UpdateFailureState_failed_configuration(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_UpdateFailureState_set_failed_configuration(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_UpdateFailureState_set_last_update_attempt(envoy_admin_v3_UpdateFailureState *msg, struct google_protobuf_Timestamp* value) {
- _upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct google_protobuf_Timestamp*) = value;
-}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_UpdateFailureState_mutable_last_update_attempt(envoy_admin_v3_UpdateFailureState *msg, upb_Arena *arena) {
- struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_UpdateFailureState_last_update_attempt(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_UpdateFailureState_set_last_update_attempt(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_UpdateFailureState_set_details(envoy_admin_v3_UpdateFailureState *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
-}
-UPB_INLINE void envoy_admin_v3_UpdateFailureState_set_version_info(envoy_admin_v3_UpdateFailureState *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
-}
-
/* envoy.admin.v3.BootstrapConfigDump */
UPB_INLINE envoy_admin_v3_BootstrapConfigDump* envoy_admin_v3_BootstrapConfigDump_new(upb_Arena* arena) {
@@ -255,17 +129,31 @@ UPB_INLINE envoy_admin_v3_BootstrapConfigDump* envoy_admin_v3_BootstrapConfigDum
return ret;
}
UPB_INLINE char* envoy_admin_v3_BootstrapConfigDump_serialize(const envoy_admin_v3_BootstrapConfigDump* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_BootstrapConfigDump_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_BootstrapConfigDump_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_BootstrapConfigDump_serialize_ex(const envoy_admin_v3_BootstrapConfigDump* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_BootstrapConfigDump_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_BootstrapConfigDump_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_BootstrapConfigDump_has_bootstrap(const envoy_admin_v3_BootstrapConfigDump* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_BootstrapConfigDump_clear_bootstrap(const envoy_admin_v3_BootstrapConfigDump* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_BootstrapConfigDump_has_bootstrap(const envoy_admin_v3_BootstrapConfigDump *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_bootstrap_v3_Bootstrap* envoy_admin_v3_BootstrapConfigDump_bootstrap(const envoy_admin_v3_BootstrapConfigDump* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_bootstrap_v3_Bootstrap*);
}
-UPB_INLINE bool envoy_admin_v3_BootstrapConfigDump_has_last_updated(const envoy_admin_v3_BootstrapConfigDump *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_admin_v3_BootstrapConfigDump_has_last_updated(const envoy_admin_v3_BootstrapConfigDump* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_BootstrapConfigDump_clear_last_updated(const envoy_admin_v3_BootstrapConfigDump* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_BootstrapConfigDump_last_updated(const envoy_admin_v3_BootstrapConfigDump* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Timestamp*);
}
@@ -274,7 +162,7 @@ UPB_INLINE void envoy_admin_v3_BootstrapConfigDump_set_bootstrap(envoy_admin_v3_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_bootstrap_v3_Bootstrap*) = value;
}
-UPB_INLINE struct envoy_config_bootstrap_v3_Bootstrap* envoy_admin_v3_BootstrapConfigDump_mutable_bootstrap(envoy_admin_v3_BootstrapConfigDump *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_Bootstrap* envoy_admin_v3_BootstrapConfigDump_mutable_bootstrap(envoy_admin_v3_BootstrapConfigDump* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_Bootstrap* sub = (struct envoy_config_bootstrap_v3_Bootstrap*)envoy_admin_v3_BootstrapConfigDump_bootstrap(msg);
if (sub == NULL) {
sub = (struct envoy_config_bootstrap_v3_Bootstrap*)_upb_Message_New(&envoy_config_bootstrap_v3_Bootstrap_msginit, arena);
@@ -287,7 +175,7 @@ UPB_INLINE void envoy_admin_v3_BootstrapConfigDump_set_last_updated(envoy_admin_
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Timestamp*) = value;
}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_BootstrapConfigDump_mutable_last_updated(envoy_admin_v3_BootstrapConfigDump *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_BootstrapConfigDump_mutable_last_updated(envoy_admin_v3_BootstrapConfigDump* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_BootstrapConfigDump_last_updated(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -297,1035 +185,6 @@ UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_BootstrapConfigDump_
return sub;
}
-/* envoy.admin.v3.ListenersConfigDump */
-
-UPB_INLINE envoy_admin_v3_ListenersConfigDump* envoy_admin_v3_ListenersConfigDump_new(upb_Arena* arena) {
- return (envoy_admin_v3_ListenersConfigDump*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_ListenersConfigDump* envoy_admin_v3_ListenersConfigDump_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_ListenersConfigDump* ret = envoy_admin_v3_ListenersConfigDump_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_ListenersConfigDump* envoy_admin_v3_ListenersConfigDump_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_ListenersConfigDump* ret = envoy_admin_v3_ListenersConfigDump_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_serialize(const envoy_admin_v3_ListenersConfigDump* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_serialize_ex(const envoy_admin_v3_ListenersConfigDump* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_msginit, options, arena, len);
-}
-UPB_INLINE upb_StringView envoy_admin_v3_ListenersConfigDump_version_info(const envoy_admin_v3_ListenersConfigDump* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
-}
-UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_has_static_listeners(const envoy_admin_v3_ListenersConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const envoy_admin_v3_ListenersConfigDump_StaticListener* const* envoy_admin_v3_ListenersConfigDump_static_listeners(const envoy_admin_v3_ListenersConfigDump *msg, size_t *len) { return (const envoy_admin_v3_ListenersConfigDump_StaticListener* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
-UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_has_dynamic_listeners(const envoy_admin_v3_ListenersConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE const envoy_admin_v3_ListenersConfigDump_DynamicListener* const* envoy_admin_v3_ListenersConfigDump_dynamic_listeners(const envoy_admin_v3_ListenersConfigDump *msg, size_t *len) { return (const envoy_admin_v3_ListenersConfigDump_DynamicListener* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len); }
-
-UPB_INLINE void envoy_admin_v3_ListenersConfigDump_set_version_info(envoy_admin_v3_ListenersConfigDump *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
-}
-UPB_INLINE envoy_admin_v3_ListenersConfigDump_StaticListener** envoy_admin_v3_ListenersConfigDump_mutable_static_listeners(envoy_admin_v3_ListenersConfigDump *msg, size_t *len) {
- return (envoy_admin_v3_ListenersConfigDump_StaticListener**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
-}
-UPB_INLINE envoy_admin_v3_ListenersConfigDump_StaticListener** envoy_admin_v3_ListenersConfigDump_resize_static_listeners(envoy_admin_v3_ListenersConfigDump *msg, size_t len, upb_Arena *arena) {
- return (envoy_admin_v3_ListenersConfigDump_StaticListener**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
-}
-UPB_INLINE struct envoy_admin_v3_ListenersConfigDump_StaticListener* envoy_admin_v3_ListenersConfigDump_add_static_listeners(envoy_admin_v3_ListenersConfigDump *msg, upb_Arena *arena) {
- struct envoy_admin_v3_ListenersConfigDump_StaticListener* sub = (struct envoy_admin_v3_ListenersConfigDump_StaticListener*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_StaticListener_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
- if (!ok) return NULL;
- return sub;
-}
-UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListener** envoy_admin_v3_ListenersConfigDump_mutable_dynamic_listeners(envoy_admin_v3_ListenersConfigDump *msg, size_t *len) {
- return (envoy_admin_v3_ListenersConfigDump_DynamicListener**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
-}
-UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListener** envoy_admin_v3_ListenersConfigDump_resize_dynamic_listeners(envoy_admin_v3_ListenersConfigDump *msg, size_t len, upb_Arena *arena) {
- return (envoy_admin_v3_ListenersConfigDump_DynamicListener**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
-}
-UPB_INLINE struct envoy_admin_v3_ListenersConfigDump_DynamicListener* envoy_admin_v3_ListenersConfigDump_add_dynamic_listeners(envoy_admin_v3_ListenersConfigDump *msg, upb_Arena *arena) {
- struct envoy_admin_v3_ListenersConfigDump_DynamicListener* sub = (struct envoy_admin_v3_ListenersConfigDump_DynamicListener*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
- if (!ok) return NULL;
- return sub;
-}
-
-/* envoy.admin.v3.ListenersConfigDump.StaticListener */
-
-UPB_INLINE envoy_admin_v3_ListenersConfigDump_StaticListener* envoy_admin_v3_ListenersConfigDump_StaticListener_new(upb_Arena* arena) {
- return (envoy_admin_v3_ListenersConfigDump_StaticListener*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_StaticListener_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_ListenersConfigDump_StaticListener* envoy_admin_v3_ListenersConfigDump_StaticListener_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_ListenersConfigDump_StaticListener* ret = envoy_admin_v3_ListenersConfigDump_StaticListener_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_StaticListener_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_ListenersConfigDump_StaticListener* envoy_admin_v3_ListenersConfigDump_StaticListener_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_ListenersConfigDump_StaticListener* ret = envoy_admin_v3_ListenersConfigDump_StaticListener_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_StaticListener_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_StaticListener_serialize(const envoy_admin_v3_ListenersConfigDump_StaticListener* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_StaticListener_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_StaticListener_serialize_ex(const envoy_admin_v3_ListenersConfigDump_StaticListener* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_StaticListener_msginit, options, arena, len);
-}
-UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_StaticListener_has_listener(const envoy_admin_v3_ListenersConfigDump_StaticListener *msg) { return _upb_hasbit(msg, 1); }
-UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_ListenersConfigDump_StaticListener_listener(const envoy_admin_v3_ListenersConfigDump_StaticListener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Any*);
-}
-UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_StaticListener_has_last_updated(const envoy_admin_v3_ListenersConfigDump_StaticListener *msg) { return _upb_hasbit(msg, 2); }
-UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_ListenersConfigDump_StaticListener_last_updated(const envoy_admin_v3_ListenersConfigDump_StaticListener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Timestamp*);
-}
-
-UPB_INLINE void envoy_admin_v3_ListenersConfigDump_StaticListener_set_listener(envoy_admin_v3_ListenersConfigDump_StaticListener *msg, struct google_protobuf_Any* value) {
- _upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Any*) = value;
-}
-UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_ListenersConfigDump_StaticListener_mutable_listener(envoy_admin_v3_ListenersConfigDump_StaticListener *msg, upb_Arena *arena) {
- struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_ListenersConfigDump_StaticListener_listener(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ListenersConfigDump_StaticListener_set_listener(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_ListenersConfigDump_StaticListener_set_last_updated(envoy_admin_v3_ListenersConfigDump_StaticListener *msg, struct google_protobuf_Timestamp* value) {
- _upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Timestamp*) = value;
-}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_ListenersConfigDump_StaticListener_mutable_last_updated(envoy_admin_v3_ListenersConfigDump_StaticListener *msg, upb_Arena *arena) {
- struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_ListenersConfigDump_StaticListener_last_updated(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ListenersConfigDump_StaticListener_set_last_updated(msg, sub);
- }
- return sub;
-}
-
-/* envoy.admin.v3.ListenersConfigDump.DynamicListenerState */
-
-UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_new(upb_Arena* arena) {
- return (envoy_admin_v3_ListenersConfigDump_DynamicListenerState*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_ListenersConfigDump_DynamicListenerState* ret = envoy_admin_v3_ListenersConfigDump_DynamicListenerState_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_ListenersConfigDump_DynamicListenerState* ret = envoy_admin_v3_ListenersConfigDump_DynamicListenerState_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_serialize(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_serialize_ex(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, options, arena, len);
-}
-UPB_INLINE upb_StringView envoy_admin_v3_ListenersConfigDump_DynamicListenerState_version_info(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
-}
-UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_DynamicListenerState_has_listener(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState *msg) { return _upb_hasbit(msg, 1); }
-UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_listener(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Any*);
-}
-UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_DynamicListenerState_has_last_updated(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState *msg) { return _upb_hasbit(msg, 2); }
-UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_last_updated(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_Timestamp*);
-}
-
-UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListenerState_set_version_info(envoy_admin_v3_ListenersConfigDump_DynamicListenerState *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
-}
-UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListenerState_set_listener(envoy_admin_v3_ListenersConfigDump_DynamicListenerState *msg, struct google_protobuf_Any* value) {
- _upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Any*) = value;
-}
-UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_mutable_listener(envoy_admin_v3_ListenersConfigDump_DynamicListenerState *msg, upb_Arena *arena) {
- struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_ListenersConfigDump_DynamicListenerState_listener(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ListenersConfigDump_DynamicListenerState_set_listener(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListenerState_set_last_updated(envoy_admin_v3_ListenersConfigDump_DynamicListenerState *msg, struct google_protobuf_Timestamp* value) {
- _upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_Timestamp*) = value;
-}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_mutable_last_updated(envoy_admin_v3_ListenersConfigDump_DynamicListenerState *msg, upb_Arena *arena) {
- struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_ListenersConfigDump_DynamicListenerState_last_updated(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ListenersConfigDump_DynamicListenerState_set_last_updated(msg, sub);
- }
- return sub;
-}
-
-/* envoy.admin.v3.ListenersConfigDump.DynamicListener */
-
-UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListener* envoy_admin_v3_ListenersConfigDump_DynamicListener_new(upb_Arena* arena) {
- return (envoy_admin_v3_ListenersConfigDump_DynamicListener*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListener* envoy_admin_v3_ListenersConfigDump_DynamicListener_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_ListenersConfigDump_DynamicListener* ret = envoy_admin_v3_ListenersConfigDump_DynamicListener_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListener* envoy_admin_v3_ListenersConfigDump_DynamicListener_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_ListenersConfigDump_DynamicListener* ret = envoy_admin_v3_ListenersConfigDump_DynamicListener_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_DynamicListener_serialize(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_DynamicListener_serialize_ex(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit, options, arena, len);
-}
-UPB_INLINE upb_StringView envoy_admin_v3_ListenersConfigDump_DynamicListener_name(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
-}
-UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_DynamicListener_has_active_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener *msg) { return _upb_hasbit(msg, 1); }
-UPB_INLINE const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListener_active_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const envoy_admin_v3_ListenersConfigDump_DynamicListenerState*);
-}
-UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_DynamicListener_has_warming_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener *msg) { return _upb_hasbit(msg, 2); }
-UPB_INLINE const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListener_warming_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const envoy_admin_v3_ListenersConfigDump_DynamicListenerState*);
-}
-UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_DynamicListener_has_draining_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener *msg) { return _upb_hasbit(msg, 3); }
-UPB_INLINE const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListener_draining_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const envoy_admin_v3_ListenersConfigDump_DynamicListenerState*);
-}
-UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_DynamicListener_has_error_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener *msg) { return _upb_hasbit(msg, 4); }
-UPB_INLINE const envoy_admin_v3_UpdateFailureState* envoy_admin_v3_ListenersConfigDump_DynamicListener_error_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const envoy_admin_v3_UpdateFailureState*);
-}
-UPB_INLINE int32_t envoy_admin_v3_ListenersConfigDump_DynamicListener_client_status(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
-}
-
-UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_set_name(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
-}
-UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_set_active_state(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, envoy_admin_v3_ListenersConfigDump_DynamicListenerState* value) {
- _upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), envoy_admin_v3_ListenersConfigDump_DynamicListenerState*) = value;
-}
-UPB_INLINE struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListener_mutable_active_state(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, upb_Arena *arena) {
- struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState* sub = (struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState*)envoy_admin_v3_ListenersConfigDump_DynamicListener_active_state(msg);
- if (sub == NULL) {
- sub = (struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ListenersConfigDump_DynamicListener_set_active_state(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_set_warming_state(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, envoy_admin_v3_ListenersConfigDump_DynamicListenerState* value) {
- _upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 32), envoy_admin_v3_ListenersConfigDump_DynamicListenerState*) = value;
-}
-UPB_INLINE struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListener_mutable_warming_state(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, upb_Arena *arena) {
- struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState* sub = (struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState*)envoy_admin_v3_ListenersConfigDump_DynamicListener_warming_state(msg);
- if (sub == NULL) {
- sub = (struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ListenersConfigDump_DynamicListener_set_warming_state(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_set_draining_state(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, envoy_admin_v3_ListenersConfigDump_DynamicListenerState* value) {
- _upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), envoy_admin_v3_ListenersConfigDump_DynamicListenerState*) = value;
-}
-UPB_INLINE struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListener_mutable_draining_state(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, upb_Arena *arena) {
- struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState* sub = (struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState*)envoy_admin_v3_ListenersConfigDump_DynamicListener_draining_state(msg);
- if (sub == NULL) {
- sub = (struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ListenersConfigDump_DynamicListener_set_draining_state(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_set_error_state(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, envoy_admin_v3_UpdateFailureState* value) {
- _upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 48), envoy_admin_v3_UpdateFailureState*) = value;
-}
-UPB_INLINE struct envoy_admin_v3_UpdateFailureState* envoy_admin_v3_ListenersConfigDump_DynamicListener_mutable_error_state(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, upb_Arena *arena) {
- struct envoy_admin_v3_UpdateFailureState* sub = (struct envoy_admin_v3_UpdateFailureState*)envoy_admin_v3_ListenersConfigDump_DynamicListener_error_state(msg);
- if (sub == NULL) {
- sub = (struct envoy_admin_v3_UpdateFailureState*)_upb_Message_New(&envoy_admin_v3_UpdateFailureState_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ListenersConfigDump_DynamicListener_set_error_state(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_set_client_status(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
-}
-
-/* envoy.admin.v3.ClustersConfigDump */
-
-UPB_INLINE envoy_admin_v3_ClustersConfigDump* envoy_admin_v3_ClustersConfigDump_new(upb_Arena* arena) {
- return (envoy_admin_v3_ClustersConfigDump*)_upb_Message_New(&envoy_admin_v3_ClustersConfigDump_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_ClustersConfigDump* envoy_admin_v3_ClustersConfigDump_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_ClustersConfigDump* ret = envoy_admin_v3_ClustersConfigDump_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ClustersConfigDump_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_ClustersConfigDump* envoy_admin_v3_ClustersConfigDump_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_ClustersConfigDump* ret = envoy_admin_v3_ClustersConfigDump_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ClustersConfigDump_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_ClustersConfigDump_serialize(const envoy_admin_v3_ClustersConfigDump* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ClustersConfigDump_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_ClustersConfigDump_serialize_ex(const envoy_admin_v3_ClustersConfigDump* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ClustersConfigDump_msginit, options, arena, len);
-}
-UPB_INLINE upb_StringView envoy_admin_v3_ClustersConfigDump_version_info(const envoy_admin_v3_ClustersConfigDump* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
-}
-UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_has_static_clusters(const envoy_admin_v3_ClustersConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const envoy_admin_v3_ClustersConfigDump_StaticCluster* const* envoy_admin_v3_ClustersConfigDump_static_clusters(const envoy_admin_v3_ClustersConfigDump *msg, size_t *len) { return (const envoy_admin_v3_ClustersConfigDump_StaticCluster* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
-UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_has_dynamic_active_clusters(const envoy_admin_v3_ClustersConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE const envoy_admin_v3_ClustersConfigDump_DynamicCluster* const* envoy_admin_v3_ClustersConfigDump_dynamic_active_clusters(const envoy_admin_v3_ClustersConfigDump *msg, size_t *len) { return (const envoy_admin_v3_ClustersConfigDump_DynamicCluster* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len); }
-UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_has_dynamic_warming_clusters(const envoy_admin_v3_ClustersConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const envoy_admin_v3_ClustersConfigDump_DynamicCluster* const* envoy_admin_v3_ClustersConfigDump_dynamic_warming_clusters(const envoy_admin_v3_ClustersConfigDump *msg, size_t *len) { return (const envoy_admin_v3_ClustersConfigDump_DynamicCluster* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
-
-UPB_INLINE void envoy_admin_v3_ClustersConfigDump_set_version_info(envoy_admin_v3_ClustersConfigDump *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
-}
-UPB_INLINE envoy_admin_v3_ClustersConfigDump_StaticCluster** envoy_admin_v3_ClustersConfigDump_mutable_static_clusters(envoy_admin_v3_ClustersConfigDump *msg, size_t *len) {
- return (envoy_admin_v3_ClustersConfigDump_StaticCluster**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
-}
-UPB_INLINE envoy_admin_v3_ClustersConfigDump_StaticCluster** envoy_admin_v3_ClustersConfigDump_resize_static_clusters(envoy_admin_v3_ClustersConfigDump *msg, size_t len, upb_Arena *arena) {
- return (envoy_admin_v3_ClustersConfigDump_StaticCluster**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
-}
-UPB_INLINE struct envoy_admin_v3_ClustersConfigDump_StaticCluster* envoy_admin_v3_ClustersConfigDump_add_static_clusters(envoy_admin_v3_ClustersConfigDump *msg, upb_Arena *arena) {
- struct envoy_admin_v3_ClustersConfigDump_StaticCluster* sub = (struct envoy_admin_v3_ClustersConfigDump_StaticCluster*)_upb_Message_New(&envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
- if (!ok) return NULL;
- return sub;
-}
-UPB_INLINE envoy_admin_v3_ClustersConfigDump_DynamicCluster** envoy_admin_v3_ClustersConfigDump_mutable_dynamic_active_clusters(envoy_admin_v3_ClustersConfigDump *msg, size_t *len) {
- return (envoy_admin_v3_ClustersConfigDump_DynamicCluster**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
-}
-UPB_INLINE envoy_admin_v3_ClustersConfigDump_DynamicCluster** envoy_admin_v3_ClustersConfigDump_resize_dynamic_active_clusters(envoy_admin_v3_ClustersConfigDump *msg, size_t len, upb_Arena *arena) {
- return (envoy_admin_v3_ClustersConfigDump_DynamicCluster**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
-}
-UPB_INLINE struct envoy_admin_v3_ClustersConfigDump_DynamicCluster* envoy_admin_v3_ClustersConfigDump_add_dynamic_active_clusters(envoy_admin_v3_ClustersConfigDump *msg, upb_Arena *arena) {
- struct envoy_admin_v3_ClustersConfigDump_DynamicCluster* sub = (struct envoy_admin_v3_ClustersConfigDump_DynamicCluster*)_upb_Message_New(&envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
- if (!ok) return NULL;
- return sub;
-}
-UPB_INLINE envoy_admin_v3_ClustersConfigDump_DynamicCluster** envoy_admin_v3_ClustersConfigDump_mutable_dynamic_warming_clusters(envoy_admin_v3_ClustersConfigDump *msg, size_t *len) {
- return (envoy_admin_v3_ClustersConfigDump_DynamicCluster**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
-}
-UPB_INLINE envoy_admin_v3_ClustersConfigDump_DynamicCluster** envoy_admin_v3_ClustersConfigDump_resize_dynamic_warming_clusters(envoy_admin_v3_ClustersConfigDump *msg, size_t len, upb_Arena *arena) {
- return (envoy_admin_v3_ClustersConfigDump_DynamicCluster**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
-}
-UPB_INLINE struct envoy_admin_v3_ClustersConfigDump_DynamicCluster* envoy_admin_v3_ClustersConfigDump_add_dynamic_warming_clusters(envoy_admin_v3_ClustersConfigDump *msg, upb_Arena *arena) {
- struct envoy_admin_v3_ClustersConfigDump_DynamicCluster* sub = (struct envoy_admin_v3_ClustersConfigDump_DynamicCluster*)_upb_Message_New(&envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
- if (!ok) return NULL;
- return sub;
-}
-
-/* envoy.admin.v3.ClustersConfigDump.StaticCluster */
-
-UPB_INLINE envoy_admin_v3_ClustersConfigDump_StaticCluster* envoy_admin_v3_ClustersConfigDump_StaticCluster_new(upb_Arena* arena) {
- return (envoy_admin_v3_ClustersConfigDump_StaticCluster*)_upb_Message_New(&envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_ClustersConfigDump_StaticCluster* envoy_admin_v3_ClustersConfigDump_StaticCluster_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_ClustersConfigDump_StaticCluster* ret = envoy_admin_v3_ClustersConfigDump_StaticCluster_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_ClustersConfigDump_StaticCluster* envoy_admin_v3_ClustersConfigDump_StaticCluster_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_ClustersConfigDump_StaticCluster* ret = envoy_admin_v3_ClustersConfigDump_StaticCluster_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_ClustersConfigDump_StaticCluster_serialize(const envoy_admin_v3_ClustersConfigDump_StaticCluster* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_ClustersConfigDump_StaticCluster_serialize_ex(const envoy_admin_v3_ClustersConfigDump_StaticCluster* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit, options, arena, len);
-}
-UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_StaticCluster_has_cluster(const envoy_admin_v3_ClustersConfigDump_StaticCluster *msg) { return _upb_hasbit(msg, 1); }
-UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_ClustersConfigDump_StaticCluster_cluster(const envoy_admin_v3_ClustersConfigDump_StaticCluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Any*);
-}
-UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_StaticCluster_has_last_updated(const envoy_admin_v3_ClustersConfigDump_StaticCluster *msg) { return _upb_hasbit(msg, 2); }
-UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_ClustersConfigDump_StaticCluster_last_updated(const envoy_admin_v3_ClustersConfigDump_StaticCluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Timestamp*);
-}
-
-UPB_INLINE void envoy_admin_v3_ClustersConfigDump_StaticCluster_set_cluster(envoy_admin_v3_ClustersConfigDump_StaticCluster *msg, struct google_protobuf_Any* value) {
- _upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Any*) = value;
-}
-UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_ClustersConfigDump_StaticCluster_mutable_cluster(envoy_admin_v3_ClustersConfigDump_StaticCluster *msg, upb_Arena *arena) {
- struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_ClustersConfigDump_StaticCluster_cluster(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ClustersConfigDump_StaticCluster_set_cluster(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_ClustersConfigDump_StaticCluster_set_last_updated(envoy_admin_v3_ClustersConfigDump_StaticCluster *msg, struct google_protobuf_Timestamp* value) {
- _upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Timestamp*) = value;
-}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_ClustersConfigDump_StaticCluster_mutable_last_updated(envoy_admin_v3_ClustersConfigDump_StaticCluster *msg, upb_Arena *arena) {
- struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_ClustersConfigDump_StaticCluster_last_updated(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ClustersConfigDump_StaticCluster_set_last_updated(msg, sub);
- }
- return sub;
-}
-
-/* envoy.admin.v3.ClustersConfigDump.DynamicCluster */
-
-UPB_INLINE envoy_admin_v3_ClustersConfigDump_DynamicCluster* envoy_admin_v3_ClustersConfigDump_DynamicCluster_new(upb_Arena* arena) {
- return (envoy_admin_v3_ClustersConfigDump_DynamicCluster*)_upb_Message_New(&envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_ClustersConfigDump_DynamicCluster* envoy_admin_v3_ClustersConfigDump_DynamicCluster_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_ClustersConfigDump_DynamicCluster* ret = envoy_admin_v3_ClustersConfigDump_DynamicCluster_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_ClustersConfigDump_DynamicCluster* envoy_admin_v3_ClustersConfigDump_DynamicCluster_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_ClustersConfigDump_DynamicCluster* ret = envoy_admin_v3_ClustersConfigDump_DynamicCluster_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_ClustersConfigDump_DynamicCluster_serialize(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_ClustersConfigDump_DynamicCluster_serialize_ex(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit, options, arena, len);
-}
-UPB_INLINE upb_StringView envoy_admin_v3_ClustersConfigDump_DynamicCluster_version_info(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
-}
-UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_DynamicCluster_has_cluster(const envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg) { return _upb_hasbit(msg, 1); }
-UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_ClustersConfigDump_DynamicCluster_cluster(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_Any*);
-}
-UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_DynamicCluster_has_last_updated(const envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg) { return _upb_hasbit(msg, 2); }
-UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_ClustersConfigDump_DynamicCluster_last_updated(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_Timestamp*);
-}
-UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_DynamicCluster_has_error_state(const envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg) { return _upb_hasbit(msg, 3); }
-UPB_INLINE const envoy_admin_v3_UpdateFailureState* envoy_admin_v3_ClustersConfigDump_DynamicCluster_error_state(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const envoy_admin_v3_UpdateFailureState*);
-}
-UPB_INLINE int32_t envoy_admin_v3_ClustersConfigDump_DynamicCluster_client_status(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
-}
-
-UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_version_info(envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
-}
-UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_cluster(envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg, struct google_protobuf_Any* value) {
- _upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_Any*) = value;
-}
-UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_ClustersConfigDump_DynamicCluster_mutable_cluster(envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg, upb_Arena *arena) {
- struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_ClustersConfigDump_DynamicCluster_cluster(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_cluster(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_last_updated(envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg, struct google_protobuf_Timestamp* value) {
- _upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_Timestamp*) = value;
-}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_ClustersConfigDump_DynamicCluster_mutable_last_updated(envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg, upb_Arena *arena) {
- struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_ClustersConfigDump_DynamicCluster_last_updated(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_last_updated(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_error_state(envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg, envoy_admin_v3_UpdateFailureState* value) {
- _upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), envoy_admin_v3_UpdateFailureState*) = value;
-}
-UPB_INLINE struct envoy_admin_v3_UpdateFailureState* envoy_admin_v3_ClustersConfigDump_DynamicCluster_mutable_error_state(envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg, upb_Arena *arena) {
- struct envoy_admin_v3_UpdateFailureState* sub = (struct envoy_admin_v3_UpdateFailureState*)envoy_admin_v3_ClustersConfigDump_DynamicCluster_error_state(msg);
- if (sub == NULL) {
- sub = (struct envoy_admin_v3_UpdateFailureState*)_upb_Message_New(&envoy_admin_v3_UpdateFailureState_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_error_state(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_client_status(envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
-}
-
-/* envoy.admin.v3.RoutesConfigDump */
-
-UPB_INLINE envoy_admin_v3_RoutesConfigDump* envoy_admin_v3_RoutesConfigDump_new(upb_Arena* arena) {
- return (envoy_admin_v3_RoutesConfigDump*)_upb_Message_New(&envoy_admin_v3_RoutesConfigDump_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_RoutesConfigDump* envoy_admin_v3_RoutesConfigDump_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_RoutesConfigDump* ret = envoy_admin_v3_RoutesConfigDump_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_RoutesConfigDump_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_RoutesConfigDump* envoy_admin_v3_RoutesConfigDump_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_RoutesConfigDump* ret = envoy_admin_v3_RoutesConfigDump_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_RoutesConfigDump_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_RoutesConfigDump_serialize(const envoy_admin_v3_RoutesConfigDump* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_RoutesConfigDump_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_RoutesConfigDump_serialize_ex(const envoy_admin_v3_RoutesConfigDump* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_RoutesConfigDump_msginit, options, arena, len);
-}
-UPB_INLINE bool envoy_admin_v3_RoutesConfigDump_has_static_route_configs(const envoy_admin_v3_RoutesConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* const* envoy_admin_v3_RoutesConfigDump_static_route_configs(const envoy_admin_v3_RoutesConfigDump *msg, size_t *len) { return (const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE bool envoy_admin_v3_RoutesConfigDump_has_dynamic_route_configs(const envoy_admin_v3_RoutesConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* const* envoy_admin_v3_RoutesConfigDump_dynamic_route_configs(const envoy_admin_v3_RoutesConfigDump *msg, size_t *len) { return (const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
-
-UPB_INLINE envoy_admin_v3_RoutesConfigDump_StaticRouteConfig** envoy_admin_v3_RoutesConfigDump_mutable_static_route_configs(envoy_admin_v3_RoutesConfigDump *msg, size_t *len) {
- return (envoy_admin_v3_RoutesConfigDump_StaticRouteConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
-}
-UPB_INLINE envoy_admin_v3_RoutesConfigDump_StaticRouteConfig** envoy_admin_v3_RoutesConfigDump_resize_static_route_configs(envoy_admin_v3_RoutesConfigDump *msg, size_t len, upb_Arena *arena) {
- return (envoy_admin_v3_RoutesConfigDump_StaticRouteConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
-}
-UPB_INLINE struct envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* envoy_admin_v3_RoutesConfigDump_add_static_route_configs(envoy_admin_v3_RoutesConfigDump *msg, upb_Arena *arena) {
- struct envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* sub = (struct envoy_admin_v3_RoutesConfigDump_StaticRouteConfig*)_upb_Message_New(&envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
- if (!ok) return NULL;
- return sub;
-}
-UPB_INLINE envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig** envoy_admin_v3_RoutesConfigDump_mutable_dynamic_route_configs(envoy_admin_v3_RoutesConfigDump *msg, size_t *len) {
- return (envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
-}
-UPB_INLINE envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig** envoy_admin_v3_RoutesConfigDump_resize_dynamic_route_configs(envoy_admin_v3_RoutesConfigDump *msg, size_t len, upb_Arena *arena) {
- return (envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
-}
-UPB_INLINE struct envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* envoy_admin_v3_RoutesConfigDump_add_dynamic_route_configs(envoy_admin_v3_RoutesConfigDump *msg, upb_Arena *arena) {
- struct envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* sub = (struct envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig*)_upb_Message_New(&envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
- if (!ok) return NULL;
- return sub;
-}
-
-/* envoy.admin.v3.RoutesConfigDump.StaticRouteConfig */
-
-UPB_INLINE envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_new(upb_Arena* arena) {
- return (envoy_admin_v3_RoutesConfigDump_StaticRouteConfig*)_upb_Message_New(&envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* ret = envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* ret = envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_serialize(const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_serialize_ex(const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit, options, arena, len);
-}
-UPB_INLINE bool envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_has_route_config(const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig *msg) { return _upb_hasbit(msg, 1); }
-UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_route_config(const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Any*);
-}
-UPB_INLINE bool envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_has_last_updated(const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig *msg) { return _upb_hasbit(msg, 2); }
-UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_last_updated(const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Timestamp*);
-}
-
-UPB_INLINE void envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_set_route_config(envoy_admin_v3_RoutesConfigDump_StaticRouteConfig *msg, struct google_protobuf_Any* value) {
- _upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Any*) = value;
-}
-UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_mutable_route_config(envoy_admin_v3_RoutesConfigDump_StaticRouteConfig *msg, upb_Arena *arena) {
- struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_route_config(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_set_route_config(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_set_last_updated(envoy_admin_v3_RoutesConfigDump_StaticRouteConfig *msg, struct google_protobuf_Timestamp* value) {
- _upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Timestamp*) = value;
-}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_mutable_last_updated(envoy_admin_v3_RoutesConfigDump_StaticRouteConfig *msg, upb_Arena *arena) {
- struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_last_updated(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_set_last_updated(msg, sub);
- }
- return sub;
-}
-
-/* envoy.admin.v3.RoutesConfigDump.DynamicRouteConfig */
-
-UPB_INLINE envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_new(upb_Arena* arena) {
- return (envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig*)_upb_Message_New(&envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* ret = envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* ret = envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_serialize(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_serialize_ex(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit, options, arena, len);
-}
-UPB_INLINE upb_StringView envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_version_info(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
-}
-UPB_INLINE bool envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_has_route_config(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg) { return _upb_hasbit(msg, 1); }
-UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_route_config(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_Any*);
-}
-UPB_INLINE bool envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_has_last_updated(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg) { return _upb_hasbit(msg, 2); }
-UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_last_updated(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_Timestamp*);
-}
-UPB_INLINE bool envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_has_error_state(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg) { return _upb_hasbit(msg, 3); }
-UPB_INLINE const envoy_admin_v3_UpdateFailureState* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_error_state(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const envoy_admin_v3_UpdateFailureState*);
-}
-UPB_INLINE int32_t envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_client_status(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
-}
-
-UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_version_info(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
-}
-UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_route_config(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg, struct google_protobuf_Any* value) {
- _upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_Any*) = value;
-}
-UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_mutable_route_config(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg, upb_Arena *arena) {
- struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_route_config(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_route_config(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_last_updated(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg, struct google_protobuf_Timestamp* value) {
- _upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_Timestamp*) = value;
-}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_mutable_last_updated(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg, upb_Arena *arena) {
- struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_last_updated(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_last_updated(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_error_state(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg, envoy_admin_v3_UpdateFailureState* value) {
- _upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), envoy_admin_v3_UpdateFailureState*) = value;
-}
-UPB_INLINE struct envoy_admin_v3_UpdateFailureState* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_mutable_error_state(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg, upb_Arena *arena) {
- struct envoy_admin_v3_UpdateFailureState* sub = (struct envoy_admin_v3_UpdateFailureState*)envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_error_state(msg);
- if (sub == NULL) {
- sub = (struct envoy_admin_v3_UpdateFailureState*)_upb_Message_New(&envoy_admin_v3_UpdateFailureState_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_error_state(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_client_status(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
-}
-
-/* envoy.admin.v3.ScopedRoutesConfigDump */
-
-UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump* envoy_admin_v3_ScopedRoutesConfigDump_new(upb_Arena* arena) {
- return (envoy_admin_v3_ScopedRoutesConfigDump*)_upb_Message_New(&envoy_admin_v3_ScopedRoutesConfigDump_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump* envoy_admin_v3_ScopedRoutesConfigDump_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_ScopedRoutesConfigDump* ret = envoy_admin_v3_ScopedRoutesConfigDump_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ScopedRoutesConfigDump_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump* envoy_admin_v3_ScopedRoutesConfigDump_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_ScopedRoutesConfigDump* ret = envoy_admin_v3_ScopedRoutesConfigDump_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ScopedRoutesConfigDump_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_ScopedRoutesConfigDump_serialize(const envoy_admin_v3_ScopedRoutesConfigDump* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ScopedRoutesConfigDump_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_ScopedRoutesConfigDump_serialize_ex(const envoy_admin_v3_ScopedRoutesConfigDump* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ScopedRoutesConfigDump_msginit, options, arena, len);
-}
-UPB_INLINE bool envoy_admin_v3_ScopedRoutesConfigDump_has_inline_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* const* envoy_admin_v3_ScopedRoutesConfigDump_inline_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump *msg, size_t *len) { return (const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE bool envoy_admin_v3_ScopedRoutesConfigDump_has_dynamic_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* const* envoy_admin_v3_ScopedRoutesConfigDump_dynamic_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump *msg, size_t *len) { return (const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
-
-UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs** envoy_admin_v3_ScopedRoutesConfigDump_mutable_inline_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump *msg, size_t *len) {
- return (envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
-}
-UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs** envoy_admin_v3_ScopedRoutesConfigDump_resize_inline_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump *msg, size_t len, upb_Arena *arena) {
- return (envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
-}
-UPB_INLINE struct envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_add_inline_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump *msg, upb_Arena *arena) {
- struct envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* sub = (struct envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs*)_upb_Message_New(&envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
- if (!ok) return NULL;
- return sub;
-}
-UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs** envoy_admin_v3_ScopedRoutesConfigDump_mutable_dynamic_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump *msg, size_t *len) {
- return (envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
-}
-UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs** envoy_admin_v3_ScopedRoutesConfigDump_resize_dynamic_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump *msg, size_t len, upb_Arena *arena) {
- return (envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
-}
-UPB_INLINE struct envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_add_dynamic_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump *msg, upb_Arena *arena) {
- struct envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* sub = (struct envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs*)_upb_Message_New(&envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
- if (!ok) return NULL;
- return sub;
-}
-
-/* envoy.admin.v3.ScopedRoutesConfigDump.InlineScopedRouteConfigs */
-
-UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_new(upb_Arena* arena) {
- return (envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs*)_upb_Message_New(&envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* ret = envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* ret = envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_serialize(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_serialize_ex(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit, options, arena, len);
-}
-UPB_INLINE upb_StringView envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_name(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
-}
-UPB_INLINE bool envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_has_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const struct google_protobuf_Any* const* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs *msg, size_t *len) { return (const struct google_protobuf_Any* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
-UPB_INLINE bool envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_has_last_updated(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs *msg) { return _upb_hasbit(msg, 1); }
-UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_last_updated(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Timestamp*);
-}
-
-UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_set_name(envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
-}
-UPB_INLINE struct google_protobuf_Any** envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_mutable_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs *msg, size_t *len) {
- return (struct google_protobuf_Any**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
-}
-UPB_INLINE struct google_protobuf_Any** envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_resize_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs *msg, size_t len, upb_Arena *arena) {
- return (struct google_protobuf_Any**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
-}
-UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_add_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs *msg, upb_Arena *arena) {
- struct google_protobuf_Any* sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
- if (!ok) return NULL;
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_set_last_updated(envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs *msg, struct google_protobuf_Timestamp* value) {
- _upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Timestamp*) = value;
-}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_mutable_last_updated(envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs *msg, upb_Arena *arena) {
- struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_last_updated(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_set_last_updated(msg, sub);
- }
- return sub;
-}
-
-/* envoy.admin.v3.ScopedRoutesConfigDump.DynamicScopedRouteConfigs */
-
-UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_new(upb_Arena* arena) {
- return (envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs*)_upb_Message_New(&envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* ret = envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* ret = envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_serialize(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_serialize_ex(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit, options, arena, len);
-}
-UPB_INLINE upb_StringView envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_name(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
-}
-UPB_INLINE upb_StringView envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_version_info(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
-}
-UPB_INLINE bool envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_has_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 56)); }
-UPB_INLINE const struct google_protobuf_Any* const* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, size_t *len) { return (const struct google_protobuf_Any* const*)_upb_array_accessor(msg, UPB_SIZE(32, 56), len); }
-UPB_INLINE bool envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_has_last_updated(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg) { return _upb_hasbit(msg, 1); }
-UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_last_updated(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_Timestamp*);
-}
-UPB_INLINE bool envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_has_error_state(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg) { return _upb_hasbit(msg, 2); }
-UPB_INLINE const envoy_admin_v3_UpdateFailureState* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_error_state(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const envoy_admin_v3_UpdateFailureState*);
-}
-UPB_INLINE int32_t envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_client_status(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
-}
-
-UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_set_name(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
-}
-UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_set_version_info(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
-}
-UPB_INLINE struct google_protobuf_Any** envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_mutable_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, size_t *len) {
- return (struct google_protobuf_Any**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 56), len);
-}
-UPB_INLINE struct google_protobuf_Any** envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_resize_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, size_t len, upb_Arena *arena) {
- return (struct google_protobuf_Any**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 56), len, UPB_SIZE(2, 3), arena);
-}
-UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_add_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, upb_Arena *arena) {
- struct google_protobuf_Any* sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(32, 56), UPB_SIZE(2, 3), &sub, arena);
- if (!ok) return NULL;
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_set_last_updated(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, struct google_protobuf_Timestamp* value) {
- _upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_Timestamp*) = value;
-}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_mutable_last_updated(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, upb_Arena *arena) {
- struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_last_updated(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_set_last_updated(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_set_error_state(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, envoy_admin_v3_UpdateFailureState* value) {
- _upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 48), envoy_admin_v3_UpdateFailureState*) = value;
-}
-UPB_INLINE struct envoy_admin_v3_UpdateFailureState* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_mutable_error_state(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, upb_Arena *arena) {
- struct envoy_admin_v3_UpdateFailureState* sub = (struct envoy_admin_v3_UpdateFailureState*)envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_error_state(msg);
- if (sub == NULL) {
- sub = (struct envoy_admin_v3_UpdateFailureState*)_upb_Message_New(&envoy_admin_v3_UpdateFailureState_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_set_error_state(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_set_client_status(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
-}
-
/* envoy.admin.v3.SecretsConfigDump */
UPB_INLINE envoy_admin_v3_SecretsConfigDump* envoy_admin_v3_SecretsConfigDump_new(upb_Arena* arena) {
@@ -1351,55 +210,77 @@ UPB_INLINE envoy_admin_v3_SecretsConfigDump* envoy_admin_v3_SecretsConfigDump_pa
return ret;
}
UPB_INLINE char* envoy_admin_v3_SecretsConfigDump_serialize(const envoy_admin_v3_SecretsConfigDump* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_SecretsConfigDump_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_SecretsConfigDump_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_SecretsConfigDump_serialize_ex(const envoy_admin_v3_SecretsConfigDump* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_SecretsConfigDump_msginit, options, arena, len);
-}
-UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_has_static_secrets(const envoy_admin_v3_SecretsConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_admin_v3_SecretsConfigDump_StaticSecret* const* envoy_admin_v3_SecretsConfigDump_static_secrets(const envoy_admin_v3_SecretsConfigDump *msg, size_t *len) { return (const envoy_admin_v3_SecretsConfigDump_StaticSecret* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_has_dynamic_active_secrets(const envoy_admin_v3_SecretsConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE const envoy_admin_v3_SecretsConfigDump_DynamicSecret* const* envoy_admin_v3_SecretsConfigDump_dynamic_active_secrets(const envoy_admin_v3_SecretsConfigDump *msg, size_t *len) { return (const envoy_admin_v3_SecretsConfigDump_DynamicSecret* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
-UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_has_dynamic_warming_secrets(const envoy_admin_v3_SecretsConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const envoy_admin_v3_SecretsConfigDump_DynamicSecret* const* envoy_admin_v3_SecretsConfigDump_dynamic_warming_secrets(const envoy_admin_v3_SecretsConfigDump *msg, size_t *len) { return (const envoy_admin_v3_SecretsConfigDump_DynamicSecret* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_SecretsConfigDump_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_has_static_secrets(const envoy_admin_v3_SecretsConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_admin_v3_SecretsConfigDump_clear_static_secrets(const envoy_admin_v3_SecretsConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_admin_v3_SecretsConfigDump_StaticSecret* const* envoy_admin_v3_SecretsConfigDump_static_secrets(const envoy_admin_v3_SecretsConfigDump* msg, size_t* len) {
+ return (const envoy_admin_v3_SecretsConfigDump_StaticSecret* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_has_dynamic_active_secrets(const envoy_admin_v3_SecretsConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_admin_v3_SecretsConfigDump_clear_dynamic_active_secrets(const envoy_admin_v3_SecretsConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_admin_v3_SecretsConfigDump_DynamicSecret* const* envoy_admin_v3_SecretsConfigDump_dynamic_active_secrets(const envoy_admin_v3_SecretsConfigDump* msg, size_t* len) {
+ return (const envoy_admin_v3_SecretsConfigDump_DynamicSecret* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_has_dynamic_warming_secrets(const envoy_admin_v3_SecretsConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_admin_v3_SecretsConfigDump_clear_dynamic_warming_secrets(const envoy_admin_v3_SecretsConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const envoy_admin_v3_SecretsConfigDump_DynamicSecret* const* envoy_admin_v3_SecretsConfigDump_dynamic_warming_secrets(const envoy_admin_v3_SecretsConfigDump* msg, size_t* len) {
+ return (const envoy_admin_v3_SecretsConfigDump_DynamicSecret* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
-UPB_INLINE envoy_admin_v3_SecretsConfigDump_StaticSecret** envoy_admin_v3_SecretsConfigDump_mutable_static_secrets(envoy_admin_v3_SecretsConfigDump *msg, size_t *len) {
+UPB_INLINE envoy_admin_v3_SecretsConfigDump_StaticSecret** envoy_admin_v3_SecretsConfigDump_mutable_static_secrets(envoy_admin_v3_SecretsConfigDump* msg, size_t* len) {
return (envoy_admin_v3_SecretsConfigDump_StaticSecret**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_admin_v3_SecretsConfigDump_StaticSecret** envoy_admin_v3_SecretsConfigDump_resize_static_secrets(envoy_admin_v3_SecretsConfigDump *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_admin_v3_SecretsConfigDump_StaticSecret** envoy_admin_v3_SecretsConfigDump_resize_static_secrets(envoy_admin_v3_SecretsConfigDump* msg, size_t len, upb_Arena* arena) {
return (envoy_admin_v3_SecretsConfigDump_StaticSecret**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_admin_v3_SecretsConfigDump_StaticSecret* envoy_admin_v3_SecretsConfigDump_add_static_secrets(envoy_admin_v3_SecretsConfigDump *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_SecretsConfigDump_StaticSecret* envoy_admin_v3_SecretsConfigDump_add_static_secrets(envoy_admin_v3_SecretsConfigDump* msg, upb_Arena* arena) {
struct envoy_admin_v3_SecretsConfigDump_StaticSecret* sub = (struct envoy_admin_v3_SecretsConfigDump_StaticSecret*)_upb_Message_New(&envoy_admin_v3_SecretsConfigDump_StaticSecret_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE envoy_admin_v3_SecretsConfigDump_DynamicSecret** envoy_admin_v3_SecretsConfigDump_mutable_dynamic_active_secrets(envoy_admin_v3_SecretsConfigDump *msg, size_t *len) {
+UPB_INLINE envoy_admin_v3_SecretsConfigDump_DynamicSecret** envoy_admin_v3_SecretsConfigDump_mutable_dynamic_active_secrets(envoy_admin_v3_SecretsConfigDump* msg, size_t* len) {
return (envoy_admin_v3_SecretsConfigDump_DynamicSecret**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE envoy_admin_v3_SecretsConfigDump_DynamicSecret** envoy_admin_v3_SecretsConfigDump_resize_dynamic_active_secrets(envoy_admin_v3_SecretsConfigDump *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_admin_v3_SecretsConfigDump_DynamicSecret** envoy_admin_v3_SecretsConfigDump_resize_dynamic_active_secrets(envoy_admin_v3_SecretsConfigDump* msg, size_t len, upb_Arena* arena) {
return (envoy_admin_v3_SecretsConfigDump_DynamicSecret**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_admin_v3_SecretsConfigDump_DynamicSecret* envoy_admin_v3_SecretsConfigDump_add_dynamic_active_secrets(envoy_admin_v3_SecretsConfigDump *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_SecretsConfigDump_DynamicSecret* envoy_admin_v3_SecretsConfigDump_add_dynamic_active_secrets(envoy_admin_v3_SecretsConfigDump* msg, upb_Arena* arena) {
struct envoy_admin_v3_SecretsConfigDump_DynamicSecret* sub = (struct envoy_admin_v3_SecretsConfigDump_DynamicSecret*)_upb_Message_New(&envoy_admin_v3_SecretsConfigDump_DynamicSecret_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE envoy_admin_v3_SecretsConfigDump_DynamicSecret** envoy_admin_v3_SecretsConfigDump_mutable_dynamic_warming_secrets(envoy_admin_v3_SecretsConfigDump *msg, size_t *len) {
+UPB_INLINE envoy_admin_v3_SecretsConfigDump_DynamicSecret** envoy_admin_v3_SecretsConfigDump_mutable_dynamic_warming_secrets(envoy_admin_v3_SecretsConfigDump* msg, size_t* len) {
return (envoy_admin_v3_SecretsConfigDump_DynamicSecret**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE envoy_admin_v3_SecretsConfigDump_DynamicSecret** envoy_admin_v3_SecretsConfigDump_resize_dynamic_warming_secrets(envoy_admin_v3_SecretsConfigDump *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_admin_v3_SecretsConfigDump_DynamicSecret** envoy_admin_v3_SecretsConfigDump_resize_dynamic_warming_secrets(envoy_admin_v3_SecretsConfigDump* msg, size_t len, upb_Arena* arena) {
return (envoy_admin_v3_SecretsConfigDump_DynamicSecret**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_admin_v3_SecretsConfigDump_DynamicSecret* envoy_admin_v3_SecretsConfigDump_add_dynamic_warming_secrets(envoy_admin_v3_SecretsConfigDump *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_SecretsConfigDump_DynamicSecret* envoy_admin_v3_SecretsConfigDump_add_dynamic_warming_secrets(envoy_admin_v3_SecretsConfigDump* msg, upb_Arena* arena) {
struct envoy_admin_v3_SecretsConfigDump_DynamicSecret* sub = (struct envoy_admin_v3_SecretsConfigDump_DynamicSecret*)_upb_Message_New(&envoy_admin_v3_SecretsConfigDump_DynamicSecret_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1429,29 +310,57 @@ UPB_INLINE envoy_admin_v3_SecretsConfigDump_DynamicSecret* envoy_admin_v3_Secret
return ret;
}
UPB_INLINE char* envoy_admin_v3_SecretsConfigDump_DynamicSecret_serialize(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_SecretsConfigDump_DynamicSecret_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_SecretsConfigDump_DynamicSecret_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_SecretsConfigDump_DynamicSecret_serialize_ex(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_SecretsConfigDump_DynamicSecret_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_SecretsConfigDump_DynamicSecret_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_SecretsConfigDump_DynamicSecret_clear_name(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_SecretsConfigDump_DynamicSecret_name(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
}
+UPB_INLINE void envoy_admin_v3_SecretsConfigDump_DynamicSecret_clear_version_info(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_admin_v3_SecretsConfigDump_DynamicSecret_version_info(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
}
-UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_DynamicSecret_has_last_updated(const envoy_admin_v3_SecretsConfigDump_DynamicSecret *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_DynamicSecret_has_last_updated(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_SecretsConfigDump_DynamicSecret_clear_last_updated(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_SecretsConfigDump_DynamicSecret_last_updated(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_Timestamp*);
}
-UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_DynamicSecret_has_secret(const envoy_admin_v3_SecretsConfigDump_DynamicSecret *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_DynamicSecret_has_secret(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_SecretsConfigDump_DynamicSecret_clear_secret(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_SecretsConfigDump_DynamicSecret_secret(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const struct google_protobuf_Any*);
}
-UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_DynamicSecret_has_error_state(const envoy_admin_v3_SecretsConfigDump_DynamicSecret *msg) { return _upb_hasbit(msg, 3); }
-UPB_INLINE const envoy_admin_v3_UpdateFailureState* envoy_admin_v3_SecretsConfigDump_DynamicSecret_error_state(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const envoy_admin_v3_UpdateFailureState*);
+UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_DynamicSecret_has_error_state(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_admin_v3_SecretsConfigDump_DynamicSecret_clear_error_state(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct envoy_admin_v3_UpdateFailureState* envoy_admin_v3_SecretsConfigDump_DynamicSecret_error_state(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const struct envoy_admin_v3_UpdateFailureState*);
+}
+UPB_INLINE void envoy_admin_v3_SecretsConfigDump_DynamicSecret_clear_client_status(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t envoy_admin_v3_SecretsConfigDump_DynamicSecret_client_status(const envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
@@ -1467,7 +376,7 @@ UPB_INLINE void envoy_admin_v3_SecretsConfigDump_DynamicSecret_set_last_updated(
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_Timestamp*) = value;
}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_SecretsConfigDump_DynamicSecret_mutable_last_updated(envoy_admin_v3_SecretsConfigDump_DynamicSecret *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_SecretsConfigDump_DynamicSecret_mutable_last_updated(envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_SecretsConfigDump_DynamicSecret_last_updated(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -1480,7 +389,7 @@ UPB_INLINE void envoy_admin_v3_SecretsConfigDump_DynamicSecret_set_secret(envoy_
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(28, 48), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_SecretsConfigDump_DynamicSecret_mutable_secret(envoy_admin_v3_SecretsConfigDump_DynamicSecret *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_SecretsConfigDump_DynamicSecret_mutable_secret(envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_SecretsConfigDump_DynamicSecret_secret(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -1489,11 +398,11 @@ UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_SecretsConfigDump_DynamicS
}
return sub;
}
-UPB_INLINE void envoy_admin_v3_SecretsConfigDump_DynamicSecret_set_error_state(envoy_admin_v3_SecretsConfigDump_DynamicSecret *msg, envoy_admin_v3_UpdateFailureState* value) {
+UPB_INLINE void envoy_admin_v3_SecretsConfigDump_DynamicSecret_set_error_state(envoy_admin_v3_SecretsConfigDump_DynamicSecret *msg, struct envoy_admin_v3_UpdateFailureState* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 56), envoy_admin_v3_UpdateFailureState*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), struct envoy_admin_v3_UpdateFailureState*) = value;
}
-UPB_INLINE struct envoy_admin_v3_UpdateFailureState* envoy_admin_v3_SecretsConfigDump_DynamicSecret_mutable_error_state(envoy_admin_v3_SecretsConfigDump_DynamicSecret *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_UpdateFailureState* envoy_admin_v3_SecretsConfigDump_DynamicSecret_mutable_error_state(envoy_admin_v3_SecretsConfigDump_DynamicSecret* msg, upb_Arena* arena) {
struct envoy_admin_v3_UpdateFailureState* sub = (struct envoy_admin_v3_UpdateFailureState*)envoy_admin_v3_SecretsConfigDump_DynamicSecret_error_state(msg);
if (sub == NULL) {
sub = (struct envoy_admin_v3_UpdateFailureState*)_upb_Message_New(&envoy_admin_v3_UpdateFailureState_msginit, arena);
@@ -1531,20 +440,37 @@ UPB_INLINE envoy_admin_v3_SecretsConfigDump_StaticSecret* envoy_admin_v3_Secrets
return ret;
}
UPB_INLINE char* envoy_admin_v3_SecretsConfigDump_StaticSecret_serialize(const envoy_admin_v3_SecretsConfigDump_StaticSecret* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_SecretsConfigDump_StaticSecret_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_SecretsConfigDump_StaticSecret_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_SecretsConfigDump_StaticSecret_serialize_ex(const envoy_admin_v3_SecretsConfigDump_StaticSecret* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_SecretsConfigDump_StaticSecret_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_SecretsConfigDump_StaticSecret_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_SecretsConfigDump_StaticSecret_clear_name(const envoy_admin_v3_SecretsConfigDump_StaticSecret* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_SecretsConfigDump_StaticSecret_name(const envoy_admin_v3_SecretsConfigDump_StaticSecret* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_StaticSecret_has_last_updated(const envoy_admin_v3_SecretsConfigDump_StaticSecret *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_StaticSecret_has_last_updated(const envoy_admin_v3_SecretsConfigDump_StaticSecret* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_SecretsConfigDump_StaticSecret_clear_last_updated(const envoy_admin_v3_SecretsConfigDump_StaticSecret* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_SecretsConfigDump_StaticSecret_last_updated(const envoy_admin_v3_SecretsConfigDump_StaticSecret* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Timestamp*);
}
-UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_StaticSecret_has_secret(const envoy_admin_v3_SecretsConfigDump_StaticSecret *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_admin_v3_SecretsConfigDump_StaticSecret_has_secret(const envoy_admin_v3_SecretsConfigDump_StaticSecret* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_SecretsConfigDump_StaticSecret_clear_secret(const envoy_admin_v3_SecretsConfigDump_StaticSecret* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_SecretsConfigDump_StaticSecret_secret(const envoy_admin_v3_SecretsConfigDump_StaticSecret* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_Any*);
}
@@ -1556,7 +482,7 @@ UPB_INLINE void envoy_admin_v3_SecretsConfigDump_StaticSecret_set_last_updated(e
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Timestamp*) = value;
}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_SecretsConfigDump_StaticSecret_mutable_last_updated(envoy_admin_v3_SecretsConfigDump_StaticSecret *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_SecretsConfigDump_StaticSecret_mutable_last_updated(envoy_admin_v3_SecretsConfigDump_StaticSecret* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_SecretsConfigDump_StaticSecret_last_updated(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -1569,7 +495,7 @@ UPB_INLINE void envoy_admin_v3_SecretsConfigDump_StaticSecret_set_secret(envoy_a
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_SecretsConfigDump_StaticSecret_mutable_secret(envoy_admin_v3_SecretsConfigDump_StaticSecret *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_SecretsConfigDump_StaticSecret_mutable_secret(envoy_admin_v3_SecretsConfigDump_StaticSecret* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_SecretsConfigDump_StaticSecret_secret(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -1579,232 +505,6 @@ UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_SecretsConfigDump_StaticSe
return sub;
}
-/* envoy.admin.v3.EndpointsConfigDump */
-
-UPB_INLINE envoy_admin_v3_EndpointsConfigDump* envoy_admin_v3_EndpointsConfigDump_new(upb_Arena* arena) {
- return (envoy_admin_v3_EndpointsConfigDump*)_upb_Message_New(&envoy_admin_v3_EndpointsConfigDump_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_EndpointsConfigDump* envoy_admin_v3_EndpointsConfigDump_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_EndpointsConfigDump* ret = envoy_admin_v3_EndpointsConfigDump_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_EndpointsConfigDump_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_EndpointsConfigDump* envoy_admin_v3_EndpointsConfigDump_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_EndpointsConfigDump* ret = envoy_admin_v3_EndpointsConfigDump_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_EndpointsConfigDump_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_EndpointsConfigDump_serialize(const envoy_admin_v3_EndpointsConfigDump* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_EndpointsConfigDump_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_EndpointsConfigDump_serialize_ex(const envoy_admin_v3_EndpointsConfigDump* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_EndpointsConfigDump_msginit, options, arena, len);
-}
-UPB_INLINE bool envoy_admin_v3_EndpointsConfigDump_has_static_endpoint_configs(const envoy_admin_v3_EndpointsConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* const* envoy_admin_v3_EndpointsConfigDump_static_endpoint_configs(const envoy_admin_v3_EndpointsConfigDump *msg, size_t *len) { return (const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE bool envoy_admin_v3_EndpointsConfigDump_has_dynamic_endpoint_configs(const envoy_admin_v3_EndpointsConfigDump *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* const* envoy_admin_v3_EndpointsConfigDump_dynamic_endpoint_configs(const envoy_admin_v3_EndpointsConfigDump *msg, size_t *len) { return (const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
-
-UPB_INLINE envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig** envoy_admin_v3_EndpointsConfigDump_mutable_static_endpoint_configs(envoy_admin_v3_EndpointsConfigDump *msg, size_t *len) {
- return (envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
-}
-UPB_INLINE envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig** envoy_admin_v3_EndpointsConfigDump_resize_static_endpoint_configs(envoy_admin_v3_EndpointsConfigDump *msg, size_t len, upb_Arena *arena) {
- return (envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
-}
-UPB_INLINE struct envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* envoy_admin_v3_EndpointsConfigDump_add_static_endpoint_configs(envoy_admin_v3_EndpointsConfigDump *msg, upb_Arena *arena) {
- struct envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* sub = (struct envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig*)_upb_Message_New(&envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
- if (!ok) return NULL;
- return sub;
-}
-UPB_INLINE envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig** envoy_admin_v3_EndpointsConfigDump_mutable_dynamic_endpoint_configs(envoy_admin_v3_EndpointsConfigDump *msg, size_t *len) {
- return (envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
-}
-UPB_INLINE envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig** envoy_admin_v3_EndpointsConfigDump_resize_dynamic_endpoint_configs(envoy_admin_v3_EndpointsConfigDump *msg, size_t len, upb_Arena *arena) {
- return (envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
-}
-UPB_INLINE struct envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* envoy_admin_v3_EndpointsConfigDump_add_dynamic_endpoint_configs(envoy_admin_v3_EndpointsConfigDump *msg, upb_Arena *arena) {
- struct envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* sub = (struct envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig*)_upb_Message_New(&envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
- if (!ok) return NULL;
- return sub;
-}
-
-/* envoy.admin.v3.EndpointsConfigDump.StaticEndpointConfig */
-
-UPB_INLINE envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_new(upb_Arena* arena) {
- return (envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig*)_upb_Message_New(&envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* ret = envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* ret = envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_serialize(const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_serialize_ex(const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit, options, arena, len);
-}
-UPB_INLINE bool envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_has_endpoint_config(const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig *msg) { return _upb_hasbit(msg, 1); }
-UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_endpoint_config(const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Any*);
-}
-UPB_INLINE bool envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_has_last_updated(const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig *msg) { return _upb_hasbit(msg, 2); }
-UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_last_updated(const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Timestamp*);
-}
-
-UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_set_endpoint_config(envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig *msg, struct google_protobuf_Any* value) {
- _upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Any*) = value;
-}
-UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_mutable_endpoint_config(envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig *msg, upb_Arena *arena) {
- struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_endpoint_config(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_set_endpoint_config(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_set_last_updated(envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig *msg, struct google_protobuf_Timestamp* value) {
- _upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Timestamp*) = value;
-}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_mutable_last_updated(envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig *msg, upb_Arena *arena) {
- struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_last_updated(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_set_last_updated(msg, sub);
- }
- return sub;
-}
-
-/* envoy.admin.v3.EndpointsConfigDump.DynamicEndpointConfig */
-
-UPB_INLINE envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_new(upb_Arena* arena) {
- return (envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig*)_upb_Message_New(&envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit, arena);
-}
-UPB_INLINE envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* ret = envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* ret = envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_serialize(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_serialize_ex(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit, options, arena, len);
-}
-UPB_INLINE upb_StringView envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_version_info(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
-}
-UPB_INLINE bool envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_has_endpoint_config(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg) { return _upb_hasbit(msg, 1); }
-UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_endpoint_config(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_Any*);
-}
-UPB_INLINE bool envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_has_last_updated(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg) { return _upb_hasbit(msg, 2); }
-UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_last_updated(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_Timestamp*);
-}
-UPB_INLINE bool envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_has_error_state(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg) { return _upb_hasbit(msg, 3); }
-UPB_INLINE const envoy_admin_v3_UpdateFailureState* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_error_state(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const envoy_admin_v3_UpdateFailureState*);
-}
-UPB_INLINE int32_t envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_client_status(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
-}
-
-UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_version_info(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
-}
-UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_endpoint_config(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg, struct google_protobuf_Any* value) {
- _upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_Any*) = value;
-}
-UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_mutable_endpoint_config(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg, upb_Arena *arena) {
- struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_endpoint_config(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_endpoint_config(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_last_updated(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg, struct google_protobuf_Timestamp* value) {
- _upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_Timestamp*) = value;
-}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_mutable_last_updated(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg, upb_Arena *arena) {
- struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_last_updated(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_last_updated(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_error_state(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg, envoy_admin_v3_UpdateFailureState* value) {
- _upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), envoy_admin_v3_UpdateFailureState*) = value;
-}
-UPB_INLINE struct envoy_admin_v3_UpdateFailureState* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_mutable_error_state(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg, upb_Arena *arena) {
- struct envoy_admin_v3_UpdateFailureState* sub = (struct envoy_admin_v3_UpdateFailureState*)envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_error_state(msg);
- if (sub == NULL) {
- sub = (struct envoy_admin_v3_UpdateFailureState*)_upb_Message_New(&envoy_admin_v3_UpdateFailureState_msginit, arena);
- if (!sub) return NULL;
- envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_error_state(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_client_status(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
-}
-
extern const upb_MiniTable_File envoy_admin_v3_config_dump_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c
new file mode 100644
index 0000000000..d51050c82a
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c
@@ -0,0 +1,352 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/admin/v3/config_dump_shared.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#include <stddef.h>
+#include "upb/msg_internal.h"
+#include "envoy/admin/v3/config_dump_shared.upb.h"
+#include "google/protobuf/any.upb.h"
+#include "google/protobuf/timestamp.upb.h"
+#include "udpa/annotations/status.upb.h"
+#include "udpa/annotations/versioning.upb.h"
+
+#include "upb/port_def.inc"
+
+static const upb_MiniTable_Sub envoy_admin_v3_UpdateFailureState_submsgs[2] = {
+ {.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_UpdateFailureState__fields[4] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_UpdateFailureState_msginit = {
+ &envoy_admin_v3_UpdateFailureState_submsgs[0],
+ &envoy_admin_v3_UpdateFailureState__fields[0],
+ UPB_SIZE(32, 56), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_ListenersConfigDump_submsgs[2] = {
+ {.submsg = &envoy_admin_v3_ListenersConfigDump_StaticListener_msginit},
+ {.submsg = &envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_ListenersConfigDump__fields[3] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_ListenersConfigDump_msginit = {
+ &envoy_admin_v3_ListenersConfigDump_submsgs[0],
+ &envoy_admin_v3_ListenersConfigDump__fields[0],
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_ListenersConfigDump_StaticListener_submsgs[2] = {
+ {.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_ListenersConfigDump_StaticListener__fields[2] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_ListenersConfigDump_StaticListener_msginit = {
+ &envoy_admin_v3_ListenersConfigDump_StaticListener_submsgs[0],
+ &envoy_admin_v3_ListenersConfigDump_StaticListener__fields[0],
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_ListenersConfigDump_DynamicListenerState_submsgs[2] = {
+ {.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_ListenersConfigDump_DynamicListenerState__fields[3] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit = {
+ &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_submsgs[0],
+ &envoy_admin_v3_ListenersConfigDump_DynamicListenerState__fields[0],
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_ListenersConfigDump_DynamicListener_submsgs[4] = {
+ {.submsg = &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit},
+ {.submsg = &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit},
+ {.submsg = &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit},
+ {.submsg = &envoy_admin_v3_UpdateFailureState_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_ListenersConfigDump_DynamicListener__fields[6] = {
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 40), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(28, 48), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit = {
+ &envoy_admin_v3_ListenersConfigDump_DynamicListener_submsgs[0],
+ &envoy_admin_v3_ListenersConfigDump_DynamicListener__fields[0],
+ UPB_SIZE(32, 56), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_ClustersConfigDump_submsgs[3] = {
+ {.submsg = &envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit},
+ {.submsg = &envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit},
+ {.submsg = &envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_ClustersConfigDump__fields[4] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_ClustersConfigDump_msginit = {
+ &envoy_admin_v3_ClustersConfigDump_submsgs[0],
+ &envoy_admin_v3_ClustersConfigDump__fields[0],
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_ClustersConfigDump_StaticCluster_submsgs[2] = {
+ {.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_ClustersConfigDump_StaticCluster__fields[2] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit = {
+ &envoy_admin_v3_ClustersConfigDump_StaticCluster_submsgs[0],
+ &envoy_admin_v3_ClustersConfigDump_StaticCluster__fields[0],
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_ClustersConfigDump_DynamicCluster_submsgs[3] = {
+ {.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
+ {.submsg = &envoy_admin_v3_UpdateFailureState_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_ClustersConfigDump_DynamicCluster__fields[5] = {
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 40), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit = {
+ &envoy_admin_v3_ClustersConfigDump_DynamicCluster_submsgs[0],
+ &envoy_admin_v3_ClustersConfigDump_DynamicCluster__fields[0],
+ UPB_SIZE(32, 48), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_RoutesConfigDump_submsgs[2] = {
+ {.submsg = &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit},
+ {.submsg = &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_RoutesConfigDump__fields[2] = {
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_RoutesConfigDump_msginit = {
+ &envoy_admin_v3_RoutesConfigDump_submsgs[0],
+ &envoy_admin_v3_RoutesConfigDump__fields[0],
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 0, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_submsgs[2] = {
+ {.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_RoutesConfigDump_StaticRouteConfig__fields[2] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit = {
+ &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_submsgs[0],
+ &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig__fields[0],
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_submsgs[3] = {
+ {.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
+ {.submsg = &envoy_admin_v3_UpdateFailureState_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig__fields[5] = {
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 40), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit = {
+ &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_submsgs[0],
+ &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig__fields[0],
+ UPB_SIZE(32, 48), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_ScopedRoutesConfigDump_submsgs[2] = {
+ {.submsg = &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit},
+ {.submsg = &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_ScopedRoutesConfigDump__fields[2] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_ScopedRoutesConfigDump_msginit = {
+ &envoy_admin_v3_ScopedRoutesConfigDump_submsgs[0],
+ &envoy_admin_v3_ScopedRoutesConfigDump__fields[0],
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_submsgs[2] = {
+ {.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs__fields[3] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit = {
+ &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_submsgs[0],
+ &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs__fields[0],
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_submsgs[3] = {
+ {.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
+ {.submsg = &envoy_admin_v3_UpdateFailureState_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs__fields[6] = {
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(24, 40), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(28, 48), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(32, 56), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit = {
+ &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_submsgs[0],
+ &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs__fields[0],
+ UPB_SIZE(40, 64), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_EndpointsConfigDump_submsgs[2] = {
+ {.submsg = &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit},
+ {.submsg = &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_EndpointsConfigDump__fields[2] = {
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_EndpointsConfigDump_msginit = {
+ &envoy_admin_v3_EndpointsConfigDump_submsgs[0],
+ &envoy_admin_v3_EndpointsConfigDump__fields[0],
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 0, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_submsgs[2] = {
+ {.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig__fields[2] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit = {
+ &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_submsgs[0],
+ &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig__fields[0],
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_submsgs[3] = {
+ {.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
+ {.submsg = &envoy_admin_v3_UpdateFailureState_msginit},
+};
+
+static const upb_MiniTable_Field envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig__fields[5] = {
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 40), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit = {
+ &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_submsgs[0],
+ &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig__fields[0],
+ UPB_SIZE(32, 48), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
+};
+
+static const upb_MiniTable *messages_layout[17] = {
+ &envoy_admin_v3_UpdateFailureState_msginit,
+ &envoy_admin_v3_ListenersConfigDump_msginit,
+ &envoy_admin_v3_ListenersConfigDump_StaticListener_msginit,
+ &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit,
+ &envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit,
+ &envoy_admin_v3_ClustersConfigDump_msginit,
+ &envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit,
+ &envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit,
+ &envoy_admin_v3_RoutesConfigDump_msginit,
+ &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit,
+ &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit,
+ &envoy_admin_v3_ScopedRoutesConfigDump_msginit,
+ &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit,
+ &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit,
+ &envoy_admin_v3_EndpointsConfigDump_msginit,
+ &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit,
+ &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit,
+};
+
+const upb_MiniTable_File envoy_admin_v3_config_dump_shared_proto_upb_file_layout = {
+ messages_layout,
+ NULL,
+ NULL,
+ 17,
+ 0,
+ 0,
+};
+
+#include "upb/port_undef.inc"
+
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h
new file mode 100644
index 0000000000..31f51d3afd
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h
@@ -0,0 +1,1768 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/admin/v3/config_dump_shared.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#ifndef ENVOY_ADMIN_V3_CONFIG_DUMP_SHARED_PROTO_UPB_H_
+#define ENVOY_ADMIN_V3_CONFIG_DUMP_SHARED_PROTO_UPB_H_
+
+#include "upb/msg_internal.h"
+#include "upb/decode.h"
+#include "upb/decode_fast.h"
+#include "upb/encode.h"
+
+#include "upb/port_def.inc"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct envoy_admin_v3_UpdateFailureState;
+struct envoy_admin_v3_ListenersConfigDump;
+struct envoy_admin_v3_ListenersConfigDump_StaticListener;
+struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState;
+struct envoy_admin_v3_ListenersConfigDump_DynamicListener;
+struct envoy_admin_v3_ClustersConfigDump;
+struct envoy_admin_v3_ClustersConfigDump_StaticCluster;
+struct envoy_admin_v3_ClustersConfigDump_DynamicCluster;
+struct envoy_admin_v3_RoutesConfigDump;
+struct envoy_admin_v3_RoutesConfigDump_StaticRouteConfig;
+struct envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig;
+struct envoy_admin_v3_ScopedRoutesConfigDump;
+struct envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs;
+struct envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs;
+struct envoy_admin_v3_EndpointsConfigDump;
+struct envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig;
+struct envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig;
+typedef struct envoy_admin_v3_UpdateFailureState envoy_admin_v3_UpdateFailureState;
+typedef struct envoy_admin_v3_ListenersConfigDump envoy_admin_v3_ListenersConfigDump;
+typedef struct envoy_admin_v3_ListenersConfigDump_StaticListener envoy_admin_v3_ListenersConfigDump_StaticListener;
+typedef struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState envoy_admin_v3_ListenersConfigDump_DynamicListenerState;
+typedef struct envoy_admin_v3_ListenersConfigDump_DynamicListener envoy_admin_v3_ListenersConfigDump_DynamicListener;
+typedef struct envoy_admin_v3_ClustersConfigDump envoy_admin_v3_ClustersConfigDump;
+typedef struct envoy_admin_v3_ClustersConfigDump_StaticCluster envoy_admin_v3_ClustersConfigDump_StaticCluster;
+typedef struct envoy_admin_v3_ClustersConfigDump_DynamicCluster envoy_admin_v3_ClustersConfigDump_DynamicCluster;
+typedef struct envoy_admin_v3_RoutesConfigDump envoy_admin_v3_RoutesConfigDump;
+typedef struct envoy_admin_v3_RoutesConfigDump_StaticRouteConfig envoy_admin_v3_RoutesConfigDump_StaticRouteConfig;
+typedef struct envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig;
+typedef struct envoy_admin_v3_ScopedRoutesConfigDump envoy_admin_v3_ScopedRoutesConfigDump;
+typedef struct envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs;
+typedef struct envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs;
+typedef struct envoy_admin_v3_EndpointsConfigDump envoy_admin_v3_EndpointsConfigDump;
+typedef struct envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig;
+typedef struct envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig;
+extern const upb_MiniTable envoy_admin_v3_UpdateFailureState_msginit;
+extern const upb_MiniTable envoy_admin_v3_ListenersConfigDump_msginit;
+extern const upb_MiniTable envoy_admin_v3_ListenersConfigDump_StaticListener_msginit;
+extern const upb_MiniTable envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit;
+extern const upb_MiniTable envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit;
+extern const upb_MiniTable envoy_admin_v3_ClustersConfigDump_msginit;
+extern const upb_MiniTable envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit;
+extern const upb_MiniTable envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit;
+extern const upb_MiniTable envoy_admin_v3_RoutesConfigDump_msginit;
+extern const upb_MiniTable envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit;
+extern const upb_MiniTable envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit;
+extern const upb_MiniTable envoy_admin_v3_ScopedRoutesConfigDump_msginit;
+extern const upb_MiniTable envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit;
+extern const upb_MiniTable envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit;
+extern const upb_MiniTable envoy_admin_v3_EndpointsConfigDump_msginit;
+extern const upb_MiniTable envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit;
+extern const upb_MiniTable envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit;
+struct google_protobuf_Any;
+struct google_protobuf_Timestamp;
+extern const upb_MiniTable google_protobuf_Any_msginit;
+extern const upb_MiniTable google_protobuf_Timestamp_msginit;
+
+typedef enum {
+ envoy_admin_v3_UNKNOWN = 0,
+ envoy_admin_v3_REQUESTED = 1,
+ envoy_admin_v3_DOES_NOT_EXIST = 2,
+ envoy_admin_v3_ACKED = 3,
+ envoy_admin_v3_NACKED = 4
+} envoy_admin_v3_ClientResourceStatus;
+
+
+
+/* envoy.admin.v3.UpdateFailureState */
+
+UPB_INLINE envoy_admin_v3_UpdateFailureState* envoy_admin_v3_UpdateFailureState_new(upb_Arena* arena) {
+ return (envoy_admin_v3_UpdateFailureState*)_upb_Message_New(&envoy_admin_v3_UpdateFailureState_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_UpdateFailureState* envoy_admin_v3_UpdateFailureState_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_UpdateFailureState* ret = envoy_admin_v3_UpdateFailureState_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_UpdateFailureState_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_UpdateFailureState* envoy_admin_v3_UpdateFailureState_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_UpdateFailureState* ret = envoy_admin_v3_UpdateFailureState_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_UpdateFailureState_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_UpdateFailureState_serialize(const envoy_admin_v3_UpdateFailureState* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_UpdateFailureState_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_UpdateFailureState_serialize_ex(const envoy_admin_v3_UpdateFailureState* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_UpdateFailureState_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_UpdateFailureState_has_failed_configuration(const envoy_admin_v3_UpdateFailureState* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_UpdateFailureState_clear_failed_configuration(const envoy_admin_v3_UpdateFailureState* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_UpdateFailureState_failed_configuration(const envoy_admin_v3_UpdateFailureState* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Any*);
+}
+UPB_INLINE bool envoy_admin_v3_UpdateFailureState_has_last_update_attempt(const envoy_admin_v3_UpdateFailureState* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_UpdateFailureState_clear_last_update_attempt(const envoy_admin_v3_UpdateFailureState* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_UpdateFailureState_last_update_attempt(const envoy_admin_v3_UpdateFailureState* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Timestamp*);
+}
+UPB_INLINE void envoy_admin_v3_UpdateFailureState_clear_details(const envoy_admin_v3_UpdateFailureState* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_UpdateFailureState_details(const envoy_admin_v3_UpdateFailureState* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+}
+UPB_INLINE void envoy_admin_v3_UpdateFailureState_clear_version_info(const envoy_admin_v3_UpdateFailureState* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_UpdateFailureState_version_info(const envoy_admin_v3_UpdateFailureState* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+}
+
+UPB_INLINE void envoy_admin_v3_UpdateFailureState_set_failed_configuration(envoy_admin_v3_UpdateFailureState *msg, struct google_protobuf_Any* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Any*) = value;
+}
+UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_UpdateFailureState_mutable_failed_configuration(envoy_admin_v3_UpdateFailureState* msg, upb_Arena* arena) {
+ struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_UpdateFailureState_failed_configuration(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_UpdateFailureState_set_failed_configuration(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_UpdateFailureState_set_last_update_attempt(envoy_admin_v3_UpdateFailureState *msg, struct google_protobuf_Timestamp* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Timestamp*) = value;
+}
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_UpdateFailureState_mutable_last_update_attempt(envoy_admin_v3_UpdateFailureState* msg, upb_Arena* arena) {
+ struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_UpdateFailureState_last_update_attempt(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_UpdateFailureState_set_last_update_attempt(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_UpdateFailureState_set_details(envoy_admin_v3_UpdateFailureState *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+}
+UPB_INLINE void envoy_admin_v3_UpdateFailureState_set_version_info(envoy_admin_v3_UpdateFailureState *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
+}
+
+/* envoy.admin.v3.ListenersConfigDump */
+
+UPB_INLINE envoy_admin_v3_ListenersConfigDump* envoy_admin_v3_ListenersConfigDump_new(upb_Arena* arena) {
+ return (envoy_admin_v3_ListenersConfigDump*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_ListenersConfigDump* envoy_admin_v3_ListenersConfigDump_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_ListenersConfigDump* ret = envoy_admin_v3_ListenersConfigDump_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_ListenersConfigDump* envoy_admin_v3_ListenersConfigDump_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_ListenersConfigDump* ret = envoy_admin_v3_ListenersConfigDump_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_serialize(const envoy_admin_v3_ListenersConfigDump* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_serialize_ex(const envoy_admin_v3_ListenersConfigDump* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_clear_version_info(const envoy_admin_v3_ListenersConfigDump* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_ListenersConfigDump_version_info(const envoy_admin_v3_ListenersConfigDump* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+}
+UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_has_static_listeners(const envoy_admin_v3_ListenersConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_clear_static_listeners(const envoy_admin_v3_ListenersConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const envoy_admin_v3_ListenersConfigDump_StaticListener* const* envoy_admin_v3_ListenersConfigDump_static_listeners(const envoy_admin_v3_ListenersConfigDump* msg, size_t* len) {
+ return (const envoy_admin_v3_ListenersConfigDump_StaticListener* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_has_dynamic_listeners(const envoy_admin_v3_ListenersConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_clear_dynamic_listeners(const envoy_admin_v3_ListenersConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const envoy_admin_v3_ListenersConfigDump_DynamicListener* const* envoy_admin_v3_ListenersConfigDump_dynamic_listeners(const envoy_admin_v3_ListenersConfigDump* msg, size_t* len) {
+ return (const envoy_admin_v3_ListenersConfigDump_DynamicListener* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_set_version_info(envoy_admin_v3_ListenersConfigDump *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+}
+UPB_INLINE envoy_admin_v3_ListenersConfigDump_StaticListener** envoy_admin_v3_ListenersConfigDump_mutable_static_listeners(envoy_admin_v3_ListenersConfigDump* msg, size_t* len) {
+ return (envoy_admin_v3_ListenersConfigDump_StaticListener**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE envoy_admin_v3_ListenersConfigDump_StaticListener** envoy_admin_v3_ListenersConfigDump_resize_static_listeners(envoy_admin_v3_ListenersConfigDump* msg, size_t len, upb_Arena* arena) {
+ return (envoy_admin_v3_ListenersConfigDump_StaticListener**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_admin_v3_ListenersConfigDump_StaticListener* envoy_admin_v3_ListenersConfigDump_add_static_listeners(envoy_admin_v3_ListenersConfigDump* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_ListenersConfigDump_StaticListener* sub = (struct envoy_admin_v3_ListenersConfigDump_StaticListener*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_StaticListener_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListener** envoy_admin_v3_ListenersConfigDump_mutable_dynamic_listeners(envoy_admin_v3_ListenersConfigDump* msg, size_t* len) {
+ return (envoy_admin_v3_ListenersConfigDump_DynamicListener**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListener** envoy_admin_v3_ListenersConfigDump_resize_dynamic_listeners(envoy_admin_v3_ListenersConfigDump* msg, size_t len, upb_Arena* arena) {
+ return (envoy_admin_v3_ListenersConfigDump_DynamicListener**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_admin_v3_ListenersConfigDump_DynamicListener* envoy_admin_v3_ListenersConfigDump_add_dynamic_listeners(envoy_admin_v3_ListenersConfigDump* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_ListenersConfigDump_DynamicListener* sub = (struct envoy_admin_v3_ListenersConfigDump_DynamicListener*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+
+/* envoy.admin.v3.ListenersConfigDump.StaticListener */
+
+UPB_INLINE envoy_admin_v3_ListenersConfigDump_StaticListener* envoy_admin_v3_ListenersConfigDump_StaticListener_new(upb_Arena* arena) {
+ return (envoy_admin_v3_ListenersConfigDump_StaticListener*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_StaticListener_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_ListenersConfigDump_StaticListener* envoy_admin_v3_ListenersConfigDump_StaticListener_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_ListenersConfigDump_StaticListener* ret = envoy_admin_v3_ListenersConfigDump_StaticListener_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_StaticListener_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_ListenersConfigDump_StaticListener* envoy_admin_v3_ListenersConfigDump_StaticListener_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_ListenersConfigDump_StaticListener* ret = envoy_admin_v3_ListenersConfigDump_StaticListener_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_StaticListener_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_StaticListener_serialize(const envoy_admin_v3_ListenersConfigDump_StaticListener* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_StaticListener_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_StaticListener_serialize_ex(const envoy_admin_v3_ListenersConfigDump_StaticListener* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_StaticListener_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_StaticListener_has_listener(const envoy_admin_v3_ListenersConfigDump_StaticListener* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_StaticListener_clear_listener(const envoy_admin_v3_ListenersConfigDump_StaticListener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_ListenersConfigDump_StaticListener_listener(const envoy_admin_v3_ListenersConfigDump_StaticListener* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Any*);
+}
+UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_StaticListener_has_last_updated(const envoy_admin_v3_ListenersConfigDump_StaticListener* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_StaticListener_clear_last_updated(const envoy_admin_v3_ListenersConfigDump_StaticListener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_ListenersConfigDump_StaticListener_last_updated(const envoy_admin_v3_ListenersConfigDump_StaticListener* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Timestamp*);
+}
+
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_StaticListener_set_listener(envoy_admin_v3_ListenersConfigDump_StaticListener *msg, struct google_protobuf_Any* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Any*) = value;
+}
+UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_ListenersConfigDump_StaticListener_mutable_listener(envoy_admin_v3_ListenersConfigDump_StaticListener* msg, upb_Arena* arena) {
+ struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_ListenersConfigDump_StaticListener_listener(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ListenersConfigDump_StaticListener_set_listener(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_StaticListener_set_last_updated(envoy_admin_v3_ListenersConfigDump_StaticListener *msg, struct google_protobuf_Timestamp* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Timestamp*) = value;
+}
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_ListenersConfigDump_StaticListener_mutable_last_updated(envoy_admin_v3_ListenersConfigDump_StaticListener* msg, upb_Arena* arena) {
+ struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_ListenersConfigDump_StaticListener_last_updated(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ListenersConfigDump_StaticListener_set_last_updated(msg, sub);
+ }
+ return sub;
+}
+
+/* envoy.admin.v3.ListenersConfigDump.DynamicListenerState */
+
+UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_new(upb_Arena* arena) {
+ return (envoy_admin_v3_ListenersConfigDump_DynamicListenerState*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_ListenersConfigDump_DynamicListenerState* ret = envoy_admin_v3_ListenersConfigDump_DynamicListenerState_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_ListenersConfigDump_DynamicListenerState* ret = envoy_admin_v3_ListenersConfigDump_DynamicListenerState_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_serialize(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_serialize_ex(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListenerState_clear_version_info(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_ListenersConfigDump_DynamicListenerState_version_info(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_DynamicListenerState_has_listener(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListenerState_clear_listener(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_listener(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Any*);
+}
+UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_DynamicListenerState_has_last_updated(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListenerState_clear_last_updated(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_last_updated(const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_Timestamp*);
+}
+
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListenerState_set_version_info(envoy_admin_v3_ListenersConfigDump_DynamicListenerState *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListenerState_set_listener(envoy_admin_v3_ListenersConfigDump_DynamicListenerState *msg, struct google_protobuf_Any* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Any*) = value;
+}
+UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_mutable_listener(envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg, upb_Arena* arena) {
+ struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_ListenersConfigDump_DynamicListenerState_listener(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ListenersConfigDump_DynamicListenerState_set_listener(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListenerState_set_last_updated(envoy_admin_v3_ListenersConfigDump_DynamicListenerState *msg, struct google_protobuf_Timestamp* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_Timestamp*) = value;
+}
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_ListenersConfigDump_DynamicListenerState_mutable_last_updated(envoy_admin_v3_ListenersConfigDump_DynamicListenerState* msg, upb_Arena* arena) {
+ struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_ListenersConfigDump_DynamicListenerState_last_updated(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ListenersConfigDump_DynamicListenerState_set_last_updated(msg, sub);
+ }
+ return sub;
+}
+
+/* envoy.admin.v3.ListenersConfigDump.DynamicListener */
+
+UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListener* envoy_admin_v3_ListenersConfigDump_DynamicListener_new(upb_Arena* arena) {
+ return (envoy_admin_v3_ListenersConfigDump_DynamicListener*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListener* envoy_admin_v3_ListenersConfigDump_DynamicListener_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_ListenersConfigDump_DynamicListener* ret = envoy_admin_v3_ListenersConfigDump_DynamicListener_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_ListenersConfigDump_DynamicListener* envoy_admin_v3_ListenersConfigDump_DynamicListener_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_ListenersConfigDump_DynamicListener* ret = envoy_admin_v3_ListenersConfigDump_DynamicListener_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_DynamicListener_serialize(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_ListenersConfigDump_DynamicListener_serialize_ex(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ListenersConfigDump_DynamicListener_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_clear_name(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_ListenersConfigDump_DynamicListener_name(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_DynamicListener_has_active_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_clear_active_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
+UPB_INLINE const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListener_active_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const envoy_admin_v3_ListenersConfigDump_DynamicListenerState*);
+}
+UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_DynamicListener_has_warming_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_clear_warming_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
+}
+UPB_INLINE const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListener_warming_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const envoy_admin_v3_ListenersConfigDump_DynamicListenerState*);
+}
+UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_DynamicListener_has_draining_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_clear_draining_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
+UPB_INLINE const envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListener_draining_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const envoy_admin_v3_ListenersConfigDump_DynamicListenerState*);
+}
+UPB_INLINE bool envoy_admin_v3_ListenersConfigDump_DynamicListener_has_error_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_clear_error_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const upb_Message*) = NULL;
+}
+UPB_INLINE const envoy_admin_v3_UpdateFailureState* envoy_admin_v3_ListenersConfigDump_DynamicListener_error_state(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const envoy_admin_v3_UpdateFailureState*);
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_clear_client_status(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
+UPB_INLINE int32_t envoy_admin_v3_ListenersConfigDump_DynamicListener_client_status(const envoy_admin_v3_ListenersConfigDump_DynamicListener* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_set_name(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_set_active_state(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, envoy_admin_v3_ListenersConfigDump_DynamicListenerState* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), envoy_admin_v3_ListenersConfigDump_DynamicListenerState*) = value;
+}
+UPB_INLINE struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListener_mutable_active_state(envoy_admin_v3_ListenersConfigDump_DynamicListener* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState* sub = (struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState*)envoy_admin_v3_ListenersConfigDump_DynamicListener_active_state(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ListenersConfigDump_DynamicListener_set_active_state(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_set_warming_state(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, envoy_admin_v3_ListenersConfigDump_DynamicListenerState* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), envoy_admin_v3_ListenersConfigDump_DynamicListenerState*) = value;
+}
+UPB_INLINE struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListener_mutable_warming_state(envoy_admin_v3_ListenersConfigDump_DynamicListener* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState* sub = (struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState*)envoy_admin_v3_ListenersConfigDump_DynamicListener_warming_state(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ListenersConfigDump_DynamicListener_set_warming_state(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_set_draining_state(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, envoy_admin_v3_ListenersConfigDump_DynamicListenerState* value) {
+ _upb_sethas(msg, 3);
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), envoy_admin_v3_ListenersConfigDump_DynamicListenerState*) = value;
+}
+UPB_INLINE struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState* envoy_admin_v3_ListenersConfigDump_DynamicListener_mutable_draining_state(envoy_admin_v3_ListenersConfigDump_DynamicListener* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState* sub = (struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState*)envoy_admin_v3_ListenersConfigDump_DynamicListener_draining_state(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_admin_v3_ListenersConfigDump_DynamicListenerState*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_DynamicListenerState_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ListenersConfigDump_DynamicListener_set_draining_state(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_set_error_state(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, envoy_admin_v3_UpdateFailureState* value) {
+ _upb_sethas(msg, 4);
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), envoy_admin_v3_UpdateFailureState*) = value;
+}
+UPB_INLINE struct envoy_admin_v3_UpdateFailureState* envoy_admin_v3_ListenersConfigDump_DynamicListener_mutable_error_state(envoy_admin_v3_ListenersConfigDump_DynamicListener* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_UpdateFailureState* sub = (struct envoy_admin_v3_UpdateFailureState*)envoy_admin_v3_ListenersConfigDump_DynamicListener_error_state(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_admin_v3_UpdateFailureState*)_upb_Message_New(&envoy_admin_v3_UpdateFailureState_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ListenersConfigDump_DynamicListener_set_error_state(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_ListenersConfigDump_DynamicListener_set_client_status(envoy_admin_v3_ListenersConfigDump_DynamicListener *msg, int32_t value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
+}
+
+/* envoy.admin.v3.ClustersConfigDump */
+
+UPB_INLINE envoy_admin_v3_ClustersConfigDump* envoy_admin_v3_ClustersConfigDump_new(upb_Arena* arena) {
+ return (envoy_admin_v3_ClustersConfigDump*)_upb_Message_New(&envoy_admin_v3_ClustersConfigDump_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_ClustersConfigDump* envoy_admin_v3_ClustersConfigDump_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_ClustersConfigDump* ret = envoy_admin_v3_ClustersConfigDump_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ClustersConfigDump_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_ClustersConfigDump* envoy_admin_v3_ClustersConfigDump_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_ClustersConfigDump* ret = envoy_admin_v3_ClustersConfigDump_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ClustersConfigDump_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_ClustersConfigDump_serialize(const envoy_admin_v3_ClustersConfigDump* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ClustersConfigDump_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_ClustersConfigDump_serialize_ex(const envoy_admin_v3_ClustersConfigDump* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ClustersConfigDump_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_clear_version_info(const envoy_admin_v3_ClustersConfigDump* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_ClustersConfigDump_version_info(const envoy_admin_v3_ClustersConfigDump* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+}
+UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_has_static_clusters(const envoy_admin_v3_ClustersConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_clear_static_clusters(const envoy_admin_v3_ClustersConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const envoy_admin_v3_ClustersConfigDump_StaticCluster* const* envoy_admin_v3_ClustersConfigDump_static_clusters(const envoy_admin_v3_ClustersConfigDump* msg, size_t* len) {
+ return (const envoy_admin_v3_ClustersConfigDump_StaticCluster* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_has_dynamic_active_clusters(const envoy_admin_v3_ClustersConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_clear_dynamic_active_clusters(const envoy_admin_v3_ClustersConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const envoy_admin_v3_ClustersConfigDump_DynamicCluster* const* envoy_admin_v3_ClustersConfigDump_dynamic_active_clusters(const envoy_admin_v3_ClustersConfigDump* msg, size_t* len) {
+ return (const envoy_admin_v3_ClustersConfigDump_DynamicCluster* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_has_dynamic_warming_clusters(const envoy_admin_v3_ClustersConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_clear_dynamic_warming_clusters(const envoy_admin_v3_ClustersConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE const envoy_admin_v3_ClustersConfigDump_DynamicCluster* const* envoy_admin_v3_ClustersConfigDump_dynamic_warming_clusters(const envoy_admin_v3_ClustersConfigDump* msg, size_t* len) {
+ return (const envoy_admin_v3_ClustersConfigDump_DynamicCluster* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
+
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_set_version_info(envoy_admin_v3_ClustersConfigDump *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+}
+UPB_INLINE envoy_admin_v3_ClustersConfigDump_StaticCluster** envoy_admin_v3_ClustersConfigDump_mutable_static_clusters(envoy_admin_v3_ClustersConfigDump* msg, size_t* len) {
+ return (envoy_admin_v3_ClustersConfigDump_StaticCluster**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE envoy_admin_v3_ClustersConfigDump_StaticCluster** envoy_admin_v3_ClustersConfigDump_resize_static_clusters(envoy_admin_v3_ClustersConfigDump* msg, size_t len, upb_Arena* arena) {
+ return (envoy_admin_v3_ClustersConfigDump_StaticCluster**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_admin_v3_ClustersConfigDump_StaticCluster* envoy_admin_v3_ClustersConfigDump_add_static_clusters(envoy_admin_v3_ClustersConfigDump* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_ClustersConfigDump_StaticCluster* sub = (struct envoy_admin_v3_ClustersConfigDump_StaticCluster*)_upb_Message_New(&envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE envoy_admin_v3_ClustersConfigDump_DynamicCluster** envoy_admin_v3_ClustersConfigDump_mutable_dynamic_active_clusters(envoy_admin_v3_ClustersConfigDump* msg, size_t* len) {
+ return (envoy_admin_v3_ClustersConfigDump_DynamicCluster**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE envoy_admin_v3_ClustersConfigDump_DynamicCluster** envoy_admin_v3_ClustersConfigDump_resize_dynamic_active_clusters(envoy_admin_v3_ClustersConfigDump* msg, size_t len, upb_Arena* arena) {
+ return (envoy_admin_v3_ClustersConfigDump_DynamicCluster**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_admin_v3_ClustersConfigDump_DynamicCluster* envoy_admin_v3_ClustersConfigDump_add_dynamic_active_clusters(envoy_admin_v3_ClustersConfigDump* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_ClustersConfigDump_DynamicCluster* sub = (struct envoy_admin_v3_ClustersConfigDump_DynamicCluster*)_upb_Message_New(&envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE envoy_admin_v3_ClustersConfigDump_DynamicCluster** envoy_admin_v3_ClustersConfigDump_mutable_dynamic_warming_clusters(envoy_admin_v3_ClustersConfigDump* msg, size_t* len) {
+ return (envoy_admin_v3_ClustersConfigDump_DynamicCluster**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
+}
+UPB_INLINE envoy_admin_v3_ClustersConfigDump_DynamicCluster** envoy_admin_v3_ClustersConfigDump_resize_dynamic_warming_clusters(envoy_admin_v3_ClustersConfigDump* msg, size_t len, upb_Arena* arena) {
+ return (envoy_admin_v3_ClustersConfigDump_DynamicCluster**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_admin_v3_ClustersConfigDump_DynamicCluster* envoy_admin_v3_ClustersConfigDump_add_dynamic_warming_clusters(envoy_admin_v3_ClustersConfigDump* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_ClustersConfigDump_DynamicCluster* sub = (struct envoy_admin_v3_ClustersConfigDump_DynamicCluster*)_upb_Message_New(&envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+
+/* envoy.admin.v3.ClustersConfigDump.StaticCluster */
+
+UPB_INLINE envoy_admin_v3_ClustersConfigDump_StaticCluster* envoy_admin_v3_ClustersConfigDump_StaticCluster_new(upb_Arena* arena) {
+ return (envoy_admin_v3_ClustersConfigDump_StaticCluster*)_upb_Message_New(&envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_ClustersConfigDump_StaticCluster* envoy_admin_v3_ClustersConfigDump_StaticCluster_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_ClustersConfigDump_StaticCluster* ret = envoy_admin_v3_ClustersConfigDump_StaticCluster_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_ClustersConfigDump_StaticCluster* envoy_admin_v3_ClustersConfigDump_StaticCluster_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_ClustersConfigDump_StaticCluster* ret = envoy_admin_v3_ClustersConfigDump_StaticCluster_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_ClustersConfigDump_StaticCluster_serialize(const envoy_admin_v3_ClustersConfigDump_StaticCluster* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_ClustersConfigDump_StaticCluster_serialize_ex(const envoy_admin_v3_ClustersConfigDump_StaticCluster* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ClustersConfigDump_StaticCluster_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_StaticCluster_has_cluster(const envoy_admin_v3_ClustersConfigDump_StaticCluster* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_StaticCluster_clear_cluster(const envoy_admin_v3_ClustersConfigDump_StaticCluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_ClustersConfigDump_StaticCluster_cluster(const envoy_admin_v3_ClustersConfigDump_StaticCluster* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Any*);
+}
+UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_StaticCluster_has_last_updated(const envoy_admin_v3_ClustersConfigDump_StaticCluster* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_StaticCluster_clear_last_updated(const envoy_admin_v3_ClustersConfigDump_StaticCluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_ClustersConfigDump_StaticCluster_last_updated(const envoy_admin_v3_ClustersConfigDump_StaticCluster* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Timestamp*);
+}
+
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_StaticCluster_set_cluster(envoy_admin_v3_ClustersConfigDump_StaticCluster *msg, struct google_protobuf_Any* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Any*) = value;
+}
+UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_ClustersConfigDump_StaticCluster_mutable_cluster(envoy_admin_v3_ClustersConfigDump_StaticCluster* msg, upb_Arena* arena) {
+ struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_ClustersConfigDump_StaticCluster_cluster(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ClustersConfigDump_StaticCluster_set_cluster(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_StaticCluster_set_last_updated(envoy_admin_v3_ClustersConfigDump_StaticCluster *msg, struct google_protobuf_Timestamp* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Timestamp*) = value;
+}
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_ClustersConfigDump_StaticCluster_mutable_last_updated(envoy_admin_v3_ClustersConfigDump_StaticCluster* msg, upb_Arena* arena) {
+ struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_ClustersConfigDump_StaticCluster_last_updated(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ClustersConfigDump_StaticCluster_set_last_updated(msg, sub);
+ }
+ return sub;
+}
+
+/* envoy.admin.v3.ClustersConfigDump.DynamicCluster */
+
+UPB_INLINE envoy_admin_v3_ClustersConfigDump_DynamicCluster* envoy_admin_v3_ClustersConfigDump_DynamicCluster_new(upb_Arena* arena) {
+ return (envoy_admin_v3_ClustersConfigDump_DynamicCluster*)_upb_Message_New(&envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_ClustersConfigDump_DynamicCluster* envoy_admin_v3_ClustersConfigDump_DynamicCluster_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_ClustersConfigDump_DynamicCluster* ret = envoy_admin_v3_ClustersConfigDump_DynamicCluster_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_ClustersConfigDump_DynamicCluster* envoy_admin_v3_ClustersConfigDump_DynamicCluster_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_ClustersConfigDump_DynamicCluster* ret = envoy_admin_v3_ClustersConfigDump_DynamicCluster_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_ClustersConfigDump_DynamicCluster_serialize(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_ClustersConfigDump_DynamicCluster_serialize_ex(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ClustersConfigDump_DynamicCluster_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_clear_version_info(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_ClustersConfigDump_DynamicCluster_version_info(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_DynamicCluster_has_cluster(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_clear_cluster(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_ClustersConfigDump_DynamicCluster_cluster(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_Any*);
+}
+UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_DynamicCluster_has_last_updated(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_clear_last_updated(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_ClustersConfigDump_DynamicCluster_last_updated(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_Timestamp*);
+}
+UPB_INLINE bool envoy_admin_v3_ClustersConfigDump_DynamicCluster_has_error_state(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_clear_error_state(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
+UPB_INLINE const envoy_admin_v3_UpdateFailureState* envoy_admin_v3_ClustersConfigDump_DynamicCluster_error_state(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const envoy_admin_v3_UpdateFailureState*);
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_clear_client_status(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
+UPB_INLINE int32_t envoy_admin_v3_ClustersConfigDump_DynamicCluster_client_status(const envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_version_info(envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_cluster(envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg, struct google_protobuf_Any* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_Any*) = value;
+}
+UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_ClustersConfigDump_DynamicCluster_mutable_cluster(envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg, upb_Arena* arena) {
+ struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_ClustersConfigDump_DynamicCluster_cluster(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_cluster(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_last_updated(envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg, struct google_protobuf_Timestamp* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_Timestamp*) = value;
+}
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_ClustersConfigDump_DynamicCluster_mutable_last_updated(envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg, upb_Arena* arena) {
+ struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_ClustersConfigDump_DynamicCluster_last_updated(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_last_updated(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_error_state(envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg, envoy_admin_v3_UpdateFailureState* value) {
+ _upb_sethas(msg, 3);
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), envoy_admin_v3_UpdateFailureState*) = value;
+}
+UPB_INLINE struct envoy_admin_v3_UpdateFailureState* envoy_admin_v3_ClustersConfigDump_DynamicCluster_mutable_error_state(envoy_admin_v3_ClustersConfigDump_DynamicCluster* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_UpdateFailureState* sub = (struct envoy_admin_v3_UpdateFailureState*)envoy_admin_v3_ClustersConfigDump_DynamicCluster_error_state(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_admin_v3_UpdateFailureState*)_upb_Message_New(&envoy_admin_v3_UpdateFailureState_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_error_state(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_ClustersConfigDump_DynamicCluster_set_client_status(envoy_admin_v3_ClustersConfigDump_DynamicCluster *msg, int32_t value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
+}
+
+/* envoy.admin.v3.RoutesConfigDump */
+
+UPB_INLINE envoy_admin_v3_RoutesConfigDump* envoy_admin_v3_RoutesConfigDump_new(upb_Arena* arena) {
+ return (envoy_admin_v3_RoutesConfigDump*)_upb_Message_New(&envoy_admin_v3_RoutesConfigDump_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_RoutesConfigDump* envoy_admin_v3_RoutesConfigDump_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_RoutesConfigDump* ret = envoy_admin_v3_RoutesConfigDump_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_RoutesConfigDump_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_RoutesConfigDump* envoy_admin_v3_RoutesConfigDump_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_RoutesConfigDump* ret = envoy_admin_v3_RoutesConfigDump_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_RoutesConfigDump_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_RoutesConfigDump_serialize(const envoy_admin_v3_RoutesConfigDump* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_RoutesConfigDump_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_RoutesConfigDump_serialize_ex(const envoy_admin_v3_RoutesConfigDump* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_RoutesConfigDump_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_RoutesConfigDump_has_static_route_configs(const envoy_admin_v3_RoutesConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_clear_static_route_configs(const envoy_admin_v3_RoutesConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* const* envoy_admin_v3_RoutesConfigDump_static_route_configs(const envoy_admin_v3_RoutesConfigDump* msg, size_t* len) {
+ return (const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE bool envoy_admin_v3_RoutesConfigDump_has_dynamic_route_configs(const envoy_admin_v3_RoutesConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_clear_dynamic_route_configs(const envoy_admin_v3_RoutesConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* const* envoy_admin_v3_RoutesConfigDump_dynamic_route_configs(const envoy_admin_v3_RoutesConfigDump* msg, size_t* len) {
+ return (const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+
+UPB_INLINE envoy_admin_v3_RoutesConfigDump_StaticRouteConfig** envoy_admin_v3_RoutesConfigDump_mutable_static_route_configs(envoy_admin_v3_RoutesConfigDump* msg, size_t* len) {
+ return (envoy_admin_v3_RoutesConfigDump_StaticRouteConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE envoy_admin_v3_RoutesConfigDump_StaticRouteConfig** envoy_admin_v3_RoutesConfigDump_resize_static_route_configs(envoy_admin_v3_RoutesConfigDump* msg, size_t len, upb_Arena* arena) {
+ return (envoy_admin_v3_RoutesConfigDump_StaticRouteConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* envoy_admin_v3_RoutesConfigDump_add_static_route_configs(envoy_admin_v3_RoutesConfigDump* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* sub = (struct envoy_admin_v3_RoutesConfigDump_StaticRouteConfig*)_upb_Message_New(&envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig** envoy_admin_v3_RoutesConfigDump_mutable_dynamic_route_configs(envoy_admin_v3_RoutesConfigDump* msg, size_t* len) {
+ return (envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig** envoy_admin_v3_RoutesConfigDump_resize_dynamic_route_configs(envoy_admin_v3_RoutesConfigDump* msg, size_t len, upb_Arena* arena) {
+ return (envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* envoy_admin_v3_RoutesConfigDump_add_dynamic_route_configs(envoy_admin_v3_RoutesConfigDump* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* sub = (struct envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig*)_upb_Message_New(&envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+
+/* envoy.admin.v3.RoutesConfigDump.StaticRouteConfig */
+
+UPB_INLINE envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_new(upb_Arena* arena) {
+ return (envoy_admin_v3_RoutesConfigDump_StaticRouteConfig*)_upb_Message_New(&envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* ret = envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* ret = envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_serialize(const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_serialize_ex(const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_has_route_config(const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_clear_route_config(const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_route_config(const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Any*);
+}
+UPB_INLINE bool envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_has_last_updated(const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_clear_last_updated(const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_last_updated(const envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Timestamp*);
+}
+
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_set_route_config(envoy_admin_v3_RoutesConfigDump_StaticRouteConfig *msg, struct google_protobuf_Any* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Any*) = value;
+}
+UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_mutable_route_config(envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* msg, upb_Arena* arena) {
+ struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_route_config(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_set_route_config(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_set_last_updated(envoy_admin_v3_RoutesConfigDump_StaticRouteConfig *msg, struct google_protobuf_Timestamp* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Timestamp*) = value;
+}
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_mutable_last_updated(envoy_admin_v3_RoutesConfigDump_StaticRouteConfig* msg, upb_Arena* arena) {
+ struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_last_updated(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_set_last_updated(msg, sub);
+ }
+ return sub;
+}
+
+/* envoy.admin.v3.RoutesConfigDump.DynamicRouteConfig */
+
+UPB_INLINE envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_new(upb_Arena* arena) {
+ return (envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig*)_upb_Message_New(&envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* ret = envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* ret = envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_serialize(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_serialize_ex(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_clear_version_info(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_version_info(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_has_route_config(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_clear_route_config(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_route_config(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_Any*);
+}
+UPB_INLINE bool envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_has_last_updated(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_clear_last_updated(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_last_updated(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_Timestamp*);
+}
+UPB_INLINE bool envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_has_error_state(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_clear_error_state(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
+UPB_INLINE const envoy_admin_v3_UpdateFailureState* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_error_state(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const envoy_admin_v3_UpdateFailureState*);
+}
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_clear_client_status(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
+UPB_INLINE int32_t envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_client_status(const envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_version_info(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
+}
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_route_config(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg, struct google_protobuf_Any* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_Any*) = value;
+}
+UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_mutable_route_config(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg, upb_Arena* arena) {
+ struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_route_config(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_route_config(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_last_updated(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg, struct google_protobuf_Timestamp* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_Timestamp*) = value;
+}
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_mutable_last_updated(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg, upb_Arena* arena) {
+ struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_last_updated(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_last_updated(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_error_state(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg, envoy_admin_v3_UpdateFailureState* value) {
+ _upb_sethas(msg, 3);
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), envoy_admin_v3_UpdateFailureState*) = value;
+}
+UPB_INLINE struct envoy_admin_v3_UpdateFailureState* envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_mutable_error_state(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_UpdateFailureState* sub = (struct envoy_admin_v3_UpdateFailureState*)envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_error_state(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_admin_v3_UpdateFailureState*)_upb_Message_New(&envoy_admin_v3_UpdateFailureState_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_error_state(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_set_client_status(envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig *msg, int32_t value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
+}
+
+/* envoy.admin.v3.ScopedRoutesConfigDump */
+
+UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump* envoy_admin_v3_ScopedRoutesConfigDump_new(upb_Arena* arena) {
+ return (envoy_admin_v3_ScopedRoutesConfigDump*)_upb_Message_New(&envoy_admin_v3_ScopedRoutesConfigDump_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump* envoy_admin_v3_ScopedRoutesConfigDump_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_ScopedRoutesConfigDump* ret = envoy_admin_v3_ScopedRoutesConfigDump_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ScopedRoutesConfigDump_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump* envoy_admin_v3_ScopedRoutesConfigDump_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_ScopedRoutesConfigDump* ret = envoy_admin_v3_ScopedRoutesConfigDump_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ScopedRoutesConfigDump_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_ScopedRoutesConfigDump_serialize(const envoy_admin_v3_ScopedRoutesConfigDump* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ScopedRoutesConfigDump_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_ScopedRoutesConfigDump_serialize_ex(const envoy_admin_v3_ScopedRoutesConfigDump* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ScopedRoutesConfigDump_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_ScopedRoutesConfigDump_has_inline_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_clear_inline_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* const* envoy_admin_v3_ScopedRoutesConfigDump_inline_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump* msg, size_t* len) {
+ return (const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE bool envoy_admin_v3_ScopedRoutesConfigDump_has_dynamic_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_clear_dynamic_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* const* envoy_admin_v3_ScopedRoutesConfigDump_dynamic_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump* msg, size_t* len) {
+ return (const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+
+UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs** envoy_admin_v3_ScopedRoutesConfigDump_mutable_inline_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump* msg, size_t* len) {
+ return (envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs** envoy_admin_v3_ScopedRoutesConfigDump_resize_inline_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump* msg, size_t len, upb_Arena* arena) {
+ return (envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_add_inline_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* sub = (struct envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs*)_upb_Message_New(&envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs** envoy_admin_v3_ScopedRoutesConfigDump_mutable_dynamic_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump* msg, size_t* len) {
+ return (envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs** envoy_admin_v3_ScopedRoutesConfigDump_resize_dynamic_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump* msg, size_t len, upb_Arena* arena) {
+ return (envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_add_dynamic_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* sub = (struct envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs*)_upb_Message_New(&envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+
+/* envoy.admin.v3.ScopedRoutesConfigDump.InlineScopedRouteConfigs */
+
+UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_new(upb_Arena* arena) {
+ return (envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs*)_upb_Message_New(&envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* ret = envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* ret = envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_serialize(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_serialize_ex(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_clear_name(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_name(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_has_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_clear_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const struct google_protobuf_Any* const* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg, size_t* len) {
+ return (const struct google_protobuf_Any* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE bool envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_has_last_updated(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_clear_last_updated(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_last_updated(const envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_Timestamp*);
+}
+
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_set_name(envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+}
+UPB_INLINE struct google_protobuf_Any** envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_mutable_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg, size_t* len) {
+ return (struct google_protobuf_Any**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE struct google_protobuf_Any** envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_resize_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg, size_t len, upb_Arena* arena) {
+ return (struct google_protobuf_Any**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_add_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg, upb_Arena* arena) {
+ struct google_protobuf_Any* sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_set_last_updated(envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs *msg, struct google_protobuf_Timestamp* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_Timestamp*) = value;
+}
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_mutable_last_updated(envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs* msg, upb_Arena* arena) {
+ struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_last_updated(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_set_last_updated(msg, sub);
+ }
+ return sub;
+}
+
+/* envoy.admin.v3.ScopedRoutesConfigDump.DynamicScopedRouteConfigs */
+
+UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_new(upb_Arena* arena) {
+ return (envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs*)_upb_Message_New(&envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* ret = envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* ret = envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_serialize(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_serialize_ex(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_clear_name(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_name(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_clear_version_info(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_version_info(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+}
+UPB_INLINE bool envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_has_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 40));
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_clear_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 40));
+}
+UPB_INLINE const struct google_protobuf_Any* const* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_scoped_route_configs(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg, size_t* len) {
+ return (const struct google_protobuf_Any* const*)_upb_array_accessor(msg, UPB_SIZE(24, 40), len);
+}
+UPB_INLINE bool envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_has_last_updated(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_clear_last_updated(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_last_updated(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const struct google_protobuf_Timestamp*);
+}
+UPB_INLINE bool envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_has_error_state(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_clear_error_state(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const upb_Message*) = NULL;
+}
+UPB_INLINE const envoy_admin_v3_UpdateFailureState* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_error_state(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const envoy_admin_v3_UpdateFailureState*);
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_clear_client_status(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
+UPB_INLINE int32_t envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_client_status(const envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_set_name(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_set_version_info(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
+}
+UPB_INLINE struct google_protobuf_Any** envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_mutable_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg, size_t* len) {
+ return (struct google_protobuf_Any**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 40), len);
+}
+UPB_INLINE struct google_protobuf_Any** envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_resize_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg, size_t len, upb_Arena* arena) {
+ return (struct google_protobuf_Any**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 40), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_add_scoped_route_configs(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg, upb_Arena* arena) {
+ struct google_protobuf_Any* sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 40), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_set_last_updated(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, struct google_protobuf_Timestamp* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), struct google_protobuf_Timestamp*) = value;
+}
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_mutable_last_updated(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg, upb_Arena* arena) {
+ struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_last_updated(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_set_last_updated(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_set_error_state(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, envoy_admin_v3_UpdateFailureState* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), envoy_admin_v3_UpdateFailureState*) = value;
+}
+UPB_INLINE struct envoy_admin_v3_UpdateFailureState* envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_mutable_error_state(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_UpdateFailureState* sub = (struct envoy_admin_v3_UpdateFailureState*)envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_error_state(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_admin_v3_UpdateFailureState*)_upb_Message_New(&envoy_admin_v3_UpdateFailureState_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_set_error_state(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_set_client_status(envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs *msg, int32_t value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
+}
+
+/* envoy.admin.v3.EndpointsConfigDump */
+
+UPB_INLINE envoy_admin_v3_EndpointsConfigDump* envoy_admin_v3_EndpointsConfigDump_new(upb_Arena* arena) {
+ return (envoy_admin_v3_EndpointsConfigDump*)_upb_Message_New(&envoy_admin_v3_EndpointsConfigDump_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_EndpointsConfigDump* envoy_admin_v3_EndpointsConfigDump_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_EndpointsConfigDump* ret = envoy_admin_v3_EndpointsConfigDump_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_EndpointsConfigDump_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_EndpointsConfigDump* envoy_admin_v3_EndpointsConfigDump_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_EndpointsConfigDump* ret = envoy_admin_v3_EndpointsConfigDump_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_EndpointsConfigDump_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_EndpointsConfigDump_serialize(const envoy_admin_v3_EndpointsConfigDump* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_EndpointsConfigDump_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_EndpointsConfigDump_serialize_ex(const envoy_admin_v3_EndpointsConfigDump* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_EndpointsConfigDump_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_EndpointsConfigDump_has_static_endpoint_configs(const envoy_admin_v3_EndpointsConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_clear_static_endpoint_configs(const envoy_admin_v3_EndpointsConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* const* envoy_admin_v3_EndpointsConfigDump_static_endpoint_configs(const envoy_admin_v3_EndpointsConfigDump* msg, size_t* len) {
+ return (const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE bool envoy_admin_v3_EndpointsConfigDump_has_dynamic_endpoint_configs(const envoy_admin_v3_EndpointsConfigDump* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_clear_dynamic_endpoint_configs(const envoy_admin_v3_EndpointsConfigDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* const* envoy_admin_v3_EndpointsConfigDump_dynamic_endpoint_configs(const envoy_admin_v3_EndpointsConfigDump* msg, size_t* len) {
+ return (const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+
+UPB_INLINE envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig** envoy_admin_v3_EndpointsConfigDump_mutable_static_endpoint_configs(envoy_admin_v3_EndpointsConfigDump* msg, size_t* len) {
+ return (envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig** envoy_admin_v3_EndpointsConfigDump_resize_static_endpoint_configs(envoy_admin_v3_EndpointsConfigDump* msg, size_t len, upb_Arena* arena) {
+ return (envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* envoy_admin_v3_EndpointsConfigDump_add_static_endpoint_configs(envoy_admin_v3_EndpointsConfigDump* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* sub = (struct envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig*)_upb_Message_New(&envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig** envoy_admin_v3_EndpointsConfigDump_mutable_dynamic_endpoint_configs(envoy_admin_v3_EndpointsConfigDump* msg, size_t* len) {
+ return (envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig** envoy_admin_v3_EndpointsConfigDump_resize_dynamic_endpoint_configs(envoy_admin_v3_EndpointsConfigDump* msg, size_t len, upb_Arena* arena) {
+ return (envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* envoy_admin_v3_EndpointsConfigDump_add_dynamic_endpoint_configs(envoy_admin_v3_EndpointsConfigDump* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* sub = (struct envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig*)_upb_Message_New(&envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+
+/* envoy.admin.v3.EndpointsConfigDump.StaticEndpointConfig */
+
+UPB_INLINE envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_new(upb_Arena* arena) {
+ return (envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig*)_upb_Message_New(&envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* ret = envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* ret = envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_serialize(const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_serialize_ex(const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_has_endpoint_config(const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_clear_endpoint_config(const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_endpoint_config(const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Any*);
+}
+UPB_INLINE bool envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_has_last_updated(const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_clear_last_updated(const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_last_updated(const envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Timestamp*);
+}
+
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_set_endpoint_config(envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig *msg, struct google_protobuf_Any* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Any*) = value;
+}
+UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_mutable_endpoint_config(envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* msg, upb_Arena* arena) {
+ struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_endpoint_config(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_set_endpoint_config(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_set_last_updated(envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig *msg, struct google_protobuf_Timestamp* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Timestamp*) = value;
+}
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_mutable_last_updated(envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig* msg, upb_Arena* arena) {
+ struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_last_updated(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_set_last_updated(msg, sub);
+ }
+ return sub;
+}
+
+/* envoy.admin.v3.EndpointsConfigDump.DynamicEndpointConfig */
+
+UPB_INLINE envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_new(upb_Arena* arena) {
+ return (envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig*)_upb_Message_New(&envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit, arena);
+}
+UPB_INLINE envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* ret = envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* ret = envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_serialize(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_serialize_ex(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_clear_version_info(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_version_info(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_has_endpoint_config(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_clear_endpoint_config(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_endpoint_config(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_Any*);
+}
+UPB_INLINE bool envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_has_last_updated(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_clear_last_updated(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Timestamp* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_last_updated(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_Timestamp*);
+}
+UPB_INLINE bool envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_has_error_state(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_clear_error_state(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
+UPB_INLINE const envoy_admin_v3_UpdateFailureState* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_error_state(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const envoy_admin_v3_UpdateFailureState*);
+}
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_clear_client_status(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
+UPB_INLINE int32_t envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_client_status(const envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_version_info(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
+}
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_endpoint_config(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg, struct google_protobuf_Any* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_Any*) = value;
+}
+UPB_INLINE struct google_protobuf_Any* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_mutable_endpoint_config(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg, upb_Arena* arena) {
+ struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_endpoint_config(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_endpoint_config(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_last_updated(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg, struct google_protobuf_Timestamp* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_Timestamp*) = value;
+}
+UPB_INLINE struct google_protobuf_Timestamp* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_mutable_last_updated(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg, upb_Arena* arena) {
+ struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_last_updated(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_last_updated(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_error_state(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg, envoy_admin_v3_UpdateFailureState* value) {
+ _upb_sethas(msg, 3);
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), envoy_admin_v3_UpdateFailureState*) = value;
+}
+UPB_INLINE struct envoy_admin_v3_UpdateFailureState* envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_mutable_error_state(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig* msg, upb_Arena* arena) {
+ struct envoy_admin_v3_UpdateFailureState* sub = (struct envoy_admin_v3_UpdateFailureState*)envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_error_state(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_admin_v3_UpdateFailureState*)_upb_Message_New(&envoy_admin_v3_UpdateFailureState_msginit, arena);
+ if (!sub) return NULL;
+ envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_error_state(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_set_client_status(envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig *msg, int32_t value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
+}
+
+extern const upb_MiniTable_File envoy_admin_v3_config_dump_shared_proto_upb_file_layout;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* ENVOY_ADMIN_V3_CONFIG_DUMP_SHARED_PROTO_UPB_H_ */
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c
index a48470c986..e00bf945dd 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c
@@ -18,24 +18,24 @@ static const upb_MiniTable_Sub envoy_admin_v3_UnreadyTargetsDumps_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_admin_v3_UnreadyTargetsDumps__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_UnreadyTargetsDumps_msginit = {
&envoy_admin_v3_UnreadyTargetsDumps_submsgs[0],
&envoy_admin_v3_UnreadyTargetsDumps__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_msginit = {
NULL,
&envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h
index d748537354..ff8d68df45 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h
@@ -54,25 +54,35 @@ UPB_INLINE envoy_admin_v3_UnreadyTargetsDumps* envoy_admin_v3_UnreadyTargetsDump
return ret;
}
UPB_INLINE char* envoy_admin_v3_UnreadyTargetsDumps_serialize(const envoy_admin_v3_UnreadyTargetsDumps* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_UnreadyTargetsDumps_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_UnreadyTargetsDumps_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_UnreadyTargetsDumps_serialize_ex(const envoy_admin_v3_UnreadyTargetsDumps* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_UnreadyTargetsDumps_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_UnreadyTargetsDumps_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_UnreadyTargetsDumps_has_unready_targets_dumps(const envoy_admin_v3_UnreadyTargetsDumps* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_admin_v3_UnreadyTargetsDumps_clear_unready_targets_dumps(const envoy_admin_v3_UnreadyTargetsDumps* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* const* envoy_admin_v3_UnreadyTargetsDumps_unready_targets_dumps(const envoy_admin_v3_UnreadyTargetsDumps* msg, size_t* len) {
+ return (const envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_admin_v3_UnreadyTargetsDumps_has_unready_targets_dumps(const envoy_admin_v3_UnreadyTargetsDumps *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* const* envoy_admin_v3_UnreadyTargetsDumps_unready_targets_dumps(const envoy_admin_v3_UnreadyTargetsDumps *msg, size_t *len) { return (const envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump** envoy_admin_v3_UnreadyTargetsDumps_mutable_unready_targets_dumps(envoy_admin_v3_UnreadyTargetsDumps *msg, size_t *len) {
+UPB_INLINE envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump** envoy_admin_v3_UnreadyTargetsDumps_mutable_unready_targets_dumps(envoy_admin_v3_UnreadyTargetsDumps* msg, size_t* len) {
return (envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump** envoy_admin_v3_UnreadyTargetsDumps_resize_unready_targets_dumps(envoy_admin_v3_UnreadyTargetsDumps *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump** envoy_admin_v3_UnreadyTargetsDumps_resize_unready_targets_dumps(envoy_admin_v3_UnreadyTargetsDumps* msg, size_t len, upb_Arena* arena) {
return (envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* envoy_admin_v3_UnreadyTargetsDumps_add_unready_targets_dumps(envoy_admin_v3_UnreadyTargetsDumps *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* envoy_admin_v3_UnreadyTargetsDumps_add_unready_targets_dumps(envoy_admin_v3_UnreadyTargetsDumps* msg, upb_Arena* arena) {
struct envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* sub = (struct envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump*)_upb_Message_New(&envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -102,29 +112,40 @@ UPB_INLINE envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* envoy_admin_v3
return ret;
}
UPB_INLINE char* envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_serialize(const envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_serialize_ex(const envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_clear_name(const envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_name(const envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
-UPB_INLINE upb_StringView const* envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_target_names(const envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
+UPB_INLINE void envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_clear_target_names(const envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE upb_StringView const* envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_target_names(const envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
UPB_INLINE void envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_set_name(envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
-UPB_INLINE upb_StringView* envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_mutable_target_names(envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump *msg, size_t *len) {
+UPB_INLINE upb_StringView* envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_mutable_target_names(envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE upb_StringView* envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_resize_target_names(envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_resize_target_names(envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_add_target_names(envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump_add_target_names(envoy_admin_v3_UnreadyTargetsDumps_UnreadyTargetsDump* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(3, 4), &val, arena);
}
extern const upb_MiniTable_File envoy_admin_v3_init_dump_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c
index 71f58992e7..938c795d35 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c
@@ -20,28 +20,30 @@ static const upb_MiniTable_Sub envoy_admin_v3_Listeners_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_admin_v3_Listeners__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_Listeners_msginit = {
&envoy_admin_v3_Listeners_submsgs[0],
&envoy_admin_v3_Listeners__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub envoy_admin_v3_ListenerStatus_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_admin_v3_ListenerStatus_submsgs[2] = {
+ {.submsg = &envoy_config_core_v3_Address_msginit},
{.submsg = &envoy_config_core_v3_Address_msginit},
};
-static const upb_MiniTable_Field envoy_admin_v3_ListenerStatus__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_admin_v3_ListenerStatus__fields[3] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_ListenerStatus_msginit = {
&envoy_admin_v3_ListenerStatus_submsgs[0],
&envoy_admin_v3_ListenerStatus__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h
index 7c7a83f5eb..d6c1793b45 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h
@@ -56,25 +56,35 @@ UPB_INLINE envoy_admin_v3_Listeners* envoy_admin_v3_Listeners_parse_ex(const cha
return ret;
}
UPB_INLINE char* envoy_admin_v3_Listeners_serialize(const envoy_admin_v3_Listeners* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_Listeners_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_Listeners_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_Listeners_serialize_ex(const envoy_admin_v3_Listeners* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_Listeners_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_Listeners_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_admin_v3_Listeners_has_listener_statuses(const envoy_admin_v3_Listeners* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_admin_v3_Listeners_clear_listener_statuses(const envoy_admin_v3_Listeners* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_admin_v3_ListenerStatus* const* envoy_admin_v3_Listeners_listener_statuses(const envoy_admin_v3_Listeners* msg, size_t* len) {
+ return (const envoy_admin_v3_ListenerStatus* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_admin_v3_Listeners_has_listener_statuses(const envoy_admin_v3_Listeners *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_admin_v3_ListenerStatus* const* envoy_admin_v3_Listeners_listener_statuses(const envoy_admin_v3_Listeners *msg, size_t *len) { return (const envoy_admin_v3_ListenerStatus* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_admin_v3_ListenerStatus** envoy_admin_v3_Listeners_mutable_listener_statuses(envoy_admin_v3_Listeners *msg, size_t *len) {
+UPB_INLINE envoy_admin_v3_ListenerStatus** envoy_admin_v3_Listeners_mutable_listener_statuses(envoy_admin_v3_Listeners* msg, size_t* len) {
return (envoy_admin_v3_ListenerStatus**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_admin_v3_ListenerStatus** envoy_admin_v3_Listeners_resize_listener_statuses(envoy_admin_v3_Listeners *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_admin_v3_ListenerStatus** envoy_admin_v3_Listeners_resize_listener_statuses(envoy_admin_v3_Listeners* msg, size_t len, upb_Arena* arena) {
return (envoy_admin_v3_ListenerStatus**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_admin_v3_ListenerStatus* envoy_admin_v3_Listeners_add_listener_statuses(envoy_admin_v3_Listeners *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_ListenerStatus* envoy_admin_v3_Listeners_add_listener_statuses(envoy_admin_v3_Listeners* msg, upb_Arena* arena) {
struct envoy_admin_v3_ListenerStatus* sub = (struct envoy_admin_v3_ListenerStatus*)_upb_Message_New(&envoy_admin_v3_ListenerStatus_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -104,19 +114,40 @@ UPB_INLINE envoy_admin_v3_ListenerStatus* envoy_admin_v3_ListenerStatus_parse_ex
return ret;
}
UPB_INLINE char* envoy_admin_v3_ListenerStatus_serialize(const envoy_admin_v3_ListenerStatus* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ListenerStatus_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ListenerStatus_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_ListenerStatus_serialize_ex(const envoy_admin_v3_ListenerStatus* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ListenerStatus_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ListenerStatus_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_ListenerStatus_clear_name(const envoy_admin_v3_ListenerStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_ListenerStatus_name(const envoy_admin_v3_ListenerStatus* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_admin_v3_ListenerStatus_has_local_address(const envoy_admin_v3_ListenerStatus *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_admin_v3_ListenerStatus_has_local_address(const envoy_admin_v3_ListenerStatus* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_ListenerStatus_clear_local_address(const envoy_admin_v3_ListenerStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_Address* envoy_admin_v3_ListenerStatus_local_address(const envoy_admin_v3_ListenerStatus* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_Address*);
}
+UPB_INLINE bool envoy_admin_v3_ListenerStatus_has_additional_local_addresses(const envoy_admin_v3_ListenerStatus* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE void envoy_admin_v3_ListenerStatus_clear_additional_local_addresses(const envoy_admin_v3_ListenerStatus* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE const struct envoy_config_core_v3_Address* const* envoy_admin_v3_ListenerStatus_additional_local_addresses(const envoy_admin_v3_ListenerStatus* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_Address* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
UPB_INLINE void envoy_admin_v3_ListenerStatus_set_name(envoy_admin_v3_ListenerStatus *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
@@ -125,7 +156,7 @@ UPB_INLINE void envoy_admin_v3_ListenerStatus_set_local_address(envoy_admin_v3_L
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_Address*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Address* envoy_admin_v3_ListenerStatus_mutable_local_address(envoy_admin_v3_ListenerStatus *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Address* envoy_admin_v3_ListenerStatus_mutable_local_address(envoy_admin_v3_ListenerStatus* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Address* sub = (struct envoy_config_core_v3_Address*)envoy_admin_v3_ListenerStatus_local_address(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Address*)_upb_Message_New(&envoy_config_core_v3_Address_msginit, arena);
@@ -134,6 +165,18 @@ UPB_INLINE struct envoy_config_core_v3_Address* envoy_admin_v3_ListenerStatus_mu
}
return sub;
}
+UPB_INLINE struct envoy_config_core_v3_Address** envoy_admin_v3_ListenerStatus_mutable_additional_local_addresses(envoy_admin_v3_ListenerStatus* msg, size_t* len) {
+ return (struct envoy_config_core_v3_Address**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
+}
+UPB_INLINE struct envoy_config_core_v3_Address** envoy_admin_v3_ListenerStatus_resize_additional_local_addresses(envoy_admin_v3_ListenerStatus* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_Address**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_config_core_v3_Address* envoy_admin_v3_ListenerStatus_add_additional_local_addresses(envoy_admin_v3_ListenerStatus* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_Address* sub = (struct envoy_config_core_v3_Address*)_upb_Message_New(&envoy_config_core_v3_Address_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
extern const upb_MiniTable_File envoy_admin_v3_listeners_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c
index 738d2de390..a221f2e435 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c
@@ -15,18 +15,18 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_admin_v3_Memory__fields[6] = {
- {1, UPB_SIZE(0, 0), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 16), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 24), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(32, 32), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(40, 40), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 16), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 24), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(32, 32), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(40, 40), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_Memory_msginit = {
NULL,
&envoy_admin_v3_Memory__fields[0],
- UPB_SIZE(48, 48), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(48, 48), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h
index 1cf2abeb30..e76f5106ba 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h
@@ -51,27 +51,49 @@ UPB_INLINE envoy_admin_v3_Memory* envoy_admin_v3_Memory_parse_ex(const char* buf
return ret;
}
UPB_INLINE char* envoy_admin_v3_Memory_serialize(const envoy_admin_v3_Memory* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_Memory_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_Memory_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_Memory_serialize_ex(const envoy_admin_v3_Memory* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_Memory_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_Memory_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_Memory_clear_allocated(const envoy_admin_v3_Memory* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint64_t) = 0;
}
UPB_INLINE uint64_t envoy_admin_v3_Memory_allocated(const envoy_admin_v3_Memory* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint64_t);
}
+UPB_INLINE void envoy_admin_v3_Memory_clear_heap_size(const envoy_admin_v3_Memory* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = 0;
+}
UPB_INLINE uint64_t envoy_admin_v3_Memory_heap_size(const envoy_admin_v3_Memory* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
}
+UPB_INLINE void envoy_admin_v3_Memory_clear_pageheap_unmapped(const envoy_admin_v3_Memory* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t) = 0;
+}
UPB_INLINE uint64_t envoy_admin_v3_Memory_pageheap_unmapped(const envoy_admin_v3_Memory* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t);
}
+UPB_INLINE void envoy_admin_v3_Memory_clear_pageheap_free(const envoy_admin_v3_Memory* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint64_t) = 0;
+}
UPB_INLINE uint64_t envoy_admin_v3_Memory_pageheap_free(const envoy_admin_v3_Memory* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint64_t);
}
+UPB_INLINE void envoy_admin_v3_Memory_clear_total_thread_cache(const envoy_admin_v3_Memory* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 32), uint64_t) = 0;
+}
UPB_INLINE uint64_t envoy_admin_v3_Memory_total_thread_cache(const envoy_admin_v3_Memory* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), uint64_t);
}
+UPB_INLINE void envoy_admin_v3_Memory_clear_total_physical_bytes(const envoy_admin_v3_Memory* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 40), uint64_t) = 0;
+}
UPB_INLINE uint64_t envoy_admin_v3_Memory_total_physical_bytes(const envoy_admin_v3_Memory* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(40, 40), uint64_t);
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c
index 755ac81ab5..24330ddb71 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c
@@ -15,15 +15,15 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_admin_v3_SimpleMetric__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_SimpleMetric_msginit = {
NULL,
&envoy_admin_v3_SimpleMetric__fields[0],
- UPB_SIZE(24, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h
index 8853cfe6a3..230dd2a47e 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h
@@ -56,30 +56,43 @@ UPB_INLINE envoy_admin_v3_SimpleMetric* envoy_admin_v3_SimpleMetric_parse_ex(con
return ret;
}
UPB_INLINE char* envoy_admin_v3_SimpleMetric_serialize(const envoy_admin_v3_SimpleMetric* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_SimpleMetric_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_SimpleMetric_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_SimpleMetric_serialize_ex(const envoy_admin_v3_SimpleMetric* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_SimpleMetric_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_SimpleMetric_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_SimpleMetric_clear_type(const envoy_admin_v3_SimpleMetric* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
UPB_INLINE int32_t envoy_admin_v3_SimpleMetric_type(const envoy_admin_v3_SimpleMetric* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
+UPB_INLINE void envoy_admin_v3_SimpleMetric_clear_value(const envoy_admin_v3_SimpleMetric* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t) = 0;
+}
UPB_INLINE uint64_t envoy_admin_v3_SimpleMetric_value(const envoy_admin_v3_SimpleMetric* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t);
+}
+UPB_INLINE void envoy_admin_v3_SimpleMetric_clear_name(const envoy_admin_v3_SimpleMetric* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_SimpleMetric_name(const envoy_admin_v3_SimpleMetric* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
UPB_INLINE void envoy_admin_v3_SimpleMetric_set_type(envoy_admin_v3_SimpleMetric *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
}
UPB_INLINE void envoy_admin_v3_SimpleMetric_set_value(envoy_admin_v3_SimpleMetric *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t) = value;
}
UPB_INLINE void envoy_admin_v3_SimpleMetric_set_name(envoy_admin_v3_SimpleMetric *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
extern const upb_MiniTable_File envoy_admin_v3_metrics_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c
index 310540b58e..3903334297 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c
@@ -15,15 +15,15 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_admin_v3_MutexStats__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 16), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 16), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_MutexStats_msginit = {
NULL,
&envoy_admin_v3_MutexStats__fields[0],
- UPB_SIZE(24, 24), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h
index 38487459cd..1a7d4eba4c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h
@@ -51,18 +51,31 @@ UPB_INLINE envoy_admin_v3_MutexStats* envoy_admin_v3_MutexStats_parse_ex(const c
return ret;
}
UPB_INLINE char* envoy_admin_v3_MutexStats_serialize(const envoy_admin_v3_MutexStats* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_MutexStats_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_MutexStats_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_MutexStats_serialize_ex(const envoy_admin_v3_MutexStats* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_MutexStats_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_MutexStats_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_MutexStats_clear_num_contentions(const envoy_admin_v3_MutexStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint64_t) = 0;
}
UPB_INLINE uint64_t envoy_admin_v3_MutexStats_num_contentions(const envoy_admin_v3_MutexStats* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint64_t);
}
+UPB_INLINE void envoy_admin_v3_MutexStats_clear_current_wait_cycles(const envoy_admin_v3_MutexStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = 0;
+}
UPB_INLINE uint64_t envoy_admin_v3_MutexStats_current_wait_cycles(const envoy_admin_v3_MutexStats* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
}
+UPB_INLINE void envoy_admin_v3_MutexStats_clear_lifetime_wait_cycles(const envoy_admin_v3_MutexStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t) = 0;
+}
UPB_INLINE uint64_t envoy_admin_v3_MutexStats_lifetime_wait_cycles(const envoy_admin_v3_MutexStats* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t);
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c
index 6154d8d318..dc761de6fc 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c
@@ -16,73 +16,76 @@
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_admin_v3_ServerInfo_submsgs[3] = {
+static const upb_MiniTable_Sub envoy_admin_v3_ServerInfo_submsgs[4] = {
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &envoy_admin_v3_CommandLineOptions_msginit},
{.submsg = &envoy_config_core_v3_Node_msginit},
- {.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field envoy_admin_v3_ServerInfo__fields[7] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 40), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(28, 48), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(16, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(32, 56), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(36, 64), 4, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(32, 56), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(36, 64), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_ServerInfo_msginit = {
&envoy_admin_v3_ServerInfo_submsgs[0],
&envoy_admin_v3_ServerInfo__fields[0],
- UPB_SIZE(40, 80), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(40, 72), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
-static const upb_MiniTable_Sub envoy_admin_v3_CommandLineOptions_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_admin_v3_CommandLineOptions_submsgs[3] = {
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field envoy_admin_v3_CommandLineOptions__fields[34] = {
- {1, UPB_SIZE(8, 8), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(28, 28), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(52, 56), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(60, 72), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(40, 40), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(68, 88), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {7, UPB_SIZE(16, 16), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {8, UPB_SIZE(76, 104), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {9, UPB_SIZE(84, 120), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {10, UPB_SIZE(92, 136), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {11, UPB_SIZE(100, 152), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {13, UPB_SIZE(108, 168), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {14, UPB_SIZE(116, 184), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {15, UPB_SIZE(124, 200), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {16, UPB_SIZE(148, 248), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {17, UPB_SIZE(152, 256), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {18, UPB_SIZE(156, 264), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {19, UPB_SIZE(20, 20), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {22, UPB_SIZE(41, 41), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {23, UPB_SIZE(42, 42), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {24, UPB_SIZE(32, 32), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {25, UPB_SIZE(43, 43), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {26, UPB_SIZE(44, 44), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {27, UPB_SIZE(45, 45), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {28, UPB_SIZE(160, 272), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {30, UPB_SIZE(46, 46), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {31, UPB_SIZE(47, 47), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {32, UPB_SIZE(132, 216), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {33, UPB_SIZE(24, 24), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {34, UPB_SIZE(48, 48), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {35, UPB_SIZE(140, 232), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {36, UPB_SIZE(36, 36), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {37, UPB_SIZE(49, 49), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {38, UPB_SIZE(164, 280), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(168, 288), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(52, 56), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(60, 72), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(68, 88), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(12, 12), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(76, 104), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(84, 120), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(92, 136), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(100, 152), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(108, 168), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(116, 184), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(124, 200), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {16, UPB_SIZE(132, 216), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {17, UPB_SIZE(136, 224), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {18, UPB_SIZE(140, 232), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {19, UPB_SIZE(16, 16), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {22, UPB_SIZE(20, 20), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {23, UPB_SIZE(21, 21), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {24, UPB_SIZE(24, 24), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {25, UPB_SIZE(28, 28), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {26, UPB_SIZE(29, 29), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {27, UPB_SIZE(30, 30), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {28, UPB_SIZE(144, 240), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {30, UPB_SIZE(31, 31), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {31, UPB_SIZE(32, 32), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {32, UPB_SIZE(148, 248), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {33, UPB_SIZE(36, 36), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {34, UPB_SIZE(40, 40), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {35, UPB_SIZE(156, 264), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {36, UPB_SIZE(44, 44), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {37, UPB_SIZE(48, 48), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {38, UPB_SIZE(164, 280), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_CommandLineOptions_msginit = {
&envoy_admin_v3_CommandLineOptions_submsgs[0],
&envoy_admin_v3_CommandLineOptions__fields[0],
- UPB_SIZE(168, 288), 34, upb_ExtMode_NonExtendable, 11, 255, 0,
+ UPB_SIZE(176, 296), 34, kUpb_ExtMode_NonExtendable, 11, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h
index 72aa52c643..2b81c2099e 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h
@@ -81,34 +81,67 @@ UPB_INLINE envoy_admin_v3_ServerInfo* envoy_admin_v3_ServerInfo_parse_ex(const c
return ret;
}
UPB_INLINE char* envoy_admin_v3_ServerInfo_serialize(const envoy_admin_v3_ServerInfo* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ServerInfo_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ServerInfo_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_ServerInfo_serialize_ex(const envoy_admin_v3_ServerInfo* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_ServerInfo_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_ServerInfo_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_ServerInfo_clear_version(const envoy_admin_v3_ServerInfo* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_ServerInfo_version(const envoy_admin_v3_ServerInfo* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
}
+UPB_INLINE void envoy_admin_v3_ServerInfo_clear_state(const envoy_admin_v3_ServerInfo* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_admin_v3_ServerInfo_state(const envoy_admin_v3_ServerInfo* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_admin_v3_ServerInfo_has_uptime_current_epoch(const envoy_admin_v3_ServerInfo *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_admin_v3_ServerInfo_has_uptime_current_epoch(const envoy_admin_v3_ServerInfo* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_ServerInfo_clear_uptime_current_epoch(const envoy_admin_v3_ServerInfo* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_admin_v3_ServerInfo_uptime_current_epoch(const envoy_admin_v3_ServerInfo* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_admin_v3_ServerInfo_has_uptime_all_epochs(const envoy_admin_v3_ServerInfo* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_ServerInfo_clear_uptime_all_epochs(const envoy_admin_v3_ServerInfo* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_ServerInfo_has_uptime_all_epochs(const envoy_admin_v3_ServerInfo *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_Duration* envoy_admin_v3_ServerInfo_uptime_all_epochs(const envoy_admin_v3_ServerInfo* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_Duration*);
+}
+UPB_INLINE void envoy_admin_v3_ServerInfo_clear_hot_restart_version(const envoy_admin_v3_ServerInfo* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_ServerInfo_hot_restart_version(const envoy_admin_v3_ServerInfo* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView);
+}
+UPB_INLINE bool envoy_admin_v3_ServerInfo_has_command_line_options(const envoy_admin_v3_ServerInfo* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_admin_v3_ServerInfo_clear_command_line_options(const envoy_admin_v3_ServerInfo* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_ServerInfo_has_command_line_options(const envoy_admin_v3_ServerInfo *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const envoy_admin_v3_CommandLineOptions* envoy_admin_v3_ServerInfo_command_line_options(const envoy_admin_v3_ServerInfo* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const envoy_admin_v3_CommandLineOptions*);
}
-UPB_INLINE bool envoy_admin_v3_ServerInfo_has_node(const envoy_admin_v3_ServerInfo *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_admin_v3_ServerInfo_has_node(const envoy_admin_v3_ServerInfo* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_admin_v3_ServerInfo_clear_node(const envoy_admin_v3_ServerInfo* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_Node* envoy_admin_v3_ServerInfo_node(const envoy_admin_v3_ServerInfo* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const struct envoy_config_core_v3_Node*);
}
@@ -121,9 +154,9 @@ UPB_INLINE void envoy_admin_v3_ServerInfo_set_state(envoy_admin_v3_ServerInfo *m
}
UPB_INLINE void envoy_admin_v3_ServerInfo_set_uptime_current_epoch(envoy_admin_v3_ServerInfo *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_ServerInfo_mutable_uptime_current_epoch(envoy_admin_v3_ServerInfo *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_ServerInfo_mutable_uptime_current_epoch(envoy_admin_v3_ServerInfo* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_admin_v3_ServerInfo_uptime_current_epoch(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -134,9 +167,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_ServerInfo_mutable_up
}
UPB_INLINE void envoy_admin_v3_ServerInfo_set_uptime_all_epochs(envoy_admin_v3_ServerInfo *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 48), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_ServerInfo_mutable_uptime_all_epochs(envoy_admin_v3_ServerInfo *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_ServerInfo_mutable_uptime_all_epochs(envoy_admin_v3_ServerInfo* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_admin_v3_ServerInfo_uptime_all_epochs(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -146,13 +179,13 @@ UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_ServerInfo_mutable_up
return sub;
}
UPB_INLINE void envoy_admin_v3_ServerInfo_set_hot_restart_version(envoy_admin_v3_ServerInfo *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = value;
}
UPB_INLINE void envoy_admin_v3_ServerInfo_set_command_line_options(envoy_admin_v3_ServerInfo *msg, envoy_admin_v3_CommandLineOptions* value) {
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(32, 56), envoy_admin_v3_CommandLineOptions*) = value;
}
-UPB_INLINE struct envoy_admin_v3_CommandLineOptions* envoy_admin_v3_ServerInfo_mutable_command_line_options(envoy_admin_v3_ServerInfo *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_CommandLineOptions* envoy_admin_v3_ServerInfo_mutable_command_line_options(envoy_admin_v3_ServerInfo* msg, upb_Arena* arena) {
struct envoy_admin_v3_CommandLineOptions* sub = (struct envoy_admin_v3_CommandLineOptions*)envoy_admin_v3_ServerInfo_command_line_options(msg);
if (sub == NULL) {
sub = (struct envoy_admin_v3_CommandLineOptions*)_upb_Message_New(&envoy_admin_v3_CommandLineOptions_msginit, arena);
@@ -165,7 +198,7 @@ UPB_INLINE void envoy_admin_v3_ServerInfo_set_node(envoy_admin_v3_ServerInfo *ms
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(36, 64), struct envoy_config_core_v3_Node*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Node* envoy_admin_v3_ServerInfo_mutable_node(envoy_admin_v3_ServerInfo *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Node* envoy_admin_v3_ServerInfo_mutable_node(envoy_admin_v3_ServerInfo* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Node* sub = (struct envoy_config_core_v3_Node*)envoy_admin_v3_ServerInfo_node(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Node*)_upb_Message_New(&envoy_config_core_v3_Node_msginit, arena);
@@ -200,119 +233,235 @@ UPB_INLINE envoy_admin_v3_CommandLineOptions* envoy_admin_v3_CommandLineOptions_
return ret;
}
UPB_INLINE char* envoy_admin_v3_CommandLineOptions_serialize(const envoy_admin_v3_CommandLineOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_CommandLineOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_CommandLineOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_CommandLineOptions_serialize_ex(const envoy_admin_v3_CommandLineOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_CommandLineOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_CommandLineOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_base_id(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(168, 288), uint64_t) = 0;
}
UPB_INLINE uint64_t envoy_admin_v3_CommandLineOptions_base_id(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(168, 288), uint64_t);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_concurrency(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_admin_v3_CommandLineOptions_concurrency(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 28), uint32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_config_path(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 56), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_CommandLineOptions_config_path(const envoy_admin_v3_CommandLineOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(52, 56), upb_StringView);
}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_config_yaml(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 72), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_admin_v3_CommandLineOptions_config_yaml(const envoy_admin_v3_CommandLineOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(60, 72), upb_StringView);
}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_allow_unknown_static_fields(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
+}
UPB_INLINE bool envoy_admin_v3_CommandLineOptions_allow_unknown_static_fields(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 40), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_admin_address_path(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 88), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_CommandLineOptions_admin_address_path(const envoy_admin_v3_CommandLineOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(68, 88), upb_StringView);
}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_local_address_ip_version(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_admin_v3_CommandLineOptions_local_address_ip_version(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_log_level(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 104), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_CommandLineOptions_log_level(const envoy_admin_v3_CommandLineOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(76, 104), upb_StringView);
}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_component_log_level(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(84, 120), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_admin_v3_CommandLineOptions_component_log_level(const envoy_admin_v3_CommandLineOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(84, 120), upb_StringView);
}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_log_format(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(92, 136), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_admin_v3_CommandLineOptions_log_format(const envoy_admin_v3_CommandLineOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(92, 136), upb_StringView);
}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_log_path(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(100, 152), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_admin_v3_CommandLineOptions_log_path(const envoy_admin_v3_CommandLineOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(100, 152), upb_StringView);
}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_service_cluster(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(108, 168), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_admin_v3_CommandLineOptions_service_cluster(const envoy_admin_v3_CommandLineOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(108, 168), upb_StringView);
}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_service_node(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(116, 184), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_admin_v3_CommandLineOptions_service_node(const envoy_admin_v3_CommandLineOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(116, 184), upb_StringView);
}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_service_zone(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(124, 200), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_admin_v3_CommandLineOptions_service_zone(const envoy_admin_v3_CommandLineOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(124, 200), upb_StringView);
}
-UPB_INLINE bool envoy_admin_v3_CommandLineOptions_has_file_flush_interval(const envoy_admin_v3_CommandLineOptions *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_admin_v3_CommandLineOptions_has_file_flush_interval(const envoy_admin_v3_CommandLineOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_file_flush_interval(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(132, 216), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_admin_v3_CommandLineOptions_file_flush_interval(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(148, 248), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(132, 216), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_admin_v3_CommandLineOptions_has_drain_time(const envoy_admin_v3_CommandLineOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_drain_time(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(136, 224), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_CommandLineOptions_has_drain_time(const envoy_admin_v3_CommandLineOptions *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_Duration* envoy_admin_v3_CommandLineOptions_drain_time(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(152, 256), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(136, 224), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_admin_v3_CommandLineOptions_has_parent_shutdown_time(const envoy_admin_v3_CommandLineOptions* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_parent_shutdown_time(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(140, 232), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_admin_v3_CommandLineOptions_has_parent_shutdown_time(const envoy_admin_v3_CommandLineOptions *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct google_protobuf_Duration* envoy_admin_v3_CommandLineOptions_parent_shutdown_time(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(156, 264), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(140, 232), const struct google_protobuf_Duration*);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_mode(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t) = 0;
}
UPB_INLINE int32_t envoy_admin_v3_CommandLineOptions_mode(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 20), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_disable_hot_restart(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_CommandLineOptions_disable_hot_restart(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(41, 41), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_enable_mutex_tracing(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(21, 21), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_CommandLineOptions_enable_mutex_tracing(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(42, 42), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(21, 21), bool);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_restart_epoch(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_admin_v3_CommandLineOptions_restart_epoch(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), uint32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint32_t);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_cpuset_threads(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 28), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_CommandLineOptions_cpuset_threads(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(43, 43), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 28), bool);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_reject_unknown_dynamic_fields(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(29, 29), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_CommandLineOptions_reject_unknown_dynamic_fields(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(44, 44), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(29, 29), bool);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_log_format_escaped(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(30, 30), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_CommandLineOptions_log_format_escaped(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(45, 45), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(30, 30), bool);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_disabled_extensions(const envoy_admin_v3_CommandLineOptions* msg) {
+ _upb_array_detach(msg, UPB_SIZE(144, 240));
+}
+UPB_INLINE upb_StringView const* envoy_admin_v3_CommandLineOptions_disabled_extensions(const envoy_admin_v3_CommandLineOptions* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(144, 240), len);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_ignore_unknown_dynamic_fields(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(31, 31), bool) = 0;
}
-UPB_INLINE upb_StringView const* envoy_admin_v3_CommandLineOptions_disabled_extensions(const envoy_admin_v3_CommandLineOptions *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(160, 272), len); }
UPB_INLINE bool envoy_admin_v3_CommandLineOptions_ignore_unknown_dynamic_fields(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(46, 46), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(31, 31), bool);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_use_dynamic_base_id(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 32), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_CommandLineOptions_use_dynamic_base_id(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(47, 47), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), bool);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_base_id_path(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(148, 248), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_CommandLineOptions_base_id_path(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(132, 216), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(148, 248), upb_StringView);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_drain_strategy(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 36), int32_t) = 0;
}
UPB_INLINE int32_t envoy_admin_v3_CommandLineOptions_drain_strategy(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 36), int32_t);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_enable_fine_grain_logging(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 40), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_CommandLineOptions_enable_fine_grain_logging(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 40), bool);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_socket_path(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(156, 264), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_CommandLineOptions_socket_path(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(140, 232), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(156, 264), upb_StringView);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_socket_mode(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 44), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_admin_v3_CommandLineOptions_socket_mode(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(36, 36), uint32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 44), uint32_t);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_enable_core_dump(const envoy_admin_v3_CommandLineOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool) = 0;
}
UPB_INLINE bool envoy_admin_v3_CommandLineOptions_enable_core_dump(const envoy_admin_v3_CommandLineOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(49, 49), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool);
+}
+UPB_INLINE void envoy_admin_v3_CommandLineOptions_clear_stats_tag(const envoy_admin_v3_CommandLineOptions* msg) {
+ _upb_array_detach(msg, UPB_SIZE(164, 280));
+}
+UPB_INLINE upb_StringView const* envoy_admin_v3_CommandLineOptions_stats_tag(const envoy_admin_v3_CommandLineOptions* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(164, 280), len);
}
-UPB_INLINE upb_StringView const* envoy_admin_v3_CommandLineOptions_stats_tag(const envoy_admin_v3_CommandLineOptions *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(164, 280), len); }
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_base_id(envoy_admin_v3_CommandLineOptions *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(168, 288), uint64_t) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_concurrency(envoy_admin_v3_CommandLineOptions *msg, uint32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(28, 28), uint32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_config_path(envoy_admin_v3_CommandLineOptions *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(52, 56), upb_StringView) = value;
@@ -321,13 +470,13 @@ UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_config_yaml(envoy_admin_v3
*UPB_PTR_AT(msg, UPB_SIZE(60, 72), upb_StringView) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_allow_unknown_static_fields(envoy_admin_v3_CommandLineOptions *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(40, 40), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_admin_address_path(envoy_admin_v3_CommandLineOptions *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(68, 88), upb_StringView) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_local_address_ip_version(envoy_admin_v3_CommandLineOptions *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_log_level(envoy_admin_v3_CommandLineOptions *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(76, 104), upb_StringView) = value;
@@ -352,9 +501,9 @@ UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_service_zone(envoy_admin_v
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_file_flush_interval(envoy_admin_v3_CommandLineOptions *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(148, 248), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(132, 216), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_CommandLineOptions_mutable_file_flush_interval(envoy_admin_v3_CommandLineOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_CommandLineOptions_mutable_file_flush_interval(envoy_admin_v3_CommandLineOptions* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_admin_v3_CommandLineOptions_file_flush_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -365,9 +514,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_CommandLineOptions_mu
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_drain_time(envoy_admin_v3_CommandLineOptions *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(152, 256), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(136, 224), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_CommandLineOptions_mutable_drain_time(envoy_admin_v3_CommandLineOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_CommandLineOptions_mutable_drain_time(envoy_admin_v3_CommandLineOptions* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_admin_v3_CommandLineOptions_drain_time(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -378,9 +527,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_CommandLineOptions_mu
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_parent_shutdown_time(envoy_admin_v3_CommandLineOptions *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(156, 264), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(140, 232), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_CommandLineOptions_mutable_parent_shutdown_time(envoy_admin_v3_CommandLineOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_CommandLineOptions_mutable_parent_shutdown_time(envoy_admin_v3_CommandLineOptions* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_admin_v3_CommandLineOptions_parent_shutdown_time(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -390,69 +539,67 @@ UPB_INLINE struct google_protobuf_Duration* envoy_admin_v3_CommandLineOptions_mu
return sub;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_mode(envoy_admin_v3_CommandLineOptions *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 20), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_disable_hot_restart(envoy_admin_v3_CommandLineOptions *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(41, 41), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_enable_mutex_tracing(envoy_admin_v3_CommandLineOptions *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(42, 42), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(21, 21), bool) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_restart_epoch(envoy_admin_v3_CommandLineOptions *msg, uint32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(32, 32), uint32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint32_t) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_cpuset_threads(envoy_admin_v3_CommandLineOptions *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(43, 43), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 28), bool) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_reject_unknown_dynamic_fields(envoy_admin_v3_CommandLineOptions *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(44, 44), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(29, 29), bool) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_log_format_escaped(envoy_admin_v3_CommandLineOptions *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(45, 45), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(30, 30), bool) = value;
}
-UPB_INLINE upb_StringView* envoy_admin_v3_CommandLineOptions_mutable_disabled_extensions(envoy_admin_v3_CommandLineOptions *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(160, 272), len);
+UPB_INLINE upb_StringView* envoy_admin_v3_CommandLineOptions_mutable_disabled_extensions(envoy_admin_v3_CommandLineOptions* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(144, 240), len);
}
-UPB_INLINE upb_StringView* envoy_admin_v3_CommandLineOptions_resize_disabled_extensions(envoy_admin_v3_CommandLineOptions *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(160, 272), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_admin_v3_CommandLineOptions_resize_disabled_extensions(envoy_admin_v3_CommandLineOptions* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(144, 240), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_admin_v3_CommandLineOptions_add_disabled_extensions(envoy_admin_v3_CommandLineOptions *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(160, 272), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_admin_v3_CommandLineOptions_add_disabled_extensions(envoy_admin_v3_CommandLineOptions* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(144, 240), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_ignore_unknown_dynamic_fields(envoy_admin_v3_CommandLineOptions *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(46, 46), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(31, 31), bool) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_use_dynamic_base_id(envoy_admin_v3_CommandLineOptions *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(47, 47), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 32), bool) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_base_id_path(envoy_admin_v3_CommandLineOptions *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(132, 216), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(148, 248), upb_StringView) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_drain_strategy(envoy_admin_v3_CommandLineOptions *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 36), int32_t) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_enable_fine_grain_logging(envoy_admin_v3_CommandLineOptions *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 40), bool) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_socket_path(envoy_admin_v3_CommandLineOptions *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(140, 232), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(156, 264), upb_StringView) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_socket_mode(envoy_admin_v3_CommandLineOptions *msg, uint32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(36, 36), uint32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 44), uint32_t) = value;
}
UPB_INLINE void envoy_admin_v3_CommandLineOptions_set_enable_core_dump(envoy_admin_v3_CommandLineOptions *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(49, 49), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool) = value;
}
-UPB_INLINE upb_StringView* envoy_admin_v3_CommandLineOptions_mutable_stats_tag(envoy_admin_v3_CommandLineOptions *msg, size_t *len) {
+UPB_INLINE upb_StringView* envoy_admin_v3_CommandLineOptions_mutable_stats_tag(envoy_admin_v3_CommandLineOptions* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(164, 280), len);
}
-UPB_INLINE upb_StringView* envoy_admin_v3_CommandLineOptions_resize_stats_tag(envoy_admin_v3_CommandLineOptions *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* envoy_admin_v3_CommandLineOptions_resize_stats_tag(envoy_admin_v3_CommandLineOptions* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(164, 280), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_admin_v3_CommandLineOptions_add_stats_tag(envoy_admin_v3_CommandLineOptions *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(164, 280), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_admin_v3_CommandLineOptions_add_stats_tag(envoy_admin_v3_CommandLineOptions* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(164, 280), UPB_SIZE(3, 4), &val, arena);
}
extern const upb_MiniTable_File envoy_admin_v3_server_info_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c
index f6cea443f1..fdaef640f4 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c
@@ -21,14 +21,14 @@ static const upb_MiniTable_Sub envoy_admin_v3_TapRequest_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_admin_v3_TapRequest__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_admin_v3_TapRequest_msginit = {
&envoy_admin_v3_TapRequest_submsgs[0],
&envoy_admin_v3_TapRequest__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h
index 3491fad68d..93fc1b10d1 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h
@@ -53,16 +53,28 @@ UPB_INLINE envoy_admin_v3_TapRequest* envoy_admin_v3_TapRequest_parse_ex(const c
return ret;
}
UPB_INLINE char* envoy_admin_v3_TapRequest_serialize(const envoy_admin_v3_TapRequest* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_TapRequest_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_TapRequest_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_admin_v3_TapRequest_serialize_ex(const envoy_admin_v3_TapRequest* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_admin_v3_TapRequest_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_admin_v3_TapRequest_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_admin_v3_TapRequest_clear_config_id(const envoy_admin_v3_TapRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_admin_v3_TapRequest_config_id(const envoy_admin_v3_TapRequest* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_admin_v3_TapRequest_has_tap_config(const envoy_admin_v3_TapRequest *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_admin_v3_TapRequest_has_tap_config(const envoy_admin_v3_TapRequest* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_admin_v3_TapRequest_clear_tap_config(const envoy_admin_v3_TapRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_tap_v3_TapConfig* envoy_admin_v3_TapRequest_tap_config(const envoy_admin_v3_TapRequest* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_tap_v3_TapConfig*);
}
@@ -74,7 +86,7 @@ UPB_INLINE void envoy_admin_v3_TapRequest_set_tap_config(envoy_admin_v3_TapReque
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_tap_v3_TapConfig*) = value;
}
-UPB_INLINE struct envoy_config_tap_v3_TapConfig* envoy_admin_v3_TapRequest_mutable_tap_config(envoy_admin_v3_TapRequest *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_TapConfig* envoy_admin_v3_TapRequest_mutable_tap_config(envoy_admin_v3_TapRequest* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_TapConfig* sub = (struct envoy_config_tap_v3_TapConfig*)envoy_admin_v3_TapRequest_tap_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_TapConfig*)_upb_Message_New(&envoy_config_tap_v3_TapConfig_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c
index 0446d7c553..d91566cbd3 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c
@@ -16,27 +16,27 @@
extern const upb_MiniTable google_protobuf_EnumValueOptions_msginit;
extern const upb_MiniTable google_protobuf_FieldOptions_msginit;
const upb_MiniTable_Extension envoy_annotations_disallowed_by_default_ext = {
- {189503207, 0, 0, 0, 8, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- &google_protobuf_FieldOptions_msginit,
- {.submsg = NULL},
+ {189503207, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ &google_protobuf_FieldOptions_msginit,
+ {.submsg = NULL},
};
const upb_MiniTable_Extension envoy_annotations_deprecated_at_minor_version_ext = {
- {157299826, 0, 0, 0, 9, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- &google_protobuf_FieldOptions_msginit,
- {.submsg = NULL},
+ {157299826, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ &google_protobuf_FieldOptions_msginit,
+ {.submsg = NULL},
};
const upb_MiniTable_Extension envoy_annotations_disallowed_by_default_enum_ext = {
- {70100853, 0, 0, 0, 8, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- &google_protobuf_EnumValueOptions_msginit,
- {.submsg = NULL},
+ {70100853, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ &google_protobuf_EnumValueOptions_msginit,
+ {.submsg = NULL},
};
const upb_MiniTable_Extension envoy_annotations_deprecated_at_minor_version_enum_ext = {
- {181198657, 0, 0, 0, 9, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- &google_protobuf_EnumValueOptions_msginit,
- {.submsg = NULL},
+ {181198657, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ &google_protobuf_EnumValueOptions_msginit,
+ {.submsg = NULL},
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h
index 9f200aa160..bec105c1fe 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h
@@ -30,14 +30,46 @@ extern const upb_MiniTable google_protobuf_EnumValueOptions_msginit;
extern const upb_MiniTable google_protobuf_FieldOptions_msginit;
-UPB_INLINE bool envoy_annotations_has_disallowed_by_default(const struct google_protobuf_FieldOptions *msg) { return _upb_Message_Getext(msg, &envoy_annotations_disallowed_by_default_ext) != NULL; }
-UPB_INLINE bool envoy_annotations_disallowed_by_default(const struct google_protobuf_FieldOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &envoy_annotations_disallowed_by_default_ext); return ext ? *UPB_PTR_AT(&ext->data, 0, bool) : false; }
-UPB_INLINE bool envoy_annotations_has_deprecated_at_minor_version(const struct google_protobuf_FieldOptions *msg) { return _upb_Message_Getext(msg, &envoy_annotations_deprecated_at_minor_version_ext) != NULL; }
-UPB_INLINE upb_StringView envoy_annotations_deprecated_at_minor_version(const struct google_protobuf_FieldOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &envoy_annotations_deprecated_at_minor_version_ext); return ext ? *UPB_PTR_AT(&ext->data, 0, upb_StringView) : upb_StringView_FromString(""); }
-UPB_INLINE bool envoy_annotations_has_disallowed_by_default_enum(const struct google_protobuf_EnumValueOptions *msg) { return _upb_Message_Getext(msg, &envoy_annotations_disallowed_by_default_enum_ext) != NULL; }
-UPB_INLINE bool envoy_annotations_disallowed_by_default_enum(const struct google_protobuf_EnumValueOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &envoy_annotations_disallowed_by_default_enum_ext); return ext ? *UPB_PTR_AT(&ext->data, 0, bool) : false; }
-UPB_INLINE bool envoy_annotations_has_deprecated_at_minor_version_enum(const struct google_protobuf_EnumValueOptions *msg) { return _upb_Message_Getext(msg, &envoy_annotations_deprecated_at_minor_version_enum_ext) != NULL; }
-UPB_INLINE upb_StringView envoy_annotations_deprecated_at_minor_version_enum(const struct google_protobuf_EnumValueOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &envoy_annotations_deprecated_at_minor_version_enum_ext); return ext ? *UPB_PTR_AT(&ext->data, 0, upb_StringView) : upb_StringView_FromString(""); }
+UPB_INLINE bool envoy_annotations_has_disallowed_by_default(const struct google_protobuf_FieldOptions* msg) {
+ return _upb_Message_Getext(msg, &envoy_annotations_disallowed_by_default_ext) != NULL;
+}
+UPB_INLINE void envoy_annotations_clear_disallowed_by_default(struct google_protobuf_FieldOptions* msg) {
+ _upb_Message_Clearext(msg, &envoy_annotations_disallowed_by_default_ext);
+}
+UPB_INLINE bool envoy_annotations_disallowed_by_default(const struct google_protobuf_FieldOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &envoy_annotations_disallowed_by_default_ext);
+ return ext ? *UPB_PTR_AT(&ext->data, 0, bool) : false;
+}
+UPB_INLINE bool envoy_annotations_has_deprecated_at_minor_version(const struct google_protobuf_FieldOptions* msg) {
+ return _upb_Message_Getext(msg, &envoy_annotations_deprecated_at_minor_version_ext) != NULL;
+}
+UPB_INLINE void envoy_annotations_clear_deprecated_at_minor_version(struct google_protobuf_FieldOptions* msg) {
+ _upb_Message_Clearext(msg, &envoy_annotations_deprecated_at_minor_version_ext);
+}
+UPB_INLINE upb_StringView envoy_annotations_deprecated_at_minor_version(const struct google_protobuf_FieldOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &envoy_annotations_deprecated_at_minor_version_ext);
+ return ext ? *UPB_PTR_AT(&ext->data, 0, upb_StringView) : upb_StringView_FromString("");
+}
+UPB_INLINE bool envoy_annotations_has_disallowed_by_default_enum(const struct google_protobuf_EnumValueOptions* msg) {
+ return _upb_Message_Getext(msg, &envoy_annotations_disallowed_by_default_enum_ext) != NULL;
+}
+UPB_INLINE void envoy_annotations_clear_disallowed_by_default_enum(struct google_protobuf_EnumValueOptions* msg) {
+ _upb_Message_Clearext(msg, &envoy_annotations_disallowed_by_default_enum_ext);
+}
+UPB_INLINE bool envoy_annotations_disallowed_by_default_enum(const struct google_protobuf_EnumValueOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &envoy_annotations_disallowed_by_default_enum_ext);
+ return ext ? *UPB_PTR_AT(&ext->data, 0, bool) : false;
+}
+UPB_INLINE bool envoy_annotations_has_deprecated_at_minor_version_enum(const struct google_protobuf_EnumValueOptions* msg) {
+ return _upb_Message_Getext(msg, &envoy_annotations_deprecated_at_minor_version_enum_ext) != NULL;
+}
+UPB_INLINE void envoy_annotations_clear_deprecated_at_minor_version_enum(struct google_protobuf_EnumValueOptions* msg) {
+ _upb_Message_Clearext(msg, &envoy_annotations_deprecated_at_minor_version_enum_ext);
+}
+UPB_INLINE upb_StringView envoy_annotations_deprecated_at_minor_version_enum(const struct google_protobuf_EnumValueOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &envoy_annotations_deprecated_at_minor_version_enum_ext);
+ return ext ? *UPB_PTR_AT(&ext->data, 0, upb_StringView) : upb_StringView_FromString("");
+}
extern const upb_MiniTable_File envoy_annotations_deprecation_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/resource.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/resource.upb.c
index 52b21e0b73..d82588748b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/resource.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/resource.upb.c
@@ -14,13 +14,13 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_annotations_ResourceAnnotation__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_annotations_ResourceAnnotation_msginit = {
NULL,
&envoy_annotations_ResourceAnnotation__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
@@ -30,9 +30,9 @@ static const upb_MiniTable *messages_layout[1] = {
extern const upb_MiniTable envoy_annotations_ResourceAnnotation_msginit;
extern const upb_MiniTable google_protobuf_ServiceOptions_msginit;
const upb_MiniTable_Extension envoy_annotations_resource_ext = {
- {265073217, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_ServiceOptions_msginit,
- {.submsg = &envoy_annotations_ResourceAnnotation_msginit},
+ {265073217, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_ServiceOptions_msginit,
+ {.submsg = &envoy_annotations_ResourceAnnotation_msginit},
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/resource.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/resource.upb.h
index 73c376cfe4..217139c1db 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/resource.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/annotations/resource.upb.h
@@ -54,11 +54,18 @@ UPB_INLINE envoy_annotations_ResourceAnnotation* envoy_annotations_ResourceAnnot
return ret;
}
UPB_INLINE char* envoy_annotations_ResourceAnnotation_serialize(const envoy_annotations_ResourceAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_annotations_ResourceAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_annotations_ResourceAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_annotations_ResourceAnnotation_serialize_ex(const envoy_annotations_ResourceAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_annotations_ResourceAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_annotations_ResourceAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_annotations_ResourceAnnotation_clear_type(const envoy_annotations_ResourceAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_annotations_ResourceAnnotation_type(const envoy_annotations_ResourceAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -68,8 +75,23 @@ UPB_INLINE void envoy_annotations_ResourceAnnotation_set_type(envoy_annotations_
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
-UPB_INLINE bool envoy_annotations_has_resource(const struct google_protobuf_ServiceOptions *msg) { return _upb_Message_Getext(msg, &envoy_annotations_resource_ext) != NULL; }
-UPB_INLINE const envoy_annotations_ResourceAnnotation* envoy_annotations_resource(const struct google_protobuf_ServiceOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &envoy_annotations_resource_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const envoy_annotations_ResourceAnnotation*); }
+UPB_INLINE bool envoy_annotations_has_resource(const struct google_protobuf_ServiceOptions* msg) {
+ return _upb_Message_Getext(msg, &envoy_annotations_resource_ext) != NULL;
+}
+UPB_INLINE void envoy_annotations_clear_resource(struct google_protobuf_ServiceOptions* msg) {
+ _upb_Message_Clearext(msg, &envoy_annotations_resource_ext);
+}
+UPB_INLINE const envoy_annotations_ResourceAnnotation* envoy_annotations_resource(const struct google_protobuf_ServiceOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &envoy_annotations_resource_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const envoy_annotations_ResourceAnnotation*);
+}
+UPB_INLINE void envoy_annotations_set_resource(struct google_protobuf_ServiceOptions* msg, const envoy_annotations_ResourceAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &envoy_annotations_resource_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const envoy_annotations_ResourceAnnotation*) = ext;
+}
extern const upb_MiniTable_File envoy_annotations_resource_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c
index 6a93a658b5..606b52d9f1 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c
@@ -27,51 +27,51 @@ static const upb_MiniTable_Sub envoy_config_accesslog_v3_AccessLog_submsgs[2] =
};
static const upb_MiniTable_Field envoy_config_accesslog_v3_AccessLog__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), UPB_SIZE(-21, -41), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 32), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_accesslog_v3_AccessLog_msginit = {
&envoy_config_accesslog_v3_AccessLog_submsgs[0],
&envoy_config_accesslog_v3_AccessLog__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_accesslog_v3_AccessLogFilter_submsgs[12] = {
- {.submsg = &envoy_config_accesslog_v3_AndFilter_msginit},
+ {.submsg = &envoy_config_accesslog_v3_StatusCodeFilter_msginit},
{.submsg = &envoy_config_accesslog_v3_DurationFilter_msginit},
- {.submsg = &envoy_config_accesslog_v3_ExtensionFilter_msginit},
- {.submsg = &envoy_config_accesslog_v3_GrpcStatusFilter_msginit},
- {.submsg = &envoy_config_accesslog_v3_HeaderFilter_msginit},
- {.submsg = &envoy_config_accesslog_v3_MetadataFilter_msginit},
{.submsg = &envoy_config_accesslog_v3_NotHealthCheckFilter_msginit},
+ {.submsg = &envoy_config_accesslog_v3_TraceableFilter_msginit},
+ {.submsg = &envoy_config_accesslog_v3_RuntimeFilter_msginit},
+ {.submsg = &envoy_config_accesslog_v3_AndFilter_msginit},
{.submsg = &envoy_config_accesslog_v3_OrFilter_msginit},
+ {.submsg = &envoy_config_accesslog_v3_HeaderFilter_msginit},
{.submsg = &envoy_config_accesslog_v3_ResponseFlagFilter_msginit},
- {.submsg = &envoy_config_accesslog_v3_RuntimeFilter_msginit},
- {.submsg = &envoy_config_accesslog_v3_StatusCodeFilter_msginit},
- {.submsg = &envoy_config_accesslog_v3_TraceableFilter_msginit},
+ {.submsg = &envoy_config_accesslog_v3_GrpcStatusFilter_msginit},
+ {.submsg = &envoy_config_accesslog_v3_ExtensionFilter_msginit},
+ {.submsg = &envoy_config_accesslog_v3_MetadataFilter_msginit},
};
static const upb_MiniTable_Field envoy_config_accesslog_v3_AccessLogFilter__fields[12] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 10, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 11, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 9, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 8, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 10, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 11, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_accesslog_v3_AccessLogFilter_msginit = {
&envoy_config_accesslog_v3_AccessLogFilter_submsgs[0],
&envoy_config_accesslog_v3_AccessLogFilter__fields[0],
- UPB_SIZE(8, 16), 12, upb_ExtMode_NonExtendable, 12, 255, 0,
+ UPB_SIZE(8, 16), 12, kUpb_ExtMode_NonExtendable, 12, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_accesslog_v3_ComparisonFilter_submsgs[1] = {
@@ -79,14 +79,14 @@ static const upb_MiniTable_Sub envoy_config_accesslog_v3_ComparisonFilter_submsg
};
static const upb_MiniTable_Field envoy_config_accesslog_v3_ComparisonFilter__fields[2] = {
- {1, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_accesslog_v3_ComparisonFilter_msginit = {
&envoy_config_accesslog_v3_ComparisonFilter_submsgs[0],
&envoy_config_accesslog_v3_ComparisonFilter__fields[0],
- UPB_SIZE(16, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_accesslog_v3_StatusCodeFilter_submsgs[1] = {
@@ -94,13 +94,13 @@ static const upb_MiniTable_Sub envoy_config_accesslog_v3_StatusCodeFilter_submsg
};
static const upb_MiniTable_Field envoy_config_accesslog_v3_StatusCodeFilter__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_accesslog_v3_StatusCodeFilter_msginit = {
&envoy_config_accesslog_v3_StatusCodeFilter_submsgs[0],
&envoy_config_accesslog_v3_StatusCodeFilter__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_accesslog_v3_DurationFilter_submsgs[1] = {
@@ -108,25 +108,25 @@ static const upb_MiniTable_Sub envoy_config_accesslog_v3_DurationFilter_submsgs[
};
static const upb_MiniTable_Field envoy_config_accesslog_v3_DurationFilter__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_accesslog_v3_DurationFilter_msginit = {
&envoy_config_accesslog_v3_DurationFilter_submsgs[0],
&envoy_config_accesslog_v3_DurationFilter__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
const upb_MiniTable envoy_config_accesslog_v3_NotHealthCheckFilter_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
const upb_MiniTable envoy_config_accesslog_v3_TraceableFilter_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_accesslog_v3_RuntimeFilter_submsgs[1] = {
@@ -134,15 +134,15 @@ static const upb_MiniTable_Sub envoy_config_accesslog_v3_RuntimeFilter_submsgs[1
};
static const upb_MiniTable_Field envoy_config_accesslog_v3_RuntimeFilter__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_accesslog_v3_RuntimeFilter_msginit = {
&envoy_config_accesslog_v3_RuntimeFilter_submsgs[0],
&envoy_config_accesslog_v3_RuntimeFilter__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_accesslog_v3_AndFilter_submsgs[1] = {
@@ -150,13 +150,13 @@ static const upb_MiniTable_Sub envoy_config_accesslog_v3_AndFilter_submsgs[1] =
};
static const upb_MiniTable_Field envoy_config_accesslog_v3_AndFilter__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_accesslog_v3_AndFilter_msginit = {
&envoy_config_accesslog_v3_AndFilter_submsgs[0],
&envoy_config_accesslog_v3_AndFilter__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_accesslog_v3_OrFilter_submsgs[1] = {
@@ -164,13 +164,13 @@ static const upb_MiniTable_Sub envoy_config_accesslog_v3_OrFilter_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_accesslog_v3_OrFilter__fields[1] = {
- {2, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_accesslog_v3_OrFilter_msginit = {
&envoy_config_accesslog_v3_OrFilter_submsgs[0],
&envoy_config_accesslog_v3_OrFilter__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_accesslog_v3_HeaderFilter_submsgs[1] = {
@@ -178,34 +178,34 @@ static const upb_MiniTable_Sub envoy_config_accesslog_v3_HeaderFilter_submsgs[1]
};
static const upb_MiniTable_Field envoy_config_accesslog_v3_HeaderFilter__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_accesslog_v3_HeaderFilter_msginit = {
&envoy_config_accesslog_v3_HeaderFilter_submsgs[0],
&envoy_config_accesslog_v3_HeaderFilter__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_accesslog_v3_ResponseFlagFilter__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_accesslog_v3_ResponseFlagFilter_msginit = {
NULL,
&envoy_config_accesslog_v3_ResponseFlagFilter__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_accesslog_v3_GrpcStatusFilter__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 5, kUpb_FieldMode_Array | upb_LabelFlags_IsPacked | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | kUpb_LabelFlags_IsPacked | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_accesslog_v3_GrpcStatusFilter_msginit = {
NULL,
&envoy_config_accesslog_v3_GrpcStatusFilter__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_accesslog_v3_MetadataFilter_submsgs[2] = {
@@ -214,14 +214,14 @@ static const upb_MiniTable_Sub envoy_config_accesslog_v3_MetadataFilter_submsgs[
};
static const upb_MiniTable_Field envoy_config_accesslog_v3_MetadataFilter__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_accesslog_v3_MetadataFilter_msginit = {
&envoy_config_accesslog_v3_MetadataFilter_submsgs[0],
&envoy_config_accesslog_v3_MetadataFilter__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_accesslog_v3_ExtensionFilter_submsgs[1] = {
@@ -229,14 +229,14 @@ static const upb_MiniTable_Sub envoy_config_accesslog_v3_ExtensionFilter_submsgs
};
static const upb_MiniTable_Field envoy_config_accesslog_v3_ExtensionFilter__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_accesslog_v3_ExtensionFilter_msginit = {
&envoy_config_accesslog_v3_ExtensionFilter_submsgs[0],
&envoy_config_accesslog_v3_ExtensionFilter__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[15] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h
index 9b3aadc665..64fc927959 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h
@@ -131,36 +131,56 @@ UPB_INLINE envoy_config_accesslog_v3_AccessLog* envoy_config_accesslog_v3_Access
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_AccessLog_serialize(const envoy_config_accesslog_v3_AccessLog* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_AccessLog_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_AccessLog_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_AccessLog_serialize_ex(const envoy_config_accesslog_v3_AccessLog* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_AccessLog_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_AccessLog_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_accesslog_v3_AccessLog_config_type_typed_config = 4,
envoy_config_accesslog_v3_AccessLog_config_type_NOT_SET = 0
} envoy_config_accesslog_v3_AccessLog_config_type_oneofcases;
-UPB_INLINE envoy_config_accesslog_v3_AccessLog_config_type_oneofcases envoy_config_accesslog_v3_AccessLog_config_type_case(const envoy_config_accesslog_v3_AccessLog* msg) { return (envoy_config_accesslog_v3_AccessLog_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(20, 40), int32_t); }
-
+UPB_INLINE envoy_config_accesslog_v3_AccessLog_config_type_oneofcases envoy_config_accesslog_v3_AccessLog_config_type_case(const envoy_config_accesslog_v3_AccessLog* msg) {
+ return (envoy_config_accesslog_v3_AccessLog_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLog_clear_name(const envoy_config_accesslog_v3_AccessLog* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_accesslog_v3_AccessLog_name(const envoy_config_accesslog_v3_AccessLog* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AccessLog_has_filter(const envoy_config_accesslog_v3_AccessLog* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLog_clear_filter(const envoy_config_accesslog_v3_AccessLog* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_accesslog_v3_AccessLog_has_filter(const envoy_config_accesslog_v3_AccessLog *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_accesslog_v3_AccessLogFilter* envoy_config_accesslog_v3_AccessLog_filter(const envoy_config_accesslog_v3_AccessLog* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_config_accesslog_v3_AccessLogFilter*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const envoy_config_accesslog_v3_AccessLogFilter*);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AccessLog_has_typed_config(const envoy_config_accesslog_v3_AccessLog* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 4;
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLog_clear_typed_config(const envoy_config_accesslog_v3_AccessLog* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(20, 32), 0, UPB_SIZE(4, 4), envoy_config_accesslog_v3_AccessLog_config_type_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_accesslog_v3_AccessLog_typed_config(const envoy_config_accesslog_v3_AccessLog* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(20, 32), UPB_SIZE(4, 4), 4, NULL);
}
-UPB_INLINE bool envoy_config_accesslog_v3_AccessLog_has_typed_config(const envoy_config_accesslog_v3_AccessLog *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 4; }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_accesslog_v3_AccessLog_typed_config(const envoy_config_accesslog_v3_AccessLog *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(16, 32), UPB_SIZE(20, 40), 4, NULL); }
UPB_INLINE void envoy_config_accesslog_v3_AccessLog_set_name(envoy_config_accesslog_v3_AccessLog *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_accesslog_v3_AccessLog_set_filter(envoy_config_accesslog_v3_AccessLog *msg, envoy_config_accesslog_v3_AccessLogFilter* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_config_accesslog_v3_AccessLogFilter*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), envoy_config_accesslog_v3_AccessLogFilter*) = value;
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLogFilter* envoy_config_accesslog_v3_AccessLog_mutable_filter(envoy_config_accesslog_v3_AccessLog *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLogFilter* envoy_config_accesslog_v3_AccessLog_mutable_filter(envoy_config_accesslog_v3_AccessLog* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_AccessLogFilter* sub = (struct envoy_config_accesslog_v3_AccessLogFilter*)envoy_config_accesslog_v3_AccessLog_filter(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_AccessLogFilter*)_upb_Message_New(&envoy_config_accesslog_v3_AccessLogFilter_msginit, arena);
@@ -170,9 +190,9 @@ UPB_INLINE struct envoy_config_accesslog_v3_AccessLogFilter* envoy_config_access
return sub;
}
UPB_INLINE void envoy_config_accesslog_v3_AccessLog_set_typed_config(envoy_config_accesslog_v3_AccessLog *msg, struct google_protobuf_Any* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(16, 32), value, UPB_SIZE(20, 40), 4);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(20, 32), value, UPB_SIZE(4, 4), 4);
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_accesslog_v3_AccessLog_mutable_typed_config(envoy_config_accesslog_v3_AccessLog *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_accesslog_v3_AccessLog_mutable_typed_config(envoy_config_accesslog_v3_AccessLog* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_accesslog_v3_AccessLog_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -207,11 +227,15 @@ UPB_INLINE envoy_config_accesslog_v3_AccessLogFilter* envoy_config_accesslog_v3_
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_AccessLogFilter_serialize(const envoy_config_accesslog_v3_AccessLogFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_AccessLogFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_AccessLogFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_AccessLogFilter_serialize_ex(const envoy_config_accesslog_v3_AccessLogFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_AccessLogFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_AccessLogFilter_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_status_code_filter = 1,
@@ -228,37 +252,122 @@ typedef enum {
envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_metadata_filter = 12,
envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_NOT_SET = 0
} envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_oneofcases;
-UPB_INLINE envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_oneofcases envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_case(const envoy_config_accesslog_v3_AccessLogFilter* msg) { return (envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_status_code_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_accesslog_v3_StatusCodeFilter* envoy_config_accesslog_v3_AccessLogFilter_status_code_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_StatusCodeFilter*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_duration_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const envoy_config_accesslog_v3_DurationFilter* envoy_config_accesslog_v3_AccessLogFilter_duration_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_DurationFilter*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_not_health_check_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const envoy_config_accesslog_v3_NotHealthCheckFilter* envoy_config_accesslog_v3_AccessLogFilter_not_health_check_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_NotHealthCheckFilter*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
-UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_traceable_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 4; }
-UPB_INLINE const envoy_config_accesslog_v3_TraceableFilter* envoy_config_accesslog_v3_AccessLogFilter_traceable_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_TraceableFilter*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 4, NULL); }
-UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_runtime_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 5; }
-UPB_INLINE const envoy_config_accesslog_v3_RuntimeFilter* envoy_config_accesslog_v3_AccessLogFilter_runtime_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_RuntimeFilter*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 5, NULL); }
-UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_and_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 6; }
-UPB_INLINE const envoy_config_accesslog_v3_AndFilter* envoy_config_accesslog_v3_AccessLogFilter_and_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_AndFilter*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 6, NULL); }
-UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_or_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 7; }
-UPB_INLINE const envoy_config_accesslog_v3_OrFilter* envoy_config_accesslog_v3_AccessLogFilter_or_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_OrFilter*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 7, NULL); }
-UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_header_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 8; }
-UPB_INLINE const envoy_config_accesslog_v3_HeaderFilter* envoy_config_accesslog_v3_AccessLogFilter_header_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_HeaderFilter*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 8, NULL); }
-UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_response_flag_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 9; }
-UPB_INLINE const envoy_config_accesslog_v3_ResponseFlagFilter* envoy_config_accesslog_v3_AccessLogFilter_response_flag_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_ResponseFlagFilter*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 9, NULL); }
-UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_grpc_status_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 10; }
-UPB_INLINE const envoy_config_accesslog_v3_GrpcStatusFilter* envoy_config_accesslog_v3_AccessLogFilter_grpc_status_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_GrpcStatusFilter*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 10, NULL); }
-UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_extension_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 11; }
-UPB_INLINE const envoy_config_accesslog_v3_ExtensionFilter* envoy_config_accesslog_v3_AccessLogFilter_extension_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_ExtensionFilter*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 11, NULL); }
-UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_metadata_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 12; }
-UPB_INLINE const envoy_config_accesslog_v3_MetadataFilter* envoy_config_accesslog_v3_AccessLogFilter_metadata_filter(const envoy_config_accesslog_v3_AccessLogFilter *msg) { return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_MetadataFilter*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 12, NULL); }
+UPB_INLINE envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_oneofcases envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_case(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return (envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_status_code_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_clear_status_code_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_StatusCodeFilter*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_accesslog_v3_StatusCodeFilter* envoy_config_accesslog_v3_AccessLogFilter_status_code_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_StatusCodeFilter*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_duration_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_clear_duration_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_DurationFilter*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_accesslog_v3_DurationFilter* envoy_config_accesslog_v3_AccessLogFilter_duration_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_DurationFilter*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_not_health_check_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_clear_not_health_check_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_NotHealthCheckFilter*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_accesslog_v3_NotHealthCheckFilter* envoy_config_accesslog_v3_AccessLogFilter_not_health_check_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_NotHealthCheckFilter*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_traceable_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_clear_traceable_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_TraceableFilter*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_accesslog_v3_TraceableFilter* envoy_config_accesslog_v3_AccessLogFilter_traceable_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_TraceableFilter*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, NULL);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_runtime_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_clear_runtime_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_RuntimeFilter*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_accesslog_v3_RuntimeFilter* envoy_config_accesslog_v3_AccessLogFilter_runtime_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_RuntimeFilter*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 5, NULL);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_and_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 6;
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_clear_and_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_AndFilter*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_accesslog_v3_AndFilter* envoy_config_accesslog_v3_AccessLogFilter_and_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_AndFilter*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 6, NULL);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_or_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 7;
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_clear_or_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_OrFilter*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_accesslog_v3_OrFilter* envoy_config_accesslog_v3_AccessLogFilter_or_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_OrFilter*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 7, NULL);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_header_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 8;
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_clear_header_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_HeaderFilter*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_accesslog_v3_HeaderFilter* envoy_config_accesslog_v3_AccessLogFilter_header_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_HeaderFilter*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 8, NULL);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_response_flag_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 9;
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_clear_response_flag_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_ResponseFlagFilter*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_accesslog_v3_ResponseFlagFilter* envoy_config_accesslog_v3_AccessLogFilter_response_flag_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_ResponseFlagFilter*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 9, NULL);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_grpc_status_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 10;
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_clear_grpc_status_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_GrpcStatusFilter*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_accesslog_v3_GrpcStatusFilter* envoy_config_accesslog_v3_AccessLogFilter_grpc_status_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_GrpcStatusFilter*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 10, NULL);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_extension_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 11;
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_clear_extension_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_ExtensionFilter*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_accesslog_v3_ExtensionFilter* envoy_config_accesslog_v3_AccessLogFilter_extension_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_ExtensionFilter*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 11, NULL);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AccessLogFilter_has_metadata_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 12;
+}
+UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_clear_metadata_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_MetadataFilter*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_accesslog_v3_AccessLogFilter_filter_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_accesslog_v3_MetadataFilter* envoy_config_accesslog_v3_AccessLogFilter_metadata_filter(const envoy_config_accesslog_v3_AccessLogFilter* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_accesslog_v3_MetadataFilter*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 12, NULL);
+}
UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_set_status_code_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, envoy_config_accesslog_v3_StatusCodeFilter* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_StatusCodeFilter*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_StatusCodeFilter*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_accesslog_v3_StatusCodeFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_status_code_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_StatusCodeFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_status_code_filter(envoy_config_accesslog_v3_AccessLogFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_StatusCodeFilter* sub = (struct envoy_config_accesslog_v3_StatusCodeFilter*)envoy_config_accesslog_v3_AccessLogFilter_status_code_filter(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_StatusCodeFilter*)_upb_Message_New(&envoy_config_accesslog_v3_StatusCodeFilter_msginit, arena);
@@ -268,9 +377,9 @@ UPB_INLINE struct envoy_config_accesslog_v3_StatusCodeFilter* envoy_config_acces
return sub;
}
UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_set_duration_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, envoy_config_accesslog_v3_DurationFilter* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_DurationFilter*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_DurationFilter*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_config_accesslog_v3_DurationFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_duration_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_DurationFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_duration_filter(envoy_config_accesslog_v3_AccessLogFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_DurationFilter* sub = (struct envoy_config_accesslog_v3_DurationFilter*)envoy_config_accesslog_v3_AccessLogFilter_duration_filter(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_DurationFilter*)_upb_Message_New(&envoy_config_accesslog_v3_DurationFilter_msginit, arena);
@@ -280,9 +389,9 @@ UPB_INLINE struct envoy_config_accesslog_v3_DurationFilter* envoy_config_accessl
return sub;
}
UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_set_not_health_check_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, envoy_config_accesslog_v3_NotHealthCheckFilter* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_NotHealthCheckFilter*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_NotHealthCheckFilter*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_config_accesslog_v3_NotHealthCheckFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_not_health_check_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_NotHealthCheckFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_not_health_check_filter(envoy_config_accesslog_v3_AccessLogFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_NotHealthCheckFilter* sub = (struct envoy_config_accesslog_v3_NotHealthCheckFilter*)envoy_config_accesslog_v3_AccessLogFilter_not_health_check_filter(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_NotHealthCheckFilter*)_upb_Message_New(&envoy_config_accesslog_v3_NotHealthCheckFilter_msginit, arena);
@@ -292,9 +401,9 @@ UPB_INLINE struct envoy_config_accesslog_v3_NotHealthCheckFilter* envoy_config_a
return sub;
}
UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_set_traceable_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, envoy_config_accesslog_v3_TraceableFilter* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_TraceableFilter*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 4);
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_TraceableFilter*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct envoy_config_accesslog_v3_TraceableFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_traceable_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_TraceableFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_traceable_filter(envoy_config_accesslog_v3_AccessLogFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_TraceableFilter* sub = (struct envoy_config_accesslog_v3_TraceableFilter*)envoy_config_accesslog_v3_AccessLogFilter_traceable_filter(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_TraceableFilter*)_upb_Message_New(&envoy_config_accesslog_v3_TraceableFilter_msginit, arena);
@@ -304,9 +413,9 @@ UPB_INLINE struct envoy_config_accesslog_v3_TraceableFilter* envoy_config_access
return sub;
}
UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_set_runtime_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, envoy_config_accesslog_v3_RuntimeFilter* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_RuntimeFilter*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 5);
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_RuntimeFilter*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct envoy_config_accesslog_v3_RuntimeFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_runtime_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_RuntimeFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_runtime_filter(envoy_config_accesslog_v3_AccessLogFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_RuntimeFilter* sub = (struct envoy_config_accesslog_v3_RuntimeFilter*)envoy_config_accesslog_v3_AccessLogFilter_runtime_filter(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_RuntimeFilter*)_upb_Message_New(&envoy_config_accesslog_v3_RuntimeFilter_msginit, arena);
@@ -316,9 +425,9 @@ UPB_INLINE struct envoy_config_accesslog_v3_RuntimeFilter* envoy_config_accesslo
return sub;
}
UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_set_and_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, envoy_config_accesslog_v3_AndFilter* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_AndFilter*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 6);
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_AndFilter*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 6);
}
-UPB_INLINE struct envoy_config_accesslog_v3_AndFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_and_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_AndFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_and_filter(envoy_config_accesslog_v3_AccessLogFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_AndFilter* sub = (struct envoy_config_accesslog_v3_AndFilter*)envoy_config_accesslog_v3_AccessLogFilter_and_filter(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_AndFilter*)_upb_Message_New(&envoy_config_accesslog_v3_AndFilter_msginit, arena);
@@ -328,9 +437,9 @@ UPB_INLINE struct envoy_config_accesslog_v3_AndFilter* envoy_config_accesslog_v3
return sub;
}
UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_set_or_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, envoy_config_accesslog_v3_OrFilter* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_OrFilter*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 7);
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_OrFilter*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 7);
}
-UPB_INLINE struct envoy_config_accesslog_v3_OrFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_or_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_OrFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_or_filter(envoy_config_accesslog_v3_AccessLogFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_OrFilter* sub = (struct envoy_config_accesslog_v3_OrFilter*)envoy_config_accesslog_v3_AccessLogFilter_or_filter(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_OrFilter*)_upb_Message_New(&envoy_config_accesslog_v3_OrFilter_msginit, arena);
@@ -340,9 +449,9 @@ UPB_INLINE struct envoy_config_accesslog_v3_OrFilter* envoy_config_accesslog_v3_
return sub;
}
UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_set_header_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, envoy_config_accesslog_v3_HeaderFilter* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_HeaderFilter*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 8);
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_HeaderFilter*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 8);
}
-UPB_INLINE struct envoy_config_accesslog_v3_HeaderFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_header_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_HeaderFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_header_filter(envoy_config_accesslog_v3_AccessLogFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_HeaderFilter* sub = (struct envoy_config_accesslog_v3_HeaderFilter*)envoy_config_accesslog_v3_AccessLogFilter_header_filter(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_HeaderFilter*)_upb_Message_New(&envoy_config_accesslog_v3_HeaderFilter_msginit, arena);
@@ -352,9 +461,9 @@ UPB_INLINE struct envoy_config_accesslog_v3_HeaderFilter* envoy_config_accesslog
return sub;
}
UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_set_response_flag_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, envoy_config_accesslog_v3_ResponseFlagFilter* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_ResponseFlagFilter*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 9);
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_ResponseFlagFilter*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 9);
}
-UPB_INLINE struct envoy_config_accesslog_v3_ResponseFlagFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_response_flag_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_ResponseFlagFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_response_flag_filter(envoy_config_accesslog_v3_AccessLogFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_ResponseFlagFilter* sub = (struct envoy_config_accesslog_v3_ResponseFlagFilter*)envoy_config_accesslog_v3_AccessLogFilter_response_flag_filter(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_ResponseFlagFilter*)_upb_Message_New(&envoy_config_accesslog_v3_ResponseFlagFilter_msginit, arena);
@@ -364,9 +473,9 @@ UPB_INLINE struct envoy_config_accesslog_v3_ResponseFlagFilter* envoy_config_acc
return sub;
}
UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_set_grpc_status_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, envoy_config_accesslog_v3_GrpcStatusFilter* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_GrpcStatusFilter*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 10);
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_GrpcStatusFilter*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 10);
}
-UPB_INLINE struct envoy_config_accesslog_v3_GrpcStatusFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_grpc_status_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_GrpcStatusFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_grpc_status_filter(envoy_config_accesslog_v3_AccessLogFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_GrpcStatusFilter* sub = (struct envoy_config_accesslog_v3_GrpcStatusFilter*)envoy_config_accesslog_v3_AccessLogFilter_grpc_status_filter(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_GrpcStatusFilter*)_upb_Message_New(&envoy_config_accesslog_v3_GrpcStatusFilter_msginit, arena);
@@ -376,9 +485,9 @@ UPB_INLINE struct envoy_config_accesslog_v3_GrpcStatusFilter* envoy_config_acces
return sub;
}
UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_set_extension_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, envoy_config_accesslog_v3_ExtensionFilter* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_ExtensionFilter*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 11);
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_ExtensionFilter*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 11);
}
-UPB_INLINE struct envoy_config_accesslog_v3_ExtensionFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_extension_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_ExtensionFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_extension_filter(envoy_config_accesslog_v3_AccessLogFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_ExtensionFilter* sub = (struct envoy_config_accesslog_v3_ExtensionFilter*)envoy_config_accesslog_v3_AccessLogFilter_extension_filter(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_ExtensionFilter*)_upb_Message_New(&envoy_config_accesslog_v3_ExtensionFilter_msginit, arena);
@@ -388,9 +497,9 @@ UPB_INLINE struct envoy_config_accesslog_v3_ExtensionFilter* envoy_config_access
return sub;
}
UPB_INLINE void envoy_config_accesslog_v3_AccessLogFilter_set_metadata_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, envoy_config_accesslog_v3_MetadataFilter* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_MetadataFilter*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 12);
+ UPB_WRITE_ONEOF(msg, envoy_config_accesslog_v3_MetadataFilter*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 12);
}
-UPB_INLINE struct envoy_config_accesslog_v3_MetadataFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_metadata_filter(envoy_config_accesslog_v3_AccessLogFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_MetadataFilter* envoy_config_accesslog_v3_AccessLogFilter_mutable_metadata_filter(envoy_config_accesslog_v3_AccessLogFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_MetadataFilter* sub = (struct envoy_config_accesslog_v3_MetadataFilter*)envoy_config_accesslog_v3_AccessLogFilter_metadata_filter(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_MetadataFilter*)_upb_Message_New(&envoy_config_accesslog_v3_MetadataFilter_msginit, arena);
@@ -425,16 +534,28 @@ UPB_INLINE envoy_config_accesslog_v3_ComparisonFilter* envoy_config_accesslog_v3
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_ComparisonFilter_serialize(const envoy_config_accesslog_v3_ComparisonFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_ComparisonFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_ComparisonFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_ComparisonFilter_serialize_ex(const envoy_config_accesslog_v3_ComparisonFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_ComparisonFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_ComparisonFilter_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_accesslog_v3_ComparisonFilter_clear_op(const envoy_config_accesslog_v3_ComparisonFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_accesslog_v3_ComparisonFilter_op(const envoy_config_accesslog_v3_ComparisonFilter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_config_accesslog_v3_ComparisonFilter_has_value(const envoy_config_accesslog_v3_ComparisonFilter *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_accesslog_v3_ComparisonFilter_has_value(const envoy_config_accesslog_v3_ComparisonFilter* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_accesslog_v3_ComparisonFilter_clear_value(const envoy_config_accesslog_v3_ComparisonFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_RuntimeUInt32* envoy_config_accesslog_v3_ComparisonFilter_value(const envoy_config_accesslog_v3_ComparisonFilter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct envoy_config_core_v3_RuntimeUInt32*);
}
@@ -446,7 +567,7 @@ UPB_INLINE void envoy_config_accesslog_v3_ComparisonFilter_set_value(envoy_confi
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct envoy_config_core_v3_RuntimeUInt32*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_RuntimeUInt32* envoy_config_accesslog_v3_ComparisonFilter_mutable_value(envoy_config_accesslog_v3_ComparisonFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_RuntimeUInt32* envoy_config_accesslog_v3_ComparisonFilter_mutable_value(envoy_config_accesslog_v3_ComparisonFilter* msg, upb_Arena* arena) {
struct envoy_config_core_v3_RuntimeUInt32* sub = (struct envoy_config_core_v3_RuntimeUInt32*)envoy_config_accesslog_v3_ComparisonFilter_value(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_RuntimeUInt32*)_upb_Message_New(&envoy_config_core_v3_RuntimeUInt32_msginit, arena);
@@ -481,13 +602,22 @@ UPB_INLINE envoy_config_accesslog_v3_StatusCodeFilter* envoy_config_accesslog_v3
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_StatusCodeFilter_serialize(const envoy_config_accesslog_v3_StatusCodeFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_StatusCodeFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_StatusCodeFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_StatusCodeFilter_serialize_ex(const envoy_config_accesslog_v3_StatusCodeFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_StatusCodeFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_StatusCodeFilter_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_accesslog_v3_StatusCodeFilter_has_comparison(const envoy_config_accesslog_v3_StatusCodeFilter* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_accesslog_v3_StatusCodeFilter_clear_comparison(const envoy_config_accesslog_v3_StatusCodeFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_accesslog_v3_StatusCodeFilter_has_comparison(const envoy_config_accesslog_v3_StatusCodeFilter *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_accesslog_v3_ComparisonFilter* envoy_config_accesslog_v3_StatusCodeFilter_comparison(const envoy_config_accesslog_v3_StatusCodeFilter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_accesslog_v3_ComparisonFilter*);
}
@@ -496,7 +626,7 @@ UPB_INLINE void envoy_config_accesslog_v3_StatusCodeFilter_set_comparison(envoy_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_accesslog_v3_ComparisonFilter*) = value;
}
-UPB_INLINE struct envoy_config_accesslog_v3_ComparisonFilter* envoy_config_accesslog_v3_StatusCodeFilter_mutable_comparison(envoy_config_accesslog_v3_StatusCodeFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_ComparisonFilter* envoy_config_accesslog_v3_StatusCodeFilter_mutable_comparison(envoy_config_accesslog_v3_StatusCodeFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_ComparisonFilter* sub = (struct envoy_config_accesslog_v3_ComparisonFilter*)envoy_config_accesslog_v3_StatusCodeFilter_comparison(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_ComparisonFilter*)_upb_Message_New(&envoy_config_accesslog_v3_ComparisonFilter_msginit, arena);
@@ -531,13 +661,22 @@ UPB_INLINE envoy_config_accesslog_v3_DurationFilter* envoy_config_accesslog_v3_D
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_DurationFilter_serialize(const envoy_config_accesslog_v3_DurationFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_DurationFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_DurationFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_DurationFilter_serialize_ex(const envoy_config_accesslog_v3_DurationFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_DurationFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_DurationFilter_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_accesslog_v3_DurationFilter_has_comparison(const envoy_config_accesslog_v3_DurationFilter* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_accesslog_v3_DurationFilter_clear_comparison(const envoy_config_accesslog_v3_DurationFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_accesslog_v3_DurationFilter_has_comparison(const envoy_config_accesslog_v3_DurationFilter *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_accesslog_v3_ComparisonFilter* envoy_config_accesslog_v3_DurationFilter_comparison(const envoy_config_accesslog_v3_DurationFilter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_accesslog_v3_ComparisonFilter*);
}
@@ -546,7 +685,7 @@ UPB_INLINE void envoy_config_accesslog_v3_DurationFilter_set_comparison(envoy_co
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_accesslog_v3_ComparisonFilter*) = value;
}
-UPB_INLINE struct envoy_config_accesslog_v3_ComparisonFilter* envoy_config_accesslog_v3_DurationFilter_mutable_comparison(envoy_config_accesslog_v3_DurationFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_ComparisonFilter* envoy_config_accesslog_v3_DurationFilter_mutable_comparison(envoy_config_accesslog_v3_DurationFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_ComparisonFilter* sub = (struct envoy_config_accesslog_v3_ComparisonFilter*)envoy_config_accesslog_v3_DurationFilter_comparison(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_ComparisonFilter*)_upb_Message_New(&envoy_config_accesslog_v3_ComparisonFilter_msginit, arena);
@@ -581,11 +720,15 @@ UPB_INLINE envoy_config_accesslog_v3_NotHealthCheckFilter* envoy_config_accesslo
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_NotHealthCheckFilter_serialize(const envoy_config_accesslog_v3_NotHealthCheckFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_NotHealthCheckFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_NotHealthCheckFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_NotHealthCheckFilter_serialize_ex(const envoy_config_accesslog_v3_NotHealthCheckFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_NotHealthCheckFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_NotHealthCheckFilter_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -614,11 +757,15 @@ UPB_INLINE envoy_config_accesslog_v3_TraceableFilter* envoy_config_accesslog_v3_
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_TraceableFilter_serialize(const envoy_config_accesslog_v3_TraceableFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_TraceableFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_TraceableFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_TraceableFilter_serialize_ex(const envoy_config_accesslog_v3_TraceableFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_TraceableFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_TraceableFilter_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -647,19 +794,34 @@ UPB_INLINE envoy_config_accesslog_v3_RuntimeFilter* envoy_config_accesslog_v3_Ru
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_RuntimeFilter_serialize(const envoy_config_accesslog_v3_RuntimeFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_RuntimeFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_RuntimeFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_RuntimeFilter_serialize_ex(const envoy_config_accesslog_v3_RuntimeFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_RuntimeFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_RuntimeFilter_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_accesslog_v3_RuntimeFilter_clear_runtime_key(const envoy_config_accesslog_v3_RuntimeFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_accesslog_v3_RuntimeFilter_runtime_key(const envoy_config_accesslog_v3_RuntimeFilter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_accesslog_v3_RuntimeFilter_has_percent_sampled(const envoy_config_accesslog_v3_RuntimeFilter *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_accesslog_v3_RuntimeFilter_has_percent_sampled(const envoy_config_accesslog_v3_RuntimeFilter* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_accesslog_v3_RuntimeFilter_clear_percent_sampled(const envoy_config_accesslog_v3_RuntimeFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_FractionalPercent* envoy_config_accesslog_v3_RuntimeFilter_percent_sampled(const envoy_config_accesslog_v3_RuntimeFilter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_type_v3_FractionalPercent*);
}
+UPB_INLINE void envoy_config_accesslog_v3_RuntimeFilter_clear_use_independent_randomness(const envoy_config_accesslog_v3_RuntimeFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_config_accesslog_v3_RuntimeFilter_use_independent_randomness(const envoy_config_accesslog_v3_RuntimeFilter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
@@ -671,7 +833,7 @@ UPB_INLINE void envoy_config_accesslog_v3_RuntimeFilter_set_percent_sampled(envo
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_type_v3_FractionalPercent*) = value;
}
-UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_accesslog_v3_RuntimeFilter_mutable_percent_sampled(envoy_config_accesslog_v3_RuntimeFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_accesslog_v3_RuntimeFilter_mutable_percent_sampled(envoy_config_accesslog_v3_RuntimeFilter* msg, upb_Arena* arena) {
struct envoy_type_v3_FractionalPercent* sub = (struct envoy_type_v3_FractionalPercent*)envoy_config_accesslog_v3_RuntimeFilter_percent_sampled(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_FractionalPercent*)_upb_Message_New(&envoy_type_v3_FractionalPercent_msginit, arena);
@@ -709,25 +871,35 @@ UPB_INLINE envoy_config_accesslog_v3_AndFilter* envoy_config_accesslog_v3_AndFil
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_AndFilter_serialize(const envoy_config_accesslog_v3_AndFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_AndFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_AndFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_AndFilter_serialize_ex(const envoy_config_accesslog_v3_AndFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_AndFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_AndFilter_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_accesslog_v3_AndFilter_has_filters(const envoy_config_accesslog_v3_AndFilter* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_accesslog_v3_AndFilter_clear_filters(const envoy_config_accesslog_v3_AndFilter* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_accesslog_v3_AccessLogFilter* const* envoy_config_accesslog_v3_AndFilter_filters(const envoy_config_accesslog_v3_AndFilter* msg, size_t* len) {
+ return (const envoy_config_accesslog_v3_AccessLogFilter* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_accesslog_v3_AndFilter_has_filters(const envoy_config_accesslog_v3_AndFilter *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_accesslog_v3_AccessLogFilter* const* envoy_config_accesslog_v3_AndFilter_filters(const envoy_config_accesslog_v3_AndFilter *msg, size_t *len) { return (const envoy_config_accesslog_v3_AccessLogFilter* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_accesslog_v3_AccessLogFilter** envoy_config_accesslog_v3_AndFilter_mutable_filters(envoy_config_accesslog_v3_AndFilter *msg, size_t *len) {
+UPB_INLINE envoy_config_accesslog_v3_AccessLogFilter** envoy_config_accesslog_v3_AndFilter_mutable_filters(envoy_config_accesslog_v3_AndFilter* msg, size_t* len) {
return (envoy_config_accesslog_v3_AccessLogFilter**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_accesslog_v3_AccessLogFilter** envoy_config_accesslog_v3_AndFilter_resize_filters(envoy_config_accesslog_v3_AndFilter *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_accesslog_v3_AccessLogFilter** envoy_config_accesslog_v3_AndFilter_resize_filters(envoy_config_accesslog_v3_AndFilter* msg, size_t len, upb_Arena* arena) {
return (envoy_config_accesslog_v3_AccessLogFilter**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLogFilter* envoy_config_accesslog_v3_AndFilter_add_filters(envoy_config_accesslog_v3_AndFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLogFilter* envoy_config_accesslog_v3_AndFilter_add_filters(envoy_config_accesslog_v3_AndFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_AccessLogFilter* sub = (struct envoy_config_accesslog_v3_AccessLogFilter*)_upb_Message_New(&envoy_config_accesslog_v3_AccessLogFilter_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -757,25 +929,35 @@ UPB_INLINE envoy_config_accesslog_v3_OrFilter* envoy_config_accesslog_v3_OrFilte
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_OrFilter_serialize(const envoy_config_accesslog_v3_OrFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_OrFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_OrFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_OrFilter_serialize_ex(const envoy_config_accesslog_v3_OrFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_OrFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_OrFilter_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_accesslog_v3_OrFilter_has_filters(const envoy_config_accesslog_v3_OrFilter* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_accesslog_v3_OrFilter_clear_filters(const envoy_config_accesslog_v3_OrFilter* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_accesslog_v3_AccessLogFilter* const* envoy_config_accesslog_v3_OrFilter_filters(const envoy_config_accesslog_v3_OrFilter* msg, size_t* len) {
+ return (const envoy_config_accesslog_v3_AccessLogFilter* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_accesslog_v3_OrFilter_has_filters(const envoy_config_accesslog_v3_OrFilter *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_accesslog_v3_AccessLogFilter* const* envoy_config_accesslog_v3_OrFilter_filters(const envoy_config_accesslog_v3_OrFilter *msg, size_t *len) { return (const envoy_config_accesslog_v3_AccessLogFilter* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_accesslog_v3_AccessLogFilter** envoy_config_accesslog_v3_OrFilter_mutable_filters(envoy_config_accesslog_v3_OrFilter *msg, size_t *len) {
+UPB_INLINE envoy_config_accesslog_v3_AccessLogFilter** envoy_config_accesslog_v3_OrFilter_mutable_filters(envoy_config_accesslog_v3_OrFilter* msg, size_t* len) {
return (envoy_config_accesslog_v3_AccessLogFilter**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_accesslog_v3_AccessLogFilter** envoy_config_accesslog_v3_OrFilter_resize_filters(envoy_config_accesslog_v3_OrFilter *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_accesslog_v3_AccessLogFilter** envoy_config_accesslog_v3_OrFilter_resize_filters(envoy_config_accesslog_v3_OrFilter* msg, size_t len, upb_Arena* arena) {
return (envoy_config_accesslog_v3_AccessLogFilter**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLogFilter* envoy_config_accesslog_v3_OrFilter_add_filters(envoy_config_accesslog_v3_OrFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLogFilter* envoy_config_accesslog_v3_OrFilter_add_filters(envoy_config_accesslog_v3_OrFilter* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_AccessLogFilter* sub = (struct envoy_config_accesslog_v3_AccessLogFilter*)_upb_Message_New(&envoy_config_accesslog_v3_AccessLogFilter_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -805,13 +987,22 @@ UPB_INLINE envoy_config_accesslog_v3_HeaderFilter* envoy_config_accesslog_v3_Hea
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_HeaderFilter_serialize(const envoy_config_accesslog_v3_HeaderFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_HeaderFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_HeaderFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_HeaderFilter_serialize_ex(const envoy_config_accesslog_v3_HeaderFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_HeaderFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_HeaderFilter_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_accesslog_v3_HeaderFilter_has_header(const envoy_config_accesslog_v3_HeaderFilter* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_accesslog_v3_HeaderFilter_clear_header(const envoy_config_accesslog_v3_HeaderFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_accesslog_v3_HeaderFilter_has_header(const envoy_config_accesslog_v3_HeaderFilter *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_route_v3_HeaderMatcher* envoy_config_accesslog_v3_HeaderFilter_header(const envoy_config_accesslog_v3_HeaderFilter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_route_v3_HeaderMatcher*);
}
@@ -820,7 +1011,7 @@ UPB_INLINE void envoy_config_accesslog_v3_HeaderFilter_set_header(envoy_config_a
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_route_v3_HeaderMatcher*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_accesslog_v3_HeaderFilter_mutable_header(envoy_config_accesslog_v3_HeaderFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_accesslog_v3_HeaderFilter_mutable_header(envoy_config_accesslog_v3_HeaderFilter* msg, upb_Arena* arena) {
struct envoy_config_route_v3_HeaderMatcher* sub = (struct envoy_config_route_v3_HeaderMatcher*)envoy_config_accesslog_v3_HeaderFilter_header(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_HeaderMatcher*)_upb_Message_New(&envoy_config_route_v3_HeaderMatcher_msginit, arena);
@@ -855,23 +1046,31 @@ UPB_INLINE envoy_config_accesslog_v3_ResponseFlagFilter* envoy_config_accesslog_
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_ResponseFlagFilter_serialize(const envoy_config_accesslog_v3_ResponseFlagFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_ResponseFlagFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_ResponseFlagFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_ResponseFlagFilter_serialize_ex(const envoy_config_accesslog_v3_ResponseFlagFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_ResponseFlagFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_ResponseFlagFilter_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_accesslog_v3_ResponseFlagFilter_clear_flags(const envoy_config_accesslog_v3_ResponseFlagFilter* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE upb_StringView const* envoy_config_accesslog_v3_ResponseFlagFilter_flags(const envoy_config_accesslog_v3_ResponseFlagFilter* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE upb_StringView const* envoy_config_accesslog_v3_ResponseFlagFilter_flags(const envoy_config_accesslog_v3_ResponseFlagFilter *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE upb_StringView* envoy_config_accesslog_v3_ResponseFlagFilter_mutable_flags(envoy_config_accesslog_v3_ResponseFlagFilter *msg, size_t *len) {
+UPB_INLINE upb_StringView* envoy_config_accesslog_v3_ResponseFlagFilter_mutable_flags(envoy_config_accesslog_v3_ResponseFlagFilter* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE upb_StringView* envoy_config_accesslog_v3_ResponseFlagFilter_resize_flags(envoy_config_accesslog_v3_ResponseFlagFilter *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* envoy_config_accesslog_v3_ResponseFlagFilter_resize_flags(envoy_config_accesslog_v3_ResponseFlagFilter* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_accesslog_v3_ResponseFlagFilter_add_flags(envoy_config_accesslog_v3_ResponseFlagFilter *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_accesslog_v3_ResponseFlagFilter_add_flags(envoy_config_accesslog_v3_ResponseFlagFilter* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(3, 4), &val, arena);
}
/* envoy.config.accesslog.v3.GrpcStatusFilter */
@@ -899,26 +1098,37 @@ UPB_INLINE envoy_config_accesslog_v3_GrpcStatusFilter* envoy_config_accesslog_v3
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_GrpcStatusFilter_serialize(const envoy_config_accesslog_v3_GrpcStatusFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_GrpcStatusFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_GrpcStatusFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_GrpcStatusFilter_serialize_ex(const envoy_config_accesslog_v3_GrpcStatusFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_GrpcStatusFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_GrpcStatusFilter_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_accesslog_v3_GrpcStatusFilter_clear_statuses(const envoy_config_accesslog_v3_GrpcStatusFilter* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE int32_t const* envoy_config_accesslog_v3_GrpcStatusFilter_statuses(const envoy_config_accesslog_v3_GrpcStatusFilter* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE void envoy_config_accesslog_v3_GrpcStatusFilter_clear_exclude(const envoy_config_accesslog_v3_GrpcStatusFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
-UPB_INLINE int32_t const* envoy_config_accesslog_v3_GrpcStatusFilter_statuses(const envoy_config_accesslog_v3_GrpcStatusFilter *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
UPB_INLINE bool envoy_config_accesslog_v3_GrpcStatusFilter_exclude(const envoy_config_accesslog_v3_GrpcStatusFilter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
-UPB_INLINE int32_t* envoy_config_accesslog_v3_GrpcStatusFilter_mutable_statuses(envoy_config_accesslog_v3_GrpcStatusFilter *msg, size_t *len) {
+UPB_INLINE int32_t* envoy_config_accesslog_v3_GrpcStatusFilter_mutable_statuses(envoy_config_accesslog_v3_GrpcStatusFilter* msg, size_t* len) {
return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE int32_t* envoy_config_accesslog_v3_GrpcStatusFilter_resize_statuses(envoy_config_accesslog_v3_GrpcStatusFilter *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE int32_t* envoy_config_accesslog_v3_GrpcStatusFilter_resize_statuses(envoy_config_accesslog_v3_GrpcStatusFilter* msg, size_t len, upb_Arena* arena) {
return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, 2, arena);
}
-UPB_INLINE bool envoy_config_accesslog_v3_GrpcStatusFilter_add_statuses(envoy_config_accesslog_v3_GrpcStatusFilter *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), 2, &val,
- arena);
+UPB_INLINE bool envoy_config_accesslog_v3_GrpcStatusFilter_add_statuses(envoy_config_accesslog_v3_GrpcStatusFilter* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), 2, &val, arena);
}
UPB_INLINE void envoy_config_accesslog_v3_GrpcStatusFilter_set_exclude(envoy_config_accesslog_v3_GrpcStatusFilter *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = value;
@@ -949,17 +1159,31 @@ UPB_INLINE envoy_config_accesslog_v3_MetadataFilter* envoy_config_accesslog_v3_M
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_MetadataFilter_serialize(const envoy_config_accesslog_v3_MetadataFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_MetadataFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_MetadataFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_MetadataFilter_serialize_ex(const envoy_config_accesslog_v3_MetadataFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_MetadataFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_MetadataFilter_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_accesslog_v3_MetadataFilter_has_matcher(const envoy_config_accesslog_v3_MetadataFilter* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_accesslog_v3_MetadataFilter_clear_matcher(const envoy_config_accesslog_v3_MetadataFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_accesslog_v3_MetadataFilter_has_matcher(const envoy_config_accesslog_v3_MetadataFilter *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_accesslog_v3_MetadataFilter_matcher(const envoy_config_accesslog_v3_MetadataFilter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_matcher_v3_MetadataMatcher*);
}
-UPB_INLINE bool envoy_config_accesslog_v3_MetadataFilter_has_match_if_key_not_found(const envoy_config_accesslog_v3_MetadataFilter *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_accesslog_v3_MetadataFilter_has_match_if_key_not_found(const envoy_config_accesslog_v3_MetadataFilter* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_accesslog_v3_MetadataFilter_clear_match_if_key_not_found(const envoy_config_accesslog_v3_MetadataFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_accesslog_v3_MetadataFilter_match_if_key_not_found(const envoy_config_accesslog_v3_MetadataFilter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_BoolValue*);
}
@@ -968,7 +1192,7 @@ UPB_INLINE void envoy_config_accesslog_v3_MetadataFilter_set_matcher(envoy_confi
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_matcher_v3_MetadataMatcher*) = value;
}
-UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_accesslog_v3_MetadataFilter_mutable_matcher(envoy_config_accesslog_v3_MetadataFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_accesslog_v3_MetadataFilter_mutable_matcher(envoy_config_accesslog_v3_MetadataFilter* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_MetadataMatcher* sub = (struct envoy_type_matcher_v3_MetadataMatcher*)envoy_config_accesslog_v3_MetadataFilter_matcher(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_MetadataMatcher*)_upb_Message_New(&envoy_type_matcher_v3_MetadataMatcher_msginit, arena);
@@ -981,7 +1205,7 @@ UPB_INLINE void envoy_config_accesslog_v3_MetadataFilter_set_match_if_key_not_fo
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_accesslog_v3_MetadataFilter_mutable_match_if_key_not_found(envoy_config_accesslog_v3_MetadataFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_accesslog_v3_MetadataFilter_mutable_match_if_key_not_found(envoy_config_accesslog_v3_MetadataFilter* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_accesslog_v3_MetadataFilter_match_if_key_not_found(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -1016,31 +1240,46 @@ UPB_INLINE envoy_config_accesslog_v3_ExtensionFilter* envoy_config_accesslog_v3_
return ret;
}
UPB_INLINE char* envoy_config_accesslog_v3_ExtensionFilter_serialize(const envoy_config_accesslog_v3_ExtensionFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_ExtensionFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_ExtensionFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_accesslog_v3_ExtensionFilter_serialize_ex(const envoy_config_accesslog_v3_ExtensionFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_accesslog_v3_ExtensionFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_accesslog_v3_ExtensionFilter_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_accesslog_v3_ExtensionFilter_config_type_typed_config = 3,
envoy_config_accesslog_v3_ExtensionFilter_config_type_NOT_SET = 0
} envoy_config_accesslog_v3_ExtensionFilter_config_type_oneofcases;
-UPB_INLINE envoy_config_accesslog_v3_ExtensionFilter_config_type_oneofcases envoy_config_accesslog_v3_ExtensionFilter_config_type_case(const envoy_config_accesslog_v3_ExtensionFilter* msg) { return (envoy_config_accesslog_v3_ExtensionFilter_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_config_accesslog_v3_ExtensionFilter_config_type_oneofcases envoy_config_accesslog_v3_ExtensionFilter_config_type_case(const envoy_config_accesslog_v3_ExtensionFilter* msg) {
+ return (envoy_config_accesslog_v3_ExtensionFilter_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_accesslog_v3_ExtensionFilter_clear_name(const envoy_config_accesslog_v3_ExtensionFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_accesslog_v3_ExtensionFilter_name(const envoy_config_accesslog_v3_ExtensionFilter* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_accesslog_v3_ExtensionFilter_has_typed_config(const envoy_config_accesslog_v3_ExtensionFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_accesslog_v3_ExtensionFilter_clear_typed_config(const envoy_config_accesslog_v3_ExtensionFilter* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_accesslog_v3_ExtensionFilter_config_type_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_accesslog_v3_ExtensionFilter_typed_config(const envoy_config_accesslog_v3_ExtensionFilter* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
}
-UPB_INLINE bool envoy_config_accesslog_v3_ExtensionFilter_has_typed_config(const envoy_config_accesslog_v3_ExtensionFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_accesslog_v3_ExtensionFilter_typed_config(const envoy_config_accesslog_v3_ExtensionFilter *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void envoy_config_accesslog_v3_ExtensionFilter_set_name(envoy_config_accesslog_v3_ExtensionFilter *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_accesslog_v3_ExtensionFilter_set_typed_config(envoy_config_accesslog_v3_ExtensionFilter *msg, struct google_protobuf_Any* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_accesslog_v3_ExtensionFilter_mutable_typed_config(envoy_config_accesslog_v3_ExtensionFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_accesslog_v3_ExtensionFilter_mutable_typed_config(envoy_config_accesslog_v3_ExtensionFilter* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_accesslog_v3_ExtensionFilter_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c
index d539114f60..0a3af32cd8 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c
@@ -36,105 +36,110 @@
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Bootstrap_submsgs[21] = {
- {.submsg = &envoy_config_bootstrap_v3_Admin_msginit},
- {.submsg = &envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry_msginit},
- {.submsg = &envoy_config_bootstrap_v3_Bootstrap_DynamicResources_msginit},
+static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Bootstrap_submsgs[24] = {
+ {.submsg = &envoy_config_core_v3_Node_msginit},
{.submsg = &envoy_config_bootstrap_v3_Bootstrap_StaticResources_msginit},
+ {.submsg = &envoy_config_bootstrap_v3_Bootstrap_DynamicResources_msginit},
{.submsg = &envoy_config_bootstrap_v3_ClusterManager_msginit},
- {.submsg = &envoy_config_bootstrap_v3_CustomInlineHeader_msginit},
- {.submsg = &envoy_config_bootstrap_v3_FatalAction_msginit},
- {.submsg = &envoy_config_bootstrap_v3_LayeredRuntime_msginit},
+ {.submsg = &envoy_config_metrics_v3_StatsSink_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &envoy_config_bootstrap_v3_Watchdog_msginit},
- {.submsg = &envoy_config_bootstrap_v3_Watchdogs_msginit},
+ {.submsg = &envoy_config_trace_v3_Tracing_msginit},
+ {.submsg = &envoy_config_bootstrap_v3_Admin_msginit},
+ {.submsg = &envoy_config_metrics_v3_StatsConfig_msginit},
{.submsg = &envoy_config_core_v3_ApiConfigSource_msginit},
+ {.submsg = &envoy_config_overload_v3_OverloadManager_msginit},
+ {.submsg = &envoy_config_bootstrap_v3_LayeredRuntime_msginit},
+ {.submsg = &google_protobuf_UInt64Value_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
+ {.submsg = &envoy_config_core_v3_ConfigSource_msginit},
{.submsg = &envoy_config_core_v3_ConfigSource_msginit},
+ {.submsg = &envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry_msginit},
+ {.submsg = &envoy_config_bootstrap_v3_Watchdogs_msginit},
+ {.submsg = &envoy_config_bootstrap_v3_FatalAction_msginit},
{.submsg = &envoy_config_core_v3_DnsResolutionConfig_msginit},
- {.submsg = &envoy_config_core_v3_Node_msginit},
{.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
- {.submsg = &envoy_config_metrics_v3_StatsConfig_msginit},
- {.submsg = &envoy_config_metrics_v3_StatsSink_msginit},
- {.submsg = &envoy_config_overload_v3_OverloadManager_msginit},
- {.submsg = &envoy_config_trace_v3_Tracing_msginit},
- {.submsg = &google_protobuf_Duration_msginit},
- {.submsg = &google_protobuf_UInt64Value_msginit},
+ {.submsg = &envoy_config_bootstrap_v3_CustomInlineHeader_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
};
-static const upb_MiniTable_Field envoy_config_bootstrap_v3_Bootstrap__fields[31] = {
- {1, UPB_SIZE(40, 72), 1, 13, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(44, 80), 2, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(48, 88), 3, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(52, 96), 4, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(108, 208), 0, 16, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(56, 104), 5, 19, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(60, 112), 6, 8, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(64, 120), 7, 18, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(68, 128), 8, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {13, UPB_SIZE(72, 136), 9, 15, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {14, UPB_SIZE(76, 144), 10, 10, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {15, UPB_SIZE(80, 152), 11, 17, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {16, UPB_SIZE(3, 3), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {17, UPB_SIZE(84, 160), 12, 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {18, UPB_SIZE(16, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {19, UPB_SIZE(88, 168), 13, 20, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {20, UPB_SIZE(4, 4), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {21, UPB_SIZE(112, 216), 0, 14, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {22, UPB_SIZE(116, 224), 0, 11, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {23, UPB_SIZE(92, 176), 14, 11, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {24, UPB_SIZE(24, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {25, UPB_SIZE(120, 232), 0, 1, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {26, UPB_SIZE(124, 240), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {27, UPB_SIZE(96, 184), 15, 9, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {28, UPB_SIZE(128, 248), 0, 6, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {29, UPB_SIZE(136, 264), UPB_SIZE(-141, -269), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {30, UPB_SIZE(100, 192), 16, 12, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {31, UPB_SIZE(104, 200), 17, 14, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {32, UPB_SIZE(132, 256), 0, 5, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {33, UPB_SIZE(32, 56), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_bootstrap_v3_Bootstrap__fields[32] = {
+ {1, UPB_SIZE(12, 16), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 32), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 40), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(28, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(36, 64), UPB_SIZE(0, 0), 4, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(40, 72), UPB_SIZE(5, 5), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(44, 80), UPB_SIZE(6, 6), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(48, 88), UPB_SIZE(7, 7), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(52, 96), UPB_SIZE(8, 8), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(56, 104), UPB_SIZE(9, 9), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(60, 112), UPB_SIZE(10, 10), 10, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(64, 120), UPB_SIZE(11, 11), 11, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {16, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {17, UPB_SIZE(68, 128), UPB_SIZE(12, 12), 12, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {18, UPB_SIZE(72, 136), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {19, UPB_SIZE(80, 152), UPB_SIZE(13, 13), 13, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {20, UPB_SIZE(5, 5), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {21, UPB_SIZE(84, 160), UPB_SIZE(0, 0), 14, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {22, UPB_SIZE(88, 168), UPB_SIZE(0, 0), 15, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {23, UPB_SIZE(92, 176), UPB_SIZE(14, 14), 16, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {24, UPB_SIZE(96, 184), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {25, UPB_SIZE(104, 200), UPB_SIZE(0, 0), 17, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {26, UPB_SIZE(108, 208), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {27, UPB_SIZE(112, 216), UPB_SIZE(15, 15), 18, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {28, UPB_SIZE(116, 224), UPB_SIZE(0, 0), 19, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {29, UPB_SIZE(3, 3), UPB_SIZE(-9, -9), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {30, UPB_SIZE(120, 232), UPB_SIZE(16, 16), 20, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {31, UPB_SIZE(124, 240), UPB_SIZE(17, 17), 21, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {32, UPB_SIZE(128, 248), UPB_SIZE(0, 0), 22, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {33, UPB_SIZE(132, 256), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {34, UPB_SIZE(140, 272), UPB_SIZE(18, 18), 23, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_Bootstrap_msginit = {
&envoy_config_bootstrap_v3_Bootstrap_submsgs[0],
&envoy_config_bootstrap_v3_Bootstrap__fields[0],
- UPB_SIZE(144, 272), 31, upb_ExtMode_NonExtendable, 9, 255, 0,
+ UPB_SIZE(144, 280), 32, kUpb_ExtMode_NonExtendable, 9, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Bootstrap_StaticResources_submsgs[3] = {
- {.submsg = &envoy_config_cluster_v3_Cluster_msginit},
{.submsg = &envoy_config_listener_v3_Listener_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_msginit},
{.submsg = &envoy_extensions_transport_sockets_tls_v3_Secret_msginit},
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_Bootstrap_StaticResources__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_Bootstrap_StaticResources_msginit = {
&envoy_config_bootstrap_v3_Bootstrap_StaticResources_submsgs[0],
&envoy_config_bootstrap_v3_Bootstrap_StaticResources__fields[0],
- UPB_SIZE(16, 24), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Bootstrap_DynamicResources_submsgs[2] = {
- {.submsg = &envoy_config_core_v3_ApiConfigSource_msginit},
+static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Bootstrap_DynamicResources_submsgs[3] = {
+ {.submsg = &envoy_config_core_v3_ConfigSource_msginit},
{.submsg = &envoy_config_core_v3_ConfigSource_msginit},
+ {.submsg = &envoy_config_core_v3_ApiConfigSource_msginit},
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_Bootstrap_DynamicResources__fields[5] = {
- {1, UPB_SIZE(20, 40), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(24, 48), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(28, 56), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_Bootstrap_DynamicResources_msginit = {
&envoy_config_bootstrap_v3_Bootstrap_DynamicResources_submsgs[0],
&envoy_config_bootstrap_v3_Bootstrap_DynamicResources__fields[0],
- UPB_SIZE(32, 64), 5, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(32, 64), 5, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry_submsgs[1] = {
@@ -142,54 +147,54 @@ static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Bootstrap_CertificatePr
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry_msginit = {
&envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry_submsgs[0],
&envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Admin_submsgs[3] = {
- {.submsg = &envoy_config_accesslog_v3_AccessLog_msginit},
{.submsg = &envoy_config_core_v3_Address_msginit},
{.submsg = &envoy_config_core_v3_SocketOption_msginit},
+ {.submsg = &envoy_config_accesslog_v3_AccessLog_msginit},
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_Admin__fields[6] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 40), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 48), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(28, 56), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 40), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 48), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(28, 56), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_Admin_msginit = {
&envoy_config_bootstrap_v3_Admin_submsgs[0],
&envoy_config_bootstrap_v3_Admin__fields[0],
- UPB_SIZE(32, 64), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(32, 64), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_bootstrap_v3_ClusterManager_submsgs[3] = {
{.submsg = &envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_msginit},
- {.submsg = &envoy_config_core_v3_ApiConfigSource_msginit},
{.submsg = &envoy_config_core_v3_BindConfig_msginit},
+ {.submsg = &envoy_config_core_v3_ApiConfigSource_msginit},
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_ClusterManager__fields[4] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 40), 3, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_ClusterManager_msginit = {
&envoy_config_bootstrap_v3_ClusterManager_submsgs[0],
&envoy_config_bootstrap_v3_ClusterManager__fields[0],
- UPB_SIZE(24, 48), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 48), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_submsgs[1] = {
@@ -197,51 +202,56 @@ static const upb_MiniTable_Sub envoy_config_bootstrap_v3_ClusterManager_OutlierD
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_ClusterManager_OutlierDetection__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_msginit = {
&envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_submsgs[0],
&envoy_config_bootstrap_v3_ClusterManager_OutlierDetection__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Watchdogs_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Watchdogs_submsgs[2] = {
+ {.submsg = &envoy_config_bootstrap_v3_Watchdog_msginit},
{.submsg = &envoy_config_bootstrap_v3_Watchdog_msginit},
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_Watchdogs__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_Watchdogs_msginit = {
&envoy_config_bootstrap_v3_Watchdogs_submsgs[0],
&envoy_config_bootstrap_v3_Watchdogs__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Watchdog_submsgs[3] = {
- {.submsg = &envoy_config_bootstrap_v3_Watchdog_WatchdogAction_msginit},
+static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Watchdog_submsgs[7] = {
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &envoy_type_v3_Percent_msginit},
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_bootstrap_v3_Watchdog_WatchdogAction_msginit},
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_Watchdog__fields[7] = {
- {1, UPB_SIZE(4, 8), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 3, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 4, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 40), 5, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(24, 48), 6, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(28, 56), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 40), UPB_SIZE(5, 5), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 48), UPB_SIZE(6, 6), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(28, 56), UPB_SIZE(0, 0), 6, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_Watchdog_msginit = {
&envoy_config_bootstrap_v3_Watchdog_submsgs[0],
&envoy_config_bootstrap_v3_Watchdog__fields[0],
- UPB_SIZE(32, 64), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(32, 64), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Watchdog_WatchdogAction_submsgs[1] = {
@@ -249,14 +259,14 @@ static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Watchdog_WatchdogAction
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_Watchdog_WatchdogAction__fields[2] = {
- {1, UPB_SIZE(8, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_Watchdog_WatchdogAction_msginit = {
&envoy_config_bootstrap_v3_Watchdog_WatchdogAction_submsgs[0],
&envoy_config_bootstrap_v3_Watchdog_WatchdogAction__fields[0],
- UPB_SIZE(16, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_bootstrap_v3_FatalAction_submsgs[1] = {
@@ -264,13 +274,13 @@ static const upb_MiniTable_Sub envoy_config_bootstrap_v3_FatalAction_submsgs[1]
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_FatalAction__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_FatalAction_msginit = {
&envoy_config_bootstrap_v3_FatalAction_submsgs[0],
&envoy_config_bootstrap_v3_FatalAction__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Runtime_submsgs[1] = {
@@ -278,55 +288,55 @@ static const upb_MiniTable_Sub envoy_config_bootstrap_v3_Runtime_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_Runtime__fields[4] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(28, 56), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(28, 56), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_Runtime_msginit = {
&envoy_config_bootstrap_v3_Runtime_submsgs[0],
&envoy_config_bootstrap_v3_Runtime__fields[0],
- UPB_SIZE(32, 64), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(32, 64), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_bootstrap_v3_RuntimeLayer_submsgs[4] = {
- {.submsg = &envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer_msginit},
+ {.submsg = &google_protobuf_Struct_msginit},
{.submsg = &envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_msginit},
+ {.submsg = &envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer_msginit},
{.submsg = &envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_msginit},
- {.submsg = &google_protobuf_Struct_msginit},
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_RuntimeLayer__fields[5] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_RuntimeLayer_msginit = {
&envoy_config_bootstrap_v3_RuntimeLayer_submsgs[0],
&envoy_config_bootstrap_v3_RuntimeLayer__fields[0],
- UPB_SIZE(16, 32), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(16, 32), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_msginit = {
NULL,
&envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
const upb_MiniTable envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_submsgs[1] = {
@@ -334,14 +344,14 @@ static const upb_MiniTable_Sub envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_msginit = {
&envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_submsgs[0],
&envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_bootstrap_v3_LayeredRuntime_submsgs[1] = {
@@ -349,24 +359,24 @@ static const upb_MiniTable_Sub envoy_config_bootstrap_v3_LayeredRuntime_submsgs[
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_LayeredRuntime__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_LayeredRuntime_msginit = {
&envoy_config_bootstrap_v3_LayeredRuntime_submsgs[0],
&envoy_config_bootstrap_v3_LayeredRuntime__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_bootstrap_v3_CustomInlineHeader__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_bootstrap_v3_CustomInlineHeader_msginit = {
NULL,
&envoy_config_bootstrap_v3_CustomInlineHeader__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[18] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h
index 29af4dfa37..dcd3c6989f 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h
@@ -159,127 +159,302 @@ UPB_INLINE envoy_config_bootstrap_v3_Bootstrap* envoy_config_bootstrap_v3_Bootst
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Bootstrap_serialize(const envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Bootstrap_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Bootstrap_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Bootstrap_serialize_ex(const envoy_config_bootstrap_v3_Bootstrap* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Bootstrap_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Bootstrap_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_bootstrap_v3_Bootstrap_stats_flush_stats_flush_on_admin = 29,
envoy_config_bootstrap_v3_Bootstrap_stats_flush_NOT_SET = 0
} envoy_config_bootstrap_v3_Bootstrap_stats_flush_oneofcases;
-UPB_INLINE envoy_config_bootstrap_v3_Bootstrap_stats_flush_oneofcases envoy_config_bootstrap_v3_Bootstrap_stats_flush_case(const envoy_config_bootstrap_v3_Bootstrap* msg) { return (envoy_config_bootstrap_v3_Bootstrap_stats_flush_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(140, 268), int32_t); }
-
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_node(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_config_bootstrap_v3_Bootstrap_stats_flush_oneofcases envoy_config_bootstrap_v3_Bootstrap_stats_flush_case(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return (envoy_config_bootstrap_v3_Bootstrap_stats_flush_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_node(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_node(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_Node* envoy_config_bootstrap_v3_Bootstrap_node(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const struct envoy_config_core_v3_Node*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct envoy_config_core_v3_Node*);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_static_resources(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_static_resources(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_static_resources(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const envoy_config_bootstrap_v3_Bootstrap_StaticResources* envoy_config_bootstrap_v3_Bootstrap_static_resources(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const envoy_config_bootstrap_v3_Bootstrap_StaticResources*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const envoy_config_bootstrap_v3_Bootstrap_StaticResources*);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_dynamic_resources(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_dynamic_resources(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_dynamic_resources(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* envoy_config_bootstrap_v3_Bootstrap_dynamic_resources(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 88), const envoy_config_bootstrap_v3_Bootstrap_DynamicResources*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const envoy_config_bootstrap_v3_Bootstrap_DynamicResources*);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_cluster_manager(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_cluster_manager(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_cluster_manager(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const envoy_config_bootstrap_v3_ClusterManager* envoy_config_bootstrap_v3_Bootstrap_cluster_manager(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(52, 96), const envoy_config_bootstrap_v3_ClusterManager*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const envoy_config_bootstrap_v3_ClusterManager*);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_flags_path(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Bootstrap_flags_path(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_stats_sinks(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 64));
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_stats_sinks(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ _upb_array_detach(msg, UPB_SIZE(36, 64));
+}
+UPB_INLINE const struct envoy_config_metrics_v3_StatsSink* const* envoy_config_bootstrap_v3_Bootstrap_stats_sinks(const envoy_config_bootstrap_v3_Bootstrap* msg, size_t* len) {
+ return (const struct envoy_config_metrics_v3_StatsSink* const*)_upb_array_accessor(msg, UPB_SIZE(36, 64), len);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_stats_flush_interval(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_stats_flush_interval(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_stats_sinks(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(108, 208)); }
-UPB_INLINE const struct envoy_config_metrics_v3_StatsSink* const* envoy_config_bootstrap_v3_Bootstrap_stats_sinks(const envoy_config_bootstrap_v3_Bootstrap *msg, size_t *len) { return (const struct envoy_config_metrics_v3_StatsSink* const*)_upb_array_accessor(msg, UPB_SIZE(108, 208), len); }
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_stats_flush_interval(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_bootstrap_v3_Bootstrap_stats_flush_interval(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(56, 104), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_watchdog(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_watchdog(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_watchdog(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE const envoy_config_bootstrap_v3_Watchdog* envoy_config_bootstrap_v3_Bootstrap_watchdog(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(60, 112), const envoy_config_bootstrap_v3_Watchdog*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const envoy_config_bootstrap_v3_Watchdog*);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_tracing(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_tracing(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 88), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_tracing(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 7); }
UPB_INLINE const struct envoy_config_trace_v3_Tracing* envoy_config_bootstrap_v3_Bootstrap_tracing(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(64, 120), const struct envoy_config_trace_v3_Tracing*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 88), const struct envoy_config_trace_v3_Tracing*);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_admin(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 8);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_admin(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 96), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_admin(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 8); }
UPB_INLINE const envoy_config_bootstrap_v3_Admin* envoy_config_bootstrap_v3_Bootstrap_admin(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(68, 128), const envoy_config_bootstrap_v3_Admin*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(52, 96), const envoy_config_bootstrap_v3_Admin*);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_stats_config(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 9);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_stats_config(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 104), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_stats_config(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 9); }
UPB_INLINE const struct envoy_config_metrics_v3_StatsConfig* envoy_config_bootstrap_v3_Bootstrap_stats_config(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(72, 136), const struct envoy_config_metrics_v3_StatsConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(56, 104), const struct envoy_config_metrics_v3_StatsConfig*);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_hds_config(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 10);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_hds_config(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 112), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_hds_config(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 10); }
UPB_INLINE const struct envoy_config_core_v3_ApiConfigSource* envoy_config_bootstrap_v3_Bootstrap_hds_config(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(76, 144), const struct envoy_config_core_v3_ApiConfigSource*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(60, 112), const struct envoy_config_core_v3_ApiConfigSource*);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_overload_manager(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 11);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_overload_manager(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 120), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_overload_manager(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 11); }
UPB_INLINE const struct envoy_config_overload_v3_OverloadManager* envoy_config_bootstrap_v3_Bootstrap_overload_manager(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(80, 152), const struct envoy_config_overload_v3_OverloadManager*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(64, 120), const struct envoy_config_overload_v3_OverloadManager*);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_enable_dispatcher_stats(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = 0;
}
UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_enable_dispatcher_stats(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_layered_runtime(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 12);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_layered_runtime(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 128), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_layered_runtime(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 12); }
UPB_INLINE const envoy_config_bootstrap_v3_LayeredRuntime* envoy_config_bootstrap_v3_Bootstrap_layered_runtime(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(84, 160), const envoy_config_bootstrap_v3_LayeredRuntime*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(68, 128), const envoy_config_bootstrap_v3_LayeredRuntime*);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_header_prefix(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 136), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Bootstrap_header_prefix(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(72, 136), upb_StringView);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_stats_server_version_override(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 13);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_stats_server_version_override(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 152), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_stats_server_version_override(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 13); }
UPB_INLINE const struct google_protobuf_UInt64Value* envoy_config_bootstrap_v3_Bootstrap_stats_server_version_override(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(88, 168), const struct google_protobuf_UInt64Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(80, 152), const struct google_protobuf_UInt64Value*);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_use_tcp_for_dns_lookups(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(5, 5), bool) = 0;
}
UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_use_tcp_for_dns_lookups(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(5, 5), bool);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_bootstrap_extensions(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(84, 160));
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_bootstrap_extensions(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ _upb_array_detach(msg, UPB_SIZE(84, 160));
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* const* envoy_config_bootstrap_v3_Bootstrap_bootstrap_extensions(const envoy_config_bootstrap_v3_Bootstrap* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_TypedExtensionConfig* const*)_upb_array_accessor(msg, UPB_SIZE(84, 160), len);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_config_sources(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(88, 168));
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_config_sources(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ _upb_array_detach(msg, UPB_SIZE(88, 168));
+}
+UPB_INLINE const struct envoy_config_core_v3_ConfigSource* const* envoy_config_bootstrap_v3_Bootstrap_config_sources(const envoy_config_bootstrap_v3_Bootstrap* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_ConfigSource* const*)_upb_array_accessor(msg, UPB_SIZE(88, 168), len);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_default_config_source(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 14);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_default_config_source(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(92, 176), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_bootstrap_extensions(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(112, 216)); }
-UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* const* envoy_config_bootstrap_v3_Bootstrap_bootstrap_extensions(const envoy_config_bootstrap_v3_Bootstrap *msg, size_t *len) { return (const struct envoy_config_core_v3_TypedExtensionConfig* const*)_upb_array_accessor(msg, UPB_SIZE(112, 216), len); }
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_config_sources(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(116, 224)); }
-UPB_INLINE const struct envoy_config_core_v3_ConfigSource* const* envoy_config_bootstrap_v3_Bootstrap_config_sources(const envoy_config_bootstrap_v3_Bootstrap *msg, size_t *len) { return (const struct envoy_config_core_v3_ConfigSource* const*)_upb_array_accessor(msg, UPB_SIZE(116, 224), len); }
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_default_config_source(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 14); }
UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_Bootstrap_default_config_source(const envoy_config_bootstrap_v3_Bootstrap* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(92, 176), const struct envoy_config_core_v3_ConfigSource*);
}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_default_socket_interface(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(96, 184), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Bootstrap_default_socket_interface(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView);
-}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_certificate_provider_instances(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(120, 232)); }
-UPB_INLINE size_t envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_size(const envoy_config_bootstrap_v3_Bootstrap *msg) {return _upb_msg_map_size(msg, UPB_SIZE(120, 232)); }
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_get(const envoy_config_bootstrap_v3_Bootstrap *msg, upb_StringView key, struct envoy_config_core_v3_TypedExtensionConfig* *val) { return _upb_msg_map_get(msg, UPB_SIZE(120, 232), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry* envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_next(const envoy_config_bootstrap_v3_Bootstrap *msg, size_t* iter) { return (const envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry*)_upb_msg_map_next(msg, UPB_SIZE(120, 232), iter); }
-UPB_INLINE upb_StringView const* envoy_config_bootstrap_v3_Bootstrap_node_context_params(const envoy_config_bootstrap_v3_Bootstrap *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(124, 240), len); }
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_watchdogs(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 15); }
+ return *UPB_PTR_AT(msg, UPB_SIZE(96, 184), upb_StringView);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_certificate_provider_instances(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(104, 200));
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_certificate_provider_instances(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ _upb_array_detach(msg, UPB_SIZE(104, 200));
+}
+UPB_INLINE size_t envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_size(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(104, 200));
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_get(const envoy_config_bootstrap_v3_Bootstrap* msg, upb_StringView key, struct envoy_config_core_v3_TypedExtensionConfig** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(104, 200), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry* envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_next(const envoy_config_bootstrap_v3_Bootstrap* msg, size_t* iter) {
+ return (const envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry*)_upb_msg_map_next(msg, UPB_SIZE(104, 200), iter);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_node_context_params(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ _upb_array_detach(msg, UPB_SIZE(108, 208));
+}
+UPB_INLINE upb_StringView const* envoy_config_bootstrap_v3_Bootstrap_node_context_params(const envoy_config_bootstrap_v3_Bootstrap* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(108, 208), len);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_watchdogs(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 15);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_watchdogs(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(112, 216), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_bootstrap_v3_Watchdogs* envoy_config_bootstrap_v3_Bootstrap_watchdogs(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(96, 184), const envoy_config_bootstrap_v3_Watchdogs*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(112, 216), const envoy_config_bootstrap_v3_Watchdogs*);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_fatal_actions(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(116, 224));
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_fatal_actions(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ _upb_array_detach(msg, UPB_SIZE(116, 224));
+}
+UPB_INLINE const envoy_config_bootstrap_v3_FatalAction* const* envoy_config_bootstrap_v3_Bootstrap_fatal_actions(const envoy_config_bootstrap_v3_Bootstrap* msg, size_t* len) {
+ return (const envoy_config_bootstrap_v3_FatalAction* const*)_upb_array_accessor(msg, UPB_SIZE(116, 224), len);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_stats_flush_on_admin(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(8, 8)) == 29;
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_stats_flush_on_admin(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(3, 3), 0, UPB_SIZE(8, 8), envoy_config_bootstrap_v3_Bootstrap_stats_flush_NOT_SET);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_stats_flush_on_admin(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(3, 3), UPB_SIZE(8, 8), 29, false);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_dns_resolution_config(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 16);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_dns_resolution_config(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(120, 232), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_fatal_actions(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(128, 248)); }
-UPB_INLINE const envoy_config_bootstrap_v3_FatalAction* const* envoy_config_bootstrap_v3_Bootstrap_fatal_actions(const envoy_config_bootstrap_v3_Bootstrap *msg, size_t *len) { return (const envoy_config_bootstrap_v3_FatalAction* const*)_upb_array_accessor(msg, UPB_SIZE(128, 248), len); }
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_stats_flush_on_admin(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_getoneofcase(msg, UPB_SIZE(140, 268)) == 29; }
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_stats_flush_on_admin(const envoy_config_bootstrap_v3_Bootstrap *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(136, 264), UPB_SIZE(140, 268), 29, false); }
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_dns_resolution_config(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 16); }
UPB_INLINE const struct envoy_config_core_v3_DnsResolutionConfig* envoy_config_bootstrap_v3_Bootstrap_dns_resolution_config(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(100, 192), const struct envoy_config_core_v3_DnsResolutionConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(120, 232), const struct envoy_config_core_v3_DnsResolutionConfig*);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_typed_dns_resolver_config(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 17);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_typed_dns_resolver_config(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(124, 240), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_typed_dns_resolver_config(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_hasbit(msg, 17); }
UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_Bootstrap_typed_dns_resolver_config(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(104, 200), const struct envoy_config_core_v3_TypedExtensionConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(124, 240), const struct envoy_config_core_v3_TypedExtensionConfig*);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_inline_headers(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(128, 248));
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_inline_headers(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ _upb_array_detach(msg, UPB_SIZE(128, 248));
+}
+UPB_INLINE const envoy_config_bootstrap_v3_CustomInlineHeader* const* envoy_config_bootstrap_v3_Bootstrap_inline_headers(const envoy_config_bootstrap_v3_Bootstrap* msg, size_t* len) {
+ return (const envoy_config_bootstrap_v3_CustomInlineHeader* const*)_upb_array_accessor(msg, UPB_SIZE(128, 248), len);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_perf_tracing_file_path(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(132, 256), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_inline_headers(const envoy_config_bootstrap_v3_Bootstrap *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(132, 256)); }
-UPB_INLINE const envoy_config_bootstrap_v3_CustomInlineHeader* const* envoy_config_bootstrap_v3_Bootstrap_inline_headers(const envoy_config_bootstrap_v3_Bootstrap *msg, size_t *len) { return (const envoy_config_bootstrap_v3_CustomInlineHeader* const*)_upb_array_accessor(msg, UPB_SIZE(132, 256), len); }
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Bootstrap_perf_tracing_file_path(const envoy_config_bootstrap_v3_Bootstrap* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(132, 256), upb_StringView);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_has_default_regex_engine(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return _upb_hasbit(msg, 18);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_clear_default_regex_engine(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(140, 272), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_Bootstrap_default_regex_engine(const envoy_config_bootstrap_v3_Bootstrap* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(140, 272), const struct envoy_config_core_v3_TypedExtensionConfig*);
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_node(envoy_config_bootstrap_v3_Bootstrap *msg, struct envoy_config_core_v3_Node* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 72), struct envoy_config_core_v3_Node*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct envoy_config_core_v3_Node*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Node* envoy_config_bootstrap_v3_Bootstrap_mutable_node(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Node* envoy_config_bootstrap_v3_Bootstrap_mutable_node(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Node* sub = (struct envoy_config_core_v3_Node*)envoy_config_bootstrap_v3_Bootstrap_node(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Node*)_upb_Message_New(&envoy_config_core_v3_Node_msginit, arena);
@@ -290,9 +465,9 @@ UPB_INLINE struct envoy_config_core_v3_Node* envoy_config_bootstrap_v3_Bootstrap
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_static_resources(envoy_config_bootstrap_v3_Bootstrap *msg, envoy_config_bootstrap_v3_Bootstrap_StaticResources* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(44, 80), envoy_config_bootstrap_v3_Bootstrap_StaticResources*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), envoy_config_bootstrap_v3_Bootstrap_StaticResources*) = value;
}
-UPB_INLINE struct envoy_config_bootstrap_v3_Bootstrap_StaticResources* envoy_config_bootstrap_v3_Bootstrap_mutable_static_resources(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_Bootstrap_StaticResources* envoy_config_bootstrap_v3_Bootstrap_mutable_static_resources(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_Bootstrap_StaticResources* sub = (struct envoy_config_bootstrap_v3_Bootstrap_StaticResources*)envoy_config_bootstrap_v3_Bootstrap_static_resources(msg);
if (sub == NULL) {
sub = (struct envoy_config_bootstrap_v3_Bootstrap_StaticResources*)_upb_Message_New(&envoy_config_bootstrap_v3_Bootstrap_StaticResources_msginit, arena);
@@ -303,9 +478,9 @@ UPB_INLINE struct envoy_config_bootstrap_v3_Bootstrap_StaticResources* envoy_con
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_dynamic_resources(envoy_config_bootstrap_v3_Bootstrap *msg, envoy_config_bootstrap_v3_Bootstrap_DynamicResources* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 88), envoy_config_bootstrap_v3_Bootstrap_DynamicResources*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), envoy_config_bootstrap_v3_Bootstrap_DynamicResources*) = value;
}
-UPB_INLINE struct envoy_config_bootstrap_v3_Bootstrap_DynamicResources* envoy_config_bootstrap_v3_Bootstrap_mutable_dynamic_resources(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_Bootstrap_DynamicResources* envoy_config_bootstrap_v3_Bootstrap_mutable_dynamic_resources(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_Bootstrap_DynamicResources* sub = (struct envoy_config_bootstrap_v3_Bootstrap_DynamicResources*)envoy_config_bootstrap_v3_Bootstrap_dynamic_resources(msg);
if (sub == NULL) {
sub = (struct envoy_config_bootstrap_v3_Bootstrap_DynamicResources*)_upb_Message_New(&envoy_config_bootstrap_v3_Bootstrap_DynamicResources_msginit, arena);
@@ -316,9 +491,9 @@ UPB_INLINE struct envoy_config_bootstrap_v3_Bootstrap_DynamicResources* envoy_co
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_cluster_manager(envoy_config_bootstrap_v3_Bootstrap *msg, envoy_config_bootstrap_v3_ClusterManager* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(52, 96), envoy_config_bootstrap_v3_ClusterManager*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), envoy_config_bootstrap_v3_ClusterManager*) = value;
}
-UPB_INLINE struct envoy_config_bootstrap_v3_ClusterManager* envoy_config_bootstrap_v3_Bootstrap_mutable_cluster_manager(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_ClusterManager* envoy_config_bootstrap_v3_Bootstrap_mutable_cluster_manager(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_ClusterManager* sub = (struct envoy_config_bootstrap_v3_ClusterManager*)envoy_config_bootstrap_v3_Bootstrap_cluster_manager(msg);
if (sub == NULL) {
sub = (struct envoy_config_bootstrap_v3_ClusterManager*)_upb_Message_New(&envoy_config_bootstrap_v3_ClusterManager_msginit, arena);
@@ -328,26 +503,25 @@ UPB_INLINE struct envoy_config_bootstrap_v3_ClusterManager* envoy_config_bootstr
return sub;
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_flags_path(envoy_config_bootstrap_v3_Bootstrap *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView) = value;
}
-UPB_INLINE struct envoy_config_metrics_v3_StatsSink** envoy_config_bootstrap_v3_Bootstrap_mutable_stats_sinks(envoy_config_bootstrap_v3_Bootstrap *msg, size_t *len) {
- return (struct envoy_config_metrics_v3_StatsSink**)_upb_array_mutable_accessor(msg, UPB_SIZE(108, 208), len);
+UPB_INLINE struct envoy_config_metrics_v3_StatsSink** envoy_config_bootstrap_v3_Bootstrap_mutable_stats_sinks(envoy_config_bootstrap_v3_Bootstrap* msg, size_t* len) {
+ return (struct envoy_config_metrics_v3_StatsSink**)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 64), len);
}
-UPB_INLINE struct envoy_config_metrics_v3_StatsSink** envoy_config_bootstrap_v3_Bootstrap_resize_stats_sinks(envoy_config_bootstrap_v3_Bootstrap *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_metrics_v3_StatsSink**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(108, 208), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_metrics_v3_StatsSink** envoy_config_bootstrap_v3_Bootstrap_resize_stats_sinks(envoy_config_bootstrap_v3_Bootstrap* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_metrics_v3_StatsSink**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 64), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_metrics_v3_StatsSink* envoy_config_bootstrap_v3_Bootstrap_add_stats_sinks(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_metrics_v3_StatsSink* envoy_config_bootstrap_v3_Bootstrap_add_stats_sinks(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_metrics_v3_StatsSink* sub = (struct envoy_config_metrics_v3_StatsSink*)_upb_Message_New(&envoy_config_metrics_v3_StatsSink_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(108, 208), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 64), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_stats_flush_interval(envoy_config_bootstrap_v3_Bootstrap *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(56, 104), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Bootstrap_mutable_stats_flush_interval(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Bootstrap_mutable_stats_flush_interval(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_bootstrap_v3_Bootstrap_stats_flush_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -358,9 +532,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Bootstrap_
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_watchdog(envoy_config_bootstrap_v3_Bootstrap *msg, envoy_config_bootstrap_v3_Watchdog* value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(60, 112), envoy_config_bootstrap_v3_Watchdog*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 80), envoy_config_bootstrap_v3_Watchdog*) = value;
}
-UPB_INLINE struct envoy_config_bootstrap_v3_Watchdog* envoy_config_bootstrap_v3_Bootstrap_mutable_watchdog(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_Watchdog* envoy_config_bootstrap_v3_Bootstrap_mutable_watchdog(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_Watchdog* sub = (struct envoy_config_bootstrap_v3_Watchdog*)envoy_config_bootstrap_v3_Bootstrap_watchdog(msg);
if (sub == NULL) {
sub = (struct envoy_config_bootstrap_v3_Watchdog*)_upb_Message_New(&envoy_config_bootstrap_v3_Watchdog_msginit, arena);
@@ -371,9 +545,9 @@ UPB_INLINE struct envoy_config_bootstrap_v3_Watchdog* envoy_config_bootstrap_v3_
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_tracing(envoy_config_bootstrap_v3_Bootstrap *msg, struct envoy_config_trace_v3_Tracing* value) {
_upb_sethas(msg, 7);
- *UPB_PTR_AT(msg, UPB_SIZE(64, 120), struct envoy_config_trace_v3_Tracing*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 88), struct envoy_config_trace_v3_Tracing*) = value;
}
-UPB_INLINE struct envoy_config_trace_v3_Tracing* envoy_config_bootstrap_v3_Bootstrap_mutable_tracing(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_trace_v3_Tracing* envoy_config_bootstrap_v3_Bootstrap_mutable_tracing(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_trace_v3_Tracing* sub = (struct envoy_config_trace_v3_Tracing*)envoy_config_bootstrap_v3_Bootstrap_tracing(msg);
if (sub == NULL) {
sub = (struct envoy_config_trace_v3_Tracing*)_upb_Message_New(&envoy_config_trace_v3_Tracing_msginit, arena);
@@ -384,9 +558,9 @@ UPB_INLINE struct envoy_config_trace_v3_Tracing* envoy_config_bootstrap_v3_Boots
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_admin(envoy_config_bootstrap_v3_Bootstrap *msg, envoy_config_bootstrap_v3_Admin* value) {
_upb_sethas(msg, 8);
- *UPB_PTR_AT(msg, UPB_SIZE(68, 128), envoy_config_bootstrap_v3_Admin*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 96), envoy_config_bootstrap_v3_Admin*) = value;
}
-UPB_INLINE struct envoy_config_bootstrap_v3_Admin* envoy_config_bootstrap_v3_Bootstrap_mutable_admin(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_Admin* envoy_config_bootstrap_v3_Bootstrap_mutable_admin(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_Admin* sub = (struct envoy_config_bootstrap_v3_Admin*)envoy_config_bootstrap_v3_Bootstrap_admin(msg);
if (sub == NULL) {
sub = (struct envoy_config_bootstrap_v3_Admin*)_upb_Message_New(&envoy_config_bootstrap_v3_Admin_msginit, arena);
@@ -397,9 +571,9 @@ UPB_INLINE struct envoy_config_bootstrap_v3_Admin* envoy_config_bootstrap_v3_Boo
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_stats_config(envoy_config_bootstrap_v3_Bootstrap *msg, struct envoy_config_metrics_v3_StatsConfig* value) {
_upb_sethas(msg, 9);
- *UPB_PTR_AT(msg, UPB_SIZE(72, 136), struct envoy_config_metrics_v3_StatsConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 104), struct envoy_config_metrics_v3_StatsConfig*) = value;
}
-UPB_INLINE struct envoy_config_metrics_v3_StatsConfig* envoy_config_bootstrap_v3_Bootstrap_mutable_stats_config(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_metrics_v3_StatsConfig* envoy_config_bootstrap_v3_Bootstrap_mutable_stats_config(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_metrics_v3_StatsConfig* sub = (struct envoy_config_metrics_v3_StatsConfig*)envoy_config_bootstrap_v3_Bootstrap_stats_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_metrics_v3_StatsConfig*)_upb_Message_New(&envoy_config_metrics_v3_StatsConfig_msginit, arena);
@@ -410,9 +584,9 @@ UPB_INLINE struct envoy_config_metrics_v3_StatsConfig* envoy_config_bootstrap_v3
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_hds_config(envoy_config_bootstrap_v3_Bootstrap *msg, struct envoy_config_core_v3_ApiConfigSource* value) {
_upb_sethas(msg, 10);
- *UPB_PTR_AT(msg, UPB_SIZE(76, 144), struct envoy_config_core_v3_ApiConfigSource*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 112), struct envoy_config_core_v3_ApiConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ApiConfigSource* envoy_config_bootstrap_v3_Bootstrap_mutable_hds_config(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ApiConfigSource* envoy_config_bootstrap_v3_Bootstrap_mutable_hds_config(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ApiConfigSource* sub = (struct envoy_config_core_v3_ApiConfigSource*)envoy_config_bootstrap_v3_Bootstrap_hds_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ApiConfigSource*)_upb_Message_New(&envoy_config_core_v3_ApiConfigSource_msginit, arena);
@@ -423,9 +597,9 @@ UPB_INLINE struct envoy_config_core_v3_ApiConfigSource* envoy_config_bootstrap_v
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_overload_manager(envoy_config_bootstrap_v3_Bootstrap *msg, struct envoy_config_overload_v3_OverloadManager* value) {
_upb_sethas(msg, 11);
- *UPB_PTR_AT(msg, UPB_SIZE(80, 152), struct envoy_config_overload_v3_OverloadManager*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 120), struct envoy_config_overload_v3_OverloadManager*) = value;
}
-UPB_INLINE struct envoy_config_overload_v3_OverloadManager* envoy_config_bootstrap_v3_Bootstrap_mutable_overload_manager(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_overload_v3_OverloadManager* envoy_config_bootstrap_v3_Bootstrap_mutable_overload_manager(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_overload_v3_OverloadManager* sub = (struct envoy_config_overload_v3_OverloadManager*)envoy_config_bootstrap_v3_Bootstrap_overload_manager(msg);
if (sub == NULL) {
sub = (struct envoy_config_overload_v3_OverloadManager*)_upb_Message_New(&envoy_config_overload_v3_OverloadManager_msginit, arena);
@@ -435,13 +609,13 @@ UPB_INLINE struct envoy_config_overload_v3_OverloadManager* envoy_config_bootstr
return sub;
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_enable_dispatcher_stats(envoy_config_bootstrap_v3_Bootstrap *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = value;
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_layered_runtime(envoy_config_bootstrap_v3_Bootstrap *msg, envoy_config_bootstrap_v3_LayeredRuntime* value) {
_upb_sethas(msg, 12);
- *UPB_PTR_AT(msg, UPB_SIZE(84, 160), envoy_config_bootstrap_v3_LayeredRuntime*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 128), envoy_config_bootstrap_v3_LayeredRuntime*) = value;
}
-UPB_INLINE struct envoy_config_bootstrap_v3_LayeredRuntime* envoy_config_bootstrap_v3_Bootstrap_mutable_layered_runtime(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_LayeredRuntime* envoy_config_bootstrap_v3_Bootstrap_mutable_layered_runtime(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_LayeredRuntime* sub = (struct envoy_config_bootstrap_v3_LayeredRuntime*)envoy_config_bootstrap_v3_Bootstrap_layered_runtime(msg);
if (sub == NULL) {
sub = (struct envoy_config_bootstrap_v3_LayeredRuntime*)_upb_Message_New(&envoy_config_bootstrap_v3_LayeredRuntime_msginit, arena);
@@ -451,13 +625,13 @@ UPB_INLINE struct envoy_config_bootstrap_v3_LayeredRuntime* envoy_config_bootstr
return sub;
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_header_prefix(envoy_config_bootstrap_v3_Bootstrap *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 136), upb_StringView) = value;
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_stats_server_version_override(envoy_config_bootstrap_v3_Bootstrap *msg, struct google_protobuf_UInt64Value* value) {
_upb_sethas(msg, 13);
- *UPB_PTR_AT(msg, UPB_SIZE(88, 168), struct google_protobuf_UInt64Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 152), struct google_protobuf_UInt64Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_bootstrap_v3_Bootstrap_mutable_stats_server_version_override(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_bootstrap_v3_Bootstrap_mutable_stats_server_version_override(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct google_protobuf_UInt64Value* sub = (struct google_protobuf_UInt64Value*)envoy_config_bootstrap_v3_Bootstrap_stats_server_version_override(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt64Value*)_upb_Message_New(&google_protobuf_UInt64Value_msginit, arena);
@@ -467,31 +641,29 @@ UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_bootstrap_v3_Bootstr
return sub;
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_use_tcp_for_dns_lookups(envoy_config_bootstrap_v3_Bootstrap *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(5, 5), bool) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_bootstrap_v3_Bootstrap_mutable_bootstrap_extensions(envoy_config_bootstrap_v3_Bootstrap *msg, size_t *len) {
- return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(112, 216), len);
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_bootstrap_v3_Bootstrap_mutable_bootstrap_extensions(envoy_config_bootstrap_v3_Bootstrap* msg, size_t* len) {
+ return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(84, 160), len);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_bootstrap_v3_Bootstrap_resize_bootstrap_extensions(envoy_config_bootstrap_v3_Bootstrap *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(112, 216), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_bootstrap_v3_Bootstrap_resize_bootstrap_extensions(envoy_config_bootstrap_v3_Bootstrap* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(84, 160), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_Bootstrap_add_bootstrap_extensions(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_Bootstrap_add_bootstrap_extensions(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(112, 216), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(84, 160), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource** envoy_config_bootstrap_v3_Bootstrap_mutable_config_sources(envoy_config_bootstrap_v3_Bootstrap *msg, size_t *len) {
- return (struct envoy_config_core_v3_ConfigSource**)_upb_array_mutable_accessor(msg, UPB_SIZE(116, 224), len);
+UPB_INLINE struct envoy_config_core_v3_ConfigSource** envoy_config_bootstrap_v3_Bootstrap_mutable_config_sources(envoy_config_bootstrap_v3_Bootstrap* msg, size_t* len) {
+ return (struct envoy_config_core_v3_ConfigSource**)_upb_array_mutable_accessor(msg, UPB_SIZE(88, 168), len);
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource** envoy_config_bootstrap_v3_Bootstrap_resize_config_sources(envoy_config_bootstrap_v3_Bootstrap *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_ConfigSource**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(116, 224), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_ConfigSource** envoy_config_bootstrap_v3_Bootstrap_resize_config_sources(envoy_config_bootstrap_v3_Bootstrap* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_ConfigSource**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(88, 168), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_Bootstrap_add_config_sources(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_Bootstrap_add_config_sources(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(116, 224), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(88, 168), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -499,7 +671,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_default_config_source(en
_upb_sethas(msg, 14);
*UPB_PTR_AT(msg, UPB_SIZE(92, 176), struct envoy_config_core_v3_ConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_Bootstrap_mutable_default_config_source(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_Bootstrap_mutable_default_config_source(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_config_bootstrap_v3_Bootstrap_default_config_source(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
@@ -509,27 +681,32 @@ UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_B
return sub;
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_default_socket_interface(envoy_config_bootstrap_v3_Bootstrap *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(96, 184), upb_StringView) = value;
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_clear(envoy_config_bootstrap_v3_Bootstrap* msg) { _upb_msg_map_clear(msg, UPB_SIZE(104, 200)); }
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_set(envoy_config_bootstrap_v3_Bootstrap* msg, upb_StringView key, struct envoy_config_core_v3_TypedExtensionConfig* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(104, 200), &key, 0, &val, sizeof(val), a);
}
-UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_clear(envoy_config_bootstrap_v3_Bootstrap *msg) { _upb_msg_map_clear(msg, UPB_SIZE(120, 232)); }
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_set(envoy_config_bootstrap_v3_Bootstrap *msg, upb_StringView key, struct envoy_config_core_v3_TypedExtensionConfig* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(120, 232), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_delete(envoy_config_bootstrap_v3_Bootstrap *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(120, 232), &key, 0); }
-UPB_INLINE envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry* envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_nextmutable(envoy_config_bootstrap_v3_Bootstrap *msg, size_t* iter) { return (envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry*)_upb_msg_map_next(msg, UPB_SIZE(120, 232), iter); }
-UPB_INLINE upb_StringView* envoy_config_bootstrap_v3_Bootstrap_mutable_node_context_params(envoy_config_bootstrap_v3_Bootstrap *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(124, 240), len);
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_delete(envoy_config_bootstrap_v3_Bootstrap* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(104, 200), &key, 0);
}
-UPB_INLINE upb_StringView* envoy_config_bootstrap_v3_Bootstrap_resize_node_context_params(envoy_config_bootstrap_v3_Bootstrap *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(124, 240), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry* envoy_config_bootstrap_v3_Bootstrap_certificate_provider_instances_nextmutable(envoy_config_bootstrap_v3_Bootstrap* msg, size_t* iter) {
+ return (envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry*)_upb_msg_map_next(msg, UPB_SIZE(104, 200), iter);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_add_node_context_params(envoy_config_bootstrap_v3_Bootstrap *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(124, 240), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE upb_StringView* envoy_config_bootstrap_v3_Bootstrap_mutable_node_context_params(envoy_config_bootstrap_v3_Bootstrap* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(108, 208), len);
+}
+UPB_INLINE upb_StringView* envoy_config_bootstrap_v3_Bootstrap_resize_node_context_params(envoy_config_bootstrap_v3_Bootstrap* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(108, 208), len, UPB_SIZE(3, 4), arena);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_add_node_context_params(envoy_config_bootstrap_v3_Bootstrap* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(108, 208), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_watchdogs(envoy_config_bootstrap_v3_Bootstrap *msg, envoy_config_bootstrap_v3_Watchdogs* value) {
_upb_sethas(msg, 15);
- *UPB_PTR_AT(msg, UPB_SIZE(96, 184), envoy_config_bootstrap_v3_Watchdogs*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(112, 216), envoy_config_bootstrap_v3_Watchdogs*) = value;
}
-UPB_INLINE struct envoy_config_bootstrap_v3_Watchdogs* envoy_config_bootstrap_v3_Bootstrap_mutable_watchdogs(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_Watchdogs* envoy_config_bootstrap_v3_Bootstrap_mutable_watchdogs(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_Watchdogs* sub = (struct envoy_config_bootstrap_v3_Watchdogs*)envoy_config_bootstrap_v3_Bootstrap_watchdogs(msg);
if (sub == NULL) {
sub = (struct envoy_config_bootstrap_v3_Watchdogs*)_upb_Message_New(&envoy_config_bootstrap_v3_Watchdogs_msginit, arena);
@@ -538,27 +715,26 @@ UPB_INLINE struct envoy_config_bootstrap_v3_Watchdogs* envoy_config_bootstrap_v3
}
return sub;
}
-UPB_INLINE envoy_config_bootstrap_v3_FatalAction** envoy_config_bootstrap_v3_Bootstrap_mutable_fatal_actions(envoy_config_bootstrap_v3_Bootstrap *msg, size_t *len) {
- return (envoy_config_bootstrap_v3_FatalAction**)_upb_array_mutable_accessor(msg, UPB_SIZE(128, 248), len);
+UPB_INLINE envoy_config_bootstrap_v3_FatalAction** envoy_config_bootstrap_v3_Bootstrap_mutable_fatal_actions(envoy_config_bootstrap_v3_Bootstrap* msg, size_t* len) {
+ return (envoy_config_bootstrap_v3_FatalAction**)_upb_array_mutable_accessor(msg, UPB_SIZE(116, 224), len);
}
-UPB_INLINE envoy_config_bootstrap_v3_FatalAction** envoy_config_bootstrap_v3_Bootstrap_resize_fatal_actions(envoy_config_bootstrap_v3_Bootstrap *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_bootstrap_v3_FatalAction**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(128, 248), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_bootstrap_v3_FatalAction** envoy_config_bootstrap_v3_Bootstrap_resize_fatal_actions(envoy_config_bootstrap_v3_Bootstrap* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_bootstrap_v3_FatalAction**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(116, 224), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_bootstrap_v3_FatalAction* envoy_config_bootstrap_v3_Bootstrap_add_fatal_actions(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_FatalAction* envoy_config_bootstrap_v3_Bootstrap_add_fatal_actions(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_FatalAction* sub = (struct envoy_config_bootstrap_v3_FatalAction*)_upb_Message_New(&envoy_config_bootstrap_v3_FatalAction_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(128, 248), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(116, 224), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_stats_flush_on_admin(envoy_config_bootstrap_v3_Bootstrap *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(136, 264), value, UPB_SIZE(140, 268), 29);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(3, 3), value, UPB_SIZE(8, 8), 29);
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_dns_resolution_config(envoy_config_bootstrap_v3_Bootstrap *msg, struct envoy_config_core_v3_DnsResolutionConfig* value) {
_upb_sethas(msg, 16);
- *UPB_PTR_AT(msg, UPB_SIZE(100, 192), struct envoy_config_core_v3_DnsResolutionConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(120, 232), struct envoy_config_core_v3_DnsResolutionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DnsResolutionConfig* envoy_config_bootstrap_v3_Bootstrap_mutable_dns_resolution_config(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DnsResolutionConfig* envoy_config_bootstrap_v3_Bootstrap_mutable_dns_resolution_config(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DnsResolutionConfig* sub = (struct envoy_config_core_v3_DnsResolutionConfig*)envoy_config_bootstrap_v3_Bootstrap_dns_resolution_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DnsResolutionConfig*)_upb_Message_New(&envoy_config_core_v3_DnsResolutionConfig_msginit, arena);
@@ -569,9 +745,9 @@ UPB_INLINE struct envoy_config_core_v3_DnsResolutionConfig* envoy_config_bootstr
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_typed_dns_resolver_config(envoy_config_bootstrap_v3_Bootstrap *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
_upb_sethas(msg, 17);
- *UPB_PTR_AT(msg, UPB_SIZE(104, 200), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(124, 240), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_Bootstrap_mutable_typed_dns_resolver_config(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_Bootstrap_mutable_typed_dns_resolver_config(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_bootstrap_v3_Bootstrap_typed_dns_resolver_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -580,21 +756,33 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootst
}
return sub;
}
-UPB_INLINE envoy_config_bootstrap_v3_CustomInlineHeader** envoy_config_bootstrap_v3_Bootstrap_mutable_inline_headers(envoy_config_bootstrap_v3_Bootstrap *msg, size_t *len) {
- return (envoy_config_bootstrap_v3_CustomInlineHeader**)_upb_array_mutable_accessor(msg, UPB_SIZE(132, 256), len);
+UPB_INLINE envoy_config_bootstrap_v3_CustomInlineHeader** envoy_config_bootstrap_v3_Bootstrap_mutable_inline_headers(envoy_config_bootstrap_v3_Bootstrap* msg, size_t* len) {
+ return (envoy_config_bootstrap_v3_CustomInlineHeader**)_upb_array_mutable_accessor(msg, UPB_SIZE(128, 248), len);
}
-UPB_INLINE envoy_config_bootstrap_v3_CustomInlineHeader** envoy_config_bootstrap_v3_Bootstrap_resize_inline_headers(envoy_config_bootstrap_v3_Bootstrap *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_bootstrap_v3_CustomInlineHeader**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(132, 256), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_bootstrap_v3_CustomInlineHeader** envoy_config_bootstrap_v3_Bootstrap_resize_inline_headers(envoy_config_bootstrap_v3_Bootstrap* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_bootstrap_v3_CustomInlineHeader**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(128, 248), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_bootstrap_v3_CustomInlineHeader* envoy_config_bootstrap_v3_Bootstrap_add_inline_headers(envoy_config_bootstrap_v3_Bootstrap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_CustomInlineHeader* envoy_config_bootstrap_v3_Bootstrap_add_inline_headers(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_CustomInlineHeader* sub = (struct envoy_config_bootstrap_v3_CustomInlineHeader*)_upb_Message_New(&envoy_config_bootstrap_v3_CustomInlineHeader_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(132, 256), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(128, 248), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_perf_tracing_file_path(envoy_config_bootstrap_v3_Bootstrap *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(32, 56), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(132, 256), upb_StringView) = value;
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_set_default_regex_engine(envoy_config_bootstrap_v3_Bootstrap *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
+ _upb_sethas(msg, 18);
+ *UPB_PTR_AT(msg, UPB_SIZE(140, 272), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
+}
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_Bootstrap_mutable_default_regex_engine(envoy_config_bootstrap_v3_Bootstrap* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_bootstrap_v3_Bootstrap_default_regex_engine(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_bootstrap_v3_Bootstrap_set_default_regex_engine(msg, sub);
+ }
+ return sub;
}
/* envoy.config.bootstrap.v3.Bootstrap.StaticResources */
@@ -622,55 +810,77 @@ UPB_INLINE envoy_config_bootstrap_v3_Bootstrap_StaticResources* envoy_config_boo
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Bootstrap_StaticResources_serialize(const envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Bootstrap_StaticResources_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Bootstrap_StaticResources_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Bootstrap_StaticResources_serialize_ex(const envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Bootstrap_StaticResources_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Bootstrap_StaticResources_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_StaticResources_has_listeners(const envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_StaticResources_clear_listeners(const envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const struct envoy_config_listener_v3_Listener* const* envoy_config_bootstrap_v3_Bootstrap_StaticResources_listeners(const envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg, size_t* len) {
+ return (const struct envoy_config_listener_v3_Listener* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_StaticResources_has_clusters(const envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_StaticResources_clear_clusters(const envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const struct envoy_config_cluster_v3_Cluster* const* envoy_config_bootstrap_v3_Bootstrap_StaticResources_clusters(const envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg, size_t* len) {
+ return (const struct envoy_config_cluster_v3_Cluster* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_StaticResources_has_secrets(const envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_StaticResources_clear_secrets(const envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_Secret* const* envoy_config_bootstrap_v3_Bootstrap_StaticResources_secrets(const envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg, size_t* len) {
+ return (const struct envoy_extensions_transport_sockets_tls_v3_Secret* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_StaticResources_has_listeners(const envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const struct envoy_config_listener_v3_Listener* const* envoy_config_bootstrap_v3_Bootstrap_StaticResources_listeners(const envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg, size_t *len) { return (const struct envoy_config_listener_v3_Listener* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_StaticResources_has_clusters(const envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE const struct envoy_config_cluster_v3_Cluster* const* envoy_config_bootstrap_v3_Bootstrap_StaticResources_clusters(const envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg, size_t *len) { return (const struct envoy_config_cluster_v3_Cluster* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_StaticResources_has_secrets(const envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_Secret* const* envoy_config_bootstrap_v3_Bootstrap_StaticResources_secrets(const envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg, size_t *len) { return (const struct envoy_extensions_transport_sockets_tls_v3_Secret* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
-UPB_INLINE struct envoy_config_listener_v3_Listener** envoy_config_bootstrap_v3_Bootstrap_StaticResources_mutable_listeners(envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg, size_t *len) {
+UPB_INLINE struct envoy_config_listener_v3_Listener** envoy_config_bootstrap_v3_Bootstrap_StaticResources_mutable_listeners(envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg, size_t* len) {
return (struct envoy_config_listener_v3_Listener**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE struct envoy_config_listener_v3_Listener** envoy_config_bootstrap_v3_Bootstrap_StaticResources_resize_listeners(envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_Listener** envoy_config_bootstrap_v3_Bootstrap_StaticResources_resize_listeners(envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg, size_t len, upb_Arena* arena) {
return (struct envoy_config_listener_v3_Listener**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_listener_v3_Listener* envoy_config_bootstrap_v3_Bootstrap_StaticResources_add_listeners(envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_Listener* envoy_config_bootstrap_v3_Bootstrap_StaticResources_add_listeners(envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_Listener* sub = (struct envoy_config_listener_v3_Listener*)_upb_Message_New(&envoy_config_listener_v3_Listener_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster** envoy_config_bootstrap_v3_Bootstrap_StaticResources_mutable_clusters(envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg, size_t *len) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster** envoy_config_bootstrap_v3_Bootstrap_StaticResources_mutable_clusters(envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg, size_t* len) {
return (struct envoy_config_cluster_v3_Cluster**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster** envoy_config_bootstrap_v3_Bootstrap_StaticResources_resize_clusters(envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster** envoy_config_bootstrap_v3_Bootstrap_StaticResources_resize_clusters(envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg, size_t len, upb_Arena* arena) {
return (struct envoy_config_cluster_v3_Cluster**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster* envoy_config_bootstrap_v3_Bootstrap_StaticResources_add_clusters(envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster* envoy_config_bootstrap_v3_Bootstrap_StaticResources_add_clusters(envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster* sub = (struct envoy_config_cluster_v3_Cluster*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_Secret** envoy_config_bootstrap_v3_Bootstrap_StaticResources_mutable_secrets(envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg, size_t *len) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_Secret** envoy_config_bootstrap_v3_Bootstrap_StaticResources_mutable_secrets(envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg, size_t* len) {
return (struct envoy_extensions_transport_sockets_tls_v3_Secret**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_Secret** envoy_config_bootstrap_v3_Bootstrap_StaticResources_resize_secrets(envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_Secret** envoy_config_bootstrap_v3_Bootstrap_StaticResources_resize_secrets(envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg, size_t len, upb_Arena* arena) {
return (struct envoy_extensions_transport_sockets_tls_v3_Secret**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_Secret* envoy_config_bootstrap_v3_Bootstrap_StaticResources_add_secrets(envoy_config_bootstrap_v3_Bootstrap_StaticResources *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_Secret* envoy_config_bootstrap_v3_Bootstrap_StaticResources_add_secrets(envoy_config_bootstrap_v3_Bootstrap_StaticResources* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_Secret* sub = (struct envoy_extensions_transport_sockets_tls_v3_Secret*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_Secret_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -700,36 +910,61 @@ UPB_INLINE envoy_config_bootstrap_v3_Bootstrap_DynamicResources* envoy_config_bo
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Bootstrap_DynamicResources_serialize(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Bootstrap_DynamicResources_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Bootstrap_DynamicResources_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Bootstrap_DynamicResources_serialize_ex(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Bootstrap_DynamicResources_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Bootstrap_DynamicResources_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_DynamicResources_has_lds_config(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_DynamicResources_clear_lds_config(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_DynamicResources_has_lds_config(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_Bootstrap_DynamicResources_lds_config(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct envoy_config_core_v3_ConfigSource*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_ConfigSource*);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_DynamicResources_has_cds_config(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_DynamicResources_clear_cds_config(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_DynamicResources_has_cds_config(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_Bootstrap_DynamicResources_cds_config(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct envoy_config_core_v3_ConfigSource*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_config_core_v3_ConfigSource*);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_DynamicResources_has_ads_config(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_DynamicResources_clear_ads_config(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_DynamicResources_has_ads_config(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct envoy_config_core_v3_ApiConfigSource* envoy_config_bootstrap_v3_Bootstrap_DynamicResources_ads_config(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct envoy_config_core_v3_ApiConfigSource*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_ApiConfigSource*);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_DynamicResources_clear_lds_resources_locator(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Bootstrap_DynamicResources_lds_resources_locator(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_DynamicResources_clear_cds_resources_locator(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Bootstrap_DynamicResources_cds_resources_locator(const envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView);
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_DynamicResources_set_lds_config(envoy_config_bootstrap_v3_Bootstrap_DynamicResources *msg, struct envoy_config_core_v3_ConfigSource* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct envoy_config_core_v3_ConfigSource*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_ConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_Bootstrap_DynamicResources_mutable_lds_config(envoy_config_bootstrap_v3_Bootstrap_DynamicResources *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_Bootstrap_DynamicResources_mutable_lds_config(envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_config_bootstrap_v3_Bootstrap_DynamicResources_lds_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
@@ -740,9 +975,9 @@ UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_B
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_DynamicResources_set_cds_config(envoy_config_bootstrap_v3_Bootstrap_DynamicResources *msg, struct envoy_config_core_v3_ConfigSource* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct envoy_config_core_v3_ConfigSource*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_config_core_v3_ConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_Bootstrap_DynamicResources_mutable_cds_config(envoy_config_bootstrap_v3_Bootstrap_DynamicResources *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_Bootstrap_DynamicResources_mutable_cds_config(envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_config_bootstrap_v3_Bootstrap_DynamicResources_cds_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
@@ -753,9 +988,9 @@ UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_B
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_DynamicResources_set_ads_config(envoy_config_bootstrap_v3_Bootstrap_DynamicResources *msg, struct envoy_config_core_v3_ApiConfigSource* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct envoy_config_core_v3_ApiConfigSource*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_ApiConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ApiConfigSource* envoy_config_bootstrap_v3_Bootstrap_DynamicResources_mutable_ads_config(envoy_config_bootstrap_v3_Bootstrap_DynamicResources *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ApiConfigSource* envoy_config_bootstrap_v3_Bootstrap_DynamicResources_mutable_ads_config(envoy_config_bootstrap_v3_Bootstrap_DynamicResources* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ApiConfigSource* sub = (struct envoy_config_core_v3_ApiConfigSource*)envoy_config_bootstrap_v3_Bootstrap_DynamicResources_ads_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ApiConfigSource*)_upb_Message_New(&envoy_config_core_v3_ApiConfigSource_msginit, arena);
@@ -765,21 +1000,23 @@ UPB_INLINE struct envoy_config_core_v3_ApiConfigSource* envoy_config_bootstrap_v
return sub;
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_DynamicResources_set_lds_resources_locator(envoy_config_bootstrap_v3_Bootstrap_DynamicResources *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = value;
}
UPB_INLINE void envoy_config_bootstrap_v3_Bootstrap_DynamicResources_set_cds_resources_locator(envoy_config_bootstrap_v3_Bootstrap_DynamicResources *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = value;
}
/* envoy.config.bootstrap.v3.Bootstrap.CertificateProviderInstancesEntry */
-UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry_key(const envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry *msg) {
+UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry_key(const envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry_has_value(const envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry_value(const envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry *msg) {
+UPB_INLINE bool envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry_has_value(const envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry_value(const envoy_config_bootstrap_v3_Bootstrap_CertificateProviderInstancesEntry* msg) {
struct envoy_config_core_v3_TypedExtensionConfig* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -814,26 +1051,58 @@ UPB_INLINE envoy_config_bootstrap_v3_Admin* envoy_config_bootstrap_v3_Admin_pars
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Admin_serialize(const envoy_config_bootstrap_v3_Admin* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Admin_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Admin_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Admin_serialize_ex(const envoy_config_bootstrap_v3_Admin* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Admin_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Admin_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Admin_clear_access_log_path(const envoy_config_bootstrap_v3_Admin* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Admin_access_log_path(const envoy_config_bootstrap_v3_Admin* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
+UPB_INLINE void envoy_config_bootstrap_v3_Admin_clear_profile_path(const envoy_config_bootstrap_v3_Admin* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Admin_profile_path(const envoy_config_bootstrap_v3_Admin* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Admin_has_address(const envoy_config_bootstrap_v3_Admin *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_bootstrap_v3_Admin_has_address(const envoy_config_bootstrap_v3_Admin* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Admin_clear_address(const envoy_config_bootstrap_v3_Admin* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_Address* envoy_config_bootstrap_v3_Admin_address(const envoy_config_bootstrap_v3_Admin* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct envoy_config_core_v3_Address*);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Admin_has_socket_options(const envoy_config_bootstrap_v3_Admin *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48)); }
-UPB_INLINE const struct envoy_config_core_v3_SocketOption* const* envoy_config_bootstrap_v3_Admin_socket_options(const envoy_config_bootstrap_v3_Admin *msg, size_t *len) { return (const struct envoy_config_core_v3_SocketOption* const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len); }
-UPB_INLINE bool envoy_config_bootstrap_v3_Admin_has_access_log(const envoy_config_bootstrap_v3_Admin *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 56)); }
-UPB_INLINE const struct envoy_config_accesslog_v3_AccessLog* const* envoy_config_bootstrap_v3_Admin_access_log(const envoy_config_bootstrap_v3_Admin *msg, size_t *len) { return (const struct envoy_config_accesslog_v3_AccessLog* const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len); }
+UPB_INLINE bool envoy_config_bootstrap_v3_Admin_has_socket_options(const envoy_config_bootstrap_v3_Admin* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Admin_clear_socket_options(const envoy_config_bootstrap_v3_Admin* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE const struct envoy_config_core_v3_SocketOption* const* envoy_config_bootstrap_v3_Admin_socket_options(const envoy_config_bootstrap_v3_Admin* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_SocketOption* const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Admin_has_access_log(const envoy_config_bootstrap_v3_Admin* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Admin_clear_access_log(const envoy_config_bootstrap_v3_Admin* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE const struct envoy_config_accesslog_v3_AccessLog* const* envoy_config_bootstrap_v3_Admin_access_log(const envoy_config_bootstrap_v3_Admin* msg, size_t* len) {
+ return (const struct envoy_config_accesslog_v3_AccessLog* const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Admin_clear_ignore_global_conn_limit(const envoy_config_bootstrap_v3_Admin* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_config_bootstrap_v3_Admin_ignore_global_conn_limit(const envoy_config_bootstrap_v3_Admin* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
@@ -848,7 +1117,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_Admin_set_address(envoy_config_bootstr
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct envoy_config_core_v3_Address*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_bootstrap_v3_Admin_mutable_address(envoy_config_bootstrap_v3_Admin *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_bootstrap_v3_Admin_mutable_address(envoy_config_bootstrap_v3_Admin* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Address* sub = (struct envoy_config_core_v3_Address*)envoy_config_bootstrap_v3_Admin_address(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Address*)_upb_Message_New(&envoy_config_core_v3_Address_msginit, arena);
@@ -857,29 +1126,27 @@ UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_bootstrap_v3_Admin_
}
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_SocketOption** envoy_config_bootstrap_v3_Admin_mutable_socket_options(envoy_config_bootstrap_v3_Admin *msg, size_t *len) {
+UPB_INLINE struct envoy_config_core_v3_SocketOption** envoy_config_bootstrap_v3_Admin_mutable_socket_options(envoy_config_bootstrap_v3_Admin* msg, size_t* len) {
return (struct envoy_config_core_v3_SocketOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
}
-UPB_INLINE struct envoy_config_core_v3_SocketOption** envoy_config_bootstrap_v3_Admin_resize_socket_options(envoy_config_bootstrap_v3_Admin *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_SocketOption** envoy_config_bootstrap_v3_Admin_resize_socket_options(envoy_config_bootstrap_v3_Admin* msg, size_t len, upb_Arena* arena) {
return (struct envoy_config_core_v3_SocketOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_SocketOption* envoy_config_bootstrap_v3_Admin_add_socket_options(envoy_config_bootstrap_v3_Admin *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_SocketOption* envoy_config_bootstrap_v3_Admin_add_socket_options(envoy_config_bootstrap_v3_Admin* msg, upb_Arena* arena) {
struct envoy_config_core_v3_SocketOption* sub = (struct envoy_config_core_v3_SocketOption*)_upb_Message_New(&envoy_config_core_v3_SocketOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(24, 48), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 48), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_config_bootstrap_v3_Admin_mutable_access_log(envoy_config_bootstrap_v3_Admin *msg, size_t *len) {
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_config_bootstrap_v3_Admin_mutable_access_log(envoy_config_bootstrap_v3_Admin* msg, size_t* len) {
return (struct envoy_config_accesslog_v3_AccessLog**)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_config_bootstrap_v3_Admin_resize_access_log(envoy_config_bootstrap_v3_Admin *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_config_bootstrap_v3_Admin_resize_access_log(envoy_config_bootstrap_v3_Admin* msg, size_t len, upb_Arena* arena) {
return (struct envoy_config_accesslog_v3_AccessLog**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLog* envoy_config_bootstrap_v3_Admin_add_access_log(envoy_config_bootstrap_v3_Admin *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLog* envoy_config_bootstrap_v3_Admin_add_access_log(envoy_config_bootstrap_v3_Admin* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_AccessLog* sub = (struct envoy_config_accesslog_v3_AccessLog*)_upb_Message_New(&envoy_config_accesslog_v3_AccessLog_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(28, 56), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 56), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -912,24 +1179,46 @@ UPB_INLINE envoy_config_bootstrap_v3_ClusterManager* envoy_config_bootstrap_v3_C
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_ClusterManager_serialize(const envoy_config_bootstrap_v3_ClusterManager* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_ClusterManager_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_ClusterManager_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_ClusterManager_serialize_ex(const envoy_config_bootstrap_v3_ClusterManager* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_ClusterManager_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_ClusterManager_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_bootstrap_v3_ClusterManager_clear_local_cluster_name(const envoy_config_bootstrap_v3_ClusterManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_ClusterManager_local_cluster_name(const envoy_config_bootstrap_v3_ClusterManager* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_ClusterManager_has_outlier_detection(const envoy_config_bootstrap_v3_ClusterManager *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_bootstrap_v3_ClusterManager_has_outlier_detection(const envoy_config_bootstrap_v3_ClusterManager* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_ClusterManager_clear_outlier_detection(const envoy_config_bootstrap_v3_ClusterManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_bootstrap_v3_ClusterManager_OutlierDetection* envoy_config_bootstrap_v3_ClusterManager_outlier_detection(const envoy_config_bootstrap_v3_ClusterManager* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_config_bootstrap_v3_ClusterManager_OutlierDetection*);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_ClusterManager_has_upstream_bind_config(const envoy_config_bootstrap_v3_ClusterManager *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_bootstrap_v3_ClusterManager_has_upstream_bind_config(const envoy_config_bootstrap_v3_ClusterManager* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_ClusterManager_clear_upstream_bind_config(const envoy_config_bootstrap_v3_ClusterManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_BindConfig* envoy_config_bootstrap_v3_ClusterManager_upstream_bind_config(const envoy_config_bootstrap_v3_ClusterManager* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_config_core_v3_BindConfig*);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_ClusterManager_has_load_stats_config(const envoy_config_bootstrap_v3_ClusterManager *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_bootstrap_v3_ClusterManager_has_load_stats_config(const envoy_config_bootstrap_v3_ClusterManager* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_ClusterManager_clear_load_stats_config(const envoy_config_bootstrap_v3_ClusterManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_ApiConfigSource* envoy_config_bootstrap_v3_ClusterManager_load_stats_config(const envoy_config_bootstrap_v3_ClusterManager* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct envoy_config_core_v3_ApiConfigSource*);
}
@@ -941,7 +1230,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_ClusterManager_set_outlier_detection(e
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_config_bootstrap_v3_ClusterManager_OutlierDetection*) = value;
}
-UPB_INLINE struct envoy_config_bootstrap_v3_ClusterManager_OutlierDetection* envoy_config_bootstrap_v3_ClusterManager_mutable_outlier_detection(envoy_config_bootstrap_v3_ClusterManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_ClusterManager_OutlierDetection* envoy_config_bootstrap_v3_ClusterManager_mutable_outlier_detection(envoy_config_bootstrap_v3_ClusterManager* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_ClusterManager_OutlierDetection* sub = (struct envoy_config_bootstrap_v3_ClusterManager_OutlierDetection*)envoy_config_bootstrap_v3_ClusterManager_outlier_detection(msg);
if (sub == NULL) {
sub = (struct envoy_config_bootstrap_v3_ClusterManager_OutlierDetection*)_upb_Message_New(&envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_msginit, arena);
@@ -954,7 +1243,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_ClusterManager_set_upstream_bind_confi
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_config_core_v3_BindConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_BindConfig* envoy_config_bootstrap_v3_ClusterManager_mutable_upstream_bind_config(envoy_config_bootstrap_v3_ClusterManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_BindConfig* envoy_config_bootstrap_v3_ClusterManager_mutable_upstream_bind_config(envoy_config_bootstrap_v3_ClusterManager* msg, upb_Arena* arena) {
struct envoy_config_core_v3_BindConfig* sub = (struct envoy_config_core_v3_BindConfig*)envoy_config_bootstrap_v3_ClusterManager_upstream_bind_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_BindConfig*)_upb_Message_New(&envoy_config_core_v3_BindConfig_msginit, arena);
@@ -967,7 +1256,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_ClusterManager_set_load_stats_config(e
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct envoy_config_core_v3_ApiConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ApiConfigSource* envoy_config_bootstrap_v3_ClusterManager_mutable_load_stats_config(envoy_config_bootstrap_v3_ClusterManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ApiConfigSource* envoy_config_bootstrap_v3_ClusterManager_mutable_load_stats_config(envoy_config_bootstrap_v3_ClusterManager* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ApiConfigSource* sub = (struct envoy_config_core_v3_ApiConfigSource*)envoy_config_bootstrap_v3_ClusterManager_load_stats_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ApiConfigSource*)_upb_Message_New(&envoy_config_core_v3_ApiConfigSource_msginit, arena);
@@ -1002,16 +1291,28 @@ UPB_INLINE envoy_config_bootstrap_v3_ClusterManager_OutlierDetection* envoy_conf
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_serialize(const envoy_config_bootstrap_v3_ClusterManager_OutlierDetection* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_serialize_ex(const envoy_config_bootstrap_v3_ClusterManager_OutlierDetection* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_clear_event_log_path(const envoy_config_bootstrap_v3_ClusterManager_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_event_log_path(const envoy_config_bootstrap_v3_ClusterManager_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_has_event_service(const envoy_config_bootstrap_v3_ClusterManager_OutlierDetection *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_has_event_service(const envoy_config_bootstrap_v3_ClusterManager_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_clear_event_service(const envoy_config_bootstrap_v3_ClusterManager_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_EventServiceConfig* envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_event_service(const envoy_config_bootstrap_v3_ClusterManager_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_EventServiceConfig*);
}
@@ -1023,7 +1324,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_set_ev
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_EventServiceConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_EventServiceConfig* envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_mutable_event_service(envoy_config_bootstrap_v3_ClusterManager_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_EventServiceConfig* envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_mutable_event_service(envoy_config_bootstrap_v3_ClusterManager_OutlierDetection* msg, upb_Arena* arena) {
struct envoy_config_core_v3_EventServiceConfig* sub = (struct envoy_config_core_v3_EventServiceConfig*)envoy_config_bootstrap_v3_ClusterManager_OutlierDetection_event_service(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_EventServiceConfig*)_upb_Message_New(&envoy_config_core_v3_EventServiceConfig_msginit, arena);
@@ -1058,17 +1359,31 @@ UPB_INLINE envoy_config_bootstrap_v3_Watchdogs* envoy_config_bootstrap_v3_Watchd
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Watchdogs_serialize(const envoy_config_bootstrap_v3_Watchdogs* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Watchdogs_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Watchdogs_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Watchdogs_serialize_ex(const envoy_config_bootstrap_v3_Watchdogs* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Watchdogs_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Watchdogs_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Watchdogs_has_main_thread_watchdog(const envoy_config_bootstrap_v3_Watchdogs* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Watchdogs_clear_main_thread_watchdog(const envoy_config_bootstrap_v3_Watchdogs* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Watchdogs_has_main_thread_watchdog(const envoy_config_bootstrap_v3_Watchdogs *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_bootstrap_v3_Watchdog* envoy_config_bootstrap_v3_Watchdogs_main_thread_watchdog(const envoy_config_bootstrap_v3_Watchdogs* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_bootstrap_v3_Watchdog*);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Watchdogs_has_worker_watchdog(const envoy_config_bootstrap_v3_Watchdogs *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_bootstrap_v3_Watchdogs_has_worker_watchdog(const envoy_config_bootstrap_v3_Watchdogs* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Watchdogs_clear_worker_watchdog(const envoy_config_bootstrap_v3_Watchdogs* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_bootstrap_v3_Watchdog* envoy_config_bootstrap_v3_Watchdogs_worker_watchdog(const envoy_config_bootstrap_v3_Watchdogs* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const envoy_config_bootstrap_v3_Watchdog*);
}
@@ -1077,7 +1392,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_Watchdogs_set_main_thread_watchdog(env
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_bootstrap_v3_Watchdog*) = value;
}
-UPB_INLINE struct envoy_config_bootstrap_v3_Watchdog* envoy_config_bootstrap_v3_Watchdogs_mutable_main_thread_watchdog(envoy_config_bootstrap_v3_Watchdogs *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_Watchdog* envoy_config_bootstrap_v3_Watchdogs_mutable_main_thread_watchdog(envoy_config_bootstrap_v3_Watchdogs* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_Watchdog* sub = (struct envoy_config_bootstrap_v3_Watchdog*)envoy_config_bootstrap_v3_Watchdogs_main_thread_watchdog(msg);
if (sub == NULL) {
sub = (struct envoy_config_bootstrap_v3_Watchdog*)_upb_Message_New(&envoy_config_bootstrap_v3_Watchdog_msginit, arena);
@@ -1090,7 +1405,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_Watchdogs_set_worker_watchdog(envoy_co
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), envoy_config_bootstrap_v3_Watchdog*) = value;
}
-UPB_INLINE struct envoy_config_bootstrap_v3_Watchdog* envoy_config_bootstrap_v3_Watchdogs_mutable_worker_watchdog(envoy_config_bootstrap_v3_Watchdogs *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_Watchdog* envoy_config_bootstrap_v3_Watchdogs_mutable_worker_watchdog(envoy_config_bootstrap_v3_Watchdogs* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_Watchdog* sub = (struct envoy_config_bootstrap_v3_Watchdog*)envoy_config_bootstrap_v3_Watchdogs_worker_watchdog(msg);
if (sub == NULL) {
sub = (struct envoy_config_bootstrap_v3_Watchdog*)_upb_Message_New(&envoy_config_bootstrap_v3_Watchdog_msginit, arena);
@@ -1125,44 +1440,85 @@ UPB_INLINE envoy_config_bootstrap_v3_Watchdog* envoy_config_bootstrap_v3_Watchdo
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Watchdog_serialize(const envoy_config_bootstrap_v3_Watchdog* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Watchdog_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Watchdog_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Watchdog_serialize_ex(const envoy_config_bootstrap_v3_Watchdog* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Watchdog_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Watchdog_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_has_miss_timeout(const envoy_config_bootstrap_v3_Watchdog* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_clear_miss_timeout(const envoy_config_bootstrap_v3_Watchdog* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_has_miss_timeout(const envoy_config_bootstrap_v3_Watchdog *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_miss_timeout(const envoy_config_bootstrap_v3_Watchdog* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_has_megamiss_timeout(const envoy_config_bootstrap_v3_Watchdog *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_has_megamiss_timeout(const envoy_config_bootstrap_v3_Watchdog* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_clear_megamiss_timeout(const envoy_config_bootstrap_v3_Watchdog* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_megamiss_timeout(const envoy_config_bootstrap_v3_Watchdog* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_has_kill_timeout(const envoy_config_bootstrap_v3_Watchdog *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_has_kill_timeout(const envoy_config_bootstrap_v3_Watchdog* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_clear_kill_timeout(const envoy_config_bootstrap_v3_Watchdog* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_kill_timeout(const envoy_config_bootstrap_v3_Watchdog* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_has_multikill_timeout(const envoy_config_bootstrap_v3_Watchdog *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_has_multikill_timeout(const envoy_config_bootstrap_v3_Watchdog* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_clear_multikill_timeout(const envoy_config_bootstrap_v3_Watchdog* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_multikill_timeout(const envoy_config_bootstrap_v3_Watchdog* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_has_multikill_threshold(const envoy_config_bootstrap_v3_Watchdog *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_has_multikill_threshold(const envoy_config_bootstrap_v3_Watchdog* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_clear_multikill_threshold(const envoy_config_bootstrap_v3_Watchdog* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_Percent* envoy_config_bootstrap_v3_Watchdog_multikill_threshold(const envoy_config_bootstrap_v3_Watchdog* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct envoy_type_v3_Percent*);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_has_max_kill_timeout_jitter(const envoy_config_bootstrap_v3_Watchdog *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_has_max_kill_timeout_jitter(const envoy_config_bootstrap_v3_Watchdog* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_clear_max_kill_timeout_jitter(const envoy_config_bootstrap_v3_Watchdog* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_max_kill_timeout_jitter(const envoy_config_bootstrap_v3_Watchdog* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_has_actions(const envoy_config_bootstrap_v3_Watchdog *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 56)); }
-UPB_INLINE const envoy_config_bootstrap_v3_Watchdog_WatchdogAction* const* envoy_config_bootstrap_v3_Watchdog_actions(const envoy_config_bootstrap_v3_Watchdog *msg, size_t *len) { return (const envoy_config_bootstrap_v3_Watchdog_WatchdogAction* const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len); }
+UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_has_actions(const envoy_config_bootstrap_v3_Watchdog* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_clear_actions(const envoy_config_bootstrap_v3_Watchdog* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE const envoy_config_bootstrap_v3_Watchdog_WatchdogAction* const* envoy_config_bootstrap_v3_Watchdog_actions(const envoy_config_bootstrap_v3_Watchdog* msg, size_t* len) {
+ return (const envoy_config_bootstrap_v3_Watchdog_WatchdogAction* const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len);
+}
UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_set_miss_timeout(envoy_config_bootstrap_v3_Watchdog *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_mutable_miss_timeout(envoy_config_bootstrap_v3_Watchdog *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_mutable_miss_timeout(envoy_config_bootstrap_v3_Watchdog* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_bootstrap_v3_Watchdog_miss_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -1175,7 +1531,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_set_megamiss_timeout(envoy_co
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_mutable_megamiss_timeout(envoy_config_bootstrap_v3_Watchdog *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_mutable_megamiss_timeout(envoy_config_bootstrap_v3_Watchdog* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_bootstrap_v3_Watchdog_megamiss_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -1188,7 +1544,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_set_kill_timeout(envoy_config
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_mutable_kill_timeout(envoy_config_bootstrap_v3_Watchdog *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_mutable_kill_timeout(envoy_config_bootstrap_v3_Watchdog* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_bootstrap_v3_Watchdog_kill_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -1201,7 +1557,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_set_multikill_timeout(envoy_c
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_mutable_multikill_timeout(envoy_config_bootstrap_v3_Watchdog *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_mutable_multikill_timeout(envoy_config_bootstrap_v3_Watchdog* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_bootstrap_v3_Watchdog_multikill_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -1214,7 +1570,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_set_multikill_threshold(envoy
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct envoy_type_v3_Percent*) = value;
}
-UPB_INLINE struct envoy_type_v3_Percent* envoy_config_bootstrap_v3_Watchdog_mutable_multikill_threshold(envoy_config_bootstrap_v3_Watchdog *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Percent* envoy_config_bootstrap_v3_Watchdog_mutable_multikill_threshold(envoy_config_bootstrap_v3_Watchdog* msg, upb_Arena* arena) {
struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_config_bootstrap_v3_Watchdog_multikill_threshold(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
@@ -1227,7 +1583,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_set_max_kill_timeout_jitter(e
_upb_sethas(msg, 6);
*UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_mutable_max_kill_timeout_jitter(envoy_config_bootstrap_v3_Watchdog *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_mutable_max_kill_timeout_jitter(envoy_config_bootstrap_v3_Watchdog* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_bootstrap_v3_Watchdog_max_kill_timeout_jitter(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -1236,16 +1592,15 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_bootstrap_v3_Watchdog_m
}
return sub;
}
-UPB_INLINE envoy_config_bootstrap_v3_Watchdog_WatchdogAction** envoy_config_bootstrap_v3_Watchdog_mutable_actions(envoy_config_bootstrap_v3_Watchdog *msg, size_t *len) {
+UPB_INLINE envoy_config_bootstrap_v3_Watchdog_WatchdogAction** envoy_config_bootstrap_v3_Watchdog_mutable_actions(envoy_config_bootstrap_v3_Watchdog* msg, size_t* len) {
return (envoy_config_bootstrap_v3_Watchdog_WatchdogAction**)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
}
-UPB_INLINE envoy_config_bootstrap_v3_Watchdog_WatchdogAction** envoy_config_bootstrap_v3_Watchdog_resize_actions(envoy_config_bootstrap_v3_Watchdog *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_bootstrap_v3_Watchdog_WatchdogAction** envoy_config_bootstrap_v3_Watchdog_resize_actions(envoy_config_bootstrap_v3_Watchdog* msg, size_t len, upb_Arena* arena) {
return (envoy_config_bootstrap_v3_Watchdog_WatchdogAction**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_bootstrap_v3_Watchdog_WatchdogAction* envoy_config_bootstrap_v3_Watchdog_add_actions(envoy_config_bootstrap_v3_Watchdog *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_Watchdog_WatchdogAction* envoy_config_bootstrap_v3_Watchdog_add_actions(envoy_config_bootstrap_v3_Watchdog* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_Watchdog_WatchdogAction* sub = (struct envoy_config_bootstrap_v3_Watchdog_WatchdogAction*)_upb_Message_New(&envoy_config_bootstrap_v3_Watchdog_WatchdogAction_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(28, 56), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 56), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1275,16 +1630,28 @@ UPB_INLINE envoy_config_bootstrap_v3_Watchdog_WatchdogAction* envoy_config_boots
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Watchdog_WatchdogAction_serialize(const envoy_config_bootstrap_v3_Watchdog_WatchdogAction* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Watchdog_WatchdogAction_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Watchdog_WatchdogAction_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Watchdog_WatchdogAction_serialize_ex(const envoy_config_bootstrap_v3_Watchdog_WatchdogAction* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Watchdog_WatchdogAction_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Watchdog_WatchdogAction_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_WatchdogAction_has_config(const envoy_config_bootstrap_v3_Watchdog_WatchdogAction* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_WatchdogAction_clear_config(const envoy_config_bootstrap_v3_Watchdog_WatchdogAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Watchdog_WatchdogAction_has_config(const envoy_config_bootstrap_v3_Watchdog_WatchdogAction *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_Watchdog_WatchdogAction_config(const envoy_config_bootstrap_v3_Watchdog_WatchdogAction* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct envoy_config_core_v3_TypedExtensionConfig*);
}
+UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_WatchdogAction_clear_event(const envoy_config_bootstrap_v3_Watchdog_WatchdogAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_config_bootstrap_v3_Watchdog_WatchdogAction_event(const envoy_config_bootstrap_v3_Watchdog_WatchdogAction* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
@@ -1293,7 +1660,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_Watchdog_WatchdogAction_set_config(env
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_Watchdog_WatchdogAction_mutable_config(envoy_config_bootstrap_v3_Watchdog_WatchdogAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_Watchdog_WatchdogAction_mutable_config(envoy_config_bootstrap_v3_Watchdog_WatchdogAction* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_bootstrap_v3_Watchdog_WatchdogAction_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -1331,13 +1698,22 @@ UPB_INLINE envoy_config_bootstrap_v3_FatalAction* envoy_config_bootstrap_v3_Fata
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_FatalAction_serialize(const envoy_config_bootstrap_v3_FatalAction* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_FatalAction_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_FatalAction_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_FatalAction_serialize_ex(const envoy_config_bootstrap_v3_FatalAction* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_FatalAction_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_FatalAction_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_FatalAction_has_config(const envoy_config_bootstrap_v3_FatalAction* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_FatalAction_clear_config(const envoy_config_bootstrap_v3_FatalAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_bootstrap_v3_FatalAction_has_config(const envoy_config_bootstrap_v3_FatalAction *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_FatalAction_config(const envoy_config_bootstrap_v3_FatalAction* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_TypedExtensionConfig*);
}
@@ -1346,7 +1722,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_FatalAction_set_config(envoy_config_bo
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_FatalAction_mutable_config(envoy_config_bootstrap_v3_FatalAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_bootstrap_v3_FatalAction_mutable_config(envoy_config_bootstrap_v3_FatalAction* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_bootstrap_v3_FatalAction_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -1381,22 +1757,40 @@ UPB_INLINE envoy_config_bootstrap_v3_Runtime* envoy_config_bootstrap_v3_Runtime_
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Runtime_serialize(const envoy_config_bootstrap_v3_Runtime* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Runtime_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Runtime_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_Runtime_serialize_ex(const envoy_config_bootstrap_v3_Runtime* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_Runtime_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_Runtime_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Runtime_clear_symlink_root(const envoy_config_bootstrap_v3_Runtime* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Runtime_symlink_root(const envoy_config_bootstrap_v3_Runtime* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
+UPB_INLINE void envoy_config_bootstrap_v3_Runtime_clear_subdirectory(const envoy_config_bootstrap_v3_Runtime* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Runtime_subdirectory(const envoy_config_bootstrap_v3_Runtime* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
+UPB_INLINE void envoy_config_bootstrap_v3_Runtime_clear_override_subdirectory(const envoy_config_bootstrap_v3_Runtime* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_Runtime_override_subdirectory(const envoy_config_bootstrap_v3_Runtime* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_Runtime_has_base(const envoy_config_bootstrap_v3_Runtime *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_bootstrap_v3_Runtime_has_base(const envoy_config_bootstrap_v3_Runtime* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_Runtime_clear_base(const envoy_config_bootstrap_v3_Runtime* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Struct* envoy_config_bootstrap_v3_Runtime_base(const envoy_config_bootstrap_v3_Runtime* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct google_protobuf_Struct*);
}
@@ -1414,7 +1808,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_Runtime_set_base(envoy_config_bootstra
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct google_protobuf_Struct*) = value;
}
-UPB_INLINE struct google_protobuf_Struct* envoy_config_bootstrap_v3_Runtime_mutable_base(envoy_config_bootstrap_v3_Runtime *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Struct* envoy_config_bootstrap_v3_Runtime_mutable_base(envoy_config_bootstrap_v3_Runtime* msg, upb_Arena* arena) {
struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)envoy_config_bootstrap_v3_Runtime_base(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Struct*)_upb_Message_New(&google_protobuf_Struct_msginit, arena);
@@ -1449,11 +1843,15 @@ UPB_INLINE envoy_config_bootstrap_v3_RuntimeLayer* envoy_config_bootstrap_v3_Run
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_RuntimeLayer_serialize(const envoy_config_bootstrap_v3_RuntimeLayer* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_RuntimeLayer_serialize_ex(const envoy_config_bootstrap_v3_RuntimeLayer* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_bootstrap_v3_RuntimeLayer_layer_specifier_static_layer = 2,
@@ -1462,27 +1860,59 @@ typedef enum {
envoy_config_bootstrap_v3_RuntimeLayer_layer_specifier_rtds_layer = 5,
envoy_config_bootstrap_v3_RuntimeLayer_layer_specifier_NOT_SET = 0
} envoy_config_bootstrap_v3_RuntimeLayer_layer_specifier_oneofcases;
-UPB_INLINE envoy_config_bootstrap_v3_RuntimeLayer_layer_specifier_oneofcases envoy_config_bootstrap_v3_RuntimeLayer_layer_specifier_case(const envoy_config_bootstrap_v3_RuntimeLayer* msg) { return (envoy_config_bootstrap_v3_RuntimeLayer_layer_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_config_bootstrap_v3_RuntimeLayer_layer_specifier_oneofcases envoy_config_bootstrap_v3_RuntimeLayer_layer_specifier_case(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
+ return (envoy_config_bootstrap_v3_RuntimeLayer_layer_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_clear_name(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_RuntimeLayer_name(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_RuntimeLayer_has_static_layer(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_clear_static_layer(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Struct*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_bootstrap_v3_RuntimeLayer_layer_specifier_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Struct* envoy_config_bootstrap_v3_RuntimeLayer_static_layer(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Struct*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_RuntimeLayer_has_disk_layer(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_clear_disk_layer(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_bootstrap_v3_RuntimeLayer_layer_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* envoy_config_bootstrap_v3_RuntimeLayer_disk_layer(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_RuntimeLayer_has_admin_layer(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_clear_admin_layer(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_bootstrap_v3_RuntimeLayer_layer_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer* envoy_config_bootstrap_v3_RuntimeLayer_admin_layer(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 4, NULL);
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_RuntimeLayer_has_rtds_layer(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_clear_rtds_layer(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_bootstrap_v3_RuntimeLayer_layer_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* envoy_config_bootstrap_v3_RuntimeLayer_rtds_layer(const envoy_config_bootstrap_v3_RuntimeLayer* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 5, NULL);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_RuntimeLayer_has_static_layer(const envoy_config_bootstrap_v3_RuntimeLayer *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE const struct google_protobuf_Struct* envoy_config_bootstrap_v3_RuntimeLayer_static_layer(const envoy_config_bootstrap_v3_RuntimeLayer *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Struct*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 2, NULL); }
-UPB_INLINE bool envoy_config_bootstrap_v3_RuntimeLayer_has_disk_layer(const envoy_config_bootstrap_v3_RuntimeLayer *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* envoy_config_bootstrap_v3_RuntimeLayer_disk_layer(const envoy_config_bootstrap_v3_RuntimeLayer *msg) { return UPB_READ_ONEOF(msg, const envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
-UPB_INLINE bool envoy_config_bootstrap_v3_RuntimeLayer_has_admin_layer(const envoy_config_bootstrap_v3_RuntimeLayer *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 4; }
-UPB_INLINE const envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer* envoy_config_bootstrap_v3_RuntimeLayer_admin_layer(const envoy_config_bootstrap_v3_RuntimeLayer *msg) { return UPB_READ_ONEOF(msg, const envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 4, NULL); }
-UPB_INLINE bool envoy_config_bootstrap_v3_RuntimeLayer_has_rtds_layer(const envoy_config_bootstrap_v3_RuntimeLayer *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 5; }
-UPB_INLINE const envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* envoy_config_bootstrap_v3_RuntimeLayer_rtds_layer(const envoy_config_bootstrap_v3_RuntimeLayer *msg) { return UPB_READ_ONEOF(msg, const envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 5, NULL); }
UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_set_name(envoy_config_bootstrap_v3_RuntimeLayer *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_set_static_layer(envoy_config_bootstrap_v3_RuntimeLayer *msg, struct google_protobuf_Struct* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Struct*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Struct*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct google_protobuf_Struct* envoy_config_bootstrap_v3_RuntimeLayer_mutable_static_layer(envoy_config_bootstrap_v3_RuntimeLayer *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Struct* envoy_config_bootstrap_v3_RuntimeLayer_mutable_static_layer(envoy_config_bootstrap_v3_RuntimeLayer* msg, upb_Arena* arena) {
struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)envoy_config_bootstrap_v3_RuntimeLayer_static_layer(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Struct*)_upb_Message_New(&google_protobuf_Struct_msginit, arena);
@@ -1492,9 +1922,9 @@ UPB_INLINE struct google_protobuf_Struct* envoy_config_bootstrap_v3_RuntimeLayer
return sub;
}
UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_set_disk_layer(envoy_config_bootstrap_v3_RuntimeLayer *msg, envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* envoy_config_bootstrap_v3_RuntimeLayer_mutable_disk_layer(envoy_config_bootstrap_v3_RuntimeLayer *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* envoy_config_bootstrap_v3_RuntimeLayer_mutable_disk_layer(envoy_config_bootstrap_v3_RuntimeLayer* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* sub = (struct envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer*)envoy_config_bootstrap_v3_RuntimeLayer_disk_layer(msg);
if (sub == NULL) {
sub = (struct envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer*)_upb_Message_New(&envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_msginit, arena);
@@ -1504,9 +1934,9 @@ UPB_INLINE struct envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* envoy_config
return sub;
}
UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_set_admin_layer(envoy_config_bootstrap_v3_RuntimeLayer *msg, envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 4);
+ UPB_WRITE_ONEOF(msg, envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer* envoy_config_bootstrap_v3_RuntimeLayer_mutable_admin_layer(envoy_config_bootstrap_v3_RuntimeLayer *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer* envoy_config_bootstrap_v3_RuntimeLayer_mutable_admin_layer(envoy_config_bootstrap_v3_RuntimeLayer* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer* sub = (struct envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer*)envoy_config_bootstrap_v3_RuntimeLayer_admin_layer(msg);
if (sub == NULL) {
sub = (struct envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer*)_upb_Message_New(&envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer_msginit, arena);
@@ -1516,9 +1946,9 @@ UPB_INLINE struct envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer* envoy_confi
return sub;
}
UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_set_rtds_layer(envoy_config_bootstrap_v3_RuntimeLayer *msg, envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 5);
+ UPB_WRITE_ONEOF(msg, envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* envoy_config_bootstrap_v3_RuntimeLayer_mutable_rtds_layer(envoy_config_bootstrap_v3_RuntimeLayer *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* envoy_config_bootstrap_v3_RuntimeLayer_mutable_rtds_layer(envoy_config_bootstrap_v3_RuntimeLayer* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* sub = (struct envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer*)envoy_config_bootstrap_v3_RuntimeLayer_rtds_layer(msg);
if (sub == NULL) {
sub = (struct envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer*)_upb_Message_New(&envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_msginit, arena);
@@ -1553,18 +1983,31 @@ UPB_INLINE envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* envoy_config_bootst
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_serialize(const envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_serialize_ex(const envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_clear_symlink_root(const envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_symlink_root(const envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
+UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_clear_append_service_cluster(const envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
+}
UPB_INLINE bool envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_append_service_cluster(const envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
+UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_clear_subdirectory(const envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer_subdirectory(const envoy_config_bootstrap_v3_RuntimeLayer_DiskLayer* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
@@ -1604,11 +2047,15 @@ UPB_INLINE envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer* envoy_config_boots
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer_serialize(const envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer_serialize_ex(const envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_AdminLayer_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -1637,16 +2084,28 @@ UPB_INLINE envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* envoy_config_bootst
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_serialize(const envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_serialize_ex(const envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_clear_name(const envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_name(const envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_has_rtds_config(const envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_has_rtds_config(const envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_clear_rtds_config(const envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_rtds_config(const envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_ConfigSource*);
}
@@ -1658,7 +2117,7 @@ UPB_INLINE void envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_set_rtds_config
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_ConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_mutable_rtds_config(envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_mutable_rtds_config(envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_config_bootstrap_v3_RuntimeLayer_RtdsLayer_rtds_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
@@ -1693,25 +2152,35 @@ UPB_INLINE envoy_config_bootstrap_v3_LayeredRuntime* envoy_config_bootstrap_v3_L
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_LayeredRuntime_serialize(const envoy_config_bootstrap_v3_LayeredRuntime* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_LayeredRuntime_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_LayeredRuntime_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_LayeredRuntime_serialize_ex(const envoy_config_bootstrap_v3_LayeredRuntime* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_LayeredRuntime_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_LayeredRuntime_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_bootstrap_v3_LayeredRuntime_has_layers(const envoy_config_bootstrap_v3_LayeredRuntime* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_bootstrap_v3_LayeredRuntime_clear_layers(const envoy_config_bootstrap_v3_LayeredRuntime* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_bootstrap_v3_RuntimeLayer* const* envoy_config_bootstrap_v3_LayeredRuntime_layers(const envoy_config_bootstrap_v3_LayeredRuntime* msg, size_t* len) {
+ return (const envoy_config_bootstrap_v3_RuntimeLayer* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_bootstrap_v3_LayeredRuntime_has_layers(const envoy_config_bootstrap_v3_LayeredRuntime *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_bootstrap_v3_RuntimeLayer* const* envoy_config_bootstrap_v3_LayeredRuntime_layers(const envoy_config_bootstrap_v3_LayeredRuntime *msg, size_t *len) { return (const envoy_config_bootstrap_v3_RuntimeLayer* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_bootstrap_v3_RuntimeLayer** envoy_config_bootstrap_v3_LayeredRuntime_mutable_layers(envoy_config_bootstrap_v3_LayeredRuntime *msg, size_t *len) {
+UPB_INLINE envoy_config_bootstrap_v3_RuntimeLayer** envoy_config_bootstrap_v3_LayeredRuntime_mutable_layers(envoy_config_bootstrap_v3_LayeredRuntime* msg, size_t* len) {
return (envoy_config_bootstrap_v3_RuntimeLayer**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_bootstrap_v3_RuntimeLayer** envoy_config_bootstrap_v3_LayeredRuntime_resize_layers(envoy_config_bootstrap_v3_LayeredRuntime *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_bootstrap_v3_RuntimeLayer** envoy_config_bootstrap_v3_LayeredRuntime_resize_layers(envoy_config_bootstrap_v3_LayeredRuntime* msg, size_t len, upb_Arena* arena) {
return (envoy_config_bootstrap_v3_RuntimeLayer**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_bootstrap_v3_RuntimeLayer* envoy_config_bootstrap_v3_LayeredRuntime_add_layers(envoy_config_bootstrap_v3_LayeredRuntime *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_bootstrap_v3_RuntimeLayer* envoy_config_bootstrap_v3_LayeredRuntime_add_layers(envoy_config_bootstrap_v3_LayeredRuntime* msg, upb_Arena* arena) {
struct envoy_config_bootstrap_v3_RuntimeLayer* sub = (struct envoy_config_bootstrap_v3_RuntimeLayer*)_upb_Message_New(&envoy_config_bootstrap_v3_RuntimeLayer_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1741,15 +2210,25 @@ UPB_INLINE envoy_config_bootstrap_v3_CustomInlineHeader* envoy_config_bootstrap_
return ret;
}
UPB_INLINE char* envoy_config_bootstrap_v3_CustomInlineHeader_serialize(const envoy_config_bootstrap_v3_CustomInlineHeader* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_CustomInlineHeader_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_CustomInlineHeader_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_bootstrap_v3_CustomInlineHeader_serialize_ex(const envoy_config_bootstrap_v3_CustomInlineHeader* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_bootstrap_v3_CustomInlineHeader_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_bootstrap_v3_CustomInlineHeader_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_bootstrap_v3_CustomInlineHeader_clear_inline_header_name(const envoy_config_bootstrap_v3_CustomInlineHeader* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_bootstrap_v3_CustomInlineHeader_inline_header_name(const envoy_config_bootstrap_v3_CustomInlineHeader* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
+UPB_INLINE void envoy_config_bootstrap_v3_CustomInlineHeader_clear_inline_header_type(const envoy_config_bootstrap_v3_CustomInlineHeader* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_config_bootstrap_v3_CustomInlineHeader_inline_header_type(const envoy_config_bootstrap_v3_CustomInlineHeader* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c
index 63f08c7ebd..26b807b7eb 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c
@@ -18,40 +18,46 @@
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_config_cluster_v3_CircuitBreakers_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_cluster_v3_CircuitBreakers_submsgs[2] = {
+ {.submsg = &envoy_config_cluster_v3_CircuitBreakers_Thresholds_msginit},
{.submsg = &envoy_config_cluster_v3_CircuitBreakers_Thresholds_msginit},
};
-static const upb_MiniTable_Field envoy_config_cluster_v3_CircuitBreakers__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_cluster_v3_CircuitBreakers__fields[2] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_CircuitBreakers_msginit = {
&envoy_config_cluster_v3_CircuitBreakers_submsgs[0],
&envoy_config_cluster_v3_CircuitBreakers__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_cluster_v3_CircuitBreakers_Thresholds_submsgs[2] = {
- {.submsg = &envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_msginit},
+static const upb_MiniTable_Sub envoy_config_cluster_v3_CircuitBreakers_Thresholds_submsgs[6] = {
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_msginit},
};
static const upb_MiniTable_Field envoy_config_cluster_v3_CircuitBreakers_Thresholds__fields[8] = {
- {1, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 16), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 24), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 32), 3, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(24, 40), 4, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(8, 8), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(28, 48), 5, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(32, 56), 6, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 24), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 32), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 40), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(28, 48), UPB_SIZE(5, 5), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(32, 56), UPB_SIZE(6, 6), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_CircuitBreakers_Thresholds_msginit = {
&envoy_config_cluster_v3_CircuitBreakers_Thresholds_submsgs[0],
&envoy_config_cluster_v3_CircuitBreakers_Thresholds__fields[0],
- UPB_SIZE(40, 64), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(40, 64), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_submsgs[2] = {
@@ -60,14 +66,14 @@ static const upb_MiniTable_Sub envoy_config_cluster_v3_CircuitBreakers_Threshold
};
static const upb_MiniTable_Field envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_msginit = {
&envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_submsgs[0],
&envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[3] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h
index 622ce62c3c..d8bb222ebf 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h
@@ -61,25 +61,56 @@ UPB_INLINE envoy_config_cluster_v3_CircuitBreakers* envoy_config_cluster_v3_Circ
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_CircuitBreakers_serialize(const envoy_config_cluster_v3_CircuitBreakers* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_CircuitBreakers_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_CircuitBreakers_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_CircuitBreakers_serialize_ex(const envoy_config_cluster_v3_CircuitBreakers* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_CircuitBreakers_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_CircuitBreakers_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_has_thresholds(const envoy_config_cluster_v3_CircuitBreakers* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_clear_thresholds(const envoy_config_cluster_v3_CircuitBreakers* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_cluster_v3_CircuitBreakers_Thresholds* const* envoy_config_cluster_v3_CircuitBreakers_thresholds(const envoy_config_cluster_v3_CircuitBreakers* msg, size_t* len) {
+ return (const envoy_config_cluster_v3_CircuitBreakers_Thresholds* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_has_per_host_thresholds(const envoy_config_cluster_v3_CircuitBreakers* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_clear_per_host_thresholds(const envoy_config_cluster_v3_CircuitBreakers* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_config_cluster_v3_CircuitBreakers_Thresholds* const* envoy_config_cluster_v3_CircuitBreakers_per_host_thresholds(const envoy_config_cluster_v3_CircuitBreakers* msg, size_t* len) {
+ return (const envoy_config_cluster_v3_CircuitBreakers_Thresholds* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_has_thresholds(const envoy_config_cluster_v3_CircuitBreakers *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_cluster_v3_CircuitBreakers_Thresholds* const* envoy_config_cluster_v3_CircuitBreakers_thresholds(const envoy_config_cluster_v3_CircuitBreakers *msg, size_t *len) { return (const envoy_config_cluster_v3_CircuitBreakers_Thresholds* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_cluster_v3_CircuitBreakers_Thresholds** envoy_config_cluster_v3_CircuitBreakers_mutable_thresholds(envoy_config_cluster_v3_CircuitBreakers *msg, size_t *len) {
+UPB_INLINE envoy_config_cluster_v3_CircuitBreakers_Thresholds** envoy_config_cluster_v3_CircuitBreakers_mutable_thresholds(envoy_config_cluster_v3_CircuitBreakers* msg, size_t* len) {
return (envoy_config_cluster_v3_CircuitBreakers_Thresholds**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_cluster_v3_CircuitBreakers_Thresholds** envoy_config_cluster_v3_CircuitBreakers_resize_thresholds(envoy_config_cluster_v3_CircuitBreakers *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_cluster_v3_CircuitBreakers_Thresholds** envoy_config_cluster_v3_CircuitBreakers_resize_thresholds(envoy_config_cluster_v3_CircuitBreakers* msg, size_t len, upb_Arena* arena) {
return (envoy_config_cluster_v3_CircuitBreakers_Thresholds**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_cluster_v3_CircuitBreakers_Thresholds* envoy_config_cluster_v3_CircuitBreakers_add_thresholds(envoy_config_cluster_v3_CircuitBreakers *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_CircuitBreakers_Thresholds* envoy_config_cluster_v3_CircuitBreakers_add_thresholds(envoy_config_cluster_v3_CircuitBreakers* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_CircuitBreakers_Thresholds* sub = (struct envoy_config_cluster_v3_CircuitBreakers_Thresholds*)_upb_Message_New(&envoy_config_cluster_v3_CircuitBreakers_Thresholds_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE envoy_config_cluster_v3_CircuitBreakers_Thresholds** envoy_config_cluster_v3_CircuitBreakers_mutable_per_host_thresholds(envoy_config_cluster_v3_CircuitBreakers* msg, size_t* len) {
+ return (envoy_config_cluster_v3_CircuitBreakers_Thresholds**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE envoy_config_cluster_v3_CircuitBreakers_Thresholds** envoy_config_cluster_v3_CircuitBreakers_resize_per_host_thresholds(envoy_config_cluster_v3_CircuitBreakers* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_cluster_v3_CircuitBreakers_Thresholds**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_config_cluster_v3_CircuitBreakers_Thresholds* envoy_config_cluster_v3_CircuitBreakers_add_per_host_thresholds(envoy_config_cluster_v3_CircuitBreakers* msg, upb_Arena* arena) {
+ struct envoy_config_cluster_v3_CircuitBreakers_Thresholds* sub = (struct envoy_config_cluster_v3_CircuitBreakers_Thresholds*)_upb_Message_New(&envoy_config_cluster_v3_CircuitBreakers_Thresholds_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -109,39 +140,79 @@ UPB_INLINE envoy_config_cluster_v3_CircuitBreakers_Thresholds* envoy_config_clus
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_CircuitBreakers_Thresholds_serialize(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_CircuitBreakers_Thresholds_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_CircuitBreakers_Thresholds_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_CircuitBreakers_Thresholds_serialize_ex(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_CircuitBreakers_Thresholds_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_CircuitBreakers_Thresholds_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_clear_priority(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_cluster_v3_CircuitBreakers_Thresholds_priority(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_has_max_connections(const envoy_config_cluster_v3_CircuitBreakers_Thresholds *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_has_max_connections(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_clear_max_connections(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_max_connections(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_has_max_pending_requests(const envoy_config_cluster_v3_CircuitBreakers_Thresholds *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_has_max_pending_requests(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_clear_max_pending_requests(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_max_pending_requests(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_has_max_requests(const envoy_config_cluster_v3_CircuitBreakers_Thresholds *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_has_max_requests(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_clear_max_requests(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_max_requests(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_has_max_retries(const envoy_config_cluster_v3_CircuitBreakers_Thresholds *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_has_max_retries(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_clear_max_retries(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_max_retries(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_UInt32Value*);
}
+UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_clear_track_remaining(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
+}
UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_track_remaining(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
}
-UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_has_max_connection_pools(const envoy_config_cluster_v3_CircuitBreakers_Thresholds *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_has_max_connection_pools(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_clear_max_connection_pools(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_max_connection_pools(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_has_retry_budget(const envoy_config_cluster_v3_CircuitBreakers_Thresholds *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_has_retry_budget(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_clear_retry_budget(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* envoy_config_cluster_v3_CircuitBreakers_Thresholds_retry_budget(const envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget*);
}
@@ -153,7 +224,7 @@ UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_set_max_conne
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_mutable_max_connections(envoy_config_cluster_v3_CircuitBreakers_Thresholds *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_mutable_max_connections(envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_CircuitBreakers_Thresholds_max_connections(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -166,7 +237,7 @@ UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_set_max_pendi
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_mutable_max_pending_requests(envoy_config_cluster_v3_CircuitBreakers_Thresholds *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_mutable_max_pending_requests(envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_CircuitBreakers_Thresholds_max_pending_requests(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -179,7 +250,7 @@ UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_set_max_reque
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_mutable_max_requests(envoy_config_cluster_v3_CircuitBreakers_Thresholds *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_mutable_max_requests(envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_CircuitBreakers_Thresholds_max_requests(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -192,7 +263,7 @@ UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_set_max_retri
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_mutable_max_retries(envoy_config_cluster_v3_CircuitBreakers_Thresholds *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_mutable_max_retries(envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_CircuitBreakers_Thresholds_max_retries(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -208,7 +279,7 @@ UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_set_max_conne
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(28, 48), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_mutable_max_connection_pools(envoy_config_cluster_v3_CircuitBreakers_Thresholds *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_mutable_max_connection_pools(envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_CircuitBreakers_Thresholds_max_connection_pools(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -221,7 +292,7 @@ UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_set_retry_bud
_upb_sethas(msg, 6);
*UPB_PTR_AT(msg, UPB_SIZE(32, 56), envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* envoy_config_cluster_v3_CircuitBreakers_Thresholds_mutable_retry_budget(envoy_config_cluster_v3_CircuitBreakers_Thresholds *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* envoy_config_cluster_v3_CircuitBreakers_Thresholds_mutable_retry_budget(envoy_config_cluster_v3_CircuitBreakers_Thresholds* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* sub = (struct envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget*)envoy_config_cluster_v3_CircuitBreakers_Thresholds_retry_budget(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget*)_upb_Message_New(&envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_msginit, arena);
@@ -256,17 +327,31 @@ UPB_INLINE envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* envoy
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_serialize(const envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_serialize_ex(const envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_has_budget_percent(const envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_clear_budget_percent(const envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_has_budget_percent(const envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_v3_Percent* envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_budget_percent(const envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_v3_Percent*);
}
-UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_has_min_retry_concurrency(const envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_has_min_retry_concurrency(const envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_clear_min_retry_concurrency(const envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_min_retry_concurrency(const envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_UInt32Value*);
}
@@ -275,7 +360,7 @@ UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_s
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_v3_Percent*) = value;
}
-UPB_INLINE struct envoy_type_v3_Percent* envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_mutable_budget_percent(envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Percent* envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_mutable_budget_percent(envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* msg, upb_Arena* arena) {
struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_budget_percent(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
@@ -288,7 +373,7 @@ UPB_INLINE void envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_s
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_mutable_min_retry_concurrency(envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_mutable_min_retry_concurrency(envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_CircuitBreakers_Thresholds_RetryBudget_min_retry_concurrency(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c
index b1d66e3976..6adce887b5 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c
@@ -40,128 +40,132 @@ static const upb_MiniTable_Sub envoy_config_cluster_v3_ClusterCollection_submsgs
};
static const upb_MiniTable_Field envoy_config_cluster_v3_ClusterCollection__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_ClusterCollection_msginit = {
&envoy_config_cluster_v3_ClusterCollection_submsgs[0],
&envoy_config_cluster_v3_ClusterCollection__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_submsgs[35] = {
- {.submsg = &envoy_config_cluster_v3_CircuitBreakers_msginit},
- {.submsg = &envoy_config_cluster_v3_Cluster_CommonLbConfig_msginit},
- {.submsg = &envoy_config_cluster_v3_Cluster_CustomClusterType_msginit},
+static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_submsgs[39] = {
{.submsg = &envoy_config_cluster_v3_Cluster_EdsClusterConfig_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_core_v3_HealthCheck_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_cluster_v3_CircuitBreakers_msginit},
+ {.submsg = &envoy_config_core_v3_Http1ProtocolOptions_msginit},
+ {.submsg = &envoy_config_core_v3_Http2ProtocolOptions_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_core_v3_Address_msginit},
+ {.submsg = &envoy_config_cluster_v3_OutlierDetection_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_core_v3_BindConfig_msginit},
{.submsg = &envoy_config_cluster_v3_Cluster_LbSubsetConfig_msginit},
- {.submsg = &envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_msginit},
- {.submsg = &envoy_config_cluster_v3_Cluster_MaglevLbConfig_msginit},
- {.submsg = &envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_msginit},
- {.submsg = &envoy_config_cluster_v3_Cluster_PreconnectPolicy_msginit},
- {.submsg = &envoy_config_cluster_v3_Cluster_RefreshRate_msginit},
{.submsg = &envoy_config_cluster_v3_Cluster_RingHashLbConfig_msginit},
- {.submsg = &envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_msginit},
- {.submsg = &envoy_config_cluster_v3_Cluster_TransportSocketMatch_msginit},
+ {.submsg = &envoy_config_core_v3_TransportSocket_msginit},
+ {.submsg = &envoy_config_core_v3_Metadata_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_CommonLbConfig_msginit},
+ {.submsg = &envoy_config_core_v3_HttpProtocolOptions_msginit},
+ {.submsg = &envoy_config_cluster_v3_UpstreamConnectionOptions_msginit},
+ {.submsg = &envoy_config_endpoint_v3_ClusterLoadAssignment_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_msginit},
{.submsg = &envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_CustomClusterType_msginit},
{.submsg = &envoy_config_cluster_v3_Filter_msginit},
{.submsg = &envoy_config_cluster_v3_LoadBalancingPolicy_msginit},
- {.submsg = &envoy_config_cluster_v3_OutlierDetection_msginit},
- {.submsg = &envoy_config_cluster_v3_TrackClusterStats_msginit},
- {.submsg = &envoy_config_cluster_v3_UpstreamConnectionOptions_msginit},
- {.submsg = &envoy_config_core_v3_Address_msginit},
- {.submsg = &envoy_config_core_v3_BindConfig_msginit},
{.submsg = &envoy_config_core_v3_ConfigSource_msginit},
- {.submsg = &envoy_config_core_v3_DnsResolutionConfig_msginit},
- {.submsg = &envoy_config_core_v3_HealthCheck_msginit},
- {.submsg = &envoy_config_core_v3_Http1ProtocolOptions_msginit},
- {.submsg = &envoy_config_core_v3_Http2ProtocolOptions_msginit},
- {.submsg = &envoy_config_core_v3_HttpProtocolOptions_msginit},
- {.submsg = &envoy_config_core_v3_Metadata_msginit},
- {.submsg = &envoy_config_core_v3_TransportSocket_msginit},
- {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_TransportSocketMatch_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_RefreshRate_msginit},
{.submsg = &envoy_config_core_v3_UpstreamHttpProtocolOptions_msginit},
- {.submsg = &envoy_config_endpoint_v3_ClusterLoadAssignment_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
+ {.submsg = &envoy_config_cluster_v3_TrackClusterStats_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_PreconnectPolicy_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_MaglevLbConfig_msginit},
+ {.submsg = &envoy_config_core_v3_DnsResolutionConfig_msginit},
{.submsg = &google_protobuf_BoolValue_msginit},
- {.submsg = &google_protobuf_Duration_msginit},
- {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_msginit},
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster__fields[51] = {
- {1, UPB_SIZE(24, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(172, 320), UPB_SIZE(-177, -329), 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(40, 56), 1, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(44, 64), 2, 33, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(48, 72), 3, 34, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {8, UPB_SIZE(152, 280), 0, 23, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(52, 80), 4, 34, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(56, 88), 5, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {13, UPB_SIZE(60, 96), 6, 24, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {14, UPB_SIZE(64, 104), 7, 25, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {16, UPB_SIZE(68, 112), 8, 33, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {17, UPB_SIZE(8, 8), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {18, UPB_SIZE(156, 288), 0, 19, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {19, UPB_SIZE(72, 120), 9, 16, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {20, UPB_SIZE(76, 128), 10, 33, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {21, UPB_SIZE(80, 136), 11, 20, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {22, UPB_SIZE(84, 144), 12, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {23, UPB_SIZE(180, 336), UPB_SIZE(-185, -345), 10, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {24, UPB_SIZE(88, 152), 13, 28, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {25, UPB_SIZE(92, 160), 14, 27, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {26, UPB_SIZE(12, 12), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {27, UPB_SIZE(96, 168), 15, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {28, UPB_SIZE(32, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {29, UPB_SIZE(100, 176), 16, 26, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {30, UPB_SIZE(104, 184), 17, 18, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {31, UPB_SIZE(16, 16), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {32, UPB_SIZE(17, 17), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {33, UPB_SIZE(108, 192), 18, 31, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {34, UPB_SIZE(180, 336), UPB_SIZE(-185, -345), 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {36, UPB_SIZE(160, 296), 0, 13, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {37, UPB_SIZE(180, 336), UPB_SIZE(-185, -345), 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {38, UPB_SIZE(172, 320), UPB_SIZE(-177, -329), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {39, UPB_SIZE(18, 18), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {40, UPB_SIZE(164, 304), 0, 14, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {41, UPB_SIZE(112, 200), 19, 15, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {42, UPB_SIZE(116, 208), 20, 21, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {43, UPB_SIZE(168, 312), 0, 12, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {44, UPB_SIZE(120, 216), 21, 9, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {45, UPB_SIZE(19, 19), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {46, UPB_SIZE(124, 224), 22, 30, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {47, UPB_SIZE(20, 20), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {48, UPB_SIZE(128, 232), 23, 29, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {49, UPB_SIZE(132, 240), 24, 17, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {50, UPB_SIZE(136, 248), 25, 8, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {51, UPB_SIZE(21, 21), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {52, UPB_SIZE(180, 336), UPB_SIZE(-185, -345), 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {53, UPB_SIZE(140, 256), 26, 22, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {54, UPB_SIZE(144, 264), 27, 32, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {55, UPB_SIZE(148, 272), 28, 29, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {56, UPB_SIZE(180, 336), UPB_SIZE(-185, -345), 11, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(40, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(32, 328), UPB_SIZE(-21, -21), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(48, 48), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(52, 56), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(56, 64), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(60, 72), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(64, 80), UPB_SIZE(4, 4), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(68, 88), UPB_SIZE(5, 5), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(72, 96), UPB_SIZE(6, 6), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(76, 104), UPB_SIZE(7, 7), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {16, UPB_SIZE(80, 112), UPB_SIZE(8, 8), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {17, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {18, UPB_SIZE(84, 120), UPB_SIZE(0, 0), 9, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {19, UPB_SIZE(88, 128), UPB_SIZE(9, 9), 10, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {20, UPB_SIZE(92, 136), UPB_SIZE(10, 10), 11, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {21, UPB_SIZE(96, 144), UPB_SIZE(11, 11), 12, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {22, UPB_SIZE(100, 152), UPB_SIZE(12, 12), 13, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {23, UPB_SIZE(36, 336), UPB_SIZE(-29, -29), 14, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {24, UPB_SIZE(104, 160), UPB_SIZE(13, 13), 15, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {25, UPB_SIZE(108, 168), UPB_SIZE(14, 14), 16, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {26, UPB_SIZE(12, 12), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {27, UPB_SIZE(112, 176), UPB_SIZE(15, 15), 17, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {28, UPB_SIZE(116, 184), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {29, UPB_SIZE(124, 200), UPB_SIZE(16, 16), 18, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {30, UPB_SIZE(128, 208), UPB_SIZE(17, 17), 19, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {31, UPB_SIZE(16, 16), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {32, UPB_SIZE(17, 17), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {33, UPB_SIZE(132, 216), UPB_SIZE(18, 18), 20, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {34, UPB_SIZE(36, 336), UPB_SIZE(-29, -29), 21, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {36, UPB_SIZE(136, 224), UPB_SIZE(0, 0), 22, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {37, UPB_SIZE(36, 336), UPB_SIZE(-29, -29), 23, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {38, UPB_SIZE(32, 328), UPB_SIZE(-21, -21), 24, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {39, UPB_SIZE(24, 24), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {40, UPB_SIZE(140, 232), UPB_SIZE(0, 0), 25, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {41, UPB_SIZE(144, 240), UPB_SIZE(19, 19), 26, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {42, UPB_SIZE(148, 248), UPB_SIZE(20, 20), 27, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {43, UPB_SIZE(152, 256), UPB_SIZE(0, 0), 28, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {44, UPB_SIZE(156, 264), UPB_SIZE(21, 21), 29, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {45, UPB_SIZE(25, 25), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {46, UPB_SIZE(160, 272), UPB_SIZE(22, 22), 30, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {47, UPB_SIZE(26, 26), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {48, UPB_SIZE(164, 280), UPB_SIZE(23, 23), 31, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {49, UPB_SIZE(168, 288), UPB_SIZE(24, 24), 32, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {50, UPB_SIZE(172, 296), UPB_SIZE(25, 25), 33, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {51, UPB_SIZE(27, 27), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {52, UPB_SIZE(36, 336), UPB_SIZE(-29, -29), 34, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {53, UPB_SIZE(176, 304), UPB_SIZE(26, 26), 35, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {54, UPB_SIZE(180, 312), UPB_SIZE(27, 27), 36, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {55, UPB_SIZE(184, 320), UPB_SIZE(28, 28), 37, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {56, UPB_SIZE(36, 336), UPB_SIZE(-29, -29), 38, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_msginit = {
&envoy_config_cluster_v3_Cluster_submsgs[0],
&envoy_config_cluster_v3_Cluster__fields[0],
- UPB_SIZE(192, 352), 51, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(192, 344), 51, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_TransportSocketMatch_submsgs[2] = {
- {.submsg = &envoy_config_core_v3_TransportSocket_msginit},
{.submsg = &google_protobuf_Struct_msginit},
+ {.submsg = &envoy_config_core_v3_TransportSocket_msginit},
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_TransportSocketMatch__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_TransportSocketMatch_msginit = {
&envoy_config_cluster_v3_Cluster_TransportSocketMatch_submsgs[0],
&envoy_config_cluster_v3_Cluster_TransportSocketMatch__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_CustomClusterType_submsgs[1] = {
@@ -169,14 +173,14 @@ static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_CustomClusterType
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_CustomClusterType__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_CustomClusterType_msginit = {
&envoy_config_cluster_v3_Cluster_CustomClusterType_submsgs[0],
&envoy_config_cluster_v3_Cluster_CustomClusterType__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_EdsClusterConfig_submsgs[1] = {
@@ -184,64 +188,66 @@ static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_EdsClusterConfig_
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_EdsClusterConfig__fields[2] = {
- {1, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_EdsClusterConfig_msginit = {
&envoy_config_cluster_v3_Cluster_EdsClusterConfig_submsgs[0],
&envoy_config_cluster_v3_Cluster_EdsClusterConfig__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_LbSubsetConfig_submsgs[2] = {
- {.submsg = &envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_msginit},
{.submsg = &google_protobuf_Struct_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_msginit},
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_LbSubsetConfig__fields[7] = {
- {1, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 16), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 24), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 8), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(9, 9), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(10, 10), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(11, 11), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 24), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(9, 9), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(10, 10), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(11, 11), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_LbSubsetConfig_msginit = {
&envoy_config_cluster_v3_Cluster_LbSubsetConfig_submsgs[0],
&envoy_config_cluster_v3_Cluster_LbSubsetConfig__fields[0],
- UPB_SIZE(24, 32), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(24, 32), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector__fields[4] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 16), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(4, 4), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_msginit = {
NULL,
&envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector__fields[0],
- UPB_SIZE(16, 24), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(16, 24), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_SlowStartConfig_submsgs[2] = {
- {.submsg = &envoy_config_core_v3_RuntimeDouble_msginit},
+static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_SlowStartConfig_submsgs[3] = {
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_core_v3_RuntimeDouble_msginit},
+ {.submsg = &envoy_type_v3_Percent_msginit},
};
-static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_SlowStartConfig__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_SlowStartConfig__fields[3] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_SlowStartConfig_msginit = {
&envoy_config_cluster_v3_Cluster_SlowStartConfig_submsgs[0],
&envoy_config_cluster_v3_Cluster_SlowStartConfig__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_submsgs[1] = {
@@ -249,47 +255,48 @@ static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_RoundRobinLbConfi
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_RoundRobinLbConfig__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_msginit = {
&envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_submsgs[0],
&envoy_config_cluster_v3_Cluster_RoundRobinLbConfig__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_submsgs[3] = {
- {.submsg = &envoy_config_cluster_v3_Cluster_SlowStartConfig_msginit},
- {.submsg = &envoy_config_core_v3_RuntimeDouble_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_core_v3_RuntimeDouble_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_SlowStartConfig_msginit},
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_LeastRequestLbConfig__fields[3] = {
- {1, UPB_SIZE(4, 8), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_msginit = {
&envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_submsgs[0],
&envoy_config_cluster_v3_Cluster_LeastRequestLbConfig__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_RingHashLbConfig_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_RingHashLbConfig_submsgs[2] = {
+ {.submsg = &google_protobuf_UInt64Value_msginit},
{.submsg = &google_protobuf_UInt64Value_msginit},
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_RingHashLbConfig__fields[3] = {
- {1, UPB_SIZE(8, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_RingHashLbConfig_msginit = {
&envoy_config_cluster_v3_Cluster_RingHashLbConfig_submsgs[0],
&envoy_config_cluster_v3_Cluster_RingHashLbConfig__fields[0],
- UPB_SIZE(16, 24), 3, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_MaglevLbConfig_submsgs[1] = {
@@ -297,47 +304,50 @@ static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_MaglevLbConfig_su
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_MaglevLbConfig__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_MaglevLbConfig_msginit = {
&envoy_config_cluster_v3_Cluster_MaglevLbConfig_submsgs[0],
&envoy_config_cluster_v3_Cluster_MaglevLbConfig__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_OriginalDstLbConfig__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_OriginalDstLbConfig__fields[2] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_msginit = {
NULL,
&envoy_config_cluster_v3_Cluster_OriginalDstLbConfig__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_CommonLbConfig_submsgs[5] = {
- {.submsg = &envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_msginit},
- {.submsg = &envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig_msginit},
- {.submsg = &envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_msginit},
+static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_CommonLbConfig_submsgs[6] = {
{.submsg = &envoy_type_v3_Percent_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig_msginit},
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_msginit},
+ {.submsg = &envoy_config_core_v3_HealthStatusSet_msginit},
};
-static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_CommonLbConfig__fields[7] = {
- {1, UPB_SIZE(4, 8), 1, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), UPB_SIZE(-21, -41), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), UPB_SIZE(-21, -41), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 16), 2, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(2, 2), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(12, 24), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_CommonLbConfig__fields[8] = {
+ {1, UPB_SIZE(12, 16), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(28, 48), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(28, 48), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 24), UPB_SIZE(2, 2), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(9, 9), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(20, 32), UPB_SIZE(3, 3), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(24, 40), UPB_SIZE(4, 4), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_CommonLbConfig_msginit = {
&envoy_config_cluster_v3_Cluster_CommonLbConfig_submsgs[0],
&envoy_config_cluster_v3_Cluster_CommonLbConfig__fields[0],
- UPB_SIZE(24, 48), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(32, 56), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_submsgs[2] = {
@@ -346,21 +356,21 @@ static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_CommonLbConfig_Zo
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig__fields[3] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_msginit = {
&envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_submsgs[0],
&envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig__fields[0],
- UPB_SIZE(16, 24), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_submsgs[1] = {
@@ -368,44 +378,46 @@ static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_CommonLbConfig_Co
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig__fields[2] = {
- {1, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_msginit = {
&envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_submsgs[0],
&envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_RefreshRate_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_RefreshRate_submsgs[2] = {
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_RefreshRate__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_RefreshRate_msginit = {
&envoy_config_cluster_v3_Cluster_RefreshRate_submsgs[0],
&envoy_config_cluster_v3_Cluster_RefreshRate__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_PreconnectPolicy_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_PreconnectPolicy_submsgs[2] = {
+ {.submsg = &google_protobuf_DoubleValue_msginit},
{.submsg = &google_protobuf_DoubleValue_msginit},
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_PreconnectPolicy__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_PreconnectPolicy_msginit = {
&envoy_config_cluster_v3_Cluster_PreconnectPolicy_submsgs[0],
&envoy_config_cluster_v3_Cluster_PreconnectPolicy__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry_submsgs[1] = {
@@ -413,14 +425,14 @@ static const upb_MiniTable_Sub envoy_config_cluster_v3_Cluster_TypedExtensionPro
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry_msginit = {
&envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry_submsgs[0],
&envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_LoadBalancingPolicy_submsgs[1] = {
@@ -428,13 +440,13 @@ static const upb_MiniTable_Sub envoy_config_cluster_v3_LoadBalancingPolicy_subms
};
static const upb_MiniTable_Field envoy_config_cluster_v3_LoadBalancingPolicy__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_LoadBalancingPolicy_msginit = {
&envoy_config_cluster_v3_LoadBalancingPolicy_submsgs[0],
&envoy_config_cluster_v3_LoadBalancingPolicy__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_LoadBalancingPolicy_Policy_submsgs[1] = {
@@ -442,13 +454,13 @@ static const upb_MiniTable_Sub envoy_config_cluster_v3_LoadBalancingPolicy_Polic
};
static const upb_MiniTable_Field envoy_config_cluster_v3_LoadBalancingPolicy_Policy__fields[1] = {
- {4, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_LoadBalancingPolicy_Policy_msginit = {
&envoy_config_cluster_v3_LoadBalancingPolicy_Policy_submsgs[0],
&envoy_config_cluster_v3_LoadBalancingPolicy_Policy__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_UpstreamBindConfig_submsgs[1] = {
@@ -456,38 +468,39 @@ static const upb_MiniTable_Sub envoy_config_cluster_v3_UpstreamBindConfig_submsg
};
static const upb_MiniTable_Field envoy_config_cluster_v3_UpstreamBindConfig__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_UpstreamBindConfig_msginit = {
&envoy_config_cluster_v3_UpstreamBindConfig_submsgs[0],
&envoy_config_cluster_v3_UpstreamBindConfig__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_cluster_v3_UpstreamConnectionOptions_submsgs[1] = {
{.submsg = &envoy_config_core_v3_TcpKeepalive_msginit},
};
-static const upb_MiniTable_Field envoy_config_cluster_v3_UpstreamConnectionOptions__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_cluster_v3_UpstreamConnectionOptions__fields[2] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_UpstreamConnectionOptions_msginit = {
&envoy_config_cluster_v3_UpstreamConnectionOptions_submsgs[0],
&envoy_config_cluster_v3_UpstreamConnectionOptions__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_cluster_v3_TrackClusterStats__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_TrackClusterStats_msginit = {
NULL,
&envoy_config_cluster_v3_TrackClusterStats__fields[0],
- UPB_SIZE(8, 8), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 8), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[25] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h
index a934582750..01857793d9 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h
@@ -103,6 +103,7 @@ struct envoy_config_core_v3_BindConfig;
struct envoy_config_core_v3_ConfigSource;
struct envoy_config_core_v3_DnsResolutionConfig;
struct envoy_config_core_v3_HealthCheck;
+struct envoy_config_core_v3_HealthStatusSet;
struct envoy_config_core_v3_Http1ProtocolOptions;
struct envoy_config_core_v3_Http2ProtocolOptions;
struct envoy_config_core_v3_HttpProtocolOptions;
@@ -130,6 +131,7 @@ extern const upb_MiniTable envoy_config_core_v3_BindConfig_msginit;
extern const upb_MiniTable envoy_config_core_v3_ConfigSource_msginit;
extern const upb_MiniTable envoy_config_core_v3_DnsResolutionConfig_msginit;
extern const upb_MiniTable envoy_config_core_v3_HealthCheck_msginit;
+extern const upb_MiniTable envoy_config_core_v3_HealthStatusSet_msginit;
extern const upb_MiniTable envoy_config_core_v3_Http1ProtocolOptions_msginit;
extern const upb_MiniTable envoy_config_core_v3_Http2ProtocolOptions_msginit;
extern const upb_MiniTable envoy_config_core_v3_HttpProtocolOptions_msginit;
@@ -227,13 +229,22 @@ UPB_INLINE envoy_config_cluster_v3_ClusterCollection* envoy_config_cluster_v3_Cl
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_ClusterCollection_serialize(const envoy_config_cluster_v3_ClusterCollection* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_ClusterCollection_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_ClusterCollection_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_ClusterCollection_serialize_ex(const envoy_config_cluster_v3_ClusterCollection* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_ClusterCollection_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_ClusterCollection_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_ClusterCollection_has_entries(const envoy_config_cluster_v3_ClusterCollection* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_ClusterCollection_clear_entries(const envoy_config_cluster_v3_ClusterCollection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_ClusterCollection_has_entries(const envoy_config_cluster_v3_ClusterCollection *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct xds_core_v3_CollectionEntry* envoy_config_cluster_v3_ClusterCollection_entries(const envoy_config_cluster_v3_ClusterCollection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct xds_core_v3_CollectionEntry*);
}
@@ -242,7 +253,7 @@ UPB_INLINE void envoy_config_cluster_v3_ClusterCollection_set_entries(envoy_conf
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct xds_core_v3_CollectionEntry*) = value;
}
-UPB_INLINE struct xds_core_v3_CollectionEntry* envoy_config_cluster_v3_ClusterCollection_mutable_entries(envoy_config_cluster_v3_ClusterCollection *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_CollectionEntry* envoy_config_cluster_v3_ClusterCollection_mutable_entries(envoy_config_cluster_v3_ClusterCollection* msg, upb_Arena* arena) {
struct xds_core_v3_CollectionEntry* sub = (struct xds_core_v3_CollectionEntry*)envoy_config_cluster_v3_ClusterCollection_entries(msg);
if (sub == NULL) {
sub = (struct xds_core_v3_CollectionEntry*)_upb_Message_New(&xds_core_v3_CollectionEntry_msginit, arena);
@@ -277,19 +288,24 @@ UPB_INLINE envoy_config_cluster_v3_Cluster* envoy_config_cluster_v3_Cluster_pars
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_serialize(const envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_serialize_ex(const envoy_config_cluster_v3_Cluster* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_cluster_v3_Cluster_cluster_discovery_type_type = 2,
envoy_config_cluster_v3_Cluster_cluster_discovery_type_cluster_type = 38,
envoy_config_cluster_v3_Cluster_cluster_discovery_type_NOT_SET = 0
} envoy_config_cluster_v3_Cluster_cluster_discovery_type_oneofcases;
-UPB_INLINE envoy_config_cluster_v3_Cluster_cluster_discovery_type_oneofcases envoy_config_cluster_v3_Cluster_cluster_discovery_type_case(const envoy_config_cluster_v3_Cluster* msg) { return (envoy_config_cluster_v3_Cluster_cluster_discovery_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(176, 328), int32_t); }
-
+UPB_INLINE envoy_config_cluster_v3_Cluster_cluster_discovery_type_oneofcases envoy_config_cluster_v3_Cluster_cluster_discovery_type_case(const envoy_config_cluster_v3_Cluster* msg) {
+ return (envoy_config_cluster_v3_Cluster_cluster_discovery_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(20, 20), int32_t);
+}
typedef enum {
envoy_config_cluster_v3_Cluster_lb_config_ring_hash_lb_config = 23,
envoy_config_cluster_v3_Cluster_lb_config_maglev_lb_config = 52,
@@ -298,191 +314,453 @@ typedef enum {
envoy_config_cluster_v3_Cluster_lb_config_round_robin_lb_config = 56,
envoy_config_cluster_v3_Cluster_lb_config_NOT_SET = 0
} envoy_config_cluster_v3_Cluster_lb_config_oneofcases;
-UPB_INLINE envoy_config_cluster_v3_Cluster_lb_config_oneofcases envoy_config_cluster_v3_Cluster_lb_config_case(const envoy_config_cluster_v3_Cluster* msg) { return (envoy_config_cluster_v3_Cluster_lb_config_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(184, 344), int32_t); }
-
+UPB_INLINE envoy_config_cluster_v3_Cluster_lb_config_oneofcases envoy_config_cluster_v3_Cluster_lb_config_case(const envoy_config_cluster_v3_Cluster* msg) {
+ return (envoy_config_cluster_v3_Cluster_lb_config_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(28, 28), int32_t);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_name(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_cluster_v3_Cluster_name(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 32), upb_StringView);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_type(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(20, 20)) == 2;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_type(const envoy_config_cluster_v3_Cluster* msg) {
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(32, 328), 0, UPB_SIZE(20, 20), envoy_config_cluster_v3_Cluster_cluster_discovery_type_NOT_SET);
+}
+UPB_INLINE int32_t envoy_config_cluster_v3_Cluster_type(const envoy_config_cluster_v3_Cluster* msg) {
+ return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(32, 328), UPB_SIZE(20, 20), 2, 0);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_eds_cluster_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_eds_cluster_config(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 48), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_type(const envoy_config_cluster_v3_Cluster *msg) { return _upb_getoneofcase(msg, UPB_SIZE(176, 328)) == 2; }
-UPB_INLINE int32_t envoy_config_cluster_v3_Cluster_type(const envoy_config_cluster_v3_Cluster *msg) { return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(172, 320), UPB_SIZE(176, 328), 2, 0); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_eds_cluster_config(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_cluster_v3_Cluster_EdsClusterConfig* envoy_config_cluster_v3_Cluster_eds_cluster_config(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 56), const envoy_config_cluster_v3_Cluster_EdsClusterConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 48), const envoy_config_cluster_v3_Cluster_EdsClusterConfig*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_connect_timeout(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_connect_timeout(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_connect_timeout(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_connect_timeout(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(44, 64), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(52, 56), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_per_connection_buffer_limit_bytes(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_per_connection_buffer_limit_bytes(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 64), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_per_connection_buffer_limit_bytes(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_Cluster_per_connection_buffer_limit_bytes(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 72), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(56, 64), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_lb_policy(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_cluster_v3_Cluster_lb_policy(const envoy_config_cluster_v3_Cluster* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_health_checks(const envoy_config_cluster_v3_Cluster *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(152, 280)); }
-UPB_INLINE const struct envoy_config_core_v3_HealthCheck* const* envoy_config_cluster_v3_Cluster_health_checks(const envoy_config_cluster_v3_Cluster *msg, size_t *len) { return (const struct envoy_config_core_v3_HealthCheck* const*)_upb_array_accessor(msg, UPB_SIZE(152, 280), len); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_max_requests_per_connection(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_health_checks(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(60, 72));
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_health_checks(const envoy_config_cluster_v3_Cluster* msg) {
+ _upb_array_detach(msg, UPB_SIZE(60, 72));
+}
+UPB_INLINE const struct envoy_config_core_v3_HealthCheck* const* envoy_config_cluster_v3_Cluster_health_checks(const envoy_config_cluster_v3_Cluster* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_HealthCheck* const*)_upb_array_accessor(msg, UPB_SIZE(60, 72), len);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_max_requests_per_connection(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_max_requests_per_connection(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 80), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_Cluster_max_requests_per_connection(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(52, 80), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(64, 80), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_circuit_breakers(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_circuit_breakers(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 88), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_circuit_breakers(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE const struct envoy_config_cluster_v3_CircuitBreakers* envoy_config_cluster_v3_Cluster_circuit_breakers(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(56, 88), const struct envoy_config_cluster_v3_CircuitBreakers*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(68, 88), const struct envoy_config_cluster_v3_CircuitBreakers*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_http_protocol_options(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_http_protocol_options(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 96), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_http_protocol_options(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE const struct envoy_config_core_v3_Http1ProtocolOptions* envoy_config_cluster_v3_Cluster_http_protocol_options(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(60, 96), const struct envoy_config_core_v3_Http1ProtocolOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(72, 96), const struct envoy_config_core_v3_Http1ProtocolOptions*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_http2_protocol_options(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_http2_protocol_options(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 104), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_http2_protocol_options(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 7); }
UPB_INLINE const struct envoy_config_core_v3_Http2ProtocolOptions* envoy_config_cluster_v3_Cluster_http2_protocol_options(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(64, 104), const struct envoy_config_core_v3_Http2ProtocolOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(76, 104), const struct envoy_config_core_v3_Http2ProtocolOptions*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_dns_refresh_rate(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 8);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_dns_refresh_rate(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 112), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_dns_refresh_rate(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 8); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_dns_refresh_rate(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(68, 112), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(80, 112), const struct google_protobuf_Duration*);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_dns_lookup_family(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_cluster_v3_Cluster_dns_lookup_family(const envoy_config_cluster_v3_Cluster* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_dns_resolvers(const envoy_config_cluster_v3_Cluster *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(156, 288)); }
-UPB_INLINE const struct envoy_config_core_v3_Address* const* envoy_config_cluster_v3_Cluster_dns_resolvers(const envoy_config_cluster_v3_Cluster *msg, size_t *len) { return (const struct envoy_config_core_v3_Address* const*)_upb_array_accessor(msg, UPB_SIZE(156, 288), len); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_outlier_detection(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 9); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_dns_resolvers(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(84, 120));
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_dns_resolvers(const envoy_config_cluster_v3_Cluster* msg) {
+ _upb_array_detach(msg, UPB_SIZE(84, 120));
+}
+UPB_INLINE const struct envoy_config_core_v3_Address* const* envoy_config_cluster_v3_Cluster_dns_resolvers(const envoy_config_cluster_v3_Cluster* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_Address* const*)_upb_array_accessor(msg, UPB_SIZE(84, 120), len);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_outlier_detection(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 9);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_outlier_detection(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(88, 128), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_cluster_v3_OutlierDetection* envoy_config_cluster_v3_Cluster_outlier_detection(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(72, 120), const struct envoy_config_cluster_v3_OutlierDetection*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(88, 128), const struct envoy_config_cluster_v3_OutlierDetection*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_cleanup_interval(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 10);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_cleanup_interval(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(92, 136), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_cleanup_interval(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 10); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_cleanup_interval(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(76, 128), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(92, 136), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_upstream_bind_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 11);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_upstream_bind_config(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(96, 144), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_upstream_bind_config(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 11); }
UPB_INLINE const struct envoy_config_core_v3_BindConfig* envoy_config_cluster_v3_Cluster_upstream_bind_config(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(80, 136), const struct envoy_config_core_v3_BindConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(96, 144), const struct envoy_config_core_v3_BindConfig*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_lb_subset_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 12);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_lb_subset_config(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(100, 152), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_lb_subset_config(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 12); }
UPB_INLINE const envoy_config_cluster_v3_Cluster_LbSubsetConfig* envoy_config_cluster_v3_Cluster_lb_subset_config(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(84, 144), const envoy_config_cluster_v3_Cluster_LbSubsetConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(100, 152), const envoy_config_cluster_v3_Cluster_LbSubsetConfig*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_ring_hash_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(28, 28)) == 23;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_ring_hash_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_RingHashLbConfig*, UPB_SIZE(36, 336), 0, UPB_SIZE(28, 28), envoy_config_cluster_v3_Cluster_lb_config_NOT_SET);
+}
+UPB_INLINE const envoy_config_cluster_v3_Cluster_RingHashLbConfig* envoy_config_cluster_v3_Cluster_ring_hash_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_RingHashLbConfig*, UPB_SIZE(36, 336), UPB_SIZE(28, 28), 23, NULL);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_transport_socket(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 13);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_transport_socket(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(104, 160), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_ring_hash_lb_config(const envoy_config_cluster_v3_Cluster *msg) { return _upb_getoneofcase(msg, UPB_SIZE(184, 344)) == 23; }
-UPB_INLINE const envoy_config_cluster_v3_Cluster_RingHashLbConfig* envoy_config_cluster_v3_Cluster_ring_hash_lb_config(const envoy_config_cluster_v3_Cluster *msg) { return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_RingHashLbConfig*, UPB_SIZE(180, 336), UPB_SIZE(184, 344), 23, NULL); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_transport_socket(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 13); }
UPB_INLINE const struct envoy_config_core_v3_TransportSocket* envoy_config_cluster_v3_Cluster_transport_socket(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(88, 152), const struct envoy_config_core_v3_TransportSocket*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(104, 160), const struct envoy_config_core_v3_TransportSocket*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_metadata(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 14);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_metadata(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(108, 168), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_metadata(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 14); }
UPB_INLINE const struct envoy_config_core_v3_Metadata* envoy_config_cluster_v3_Cluster_metadata(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(92, 160), const struct envoy_config_core_v3_Metadata*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(108, 168), const struct envoy_config_core_v3_Metadata*);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_protocol_selection(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_cluster_v3_Cluster_protocol_selection(const envoy_config_cluster_v3_Cluster* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_common_lb_config(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 15); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_common_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 15);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_common_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(112, 176), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_cluster_v3_Cluster_CommonLbConfig* envoy_config_cluster_v3_Cluster_common_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(96, 168), const envoy_config_cluster_v3_Cluster_CommonLbConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(112, 176), const envoy_config_cluster_v3_Cluster_CommonLbConfig*);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_alt_stat_name(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(116, 184), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_cluster_v3_Cluster_alt_stat_name(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 40), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(116, 184), upb_StringView);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_common_http_protocol_options(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 16);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_common_http_protocol_options(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(124, 200), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_common_http_protocol_options(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 16); }
UPB_INLINE const struct envoy_config_core_v3_HttpProtocolOptions* envoy_config_cluster_v3_Cluster_common_http_protocol_options(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(100, 176), const struct envoy_config_core_v3_HttpProtocolOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(124, 200), const struct envoy_config_core_v3_HttpProtocolOptions*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_upstream_connection_options(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 17);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_upstream_connection_options(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(128, 208), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_upstream_connection_options(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 17); }
UPB_INLINE const envoy_config_cluster_v3_UpstreamConnectionOptions* envoy_config_cluster_v3_Cluster_upstream_connection_options(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(104, 184), const envoy_config_cluster_v3_UpstreamConnectionOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(128, 208), const envoy_config_cluster_v3_UpstreamConnectionOptions*);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_close_connections_on_host_health_failure(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), bool) = 0;
}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_close_connections_on_host_health_failure(const envoy_config_cluster_v3_Cluster* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), bool);
}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_ignore_health_on_host_removal(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(17, 17), bool) = 0;
+}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_ignore_health_on_host_removal(const envoy_config_cluster_v3_Cluster* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(17, 17), bool);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_load_assignment(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 18); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_load_assignment(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 18);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_load_assignment(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(132, 216), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_endpoint_v3_ClusterLoadAssignment* envoy_config_cluster_v3_Cluster_load_assignment(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(108, 192), const struct envoy_config_endpoint_v3_ClusterLoadAssignment*);
-}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_original_dst_lb_config(const envoy_config_cluster_v3_Cluster *msg) { return _upb_getoneofcase(msg, UPB_SIZE(184, 344)) == 34; }
-UPB_INLINE const envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* envoy_config_cluster_v3_Cluster_original_dst_lb_config(const envoy_config_cluster_v3_Cluster *msg) { return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_OriginalDstLbConfig*, UPB_SIZE(180, 336), UPB_SIZE(184, 344), 34, NULL); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_typed_extension_protocol_options(const envoy_config_cluster_v3_Cluster *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(160, 296)); }
-UPB_INLINE size_t envoy_config_cluster_v3_Cluster_typed_extension_protocol_options_size(const envoy_config_cluster_v3_Cluster *msg) {return _upb_msg_map_size(msg, UPB_SIZE(160, 296)); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_typed_extension_protocol_options_get(const envoy_config_cluster_v3_Cluster *msg, upb_StringView key, struct google_protobuf_Any* *val) { return _upb_msg_map_get(msg, UPB_SIZE(160, 296), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry* envoy_config_cluster_v3_Cluster_typed_extension_protocol_options_next(const envoy_config_cluster_v3_Cluster *msg, size_t* iter) { return (const envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry*)_upb_msg_map_next(msg, UPB_SIZE(160, 296), iter); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_least_request_lb_config(const envoy_config_cluster_v3_Cluster *msg) { return _upb_getoneofcase(msg, UPB_SIZE(184, 344)) == 37; }
-UPB_INLINE const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* envoy_config_cluster_v3_Cluster_least_request_lb_config(const envoy_config_cluster_v3_Cluster *msg) { return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig*, UPB_SIZE(180, 336), UPB_SIZE(184, 344), 37, NULL); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_cluster_type(const envoy_config_cluster_v3_Cluster *msg) { return _upb_getoneofcase(msg, UPB_SIZE(176, 328)) == 38; }
-UPB_INLINE const envoy_config_cluster_v3_Cluster_CustomClusterType* envoy_config_cluster_v3_Cluster_cluster_type(const envoy_config_cluster_v3_Cluster *msg) { return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_CustomClusterType*, UPB_SIZE(172, 320), UPB_SIZE(176, 328), 38, NULL); }
+ return *UPB_PTR_AT(msg, UPB_SIZE(132, 216), const struct envoy_config_endpoint_v3_ClusterLoadAssignment*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_original_dst_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(28, 28)) == 34;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_original_dst_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_OriginalDstLbConfig*, UPB_SIZE(36, 336), 0, UPB_SIZE(28, 28), envoy_config_cluster_v3_Cluster_lb_config_NOT_SET);
+}
+UPB_INLINE const envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* envoy_config_cluster_v3_Cluster_original_dst_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_OriginalDstLbConfig*, UPB_SIZE(36, 336), UPB_SIZE(28, 28), 34, NULL);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_typed_extension_protocol_options(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(136, 224));
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_typed_extension_protocol_options(const envoy_config_cluster_v3_Cluster* msg) {
+ _upb_array_detach(msg, UPB_SIZE(136, 224));
+}
+UPB_INLINE size_t envoy_config_cluster_v3_Cluster_typed_extension_protocol_options_size(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(136, 224));
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_typed_extension_protocol_options_get(const envoy_config_cluster_v3_Cluster* msg, upb_StringView key, struct google_protobuf_Any** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(136, 224), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry* envoy_config_cluster_v3_Cluster_typed_extension_protocol_options_next(const envoy_config_cluster_v3_Cluster* msg, size_t* iter) {
+ return (const envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry*)_upb_msg_map_next(msg, UPB_SIZE(136, 224), iter);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_least_request_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(28, 28)) == 37;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_least_request_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_LeastRequestLbConfig*, UPB_SIZE(36, 336), 0, UPB_SIZE(28, 28), envoy_config_cluster_v3_Cluster_lb_config_NOT_SET);
+}
+UPB_INLINE const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* envoy_config_cluster_v3_Cluster_least_request_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig*, UPB_SIZE(36, 336), UPB_SIZE(28, 28), 37, NULL);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_cluster_type(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(20, 20)) == 38;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_cluster_type(const envoy_config_cluster_v3_Cluster* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_CustomClusterType*, UPB_SIZE(32, 328), 0, UPB_SIZE(20, 20), envoy_config_cluster_v3_Cluster_cluster_discovery_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_cluster_v3_Cluster_CustomClusterType* envoy_config_cluster_v3_Cluster_cluster_type(const envoy_config_cluster_v3_Cluster* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_CustomClusterType*, UPB_SIZE(32, 328), UPB_SIZE(20, 20), 38, NULL);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_respect_dns_ttl(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool) = 0;
+}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_respect_dns_ttl(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(18, 18), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_filters(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(140, 232));
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_filters(const envoy_config_cluster_v3_Cluster* msg) {
+ _upb_array_detach(msg, UPB_SIZE(140, 232));
+}
+UPB_INLINE const struct envoy_config_cluster_v3_Filter* const* envoy_config_cluster_v3_Cluster_filters(const envoy_config_cluster_v3_Cluster* msg, size_t* len) {
+ return (const struct envoy_config_cluster_v3_Filter* const*)_upb_array_accessor(msg, UPB_SIZE(140, 232), len);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_load_balancing_policy(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 19);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_load_balancing_policy(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(144, 240), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_filters(const envoy_config_cluster_v3_Cluster *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(164, 304)); }
-UPB_INLINE const struct envoy_config_cluster_v3_Filter* const* envoy_config_cluster_v3_Cluster_filters(const envoy_config_cluster_v3_Cluster *msg, size_t *len) { return (const struct envoy_config_cluster_v3_Filter* const*)_upb_array_accessor(msg, UPB_SIZE(164, 304), len); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_load_balancing_policy(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 19); }
UPB_INLINE const envoy_config_cluster_v3_LoadBalancingPolicy* envoy_config_cluster_v3_Cluster_load_balancing_policy(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(112, 200), const envoy_config_cluster_v3_LoadBalancingPolicy*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(144, 240), const envoy_config_cluster_v3_LoadBalancingPolicy*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_lrs_server(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 20);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_lrs_server(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(148, 248), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_lrs_server(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 20); }
UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_config_cluster_v3_Cluster_lrs_server(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(116, 208), const struct envoy_config_core_v3_ConfigSource*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(148, 248), const struct envoy_config_core_v3_ConfigSource*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_transport_socket_matches(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(152, 256));
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_transport_socket_matches(const envoy_config_cluster_v3_Cluster* msg) {
+ _upb_array_detach(msg, UPB_SIZE(152, 256));
+}
+UPB_INLINE const envoy_config_cluster_v3_Cluster_TransportSocketMatch* const* envoy_config_cluster_v3_Cluster_transport_socket_matches(const envoy_config_cluster_v3_Cluster* msg, size_t* len) {
+ return (const envoy_config_cluster_v3_Cluster_TransportSocketMatch* const*)_upb_array_accessor(msg, UPB_SIZE(152, 256), len);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_dns_failure_refresh_rate(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 21);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_dns_failure_refresh_rate(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(156, 264), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_transport_socket_matches(const envoy_config_cluster_v3_Cluster *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(168, 312)); }
-UPB_INLINE const envoy_config_cluster_v3_Cluster_TransportSocketMatch* const* envoy_config_cluster_v3_Cluster_transport_socket_matches(const envoy_config_cluster_v3_Cluster *msg, size_t *len) { return (const envoy_config_cluster_v3_Cluster_TransportSocketMatch* const*)_upb_array_accessor(msg, UPB_SIZE(168, 312), len); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_dns_failure_refresh_rate(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 21); }
UPB_INLINE const envoy_config_cluster_v3_Cluster_RefreshRate* envoy_config_cluster_v3_Cluster_dns_failure_refresh_rate(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(120, 216), const envoy_config_cluster_v3_Cluster_RefreshRate*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(156, 264), const envoy_config_cluster_v3_Cluster_RefreshRate*);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_use_tcp_for_dns_lookups(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(25, 25), bool) = 0;
}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_use_tcp_for_dns_lookups(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(19, 19), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(25, 25), bool);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_upstream_http_protocol_options(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 22);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_upstream_http_protocol_options(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(160, 272), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_upstream_http_protocol_options(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 22); }
UPB_INLINE const struct envoy_config_core_v3_UpstreamHttpProtocolOptions* envoy_config_cluster_v3_Cluster_upstream_http_protocol_options(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(124, 224), const struct envoy_config_core_v3_UpstreamHttpProtocolOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(160, 272), const struct envoy_config_core_v3_UpstreamHttpProtocolOptions*);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_track_timeout_budgets(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(26, 26), bool) = 0;
}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_track_timeout_budgets(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(26, 26), bool);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_upstream_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 23);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_upstream_config(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(164, 280), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_upstream_config(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 23); }
UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_cluster_v3_Cluster_upstream_config(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(128, 232), const struct envoy_config_core_v3_TypedExtensionConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(164, 280), const struct envoy_config_core_v3_TypedExtensionConfig*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_track_cluster_stats(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 24);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_track_cluster_stats(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(168, 288), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_track_cluster_stats(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 24); }
UPB_INLINE const envoy_config_cluster_v3_TrackClusterStats* envoy_config_cluster_v3_Cluster_track_cluster_stats(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(132, 240), const envoy_config_cluster_v3_TrackClusterStats*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(168, 288), const envoy_config_cluster_v3_TrackClusterStats*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_preconnect_policy(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 25);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_preconnect_policy(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(172, 296), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_preconnect_policy(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 25); }
UPB_INLINE const envoy_config_cluster_v3_Cluster_PreconnectPolicy* envoy_config_cluster_v3_Cluster_preconnect_policy(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(136, 248), const envoy_config_cluster_v3_Cluster_PreconnectPolicy*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(172, 296), const envoy_config_cluster_v3_Cluster_PreconnectPolicy*);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_connection_pool_per_downstream_connection(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(27, 27), bool) = 0;
}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_connection_pool_per_downstream_connection(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(21, 21), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(27, 27), bool);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_maglev_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(28, 28)) == 52;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_maglev_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_MaglevLbConfig*, UPB_SIZE(36, 336), 0, UPB_SIZE(28, 28), envoy_config_cluster_v3_Cluster_lb_config_NOT_SET);
+}
+UPB_INLINE const envoy_config_cluster_v3_Cluster_MaglevLbConfig* envoy_config_cluster_v3_Cluster_maglev_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_MaglevLbConfig*, UPB_SIZE(36, 336), UPB_SIZE(28, 28), 52, NULL);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_dns_resolution_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 26);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_dns_resolution_config(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(176, 304), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_maglev_lb_config(const envoy_config_cluster_v3_Cluster *msg) { return _upb_getoneofcase(msg, UPB_SIZE(184, 344)) == 52; }
-UPB_INLINE const envoy_config_cluster_v3_Cluster_MaglevLbConfig* envoy_config_cluster_v3_Cluster_maglev_lb_config(const envoy_config_cluster_v3_Cluster *msg) { return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_MaglevLbConfig*, UPB_SIZE(180, 336), UPB_SIZE(184, 344), 52, NULL); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_dns_resolution_config(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 26); }
UPB_INLINE const struct envoy_config_core_v3_DnsResolutionConfig* envoy_config_cluster_v3_Cluster_dns_resolution_config(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(140, 256), const struct envoy_config_core_v3_DnsResolutionConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(176, 304), const struct envoy_config_core_v3_DnsResolutionConfig*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_wait_for_warm_on_init(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 27);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_wait_for_warm_on_init(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(180, 312), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_wait_for_warm_on_init(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 27); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_cluster_v3_Cluster_wait_for_warm_on_init(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(144, 264), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(180, 312), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_typed_dns_resolver_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_hasbit(msg, 28);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_typed_dns_resolver_config(const envoy_config_cluster_v3_Cluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(184, 320), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_typed_dns_resolver_config(const envoy_config_cluster_v3_Cluster *msg) { return _upb_hasbit(msg, 28); }
UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_cluster_v3_Cluster_typed_dns_resolver_config(const envoy_config_cluster_v3_Cluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(148, 272), const struct envoy_config_core_v3_TypedExtensionConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(184, 320), const struct envoy_config_core_v3_TypedExtensionConfig*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_round_robin_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(28, 28)) == 56;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_clear_round_robin_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_RoundRobinLbConfig*, UPB_SIZE(36, 336), 0, UPB_SIZE(28, 28), envoy_config_cluster_v3_Cluster_lb_config_NOT_SET);
+}
+UPB_INLINE const envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* envoy_config_cluster_v3_Cluster_round_robin_lb_config(const envoy_config_cluster_v3_Cluster* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_RoundRobinLbConfig*, UPB_SIZE(36, 336), UPB_SIZE(28, 28), 56, NULL);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_has_round_robin_lb_config(const envoy_config_cluster_v3_Cluster *msg) { return _upb_getoneofcase(msg, UPB_SIZE(184, 344)) == 56; }
-UPB_INLINE const envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* envoy_config_cluster_v3_Cluster_round_robin_lb_config(const envoy_config_cluster_v3_Cluster *msg) { return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_RoundRobinLbConfig*, UPB_SIZE(180, 336), UPB_SIZE(184, 344), 56, NULL); }
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_name(envoy_config_cluster_v3_Cluster *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 32), upb_StringView) = value;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_type(envoy_config_cluster_v3_Cluster *msg, int32_t value) {
- UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(172, 320), value, UPB_SIZE(176, 328), 2);
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(32, 328), value, UPB_SIZE(20, 20), 2);
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_eds_cluster_config(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_EdsClusterConfig* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 56), envoy_config_cluster_v3_Cluster_EdsClusterConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 48), envoy_config_cluster_v3_Cluster_EdsClusterConfig*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_EdsClusterConfig* envoy_config_cluster_v3_Cluster_mutable_eds_cluster_config(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_EdsClusterConfig* envoy_config_cluster_v3_Cluster_mutable_eds_cluster_config(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_EdsClusterConfig* sub = (struct envoy_config_cluster_v3_Cluster_EdsClusterConfig*)envoy_config_cluster_v3_Cluster_eds_cluster_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_EdsClusterConfig*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_EdsClusterConfig_msginit, arena);
@@ -493,9 +771,9 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_EdsClusterConfig* envoy_config
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_connect_timeout(envoy_config_cluster_v3_Cluster *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(44, 64), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 56), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_mutable_connect_timeout(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_mutable_connect_timeout(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_cluster_v3_Cluster_connect_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -506,9 +784,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_muta
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_per_connection_buffer_limit_bytes(envoy_config_cluster_v3_Cluster *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 72), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 64), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_Cluster_mutable_per_connection_buffer_limit_bytes(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_Cluster_mutable_per_connection_buffer_limit_bytes(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_Cluster_per_connection_buffer_limit_bytes(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -520,24 +798,23 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_Cluster_m
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_lb_policy(envoy_config_cluster_v3_Cluster *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
-UPB_INLINE struct envoy_config_core_v3_HealthCheck** envoy_config_cluster_v3_Cluster_mutable_health_checks(envoy_config_cluster_v3_Cluster *msg, size_t *len) {
- return (struct envoy_config_core_v3_HealthCheck**)_upb_array_mutable_accessor(msg, UPB_SIZE(152, 280), len);
+UPB_INLINE struct envoy_config_core_v3_HealthCheck** envoy_config_cluster_v3_Cluster_mutable_health_checks(envoy_config_cluster_v3_Cluster* msg, size_t* len) {
+ return (struct envoy_config_core_v3_HealthCheck**)_upb_array_mutable_accessor(msg, UPB_SIZE(60, 72), len);
}
-UPB_INLINE struct envoy_config_core_v3_HealthCheck** envoy_config_cluster_v3_Cluster_resize_health_checks(envoy_config_cluster_v3_Cluster *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_HealthCheck**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(152, 280), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_HealthCheck** envoy_config_cluster_v3_Cluster_resize_health_checks(envoy_config_cluster_v3_Cluster* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_HealthCheck**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(60, 72), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_HealthCheck* envoy_config_cluster_v3_Cluster_add_health_checks(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HealthCheck* envoy_config_cluster_v3_Cluster_add_health_checks(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HealthCheck* sub = (struct envoy_config_core_v3_HealthCheck*)_upb_Message_New(&envoy_config_core_v3_HealthCheck_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(152, 280), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(60, 72), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_max_requests_per_connection(envoy_config_cluster_v3_Cluster *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(52, 80), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 80), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_Cluster_mutable_max_requests_per_connection(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_Cluster_mutable_max_requests_per_connection(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_Cluster_max_requests_per_connection(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -548,9 +825,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_Cluster_m
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_circuit_breakers(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_cluster_v3_CircuitBreakers* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(56, 88), struct envoy_config_cluster_v3_CircuitBreakers*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 88), struct envoy_config_cluster_v3_CircuitBreakers*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_CircuitBreakers* envoy_config_cluster_v3_Cluster_mutable_circuit_breakers(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_CircuitBreakers* envoy_config_cluster_v3_Cluster_mutable_circuit_breakers(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_CircuitBreakers* sub = (struct envoy_config_cluster_v3_CircuitBreakers*)envoy_config_cluster_v3_Cluster_circuit_breakers(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_CircuitBreakers*)_upb_Message_New(&envoy_config_cluster_v3_CircuitBreakers_msginit, arena);
@@ -561,9 +838,9 @@ UPB_INLINE struct envoy_config_cluster_v3_CircuitBreakers* envoy_config_cluster_
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_http_protocol_options(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_core_v3_Http1ProtocolOptions* value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(60, 96), struct envoy_config_core_v3_Http1ProtocolOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 96), struct envoy_config_core_v3_Http1ProtocolOptions*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Http1ProtocolOptions* envoy_config_cluster_v3_Cluster_mutable_http_protocol_options(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Http1ProtocolOptions* envoy_config_cluster_v3_Cluster_mutable_http_protocol_options(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Http1ProtocolOptions* sub = (struct envoy_config_core_v3_Http1ProtocolOptions*)envoy_config_cluster_v3_Cluster_http_protocol_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Http1ProtocolOptions*)_upb_Message_New(&envoy_config_core_v3_Http1ProtocolOptions_msginit, arena);
@@ -574,9 +851,9 @@ UPB_INLINE struct envoy_config_core_v3_Http1ProtocolOptions* envoy_config_cluste
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_http2_protocol_options(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_core_v3_Http2ProtocolOptions* value) {
_upb_sethas(msg, 7);
- *UPB_PTR_AT(msg, UPB_SIZE(64, 104), struct envoy_config_core_v3_Http2ProtocolOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 104), struct envoy_config_core_v3_Http2ProtocolOptions*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Http2ProtocolOptions* envoy_config_cluster_v3_Cluster_mutable_http2_protocol_options(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Http2ProtocolOptions* envoy_config_cluster_v3_Cluster_mutable_http2_protocol_options(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Http2ProtocolOptions* sub = (struct envoy_config_core_v3_Http2ProtocolOptions*)envoy_config_cluster_v3_Cluster_http2_protocol_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Http2ProtocolOptions*)_upb_Message_New(&envoy_config_core_v3_Http2ProtocolOptions_msginit, arena);
@@ -587,9 +864,9 @@ UPB_INLINE struct envoy_config_core_v3_Http2ProtocolOptions* envoy_config_cluste
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_dns_refresh_rate(envoy_config_cluster_v3_Cluster *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 8);
- *UPB_PTR_AT(msg, UPB_SIZE(68, 112), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 112), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_mutable_dns_refresh_rate(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_mutable_dns_refresh_rate(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_cluster_v3_Cluster_dns_refresh_rate(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -601,24 +878,23 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_muta
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_dns_lookup_family(envoy_config_cluster_v3_Cluster *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Address** envoy_config_cluster_v3_Cluster_mutable_dns_resolvers(envoy_config_cluster_v3_Cluster *msg, size_t *len) {
- return (struct envoy_config_core_v3_Address**)_upb_array_mutable_accessor(msg, UPB_SIZE(156, 288), len);
+UPB_INLINE struct envoy_config_core_v3_Address** envoy_config_cluster_v3_Cluster_mutable_dns_resolvers(envoy_config_cluster_v3_Cluster* msg, size_t* len) {
+ return (struct envoy_config_core_v3_Address**)_upb_array_mutable_accessor(msg, UPB_SIZE(84, 120), len);
}
-UPB_INLINE struct envoy_config_core_v3_Address** envoy_config_cluster_v3_Cluster_resize_dns_resolvers(envoy_config_cluster_v3_Cluster *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_Address**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(156, 288), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_Address** envoy_config_cluster_v3_Cluster_resize_dns_resolvers(envoy_config_cluster_v3_Cluster* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_Address**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(84, 120), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_cluster_v3_Cluster_add_dns_resolvers(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_cluster_v3_Cluster_add_dns_resolvers(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Address* sub = (struct envoy_config_core_v3_Address*)_upb_Message_New(&envoy_config_core_v3_Address_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(156, 288), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(84, 120), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_outlier_detection(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_cluster_v3_OutlierDetection* value) {
_upb_sethas(msg, 9);
- *UPB_PTR_AT(msg, UPB_SIZE(72, 120), struct envoy_config_cluster_v3_OutlierDetection*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(88, 128), struct envoy_config_cluster_v3_OutlierDetection*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_OutlierDetection* envoy_config_cluster_v3_Cluster_mutable_outlier_detection(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_OutlierDetection* envoy_config_cluster_v3_Cluster_mutable_outlier_detection(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_OutlierDetection* sub = (struct envoy_config_cluster_v3_OutlierDetection*)envoy_config_cluster_v3_Cluster_outlier_detection(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_OutlierDetection*)_upb_Message_New(&envoy_config_cluster_v3_OutlierDetection_msginit, arena);
@@ -629,9 +905,9 @@ UPB_INLINE struct envoy_config_cluster_v3_OutlierDetection* envoy_config_cluster
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_cleanup_interval(envoy_config_cluster_v3_Cluster *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 10);
- *UPB_PTR_AT(msg, UPB_SIZE(76, 128), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(92, 136), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_mutable_cleanup_interval(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_mutable_cleanup_interval(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_cluster_v3_Cluster_cleanup_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -642,9 +918,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_muta
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_upstream_bind_config(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_core_v3_BindConfig* value) {
_upb_sethas(msg, 11);
- *UPB_PTR_AT(msg, UPB_SIZE(80, 136), struct envoy_config_core_v3_BindConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(96, 144), struct envoy_config_core_v3_BindConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_BindConfig* envoy_config_cluster_v3_Cluster_mutable_upstream_bind_config(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_BindConfig* envoy_config_cluster_v3_Cluster_mutable_upstream_bind_config(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_core_v3_BindConfig* sub = (struct envoy_config_core_v3_BindConfig*)envoy_config_cluster_v3_Cluster_upstream_bind_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_BindConfig*)_upb_Message_New(&envoy_config_core_v3_BindConfig_msginit, arena);
@@ -655,9 +931,9 @@ UPB_INLINE struct envoy_config_core_v3_BindConfig* envoy_config_cluster_v3_Clust
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_lb_subset_config(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_LbSubsetConfig* value) {
_upb_sethas(msg, 12);
- *UPB_PTR_AT(msg, UPB_SIZE(84, 144), envoy_config_cluster_v3_Cluster_LbSubsetConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(100, 152), envoy_config_cluster_v3_Cluster_LbSubsetConfig*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_LbSubsetConfig* envoy_config_cluster_v3_Cluster_mutable_lb_subset_config(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_LbSubsetConfig* envoy_config_cluster_v3_Cluster_mutable_lb_subset_config(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_LbSubsetConfig* sub = (struct envoy_config_cluster_v3_Cluster_LbSubsetConfig*)envoy_config_cluster_v3_Cluster_lb_subset_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_LbSubsetConfig*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_LbSubsetConfig_msginit, arena);
@@ -667,9 +943,9 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_LbSubsetConfig* envoy_config_c
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_ring_hash_lb_config(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_RingHashLbConfig* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_RingHashLbConfig*, UPB_SIZE(180, 336), value, UPB_SIZE(184, 344), 23);
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_RingHashLbConfig*, UPB_SIZE(36, 336), value, UPB_SIZE(28, 28), 23);
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_RingHashLbConfig* envoy_config_cluster_v3_Cluster_mutable_ring_hash_lb_config(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_RingHashLbConfig* envoy_config_cluster_v3_Cluster_mutable_ring_hash_lb_config(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_RingHashLbConfig* sub = (struct envoy_config_cluster_v3_Cluster_RingHashLbConfig*)envoy_config_cluster_v3_Cluster_ring_hash_lb_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_RingHashLbConfig*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_RingHashLbConfig_msginit, arena);
@@ -680,9 +956,9 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_RingHashLbConfig* envoy_config
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_transport_socket(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_core_v3_TransportSocket* value) {
_upb_sethas(msg, 13);
- *UPB_PTR_AT(msg, UPB_SIZE(88, 152), struct envoy_config_core_v3_TransportSocket*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(104, 160), struct envoy_config_core_v3_TransportSocket*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TransportSocket* envoy_config_cluster_v3_Cluster_mutable_transport_socket(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TransportSocket* envoy_config_cluster_v3_Cluster_mutable_transport_socket(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TransportSocket* sub = (struct envoy_config_core_v3_TransportSocket*)envoy_config_cluster_v3_Cluster_transport_socket(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TransportSocket*)_upb_Message_New(&envoy_config_core_v3_TransportSocket_msginit, arena);
@@ -693,9 +969,9 @@ UPB_INLINE struct envoy_config_core_v3_TransportSocket* envoy_config_cluster_v3_
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_metadata(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_core_v3_Metadata* value) {
_upb_sethas(msg, 14);
- *UPB_PTR_AT(msg, UPB_SIZE(92, 160), struct envoy_config_core_v3_Metadata*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(108, 168), struct envoy_config_core_v3_Metadata*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_cluster_v3_Cluster_mutable_metadata(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_cluster_v3_Cluster_mutable_metadata(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Metadata* sub = (struct envoy_config_core_v3_Metadata*)envoy_config_cluster_v3_Cluster_metadata(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Metadata*)_upb_Message_New(&envoy_config_core_v3_Metadata_msginit, arena);
@@ -709,9 +985,9 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_set_protocol_selection(envoy_con
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_common_lb_config(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_CommonLbConfig* value) {
_upb_sethas(msg, 15);
- *UPB_PTR_AT(msg, UPB_SIZE(96, 168), envoy_config_cluster_v3_Cluster_CommonLbConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(112, 176), envoy_config_cluster_v3_Cluster_CommonLbConfig*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_CommonLbConfig* envoy_config_cluster_v3_Cluster_mutable_common_lb_config(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_CommonLbConfig* envoy_config_cluster_v3_Cluster_mutable_common_lb_config(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_CommonLbConfig* sub = (struct envoy_config_cluster_v3_Cluster_CommonLbConfig*)envoy_config_cluster_v3_Cluster_common_lb_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_CommonLbConfig*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_CommonLbConfig_msginit, arena);
@@ -721,13 +997,13 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_CommonLbConfig* envoy_config_c
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_alt_stat_name(envoy_config_cluster_v3_Cluster *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(32, 40), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(116, 184), upb_StringView) = value;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_common_http_protocol_options(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_core_v3_HttpProtocolOptions* value) {
_upb_sethas(msg, 16);
- *UPB_PTR_AT(msg, UPB_SIZE(100, 176), struct envoy_config_core_v3_HttpProtocolOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(124, 200), struct envoy_config_core_v3_HttpProtocolOptions*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_HttpProtocolOptions* envoy_config_cluster_v3_Cluster_mutable_common_http_protocol_options(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HttpProtocolOptions* envoy_config_cluster_v3_Cluster_mutable_common_http_protocol_options(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HttpProtocolOptions* sub = (struct envoy_config_core_v3_HttpProtocolOptions*)envoy_config_cluster_v3_Cluster_common_http_protocol_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_HttpProtocolOptions*)_upb_Message_New(&envoy_config_core_v3_HttpProtocolOptions_msginit, arena);
@@ -738,9 +1014,9 @@ UPB_INLINE struct envoy_config_core_v3_HttpProtocolOptions* envoy_config_cluster
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_upstream_connection_options(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_UpstreamConnectionOptions* value) {
_upb_sethas(msg, 17);
- *UPB_PTR_AT(msg, UPB_SIZE(104, 184), envoy_config_cluster_v3_UpstreamConnectionOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(128, 208), envoy_config_cluster_v3_UpstreamConnectionOptions*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_UpstreamConnectionOptions* envoy_config_cluster_v3_Cluster_mutable_upstream_connection_options(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_UpstreamConnectionOptions* envoy_config_cluster_v3_Cluster_mutable_upstream_connection_options(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_UpstreamConnectionOptions* sub = (struct envoy_config_cluster_v3_UpstreamConnectionOptions*)envoy_config_cluster_v3_Cluster_upstream_connection_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_UpstreamConnectionOptions*)_upb_Message_New(&envoy_config_cluster_v3_UpstreamConnectionOptions_msginit, arena);
@@ -757,9 +1033,9 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_set_ignore_health_on_host_remova
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_load_assignment(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_endpoint_v3_ClusterLoadAssignment* value) {
_upb_sethas(msg, 18);
- *UPB_PTR_AT(msg, UPB_SIZE(108, 192), struct envoy_config_endpoint_v3_ClusterLoadAssignment*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(132, 216), struct envoy_config_endpoint_v3_ClusterLoadAssignment*) = value;
}
-UPB_INLINE struct envoy_config_endpoint_v3_ClusterLoadAssignment* envoy_config_cluster_v3_Cluster_mutable_load_assignment(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_ClusterLoadAssignment* envoy_config_cluster_v3_Cluster_mutable_load_assignment(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_ClusterLoadAssignment* sub = (struct envoy_config_endpoint_v3_ClusterLoadAssignment*)envoy_config_cluster_v3_Cluster_load_assignment(msg);
if (sub == NULL) {
sub = (struct envoy_config_endpoint_v3_ClusterLoadAssignment*)_upb_Message_New(&envoy_config_endpoint_v3_ClusterLoadAssignment_msginit, arena);
@@ -769,9 +1045,9 @@ UPB_INLINE struct envoy_config_endpoint_v3_ClusterLoadAssignment* envoy_config_c
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_original_dst_lb_config(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_OriginalDstLbConfig*, UPB_SIZE(180, 336), value, UPB_SIZE(184, 344), 34);
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_OriginalDstLbConfig*, UPB_SIZE(36, 336), value, UPB_SIZE(28, 28), 34);
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* envoy_config_cluster_v3_Cluster_mutable_original_dst_lb_config(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* envoy_config_cluster_v3_Cluster_mutable_original_dst_lb_config(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* sub = (struct envoy_config_cluster_v3_Cluster_OriginalDstLbConfig*)envoy_config_cluster_v3_Cluster_original_dst_lb_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_OriginalDstLbConfig*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_msginit, arena);
@@ -780,14 +1056,20 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* envoy_con
}
return sub;
}
-UPB_INLINE void envoy_config_cluster_v3_Cluster_typed_extension_protocol_options_clear(envoy_config_cluster_v3_Cluster *msg) { _upb_msg_map_clear(msg, UPB_SIZE(160, 296)); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_typed_extension_protocol_options_set(envoy_config_cluster_v3_Cluster *msg, upb_StringView key, struct google_protobuf_Any* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(160, 296), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_typed_extension_protocol_options_delete(envoy_config_cluster_v3_Cluster *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(160, 296), &key, 0); }
-UPB_INLINE envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry* envoy_config_cluster_v3_Cluster_typed_extension_protocol_options_nextmutable(envoy_config_cluster_v3_Cluster *msg, size_t* iter) { return (envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry*)_upb_msg_map_next(msg, UPB_SIZE(160, 296), iter); }
+UPB_INLINE void envoy_config_cluster_v3_Cluster_typed_extension_protocol_options_clear(envoy_config_cluster_v3_Cluster* msg) { _upb_msg_map_clear(msg, UPB_SIZE(136, 224)); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_typed_extension_protocol_options_set(envoy_config_cluster_v3_Cluster* msg, upb_StringView key, struct google_protobuf_Any* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(136, 224), &key, 0, &val, sizeof(val), a);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_typed_extension_protocol_options_delete(envoy_config_cluster_v3_Cluster* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(136, 224), &key, 0);
+}
+UPB_INLINE envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry* envoy_config_cluster_v3_Cluster_typed_extension_protocol_options_nextmutable(envoy_config_cluster_v3_Cluster* msg, size_t* iter) {
+ return (envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry*)_upb_msg_map_next(msg, UPB_SIZE(136, 224), iter);
+}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_least_request_lb_config(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_LeastRequestLbConfig*, UPB_SIZE(180, 336), value, UPB_SIZE(184, 344), 37);
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_LeastRequestLbConfig*, UPB_SIZE(36, 336), value, UPB_SIZE(28, 28), 37);
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* envoy_config_cluster_v3_Cluster_mutable_least_request_lb_config(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* envoy_config_cluster_v3_Cluster_mutable_least_request_lb_config(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* sub = (struct envoy_config_cluster_v3_Cluster_LeastRequestLbConfig*)envoy_config_cluster_v3_Cluster_least_request_lb_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_LeastRequestLbConfig*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_msginit, arena);
@@ -797,9 +1079,9 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* envoy_co
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_cluster_type(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_CustomClusterType* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_CustomClusterType*, UPB_SIZE(172, 320), value, UPB_SIZE(176, 328), 38);
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_CustomClusterType*, UPB_SIZE(32, 328), value, UPB_SIZE(20, 20), 38);
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_CustomClusterType* envoy_config_cluster_v3_Cluster_mutable_cluster_type(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_CustomClusterType* envoy_config_cluster_v3_Cluster_mutable_cluster_type(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_CustomClusterType* sub = (struct envoy_config_cluster_v3_Cluster_CustomClusterType*)envoy_config_cluster_v3_Cluster_cluster_type(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_CustomClusterType*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_CustomClusterType_msginit, arena);
@@ -809,26 +1091,25 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_CustomClusterType* envoy_confi
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_respect_dns_ttl(envoy_config_cluster_v3_Cluster *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(18, 18), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_Filter** envoy_config_cluster_v3_Cluster_mutable_filters(envoy_config_cluster_v3_Cluster *msg, size_t *len) {
- return (struct envoy_config_cluster_v3_Filter**)_upb_array_mutable_accessor(msg, UPB_SIZE(164, 304), len);
+UPB_INLINE struct envoy_config_cluster_v3_Filter** envoy_config_cluster_v3_Cluster_mutable_filters(envoy_config_cluster_v3_Cluster* msg, size_t* len) {
+ return (struct envoy_config_cluster_v3_Filter**)_upb_array_mutable_accessor(msg, UPB_SIZE(140, 232), len);
}
-UPB_INLINE struct envoy_config_cluster_v3_Filter** envoy_config_cluster_v3_Cluster_resize_filters(envoy_config_cluster_v3_Cluster *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_cluster_v3_Filter**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(164, 304), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_cluster_v3_Filter** envoy_config_cluster_v3_Cluster_resize_filters(envoy_config_cluster_v3_Cluster* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_cluster_v3_Filter**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(140, 232), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_cluster_v3_Filter* envoy_config_cluster_v3_Cluster_add_filters(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Filter* envoy_config_cluster_v3_Cluster_add_filters(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Filter* sub = (struct envoy_config_cluster_v3_Filter*)_upb_Message_New(&envoy_config_cluster_v3_Filter_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(164, 304), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(140, 232), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_load_balancing_policy(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_LoadBalancingPolicy* value) {
_upb_sethas(msg, 19);
- *UPB_PTR_AT(msg, UPB_SIZE(112, 200), envoy_config_cluster_v3_LoadBalancingPolicy*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(144, 240), envoy_config_cluster_v3_LoadBalancingPolicy*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_LoadBalancingPolicy* envoy_config_cluster_v3_Cluster_mutable_load_balancing_policy(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_LoadBalancingPolicy* envoy_config_cluster_v3_Cluster_mutable_load_balancing_policy(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_LoadBalancingPolicy* sub = (struct envoy_config_cluster_v3_LoadBalancingPolicy*)envoy_config_cluster_v3_Cluster_load_balancing_policy(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_LoadBalancingPolicy*)_upb_Message_New(&envoy_config_cluster_v3_LoadBalancingPolicy_msginit, arena);
@@ -839,9 +1120,9 @@ UPB_INLINE struct envoy_config_cluster_v3_LoadBalancingPolicy* envoy_config_clus
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_lrs_server(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_core_v3_ConfigSource* value) {
_upb_sethas(msg, 20);
- *UPB_PTR_AT(msg, UPB_SIZE(116, 208), struct envoy_config_core_v3_ConfigSource*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(148, 248), struct envoy_config_core_v3_ConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_cluster_v3_Cluster_mutable_lrs_server(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_cluster_v3_Cluster_mutable_lrs_server(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_config_cluster_v3_Cluster_lrs_server(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
@@ -850,24 +1131,23 @@ UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_cluster_v3_Clu
}
return sub;
}
-UPB_INLINE envoy_config_cluster_v3_Cluster_TransportSocketMatch** envoy_config_cluster_v3_Cluster_mutable_transport_socket_matches(envoy_config_cluster_v3_Cluster *msg, size_t *len) {
- return (envoy_config_cluster_v3_Cluster_TransportSocketMatch**)_upb_array_mutable_accessor(msg, UPB_SIZE(168, 312), len);
+UPB_INLINE envoy_config_cluster_v3_Cluster_TransportSocketMatch** envoy_config_cluster_v3_Cluster_mutable_transport_socket_matches(envoy_config_cluster_v3_Cluster* msg, size_t* len) {
+ return (envoy_config_cluster_v3_Cluster_TransportSocketMatch**)_upb_array_mutable_accessor(msg, UPB_SIZE(152, 256), len);
}
-UPB_INLINE envoy_config_cluster_v3_Cluster_TransportSocketMatch** envoy_config_cluster_v3_Cluster_resize_transport_socket_matches(envoy_config_cluster_v3_Cluster *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_cluster_v3_Cluster_TransportSocketMatch**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(168, 312), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_cluster_v3_Cluster_TransportSocketMatch** envoy_config_cluster_v3_Cluster_resize_transport_socket_matches(envoy_config_cluster_v3_Cluster* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_cluster_v3_Cluster_TransportSocketMatch**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(152, 256), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_TransportSocketMatch* envoy_config_cluster_v3_Cluster_add_transport_socket_matches(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_TransportSocketMatch* envoy_config_cluster_v3_Cluster_add_transport_socket_matches(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_TransportSocketMatch* sub = (struct envoy_config_cluster_v3_Cluster_TransportSocketMatch*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_TransportSocketMatch_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(168, 312), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(152, 256), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_dns_failure_refresh_rate(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_RefreshRate* value) {
_upb_sethas(msg, 21);
- *UPB_PTR_AT(msg, UPB_SIZE(120, 216), envoy_config_cluster_v3_Cluster_RefreshRate*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(156, 264), envoy_config_cluster_v3_Cluster_RefreshRate*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_RefreshRate* envoy_config_cluster_v3_Cluster_mutable_dns_failure_refresh_rate(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_RefreshRate* envoy_config_cluster_v3_Cluster_mutable_dns_failure_refresh_rate(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_RefreshRate* sub = (struct envoy_config_cluster_v3_Cluster_RefreshRate*)envoy_config_cluster_v3_Cluster_dns_failure_refresh_rate(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_RefreshRate*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_RefreshRate_msginit, arena);
@@ -877,13 +1157,13 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_RefreshRate* envoy_config_clus
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_use_tcp_for_dns_lookups(envoy_config_cluster_v3_Cluster *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(19, 19), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(25, 25), bool) = value;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_upstream_http_protocol_options(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_core_v3_UpstreamHttpProtocolOptions* value) {
_upb_sethas(msg, 22);
- *UPB_PTR_AT(msg, UPB_SIZE(124, 224), struct envoy_config_core_v3_UpstreamHttpProtocolOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(160, 272), struct envoy_config_core_v3_UpstreamHttpProtocolOptions*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_UpstreamHttpProtocolOptions* envoy_config_cluster_v3_Cluster_mutable_upstream_http_protocol_options(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_UpstreamHttpProtocolOptions* envoy_config_cluster_v3_Cluster_mutable_upstream_http_protocol_options(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_core_v3_UpstreamHttpProtocolOptions* sub = (struct envoy_config_core_v3_UpstreamHttpProtocolOptions*)envoy_config_cluster_v3_Cluster_upstream_http_protocol_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_UpstreamHttpProtocolOptions*)_upb_Message_New(&envoy_config_core_v3_UpstreamHttpProtocolOptions_msginit, arena);
@@ -893,13 +1173,13 @@ UPB_INLINE struct envoy_config_core_v3_UpstreamHttpProtocolOptions* envoy_config
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_track_timeout_budgets(envoy_config_cluster_v3_Cluster *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(26, 26), bool) = value;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_upstream_config(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
_upb_sethas(msg, 23);
- *UPB_PTR_AT(msg, UPB_SIZE(128, 232), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(164, 280), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_cluster_v3_Cluster_mutable_upstream_config(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_cluster_v3_Cluster_mutable_upstream_config(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_cluster_v3_Cluster_upstream_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -910,9 +1190,9 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_cluste
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_track_cluster_stats(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_TrackClusterStats* value) {
_upb_sethas(msg, 24);
- *UPB_PTR_AT(msg, UPB_SIZE(132, 240), envoy_config_cluster_v3_TrackClusterStats*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(168, 288), envoy_config_cluster_v3_TrackClusterStats*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_TrackClusterStats* envoy_config_cluster_v3_Cluster_mutable_track_cluster_stats(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_TrackClusterStats* envoy_config_cluster_v3_Cluster_mutable_track_cluster_stats(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_TrackClusterStats* sub = (struct envoy_config_cluster_v3_TrackClusterStats*)envoy_config_cluster_v3_Cluster_track_cluster_stats(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_TrackClusterStats*)_upb_Message_New(&envoy_config_cluster_v3_TrackClusterStats_msginit, arena);
@@ -923,9 +1203,9 @@ UPB_INLINE struct envoy_config_cluster_v3_TrackClusterStats* envoy_config_cluste
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_preconnect_policy(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_PreconnectPolicy* value) {
_upb_sethas(msg, 25);
- *UPB_PTR_AT(msg, UPB_SIZE(136, 248), envoy_config_cluster_v3_Cluster_PreconnectPolicy*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(172, 296), envoy_config_cluster_v3_Cluster_PreconnectPolicy*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_PreconnectPolicy* envoy_config_cluster_v3_Cluster_mutable_preconnect_policy(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_PreconnectPolicy* envoy_config_cluster_v3_Cluster_mutable_preconnect_policy(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_PreconnectPolicy* sub = (struct envoy_config_cluster_v3_Cluster_PreconnectPolicy*)envoy_config_cluster_v3_Cluster_preconnect_policy(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_PreconnectPolicy*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_PreconnectPolicy_msginit, arena);
@@ -935,12 +1215,12 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_PreconnectPolicy* envoy_config
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_connection_pool_per_downstream_connection(envoy_config_cluster_v3_Cluster *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(21, 21), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(27, 27), bool) = value;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_maglev_lb_config(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_MaglevLbConfig* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_MaglevLbConfig*, UPB_SIZE(180, 336), value, UPB_SIZE(184, 344), 52);
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_MaglevLbConfig*, UPB_SIZE(36, 336), value, UPB_SIZE(28, 28), 52);
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_MaglevLbConfig* envoy_config_cluster_v3_Cluster_mutable_maglev_lb_config(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_MaglevLbConfig* envoy_config_cluster_v3_Cluster_mutable_maglev_lb_config(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_MaglevLbConfig* sub = (struct envoy_config_cluster_v3_Cluster_MaglevLbConfig*)envoy_config_cluster_v3_Cluster_maglev_lb_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_MaglevLbConfig*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_MaglevLbConfig_msginit, arena);
@@ -951,9 +1231,9 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_MaglevLbConfig* envoy_config_c
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_dns_resolution_config(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_core_v3_DnsResolutionConfig* value) {
_upb_sethas(msg, 26);
- *UPB_PTR_AT(msg, UPB_SIZE(140, 256), struct envoy_config_core_v3_DnsResolutionConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(176, 304), struct envoy_config_core_v3_DnsResolutionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DnsResolutionConfig* envoy_config_cluster_v3_Cluster_mutable_dns_resolution_config(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DnsResolutionConfig* envoy_config_cluster_v3_Cluster_mutable_dns_resolution_config(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DnsResolutionConfig* sub = (struct envoy_config_core_v3_DnsResolutionConfig*)envoy_config_cluster_v3_Cluster_dns_resolution_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DnsResolutionConfig*)_upb_Message_New(&envoy_config_core_v3_DnsResolutionConfig_msginit, arena);
@@ -964,9 +1244,9 @@ UPB_INLINE struct envoy_config_core_v3_DnsResolutionConfig* envoy_config_cluster
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_wait_for_warm_on_init(envoy_config_cluster_v3_Cluster *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 27);
- *UPB_PTR_AT(msg, UPB_SIZE(144, 264), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(180, 312), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_cluster_v3_Cluster_mutable_wait_for_warm_on_init(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_cluster_v3_Cluster_mutable_wait_for_warm_on_init(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_cluster_v3_Cluster_wait_for_warm_on_init(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -977,9 +1257,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_cluster_v3_Cluster_mut
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_typed_dns_resolver_config(envoy_config_cluster_v3_Cluster *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
_upb_sethas(msg, 28);
- *UPB_PTR_AT(msg, UPB_SIZE(148, 272), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(184, 320), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_cluster_v3_Cluster_mutable_typed_dns_resolver_config(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_cluster_v3_Cluster_mutable_typed_dns_resolver_config(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_cluster_v3_Cluster_typed_dns_resolver_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -989,9 +1269,9 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_cluste
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_set_round_robin_lb_config(envoy_config_cluster_v3_Cluster *msg, envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_RoundRobinLbConfig*, UPB_SIZE(180, 336), value, UPB_SIZE(184, 344), 56);
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_RoundRobinLbConfig*, UPB_SIZE(36, 336), value, UPB_SIZE(28, 28), 56);
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* envoy_config_cluster_v3_Cluster_mutable_round_robin_lb_config(envoy_config_cluster_v3_Cluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* envoy_config_cluster_v3_Cluster_mutable_round_robin_lb_config(envoy_config_cluster_v3_Cluster* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* sub = (struct envoy_config_cluster_v3_Cluster_RoundRobinLbConfig*)envoy_config_cluster_v3_Cluster_round_robin_lb_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_RoundRobinLbConfig*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_msginit, arena);
@@ -1026,20 +1306,37 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_TransportSocketMatch* envoy_config_cl
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_TransportSocketMatch_serialize(const envoy_config_cluster_v3_Cluster_TransportSocketMatch* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_TransportSocketMatch_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_TransportSocketMatch_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_TransportSocketMatch_serialize_ex(const envoy_config_cluster_v3_Cluster_TransportSocketMatch* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_TransportSocketMatch_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_TransportSocketMatch_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_TransportSocketMatch_clear_name(const envoy_config_cluster_v3_Cluster_TransportSocketMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_cluster_v3_Cluster_TransportSocketMatch_name(const envoy_config_cluster_v3_Cluster_TransportSocketMatch* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_TransportSocketMatch_has_match(const envoy_config_cluster_v3_Cluster_TransportSocketMatch *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_TransportSocketMatch_has_match(const envoy_config_cluster_v3_Cluster_TransportSocketMatch* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_TransportSocketMatch_clear_match(const envoy_config_cluster_v3_Cluster_TransportSocketMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Struct* envoy_config_cluster_v3_Cluster_TransportSocketMatch_match(const envoy_config_cluster_v3_Cluster_TransportSocketMatch* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Struct*);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_TransportSocketMatch_has_transport_socket(const envoy_config_cluster_v3_Cluster_TransportSocketMatch *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_TransportSocketMatch_has_transport_socket(const envoy_config_cluster_v3_Cluster_TransportSocketMatch* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_TransportSocketMatch_clear_transport_socket(const envoy_config_cluster_v3_Cluster_TransportSocketMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_TransportSocket* envoy_config_cluster_v3_Cluster_TransportSocketMatch_transport_socket(const envoy_config_cluster_v3_Cluster_TransportSocketMatch* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_config_core_v3_TransportSocket*);
}
@@ -1051,7 +1348,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_TransportSocketMatch_set_match(e
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Struct*) = value;
}
-UPB_INLINE struct google_protobuf_Struct* envoy_config_cluster_v3_Cluster_TransportSocketMatch_mutable_match(envoy_config_cluster_v3_Cluster_TransportSocketMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Struct* envoy_config_cluster_v3_Cluster_TransportSocketMatch_mutable_match(envoy_config_cluster_v3_Cluster_TransportSocketMatch* msg, upb_Arena* arena) {
struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)envoy_config_cluster_v3_Cluster_TransportSocketMatch_match(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Struct*)_upb_Message_New(&google_protobuf_Struct_msginit, arena);
@@ -1064,7 +1361,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_TransportSocketMatch_set_transpo
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_config_core_v3_TransportSocket*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TransportSocket* envoy_config_cluster_v3_Cluster_TransportSocketMatch_mutable_transport_socket(envoy_config_cluster_v3_Cluster_TransportSocketMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TransportSocket* envoy_config_cluster_v3_Cluster_TransportSocketMatch_mutable_transport_socket(envoy_config_cluster_v3_Cluster_TransportSocketMatch* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TransportSocket* sub = (struct envoy_config_core_v3_TransportSocket*)envoy_config_cluster_v3_Cluster_TransportSocketMatch_transport_socket(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TransportSocket*)_upb_Message_New(&envoy_config_core_v3_TransportSocket_msginit, arena);
@@ -1099,16 +1396,28 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_CustomClusterType* envoy_config_clust
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_CustomClusterType_serialize(const envoy_config_cluster_v3_Cluster_CustomClusterType* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CustomClusterType_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CustomClusterType_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_CustomClusterType_serialize_ex(const envoy_config_cluster_v3_Cluster_CustomClusterType* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CustomClusterType_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CustomClusterType_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CustomClusterType_clear_name(const envoy_config_cluster_v3_Cluster_CustomClusterType* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_cluster_v3_Cluster_CustomClusterType_name(const envoy_config_cluster_v3_Cluster_CustomClusterType* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_CustomClusterType_has_typed_config(const envoy_config_cluster_v3_Cluster_CustomClusterType *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_CustomClusterType_has_typed_config(const envoy_config_cluster_v3_Cluster_CustomClusterType* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CustomClusterType_clear_typed_config(const envoy_config_cluster_v3_Cluster_CustomClusterType* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Any* envoy_config_cluster_v3_Cluster_CustomClusterType_typed_config(const envoy_config_cluster_v3_Cluster_CustomClusterType* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Any*);
}
@@ -1120,7 +1429,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_CustomClusterType_set_typed_conf
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_cluster_v3_Cluster_CustomClusterType_mutable_typed_config(envoy_config_cluster_v3_Cluster_CustomClusterType *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_cluster_v3_Cluster_CustomClusterType_mutable_typed_config(envoy_config_cluster_v3_Cluster_CustomClusterType* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_cluster_v3_Cluster_CustomClusterType_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -1155,25 +1464,37 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_EdsClusterConfig* envoy_config_cluste
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_EdsClusterConfig_serialize(const envoy_config_cluster_v3_Cluster_EdsClusterConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_EdsClusterConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_EdsClusterConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_EdsClusterConfig_serialize_ex(const envoy_config_cluster_v3_Cluster_EdsClusterConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_EdsClusterConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_EdsClusterConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_EdsClusterConfig_has_eds_config(const envoy_config_cluster_v3_Cluster_EdsClusterConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_EdsClusterConfig_clear_eds_config(const envoy_config_cluster_v3_Cluster_EdsClusterConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_EdsClusterConfig_has_eds_config(const envoy_config_cluster_v3_Cluster_EdsClusterConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_config_cluster_v3_Cluster_EdsClusterConfig_eds_config(const envoy_config_cluster_v3_Cluster_EdsClusterConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_ConfigSource*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_ConfigSource*);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_EdsClusterConfig_clear_service_name(const envoy_config_cluster_v3_Cluster_EdsClusterConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_cluster_v3_Cluster_EdsClusterConfig_service_name(const envoy_config_cluster_v3_Cluster_EdsClusterConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_EdsClusterConfig_set_eds_config(envoy_config_cluster_v3_Cluster_EdsClusterConfig *msg, struct envoy_config_core_v3_ConfigSource* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_ConfigSource*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_ConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_cluster_v3_Cluster_EdsClusterConfig_mutable_eds_config(envoy_config_cluster_v3_Cluster_EdsClusterConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_cluster_v3_Cluster_EdsClusterConfig_mutable_eds_config(envoy_config_cluster_v3_Cluster_EdsClusterConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_config_cluster_v3_Cluster_EdsClusterConfig_eds_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
@@ -1183,7 +1504,7 @@ UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_cluster_v3_Clu
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_EdsClusterConfig_set_service_name(envoy_config_cluster_v3_Cluster_EdsClusterConfig *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
/* envoy.config.cluster.v3.Cluster.LbSubsetConfig */
@@ -1211,30 +1532,61 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_LbSubsetConfig* envoy_config_cluster_
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_LbSubsetConfig_serialize(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_LbSubsetConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_LbSubsetConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_LbSubsetConfig_serialize_ex(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_LbSubsetConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_LbSubsetConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_LbSubsetConfig_clear_fallback_policy(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_cluster_v3_Cluster_LbSubsetConfig_fallback_policy(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_LbSubsetConfig_has_default_subset(const envoy_config_cluster_v3_Cluster_LbSubsetConfig *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_LbSubsetConfig_has_default_subset(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_LbSubsetConfig_clear_default_subset(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Struct* envoy_config_cluster_v3_Cluster_LbSubsetConfig_default_subset(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct google_protobuf_Struct*);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_LbSubsetConfig_has_subset_selectors(const envoy_config_cluster_v3_Cluster_LbSubsetConfig *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 24)); }
-UPB_INLINE const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* const* envoy_config_cluster_v3_Cluster_LbSubsetConfig_subset_selectors(const envoy_config_cluster_v3_Cluster_LbSubsetConfig *msg, size_t *len) { return (const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* const*)_upb_array_accessor(msg, UPB_SIZE(16, 24), len); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_LbSubsetConfig_has_subset_selectors(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_LbSubsetConfig_clear_subset_selectors(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* const* envoy_config_cluster_v3_Cluster_LbSubsetConfig_subset_selectors(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg, size_t* len) {
+ return (const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* const*)_upb_array_accessor(msg, UPB_SIZE(16, 24), len);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_LbSubsetConfig_clear_locality_weight_aware(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
+}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_LbSubsetConfig_locality_weight_aware(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_LbSubsetConfig_clear_scale_locality_weight(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool) = 0;
+}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_LbSubsetConfig_scale_locality_weight(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool);
}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_LbSubsetConfig_clear_panic_mode_any(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(10, 10), bool) = 0;
+}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_LbSubsetConfig_panic_mode_any(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(10, 10), bool);
}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_LbSubsetConfig_clear_list_as_any(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(11, 11), bool) = 0;
+}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_LbSubsetConfig_list_as_any(const envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(11, 11), bool);
}
@@ -1246,7 +1598,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_LbSubsetConfig_set_default_subse
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct google_protobuf_Struct*) = value;
}
-UPB_INLINE struct google_protobuf_Struct* envoy_config_cluster_v3_Cluster_LbSubsetConfig_mutable_default_subset(envoy_config_cluster_v3_Cluster_LbSubsetConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Struct* envoy_config_cluster_v3_Cluster_LbSubsetConfig_mutable_default_subset(envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg, upb_Arena* arena) {
struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)envoy_config_cluster_v3_Cluster_LbSubsetConfig_default_subset(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Struct*)_upb_Message_New(&google_protobuf_Struct_msginit, arena);
@@ -1255,16 +1607,15 @@ UPB_INLINE struct google_protobuf_Struct* envoy_config_cluster_v3_Cluster_LbSubs
}
return sub;
}
-UPB_INLINE envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector** envoy_config_cluster_v3_Cluster_LbSubsetConfig_mutable_subset_selectors(envoy_config_cluster_v3_Cluster_LbSubsetConfig *msg, size_t *len) {
+UPB_INLINE envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector** envoy_config_cluster_v3_Cluster_LbSubsetConfig_mutable_subset_selectors(envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg, size_t* len) {
return (envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 24), len);
}
-UPB_INLINE envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector** envoy_config_cluster_v3_Cluster_LbSubsetConfig_resize_subset_selectors(envoy_config_cluster_v3_Cluster_LbSubsetConfig *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector** envoy_config_cluster_v3_Cluster_LbSubsetConfig_resize_subset_selectors(envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg, size_t len, upb_Arena* arena) {
return (envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* envoy_config_cluster_v3_Cluster_LbSubsetConfig_add_subset_selectors(envoy_config_cluster_v3_Cluster_LbSubsetConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* envoy_config_cluster_v3_Cluster_LbSubsetConfig_add_subset_selectors(envoy_config_cluster_v3_Cluster_LbSubsetConfig* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* sub = (struct envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 24), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1306,43 +1657,61 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* envo
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_serialize(const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_serialize_ex(const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_clear_keys(const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 8));
+}
+UPB_INLINE upb_StringView const* envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_keys(const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 8), len);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_clear_fallback_policy(const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
-UPB_INLINE upb_StringView const* envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_keys(const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 8), len); }
UPB_INLINE int32_t envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_fallback_policy(const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
-UPB_INLINE upb_StringView const* envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_fallback_keys_subset(const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len); }
+UPB_INLINE void envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_clear_fallback_keys_subset(const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE upb_StringView const* envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_fallback_keys_subset(const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_clear_single_host_per_subset(const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = 0;
+}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_single_host_per_subset(const envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
}
-UPB_INLINE upb_StringView* envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_mutable_keys(envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector *msg, size_t *len) {
+UPB_INLINE upb_StringView* envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_mutable_keys(envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 8), len);
}
-UPB_INLINE upb_StringView* envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_resize_keys(envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_resize_keys(envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 8), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_add_keys(envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 8), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_add_keys(envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 8), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_set_fallback_policy(envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
}
-UPB_INLINE upb_StringView* envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_mutable_fallback_keys_subset(envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector *msg, size_t *len) {
+UPB_INLINE upb_StringView* envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_mutable_fallback_keys_subset(envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 16), len);
}
-UPB_INLINE upb_StringView* envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_resize_fallback_keys_subset(envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_resize_fallback_keys_subset(envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 16), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_add_fallback_keys_subset(envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 16), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_add_fallback_keys_subset(envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 16), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector_set_single_host_per_subset(envoy_config_cluster_v3_Cluster_LbSubsetConfig_LbSubsetSelector *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = value;
@@ -1373,26 +1742,49 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_SlowStartConfig* envoy_config_cluster
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_SlowStartConfig_serialize(const envoy_config_cluster_v3_Cluster_SlowStartConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_SlowStartConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_SlowStartConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_SlowStartConfig_serialize_ex(const envoy_config_cluster_v3_Cluster_SlowStartConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_SlowStartConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_SlowStartConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_SlowStartConfig_has_slow_start_window(const envoy_config_cluster_v3_Cluster_SlowStartConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_SlowStartConfig_clear_slow_start_window(const envoy_config_cluster_v3_Cluster_SlowStartConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_SlowStartConfig_has_slow_start_window(const envoy_config_cluster_v3_Cluster_SlowStartConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_SlowStartConfig_slow_start_window(const envoy_config_cluster_v3_Cluster_SlowStartConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_SlowStartConfig_has_aggression(const envoy_config_cluster_v3_Cluster_SlowStartConfig *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_SlowStartConfig_has_aggression(const envoy_config_cluster_v3_Cluster_SlowStartConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_SlowStartConfig_clear_aggression(const envoy_config_cluster_v3_Cluster_SlowStartConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_RuntimeDouble* envoy_config_cluster_v3_Cluster_SlowStartConfig_aggression(const envoy_config_cluster_v3_Cluster_SlowStartConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_config_core_v3_RuntimeDouble*);
}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_SlowStartConfig_has_min_weight_percent(const envoy_config_cluster_v3_Cluster_SlowStartConfig* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_SlowStartConfig_clear_min_weight_percent(const envoy_config_cluster_v3_Cluster_SlowStartConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct envoy_type_v3_Percent* envoy_config_cluster_v3_Cluster_SlowStartConfig_min_weight_percent(const envoy_config_cluster_v3_Cluster_SlowStartConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_type_v3_Percent*);
+}
UPB_INLINE void envoy_config_cluster_v3_Cluster_SlowStartConfig_set_slow_start_window(envoy_config_cluster_v3_Cluster_SlowStartConfig *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_SlowStartConfig_mutable_slow_start_window(envoy_config_cluster_v3_Cluster_SlowStartConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_SlowStartConfig_mutable_slow_start_window(envoy_config_cluster_v3_Cluster_SlowStartConfig* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_cluster_v3_Cluster_SlowStartConfig_slow_start_window(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -1405,7 +1797,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_SlowStartConfig_set_aggression(e
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_config_core_v3_RuntimeDouble*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_RuntimeDouble* envoy_config_cluster_v3_Cluster_SlowStartConfig_mutable_aggression(envoy_config_cluster_v3_Cluster_SlowStartConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_RuntimeDouble* envoy_config_cluster_v3_Cluster_SlowStartConfig_mutable_aggression(envoy_config_cluster_v3_Cluster_SlowStartConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_RuntimeDouble* sub = (struct envoy_config_core_v3_RuntimeDouble*)envoy_config_cluster_v3_Cluster_SlowStartConfig_aggression(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_RuntimeDouble*)_upb_Message_New(&envoy_config_core_v3_RuntimeDouble_msginit, arena);
@@ -1414,6 +1806,19 @@ UPB_INLINE struct envoy_config_core_v3_RuntimeDouble* envoy_config_cluster_v3_Cl
}
return sub;
}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_SlowStartConfig_set_min_weight_percent(envoy_config_cluster_v3_Cluster_SlowStartConfig *msg, struct envoy_type_v3_Percent* value) {
+ _upb_sethas(msg, 3);
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_type_v3_Percent*) = value;
+}
+UPB_INLINE struct envoy_type_v3_Percent* envoy_config_cluster_v3_Cluster_SlowStartConfig_mutable_min_weight_percent(envoy_config_cluster_v3_Cluster_SlowStartConfig* msg, upb_Arena* arena) {
+ struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_config_cluster_v3_Cluster_SlowStartConfig_min_weight_percent(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_cluster_v3_Cluster_SlowStartConfig_set_min_weight_percent(msg, sub);
+ }
+ return sub;
+}
/* envoy.config.cluster.v3.Cluster.RoundRobinLbConfig */
@@ -1440,13 +1845,22 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* envoy_config_clus
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_serialize(const envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_serialize_ex(const envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_has_slow_start_config(const envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_clear_slow_start_config(const envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_has_slow_start_config(const envoy_config_cluster_v3_Cluster_RoundRobinLbConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_cluster_v3_Cluster_SlowStartConfig* envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_slow_start_config(const envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_cluster_v3_Cluster_SlowStartConfig*);
}
@@ -1455,7 +1869,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_set_slow_star
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_cluster_v3_Cluster_SlowStartConfig*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_SlowStartConfig* envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_mutable_slow_start_config(envoy_config_cluster_v3_Cluster_RoundRobinLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_SlowStartConfig* envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_mutable_slow_start_config(envoy_config_cluster_v3_Cluster_RoundRobinLbConfig* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_SlowStartConfig* sub = (struct envoy_config_cluster_v3_Cluster_SlowStartConfig*)envoy_config_cluster_v3_Cluster_RoundRobinLbConfig_slow_start_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_SlowStartConfig*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_SlowStartConfig_msginit, arena);
@@ -1490,21 +1904,40 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* envoy_config_cl
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_serialize(const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_serialize_ex(const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_has_choice_count(const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_clear_choice_count(const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_has_choice_count(const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_choice_count(const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_has_active_request_bias(const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_has_active_request_bias(const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_clear_active_request_bias(const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_RuntimeDouble* envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_active_request_bias(const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_config_core_v3_RuntimeDouble*);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_has_slow_start_config(const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_has_slow_start_config(const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_clear_slow_start_config(const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_cluster_v3_Cluster_SlowStartConfig* envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_slow_start_config(const envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_config_cluster_v3_Cluster_SlowStartConfig*);
}
@@ -1513,7 +1946,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_set_choice_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_mutable_choice_count(envoy_config_cluster_v3_Cluster_LeastRequestLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_mutable_choice_count(envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_choice_count(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1526,7 +1959,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_set_active_
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_config_core_v3_RuntimeDouble*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_RuntimeDouble* envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_mutable_active_request_bias(envoy_config_cluster_v3_Cluster_LeastRequestLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_RuntimeDouble* envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_mutable_active_request_bias(envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_RuntimeDouble* sub = (struct envoy_config_core_v3_RuntimeDouble*)envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_active_request_bias(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_RuntimeDouble*)_upb_Message_New(&envoy_config_core_v3_RuntimeDouble_msginit, arena);
@@ -1539,7 +1972,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_set_slow_st
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_config_cluster_v3_Cluster_SlowStartConfig*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_SlowStartConfig* envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_mutable_slow_start_config(envoy_config_cluster_v3_Cluster_LeastRequestLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_SlowStartConfig* envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_mutable_slow_start_config(envoy_config_cluster_v3_Cluster_LeastRequestLbConfig* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_SlowStartConfig* sub = (struct envoy_config_cluster_v3_Cluster_SlowStartConfig*)envoy_config_cluster_v3_Cluster_LeastRequestLbConfig_slow_start_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_SlowStartConfig*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_SlowStartConfig_msginit, arena);
@@ -1574,20 +2007,37 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_RingHashLbConfig* envoy_config_cluste
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_RingHashLbConfig_serialize(const envoy_config_cluster_v3_Cluster_RingHashLbConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_RingHashLbConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_RingHashLbConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_RingHashLbConfig_serialize_ex(const envoy_config_cluster_v3_Cluster_RingHashLbConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_RingHashLbConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_RingHashLbConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_RingHashLbConfig_has_minimum_ring_size(const envoy_config_cluster_v3_Cluster_RingHashLbConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_RingHashLbConfig_clear_minimum_ring_size(const envoy_config_cluster_v3_Cluster_RingHashLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_RingHashLbConfig_has_minimum_ring_size(const envoy_config_cluster_v3_Cluster_RingHashLbConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt64Value* envoy_config_cluster_v3_Cluster_RingHashLbConfig_minimum_ring_size(const envoy_config_cluster_v3_Cluster_RingHashLbConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct google_protobuf_UInt64Value*);
}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_RingHashLbConfig_clear_hash_function(const envoy_config_cluster_v3_Cluster_RingHashLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_config_cluster_v3_Cluster_RingHashLbConfig_hash_function(const envoy_config_cluster_v3_Cluster_RingHashLbConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_RingHashLbConfig_has_maximum_ring_size(const envoy_config_cluster_v3_Cluster_RingHashLbConfig *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_RingHashLbConfig_has_maximum_ring_size(const envoy_config_cluster_v3_Cluster_RingHashLbConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_RingHashLbConfig_clear_maximum_ring_size(const envoy_config_cluster_v3_Cluster_RingHashLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt64Value* envoy_config_cluster_v3_Cluster_RingHashLbConfig_maximum_ring_size(const envoy_config_cluster_v3_Cluster_RingHashLbConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct google_protobuf_UInt64Value*);
}
@@ -1596,7 +2046,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_RingHashLbConfig_set_minimum_rin
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct google_protobuf_UInt64Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_cluster_v3_Cluster_RingHashLbConfig_mutable_minimum_ring_size(envoy_config_cluster_v3_Cluster_RingHashLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_cluster_v3_Cluster_RingHashLbConfig_mutable_minimum_ring_size(envoy_config_cluster_v3_Cluster_RingHashLbConfig* msg, upb_Arena* arena) {
struct google_protobuf_UInt64Value* sub = (struct google_protobuf_UInt64Value*)envoy_config_cluster_v3_Cluster_RingHashLbConfig_minimum_ring_size(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt64Value*)_upb_Message_New(&google_protobuf_UInt64Value_msginit, arena);
@@ -1612,7 +2062,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_RingHashLbConfig_set_maximum_rin
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct google_protobuf_UInt64Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_cluster_v3_Cluster_RingHashLbConfig_mutable_maximum_ring_size(envoy_config_cluster_v3_Cluster_RingHashLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_cluster_v3_Cluster_RingHashLbConfig_mutable_maximum_ring_size(envoy_config_cluster_v3_Cluster_RingHashLbConfig* msg, upb_Arena* arena) {
struct google_protobuf_UInt64Value* sub = (struct google_protobuf_UInt64Value*)envoy_config_cluster_v3_Cluster_RingHashLbConfig_maximum_ring_size(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt64Value*)_upb_Message_New(&google_protobuf_UInt64Value_msginit, arena);
@@ -1647,13 +2097,22 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_MaglevLbConfig* envoy_config_cluster_
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_MaglevLbConfig_serialize(const envoy_config_cluster_v3_Cluster_MaglevLbConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_MaglevLbConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_MaglevLbConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_MaglevLbConfig_serialize_ex(const envoy_config_cluster_v3_Cluster_MaglevLbConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_MaglevLbConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_MaglevLbConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_MaglevLbConfig_has_table_size(const envoy_config_cluster_v3_Cluster_MaglevLbConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_MaglevLbConfig_clear_table_size(const envoy_config_cluster_v3_Cluster_MaglevLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_MaglevLbConfig_has_table_size(const envoy_config_cluster_v3_Cluster_MaglevLbConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt64Value* envoy_config_cluster_v3_Cluster_MaglevLbConfig_table_size(const envoy_config_cluster_v3_Cluster_MaglevLbConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt64Value*);
}
@@ -1662,7 +2121,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_MaglevLbConfig_set_table_size(en
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt64Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_cluster_v3_Cluster_MaglevLbConfig_mutable_table_size(envoy_config_cluster_v3_Cluster_MaglevLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_cluster_v3_Cluster_MaglevLbConfig_mutable_table_size(envoy_config_cluster_v3_Cluster_MaglevLbConfig* msg, upb_Arena* arena) {
struct google_protobuf_UInt64Value* sub = (struct google_protobuf_UInt64Value*)envoy_config_cluster_v3_Cluster_MaglevLbConfig_table_size(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt64Value*)_upb_Message_New(&google_protobuf_UInt64Value_msginit, arena);
@@ -1697,19 +2156,35 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* envoy_config_clu
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_serialize(const envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_serialize_ex(const envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_clear_use_http_header(const envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_use_http_header(const envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_clear_http_header_name(const envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_http_header_name(const envoy_config_cluster_v3_Cluster_OriginalDstLbConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
UPB_INLINE void envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_set_use_http_header(envoy_config_cluster_v3_Cluster_OriginalDstLbConfig *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = value;
}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_OriginalDstLbConfig_set_http_header_name(envoy_config_cluster_v3_Cluster_OriginalDstLbConfig *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+}
/* envoy.config.cluster.v3.Cluster.CommonLbConfig */
@@ -1736,47 +2211,96 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_CommonLbConfig* envoy_config_cluster_
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_CommonLbConfig_serialize(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_CommonLbConfig_serialize_ex(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_config_specifier_zone_aware_lb_config = 2,
envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_config_specifier_locality_weighted_lb_config = 3,
envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_config_specifier_NOT_SET = 0
} envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_config_specifier_oneofcases;
-UPB_INLINE envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_config_specifier_oneofcases envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_config_specifier_case(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) { return (envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_config_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(20, 40), int32_t); }
-
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_has_healthy_panic_threshold(const envoy_config_cluster_v3_Cluster_CommonLbConfig *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_config_specifier_oneofcases envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_config_specifier_case(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ return (envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_config_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_has_healthy_panic_threshold(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_clear_healthy_panic_threshold(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_Percent* envoy_config_cluster_v3_Cluster_CommonLbConfig_healthy_panic_threshold(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_v3_Percent*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct envoy_type_v3_Percent*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_has_zone_aware_lb_config(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_clear_zone_aware_lb_config(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig*, UPB_SIZE(28, 48), 0, UPB_SIZE(4, 4), envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_config_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* envoy_config_cluster_v3_Cluster_CommonLbConfig_zone_aware_lb_config(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig*, UPB_SIZE(28, 48), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_has_locality_weighted_lb_config(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_clear_locality_weighted_lb_config(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig*, UPB_SIZE(28, 48), 0, UPB_SIZE(4, 4), envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_config_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig* envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_weighted_lb_config(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig*, UPB_SIZE(28, 48), UPB_SIZE(4, 4), 3, NULL);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_has_update_merge_window(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_clear_update_merge_window(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_has_zone_aware_lb_config(const envoy_config_cluster_v3_Cluster_CommonLbConfig *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 2; }
-UPB_INLINE const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* envoy_config_cluster_v3_Cluster_CommonLbConfig_zone_aware_lb_config(const envoy_config_cluster_v3_Cluster_CommonLbConfig *msg) { return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig*, UPB_SIZE(16, 32), UPB_SIZE(20, 40), 2, NULL); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_has_locality_weighted_lb_config(const envoy_config_cluster_v3_Cluster_CommonLbConfig *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 3; }
-UPB_INLINE const envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig* envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_weighted_lb_config(const envoy_config_cluster_v3_Cluster_CommonLbConfig *msg) { return UPB_READ_ONEOF(msg, const envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig*, UPB_SIZE(16, 32), UPB_SIZE(20, 40), 3, NULL); }
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_has_update_merge_window(const envoy_config_cluster_v3_Cluster_CommonLbConfig *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_CommonLbConfig_update_merge_window(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_Duration*);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_clear_ignore_new_hosts_until_first_hc(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_ignore_new_hosts_until_first_hc(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_clear_close_connections_on_host_set_change(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool) = 0;
}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_close_connections_on_host_set_change(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_has_consistent_hashing_lb_config(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_clear_consistent_hashing_lb_config(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_has_consistent_hashing_lb_config(const envoy_config_cluster_v3_Cluster_CommonLbConfig *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig* envoy_config_cluster_v3_Cluster_CommonLbConfig_consistent_hashing_lb_config(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig*);
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_has_override_host_status(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_clear_override_host_status(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct envoy_config_core_v3_HealthStatusSet* envoy_config_cluster_v3_Cluster_CommonLbConfig_override_host_status(const envoy_config_cluster_v3_Cluster_CommonLbConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct envoy_config_core_v3_HealthStatusSet*);
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_set_healthy_panic_threshold(envoy_config_cluster_v3_Cluster_CommonLbConfig *msg, struct envoy_type_v3_Percent* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_v3_Percent*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct envoy_type_v3_Percent*) = value;
}
-UPB_INLINE struct envoy_type_v3_Percent* envoy_config_cluster_v3_Cluster_CommonLbConfig_mutable_healthy_panic_threshold(envoy_config_cluster_v3_Cluster_CommonLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Percent* envoy_config_cluster_v3_Cluster_CommonLbConfig_mutable_healthy_panic_threshold(envoy_config_cluster_v3_Cluster_CommonLbConfig* msg, upb_Arena* arena) {
struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_config_cluster_v3_Cluster_CommonLbConfig_healthy_panic_threshold(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
@@ -1786,9 +2310,9 @@ UPB_INLINE struct envoy_type_v3_Percent* envoy_config_cluster_v3_Cluster_CommonL
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_set_zone_aware_lb_config(envoy_config_cluster_v3_Cluster_CommonLbConfig *msg, envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig*, UPB_SIZE(16, 32), value, UPB_SIZE(20, 40), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig*, UPB_SIZE(28, 48), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* envoy_config_cluster_v3_Cluster_CommonLbConfig_mutable_zone_aware_lb_config(envoy_config_cluster_v3_Cluster_CommonLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* envoy_config_cluster_v3_Cluster_CommonLbConfig_mutable_zone_aware_lb_config(envoy_config_cluster_v3_Cluster_CommonLbConfig* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* sub = (struct envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig*)envoy_config_cluster_v3_Cluster_CommonLbConfig_zone_aware_lb_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_msginit, arena);
@@ -1798,9 +2322,9 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConf
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_set_locality_weighted_lb_config(envoy_config_cluster_v3_Cluster_CommonLbConfig *msg, envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig*, UPB_SIZE(16, 32), value, UPB_SIZE(20, 40), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig*, UPB_SIZE(28, 48), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig* envoy_config_cluster_v3_Cluster_CommonLbConfig_mutable_locality_weighted_lb_config(envoy_config_cluster_v3_Cluster_CommonLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig* envoy_config_cluster_v3_Cluster_CommonLbConfig_mutable_locality_weighted_lb_config(envoy_config_cluster_v3_Cluster_CommonLbConfig* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig* sub = (struct envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig*)envoy_config_cluster_v3_Cluster_CommonLbConfig_locality_weighted_lb_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig_msginit, arena);
@@ -1811,9 +2335,9 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeighte
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_set_update_merge_window(envoy_config_cluster_v3_Cluster_CommonLbConfig *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_CommonLbConfig_mutable_update_merge_window(envoy_config_cluster_v3_Cluster_CommonLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_CommonLbConfig_mutable_update_merge_window(envoy_config_cluster_v3_Cluster_CommonLbConfig* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_cluster_v3_Cluster_CommonLbConfig_update_merge_window(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -1823,16 +2347,16 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_Comm
return sub;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_set_ignore_new_hosts_until_first_hc(envoy_config_cluster_v3_Cluster_CommonLbConfig *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_set_close_connections_on_host_set_change(envoy_config_cluster_v3_Cluster_CommonLbConfig *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool) = value;
}
UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_set_consistent_hashing_lb_config(envoy_config_cluster_v3_Cluster_CommonLbConfig *msg, envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig*) = value;
}
-UPB_INLINE struct envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig* envoy_config_cluster_v3_Cluster_CommonLbConfig_mutable_consistent_hashing_lb_config(envoy_config_cluster_v3_Cluster_CommonLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig* envoy_config_cluster_v3_Cluster_CommonLbConfig_mutable_consistent_hashing_lb_config(envoy_config_cluster_v3_Cluster_CommonLbConfig* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig* sub = (struct envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig*)envoy_config_cluster_v3_Cluster_CommonLbConfig_consistent_hashing_lb_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig*)_upb_Message_New(&envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_msginit, arena);
@@ -1841,6 +2365,19 @@ UPB_INLINE struct envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashi
}
return sub;
}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_set_override_host_status(envoy_config_cluster_v3_Cluster_CommonLbConfig *msg, struct envoy_config_core_v3_HealthStatusSet* value) {
+ _upb_sethas(msg, 4);
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct envoy_config_core_v3_HealthStatusSet*) = value;
+}
+UPB_INLINE struct envoy_config_core_v3_HealthStatusSet* envoy_config_cluster_v3_Cluster_CommonLbConfig_mutable_override_host_status(envoy_config_cluster_v3_Cluster_CommonLbConfig* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_HealthStatusSet* sub = (struct envoy_config_core_v3_HealthStatusSet*)envoy_config_cluster_v3_Cluster_CommonLbConfig_override_host_status(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_core_v3_HealthStatusSet*)_upb_Message_New(&envoy_config_core_v3_HealthStatusSet_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_cluster_v3_Cluster_CommonLbConfig_set_override_host_status(msg, sub);
+ }
+ return sub;
+}
/* envoy.config.cluster.v3.Cluster.CommonLbConfig.ZoneAwareLbConfig */
@@ -1867,20 +2404,37 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* env
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_serialize(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_serialize_ex(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_has_routing_enabled(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_clear_routing_enabled(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_has_routing_enabled(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_v3_Percent* envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_routing_enabled(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_v3_Percent*);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_has_min_cluster_size(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_has_min_cluster_size(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_clear_min_cluster_size(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt64Value* envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_min_cluster_size(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_UInt64Value*);
}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_clear_fail_traffic_on_panic(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_fail_traffic_on_panic(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
@@ -1889,7 +2443,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_v3_Percent*) = value;
}
-UPB_INLINE struct envoy_type_v3_Percent* envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_mutable_routing_enabled(envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Percent* envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_mutable_routing_enabled(envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* msg, upb_Arena* arena) {
struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_routing_enabled(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
@@ -1902,7 +2456,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_UInt64Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_mutable_min_cluster_size(envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_mutable_min_cluster_size(envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig* msg, upb_Arena* arena) {
struct google_protobuf_UInt64Value* sub = (struct google_protobuf_UInt64Value*)envoy_config_cluster_v3_Cluster_CommonLbConfig_ZoneAwareLbConfig_min_cluster_size(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt64Value*)_upb_Message_New(&google_protobuf_UInt64Value_msginit, arena);
@@ -1940,11 +2494,15 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConf
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig_serialize(const envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig_serialize_ex(const envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_LocalityWeightedLbConfig_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -1973,16 +2531,28 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbCon
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_serialize(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_serialize_ex(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_clear_use_hostname_for_hashing(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
}
UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_use_hostname_for_hashing(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_has_hash_balance_factor(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_has_hash_balance_factor(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_clear_hash_balance_factor(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_hash_balance_factor(const envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt32Value*);
}
@@ -1994,7 +2564,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashing
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_mutable_hash_balance_factor(envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_mutable_hash_balance_factor(envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_Cluster_CommonLbConfig_ConsistentHashingLbConfig_hash_balance_factor(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -2029,17 +2599,31 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_RefreshRate* envoy_config_cluster_v3_
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_RefreshRate_serialize(const envoy_config_cluster_v3_Cluster_RefreshRate* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_RefreshRate_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_RefreshRate_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_RefreshRate_serialize_ex(const envoy_config_cluster_v3_Cluster_RefreshRate* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_RefreshRate_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_RefreshRate_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_RefreshRate_has_base_interval(const envoy_config_cluster_v3_Cluster_RefreshRate* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_RefreshRate_clear_base_interval(const envoy_config_cluster_v3_Cluster_RefreshRate* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_RefreshRate_has_base_interval(const envoy_config_cluster_v3_Cluster_RefreshRate *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_RefreshRate_base_interval(const envoy_config_cluster_v3_Cluster_RefreshRate* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_RefreshRate_has_max_interval(const envoy_config_cluster_v3_Cluster_RefreshRate *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_RefreshRate_has_max_interval(const envoy_config_cluster_v3_Cluster_RefreshRate* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_RefreshRate_clear_max_interval(const envoy_config_cluster_v3_Cluster_RefreshRate* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_RefreshRate_max_interval(const envoy_config_cluster_v3_Cluster_RefreshRate* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Duration*);
}
@@ -2048,7 +2632,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_RefreshRate_set_base_interval(en
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_RefreshRate_mutable_base_interval(envoy_config_cluster_v3_Cluster_RefreshRate *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_RefreshRate_mutable_base_interval(envoy_config_cluster_v3_Cluster_RefreshRate* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_cluster_v3_Cluster_RefreshRate_base_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -2061,7 +2645,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_RefreshRate_set_max_interval(env
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_RefreshRate_mutable_max_interval(envoy_config_cluster_v3_Cluster_RefreshRate *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_Cluster_RefreshRate_mutable_max_interval(envoy_config_cluster_v3_Cluster_RefreshRate* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_cluster_v3_Cluster_RefreshRate_max_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -2096,17 +2680,31 @@ UPB_INLINE envoy_config_cluster_v3_Cluster_PreconnectPolicy* envoy_config_cluste
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_PreconnectPolicy_serialize(const envoy_config_cluster_v3_Cluster_PreconnectPolicy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_PreconnectPolicy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_PreconnectPolicy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Cluster_PreconnectPolicy_serialize_ex(const envoy_config_cluster_v3_Cluster_PreconnectPolicy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Cluster_PreconnectPolicy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Cluster_PreconnectPolicy_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_PreconnectPolicy_has_per_upstream_preconnect_ratio(const envoy_config_cluster_v3_Cluster_PreconnectPolicy* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_PreconnectPolicy_clear_per_upstream_preconnect_ratio(const envoy_config_cluster_v3_Cluster_PreconnectPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_PreconnectPolicy_has_per_upstream_preconnect_ratio(const envoy_config_cluster_v3_Cluster_PreconnectPolicy *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_DoubleValue* envoy_config_cluster_v3_Cluster_PreconnectPolicy_per_upstream_preconnect_ratio(const envoy_config_cluster_v3_Cluster_PreconnectPolicy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_DoubleValue*);
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_PreconnectPolicy_has_predictive_preconnect_ratio(const envoy_config_cluster_v3_Cluster_PreconnectPolicy *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_PreconnectPolicy_has_predictive_preconnect_ratio(const envoy_config_cluster_v3_Cluster_PreconnectPolicy* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_cluster_v3_Cluster_PreconnectPolicy_clear_predictive_preconnect_ratio(const envoy_config_cluster_v3_Cluster_PreconnectPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_DoubleValue* envoy_config_cluster_v3_Cluster_PreconnectPolicy_predictive_preconnect_ratio(const envoy_config_cluster_v3_Cluster_PreconnectPolicy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_DoubleValue*);
}
@@ -2115,7 +2713,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_PreconnectPolicy_set_per_upstrea
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_DoubleValue*) = value;
}
-UPB_INLINE struct google_protobuf_DoubleValue* envoy_config_cluster_v3_Cluster_PreconnectPolicy_mutable_per_upstream_preconnect_ratio(envoy_config_cluster_v3_Cluster_PreconnectPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_DoubleValue* envoy_config_cluster_v3_Cluster_PreconnectPolicy_mutable_per_upstream_preconnect_ratio(envoy_config_cluster_v3_Cluster_PreconnectPolicy* msg, upb_Arena* arena) {
struct google_protobuf_DoubleValue* sub = (struct google_protobuf_DoubleValue*)envoy_config_cluster_v3_Cluster_PreconnectPolicy_per_upstream_preconnect_ratio(msg);
if (sub == NULL) {
sub = (struct google_protobuf_DoubleValue*)_upb_Message_New(&google_protobuf_DoubleValue_msginit, arena);
@@ -2128,7 +2726,7 @@ UPB_INLINE void envoy_config_cluster_v3_Cluster_PreconnectPolicy_set_predictive_
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_DoubleValue*) = value;
}
-UPB_INLINE struct google_protobuf_DoubleValue* envoy_config_cluster_v3_Cluster_PreconnectPolicy_mutable_predictive_preconnect_ratio(envoy_config_cluster_v3_Cluster_PreconnectPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_DoubleValue* envoy_config_cluster_v3_Cluster_PreconnectPolicy_mutable_predictive_preconnect_ratio(envoy_config_cluster_v3_Cluster_PreconnectPolicy* msg, upb_Arena* arena) {
struct google_protobuf_DoubleValue* sub = (struct google_protobuf_DoubleValue*)envoy_config_cluster_v3_Cluster_PreconnectPolicy_predictive_preconnect_ratio(msg);
if (sub == NULL) {
sub = (struct google_protobuf_DoubleValue*)_upb_Message_New(&google_protobuf_DoubleValue_msginit, arena);
@@ -2140,13 +2738,15 @@ UPB_INLINE struct google_protobuf_DoubleValue* envoy_config_cluster_v3_Cluster_P
/* envoy.config.cluster.v3.Cluster.TypedExtensionProtocolOptionsEntry */
-UPB_INLINE upb_StringView envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry_key(const envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry *msg) {
+UPB_INLINE upb_StringView envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry_key(const envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE bool envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry_has_value(const envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry_value(const envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry *msg) {
+UPB_INLINE bool envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry_has_value(const envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry_value(const envoy_config_cluster_v3_Cluster_TypedExtensionProtocolOptionsEntry* msg) {
struct google_protobuf_Any* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -2181,25 +2781,35 @@ UPB_INLINE envoy_config_cluster_v3_LoadBalancingPolicy* envoy_config_cluster_v3_
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_LoadBalancingPolicy_serialize(const envoy_config_cluster_v3_LoadBalancingPolicy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_LoadBalancingPolicy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_LoadBalancingPolicy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_LoadBalancingPolicy_serialize_ex(const envoy_config_cluster_v3_LoadBalancingPolicy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_LoadBalancingPolicy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_LoadBalancingPolicy_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_LoadBalancingPolicy_has_policies(const envoy_config_cluster_v3_LoadBalancingPolicy* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_cluster_v3_LoadBalancingPolicy_clear_policies(const envoy_config_cluster_v3_LoadBalancingPolicy* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_cluster_v3_LoadBalancingPolicy_Policy* const* envoy_config_cluster_v3_LoadBalancingPolicy_policies(const envoy_config_cluster_v3_LoadBalancingPolicy* msg, size_t* len) {
+ return (const envoy_config_cluster_v3_LoadBalancingPolicy_Policy* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_cluster_v3_LoadBalancingPolicy_has_policies(const envoy_config_cluster_v3_LoadBalancingPolicy *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_cluster_v3_LoadBalancingPolicy_Policy* const* envoy_config_cluster_v3_LoadBalancingPolicy_policies(const envoy_config_cluster_v3_LoadBalancingPolicy *msg, size_t *len) { return (const envoy_config_cluster_v3_LoadBalancingPolicy_Policy* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_cluster_v3_LoadBalancingPolicy_Policy** envoy_config_cluster_v3_LoadBalancingPolicy_mutable_policies(envoy_config_cluster_v3_LoadBalancingPolicy *msg, size_t *len) {
+UPB_INLINE envoy_config_cluster_v3_LoadBalancingPolicy_Policy** envoy_config_cluster_v3_LoadBalancingPolicy_mutable_policies(envoy_config_cluster_v3_LoadBalancingPolicy* msg, size_t* len) {
return (envoy_config_cluster_v3_LoadBalancingPolicy_Policy**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_cluster_v3_LoadBalancingPolicy_Policy** envoy_config_cluster_v3_LoadBalancingPolicy_resize_policies(envoy_config_cluster_v3_LoadBalancingPolicy *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_cluster_v3_LoadBalancingPolicy_Policy** envoy_config_cluster_v3_LoadBalancingPolicy_resize_policies(envoy_config_cluster_v3_LoadBalancingPolicy* msg, size_t len, upb_Arena* arena) {
return (envoy_config_cluster_v3_LoadBalancingPolicy_Policy**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_cluster_v3_LoadBalancingPolicy_Policy* envoy_config_cluster_v3_LoadBalancingPolicy_add_policies(envoy_config_cluster_v3_LoadBalancingPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_cluster_v3_LoadBalancingPolicy_Policy* envoy_config_cluster_v3_LoadBalancingPolicy_add_policies(envoy_config_cluster_v3_LoadBalancingPolicy* msg, upb_Arena* arena) {
struct envoy_config_cluster_v3_LoadBalancingPolicy_Policy* sub = (struct envoy_config_cluster_v3_LoadBalancingPolicy_Policy*)_upb_Message_New(&envoy_config_cluster_v3_LoadBalancingPolicy_Policy_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -2229,13 +2839,22 @@ UPB_INLINE envoy_config_cluster_v3_LoadBalancingPolicy_Policy* envoy_config_clus
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_LoadBalancingPolicy_Policy_serialize(const envoy_config_cluster_v3_LoadBalancingPolicy_Policy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_LoadBalancingPolicy_Policy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_LoadBalancingPolicy_Policy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_LoadBalancingPolicy_Policy_serialize_ex(const envoy_config_cluster_v3_LoadBalancingPolicy_Policy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_LoadBalancingPolicy_Policy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_LoadBalancingPolicy_Policy_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_LoadBalancingPolicy_Policy_has_typed_extension_config(const envoy_config_cluster_v3_LoadBalancingPolicy_Policy* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_LoadBalancingPolicy_Policy_clear_typed_extension_config(const envoy_config_cluster_v3_LoadBalancingPolicy_Policy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_LoadBalancingPolicy_Policy_has_typed_extension_config(const envoy_config_cluster_v3_LoadBalancingPolicy_Policy *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_cluster_v3_LoadBalancingPolicy_Policy_typed_extension_config(const envoy_config_cluster_v3_LoadBalancingPolicy_Policy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_TypedExtensionConfig*);
}
@@ -2244,7 +2863,7 @@ UPB_INLINE void envoy_config_cluster_v3_LoadBalancingPolicy_Policy_set_typed_ext
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_cluster_v3_LoadBalancingPolicy_Policy_mutable_typed_extension_config(envoy_config_cluster_v3_LoadBalancingPolicy_Policy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_cluster_v3_LoadBalancingPolicy_Policy_mutable_typed_extension_config(envoy_config_cluster_v3_LoadBalancingPolicy_Policy* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_cluster_v3_LoadBalancingPolicy_Policy_typed_extension_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -2279,13 +2898,22 @@ UPB_INLINE envoy_config_cluster_v3_UpstreamBindConfig* envoy_config_cluster_v3_U
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_UpstreamBindConfig_serialize(const envoy_config_cluster_v3_UpstreamBindConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_UpstreamBindConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_UpstreamBindConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_UpstreamBindConfig_serialize_ex(const envoy_config_cluster_v3_UpstreamBindConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_UpstreamBindConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_UpstreamBindConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_UpstreamBindConfig_has_source_address(const envoy_config_cluster_v3_UpstreamBindConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_UpstreamBindConfig_clear_source_address(const envoy_config_cluster_v3_UpstreamBindConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_UpstreamBindConfig_has_source_address(const envoy_config_cluster_v3_UpstreamBindConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_Address* envoy_config_cluster_v3_UpstreamBindConfig_source_address(const envoy_config_cluster_v3_UpstreamBindConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_Address*);
}
@@ -2294,7 +2922,7 @@ UPB_INLINE void envoy_config_cluster_v3_UpstreamBindConfig_set_source_address(en
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_Address*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_cluster_v3_UpstreamBindConfig_mutable_source_address(envoy_config_cluster_v3_UpstreamBindConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_cluster_v3_UpstreamBindConfig_mutable_source_address(envoy_config_cluster_v3_UpstreamBindConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Address* sub = (struct envoy_config_core_v3_Address*)envoy_config_cluster_v3_UpstreamBindConfig_source_address(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Address*)_upb_Message_New(&envoy_config_core_v3_Address_msginit, arena);
@@ -2329,22 +2957,37 @@ UPB_INLINE envoy_config_cluster_v3_UpstreamConnectionOptions* envoy_config_clust
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_UpstreamConnectionOptions_serialize(const envoy_config_cluster_v3_UpstreamConnectionOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_UpstreamConnectionOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_UpstreamConnectionOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_UpstreamConnectionOptions_serialize_ex(const envoy_config_cluster_v3_UpstreamConnectionOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_UpstreamConnectionOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_UpstreamConnectionOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_UpstreamConnectionOptions_has_tcp_keepalive(const envoy_config_cluster_v3_UpstreamConnectionOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_UpstreamConnectionOptions_clear_tcp_keepalive(const envoy_config_cluster_v3_UpstreamConnectionOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_UpstreamConnectionOptions_has_tcp_keepalive(const envoy_config_cluster_v3_UpstreamConnectionOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_TcpKeepalive* envoy_config_cluster_v3_UpstreamConnectionOptions_tcp_keepalive(const envoy_config_cluster_v3_UpstreamConnectionOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_TcpKeepalive*);
}
+UPB_INLINE void envoy_config_cluster_v3_UpstreamConnectionOptions_clear_set_local_interface_name_on_upstream_connections(const envoy_config_cluster_v3_UpstreamConnectionOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
+UPB_INLINE bool envoy_config_cluster_v3_UpstreamConnectionOptions_set_local_interface_name_on_upstream_connections(const envoy_config_cluster_v3_UpstreamConnectionOptions* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
+}
UPB_INLINE void envoy_config_cluster_v3_UpstreamConnectionOptions_set_tcp_keepalive(envoy_config_cluster_v3_UpstreamConnectionOptions *msg, struct envoy_config_core_v3_TcpKeepalive* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_TcpKeepalive*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TcpKeepalive* envoy_config_cluster_v3_UpstreamConnectionOptions_mutable_tcp_keepalive(envoy_config_cluster_v3_UpstreamConnectionOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TcpKeepalive* envoy_config_cluster_v3_UpstreamConnectionOptions_mutable_tcp_keepalive(envoy_config_cluster_v3_UpstreamConnectionOptions* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TcpKeepalive* sub = (struct envoy_config_core_v3_TcpKeepalive*)envoy_config_cluster_v3_UpstreamConnectionOptions_tcp_keepalive(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TcpKeepalive*)_upb_Message_New(&envoy_config_core_v3_TcpKeepalive_msginit, arena);
@@ -2353,6 +2996,9 @@ UPB_INLINE struct envoy_config_core_v3_TcpKeepalive* envoy_config_cluster_v3_Ups
}
return sub;
}
+UPB_INLINE void envoy_config_cluster_v3_UpstreamConnectionOptions_set_set_local_interface_name_on_upstream_connections(envoy_config_cluster_v3_UpstreamConnectionOptions *msg, bool value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
+}
/* envoy.config.cluster.v3.TrackClusterStats */
@@ -2379,15 +3025,25 @@ UPB_INLINE envoy_config_cluster_v3_TrackClusterStats* envoy_config_cluster_v3_Tr
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_TrackClusterStats_serialize(const envoy_config_cluster_v3_TrackClusterStats* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_TrackClusterStats_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_TrackClusterStats_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_TrackClusterStats_serialize_ex(const envoy_config_cluster_v3_TrackClusterStats* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_TrackClusterStats_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_TrackClusterStats_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_cluster_v3_TrackClusterStats_clear_timeout_budgets(const envoy_config_cluster_v3_TrackClusterStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool envoy_config_cluster_v3_TrackClusterStats_timeout_budgets(const envoy_config_cluster_v3_TrackClusterStats* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
+UPB_INLINE void envoy_config_cluster_v3_TrackClusterStats_clear_request_response_sizes(const envoy_config_cluster_v3_TrackClusterStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_config_cluster_v3_TrackClusterStats_request_response_sizes(const envoy_config_cluster_v3_TrackClusterStats* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c
index 30186ab77a..e357139259 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c
@@ -21,14 +21,14 @@ static const upb_MiniTable_Sub envoy_config_cluster_v3_Filter_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_cluster_v3_Filter__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_Filter_msginit = {
&envoy_config_cluster_v3_Filter_submsgs[0],
&envoy_config_cluster_v3_Filter__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h
index 31611a4edb..6a35d89ff8 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h
@@ -53,16 +53,28 @@ UPB_INLINE envoy_config_cluster_v3_Filter* envoy_config_cluster_v3_Filter_parse_
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_Filter_serialize(const envoy_config_cluster_v3_Filter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Filter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Filter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_Filter_serialize_ex(const envoy_config_cluster_v3_Filter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_Filter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_Filter_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_cluster_v3_Filter_clear_name(const envoy_config_cluster_v3_Filter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_cluster_v3_Filter_name(const envoy_config_cluster_v3_Filter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_cluster_v3_Filter_has_typed_config(const envoy_config_cluster_v3_Filter *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_cluster_v3_Filter_has_typed_config(const envoy_config_cluster_v3_Filter* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_Filter_clear_typed_config(const envoy_config_cluster_v3_Filter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Any* envoy_config_cluster_v3_Filter_typed_config(const envoy_config_cluster_v3_Filter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Any*);
}
@@ -74,7 +86,7 @@ UPB_INLINE void envoy_config_cluster_v3_Filter_set_typed_config(envoy_config_clu
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_cluster_v3_Filter_mutable_typed_config(envoy_config_cluster_v3_Filter *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_cluster_v3_Filter_mutable_typed_config(envoy_config_cluster_v3_Filter* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_cluster_v3_Filter_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c
index 37959e023b..a0b6d39347 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c
@@ -17,39 +17,59 @@
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_config_cluster_v3_OutlierDetection_submsgs[2] = {
+static const upb_MiniTable_Sub envoy_config_cluster_v3_OutlierDetection_submsgs[21] = {
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &google_protobuf_Duration_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
};
-static const upb_MiniTable_Field envoy_config_cluster_v3_OutlierDetection__fields[21] = {
- {1, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 4, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 40), 5, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(24, 48), 6, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(28, 56), 7, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(32, 64), 8, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(36, 72), 9, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(40, 80), 10, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(44, 88), 11, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(3, 3), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {13, UPB_SIZE(48, 96), 12, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {14, UPB_SIZE(52, 104), 13, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {15, UPB_SIZE(56, 112), 14, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {16, UPB_SIZE(60, 120), 15, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {17, UPB_SIZE(64, 128), 16, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {18, UPB_SIZE(68, 136), 17, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {19, UPB_SIZE(72, 144), 18, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {20, UPB_SIZE(76, 152), 19, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {21, UPB_SIZE(80, 160), 20, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_cluster_v3_OutlierDetection__fields[22] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 40), UPB_SIZE(5, 5), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 48), UPB_SIZE(6, 6), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(28, 56), UPB_SIZE(7, 7), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(32, 64), UPB_SIZE(8, 8), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(36, 72), UPB_SIZE(9, 9), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(40, 80), UPB_SIZE(10, 10), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(44, 88), UPB_SIZE(11, 11), 10, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(3, 3), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(48, 96), UPB_SIZE(12, 12), 11, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(52, 104), UPB_SIZE(13, 13), 12, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(56, 112), UPB_SIZE(14, 14), 13, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {16, UPB_SIZE(60, 120), UPB_SIZE(15, 15), 14, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {17, UPB_SIZE(64, 128), UPB_SIZE(16, 16), 15, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {18, UPB_SIZE(68, 136), UPB_SIZE(17, 17), 16, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {19, UPB_SIZE(72, 144), UPB_SIZE(18, 18), 17, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {20, UPB_SIZE(76, 152), UPB_SIZE(19, 19), 18, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {21, UPB_SIZE(80, 160), UPB_SIZE(20, 20), 19, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {22, UPB_SIZE(84, 168), UPB_SIZE(21, 21), 20, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_cluster_v3_OutlierDetection_msginit = {
&envoy_config_cluster_v3_OutlierDetection_submsgs[0],
&envoy_config_cluster_v3_OutlierDetection__fields[0],
- UPB_SIZE(88, 168), 21, upb_ExtMode_NonExtendable, 21, 255, 0,
+ UPB_SIZE(88, 176), 22, kUpb_ExtMode_NonExtendable, 22, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h
index e0fbcd4481..daab600407 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h
@@ -55,101 +55,217 @@ UPB_INLINE envoy_config_cluster_v3_OutlierDetection* envoy_config_cluster_v3_Out
return ret;
}
UPB_INLINE char* envoy_config_cluster_v3_OutlierDetection_serialize(const envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_OutlierDetection_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_OutlierDetection_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_cluster_v3_OutlierDetection_serialize_ex(const envoy_config_cluster_v3_OutlierDetection* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_cluster_v3_OutlierDetection_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_cluster_v3_OutlierDetection_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_consecutive_5xx(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_consecutive_5xx(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_consecutive_5xx(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_consecutive_5xx(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_interval(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_interval(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_interval(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_cluster_v3_OutlierDetection_interval(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_base_ejection_time(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_base_ejection_time(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_base_ejection_time(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_cluster_v3_OutlierDetection_base_ejection_time(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_max_ejection_percent(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_max_ejection_percent(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_max_ejection_percent(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_max_ejection_percent(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_enforcing_consecutive_5xx(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_enforcing_consecutive_5xx(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_enforcing_consecutive_5xx(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_enforcing_consecutive_5xx(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_enforcing_success_rate(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_enforcing_success_rate(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_enforcing_success_rate(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_enforcing_success_rate(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_success_rate_minimum_hosts(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 7); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_success_rate_minimum_hosts(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_success_rate_minimum_hosts(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_success_rate_minimum_hosts(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_success_rate_request_volume(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 8); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_success_rate_request_volume(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 8);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_success_rate_request_volume(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_success_rate_request_volume(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_success_rate_stdev_factor(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 9); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_success_rate_stdev_factor(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 9);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_success_rate_stdev_factor(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_success_rate_stdev_factor(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_consecutive_gateway_failure(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 10); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_consecutive_gateway_failure(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 10);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_consecutive_gateway_failure(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 80), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_consecutive_gateway_failure(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(40, 80), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_enforcing_consecutive_gateway_failure(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 11); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_enforcing_consecutive_gateway_failure(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 11);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_enforcing_consecutive_gateway_failure(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 88), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_enforcing_consecutive_gateway_failure(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(44, 88), const struct google_protobuf_UInt32Value*);
}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_split_external_local_origin_errors(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = 0;
+}
UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_split_external_local_origin_errors(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_consecutive_local_origin_failure(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 12); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_consecutive_local_origin_failure(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 12);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_consecutive_local_origin_failure(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 96), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_consecutive_local_origin_failure(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(48, 96), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_enforcing_consecutive_local_origin_failure(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 13); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_enforcing_consecutive_local_origin_failure(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 13);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_enforcing_consecutive_local_origin_failure(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 104), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_enforcing_consecutive_local_origin_failure(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(52, 104), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_enforcing_local_origin_success_rate(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 14); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_enforcing_local_origin_success_rate(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 14);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_enforcing_local_origin_success_rate(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 112), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_enforcing_local_origin_success_rate(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(56, 112), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_failure_percentage_threshold(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 15); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_failure_percentage_threshold(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 15);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_failure_percentage_threshold(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 120), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_failure_percentage_threshold(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(60, 120), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_enforcing_failure_percentage(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 16); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_enforcing_failure_percentage(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 16);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_enforcing_failure_percentage(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 128), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_enforcing_failure_percentage(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(64, 128), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_enforcing_failure_percentage_local_origin(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 17); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_enforcing_failure_percentage_local_origin(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 17);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_enforcing_failure_percentage_local_origin(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 136), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_enforcing_failure_percentage_local_origin(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(68, 136), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_failure_percentage_minimum_hosts(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 18); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_failure_percentage_minimum_hosts(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 18);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_failure_percentage_minimum_hosts(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 144), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_failure_percentage_minimum_hosts(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(72, 144), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_failure_percentage_request_volume(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 19); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_failure_percentage_request_volume(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 19);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_failure_percentage_request_volume(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 152), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_failure_percentage_request_volume(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(76, 152), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_max_ejection_time(const envoy_config_cluster_v3_OutlierDetection *msg) { return _upb_hasbit(msg, 20); }
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_max_ejection_time(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 20);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_max_ejection_time(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 160), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_cluster_v3_OutlierDetection_max_ejection_time(const envoy_config_cluster_v3_OutlierDetection* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(80, 160), const struct google_protobuf_Duration*);
}
+UPB_INLINE bool envoy_config_cluster_v3_OutlierDetection_has_max_ejection_time_jitter(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return _upb_hasbit(msg, 21);
+}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_clear_max_ejection_time_jitter(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(84, 168), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Duration* envoy_config_cluster_v3_OutlierDetection_max_ejection_time_jitter(const envoy_config_cluster_v3_OutlierDetection* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(84, 168), const struct google_protobuf_Duration*);
+}
UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_consecutive_5xx(envoy_config_cluster_v3_OutlierDetection *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_consecutive_5xx(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_consecutive_5xx(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_consecutive_5xx(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -162,7 +278,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_interval(envoy_conf
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_OutlierDetection_mutable_interval(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_OutlierDetection_mutable_interval(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_cluster_v3_OutlierDetection_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -175,7 +291,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_base_ejection_time(
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_OutlierDetection_mutable_base_ejection_time(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_OutlierDetection_mutable_base_ejection_time(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_cluster_v3_OutlierDetection_base_ejection_time(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -188,7 +304,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_max_ejection_percen
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_max_ejection_percent(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_max_ejection_percent(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_max_ejection_percent(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -201,7 +317,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_enforcing_consecuti
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_enforcing_consecutive_5xx(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_enforcing_consecutive_5xx(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_enforcing_consecutive_5xx(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -214,7 +330,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_enforcing_success_r
_upb_sethas(msg, 6);
*UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_enforcing_success_rate(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_enforcing_success_rate(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_enforcing_success_rate(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -227,7 +343,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_success_rate_minimu
_upb_sethas(msg, 7);
*UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_success_rate_minimum_hosts(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_success_rate_minimum_hosts(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_success_rate_minimum_hosts(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -240,7 +356,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_success_rate_reques
_upb_sethas(msg, 8);
*UPB_PTR_AT(msg, UPB_SIZE(32, 64), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_success_rate_request_volume(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_success_rate_request_volume(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_success_rate_request_volume(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -253,7 +369,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_success_rate_stdev_
_upb_sethas(msg, 9);
*UPB_PTR_AT(msg, UPB_SIZE(36, 72), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_success_rate_stdev_factor(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_success_rate_stdev_factor(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_success_rate_stdev_factor(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -266,7 +382,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_consecutive_gateway
_upb_sethas(msg, 10);
*UPB_PTR_AT(msg, UPB_SIZE(40, 80), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_consecutive_gateway_failure(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_consecutive_gateway_failure(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_consecutive_gateway_failure(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -279,7 +395,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_enforcing_consecuti
_upb_sethas(msg, 11);
*UPB_PTR_AT(msg, UPB_SIZE(44, 88), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_enforcing_consecutive_gateway_failure(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_enforcing_consecutive_gateway_failure(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_enforcing_consecutive_gateway_failure(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -295,7 +411,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_consecutive_local_o
_upb_sethas(msg, 12);
*UPB_PTR_AT(msg, UPB_SIZE(48, 96), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_consecutive_local_origin_failure(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_consecutive_local_origin_failure(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_consecutive_local_origin_failure(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -308,7 +424,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_enforcing_consecuti
_upb_sethas(msg, 13);
*UPB_PTR_AT(msg, UPB_SIZE(52, 104), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_enforcing_consecutive_local_origin_failure(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_enforcing_consecutive_local_origin_failure(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_enforcing_consecutive_local_origin_failure(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -321,7 +437,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_enforcing_local_ori
_upb_sethas(msg, 14);
*UPB_PTR_AT(msg, UPB_SIZE(56, 112), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_enforcing_local_origin_success_rate(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_enforcing_local_origin_success_rate(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_enforcing_local_origin_success_rate(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -334,7 +450,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_failure_percentage_
_upb_sethas(msg, 15);
*UPB_PTR_AT(msg, UPB_SIZE(60, 120), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_failure_percentage_threshold(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_failure_percentage_threshold(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_failure_percentage_threshold(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -347,7 +463,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_enforcing_failure_p
_upb_sethas(msg, 16);
*UPB_PTR_AT(msg, UPB_SIZE(64, 128), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_enforcing_failure_percentage(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_enforcing_failure_percentage(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_enforcing_failure_percentage(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -360,7 +476,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_enforcing_failure_p
_upb_sethas(msg, 17);
*UPB_PTR_AT(msg, UPB_SIZE(68, 136), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_enforcing_failure_percentage_local_origin(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_enforcing_failure_percentage_local_origin(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_enforcing_failure_percentage_local_origin(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -373,7 +489,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_failure_percentage_
_upb_sethas(msg, 18);
*UPB_PTR_AT(msg, UPB_SIZE(72, 144), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_failure_percentage_minimum_hosts(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_failure_percentage_minimum_hosts(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_failure_percentage_minimum_hosts(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -386,7 +502,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_failure_percentage_
_upb_sethas(msg, 19);
*UPB_PTR_AT(msg, UPB_SIZE(76, 152), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_failure_percentage_request_volume(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_cluster_v3_OutlierDetection_mutable_failure_percentage_request_volume(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_cluster_v3_OutlierDetection_failure_percentage_request_volume(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -399,7 +515,7 @@ UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_max_ejection_time(e
_upb_sethas(msg, 20);
*UPB_PTR_AT(msg, UPB_SIZE(80, 160), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_OutlierDetection_mutable_max_ejection_time(envoy_config_cluster_v3_OutlierDetection *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_OutlierDetection_mutable_max_ejection_time(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_cluster_v3_OutlierDetection_max_ejection_time(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -408,6 +524,19 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_OutlierDetec
}
return sub;
}
+UPB_INLINE void envoy_config_cluster_v3_OutlierDetection_set_max_ejection_time_jitter(envoy_config_cluster_v3_OutlierDetection *msg, struct google_protobuf_Duration* value) {
+ _upb_sethas(msg, 21);
+ *UPB_PTR_AT(msg, UPB_SIZE(84, 168), struct google_protobuf_Duration*) = value;
+}
+UPB_INLINE struct google_protobuf_Duration* envoy_config_cluster_v3_OutlierDetection_mutable_max_ejection_time_jitter(envoy_config_cluster_v3_OutlierDetection* msg, upb_Arena* arena) {
+ struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_cluster_v3_OutlierDetection_max_ejection_time_jitter(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_cluster_v3_OutlierDetection_set_max_ejection_time_jitter(msg, sub);
+ }
+ return sub;
+}
extern const upb_MiniTable_File envoy_config_cluster_v3_outlier_detection_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c
index 258889ae87..5549e12502 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c
@@ -25,15 +25,15 @@ static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_submsgs[3]
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_Matcher__fields[3] = {
- {1, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_Matcher_msginit = {
&envoy_config_common_matcher_v3_Matcher_submsgs[0],
&envoy_config_common_matcher_v3_Matcher__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_OnMatch_submsgs[2] = {
@@ -42,14 +42,14 @@ static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_OnMatch_su
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_Matcher_OnMatch__fields[2] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_Matcher_OnMatch_msginit = {
&envoy_config_common_matcher_v3_Matcher_OnMatch_submsgs[0],
&envoy_config_common_matcher_v3_Matcher_OnMatch__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherList_submsgs[1] = {
@@ -57,49 +57,51 @@ static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherLis
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_Matcher_MatcherList__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_Matcher_MatcherList_msginit = {
&envoy_config_common_matcher_v3_Matcher_MatcherList_submsgs[0],
&envoy_config_common_matcher_v3_Matcher_MatcherList__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_submsgs[3] = {
- {.submsg = &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_msginit},
- {.submsg = &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit},
+static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_submsgs[4] = {
{.submsg = &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_msginit},
+ {.submsg = &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit},
+ {.submsg = &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit},
+ {.submsg = &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_msginit},
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate__fields[4] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_msginit = {
&envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_submsgs[0],
&envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate__fields[0],
- UPB_SIZE(8, 16), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(8, 16), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_submsgs[2] = {
+static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_submsgs[3] = {
{.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
{.submsg = &envoy_type_matcher_v3_StringMatcher_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate__fields[3] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_msginit = {
&envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_submsgs[0],
&envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_submsgs[1] = {
@@ -107,13 +109,13 @@ static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherLis
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit = {
&envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_submsgs[0],
&envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_submsgs[2] = {
@@ -122,32 +124,34 @@ static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherLis
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_msginit = {
&envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_submsgs[0],
&envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherTree_submsgs[2] = {
+static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherTree_submsgs[4] = {
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
+ {.submsg = &envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_msginit},
{.submsg = &envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_msginit},
{.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_Matcher_MatcherTree__fields[4] = {
- {1, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_Matcher_MatcherTree_msginit = {
&envoy_config_common_matcher_v3_Matcher_MatcherTree_submsgs[0],
&envoy_config_common_matcher_v3_Matcher_MatcherTree__fields[0],
- UPB_SIZE(16, 32), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(16, 24), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_submsgs[1] = {
@@ -155,13 +159,13 @@ static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherTre
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_msginit = {
&envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_submsgs[0],
&envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_submsgs[1] = {
@@ -169,40 +173,45 @@ static const upb_MiniTable_Sub envoy_config_common_matcher_v3_Matcher_MatcherTre
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_msginit = {
&envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_submsgs[0],
&envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_common_matcher_v3_MatchPredicate_submsgs[4] = {
- {.submsg = &envoy_config_common_matcher_v3_HttpGenericBodyMatch_msginit},
- {.submsg = &envoy_config_common_matcher_v3_HttpHeadersMatch_msginit},
- {.submsg = &envoy_config_common_matcher_v3_MatchPredicate_msginit},
+static const upb_MiniTable_Sub envoy_config_common_matcher_v3_MatchPredicate_submsgs[9] = {
+ {.submsg = &envoy_config_common_matcher_v3_MatchPredicate_MatchSet_msginit},
{.submsg = &envoy_config_common_matcher_v3_MatchPredicate_MatchSet_msginit},
+ {.submsg = &envoy_config_common_matcher_v3_MatchPredicate_msginit},
+ {.submsg = &envoy_config_common_matcher_v3_HttpHeadersMatch_msginit},
+ {.submsg = &envoy_config_common_matcher_v3_HttpHeadersMatch_msginit},
+ {.submsg = &envoy_config_common_matcher_v3_HttpHeadersMatch_msginit},
+ {.submsg = &envoy_config_common_matcher_v3_HttpHeadersMatch_msginit},
+ {.submsg = &envoy_config_common_matcher_v3_HttpGenericBodyMatch_msginit},
+ {.submsg = &envoy_config_common_matcher_v3_HttpGenericBodyMatch_msginit},
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_MatchPredicate__fields[10] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_MatchPredicate_msginit = {
&envoy_config_common_matcher_v3_MatchPredicate_submsgs[0],
&envoy_config_common_matcher_v3_MatchPredicate__fields[0],
- UPB_SIZE(8, 16), 10, upb_ExtMode_NonExtendable, 10, 255, 0,
+ UPB_SIZE(8, 16), 10, kUpb_ExtMode_NonExtendable, 10, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_common_matcher_v3_MatchPredicate_MatchSet_submsgs[1] = {
@@ -210,13 +219,13 @@ static const upb_MiniTable_Sub envoy_config_common_matcher_v3_MatchPredicate_Mat
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_MatchPredicate_MatchSet__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_MatchPredicate_MatchSet_msginit = {
&envoy_config_common_matcher_v3_MatchPredicate_MatchSet_submsgs[0],
&envoy_config_common_matcher_v3_MatchPredicate_MatchSet__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_common_matcher_v3_HttpHeadersMatch_submsgs[1] = {
@@ -224,13 +233,13 @@ static const upb_MiniTable_Sub envoy_config_common_matcher_v3_HttpHeadersMatch_s
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_HttpHeadersMatch__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_HttpHeadersMatch_msginit = {
&envoy_config_common_matcher_v3_HttpHeadersMatch_submsgs[0],
&envoy_config_common_matcher_v3_HttpHeadersMatch__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_common_matcher_v3_HttpGenericBodyMatch_submsgs[1] = {
@@ -238,25 +247,25 @@ static const upb_MiniTable_Sub envoy_config_common_matcher_v3_HttpGenericBodyMat
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_HttpGenericBodyMatch__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_HttpGenericBodyMatch_msginit = {
&envoy_config_common_matcher_v3_HttpGenericBodyMatch_submsgs[0],
&envoy_config_common_matcher_v3_HttpGenericBodyMatch__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch__fields[2] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_msginit = {
NULL,
&envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[15] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h
index d66977fd85..175d7c37b8 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h
@@ -99,32 +99,56 @@ UPB_INLINE envoy_config_common_matcher_v3_Matcher* envoy_config_common_matcher_v
return ret;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_serialize(const envoy_config_common_matcher_v3_Matcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_serialize_ex(const envoy_config_common_matcher_v3_Matcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_common_matcher_v3_Matcher_matcher_type_matcher_list = 1,
envoy_config_common_matcher_v3_Matcher_matcher_type_matcher_tree = 2,
envoy_config_common_matcher_v3_Matcher_matcher_type_NOT_SET = 0
} envoy_config_common_matcher_v3_Matcher_matcher_type_oneofcases;
-UPB_INLINE envoy_config_common_matcher_v3_Matcher_matcher_type_oneofcases envoy_config_common_matcher_v3_Matcher_matcher_type_case(const envoy_config_common_matcher_v3_Matcher* msg) { return (envoy_config_common_matcher_v3_Matcher_matcher_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_has_matcher_list(const envoy_config_common_matcher_v3_Matcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 1; }
-UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList* envoy_config_common_matcher_v3_Matcher_matcher_list(const envoy_config_common_matcher_v3_Matcher *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherList*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 1, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_has_matcher_tree(const envoy_config_common_matcher_v3_Matcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherTree* envoy_config_common_matcher_v3_Matcher_matcher_tree(const envoy_config_common_matcher_v3_Matcher *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherTree*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 2, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_has_on_no_match(const envoy_config_common_matcher_v3_Matcher *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_config_common_matcher_v3_Matcher_matcher_type_oneofcases envoy_config_common_matcher_v3_Matcher_matcher_type_case(const envoy_config_common_matcher_v3_Matcher* msg) {
+ return (envoy_config_common_matcher_v3_Matcher_matcher_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_has_matcher_list(const envoy_config_common_matcher_v3_Matcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 1;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_clear_matcher_list(const envoy_config_common_matcher_v3_Matcher* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_common_matcher_v3_Matcher_matcher_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList* envoy_config_common_matcher_v3_Matcher_matcher_list(const envoy_config_common_matcher_v3_Matcher* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherList*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 1, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_has_matcher_tree(const envoy_config_common_matcher_v3_Matcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_clear_matcher_tree(const envoy_config_common_matcher_v3_Matcher* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherTree*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_common_matcher_v3_Matcher_matcher_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherTree* envoy_config_common_matcher_v3_Matcher_matcher_tree(const envoy_config_common_matcher_v3_Matcher* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherTree*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_has_on_no_match(const envoy_config_common_matcher_v3_Matcher* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_clear_on_no_match(const envoy_config_common_matcher_v3_Matcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_common_matcher_v3_Matcher_OnMatch* envoy_config_common_matcher_v3_Matcher_on_no_match(const envoy_config_common_matcher_v3_Matcher* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_common_matcher_v3_Matcher_OnMatch*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const envoy_config_common_matcher_v3_Matcher_OnMatch*);
}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_set_matcher_list(envoy_config_common_matcher_v3_Matcher *msg, envoy_config_common_matcher_v3_Matcher_MatcherList* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 1);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList* envoy_config_common_matcher_v3_Matcher_mutable_matcher_list(envoy_config_common_matcher_v3_Matcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList* envoy_config_common_matcher_v3_Matcher_mutable_matcher_list(envoy_config_common_matcher_v3_Matcher* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_Matcher_MatcherList* sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherList*)envoy_config_common_matcher_v3_Matcher_matcher_list(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherList*)_upb_Message_New(&envoy_config_common_matcher_v3_Matcher_MatcherList_msginit, arena);
@@ -134,9 +158,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList* envoy_conf
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_set_matcher_tree(envoy_config_common_matcher_v3_Matcher *msg, envoy_config_common_matcher_v3_Matcher_MatcherTree* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherTree*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherTree*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherTree* envoy_config_common_matcher_v3_Matcher_mutable_matcher_tree(envoy_config_common_matcher_v3_Matcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherTree* envoy_config_common_matcher_v3_Matcher_mutable_matcher_tree(envoy_config_common_matcher_v3_Matcher* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_Matcher_MatcherTree* sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherTree*)envoy_config_common_matcher_v3_Matcher_matcher_tree(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherTree*)_upb_Message_New(&envoy_config_common_matcher_v3_Matcher_MatcherTree_msginit, arena);
@@ -147,9 +171,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherTree* envoy_conf
}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_set_on_no_match(envoy_config_common_matcher_v3_Matcher *msg, envoy_config_common_matcher_v3_Matcher_OnMatch* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_common_matcher_v3_Matcher_OnMatch*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), envoy_config_common_matcher_v3_Matcher_OnMatch*) = value;
}
-UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_OnMatch* envoy_config_common_matcher_v3_Matcher_mutable_on_no_match(envoy_config_common_matcher_v3_Matcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_OnMatch* envoy_config_common_matcher_v3_Matcher_mutable_on_no_match(envoy_config_common_matcher_v3_Matcher* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_Matcher_OnMatch* sub = (struct envoy_config_common_matcher_v3_Matcher_OnMatch*)envoy_config_common_matcher_v3_Matcher_on_no_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_Matcher_OnMatch*)_upb_Message_New(&envoy_config_common_matcher_v3_Matcher_OnMatch_msginit, arena);
@@ -184,28 +208,47 @@ UPB_INLINE envoy_config_common_matcher_v3_Matcher_OnMatch* envoy_config_common_m
return ret;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_OnMatch_serialize(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_OnMatch_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_OnMatch_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_OnMatch_serialize_ex(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_OnMatch_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_OnMatch_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_matcher = 1,
envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_action = 2,
envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_NOT_SET = 0
} envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_oneofcases;
-UPB_INLINE envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_oneofcases envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_case(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg) { return (envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_OnMatch_has_matcher(const envoy_config_common_matcher_v3_Matcher_OnMatch *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_common_matcher_v3_Matcher* envoy_config_common_matcher_v3_Matcher_OnMatch_matcher(const envoy_config_common_matcher_v3_Matcher_OnMatch *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_OnMatch_has_action(const envoy_config_common_matcher_v3_Matcher_OnMatch *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_OnMatch_action(const envoy_config_common_matcher_v3_Matcher_OnMatch *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
+UPB_INLINE envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_oneofcases envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_case(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg) {
+ return (envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_OnMatch_has_matcher(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_OnMatch_clear_matcher(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_Matcher* envoy_config_common_matcher_v3_Matcher_OnMatch_matcher(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_OnMatch_has_action(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_OnMatch_clear_action(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_Matcher_OnMatch_on_match_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_OnMatch_action(const envoy_config_common_matcher_v3_Matcher_OnMatch* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_OnMatch_set_matcher(envoy_config_common_matcher_v3_Matcher_OnMatch *msg, envoy_config_common_matcher_v3_Matcher* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_Matcher* envoy_config_common_matcher_v3_Matcher_OnMatch_mutable_matcher(envoy_config_common_matcher_v3_Matcher_OnMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_Matcher* envoy_config_common_matcher_v3_Matcher_OnMatch_mutable_matcher(envoy_config_common_matcher_v3_Matcher_OnMatch* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_Matcher* sub = (struct envoy_config_common_matcher_v3_Matcher*)envoy_config_common_matcher_v3_Matcher_OnMatch_matcher(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_Matcher*)_upb_Message_New(&envoy_config_common_matcher_v3_Matcher_msginit, arena);
@@ -215,9 +258,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_Matcher* envoy_config_common_ma
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_OnMatch_set_action(envoy_config_common_matcher_v3_Matcher_OnMatch *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_OnMatch_mutable_action(envoy_config_common_matcher_v3_Matcher_OnMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_OnMatch_mutable_action(envoy_config_common_matcher_v3_Matcher_OnMatch* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_common_matcher_v3_Matcher_OnMatch_action(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -252,25 +295,35 @@ UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList* envoy_config_comm
return ret;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_MatcherList_serialize(const envoy_config_common_matcher_v3_Matcher_MatcherList* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_MatcherList_serialize_ex(const envoy_config_common_matcher_v3_Matcher_MatcherList* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_has_matchers(const envoy_config_common_matcher_v3_Matcher_MatcherList* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_clear_matchers(const envoy_config_common_matcher_v3_Matcher_MatcherList* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* const* envoy_config_common_matcher_v3_Matcher_MatcherList_matchers(const envoy_config_common_matcher_v3_Matcher_MatcherList* msg, size_t* len) {
+ return (const envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_has_matchers(const envoy_config_common_matcher_v3_Matcher_MatcherList *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* const* envoy_config_common_matcher_v3_Matcher_MatcherList_matchers(const envoy_config_common_matcher_v3_Matcher_MatcherList *msg, size_t *len) { return (const envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher** envoy_config_common_matcher_v3_Matcher_MatcherList_mutable_matchers(envoy_config_common_matcher_v3_Matcher_MatcherList *msg, size_t *len) {
+UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher** envoy_config_common_matcher_v3_Matcher_MatcherList_mutable_matchers(envoy_config_common_matcher_v3_Matcher_MatcherList* msg, size_t* len) {
return (envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher** envoy_config_common_matcher_v3_Matcher_MatcherList_resize_matchers(envoy_config_common_matcher_v3_Matcher_MatcherList *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher** envoy_config_common_matcher_v3_Matcher_MatcherList_resize_matchers(envoy_config_common_matcher_v3_Matcher_MatcherList* msg, size_t len, upb_Arena* arena) {
return (envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* envoy_config_common_matcher_v3_Matcher_MatcherList_add_matchers(envoy_config_common_matcher_v3_Matcher_MatcherList *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* envoy_config_common_matcher_v3_Matcher_MatcherList_add_matchers(envoy_config_common_matcher_v3_Matcher_MatcherList* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher*)_upb_Message_New(&envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -300,11 +353,15 @@ UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* envoy_c
return ret;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_serialize(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_serialize_ex(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_match_type_single_predicate = 1,
@@ -313,21 +370,50 @@ typedef enum {
envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_match_type_not_matcher = 4,
envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_match_type_NOT_SET = 0
} envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_match_type_oneofcases;
-UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_match_type_oneofcases envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_match_type_case(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg) { return (envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_match_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_has_single_predicate(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_single_predicate(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_has_or_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_or_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_has_and_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_and_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_has_not_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 4; }
-UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_not_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 4, NULL); }
+UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_match_type_oneofcases envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_match_type_case(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return (envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_match_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_has_single_predicate(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_clear_single_predicate(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_match_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_single_predicate(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_has_or_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_clear_or_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_match_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_or_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_has_and_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_clear_and_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_match_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_and_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_has_not_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_clear_not_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_match_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_not_matcher(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, NULL);
+}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_set_single_predicate(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_mutable_single_predicate(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_mutable_single_predicate(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate*)envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_single_predicate(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate*)_upb_Message_New(&envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_msginit, arena);
@@ -337,9 +423,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_S
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_set_or_matcher(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_mutable_or_matcher(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_mutable_or_matcher(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*)envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_or_matcher(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*)_upb_Message_New(&envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit, arena);
@@ -349,9 +435,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_P
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_set_and_matcher(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_mutable_and_matcher(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_mutable_and_matcher(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*)envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_and_matcher(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*)_upb_Message_New(&envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit, arena);
@@ -361,9 +447,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_P
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_set_not_matcher(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 4);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_mutable_not_matcher(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_mutable_not_matcher(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate*)envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_not_matcher(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate*)_upb_Message_New(&envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_msginit, arena);
@@ -398,33 +484,57 @@ UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePr
return ret;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_serialize(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_serialize_ex(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_value_match = 2,
envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_custom_match = 3,
envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_NOT_SET = 0
} envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_oneofcases;
-UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_oneofcases envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_case(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) { return (envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_has_input(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_oneofcases envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_case(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ return (envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_has_input(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_clear_input(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_input(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_TypedExtensionConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct envoy_config_core_v3_TypedExtensionConfig*);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_has_value_match(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_clear_value_match(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_value_match(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_has_custom_match(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_clear_custom_match(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_custom_match(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 3, NULL);
}
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_has_value_match(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_value_match(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 2, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_has_custom_match(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_custom_match(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_set_input(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_mutable_input(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_mutable_input(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_input(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -434,9 +544,9 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_set_value_match(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg, struct envoy_type_matcher_v3_StringMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_mutable_value_match(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_mutable_value_match(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_value_match(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StringMatcher_msginit, arena);
@@ -446,9 +556,9 @@ UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_common_match
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_set_custom_match(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_mutable_custom_match(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_mutable_custom_match(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_custom_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -483,25 +593,35 @@ UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_Predicat
return ret;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_serialize(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_serialize_ex(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_has_predicate(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_clear_predicate(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* const* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_predicate(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg, size_t* len) {
+ return (const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_has_predicate(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* const* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_predicate(const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList *msg, size_t *len) { return (const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate** envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_mutable_predicate(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList *msg, size_t *len) {
+UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate** envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_mutable_predicate(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg, size_t* len) {
return (envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate** envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_resize_predicate(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate** envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_resize_predicate(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg, size_t len, upb_Arena* arena) {
return (envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_add_predicate(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_add_predicate(envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate*)_upb_Message_New(&envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -531,17 +651,31 @@ UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* envo
return ret;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_serialize(const envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_serialize_ex(const envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_has_predicate(const envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_clear_predicate(const envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_has_predicate(const envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_predicate(const envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate*);
}
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_has_on_match(const envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_has_on_match(const envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_clear_on_match(const envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_common_matcher_v3_Matcher_OnMatch* envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_on_match(const envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const envoy_config_common_matcher_v3_Matcher_OnMatch*);
}
@@ -550,7 +684,7 @@ UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate*) = value;
}
-UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_mutable_predicate(envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_mutable_predicate(envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate* sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate*)envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_predicate(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate*)_upb_Message_New(&envoy_config_common_matcher_v3_Matcher_MatcherList_Predicate_msginit, arena);
@@ -563,7 +697,7 @@ UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), envoy_config_common_matcher_v3_Matcher_OnMatch*) = value;
}
-UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_OnMatch* envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_mutable_on_match(envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_OnMatch* envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_mutable_on_match(envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_Matcher_OnMatch* sub = (struct envoy_config_common_matcher_v3_Matcher_OnMatch*)envoy_config_common_matcher_v3_Matcher_MatcherList_FieldMatcher_on_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_Matcher_OnMatch*)_upb_Message_New(&envoy_config_common_matcher_v3_Matcher_OnMatch_msginit, arena);
@@ -598,11 +732,15 @@ UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherTree* envoy_config_comm
return ret;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_MatcherTree_serialize(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherTree_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherTree_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_MatcherTree_serialize_ex(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherTree_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherTree_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_common_matcher_v3_Matcher_MatcherTree_tree_type_exact_match_map = 2,
@@ -610,24 +748,51 @@ typedef enum {
envoy_config_common_matcher_v3_Matcher_MatcherTree_tree_type_custom_match = 4,
envoy_config_common_matcher_v3_Matcher_MatcherTree_tree_type_NOT_SET = 0
} envoy_config_common_matcher_v3_Matcher_MatcherTree_tree_type_oneofcases;
-UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherTree_tree_type_oneofcases envoy_config_common_matcher_v3_Matcher_MatcherTree_tree_type_case(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg) { return (envoy_config_common_matcher_v3_Matcher_MatcherTree_tree_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_has_input(const envoy_config_common_matcher_v3_Matcher_MatcherTree *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherTree_tree_type_oneofcases envoy_config_common_matcher_v3_Matcher_MatcherTree_tree_type_case(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg) {
+ return (envoy_config_common_matcher_v3_Matcher_MatcherTree_tree_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_has_input(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherTree_clear_input(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_MatcherTree_input(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_TypedExtensionConfig*);
-}
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_has_exact_match_map(const envoy_config_common_matcher_v3_Matcher_MatcherTree *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* envoy_config_common_matcher_v3_Matcher_MatcherTree_exact_match_map(const envoy_config_common_matcher_v3_Matcher_MatcherTree *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 2, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_has_prefix_match_map(const envoy_config_common_matcher_v3_Matcher_MatcherTree *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* envoy_config_common_matcher_v3_Matcher_MatcherTree_prefix_match_map(const envoy_config_common_matcher_v3_Matcher_MatcherTree *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_has_custom_match(const envoy_config_common_matcher_v3_Matcher_MatcherTree *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 4; }
-UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_MatcherTree_custom_match(const envoy_config_common_matcher_v3_Matcher_MatcherTree *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 4, NULL); }
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct envoy_config_core_v3_TypedExtensionConfig*);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_has_exact_match_map(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherTree_clear_exact_match_map(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_common_matcher_v3_Matcher_MatcherTree_tree_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* envoy_config_common_matcher_v3_Matcher_MatcherTree_exact_match_map(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_has_prefix_match_map(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherTree_clear_prefix_match_map(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_common_matcher_v3_Matcher_MatcherTree_tree_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* envoy_config_common_matcher_v3_Matcher_MatcherTree_prefix_match_map(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 3, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_has_custom_match(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 4;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherTree_clear_custom_match(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_common_matcher_v3_Matcher_MatcherTree_tree_type_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_MatcherTree_custom_match(const envoy_config_common_matcher_v3_Matcher_MatcherTree* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 4, NULL);
+}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherTree_set_input(envoy_config_common_matcher_v3_Matcher_MatcherTree *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_MatcherTree_mutable_input(envoy_config_common_matcher_v3_Matcher_MatcherTree *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_MatcherTree_mutable_input(envoy_config_common_matcher_v3_Matcher_MatcherTree* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_common_matcher_v3_Matcher_MatcherTree_input(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -637,9 +802,9 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherTree_set_exact_match_map(envoy_config_common_matcher_v3_Matcher_MatcherTree *msg, envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* envoy_config_common_matcher_v3_Matcher_MatcherTree_mutable_exact_match_map(envoy_config_common_matcher_v3_Matcher_MatcherTree *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* envoy_config_common_matcher_v3_Matcher_MatcherTree_mutable_exact_match_map(envoy_config_common_matcher_v3_Matcher_MatcherTree* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap*)envoy_config_common_matcher_v3_Matcher_MatcherTree_exact_match_map(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap*)_upb_Message_New(&envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_msginit, arena);
@@ -649,9 +814,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* e
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherTree_set_prefix_match_map(envoy_config_common_matcher_v3_Matcher_MatcherTree *msg, envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* envoy_config_common_matcher_v3_Matcher_MatcherTree_mutable_prefix_match_map(envoy_config_common_matcher_v3_Matcher_MatcherTree *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* envoy_config_common_matcher_v3_Matcher_MatcherTree_mutable_prefix_match_map(envoy_config_common_matcher_v3_Matcher_MatcherTree* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap*)envoy_config_common_matcher_v3_Matcher_MatcherTree_prefix_match_map(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap*)_upb_Message_New(&envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_msginit, arena);
@@ -661,9 +826,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* e
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherTree_set_custom_match(envoy_config_common_matcher_v3_Matcher_MatcherTree *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 4);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 4);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_MatcherTree_mutable_custom_match(envoy_config_common_matcher_v3_Matcher_MatcherTree *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_common_matcher_v3_Matcher_MatcherTree_mutable_custom_match(envoy_config_common_matcher_v3_Matcher_MatcherTree* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_common_matcher_v3_Matcher_MatcherTree_custom_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -698,31 +863,54 @@ UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* envoy_co
return ret;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_serialize(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_serialize_ex(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_has_map(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_clear_map(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE size_t envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_map_size(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_map_get(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* msg, upb_StringView key, envoy_config_common_matcher_v3_Matcher_OnMatch** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(0, 0), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry* envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_map_next(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* msg, size_t* iter) {
+ return (const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter);
}
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_has_map(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE size_t envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_map_size(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap *msg) {return _upb_msg_map_size(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_map_get(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap *msg, upb_StringView key, envoy_config_common_matcher_v3_Matcher_OnMatch* *val) { return _upb_msg_map_get(msg, UPB_SIZE(0, 0), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry* envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_map_next(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap *msg, size_t* iter) { return (const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter); }
-UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_map_clear(envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap *msg) { _upb_msg_map_clear(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_map_set(envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap *msg, upb_StringView key, envoy_config_common_matcher_v3_Matcher_OnMatch* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(0, 0), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_map_delete(envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(0, 0), &key, 0); }
-UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry* envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_map_nextmutable(envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap *msg, size_t* iter) { return (envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter); }
+UPB_INLINE void envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_map_clear(envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* msg) { _upb_msg_map_clear(msg, UPB_SIZE(0, 0)); }
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_map_set(envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* msg, upb_StringView key, envoy_config_common_matcher_v3_Matcher_OnMatch* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(0, 0), &key, 0, &val, sizeof(val), a);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_map_delete(envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(0, 0), &key, 0);
+}
+UPB_INLINE envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry* envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_map_nextmutable(envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap* msg, size_t* iter) {
+ return (envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter);
+}
/* envoy.config.common.matcher.v3.Matcher.MatcherTree.MatchMap.MapEntry */
-UPB_INLINE upb_StringView envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_key(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry *msg) {
+UPB_INLINE upb_StringView envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_key(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_has_value(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const envoy_config_common_matcher_v3_Matcher_OnMatch* envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_value(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry *msg) {
+UPB_INLINE bool envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_has_value(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const envoy_config_common_matcher_v3_Matcher_OnMatch* envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_value(const envoy_config_common_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry* msg) {
envoy_config_common_matcher_v3_Matcher_OnMatch* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -757,11 +945,15 @@ UPB_INLINE envoy_config_common_matcher_v3_MatchPredicate* envoy_config_common_ma
return ret;
}
UPB_INLINE char* envoy_config_common_matcher_v3_MatchPredicate_serialize(const envoy_config_common_matcher_v3_MatchPredicate* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_MatchPredicate_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_MatchPredicate_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_common_matcher_v3_MatchPredicate_serialize_ex(const envoy_config_common_matcher_v3_MatchPredicate* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_MatchPredicate_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_MatchPredicate_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_common_matcher_v3_MatchPredicate_rule_or_match = 1,
@@ -776,33 +968,104 @@ typedef enum {
envoy_config_common_matcher_v3_MatchPredicate_rule_http_response_generic_body_match = 10,
envoy_config_common_matcher_v3_MatchPredicate_rule_NOT_SET = 0
} envoy_config_common_matcher_v3_MatchPredicate_rule_oneofcases;
-UPB_INLINE envoy_config_common_matcher_v3_MatchPredicate_rule_oneofcases envoy_config_common_matcher_v3_MatchPredicate_rule_case(const envoy_config_common_matcher_v3_MatchPredicate* msg) { return (envoy_config_common_matcher_v3_MatchPredicate_rule_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_or_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_common_matcher_v3_MatchPredicate_MatchSet* envoy_config_common_matcher_v3_MatchPredicate_or_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_MatchPredicate_MatchSet*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_and_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const envoy_config_common_matcher_v3_MatchPredicate_MatchSet* envoy_config_common_matcher_v3_MatchPredicate_and_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_MatchPredicate_MatchSet*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_not_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const envoy_config_common_matcher_v3_MatchPredicate* envoy_config_common_matcher_v3_MatchPredicate_not_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_MatchPredicate*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_any_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 4; }
-UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_any_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 4, false); }
-UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_http_request_headers_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 5; }
-UPB_INLINE const envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_http_request_headers_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 5, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_http_request_trailers_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 6; }
-UPB_INLINE const envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_http_request_trailers_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 6, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_http_response_headers_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 7; }
-UPB_INLINE const envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_http_response_headers_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 7, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_http_response_trailers_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 8; }
-UPB_INLINE const envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_http_response_trailers_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 8, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_http_request_generic_body_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 9; }
-UPB_INLINE const envoy_config_common_matcher_v3_HttpGenericBodyMatch* envoy_config_common_matcher_v3_MatchPredicate_http_request_generic_body_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_HttpGenericBodyMatch*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 9, NULL); }
-UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_http_response_generic_body_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 10; }
-UPB_INLINE const envoy_config_common_matcher_v3_HttpGenericBodyMatch* envoy_config_common_matcher_v3_MatchPredicate_http_response_generic_body_match(const envoy_config_common_matcher_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_HttpGenericBodyMatch*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 10, NULL); }
+UPB_INLINE envoy_config_common_matcher_v3_MatchPredicate_rule_oneofcases envoy_config_common_matcher_v3_MatchPredicate_rule_case(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return (envoy_config_common_matcher_v3_MatchPredicate_rule_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_or_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_clear_or_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_MatchPredicate_MatchSet*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_MatchPredicate_MatchSet* envoy_config_common_matcher_v3_MatchPredicate_or_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_MatchPredicate_MatchSet*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_and_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_clear_and_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_MatchPredicate_MatchSet*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_MatchPredicate_MatchSet* envoy_config_common_matcher_v3_MatchPredicate_and_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_MatchPredicate_MatchSet*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_not_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_clear_not_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_MatchPredicate*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_MatchPredicate* envoy_config_common_matcher_v3_MatchPredicate_not_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_MatchPredicate*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_any_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_clear_any_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_any_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, false);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_http_request_headers_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_clear_http_request_headers_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_http_request_headers_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 5, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_http_request_trailers_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 6;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_clear_http_request_trailers_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_http_request_trailers_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 6, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_http_response_headers_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 7;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_clear_http_response_headers_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_http_response_headers_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 7, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_http_response_trailers_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 8;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_clear_http_response_trailers_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_http_response_trailers_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 8, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_http_request_generic_body_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 9;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_clear_http_request_generic_body_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpGenericBodyMatch*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_HttpGenericBodyMatch* envoy_config_common_matcher_v3_MatchPredicate_http_request_generic_body_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_HttpGenericBodyMatch*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 9, NULL);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_has_http_response_generic_body_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 10;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_clear_http_response_generic_body_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpGenericBodyMatch*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_common_matcher_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_common_matcher_v3_HttpGenericBodyMatch* envoy_config_common_matcher_v3_MatchPredicate_http_response_generic_body_match(const envoy_config_common_matcher_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_common_matcher_v3_HttpGenericBodyMatch*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 10, NULL);
+}
UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_set_or_match(envoy_config_common_matcher_v3_MatchPredicate *msg, envoy_config_common_matcher_v3_MatchPredicate_MatchSet* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_MatchPredicate_MatchSet*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_MatchPredicate_MatchSet*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_MatchPredicate_MatchSet* envoy_config_common_matcher_v3_MatchPredicate_mutable_or_match(envoy_config_common_matcher_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_MatchPredicate_MatchSet* envoy_config_common_matcher_v3_MatchPredicate_mutable_or_match(envoy_config_common_matcher_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_MatchPredicate_MatchSet* sub = (struct envoy_config_common_matcher_v3_MatchPredicate_MatchSet*)envoy_config_common_matcher_v3_MatchPredicate_or_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_MatchPredicate_MatchSet*)_upb_Message_New(&envoy_config_common_matcher_v3_MatchPredicate_MatchSet_msginit, arena);
@@ -812,9 +1075,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_MatchPredicate_MatchSet* envoy_
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_set_and_match(envoy_config_common_matcher_v3_MatchPredicate *msg, envoy_config_common_matcher_v3_MatchPredicate_MatchSet* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_MatchPredicate_MatchSet*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_MatchPredicate_MatchSet*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_MatchPredicate_MatchSet* envoy_config_common_matcher_v3_MatchPredicate_mutable_and_match(envoy_config_common_matcher_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_MatchPredicate_MatchSet* envoy_config_common_matcher_v3_MatchPredicate_mutable_and_match(envoy_config_common_matcher_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_MatchPredicate_MatchSet* sub = (struct envoy_config_common_matcher_v3_MatchPredicate_MatchSet*)envoy_config_common_matcher_v3_MatchPredicate_and_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_MatchPredicate_MatchSet*)_upb_Message_New(&envoy_config_common_matcher_v3_MatchPredicate_MatchSet_msginit, arena);
@@ -824,9 +1087,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_MatchPredicate_MatchSet* envoy_
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_set_not_match(envoy_config_common_matcher_v3_MatchPredicate *msg, envoy_config_common_matcher_v3_MatchPredicate* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_MatchPredicate*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_MatchPredicate*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_MatchPredicate* envoy_config_common_matcher_v3_MatchPredicate_mutable_not_match(envoy_config_common_matcher_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_MatchPredicate* envoy_config_common_matcher_v3_MatchPredicate_mutable_not_match(envoy_config_common_matcher_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_MatchPredicate* sub = (struct envoy_config_common_matcher_v3_MatchPredicate*)envoy_config_common_matcher_v3_MatchPredicate_not_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_MatchPredicate*)_upb_Message_New(&envoy_config_common_matcher_v3_MatchPredicate_msginit, arena);
@@ -836,12 +1099,12 @@ UPB_INLINE struct envoy_config_common_matcher_v3_MatchPredicate* envoy_config_co
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_set_any_match(envoy_config_common_matcher_v3_MatchPredicate *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 4);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_set_http_request_headers_match(envoy_config_common_matcher_v3_MatchPredicate *msg, envoy_config_common_matcher_v3_HttpHeadersMatch* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 5);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_mutable_http_request_headers_match(envoy_config_common_matcher_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_mutable_http_request_headers_match(envoy_config_common_matcher_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_HttpHeadersMatch* sub = (struct envoy_config_common_matcher_v3_HttpHeadersMatch*)envoy_config_common_matcher_v3_MatchPredicate_http_request_headers_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_HttpHeadersMatch*)_upb_Message_New(&envoy_config_common_matcher_v3_HttpHeadersMatch_msginit, arena);
@@ -851,9 +1114,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_set_http_request_trailers_match(envoy_config_common_matcher_v3_MatchPredicate *msg, envoy_config_common_matcher_v3_HttpHeadersMatch* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 6);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 6);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_mutable_http_request_trailers_match(envoy_config_common_matcher_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_mutable_http_request_trailers_match(envoy_config_common_matcher_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_HttpHeadersMatch* sub = (struct envoy_config_common_matcher_v3_HttpHeadersMatch*)envoy_config_common_matcher_v3_MatchPredicate_http_request_trailers_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_HttpHeadersMatch*)_upb_Message_New(&envoy_config_common_matcher_v3_HttpHeadersMatch_msginit, arena);
@@ -863,9 +1126,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_set_http_response_headers_match(envoy_config_common_matcher_v3_MatchPredicate *msg, envoy_config_common_matcher_v3_HttpHeadersMatch* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 7);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 7);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_mutable_http_response_headers_match(envoy_config_common_matcher_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_mutable_http_response_headers_match(envoy_config_common_matcher_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_HttpHeadersMatch* sub = (struct envoy_config_common_matcher_v3_HttpHeadersMatch*)envoy_config_common_matcher_v3_MatchPredicate_http_response_headers_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_HttpHeadersMatch*)_upb_Message_New(&envoy_config_common_matcher_v3_HttpHeadersMatch_msginit, arena);
@@ -875,9 +1138,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_set_http_response_trailers_match(envoy_config_common_matcher_v3_MatchPredicate *msg, envoy_config_common_matcher_v3_HttpHeadersMatch* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 8);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 8);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_mutable_http_response_trailers_match(envoy_config_common_matcher_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_matcher_v3_MatchPredicate_mutable_http_response_trailers_match(envoy_config_common_matcher_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_HttpHeadersMatch* sub = (struct envoy_config_common_matcher_v3_HttpHeadersMatch*)envoy_config_common_matcher_v3_MatchPredicate_http_response_trailers_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_HttpHeadersMatch*)_upb_Message_New(&envoy_config_common_matcher_v3_HttpHeadersMatch_msginit, arena);
@@ -887,9 +1150,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_set_http_request_generic_body_match(envoy_config_common_matcher_v3_MatchPredicate *msg, envoy_config_common_matcher_v3_HttpGenericBodyMatch* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpGenericBodyMatch*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 9);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpGenericBodyMatch*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 9);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_HttpGenericBodyMatch* envoy_config_common_matcher_v3_MatchPredicate_mutable_http_request_generic_body_match(envoy_config_common_matcher_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_HttpGenericBodyMatch* envoy_config_common_matcher_v3_MatchPredicate_mutable_http_request_generic_body_match(envoy_config_common_matcher_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_HttpGenericBodyMatch* sub = (struct envoy_config_common_matcher_v3_HttpGenericBodyMatch*)envoy_config_common_matcher_v3_MatchPredicate_http_request_generic_body_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_HttpGenericBodyMatch*)_upb_Message_New(&envoy_config_common_matcher_v3_HttpGenericBodyMatch_msginit, arena);
@@ -899,9 +1162,9 @@ UPB_INLINE struct envoy_config_common_matcher_v3_HttpGenericBodyMatch* envoy_con
return sub;
}
UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_set_http_response_generic_body_match(envoy_config_common_matcher_v3_MatchPredicate *msg, envoy_config_common_matcher_v3_HttpGenericBodyMatch* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpGenericBodyMatch*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 10);
+ UPB_WRITE_ONEOF(msg, envoy_config_common_matcher_v3_HttpGenericBodyMatch*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 10);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_HttpGenericBodyMatch* envoy_config_common_matcher_v3_MatchPredicate_mutable_http_response_generic_body_match(envoy_config_common_matcher_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_HttpGenericBodyMatch* envoy_config_common_matcher_v3_MatchPredicate_mutable_http_response_generic_body_match(envoy_config_common_matcher_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_HttpGenericBodyMatch* sub = (struct envoy_config_common_matcher_v3_HttpGenericBodyMatch*)envoy_config_common_matcher_v3_MatchPredicate_http_response_generic_body_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_HttpGenericBodyMatch*)_upb_Message_New(&envoy_config_common_matcher_v3_HttpGenericBodyMatch_msginit, arena);
@@ -936,25 +1199,35 @@ UPB_INLINE envoy_config_common_matcher_v3_MatchPredicate_MatchSet* envoy_config_
return ret;
}
UPB_INLINE char* envoy_config_common_matcher_v3_MatchPredicate_MatchSet_serialize(const envoy_config_common_matcher_v3_MatchPredicate_MatchSet* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_MatchPredicate_MatchSet_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_MatchPredicate_MatchSet_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_common_matcher_v3_MatchPredicate_MatchSet_serialize_ex(const envoy_config_common_matcher_v3_MatchPredicate_MatchSet* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_MatchPredicate_MatchSet_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_MatchPredicate_MatchSet_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_MatchSet_has_rules(const envoy_config_common_matcher_v3_MatchPredicate_MatchSet* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_common_matcher_v3_MatchPredicate_MatchSet_clear_rules(const envoy_config_common_matcher_v3_MatchPredicate_MatchSet* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_common_matcher_v3_MatchPredicate* const* envoy_config_common_matcher_v3_MatchPredicate_MatchSet_rules(const envoy_config_common_matcher_v3_MatchPredicate_MatchSet* msg, size_t* len) {
+ return (const envoy_config_common_matcher_v3_MatchPredicate* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_common_matcher_v3_MatchPredicate_MatchSet_has_rules(const envoy_config_common_matcher_v3_MatchPredicate_MatchSet *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_common_matcher_v3_MatchPredicate* const* envoy_config_common_matcher_v3_MatchPredicate_MatchSet_rules(const envoy_config_common_matcher_v3_MatchPredicate_MatchSet *msg, size_t *len) { return (const envoy_config_common_matcher_v3_MatchPredicate* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_common_matcher_v3_MatchPredicate** envoy_config_common_matcher_v3_MatchPredicate_MatchSet_mutable_rules(envoy_config_common_matcher_v3_MatchPredicate_MatchSet *msg, size_t *len) {
+UPB_INLINE envoy_config_common_matcher_v3_MatchPredicate** envoy_config_common_matcher_v3_MatchPredicate_MatchSet_mutable_rules(envoy_config_common_matcher_v3_MatchPredicate_MatchSet* msg, size_t* len) {
return (envoy_config_common_matcher_v3_MatchPredicate**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_common_matcher_v3_MatchPredicate** envoy_config_common_matcher_v3_MatchPredicate_MatchSet_resize_rules(envoy_config_common_matcher_v3_MatchPredicate_MatchSet *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_common_matcher_v3_MatchPredicate** envoy_config_common_matcher_v3_MatchPredicate_MatchSet_resize_rules(envoy_config_common_matcher_v3_MatchPredicate_MatchSet* msg, size_t len, upb_Arena* arena) {
return (envoy_config_common_matcher_v3_MatchPredicate**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_MatchPredicate* envoy_config_common_matcher_v3_MatchPredicate_MatchSet_add_rules(envoy_config_common_matcher_v3_MatchPredicate_MatchSet *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_MatchPredicate* envoy_config_common_matcher_v3_MatchPredicate_MatchSet_add_rules(envoy_config_common_matcher_v3_MatchPredicate_MatchSet* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_MatchPredicate* sub = (struct envoy_config_common_matcher_v3_MatchPredicate*)_upb_Message_New(&envoy_config_common_matcher_v3_MatchPredicate_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -984,25 +1257,35 @@ UPB_INLINE envoy_config_common_matcher_v3_HttpHeadersMatch* envoy_config_common_
return ret;
}
UPB_INLINE char* envoy_config_common_matcher_v3_HttpHeadersMatch_serialize(const envoy_config_common_matcher_v3_HttpHeadersMatch* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_HttpHeadersMatch_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_HttpHeadersMatch_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_common_matcher_v3_HttpHeadersMatch_serialize_ex(const envoy_config_common_matcher_v3_HttpHeadersMatch* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_HttpHeadersMatch_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_HttpHeadersMatch_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_HttpHeadersMatch_has_headers(const envoy_config_common_matcher_v3_HttpHeadersMatch* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_common_matcher_v3_HttpHeadersMatch_clear_headers(const envoy_config_common_matcher_v3_HttpHeadersMatch* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const struct envoy_config_route_v3_HeaderMatcher* const* envoy_config_common_matcher_v3_HttpHeadersMatch_headers(const envoy_config_common_matcher_v3_HttpHeadersMatch* msg, size_t* len) {
+ return (const struct envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_common_matcher_v3_HttpHeadersMatch_has_headers(const envoy_config_common_matcher_v3_HttpHeadersMatch *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const struct envoy_config_route_v3_HeaderMatcher* const* envoy_config_common_matcher_v3_HttpHeadersMatch_headers(const envoy_config_common_matcher_v3_HttpHeadersMatch *msg, size_t *len) { return (const struct envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher** envoy_config_common_matcher_v3_HttpHeadersMatch_mutable_headers(envoy_config_common_matcher_v3_HttpHeadersMatch *msg, size_t *len) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher** envoy_config_common_matcher_v3_HttpHeadersMatch_mutable_headers(envoy_config_common_matcher_v3_HttpHeadersMatch* msg, size_t* len) {
return (struct envoy_config_route_v3_HeaderMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher** envoy_config_common_matcher_v3_HttpHeadersMatch_resize_headers(envoy_config_common_matcher_v3_HttpHeadersMatch *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher** envoy_config_common_matcher_v3_HttpHeadersMatch_resize_headers(envoy_config_common_matcher_v3_HttpHeadersMatch* msg, size_t len, upb_Arena* arena) {
return (struct envoy_config_route_v3_HeaderMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_common_matcher_v3_HttpHeadersMatch_add_headers(envoy_config_common_matcher_v3_HttpHeadersMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_common_matcher_v3_HttpHeadersMatch_add_headers(envoy_config_common_matcher_v3_HttpHeadersMatch* msg, upb_Arena* arena) {
struct envoy_config_route_v3_HeaderMatcher* sub = (struct envoy_config_route_v3_HeaderMatcher*)_upb_Message_New(&envoy_config_route_v3_HeaderMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1032,31 +1315,44 @@ UPB_INLINE envoy_config_common_matcher_v3_HttpGenericBodyMatch* envoy_config_com
return ret;
}
UPB_INLINE char* envoy_config_common_matcher_v3_HttpGenericBodyMatch_serialize(const envoy_config_common_matcher_v3_HttpGenericBodyMatch* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_HttpGenericBodyMatch_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_HttpGenericBodyMatch_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_common_matcher_v3_HttpGenericBodyMatch_serialize_ex(const envoy_config_common_matcher_v3_HttpGenericBodyMatch* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_HttpGenericBodyMatch_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_HttpGenericBodyMatch_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_HttpGenericBodyMatch_clear_bytes_limit(const envoy_config_common_matcher_v3_HttpGenericBodyMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_config_common_matcher_v3_HttpGenericBodyMatch_bytes_limit(const envoy_config_common_matcher_v3_HttpGenericBodyMatch* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t);
}
-UPB_INLINE bool envoy_config_common_matcher_v3_HttpGenericBodyMatch_has_patterns(const envoy_config_common_matcher_v3_HttpGenericBodyMatch *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* const* envoy_config_common_matcher_v3_HttpGenericBodyMatch_patterns(const envoy_config_common_matcher_v3_HttpGenericBodyMatch *msg, size_t *len) { return (const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
+UPB_INLINE bool envoy_config_common_matcher_v3_HttpGenericBodyMatch_has_patterns(const envoy_config_common_matcher_v3_HttpGenericBodyMatch* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_config_common_matcher_v3_HttpGenericBodyMatch_clear_patterns(const envoy_config_common_matcher_v3_HttpGenericBodyMatch* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* const* envoy_config_common_matcher_v3_HttpGenericBodyMatch_patterns(const envoy_config_common_matcher_v3_HttpGenericBodyMatch* msg, size_t* len) {
+ return (const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
UPB_INLINE void envoy_config_common_matcher_v3_HttpGenericBodyMatch_set_bytes_limit(envoy_config_common_matcher_v3_HttpGenericBodyMatch *msg, uint32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = value;
}
-UPB_INLINE envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch** envoy_config_common_matcher_v3_HttpGenericBodyMatch_mutable_patterns(envoy_config_common_matcher_v3_HttpGenericBodyMatch *msg, size_t *len) {
+UPB_INLINE envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch** envoy_config_common_matcher_v3_HttpGenericBodyMatch_mutable_patterns(envoy_config_common_matcher_v3_HttpGenericBodyMatch* msg, size_t* len) {
return (envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch** envoy_config_common_matcher_v3_HttpGenericBodyMatch_resize_patterns(envoy_config_common_matcher_v3_HttpGenericBodyMatch *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch** envoy_config_common_matcher_v3_HttpGenericBodyMatch_resize_patterns(envoy_config_common_matcher_v3_HttpGenericBodyMatch* msg, size_t len, upb_Arena* arena) {
return (envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* envoy_config_common_matcher_v3_HttpGenericBodyMatch_add_patterns(envoy_config_common_matcher_v3_HttpGenericBodyMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* envoy_config_common_matcher_v3_HttpGenericBodyMatch_add_patterns(envoy_config_common_matcher_v3_HttpGenericBodyMatch* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* sub = (struct envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch*)_upb_Message_New(&envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1086,29 +1382,48 @@ UPB_INLINE envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch*
return ret;
}
UPB_INLINE char* envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_serialize(const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_serialize_ex(const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_rule_string_match = 1,
envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_rule_binary_match = 2,
envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_rule_NOT_SET = 0
} envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_rule_oneofcases;
-UPB_INLINE envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_rule_oneofcases envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_rule_case(const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* msg) { return (envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_rule_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_has_string_match(const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE upb_StringView envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_string_match(const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_has_binary_match(const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 2; }
-UPB_INLINE upb_StringView envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_binary_match(const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 2, upb_StringView_FromString("")); }
+UPB_INLINE envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_rule_oneofcases envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_rule_case(const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* msg) {
+ return (envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_rule_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_has_string_match(const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_clear_string_match(const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_rule_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_string_match(const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_has_binary_match(const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_clear_binary_match(const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_rule_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_binary_match(const envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, upb_StringView_FromString(""));
+}
UPB_INLINE void envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_set_string_match(envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
UPB_INLINE void envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch_set_binary_match(envoy_config_common_matcher_v3_HttpGenericBodyMatch_GenericTextMatch *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
extern const upb_MiniTable_File envoy_config_common_matcher_v3_matcher_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c
index f1ca6bee71..b2e18e14b3 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c
@@ -18,91 +18,93 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_config_core_v3_Pipe__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_Pipe_msginit = {
NULL,
&envoy_config_core_v3_Pipe__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_EnvoyInternalAddress__fields[1] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_EnvoyInternalAddress_msginit = {
NULL,
&envoy_config_core_v3_EnvoyInternalAddress__fields[0],
- UPB_SIZE(16, 32), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_SocketAddress__fields[6] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 40), UPB_SIZE(-33, -57), 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 40), UPB_SIZE(-33, -57), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(16, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(4, 4), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(20, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(28, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_SocketAddress_msginit = {
NULL,
&envoy_config_core_v3_SocketAddress__fields[0],
- UPB_SIZE(40, 64), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(40, 64), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_core_v3_TcpKeepalive_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_core_v3_TcpKeepalive_submsgs[3] = {
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_TcpKeepalive__fields[3] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_TcpKeepalive_msginit = {
&envoy_config_core_v3_TcpKeepalive_submsgs[0],
&envoy_config_core_v3_TcpKeepalive__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_BindConfig_submsgs[3] = {
{.submsg = &envoy_config_core_v3_SocketAddress_msginit},
- {.submsg = &envoy_config_core_v3_SocketOption_msginit},
{.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &envoy_config_core_v3_SocketOption_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_BindConfig__fields[3] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_BindConfig_msginit = {
&envoy_config_core_v3_BindConfig_submsgs[0],
&envoy_config_core_v3_BindConfig__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_Address_submsgs[3] = {
- {.submsg = &envoy_config_core_v3_EnvoyInternalAddress_msginit},
- {.submsg = &envoy_config_core_v3_Pipe_msginit},
{.submsg = &envoy_config_core_v3_SocketAddress_msginit},
+ {.submsg = &envoy_config_core_v3_Pipe_msginit},
+ {.submsg = &envoy_config_core_v3_EnvoyInternalAddress_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_Address__fields[3] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_Address_msginit = {
&envoy_config_core_v3_Address_submsgs[0],
&envoy_config_core_v3_Address__fields[0],
- UPB_SIZE(8, 16), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(8, 16), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_CidrRange_submsgs[1] = {
@@ -110,14 +112,14 @@ static const upb_MiniTable_Sub envoy_config_core_v3_CidrRange_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_core_v3_CidrRange__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_CidrRange_msginit = {
&envoy_config_core_v3_CidrRange_submsgs[0],
&envoy_config_core_v3_CidrRange__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[7] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h
index 1e8dc4ab79..83fa9a0369 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h
@@ -80,15 +80,25 @@ UPB_INLINE envoy_config_core_v3_Pipe* envoy_config_core_v3_Pipe_parse_ex(const c
return ret;
}
UPB_INLINE char* envoy_config_core_v3_Pipe_serialize(const envoy_config_core_v3_Pipe* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Pipe_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Pipe_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_Pipe_serialize_ex(const envoy_config_core_v3_Pipe* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Pipe_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Pipe_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_Pipe_clear_path(const envoy_config_core_v3_Pipe* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_Pipe_path(const envoy_config_core_v3_Pipe* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_Pipe_clear_mode(const envoy_config_core_v3_Pipe* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = 0;
+}
UPB_INLINE uint32_t envoy_config_core_v3_Pipe_mode(const envoy_config_core_v3_Pipe* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t);
}
@@ -125,23 +135,35 @@ UPB_INLINE envoy_config_core_v3_EnvoyInternalAddress* envoy_config_core_v3_Envoy
return ret;
}
UPB_INLINE char* envoy_config_core_v3_EnvoyInternalAddress_serialize(const envoy_config_core_v3_EnvoyInternalAddress* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_EnvoyInternalAddress_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_EnvoyInternalAddress_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_EnvoyInternalAddress_serialize_ex(const envoy_config_core_v3_EnvoyInternalAddress* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_EnvoyInternalAddress_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_EnvoyInternalAddress_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_EnvoyInternalAddress_address_name_specifier_server_listener_name = 1,
envoy_config_core_v3_EnvoyInternalAddress_address_name_specifier_NOT_SET = 0
} envoy_config_core_v3_EnvoyInternalAddress_address_name_specifier_oneofcases;
-UPB_INLINE envoy_config_core_v3_EnvoyInternalAddress_address_name_specifier_oneofcases envoy_config_core_v3_EnvoyInternalAddress_address_name_specifier_case(const envoy_config_core_v3_EnvoyInternalAddress* msg) { return (envoy_config_core_v3_EnvoyInternalAddress_address_name_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_EnvoyInternalAddress_has_server_listener_name(const envoy_config_core_v3_EnvoyInternalAddress *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE upb_StringView envoy_config_core_v3_EnvoyInternalAddress_server_listener_name(const envoy_config_core_v3_EnvoyInternalAddress *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, upb_StringView_FromString("")); }
+UPB_INLINE envoy_config_core_v3_EnvoyInternalAddress_address_name_specifier_oneofcases envoy_config_core_v3_EnvoyInternalAddress_address_name_specifier_case(const envoy_config_core_v3_EnvoyInternalAddress* msg) {
+ return (envoy_config_core_v3_EnvoyInternalAddress_address_name_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_EnvoyInternalAddress_has_server_listener_name(const envoy_config_core_v3_EnvoyInternalAddress* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_core_v3_EnvoyInternalAddress_clear_server_listener_name(const envoy_config_core_v3_EnvoyInternalAddress* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_core_v3_EnvoyInternalAddress_address_name_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_EnvoyInternalAddress_server_listener_name(const envoy_config_core_v3_EnvoyInternalAddress* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, upb_StringView_FromString(""));
+}
UPB_INLINE void envoy_config_core_v3_EnvoyInternalAddress_set_server_listener_name(envoy_config_core_v3_EnvoyInternalAddress *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
/* envoy.config.core.v3.SocketAddress */
@@ -169,53 +191,84 @@ UPB_INLINE envoy_config_core_v3_SocketAddress* envoy_config_core_v3_SocketAddres
return ret;
}
UPB_INLINE char* envoy_config_core_v3_SocketAddress_serialize(const envoy_config_core_v3_SocketAddress* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_SocketAddress_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_SocketAddress_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_SocketAddress_serialize_ex(const envoy_config_core_v3_SocketAddress* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_SocketAddress_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_SocketAddress_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_SocketAddress_port_specifier_port_value = 3,
envoy_config_core_v3_SocketAddress_port_specifier_named_port = 4,
envoy_config_core_v3_SocketAddress_port_specifier_NOT_SET = 0
} envoy_config_core_v3_SocketAddress_port_specifier_oneofcases;
-UPB_INLINE envoy_config_core_v3_SocketAddress_port_specifier_oneofcases envoy_config_core_v3_SocketAddress_port_specifier_case(const envoy_config_core_v3_SocketAddress* msg) { return (envoy_config_core_v3_SocketAddress_port_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(32, 56), int32_t); }
-
+UPB_INLINE envoy_config_core_v3_SocketAddress_port_specifier_oneofcases envoy_config_core_v3_SocketAddress_port_specifier_case(const envoy_config_core_v3_SocketAddress* msg) {
+ return (envoy_config_core_v3_SocketAddress_port_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_config_core_v3_SocketAddress_clear_protocol(const envoy_config_core_v3_SocketAddress* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_config_core_v3_SocketAddress_protocol(const envoy_config_core_v3_SocketAddress* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
+UPB_INLINE void envoy_config_core_v3_SocketAddress_clear_address(const envoy_config_core_v3_SocketAddress* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_SocketAddress_address(const envoy_config_core_v3_SocketAddress* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView);
+}
+UPB_INLINE bool envoy_config_core_v3_SocketAddress_has_port_value(const envoy_config_core_v3_SocketAddress* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_config_core_v3_SocketAddress_clear_port_value(const envoy_config_core_v3_SocketAddress* msg) {
+ UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_core_v3_SocketAddress_port_specifier_NOT_SET);
+}
+UPB_INLINE uint32_t envoy_config_core_v3_SocketAddress_port_value(const envoy_config_core_v3_SocketAddress* msg) {
+ return UPB_READ_ONEOF(msg, uint32_t, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 3, _upb_UInt32_FromU(0u));
+}
+UPB_INLINE bool envoy_config_core_v3_SocketAddress_has_named_port(const envoy_config_core_v3_SocketAddress* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 4;
+}
+UPB_INLINE void envoy_config_core_v3_SocketAddress_clear_named_port(const envoy_config_core_v3_SocketAddress* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_core_v3_SocketAddress_port_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_SocketAddress_named_port(const envoy_config_core_v3_SocketAddress* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 4, upb_StringView_FromString(""));
+}
+UPB_INLINE void envoy_config_core_v3_SocketAddress_clear_resolver_name(const envoy_config_core_v3_SocketAddress* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
-UPB_INLINE bool envoy_config_core_v3_SocketAddress_has_port_value(const envoy_config_core_v3_SocketAddress *msg) { return _upb_getoneofcase(msg, UPB_SIZE(32, 56)) == 3; }
-UPB_INLINE uint32_t envoy_config_core_v3_SocketAddress_port_value(const envoy_config_core_v3_SocketAddress *msg) { return UPB_READ_ONEOF(msg, uint32_t, UPB_SIZE(24, 40), UPB_SIZE(32, 56), 3, 0); }
-UPB_INLINE bool envoy_config_core_v3_SocketAddress_has_named_port(const envoy_config_core_v3_SocketAddress *msg) { return _upb_getoneofcase(msg, UPB_SIZE(32, 56)) == 4; }
-UPB_INLINE upb_StringView envoy_config_core_v3_SocketAddress_named_port(const envoy_config_core_v3_SocketAddress *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(24, 40), UPB_SIZE(32, 56), 4, upb_StringView_FromString("")); }
UPB_INLINE upb_StringView envoy_config_core_v3_SocketAddress_resolver_name(const envoy_config_core_v3_SocketAddress* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView);
+}
+UPB_INLINE void envoy_config_core_v3_SocketAddress_clear_ipv4_compat(const envoy_config_core_v3_SocketAddress* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
}
UPB_INLINE bool envoy_config_core_v3_SocketAddress_ipv4_compat(const envoy_config_core_v3_SocketAddress* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
}
UPB_INLINE void envoy_config_core_v3_SocketAddress_set_protocol(envoy_config_core_v3_SocketAddress *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
}
UPB_INLINE void envoy_config_core_v3_SocketAddress_set_address(envoy_config_core_v3_SocketAddress *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_SocketAddress_set_port_value(envoy_config_core_v3_SocketAddress *msg, uint32_t value) {
- UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(24, 40), value, UPB_SIZE(32, 56), 3);
+ UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 3);
}
UPB_INLINE void envoy_config_core_v3_SocketAddress_set_named_port(envoy_config_core_v3_SocketAddress *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(24, 40), value, UPB_SIZE(32, 56), 4);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 4);
}
UPB_INLINE void envoy_config_core_v3_SocketAddress_set_resolver_name(envoy_config_core_v3_SocketAddress *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_SocketAddress_set_ipv4_compat(envoy_config_core_v3_SocketAddress *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
}
/* envoy.config.core.v3.TcpKeepalive */
@@ -243,21 +296,40 @@ UPB_INLINE envoy_config_core_v3_TcpKeepalive* envoy_config_core_v3_TcpKeepalive_
return ret;
}
UPB_INLINE char* envoy_config_core_v3_TcpKeepalive_serialize(const envoy_config_core_v3_TcpKeepalive* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_TcpKeepalive_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_TcpKeepalive_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_TcpKeepalive_serialize_ex(const envoy_config_core_v3_TcpKeepalive* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_TcpKeepalive_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_TcpKeepalive_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_TcpKeepalive_has_keepalive_probes(const envoy_config_core_v3_TcpKeepalive* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_TcpKeepalive_clear_keepalive_probes(const envoy_config_core_v3_TcpKeepalive* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_TcpKeepalive_has_keepalive_probes(const envoy_config_core_v3_TcpKeepalive *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_TcpKeepalive_keepalive_probes(const envoy_config_core_v3_TcpKeepalive* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_TcpKeepalive_has_keepalive_time(const envoy_config_core_v3_TcpKeepalive *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_TcpKeepalive_has_keepalive_time(const envoy_config_core_v3_TcpKeepalive* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_TcpKeepalive_clear_keepalive_time(const envoy_config_core_v3_TcpKeepalive* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_TcpKeepalive_keepalive_time(const envoy_config_core_v3_TcpKeepalive* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_TcpKeepalive_has_keepalive_interval(const envoy_config_core_v3_TcpKeepalive *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_core_v3_TcpKeepalive_has_keepalive_interval(const envoy_config_core_v3_TcpKeepalive* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_core_v3_TcpKeepalive_clear_keepalive_interval(const envoy_config_core_v3_TcpKeepalive* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_TcpKeepalive_keepalive_interval(const envoy_config_core_v3_TcpKeepalive* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_UInt32Value*);
}
@@ -266,7 +338,7 @@ UPB_INLINE void envoy_config_core_v3_TcpKeepalive_set_keepalive_probes(envoy_con
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_TcpKeepalive_mutable_keepalive_probes(envoy_config_core_v3_TcpKeepalive *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_TcpKeepalive_mutable_keepalive_probes(envoy_config_core_v3_TcpKeepalive* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_TcpKeepalive_keepalive_probes(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -279,7 +351,7 @@ UPB_INLINE void envoy_config_core_v3_TcpKeepalive_set_keepalive_time(envoy_confi
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_TcpKeepalive_mutable_keepalive_time(envoy_config_core_v3_TcpKeepalive *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_TcpKeepalive_mutable_keepalive_time(envoy_config_core_v3_TcpKeepalive* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_TcpKeepalive_keepalive_time(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -292,7 +364,7 @@ UPB_INLINE void envoy_config_core_v3_TcpKeepalive_set_keepalive_interval(envoy_c
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_TcpKeepalive_mutable_keepalive_interval(envoy_config_core_v3_TcpKeepalive *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_TcpKeepalive_mutable_keepalive_interval(envoy_config_core_v3_TcpKeepalive* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_TcpKeepalive_keepalive_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -327,28 +399,49 @@ UPB_INLINE envoy_config_core_v3_BindConfig* envoy_config_core_v3_BindConfig_pars
return ret;
}
UPB_INLINE char* envoy_config_core_v3_BindConfig_serialize(const envoy_config_core_v3_BindConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_BindConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_BindConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_BindConfig_serialize_ex(const envoy_config_core_v3_BindConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_BindConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_BindConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_BindConfig_has_source_address(const envoy_config_core_v3_BindConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_BindConfig_clear_source_address(const envoy_config_core_v3_BindConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_BindConfig_has_source_address(const envoy_config_core_v3_BindConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_core_v3_SocketAddress* envoy_config_core_v3_BindConfig_source_address(const envoy_config_core_v3_BindConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_core_v3_SocketAddress*);
}
-UPB_INLINE bool envoy_config_core_v3_BindConfig_has_freebind(const envoy_config_core_v3_BindConfig *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_BindConfig_has_freebind(const envoy_config_core_v3_BindConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_BindConfig_clear_freebind(const envoy_config_core_v3_BindConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_core_v3_BindConfig_freebind(const envoy_config_core_v3_BindConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_BoolValue*);
}
-UPB_INLINE bool envoy_config_core_v3_BindConfig_has_socket_options(const envoy_config_core_v3_BindConfig *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE const struct envoy_config_core_v3_SocketOption* const* envoy_config_core_v3_BindConfig_socket_options(const envoy_config_core_v3_BindConfig *msg, size_t *len) { return (const struct envoy_config_core_v3_SocketOption* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len); }
+UPB_INLINE bool envoy_config_core_v3_BindConfig_has_socket_options(const envoy_config_core_v3_BindConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_config_core_v3_BindConfig_clear_socket_options(const envoy_config_core_v3_BindConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const struct envoy_config_core_v3_SocketOption* const* envoy_config_core_v3_BindConfig_socket_options(const envoy_config_core_v3_BindConfig* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_SocketOption* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
UPB_INLINE void envoy_config_core_v3_BindConfig_set_source_address(envoy_config_core_v3_BindConfig *msg, envoy_config_core_v3_SocketAddress* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_core_v3_SocketAddress*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_SocketAddress* envoy_config_core_v3_BindConfig_mutable_source_address(envoy_config_core_v3_BindConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_SocketAddress* envoy_config_core_v3_BindConfig_mutable_source_address(envoy_config_core_v3_BindConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_SocketAddress* sub = (struct envoy_config_core_v3_SocketAddress*)envoy_config_core_v3_BindConfig_source_address(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_SocketAddress*)_upb_Message_New(&envoy_config_core_v3_SocketAddress_msginit, arena);
@@ -361,7 +454,7 @@ UPB_INLINE void envoy_config_core_v3_BindConfig_set_freebind(envoy_config_core_v
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_BindConfig_mutable_freebind(envoy_config_core_v3_BindConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_BindConfig_mutable_freebind(envoy_config_core_v3_BindConfig* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_core_v3_BindConfig_freebind(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -370,16 +463,15 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_BindConfig_mut
}
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_SocketOption** envoy_config_core_v3_BindConfig_mutable_socket_options(envoy_config_core_v3_BindConfig *msg, size_t *len) {
+UPB_INLINE struct envoy_config_core_v3_SocketOption** envoy_config_core_v3_BindConfig_mutable_socket_options(envoy_config_core_v3_BindConfig* msg, size_t* len) {
return (struct envoy_config_core_v3_SocketOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE struct envoy_config_core_v3_SocketOption** envoy_config_core_v3_BindConfig_resize_socket_options(envoy_config_core_v3_BindConfig *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_SocketOption** envoy_config_core_v3_BindConfig_resize_socket_options(envoy_config_core_v3_BindConfig* msg, size_t len, upb_Arena* arena) {
return (struct envoy_config_core_v3_SocketOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_SocketOption* envoy_config_core_v3_BindConfig_add_socket_options(envoy_config_core_v3_BindConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_SocketOption* envoy_config_core_v3_BindConfig_add_socket_options(envoy_config_core_v3_BindConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_SocketOption* sub = (struct envoy_config_core_v3_SocketOption*)_upb_Message_New(&envoy_config_core_v3_SocketOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -409,11 +501,15 @@ UPB_INLINE envoy_config_core_v3_Address* envoy_config_core_v3_Address_parse_ex(c
return ret;
}
UPB_INLINE char* envoy_config_core_v3_Address_serialize(const envoy_config_core_v3_Address* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Address_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Address_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_Address_serialize_ex(const envoy_config_core_v3_Address* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Address_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Address_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_Address_address_socket_address = 1,
@@ -421,19 +517,41 @@ typedef enum {
envoy_config_core_v3_Address_address_envoy_internal_address = 3,
envoy_config_core_v3_Address_address_NOT_SET = 0
} envoy_config_core_v3_Address_address_oneofcases;
-UPB_INLINE envoy_config_core_v3_Address_address_oneofcases envoy_config_core_v3_Address_address_case(const envoy_config_core_v3_Address* msg) { return (envoy_config_core_v3_Address_address_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_Address_has_socket_address(const envoy_config_core_v3_Address *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_core_v3_SocketAddress* envoy_config_core_v3_Address_socket_address(const envoy_config_core_v3_Address *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_SocketAddress*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_config_core_v3_Address_has_pipe(const envoy_config_core_v3_Address *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const envoy_config_core_v3_Pipe* envoy_config_core_v3_Address_pipe(const envoy_config_core_v3_Address *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_Pipe*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool envoy_config_core_v3_Address_has_envoy_internal_address(const envoy_config_core_v3_Address *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const envoy_config_core_v3_EnvoyInternalAddress* envoy_config_core_v3_Address_envoy_internal_address(const envoy_config_core_v3_Address *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_EnvoyInternalAddress*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
+UPB_INLINE envoy_config_core_v3_Address_address_oneofcases envoy_config_core_v3_Address_address_case(const envoy_config_core_v3_Address* msg) {
+ return (envoy_config_core_v3_Address_address_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_Address_has_socket_address(const envoy_config_core_v3_Address* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_core_v3_Address_clear_socket_address(const envoy_config_core_v3_Address* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_SocketAddress*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_Address_address_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_SocketAddress* envoy_config_core_v3_Address_socket_address(const envoy_config_core_v3_Address* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_SocketAddress*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_Address_has_pipe(const envoy_config_core_v3_Address* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_core_v3_Address_clear_pipe(const envoy_config_core_v3_Address* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_Pipe*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_Address_address_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_Pipe* envoy_config_core_v3_Address_pipe(const envoy_config_core_v3_Address* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_Pipe*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_Address_has_envoy_internal_address(const envoy_config_core_v3_Address* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_core_v3_Address_clear_envoy_internal_address(const envoy_config_core_v3_Address* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_EnvoyInternalAddress*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_Address_address_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_EnvoyInternalAddress* envoy_config_core_v3_Address_envoy_internal_address(const envoy_config_core_v3_Address* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_EnvoyInternalAddress*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
UPB_INLINE void envoy_config_core_v3_Address_set_socket_address(envoy_config_core_v3_Address *msg, envoy_config_core_v3_SocketAddress* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_SocketAddress*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_SocketAddress*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_core_v3_SocketAddress* envoy_config_core_v3_Address_mutable_socket_address(envoy_config_core_v3_Address *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_SocketAddress* envoy_config_core_v3_Address_mutable_socket_address(envoy_config_core_v3_Address* msg, upb_Arena* arena) {
struct envoy_config_core_v3_SocketAddress* sub = (struct envoy_config_core_v3_SocketAddress*)envoy_config_core_v3_Address_socket_address(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_SocketAddress*)_upb_Message_New(&envoy_config_core_v3_SocketAddress_msginit, arena);
@@ -443,9 +561,9 @@ UPB_INLINE struct envoy_config_core_v3_SocketAddress* envoy_config_core_v3_Addre
return sub;
}
UPB_INLINE void envoy_config_core_v3_Address_set_pipe(envoy_config_core_v3_Address *msg, envoy_config_core_v3_Pipe* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_Pipe*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_Pipe*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_config_core_v3_Pipe* envoy_config_core_v3_Address_mutable_pipe(envoy_config_core_v3_Address *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Pipe* envoy_config_core_v3_Address_mutable_pipe(envoy_config_core_v3_Address* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Pipe* sub = (struct envoy_config_core_v3_Pipe*)envoy_config_core_v3_Address_pipe(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Pipe*)_upb_Message_New(&envoy_config_core_v3_Pipe_msginit, arena);
@@ -455,9 +573,9 @@ UPB_INLINE struct envoy_config_core_v3_Pipe* envoy_config_core_v3_Address_mutabl
return sub;
}
UPB_INLINE void envoy_config_core_v3_Address_set_envoy_internal_address(envoy_config_core_v3_Address *msg, envoy_config_core_v3_EnvoyInternalAddress* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_EnvoyInternalAddress*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_EnvoyInternalAddress*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_config_core_v3_EnvoyInternalAddress* envoy_config_core_v3_Address_mutable_envoy_internal_address(envoy_config_core_v3_Address *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_EnvoyInternalAddress* envoy_config_core_v3_Address_mutable_envoy_internal_address(envoy_config_core_v3_Address* msg, upb_Arena* arena) {
struct envoy_config_core_v3_EnvoyInternalAddress* sub = (struct envoy_config_core_v3_EnvoyInternalAddress*)envoy_config_core_v3_Address_envoy_internal_address(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_EnvoyInternalAddress*)_upb_Message_New(&envoy_config_core_v3_EnvoyInternalAddress_msginit, arena);
@@ -492,16 +610,28 @@ UPB_INLINE envoy_config_core_v3_CidrRange* envoy_config_core_v3_CidrRange_parse_
return ret;
}
UPB_INLINE char* envoy_config_core_v3_CidrRange_serialize(const envoy_config_core_v3_CidrRange* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_CidrRange_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_CidrRange_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_CidrRange_serialize_ex(const envoy_config_core_v3_CidrRange* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_CidrRange_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_CidrRange_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_CidrRange_clear_address_prefix(const envoy_config_core_v3_CidrRange* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_CidrRange_address_prefix(const envoy_config_core_v3_CidrRange* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_core_v3_CidrRange_has_prefix_len(const envoy_config_core_v3_CidrRange *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_core_v3_CidrRange_has_prefix_len(const envoy_config_core_v3_CidrRange* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_CidrRange_clear_prefix_len(const envoy_config_core_v3_CidrRange* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_CidrRange_prefix_len(const envoy_config_core_v3_CidrRange* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_UInt32Value*);
}
@@ -513,7 +643,7 @@ UPB_INLINE void envoy_config_core_v3_CidrRange_set_prefix_len(envoy_config_core_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_CidrRange_mutable_prefix_len(envoy_config_core_v3_CidrRange *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_CidrRange_mutable_prefix_len(envoy_config_core_v3_CidrRange* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_CidrRange_prefix_len(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c
index d9b75d4754..577a8b0738 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c
@@ -16,19 +16,20 @@
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_config_core_v3_BackoffStrategy_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_core_v3_BackoffStrategy_submsgs[2] = {
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_BackoffStrategy__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_BackoffStrategy_msginit = {
&envoy_config_core_v3_BackoffStrategy_submsgs[0],
&envoy_config_core_v3_BackoffStrategy__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h
index 10be4d0cf2..78be608415 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h
@@ -53,17 +53,31 @@ UPB_INLINE envoy_config_core_v3_BackoffStrategy* envoy_config_core_v3_BackoffStr
return ret;
}
UPB_INLINE char* envoy_config_core_v3_BackoffStrategy_serialize(const envoy_config_core_v3_BackoffStrategy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_BackoffStrategy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_BackoffStrategy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_BackoffStrategy_serialize_ex(const envoy_config_core_v3_BackoffStrategy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_BackoffStrategy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_BackoffStrategy_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_BackoffStrategy_has_base_interval(const envoy_config_core_v3_BackoffStrategy* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_BackoffStrategy_clear_base_interval(const envoy_config_core_v3_BackoffStrategy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_BackoffStrategy_has_base_interval(const envoy_config_core_v3_BackoffStrategy *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_BackoffStrategy_base_interval(const envoy_config_core_v3_BackoffStrategy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_core_v3_BackoffStrategy_has_max_interval(const envoy_config_core_v3_BackoffStrategy *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_BackoffStrategy_has_max_interval(const envoy_config_core_v3_BackoffStrategy* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_BackoffStrategy_clear_max_interval(const envoy_config_core_v3_BackoffStrategy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_BackoffStrategy_max_interval(const envoy_config_core_v3_BackoffStrategy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Duration*);
}
@@ -72,7 +86,7 @@ UPB_INLINE void envoy_config_core_v3_BackoffStrategy_set_base_interval(envoy_con
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_BackoffStrategy_mutable_base_interval(envoy_config_core_v3_BackoffStrategy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_BackoffStrategy_mutable_base_interval(envoy_config_core_v3_BackoffStrategy* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_BackoffStrategy_base_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -85,7 +99,7 @@ UPB_INLINE void envoy_config_core_v3_BackoffStrategy_set_max_interval(envoy_conf
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_BackoffStrategy_mutable_max_interval(envoy_config_core_v3_BackoffStrategy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_BackoffStrategy_mutable_max_interval(envoy_config_core_v3_BackoffStrategy* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_BackoffStrategy_max_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c
index 4d65ceb2a5..54654db53b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c
@@ -27,15 +27,15 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_config_core_v3_Locality__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_Locality_msginit = {
NULL,
&envoy_config_core_v3_Locality__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 48), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_BuildVersion_submsgs[2] = {
@@ -44,61 +44,62 @@ static const upb_MiniTable_Sub envoy_config_core_v3_BuildVersion_submsgs[2] = {
};
static const upb_MiniTable_Field envoy_config_core_v3_BuildVersion__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_BuildVersion_msginit = {
&envoy_config_core_v3_BuildVersion_submsgs[0],
&envoy_config_core_v3_BuildVersion__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_Extension_submsgs[1] = {
{.submsg = &envoy_config_core_v3_BuildVersion_msginit},
};
-static const upb_MiniTable_Field envoy_config_core_v3_Extension__fields[5] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(28, 56), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_core_v3_Extension__fields[6] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(28, 56), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(32, 64), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_Extension_msginit = {
&envoy_config_core_v3_Extension_submsgs[0],
&envoy_config_core_v3_Extension__fields[0],
- UPB_SIZE(32, 64), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(40, 72), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_Node_submsgs[6] = {
- {.submsg = &envoy_config_core_v3_Address_msginit},
+ {.submsg = &google_protobuf_Struct_msginit},
+ {.submsg = &envoy_config_core_v3_Locality_msginit},
{.submsg = &envoy_config_core_v3_BuildVersion_msginit},
{.submsg = &envoy_config_core_v3_Extension_msginit},
- {.submsg = &envoy_config_core_v3_Locality_msginit},
+ {.submsg = &envoy_config_core_v3_Address_msginit},
{.submsg = &envoy_config_core_v3_Node_DynamicParametersEntry_msginit},
- {.submsg = &google_protobuf_Struct_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_Node__fields[11] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(28, 56), 1, 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 64), 2, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(20, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {7, UPB_SIZE(52, 104), UPB_SIZE(-61, -121), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {8, UPB_SIZE(52, 104), UPB_SIZE(-61, -121), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(36, 72), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(40, 80), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(44, 88), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(48, 96), 0, 4, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(24, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(32, 56), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(36, 64), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(40, 72), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(48, 88), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(52, 96), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(56, 104), UPB_SIZE(0, 0), 4, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(60, 112), UPB_SIZE(0, 0), 5, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_Node_msginit = {
&envoy_config_core_v3_Node_submsgs[0],
&envoy_config_core_v3_Node__fields[0],
- UPB_SIZE(64, 128), 11, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(64, 120), 11, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_Node_DynamicParametersEntry_submsgs[1] = {
@@ -106,14 +107,14 @@ static const upb_MiniTable_Sub envoy_config_core_v3_Node_DynamicParametersEntry_
};
static const upb_MiniTable_Field envoy_config_core_v3_Node_DynamicParametersEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_Node_DynamicParametersEntry_msginit = {
&envoy_config_core_v3_Node_DynamicParametersEntry_submsgs[0],
&envoy_config_core_v3_Node_DynamicParametersEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_Metadata_submsgs[2] = {
@@ -122,14 +123,14 @@ static const upb_MiniTable_Sub envoy_config_core_v3_Metadata_submsgs[2] = {
};
static const upb_MiniTable_Field envoy_config_core_v3_Metadata__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 1, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_Metadata_msginit = {
&envoy_config_core_v3_Metadata_submsgs[0],
&envoy_config_core_v3_Metadata__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_Metadata_FilterMetadataEntry_submsgs[1] = {
@@ -137,14 +138,14 @@ static const upb_MiniTable_Sub envoy_config_core_v3_Metadata_FilterMetadataEntry
};
static const upb_MiniTable_Field envoy_config_core_v3_Metadata_FilterMetadataEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_Metadata_FilterMetadataEntry_msginit = {
&envoy_config_core_v3_Metadata_FilterMetadataEntry_submsgs[0],
&envoy_config_core_v3_Metadata_FilterMetadataEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_Metadata_TypedFilterMetadataEntry_submsgs[1] = {
@@ -152,25 +153,25 @@ static const upb_MiniTable_Sub envoy_config_core_v3_Metadata_TypedFilterMetadata
};
static const upb_MiniTable_Field envoy_config_core_v3_Metadata_TypedFilterMetadataEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_Metadata_TypedFilterMetadataEntry_msginit = {
&envoy_config_core_v3_Metadata_TypedFilterMetadataEntry_submsgs[0],
&envoy_config_core_v3_Metadata_TypedFilterMetadataEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_RuntimeUInt32__fields[2] = {
- {2, UPB_SIZE(0, 0), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_RuntimeUInt32_msginit = {
NULL,
&envoy_config_core_v3_RuntimeUInt32__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_RuntimePercent_submsgs[1] = {
@@ -178,25 +179,25 @@ static const upb_MiniTable_Sub envoy_config_core_v3_RuntimePercent_submsgs[1] =
};
static const upb_MiniTable_Field envoy_config_core_v3_RuntimePercent__fields[2] = {
- {1, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_RuntimePercent_msginit = {
&envoy_config_core_v3_RuntimePercent_submsgs[0],
&envoy_config_core_v3_RuntimePercent__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_RuntimeDouble__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_RuntimeDouble_msginit = {
NULL,
&envoy_config_core_v3_RuntimeDouble__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_RuntimeFeatureFlag_submsgs[1] = {
@@ -204,36 +205,36 @@ static const upb_MiniTable_Sub envoy_config_core_v3_RuntimeFeatureFlag_submsgs[1
};
static const upb_MiniTable_Field envoy_config_core_v3_RuntimeFeatureFlag__fields[2] = {
- {1, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_RuntimeFeatureFlag_msginit = {
&envoy_config_core_v3_RuntimeFeatureFlag_submsgs[0],
&envoy_config_core_v3_RuntimeFeatureFlag__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_QueryParameter__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_QueryParameter_msginit = {
NULL,
&envoy_config_core_v3_QueryParameter__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_HeaderValue__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_HeaderValue_msginit = {
NULL,
&envoy_config_core_v3_HeaderValue__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_HeaderValueOption_submsgs[2] = {
@@ -241,16 +242,17 @@ static const upb_MiniTable_Sub envoy_config_core_v3_HeaderValueOption_submsgs[2]
{.submsg = &google_protobuf_BoolValue_msginit},
};
-static const upb_MiniTable_Field envoy_config_core_v3_HeaderValueOption__fields[3] = {
- {1, UPB_SIZE(8, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_core_v3_HeaderValueOption__fields[4] = {
+ {1, UPB_SIZE(12, 16), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_HeaderValueOption_msginit = {
&envoy_config_core_v3_HeaderValueOption_submsgs[0],
&envoy_config_core_v3_HeaderValueOption__fields[0],
- UPB_SIZE(16, 24), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 32), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_HeaderMap_submsgs[1] = {
@@ -258,36 +260,36 @@ static const upb_MiniTable_Sub envoy_config_core_v3_HeaderMap_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_core_v3_HeaderMap__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_HeaderMap_msginit = {
&envoy_config_core_v3_HeaderMap_submsgs[0],
&envoy_config_core_v3_HeaderMap__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_WatchedDirectory__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_WatchedDirectory_msginit = {
NULL,
&envoy_config_core_v3_WatchedDirectory__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_DataSource__fields[4] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_DataSource_msginit = {
NULL,
&envoy_config_core_v3_DataSource__fields[0],
- UPB_SIZE(16, 32), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(16, 24), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_RetryPolicy_submsgs[2] = {
@@ -296,14 +298,14 @@ static const upb_MiniTable_Sub envoy_config_core_v3_RetryPolicy_submsgs[2] = {
};
static const upb_MiniTable_Field envoy_config_core_v3_RetryPolicy__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_RetryPolicy_msginit = {
&envoy_config_core_v3_RetryPolicy_submsgs[0],
&envoy_config_core_v3_RetryPolicy__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_RemoteDataSource_submsgs[2] = {
@@ -312,15 +314,15 @@ static const upb_MiniTable_Sub envoy_config_core_v3_RemoteDataSource_submsgs[2]
};
static const upb_MiniTable_Field envoy_config_core_v3_RemoteDataSource__fields[3] = {
- {1, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_RemoteDataSource_msginit = {
&envoy_config_core_v3_RemoteDataSource_submsgs[0],
&envoy_config_core_v3_RemoteDataSource__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_AsyncDataSource_submsgs[2] = {
@@ -329,14 +331,14 @@ static const upb_MiniTable_Sub envoy_config_core_v3_AsyncDataSource_submsgs[2] =
};
static const upb_MiniTable_Field envoy_config_core_v3_AsyncDataSource__fields[2] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_AsyncDataSource_msginit = {
&envoy_config_core_v3_AsyncDataSource_submsgs[0],
&envoy_config_core_v3_AsyncDataSource__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_TransportSocket_submsgs[1] = {
@@ -344,14 +346,14 @@ static const upb_MiniTable_Sub envoy_config_core_v3_TransportSocket_submsgs[1] =
};
static const upb_MiniTable_Field envoy_config_core_v3_TransportSocket__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_TransportSocket_msginit = {
&envoy_config_core_v3_TransportSocket_submsgs[0],
&envoy_config_core_v3_TransportSocket__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_RuntimeFractionalPercent_submsgs[1] = {
@@ -359,24 +361,24 @@ static const upb_MiniTable_Sub envoy_config_core_v3_RuntimeFractionalPercent_sub
};
static const upb_MiniTable_Field envoy_config_core_v3_RuntimeFractionalPercent__fields[2] = {
- {1, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_RuntimeFractionalPercent_msginit = {
&envoy_config_core_v3_RuntimeFractionalPercent_submsgs[0],
&envoy_config_core_v3_RuntimeFractionalPercent__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_ControlPlane__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_ControlPlane_msginit = {
NULL,
&envoy_config_core_v3_ControlPlane__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[24] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h
index d7e0beaf00..c8f18796c7 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h
@@ -172,18 +172,31 @@ UPB_INLINE envoy_config_core_v3_Locality* envoy_config_core_v3_Locality_parse_ex
return ret;
}
UPB_INLINE char* envoy_config_core_v3_Locality_serialize(const envoy_config_core_v3_Locality* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Locality_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Locality_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_Locality_serialize_ex(const envoy_config_core_v3_Locality* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Locality_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Locality_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_Locality_clear_region(const envoy_config_core_v3_Locality* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_Locality_region(const envoy_config_core_v3_Locality* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_Locality_clear_zone(const envoy_config_core_v3_Locality* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_Locality_zone(const envoy_config_core_v3_Locality* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_Locality_clear_sub_zone(const envoy_config_core_v3_Locality* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_Locality_sub_zone(const envoy_config_core_v3_Locality* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView);
}
@@ -223,17 +236,31 @@ UPB_INLINE envoy_config_core_v3_BuildVersion* envoy_config_core_v3_BuildVersion_
return ret;
}
UPB_INLINE char* envoy_config_core_v3_BuildVersion_serialize(const envoy_config_core_v3_BuildVersion* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_BuildVersion_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_BuildVersion_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_BuildVersion_serialize_ex(const envoy_config_core_v3_BuildVersion* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_BuildVersion_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_BuildVersion_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_BuildVersion_has_version(const envoy_config_core_v3_BuildVersion* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_BuildVersion_clear_version(const envoy_config_core_v3_BuildVersion* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_BuildVersion_has_version(const envoy_config_core_v3_BuildVersion *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_v3_SemanticVersion* envoy_config_core_v3_BuildVersion_version(const envoy_config_core_v3_BuildVersion* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_v3_SemanticVersion*);
}
-UPB_INLINE bool envoy_config_core_v3_BuildVersion_has_metadata(const envoy_config_core_v3_BuildVersion *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_BuildVersion_has_metadata(const envoy_config_core_v3_BuildVersion* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_BuildVersion_clear_metadata(const envoy_config_core_v3_BuildVersion* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Struct* envoy_config_core_v3_BuildVersion_metadata(const envoy_config_core_v3_BuildVersion* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Struct*);
}
@@ -242,7 +269,7 @@ UPB_INLINE void envoy_config_core_v3_BuildVersion_set_version(envoy_config_core_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_v3_SemanticVersion*) = value;
}
-UPB_INLINE struct envoy_type_v3_SemanticVersion* envoy_config_core_v3_BuildVersion_mutable_version(envoy_config_core_v3_BuildVersion *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_SemanticVersion* envoy_config_core_v3_BuildVersion_mutable_version(envoy_config_core_v3_BuildVersion* msg, upb_Arena* arena) {
struct envoy_type_v3_SemanticVersion* sub = (struct envoy_type_v3_SemanticVersion*)envoy_config_core_v3_BuildVersion_version(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_SemanticVersion*)_upb_Message_New(&envoy_type_v3_SemanticVersion_msginit, arena);
@@ -255,7 +282,7 @@ UPB_INLINE void envoy_config_core_v3_BuildVersion_set_metadata(envoy_config_core
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Struct*) = value;
}
-UPB_INLINE struct google_protobuf_Struct* envoy_config_core_v3_BuildVersion_mutable_metadata(envoy_config_core_v3_BuildVersion *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Struct* envoy_config_core_v3_BuildVersion_mutable_metadata(envoy_config_core_v3_BuildVersion* msg, upb_Arena* arena) {
struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)envoy_config_core_v3_BuildVersion_metadata(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Struct*)_upb_Message_New(&google_protobuf_Struct_msginit, arena);
@@ -290,28 +317,55 @@ UPB_INLINE envoy_config_core_v3_Extension* envoy_config_core_v3_Extension_parse_
return ret;
}
UPB_INLINE char* envoy_config_core_v3_Extension_serialize(const envoy_config_core_v3_Extension* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Extension_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Extension_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_Extension_serialize_ex(const envoy_config_core_v3_Extension* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Extension_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Extension_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_Extension_clear_name(const envoy_config_core_v3_Extension* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_Extension_name(const envoy_config_core_v3_Extension* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_Extension_clear_category(const envoy_config_core_v3_Extension* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_Extension_category(const envoy_config_core_v3_Extension* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_Extension_clear_type_descriptor(const envoy_config_core_v3_Extension* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_Extension_type_descriptor(const envoy_config_core_v3_Extension* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
}
-UPB_INLINE bool envoy_config_core_v3_Extension_has_version(const envoy_config_core_v3_Extension *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_core_v3_Extension_has_version(const envoy_config_core_v3_Extension* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_Extension_clear_version(const envoy_config_core_v3_Extension* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_core_v3_BuildVersion* envoy_config_core_v3_Extension_version(const envoy_config_core_v3_Extension* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const envoy_config_core_v3_BuildVersion*);
}
+UPB_INLINE void envoy_config_core_v3_Extension_clear_disabled(const envoy_config_core_v3_Extension* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_config_core_v3_Extension_disabled(const envoy_config_core_v3_Extension* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
+UPB_INLINE void envoy_config_core_v3_Extension_clear_type_urls(const envoy_config_core_v3_Extension* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 64));
+}
+UPB_INLINE upb_StringView const* envoy_config_core_v3_Extension_type_urls(const envoy_config_core_v3_Extension* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len);
+}
UPB_INLINE void envoy_config_core_v3_Extension_set_name(envoy_config_core_v3_Extension *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
@@ -326,7 +380,7 @@ UPB_INLINE void envoy_config_core_v3_Extension_set_version(envoy_config_core_v3_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(28, 56), envoy_config_core_v3_BuildVersion*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_BuildVersion* envoy_config_core_v3_Extension_mutable_version(envoy_config_core_v3_Extension *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_BuildVersion* envoy_config_core_v3_Extension_mutable_version(envoy_config_core_v3_Extension* msg, upb_Arena* arena) {
struct envoy_config_core_v3_BuildVersion* sub = (struct envoy_config_core_v3_BuildVersion*)envoy_config_core_v3_Extension_version(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_BuildVersion*)_upb_Message_New(&envoy_config_core_v3_BuildVersion_msginit, arena);
@@ -338,6 +392,15 @@ UPB_INLINE struct envoy_config_core_v3_BuildVersion* envoy_config_core_v3_Extens
UPB_INLINE void envoy_config_core_v3_Extension_set_disabled(envoy_config_core_v3_Extension *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
+UPB_INLINE upb_StringView* envoy_config_core_v3_Extension_mutable_type_urls(envoy_config_core_v3_Extension* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
+}
+UPB_INLINE upb_StringView* envoy_config_core_v3_Extension_resize_type_urls(envoy_config_core_v3_Extension* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(3, 4), arena);
+}
+UPB_INLINE bool envoy_config_core_v3_Extension_add_type_urls(envoy_config_core_v3_Extension* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 64), UPB_SIZE(3, 4), &val, arena);
+}
/* envoy.config.core.v3.Node */
@@ -364,61 +427,129 @@ UPB_INLINE envoy_config_core_v3_Node* envoy_config_core_v3_Node_parse_ex(const c
return ret;
}
UPB_INLINE char* envoy_config_core_v3_Node_serialize(const envoy_config_core_v3_Node* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Node_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Node_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_Node_serialize_ex(const envoy_config_core_v3_Node* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Node_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Node_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_Node_user_agent_version_type_user_agent_version = 7,
envoy_config_core_v3_Node_user_agent_version_type_user_agent_build_version = 8,
envoy_config_core_v3_Node_user_agent_version_type_NOT_SET = 0
} envoy_config_core_v3_Node_user_agent_version_type_oneofcases;
-UPB_INLINE envoy_config_core_v3_Node_user_agent_version_type_oneofcases envoy_config_core_v3_Node_user_agent_version_type_case(const envoy_config_core_v3_Node* msg) { return (envoy_config_core_v3_Node_user_agent_version_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(60, 120), int32_t); }
-
+UPB_INLINE envoy_config_core_v3_Node_user_agent_version_type_oneofcases envoy_config_core_v3_Node_user_agent_version_type_case(const envoy_config_core_v3_Node* msg) {
+ return (envoy_config_core_v3_Node_user_agent_version_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_config_core_v3_Node_clear_id(const envoy_config_core_v3_Node* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_Node_id(const envoy_config_core_v3_Node* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+}
+UPB_INLINE void envoy_config_core_v3_Node_clear_cluster(const envoy_config_core_v3_Node* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_Node_cluster(const envoy_config_core_v3_Node* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView);
+}
+UPB_INLINE bool envoy_config_core_v3_Node_has_metadata(const envoy_config_core_v3_Node* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_Node_clear_metadata(const envoy_config_core_v3_Node* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_Node_has_metadata(const envoy_config_core_v3_Node *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Struct* envoy_config_core_v3_Node_metadata(const envoy_config_core_v3_Node* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct google_protobuf_Struct*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const struct google_protobuf_Struct*);
+}
+UPB_INLINE bool envoy_config_core_v3_Node_has_locality(const envoy_config_core_v3_Node* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_Node_clear_locality(const envoy_config_core_v3_Node* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_Node_has_locality(const envoy_config_core_v3_Node *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const envoy_config_core_v3_Locality* envoy_config_core_v3_Node_locality(const envoy_config_core_v3_Node* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const envoy_config_core_v3_Locality*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const envoy_config_core_v3_Locality*);
+}
+UPB_INLINE void envoy_config_core_v3_Node_clear_user_agent_name(const envoy_config_core_v3_Node* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_Node_user_agent_name(const envoy_config_core_v3_Node* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), upb_StringView);
+}
+UPB_INLINE bool envoy_config_core_v3_Node_has_user_agent_version(const envoy_config_core_v3_Node* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 7;
+}
+UPB_INLINE void envoy_config_core_v3_Node_clear_user_agent_version(const envoy_config_core_v3_Node* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_core_v3_Node_user_agent_version_type_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_Node_user_agent_version(const envoy_config_core_v3_Node* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 7, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_core_v3_Node_has_user_agent_build_version(const envoy_config_core_v3_Node* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 8;
+}
+UPB_INLINE void envoy_config_core_v3_Node_clear_user_agent_build_version(const envoy_config_core_v3_Node* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_BuildVersion*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_core_v3_Node_user_agent_version_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_BuildVersion* envoy_config_core_v3_Node_user_agent_build_version(const envoy_config_core_v3_Node* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_BuildVersion*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 8, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_Node_has_extensions(const envoy_config_core_v3_Node* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 88));
+}
+UPB_INLINE void envoy_config_core_v3_Node_clear_extensions(const envoy_config_core_v3_Node* msg) {
+ _upb_array_detach(msg, UPB_SIZE(48, 88));
+}
+UPB_INLINE const envoy_config_core_v3_Extension* const* envoy_config_core_v3_Node_extensions(const envoy_config_core_v3_Node* msg, size_t* len) {
+ return (const envoy_config_core_v3_Extension* const*)_upb_array_accessor(msg, UPB_SIZE(48, 88), len);
+}
+UPB_INLINE void envoy_config_core_v3_Node_clear_client_features(const envoy_config_core_v3_Node* msg) {
+ _upb_array_detach(msg, UPB_SIZE(52, 96));
+}
+UPB_INLINE upb_StringView const* envoy_config_core_v3_Node_client_features(const envoy_config_core_v3_Node* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(52, 96), len);
+}
+UPB_INLINE bool envoy_config_core_v3_Node_has_listening_addresses(const envoy_config_core_v3_Node* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(56, 104));
+}
+UPB_INLINE void envoy_config_core_v3_Node_clear_listening_addresses(const envoy_config_core_v3_Node* msg) {
+ _upb_array_detach(msg, UPB_SIZE(56, 104));
+}
+UPB_INLINE const struct envoy_config_core_v3_Address* const* envoy_config_core_v3_Node_listening_addresses(const envoy_config_core_v3_Node* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_Address* const*)_upb_array_accessor(msg, UPB_SIZE(56, 104), len);
+}
+UPB_INLINE bool envoy_config_core_v3_Node_has_dynamic_parameters(const envoy_config_core_v3_Node* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(60, 112));
+}
+UPB_INLINE void envoy_config_core_v3_Node_clear_dynamic_parameters(const envoy_config_core_v3_Node* msg) {
+ _upb_array_detach(msg, UPB_SIZE(60, 112));
+}
+UPB_INLINE size_t envoy_config_core_v3_Node_dynamic_parameters_size(const envoy_config_core_v3_Node* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(60, 112));
+}
+UPB_INLINE bool envoy_config_core_v3_Node_dynamic_parameters_get(const envoy_config_core_v3_Node* msg, upb_StringView key, struct xds_core_v3_ContextParams** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(60, 112), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const envoy_config_core_v3_Node_DynamicParametersEntry* envoy_config_core_v3_Node_dynamic_parameters_next(const envoy_config_core_v3_Node* msg, size_t* iter) {
+ return (const envoy_config_core_v3_Node_DynamicParametersEntry*)_upb_msg_map_next(msg, UPB_SIZE(60, 112), iter);
}
-UPB_INLINE bool envoy_config_core_v3_Node_has_user_agent_version(const envoy_config_core_v3_Node *msg) { return _upb_getoneofcase(msg, UPB_SIZE(60, 120)) == 7; }
-UPB_INLINE upb_StringView envoy_config_core_v3_Node_user_agent_version(const envoy_config_core_v3_Node *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(52, 104), UPB_SIZE(60, 120), 7, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_core_v3_Node_has_user_agent_build_version(const envoy_config_core_v3_Node *msg) { return _upb_getoneofcase(msg, UPB_SIZE(60, 120)) == 8; }
-UPB_INLINE const envoy_config_core_v3_BuildVersion* envoy_config_core_v3_Node_user_agent_build_version(const envoy_config_core_v3_Node *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_BuildVersion*, UPB_SIZE(52, 104), UPB_SIZE(60, 120), 8, NULL); }
-UPB_INLINE bool envoy_config_core_v3_Node_has_extensions(const envoy_config_core_v3_Node *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 72)); }
-UPB_INLINE const envoy_config_core_v3_Extension* const* envoy_config_core_v3_Node_extensions(const envoy_config_core_v3_Node *msg, size_t *len) { return (const envoy_config_core_v3_Extension* const*)_upb_array_accessor(msg, UPB_SIZE(36, 72), len); }
-UPB_INLINE upb_StringView const* envoy_config_core_v3_Node_client_features(const envoy_config_core_v3_Node *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(40, 80), len); }
-UPB_INLINE bool envoy_config_core_v3_Node_has_listening_addresses(const envoy_config_core_v3_Node *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 88)); }
-UPB_INLINE const struct envoy_config_core_v3_Address* const* envoy_config_core_v3_Node_listening_addresses(const envoy_config_core_v3_Node *msg, size_t *len) { return (const struct envoy_config_core_v3_Address* const*)_upb_array_accessor(msg, UPB_SIZE(44, 88), len); }
-UPB_INLINE bool envoy_config_core_v3_Node_has_dynamic_parameters(const envoy_config_core_v3_Node *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 96)); }
-UPB_INLINE size_t envoy_config_core_v3_Node_dynamic_parameters_size(const envoy_config_core_v3_Node *msg) {return _upb_msg_map_size(msg, UPB_SIZE(48, 96)); }
-UPB_INLINE bool envoy_config_core_v3_Node_dynamic_parameters_get(const envoy_config_core_v3_Node *msg, upb_StringView key, struct xds_core_v3_ContextParams* *val) { return _upb_msg_map_get(msg, UPB_SIZE(48, 96), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const envoy_config_core_v3_Node_DynamicParametersEntry* envoy_config_core_v3_Node_dynamic_parameters_next(const envoy_config_core_v3_Node *msg, size_t* iter) { return (const envoy_config_core_v3_Node_DynamicParametersEntry*)_upb_msg_map_next(msg, UPB_SIZE(48, 96), iter); }
UPB_INLINE void envoy_config_core_v3_Node_set_id(envoy_config_core_v3_Node *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_Node_set_cluster(envoy_config_core_v3_Node *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_Node_set_metadata(envoy_config_core_v3_Node *msg, struct google_protobuf_Struct* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct google_protobuf_Struct*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), struct google_protobuf_Struct*) = value;
}
-UPB_INLINE struct google_protobuf_Struct* envoy_config_core_v3_Node_mutable_metadata(envoy_config_core_v3_Node *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Struct* envoy_config_core_v3_Node_mutable_metadata(envoy_config_core_v3_Node* msg, upb_Arena* arena) {
struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)envoy_config_core_v3_Node_metadata(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Struct*)_upb_Message_New(&google_protobuf_Struct_msginit, arena);
@@ -429,9 +560,9 @@ UPB_INLINE struct google_protobuf_Struct* envoy_config_core_v3_Node_mutable_meta
}
UPB_INLINE void envoy_config_core_v3_Node_set_locality(envoy_config_core_v3_Node *msg, envoy_config_core_v3_Locality* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 64), envoy_config_core_v3_Locality*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), envoy_config_core_v3_Locality*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Locality* envoy_config_core_v3_Node_mutable_locality(envoy_config_core_v3_Node *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Locality* envoy_config_core_v3_Node_mutable_locality(envoy_config_core_v3_Node* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Locality* sub = (struct envoy_config_core_v3_Locality*)envoy_config_core_v3_Node_locality(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Locality*)_upb_Message_New(&envoy_config_core_v3_Locality_msginit, arena);
@@ -441,15 +572,15 @@ UPB_INLINE struct envoy_config_core_v3_Locality* envoy_config_core_v3_Node_mutab
return sub;
}
UPB_INLINE void envoy_config_core_v3_Node_set_user_agent_name(envoy_config_core_v3_Node *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_Node_set_user_agent_version(envoy_config_core_v3_Node *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(52, 104), value, UPB_SIZE(60, 120), 7);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 7);
}
UPB_INLINE void envoy_config_core_v3_Node_set_user_agent_build_version(envoy_config_core_v3_Node *msg, envoy_config_core_v3_BuildVersion* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_BuildVersion*, UPB_SIZE(52, 104), value, UPB_SIZE(60, 120), 8);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_BuildVersion*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 8);
}
-UPB_INLINE struct envoy_config_core_v3_BuildVersion* envoy_config_core_v3_Node_mutable_user_agent_build_version(envoy_config_core_v3_Node *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_BuildVersion* envoy_config_core_v3_Node_mutable_user_agent_build_version(envoy_config_core_v3_Node* msg, upb_Arena* arena) {
struct envoy_config_core_v3_BuildVersion* sub = (struct envoy_config_core_v3_BuildVersion*)envoy_config_core_v3_Node_user_agent_build_version(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_BuildVersion*)_upb_Message_New(&envoy_config_core_v3_BuildVersion_msginit, arena);
@@ -458,56 +589,61 @@ UPB_INLINE struct envoy_config_core_v3_BuildVersion* envoy_config_core_v3_Node_m
}
return sub;
}
-UPB_INLINE envoy_config_core_v3_Extension** envoy_config_core_v3_Node_mutable_extensions(envoy_config_core_v3_Node *msg, size_t *len) {
- return (envoy_config_core_v3_Extension**)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 72), len);
+UPB_INLINE envoy_config_core_v3_Extension** envoy_config_core_v3_Node_mutable_extensions(envoy_config_core_v3_Node* msg, size_t* len) {
+ return (envoy_config_core_v3_Extension**)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 88), len);
}
-UPB_INLINE envoy_config_core_v3_Extension** envoy_config_core_v3_Node_resize_extensions(envoy_config_core_v3_Node *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_core_v3_Extension**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 72), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_core_v3_Extension** envoy_config_core_v3_Node_resize_extensions(envoy_config_core_v3_Node* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_core_v3_Extension**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 88), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_Extension* envoy_config_core_v3_Node_add_extensions(envoy_config_core_v3_Node *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Extension* envoy_config_core_v3_Node_add_extensions(envoy_config_core_v3_Node* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Extension* sub = (struct envoy_config_core_v3_Extension*)_upb_Message_New(&envoy_config_core_v3_Extension_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(36, 72), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(48, 88), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE upb_StringView* envoy_config_core_v3_Node_mutable_client_features(envoy_config_core_v3_Node *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 80), len);
+UPB_INLINE upb_StringView* envoy_config_core_v3_Node_mutable_client_features(envoy_config_core_v3_Node* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 96), len);
}
-UPB_INLINE upb_StringView* envoy_config_core_v3_Node_resize_client_features(envoy_config_core_v3_Node *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 80), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_config_core_v3_Node_resize_client_features(envoy_config_core_v3_Node* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 96), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_core_v3_Node_add_client_features(envoy_config_core_v3_Node *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 80), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_core_v3_Node_add_client_features(envoy_config_core_v3_Node* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(52, 96), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE struct envoy_config_core_v3_Address** envoy_config_core_v3_Node_mutable_listening_addresses(envoy_config_core_v3_Node *msg, size_t *len) {
- return (struct envoy_config_core_v3_Address**)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 88), len);
+UPB_INLINE struct envoy_config_core_v3_Address** envoy_config_core_v3_Node_mutable_listening_addresses(envoy_config_core_v3_Node* msg, size_t* len) {
+ return (struct envoy_config_core_v3_Address**)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 104), len);
}
-UPB_INLINE struct envoy_config_core_v3_Address** envoy_config_core_v3_Node_resize_listening_addresses(envoy_config_core_v3_Node *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_Address**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 88), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_Address** envoy_config_core_v3_Node_resize_listening_addresses(envoy_config_core_v3_Node* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_Address**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 104), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_core_v3_Node_add_listening_addresses(envoy_config_core_v3_Node *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_core_v3_Node_add_listening_addresses(envoy_config_core_v3_Node* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Address* sub = (struct envoy_config_core_v3_Address*)_upb_Message_New(&envoy_config_core_v3_Address_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(44, 88), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(56, 104), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE void envoy_config_core_v3_Node_dynamic_parameters_clear(envoy_config_core_v3_Node *msg) { _upb_msg_map_clear(msg, UPB_SIZE(48, 96)); }
-UPB_INLINE bool envoy_config_core_v3_Node_dynamic_parameters_set(envoy_config_core_v3_Node *msg, upb_StringView key, struct xds_core_v3_ContextParams* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(48, 96), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool envoy_config_core_v3_Node_dynamic_parameters_delete(envoy_config_core_v3_Node *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(48, 96), &key, 0); }
-UPB_INLINE envoy_config_core_v3_Node_DynamicParametersEntry* envoy_config_core_v3_Node_dynamic_parameters_nextmutable(envoy_config_core_v3_Node *msg, size_t* iter) { return (envoy_config_core_v3_Node_DynamicParametersEntry*)_upb_msg_map_next(msg, UPB_SIZE(48, 96), iter); }
+UPB_INLINE void envoy_config_core_v3_Node_dynamic_parameters_clear(envoy_config_core_v3_Node* msg) { _upb_msg_map_clear(msg, UPB_SIZE(60, 112)); }
+UPB_INLINE bool envoy_config_core_v3_Node_dynamic_parameters_set(envoy_config_core_v3_Node* msg, upb_StringView key, struct xds_core_v3_ContextParams* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(60, 112), &key, 0, &val, sizeof(val), a);
+}
+UPB_INLINE bool envoy_config_core_v3_Node_dynamic_parameters_delete(envoy_config_core_v3_Node* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(60, 112), &key, 0);
+}
+UPB_INLINE envoy_config_core_v3_Node_DynamicParametersEntry* envoy_config_core_v3_Node_dynamic_parameters_nextmutable(envoy_config_core_v3_Node* msg, size_t* iter) {
+ return (envoy_config_core_v3_Node_DynamicParametersEntry*)_upb_msg_map_next(msg, UPB_SIZE(60, 112), iter);
+}
/* envoy.config.core.v3.Node.DynamicParametersEntry */
-UPB_INLINE upb_StringView envoy_config_core_v3_Node_DynamicParametersEntry_key(const envoy_config_core_v3_Node_DynamicParametersEntry *msg) {
+UPB_INLINE upb_StringView envoy_config_core_v3_Node_DynamicParametersEntry_key(const envoy_config_core_v3_Node_DynamicParametersEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE bool envoy_config_core_v3_Node_DynamicParametersEntry_has_value(const envoy_config_core_v3_Node_DynamicParametersEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct xds_core_v3_ContextParams* envoy_config_core_v3_Node_DynamicParametersEntry_value(const envoy_config_core_v3_Node_DynamicParametersEntry *msg) {
+UPB_INLINE bool envoy_config_core_v3_Node_DynamicParametersEntry_has_value(const envoy_config_core_v3_Node_DynamicParametersEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const struct xds_core_v3_ContextParams* envoy_config_core_v3_Node_DynamicParametersEntry_value(const envoy_config_core_v3_Node_DynamicParametersEntry* msg) {
struct xds_core_v3_ContextParams* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -542,39 +678,79 @@ UPB_INLINE envoy_config_core_v3_Metadata* envoy_config_core_v3_Metadata_parse_ex
return ret;
}
UPB_INLINE char* envoy_config_core_v3_Metadata_serialize(const envoy_config_core_v3_Metadata* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Metadata_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Metadata_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_Metadata_serialize_ex(const envoy_config_core_v3_Metadata* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Metadata_msginit, options, arena, len);
-}
-UPB_INLINE bool envoy_config_core_v3_Metadata_has_filter_metadata(const envoy_config_core_v3_Metadata *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE size_t envoy_config_core_v3_Metadata_filter_metadata_size(const envoy_config_core_v3_Metadata *msg) {return _upb_msg_map_size(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE bool envoy_config_core_v3_Metadata_filter_metadata_get(const envoy_config_core_v3_Metadata *msg, upb_StringView key, struct google_protobuf_Struct* *val) { return _upb_msg_map_get(msg, UPB_SIZE(0, 0), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const envoy_config_core_v3_Metadata_FilterMetadataEntry* envoy_config_core_v3_Metadata_filter_metadata_next(const envoy_config_core_v3_Metadata *msg, size_t* iter) { return (const envoy_config_core_v3_Metadata_FilterMetadataEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter); }
-UPB_INLINE bool envoy_config_core_v3_Metadata_has_typed_filter_metadata(const envoy_config_core_v3_Metadata *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE size_t envoy_config_core_v3_Metadata_typed_filter_metadata_size(const envoy_config_core_v3_Metadata *msg) {return _upb_msg_map_size(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE bool envoy_config_core_v3_Metadata_typed_filter_metadata_get(const envoy_config_core_v3_Metadata *msg, upb_StringView key, struct google_protobuf_Any* *val) { return _upb_msg_map_get(msg, UPB_SIZE(4, 8), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const envoy_config_core_v3_Metadata_TypedFilterMetadataEntry* envoy_config_core_v3_Metadata_typed_filter_metadata_next(const envoy_config_core_v3_Metadata *msg, size_t* iter) { return (const envoy_config_core_v3_Metadata_TypedFilterMetadataEntry*)_upb_msg_map_next(msg, UPB_SIZE(4, 8), iter); }
-
-UPB_INLINE void envoy_config_core_v3_Metadata_filter_metadata_clear(envoy_config_core_v3_Metadata *msg) { _upb_msg_map_clear(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE bool envoy_config_core_v3_Metadata_filter_metadata_set(envoy_config_core_v3_Metadata *msg, upb_StringView key, struct google_protobuf_Struct* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(0, 0), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool envoy_config_core_v3_Metadata_filter_metadata_delete(envoy_config_core_v3_Metadata *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(0, 0), &key, 0); }
-UPB_INLINE envoy_config_core_v3_Metadata_FilterMetadataEntry* envoy_config_core_v3_Metadata_filter_metadata_nextmutable(envoy_config_core_v3_Metadata *msg, size_t* iter) { return (envoy_config_core_v3_Metadata_FilterMetadataEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter); }
-UPB_INLINE void envoy_config_core_v3_Metadata_typed_filter_metadata_clear(envoy_config_core_v3_Metadata *msg) { _upb_msg_map_clear(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE bool envoy_config_core_v3_Metadata_typed_filter_metadata_set(envoy_config_core_v3_Metadata *msg, upb_StringView key, struct google_protobuf_Any* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(4, 8), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool envoy_config_core_v3_Metadata_typed_filter_metadata_delete(envoy_config_core_v3_Metadata *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(4, 8), &key, 0); }
-UPB_INLINE envoy_config_core_v3_Metadata_TypedFilterMetadataEntry* envoy_config_core_v3_Metadata_typed_filter_metadata_nextmutable(envoy_config_core_v3_Metadata *msg, size_t* iter) { return (envoy_config_core_v3_Metadata_TypedFilterMetadataEntry*)_upb_msg_map_next(msg, UPB_SIZE(4, 8), iter); }
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Metadata_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_Metadata_has_filter_metadata(const envoy_config_core_v3_Metadata* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_core_v3_Metadata_clear_filter_metadata(const envoy_config_core_v3_Metadata* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE size_t envoy_config_core_v3_Metadata_filter_metadata_size(const envoy_config_core_v3_Metadata* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE bool envoy_config_core_v3_Metadata_filter_metadata_get(const envoy_config_core_v3_Metadata* msg, upb_StringView key, struct google_protobuf_Struct** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(0, 0), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const envoy_config_core_v3_Metadata_FilterMetadataEntry* envoy_config_core_v3_Metadata_filter_metadata_next(const envoy_config_core_v3_Metadata* msg, size_t* iter) {
+ return (const envoy_config_core_v3_Metadata_FilterMetadataEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter);
+}
+UPB_INLINE bool envoy_config_core_v3_Metadata_has_typed_filter_metadata(const envoy_config_core_v3_Metadata* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_config_core_v3_Metadata_clear_typed_filter_metadata(const envoy_config_core_v3_Metadata* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE size_t envoy_config_core_v3_Metadata_typed_filter_metadata_size(const envoy_config_core_v3_Metadata* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE bool envoy_config_core_v3_Metadata_typed_filter_metadata_get(const envoy_config_core_v3_Metadata* msg, upb_StringView key, struct google_protobuf_Any** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(4, 8), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const envoy_config_core_v3_Metadata_TypedFilterMetadataEntry* envoy_config_core_v3_Metadata_typed_filter_metadata_next(const envoy_config_core_v3_Metadata* msg, size_t* iter) {
+ return (const envoy_config_core_v3_Metadata_TypedFilterMetadataEntry*)_upb_msg_map_next(msg, UPB_SIZE(4, 8), iter);
+}
+
+UPB_INLINE void envoy_config_core_v3_Metadata_filter_metadata_clear(envoy_config_core_v3_Metadata* msg) { _upb_msg_map_clear(msg, UPB_SIZE(0, 0)); }
+UPB_INLINE bool envoy_config_core_v3_Metadata_filter_metadata_set(envoy_config_core_v3_Metadata* msg, upb_StringView key, struct google_protobuf_Struct* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(0, 0), &key, 0, &val, sizeof(val), a);
+}
+UPB_INLINE bool envoy_config_core_v3_Metadata_filter_metadata_delete(envoy_config_core_v3_Metadata* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(0, 0), &key, 0);
+}
+UPB_INLINE envoy_config_core_v3_Metadata_FilterMetadataEntry* envoy_config_core_v3_Metadata_filter_metadata_nextmutable(envoy_config_core_v3_Metadata* msg, size_t* iter) {
+ return (envoy_config_core_v3_Metadata_FilterMetadataEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter);
+}
+UPB_INLINE void envoy_config_core_v3_Metadata_typed_filter_metadata_clear(envoy_config_core_v3_Metadata* msg) { _upb_msg_map_clear(msg, UPB_SIZE(4, 8)); }
+UPB_INLINE bool envoy_config_core_v3_Metadata_typed_filter_metadata_set(envoy_config_core_v3_Metadata* msg, upb_StringView key, struct google_protobuf_Any* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(4, 8), &key, 0, &val, sizeof(val), a);
+}
+UPB_INLINE bool envoy_config_core_v3_Metadata_typed_filter_metadata_delete(envoy_config_core_v3_Metadata* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(4, 8), &key, 0);
+}
+UPB_INLINE envoy_config_core_v3_Metadata_TypedFilterMetadataEntry* envoy_config_core_v3_Metadata_typed_filter_metadata_nextmutable(envoy_config_core_v3_Metadata* msg, size_t* iter) {
+ return (envoy_config_core_v3_Metadata_TypedFilterMetadataEntry*)_upb_msg_map_next(msg, UPB_SIZE(4, 8), iter);
+}
/* envoy.config.core.v3.Metadata.FilterMetadataEntry */
-UPB_INLINE upb_StringView envoy_config_core_v3_Metadata_FilterMetadataEntry_key(const envoy_config_core_v3_Metadata_FilterMetadataEntry *msg) {
+UPB_INLINE upb_StringView envoy_config_core_v3_Metadata_FilterMetadataEntry_key(const envoy_config_core_v3_Metadata_FilterMetadataEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE bool envoy_config_core_v3_Metadata_FilterMetadataEntry_has_value(const envoy_config_core_v3_Metadata_FilterMetadataEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct google_protobuf_Struct* envoy_config_core_v3_Metadata_FilterMetadataEntry_value(const envoy_config_core_v3_Metadata_FilterMetadataEntry *msg) {
+UPB_INLINE bool envoy_config_core_v3_Metadata_FilterMetadataEntry_has_value(const envoy_config_core_v3_Metadata_FilterMetadataEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const struct google_protobuf_Struct* envoy_config_core_v3_Metadata_FilterMetadataEntry_value(const envoy_config_core_v3_Metadata_FilterMetadataEntry* msg) {
struct google_protobuf_Struct* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -586,13 +762,15 @@ UPB_INLINE void envoy_config_core_v3_Metadata_FilterMetadataEntry_set_value(envo
/* envoy.config.core.v3.Metadata.TypedFilterMetadataEntry */
-UPB_INLINE upb_StringView envoy_config_core_v3_Metadata_TypedFilterMetadataEntry_key(const envoy_config_core_v3_Metadata_TypedFilterMetadataEntry *msg) {
+UPB_INLINE upb_StringView envoy_config_core_v3_Metadata_TypedFilterMetadataEntry_key(const envoy_config_core_v3_Metadata_TypedFilterMetadataEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE bool envoy_config_core_v3_Metadata_TypedFilterMetadataEntry_has_value(const envoy_config_core_v3_Metadata_TypedFilterMetadataEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_core_v3_Metadata_TypedFilterMetadataEntry_value(const envoy_config_core_v3_Metadata_TypedFilterMetadataEntry *msg) {
+UPB_INLINE bool envoy_config_core_v3_Metadata_TypedFilterMetadataEntry_has_value(const envoy_config_core_v3_Metadata_TypedFilterMetadataEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_core_v3_Metadata_TypedFilterMetadataEntry_value(const envoy_config_core_v3_Metadata_TypedFilterMetadataEntry* msg) {
struct google_protobuf_Any* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -627,15 +805,25 @@ UPB_INLINE envoy_config_core_v3_RuntimeUInt32* envoy_config_core_v3_RuntimeUInt3
return ret;
}
UPB_INLINE char* envoy_config_core_v3_RuntimeUInt32_serialize(const envoy_config_core_v3_RuntimeUInt32* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RuntimeUInt32_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RuntimeUInt32_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_RuntimeUInt32_serialize_ex(const envoy_config_core_v3_RuntimeUInt32* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RuntimeUInt32_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RuntimeUInt32_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_RuntimeUInt32_clear_default_value(const envoy_config_core_v3_RuntimeUInt32* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_config_core_v3_RuntimeUInt32_default_value(const envoy_config_core_v3_RuntimeUInt32* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t);
}
+UPB_INLINE void envoy_config_core_v3_RuntimeUInt32_clear_runtime_key(const envoy_config_core_v3_RuntimeUInt32* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_RuntimeUInt32_runtime_key(const envoy_config_core_v3_RuntimeUInt32* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
@@ -672,25 +860,37 @@ UPB_INLINE envoy_config_core_v3_RuntimePercent* envoy_config_core_v3_RuntimePerc
return ret;
}
UPB_INLINE char* envoy_config_core_v3_RuntimePercent_serialize(const envoy_config_core_v3_RuntimePercent* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RuntimePercent_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RuntimePercent_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_RuntimePercent_serialize_ex(const envoy_config_core_v3_RuntimePercent* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RuntimePercent_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RuntimePercent_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_RuntimePercent_has_default_value(const envoy_config_core_v3_RuntimePercent* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_RuntimePercent_clear_default_value(const envoy_config_core_v3_RuntimePercent* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_RuntimePercent_has_default_value(const envoy_config_core_v3_RuntimePercent *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_v3_Percent* envoy_config_core_v3_RuntimePercent_default_value(const envoy_config_core_v3_RuntimePercent* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_type_v3_Percent*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_v3_Percent*);
+}
+UPB_INLINE void envoy_config_core_v3_RuntimePercent_clear_runtime_key(const envoy_config_core_v3_RuntimePercent* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_RuntimePercent_runtime_key(const envoy_config_core_v3_RuntimePercent* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
UPB_INLINE void envoy_config_core_v3_RuntimePercent_set_default_value(envoy_config_core_v3_RuntimePercent *msg, struct envoy_type_v3_Percent* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_type_v3_Percent*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_v3_Percent*) = value;
}
-UPB_INLINE struct envoy_type_v3_Percent* envoy_config_core_v3_RuntimePercent_mutable_default_value(envoy_config_core_v3_RuntimePercent *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Percent* envoy_config_core_v3_RuntimePercent_mutable_default_value(envoy_config_core_v3_RuntimePercent* msg, upb_Arena* arena) {
struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_config_core_v3_RuntimePercent_default_value(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
@@ -700,7 +900,7 @@ UPB_INLINE struct envoy_type_v3_Percent* envoy_config_core_v3_RuntimePercent_mut
return sub;
}
UPB_INLINE void envoy_config_core_v3_RuntimePercent_set_runtime_key(envoy_config_core_v3_RuntimePercent *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
/* envoy.config.core.v3.RuntimeDouble */
@@ -728,24 +928,34 @@ UPB_INLINE envoy_config_core_v3_RuntimeDouble* envoy_config_core_v3_RuntimeDoubl
return ret;
}
UPB_INLINE char* envoy_config_core_v3_RuntimeDouble_serialize(const envoy_config_core_v3_RuntimeDouble* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RuntimeDouble_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RuntimeDouble_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_RuntimeDouble_serialize_ex(const envoy_config_core_v3_RuntimeDouble* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RuntimeDouble_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RuntimeDouble_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_RuntimeDouble_clear_default_value(const envoy_config_core_v3_RuntimeDouble* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), double) = 0;
}
UPB_INLINE double envoy_config_core_v3_RuntimeDouble_default_value(const envoy_config_core_v3_RuntimeDouble* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), double);
+}
+UPB_INLINE void envoy_config_core_v3_RuntimeDouble_clear_runtime_key(const envoy_config_core_v3_RuntimeDouble* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_RuntimeDouble_runtime_key(const envoy_config_core_v3_RuntimeDouble* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
UPB_INLINE void envoy_config_core_v3_RuntimeDouble_set_default_value(envoy_config_core_v3_RuntimeDouble *msg, double value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), double) = value;
}
UPB_INLINE void envoy_config_core_v3_RuntimeDouble_set_runtime_key(envoy_config_core_v3_RuntimeDouble *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
/* envoy.config.core.v3.RuntimeFeatureFlag */
@@ -773,25 +983,37 @@ UPB_INLINE envoy_config_core_v3_RuntimeFeatureFlag* envoy_config_core_v3_Runtime
return ret;
}
UPB_INLINE char* envoy_config_core_v3_RuntimeFeatureFlag_serialize(const envoy_config_core_v3_RuntimeFeatureFlag* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RuntimeFeatureFlag_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RuntimeFeatureFlag_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_RuntimeFeatureFlag_serialize_ex(const envoy_config_core_v3_RuntimeFeatureFlag* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RuntimeFeatureFlag_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RuntimeFeatureFlag_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_RuntimeFeatureFlag_has_default_value(const envoy_config_core_v3_RuntimeFeatureFlag* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_RuntimeFeatureFlag_clear_default_value(const envoy_config_core_v3_RuntimeFeatureFlag* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_RuntimeFeatureFlag_has_default_value(const envoy_config_core_v3_RuntimeFeatureFlag *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_core_v3_RuntimeFeatureFlag_default_value(const envoy_config_core_v3_RuntimeFeatureFlag* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE void envoy_config_core_v3_RuntimeFeatureFlag_clear_runtime_key(const envoy_config_core_v3_RuntimeFeatureFlag* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_RuntimeFeatureFlag_runtime_key(const envoy_config_core_v3_RuntimeFeatureFlag* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
UPB_INLINE void envoy_config_core_v3_RuntimeFeatureFlag_set_default_value(envoy_config_core_v3_RuntimeFeatureFlag *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_RuntimeFeatureFlag_mutable_default_value(envoy_config_core_v3_RuntimeFeatureFlag *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_RuntimeFeatureFlag_mutable_default_value(envoy_config_core_v3_RuntimeFeatureFlag* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_core_v3_RuntimeFeatureFlag_default_value(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -801,7 +1023,7 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_RuntimeFeature
return sub;
}
UPB_INLINE void envoy_config_core_v3_RuntimeFeatureFlag_set_runtime_key(envoy_config_core_v3_RuntimeFeatureFlag *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
/* envoy.config.core.v3.QueryParameter */
@@ -829,15 +1051,25 @@ UPB_INLINE envoy_config_core_v3_QueryParameter* envoy_config_core_v3_QueryParame
return ret;
}
UPB_INLINE char* envoy_config_core_v3_QueryParameter_serialize(const envoy_config_core_v3_QueryParameter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_QueryParameter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_QueryParameter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_QueryParameter_serialize_ex(const envoy_config_core_v3_QueryParameter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_QueryParameter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_QueryParameter_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_QueryParameter_clear_key(const envoy_config_core_v3_QueryParameter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_QueryParameter_key(const envoy_config_core_v3_QueryParameter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_QueryParameter_clear_value(const envoy_config_core_v3_QueryParameter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_QueryParameter_value(const envoy_config_core_v3_QueryParameter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
@@ -874,15 +1106,25 @@ UPB_INLINE envoy_config_core_v3_HeaderValue* envoy_config_core_v3_HeaderValue_pa
return ret;
}
UPB_INLINE char* envoy_config_core_v3_HeaderValue_serialize(const envoy_config_core_v3_HeaderValue* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HeaderValue_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HeaderValue_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_HeaderValue_serialize_ex(const envoy_config_core_v3_HeaderValue* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HeaderValue_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HeaderValue_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_HeaderValue_clear_key(const envoy_config_core_v3_HeaderValue* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_HeaderValue_key(const envoy_config_core_v3_HeaderValue* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_HeaderValue_clear_value(const envoy_config_core_v3_HeaderValue* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_HeaderValue_value(const envoy_config_core_v3_HeaderValue* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
@@ -919,29 +1161,52 @@ UPB_INLINE envoy_config_core_v3_HeaderValueOption* envoy_config_core_v3_HeaderVa
return ret;
}
UPB_INLINE char* envoy_config_core_v3_HeaderValueOption_serialize(const envoy_config_core_v3_HeaderValueOption* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HeaderValueOption_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HeaderValueOption_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_HeaderValueOption_serialize_ex(const envoy_config_core_v3_HeaderValueOption* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HeaderValueOption_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HeaderValueOption_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_HeaderValueOption_has_header(const envoy_config_core_v3_HeaderValueOption* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_HeaderValueOption_clear_header(const envoy_config_core_v3_HeaderValueOption* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HeaderValueOption_has_header(const envoy_config_core_v3_HeaderValueOption *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_core_v3_HeaderValue* envoy_config_core_v3_HeaderValueOption_header(const envoy_config_core_v3_HeaderValueOption* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const envoy_config_core_v3_HeaderValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const envoy_config_core_v3_HeaderValue*);
+}
+UPB_INLINE bool envoy_config_core_v3_HeaderValueOption_has_append(const envoy_config_core_v3_HeaderValueOption* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_HeaderValueOption_clear_append(const envoy_config_core_v3_HeaderValueOption* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HeaderValueOption_has_append(const envoy_config_core_v3_HeaderValueOption *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_core_v3_HeaderValueOption_append(const envoy_config_core_v3_HeaderValueOption* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE void envoy_config_core_v3_HeaderValueOption_clear_append_action(const envoy_config_core_v3_HeaderValueOption* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_core_v3_HeaderValueOption_append_action(const envoy_config_core_v3_HeaderValueOption* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
+UPB_INLINE void envoy_config_core_v3_HeaderValueOption_clear_keep_empty_value(const envoy_config_core_v3_HeaderValueOption* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
+}
+UPB_INLINE bool envoy_config_core_v3_HeaderValueOption_keep_empty_value(const envoy_config_core_v3_HeaderValueOption* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+}
UPB_INLINE void envoy_config_core_v3_HeaderValueOption_set_header(envoy_config_core_v3_HeaderValueOption *msg, envoy_config_core_v3_HeaderValue* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), envoy_config_core_v3_HeaderValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), envoy_config_core_v3_HeaderValue*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValue* envoy_config_core_v3_HeaderValueOption_mutable_header(envoy_config_core_v3_HeaderValueOption *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValue* envoy_config_core_v3_HeaderValueOption_mutable_header(envoy_config_core_v3_HeaderValueOption* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HeaderValue* sub = (struct envoy_config_core_v3_HeaderValue*)envoy_config_core_v3_HeaderValueOption_header(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_HeaderValue*)_upb_Message_New(&envoy_config_core_v3_HeaderValue_msginit, arena);
@@ -952,9 +1217,9 @@ UPB_INLINE struct envoy_config_core_v3_HeaderValue* envoy_config_core_v3_HeaderV
}
UPB_INLINE void envoy_config_core_v3_HeaderValueOption_set_append(envoy_config_core_v3_HeaderValueOption *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_HeaderValueOption_mutable_append(envoy_config_core_v3_HeaderValueOption *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_HeaderValueOption_mutable_append(envoy_config_core_v3_HeaderValueOption* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_core_v3_HeaderValueOption_append(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -966,6 +1231,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_HeaderValueOpt
UPB_INLINE void envoy_config_core_v3_HeaderValueOption_set_append_action(envoy_config_core_v3_HeaderValueOption *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
+UPB_INLINE void envoy_config_core_v3_HeaderValueOption_set_keep_empty_value(envoy_config_core_v3_HeaderValueOption *msg, bool value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
+}
/* envoy.config.core.v3.HeaderMap */
@@ -992,25 +1260,35 @@ UPB_INLINE envoy_config_core_v3_HeaderMap* envoy_config_core_v3_HeaderMap_parse_
return ret;
}
UPB_INLINE char* envoy_config_core_v3_HeaderMap_serialize(const envoy_config_core_v3_HeaderMap* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HeaderMap_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HeaderMap_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_HeaderMap_serialize_ex(const envoy_config_core_v3_HeaderMap* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HeaderMap_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HeaderMap_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_HeaderMap_has_headers(const envoy_config_core_v3_HeaderMap* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_core_v3_HeaderMap_clear_headers(const envoy_config_core_v3_HeaderMap* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_core_v3_HeaderValue* const* envoy_config_core_v3_HeaderMap_headers(const envoy_config_core_v3_HeaderMap* msg, size_t* len) {
+ return (const envoy_config_core_v3_HeaderValue* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_core_v3_HeaderMap_has_headers(const envoy_config_core_v3_HeaderMap *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_core_v3_HeaderValue* const* envoy_config_core_v3_HeaderMap_headers(const envoy_config_core_v3_HeaderMap *msg, size_t *len) { return (const envoy_config_core_v3_HeaderValue* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_core_v3_HeaderValue** envoy_config_core_v3_HeaderMap_mutable_headers(envoy_config_core_v3_HeaderMap *msg, size_t *len) {
+UPB_INLINE envoy_config_core_v3_HeaderValue** envoy_config_core_v3_HeaderMap_mutable_headers(envoy_config_core_v3_HeaderMap* msg, size_t* len) {
return (envoy_config_core_v3_HeaderValue**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_core_v3_HeaderValue** envoy_config_core_v3_HeaderMap_resize_headers(envoy_config_core_v3_HeaderMap *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_core_v3_HeaderValue** envoy_config_core_v3_HeaderMap_resize_headers(envoy_config_core_v3_HeaderMap* msg, size_t len, upb_Arena* arena) {
return (envoy_config_core_v3_HeaderValue**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValue* envoy_config_core_v3_HeaderMap_add_headers(envoy_config_core_v3_HeaderMap *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValue* envoy_config_core_v3_HeaderMap_add_headers(envoy_config_core_v3_HeaderMap* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HeaderValue* sub = (struct envoy_config_core_v3_HeaderValue*)_upb_Message_New(&envoy_config_core_v3_HeaderValue_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1040,11 +1318,18 @@ UPB_INLINE envoy_config_core_v3_WatchedDirectory* envoy_config_core_v3_WatchedDi
return ret;
}
UPB_INLINE char* envoy_config_core_v3_WatchedDirectory_serialize(const envoy_config_core_v3_WatchedDirectory* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_WatchedDirectory_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_WatchedDirectory_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_WatchedDirectory_serialize_ex(const envoy_config_core_v3_WatchedDirectory* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_WatchedDirectory_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_WatchedDirectory_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_WatchedDirectory_clear_path(const envoy_config_core_v3_WatchedDirectory* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_WatchedDirectory_path(const envoy_config_core_v3_WatchedDirectory* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -1079,11 +1364,15 @@ UPB_INLINE envoy_config_core_v3_DataSource* envoy_config_core_v3_DataSource_pars
return ret;
}
UPB_INLINE char* envoy_config_core_v3_DataSource_serialize(const envoy_config_core_v3_DataSource* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_DataSource_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_DataSource_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_DataSource_serialize_ex(const envoy_config_core_v3_DataSource* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_DataSource_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_DataSource_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_DataSource_specifier_filename = 1,
@@ -1092,28 +1381,57 @@ typedef enum {
envoy_config_core_v3_DataSource_specifier_environment_variable = 4,
envoy_config_core_v3_DataSource_specifier_NOT_SET = 0
} envoy_config_core_v3_DataSource_specifier_oneofcases;
-UPB_INLINE envoy_config_core_v3_DataSource_specifier_oneofcases envoy_config_core_v3_DataSource_specifier_case(const envoy_config_core_v3_DataSource* msg) { return (envoy_config_core_v3_DataSource_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_DataSource_has_filename(const envoy_config_core_v3_DataSource *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE upb_StringView envoy_config_core_v3_DataSource_filename(const envoy_config_core_v3_DataSource *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_core_v3_DataSource_has_inline_bytes(const envoy_config_core_v3_DataSource *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 2; }
-UPB_INLINE upb_StringView envoy_config_core_v3_DataSource_inline_bytes(const envoy_config_core_v3_DataSource *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 2, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_core_v3_DataSource_has_inline_string(const envoy_config_core_v3_DataSource *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 3; }
-UPB_INLINE upb_StringView envoy_config_core_v3_DataSource_inline_string(const envoy_config_core_v3_DataSource *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 3, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_core_v3_DataSource_has_environment_variable(const envoy_config_core_v3_DataSource *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 4; }
-UPB_INLINE upb_StringView envoy_config_core_v3_DataSource_environment_variable(const envoy_config_core_v3_DataSource *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 4, upb_StringView_FromString("")); }
+UPB_INLINE envoy_config_core_v3_DataSource_specifier_oneofcases envoy_config_core_v3_DataSource_specifier_case(const envoy_config_core_v3_DataSource* msg) {
+ return (envoy_config_core_v3_DataSource_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_DataSource_has_filename(const envoy_config_core_v3_DataSource* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_core_v3_DataSource_clear_filename(const envoy_config_core_v3_DataSource* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_core_v3_DataSource_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_DataSource_filename(const envoy_config_core_v3_DataSource* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_core_v3_DataSource_has_inline_bytes(const envoy_config_core_v3_DataSource* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_core_v3_DataSource_clear_inline_bytes(const envoy_config_core_v3_DataSource* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_core_v3_DataSource_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_DataSource_inline_bytes(const envoy_config_core_v3_DataSource* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_core_v3_DataSource_has_inline_string(const envoy_config_core_v3_DataSource* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_core_v3_DataSource_clear_inline_string(const envoy_config_core_v3_DataSource* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_core_v3_DataSource_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_DataSource_inline_string(const envoy_config_core_v3_DataSource* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_core_v3_DataSource_has_environment_variable(const envoy_config_core_v3_DataSource* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_config_core_v3_DataSource_clear_environment_variable(const envoy_config_core_v3_DataSource* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_core_v3_DataSource_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_DataSource_environment_variable(const envoy_config_core_v3_DataSource* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, upb_StringView_FromString(""));
+}
UPB_INLINE void envoy_config_core_v3_DataSource_set_filename(envoy_config_core_v3_DataSource *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
UPB_INLINE void envoy_config_core_v3_DataSource_set_inline_bytes(envoy_config_core_v3_DataSource *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
UPB_INLINE void envoy_config_core_v3_DataSource_set_inline_string(envoy_config_core_v3_DataSource *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 3);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
UPB_INLINE void envoy_config_core_v3_DataSource_set_environment_variable(envoy_config_core_v3_DataSource *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 4);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
/* envoy.config.core.v3.RetryPolicy */
@@ -1141,17 +1459,31 @@ UPB_INLINE envoy_config_core_v3_RetryPolicy* envoy_config_core_v3_RetryPolicy_pa
return ret;
}
UPB_INLINE char* envoy_config_core_v3_RetryPolicy_serialize(const envoy_config_core_v3_RetryPolicy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RetryPolicy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RetryPolicy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_RetryPolicy_serialize_ex(const envoy_config_core_v3_RetryPolicy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RetryPolicy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RetryPolicy_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_RetryPolicy_has_retry_back_off(const envoy_config_core_v3_RetryPolicy* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_RetryPolicy_clear_retry_back_off(const envoy_config_core_v3_RetryPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_RetryPolicy_has_retry_back_off(const envoy_config_core_v3_RetryPolicy *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_BackoffStrategy* envoy_config_core_v3_RetryPolicy_retry_back_off(const envoy_config_core_v3_RetryPolicy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_BackoffStrategy*);
}
-UPB_INLINE bool envoy_config_core_v3_RetryPolicy_has_num_retries(const envoy_config_core_v3_RetryPolicy *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_RetryPolicy_has_num_retries(const envoy_config_core_v3_RetryPolicy* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_RetryPolicy_clear_num_retries(const envoy_config_core_v3_RetryPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_RetryPolicy_num_retries(const envoy_config_core_v3_RetryPolicy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_UInt32Value*);
}
@@ -1160,7 +1492,7 @@ UPB_INLINE void envoy_config_core_v3_RetryPolicy_set_retry_back_off(envoy_config
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_BackoffStrategy*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_BackoffStrategy* envoy_config_core_v3_RetryPolicy_mutable_retry_back_off(envoy_config_core_v3_RetryPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_BackoffStrategy* envoy_config_core_v3_RetryPolicy_mutable_retry_back_off(envoy_config_core_v3_RetryPolicy* msg, upb_Arena* arena) {
struct envoy_config_core_v3_BackoffStrategy* sub = (struct envoy_config_core_v3_BackoffStrategy*)envoy_config_core_v3_RetryPolicy_retry_back_off(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_BackoffStrategy*)_upb_Message_New(&envoy_config_core_v3_BackoffStrategy_msginit, arena);
@@ -1173,7 +1505,7 @@ UPB_INLINE void envoy_config_core_v3_RetryPolicy_set_num_retries(envoy_config_co
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_RetryPolicy_mutable_num_retries(envoy_config_core_v3_RetryPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_RetryPolicy_mutable_num_retries(envoy_config_core_v3_RetryPolicy* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_RetryPolicy_num_retries(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1208,29 +1540,46 @@ UPB_INLINE envoy_config_core_v3_RemoteDataSource* envoy_config_core_v3_RemoteDat
return ret;
}
UPB_INLINE char* envoy_config_core_v3_RemoteDataSource_serialize(const envoy_config_core_v3_RemoteDataSource* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RemoteDataSource_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RemoteDataSource_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_RemoteDataSource_serialize_ex(const envoy_config_core_v3_RemoteDataSource* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RemoteDataSource_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RemoteDataSource_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_RemoteDataSource_has_http_uri(const envoy_config_core_v3_RemoteDataSource* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_RemoteDataSource_clear_http_uri(const envoy_config_core_v3_RemoteDataSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_RemoteDataSource_has_http_uri(const envoy_config_core_v3_RemoteDataSource *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_HttpUri* envoy_config_core_v3_RemoteDataSource_http_uri(const envoy_config_core_v3_RemoteDataSource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_HttpUri*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_HttpUri*);
+}
+UPB_INLINE void envoy_config_core_v3_RemoteDataSource_clear_sha256(const envoy_config_core_v3_RemoteDataSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_RemoteDataSource_sha256(const envoy_config_core_v3_RemoteDataSource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
+}
+UPB_INLINE bool envoy_config_core_v3_RemoteDataSource_has_retry_policy(const envoy_config_core_v3_RemoteDataSource* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_RemoteDataSource_clear_retry_policy(const envoy_config_core_v3_RemoteDataSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_RemoteDataSource_has_retry_policy(const envoy_config_core_v3_RemoteDataSource *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const envoy_config_core_v3_RetryPolicy* envoy_config_core_v3_RemoteDataSource_retry_policy(const envoy_config_core_v3_RemoteDataSource* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const envoy_config_core_v3_RetryPolicy*);
}
UPB_INLINE void envoy_config_core_v3_RemoteDataSource_set_http_uri(envoy_config_core_v3_RemoteDataSource *msg, struct envoy_config_core_v3_HttpUri* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_HttpUri*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_HttpUri*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_HttpUri* envoy_config_core_v3_RemoteDataSource_mutable_http_uri(envoy_config_core_v3_RemoteDataSource *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HttpUri* envoy_config_core_v3_RemoteDataSource_mutable_http_uri(envoy_config_core_v3_RemoteDataSource* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HttpUri* sub = (struct envoy_config_core_v3_HttpUri*)envoy_config_core_v3_RemoteDataSource_http_uri(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_HttpUri*)_upb_Message_New(&envoy_config_core_v3_HttpUri_msginit, arena);
@@ -1240,13 +1589,13 @@ UPB_INLINE struct envoy_config_core_v3_HttpUri* envoy_config_core_v3_RemoteDataS
return sub;
}
UPB_INLINE void envoy_config_core_v3_RemoteDataSource_set_sha256(envoy_config_core_v3_RemoteDataSource *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_RemoteDataSource_set_retry_policy(envoy_config_core_v3_RemoteDataSource *msg, envoy_config_core_v3_RetryPolicy* value) {
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), envoy_config_core_v3_RetryPolicy*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_RetryPolicy* envoy_config_core_v3_RemoteDataSource_mutable_retry_policy(envoy_config_core_v3_RemoteDataSource *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_RetryPolicy* envoy_config_core_v3_RemoteDataSource_mutable_retry_policy(envoy_config_core_v3_RemoteDataSource* msg, upb_Arena* arena) {
struct envoy_config_core_v3_RetryPolicy* sub = (struct envoy_config_core_v3_RetryPolicy*)envoy_config_core_v3_RemoteDataSource_retry_policy(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_RetryPolicy*)_upb_Message_New(&envoy_config_core_v3_RetryPolicy_msginit, arena);
@@ -1281,28 +1630,47 @@ UPB_INLINE envoy_config_core_v3_AsyncDataSource* envoy_config_core_v3_AsyncDataS
return ret;
}
UPB_INLINE char* envoy_config_core_v3_AsyncDataSource_serialize(const envoy_config_core_v3_AsyncDataSource* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_AsyncDataSource_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_AsyncDataSource_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_AsyncDataSource_serialize_ex(const envoy_config_core_v3_AsyncDataSource* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_AsyncDataSource_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_AsyncDataSource_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_AsyncDataSource_specifier_local = 1,
envoy_config_core_v3_AsyncDataSource_specifier_remote = 2,
envoy_config_core_v3_AsyncDataSource_specifier_NOT_SET = 0
} envoy_config_core_v3_AsyncDataSource_specifier_oneofcases;
-UPB_INLINE envoy_config_core_v3_AsyncDataSource_specifier_oneofcases envoy_config_core_v3_AsyncDataSource_specifier_case(const envoy_config_core_v3_AsyncDataSource* msg) { return (envoy_config_core_v3_AsyncDataSource_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_AsyncDataSource_has_local(const envoy_config_core_v3_AsyncDataSource *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_core_v3_DataSource* envoy_config_core_v3_AsyncDataSource_local(const envoy_config_core_v3_AsyncDataSource *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_DataSource*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_config_core_v3_AsyncDataSource_has_remote(const envoy_config_core_v3_AsyncDataSource *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const envoy_config_core_v3_RemoteDataSource* envoy_config_core_v3_AsyncDataSource_remote(const envoy_config_core_v3_AsyncDataSource *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_RemoteDataSource*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
+UPB_INLINE envoy_config_core_v3_AsyncDataSource_specifier_oneofcases envoy_config_core_v3_AsyncDataSource_specifier_case(const envoy_config_core_v3_AsyncDataSource* msg) {
+ return (envoy_config_core_v3_AsyncDataSource_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_AsyncDataSource_has_local(const envoy_config_core_v3_AsyncDataSource* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_core_v3_AsyncDataSource_clear_local(const envoy_config_core_v3_AsyncDataSource* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_DataSource*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_AsyncDataSource_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_DataSource* envoy_config_core_v3_AsyncDataSource_local(const envoy_config_core_v3_AsyncDataSource* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_DataSource*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_AsyncDataSource_has_remote(const envoy_config_core_v3_AsyncDataSource* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_core_v3_AsyncDataSource_clear_remote(const envoy_config_core_v3_AsyncDataSource* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_RemoteDataSource*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_AsyncDataSource_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_RemoteDataSource* envoy_config_core_v3_AsyncDataSource_remote(const envoy_config_core_v3_AsyncDataSource* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_RemoteDataSource*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
UPB_INLINE void envoy_config_core_v3_AsyncDataSource_set_local(envoy_config_core_v3_AsyncDataSource *msg, envoy_config_core_v3_DataSource* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_DataSource*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_DataSource*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_core_v3_AsyncDataSource_mutable_local(envoy_config_core_v3_AsyncDataSource *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_core_v3_AsyncDataSource_mutable_local(envoy_config_core_v3_AsyncDataSource* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_config_core_v3_AsyncDataSource_local(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -1312,9 +1680,9 @@ UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_core_v3_AsyncDat
return sub;
}
UPB_INLINE void envoy_config_core_v3_AsyncDataSource_set_remote(envoy_config_core_v3_AsyncDataSource *msg, envoy_config_core_v3_RemoteDataSource* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_RemoteDataSource*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_RemoteDataSource*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_config_core_v3_RemoteDataSource* envoy_config_core_v3_AsyncDataSource_mutable_remote(envoy_config_core_v3_AsyncDataSource *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_RemoteDataSource* envoy_config_core_v3_AsyncDataSource_mutable_remote(envoy_config_core_v3_AsyncDataSource* msg, upb_Arena* arena) {
struct envoy_config_core_v3_RemoteDataSource* sub = (struct envoy_config_core_v3_RemoteDataSource*)envoy_config_core_v3_AsyncDataSource_remote(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_RemoteDataSource*)_upb_Message_New(&envoy_config_core_v3_RemoteDataSource_msginit, arena);
@@ -1349,31 +1717,46 @@ UPB_INLINE envoy_config_core_v3_TransportSocket* envoy_config_core_v3_TransportS
return ret;
}
UPB_INLINE char* envoy_config_core_v3_TransportSocket_serialize(const envoy_config_core_v3_TransportSocket* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_TransportSocket_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_TransportSocket_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_TransportSocket_serialize_ex(const envoy_config_core_v3_TransportSocket* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_TransportSocket_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_TransportSocket_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_TransportSocket_config_type_typed_config = 3,
envoy_config_core_v3_TransportSocket_config_type_NOT_SET = 0
} envoy_config_core_v3_TransportSocket_config_type_oneofcases;
-UPB_INLINE envoy_config_core_v3_TransportSocket_config_type_oneofcases envoy_config_core_v3_TransportSocket_config_type_case(const envoy_config_core_v3_TransportSocket* msg) { return (envoy_config_core_v3_TransportSocket_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_config_core_v3_TransportSocket_config_type_oneofcases envoy_config_core_v3_TransportSocket_config_type_case(const envoy_config_core_v3_TransportSocket* msg) {
+ return (envoy_config_core_v3_TransportSocket_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_core_v3_TransportSocket_clear_name(const envoy_config_core_v3_TransportSocket* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_TransportSocket_name(const envoy_config_core_v3_TransportSocket* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_core_v3_TransportSocket_has_typed_config(const envoy_config_core_v3_TransportSocket* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_core_v3_TransportSocket_clear_typed_config(const envoy_config_core_v3_TransportSocket* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_core_v3_TransportSocket_config_type_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_core_v3_TransportSocket_typed_config(const envoy_config_core_v3_TransportSocket* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
}
-UPB_INLINE bool envoy_config_core_v3_TransportSocket_has_typed_config(const envoy_config_core_v3_TransportSocket *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_core_v3_TransportSocket_typed_config(const envoy_config_core_v3_TransportSocket *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void envoy_config_core_v3_TransportSocket_set_name(envoy_config_core_v3_TransportSocket *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_TransportSocket_set_typed_config(envoy_config_core_v3_TransportSocket *msg, struct google_protobuf_Any* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_core_v3_TransportSocket_mutable_typed_config(envoy_config_core_v3_TransportSocket *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_core_v3_TransportSocket_mutable_typed_config(envoy_config_core_v3_TransportSocket* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_core_v3_TransportSocket_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -1408,25 +1791,37 @@ UPB_INLINE envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_core_v3_R
return ret;
}
UPB_INLINE char* envoy_config_core_v3_RuntimeFractionalPercent_serialize(const envoy_config_core_v3_RuntimeFractionalPercent* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RuntimeFractionalPercent_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RuntimeFractionalPercent_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_RuntimeFractionalPercent_serialize_ex(const envoy_config_core_v3_RuntimeFractionalPercent* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RuntimeFractionalPercent_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RuntimeFractionalPercent_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_RuntimeFractionalPercent_has_default_value(const envoy_config_core_v3_RuntimeFractionalPercent* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_RuntimeFractionalPercent_clear_default_value(const envoy_config_core_v3_RuntimeFractionalPercent* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_RuntimeFractionalPercent_has_default_value(const envoy_config_core_v3_RuntimeFractionalPercent *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_v3_FractionalPercent* envoy_config_core_v3_RuntimeFractionalPercent_default_value(const envoy_config_core_v3_RuntimeFractionalPercent* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_type_v3_FractionalPercent*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_v3_FractionalPercent*);
+}
+UPB_INLINE void envoy_config_core_v3_RuntimeFractionalPercent_clear_runtime_key(const envoy_config_core_v3_RuntimeFractionalPercent* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_RuntimeFractionalPercent_runtime_key(const envoy_config_core_v3_RuntimeFractionalPercent* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
UPB_INLINE void envoy_config_core_v3_RuntimeFractionalPercent_set_default_value(envoy_config_core_v3_RuntimeFractionalPercent *msg, struct envoy_type_v3_FractionalPercent* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_type_v3_FractionalPercent*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_v3_FractionalPercent*) = value;
}
-UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_core_v3_RuntimeFractionalPercent_mutable_default_value(envoy_config_core_v3_RuntimeFractionalPercent *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_core_v3_RuntimeFractionalPercent_mutable_default_value(envoy_config_core_v3_RuntimeFractionalPercent* msg, upb_Arena* arena) {
struct envoy_type_v3_FractionalPercent* sub = (struct envoy_type_v3_FractionalPercent*)envoy_config_core_v3_RuntimeFractionalPercent_default_value(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_FractionalPercent*)_upb_Message_New(&envoy_type_v3_FractionalPercent_msginit, arena);
@@ -1436,7 +1831,7 @@ UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_core_v3_RuntimeF
return sub;
}
UPB_INLINE void envoy_config_core_v3_RuntimeFractionalPercent_set_runtime_key(envoy_config_core_v3_RuntimeFractionalPercent *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
/* envoy.config.core.v3.ControlPlane */
@@ -1464,11 +1859,18 @@ UPB_INLINE envoy_config_core_v3_ControlPlane* envoy_config_core_v3_ControlPlane_
return ret;
}
UPB_INLINE char* envoy_config_core_v3_ControlPlane_serialize(const envoy_config_core_v3_ControlPlane* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_ControlPlane_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_ControlPlane_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_ControlPlane_serialize_ex(const envoy_config_core_v3_ControlPlane* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_ControlPlane_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_ControlPlane_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_ControlPlane_clear_identifier(const envoy_config_core_v3_ControlPlane* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_ControlPlane_identifier(const envoy_config_core_v3_ControlPlane* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c
index 96e982ed46..a8a559e8b8 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c
@@ -9,7 +9,10 @@
#include <stddef.h>
#include "upb/msg_internal.h"
#include "envoy/config/core/v3/config_source.upb.h"
+#include "envoy/config/core/v3/base.upb.h"
+#include "envoy/config/core/v3/extension.upb.h"
#include "envoy/config/core/v3/grpc_service.upb.h"
+#include "google/protobuf/any.upb.h"
#include "google/protobuf/duration.upb.h"
#include "google/protobuf/wrappers.upb.h"
#include "xds/core/v3/authority.upb.h"
@@ -20,98 +23,138 @@
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_config_core_v3_ApiConfigSource_submsgs[3] = {
+static const upb_MiniTable_Sub envoy_config_core_v3_ApiConfigSource_submsgs[5] = {
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &envoy_config_core_v3_GrpcService_msginit},
- {.submsg = &envoy_config_core_v3_RateLimitSettings_msginit},
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_core_v3_RateLimitSettings_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
};
-static const upb_MiniTable_Field envoy_config_core_v3_ApiConfigSource__fields[8] = {
- {1, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(28, 40), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 16), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 48), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 24), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(24, 32), 3, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(12, 12), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {8, UPB_SIZE(8, 8), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_core_v3_ApiConfigSource__fields[9] = {
+ {1, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 32), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(28, 40), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(32, 48), UPB_SIZE(3, 3), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(12, 12), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(36, 56), UPB_SIZE(0, 0), 4, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_ApiConfigSource_msginit = {
&envoy_config_core_v3_ApiConfigSource_submsgs[0],
&envoy_config_core_v3_ApiConfigSource__fields[0],
- UPB_SIZE(40, 56), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(40, 64), 9, kUpb_ExtMode_NonExtendable, 9, 255, 0,
};
const upb_MiniTable envoy_config_core_v3_AggregatedConfigSource_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_SelfConfigSource__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_SelfConfigSource_msginit = {
NULL,
&envoy_config_core_v3_SelfConfigSource__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_RateLimitSettings_submsgs[2] = {
- {.submsg = &google_protobuf_DoubleValue_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_DoubleValue_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_RateLimitSettings__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_RateLimitSettings_msginit = {
&envoy_config_core_v3_RateLimitSettings_submsgs[0],
&envoy_config_core_v3_RateLimitSettings__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_core_v3_ConfigSource_submsgs[5] = {
- {.submsg = &envoy_config_core_v3_AggregatedConfigSource_msginit},
+static const upb_MiniTable_Sub envoy_config_core_v3_PathConfigSource_submsgs[1] = {
+ {.submsg = &envoy_config_core_v3_WatchedDirectory_msginit},
+};
+
+static const upb_MiniTable_Field envoy_config_core_v3_PathConfigSource__fields[2] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_config_core_v3_PathConfigSource_msginit = {
+ &envoy_config_core_v3_PathConfigSource_submsgs[0],
+ &envoy_config_core_v3_PathConfigSource__fields[0],
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_config_core_v3_ConfigSource_submsgs[6] = {
{.submsg = &envoy_config_core_v3_ApiConfigSource_msginit},
- {.submsg = &envoy_config_core_v3_SelfConfigSource_msginit},
+ {.submsg = &envoy_config_core_v3_AggregatedConfigSource_msginit},
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_core_v3_SelfConfigSource_msginit},
{.submsg = &xds_core_v3_Authority_msginit},
+ {.submsg = &envoy_config_core_v3_PathConfigSource_msginit},
};
-static const upb_MiniTable_Field envoy_config_core_v3_ConfigSource__fields[7] = {
- {1, UPB_SIZE(16, 24), UPB_SIZE(-25, -41), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 24), UPB_SIZE(-25, -41), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 24), UPB_SIZE(-25, -41), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 8), 1, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(16, 24), UPB_SIZE(-25, -41), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(12, 16), 0, 4, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_core_v3_ConfigSource__fields[8] = {
+ {1, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 32), UPB_SIZE(1, 1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(24, 40), UPB_SIZE(0, 0), 4, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_ConfigSource_msginit = {
&envoy_config_core_v3_ConfigSource_submsgs[0],
&envoy_config_core_v3_ConfigSource__fields[0],
- UPB_SIZE(32, 48), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(32, 48), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_config_core_v3_ExtensionConfigSource_submsgs[2] = {
+ {.submsg = &envoy_config_core_v3_ConfigSource_msginit},
+ {.submsg = &google_protobuf_Any_msginit},
+};
+
+static const upb_MiniTable_Field envoy_config_core_v3_ExtensionConfigSource__fields[4] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_config_core_v3_ExtensionConfigSource_msginit = {
+ &envoy_config_core_v3_ExtensionConfigSource_submsgs[0],
+ &envoy_config_core_v3_ExtensionConfigSource__fields[0],
+ UPB_SIZE(16, 32), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable *messages_layout[5] = {
+static const upb_MiniTable *messages_layout[7] = {
&envoy_config_core_v3_ApiConfigSource_msginit,
&envoy_config_core_v3_AggregatedConfigSource_msginit,
&envoy_config_core_v3_SelfConfigSource_msginit,
&envoy_config_core_v3_RateLimitSettings_msginit,
+ &envoy_config_core_v3_PathConfigSource_msginit,
&envoy_config_core_v3_ConfigSource_msginit,
+ &envoy_config_core_v3_ExtensionConfigSource_msginit,
};
const upb_MiniTable_File envoy_config_core_v3_config_source_proto_upb_file_layout = {
messages_layout,
NULL,
NULL,
- 5,
+ 7,
0,
0,
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h
index 3e5d173f40..25790c56a5 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h
@@ -24,23 +24,35 @@ struct envoy_config_core_v3_ApiConfigSource;
struct envoy_config_core_v3_AggregatedConfigSource;
struct envoy_config_core_v3_SelfConfigSource;
struct envoy_config_core_v3_RateLimitSettings;
+struct envoy_config_core_v3_PathConfigSource;
struct envoy_config_core_v3_ConfigSource;
+struct envoy_config_core_v3_ExtensionConfigSource;
typedef struct envoy_config_core_v3_ApiConfigSource envoy_config_core_v3_ApiConfigSource;
typedef struct envoy_config_core_v3_AggregatedConfigSource envoy_config_core_v3_AggregatedConfigSource;
typedef struct envoy_config_core_v3_SelfConfigSource envoy_config_core_v3_SelfConfigSource;
typedef struct envoy_config_core_v3_RateLimitSettings envoy_config_core_v3_RateLimitSettings;
+typedef struct envoy_config_core_v3_PathConfigSource envoy_config_core_v3_PathConfigSource;
typedef struct envoy_config_core_v3_ConfigSource envoy_config_core_v3_ConfigSource;
+typedef struct envoy_config_core_v3_ExtensionConfigSource envoy_config_core_v3_ExtensionConfigSource;
extern const upb_MiniTable envoy_config_core_v3_ApiConfigSource_msginit;
extern const upb_MiniTable envoy_config_core_v3_AggregatedConfigSource_msginit;
extern const upb_MiniTable envoy_config_core_v3_SelfConfigSource_msginit;
extern const upb_MiniTable envoy_config_core_v3_RateLimitSettings_msginit;
+extern const upb_MiniTable envoy_config_core_v3_PathConfigSource_msginit;
extern const upb_MiniTable envoy_config_core_v3_ConfigSource_msginit;
+extern const upb_MiniTable envoy_config_core_v3_ExtensionConfigSource_msginit;
struct envoy_config_core_v3_GrpcService;
+struct envoy_config_core_v3_TypedExtensionConfig;
+struct envoy_config_core_v3_WatchedDirectory;
+struct google_protobuf_Any;
struct google_protobuf_DoubleValue;
struct google_protobuf_Duration;
struct google_protobuf_UInt32Value;
struct xds_core_v3_Authority;
extern const upb_MiniTable envoy_config_core_v3_GrpcService_msginit;
+extern const upb_MiniTable envoy_config_core_v3_TypedExtensionConfig_msginit;
+extern const upb_MiniTable envoy_config_core_v3_WatchedDirectory_msginit;
+extern const upb_MiniTable google_protobuf_Any_msginit;
extern const upb_MiniTable google_protobuf_DoubleValue_msginit;
extern const upb_MiniTable google_protobuf_Duration_msginit;
extern const upb_MiniTable google_protobuf_UInt32Value_msginit;
@@ -88,55 +100,103 @@ UPB_INLINE envoy_config_core_v3_ApiConfigSource* envoy_config_core_v3_ApiConfigS
return ret;
}
UPB_INLINE char* envoy_config_core_v3_ApiConfigSource_serialize(const envoy_config_core_v3_ApiConfigSource* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_ApiConfigSource_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_ApiConfigSource_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_ApiConfigSource_serialize_ex(const envoy_config_core_v3_ApiConfigSource* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_ApiConfigSource_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_ApiConfigSource_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_ApiConfigSource_clear_api_type(const envoy_config_core_v3_ApiConfigSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_core_v3_ApiConfigSource_api_type(const envoy_config_core_v3_ApiConfigSource* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE upb_StringView const* envoy_config_core_v3_ApiConfigSource_cluster_names(const envoy_config_core_v3_ApiConfigSource *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(28, 40), len); }
-UPB_INLINE bool envoy_config_core_v3_ApiConfigSource_has_refresh_delay(const envoy_config_core_v3_ApiConfigSource *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE void envoy_config_core_v3_ApiConfigSource_clear_cluster_names(const envoy_config_core_v3_ApiConfigSource* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 16));
+}
+UPB_INLINE upb_StringView const* envoy_config_core_v3_ApiConfigSource_cluster_names(const envoy_config_core_v3_ApiConfigSource* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(16, 16), len);
+}
+UPB_INLINE bool envoy_config_core_v3_ApiConfigSource_has_refresh_delay(const envoy_config_core_v3_ApiConfigSource* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_ApiConfigSource_clear_refresh_delay(const envoy_config_core_v3_ApiConfigSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_ApiConfigSource_refresh_delay(const envoy_config_core_v3_ApiConfigSource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 24), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_core_v3_ApiConfigSource_has_grpc_services(const envoy_config_core_v3_ApiConfigSource* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 32));
+}
+UPB_INLINE void envoy_config_core_v3_ApiConfigSource_clear_grpc_services(const envoy_config_core_v3_ApiConfigSource* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 32));
+}
+UPB_INLINE const struct envoy_config_core_v3_GrpcService* const* envoy_config_core_v3_ApiConfigSource_grpc_services(const envoy_config_core_v3_ApiConfigSource* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_GrpcService* const*)_upb_array_accessor(msg, UPB_SIZE(24, 32), len);
+}
+UPB_INLINE bool envoy_config_core_v3_ApiConfigSource_has_request_timeout(const envoy_config_core_v3_ApiConfigSource* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_ApiConfigSource_clear_request_timeout(const envoy_config_core_v3_ApiConfigSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_ApiConfigSource_has_grpc_services(const envoy_config_core_v3_ApiConfigSource *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 48)); }
-UPB_INLINE const struct envoy_config_core_v3_GrpcService* const* envoy_config_core_v3_ApiConfigSource_grpc_services(const envoy_config_core_v3_ApiConfigSource *msg, size_t *len) { return (const struct envoy_config_core_v3_GrpcService* const*)_upb_array_accessor(msg, UPB_SIZE(32, 48), len); }
-UPB_INLINE bool envoy_config_core_v3_ApiConfigSource_has_request_timeout(const envoy_config_core_v3_ApiConfigSource *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_ApiConfigSource_request_timeout(const envoy_config_core_v3_ApiConfigSource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 24), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 40), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_core_v3_ApiConfigSource_has_rate_limit_settings(const envoy_config_core_v3_ApiConfigSource* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_core_v3_ApiConfigSource_clear_rate_limit_settings(const envoy_config_core_v3_ApiConfigSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 48), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_ApiConfigSource_has_rate_limit_settings(const envoy_config_core_v3_ApiConfigSource *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const envoy_config_core_v3_RateLimitSettings* envoy_config_core_v3_ApiConfigSource_rate_limit_settings(const envoy_config_core_v3_ApiConfigSource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), const envoy_config_core_v3_RateLimitSettings*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 48), const envoy_config_core_v3_RateLimitSettings*);
+}
+UPB_INLINE void envoy_config_core_v3_ApiConfigSource_clear_set_node_on_first_message_only(const envoy_config_core_v3_ApiConfigSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
}
UPB_INLINE bool envoy_config_core_v3_ApiConfigSource_set_node_on_first_message_only(const envoy_config_core_v3_ApiConfigSource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+}
+UPB_INLINE void envoy_config_core_v3_ApiConfigSource_clear_transport_api_version(const envoy_config_core_v3_ApiConfigSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_core_v3_ApiConfigSource_transport_api_version(const envoy_config_core_v3_ApiConfigSource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_ApiConfigSource_has_config_validators(const envoy_config_core_v3_ApiConfigSource* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 56));
+}
+UPB_INLINE void envoy_config_core_v3_ApiConfigSource_clear_config_validators(const envoy_config_core_v3_ApiConfigSource* msg) {
+ _upb_array_detach(msg, UPB_SIZE(36, 56));
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* const* envoy_config_core_v3_ApiConfigSource_config_validators(const envoy_config_core_v3_ApiConfigSource* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_TypedExtensionConfig* const*)_upb_array_accessor(msg, UPB_SIZE(36, 56), len);
}
UPB_INLINE void envoy_config_core_v3_ApiConfigSource_set_api_type(envoy_config_core_v3_ApiConfigSource *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
-UPB_INLINE upb_StringView* envoy_config_core_v3_ApiConfigSource_mutable_cluster_names(envoy_config_core_v3_ApiConfigSource *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 40), len);
+UPB_INLINE upb_StringView* envoy_config_core_v3_ApiConfigSource_mutable_cluster_names(envoy_config_core_v3_ApiConfigSource* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 16), len);
}
-UPB_INLINE upb_StringView* envoy_config_core_v3_ApiConfigSource_resize_cluster_names(envoy_config_core_v3_ApiConfigSource *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 40), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_config_core_v3_ApiConfigSource_resize_cluster_names(envoy_config_core_v3_ApiConfigSource* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 16), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_core_v3_ApiConfigSource_add_cluster_names(envoy_config_core_v3_ApiConfigSource *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 40), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_core_v3_ApiConfigSource_add_cluster_names(envoy_config_core_v3_ApiConfigSource* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 16), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_config_core_v3_ApiConfigSource_set_refresh_delay(envoy_config_core_v3_ApiConfigSource *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 24), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_ApiConfigSource_mutable_refresh_delay(envoy_config_core_v3_ApiConfigSource *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_ApiConfigSource_mutable_refresh_delay(envoy_config_core_v3_ApiConfigSource* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_ApiConfigSource_refresh_delay(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -145,24 +205,23 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_ApiConfigSource
}
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService** envoy_config_core_v3_ApiConfigSource_mutable_grpc_services(envoy_config_core_v3_ApiConfigSource *msg, size_t *len) {
- return (struct envoy_config_core_v3_GrpcService**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 48), len);
+UPB_INLINE struct envoy_config_core_v3_GrpcService** envoy_config_core_v3_ApiConfigSource_mutable_grpc_services(envoy_config_core_v3_ApiConfigSource* msg, size_t* len) {
+ return (struct envoy_config_core_v3_GrpcService**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 32), len);
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService** envoy_config_core_v3_ApiConfigSource_resize_grpc_services(envoy_config_core_v3_ApiConfigSource *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_GrpcService**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 48), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_GrpcService** envoy_config_core_v3_ApiConfigSource_resize_grpc_services(envoy_config_core_v3_ApiConfigSource* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_GrpcService**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 32), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_core_v3_ApiConfigSource_add_grpc_services(envoy_config_core_v3_ApiConfigSource *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_core_v3_ApiConfigSource_add_grpc_services(envoy_config_core_v3_ApiConfigSource* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService* sub = (struct envoy_config_core_v3_GrpcService*)_upb_Message_New(&envoy_config_core_v3_GrpcService_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(32, 48), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 32), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_core_v3_ApiConfigSource_set_request_timeout(envoy_config_core_v3_ApiConfigSource *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 24), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 40), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_ApiConfigSource_mutable_request_timeout(envoy_config_core_v3_ApiConfigSource *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_ApiConfigSource_mutable_request_timeout(envoy_config_core_v3_ApiConfigSource* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_ApiConfigSource_request_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -173,9 +232,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_ApiConfigSource
}
UPB_INLINE void envoy_config_core_v3_ApiConfigSource_set_rate_limit_settings(envoy_config_core_v3_ApiConfigSource *msg, envoy_config_core_v3_RateLimitSettings* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 32), envoy_config_core_v3_RateLimitSettings*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 48), envoy_config_core_v3_RateLimitSettings*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_RateLimitSettings* envoy_config_core_v3_ApiConfigSource_mutable_rate_limit_settings(envoy_config_core_v3_ApiConfigSource *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_RateLimitSettings* envoy_config_core_v3_ApiConfigSource_mutable_rate_limit_settings(envoy_config_core_v3_ApiConfigSource* msg, upb_Arena* arena) {
struct envoy_config_core_v3_RateLimitSettings* sub = (struct envoy_config_core_v3_RateLimitSettings*)envoy_config_core_v3_ApiConfigSource_rate_limit_settings(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_RateLimitSettings*)_upb_Message_New(&envoy_config_core_v3_RateLimitSettings_msginit, arena);
@@ -185,10 +244,22 @@ UPB_INLINE struct envoy_config_core_v3_RateLimitSettings* envoy_config_core_v3_A
return sub;
}
UPB_INLINE void envoy_config_core_v3_ApiConfigSource_set_set_node_on_first_message_only(envoy_config_core_v3_ApiConfigSource *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
}
UPB_INLINE void envoy_config_core_v3_ApiConfigSource_set_transport_api_version(envoy_config_core_v3_ApiConfigSource *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = value;
+}
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_core_v3_ApiConfigSource_mutable_config_validators(envoy_config_core_v3_ApiConfigSource* msg, size_t* len) {
+ return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 56), len);
+}
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_core_v3_ApiConfigSource_resize_config_validators(envoy_config_core_v3_ApiConfigSource* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 56), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_core_v3_ApiConfigSource_add_config_validators(envoy_config_core_v3_ApiConfigSource* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 56), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
}
/* envoy.config.core.v3.AggregatedConfigSource */
@@ -216,11 +287,15 @@ UPB_INLINE envoy_config_core_v3_AggregatedConfigSource* envoy_config_core_v3_Agg
return ret;
}
UPB_INLINE char* envoy_config_core_v3_AggregatedConfigSource_serialize(const envoy_config_core_v3_AggregatedConfigSource* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_AggregatedConfigSource_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_AggregatedConfigSource_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_AggregatedConfigSource_serialize_ex(const envoy_config_core_v3_AggregatedConfigSource* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_AggregatedConfigSource_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_AggregatedConfigSource_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -249,11 +324,18 @@ UPB_INLINE envoy_config_core_v3_SelfConfigSource* envoy_config_core_v3_SelfConfi
return ret;
}
UPB_INLINE char* envoy_config_core_v3_SelfConfigSource_serialize(const envoy_config_core_v3_SelfConfigSource* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_SelfConfigSource_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_SelfConfigSource_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_SelfConfigSource_serialize_ex(const envoy_config_core_v3_SelfConfigSource* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_SelfConfigSource_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_SelfConfigSource_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_SelfConfigSource_clear_transport_api_version(const envoy_config_core_v3_SelfConfigSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_core_v3_SelfConfigSource_transport_api_version(const envoy_config_core_v3_SelfConfigSource* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
@@ -288,17 +370,31 @@ UPB_INLINE envoy_config_core_v3_RateLimitSettings* envoy_config_core_v3_RateLimi
return ret;
}
UPB_INLINE char* envoy_config_core_v3_RateLimitSettings_serialize(const envoy_config_core_v3_RateLimitSettings* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RateLimitSettings_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RateLimitSettings_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_RateLimitSettings_serialize_ex(const envoy_config_core_v3_RateLimitSettings* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_RateLimitSettings_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_RateLimitSettings_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_RateLimitSettings_has_max_tokens(const envoy_config_core_v3_RateLimitSettings* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_RateLimitSettings_clear_max_tokens(const envoy_config_core_v3_RateLimitSettings* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_RateLimitSettings_has_max_tokens(const envoy_config_core_v3_RateLimitSettings *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_RateLimitSettings_max_tokens(const envoy_config_core_v3_RateLimitSettings* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_RateLimitSettings_has_fill_rate(const envoy_config_core_v3_RateLimitSettings *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_RateLimitSettings_has_fill_rate(const envoy_config_core_v3_RateLimitSettings* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_RateLimitSettings_clear_fill_rate(const envoy_config_core_v3_RateLimitSettings* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_DoubleValue* envoy_config_core_v3_RateLimitSettings_fill_rate(const envoy_config_core_v3_RateLimitSettings* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_DoubleValue*);
}
@@ -307,7 +403,7 @@ UPB_INLINE void envoy_config_core_v3_RateLimitSettings_set_max_tokens(envoy_conf
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_RateLimitSettings_mutable_max_tokens(envoy_config_core_v3_RateLimitSettings *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_RateLimitSettings_mutable_max_tokens(envoy_config_core_v3_RateLimitSettings* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_RateLimitSettings_max_tokens(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -320,7 +416,7 @@ UPB_INLINE void envoy_config_core_v3_RateLimitSettings_set_fill_rate(envoy_confi
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_DoubleValue*) = value;
}
-UPB_INLINE struct google_protobuf_DoubleValue* envoy_config_core_v3_RateLimitSettings_mutable_fill_rate(envoy_config_core_v3_RateLimitSettings *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_DoubleValue* envoy_config_core_v3_RateLimitSettings_mutable_fill_rate(envoy_config_core_v3_RateLimitSettings* msg, upb_Arena* arena) {
struct google_protobuf_DoubleValue* sub = (struct google_protobuf_DoubleValue*)envoy_config_core_v3_RateLimitSettings_fill_rate(msg);
if (sub == NULL) {
sub = (struct google_protobuf_DoubleValue*)_upb_Message_New(&google_protobuf_DoubleValue_msginit, arena);
@@ -330,6 +426,74 @@ UPB_INLINE struct google_protobuf_DoubleValue* envoy_config_core_v3_RateLimitSet
return sub;
}
+/* envoy.config.core.v3.PathConfigSource */
+
+UPB_INLINE envoy_config_core_v3_PathConfigSource* envoy_config_core_v3_PathConfigSource_new(upb_Arena* arena) {
+ return (envoy_config_core_v3_PathConfigSource*)_upb_Message_New(&envoy_config_core_v3_PathConfigSource_msginit, arena);
+}
+UPB_INLINE envoy_config_core_v3_PathConfigSource* envoy_config_core_v3_PathConfigSource_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_config_core_v3_PathConfigSource* ret = envoy_config_core_v3_PathConfigSource_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_core_v3_PathConfigSource_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_config_core_v3_PathConfigSource* envoy_config_core_v3_PathConfigSource_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_config_core_v3_PathConfigSource* ret = envoy_config_core_v3_PathConfigSource_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_core_v3_PathConfigSource_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_config_core_v3_PathConfigSource_serialize(const envoy_config_core_v3_PathConfigSource* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_PathConfigSource_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_config_core_v3_PathConfigSource_serialize_ex(const envoy_config_core_v3_PathConfigSource* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_PathConfigSource_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_PathConfigSource_clear_path(const envoy_config_core_v3_PathConfigSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_PathConfigSource_path(const envoy_config_core_v3_PathConfigSource* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_core_v3_PathConfigSource_has_watched_directory(const envoy_config_core_v3_PathConfigSource* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_PathConfigSource_clear_watched_directory(const envoy_config_core_v3_PathConfigSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct envoy_config_core_v3_WatchedDirectory* envoy_config_core_v3_PathConfigSource_watched_directory(const envoy_config_core_v3_PathConfigSource* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_WatchedDirectory*);
+}
+
+UPB_INLINE void envoy_config_core_v3_PathConfigSource_set_path(envoy_config_core_v3_PathConfigSource *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+}
+UPB_INLINE void envoy_config_core_v3_PathConfigSource_set_watched_directory(envoy_config_core_v3_PathConfigSource *msg, struct envoy_config_core_v3_WatchedDirectory* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_WatchedDirectory*) = value;
+}
+UPB_INLINE struct envoy_config_core_v3_WatchedDirectory* envoy_config_core_v3_PathConfigSource_mutable_watched_directory(envoy_config_core_v3_PathConfigSource* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_WatchedDirectory* sub = (struct envoy_config_core_v3_WatchedDirectory*)envoy_config_core_v3_PathConfigSource_watched_directory(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_core_v3_WatchedDirectory*)_upb_Message_New(&envoy_config_core_v3_WatchedDirectory_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_core_v3_PathConfigSource_set_watched_directory(msg, sub);
+ }
+ return sub;
+}
+
/* envoy.config.core.v3.ConfigSource */
UPB_INLINE envoy_config_core_v3_ConfigSource* envoy_config_core_v3_ConfigSource_new(upb_Arena* arena) {
@@ -355,46 +519,104 @@ UPB_INLINE envoy_config_core_v3_ConfigSource* envoy_config_core_v3_ConfigSource_
return ret;
}
UPB_INLINE char* envoy_config_core_v3_ConfigSource_serialize(const envoy_config_core_v3_ConfigSource* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_ConfigSource_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_ConfigSource_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_ConfigSource_serialize_ex(const envoy_config_core_v3_ConfigSource* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_ConfigSource_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_ConfigSource_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_ConfigSource_config_source_specifier_path = 1,
+ envoy_config_core_v3_ConfigSource_config_source_specifier_path_config_source = 8,
envoy_config_core_v3_ConfigSource_config_source_specifier_api_config_source = 2,
envoy_config_core_v3_ConfigSource_config_source_specifier_ads = 3,
envoy_config_core_v3_ConfigSource_config_source_specifier_self = 5,
envoy_config_core_v3_ConfigSource_config_source_specifier_NOT_SET = 0
} envoy_config_core_v3_ConfigSource_config_source_specifier_oneofcases;
-UPB_INLINE envoy_config_core_v3_ConfigSource_config_source_specifier_oneofcases envoy_config_core_v3_ConfigSource_config_source_specifier_case(const envoy_config_core_v3_ConfigSource* msg) { return (envoy_config_core_v3_ConfigSource_config_source_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(24, 40), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_ConfigSource_has_path(const envoy_config_core_v3_ConfigSource *msg) { return _upb_getoneofcase(msg, UPB_SIZE(24, 40)) == 1; }
-UPB_INLINE upb_StringView envoy_config_core_v3_ConfigSource_path(const envoy_config_core_v3_ConfigSource *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(16, 24), UPB_SIZE(24, 40), 1, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_core_v3_ConfigSource_has_api_config_source(const envoy_config_core_v3_ConfigSource *msg) { return _upb_getoneofcase(msg, UPB_SIZE(24, 40)) == 2; }
-UPB_INLINE const envoy_config_core_v3_ApiConfigSource* envoy_config_core_v3_ConfigSource_api_config_source(const envoy_config_core_v3_ConfigSource *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_ApiConfigSource*, UPB_SIZE(16, 24), UPB_SIZE(24, 40), 2, NULL); }
-UPB_INLINE bool envoy_config_core_v3_ConfigSource_has_ads(const envoy_config_core_v3_ConfigSource *msg) { return _upb_getoneofcase(msg, UPB_SIZE(24, 40)) == 3; }
-UPB_INLINE const envoy_config_core_v3_AggregatedConfigSource* envoy_config_core_v3_ConfigSource_ads(const envoy_config_core_v3_ConfigSource *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_AggregatedConfigSource*, UPB_SIZE(16, 24), UPB_SIZE(24, 40), 3, NULL); }
-UPB_INLINE bool envoy_config_core_v3_ConfigSource_has_initial_fetch_timeout(const envoy_config_core_v3_ConfigSource *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_config_core_v3_ConfigSource_config_source_specifier_oneofcases envoy_config_core_v3_ConfigSource_config_source_specifier_case(const envoy_config_core_v3_ConfigSource* msg) {
+ return (envoy_config_core_v3_ConfigSource_config_source_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_ConfigSource_has_path(const envoy_config_core_v3_ConfigSource* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 1;
+}
+UPB_INLINE void envoy_config_core_v3_ConfigSource_clear_path(const envoy_config_core_v3_ConfigSource* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_core_v3_ConfigSource_config_source_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_ConfigSource_path(const envoy_config_core_v3_ConfigSource* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 1, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_core_v3_ConfigSource_has_api_config_source(const envoy_config_core_v3_ConfigSource* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_config_core_v3_ConfigSource_clear_api_config_source(const envoy_config_core_v3_ConfigSource* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_ApiConfigSource*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_core_v3_ConfigSource_config_source_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_ApiConfigSource* envoy_config_core_v3_ConfigSource_api_config_source(const envoy_config_core_v3_ConfigSource* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_ApiConfigSource*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_ConfigSource_has_ads(const envoy_config_core_v3_ConfigSource* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_config_core_v3_ConfigSource_clear_ads(const envoy_config_core_v3_ConfigSource* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_AggregatedConfigSource*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_core_v3_ConfigSource_config_source_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_AggregatedConfigSource* envoy_config_core_v3_ConfigSource_ads(const envoy_config_core_v3_ConfigSource* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_AggregatedConfigSource*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 3, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_ConfigSource_has_initial_fetch_timeout(const envoy_config_core_v3_ConfigSource* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_ConfigSource_clear_initial_fetch_timeout(const envoy_config_core_v3_ConfigSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_ConfigSource_initial_fetch_timeout(const envoy_config_core_v3_ConfigSource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_core_v3_ConfigSource_has_self(const envoy_config_core_v3_ConfigSource* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void envoy_config_core_v3_ConfigSource_clear_self(const envoy_config_core_v3_ConfigSource* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_SelfConfigSource*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_core_v3_ConfigSource_config_source_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_SelfConfigSource* envoy_config_core_v3_ConfigSource_self(const envoy_config_core_v3_ConfigSource* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_SelfConfigSource*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 5, NULL);
+}
+UPB_INLINE void envoy_config_core_v3_ConfigSource_clear_resource_api_version(const envoy_config_core_v3_ConfigSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
}
-UPB_INLINE bool envoy_config_core_v3_ConfigSource_has_self(const envoy_config_core_v3_ConfigSource *msg) { return _upb_getoneofcase(msg, UPB_SIZE(24, 40)) == 5; }
-UPB_INLINE const envoy_config_core_v3_SelfConfigSource* envoy_config_core_v3_ConfigSource_self(const envoy_config_core_v3_ConfigSource *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_SelfConfigSource*, UPB_SIZE(16, 24), UPB_SIZE(24, 40), 5, NULL); }
UPB_INLINE int32_t envoy_config_core_v3_ConfigSource_resource_api_version(const envoy_config_core_v3_ConfigSource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_ConfigSource_has_authorities(const envoy_config_core_v3_ConfigSource* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 40));
+}
+UPB_INLINE void envoy_config_core_v3_ConfigSource_clear_authorities(const envoy_config_core_v3_ConfigSource* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 40));
+}
+UPB_INLINE const struct xds_core_v3_Authority* const* envoy_config_core_v3_ConfigSource_authorities(const envoy_config_core_v3_ConfigSource* msg, size_t* len) {
+ return (const struct xds_core_v3_Authority* const*)_upb_array_accessor(msg, UPB_SIZE(24, 40), len);
+}
+UPB_INLINE bool envoy_config_core_v3_ConfigSource_has_path_config_source(const envoy_config_core_v3_ConfigSource* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 8;
+}
+UPB_INLINE void envoy_config_core_v3_ConfigSource_clear_path_config_source(const envoy_config_core_v3_ConfigSource* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_PathConfigSource*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_core_v3_ConfigSource_config_source_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_PathConfigSource* envoy_config_core_v3_ConfigSource_path_config_source(const envoy_config_core_v3_ConfigSource* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_PathConfigSource*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 8, NULL);
}
-UPB_INLINE bool envoy_config_core_v3_ConfigSource_has_authorities(const envoy_config_core_v3_ConfigSource *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 16)); }
-UPB_INLINE const struct xds_core_v3_Authority* const* envoy_config_core_v3_ConfigSource_authorities(const envoy_config_core_v3_ConfigSource *msg, size_t *len) { return (const struct xds_core_v3_Authority* const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len); }
UPB_INLINE void envoy_config_core_v3_ConfigSource_set_path(envoy_config_core_v3_ConfigSource *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(16, 24), value, UPB_SIZE(24, 40), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 1);
}
UPB_INLINE void envoy_config_core_v3_ConfigSource_set_api_config_source(envoy_config_core_v3_ConfigSource *msg, envoy_config_core_v3_ApiConfigSource* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_ApiConfigSource*, UPB_SIZE(16, 24), value, UPB_SIZE(24, 40), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_ApiConfigSource*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct envoy_config_core_v3_ApiConfigSource* envoy_config_core_v3_ConfigSource_mutable_api_config_source(envoy_config_core_v3_ConfigSource *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ApiConfigSource* envoy_config_core_v3_ConfigSource_mutable_api_config_source(envoy_config_core_v3_ConfigSource* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ApiConfigSource* sub = (struct envoy_config_core_v3_ApiConfigSource*)envoy_config_core_v3_ConfigSource_api_config_source(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ApiConfigSource*)_upb_Message_New(&envoy_config_core_v3_ApiConfigSource_msginit, arena);
@@ -404,9 +626,9 @@ UPB_INLINE struct envoy_config_core_v3_ApiConfigSource* envoy_config_core_v3_Con
return sub;
}
UPB_INLINE void envoy_config_core_v3_ConfigSource_set_ads(envoy_config_core_v3_ConfigSource *msg, envoy_config_core_v3_AggregatedConfigSource* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_AggregatedConfigSource*, UPB_SIZE(16, 24), value, UPB_SIZE(24, 40), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_AggregatedConfigSource*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct envoy_config_core_v3_AggregatedConfigSource* envoy_config_core_v3_ConfigSource_mutable_ads(envoy_config_core_v3_ConfigSource *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_AggregatedConfigSource* envoy_config_core_v3_ConfigSource_mutable_ads(envoy_config_core_v3_ConfigSource* msg, upb_Arena* arena) {
struct envoy_config_core_v3_AggregatedConfigSource* sub = (struct envoy_config_core_v3_AggregatedConfigSource*)envoy_config_core_v3_ConfigSource_ads(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_AggregatedConfigSource*)_upb_Message_New(&envoy_config_core_v3_AggregatedConfigSource_msginit, arena);
@@ -417,9 +639,9 @@ UPB_INLINE struct envoy_config_core_v3_AggregatedConfigSource* envoy_config_core
}
UPB_INLINE void envoy_config_core_v3_ConfigSource_set_initial_fetch_timeout(envoy_config_core_v3_ConfigSource *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_ConfigSource_mutable_initial_fetch_timeout(envoy_config_core_v3_ConfigSource *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_ConfigSource_mutable_initial_fetch_timeout(envoy_config_core_v3_ConfigSource* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_ConfigSource_initial_fetch_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -429,9 +651,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_ConfigSource_mu
return sub;
}
UPB_INLINE void envoy_config_core_v3_ConfigSource_set_self(envoy_config_core_v3_ConfigSource *msg, envoy_config_core_v3_SelfConfigSource* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_SelfConfigSource*, UPB_SIZE(16, 24), value, UPB_SIZE(24, 40), 5);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_SelfConfigSource*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 5);
}
-UPB_INLINE struct envoy_config_core_v3_SelfConfigSource* envoy_config_core_v3_ConfigSource_mutable_self(envoy_config_core_v3_ConfigSource *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_SelfConfigSource* envoy_config_core_v3_ConfigSource_mutable_self(envoy_config_core_v3_ConfigSource* msg, upb_Arena* arena) {
struct envoy_config_core_v3_SelfConfigSource* sub = (struct envoy_config_core_v3_SelfConfigSource*)envoy_config_core_v3_ConfigSource_self(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_SelfConfigSource*)_upb_Message_New(&envoy_config_core_v3_SelfConfigSource_msginit, arena);
@@ -441,21 +663,137 @@ UPB_INLINE struct envoy_config_core_v3_SelfConfigSource* envoy_config_core_v3_Co
return sub;
}
UPB_INLINE void envoy_config_core_v3_ConfigSource_set_resource_api_version(envoy_config_core_v3_ConfigSource *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = value;
}
-UPB_INLINE struct xds_core_v3_Authority** envoy_config_core_v3_ConfigSource_mutable_authorities(envoy_config_core_v3_ConfigSource *msg, size_t *len) {
- return (struct xds_core_v3_Authority**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 16), len);
+UPB_INLINE struct xds_core_v3_Authority** envoy_config_core_v3_ConfigSource_mutable_authorities(envoy_config_core_v3_ConfigSource* msg, size_t* len) {
+ return (struct xds_core_v3_Authority**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 40), len);
}
-UPB_INLINE struct xds_core_v3_Authority** envoy_config_core_v3_ConfigSource_resize_authorities(envoy_config_core_v3_ConfigSource *msg, size_t len, upb_Arena *arena) {
- return (struct xds_core_v3_Authority**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 16), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct xds_core_v3_Authority** envoy_config_core_v3_ConfigSource_resize_authorities(envoy_config_core_v3_ConfigSource* msg, size_t len, upb_Arena* arena) {
+ return (struct xds_core_v3_Authority**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct xds_core_v3_Authority* envoy_config_core_v3_ConfigSource_add_authorities(envoy_config_core_v3_ConfigSource *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_Authority* envoy_config_core_v3_ConfigSource_add_authorities(envoy_config_core_v3_ConfigSource* msg, upb_Arena* arena) {
struct xds_core_v3_Authority* sub = (struct xds_core_v3_Authority*)_upb_Message_New(&xds_core_v3_Authority_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
+UPB_INLINE void envoy_config_core_v3_ConfigSource_set_path_config_source(envoy_config_core_v3_ConfigSource *msg, envoy_config_core_v3_PathConfigSource* value) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_PathConfigSource*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 8);
+}
+UPB_INLINE struct envoy_config_core_v3_PathConfigSource* envoy_config_core_v3_ConfigSource_mutable_path_config_source(envoy_config_core_v3_ConfigSource* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_PathConfigSource* sub = (struct envoy_config_core_v3_PathConfigSource*)envoy_config_core_v3_ConfigSource_path_config_source(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_core_v3_PathConfigSource*)_upb_Message_New(&envoy_config_core_v3_PathConfigSource_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_core_v3_ConfigSource_set_path_config_source(msg, sub);
+ }
+ return sub;
+}
+
+/* envoy.config.core.v3.ExtensionConfigSource */
+
+UPB_INLINE envoy_config_core_v3_ExtensionConfigSource* envoy_config_core_v3_ExtensionConfigSource_new(upb_Arena* arena) {
+ return (envoy_config_core_v3_ExtensionConfigSource*)_upb_Message_New(&envoy_config_core_v3_ExtensionConfigSource_msginit, arena);
+}
+UPB_INLINE envoy_config_core_v3_ExtensionConfigSource* envoy_config_core_v3_ExtensionConfigSource_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_config_core_v3_ExtensionConfigSource* ret = envoy_config_core_v3_ExtensionConfigSource_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_core_v3_ExtensionConfigSource_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_config_core_v3_ExtensionConfigSource* envoy_config_core_v3_ExtensionConfigSource_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_config_core_v3_ExtensionConfigSource* ret = envoy_config_core_v3_ExtensionConfigSource_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_core_v3_ExtensionConfigSource_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_config_core_v3_ExtensionConfigSource_serialize(const envoy_config_core_v3_ExtensionConfigSource* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_ExtensionConfigSource_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_config_core_v3_ExtensionConfigSource_serialize_ex(const envoy_config_core_v3_ExtensionConfigSource* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_ExtensionConfigSource_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_ExtensionConfigSource_has_config_source(const envoy_config_core_v3_ExtensionConfigSource* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_ExtensionConfigSource_clear_config_source(const envoy_config_core_v3_ExtensionConfigSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
+UPB_INLINE const envoy_config_core_v3_ConfigSource* envoy_config_core_v3_ExtensionConfigSource_config_source(const envoy_config_core_v3_ExtensionConfigSource* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_core_v3_ConfigSource*);
+}
+UPB_INLINE bool envoy_config_core_v3_ExtensionConfigSource_has_default_config(const envoy_config_core_v3_ExtensionConfigSource* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_ExtensionConfigSource_clear_default_config(const envoy_config_core_v3_ExtensionConfigSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_core_v3_ExtensionConfigSource_default_config(const envoy_config_core_v3_ExtensionConfigSource* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Any*);
+}
+UPB_INLINE void envoy_config_core_v3_ExtensionConfigSource_clear_apply_default_config_without_warming(const envoy_config_core_v3_ExtensionConfigSource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
+UPB_INLINE bool envoy_config_core_v3_ExtensionConfigSource_apply_default_config_without_warming(const envoy_config_core_v3_ExtensionConfigSource* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
+}
+UPB_INLINE void envoy_config_core_v3_ExtensionConfigSource_clear_type_urls(const envoy_config_core_v3_ExtensionConfigSource* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE upb_StringView const* envoy_config_core_v3_ExtensionConfigSource_type_urls(const envoy_config_core_v3_ExtensionConfigSource* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+
+UPB_INLINE void envoy_config_core_v3_ExtensionConfigSource_set_config_source(envoy_config_core_v3_ExtensionConfigSource *msg, envoy_config_core_v3_ConfigSource* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_core_v3_ConfigSource*) = value;
+}
+UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_core_v3_ExtensionConfigSource_mutable_config_source(envoy_config_core_v3_ExtensionConfigSource* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_config_core_v3_ExtensionConfigSource_config_source(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_core_v3_ExtensionConfigSource_set_config_source(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_config_core_v3_ExtensionConfigSource_set_default_config(envoy_config_core_v3_ExtensionConfigSource *msg, struct google_protobuf_Any* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Any*) = value;
+}
+UPB_INLINE struct google_protobuf_Any* envoy_config_core_v3_ExtensionConfigSource_mutable_default_config(envoy_config_core_v3_ExtensionConfigSource* msg, upb_Arena* arena) {
+ struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_core_v3_ExtensionConfigSource_default_config(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_core_v3_ExtensionConfigSource_set_default_config(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_config_core_v3_ExtensionConfigSource_set_apply_default_config_without_warming(envoy_config_core_v3_ExtensionConfigSource *msg, bool value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
+}
+UPB_INLINE upb_StringView* envoy_config_core_v3_ExtensionConfigSource_mutable_type_urls(envoy_config_core_v3_ExtensionConfigSource* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE upb_StringView* envoy_config_core_v3_ExtensionConfigSource_resize_type_urls(envoy_config_core_v3_ExtensionConfigSource* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(3, 4), arena);
+}
+UPB_INLINE bool envoy_config_core_v3_ExtensionConfigSource_add_type_urls(envoy_config_core_v3_ExtensionConfigSource* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(3, 4), &val, arena);
+}
extern const upb_MiniTable_File envoy_config_core_v3_config_source_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c
index fa91ff055d..c2709636ce 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c
@@ -21,13 +21,13 @@ static const upb_MiniTable_Sub envoy_config_core_v3_EventServiceConfig_submsgs[1
};
static const upb_MiniTable_Field envoy_config_core_v3_EventServiceConfig__fields[1] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_EventServiceConfig_msginit = {
&envoy_config_core_v3_EventServiceConfig_submsgs[0],
&envoy_config_core_v3_EventServiceConfig__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h
index a9c4b6024c..93b84f9e3a 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h
@@ -53,25 +53,37 @@ UPB_INLINE envoy_config_core_v3_EventServiceConfig* envoy_config_core_v3_EventSe
return ret;
}
UPB_INLINE char* envoy_config_core_v3_EventServiceConfig_serialize(const envoy_config_core_v3_EventServiceConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_EventServiceConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_EventServiceConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_EventServiceConfig_serialize_ex(const envoy_config_core_v3_EventServiceConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_EventServiceConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_EventServiceConfig_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_EventServiceConfig_config_source_specifier_grpc_service = 1,
envoy_config_core_v3_EventServiceConfig_config_source_specifier_NOT_SET = 0
} envoy_config_core_v3_EventServiceConfig_config_source_specifier_oneofcases;
-UPB_INLINE envoy_config_core_v3_EventServiceConfig_config_source_specifier_oneofcases envoy_config_core_v3_EventServiceConfig_config_source_specifier_case(const envoy_config_core_v3_EventServiceConfig* msg) { return (envoy_config_core_v3_EventServiceConfig_config_source_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_EventServiceConfig_has_grpc_service(const envoy_config_core_v3_EventServiceConfig *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const struct envoy_config_core_v3_GrpcService* envoy_config_core_v3_EventServiceConfig_grpc_service(const envoy_config_core_v3_EventServiceConfig *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_GrpcService*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
+UPB_INLINE envoy_config_core_v3_EventServiceConfig_config_source_specifier_oneofcases envoy_config_core_v3_EventServiceConfig_config_source_specifier_case(const envoy_config_core_v3_EventServiceConfig* msg) {
+ return (envoy_config_core_v3_EventServiceConfig_config_source_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_EventServiceConfig_has_grpc_service(const envoy_config_core_v3_EventServiceConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_core_v3_EventServiceConfig_clear_grpc_service(const envoy_config_core_v3_EventServiceConfig* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_GrpcService*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_EventServiceConfig_config_source_specifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_GrpcService* envoy_config_core_v3_EventServiceConfig_grpc_service(const envoy_config_core_v3_EventServiceConfig* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_GrpcService*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
UPB_INLINE void envoy_config_core_v3_EventServiceConfig_set_grpc_service(envoy_config_core_v3_EventServiceConfig *msg, struct envoy_config_core_v3_GrpcService* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_GrpcService*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_GrpcService*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_core_v3_EventServiceConfig_mutable_grpc_service(envoy_config_core_v3_EventServiceConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_core_v3_EventServiceConfig_mutable_grpc_service(envoy_config_core_v3_EventServiceConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService* sub = (struct envoy_config_core_v3_GrpcService*)envoy_config_core_v3_EventServiceConfig_grpc_service(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService*)_upb_Message_New(&envoy_config_core_v3_GrpcService_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c
index 335388cd42..9aa57e0a0c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c
@@ -9,7 +9,6 @@
#include <stddef.h>
#include "upb/msg_internal.h"
#include "envoy/config/core/v3/extension.upb.h"
-#include "envoy/config/core/v3/config_source.upb.h"
#include "google/protobuf/any.upb.h"
#include "udpa/annotations/status.upb.h"
#include "validate/validate.upb.h"
@@ -21,44 +20,25 @@ static const upb_MiniTable_Sub envoy_config_core_v3_TypedExtensionConfig_submsgs
};
static const upb_MiniTable_Field envoy_config_core_v3_TypedExtensionConfig__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_TypedExtensionConfig_msginit = {
&envoy_config_core_v3_TypedExtensionConfig_submsgs[0],
&envoy_config_core_v3_TypedExtensionConfig__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_core_v3_ExtensionConfigSource_submsgs[2] = {
- {.submsg = &envoy_config_core_v3_ConfigSource_msginit},
- {.submsg = &google_protobuf_Any_msginit},
-};
-
-static const upb_MiniTable_Field envoy_config_core_v3_ExtensionConfigSource__fields[4] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_config_core_v3_ExtensionConfigSource_msginit = {
- &envoy_config_core_v3_ExtensionConfigSource_submsgs[0],
- &envoy_config_core_v3_ExtensionConfigSource__fields[0],
- UPB_SIZE(16, 32), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
-};
-
-static const upb_MiniTable *messages_layout[2] = {
+static const upb_MiniTable *messages_layout[1] = {
&envoy_config_core_v3_TypedExtensionConfig_msginit,
- &envoy_config_core_v3_ExtensionConfigSource_msginit,
};
const upb_MiniTable_File envoy_config_core_v3_extension_proto_upb_file_layout = {
messages_layout,
NULL,
NULL,
- 2,
+ 1,
0,
0,
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h
index 7f99685ffc..dd48f15cb7 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h
@@ -21,14 +21,9 @@ extern "C" {
#endif
struct envoy_config_core_v3_TypedExtensionConfig;
-struct envoy_config_core_v3_ExtensionConfigSource;
typedef struct envoy_config_core_v3_TypedExtensionConfig envoy_config_core_v3_TypedExtensionConfig;
-typedef struct envoy_config_core_v3_ExtensionConfigSource envoy_config_core_v3_ExtensionConfigSource;
extern const upb_MiniTable envoy_config_core_v3_TypedExtensionConfig_msginit;
-extern const upb_MiniTable envoy_config_core_v3_ExtensionConfigSource_msginit;
-struct envoy_config_core_v3_ConfigSource;
struct google_protobuf_Any;
-extern const upb_MiniTable envoy_config_core_v3_ConfigSource_msginit;
extern const upb_MiniTable google_protobuf_Any_msginit;
@@ -58,16 +53,28 @@ UPB_INLINE envoy_config_core_v3_TypedExtensionConfig* envoy_config_core_v3_Typed
return ret;
}
UPB_INLINE char* envoy_config_core_v3_TypedExtensionConfig_serialize(const envoy_config_core_v3_TypedExtensionConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_TypedExtensionConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_TypedExtensionConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_TypedExtensionConfig_serialize_ex(const envoy_config_core_v3_TypedExtensionConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_TypedExtensionConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_TypedExtensionConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_TypedExtensionConfig_clear_name(const envoy_config_core_v3_TypedExtensionConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_TypedExtensionConfig_name(const envoy_config_core_v3_TypedExtensionConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_core_v3_TypedExtensionConfig_has_typed_config(const envoy_config_core_v3_TypedExtensionConfig *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_core_v3_TypedExtensionConfig_has_typed_config(const envoy_config_core_v3_TypedExtensionConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_TypedExtensionConfig_clear_typed_config(const envoy_config_core_v3_TypedExtensionConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Any* envoy_config_core_v3_TypedExtensionConfig_typed_config(const envoy_config_core_v3_TypedExtensionConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Any*);
}
@@ -79,7 +86,7 @@ UPB_INLINE void envoy_config_core_v3_TypedExtensionConfig_set_typed_config(envoy
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_core_v3_TypedExtensionConfig_mutable_typed_config(envoy_config_core_v3_TypedExtensionConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_core_v3_TypedExtensionConfig_mutable_typed_config(envoy_config_core_v3_TypedExtensionConfig* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_core_v3_TypedExtensionConfig_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -89,90 +96,6 @@ UPB_INLINE struct google_protobuf_Any* envoy_config_core_v3_TypedExtensionConfig
return sub;
}
-/* envoy.config.core.v3.ExtensionConfigSource */
-
-UPB_INLINE envoy_config_core_v3_ExtensionConfigSource* envoy_config_core_v3_ExtensionConfigSource_new(upb_Arena* arena) {
- return (envoy_config_core_v3_ExtensionConfigSource*)_upb_Message_New(&envoy_config_core_v3_ExtensionConfigSource_msginit, arena);
-}
-UPB_INLINE envoy_config_core_v3_ExtensionConfigSource* envoy_config_core_v3_ExtensionConfigSource_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_config_core_v3_ExtensionConfigSource* ret = envoy_config_core_v3_ExtensionConfigSource_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_config_core_v3_ExtensionConfigSource_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_config_core_v3_ExtensionConfigSource* envoy_config_core_v3_ExtensionConfigSource_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_config_core_v3_ExtensionConfigSource* ret = envoy_config_core_v3_ExtensionConfigSource_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_config_core_v3_ExtensionConfigSource_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_config_core_v3_ExtensionConfigSource_serialize(const envoy_config_core_v3_ExtensionConfigSource* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_ExtensionConfigSource_msginit, 0, arena, len);
-}
-UPB_INLINE char* envoy_config_core_v3_ExtensionConfigSource_serialize_ex(const envoy_config_core_v3_ExtensionConfigSource* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_ExtensionConfigSource_msginit, options, arena, len);
-}
-UPB_INLINE bool envoy_config_core_v3_ExtensionConfigSource_has_config_source(const envoy_config_core_v3_ExtensionConfigSource *msg) { return _upb_hasbit(msg, 1); }
-UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_config_core_v3_ExtensionConfigSource_config_source(const envoy_config_core_v3_ExtensionConfigSource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_ConfigSource*);
-}
-UPB_INLINE bool envoy_config_core_v3_ExtensionConfigSource_has_default_config(const envoy_config_core_v3_ExtensionConfigSource *msg) { return _upb_hasbit(msg, 2); }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_core_v3_ExtensionConfigSource_default_config(const envoy_config_core_v3_ExtensionConfigSource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Any*);
-}
-UPB_INLINE bool envoy_config_core_v3_ExtensionConfigSource_apply_default_config_without_warming(const envoy_config_core_v3_ExtensionConfigSource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
-}
-UPB_INLINE upb_StringView const* envoy_config_core_v3_ExtensionConfigSource_type_urls(const envoy_config_core_v3_ExtensionConfigSource *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len); }
-
-UPB_INLINE void envoy_config_core_v3_ExtensionConfigSource_set_config_source(envoy_config_core_v3_ExtensionConfigSource *msg, struct envoy_config_core_v3_ConfigSource* value) {
- _upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_ConfigSource*) = value;
-}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_core_v3_ExtensionConfigSource_mutable_config_source(envoy_config_core_v3_ExtensionConfigSource *msg, upb_Arena *arena) {
- struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_config_core_v3_ExtensionConfigSource_config_source(msg);
- if (sub == NULL) {
- sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
- if (!sub) return NULL;
- envoy_config_core_v3_ExtensionConfigSource_set_config_source(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_config_core_v3_ExtensionConfigSource_set_default_config(envoy_config_core_v3_ExtensionConfigSource *msg, struct google_protobuf_Any* value) {
- _upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Any*) = value;
-}
-UPB_INLINE struct google_protobuf_Any* envoy_config_core_v3_ExtensionConfigSource_mutable_default_config(envoy_config_core_v3_ExtensionConfigSource *msg, upb_Arena *arena) {
- struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_core_v3_ExtensionConfigSource_default_config(msg);
- if (sub == NULL) {
- sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- if (!sub) return NULL;
- envoy_config_core_v3_ExtensionConfigSource_set_default_config(msg, sub);
- }
- return sub;
-}
-UPB_INLINE void envoy_config_core_v3_ExtensionConfigSource_set_apply_default_config_without_warming(envoy_config_core_v3_ExtensionConfigSource *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
-}
-UPB_INLINE upb_StringView* envoy_config_core_v3_ExtensionConfigSource_mutable_type_urls(envoy_config_core_v3_ExtensionConfigSource *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
-}
-UPB_INLINE upb_StringView* envoy_config_core_v3_ExtensionConfigSource_resize_type_urls(envoy_config_core_v3_ExtensionConfigSource *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(3, 4), arena);
-}
-UPB_INLINE bool envoy_config_core_v3_ExtensionConfigSource_add_type_urls(envoy_config_core_v3_ExtensionConfigSource *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(3, 4), &val,
- arena);
-}
-
extern const upb_MiniTable_File envoy_config_core_v3_extension_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c
index b81e9fd3d8..c4267c31f5 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c
@@ -20,24 +20,24 @@ static const upb_MiniTable_Sub envoy_config_core_v3_GrpcMethodList_submsgs[1] =
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcMethodList__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcMethodList_msginit = {
&envoy_config_core_v3_GrpcMethodList_submsgs[0],
&envoy_config_core_v3_GrpcMethodList__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcMethodList_Service__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcMethodList_Service_msginit = {
NULL,
&envoy_config_core_v3_GrpcMethodList_Service__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h
index a10f78a71d..b500d2893b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h
@@ -54,25 +54,35 @@ UPB_INLINE envoy_config_core_v3_GrpcMethodList* envoy_config_core_v3_GrpcMethodL
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcMethodList_serialize(const envoy_config_core_v3_GrpcMethodList* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcMethodList_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcMethodList_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcMethodList_serialize_ex(const envoy_config_core_v3_GrpcMethodList* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcMethodList_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcMethodList_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcMethodList_has_services(const envoy_config_core_v3_GrpcMethodList* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_core_v3_GrpcMethodList_clear_services(const envoy_config_core_v3_GrpcMethodList* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_core_v3_GrpcMethodList_Service* const* envoy_config_core_v3_GrpcMethodList_services(const envoy_config_core_v3_GrpcMethodList* msg, size_t* len) {
+ return (const envoy_config_core_v3_GrpcMethodList_Service* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_core_v3_GrpcMethodList_has_services(const envoy_config_core_v3_GrpcMethodList *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_core_v3_GrpcMethodList_Service* const* envoy_config_core_v3_GrpcMethodList_services(const envoy_config_core_v3_GrpcMethodList *msg, size_t *len) { return (const envoy_config_core_v3_GrpcMethodList_Service* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_core_v3_GrpcMethodList_Service** envoy_config_core_v3_GrpcMethodList_mutable_services(envoy_config_core_v3_GrpcMethodList *msg, size_t *len) {
+UPB_INLINE envoy_config_core_v3_GrpcMethodList_Service** envoy_config_core_v3_GrpcMethodList_mutable_services(envoy_config_core_v3_GrpcMethodList* msg, size_t* len) {
return (envoy_config_core_v3_GrpcMethodList_Service**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_core_v3_GrpcMethodList_Service** envoy_config_core_v3_GrpcMethodList_resize_services(envoy_config_core_v3_GrpcMethodList *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_core_v3_GrpcMethodList_Service** envoy_config_core_v3_GrpcMethodList_resize_services(envoy_config_core_v3_GrpcMethodList* msg, size_t len, upb_Arena* arena) {
return (envoy_config_core_v3_GrpcMethodList_Service**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_GrpcMethodList_Service* envoy_config_core_v3_GrpcMethodList_add_services(envoy_config_core_v3_GrpcMethodList *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcMethodList_Service* envoy_config_core_v3_GrpcMethodList_add_services(envoy_config_core_v3_GrpcMethodList* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcMethodList_Service* sub = (struct envoy_config_core_v3_GrpcMethodList_Service*)_upb_Message_New(&envoy_config_core_v3_GrpcMethodList_Service_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -102,29 +112,40 @@ UPB_INLINE envoy_config_core_v3_GrpcMethodList_Service* envoy_config_core_v3_Grp
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcMethodList_Service_serialize(const envoy_config_core_v3_GrpcMethodList_Service* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcMethodList_Service_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcMethodList_Service_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcMethodList_Service_serialize_ex(const envoy_config_core_v3_GrpcMethodList_Service* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcMethodList_Service_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcMethodList_Service_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcMethodList_Service_clear_name(const envoy_config_core_v3_GrpcMethodList_Service* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcMethodList_Service_name(const envoy_config_core_v3_GrpcMethodList_Service* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
-UPB_INLINE upb_StringView const* envoy_config_core_v3_GrpcMethodList_Service_method_names(const envoy_config_core_v3_GrpcMethodList_Service *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
+UPB_INLINE void envoy_config_core_v3_GrpcMethodList_Service_clear_method_names(const envoy_config_core_v3_GrpcMethodList_Service* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE upb_StringView const* envoy_config_core_v3_GrpcMethodList_Service_method_names(const envoy_config_core_v3_GrpcMethodList_Service* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
UPB_INLINE void envoy_config_core_v3_GrpcMethodList_Service_set_name(envoy_config_core_v3_GrpcMethodList_Service *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
-UPB_INLINE upb_StringView* envoy_config_core_v3_GrpcMethodList_Service_mutable_method_names(envoy_config_core_v3_GrpcMethodList_Service *msg, size_t *len) {
+UPB_INLINE upb_StringView* envoy_config_core_v3_GrpcMethodList_Service_mutable_method_names(envoy_config_core_v3_GrpcMethodList_Service* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE upb_StringView* envoy_config_core_v3_GrpcMethodList_Service_resize_method_names(envoy_config_core_v3_GrpcMethodList_Service *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* envoy_config_core_v3_GrpcMethodList_Service_resize_method_names(envoy_config_core_v3_GrpcMethodList_Service* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_core_v3_GrpcMethodList_Service_add_method_names(envoy_config_core_v3_GrpcMethodList_Service *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_core_v3_GrpcMethodList_Service_add_method_names(envoy_config_core_v3_GrpcMethodList_Service* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(3, 4), &val, arena);
}
extern const upb_MiniTable_File envoy_config_core_v3_grpc_method_list_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c
index b074b1ca73..49f188632f 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c
@@ -25,143 +25,145 @@
static const upb_MiniTable_Sub envoy_config_core_v3_GrpcService_submsgs[4] = {
{.submsg = &envoy_config_core_v3_GrpcService_EnvoyGrpc_msginit},
{.submsg = &envoy_config_core_v3_GrpcService_GoogleGrpc_msginit},
- {.submsg = &envoy_config_core_v3_HeaderValue_msginit},
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_core_v3_HeaderValue_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcService__fields[4] = {
- {1, UPB_SIZE(12, 24), UPB_SIZE(-17, -33), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), UPB_SIZE(-17, -33), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 1, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 16), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 24), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(12, 16), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcService_msginit = {
&envoy_config_core_v3_GrpcService_submsgs[0],
&envoy_config_core_v3_GrpcService__fields[0],
- UPB_SIZE(24, 40), 4, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 32), 4, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcService_EnvoyGrpc__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcService_EnvoyGrpc_msginit = {
NULL,
&envoy_config_core_v3_GrpcService_EnvoyGrpc__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_GrpcService_GoogleGrpc_submsgs[5] = {
- {.submsg = &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_msginit},
- {.submsg = &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_msginit},
{.submsg = &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_msginit},
+ {.submsg = &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_msginit},
{.submsg = &google_protobuf_Struct_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcService_GoogleGrpc__fields[8] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(28, 56), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(44, 88), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(32, 64), 2, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(36, 72), 3, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(40, 80), 4, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(28, 56), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(36, 72), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(40, 80), UPB_SIZE(3, 3), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(44, 88), UPB_SIZE(4, 4), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcService_GoogleGrpc_msginit = {
&envoy_config_core_v3_GrpcService_GoogleGrpc_submsgs[0],
&envoy_config_core_v3_GrpcService_GoogleGrpc__fields[0],
- UPB_SIZE(48, 96), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(48, 96), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_submsgs[3] = {
+ {.submsg = &envoy_config_core_v3_DataSource_msginit},
+ {.submsg = &envoy_config_core_v3_DataSource_msginit},
{.submsg = &envoy_config_core_v3_DataSource_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials__fields[3] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_msginit = {
&envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_submsgs[0],
&envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
const upb_MiniTable envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_submsgs[3] = {
- {.submsg = &envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials_msginit},
{.submsg = &envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_msginit},
{.submsg = &google_protobuf_Empty_msginit},
+ {.submsg = &envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials__fields[3] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_msginit = {
&envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_submsgs[0],
&envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials__fields[0],
- UPB_SIZE(8, 16), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(8, 16), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_submsgs[5] = {
+ {.submsg = &google_protobuf_Empty_msginit},
+ {.submsg = &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_msginit},
{.submsg = &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials_msginit},
{.submsg = &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_msginit},
- {.submsg = &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_msginit},
{.submsg = &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_msginit},
- {.submsg = &google_protobuf_Empty_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials__fields[7] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_msginit = {
&envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_submsgs[0],
&envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials__fields[0],
- UPB_SIZE(16, 32), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(16, 24), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials__fields[2] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_msginit = {
NULL,
&envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials_msginit = {
NULL,
&envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_submsgs[1] = {
@@ -169,32 +171,32 @@ static const upb_MiniTable_Sub envoy_config_core_v3_GrpcService_GoogleGrpc_CallC
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_msginit = {
&envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_submsgs[0],
&envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService__fields[9] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 48), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(32, 64), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(40, 80), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {7, UPB_SIZE(48, 96), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {8, UPB_SIZE(56, 112), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {9, UPB_SIZE(64, 128), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(32, 64), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(40, 80), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(48, 96), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(56, 112), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(64, 128), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_msginit = {
NULL,
&envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService__fields[0],
- UPB_SIZE(72, 144), 9, upb_ExtMode_NonExtendable, 9, 255, 0,
+ UPB_SIZE(72, 144), 9, kUpb_ExtMode_NonExtendable, 9, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_submsgs[1] = {
@@ -202,24 +204,24 @@ static const upb_MiniTable_Sub envoy_config_core_v3_GrpcService_GoogleGrpc_Chann
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_msginit = {
&envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_submsgs[0],
&envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value__fields[2] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_msginit = {
NULL,
&envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry_submsgs[1] = {
@@ -227,14 +229,14 @@ static const upb_MiniTable_Sub envoy_config_core_v3_GrpcService_GoogleGrpc_Chann
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry_msginit = {
&envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry_submsgs[0],
&envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[14] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h
index f063e57c08..fda73883a4 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h
@@ -104,34 +104,65 @@ UPB_INLINE envoy_config_core_v3_GrpcService* envoy_config_core_v3_GrpcService_pa
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_serialize(const envoy_config_core_v3_GrpcService* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_serialize_ex(const envoy_config_core_v3_GrpcService* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_GrpcService_target_specifier_envoy_grpc = 1,
envoy_config_core_v3_GrpcService_target_specifier_google_grpc = 2,
envoy_config_core_v3_GrpcService_target_specifier_NOT_SET = 0
} envoy_config_core_v3_GrpcService_target_specifier_oneofcases;
-UPB_INLINE envoy_config_core_v3_GrpcService_target_specifier_oneofcases envoy_config_core_v3_GrpcService_target_specifier_case(const envoy_config_core_v3_GrpcService* msg) { return (envoy_config_core_v3_GrpcService_target_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(16, 32), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_GrpcService_has_envoy_grpc(const envoy_config_core_v3_GrpcService *msg) { return _upb_getoneofcase(msg, UPB_SIZE(16, 32)) == 1; }
-UPB_INLINE const envoy_config_core_v3_GrpcService_EnvoyGrpc* envoy_config_core_v3_GrpcService_envoy_grpc(const envoy_config_core_v3_GrpcService *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_EnvoyGrpc*, UPB_SIZE(12, 24), UPB_SIZE(16, 32), 1, NULL); }
-UPB_INLINE bool envoy_config_core_v3_GrpcService_has_google_grpc(const envoy_config_core_v3_GrpcService *msg) { return _upb_getoneofcase(msg, UPB_SIZE(16, 32)) == 2; }
-UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc* envoy_config_core_v3_GrpcService_google_grpc(const envoy_config_core_v3_GrpcService *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_GoogleGrpc*, UPB_SIZE(12, 24), UPB_SIZE(16, 32), 2, NULL); }
-UPB_INLINE bool envoy_config_core_v3_GrpcService_has_timeout(const envoy_config_core_v3_GrpcService *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_config_core_v3_GrpcService_target_specifier_oneofcases envoy_config_core_v3_GrpcService_target_specifier_case(const envoy_config_core_v3_GrpcService* msg) {
+ return (envoy_config_core_v3_GrpcService_target_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_has_envoy_grpc(const envoy_config_core_v3_GrpcService* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 1;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_clear_envoy_grpc(const envoy_config_core_v3_GrpcService* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_EnvoyGrpc*, UPB_SIZE(16, 24), 0, UPB_SIZE(4, 4), envoy_config_core_v3_GrpcService_target_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_GrpcService_EnvoyGrpc* envoy_config_core_v3_GrpcService_envoy_grpc(const envoy_config_core_v3_GrpcService* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_EnvoyGrpc*, UPB_SIZE(16, 24), UPB_SIZE(4, 4), 1, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_has_google_grpc(const envoy_config_core_v3_GrpcService* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_clear_google_grpc(const envoy_config_core_v3_GrpcService* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc*, UPB_SIZE(16, 24), 0, UPB_SIZE(4, 4), envoy_config_core_v3_GrpcService_target_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc* envoy_config_core_v3_GrpcService_google_grpc(const envoy_config_core_v3_GrpcService* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_GoogleGrpc*, UPB_SIZE(16, 24), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_has_timeout(const envoy_config_core_v3_GrpcService* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_clear_timeout(const envoy_config_core_v3_GrpcService* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_GrpcService_timeout(const envoy_config_core_v3_GrpcService* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_has_initial_metadata(const envoy_config_core_v3_GrpcService* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_clear_initial_metadata(const envoy_config_core_v3_GrpcService* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE const struct envoy_config_core_v3_HeaderValue* const* envoy_config_core_v3_GrpcService_initial_metadata(const envoy_config_core_v3_GrpcService* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_HeaderValue* const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len);
}
-UPB_INLINE bool envoy_config_core_v3_GrpcService_has_initial_metadata(const envoy_config_core_v3_GrpcService *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct envoy_config_core_v3_HeaderValue* const* envoy_config_core_v3_GrpcService_initial_metadata(const envoy_config_core_v3_GrpcService *msg, size_t *len) { return (const struct envoy_config_core_v3_HeaderValue* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
UPB_INLINE void envoy_config_core_v3_GrpcService_set_envoy_grpc(envoy_config_core_v3_GrpcService *msg, envoy_config_core_v3_GrpcService_EnvoyGrpc* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_EnvoyGrpc*, UPB_SIZE(12, 24), value, UPB_SIZE(16, 32), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_EnvoyGrpc*, UPB_SIZE(16, 24), value, UPB_SIZE(4, 4), 1);
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService_EnvoyGrpc* envoy_config_core_v3_GrpcService_mutable_envoy_grpc(envoy_config_core_v3_GrpcService *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService_EnvoyGrpc* envoy_config_core_v3_GrpcService_mutable_envoy_grpc(envoy_config_core_v3_GrpcService* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService_EnvoyGrpc* sub = (struct envoy_config_core_v3_GrpcService_EnvoyGrpc*)envoy_config_core_v3_GrpcService_envoy_grpc(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService_EnvoyGrpc*)_upb_Message_New(&envoy_config_core_v3_GrpcService_EnvoyGrpc_msginit, arena);
@@ -141,9 +172,9 @@ UPB_INLINE struct envoy_config_core_v3_GrpcService_EnvoyGrpc* envoy_config_core_
return sub;
}
UPB_INLINE void envoy_config_core_v3_GrpcService_set_google_grpc(envoy_config_core_v3_GrpcService *msg, envoy_config_core_v3_GrpcService_GoogleGrpc* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc*, UPB_SIZE(12, 24), value, UPB_SIZE(16, 32), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc*, UPB_SIZE(16, 24), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc* envoy_config_core_v3_GrpcService_mutable_google_grpc(envoy_config_core_v3_GrpcService *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc* envoy_config_core_v3_GrpcService_mutable_google_grpc(envoy_config_core_v3_GrpcService* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService_GoogleGrpc* sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc*)envoy_config_core_v3_GrpcService_google_grpc(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc*)_upb_Message_New(&envoy_config_core_v3_GrpcService_GoogleGrpc_msginit, arena);
@@ -154,9 +185,9 @@ UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc* envoy_config_core
}
UPB_INLINE void envoy_config_core_v3_GrpcService_set_timeout(envoy_config_core_v3_GrpcService *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_GrpcService_mutable_timeout(envoy_config_core_v3_GrpcService *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_GrpcService_mutable_timeout(envoy_config_core_v3_GrpcService* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_GrpcService_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -165,16 +196,15 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_GrpcService_mut
}
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValue** envoy_config_core_v3_GrpcService_mutable_initial_metadata(envoy_config_core_v3_GrpcService *msg, size_t *len) {
- return (struct envoy_config_core_v3_HeaderValue**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
+UPB_INLINE struct envoy_config_core_v3_HeaderValue** envoy_config_core_v3_GrpcService_mutable_initial_metadata(envoy_config_core_v3_GrpcService* msg, size_t* len) {
+ return (struct envoy_config_core_v3_HeaderValue**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 16), len);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValue** envoy_config_core_v3_GrpcService_resize_initial_metadata(envoy_config_core_v3_GrpcService *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_HeaderValue**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_HeaderValue** envoy_config_core_v3_GrpcService_resize_initial_metadata(envoy_config_core_v3_GrpcService* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_HeaderValue**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValue* envoy_config_core_v3_GrpcService_add_initial_metadata(envoy_config_core_v3_GrpcService *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValue* envoy_config_core_v3_GrpcService_add_initial_metadata(envoy_config_core_v3_GrpcService* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HeaderValue* sub = (struct envoy_config_core_v3_HeaderValue*)_upb_Message_New(&envoy_config_core_v3_HeaderValue_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -204,15 +234,25 @@ UPB_INLINE envoy_config_core_v3_GrpcService_EnvoyGrpc* envoy_config_core_v3_Grpc
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_EnvoyGrpc_serialize(const envoy_config_core_v3_GrpcService_EnvoyGrpc* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_EnvoyGrpc_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_EnvoyGrpc_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_EnvoyGrpc_serialize_ex(const envoy_config_core_v3_GrpcService_EnvoyGrpc* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_EnvoyGrpc_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_EnvoyGrpc_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_EnvoyGrpc_clear_cluster_name(const envoy_config_core_v3_GrpcService_EnvoyGrpc* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_EnvoyGrpc_cluster_name(const envoy_config_core_v3_GrpcService_EnvoyGrpc* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_GrpcService_EnvoyGrpc_clear_authority(const envoy_config_core_v3_GrpcService_EnvoyGrpc* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_EnvoyGrpc_authority(const envoy_config_core_v3_GrpcService_EnvoyGrpc* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
@@ -249,38 +289,78 @@ UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc* envoy_config_core_v3_Grp
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_serialize(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_serialize_ex(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_clear_target_uri(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_target_uri(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_has_channel_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_has_channel_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_clear_channel_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_channel_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials*);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_has_call_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_clear_call_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* const* envoy_config_core_v3_GrpcService_GoogleGrpc_call_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg, size_t* len) {
+ return (const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_clear_stat_prefix(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_has_call_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 88)); }
-UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* const* envoy_config_core_v3_GrpcService_GoogleGrpc_call_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc *msg, size_t *len) { return (const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* const*)_upb_array_accessor(msg, UPB_SIZE(44, 88), len); }
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_stat_prefix(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_clear_credentials_factory_name(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_credentials_factory_name(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_has_config(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_clear_config(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_has_config(const envoy_config_core_v3_GrpcService_GoogleGrpc *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_Struct* envoy_config_core_v3_GrpcService_GoogleGrpc_config(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const struct google_protobuf_Struct*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const struct google_protobuf_Struct*);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_has_per_stream_buffer_limit_bytes(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_clear_per_stream_buffer_limit_bytes(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 80), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_has_per_stream_buffer_limit_bytes(const envoy_config_core_v3_GrpcService_GoogleGrpc *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_GrpcService_GoogleGrpc_per_stream_buffer_limit_bytes(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 80), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_has_channel_args(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_clear_channel_args(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 88), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_has_channel_args(const envoy_config_core_v3_GrpcService_GoogleGrpc *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* envoy_config_core_v3_GrpcService_GoogleGrpc_channel_args(const envoy_config_core_v3_GrpcService_GoogleGrpc* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 80), const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 88), const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs*);
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_set_target_uri(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, upb_StringView value) {
@@ -288,9 +368,9 @@ UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_set_target_uri(envoy
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_set_channel_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 56), envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_mutable_channel_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_mutable_channel_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials*)envoy_config_core_v3_GrpcService_GoogleGrpc_channel_credentials(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials*)_upb_Message_New(&envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_msginit, arena);
@@ -299,30 +379,29 @@ UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials
}
return sub;
}
-UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials** envoy_config_core_v3_GrpcService_GoogleGrpc_mutable_call_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, size_t *len) {
- return (envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials**)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 88), len);
+UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials** envoy_config_core_v3_GrpcService_GoogleGrpc_mutable_call_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, size_t* len) {
+ return (envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials** envoy_config_core_v3_GrpcService_GoogleGrpc_resize_call_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 88), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials** envoy_config_core_v3_GrpcService_GoogleGrpc_resize_call_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_add_call_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_add_call_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials*)_upb_Message_New(&envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(44, 88), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_set_stat_prefix(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_set_credentials_factory_name(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_set_config(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, struct google_protobuf_Struct* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 64), struct google_protobuf_Struct*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), struct google_protobuf_Struct*) = value;
}
-UPB_INLINE struct google_protobuf_Struct* envoy_config_core_v3_GrpcService_GoogleGrpc_mutable_config(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Struct* envoy_config_core_v3_GrpcService_GoogleGrpc_mutable_config(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, upb_Arena* arena) {
struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)envoy_config_core_v3_GrpcService_GoogleGrpc_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Struct*)_upb_Message_New(&google_protobuf_Struct_msginit, arena);
@@ -333,9 +412,9 @@ UPB_INLINE struct google_protobuf_Struct* envoy_config_core_v3_GrpcService_Googl
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_set_per_stream_buffer_limit_bytes(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(36, 72), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 80), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_GrpcService_GoogleGrpc_mutable_per_stream_buffer_limit_bytes(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_GrpcService_GoogleGrpc_mutable_per_stream_buffer_limit_bytes(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_GrpcService_GoogleGrpc_per_stream_buffer_limit_bytes(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -346,9 +425,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_GrpcService_
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_set_channel_args(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 80), envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 88), envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* envoy_config_core_v3_GrpcService_GoogleGrpc_mutable_channel_args(envoy_config_core_v3_GrpcService_GoogleGrpc *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* envoy_config_core_v3_GrpcService_GoogleGrpc_mutable_channel_args(envoy_config_core_v3_GrpcService_GoogleGrpc* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs*)envoy_config_core_v3_GrpcService_GoogleGrpc_channel_args(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs*)_upb_Message_New(&envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_msginit, arena);
@@ -383,21 +462,40 @@ UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* envoy_con
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_serialize(const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_serialize_ex(const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_has_root_certs(const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_clear_root_certs(const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_has_root_certs(const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_root_certs(const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_DataSource*);
}
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_has_private_key(const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_has_private_key(const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_clear_private_key(const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_private_key(const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_config_core_v3_DataSource*);
}
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_has_cert_chain(const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_has_cert_chain(const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_clear_cert_chain(const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_cert_chain(const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_DataSource*);
}
@@ -406,7 +504,7 @@ UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_set_r
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_mutable_root_certs(envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_mutable_root_certs(envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_root_certs(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -419,7 +517,7 @@ UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_set_p
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_mutable_private_key(envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_mutable_private_key(envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_private_key(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -432,7 +530,7 @@ UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_set_c
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_mutable_cert_chain(envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_mutable_cert_chain(envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_cert_chain(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -467,11 +565,15 @@ UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials* e
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials_serialize(const envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials_serialize_ex(const envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -500,11 +602,15 @@ UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* envoy
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_serialize(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_serialize_ex(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_credential_specifier_ssl_credentials = 1,
@@ -512,19 +618,41 @@ typedef enum {
envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_credential_specifier_local_credentials = 3,
envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_credential_specifier_NOT_SET = 0
} envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_credential_specifier_oneofcases;
-UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_credential_specifier_oneofcases envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_credential_specifier_case(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg) { return (envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_credential_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_has_ssl_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_ssl_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_has_google_default(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const struct google_protobuf_Empty* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_google_default(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Empty*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_has_local_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_local_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
+UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_credential_specifier_oneofcases envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_credential_specifier_case(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg) {
+ return (envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_credential_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_has_ssl_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_clear_ssl_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_credential_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_ssl_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_has_google_default(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_clear_google_default(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Empty*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_credential_specifier_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Empty* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_google_default(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Empty*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_has_local_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_clear_local_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_credential_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_local_credentials(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_set_ssl_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials *msg, envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_mutable_ssl_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_mutable_ssl_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials*)envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_ssl_credentials(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials*)_upb_Message_New(&envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials_msginit, arena);
@@ -534,9 +662,9 @@ UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_SslCredentials* en
return sub;
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_set_google_default(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials *msg, struct google_protobuf_Empty* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Empty*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Empty*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct google_protobuf_Empty* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_mutable_google_default(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Empty* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_mutable_google_default(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg, upb_Arena* arena) {
struct google_protobuf_Empty* sub = (struct google_protobuf_Empty*)envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_google_default(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Empty*)_upb_Message_New(&google_protobuf_Empty_msginit, arena);
@@ -546,9 +674,9 @@ UPB_INLINE struct google_protobuf_Empty* envoy_config_core_v3_GrpcService_Google
return sub;
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_set_local_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials *msg, envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_mutable_local_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_mutable_local_credentials(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials* sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials*)envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelCredentials_local_credentials(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials*)_upb_Message_New(&envoy_config_core_v3_GrpcService_GoogleGrpc_GoogleLocalCredentials_msginit, arena);
@@ -583,11 +711,15 @@ UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* envoy_co
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_serialize(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_serialize_ex(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_access_token = 1,
@@ -599,30 +731,80 @@ typedef enum {
envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_sts_service = 7,
envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_NOT_SET = 0
} envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_oneofcases;
-UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_oneofcases envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_case(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) { return (envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_has_access_token(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_access_token(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_has_google_compute_engine(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 2; }
-UPB_INLINE const struct google_protobuf_Empty* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_google_compute_engine(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Empty*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 2, NULL); }
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_has_google_refresh_token(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 3; }
-UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_google_refresh_token(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 3, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_has_service_account_jwt_access(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 4; }
-UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_service_account_jwt_access(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 4, NULL); }
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_has_google_iam(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 5; }
-UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_google_iam(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 5, NULL); }
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_has_from_plugin(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 6; }
-UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_from_plugin(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 6, NULL); }
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_has_sts_service(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 7; }
-UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_sts_service(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 7, NULL); }
+UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_oneofcases envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_case(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return (envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_has_access_token(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_clear_access_token(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_access_token(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_has_google_compute_engine(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_clear_google_compute_engine(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Empty*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Empty* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_google_compute_engine(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Empty*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_has_google_refresh_token(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_clear_google_refresh_token(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_google_refresh_token(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_has_service_account_jwt_access(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_clear_service_account_jwt_access(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_service_account_jwt_access(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_has_google_iam(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_clear_google_iam(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_google_iam(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 5, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_has_from_plugin(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 6;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_clear_from_plugin(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_from_plugin(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 6, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_has_sts_service(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 7;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_clear_sts_service(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_credential_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_sts_service(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 7, NULL);
+}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_set_access_token(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_set_google_compute_engine(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg, struct google_protobuf_Empty* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Empty*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 2);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Empty*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct google_protobuf_Empty* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_mutable_google_compute_engine(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Empty* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_mutable_google_compute_engine(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg, upb_Arena* arena) {
struct google_protobuf_Empty* sub = (struct google_protobuf_Empty*)envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_google_compute_engine(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Empty*)_upb_Message_New(&google_protobuf_Empty_msginit, arena);
@@ -632,12 +814,12 @@ UPB_INLINE struct google_protobuf_Empty* envoy_config_core_v3_GrpcService_Google
return sub;
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_set_google_refresh_token(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 3);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_set_service_account_jwt_access(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 4);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_mutable_service_account_jwt_access(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_mutable_service_account_jwt_access(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials* sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials*)envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_service_account_jwt_access(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials*)_upb_Message_New(&envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_msginit, arena);
@@ -647,9 +829,9 @@ UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_Se
return sub;
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_set_google_iam(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 5);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_mutable_google_iam(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_mutable_google_iam(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials* sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials*)envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_google_iam(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials*)_upb_Message_New(&envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials_msginit, arena);
@@ -659,9 +841,9 @@ UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_Go
return sub;
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_set_from_plugin(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 6);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 6);
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_mutable_from_plugin(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_mutable_from_plugin(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin*)envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_from_plugin(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin*)_upb_Message_New(&envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_msginit, arena);
@@ -671,9 +853,9 @@ UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_Me
return sub;
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_set_sts_service(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 7);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 7);
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_mutable_sts_service(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_mutable_sts_service(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService*)envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_sts_service(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService*)_upb_Message_New(&envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_msginit, arena);
@@ -708,24 +890,34 @@ UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAc
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_serialize(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_serialize_ex(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_clear_json_key(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_json_key(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_clear_token_lifetime_seconds(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t) = 0;
}
UPB_INLINE uint64_t envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_token_lifetime_seconds(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t);
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_set_json_key(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials_set_token_lifetime_seconds(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t) = value;
}
/* envoy.config.core.v3.GrpcService.GoogleGrpc.CallCredentials.GoogleIAMCredentials */
@@ -753,15 +945,25 @@ UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAM
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials_serialize(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials_serialize_ex(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials_clear_authorization_token(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials_authorization_token(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials_clear_authority_selector(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials_authority_selector(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
@@ -798,31 +1000,46 @@ UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataC
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_serialize(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_serialize_ex(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_config_type_typed_config = 3,
envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_config_type_NOT_SET = 0
} envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_config_type_oneofcases;
-UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_config_type_oneofcases envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_config_type_case(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* msg) { return (envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_config_type_oneofcases envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_config_type_case(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* msg) {
+ return (envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_clear_name(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_name(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_has_typed_config(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_clear_typed_config(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_config_type_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_typed_config(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
}
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_has_typed_config(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_typed_config(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_set_name(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_set_typed_config(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin *msg, struct google_protobuf_Any* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_mutable_typed_config(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_mutable_typed_config(envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -857,36 +1074,67 @@ UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsServic
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_serialize(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_serialize_ex(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_clear_token_exchange_service_uri(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_token_exchange_service_uri(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_clear_resource(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_resource(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_clear_audience(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_audience(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_clear_scope(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_scope(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_clear_requested_token_type(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_requested_token_type(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_clear_subject_token_path(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 80), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_subject_token_path(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(40, 80), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_clear_subject_token_type(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 96), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_subject_token_type(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(48, 96), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_clear_actor_token_path(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 112), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_actor_token_path(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(56, 112), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_clear_actor_token_type(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 128), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService_actor_token_type(const envoy_config_core_v3_GrpcService_GoogleGrpc_CallCredentials_StsService* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(64, 128), upb_StringView);
}
@@ -944,21 +1192,42 @@ UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* envoy_config
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_serialize(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_serialize_ex(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_has_args(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_clear_args(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE size_t envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_args_size(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_args_get(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* msg, upb_StringView key, envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(0, 0), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_args_next(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* msg, size_t* iter) {
+ return (const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter);
}
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_has_args(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE size_t envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_args_size(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs *msg) {return _upb_msg_map_size(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_args_get(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs *msg, upb_StringView key, envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* *val) { return _upb_msg_map_get(msg, UPB_SIZE(0, 0), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_args_next(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs *msg, size_t* iter) { return (const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter); }
-UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_args_clear(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs *msg) { _upb_msg_map_clear(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_args_set(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs *msg, upb_StringView key, envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(0, 0), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_args_delete(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(0, 0), &key, 0); }
-UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_args_nextmutable(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs *msg, size_t* iter) { return (envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter); }
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_args_clear(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* msg) { _upb_msg_map_clear(msg, UPB_SIZE(0, 0)); }
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_args_set(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* msg, upb_StringView key, envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(0, 0), &key, 0, &val, sizeof(val), a);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_args_delete(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(0, 0), &key, 0);
+}
+UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_args_nextmutable(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs* msg, size_t* iter) {
+ return (envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter);
+}
/* envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.Value */
@@ -985,40 +1254,61 @@ UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* envoy_
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_serialize(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_serialize_ex(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_value_specifier_string_value = 1,
envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_value_specifier_int_value = 2,
envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_value_specifier_NOT_SET = 0
} envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_value_specifier_oneofcases;
-UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_value_specifier_oneofcases envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_value_specifier_case(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* msg) { return (envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_value_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_has_string_value(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_string_value(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_has_int_value(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 2; }
-UPB_INLINE int64_t envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_int_value(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value *msg) { return UPB_READ_ONEOF(msg, int64_t, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 2, 0); }
+UPB_INLINE envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_value_specifier_oneofcases envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_value_specifier_case(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* msg) {
+ return (envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_value_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_has_string_value(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_clear_string_value(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_value_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_string_value(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_has_int_value(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_clear_int_value(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* msg) {
+ UPB_WRITE_ONEOF(msg, int64_t, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_value_specifier_NOT_SET);
+}
+UPB_INLINE int64_t envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_int_value(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* msg) {
+ return UPB_READ_ONEOF(msg, int64_t, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, _upb_Int64_FromLL(0ll));
+}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_set_string_value(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
UPB_INLINE void envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value_set_int_value(envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value *msg, int64_t value) {
- UPB_WRITE_ONEOF(msg, int64_t, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 2);
+ UPB_WRITE_ONEOF(msg, int64_t, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
/* envoy.config.core.v3.GrpcService.GoogleGrpc.ChannelArgs.ArgsEntry */
-UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry_key(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry *msg) {
+UPB_INLINE upb_StringView envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry_key(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry_has_value(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry_value(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry *msg) {
+UPB_INLINE bool envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry_has_value(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry_value(const envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_ArgsEntry* msg) {
envoy_config_core_v3_GrpcService_GoogleGrpc_ChannelArgs_Value* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c
index 8479402046..34f798af6b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c
@@ -24,122 +24,150 @@
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_config_core_v3_HealthCheck_submsgs[10] = {
- {.submsg = &envoy_config_core_v3_EventServiceConfig_msginit},
- {.submsg = &envoy_config_core_v3_HealthCheck_CustomHealthCheck_msginit},
- {.submsg = &envoy_config_core_v3_HealthCheck_GrpcHealthCheck_msginit},
+static const upb_MiniTable_Field envoy_config_core_v3_HealthStatusSet__fields[1] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | kUpb_LabelFlags_IsPacked | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_config_core_v3_HealthStatusSet_msginit = {
+ NULL,
+ &envoy_config_core_v3_HealthStatusSet__fields[0],
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_config_core_v3_HealthCheck_submsgs[20] = {
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
{.submsg = &envoy_config_core_v3_HealthCheck_HttpHealthCheck_msginit},
{.submsg = &envoy_config_core_v3_HealthCheck_TcpHealthCheck_msginit},
- {.submsg = &envoy_config_core_v3_HealthCheck_TlsOptions_msginit},
- {.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &envoy_config_core_v3_HealthCheck_GrpcHealthCheck_msginit},
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_core_v3_HealthCheck_CustomHealthCheck_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_core_v3_HealthCheck_TlsOptions_msginit},
+ {.submsg = &envoy_config_core_v3_EventServiceConfig_msginit},
{.submsg = &google_protobuf_Struct_msginit},
- {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_HealthCheck__fields[23] = {
- {1, UPB_SIZE(20, 32), 1, 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(24, 40), 2, 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(28, 48), 3, 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 56), 4, 9, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(36, 64), 5, 9, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(40, 72), 6, 9, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(44, 80), 7, 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(84, 160), UPB_SIZE(-89, -169), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(84, 160), UPB_SIZE(-89, -169), 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(84, 160), UPB_SIZE(-89, -169), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(48, 88), 8, 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {13, UPB_SIZE(84, 160), UPB_SIZE(-89, -169), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {14, UPB_SIZE(52, 96), 9, 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {15, UPB_SIZE(56, 104), 10, 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {16, UPB_SIZE(60, 112), 11, 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {17, UPB_SIZE(12, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {18, UPB_SIZE(4, 4), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {19, UPB_SIZE(8, 8), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {20, UPB_SIZE(64, 120), 12, 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {21, UPB_SIZE(68, 128), 13, 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {22, UPB_SIZE(72, 136), 14, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {23, UPB_SIZE(76, 144), 15, 8, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {24, UPB_SIZE(80, 152), 16, 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 16), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(20, 24), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(24, 32), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(28, 40), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(32, 48), UPB_SIZE(5, 5), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(36, 56), UPB_SIZE(6, 6), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(40, 64), UPB_SIZE(7, 7), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(88, 160), UPB_SIZE(-5, -5), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(88, 160), UPB_SIZE(-5, -5), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(88, 160), UPB_SIZE(-5, -5), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(44, 72), UPB_SIZE(8, 8), 10, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(88, 160), UPB_SIZE(-5, -5), 11, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(48, 80), UPB_SIZE(9, 9), 12, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(52, 88), UPB_SIZE(10, 10), 13, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {16, UPB_SIZE(56, 96), UPB_SIZE(11, 11), 14, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {17, UPB_SIZE(60, 104), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {18, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {19, UPB_SIZE(12, 12), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {20, UPB_SIZE(68, 120), UPB_SIZE(12, 12), 15, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {21, UPB_SIZE(72, 128), UPB_SIZE(13, 13), 16, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {22, UPB_SIZE(76, 136), UPB_SIZE(14, 14), 17, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {23, UPB_SIZE(80, 144), UPB_SIZE(15, 15), 18, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {24, UPB_SIZE(84, 152), UPB_SIZE(16, 16), 19, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_HealthCheck_msginit = {
&envoy_config_core_v3_HealthCheck_submsgs[0],
&envoy_config_core_v3_HealthCheck__fields[0],
- UPB_SIZE(96, 176), 23, upb_ExtMode_NonExtendable, 9, 255, 0,
+ UPB_SIZE(96, 168), 23, kUpb_ExtMode_NonExtendable, 9, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_HealthCheck_Payload__fields[2] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_HealthCheck_Payload_msginit = {
NULL,
&envoy_config_core_v3_HealthCheck_Payload__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_core_v3_HealthCheck_HttpHealthCheck_submsgs[4] = {
- {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
+static const upb_MiniTable_Sub envoy_config_core_v3_HealthCheck_HttpHealthCheck_submsgs[6] = {
+ {.submsg = &envoy_config_core_v3_HealthCheck_Payload_msginit},
{.submsg = &envoy_config_core_v3_HealthCheck_Payload_msginit},
+ {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
+ {.submsg = &envoy_type_v3_Int64Range_msginit},
{.submsg = &envoy_type_matcher_v3_StringMatcher_msginit},
{.submsg = &envoy_type_v3_Int64Range_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_HealthCheck_HttpHealthCheck__fields[10] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 40), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(28, 48), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(36, 64), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(40, 72), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(44, 80), 0, 3, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {11, UPB_SIZE(32, 56), 3, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(48, 88), 0, 3, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(24, 40), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(28, 48), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(32, 56), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(36, 64), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(40, 72), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(44, 80), UPB_SIZE(3, 3), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(48, 88), UPB_SIZE(0, 0), 5, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_HealthCheck_HttpHealthCheck_msginit = {
&envoy_config_core_v3_HealthCheck_HttpHealthCheck_submsgs[0],
&envoy_config_core_v3_HealthCheck_HttpHealthCheck__fields[0],
- UPB_SIZE(56, 96), 10, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(56, 96), 10, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_core_v3_HealthCheck_TcpHealthCheck_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_core_v3_HealthCheck_TcpHealthCheck_submsgs[2] = {
+ {.submsg = &envoy_config_core_v3_HealthCheck_Payload_msginit},
{.submsg = &envoy_config_core_v3_HealthCheck_Payload_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_HealthCheck_TcpHealthCheck__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_HealthCheck_TcpHealthCheck_msginit = {
&envoy_config_core_v3_HealthCheck_TcpHealthCheck_submsgs[0],
&envoy_config_core_v3_HealthCheck_TcpHealthCheck__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_HealthCheck_RedisHealthCheck__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_HealthCheck_RedisHealthCheck_msginit = {
NULL,
&envoy_config_core_v3_HealthCheck_RedisHealthCheck__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Field envoy_config_core_v3_HealthCheck_GrpcHealthCheck__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+static const upb_MiniTable_Sub envoy_config_core_v3_HealthCheck_GrpcHealthCheck_submsgs[1] = {
+ {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
+};
+
+static const upb_MiniTable_Field envoy_config_core_v3_HealthCheck_GrpcHealthCheck__fields[3] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_HealthCheck_GrpcHealthCheck_msginit = {
- NULL,
+ &envoy_config_core_v3_HealthCheck_GrpcHealthCheck_submsgs[0],
&envoy_config_core_v3_HealthCheck_GrpcHealthCheck__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_HealthCheck_CustomHealthCheck_submsgs[1] = {
@@ -147,27 +175,28 @@ static const upb_MiniTable_Sub envoy_config_core_v3_HealthCheck_CustomHealthChec
};
static const upb_MiniTable_Field envoy_config_core_v3_HealthCheck_CustomHealthCheck__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_HealthCheck_CustomHealthCheck_msginit = {
&envoy_config_core_v3_HealthCheck_CustomHealthCheck_submsgs[0],
&envoy_config_core_v3_HealthCheck_CustomHealthCheck__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_HealthCheck_TlsOptions__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_HealthCheck_TlsOptions_msginit = {
NULL,
&envoy_config_core_v3_HealthCheck_TlsOptions__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable *messages_layout[8] = {
+static const upb_MiniTable *messages_layout[9] = {
+ &envoy_config_core_v3_HealthStatusSet_msginit,
&envoy_config_core_v3_HealthCheck_msginit,
&envoy_config_core_v3_HealthCheck_Payload_msginit,
&envoy_config_core_v3_HealthCheck_HttpHealthCheck_msginit,
@@ -182,7 +211,7 @@ const upb_MiniTable_File envoy_config_core_v3_health_check_proto_upb_file_layout
messages_layout,
NULL,
NULL,
- 8,
+ 9,
0,
0,
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h
index 452c6c60ab..bd264a141d 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h
@@ -20,6 +20,7 @@
extern "C" {
#endif
+struct envoy_config_core_v3_HealthStatusSet;
struct envoy_config_core_v3_HealthCheck;
struct envoy_config_core_v3_HealthCheck_Payload;
struct envoy_config_core_v3_HealthCheck_HttpHealthCheck;
@@ -28,6 +29,7 @@ struct envoy_config_core_v3_HealthCheck_RedisHealthCheck;
struct envoy_config_core_v3_HealthCheck_GrpcHealthCheck;
struct envoy_config_core_v3_HealthCheck_CustomHealthCheck;
struct envoy_config_core_v3_HealthCheck_TlsOptions;
+typedef struct envoy_config_core_v3_HealthStatusSet envoy_config_core_v3_HealthStatusSet;
typedef struct envoy_config_core_v3_HealthCheck envoy_config_core_v3_HealthCheck;
typedef struct envoy_config_core_v3_HealthCheck_Payload envoy_config_core_v3_HealthCheck_Payload;
typedef struct envoy_config_core_v3_HealthCheck_HttpHealthCheck envoy_config_core_v3_HealthCheck_HttpHealthCheck;
@@ -36,6 +38,7 @@ typedef struct envoy_config_core_v3_HealthCheck_RedisHealthCheck envoy_config_co
typedef struct envoy_config_core_v3_HealthCheck_GrpcHealthCheck envoy_config_core_v3_HealthCheck_GrpcHealthCheck;
typedef struct envoy_config_core_v3_HealthCheck_CustomHealthCheck envoy_config_core_v3_HealthCheck_CustomHealthCheck;
typedef struct envoy_config_core_v3_HealthCheck_TlsOptions envoy_config_core_v3_HealthCheck_TlsOptions;
+extern const upb_MiniTable envoy_config_core_v3_HealthStatusSet_msginit;
extern const upb_MiniTable envoy_config_core_v3_HealthCheck_msginit;
extern const upb_MiniTable envoy_config_core_v3_HealthCheck_Payload_msginit;
extern const upb_MiniTable envoy_config_core_v3_HealthCheck_HttpHealthCheck_msginit;
@@ -74,6 +77,58 @@ typedef enum {
+/* envoy.config.core.v3.HealthStatusSet */
+
+UPB_INLINE envoy_config_core_v3_HealthStatusSet* envoy_config_core_v3_HealthStatusSet_new(upb_Arena* arena) {
+ return (envoy_config_core_v3_HealthStatusSet*)_upb_Message_New(&envoy_config_core_v3_HealthStatusSet_msginit, arena);
+}
+UPB_INLINE envoy_config_core_v3_HealthStatusSet* envoy_config_core_v3_HealthStatusSet_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_config_core_v3_HealthStatusSet* ret = envoy_config_core_v3_HealthStatusSet_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_core_v3_HealthStatusSet_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_config_core_v3_HealthStatusSet* envoy_config_core_v3_HealthStatusSet_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_config_core_v3_HealthStatusSet* ret = envoy_config_core_v3_HealthStatusSet_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_core_v3_HealthStatusSet_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_config_core_v3_HealthStatusSet_serialize(const envoy_config_core_v3_HealthStatusSet* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthStatusSet_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_config_core_v3_HealthStatusSet_serialize_ex(const envoy_config_core_v3_HealthStatusSet* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthStatusSet_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_HealthStatusSet_clear_statuses(const envoy_config_core_v3_HealthStatusSet* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE int32_t const* envoy_config_core_v3_HealthStatusSet_statuses(const envoy_config_core_v3_HealthStatusSet* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
+}
+
+UPB_INLINE int32_t* envoy_config_core_v3_HealthStatusSet_mutable_statuses(envoy_config_core_v3_HealthStatusSet* msg, size_t* len) {
+ return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE int32_t* envoy_config_core_v3_HealthStatusSet_resize_statuses(envoy_config_core_v3_HealthStatusSet* msg, size_t len, upb_Arena* arena) {
+ return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, 2, arena);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthStatusSet_add_statuses(envoy_config_core_v3_HealthStatusSet* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), 2, &val, arena);
+}
+
/* envoy.config.core.v3.HealthCheck */
UPB_INLINE envoy_config_core_v3_HealthCheck* envoy_config_core_v3_HealthCheck_new(upb_Arena* arena) {
@@ -99,11 +154,15 @@ UPB_INLINE envoy_config_core_v3_HealthCheck* envoy_config_core_v3_HealthCheck_pa
return ret;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_serialize(const envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_serialize_ex(const envoy_config_core_v3_HealthCheck* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_HealthCheck_health_checker_http_health_check = 8,
@@ -112,95 +171,213 @@ typedef enum {
envoy_config_core_v3_HealthCheck_health_checker_custom_health_check = 13,
envoy_config_core_v3_HealthCheck_health_checker_NOT_SET = 0
} envoy_config_core_v3_HealthCheck_health_checker_oneofcases;
-UPB_INLINE envoy_config_core_v3_HealthCheck_health_checker_oneofcases envoy_config_core_v3_HealthCheck_health_checker_case(const envoy_config_core_v3_HealthCheck* msg) { return (envoy_config_core_v3_HealthCheck_health_checker_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(88, 168), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_timeout(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_config_core_v3_HealthCheck_health_checker_oneofcases envoy_config_core_v3_HealthCheck_health_checker_case(const envoy_config_core_v3_HealthCheck* msg) {
+ return (envoy_config_core_v3_HealthCheck_health_checker_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_timeout(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_timeout(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_timeout(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_interval(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_interval(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_interval(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_interval(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 24), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_interval_jitter(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_interval_jitter(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_interval_jitter(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_interval_jitter(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_unhealthy_threshold(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_unhealthy_threshold(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_unhealthy_threshold(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_HealthCheck_unhealthy_threshold(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 40), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_healthy_threshold(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_healthy_threshold(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 48), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_healthy_threshold(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_HealthCheck_healthy_threshold(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 48), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_alt_port(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_alt_port(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_alt_port(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_HealthCheck_alt_port(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 56), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_reuse_connection(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_reuse_connection(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 64), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_reuse_connection(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 7); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_core_v3_HealthCheck_reuse_connection(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const struct google_protobuf_BoolValue*);
-}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_http_health_check(const envoy_config_core_v3_HealthCheck *msg) { return _upb_getoneofcase(msg, UPB_SIZE(88, 168)) == 8; }
-UPB_INLINE const envoy_config_core_v3_HealthCheck_HttpHealthCheck* envoy_config_core_v3_HealthCheck_http_health_check(const envoy_config_core_v3_HealthCheck *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_HealthCheck_HttpHealthCheck*, UPB_SIZE(84, 160), UPB_SIZE(88, 168), 8, NULL); }
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_tcp_health_check(const envoy_config_core_v3_HealthCheck *msg) { return _upb_getoneofcase(msg, UPB_SIZE(88, 168)) == 9; }
-UPB_INLINE const envoy_config_core_v3_HealthCheck_TcpHealthCheck* envoy_config_core_v3_HealthCheck_tcp_health_check(const envoy_config_core_v3_HealthCheck *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_HealthCheck_TcpHealthCheck*, UPB_SIZE(84, 160), UPB_SIZE(88, 168), 9, NULL); }
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_grpc_health_check(const envoy_config_core_v3_HealthCheck *msg) { return _upb_getoneofcase(msg, UPB_SIZE(88, 168)) == 11; }
-UPB_INLINE const envoy_config_core_v3_HealthCheck_GrpcHealthCheck* envoy_config_core_v3_HealthCheck_grpc_health_check(const envoy_config_core_v3_HealthCheck *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_HealthCheck_GrpcHealthCheck*, UPB_SIZE(84, 160), UPB_SIZE(88, 168), 11, NULL); }
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_no_traffic_interval(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 8); }
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 64), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_http_health_check(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 8;
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_http_health_check(const envoy_config_core_v3_HealthCheck* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_HealthCheck_HttpHealthCheck*, UPB_SIZE(88, 160), 0, UPB_SIZE(4, 4), envoy_config_core_v3_HealthCheck_health_checker_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_HealthCheck_HttpHealthCheck* envoy_config_core_v3_HealthCheck_http_health_check(const envoy_config_core_v3_HealthCheck* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_HealthCheck_HttpHealthCheck*, UPB_SIZE(88, 160), UPB_SIZE(4, 4), 8, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_tcp_health_check(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 9;
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_tcp_health_check(const envoy_config_core_v3_HealthCheck* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_HealthCheck_TcpHealthCheck*, UPB_SIZE(88, 160), 0, UPB_SIZE(4, 4), envoy_config_core_v3_HealthCheck_health_checker_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_HealthCheck_TcpHealthCheck* envoy_config_core_v3_HealthCheck_tcp_health_check(const envoy_config_core_v3_HealthCheck* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_HealthCheck_TcpHealthCheck*, UPB_SIZE(88, 160), UPB_SIZE(4, 4), 9, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_grpc_health_check(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 11;
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_grpc_health_check(const envoy_config_core_v3_HealthCheck* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_HealthCheck_GrpcHealthCheck*, UPB_SIZE(88, 160), 0, UPB_SIZE(4, 4), envoy_config_core_v3_HealthCheck_health_checker_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_HealthCheck_GrpcHealthCheck* envoy_config_core_v3_HealthCheck_grpc_health_check(const envoy_config_core_v3_HealthCheck* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_HealthCheck_GrpcHealthCheck*, UPB_SIZE(88, 160), UPB_SIZE(4, 4), 11, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_no_traffic_interval(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 8);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_no_traffic_interval(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 72), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_no_traffic_interval(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 88), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 72), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_custom_health_check(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 13;
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_custom_health_check(const envoy_config_core_v3_HealthCheck* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_HealthCheck_CustomHealthCheck*, UPB_SIZE(88, 160), 0, UPB_SIZE(4, 4), envoy_config_core_v3_HealthCheck_health_checker_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_HealthCheck_CustomHealthCheck* envoy_config_core_v3_HealthCheck_custom_health_check(const envoy_config_core_v3_HealthCheck* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_HealthCheck_CustomHealthCheck*, UPB_SIZE(88, 160), UPB_SIZE(4, 4), 13, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_unhealthy_interval(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 9);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_unhealthy_interval(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 80), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_custom_health_check(const envoy_config_core_v3_HealthCheck *msg) { return _upb_getoneofcase(msg, UPB_SIZE(88, 168)) == 13; }
-UPB_INLINE const envoy_config_core_v3_HealthCheck_CustomHealthCheck* envoy_config_core_v3_HealthCheck_custom_health_check(const envoy_config_core_v3_HealthCheck *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_HealthCheck_CustomHealthCheck*, UPB_SIZE(84, 160), UPB_SIZE(88, 168), 13, NULL); }
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_unhealthy_interval(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 9); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_unhealthy_interval(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(52, 96), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 80), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_unhealthy_edge_interval(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 10);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_unhealthy_edge_interval(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 88), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_unhealthy_edge_interval(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 10); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_unhealthy_edge_interval(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(56, 104), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(52, 88), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_healthy_edge_interval(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 11);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_healthy_edge_interval(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 96), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_healthy_edge_interval(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 11); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_healthy_edge_interval(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(60, 112), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(56, 96), const struct google_protobuf_Duration*);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_event_log_path(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 104), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_HealthCheck_event_log_path(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(60, 104), upb_StringView);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_interval_jitter_percent(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_config_core_v3_HealthCheck_interval_jitter_percent(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint32_t);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_always_log_health_check_failures(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool) = 0;
}
UPB_INLINE bool envoy_config_core_v3_HealthCheck_always_log_health_check_failures(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_initial_jitter(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 12);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_initial_jitter(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 120), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_initial_jitter(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 12); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_initial_jitter(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(64, 120), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(68, 120), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_tls_options(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 13);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_tls_options(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 128), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_tls_options(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 13); }
UPB_INLINE const envoy_config_core_v3_HealthCheck_TlsOptions* envoy_config_core_v3_HealthCheck_tls_options(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(68, 128), const envoy_config_core_v3_HealthCheck_TlsOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(72, 128), const envoy_config_core_v3_HealthCheck_TlsOptions*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_event_service(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 14);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_event_service(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 136), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_event_service(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 14); }
UPB_INLINE const struct envoy_config_core_v3_EventServiceConfig* envoy_config_core_v3_HealthCheck_event_service(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(72, 136), const struct envoy_config_core_v3_EventServiceConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(76, 136), const struct envoy_config_core_v3_EventServiceConfig*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_transport_socket_match_criteria(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 15);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_transport_socket_match_criteria(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 144), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_transport_socket_match_criteria(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 15); }
UPB_INLINE const struct google_protobuf_Struct* envoy_config_core_v3_HealthCheck_transport_socket_match_criteria(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(76, 144), const struct google_protobuf_Struct*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(80, 144), const struct google_protobuf_Struct*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_no_traffic_healthy_interval(const envoy_config_core_v3_HealthCheck* msg) {
+ return _upb_hasbit(msg, 16);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_clear_no_traffic_healthy_interval(const envoy_config_core_v3_HealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(84, 152), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_has_no_traffic_healthy_interval(const envoy_config_core_v3_HealthCheck *msg) { return _upb_hasbit(msg, 16); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_no_traffic_healthy_interval(const envoy_config_core_v3_HealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(80, 152), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(84, 152), const struct google_protobuf_Duration*);
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_timeout(envoy_config_core_v3_HealthCheck *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_timeout(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_timeout(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_HealthCheck_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -211,9 +388,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mut
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_interval(envoy_config_core_v3_HealthCheck *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 24), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_interval(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_interval(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_HealthCheck_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -224,9 +401,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mut
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_interval_jitter(envoy_config_core_v3_HealthCheck *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 48), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_interval_jitter(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_interval_jitter(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_HealthCheck_interval_jitter(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -237,9 +414,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mut
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_unhealthy_threshold(envoy_config_core_v3_HealthCheck *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 56), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 40), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_HealthCheck_mutable_unhealthy_threshold(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_HealthCheck_mutable_unhealthy_threshold(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_HealthCheck_unhealthy_threshold(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -250,9 +427,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_HealthCheck_
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_healthy_threshold(envoy_config_core_v3_HealthCheck *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(36, 64), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 48), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_HealthCheck_mutable_healthy_threshold(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_HealthCheck_mutable_healthy_threshold(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_HealthCheck_healthy_threshold(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -263,9 +440,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_HealthCheck_
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_alt_port(envoy_config_core_v3_HealthCheck *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 72), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 56), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_HealthCheck_mutable_alt_port(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_HealthCheck_mutable_alt_port(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_HealthCheck_alt_port(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -276,9 +453,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_HealthCheck_
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_reuse_connection(envoy_config_core_v3_HealthCheck *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 7);
- *UPB_PTR_AT(msg, UPB_SIZE(44, 80), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 64), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_HealthCheck_mutable_reuse_connection(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_HealthCheck_mutable_reuse_connection(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_core_v3_HealthCheck_reuse_connection(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -288,9 +465,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_HealthCheck_mu
return sub;
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_http_health_check(envoy_config_core_v3_HealthCheck *msg, envoy_config_core_v3_HealthCheck_HttpHealthCheck* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_HealthCheck_HttpHealthCheck*, UPB_SIZE(84, 160), value, UPB_SIZE(88, 168), 8);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_HealthCheck_HttpHealthCheck*, UPB_SIZE(88, 160), value, UPB_SIZE(4, 4), 8);
}
-UPB_INLINE struct envoy_config_core_v3_HealthCheck_HttpHealthCheck* envoy_config_core_v3_HealthCheck_mutable_http_health_check(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HealthCheck_HttpHealthCheck* envoy_config_core_v3_HealthCheck_mutable_http_health_check(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HealthCheck_HttpHealthCheck* sub = (struct envoy_config_core_v3_HealthCheck_HttpHealthCheck*)envoy_config_core_v3_HealthCheck_http_health_check(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_HealthCheck_HttpHealthCheck*)_upb_Message_New(&envoy_config_core_v3_HealthCheck_HttpHealthCheck_msginit, arena);
@@ -300,9 +477,9 @@ UPB_INLINE struct envoy_config_core_v3_HealthCheck_HttpHealthCheck* envoy_config
return sub;
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_tcp_health_check(envoy_config_core_v3_HealthCheck *msg, envoy_config_core_v3_HealthCheck_TcpHealthCheck* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_HealthCheck_TcpHealthCheck*, UPB_SIZE(84, 160), value, UPB_SIZE(88, 168), 9);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_HealthCheck_TcpHealthCheck*, UPB_SIZE(88, 160), value, UPB_SIZE(4, 4), 9);
}
-UPB_INLINE struct envoy_config_core_v3_HealthCheck_TcpHealthCheck* envoy_config_core_v3_HealthCheck_mutable_tcp_health_check(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HealthCheck_TcpHealthCheck* envoy_config_core_v3_HealthCheck_mutable_tcp_health_check(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HealthCheck_TcpHealthCheck* sub = (struct envoy_config_core_v3_HealthCheck_TcpHealthCheck*)envoy_config_core_v3_HealthCheck_tcp_health_check(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_HealthCheck_TcpHealthCheck*)_upb_Message_New(&envoy_config_core_v3_HealthCheck_TcpHealthCheck_msginit, arena);
@@ -312,9 +489,9 @@ UPB_INLINE struct envoy_config_core_v3_HealthCheck_TcpHealthCheck* envoy_config_
return sub;
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_grpc_health_check(envoy_config_core_v3_HealthCheck *msg, envoy_config_core_v3_HealthCheck_GrpcHealthCheck* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_HealthCheck_GrpcHealthCheck*, UPB_SIZE(84, 160), value, UPB_SIZE(88, 168), 11);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_HealthCheck_GrpcHealthCheck*, UPB_SIZE(88, 160), value, UPB_SIZE(4, 4), 11);
}
-UPB_INLINE struct envoy_config_core_v3_HealthCheck_GrpcHealthCheck* envoy_config_core_v3_HealthCheck_mutable_grpc_health_check(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HealthCheck_GrpcHealthCheck* envoy_config_core_v3_HealthCheck_mutable_grpc_health_check(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HealthCheck_GrpcHealthCheck* sub = (struct envoy_config_core_v3_HealthCheck_GrpcHealthCheck*)envoy_config_core_v3_HealthCheck_grpc_health_check(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_HealthCheck_GrpcHealthCheck*)_upb_Message_New(&envoy_config_core_v3_HealthCheck_GrpcHealthCheck_msginit, arena);
@@ -325,9 +502,9 @@ UPB_INLINE struct envoy_config_core_v3_HealthCheck_GrpcHealthCheck* envoy_config
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_no_traffic_interval(envoy_config_core_v3_HealthCheck *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 8);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 88), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 72), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_no_traffic_interval(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_no_traffic_interval(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_HealthCheck_no_traffic_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -337,9 +514,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mut
return sub;
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_custom_health_check(envoy_config_core_v3_HealthCheck *msg, envoy_config_core_v3_HealthCheck_CustomHealthCheck* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_HealthCheck_CustomHealthCheck*, UPB_SIZE(84, 160), value, UPB_SIZE(88, 168), 13);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_HealthCheck_CustomHealthCheck*, UPB_SIZE(88, 160), value, UPB_SIZE(4, 4), 13);
}
-UPB_INLINE struct envoy_config_core_v3_HealthCheck_CustomHealthCheck* envoy_config_core_v3_HealthCheck_mutable_custom_health_check(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HealthCheck_CustomHealthCheck* envoy_config_core_v3_HealthCheck_mutable_custom_health_check(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HealthCheck_CustomHealthCheck* sub = (struct envoy_config_core_v3_HealthCheck_CustomHealthCheck*)envoy_config_core_v3_HealthCheck_custom_health_check(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_HealthCheck_CustomHealthCheck*)_upb_Message_New(&envoy_config_core_v3_HealthCheck_CustomHealthCheck_msginit, arena);
@@ -350,9 +527,9 @@ UPB_INLINE struct envoy_config_core_v3_HealthCheck_CustomHealthCheck* envoy_conf
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_unhealthy_interval(envoy_config_core_v3_HealthCheck *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 9);
- *UPB_PTR_AT(msg, UPB_SIZE(52, 96), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 80), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_unhealthy_interval(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_unhealthy_interval(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_HealthCheck_unhealthy_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -363,9 +540,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mut
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_unhealthy_edge_interval(envoy_config_core_v3_HealthCheck *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 10);
- *UPB_PTR_AT(msg, UPB_SIZE(56, 104), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 88), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_unhealthy_edge_interval(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_unhealthy_edge_interval(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_HealthCheck_unhealthy_edge_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -376,9 +553,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mut
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_healthy_edge_interval(envoy_config_core_v3_HealthCheck *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 11);
- *UPB_PTR_AT(msg, UPB_SIZE(60, 112), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 96), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_healthy_edge_interval(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_healthy_edge_interval(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_HealthCheck_healthy_edge_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -388,19 +565,19 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mut
return sub;
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_event_log_path(envoy_config_core_v3_HealthCheck *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 104), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_interval_jitter_percent(envoy_config_core_v3_HealthCheck *msg, uint32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint32_t) = value;
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_always_log_health_check_failures(envoy_config_core_v3_HealthCheck *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool) = value;
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_initial_jitter(envoy_config_core_v3_HealthCheck *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 12);
- *UPB_PTR_AT(msg, UPB_SIZE(64, 120), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 120), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_initial_jitter(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_initial_jitter(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_HealthCheck_initial_jitter(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -411,9 +588,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mut
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_tls_options(envoy_config_core_v3_HealthCheck *msg, envoy_config_core_v3_HealthCheck_TlsOptions* value) {
_upb_sethas(msg, 13);
- *UPB_PTR_AT(msg, UPB_SIZE(68, 128), envoy_config_core_v3_HealthCheck_TlsOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 128), envoy_config_core_v3_HealthCheck_TlsOptions*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_HealthCheck_TlsOptions* envoy_config_core_v3_HealthCheck_mutable_tls_options(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HealthCheck_TlsOptions* envoy_config_core_v3_HealthCheck_mutable_tls_options(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HealthCheck_TlsOptions* sub = (struct envoy_config_core_v3_HealthCheck_TlsOptions*)envoy_config_core_v3_HealthCheck_tls_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_HealthCheck_TlsOptions*)_upb_Message_New(&envoy_config_core_v3_HealthCheck_TlsOptions_msginit, arena);
@@ -424,9 +601,9 @@ UPB_INLINE struct envoy_config_core_v3_HealthCheck_TlsOptions* envoy_config_core
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_event_service(envoy_config_core_v3_HealthCheck *msg, struct envoy_config_core_v3_EventServiceConfig* value) {
_upb_sethas(msg, 14);
- *UPB_PTR_AT(msg, UPB_SIZE(72, 136), struct envoy_config_core_v3_EventServiceConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 136), struct envoy_config_core_v3_EventServiceConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_EventServiceConfig* envoy_config_core_v3_HealthCheck_mutable_event_service(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_EventServiceConfig* envoy_config_core_v3_HealthCheck_mutable_event_service(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct envoy_config_core_v3_EventServiceConfig* sub = (struct envoy_config_core_v3_EventServiceConfig*)envoy_config_core_v3_HealthCheck_event_service(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_EventServiceConfig*)_upb_Message_New(&envoy_config_core_v3_EventServiceConfig_msginit, arena);
@@ -437,9 +614,9 @@ UPB_INLINE struct envoy_config_core_v3_EventServiceConfig* envoy_config_core_v3_
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_transport_socket_match_criteria(envoy_config_core_v3_HealthCheck *msg, struct google_protobuf_Struct* value) {
_upb_sethas(msg, 15);
- *UPB_PTR_AT(msg, UPB_SIZE(76, 144), struct google_protobuf_Struct*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 144), struct google_protobuf_Struct*) = value;
}
-UPB_INLINE struct google_protobuf_Struct* envoy_config_core_v3_HealthCheck_mutable_transport_socket_match_criteria(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Struct* envoy_config_core_v3_HealthCheck_mutable_transport_socket_match_criteria(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)envoy_config_core_v3_HealthCheck_transport_socket_match_criteria(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Struct*)_upb_Message_New(&google_protobuf_Struct_msginit, arena);
@@ -450,9 +627,9 @@ UPB_INLINE struct google_protobuf_Struct* envoy_config_core_v3_HealthCheck_mutab
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_set_no_traffic_healthy_interval(envoy_config_core_v3_HealthCheck *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 16);
- *UPB_PTR_AT(msg, UPB_SIZE(80, 152), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(84, 152), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_no_traffic_healthy_interval(envoy_config_core_v3_HealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HealthCheck_mutable_no_traffic_healthy_interval(envoy_config_core_v3_HealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_HealthCheck_no_traffic_healthy_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -487,29 +664,48 @@ UPB_INLINE envoy_config_core_v3_HealthCheck_Payload* envoy_config_core_v3_Health
return ret;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_Payload_serialize(const envoy_config_core_v3_HealthCheck_Payload* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_Payload_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_Payload_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_Payload_serialize_ex(const envoy_config_core_v3_HealthCheck_Payload* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_Payload_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_Payload_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_HealthCheck_Payload_payload_text = 1,
envoy_config_core_v3_HealthCheck_Payload_payload_binary = 2,
envoy_config_core_v3_HealthCheck_Payload_payload_NOT_SET = 0
} envoy_config_core_v3_HealthCheck_Payload_payload_oneofcases;
-UPB_INLINE envoy_config_core_v3_HealthCheck_Payload_payload_oneofcases envoy_config_core_v3_HealthCheck_Payload_payload_case(const envoy_config_core_v3_HealthCheck_Payload* msg) { return (envoy_config_core_v3_HealthCheck_Payload_payload_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_Payload_has_text(const envoy_config_core_v3_HealthCheck_Payload *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE upb_StringView envoy_config_core_v3_HealthCheck_Payload_text(const envoy_config_core_v3_HealthCheck_Payload *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_Payload_has_binary(const envoy_config_core_v3_HealthCheck_Payload *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 2; }
-UPB_INLINE upb_StringView envoy_config_core_v3_HealthCheck_Payload_binary(const envoy_config_core_v3_HealthCheck_Payload *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 2, upb_StringView_FromString("")); }
+UPB_INLINE envoy_config_core_v3_HealthCheck_Payload_payload_oneofcases envoy_config_core_v3_HealthCheck_Payload_payload_case(const envoy_config_core_v3_HealthCheck_Payload* msg) {
+ return (envoy_config_core_v3_HealthCheck_Payload_payload_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_Payload_has_text(const envoy_config_core_v3_HealthCheck_Payload* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_Payload_clear_text(const envoy_config_core_v3_HealthCheck_Payload* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_core_v3_HealthCheck_Payload_payload_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_HealthCheck_Payload_text(const envoy_config_core_v3_HealthCheck_Payload* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_Payload_has_binary(const envoy_config_core_v3_HealthCheck_Payload* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_Payload_clear_binary(const envoy_config_core_v3_HealthCheck_Payload* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_core_v3_HealthCheck_Payload_payload_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_HealthCheck_Payload_binary(const envoy_config_core_v3_HealthCheck_Payload* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, upb_StringView_FromString(""));
+}
UPB_INLINE void envoy_config_core_v3_HealthCheck_Payload_set_text(envoy_config_core_v3_HealthCheck_Payload *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_Payload_set_binary(envoy_config_core_v3_HealthCheck_Payload *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
/* envoy.config.core.v3.HealthCheck.HttpHealthCheck */
@@ -537,40 +733,94 @@ UPB_INLINE envoy_config_core_v3_HealthCheck_HttpHealthCheck* envoy_config_core_v
return ret;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_HttpHealthCheck_serialize(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_HttpHealthCheck_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_HttpHealthCheck_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_HttpHealthCheck_serialize_ex(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_HttpHealthCheck_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_HttpHealthCheck_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_clear_host(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_HealthCheck_HttpHealthCheck_host(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_clear_path(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_HealthCheck_HttpHealthCheck_path(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_HttpHealthCheck_has_send(const envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_HttpHealthCheck_has_send(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_clear_send(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_core_v3_HealthCheck_Payload* envoy_config_core_v3_HealthCheck_HttpHealthCheck_send(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const envoy_config_core_v3_HealthCheck_Payload*);
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_HttpHealthCheck_has_receive(const envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_HttpHealthCheck_has_receive(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_clear_receive(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_core_v3_HealthCheck_Payload* envoy_config_core_v3_HealthCheck_HttpHealthCheck_receive(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const envoy_config_core_v3_HealthCheck_Payload*);
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_HttpHealthCheck_has_request_headers_to_add(const envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 64)); }
-UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_core_v3_HealthCheck_HttpHealthCheck_request_headers_to_add(const envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, size_t *len) { return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(36, 64), len); }
-UPB_INLINE upb_StringView const* envoy_config_core_v3_HealthCheck_HttpHealthCheck_request_headers_to_remove(const envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(40, 72), len); }
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_HttpHealthCheck_has_expected_statuses(const envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 80)); }
-UPB_INLINE const struct envoy_type_v3_Int64Range* const* envoy_config_core_v3_HealthCheck_HttpHealthCheck_expected_statuses(const envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, size_t *len) { return (const struct envoy_type_v3_Int64Range* const*)_upb_array_accessor(msg, UPB_SIZE(44, 80), len); }
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_HttpHealthCheck_has_request_headers_to_add(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 56));
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_clear_request_headers_to_add(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 56));
+}
+UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_core_v3_HealthCheck_HttpHealthCheck_request_headers_to_add(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(32, 56), len);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_clear_request_headers_to_remove(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ _upb_array_detach(msg, UPB_SIZE(36, 64));
+}
+UPB_INLINE upb_StringView const* envoy_config_core_v3_HealthCheck_HttpHealthCheck_request_headers_to_remove(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(36, 64), len);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_HttpHealthCheck_has_expected_statuses(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(40, 72));
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_clear_expected_statuses(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ _upb_array_detach(msg, UPB_SIZE(40, 72));
+}
+UPB_INLINE const struct envoy_type_v3_Int64Range* const* envoy_config_core_v3_HealthCheck_HttpHealthCheck_expected_statuses(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, size_t* len) {
+ return (const struct envoy_type_v3_Int64Range* const*)_upb_array_accessor(msg, UPB_SIZE(40, 72), len);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_clear_codec_client_type(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_config_core_v3_HealthCheck_HttpHealthCheck_codec_client_type(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_HttpHealthCheck_has_service_name_matcher(const envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_HttpHealthCheck_has_service_name_matcher(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_clear_service_name_matcher(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_config_core_v3_HealthCheck_HttpHealthCheck_service_name_matcher(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const struct envoy_type_matcher_v3_StringMatcher*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const struct envoy_type_matcher_v3_StringMatcher*);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_HttpHealthCheck_has_retriable_statuses(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 88));
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_clear_retriable_statuses(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg) {
+ _upb_array_detach(msg, UPB_SIZE(48, 88));
+}
+UPB_INLINE const struct envoy_type_v3_Int64Range* const* envoy_config_core_v3_HealthCheck_HttpHealthCheck_retriable_statuses(const envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, size_t* len) {
+ return (const struct envoy_type_v3_Int64Range* const*)_upb_array_accessor(msg, UPB_SIZE(48, 88), len);
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_HttpHealthCheck_has_retriable_statuses(const envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 88)); }
-UPB_INLINE const struct envoy_type_v3_Int64Range* const* envoy_config_core_v3_HealthCheck_HttpHealthCheck_retriable_statuses(const envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, size_t *len) { return (const struct envoy_type_v3_Int64Range* const*)_upb_array_accessor(msg, UPB_SIZE(48, 88), len); }
UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_set_host(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
@@ -582,7 +832,7 @@ UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_set_send(envoy_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(24, 40), envoy_config_core_v3_HealthCheck_Payload*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_HealthCheck_Payload* envoy_config_core_v3_HealthCheck_HttpHealthCheck_mutable_send(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HealthCheck_Payload* envoy_config_core_v3_HealthCheck_HttpHealthCheck_mutable_send(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HealthCheck_Payload* sub = (struct envoy_config_core_v3_HealthCheck_Payload*)envoy_config_core_v3_HealthCheck_HttpHealthCheck_send(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_HealthCheck_Payload*)_upb_Message_New(&envoy_config_core_v3_HealthCheck_Payload_msginit, arena);
@@ -595,7 +845,7 @@ UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_set_receive(env
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(28, 48), envoy_config_core_v3_HealthCheck_Payload*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_HealthCheck_Payload* envoy_config_core_v3_HealthCheck_HttpHealthCheck_mutable_receive(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HealthCheck_Payload* envoy_config_core_v3_HealthCheck_HttpHealthCheck_mutable_receive(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HealthCheck_Payload* sub = (struct envoy_config_core_v3_HealthCheck_Payload*)envoy_config_core_v3_HealthCheck_HttpHealthCheck_receive(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_HealthCheck_Payload*)_upb_Message_New(&envoy_config_core_v3_HealthCheck_Payload_msginit, arena);
@@ -604,39 +854,36 @@ UPB_INLINE struct envoy_config_core_v3_HealthCheck_Payload* envoy_config_core_v3
}
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_core_v3_HealthCheck_HttpHealthCheck_mutable_request_headers_to_add(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, size_t *len) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 64), len);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_core_v3_HealthCheck_HttpHealthCheck_mutable_request_headers_to_add(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, size_t* len) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 56), len);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_core_v3_HealthCheck_HttpHealthCheck_resize_request_headers_to_add(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 64), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_core_v3_HealthCheck_HttpHealthCheck_resize_request_headers_to_add(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 56), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_core_v3_HealthCheck_HttpHealthCheck_add_request_headers_to_add(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_core_v3_HealthCheck_HttpHealthCheck_add_request_headers_to_add(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HeaderValueOption* sub = (struct envoy_config_core_v3_HeaderValueOption*)_upb_Message_New(&envoy_config_core_v3_HeaderValueOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(36, 64), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 56), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE upb_StringView* envoy_config_core_v3_HealthCheck_HttpHealthCheck_mutable_request_headers_to_remove(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 72), len);
+UPB_INLINE upb_StringView* envoy_config_core_v3_HealthCheck_HttpHealthCheck_mutable_request_headers_to_remove(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 64), len);
}
-UPB_INLINE upb_StringView* envoy_config_core_v3_HealthCheck_HttpHealthCheck_resize_request_headers_to_remove(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 72), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_config_core_v3_HealthCheck_HttpHealthCheck_resize_request_headers_to_remove(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 64), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_HttpHealthCheck_add_request_headers_to_remove(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 72), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_HttpHealthCheck_add_request_headers_to_remove(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 64), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE struct envoy_type_v3_Int64Range** envoy_config_core_v3_HealthCheck_HttpHealthCheck_mutable_expected_statuses(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, size_t *len) {
- return (struct envoy_type_v3_Int64Range**)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 80), len);
+UPB_INLINE struct envoy_type_v3_Int64Range** envoy_config_core_v3_HealthCheck_HttpHealthCheck_mutable_expected_statuses(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, size_t* len) {
+ return (struct envoy_type_v3_Int64Range**)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 72), len);
}
-UPB_INLINE struct envoy_type_v3_Int64Range** envoy_config_core_v3_HealthCheck_HttpHealthCheck_resize_expected_statuses(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_type_v3_Int64Range**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 80), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_type_v3_Int64Range** envoy_config_core_v3_HealthCheck_HttpHealthCheck_resize_expected_statuses(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_type_v3_Int64Range**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 72), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_type_v3_Int64Range* envoy_config_core_v3_HealthCheck_HttpHealthCheck_add_expected_statuses(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Int64Range* envoy_config_core_v3_HealthCheck_HttpHealthCheck_add_expected_statuses(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, upb_Arena* arena) {
struct envoy_type_v3_Int64Range* sub = (struct envoy_type_v3_Int64Range*)_upb_Message_New(&envoy_type_v3_Int64Range_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(44, 80), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 72), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -645,9 +892,9 @@ UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_set_codec_clien
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_HttpHealthCheck_set_service_name_matcher(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, struct envoy_type_matcher_v3_StringMatcher* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 56), struct envoy_type_matcher_v3_StringMatcher*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 80), struct envoy_type_matcher_v3_StringMatcher*) = value;
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_core_v3_HealthCheck_HttpHealthCheck_mutable_service_name_matcher(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_core_v3_HealthCheck_HttpHealthCheck_mutable_service_name_matcher(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)envoy_config_core_v3_HealthCheck_HttpHealthCheck_service_name_matcher(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StringMatcher_msginit, arena);
@@ -656,16 +903,15 @@ UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_core_v3_Heal
}
return sub;
}
-UPB_INLINE struct envoy_type_v3_Int64Range** envoy_config_core_v3_HealthCheck_HttpHealthCheck_mutable_retriable_statuses(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, size_t *len) {
+UPB_INLINE struct envoy_type_v3_Int64Range** envoy_config_core_v3_HealthCheck_HttpHealthCheck_mutable_retriable_statuses(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, size_t* len) {
return (struct envoy_type_v3_Int64Range**)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 88), len);
}
-UPB_INLINE struct envoy_type_v3_Int64Range** envoy_config_core_v3_HealthCheck_HttpHealthCheck_resize_retriable_statuses(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Int64Range** envoy_config_core_v3_HealthCheck_HttpHealthCheck_resize_retriable_statuses(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, size_t len, upb_Arena* arena) {
return (struct envoy_type_v3_Int64Range**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 88), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_type_v3_Int64Range* envoy_config_core_v3_HealthCheck_HttpHealthCheck_add_retriable_statuses(envoy_config_core_v3_HealthCheck_HttpHealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Int64Range* envoy_config_core_v3_HealthCheck_HttpHealthCheck_add_retriable_statuses(envoy_config_core_v3_HealthCheck_HttpHealthCheck* msg, upb_Arena* arena) {
struct envoy_type_v3_Int64Range* sub = (struct envoy_type_v3_Int64Range*)_upb_Message_New(&envoy_type_v3_Int64Range_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(48, 88), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(48, 88), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -695,24 +941,40 @@ UPB_INLINE envoy_config_core_v3_HealthCheck_TcpHealthCheck* envoy_config_core_v3
return ret;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_TcpHealthCheck_serialize(const envoy_config_core_v3_HealthCheck_TcpHealthCheck* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_TcpHealthCheck_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_TcpHealthCheck_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_TcpHealthCheck_serialize_ex(const envoy_config_core_v3_HealthCheck_TcpHealthCheck* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_TcpHealthCheck_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_TcpHealthCheck_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_TcpHealthCheck_has_send(const envoy_config_core_v3_HealthCheck_TcpHealthCheck* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_TcpHealthCheck_clear_send(const envoy_config_core_v3_HealthCheck_TcpHealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_TcpHealthCheck_has_send(const envoy_config_core_v3_HealthCheck_TcpHealthCheck *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_core_v3_HealthCheck_Payload* envoy_config_core_v3_HealthCheck_TcpHealthCheck_send(const envoy_config_core_v3_HealthCheck_TcpHealthCheck* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_core_v3_HealthCheck_Payload*);
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_TcpHealthCheck_has_receive(const envoy_config_core_v3_HealthCheck_TcpHealthCheck *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const envoy_config_core_v3_HealthCheck_Payload* const* envoy_config_core_v3_HealthCheck_TcpHealthCheck_receive(const envoy_config_core_v3_HealthCheck_TcpHealthCheck *msg, size_t *len) { return (const envoy_config_core_v3_HealthCheck_Payload* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_TcpHealthCheck_has_receive(const envoy_config_core_v3_HealthCheck_TcpHealthCheck* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_TcpHealthCheck_clear_receive(const envoy_config_core_v3_HealthCheck_TcpHealthCheck* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const envoy_config_core_v3_HealthCheck_Payload* const* envoy_config_core_v3_HealthCheck_TcpHealthCheck_receive(const envoy_config_core_v3_HealthCheck_TcpHealthCheck* msg, size_t* len) {
+ return (const envoy_config_core_v3_HealthCheck_Payload* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
UPB_INLINE void envoy_config_core_v3_HealthCheck_TcpHealthCheck_set_send(envoy_config_core_v3_HealthCheck_TcpHealthCheck *msg, envoy_config_core_v3_HealthCheck_Payload* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_core_v3_HealthCheck_Payload*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_HealthCheck_Payload* envoy_config_core_v3_HealthCheck_TcpHealthCheck_mutable_send(envoy_config_core_v3_HealthCheck_TcpHealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HealthCheck_Payload* envoy_config_core_v3_HealthCheck_TcpHealthCheck_mutable_send(envoy_config_core_v3_HealthCheck_TcpHealthCheck* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HealthCheck_Payload* sub = (struct envoy_config_core_v3_HealthCheck_Payload*)envoy_config_core_v3_HealthCheck_TcpHealthCheck_send(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_HealthCheck_Payload*)_upb_Message_New(&envoy_config_core_v3_HealthCheck_Payload_msginit, arena);
@@ -721,16 +983,15 @@ UPB_INLINE struct envoy_config_core_v3_HealthCheck_Payload* envoy_config_core_v3
}
return sub;
}
-UPB_INLINE envoy_config_core_v3_HealthCheck_Payload** envoy_config_core_v3_HealthCheck_TcpHealthCheck_mutable_receive(envoy_config_core_v3_HealthCheck_TcpHealthCheck *msg, size_t *len) {
+UPB_INLINE envoy_config_core_v3_HealthCheck_Payload** envoy_config_core_v3_HealthCheck_TcpHealthCheck_mutable_receive(envoy_config_core_v3_HealthCheck_TcpHealthCheck* msg, size_t* len) {
return (envoy_config_core_v3_HealthCheck_Payload**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE envoy_config_core_v3_HealthCheck_Payload** envoy_config_core_v3_HealthCheck_TcpHealthCheck_resize_receive(envoy_config_core_v3_HealthCheck_TcpHealthCheck *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_core_v3_HealthCheck_Payload** envoy_config_core_v3_HealthCheck_TcpHealthCheck_resize_receive(envoy_config_core_v3_HealthCheck_TcpHealthCheck* msg, size_t len, upb_Arena* arena) {
return (envoy_config_core_v3_HealthCheck_Payload**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_HealthCheck_Payload* envoy_config_core_v3_HealthCheck_TcpHealthCheck_add_receive(envoy_config_core_v3_HealthCheck_TcpHealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HealthCheck_Payload* envoy_config_core_v3_HealthCheck_TcpHealthCheck_add_receive(envoy_config_core_v3_HealthCheck_TcpHealthCheck* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HealthCheck_Payload* sub = (struct envoy_config_core_v3_HealthCheck_Payload*)_upb_Message_New(&envoy_config_core_v3_HealthCheck_Payload_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -760,11 +1021,18 @@ UPB_INLINE envoy_config_core_v3_HealthCheck_RedisHealthCheck* envoy_config_core_
return ret;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_RedisHealthCheck_serialize(const envoy_config_core_v3_HealthCheck_RedisHealthCheck* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_RedisHealthCheck_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_RedisHealthCheck_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_RedisHealthCheck_serialize_ex(const envoy_config_core_v3_HealthCheck_RedisHealthCheck* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_RedisHealthCheck_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_RedisHealthCheck_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_RedisHealthCheck_clear_key(const envoy_config_core_v3_HealthCheck_RedisHealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_HealthCheck_RedisHealthCheck_key(const envoy_config_core_v3_HealthCheck_RedisHealthCheck* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -799,18 +1067,37 @@ UPB_INLINE envoy_config_core_v3_HealthCheck_GrpcHealthCheck* envoy_config_core_v
return ret;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_GrpcHealthCheck_serialize(const envoy_config_core_v3_HealthCheck_GrpcHealthCheck* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_GrpcHealthCheck_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_GrpcHealthCheck_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_GrpcHealthCheck_serialize_ex(const envoy_config_core_v3_HealthCheck_GrpcHealthCheck* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_GrpcHealthCheck_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_GrpcHealthCheck_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_GrpcHealthCheck_clear_service_name(const envoy_config_core_v3_HealthCheck_GrpcHealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_HealthCheck_GrpcHealthCheck_service_name(const envoy_config_core_v3_HealthCheck_GrpcHealthCheck* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_GrpcHealthCheck_clear_authority(const envoy_config_core_v3_HealthCheck_GrpcHealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_HealthCheck_GrpcHealthCheck_authority(const envoy_config_core_v3_HealthCheck_GrpcHealthCheck* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_GrpcHealthCheck_has_initial_metadata(const envoy_config_core_v3_HealthCheck_GrpcHealthCheck* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_GrpcHealthCheck_clear_initial_metadata(const envoy_config_core_v3_HealthCheck_GrpcHealthCheck* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_core_v3_HealthCheck_GrpcHealthCheck_initial_metadata(const envoy_config_core_v3_HealthCheck_GrpcHealthCheck* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
UPB_INLINE void envoy_config_core_v3_HealthCheck_GrpcHealthCheck_set_service_name(envoy_config_core_v3_HealthCheck_GrpcHealthCheck *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
@@ -818,6 +1105,18 @@ UPB_INLINE void envoy_config_core_v3_HealthCheck_GrpcHealthCheck_set_service_nam
UPB_INLINE void envoy_config_core_v3_HealthCheck_GrpcHealthCheck_set_authority(envoy_config_core_v3_HealthCheck_GrpcHealthCheck *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_core_v3_HealthCheck_GrpcHealthCheck_mutable_initial_metadata(envoy_config_core_v3_HealthCheck_GrpcHealthCheck* msg, size_t* len) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
+}
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_core_v3_HealthCheck_GrpcHealthCheck_resize_initial_metadata(envoy_config_core_v3_HealthCheck_GrpcHealthCheck* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_core_v3_HealthCheck_GrpcHealthCheck_add_initial_metadata(envoy_config_core_v3_HealthCheck_GrpcHealthCheck* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_HeaderValueOption* sub = (struct envoy_config_core_v3_HeaderValueOption*)_upb_Message_New(&envoy_config_core_v3_HeaderValueOption_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
/* envoy.config.core.v3.HealthCheck.CustomHealthCheck */
@@ -844,31 +1143,46 @@ UPB_INLINE envoy_config_core_v3_HealthCheck_CustomHealthCheck* envoy_config_core
return ret;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_CustomHealthCheck_serialize(const envoy_config_core_v3_HealthCheck_CustomHealthCheck* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_CustomHealthCheck_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_CustomHealthCheck_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_CustomHealthCheck_serialize_ex(const envoy_config_core_v3_HealthCheck_CustomHealthCheck* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_CustomHealthCheck_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_CustomHealthCheck_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_HealthCheck_CustomHealthCheck_config_type_typed_config = 3,
envoy_config_core_v3_HealthCheck_CustomHealthCheck_config_type_NOT_SET = 0
} envoy_config_core_v3_HealthCheck_CustomHealthCheck_config_type_oneofcases;
-UPB_INLINE envoy_config_core_v3_HealthCheck_CustomHealthCheck_config_type_oneofcases envoy_config_core_v3_HealthCheck_CustomHealthCheck_config_type_case(const envoy_config_core_v3_HealthCheck_CustomHealthCheck* msg) { return (envoy_config_core_v3_HealthCheck_CustomHealthCheck_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_config_core_v3_HealthCheck_CustomHealthCheck_config_type_oneofcases envoy_config_core_v3_HealthCheck_CustomHealthCheck_config_type_case(const envoy_config_core_v3_HealthCheck_CustomHealthCheck* msg) {
+ return (envoy_config_core_v3_HealthCheck_CustomHealthCheck_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_CustomHealthCheck_clear_name(const envoy_config_core_v3_HealthCheck_CustomHealthCheck* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_HealthCheck_CustomHealthCheck_name(const envoy_config_core_v3_HealthCheck_CustomHealthCheck* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_CustomHealthCheck_has_typed_config(const envoy_config_core_v3_HealthCheck_CustomHealthCheck* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_CustomHealthCheck_clear_typed_config(const envoy_config_core_v3_HealthCheck_CustomHealthCheck* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_core_v3_HealthCheck_CustomHealthCheck_config_type_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_core_v3_HealthCheck_CustomHealthCheck_typed_config(const envoy_config_core_v3_HealthCheck_CustomHealthCheck* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_CustomHealthCheck_has_typed_config(const envoy_config_core_v3_HealthCheck_CustomHealthCheck *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_core_v3_HealthCheck_CustomHealthCheck_typed_config(const envoy_config_core_v3_HealthCheck_CustomHealthCheck *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void envoy_config_core_v3_HealthCheck_CustomHealthCheck_set_name(envoy_config_core_v3_HealthCheck_CustomHealthCheck *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_HealthCheck_CustomHealthCheck_set_typed_config(envoy_config_core_v3_HealthCheck_CustomHealthCheck *msg, struct google_protobuf_Any* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_core_v3_HealthCheck_CustomHealthCheck_mutable_typed_config(envoy_config_core_v3_HealthCheck_CustomHealthCheck *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_core_v3_HealthCheck_CustomHealthCheck_mutable_typed_config(envoy_config_core_v3_HealthCheck_CustomHealthCheck* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_core_v3_HealthCheck_CustomHealthCheck_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -903,23 +1217,31 @@ UPB_INLINE envoy_config_core_v3_HealthCheck_TlsOptions* envoy_config_core_v3_Hea
return ret;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_TlsOptions_serialize(const envoy_config_core_v3_HealthCheck_TlsOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_TlsOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_TlsOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_HealthCheck_TlsOptions_serialize_ex(const envoy_config_core_v3_HealthCheck_TlsOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HealthCheck_TlsOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HealthCheck_TlsOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_HealthCheck_TlsOptions_clear_alpn_protocols(const envoy_config_core_v3_HealthCheck_TlsOptions* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE upb_StringView const* envoy_config_core_v3_HealthCheck_TlsOptions_alpn_protocols(const envoy_config_core_v3_HealthCheck_TlsOptions* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE upb_StringView const* envoy_config_core_v3_HealthCheck_TlsOptions_alpn_protocols(const envoy_config_core_v3_HealthCheck_TlsOptions *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE upb_StringView* envoy_config_core_v3_HealthCheck_TlsOptions_mutable_alpn_protocols(envoy_config_core_v3_HealthCheck_TlsOptions *msg, size_t *len) {
+UPB_INLINE upb_StringView* envoy_config_core_v3_HealthCheck_TlsOptions_mutable_alpn_protocols(envoy_config_core_v3_HealthCheck_TlsOptions* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE upb_StringView* envoy_config_core_v3_HealthCheck_TlsOptions_resize_alpn_protocols(envoy_config_core_v3_HealthCheck_TlsOptions *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* envoy_config_core_v3_HealthCheck_TlsOptions_resize_alpn_protocols(envoy_config_core_v3_HealthCheck_TlsOptions* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_core_v3_HealthCheck_TlsOptions_add_alpn_protocols(envoy_config_core_v3_HealthCheck_TlsOptions *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_core_v3_HealthCheck_TlsOptions_add_alpn_protocols(envoy_config_core_v3_HealthCheck_TlsOptions* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(3, 4), &val, arena);
}
extern const upb_MiniTable_File envoy_config_core_v3_health_check_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c
index 26ade8db84..a94db60061 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c
@@ -21,15 +21,15 @@ static const upb_MiniTable_Sub envoy_config_core_v3_HttpUri_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_core_v3_HttpUri__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), UPB_SIZE(-25, -49), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(24, 40), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_HttpUri_msginit = {
&envoy_config_core_v3_HttpUri_submsgs[0],
&envoy_config_core_v3_HttpUri__fields[0],
- UPB_SIZE(32, 64), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(32, 48), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h
index 73515dc1e9..6443f43e66 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h
@@ -53,39 +53,59 @@ UPB_INLINE envoy_config_core_v3_HttpUri* envoy_config_core_v3_HttpUri_parse_ex(c
return ret;
}
UPB_INLINE char* envoy_config_core_v3_HttpUri_serialize(const envoy_config_core_v3_HttpUri* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HttpUri_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HttpUri_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_HttpUri_serialize_ex(const envoy_config_core_v3_HttpUri* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HttpUri_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HttpUri_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_HttpUri_http_upstream_type_cluster = 2,
envoy_config_core_v3_HttpUri_http_upstream_type_NOT_SET = 0
} envoy_config_core_v3_HttpUri_http_upstream_type_oneofcases;
-UPB_INLINE envoy_config_core_v3_HttpUri_http_upstream_type_oneofcases envoy_config_core_v3_HttpUri_http_upstream_type_case(const envoy_config_core_v3_HttpUri* msg) { return (envoy_config_core_v3_HttpUri_http_upstream_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(24, 48), int32_t); }
-
+UPB_INLINE envoy_config_core_v3_HttpUri_http_upstream_type_oneofcases envoy_config_core_v3_HttpUri_http_upstream_type_case(const envoy_config_core_v3_HttpUri* msg) {
+ return (envoy_config_core_v3_HttpUri_http_upstream_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_config_core_v3_HttpUri_clear_uri(const envoy_config_core_v3_HttpUri* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_HttpUri_uri(const envoy_config_core_v3_HttpUri* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+}
+UPB_INLINE bool envoy_config_core_v3_HttpUri_has_cluster(const envoy_config_core_v3_HttpUri* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_config_core_v3_HttpUri_clear_cluster(const envoy_config_core_v3_HttpUri* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_core_v3_HttpUri_http_upstream_type_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_HttpUri_cluster(const envoy_config_core_v3_HttpUri* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 2, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_core_v3_HttpUri_has_timeout(const envoy_config_core_v3_HttpUri* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_HttpUri_clear_timeout(const envoy_config_core_v3_HttpUri* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HttpUri_has_cluster(const envoy_config_core_v3_HttpUri *msg) { return _upb_getoneofcase(msg, UPB_SIZE(24, 48)) == 2; }
-UPB_INLINE upb_StringView envoy_config_core_v3_HttpUri_cluster(const envoy_config_core_v3_HttpUri *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(16, 32), UPB_SIZE(24, 48), 2, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_core_v3_HttpUri_has_timeout(const envoy_config_core_v3_HttpUri *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_HttpUri_timeout(const envoy_config_core_v3_HttpUri* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_Duration*);
}
UPB_INLINE void envoy_config_core_v3_HttpUri_set_uri(envoy_config_core_v3_HttpUri *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_HttpUri_set_cluster(envoy_config_core_v3_HttpUri *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(16, 32), value, UPB_SIZE(24, 48), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 2);
}
UPB_INLINE void envoy_config_core_v3_HttpUri_set_timeout(envoy_config_core_v3_HttpUri *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HttpUri_mutable_timeout(envoy_config_core_v3_HttpUri *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HttpUri_mutable_timeout(envoy_config_core_v3_HttpUri* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_HttpUri_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c
index 9489191e2d..e464b69575 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c
@@ -24,124 +24,133 @@
const upb_MiniTable envoy_config_core_v3_TcpProtocolOptions_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_core_v3_QuicKeepAliveSettings_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_core_v3_QuicKeepAliveSettings_submsgs[2] = {
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_QuicKeepAliveSettings__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_QuicKeepAliveSettings_msginit = {
&envoy_config_core_v3_QuicKeepAliveSettings_submsgs[0],
&envoy_config_core_v3_QuicKeepAliveSettings__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_core_v3_QuicProtocolOptions_submsgs[2] = {
- {.submsg = &envoy_config_core_v3_QuicKeepAliveSettings_msginit},
+static const upb_MiniTable_Sub envoy_config_core_v3_QuicProtocolOptions_submsgs[5] = {
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_core_v3_QuicKeepAliveSettings_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_QuicProtocolOptions__fields[5] = {
- {1, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 3, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 4, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 40), 5, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 40), UPB_SIZE(5, 5), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_QuicProtocolOptions_msginit = {
&envoy_config_core_v3_QuicProtocolOptions_submsgs[0],
&envoy_config_core_v3_QuicProtocolOptions__fields[0],
- UPB_SIZE(24, 48), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(24, 48), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_UpstreamHttpProtocolOptions__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_UpstreamHttpProtocolOptions_msginit = {
NULL,
&envoy_config_core_v3_UpstreamHttpProtocolOptions__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_AlternateProtocolsCacheOptions_submsgs[3] = {
- {.submsg = &envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_msginit},
- {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
+ {.submsg = &envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_AlternateProtocolsCacheOptions__fields[4] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 40), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_AlternateProtocolsCacheOptions_msginit = {
&envoy_config_core_v3_AlternateProtocolsCacheOptions_submsgs[0],
&envoy_config_core_v3_AlternateProtocolsCacheOptions__fields[0],
- UPB_SIZE(24, 48), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 48), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_msginit = {
NULL,
&envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_core_v3_HttpProtocolOptions_submsgs[2] = {
+static const upb_MiniTable_Sub envoy_config_core_v3_HttpProtocolOptions_submsgs[5] = {
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &google_protobuf_Duration_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_HttpProtocolOptions__fields[6] = {
- {1, UPB_SIZE(8, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 24), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 32), 4, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(24, 40), 5, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 32), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 40), UPB_SIZE(5, 5), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_HttpProtocolOptions_msginit = {
&envoy_config_core_v3_HttpProtocolOptions_submsgs[0],
&envoy_config_core_v3_HttpProtocolOptions__fields[0],
- UPB_SIZE(32, 48), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(32, 48), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_core_v3_Http1ProtocolOptions_submsgs[2] = {
+static const upb_MiniTable_Sub envoy_config_core_v3_Http1ProtocolOptions_submsgs[3] = {
+ {.submsg = &google_protobuf_BoolValue_msginit},
{.submsg = &envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_msginit},
{.submsg = &google_protobuf_BoolValue_msginit},
};
-static const upb_MiniTable_Field envoy_config_core_v3_Http1ProtocolOptions__fields[7] = {
- {1, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(2, 2), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(3, 3), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(20, 40), 3, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_core_v3_Http1ProtocolOptions__fields[8] = {
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(2, 2), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(3, 3), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(24, 40), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_Http1ProtocolOptions_msginit = {
&envoy_config_core_v3_Http1ProtocolOptions_submsgs[0],
&envoy_config_core_v3_Http1ProtocolOptions__fields[0],
- UPB_SIZE(24, 48), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(32, 48), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_submsgs[2] = {
@@ -150,84 +159,95 @@ static const upb_MiniTable_Sub envoy_config_core_v3_Http1ProtocolOptions_HeaderK
};
static const upb_MiniTable_Field envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat__fields[2] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_msginit = {
&envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_submsgs[0],
&envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
const upb_MiniTable envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_core_v3_KeepaliveSettings_submsgs[2] = {
+static const upb_MiniTable_Sub envoy_config_core_v3_KeepaliveSettings_submsgs[4] = {
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &envoy_type_v3_Percent_msginit},
{.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_KeepaliveSettings__fields[4] = {
- {1, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 4, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_KeepaliveSettings_msginit = {
&envoy_config_core_v3_KeepaliveSettings_submsgs[0],
&envoy_config_core_v3_KeepaliveSettings__fields[0],
- UPB_SIZE(24, 40), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_core_v3_Http2ProtocolOptions_submsgs[4] = {
+static const upb_MiniTable_Sub envoy_config_core_v3_Http2ProtocolOptions_submsgs[12] = {
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
{.submsg = &envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_msginit},
- {.submsg = &envoy_config_core_v3_KeepaliveSettings_msginit},
{.submsg = &google_protobuf_BoolValue_msginit},
- {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_core_v3_KeepaliveSettings_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_Http2ProtocolOptions__fields[15] = {
- {1, UPB_SIZE(8, 8), 1, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 16), 2, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 24), 3, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 32), 4, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(2, 2), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(3, 3), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(24, 40), 5, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(28, 48), 6, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(32, 56), 7, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(36, 64), 8, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(40, 72), 9, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(4, 4), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {13, UPB_SIZE(52, 96), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {14, UPB_SIZE(44, 80), 10, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {15, UPB_SIZE(48, 88), 11, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 32), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(2, 2), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(3, 3), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(24, 40), UPB_SIZE(5, 5), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(28, 48), UPB_SIZE(6, 6), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(32, 56), UPB_SIZE(7, 7), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(36, 64), UPB_SIZE(8, 8), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(40, 72), UPB_SIZE(9, 9), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(44, 80), UPB_SIZE(0, 0), 9, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(48, 88), UPB_SIZE(10, 10), 10, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(52, 96), UPB_SIZE(11, 11), 11, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_Http2ProtocolOptions_msginit = {
&envoy_config_core_v3_Http2ProtocolOptions_submsgs[0],
&envoy_config_core_v3_Http2ProtocolOptions__fields[0],
- UPB_SIZE(56, 104), 15, upb_ExtMode_NonExtendable, 15, 255, 0,
+ UPB_SIZE(56, 104), 15, kUpb_ExtMode_NonExtendable, 15, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_submsgs[2] = {
+ {.submsg = &google_protobuf_UInt32Value_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_msginit = {
&envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_submsgs[0],
&envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_GrpcProtocolOptions_submsgs[1] = {
@@ -235,13 +255,13 @@ static const upb_MiniTable_Sub envoy_config_core_v3_GrpcProtocolOptions_submsgs[
};
static const upb_MiniTable_Field envoy_config_core_v3_GrpcProtocolOptions__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_GrpcProtocolOptions_msginit = {
&envoy_config_core_v3_GrpcProtocolOptions_submsgs[0],
&envoy_config_core_v3_GrpcProtocolOptions__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_Http3ProtocolOptions_submsgs[2] = {
@@ -250,25 +270,25 @@ static const upb_MiniTable_Sub envoy_config_core_v3_Http3ProtocolOptions_submsgs
};
static const upb_MiniTable_Field envoy_config_core_v3_Http3ProtocolOptions__fields[3] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_Http3ProtocolOptions_msginit = {
&envoy_config_core_v3_Http3ProtocolOptions_submsgs[0],
&envoy_config_core_v3_Http3ProtocolOptions__fields[0],
- UPB_SIZE(16, 24), 3, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_core_v3_SchemeHeaderTransformation__fields[1] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_SchemeHeaderTransformation_msginit = {
NULL,
&envoy_config_core_v3_SchemeHeaderTransformation__fields[0],
- UPB_SIZE(16, 32), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[16] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h
index 31dac06544..615e7eb099 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h
@@ -112,11 +112,15 @@ UPB_INLINE envoy_config_core_v3_TcpProtocolOptions* envoy_config_core_v3_TcpProt
return ret;
}
UPB_INLINE char* envoy_config_core_v3_TcpProtocolOptions_serialize(const envoy_config_core_v3_TcpProtocolOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_TcpProtocolOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_TcpProtocolOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_TcpProtocolOptions_serialize_ex(const envoy_config_core_v3_TcpProtocolOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_TcpProtocolOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_TcpProtocolOptions_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -145,17 +149,31 @@ UPB_INLINE envoy_config_core_v3_QuicKeepAliveSettings* envoy_config_core_v3_Quic
return ret;
}
UPB_INLINE char* envoy_config_core_v3_QuicKeepAliveSettings_serialize(const envoy_config_core_v3_QuicKeepAliveSettings* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_QuicKeepAliveSettings_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_QuicKeepAliveSettings_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_QuicKeepAliveSettings_serialize_ex(const envoy_config_core_v3_QuicKeepAliveSettings* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_QuicKeepAliveSettings_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_QuicKeepAliveSettings_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_QuicKeepAliveSettings_has_max_interval(const envoy_config_core_v3_QuicKeepAliveSettings* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_QuicKeepAliveSettings_clear_max_interval(const envoy_config_core_v3_QuicKeepAliveSettings* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_QuicKeepAliveSettings_has_max_interval(const envoy_config_core_v3_QuicKeepAliveSettings *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_QuicKeepAliveSettings_max_interval(const envoy_config_core_v3_QuicKeepAliveSettings* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_core_v3_QuicKeepAliveSettings_has_initial_interval(const envoy_config_core_v3_QuicKeepAliveSettings *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_QuicKeepAliveSettings_has_initial_interval(const envoy_config_core_v3_QuicKeepAliveSettings* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_QuicKeepAliveSettings_clear_initial_interval(const envoy_config_core_v3_QuicKeepAliveSettings* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_QuicKeepAliveSettings_initial_interval(const envoy_config_core_v3_QuicKeepAliveSettings* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Duration*);
}
@@ -164,7 +182,7 @@ UPB_INLINE void envoy_config_core_v3_QuicKeepAliveSettings_set_max_interval(envo
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_QuicKeepAliveSettings_mutable_max_interval(envoy_config_core_v3_QuicKeepAliveSettings *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_QuicKeepAliveSettings_mutable_max_interval(envoy_config_core_v3_QuicKeepAliveSettings* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_QuicKeepAliveSettings_max_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -177,7 +195,7 @@ UPB_INLINE void envoy_config_core_v3_QuicKeepAliveSettings_set_initial_interval(
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_QuicKeepAliveSettings_mutable_initial_interval(envoy_config_core_v3_QuicKeepAliveSettings *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_QuicKeepAliveSettings_mutable_initial_interval(envoy_config_core_v3_QuicKeepAliveSettings* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_QuicKeepAliveSettings_initial_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -212,29 +230,58 @@ UPB_INLINE envoy_config_core_v3_QuicProtocolOptions* envoy_config_core_v3_QuicPr
return ret;
}
UPB_INLINE char* envoy_config_core_v3_QuicProtocolOptions_serialize(const envoy_config_core_v3_QuicProtocolOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_QuicProtocolOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_QuicProtocolOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_QuicProtocolOptions_serialize_ex(const envoy_config_core_v3_QuicProtocolOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_QuicProtocolOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_QuicProtocolOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_QuicProtocolOptions_has_max_concurrent_streams(const envoy_config_core_v3_QuicProtocolOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_QuicProtocolOptions_clear_max_concurrent_streams(const envoy_config_core_v3_QuicProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_QuicProtocolOptions_has_max_concurrent_streams(const envoy_config_core_v3_QuicProtocolOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_QuicProtocolOptions_max_concurrent_streams(const envoy_config_core_v3_QuicProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_QuicProtocolOptions_has_initial_stream_window_size(const envoy_config_core_v3_QuicProtocolOptions *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_QuicProtocolOptions_has_initial_stream_window_size(const envoy_config_core_v3_QuicProtocolOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_QuicProtocolOptions_clear_initial_stream_window_size(const envoy_config_core_v3_QuicProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_QuicProtocolOptions_initial_stream_window_size(const envoy_config_core_v3_QuicProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_QuicProtocolOptions_has_initial_connection_window_size(const envoy_config_core_v3_QuicProtocolOptions *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_core_v3_QuicProtocolOptions_has_initial_connection_window_size(const envoy_config_core_v3_QuicProtocolOptions* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_core_v3_QuicProtocolOptions_clear_initial_connection_window_size(const envoy_config_core_v3_QuicProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_QuicProtocolOptions_initial_connection_window_size(const envoy_config_core_v3_QuicProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_QuicProtocolOptions_has_num_timeouts_to_trigger_port_migration(const envoy_config_core_v3_QuicProtocolOptions *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_config_core_v3_QuicProtocolOptions_has_num_timeouts_to_trigger_port_migration(const envoy_config_core_v3_QuicProtocolOptions* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_core_v3_QuicProtocolOptions_clear_num_timeouts_to_trigger_port_migration(const envoy_config_core_v3_QuicProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_QuicProtocolOptions_num_timeouts_to_trigger_port_migration(const envoy_config_core_v3_QuicProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_QuicProtocolOptions_has_connection_keepalive(const envoy_config_core_v3_QuicProtocolOptions *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool envoy_config_core_v3_QuicProtocolOptions_has_connection_keepalive(const envoy_config_core_v3_QuicProtocolOptions* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_core_v3_QuicProtocolOptions_clear_connection_keepalive(const envoy_config_core_v3_QuicProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_core_v3_QuicKeepAliveSettings* envoy_config_core_v3_QuicProtocolOptions_connection_keepalive(const envoy_config_core_v3_QuicProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const envoy_config_core_v3_QuicKeepAliveSettings*);
}
@@ -243,7 +290,7 @@ UPB_INLINE void envoy_config_core_v3_QuicProtocolOptions_set_max_concurrent_stre
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_QuicProtocolOptions_mutable_max_concurrent_streams(envoy_config_core_v3_QuicProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_QuicProtocolOptions_mutable_max_concurrent_streams(envoy_config_core_v3_QuicProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_QuicProtocolOptions_max_concurrent_streams(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -256,7 +303,7 @@ UPB_INLINE void envoy_config_core_v3_QuicProtocolOptions_set_initial_stream_wind
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_QuicProtocolOptions_mutable_initial_stream_window_size(envoy_config_core_v3_QuicProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_QuicProtocolOptions_mutable_initial_stream_window_size(envoy_config_core_v3_QuicProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_QuicProtocolOptions_initial_stream_window_size(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -269,7 +316,7 @@ UPB_INLINE void envoy_config_core_v3_QuicProtocolOptions_set_initial_connection_
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_QuicProtocolOptions_mutable_initial_connection_window_size(envoy_config_core_v3_QuicProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_QuicProtocolOptions_mutable_initial_connection_window_size(envoy_config_core_v3_QuicProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_QuicProtocolOptions_initial_connection_window_size(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -282,7 +329,7 @@ UPB_INLINE void envoy_config_core_v3_QuicProtocolOptions_set_num_timeouts_to_tri
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_QuicProtocolOptions_mutable_num_timeouts_to_trigger_port_migration(envoy_config_core_v3_QuicProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_QuicProtocolOptions_mutable_num_timeouts_to_trigger_port_migration(envoy_config_core_v3_QuicProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_QuicProtocolOptions_num_timeouts_to_trigger_port_migration(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -295,7 +342,7 @@ UPB_INLINE void envoy_config_core_v3_QuicProtocolOptions_set_connection_keepaliv
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(20, 40), envoy_config_core_v3_QuicKeepAliveSettings*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_QuicKeepAliveSettings* envoy_config_core_v3_QuicProtocolOptions_mutable_connection_keepalive(envoy_config_core_v3_QuicProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_QuicKeepAliveSettings* envoy_config_core_v3_QuicProtocolOptions_mutable_connection_keepalive(envoy_config_core_v3_QuicProtocolOptions* msg, upb_Arena* arena) {
struct envoy_config_core_v3_QuicKeepAliveSettings* sub = (struct envoy_config_core_v3_QuicKeepAliveSettings*)envoy_config_core_v3_QuicProtocolOptions_connection_keepalive(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_QuicKeepAliveSettings*)_upb_Message_New(&envoy_config_core_v3_QuicKeepAliveSettings_msginit, arena);
@@ -330,18 +377,31 @@ UPB_INLINE envoy_config_core_v3_UpstreamHttpProtocolOptions* envoy_config_core_v
return ret;
}
UPB_INLINE char* envoy_config_core_v3_UpstreamHttpProtocolOptions_serialize(const envoy_config_core_v3_UpstreamHttpProtocolOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_UpstreamHttpProtocolOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_UpstreamHttpProtocolOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_UpstreamHttpProtocolOptions_serialize_ex(const envoy_config_core_v3_UpstreamHttpProtocolOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_UpstreamHttpProtocolOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_UpstreamHttpProtocolOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_UpstreamHttpProtocolOptions_clear_auto_sni(const envoy_config_core_v3_UpstreamHttpProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool envoy_config_core_v3_UpstreamHttpProtocolOptions_auto_sni(const envoy_config_core_v3_UpstreamHttpProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
+UPB_INLINE void envoy_config_core_v3_UpstreamHttpProtocolOptions_clear_auto_san_validation(const envoy_config_core_v3_UpstreamHttpProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_config_core_v3_UpstreamHttpProtocolOptions_auto_san_validation(const envoy_config_core_v3_UpstreamHttpProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
+UPB_INLINE void envoy_config_core_v3_UpstreamHttpProtocolOptions_clear_override_auto_sni_header(const envoy_config_core_v3_UpstreamHttpProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_UpstreamHttpProtocolOptions_override_auto_sni_header(const envoy_config_core_v3_UpstreamHttpProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
@@ -381,25 +441,49 @@ UPB_INLINE envoy_config_core_v3_AlternateProtocolsCacheOptions* envoy_config_cor
return ret;
}
UPB_INLINE char* envoy_config_core_v3_AlternateProtocolsCacheOptions_serialize(const envoy_config_core_v3_AlternateProtocolsCacheOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_AlternateProtocolsCacheOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_AlternateProtocolsCacheOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_AlternateProtocolsCacheOptions_serialize_ex(const envoy_config_core_v3_AlternateProtocolsCacheOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_AlternateProtocolsCacheOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_AlternateProtocolsCacheOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_AlternateProtocolsCacheOptions_clear_name(const envoy_config_core_v3_AlternateProtocolsCacheOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_AlternateProtocolsCacheOptions_name(const envoy_config_core_v3_AlternateProtocolsCacheOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_core_v3_AlternateProtocolsCacheOptions_has_max_entries(const envoy_config_core_v3_AlternateProtocolsCacheOptions *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_core_v3_AlternateProtocolsCacheOptions_has_max_entries(const envoy_config_core_v3_AlternateProtocolsCacheOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_AlternateProtocolsCacheOptions_clear_max_entries(const envoy_config_core_v3_AlternateProtocolsCacheOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_AlternateProtocolsCacheOptions_max_entries(const envoy_config_core_v3_AlternateProtocolsCacheOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_AlternateProtocolsCacheOptions_has_key_value_store_config(const envoy_config_core_v3_AlternateProtocolsCacheOptions *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_AlternateProtocolsCacheOptions_has_key_value_store_config(const envoy_config_core_v3_AlternateProtocolsCacheOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_AlternateProtocolsCacheOptions_clear_key_value_store_config(const envoy_config_core_v3_AlternateProtocolsCacheOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_core_v3_AlternateProtocolsCacheOptions_key_value_store_config(const envoy_config_core_v3_AlternateProtocolsCacheOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_config_core_v3_TypedExtensionConfig*);
}
-UPB_INLINE bool envoy_config_core_v3_AlternateProtocolsCacheOptions_has_prepopulated_entries(const envoy_config_core_v3_AlternateProtocolsCacheOptions *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE const envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry* const* envoy_config_core_v3_AlternateProtocolsCacheOptions_prepopulated_entries(const envoy_config_core_v3_AlternateProtocolsCacheOptions *msg, size_t *len) { return (const envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len); }
+UPB_INLINE bool envoy_config_core_v3_AlternateProtocolsCacheOptions_has_prepopulated_entries(const envoy_config_core_v3_AlternateProtocolsCacheOptions* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE void envoy_config_core_v3_AlternateProtocolsCacheOptions_clear_prepopulated_entries(const envoy_config_core_v3_AlternateProtocolsCacheOptions* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE const envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry* const* envoy_config_core_v3_AlternateProtocolsCacheOptions_prepopulated_entries(const envoy_config_core_v3_AlternateProtocolsCacheOptions* msg, size_t* len) {
+ return (const envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len);
+}
UPB_INLINE void envoy_config_core_v3_AlternateProtocolsCacheOptions_set_name(envoy_config_core_v3_AlternateProtocolsCacheOptions *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
@@ -408,7 +492,7 @@ UPB_INLINE void envoy_config_core_v3_AlternateProtocolsCacheOptions_set_max_entr
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_AlternateProtocolsCacheOptions_mutable_max_entries(envoy_config_core_v3_AlternateProtocolsCacheOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_AlternateProtocolsCacheOptions_mutable_max_entries(envoy_config_core_v3_AlternateProtocolsCacheOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_AlternateProtocolsCacheOptions_max_entries(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -421,7 +505,7 @@ UPB_INLINE void envoy_config_core_v3_AlternateProtocolsCacheOptions_set_key_valu
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_core_v3_AlternateProtocolsCacheOptions_mutable_key_value_store_config(envoy_config_core_v3_AlternateProtocolsCacheOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_core_v3_AlternateProtocolsCacheOptions_mutable_key_value_store_config(envoy_config_core_v3_AlternateProtocolsCacheOptions* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_core_v3_AlternateProtocolsCacheOptions_key_value_store_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -430,16 +514,15 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_core_v
}
return sub;
}
-UPB_INLINE envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry** envoy_config_core_v3_AlternateProtocolsCacheOptions_mutable_prepopulated_entries(envoy_config_core_v3_AlternateProtocolsCacheOptions *msg, size_t *len) {
+UPB_INLINE envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry** envoy_config_core_v3_AlternateProtocolsCacheOptions_mutable_prepopulated_entries(envoy_config_core_v3_AlternateProtocolsCacheOptions* msg, size_t* len) {
return (envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
}
-UPB_INLINE envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry** envoy_config_core_v3_AlternateProtocolsCacheOptions_resize_prepopulated_entries(envoy_config_core_v3_AlternateProtocolsCacheOptions *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry** envoy_config_core_v3_AlternateProtocolsCacheOptions_resize_prepopulated_entries(envoy_config_core_v3_AlternateProtocolsCacheOptions* msg, size_t len, upb_Arena* arena) {
return (envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry* envoy_config_core_v3_AlternateProtocolsCacheOptions_add_prepopulated_entries(envoy_config_core_v3_AlternateProtocolsCacheOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry* envoy_config_core_v3_AlternateProtocolsCacheOptions_add_prepopulated_entries(envoy_config_core_v3_AlternateProtocolsCacheOptions* msg, upb_Arena* arena) {
struct envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry* sub = (struct envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry*)_upb_Message_New(&envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -469,15 +552,25 @@ UPB_INLINE envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocol
return ret;
}
UPB_INLINE char* envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_serialize(const envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_serialize_ex(const envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_clear_hostname(const envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_hostname(const envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
+UPB_INLINE void envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_clear_port(const envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = 0;
+}
UPB_INLINE uint32_t envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry_port(const envoy_config_core_v3_AlternateProtocolsCacheOptions_AlternateProtocolsCacheEntry* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t);
}
@@ -514,32 +607,64 @@ UPB_INLINE envoy_config_core_v3_HttpProtocolOptions* envoy_config_core_v3_HttpPr
return ret;
}
UPB_INLINE char* envoy_config_core_v3_HttpProtocolOptions_serialize(const envoy_config_core_v3_HttpProtocolOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HttpProtocolOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HttpProtocolOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_HttpProtocolOptions_serialize_ex(const envoy_config_core_v3_HttpProtocolOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_HttpProtocolOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_HttpProtocolOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_HttpProtocolOptions_has_idle_timeout(const envoy_config_core_v3_HttpProtocolOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_HttpProtocolOptions_clear_idle_timeout(const envoy_config_core_v3_HttpProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_HttpProtocolOptions_has_idle_timeout(const envoy_config_core_v3_HttpProtocolOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_HttpProtocolOptions_idle_timeout(const envoy_config_core_v3_HttpProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_core_v3_HttpProtocolOptions_has_max_headers_count(const envoy_config_core_v3_HttpProtocolOptions *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_HttpProtocolOptions_has_max_headers_count(const envoy_config_core_v3_HttpProtocolOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_HttpProtocolOptions_clear_max_headers_count(const envoy_config_core_v3_HttpProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_HttpProtocolOptions_max_headers_count(const envoy_config_core_v3_HttpProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_HttpProtocolOptions_has_max_connection_duration(const envoy_config_core_v3_HttpProtocolOptions *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_core_v3_HttpProtocolOptions_has_max_connection_duration(const envoy_config_core_v3_HttpProtocolOptions* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_core_v3_HttpProtocolOptions_clear_max_connection_duration(const envoy_config_core_v3_HttpProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_HttpProtocolOptions_max_connection_duration(const envoy_config_core_v3_HttpProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_core_v3_HttpProtocolOptions_has_max_stream_duration(const envoy_config_core_v3_HttpProtocolOptions *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_config_core_v3_HttpProtocolOptions_has_max_stream_duration(const envoy_config_core_v3_HttpProtocolOptions* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_core_v3_HttpProtocolOptions_clear_max_stream_duration(const envoy_config_core_v3_HttpProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_HttpProtocolOptions_max_stream_duration(const envoy_config_core_v3_HttpProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_Duration*);
}
+UPB_INLINE void envoy_config_core_v3_HttpProtocolOptions_clear_headers_with_underscores_action(const envoy_config_core_v3_HttpProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_config_core_v3_HttpProtocolOptions_headers_with_underscores_action(const envoy_config_core_v3_HttpProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_config_core_v3_HttpProtocolOptions_has_max_requests_per_connection(const envoy_config_core_v3_HttpProtocolOptions *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool envoy_config_core_v3_HttpProtocolOptions_has_max_requests_per_connection(const envoy_config_core_v3_HttpProtocolOptions* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_core_v3_HttpProtocolOptions_clear_max_requests_per_connection(const envoy_config_core_v3_HttpProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_HttpProtocolOptions_max_requests_per_connection(const envoy_config_core_v3_HttpProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_UInt32Value*);
}
@@ -548,7 +673,7 @@ UPB_INLINE void envoy_config_core_v3_HttpProtocolOptions_set_idle_timeout(envoy_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HttpProtocolOptions_mutable_idle_timeout(envoy_config_core_v3_HttpProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HttpProtocolOptions_mutable_idle_timeout(envoy_config_core_v3_HttpProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_HttpProtocolOptions_idle_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -561,7 +686,7 @@ UPB_INLINE void envoy_config_core_v3_HttpProtocolOptions_set_max_headers_count(e
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_HttpProtocolOptions_mutable_max_headers_count(envoy_config_core_v3_HttpProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_HttpProtocolOptions_mutable_max_headers_count(envoy_config_core_v3_HttpProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_HttpProtocolOptions_max_headers_count(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -574,7 +699,7 @@ UPB_INLINE void envoy_config_core_v3_HttpProtocolOptions_set_max_connection_dura
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HttpProtocolOptions_mutable_max_connection_duration(envoy_config_core_v3_HttpProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HttpProtocolOptions_mutable_max_connection_duration(envoy_config_core_v3_HttpProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_HttpProtocolOptions_max_connection_duration(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -587,7 +712,7 @@ UPB_INLINE void envoy_config_core_v3_HttpProtocolOptions_set_max_stream_duration
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HttpProtocolOptions_mutable_max_stream_duration(envoy_config_core_v3_HttpProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_HttpProtocolOptions_mutable_max_stream_duration(envoy_config_core_v3_HttpProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_HttpProtocolOptions_max_stream_duration(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -603,7 +728,7 @@ UPB_INLINE void envoy_config_core_v3_HttpProtocolOptions_set_max_requests_per_co
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_HttpProtocolOptions_mutable_max_requests_per_connection(envoy_config_core_v3_HttpProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_HttpProtocolOptions_mutable_max_requests_per_connection(envoy_config_core_v3_HttpProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_HttpProtocolOptions_max_requests_per_connection(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -638,42 +763,79 @@ UPB_INLINE envoy_config_core_v3_Http1ProtocolOptions* envoy_config_core_v3_Http1
return ret;
}
UPB_INLINE char* envoy_config_core_v3_Http1ProtocolOptions_serialize(const envoy_config_core_v3_Http1ProtocolOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Http1ProtocolOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Http1ProtocolOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_Http1ProtocolOptions_serialize_ex(const envoy_config_core_v3_Http1ProtocolOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Http1ProtocolOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Http1ProtocolOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_has_allow_absolute_url(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_clear_allow_absolute_url(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_has_allow_absolute_url(const envoy_config_core_v3_Http1ProtocolOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_core_v3_Http1ProtocolOptions_allow_absolute_url(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_clear_accept_http_10(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
}
UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_accept_http_10(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
+UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_clear_default_host_for_http_10(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_Http1ProtocolOptions_default_host_for_http_10(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView);
+}
+UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_has_header_key_format(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_clear_header_key_format(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_has_header_key_format(const envoy_config_core_v3_Http1ProtocolOptions *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* envoy_config_core_v3_Http1ProtocolOptions_header_key_format(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat*);
+}
+UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_clear_enable_trailers(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
}
UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_enable_trailers(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
}
+UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_clear_allow_chunked_length(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = 0;
+}
UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_allow_chunked_length(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool);
}
-UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_has_override_stream_error_on_invalid_http_message(const envoy_config_core_v3_Http1ProtocolOptions *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_has_override_stream_error_on_invalid_http_message(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_clear_override_stream_error_on_invalid_http_message(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_core_v3_Http1ProtocolOptions_override_stream_error_on_invalid_http_message(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_clear_send_fully_qualified_url(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = 0;
+}
+UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_send_fully_qualified_url(const envoy_config_core_v3_Http1ProtocolOptions* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
}
UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_set_allow_absolute_url(envoy_config_core_v3_Http1ProtocolOptions *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_Http1ProtocolOptions_mutable_allow_absolute_url(envoy_config_core_v3_Http1ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_Http1ProtocolOptions_mutable_allow_absolute_url(envoy_config_core_v3_Http1ProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_core_v3_Http1ProtocolOptions_allow_absolute_url(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -686,13 +848,13 @@ UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_set_accept_http_10(env
*UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_set_default_host_for_http_10(envoy_config_core_v3_Http1ProtocolOptions *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_set_header_key_format(envoy_config_core_v3_Http1ProtocolOptions *msg, envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 32), envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* envoy_config_core_v3_Http1ProtocolOptions_mutable_header_key_format(envoy_config_core_v3_Http1ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* envoy_config_core_v3_Http1ProtocolOptions_mutable_header_key_format(envoy_config_core_v3_Http1ProtocolOptions* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* sub = (struct envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat*)envoy_config_core_v3_Http1ProtocolOptions_header_key_format(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat*)_upb_Message_New(&envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_msginit, arena);
@@ -709,9 +871,9 @@ UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_set_allow_chunked_leng
}
UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_set_override_stream_error_on_invalid_http_message(envoy_config_core_v3_Http1ProtocolOptions *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_Http1ProtocolOptions_mutable_override_stream_error_on_invalid_http_message(envoy_config_core_v3_Http1ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_Http1ProtocolOptions_mutable_override_stream_error_on_invalid_http_message(envoy_config_core_v3_Http1ProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_core_v3_Http1ProtocolOptions_override_stream_error_on_invalid_http_message(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -720,6 +882,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_Http1ProtocolO
}
return sub;
}
+UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_set_send_fully_qualified_url(envoy_config_core_v3_Http1ProtocolOptions *msg, bool value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = value;
+}
/* envoy.config.core.v3.Http1ProtocolOptions.HeaderKeyFormat */
@@ -746,28 +911,47 @@ UPB_INLINE envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* envoy_conf
return ret;
}
UPB_INLINE char* envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_serialize(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_serialize_ex(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_header_format_proper_case_words = 1,
envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_header_format_stateful_formatter = 8,
envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_header_format_NOT_SET = 0
} envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_header_format_oneofcases;
-UPB_INLINE envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_header_format_oneofcases envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_header_format_case(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* msg) { return (envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_header_format_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_has_proper_case_words(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords* envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_proper_case_words(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat *msg) { return UPB_READ_ONEOF(msg, const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_has_stateful_formatter(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 8; }
-UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_stateful_formatter(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 8, NULL); }
+UPB_INLINE envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_header_format_oneofcases envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_header_format_case(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* msg) {
+ return (envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_header_format_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_has_proper_case_words(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_clear_proper_case_words(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_header_format_NOT_SET);
+}
+UPB_INLINE const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords* envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_proper_case_words(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_has_stateful_formatter(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 8;
+}
+UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_clear_stateful_formatter(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_header_format_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_stateful_formatter(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 8, NULL);
+}
UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_set_proper_case_words(envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat *msg, envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords* envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_mutable_proper_case_words(envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords* envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_mutable_proper_case_words(envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords* sub = (struct envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords*)envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_proper_case_words(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords*)_upb_Message_New(&envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_msginit, arena);
@@ -777,9 +961,9 @@ UPB_INLINE struct envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_Prop
return sub;
}
UPB_INLINE void envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_set_stateful_formatter(envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 8);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 8);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_mutable_stateful_formatter(envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_mutable_stateful_formatter(envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_stateful_formatter(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -814,11 +998,15 @@ UPB_INLINE envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseW
return ret;
}
UPB_INLINE char* envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_serialize(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_serialize_ex(const envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Http1ProtocolOptions_HeaderKeyFormat_ProperCaseWords_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -847,25 +1035,49 @@ UPB_INLINE envoy_config_core_v3_KeepaliveSettings* envoy_config_core_v3_Keepaliv
return ret;
}
UPB_INLINE char* envoy_config_core_v3_KeepaliveSettings_serialize(const envoy_config_core_v3_KeepaliveSettings* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_KeepaliveSettings_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_KeepaliveSettings_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_KeepaliveSettings_serialize_ex(const envoy_config_core_v3_KeepaliveSettings* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_KeepaliveSettings_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_KeepaliveSettings_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_KeepaliveSettings_has_interval(const envoy_config_core_v3_KeepaliveSettings* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_KeepaliveSettings_clear_interval(const envoy_config_core_v3_KeepaliveSettings* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_KeepaliveSettings_has_interval(const envoy_config_core_v3_KeepaliveSettings *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_KeepaliveSettings_interval(const envoy_config_core_v3_KeepaliveSettings* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_core_v3_KeepaliveSettings_has_timeout(const envoy_config_core_v3_KeepaliveSettings *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_KeepaliveSettings_has_timeout(const envoy_config_core_v3_KeepaliveSettings* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_KeepaliveSettings_clear_timeout(const envoy_config_core_v3_KeepaliveSettings* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_KeepaliveSettings_timeout(const envoy_config_core_v3_KeepaliveSettings* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_core_v3_KeepaliveSettings_has_interval_jitter(const envoy_config_core_v3_KeepaliveSettings *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_core_v3_KeepaliveSettings_has_interval_jitter(const envoy_config_core_v3_KeepaliveSettings* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_core_v3_KeepaliveSettings_clear_interval_jitter(const envoy_config_core_v3_KeepaliveSettings* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_Percent* envoy_config_core_v3_KeepaliveSettings_interval_jitter(const envoy_config_core_v3_KeepaliveSettings* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_type_v3_Percent*);
}
-UPB_INLINE bool envoy_config_core_v3_KeepaliveSettings_has_connection_idle_interval(const envoy_config_core_v3_KeepaliveSettings *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_config_core_v3_KeepaliveSettings_has_connection_idle_interval(const envoy_config_core_v3_KeepaliveSettings* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_core_v3_KeepaliveSettings_clear_connection_idle_interval(const envoy_config_core_v3_KeepaliveSettings* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_core_v3_KeepaliveSettings_connection_idle_interval(const envoy_config_core_v3_KeepaliveSettings* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_Duration*);
}
@@ -874,7 +1086,7 @@ UPB_INLINE void envoy_config_core_v3_KeepaliveSettings_set_interval(envoy_config
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_KeepaliveSettings_mutable_interval(envoy_config_core_v3_KeepaliveSettings *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_KeepaliveSettings_mutable_interval(envoy_config_core_v3_KeepaliveSettings* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_KeepaliveSettings_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -887,7 +1099,7 @@ UPB_INLINE void envoy_config_core_v3_KeepaliveSettings_set_timeout(envoy_config_
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_KeepaliveSettings_mutable_timeout(envoy_config_core_v3_KeepaliveSettings *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_KeepaliveSettings_mutable_timeout(envoy_config_core_v3_KeepaliveSettings* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_KeepaliveSettings_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -900,7 +1112,7 @@ UPB_INLINE void envoy_config_core_v3_KeepaliveSettings_set_interval_jitter(envoy
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_type_v3_Percent*) = value;
}
-UPB_INLINE struct envoy_type_v3_Percent* envoy_config_core_v3_KeepaliveSettings_mutable_interval_jitter(envoy_config_core_v3_KeepaliveSettings *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Percent* envoy_config_core_v3_KeepaliveSettings_mutable_interval_jitter(envoy_config_core_v3_KeepaliveSettings* msg, upb_Arena* arena) {
struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_config_core_v3_KeepaliveSettings_interval_jitter(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
@@ -913,7 +1125,7 @@ UPB_INLINE void envoy_config_core_v3_KeepaliveSettings_set_connection_idle_inter
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_KeepaliveSettings_mutable_connection_idle_interval(envoy_config_core_v3_KeepaliveSettings *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_core_v3_KeepaliveSettings_mutable_connection_idle_interval(envoy_config_core_v3_KeepaliveSettings* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_core_v3_KeepaliveSettings_connection_idle_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -948,73 +1160,148 @@ UPB_INLINE envoy_config_core_v3_Http2ProtocolOptions* envoy_config_core_v3_Http2
return ret;
}
UPB_INLINE char* envoy_config_core_v3_Http2ProtocolOptions_serialize(const envoy_config_core_v3_Http2ProtocolOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Http2ProtocolOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Http2ProtocolOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_Http2ProtocolOptions_serialize_ex(const envoy_config_core_v3_Http2ProtocolOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Http2ProtocolOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Http2ProtocolOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_hpack_table_size(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_hpack_table_size(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_hpack_table_size(const envoy_config_core_v3_Http2ProtocolOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_hpack_table_size(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_max_concurrent_streams(const envoy_config_core_v3_Http2ProtocolOptions *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_max_concurrent_streams(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_max_concurrent_streams(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_max_concurrent_streams(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_initial_stream_window_size(const envoy_config_core_v3_Http2ProtocolOptions *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_initial_stream_window_size(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_initial_stream_window_size(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_initial_stream_window_size(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_initial_connection_window_size(const envoy_config_core_v3_Http2ProtocolOptions *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_initial_connection_window_size(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_initial_connection_window_size(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_initial_connection_window_size(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_UInt32Value*);
}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_allow_connect(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
+}
UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_allow_connect(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_allow_metadata(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = 0;
+}
UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_allow_metadata(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool);
}
-UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_max_outbound_frames(const envoy_config_core_v3_Http2ProtocolOptions *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_max_outbound_frames(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_max_outbound_frames(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_max_outbound_frames(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_max_outbound_control_frames(const envoy_config_core_v3_Http2ProtocolOptions *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_max_outbound_control_frames(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_max_outbound_control_frames(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_max_outbound_control_frames(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_max_consecutive_inbound_frames_with_empty_payload(const envoy_config_core_v3_Http2ProtocolOptions *msg) { return _upb_hasbit(msg, 7); }
+UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_max_consecutive_inbound_frames_with_empty_payload(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_max_consecutive_inbound_frames_with_empty_payload(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_max_consecutive_inbound_frames_with_empty_payload(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_max_inbound_priority_frames_per_stream(const envoy_config_core_v3_Http2ProtocolOptions *msg) { return _upb_hasbit(msg, 8); }
+UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_max_inbound_priority_frames_per_stream(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 8);
+}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_max_inbound_priority_frames_per_stream(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_max_inbound_priority_frames_per_stream(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_max_inbound_window_update_frames_per_data_frame_sent(const envoy_config_core_v3_Http2ProtocolOptions *msg) { return _upb_hasbit(msg, 9); }
+UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_max_inbound_window_update_frames_per_data_frame_sent(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 9);
+}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_max_inbound_window_update_frames_per_data_frame_sent(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_max_inbound_window_update_frames_per_data_frame_sent(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const struct google_protobuf_UInt32Value*);
}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_stream_error_on_invalid_http_messaging(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = 0;
+}
UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_stream_error_on_invalid_http_messaging(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
}
-UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_custom_settings_parameters(const envoy_config_core_v3_Http2ProtocolOptions *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(52, 96)); }
-UPB_INLINE const envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* const* envoy_config_core_v3_Http2ProtocolOptions_custom_settings_parameters(const envoy_config_core_v3_Http2ProtocolOptions *msg, size_t *len) { return (const envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* const*)_upb_array_accessor(msg, UPB_SIZE(52, 96), len); }
-UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_override_stream_error_on_invalid_http_message(const envoy_config_core_v3_Http2ProtocolOptions *msg) { return _upb_hasbit(msg, 10); }
+UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_custom_settings_parameters(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 80));
+}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_custom_settings_parameters(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ _upb_array_detach(msg, UPB_SIZE(44, 80));
+}
+UPB_INLINE const envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* const* envoy_config_core_v3_Http2ProtocolOptions_custom_settings_parameters(const envoy_config_core_v3_Http2ProtocolOptions* msg, size_t* len) {
+ return (const envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* const*)_upb_array_accessor(msg, UPB_SIZE(44, 80), len);
+}
+UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_override_stream_error_on_invalid_http_message(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 10);
+}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_override_stream_error_on_invalid_http_message(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 88), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_core_v3_Http2ProtocolOptions_override_stream_error_on_invalid_http_message(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 88), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_connection_keepalive(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 11);
+}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_clear_connection_keepalive(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 96), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_has_connection_keepalive(const envoy_config_core_v3_Http2ProtocolOptions *msg) { return _upb_hasbit(msg, 11); }
UPB_INLINE const envoy_config_core_v3_KeepaliveSettings* envoy_config_core_v3_Http2ProtocolOptions_connection_keepalive(const envoy_config_core_v3_Http2ProtocolOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 88), const envoy_config_core_v3_KeepaliveSettings*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(52, 96), const envoy_config_core_v3_KeepaliveSettings*);
}
UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_set_hpack_table_size(envoy_config_core_v3_Http2ProtocolOptions *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_hpack_table_size(envoy_config_core_v3_Http2ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_hpack_table_size(envoy_config_core_v3_Http2ProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_Http2ProtocolOptions_hpack_table_size(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1027,7 +1314,7 @@ UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_set_max_concurrent_str
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_max_concurrent_streams(envoy_config_core_v3_Http2ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_max_concurrent_streams(envoy_config_core_v3_Http2ProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_Http2ProtocolOptions_max_concurrent_streams(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1040,7 +1327,7 @@ UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_set_initial_stream_win
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_initial_stream_window_size(envoy_config_core_v3_Http2ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_initial_stream_window_size(envoy_config_core_v3_Http2ProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_Http2ProtocolOptions_initial_stream_window_size(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1053,7 +1340,7 @@ UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_set_initial_connection
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_initial_connection_window_size(envoy_config_core_v3_Http2ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_initial_connection_window_size(envoy_config_core_v3_Http2ProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_Http2ProtocolOptions_initial_connection_window_size(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1072,7 +1359,7 @@ UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_set_max_outbound_frame
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_max_outbound_frames(envoy_config_core_v3_Http2ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_max_outbound_frames(envoy_config_core_v3_Http2ProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_Http2ProtocolOptions_max_outbound_frames(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1085,7 +1372,7 @@ UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_set_max_outbound_contr
_upb_sethas(msg, 6);
*UPB_PTR_AT(msg, UPB_SIZE(28, 48), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_max_outbound_control_frames(envoy_config_core_v3_Http2ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_max_outbound_control_frames(envoy_config_core_v3_Http2ProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_Http2ProtocolOptions_max_outbound_control_frames(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1098,7 +1385,7 @@ UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_set_max_consecutive_in
_upb_sethas(msg, 7);
*UPB_PTR_AT(msg, UPB_SIZE(32, 56), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_max_consecutive_inbound_frames_with_empty_payload(envoy_config_core_v3_Http2ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_max_consecutive_inbound_frames_with_empty_payload(envoy_config_core_v3_Http2ProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_Http2ProtocolOptions_max_consecutive_inbound_frames_with_empty_payload(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1111,7 +1398,7 @@ UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_set_max_inbound_priori
_upb_sethas(msg, 8);
*UPB_PTR_AT(msg, UPB_SIZE(36, 64), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_max_inbound_priority_frames_per_stream(envoy_config_core_v3_Http2ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_max_inbound_priority_frames_per_stream(envoy_config_core_v3_Http2ProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_Http2ProtocolOptions_max_inbound_priority_frames_per_stream(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1124,7 +1411,7 @@ UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_set_max_inbound_window
_upb_sethas(msg, 9);
*UPB_PTR_AT(msg, UPB_SIZE(40, 72), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_max_inbound_window_update_frames_per_data_frame_sent(envoy_config_core_v3_Http2ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_mutable_max_inbound_window_update_frames_per_data_frame_sent(envoy_config_core_v3_Http2ProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_Http2ProtocolOptions_max_inbound_window_update_frames_per_data_frame_sent(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1136,24 +1423,23 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2Protoco
UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_set_stream_error_on_invalid_http_messaging(envoy_config_core_v3_Http2ProtocolOptions *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = value;
}
-UPB_INLINE envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter** envoy_config_core_v3_Http2ProtocolOptions_mutable_custom_settings_parameters(envoy_config_core_v3_Http2ProtocolOptions *msg, size_t *len) {
- return (envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter**)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 96), len);
+UPB_INLINE envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter** envoy_config_core_v3_Http2ProtocolOptions_mutable_custom_settings_parameters(envoy_config_core_v3_Http2ProtocolOptions* msg, size_t* len) {
+ return (envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter**)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 80), len);
}
-UPB_INLINE envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter** envoy_config_core_v3_Http2ProtocolOptions_resize_custom_settings_parameters(envoy_config_core_v3_Http2ProtocolOptions *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 96), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter** envoy_config_core_v3_Http2ProtocolOptions_resize_custom_settings_parameters(envoy_config_core_v3_Http2ProtocolOptions* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 80), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* envoy_config_core_v3_Http2ProtocolOptions_add_custom_settings_parameters(envoy_config_core_v3_Http2ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* envoy_config_core_v3_Http2ProtocolOptions_add_custom_settings_parameters(envoy_config_core_v3_Http2ProtocolOptions* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* sub = (struct envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter*)_upb_Message_New(&envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(52, 96), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(44, 80), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_set_override_stream_error_on_invalid_http_message(envoy_config_core_v3_Http2ProtocolOptions *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 10);
- *UPB_PTR_AT(msg, UPB_SIZE(44, 80), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 88), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_Http2ProtocolOptions_mutable_override_stream_error_on_invalid_http_message(envoy_config_core_v3_Http2ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_Http2ProtocolOptions_mutable_override_stream_error_on_invalid_http_message(envoy_config_core_v3_Http2ProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_core_v3_Http2ProtocolOptions_override_stream_error_on_invalid_http_message(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -1164,9 +1450,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_Http2ProtocolO
}
UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_set_connection_keepalive(envoy_config_core_v3_Http2ProtocolOptions *msg, envoy_config_core_v3_KeepaliveSettings* value) {
_upb_sethas(msg, 11);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 88), envoy_config_core_v3_KeepaliveSettings*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 96), envoy_config_core_v3_KeepaliveSettings*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_KeepaliveSettings* envoy_config_core_v3_Http2ProtocolOptions_mutable_connection_keepalive(envoy_config_core_v3_Http2ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_KeepaliveSettings* envoy_config_core_v3_Http2ProtocolOptions_mutable_connection_keepalive(envoy_config_core_v3_Http2ProtocolOptions* msg, upb_Arena* arena) {
struct envoy_config_core_v3_KeepaliveSettings* sub = (struct envoy_config_core_v3_KeepaliveSettings*)envoy_config_core_v3_Http2ProtocolOptions_connection_keepalive(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_KeepaliveSettings*)_upb_Message_New(&envoy_config_core_v3_KeepaliveSettings_msginit, arena);
@@ -1201,17 +1487,31 @@ UPB_INLINE envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* envoy_co
return ret;
}
UPB_INLINE char* envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_serialize(const envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_serialize_ex(const envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_has_identifier(const envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_clear_identifier(const envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_has_identifier(const envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_identifier(const envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_has_value(const envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_has_value(const envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_clear_value(const envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_value(const envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_UInt32Value*);
}
@@ -1220,7 +1520,7 @@ UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_set_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_mutable_identifier(envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_mutable_identifier(envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_identifier(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1233,7 +1533,7 @@ UPB_INLINE void envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_set_
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_mutable_value(envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_mutable_value(envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_core_v3_Http2ProtocolOptions_SettingsParameter_value(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1268,13 +1568,22 @@ UPB_INLINE envoy_config_core_v3_GrpcProtocolOptions* envoy_config_core_v3_GrpcPr
return ret;
}
UPB_INLINE char* envoy_config_core_v3_GrpcProtocolOptions_serialize(const envoy_config_core_v3_GrpcProtocolOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcProtocolOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcProtocolOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_GrpcProtocolOptions_serialize_ex(const envoy_config_core_v3_GrpcProtocolOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_GrpcProtocolOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_GrpcProtocolOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_GrpcProtocolOptions_has_http2_protocol_options(const envoy_config_core_v3_GrpcProtocolOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_GrpcProtocolOptions_clear_http2_protocol_options(const envoy_config_core_v3_GrpcProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_GrpcProtocolOptions_has_http2_protocol_options(const envoy_config_core_v3_GrpcProtocolOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_core_v3_Http2ProtocolOptions* envoy_config_core_v3_GrpcProtocolOptions_http2_protocol_options(const envoy_config_core_v3_GrpcProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_core_v3_Http2ProtocolOptions*);
}
@@ -1283,7 +1592,7 @@ UPB_INLINE void envoy_config_core_v3_GrpcProtocolOptions_set_http2_protocol_opti
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_core_v3_Http2ProtocolOptions*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Http2ProtocolOptions* envoy_config_core_v3_GrpcProtocolOptions_mutable_http2_protocol_options(envoy_config_core_v3_GrpcProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Http2ProtocolOptions* envoy_config_core_v3_GrpcProtocolOptions_mutable_http2_protocol_options(envoy_config_core_v3_GrpcProtocolOptions* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Http2ProtocolOptions* sub = (struct envoy_config_core_v3_Http2ProtocolOptions*)envoy_config_core_v3_GrpcProtocolOptions_http2_protocol_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Http2ProtocolOptions*)_upb_Message_New(&envoy_config_core_v3_Http2ProtocolOptions_msginit, arena);
@@ -1318,20 +1627,37 @@ UPB_INLINE envoy_config_core_v3_Http3ProtocolOptions* envoy_config_core_v3_Http3
return ret;
}
UPB_INLINE char* envoy_config_core_v3_Http3ProtocolOptions_serialize(const envoy_config_core_v3_Http3ProtocolOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Http3ProtocolOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Http3ProtocolOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_Http3ProtocolOptions_serialize_ex(const envoy_config_core_v3_Http3ProtocolOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_Http3ProtocolOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_Http3ProtocolOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_Http3ProtocolOptions_has_quic_protocol_options(const envoy_config_core_v3_Http3ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_clear_quic_protocol_options(const envoy_config_core_v3_Http3ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_Http3ProtocolOptions_has_quic_protocol_options(const envoy_config_core_v3_Http3ProtocolOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_core_v3_QuicProtocolOptions* envoy_config_core_v3_Http3ProtocolOptions_quic_protocol_options(const envoy_config_core_v3_Http3ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_core_v3_QuicProtocolOptions*);
}
-UPB_INLINE bool envoy_config_core_v3_Http3ProtocolOptions_has_override_stream_error_on_invalid_http_message(const envoy_config_core_v3_Http3ProtocolOptions *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_Http3ProtocolOptions_has_override_stream_error_on_invalid_http_message(const envoy_config_core_v3_Http3ProtocolOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_clear_override_stream_error_on_invalid_http_message(const envoy_config_core_v3_Http3ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_core_v3_Http3ProtocolOptions_override_stream_error_on_invalid_http_message(const envoy_config_core_v3_Http3ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_BoolValue*);
}
+UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_clear_allow_extended_connect(const envoy_config_core_v3_Http3ProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_config_core_v3_Http3ProtocolOptions_allow_extended_connect(const envoy_config_core_v3_Http3ProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
@@ -1340,7 +1666,7 @@ UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_set_quic_protocol_opti
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_core_v3_QuicProtocolOptions*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_QuicProtocolOptions* envoy_config_core_v3_Http3ProtocolOptions_mutable_quic_protocol_options(envoy_config_core_v3_Http3ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_QuicProtocolOptions* envoy_config_core_v3_Http3ProtocolOptions_mutable_quic_protocol_options(envoy_config_core_v3_Http3ProtocolOptions* msg, upb_Arena* arena) {
struct envoy_config_core_v3_QuicProtocolOptions* sub = (struct envoy_config_core_v3_QuicProtocolOptions*)envoy_config_core_v3_Http3ProtocolOptions_quic_protocol_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_QuicProtocolOptions*)_upb_Message_New(&envoy_config_core_v3_QuicProtocolOptions_msginit, arena);
@@ -1353,7 +1679,7 @@ UPB_INLINE void envoy_config_core_v3_Http3ProtocolOptions_set_override_stream_er
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_Http3ProtocolOptions_mutable_override_stream_error_on_invalid_http_message(envoy_config_core_v3_Http3ProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_Http3ProtocolOptions_mutable_override_stream_error_on_invalid_http_message(envoy_config_core_v3_Http3ProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_core_v3_Http3ProtocolOptions_override_stream_error_on_invalid_http_message(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -1391,23 +1717,35 @@ UPB_INLINE envoy_config_core_v3_SchemeHeaderTransformation* envoy_config_core_v3
return ret;
}
UPB_INLINE char* envoy_config_core_v3_SchemeHeaderTransformation_serialize(const envoy_config_core_v3_SchemeHeaderTransformation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_SchemeHeaderTransformation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_SchemeHeaderTransformation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_SchemeHeaderTransformation_serialize_ex(const envoy_config_core_v3_SchemeHeaderTransformation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_SchemeHeaderTransformation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_SchemeHeaderTransformation_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_SchemeHeaderTransformation_transformation_scheme_to_overwrite = 1,
envoy_config_core_v3_SchemeHeaderTransformation_transformation_NOT_SET = 0
} envoy_config_core_v3_SchemeHeaderTransformation_transformation_oneofcases;
-UPB_INLINE envoy_config_core_v3_SchemeHeaderTransformation_transformation_oneofcases envoy_config_core_v3_SchemeHeaderTransformation_transformation_case(const envoy_config_core_v3_SchemeHeaderTransformation* msg) { return (envoy_config_core_v3_SchemeHeaderTransformation_transformation_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_SchemeHeaderTransformation_has_scheme_to_overwrite(const envoy_config_core_v3_SchemeHeaderTransformation *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE upb_StringView envoy_config_core_v3_SchemeHeaderTransformation_scheme_to_overwrite(const envoy_config_core_v3_SchemeHeaderTransformation *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, upb_StringView_FromString("")); }
+UPB_INLINE envoy_config_core_v3_SchemeHeaderTransformation_transformation_oneofcases envoy_config_core_v3_SchemeHeaderTransformation_transformation_case(const envoy_config_core_v3_SchemeHeaderTransformation* msg) {
+ return (envoy_config_core_v3_SchemeHeaderTransformation_transformation_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_SchemeHeaderTransformation_has_scheme_to_overwrite(const envoy_config_core_v3_SchemeHeaderTransformation* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_core_v3_SchemeHeaderTransformation_clear_scheme_to_overwrite(const envoy_config_core_v3_SchemeHeaderTransformation* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_core_v3_SchemeHeaderTransformation_transformation_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_SchemeHeaderTransformation_scheme_to_overwrite(const envoy_config_core_v3_SchemeHeaderTransformation* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, upb_StringView_FromString(""));
+}
UPB_INLINE void envoy_config_core_v3_SchemeHeaderTransformation_set_scheme_to_overwrite(envoy_config_core_v3_SchemeHeaderTransformation *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
extern const upb_MiniTable_File envoy_config_core_v3_protocol_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c
index ae53baca1b..00b25f1a83 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c
@@ -14,13 +14,13 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_config_core_v3_ProxyProtocolConfig__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_ProxyProtocolConfig_msginit = {
NULL,
&envoy_config_core_v3_ProxyProtocolConfig__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h
index d142b8795f..78a724a274 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h
@@ -56,11 +56,18 @@ UPB_INLINE envoy_config_core_v3_ProxyProtocolConfig* envoy_config_core_v3_ProxyP
return ret;
}
UPB_INLINE char* envoy_config_core_v3_ProxyProtocolConfig_serialize(const envoy_config_core_v3_ProxyProtocolConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_ProxyProtocolConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_ProxyProtocolConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_ProxyProtocolConfig_serialize_ex(const envoy_config_core_v3_ProxyProtocolConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_ProxyProtocolConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_ProxyProtocolConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_ProxyProtocolConfig_clear_version(const envoy_config_core_v3_ProxyProtocolConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_core_v3_ProxyProtocolConfig_version(const envoy_config_core_v3_ProxyProtocolConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c
index 242292316b..4badbdae51 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c
@@ -16,14 +16,14 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_config_core_v3_DnsResolverOptions__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_DnsResolverOptions_msginit = {
NULL,
&envoy_config_core_v3_DnsResolverOptions__fields[0],
- UPB_SIZE(8, 8), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 8), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_core_v3_DnsResolutionConfig_submsgs[2] = {
@@ -32,14 +32,14 @@ static const upb_MiniTable_Sub envoy_config_core_v3_DnsResolutionConfig_submsgs[
};
static const upb_MiniTable_Field envoy_config_core_v3_DnsResolutionConfig__fields[2] = {
- {1, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_DnsResolutionConfig_msginit = {
&envoy_config_core_v3_DnsResolutionConfig_submsgs[0],
&envoy_config_core_v3_DnsResolutionConfig__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h
index 91d2d1d966..be2da48bc1 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h
@@ -56,15 +56,25 @@ UPB_INLINE envoy_config_core_v3_DnsResolverOptions* envoy_config_core_v3_DnsReso
return ret;
}
UPB_INLINE char* envoy_config_core_v3_DnsResolverOptions_serialize(const envoy_config_core_v3_DnsResolverOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_DnsResolverOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_DnsResolverOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_DnsResolverOptions_serialize_ex(const envoy_config_core_v3_DnsResolverOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_DnsResolverOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_DnsResolverOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_core_v3_DnsResolverOptions_clear_use_tcp_for_dns_lookups(const envoy_config_core_v3_DnsResolverOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool envoy_config_core_v3_DnsResolverOptions_use_tcp_for_dns_lookups(const envoy_config_core_v3_DnsResolverOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
+UPB_INLINE void envoy_config_core_v3_DnsResolverOptions_clear_no_default_search_domain(const envoy_config_core_v3_DnsResolverOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_config_core_v3_DnsResolverOptions_no_default_search_domain(const envoy_config_core_v3_DnsResolverOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
@@ -101,37 +111,52 @@ UPB_INLINE envoy_config_core_v3_DnsResolutionConfig* envoy_config_core_v3_DnsRes
return ret;
}
UPB_INLINE char* envoy_config_core_v3_DnsResolutionConfig_serialize(const envoy_config_core_v3_DnsResolutionConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_DnsResolutionConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_DnsResolutionConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_DnsResolutionConfig_serialize_ex(const envoy_config_core_v3_DnsResolutionConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_DnsResolutionConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_DnsResolutionConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_DnsResolutionConfig_has_resolvers(const envoy_config_core_v3_DnsResolutionConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_config_core_v3_DnsResolutionConfig_clear_resolvers(const envoy_config_core_v3_DnsResolutionConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const struct envoy_config_core_v3_Address* const* envoy_config_core_v3_DnsResolutionConfig_resolvers(const envoy_config_core_v3_DnsResolutionConfig* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_Address* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool envoy_config_core_v3_DnsResolutionConfig_has_dns_resolver_options(const envoy_config_core_v3_DnsResolutionConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_DnsResolutionConfig_clear_dns_resolver_options(const envoy_config_core_v3_DnsResolutionConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_DnsResolutionConfig_has_resolvers(const envoy_config_core_v3_DnsResolutionConfig *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct envoy_config_core_v3_Address* const* envoy_config_core_v3_DnsResolutionConfig_resolvers(const envoy_config_core_v3_DnsResolutionConfig *msg, size_t *len) { return (const struct envoy_config_core_v3_Address* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
-UPB_INLINE bool envoy_config_core_v3_DnsResolutionConfig_has_dns_resolver_options(const envoy_config_core_v3_DnsResolutionConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_core_v3_DnsResolverOptions* envoy_config_core_v3_DnsResolutionConfig_dns_resolver_options(const envoy_config_core_v3_DnsResolutionConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_core_v3_DnsResolverOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const envoy_config_core_v3_DnsResolverOptions*);
}
-UPB_INLINE struct envoy_config_core_v3_Address** envoy_config_core_v3_DnsResolutionConfig_mutable_resolvers(envoy_config_core_v3_DnsResolutionConfig *msg, size_t *len) {
- return (struct envoy_config_core_v3_Address**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
+UPB_INLINE struct envoy_config_core_v3_Address** envoy_config_core_v3_DnsResolutionConfig_mutable_resolvers(envoy_config_core_v3_DnsResolutionConfig* msg, size_t* len) {
+ return (struct envoy_config_core_v3_Address**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE struct envoy_config_core_v3_Address** envoy_config_core_v3_DnsResolutionConfig_resize_resolvers(envoy_config_core_v3_DnsResolutionConfig *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_Address**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_Address** envoy_config_core_v3_DnsResolutionConfig_resize_resolvers(envoy_config_core_v3_DnsResolutionConfig* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_Address**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_core_v3_DnsResolutionConfig_add_resolvers(envoy_config_core_v3_DnsResolutionConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_core_v3_DnsResolutionConfig_add_resolvers(envoy_config_core_v3_DnsResolutionConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Address* sub = (struct envoy_config_core_v3_Address*)_upb_Message_New(&envoy_config_core_v3_Address_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_core_v3_DnsResolutionConfig_set_dns_resolver_options(envoy_config_core_v3_DnsResolutionConfig *msg, envoy_config_core_v3_DnsResolverOptions* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_core_v3_DnsResolverOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), envoy_config_core_v3_DnsResolverOptions*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DnsResolverOptions* envoy_config_core_v3_DnsResolutionConfig_mutable_dns_resolver_options(envoy_config_core_v3_DnsResolutionConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DnsResolverOptions* envoy_config_core_v3_DnsResolutionConfig_mutable_dns_resolver_options(envoy_config_core_v3_DnsResolutionConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DnsResolverOptions* sub = (struct envoy_config_core_v3_DnsResolverOptions*)envoy_config_core_v3_DnsResolutionConfig_dns_resolver_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DnsResolverOptions*)_upb_Message_New(&envoy_config_core_v3_DnsResolverOptions_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c
index dcf22f7d75..9a75321447 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c
@@ -16,18 +16,18 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_config_core_v3_SocketOption__fields[6] = {
- {1, UPB_SIZE(20, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 8), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 40), UPB_SIZE(-41, -57), 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(32, 40), UPB_SIZE(-41, -57), 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(16, 16), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(24, 40), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(32, 48), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(16, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_SocketOption_msginit = {
NULL,
&envoy_config_core_v3_SocketOption__fields[0],
- UPB_SIZE(48, 64), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(40, 56), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h
index 503e55a61f..0783d4320b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h
@@ -57,53 +57,84 @@ UPB_INLINE envoy_config_core_v3_SocketOption* envoy_config_core_v3_SocketOption_
return ret;
}
UPB_INLINE char* envoy_config_core_v3_SocketOption_serialize(const envoy_config_core_v3_SocketOption* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_SocketOption_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_SocketOption_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_SocketOption_serialize_ex(const envoy_config_core_v3_SocketOption* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_SocketOption_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_SocketOption_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_SocketOption_value_int_value = 4,
envoy_config_core_v3_SocketOption_value_buf_value = 5,
envoy_config_core_v3_SocketOption_value_NOT_SET = 0
} envoy_config_core_v3_SocketOption_value_oneofcases;
-UPB_INLINE envoy_config_core_v3_SocketOption_value_oneofcases envoy_config_core_v3_SocketOption_value_case(const envoy_config_core_v3_SocketOption* msg) { return (envoy_config_core_v3_SocketOption_value_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(40, 56), int32_t); }
-
+UPB_INLINE envoy_config_core_v3_SocketOption_value_oneofcases envoy_config_core_v3_SocketOption_value_case(const envoy_config_core_v3_SocketOption* msg) {
+ return (envoy_config_core_v3_SocketOption_value_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_core_v3_SocketOption_clear_description(const envoy_config_core_v3_SocketOption* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_SocketOption_description(const envoy_config_core_v3_SocketOption* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 24), upb_StringView);
+}
+UPB_INLINE void envoy_config_core_v3_SocketOption_clear_level(const envoy_config_core_v3_SocketOption* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), int64_t) = 0;
}
UPB_INLINE int64_t envoy_config_core_v3_SocketOption_level(const envoy_config_core_v3_SocketOption* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), int64_t);
+}
+UPB_INLINE void envoy_config_core_v3_SocketOption_clear_name(const envoy_config_core_v3_SocketOption* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 48), int64_t) = 0;
}
UPB_INLINE int64_t envoy_config_core_v3_SocketOption_name(const envoy_config_core_v3_SocketOption* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 48), int64_t);
+}
+UPB_INLINE bool envoy_config_core_v3_SocketOption_has_int_value(const envoy_config_core_v3_SocketOption* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_config_core_v3_SocketOption_clear_int_value(const envoy_config_core_v3_SocketOption* msg) {
+ UPB_WRITE_ONEOF(msg, int64_t, UPB_SIZE(16, 8), 0, UPB_SIZE(0, 0), envoy_config_core_v3_SocketOption_value_NOT_SET);
+}
+UPB_INLINE int64_t envoy_config_core_v3_SocketOption_int_value(const envoy_config_core_v3_SocketOption* msg) {
+ return UPB_READ_ONEOF(msg, int64_t, UPB_SIZE(16, 8), UPB_SIZE(0, 0), 4, _upb_Int64_FromLL(0ll));
+}
+UPB_INLINE bool envoy_config_core_v3_SocketOption_has_buf_value(const envoy_config_core_v3_SocketOption* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_config_core_v3_SocketOption_clear_buf_value(const envoy_config_core_v3_SocketOption* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(16, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_core_v3_SocketOption_value_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_SocketOption_buf_value(const envoy_config_core_v3_SocketOption* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(16, 8), UPB_SIZE(0, 0), 5, upb_StringView_FromString(""));
+}
+UPB_INLINE void envoy_config_core_v3_SocketOption_clear_state(const envoy_config_core_v3_SocketOption* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
-UPB_INLINE bool envoy_config_core_v3_SocketOption_has_int_value(const envoy_config_core_v3_SocketOption *msg) { return _upb_getoneofcase(msg, UPB_SIZE(40, 56)) == 4; }
-UPB_INLINE int64_t envoy_config_core_v3_SocketOption_int_value(const envoy_config_core_v3_SocketOption *msg) { return UPB_READ_ONEOF(msg, int64_t, UPB_SIZE(32, 40), UPB_SIZE(40, 56), 4, 0); }
-UPB_INLINE bool envoy_config_core_v3_SocketOption_has_buf_value(const envoy_config_core_v3_SocketOption *msg) { return _upb_getoneofcase(msg, UPB_SIZE(40, 56)) == 5; }
-UPB_INLINE upb_StringView envoy_config_core_v3_SocketOption_buf_value(const envoy_config_core_v3_SocketOption *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(32, 40), UPB_SIZE(40, 56), 5, upb_StringView_FromString("")); }
UPB_INLINE int32_t envoy_config_core_v3_SocketOption_state(const envoy_config_core_v3_SocketOption* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
UPB_INLINE void envoy_config_core_v3_SocketOption_set_description(envoy_config_core_v3_SocketOption *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 24), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_SocketOption_set_level(envoy_config_core_v3_SocketOption *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), int64_t) = value;
}
UPB_INLINE void envoy_config_core_v3_SocketOption_set_name(envoy_config_core_v3_SocketOption *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 48), int64_t) = value;
}
UPB_INLINE void envoy_config_core_v3_SocketOption_set_int_value(envoy_config_core_v3_SocketOption *msg, int64_t value) {
- UPB_WRITE_ONEOF(msg, int64_t, UPB_SIZE(32, 40), value, UPB_SIZE(40, 56), 4);
+ UPB_WRITE_ONEOF(msg, int64_t, UPB_SIZE(16, 8), value, UPB_SIZE(0, 0), 4);
}
UPB_INLINE void envoy_config_core_v3_SocketOption_set_buf_value(envoy_config_core_v3_SocketOption *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(32, 40), value, UPB_SIZE(40, 56), 5);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(16, 8), value, UPB_SIZE(0, 0), 5);
}
UPB_INLINE void envoy_config_core_v3_SocketOption_set_state(envoy_config_core_v3_SocketOption *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
extern const upb_MiniTable_File envoy_config_core_v3_socket_option_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c
index 99aad35238..43fcbb2ca8 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c
@@ -19,24 +19,24 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_config_core_v3_SubstitutionFormatString_submsgs[3] = {
+ {.submsg = &google_protobuf_Struct_msginit},
{.submsg = &envoy_config_core_v3_DataSource_msginit},
{.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
- {.submsg = &google_protobuf_Struct_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_SubstitutionFormatString__fields[6] = {
- {1, UPB_SIZE(16, 32), UPB_SIZE(-25, -49), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), UPB_SIZE(-25, -49), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(16, 32), UPB_SIZE(-25, -49), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(12, 24), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 40), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_SubstitutionFormatString_msginit = {
&envoy_config_core_v3_SubstitutionFormatString_submsgs[0],
&envoy_config_core_v3_SubstitutionFormatString__fields[0],
- UPB_SIZE(32, 64), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(32, 48), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h
index 142c646cc8..1a113f7003 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h
@@ -57,11 +57,15 @@ UPB_INLINE envoy_config_core_v3_SubstitutionFormatString* envoy_config_core_v3_S
return ret;
}
UPB_INLINE char* envoy_config_core_v3_SubstitutionFormatString_serialize(const envoy_config_core_v3_SubstitutionFormatString* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_SubstitutionFormatString_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_SubstitutionFormatString_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_SubstitutionFormatString_serialize_ex(const envoy_config_core_v3_SubstitutionFormatString* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_SubstitutionFormatString_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_SubstitutionFormatString_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_core_v3_SubstitutionFormatString_format_text_format = 1,
@@ -69,30 +73,65 @@ typedef enum {
envoy_config_core_v3_SubstitutionFormatString_format_text_format_source = 5,
envoy_config_core_v3_SubstitutionFormatString_format_NOT_SET = 0
} envoy_config_core_v3_SubstitutionFormatString_format_oneofcases;
-UPB_INLINE envoy_config_core_v3_SubstitutionFormatString_format_oneofcases envoy_config_core_v3_SubstitutionFormatString_format_case(const envoy_config_core_v3_SubstitutionFormatString* msg) { return (envoy_config_core_v3_SubstitutionFormatString_format_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(24, 48), int32_t); }
-
-UPB_INLINE bool envoy_config_core_v3_SubstitutionFormatString_has_text_format(const envoy_config_core_v3_SubstitutionFormatString *msg) { return _upb_getoneofcase(msg, UPB_SIZE(24, 48)) == 1; }
-UPB_INLINE upb_StringView envoy_config_core_v3_SubstitutionFormatString_text_format(const envoy_config_core_v3_SubstitutionFormatString *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(16, 32), UPB_SIZE(24, 48), 1, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_core_v3_SubstitutionFormatString_has_json_format(const envoy_config_core_v3_SubstitutionFormatString *msg) { return _upb_getoneofcase(msg, UPB_SIZE(24, 48)) == 2; }
-UPB_INLINE const struct google_protobuf_Struct* envoy_config_core_v3_SubstitutionFormatString_json_format(const envoy_config_core_v3_SubstitutionFormatString *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Struct*, UPB_SIZE(16, 32), UPB_SIZE(24, 48), 2, NULL); }
+UPB_INLINE envoy_config_core_v3_SubstitutionFormatString_format_oneofcases envoy_config_core_v3_SubstitutionFormatString_format_case(const envoy_config_core_v3_SubstitutionFormatString* msg) {
+ return (envoy_config_core_v3_SubstitutionFormatString_format_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_config_core_v3_SubstitutionFormatString_has_text_format(const envoy_config_core_v3_SubstitutionFormatString* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 1;
+}
+UPB_INLINE void envoy_config_core_v3_SubstitutionFormatString_clear_text_format(const envoy_config_core_v3_SubstitutionFormatString* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_core_v3_SubstitutionFormatString_format_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_core_v3_SubstitutionFormatString_text_format(const envoy_config_core_v3_SubstitutionFormatString* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 1, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_core_v3_SubstitutionFormatString_has_json_format(const envoy_config_core_v3_SubstitutionFormatString* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_config_core_v3_SubstitutionFormatString_clear_json_format(const envoy_config_core_v3_SubstitutionFormatString* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Struct*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_core_v3_SubstitutionFormatString_format_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Struct* envoy_config_core_v3_SubstitutionFormatString_json_format(const envoy_config_core_v3_SubstitutionFormatString* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Struct*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE void envoy_config_core_v3_SubstitutionFormatString_clear_omit_empty_values(const envoy_config_core_v3_SubstitutionFormatString* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
+}
UPB_INLINE bool envoy_config_core_v3_SubstitutionFormatString_omit_empty_values(const envoy_config_core_v3_SubstitutionFormatString* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
+UPB_INLINE void envoy_config_core_v3_SubstitutionFormatString_clear_content_type(const envoy_config_core_v3_SubstitutionFormatString* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_core_v3_SubstitutionFormatString_content_type(const envoy_config_core_v3_SubstitutionFormatString* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+}
+UPB_INLINE bool envoy_config_core_v3_SubstitutionFormatString_has_text_format_source(const envoy_config_core_v3_SubstitutionFormatString* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void envoy_config_core_v3_SubstitutionFormatString_clear_text_format_source(const envoy_config_core_v3_SubstitutionFormatString* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_DataSource*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_core_v3_SubstitutionFormatString_format_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_config_core_v3_SubstitutionFormatString_text_format_source(const envoy_config_core_v3_SubstitutionFormatString* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_DataSource*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 5, NULL);
+}
+UPB_INLINE bool envoy_config_core_v3_SubstitutionFormatString_has_formatters(const envoy_config_core_v3_SubstitutionFormatString* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 40));
+}
+UPB_INLINE void envoy_config_core_v3_SubstitutionFormatString_clear_formatters(const envoy_config_core_v3_SubstitutionFormatString* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 40));
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* const* envoy_config_core_v3_SubstitutionFormatString_formatters(const envoy_config_core_v3_SubstitutionFormatString* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_TypedExtensionConfig* const*)_upb_array_accessor(msg, UPB_SIZE(24, 40), len);
}
-UPB_INLINE bool envoy_config_core_v3_SubstitutionFormatString_has_text_format_source(const envoy_config_core_v3_SubstitutionFormatString *msg) { return _upb_getoneofcase(msg, UPB_SIZE(24, 48)) == 5; }
-UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_config_core_v3_SubstitutionFormatString_text_format_source(const envoy_config_core_v3_SubstitutionFormatString *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_DataSource*, UPB_SIZE(16, 32), UPB_SIZE(24, 48), 5, NULL); }
-UPB_INLINE bool envoy_config_core_v3_SubstitutionFormatString_has_formatters(const envoy_config_core_v3_SubstitutionFormatString *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* const* envoy_config_core_v3_SubstitutionFormatString_formatters(const envoy_config_core_v3_SubstitutionFormatString *msg, size_t *len) { return (const struct envoy_config_core_v3_TypedExtensionConfig* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len); }
UPB_INLINE void envoy_config_core_v3_SubstitutionFormatString_set_text_format(envoy_config_core_v3_SubstitutionFormatString *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(16, 32), value, UPB_SIZE(24, 48), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 1);
}
UPB_INLINE void envoy_config_core_v3_SubstitutionFormatString_set_json_format(envoy_config_core_v3_SubstitutionFormatString *msg, struct google_protobuf_Struct* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Struct*, UPB_SIZE(16, 32), value, UPB_SIZE(24, 48), 2);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Struct*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct google_protobuf_Struct* envoy_config_core_v3_SubstitutionFormatString_mutable_json_format(envoy_config_core_v3_SubstitutionFormatString *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Struct* envoy_config_core_v3_SubstitutionFormatString_mutable_json_format(envoy_config_core_v3_SubstitutionFormatString* msg, upb_Arena* arena) {
struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)envoy_config_core_v3_SubstitutionFormatString_json_format(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Struct*)_upb_Message_New(&google_protobuf_Struct_msginit, arena);
@@ -105,12 +144,12 @@ UPB_INLINE void envoy_config_core_v3_SubstitutionFormatString_set_omit_empty_val
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = value;
}
UPB_INLINE void envoy_config_core_v3_SubstitutionFormatString_set_content_type(envoy_config_core_v3_SubstitutionFormatString *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
}
UPB_INLINE void envoy_config_core_v3_SubstitutionFormatString_set_text_format_source(envoy_config_core_v3_SubstitutionFormatString *msg, struct envoy_config_core_v3_DataSource* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_DataSource*, UPB_SIZE(16, 32), value, UPB_SIZE(24, 48), 5);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_DataSource*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 5);
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_core_v3_SubstitutionFormatString_mutable_text_format_source(envoy_config_core_v3_SubstitutionFormatString *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_core_v3_SubstitutionFormatString_mutable_text_format_source(envoy_config_core_v3_SubstitutionFormatString* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_config_core_v3_SubstitutionFormatString_text_format_source(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -119,16 +158,15 @@ UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_core_v3_Substitu
}
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_core_v3_SubstitutionFormatString_mutable_formatters(envoy_config_core_v3_SubstitutionFormatString *msg, size_t *len) {
- return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_core_v3_SubstitutionFormatString_mutable_formatters(envoy_config_core_v3_SubstitutionFormatString* msg, size_t* len) {
+ return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 40), len);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_core_v3_SubstitutionFormatString_resize_formatters(envoy_config_core_v3_SubstitutionFormatString *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_core_v3_SubstitutionFormatString_resize_formatters(envoy_config_core_v3_SubstitutionFormatString* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_core_v3_SubstitutionFormatString_add_formatters(envoy_config_core_v3_SubstitutionFormatString *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_core_v3_SubstitutionFormatString_add_formatters(envoy_config_core_v3_SubstitutionFormatString* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c
index 4f42f8134f..9af56d37e1 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c
@@ -16,19 +16,19 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_config_core_v3_UdpSocketConfig_submsgs[2] = {
- {.submsg = &google_protobuf_BoolValue_msginit},
{.submsg = &google_protobuf_UInt64Value_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
};
static const upb_MiniTable_Field envoy_config_core_v3_UdpSocketConfig__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_core_v3_UdpSocketConfig_msginit = {
&envoy_config_core_v3_UdpSocketConfig_submsgs[0],
&envoy_config_core_v3_UdpSocketConfig__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h
index e57d906e02..d161b4f9f2 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h
@@ -55,17 +55,31 @@ UPB_INLINE envoy_config_core_v3_UdpSocketConfig* envoy_config_core_v3_UdpSocketC
return ret;
}
UPB_INLINE char* envoy_config_core_v3_UdpSocketConfig_serialize(const envoy_config_core_v3_UdpSocketConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_UdpSocketConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_UdpSocketConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_core_v3_UdpSocketConfig_serialize_ex(const envoy_config_core_v3_UdpSocketConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_core_v3_UdpSocketConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_core_v3_UdpSocketConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_core_v3_UdpSocketConfig_has_max_rx_datagram_size(const envoy_config_core_v3_UdpSocketConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_core_v3_UdpSocketConfig_clear_max_rx_datagram_size(const envoy_config_core_v3_UdpSocketConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_core_v3_UdpSocketConfig_has_max_rx_datagram_size(const envoy_config_core_v3_UdpSocketConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt64Value* envoy_config_core_v3_UdpSocketConfig_max_rx_datagram_size(const envoy_config_core_v3_UdpSocketConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt64Value*);
}
-UPB_INLINE bool envoy_config_core_v3_UdpSocketConfig_has_prefer_gro(const envoy_config_core_v3_UdpSocketConfig *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_core_v3_UdpSocketConfig_has_prefer_gro(const envoy_config_core_v3_UdpSocketConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_core_v3_UdpSocketConfig_clear_prefer_gro(const envoy_config_core_v3_UdpSocketConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_core_v3_UdpSocketConfig_prefer_gro(const envoy_config_core_v3_UdpSocketConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_BoolValue*);
}
@@ -74,7 +88,7 @@ UPB_INLINE void envoy_config_core_v3_UdpSocketConfig_set_max_rx_datagram_size(en
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt64Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_core_v3_UdpSocketConfig_mutable_max_rx_datagram_size(envoy_config_core_v3_UdpSocketConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_core_v3_UdpSocketConfig_mutable_max_rx_datagram_size(envoy_config_core_v3_UdpSocketConfig* msg, upb_Arena* arena) {
struct google_protobuf_UInt64Value* sub = (struct google_protobuf_UInt64Value*)envoy_config_core_v3_UdpSocketConfig_max_rx_datagram_size(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt64Value*)_upb_Message_New(&google_protobuf_UInt64Value_msginit, arena);
@@ -87,7 +101,7 @@ UPB_INLINE void envoy_config_core_v3_UdpSocketConfig_set_prefer_gro(envoy_config
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_UdpSocketConfig_mutable_prefer_gro(envoy_config_core_v3_UdpSocketConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_core_v3_UdpSocketConfig_mutable_prefer_gro(envoy_config_core_v3_UdpSocketConfig* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_core_v3_UdpSocketConfig_prefer_gro(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c
index 7ceb608648..edf8a51957 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c
@@ -20,40 +20,40 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_config_endpoint_v3_ClusterLoadAssignment_submsgs[3] = {
- {.submsg = &envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry_msginit},
- {.submsg = &envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_msginit},
{.submsg = &envoy_config_endpoint_v3_LocalityLbEndpoints_msginit},
+ {.submsg = &envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_msginit},
+ {.submsg = &envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry_msginit},
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_ClusterLoadAssignment__fields[4] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 40), 0, 0, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 40), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_ClusterLoadAssignment_msginit = {
&envoy_config_endpoint_v3_ClusterLoadAssignment_submsgs[0],
&envoy_config_endpoint_v3_ClusterLoadAssignment__fields[0],
- UPB_SIZE(24, 48), 4, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(24, 48), 4, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_submsgs[3] = {
{.submsg = &envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_msginit},
- {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_ClusterLoadAssignment_Policy__fields[3] = {
- {2, UPB_SIZE(12, 24), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 16), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 24), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_msginit = {
&envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_submsgs[0],
&envoy_config_endpoint_v3_ClusterLoadAssignment_Policy__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_submsgs[1] = {
@@ -61,14 +61,14 @@ static const upb_MiniTable_Sub envoy_config_endpoint_v3_ClusterLoadAssignment_Po
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_msginit = {
&envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_submsgs[0],
&envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry_submsgs[1] = {
@@ -76,14 +76,14 @@ static const upb_MiniTable_Sub envoy_config_endpoint_v3_ClusterLoadAssignment_Na
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry_msginit = {
&envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry_submsgs[0],
&envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[4] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h
index b62cf65082..2fecd56c75 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h
@@ -70,47 +70,76 @@ UPB_INLINE envoy_config_endpoint_v3_ClusterLoadAssignment* envoy_config_endpoint
return ret;
}
UPB_INLINE char* envoy_config_endpoint_v3_ClusterLoadAssignment_serialize(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_ClusterLoadAssignment_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_ClusterLoadAssignment_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_endpoint_v3_ClusterLoadAssignment_serialize_ex(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_ClusterLoadAssignment_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_ClusterLoadAssignment_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_clear_cluster_name(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_endpoint_v3_ClusterLoadAssignment_cluster_name(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_has_endpoints(const envoy_config_endpoint_v3_ClusterLoadAssignment *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const struct envoy_config_endpoint_v3_LocalityLbEndpoints* const* envoy_config_endpoint_v3_ClusterLoadAssignment_endpoints(const envoy_config_endpoint_v3_ClusterLoadAssignment *msg, size_t *len) { return (const struct envoy_config_endpoint_v3_LocalityLbEndpoints* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
-UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_has_policy(const envoy_config_endpoint_v3_ClusterLoadAssignment *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_has_endpoints(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_clear_endpoints(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const struct envoy_config_endpoint_v3_LocalityLbEndpoints* const* envoy_config_endpoint_v3_ClusterLoadAssignment_endpoints(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg, size_t* len) {
+ return (const struct envoy_config_endpoint_v3_LocalityLbEndpoints* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_has_policy(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_clear_policy(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* envoy_config_endpoint_v3_ClusterLoadAssignment_policy(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy*);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_has_named_endpoints(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_clear_named_endpoints(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE size_t envoy_config_endpoint_v3_ClusterLoadAssignment_named_endpoints_size(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_named_endpoints_get(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg, upb_StringView key, struct envoy_config_endpoint_v3_Endpoint** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(20, 40), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry* envoy_config_endpoint_v3_ClusterLoadAssignment_named_endpoints_next(const envoy_config_endpoint_v3_ClusterLoadAssignment* msg, size_t* iter) {
+ return (const envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry*)_upb_msg_map_next(msg, UPB_SIZE(20, 40), iter);
}
-UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_has_named_endpoints(const envoy_config_endpoint_v3_ClusterLoadAssignment *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE size_t envoy_config_endpoint_v3_ClusterLoadAssignment_named_endpoints_size(const envoy_config_endpoint_v3_ClusterLoadAssignment *msg) {return _upb_msg_map_size(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_named_endpoints_get(const envoy_config_endpoint_v3_ClusterLoadAssignment *msg, upb_StringView key, struct envoy_config_endpoint_v3_Endpoint* *val) { return _upb_msg_map_get(msg, UPB_SIZE(20, 40), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry* envoy_config_endpoint_v3_ClusterLoadAssignment_named_endpoints_next(const envoy_config_endpoint_v3_ClusterLoadAssignment *msg, size_t* iter) { return (const envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry*)_upb_msg_map_next(msg, UPB_SIZE(20, 40), iter); }
UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_set_cluster_name(envoy_config_endpoint_v3_ClusterLoadAssignment *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE struct envoy_config_endpoint_v3_LocalityLbEndpoints** envoy_config_endpoint_v3_ClusterLoadAssignment_mutable_endpoints(envoy_config_endpoint_v3_ClusterLoadAssignment *msg, size_t *len) {
- return (struct envoy_config_endpoint_v3_LocalityLbEndpoints**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
+UPB_INLINE struct envoy_config_endpoint_v3_LocalityLbEndpoints** envoy_config_endpoint_v3_ClusterLoadAssignment_mutable_endpoints(envoy_config_endpoint_v3_ClusterLoadAssignment* msg, size_t* len) {
+ return (struct envoy_config_endpoint_v3_LocalityLbEndpoints**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE struct envoy_config_endpoint_v3_LocalityLbEndpoints** envoy_config_endpoint_v3_ClusterLoadAssignment_resize_endpoints(envoy_config_endpoint_v3_ClusterLoadAssignment *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_endpoint_v3_LocalityLbEndpoints**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_endpoint_v3_LocalityLbEndpoints** envoy_config_endpoint_v3_ClusterLoadAssignment_resize_endpoints(envoy_config_endpoint_v3_ClusterLoadAssignment* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_endpoint_v3_LocalityLbEndpoints**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_endpoint_v3_LocalityLbEndpoints* envoy_config_endpoint_v3_ClusterLoadAssignment_add_endpoints(envoy_config_endpoint_v3_ClusterLoadAssignment *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_LocalityLbEndpoints* envoy_config_endpoint_v3_ClusterLoadAssignment_add_endpoints(envoy_config_endpoint_v3_ClusterLoadAssignment* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_LocalityLbEndpoints* sub = (struct envoy_config_endpoint_v3_LocalityLbEndpoints*)_upb_Message_New(&envoy_config_endpoint_v3_LocalityLbEndpoints_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_set_policy(envoy_config_endpoint_v3_ClusterLoadAssignment *msg, envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_config_endpoint_v3_ClusterLoadAssignment_Policy*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), envoy_config_endpoint_v3_ClusterLoadAssignment_Policy*) = value;
}
-UPB_INLINE struct envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* envoy_config_endpoint_v3_ClusterLoadAssignment_mutable_policy(envoy_config_endpoint_v3_ClusterLoadAssignment *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* envoy_config_endpoint_v3_ClusterLoadAssignment_mutable_policy(envoy_config_endpoint_v3_ClusterLoadAssignment* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* sub = (struct envoy_config_endpoint_v3_ClusterLoadAssignment_Policy*)envoy_config_endpoint_v3_ClusterLoadAssignment_policy(msg);
if (sub == NULL) {
sub = (struct envoy_config_endpoint_v3_ClusterLoadAssignment_Policy*)_upb_Message_New(&envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_msginit, arena);
@@ -119,10 +148,16 @@ UPB_INLINE struct envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* envoy_c
}
return sub;
}
-UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_named_endpoints_clear(envoy_config_endpoint_v3_ClusterLoadAssignment *msg) { _upb_msg_map_clear(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_named_endpoints_set(envoy_config_endpoint_v3_ClusterLoadAssignment *msg, upb_StringView key, struct envoy_config_endpoint_v3_Endpoint* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(20, 40), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_named_endpoints_delete(envoy_config_endpoint_v3_ClusterLoadAssignment *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(20, 40), &key, 0); }
-UPB_INLINE envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry* envoy_config_endpoint_v3_ClusterLoadAssignment_named_endpoints_nextmutable(envoy_config_endpoint_v3_ClusterLoadAssignment *msg, size_t* iter) { return (envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry*)_upb_msg_map_next(msg, UPB_SIZE(20, 40), iter); }
+UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_named_endpoints_clear(envoy_config_endpoint_v3_ClusterLoadAssignment* msg) { _upb_msg_map_clear(msg, UPB_SIZE(20, 40)); }
+UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_named_endpoints_set(envoy_config_endpoint_v3_ClusterLoadAssignment* msg, upb_StringView key, struct envoy_config_endpoint_v3_Endpoint* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(20, 40), &key, 0, &val, sizeof(val), a);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_named_endpoints_delete(envoy_config_endpoint_v3_ClusterLoadAssignment* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(20, 40), &key, 0);
+}
+UPB_INLINE envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry* envoy_config_endpoint_v3_ClusterLoadAssignment_named_endpoints_nextmutable(envoy_config_endpoint_v3_ClusterLoadAssignment* msg, size_t* iter) {
+ return (envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry*)_upb_msg_map_next(msg, UPB_SIZE(20, 40), iter);
+}
/* envoy.config.endpoint.v3.ClusterLoadAssignment.Policy */
@@ -149,41 +184,61 @@ UPB_INLINE envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* envoy_config_e
return ret;
}
UPB_INLINE char* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_serialize(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_serialize_ex(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_has_drop_overloads(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_clear_drop_overloads(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* const* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_drop_overloads(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg, size_t* len) {
+ return (const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_has_overprovisioning_factor(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_clear_overprovisioning_factor(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_has_drop_overloads(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* const* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_drop_overloads(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy *msg, size_t *len) { return (const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len); }
-UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_has_overprovisioning_factor(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_overprovisioning_factor(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_has_endpoint_stale_after(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_clear_endpoint_stale_after(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_has_endpoint_stale_after(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_endpoint_stale_after(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Duration*);
}
-UPB_INLINE envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload** envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_mutable_drop_overloads(envoy_config_endpoint_v3_ClusterLoadAssignment_Policy *msg, size_t *len) {
- return (envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
+UPB_INLINE envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload** envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_mutable_drop_overloads(envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg, size_t* len) {
+ return (envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload** envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_resize_drop_overloads(envoy_config_endpoint_v3_ClusterLoadAssignment_Policy *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload** envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_resize_drop_overloads(envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_add_drop_overloads(envoy_config_endpoint_v3_ClusterLoadAssignment_Policy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_add_drop_overloads(envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* sub = (struct envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload*)_upb_Message_New(&envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_set_overprovisioning_factor(envoy_config_endpoint_v3_ClusterLoadAssignment_Policy *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_mutable_overprovisioning_factor(envoy_config_endpoint_v3_ClusterLoadAssignment_Policy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_mutable_overprovisioning_factor(envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_overprovisioning_factor(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -194,9 +249,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_ClusterL
}
UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_set_endpoint_stale_after(envoy_config_endpoint_v3_ClusterLoadAssignment_Policy *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_mutable_endpoint_stale_after(envoy_config_endpoint_v3_ClusterLoadAssignment_Policy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_mutable_endpoint_stale_after(envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_endpoint_stale_after(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -231,16 +286,28 @@ UPB_INLINE envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* e
return ret;
}
UPB_INLINE char* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_serialize(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_serialize_ex(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_clear_category(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_category(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_has_drop_percentage(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_has_drop_percentage(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_clear_drop_percentage(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_FractionalPercent* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_drop_percentage(const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_type_v3_FractionalPercent*);
}
@@ -252,7 +319,7 @@ UPB_INLINE void envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverlo
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_type_v3_FractionalPercent*) = value;
}
-UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_mutable_drop_percentage(envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_mutable_drop_percentage(envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* msg, upb_Arena* arena) {
struct envoy_type_v3_FractionalPercent* sub = (struct envoy_type_v3_FractionalPercent*)envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_drop_percentage(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_FractionalPercent*)_upb_Message_New(&envoy_type_v3_FractionalPercent_msginit, arena);
@@ -264,13 +331,15 @@ UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_endpoint_v3_Clus
/* envoy.config.endpoint.v3.ClusterLoadAssignment.NamedEndpointsEntry */
-UPB_INLINE upb_StringView envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry_key(const envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry *msg) {
+UPB_INLINE upb_StringView envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry_key(const envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry_has_value(const envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct envoy_config_endpoint_v3_Endpoint* envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry_value(const envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry *msg) {
+UPB_INLINE bool envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry_has_value(const envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const struct envoy_config_endpoint_v3_Endpoint* envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry_value(const envoy_config_endpoint_v3_ClusterLoadAssignment_NamedEndpointsEntry* msg) {
struct envoy_config_endpoint_v3_Endpoint* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c
index 70504ccfc4..7f55334ea8 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c
@@ -26,46 +26,46 @@ static const upb_MiniTable_Sub envoy_config_endpoint_v3_Endpoint_submsgs[2] = {
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_Endpoint__fields[3] = {
- {1, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_Endpoint_msginit = {
&envoy_config_endpoint_v3_Endpoint_submsgs[0],
&envoy_config_endpoint_v3_Endpoint__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_Endpoint_HealthCheckConfig__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_Endpoint_HealthCheckConfig_msginit = {
NULL,
&envoy_config_endpoint_v3_Endpoint_HealthCheckConfig__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_endpoint_v3_LbEndpoint_submsgs[3] = {
- {.submsg = &envoy_config_core_v3_Metadata_msginit},
{.submsg = &envoy_config_endpoint_v3_Endpoint_msginit},
+ {.submsg = &envoy_config_core_v3_Metadata_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_LbEndpoint__fields[5] = {
- {1, UPB_SIZE(16, 24), UPB_SIZE(-25, -41), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 16), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(16, 24), UPB_SIZE(-25, -41), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 16), UPB_SIZE(-9, -9), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 32), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 40), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(12, 16), UPB_SIZE(-9, -9), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_LbEndpoint_msginit = {
&envoy_config_endpoint_v3_LbEndpoint_submsgs[0],
&envoy_config_endpoint_v3_LbEndpoint__fields[0],
- UPB_SIZE(32, 48), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(32, 48), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_endpoint_v3_LedsClusterLocalityConfig_submsgs[1] = {
@@ -73,38 +73,39 @@ static const upb_MiniTable_Sub envoy_config_endpoint_v3_LedsClusterLocalityConfi
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_LedsClusterLocalityConfig__fields[2] = {
- {1, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_LedsClusterLocalityConfig_msginit = {
&envoy_config_endpoint_v3_LedsClusterLocalityConfig_submsgs[0],
&envoy_config_endpoint_v3_LedsClusterLocalityConfig__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_endpoint_v3_LocalityLbEndpoints_submsgs[5] = {
+static const upb_MiniTable_Sub envoy_config_endpoint_v3_LocalityLbEndpoints_submsgs[6] = {
{.submsg = &envoy_config_core_v3_Locality_msginit},
{.submsg = &envoy_config_endpoint_v3_LbEndpoint_msginit},
- {.submsg = &envoy_config_endpoint_v3_LedsClusterLocalityConfig_msginit},
- {.submsg = &envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_msginit},
+ {.submsg = &envoy_config_endpoint_v3_LedsClusterLocalityConfig_msginit},
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_LocalityLbEndpoints__fields[7] = {
- {1, UPB_SIZE(8, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(20, 32), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 16), 2, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(4, 4), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(16, 24), 3, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(24, 40), UPB_SIZE(-29, -49), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(24, 40), UPB_SIZE(-29, -49), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 16), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 32), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 40), UPB_SIZE(3, 3), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(28, 48), UPB_SIZE(-9, -9), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(28, 48), UPB_SIZE(-9, -9), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_LocalityLbEndpoints_msginit = {
&envoy_config_endpoint_v3_LocalityLbEndpoints_submsgs[0],
&envoy_config_endpoint_v3_LocalityLbEndpoints__fields[0],
- UPB_SIZE(32, 56), 7, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(32, 56), 7, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_submsgs[1] = {
@@ -112,13 +113,13 @@ static const upb_MiniTable_Sub envoy_config_endpoint_v3_LocalityLbEndpoints_LbEn
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_msginit = {
&envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_submsgs[0],
&envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[6] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h
index 38ea6172fd..e5a275f10b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h
@@ -76,29 +76,46 @@ UPB_INLINE envoy_config_endpoint_v3_Endpoint* envoy_config_endpoint_v3_Endpoint_
return ret;
}
UPB_INLINE char* envoy_config_endpoint_v3_Endpoint_serialize(const envoy_config_endpoint_v3_Endpoint* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_Endpoint_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_Endpoint_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_endpoint_v3_Endpoint_serialize_ex(const envoy_config_endpoint_v3_Endpoint* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_Endpoint_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_Endpoint_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_endpoint_v3_Endpoint_has_address(const envoy_config_endpoint_v3_Endpoint* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_endpoint_v3_Endpoint_clear_address(const envoy_config_endpoint_v3_Endpoint* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_endpoint_v3_Endpoint_has_address(const envoy_config_endpoint_v3_Endpoint *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_Address* envoy_config_endpoint_v3_Endpoint_address(const envoy_config_endpoint_v3_Endpoint* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_Address*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_Address*);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_Endpoint_has_health_check_config(const envoy_config_endpoint_v3_Endpoint* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_endpoint_v3_Endpoint_clear_health_check_config(const envoy_config_endpoint_v3_Endpoint* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_endpoint_v3_Endpoint_has_health_check_config(const envoy_config_endpoint_v3_Endpoint *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const envoy_config_endpoint_v3_Endpoint_HealthCheckConfig* envoy_config_endpoint_v3_Endpoint_health_check_config(const envoy_config_endpoint_v3_Endpoint* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const envoy_config_endpoint_v3_Endpoint_HealthCheckConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const envoy_config_endpoint_v3_Endpoint_HealthCheckConfig*);
+}
+UPB_INLINE void envoy_config_endpoint_v3_Endpoint_clear_hostname(const envoy_config_endpoint_v3_Endpoint* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_endpoint_v3_Endpoint_hostname(const envoy_config_endpoint_v3_Endpoint* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
UPB_INLINE void envoy_config_endpoint_v3_Endpoint_set_address(envoy_config_endpoint_v3_Endpoint *msg, struct envoy_config_core_v3_Address* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_Address*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_Address*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_endpoint_v3_Endpoint_mutable_address(envoy_config_endpoint_v3_Endpoint *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_endpoint_v3_Endpoint_mutable_address(envoy_config_endpoint_v3_Endpoint* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Address* sub = (struct envoy_config_core_v3_Address*)envoy_config_endpoint_v3_Endpoint_address(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Address*)_upb_Message_New(&envoy_config_core_v3_Address_msginit, arena);
@@ -109,9 +126,9 @@ UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_endpoint_v3_Endpoin
}
UPB_INLINE void envoy_config_endpoint_v3_Endpoint_set_health_check_config(envoy_config_endpoint_v3_Endpoint *msg, envoy_config_endpoint_v3_Endpoint_HealthCheckConfig* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 32), envoy_config_endpoint_v3_Endpoint_HealthCheckConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), envoy_config_endpoint_v3_Endpoint_HealthCheckConfig*) = value;
}
-UPB_INLINE struct envoy_config_endpoint_v3_Endpoint_HealthCheckConfig* envoy_config_endpoint_v3_Endpoint_mutable_health_check_config(envoy_config_endpoint_v3_Endpoint *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_Endpoint_HealthCheckConfig* envoy_config_endpoint_v3_Endpoint_mutable_health_check_config(envoy_config_endpoint_v3_Endpoint* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_Endpoint_HealthCheckConfig* sub = (struct envoy_config_endpoint_v3_Endpoint_HealthCheckConfig*)envoy_config_endpoint_v3_Endpoint_health_check_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_endpoint_v3_Endpoint_HealthCheckConfig*)_upb_Message_New(&envoy_config_endpoint_v3_Endpoint_HealthCheckConfig_msginit, arena);
@@ -121,7 +138,7 @@ UPB_INLINE struct envoy_config_endpoint_v3_Endpoint_HealthCheckConfig* envoy_con
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_Endpoint_set_hostname(envoy_config_endpoint_v3_Endpoint *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
}
/* envoy.config.endpoint.v3.Endpoint.HealthCheckConfig */
@@ -149,15 +166,25 @@ UPB_INLINE envoy_config_endpoint_v3_Endpoint_HealthCheckConfig* envoy_config_end
return ret;
}
UPB_INLINE char* envoy_config_endpoint_v3_Endpoint_HealthCheckConfig_serialize(const envoy_config_endpoint_v3_Endpoint_HealthCheckConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_Endpoint_HealthCheckConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_Endpoint_HealthCheckConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_endpoint_v3_Endpoint_HealthCheckConfig_serialize_ex(const envoy_config_endpoint_v3_Endpoint_HealthCheckConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_Endpoint_HealthCheckConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_Endpoint_HealthCheckConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_endpoint_v3_Endpoint_HealthCheckConfig_clear_port_value(const envoy_config_endpoint_v3_Endpoint_HealthCheckConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_config_endpoint_v3_Endpoint_HealthCheckConfig_port_value(const envoy_config_endpoint_v3_Endpoint_HealthCheckConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t);
}
+UPB_INLINE void envoy_config_endpoint_v3_Endpoint_HealthCheckConfig_clear_hostname(const envoy_config_endpoint_v3_Endpoint_HealthCheckConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_endpoint_v3_Endpoint_HealthCheckConfig_hostname(const envoy_config_endpoint_v3_Endpoint_HealthCheckConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
@@ -194,39 +221,71 @@ UPB_INLINE envoy_config_endpoint_v3_LbEndpoint* envoy_config_endpoint_v3_LbEndpo
return ret;
}
UPB_INLINE char* envoy_config_endpoint_v3_LbEndpoint_serialize(const envoy_config_endpoint_v3_LbEndpoint* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_LbEndpoint_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_LbEndpoint_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_endpoint_v3_LbEndpoint_serialize_ex(const envoy_config_endpoint_v3_LbEndpoint* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_LbEndpoint_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_LbEndpoint_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_endpoint_v3_LbEndpoint_host_identifier_endpoint = 1,
envoy_config_endpoint_v3_LbEndpoint_host_identifier_endpoint_name = 5,
envoy_config_endpoint_v3_LbEndpoint_host_identifier_NOT_SET = 0
} envoy_config_endpoint_v3_LbEndpoint_host_identifier_oneofcases;
-UPB_INLINE envoy_config_endpoint_v3_LbEndpoint_host_identifier_oneofcases envoy_config_endpoint_v3_LbEndpoint_host_identifier_case(const envoy_config_endpoint_v3_LbEndpoint* msg) { return (envoy_config_endpoint_v3_LbEndpoint_host_identifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(24, 40), int32_t); }
-
-UPB_INLINE bool envoy_config_endpoint_v3_LbEndpoint_has_endpoint(const envoy_config_endpoint_v3_LbEndpoint *msg) { return _upb_getoneofcase(msg, UPB_SIZE(24, 40)) == 1; }
-UPB_INLINE const envoy_config_endpoint_v3_Endpoint* envoy_config_endpoint_v3_LbEndpoint_endpoint(const envoy_config_endpoint_v3_LbEndpoint *msg) { return UPB_READ_ONEOF(msg, const envoy_config_endpoint_v3_Endpoint*, UPB_SIZE(16, 24), UPB_SIZE(24, 40), 1, NULL); }
+UPB_INLINE envoy_config_endpoint_v3_LbEndpoint_host_identifier_oneofcases envoy_config_endpoint_v3_LbEndpoint_host_identifier_case(const envoy_config_endpoint_v3_LbEndpoint* msg) {
+ return (envoy_config_endpoint_v3_LbEndpoint_host_identifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_LbEndpoint_has_endpoint(const envoy_config_endpoint_v3_LbEndpoint* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(8, 8)) == 1;
+}
+UPB_INLINE void envoy_config_endpoint_v3_LbEndpoint_clear_endpoint(const envoy_config_endpoint_v3_LbEndpoint* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_endpoint_v3_Endpoint*, UPB_SIZE(12, 16), 0, UPB_SIZE(8, 8), envoy_config_endpoint_v3_LbEndpoint_host_identifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_endpoint_v3_Endpoint* envoy_config_endpoint_v3_LbEndpoint_endpoint(const envoy_config_endpoint_v3_LbEndpoint* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_endpoint_v3_Endpoint*, UPB_SIZE(12, 16), UPB_SIZE(8, 8), 1, NULL);
+}
+UPB_INLINE void envoy_config_endpoint_v3_LbEndpoint_clear_health_status(const envoy_config_endpoint_v3_LbEndpoint* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_config_endpoint_v3_LbEndpoint_health_status(const envoy_config_endpoint_v3_LbEndpoint* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_config_endpoint_v3_LbEndpoint_has_metadata(const envoy_config_endpoint_v3_LbEndpoint *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_endpoint_v3_LbEndpoint_has_metadata(const envoy_config_endpoint_v3_LbEndpoint* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_endpoint_v3_LbEndpoint_clear_metadata(const envoy_config_endpoint_v3_LbEndpoint* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_Metadata* envoy_config_endpoint_v3_LbEndpoint_metadata(const envoy_config_endpoint_v3_LbEndpoint* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct envoy_config_core_v3_Metadata*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct envoy_config_core_v3_Metadata*);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_LbEndpoint_has_load_balancing_weight(const envoy_config_endpoint_v3_LbEndpoint* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_endpoint_v3_LbEndpoint_clear_load_balancing_weight(const envoy_config_endpoint_v3_LbEndpoint* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_endpoint_v3_LbEndpoint_has_load_balancing_weight(const envoy_config_endpoint_v3_LbEndpoint *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_LbEndpoint_load_balancing_weight(const envoy_config_endpoint_v3_LbEndpoint* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_LbEndpoint_has_endpoint_name(const envoy_config_endpoint_v3_LbEndpoint* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(8, 8)) == 5;
+}
+UPB_INLINE void envoy_config_endpoint_v3_LbEndpoint_clear_endpoint_name(const envoy_config_endpoint_v3_LbEndpoint* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(8, 8), envoy_config_endpoint_v3_LbEndpoint_host_identifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_endpoint_v3_LbEndpoint_endpoint_name(const envoy_config_endpoint_v3_LbEndpoint* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), UPB_SIZE(8, 8), 5, upb_StringView_FromString(""));
}
-UPB_INLINE bool envoy_config_endpoint_v3_LbEndpoint_has_endpoint_name(const envoy_config_endpoint_v3_LbEndpoint *msg) { return _upb_getoneofcase(msg, UPB_SIZE(24, 40)) == 5; }
-UPB_INLINE upb_StringView envoy_config_endpoint_v3_LbEndpoint_endpoint_name(const envoy_config_endpoint_v3_LbEndpoint *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(16, 24), UPB_SIZE(24, 40), 5, upb_StringView_FromString("")); }
UPB_INLINE void envoy_config_endpoint_v3_LbEndpoint_set_endpoint(envoy_config_endpoint_v3_LbEndpoint *msg, envoy_config_endpoint_v3_Endpoint* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_endpoint_v3_Endpoint*, UPB_SIZE(16, 24), value, UPB_SIZE(24, 40), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_endpoint_v3_Endpoint*, UPB_SIZE(12, 16), value, UPB_SIZE(8, 8), 1);
}
-UPB_INLINE struct envoy_config_endpoint_v3_Endpoint* envoy_config_endpoint_v3_LbEndpoint_mutable_endpoint(envoy_config_endpoint_v3_LbEndpoint *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_Endpoint* envoy_config_endpoint_v3_LbEndpoint_mutable_endpoint(envoy_config_endpoint_v3_LbEndpoint* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_Endpoint* sub = (struct envoy_config_endpoint_v3_Endpoint*)envoy_config_endpoint_v3_LbEndpoint_endpoint(msg);
if (sub == NULL) {
sub = (struct envoy_config_endpoint_v3_Endpoint*)_upb_Message_New(&envoy_config_endpoint_v3_Endpoint_msginit, arena);
@@ -240,9 +299,9 @@ UPB_INLINE void envoy_config_endpoint_v3_LbEndpoint_set_health_status(envoy_conf
}
UPB_INLINE void envoy_config_endpoint_v3_LbEndpoint_set_metadata(envoy_config_endpoint_v3_LbEndpoint *msg, struct envoy_config_core_v3_Metadata* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct envoy_config_core_v3_Metadata*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct envoy_config_core_v3_Metadata*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_endpoint_v3_LbEndpoint_mutable_metadata(envoy_config_endpoint_v3_LbEndpoint *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_endpoint_v3_LbEndpoint_mutable_metadata(envoy_config_endpoint_v3_LbEndpoint* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Metadata* sub = (struct envoy_config_core_v3_Metadata*)envoy_config_endpoint_v3_LbEndpoint_metadata(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Metadata*)_upb_Message_New(&envoy_config_core_v3_Metadata_msginit, arena);
@@ -253,9 +312,9 @@ UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_endpoint_v3_LbEndp
}
UPB_INLINE void envoy_config_endpoint_v3_LbEndpoint_set_load_balancing_weight(envoy_config_endpoint_v3_LbEndpoint *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_LbEndpoint_mutable_load_balancing_weight(envoy_config_endpoint_v3_LbEndpoint *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_LbEndpoint_mutable_load_balancing_weight(envoy_config_endpoint_v3_LbEndpoint* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_endpoint_v3_LbEndpoint_load_balancing_weight(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -265,7 +324,7 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_LbEndpoi
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_LbEndpoint_set_endpoint_name(envoy_config_endpoint_v3_LbEndpoint *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(16, 24), value, UPB_SIZE(24, 40), 5);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), value, UPB_SIZE(8, 8), 5);
}
/* envoy.config.endpoint.v3.LedsClusterLocalityConfig */
@@ -293,25 +352,37 @@ UPB_INLINE envoy_config_endpoint_v3_LedsClusterLocalityConfig* envoy_config_endp
return ret;
}
UPB_INLINE char* envoy_config_endpoint_v3_LedsClusterLocalityConfig_serialize(const envoy_config_endpoint_v3_LedsClusterLocalityConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_LedsClusterLocalityConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_LedsClusterLocalityConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_endpoint_v3_LedsClusterLocalityConfig_serialize_ex(const envoy_config_endpoint_v3_LedsClusterLocalityConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_LedsClusterLocalityConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_LedsClusterLocalityConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_endpoint_v3_LedsClusterLocalityConfig_has_leds_config(const envoy_config_endpoint_v3_LedsClusterLocalityConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_endpoint_v3_LedsClusterLocalityConfig_clear_leds_config(const envoy_config_endpoint_v3_LedsClusterLocalityConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_endpoint_v3_LedsClusterLocalityConfig_has_leds_config(const envoy_config_endpoint_v3_LedsClusterLocalityConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_config_endpoint_v3_LedsClusterLocalityConfig_leds_config(const envoy_config_endpoint_v3_LedsClusterLocalityConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_ConfigSource*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_ConfigSource*);
+}
+UPB_INLINE void envoy_config_endpoint_v3_LedsClusterLocalityConfig_clear_leds_collection_name(const envoy_config_endpoint_v3_LedsClusterLocalityConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_endpoint_v3_LedsClusterLocalityConfig_leds_collection_name(const envoy_config_endpoint_v3_LedsClusterLocalityConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
UPB_INLINE void envoy_config_endpoint_v3_LedsClusterLocalityConfig_set_leds_config(envoy_config_endpoint_v3_LedsClusterLocalityConfig *msg, struct envoy_config_core_v3_ConfigSource* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_ConfigSource*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_ConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_endpoint_v3_LedsClusterLocalityConfig_mutable_leds_config(envoy_config_endpoint_v3_LedsClusterLocalityConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_endpoint_v3_LedsClusterLocalityConfig_mutable_leds_config(envoy_config_endpoint_v3_LedsClusterLocalityConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_config_endpoint_v3_LedsClusterLocalityConfig_leds_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
@@ -321,7 +392,7 @@ UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_endpoint_v3_Le
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_LedsClusterLocalityConfig_set_leds_collection_name(envoy_config_endpoint_v3_LedsClusterLocalityConfig *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
/* envoy.config.endpoint.v3.LocalityLbEndpoints */
@@ -349,46 +420,90 @@ UPB_INLINE envoy_config_endpoint_v3_LocalityLbEndpoints* envoy_config_endpoint_v
return ret;
}
UPB_INLINE char* envoy_config_endpoint_v3_LocalityLbEndpoints_serialize(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_LocalityLbEndpoints_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_LocalityLbEndpoints_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_endpoint_v3_LocalityLbEndpoints_serialize_ex(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_LocalityLbEndpoints_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_LocalityLbEndpoints_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_endpoint_v3_LocalityLbEndpoints_lb_config_load_balancer_endpoints = 7,
envoy_config_endpoint_v3_LocalityLbEndpoints_lb_config_leds_cluster_locality_config = 8,
envoy_config_endpoint_v3_LocalityLbEndpoints_lb_config_NOT_SET = 0
} envoy_config_endpoint_v3_LocalityLbEndpoints_lb_config_oneofcases;
-UPB_INLINE envoy_config_endpoint_v3_LocalityLbEndpoints_lb_config_oneofcases envoy_config_endpoint_v3_LocalityLbEndpoints_lb_config_case(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) { return (envoy_config_endpoint_v3_LocalityLbEndpoints_lb_config_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(28, 48), int32_t); }
-
-UPB_INLINE bool envoy_config_endpoint_v3_LocalityLbEndpoints_has_locality(const envoy_config_endpoint_v3_LocalityLbEndpoints *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_config_endpoint_v3_LocalityLbEndpoints_lb_config_oneofcases envoy_config_endpoint_v3_LocalityLbEndpoints_lb_config_case(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ return (envoy_config_endpoint_v3_LocalityLbEndpoints_lb_config_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_LocalityLbEndpoints_has_locality(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_endpoint_v3_LocalityLbEndpoints_clear_locality(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_Locality* envoy_config_endpoint_v3_LocalityLbEndpoints_locality(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct envoy_config_core_v3_Locality*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct envoy_config_core_v3_Locality*);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_LocalityLbEndpoints_has_lb_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE void envoy_config_endpoint_v3_LocalityLbEndpoints_clear_lb_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE const envoy_config_endpoint_v3_LbEndpoint* const* envoy_config_endpoint_v3_LocalityLbEndpoints_lb_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg, size_t* len) {
+ return (const envoy_config_endpoint_v3_LbEndpoint* const*)_upb_array_accessor(msg, UPB_SIZE(16, 24), len);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_LocalityLbEndpoints_has_load_balancing_weight(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_endpoint_v3_LocalityLbEndpoints_clear_load_balancing_weight(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_endpoint_v3_LocalityLbEndpoints_has_lb_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 32)); }
-UPB_INLINE const envoy_config_endpoint_v3_LbEndpoint* const* envoy_config_endpoint_v3_LocalityLbEndpoints_lb_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints *msg, size_t *len) { return (const envoy_config_endpoint_v3_LbEndpoint* const*)_upb_array_accessor(msg, UPB_SIZE(20, 32), len); }
-UPB_INLINE bool envoy_config_endpoint_v3_LocalityLbEndpoints_has_load_balancing_weight(const envoy_config_endpoint_v3_LocalityLbEndpoints *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_LocalityLbEndpoints_load_balancing_weight(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE void envoy_config_endpoint_v3_LocalityLbEndpoints_clear_priority(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_config_endpoint_v3_LocalityLbEndpoints_priority(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
}
-UPB_INLINE bool envoy_config_endpoint_v3_LocalityLbEndpoints_has_proximity(const envoy_config_endpoint_v3_LocalityLbEndpoints *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_endpoint_v3_LocalityLbEndpoints_has_proximity(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_endpoint_v3_LocalityLbEndpoints_clear_proximity(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_LocalityLbEndpoints_proximity(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_LocalityLbEndpoints_has_load_balancer_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(8, 8)) == 7;
+}
+UPB_INLINE void envoy_config_endpoint_v3_LocalityLbEndpoints_clear_load_balancer_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList*, UPB_SIZE(28, 48), 0, UPB_SIZE(8, 8), envoy_config_endpoint_v3_LocalityLbEndpoints_lb_config_NOT_SET);
+}
+UPB_INLINE const envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* envoy_config_endpoint_v3_LocalityLbEndpoints_load_balancer_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList*, UPB_SIZE(28, 48), UPB_SIZE(8, 8), 7, NULL);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_LocalityLbEndpoints_has_leds_cluster_locality_config(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(8, 8)) == 8;
+}
+UPB_INLINE void envoy_config_endpoint_v3_LocalityLbEndpoints_clear_leds_cluster_locality_config(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_endpoint_v3_LedsClusterLocalityConfig*, UPB_SIZE(28, 48), 0, UPB_SIZE(8, 8), envoy_config_endpoint_v3_LocalityLbEndpoints_lb_config_NOT_SET);
+}
+UPB_INLINE const envoy_config_endpoint_v3_LedsClusterLocalityConfig* envoy_config_endpoint_v3_LocalityLbEndpoints_leds_cluster_locality_config(const envoy_config_endpoint_v3_LocalityLbEndpoints* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_endpoint_v3_LedsClusterLocalityConfig*, UPB_SIZE(28, 48), UPB_SIZE(8, 8), 8, NULL);
}
-UPB_INLINE bool envoy_config_endpoint_v3_LocalityLbEndpoints_has_load_balancer_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints *msg) { return _upb_getoneofcase(msg, UPB_SIZE(28, 48)) == 7; }
-UPB_INLINE const envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* envoy_config_endpoint_v3_LocalityLbEndpoints_load_balancer_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints *msg) { return UPB_READ_ONEOF(msg, const envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList*, UPB_SIZE(24, 40), UPB_SIZE(28, 48), 7, NULL); }
-UPB_INLINE bool envoy_config_endpoint_v3_LocalityLbEndpoints_has_leds_cluster_locality_config(const envoy_config_endpoint_v3_LocalityLbEndpoints *msg) { return _upb_getoneofcase(msg, UPB_SIZE(28, 48)) == 8; }
-UPB_INLINE const envoy_config_endpoint_v3_LedsClusterLocalityConfig* envoy_config_endpoint_v3_LocalityLbEndpoints_leds_cluster_locality_config(const envoy_config_endpoint_v3_LocalityLbEndpoints *msg) { return UPB_READ_ONEOF(msg, const envoy_config_endpoint_v3_LedsClusterLocalityConfig*, UPB_SIZE(24, 40), UPB_SIZE(28, 48), 8, NULL); }
UPB_INLINE void envoy_config_endpoint_v3_LocalityLbEndpoints_set_locality(envoy_config_endpoint_v3_LocalityLbEndpoints *msg, struct envoy_config_core_v3_Locality* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct envoy_config_core_v3_Locality*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct envoy_config_core_v3_Locality*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Locality* envoy_config_endpoint_v3_LocalityLbEndpoints_mutable_locality(envoy_config_endpoint_v3_LocalityLbEndpoints *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Locality* envoy_config_endpoint_v3_LocalityLbEndpoints_mutable_locality(envoy_config_endpoint_v3_LocalityLbEndpoints* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Locality* sub = (struct envoy_config_core_v3_Locality*)envoy_config_endpoint_v3_LocalityLbEndpoints_locality(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Locality*)_upb_Message_New(&envoy_config_core_v3_Locality_msginit, arena);
@@ -397,24 +512,23 @@ UPB_INLINE struct envoy_config_core_v3_Locality* envoy_config_endpoint_v3_Locali
}
return sub;
}
-UPB_INLINE envoy_config_endpoint_v3_LbEndpoint** envoy_config_endpoint_v3_LocalityLbEndpoints_mutable_lb_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints *msg, size_t *len) {
- return (envoy_config_endpoint_v3_LbEndpoint**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 32), len);
+UPB_INLINE envoy_config_endpoint_v3_LbEndpoint** envoy_config_endpoint_v3_LocalityLbEndpoints_mutable_lb_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints* msg, size_t* len) {
+ return (envoy_config_endpoint_v3_LbEndpoint**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 24), len);
}
-UPB_INLINE envoy_config_endpoint_v3_LbEndpoint** envoy_config_endpoint_v3_LocalityLbEndpoints_resize_lb_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_endpoint_v3_LbEndpoint**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 32), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_endpoint_v3_LbEndpoint** envoy_config_endpoint_v3_LocalityLbEndpoints_resize_lb_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_endpoint_v3_LbEndpoint**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_endpoint_v3_LbEndpoint* envoy_config_endpoint_v3_LocalityLbEndpoints_add_lb_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_LbEndpoint* envoy_config_endpoint_v3_LocalityLbEndpoints_add_lb_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_LbEndpoint* sub = (struct envoy_config_endpoint_v3_LbEndpoint*)_upb_Message_New(&envoy_config_endpoint_v3_LbEndpoint_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(20, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_LocalityLbEndpoints_set_load_balancing_weight(envoy_config_endpoint_v3_LocalityLbEndpoints *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_LocalityLbEndpoints_mutable_load_balancing_weight(envoy_config_endpoint_v3_LocalityLbEndpoints *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_LocalityLbEndpoints_mutable_load_balancing_weight(envoy_config_endpoint_v3_LocalityLbEndpoints* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_endpoint_v3_LocalityLbEndpoints_load_balancing_weight(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -428,9 +542,9 @@ UPB_INLINE void envoy_config_endpoint_v3_LocalityLbEndpoints_set_priority(envoy_
}
UPB_INLINE void envoy_config_endpoint_v3_LocalityLbEndpoints_set_proximity(envoy_config_endpoint_v3_LocalityLbEndpoints *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_LocalityLbEndpoints_mutable_proximity(envoy_config_endpoint_v3_LocalityLbEndpoints *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_LocalityLbEndpoints_mutable_proximity(envoy_config_endpoint_v3_LocalityLbEndpoints* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_endpoint_v3_LocalityLbEndpoints_proximity(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -440,9 +554,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_endpoint_v3_Locality
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_LocalityLbEndpoints_set_load_balancer_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints *msg, envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList*, UPB_SIZE(24, 40), value, UPB_SIZE(28, 48), 7);
+ UPB_WRITE_ONEOF(msg, envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList*, UPB_SIZE(28, 48), value, UPB_SIZE(8, 8), 7);
}
-UPB_INLINE struct envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* envoy_config_endpoint_v3_LocalityLbEndpoints_mutable_load_balancer_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* envoy_config_endpoint_v3_LocalityLbEndpoints_mutable_load_balancer_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* sub = (struct envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList*)envoy_config_endpoint_v3_LocalityLbEndpoints_load_balancer_endpoints(msg);
if (sub == NULL) {
sub = (struct envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList*)_upb_Message_New(&envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_msginit, arena);
@@ -452,9 +566,9 @@ UPB_INLINE struct envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* e
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_LocalityLbEndpoints_set_leds_cluster_locality_config(envoy_config_endpoint_v3_LocalityLbEndpoints *msg, envoy_config_endpoint_v3_LedsClusterLocalityConfig* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_endpoint_v3_LedsClusterLocalityConfig*, UPB_SIZE(24, 40), value, UPB_SIZE(28, 48), 8);
+ UPB_WRITE_ONEOF(msg, envoy_config_endpoint_v3_LedsClusterLocalityConfig*, UPB_SIZE(28, 48), value, UPB_SIZE(8, 8), 8);
}
-UPB_INLINE struct envoy_config_endpoint_v3_LedsClusterLocalityConfig* envoy_config_endpoint_v3_LocalityLbEndpoints_mutable_leds_cluster_locality_config(envoy_config_endpoint_v3_LocalityLbEndpoints *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_LedsClusterLocalityConfig* envoy_config_endpoint_v3_LocalityLbEndpoints_mutable_leds_cluster_locality_config(envoy_config_endpoint_v3_LocalityLbEndpoints* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_LedsClusterLocalityConfig* sub = (struct envoy_config_endpoint_v3_LedsClusterLocalityConfig*)envoy_config_endpoint_v3_LocalityLbEndpoints_leds_cluster_locality_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_endpoint_v3_LedsClusterLocalityConfig*)_upb_Message_New(&envoy_config_endpoint_v3_LedsClusterLocalityConfig_msginit, arena);
@@ -489,25 +603,35 @@ UPB_INLINE envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* envoy_co
return ret;
}
UPB_INLINE char* envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_serialize(const envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_serialize_ex(const envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_has_lb_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_clear_lb_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_endpoint_v3_LbEndpoint* const* envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_lb_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* msg, size_t* len) {
+ return (const envoy_config_endpoint_v3_LbEndpoint* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_has_lb_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_endpoint_v3_LbEndpoint* const* envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_lb_endpoints(const envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList *msg, size_t *len) { return (const envoy_config_endpoint_v3_LbEndpoint* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_endpoint_v3_LbEndpoint** envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_mutable_lb_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList *msg, size_t *len) {
+UPB_INLINE envoy_config_endpoint_v3_LbEndpoint** envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_mutable_lb_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* msg, size_t* len) {
return (envoy_config_endpoint_v3_LbEndpoint**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_endpoint_v3_LbEndpoint** envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_resize_lb_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_endpoint_v3_LbEndpoint** envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_resize_lb_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* msg, size_t len, upb_Arena* arena) {
return (envoy_config_endpoint_v3_LbEndpoint**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_endpoint_v3_LbEndpoint* envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_add_lb_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_LbEndpoint* envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList_add_lb_endpoints(envoy_config_endpoint_v3_LocalityLbEndpoints_LbEndpointList* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_LbEndpoint* sub = (struct envoy_config_endpoint_v3_LbEndpoint*)_upb_Message_New(&envoy_config_endpoint_v3_LbEndpoint_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c
index 4313817c65..d198178675 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c
@@ -26,20 +26,20 @@ static const upb_MiniTable_Sub envoy_config_endpoint_v3_UpstreamLocalityStats_su
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_UpstreamLocalityStats__fields[8] = {
- {1, UPB_SIZE(44, 48), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 16), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 24), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(48, 56), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(40, 40), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(52, 64), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(32, 32), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(24, 32), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(32, 40), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(40, 48), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(12, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(16, 24), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(48, 56), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_UpstreamLocalityStats_msginit = {
&envoy_config_endpoint_v3_UpstreamLocalityStats_submsgs[0],
&envoy_config_endpoint_v3_UpstreamLocalityStats__fields[0],
- UPB_SIZE(56, 72), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(56, 64), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_endpoint_v3_UpstreamEndpointStats_submsgs[3] = {
@@ -49,63 +49,63 @@ static const upb_MiniTable_Sub envoy_config_endpoint_v3_UpstreamEndpointStats_su
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_UpstreamEndpointStats__fields[7] = {
- {1, UPB_SIZE(40, 40), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 16), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 24), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(48, 56), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(44, 48), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(32, 32), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(24, 40), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(32, 48), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(12, 24), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(40, 56), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_UpstreamEndpointStats_msginit = {
&envoy_config_endpoint_v3_UpstreamEndpointStats_submsgs[0],
&envoy_config_endpoint_v3_UpstreamEndpointStats__fields[0],
- UPB_SIZE(56, 64), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(48, 64), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_EndpointLoadMetricStats__fields[3] = {
- {1, UPB_SIZE(16, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 8), 0, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_EndpointLoadMetricStats_msginit = {
NULL,
&envoy_config_endpoint_v3_EndpointLoadMetricStats__fields[0],
- UPB_SIZE(24, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_endpoint_v3_ClusterStats_submsgs[3] = {
- {.submsg = &envoy_config_endpoint_v3_ClusterStats_DroppedRequests_msginit},
{.submsg = &envoy_config_endpoint_v3_UpstreamLocalityStats_msginit},
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_endpoint_v3_ClusterStats_DroppedRequests_msginit},
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_ClusterStats__fields[6] = {
- {1, UPB_SIZE(16, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(36, 56), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 8), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 48), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(40, 64), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(24, 32), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(32, 64), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 40), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_ClusterStats_msginit = {
&envoy_config_endpoint_v3_ClusterStats_submsgs[0],
&envoy_config_endpoint_v3_ClusterStats__fields[0],
- UPB_SIZE(48, 80), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(40, 72), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable_Field envoy_config_endpoint_v3_ClusterStats_DroppedRequests__fields[2] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_endpoint_v3_ClusterStats_DroppedRequests_msginit = {
NULL,
&envoy_config_endpoint_v3_ClusterStats_DroppedRequests__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[5] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h
index 8bb7039046..ff40dee8fb 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h
@@ -71,41 +71,79 @@ UPB_INLINE envoy_config_endpoint_v3_UpstreamLocalityStats* envoy_config_endpoint
return ret;
}
UPB_INLINE char* envoy_config_endpoint_v3_UpstreamLocalityStats_serialize(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_UpstreamLocalityStats_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_UpstreamLocalityStats_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_endpoint_v3_UpstreamLocalityStats_serialize_ex(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_UpstreamLocalityStats_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_UpstreamLocalityStats_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_endpoint_v3_UpstreamLocalityStats_has_locality(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamLocalityStats_clear_locality(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_endpoint_v3_UpstreamLocalityStats_has_locality(const envoy_config_endpoint_v3_UpstreamLocalityStats *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_Locality* envoy_config_endpoint_v3_UpstreamLocalityStats_locality(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(44, 48), const struct envoy_config_core_v3_Locality*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct envoy_config_core_v3_Locality*);
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamLocalityStats_clear_total_successful_requests(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t) = 0;
}
UPB_INLINE uint64_t envoy_config_endpoint_v3_UpstreamLocalityStats_total_successful_requests(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t);
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamLocalityStats_clear_total_requests_in_progress(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), uint64_t) = 0;
}
UPB_INLINE uint64_t envoy_config_endpoint_v3_UpstreamLocalityStats_total_requests_in_progress(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 40), uint64_t);
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamLocalityStats_clear_total_error_requests(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), uint64_t) = 0;
}
UPB_INLINE uint64_t envoy_config_endpoint_v3_UpstreamLocalityStats_total_error_requests(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 48), uint64_t);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_UpstreamLocalityStats_has_load_metric_stats(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamLocalityStats_clear_load_metric_stats(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE const envoy_config_endpoint_v3_EndpointLoadMetricStats* const* envoy_config_endpoint_v3_UpstreamLocalityStats_load_metric_stats(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg, size_t* len) {
+ return (const envoy_config_endpoint_v3_EndpointLoadMetricStats* const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len);
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamLocalityStats_clear_priority(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = 0;
}
-UPB_INLINE bool envoy_config_endpoint_v3_UpstreamLocalityStats_has_load_metric_stats(const envoy_config_endpoint_v3_UpstreamLocalityStats *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 56)); }
-UPB_INLINE const envoy_config_endpoint_v3_EndpointLoadMetricStats* const* envoy_config_endpoint_v3_UpstreamLocalityStats_load_metric_stats(const envoy_config_endpoint_v3_UpstreamLocalityStats *msg, size_t *len) { return (const envoy_config_endpoint_v3_EndpointLoadMetricStats* const*)_upb_array_accessor(msg, UPB_SIZE(48, 56), len); }
UPB_INLINE uint32_t envoy_config_endpoint_v3_UpstreamLocalityStats_priority(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 40), uint32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_UpstreamLocalityStats_has_upstream_endpoint_stats(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamLocalityStats_clear_upstream_endpoint_stats(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE const envoy_config_endpoint_v3_UpstreamEndpointStats* const* envoy_config_endpoint_v3_UpstreamLocalityStats_upstream_endpoint_stats(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg, size_t* len) {
+ return (const envoy_config_endpoint_v3_UpstreamEndpointStats* const*)_upb_array_accessor(msg, UPB_SIZE(16, 24), len);
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamLocalityStats_clear_total_issued_requests(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 56), uint64_t) = 0;
}
-UPB_INLINE bool envoy_config_endpoint_v3_UpstreamLocalityStats_has_upstream_endpoint_stats(const envoy_config_endpoint_v3_UpstreamLocalityStats *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(52, 64)); }
-UPB_INLINE const envoy_config_endpoint_v3_UpstreamEndpointStats* const* envoy_config_endpoint_v3_UpstreamLocalityStats_upstream_endpoint_stats(const envoy_config_endpoint_v3_UpstreamLocalityStats *msg, size_t *len) { return (const envoy_config_endpoint_v3_UpstreamEndpointStats* const*)_upb_array_accessor(msg, UPB_SIZE(52, 64), len); }
UPB_INLINE uint64_t envoy_config_endpoint_v3_UpstreamLocalityStats_total_issued_requests(const envoy_config_endpoint_v3_UpstreamLocalityStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 56), uint64_t);
}
UPB_INLINE void envoy_config_endpoint_v3_UpstreamLocalityStats_set_locality(envoy_config_endpoint_v3_UpstreamLocalityStats *msg, struct envoy_config_core_v3_Locality* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(44, 48), struct envoy_config_core_v3_Locality*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct envoy_config_core_v3_Locality*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Locality* envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_locality(envoy_config_endpoint_v3_UpstreamLocalityStats *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Locality* envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_locality(envoy_config_endpoint_v3_UpstreamLocalityStats* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Locality* sub = (struct envoy_config_core_v3_Locality*)envoy_config_endpoint_v3_UpstreamLocalityStats_locality(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Locality*)_upb_Message_New(&envoy_config_core_v3_Locality_msginit, arena);
@@ -115,45 +153,43 @@ UPB_INLINE struct envoy_config_core_v3_Locality* envoy_config_endpoint_v3_Upstre
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_UpstreamLocalityStats_set_total_successful_requests(envoy_config_endpoint_v3_UpstreamLocalityStats *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t) = value;
}
UPB_INLINE void envoy_config_endpoint_v3_UpstreamLocalityStats_set_total_requests_in_progress(envoy_config_endpoint_v3_UpstreamLocalityStats *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), uint64_t) = value;
}
UPB_INLINE void envoy_config_endpoint_v3_UpstreamLocalityStats_set_total_error_requests(envoy_config_endpoint_v3_UpstreamLocalityStats *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), uint64_t) = value;
}
-UPB_INLINE envoy_config_endpoint_v3_EndpointLoadMetricStats** envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_load_metric_stats(envoy_config_endpoint_v3_UpstreamLocalityStats *msg, size_t *len) {
- return (envoy_config_endpoint_v3_EndpointLoadMetricStats**)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 56), len);
+UPB_INLINE envoy_config_endpoint_v3_EndpointLoadMetricStats** envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_load_metric_stats(envoy_config_endpoint_v3_UpstreamLocalityStats* msg, size_t* len) {
+ return (envoy_config_endpoint_v3_EndpointLoadMetricStats**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 16), len);
}
-UPB_INLINE envoy_config_endpoint_v3_EndpointLoadMetricStats** envoy_config_endpoint_v3_UpstreamLocalityStats_resize_load_metric_stats(envoy_config_endpoint_v3_UpstreamLocalityStats *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_endpoint_v3_EndpointLoadMetricStats**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 56), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_endpoint_v3_EndpointLoadMetricStats** envoy_config_endpoint_v3_UpstreamLocalityStats_resize_load_metric_stats(envoy_config_endpoint_v3_UpstreamLocalityStats* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_endpoint_v3_EndpointLoadMetricStats**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_endpoint_v3_EndpointLoadMetricStats* envoy_config_endpoint_v3_UpstreamLocalityStats_add_load_metric_stats(envoy_config_endpoint_v3_UpstreamLocalityStats *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_EndpointLoadMetricStats* envoy_config_endpoint_v3_UpstreamLocalityStats_add_load_metric_stats(envoy_config_endpoint_v3_UpstreamLocalityStats* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_EndpointLoadMetricStats* sub = (struct envoy_config_endpoint_v3_EndpointLoadMetricStats*)_upb_Message_New(&envoy_config_endpoint_v3_EndpointLoadMetricStats_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(48, 56), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_UpstreamLocalityStats_set_priority(envoy_config_endpoint_v3_UpstreamLocalityStats *msg, uint32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(40, 40), uint32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = value;
}
-UPB_INLINE envoy_config_endpoint_v3_UpstreamEndpointStats** envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_upstream_endpoint_stats(envoy_config_endpoint_v3_UpstreamLocalityStats *msg, size_t *len) {
- return (envoy_config_endpoint_v3_UpstreamEndpointStats**)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 64), len);
+UPB_INLINE envoy_config_endpoint_v3_UpstreamEndpointStats** envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_upstream_endpoint_stats(envoy_config_endpoint_v3_UpstreamLocalityStats* msg, size_t* len) {
+ return (envoy_config_endpoint_v3_UpstreamEndpointStats**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 24), len);
}
-UPB_INLINE envoy_config_endpoint_v3_UpstreamEndpointStats** envoy_config_endpoint_v3_UpstreamLocalityStats_resize_upstream_endpoint_stats(envoy_config_endpoint_v3_UpstreamLocalityStats *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_endpoint_v3_UpstreamEndpointStats**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 64), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_endpoint_v3_UpstreamEndpointStats** envoy_config_endpoint_v3_UpstreamLocalityStats_resize_upstream_endpoint_stats(envoy_config_endpoint_v3_UpstreamLocalityStats* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_endpoint_v3_UpstreamEndpointStats**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_endpoint_v3_UpstreamEndpointStats* envoy_config_endpoint_v3_UpstreamLocalityStats_add_upstream_endpoint_stats(envoy_config_endpoint_v3_UpstreamLocalityStats *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_UpstreamEndpointStats* envoy_config_endpoint_v3_UpstreamLocalityStats_add_upstream_endpoint_stats(envoy_config_endpoint_v3_UpstreamLocalityStats* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_UpstreamEndpointStats* sub = (struct envoy_config_endpoint_v3_UpstreamEndpointStats*)_upb_Message_New(&envoy_config_endpoint_v3_UpstreamEndpointStats_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(52, 64), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_UpstreamLocalityStats_set_total_issued_requests(envoy_config_endpoint_v3_UpstreamLocalityStats *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(32, 32), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 56), uint64_t) = value;
}
/* envoy.config.endpoint.v3.UpstreamEndpointStats */
@@ -181,40 +217,73 @@ UPB_INLINE envoy_config_endpoint_v3_UpstreamEndpointStats* envoy_config_endpoint
return ret;
}
UPB_INLINE char* envoy_config_endpoint_v3_UpstreamEndpointStats_serialize(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_UpstreamEndpointStats_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_UpstreamEndpointStats_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_endpoint_v3_UpstreamEndpointStats_serialize_ex(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_UpstreamEndpointStats_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_UpstreamEndpointStats_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_endpoint_v3_UpstreamEndpointStats_has_address(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamEndpointStats_clear_address(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_endpoint_v3_UpstreamEndpointStats_has_address(const envoy_config_endpoint_v3_UpstreamEndpointStats *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_Address* envoy_config_endpoint_v3_UpstreamEndpointStats_address(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 40), const struct envoy_config_core_v3_Address*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_Address*);
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamEndpointStats_clear_total_successful_requests(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), uint64_t) = 0;
}
UPB_INLINE uint64_t envoy_config_endpoint_v3_UpstreamEndpointStats_total_successful_requests(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), uint64_t);
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamEndpointStats_clear_total_requests_in_progress(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), uint64_t) = 0;
}
UPB_INLINE uint64_t envoy_config_endpoint_v3_UpstreamEndpointStats_total_requests_in_progress(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), uint64_t);
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamEndpointStats_clear_total_error_requests(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 48), uint64_t) = 0;
}
UPB_INLINE uint64_t envoy_config_endpoint_v3_UpstreamEndpointStats_total_error_requests(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 48), uint64_t);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_UpstreamEndpointStats_has_load_metric_stats(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamEndpointStats_clear_load_metric_stats(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const envoy_config_endpoint_v3_EndpointLoadMetricStats* const* envoy_config_endpoint_v3_UpstreamEndpointStats_load_metric_stats(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg, size_t* len) {
+ return (const envoy_config_endpoint_v3_EndpointLoadMetricStats* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_UpstreamEndpointStats_has_metadata(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamEndpointStats_clear_metadata(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_endpoint_v3_UpstreamEndpointStats_has_load_metric_stats(const envoy_config_endpoint_v3_UpstreamEndpointStats *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 56)); }
-UPB_INLINE const envoy_config_endpoint_v3_EndpointLoadMetricStats* const* envoy_config_endpoint_v3_UpstreamEndpointStats_load_metric_stats(const envoy_config_endpoint_v3_UpstreamEndpointStats *msg, size_t *len) { return (const envoy_config_endpoint_v3_EndpointLoadMetricStats* const*)_upb_array_accessor(msg, UPB_SIZE(48, 56), len); }
-UPB_INLINE bool envoy_config_endpoint_v3_UpstreamEndpointStats_has_metadata(const envoy_config_endpoint_v3_UpstreamEndpointStats *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_Struct* envoy_config_endpoint_v3_UpstreamEndpointStats_metadata(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(44, 48), const struct google_protobuf_Struct*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Struct*);
+}
+UPB_INLINE void envoy_config_endpoint_v3_UpstreamEndpointStats_clear_total_issued_requests(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 56), uint64_t) = 0;
}
UPB_INLINE uint64_t envoy_config_endpoint_v3_UpstreamEndpointStats_total_issued_requests(const envoy_config_endpoint_v3_UpstreamEndpointStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 56), uint64_t);
}
UPB_INLINE void envoy_config_endpoint_v3_UpstreamEndpointStats_set_address(envoy_config_endpoint_v3_UpstreamEndpointStats *msg, struct envoy_config_core_v3_Address* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 40), struct envoy_config_core_v3_Address*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_Address*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_endpoint_v3_UpstreamEndpointStats_mutable_address(envoy_config_endpoint_v3_UpstreamEndpointStats *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_endpoint_v3_UpstreamEndpointStats_mutable_address(envoy_config_endpoint_v3_UpstreamEndpointStats* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Address* sub = (struct envoy_config_core_v3_Address*)envoy_config_endpoint_v3_UpstreamEndpointStats_address(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Address*)_upb_Message_New(&envoy_config_core_v3_Address_msginit, arena);
@@ -224,32 +293,31 @@ UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_endpoint_v3_Upstrea
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_UpstreamEndpointStats_set_total_successful_requests(envoy_config_endpoint_v3_UpstreamEndpointStats *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), uint64_t) = value;
}
UPB_INLINE void envoy_config_endpoint_v3_UpstreamEndpointStats_set_total_requests_in_progress(envoy_config_endpoint_v3_UpstreamEndpointStats *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), uint64_t) = value;
}
UPB_INLINE void envoy_config_endpoint_v3_UpstreamEndpointStats_set_total_error_requests(envoy_config_endpoint_v3_UpstreamEndpointStats *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 48), uint64_t) = value;
}
-UPB_INLINE envoy_config_endpoint_v3_EndpointLoadMetricStats** envoy_config_endpoint_v3_UpstreamEndpointStats_mutable_load_metric_stats(envoy_config_endpoint_v3_UpstreamEndpointStats *msg, size_t *len) {
- return (envoy_config_endpoint_v3_EndpointLoadMetricStats**)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 56), len);
+UPB_INLINE envoy_config_endpoint_v3_EndpointLoadMetricStats** envoy_config_endpoint_v3_UpstreamEndpointStats_mutable_load_metric_stats(envoy_config_endpoint_v3_UpstreamEndpointStats* msg, size_t* len) {
+ return (envoy_config_endpoint_v3_EndpointLoadMetricStats**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE envoy_config_endpoint_v3_EndpointLoadMetricStats** envoy_config_endpoint_v3_UpstreamEndpointStats_resize_load_metric_stats(envoy_config_endpoint_v3_UpstreamEndpointStats *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_endpoint_v3_EndpointLoadMetricStats**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 56), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_endpoint_v3_EndpointLoadMetricStats** envoy_config_endpoint_v3_UpstreamEndpointStats_resize_load_metric_stats(envoy_config_endpoint_v3_UpstreamEndpointStats* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_endpoint_v3_EndpointLoadMetricStats**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_endpoint_v3_EndpointLoadMetricStats* envoy_config_endpoint_v3_UpstreamEndpointStats_add_load_metric_stats(envoy_config_endpoint_v3_UpstreamEndpointStats *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_EndpointLoadMetricStats* envoy_config_endpoint_v3_UpstreamEndpointStats_add_load_metric_stats(envoy_config_endpoint_v3_UpstreamEndpointStats* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_EndpointLoadMetricStats* sub = (struct envoy_config_endpoint_v3_EndpointLoadMetricStats*)_upb_Message_New(&envoy_config_endpoint_v3_EndpointLoadMetricStats_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(48, 56), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_UpstreamEndpointStats_set_metadata(envoy_config_endpoint_v3_UpstreamEndpointStats *msg, struct google_protobuf_Struct* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(44, 48), struct google_protobuf_Struct*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Struct*) = value;
}
-UPB_INLINE struct google_protobuf_Struct* envoy_config_endpoint_v3_UpstreamEndpointStats_mutable_metadata(envoy_config_endpoint_v3_UpstreamEndpointStats *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Struct* envoy_config_endpoint_v3_UpstreamEndpointStats_mutable_metadata(envoy_config_endpoint_v3_UpstreamEndpointStats* msg, upb_Arena* arena) {
struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)envoy_config_endpoint_v3_UpstreamEndpointStats_metadata(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Struct*)_upb_Message_New(&google_protobuf_Struct_msginit, arena);
@@ -259,7 +327,7 @@ UPB_INLINE struct google_protobuf_Struct* envoy_config_endpoint_v3_UpstreamEndpo
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_UpstreamEndpointStats_set_total_issued_requests(envoy_config_endpoint_v3_UpstreamEndpointStats *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(32, 32), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 56), uint64_t) = value;
}
/* envoy.config.endpoint.v3.EndpointLoadMetricStats */
@@ -287,30 +355,43 @@ UPB_INLINE envoy_config_endpoint_v3_EndpointLoadMetricStats* envoy_config_endpoi
return ret;
}
UPB_INLINE char* envoy_config_endpoint_v3_EndpointLoadMetricStats_serialize(const envoy_config_endpoint_v3_EndpointLoadMetricStats* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_EndpointLoadMetricStats_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_EndpointLoadMetricStats_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_endpoint_v3_EndpointLoadMetricStats_serialize_ex(const envoy_config_endpoint_v3_EndpointLoadMetricStats* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_EndpointLoadMetricStats_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_EndpointLoadMetricStats_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_endpoint_v3_EndpointLoadMetricStats_clear_metric_name(const envoy_config_endpoint_v3_EndpointLoadMetricStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_endpoint_v3_EndpointLoadMetricStats_metric_name(const envoy_config_endpoint_v3_EndpointLoadMetricStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+}
+UPB_INLINE void envoy_config_endpoint_v3_EndpointLoadMetricStats_clear_num_requests_finished_with_metric(const envoy_config_endpoint_v3_EndpointLoadMetricStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t) = 0;
}
UPB_INLINE uint64_t envoy_config_endpoint_v3_EndpointLoadMetricStats_num_requests_finished_with_metric(const envoy_config_endpoint_v3_EndpointLoadMetricStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t);
+}
+UPB_INLINE void envoy_config_endpoint_v3_EndpointLoadMetricStats_clear_total_metric_value(const envoy_config_endpoint_v3_EndpointLoadMetricStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), double) = 0;
}
UPB_INLINE double envoy_config_endpoint_v3_EndpointLoadMetricStats_total_metric_value(const envoy_config_endpoint_v3_EndpointLoadMetricStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), double);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), double);
}
UPB_INLINE void envoy_config_endpoint_v3_EndpointLoadMetricStats_set_metric_name(envoy_config_endpoint_v3_EndpointLoadMetricStats *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
UPB_INLINE void envoy_config_endpoint_v3_EndpointLoadMetricStats_set_num_requests_finished_with_metric(envoy_config_endpoint_v3_EndpointLoadMetricStats *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t) = value;
}
UPB_INLINE void envoy_config_endpoint_v3_EndpointLoadMetricStats_set_total_metric_value(envoy_config_endpoint_v3_EndpointLoadMetricStats *msg, double value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), double) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), double) = value;
}
/* envoy.config.endpoint.v3.ClusterStats */
@@ -338,54 +419,85 @@ UPB_INLINE envoy_config_endpoint_v3_ClusterStats* envoy_config_endpoint_v3_Clust
return ret;
}
UPB_INLINE char* envoy_config_endpoint_v3_ClusterStats_serialize(const envoy_config_endpoint_v3_ClusterStats* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_ClusterStats_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_ClusterStats_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_endpoint_v3_ClusterStats_serialize_ex(const envoy_config_endpoint_v3_ClusterStats* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_ClusterStats_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_ClusterStats_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterStats_clear_cluster_name(const envoy_config_endpoint_v3_ClusterStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_endpoint_v3_ClusterStats_cluster_name(const envoy_config_endpoint_v3_ClusterStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_ClusterStats_has_upstream_locality_stats(const envoy_config_endpoint_v3_ClusterStats* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterStats_clear_upstream_locality_stats(const envoy_config_endpoint_v3_ClusterStats* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const envoy_config_endpoint_v3_UpstreamLocalityStats* const* envoy_config_endpoint_v3_ClusterStats_upstream_locality_stats(const envoy_config_endpoint_v3_ClusterStats* msg, size_t* len) {
+ return (const envoy_config_endpoint_v3_UpstreamLocalityStats* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterStats_clear_total_dropped_requests(const envoy_config_endpoint_v3_ClusterStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), uint64_t) = 0;
}
-UPB_INLINE bool envoy_config_endpoint_v3_ClusterStats_has_upstream_locality_stats(const envoy_config_endpoint_v3_ClusterStats *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 56)); }
-UPB_INLINE const envoy_config_endpoint_v3_UpstreamLocalityStats* const* envoy_config_endpoint_v3_ClusterStats_upstream_locality_stats(const envoy_config_endpoint_v3_ClusterStats *msg, size_t *len) { return (const envoy_config_endpoint_v3_UpstreamLocalityStats* const*)_upb_array_accessor(msg, UPB_SIZE(36, 56), len); }
UPB_INLINE uint64_t envoy_config_endpoint_v3_ClusterStats_total_dropped_requests(const envoy_config_endpoint_v3_ClusterStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), uint64_t);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_ClusterStats_has_load_report_interval(const envoy_config_endpoint_v3_ClusterStats* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterStats_clear_load_report_interval(const envoy_config_endpoint_v3_ClusterStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_endpoint_v3_ClusterStats_has_load_report_interval(const envoy_config_endpoint_v3_ClusterStats *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_endpoint_v3_ClusterStats_load_report_interval(const envoy_config_endpoint_v3_ClusterStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 48), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_endpoint_v3_ClusterStats_has_dropped_requests(const envoy_config_endpoint_v3_ClusterStats* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterStats_clear_dropped_requests(const envoy_config_endpoint_v3_ClusterStats* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE const envoy_config_endpoint_v3_ClusterStats_DroppedRequests* const* envoy_config_endpoint_v3_ClusterStats_dropped_requests(const envoy_config_endpoint_v3_ClusterStats* msg, size_t* len) {
+ return (const envoy_config_endpoint_v3_ClusterStats_DroppedRequests* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len);
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterStats_clear_cluster_service_name(const envoy_config_endpoint_v3_ClusterStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
-UPB_INLINE bool envoy_config_endpoint_v3_ClusterStats_has_dropped_requests(const envoy_config_endpoint_v3_ClusterStats *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(40, 64)); }
-UPB_INLINE const envoy_config_endpoint_v3_ClusterStats_DroppedRequests* const* envoy_config_endpoint_v3_ClusterStats_dropped_requests(const envoy_config_endpoint_v3_ClusterStats *msg, size_t *len) { return (const envoy_config_endpoint_v3_ClusterStats_DroppedRequests* const*)_upb_array_accessor(msg, UPB_SIZE(40, 64), len); }
UPB_INLINE upb_StringView envoy_config_endpoint_v3_ClusterStats_cluster_service_name(const envoy_config_endpoint_v3_ClusterStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView);
}
UPB_INLINE void envoy_config_endpoint_v3_ClusterStats_set_cluster_name(envoy_config_endpoint_v3_ClusterStats *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE envoy_config_endpoint_v3_UpstreamLocalityStats** envoy_config_endpoint_v3_ClusterStats_mutable_upstream_locality_stats(envoy_config_endpoint_v3_ClusterStats *msg, size_t *len) {
- return (envoy_config_endpoint_v3_UpstreamLocalityStats**)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 56), len);
+UPB_INLINE envoy_config_endpoint_v3_UpstreamLocalityStats** envoy_config_endpoint_v3_ClusterStats_mutable_upstream_locality_stats(envoy_config_endpoint_v3_ClusterStats* msg, size_t* len) {
+ return (envoy_config_endpoint_v3_UpstreamLocalityStats**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE envoy_config_endpoint_v3_UpstreamLocalityStats** envoy_config_endpoint_v3_ClusterStats_resize_upstream_locality_stats(envoy_config_endpoint_v3_ClusterStats *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_endpoint_v3_UpstreamLocalityStats**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 56), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_endpoint_v3_UpstreamLocalityStats** envoy_config_endpoint_v3_ClusterStats_resize_upstream_locality_stats(envoy_config_endpoint_v3_ClusterStats* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_endpoint_v3_UpstreamLocalityStats**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_endpoint_v3_UpstreamLocalityStats* envoy_config_endpoint_v3_ClusterStats_add_upstream_locality_stats(envoy_config_endpoint_v3_ClusterStats *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_UpstreamLocalityStats* envoy_config_endpoint_v3_ClusterStats_add_upstream_locality_stats(envoy_config_endpoint_v3_ClusterStats* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_UpstreamLocalityStats* sub = (struct envoy_config_endpoint_v3_UpstreamLocalityStats*)_upb_Message_New(&envoy_config_endpoint_v3_UpstreamLocalityStats_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(36, 56), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_ClusterStats_set_total_dropped_requests(envoy_config_endpoint_v3_ClusterStats *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), uint64_t) = value;
}
UPB_INLINE void envoy_config_endpoint_v3_ClusterStats_set_load_report_interval(envoy_config_endpoint_v3_ClusterStats *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 48), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_endpoint_v3_ClusterStats_mutable_load_report_interval(envoy_config_endpoint_v3_ClusterStats *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_endpoint_v3_ClusterStats_mutable_load_report_interval(envoy_config_endpoint_v3_ClusterStats* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_endpoint_v3_ClusterStats_load_report_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -394,21 +506,20 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_endpoint_v3_ClusterStat
}
return sub;
}
-UPB_INLINE envoy_config_endpoint_v3_ClusterStats_DroppedRequests** envoy_config_endpoint_v3_ClusterStats_mutable_dropped_requests(envoy_config_endpoint_v3_ClusterStats *msg, size_t *len) {
- return (envoy_config_endpoint_v3_ClusterStats_DroppedRequests**)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 64), len);
+UPB_INLINE envoy_config_endpoint_v3_ClusterStats_DroppedRequests** envoy_config_endpoint_v3_ClusterStats_mutable_dropped_requests(envoy_config_endpoint_v3_ClusterStats* msg, size_t* len) {
+ return (envoy_config_endpoint_v3_ClusterStats_DroppedRequests**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
}
-UPB_INLINE envoy_config_endpoint_v3_ClusterStats_DroppedRequests** envoy_config_endpoint_v3_ClusterStats_resize_dropped_requests(envoy_config_endpoint_v3_ClusterStats *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_endpoint_v3_ClusterStats_DroppedRequests**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 64), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_endpoint_v3_ClusterStats_DroppedRequests** envoy_config_endpoint_v3_ClusterStats_resize_dropped_requests(envoy_config_endpoint_v3_ClusterStats* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_endpoint_v3_ClusterStats_DroppedRequests**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_endpoint_v3_ClusterStats_DroppedRequests* envoy_config_endpoint_v3_ClusterStats_add_dropped_requests(envoy_config_endpoint_v3_ClusterStats *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_ClusterStats_DroppedRequests* envoy_config_endpoint_v3_ClusterStats_add_dropped_requests(envoy_config_endpoint_v3_ClusterStats* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_ClusterStats_DroppedRequests* sub = (struct envoy_config_endpoint_v3_ClusterStats_DroppedRequests*)_upb_Message_New(&envoy_config_endpoint_v3_ClusterStats_DroppedRequests_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(40, 64), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_endpoint_v3_ClusterStats_set_cluster_service_name(envoy_config_endpoint_v3_ClusterStats *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(24, 32), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = value;
}
/* envoy.config.endpoint.v3.ClusterStats.DroppedRequests */
@@ -436,24 +547,34 @@ UPB_INLINE envoy_config_endpoint_v3_ClusterStats_DroppedRequests* envoy_config_e
return ret;
}
UPB_INLINE char* envoy_config_endpoint_v3_ClusterStats_DroppedRequests_serialize(const envoy_config_endpoint_v3_ClusterStats_DroppedRequests* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_ClusterStats_DroppedRequests_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_ClusterStats_DroppedRequests_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_endpoint_v3_ClusterStats_DroppedRequests_serialize_ex(const envoy_config_endpoint_v3_ClusterStats_DroppedRequests* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_endpoint_v3_ClusterStats_DroppedRequests_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_endpoint_v3_ClusterStats_DroppedRequests_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterStats_DroppedRequests_clear_category(const envoy_config_endpoint_v3_ClusterStats_DroppedRequests* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_endpoint_v3_ClusterStats_DroppedRequests_category(const envoy_config_endpoint_v3_ClusterStats_DroppedRequests* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+}
+UPB_INLINE void envoy_config_endpoint_v3_ClusterStats_DroppedRequests_clear_dropped_count(const envoy_config_endpoint_v3_ClusterStats_DroppedRequests* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t) = 0;
}
UPB_INLINE uint64_t envoy_config_endpoint_v3_ClusterStats_DroppedRequests_dropped_count(const envoy_config_endpoint_v3_ClusterStats_DroppedRequests* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t);
}
UPB_INLINE void envoy_config_endpoint_v3_ClusterStats_DroppedRequests_set_category(envoy_config_endpoint_v3_ClusterStats_DroppedRequests *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
UPB_INLINE void envoy_config_endpoint_v3_ClusterStats_DroppedRequests_set_dropped_count(envoy_config_endpoint_v3_ClusterStats_DroppedRequests *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t) = value;
}
extern const upb_MiniTable_File envoy_config_endpoint_v3_load_report_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c
index 0ab0c35039..f5560641b7 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c
@@ -20,13 +20,13 @@ static const upb_MiniTable_Sub envoy_config_listener_v3_ApiListener_submsgs[1] =
};
static const upb_MiniTable_Field envoy_config_listener_v3_ApiListener__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_listener_v3_ApiListener_msginit = {
&envoy_config_listener_v3_ApiListener_submsgs[0],
&envoy_config_listener_v3_ApiListener__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h
index 48c38d5d66..d5d726191f 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h
@@ -53,13 +53,22 @@ UPB_INLINE envoy_config_listener_v3_ApiListener* envoy_config_listener_v3_ApiLis
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_ApiListener_serialize(const envoy_config_listener_v3_ApiListener* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_ApiListener_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_ApiListener_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_ApiListener_serialize_ex(const envoy_config_listener_v3_ApiListener* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_ApiListener_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_ApiListener_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_listener_v3_ApiListener_has_api_listener(const envoy_config_listener_v3_ApiListener* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_listener_v3_ApiListener_clear_api_listener(const envoy_config_listener_v3_ApiListener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_ApiListener_has_api_listener(const envoy_config_listener_v3_ApiListener *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Any* envoy_config_listener_v3_ApiListener_api_listener(const envoy_config_listener_v3_ApiListener* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Any*);
}
@@ -68,7 +77,7 @@ UPB_INLINE void envoy_config_listener_v3_ApiListener_set_api_listener(envoy_conf
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_listener_v3_ApiListener_mutable_api_listener(envoy_config_listener_v3_ApiListener *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_listener_v3_ApiListener_mutable_api_listener(envoy_config_listener_v3_ApiListener* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_listener_v3_ApiListener_api_listener(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c
index 66f2b31cb7..1ede236010 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c
@@ -12,13 +12,16 @@
#include "envoy/config/accesslog/v3/accesslog.upb.h"
#include "envoy/config/core/v3/address.upb.h"
#include "envoy/config/core/v3/base.upb.h"
+#include "envoy/config/core/v3/extension.upb.h"
#include "envoy/config/core/v3/socket_option.upb.h"
#include "envoy/config/listener/v3/api_listener.upb.h"
#include "envoy/config/listener/v3/listener_components.upb.h"
#include "envoy/config/listener/v3/udp_listener_config.upb.h"
#include "google/protobuf/duration.upb.h"
#include "google/protobuf/wrappers.upb.h"
+#include "xds/annotations/v3/status.upb.h"
#include "xds/core/v3/collection_entry.upb.h"
+#include "xds/type/matcher/v3/matcher.upb.h"
#include "envoy/annotations/deprecation.upb.h"
#include "udpa/annotations/security.upb.h"
#include "udpa/annotations/status.upb.h"
@@ -27,73 +30,98 @@
#include "upb/port_def.inc"
+static const upb_MiniTable_Sub envoy_config_listener_v3_AdditionalAddress_submsgs[1] = {
+ {.submsg = &envoy_config_core_v3_Address_msginit},
+};
+
+static const upb_MiniTable_Field envoy_config_listener_v3_AdditionalAddress__fields[1] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_config_listener_v3_AdditionalAddress_msginit = {
+ &envoy_config_listener_v3_AdditionalAddress_submsgs[0],
+ &envoy_config_listener_v3_AdditionalAddress__fields[0],
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
+};
+
static const upb_MiniTable_Sub envoy_config_listener_v3_ListenerCollection_submsgs[1] = {
{.submsg = &xds_core_v3_CollectionEntry_msginit},
};
static const upb_MiniTable_Field envoy_config_listener_v3_ListenerCollection__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_listener_v3_ListenerCollection_msginit = {
&envoy_config_listener_v3_ListenerCollection_submsgs[0],
&envoy_config_listener_v3_ListenerCollection__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_listener_v3_Listener_submsgs[14] = {
- {.submsg = &envoy_config_accesslog_v3_AccessLog_msginit},
+static const upb_MiniTable_Sub envoy_config_listener_v3_Listener_submsgs[23] = {
{.submsg = &envoy_config_core_v3_Address_msginit},
- {.submsg = &envoy_config_core_v3_Metadata_msginit},
- {.submsg = &envoy_config_core_v3_SocketOption_msginit},
- {.submsg = &envoy_config_listener_v3_ApiListener_msginit},
{.submsg = &envoy_config_listener_v3_FilterChain_msginit},
- {.submsg = &envoy_config_listener_v3_Listener_ConnectionBalanceConfig_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_core_v3_Metadata_msginit},
{.submsg = &envoy_config_listener_v3_Listener_DeprecatedV1_msginit},
- {.submsg = &envoy_config_listener_v3_Listener_InternalListenerConfig_msginit},
{.submsg = &envoy_config_listener_v3_ListenerFilter_msginit},
- {.submsg = &envoy_config_listener_v3_UdpListenerConfig_msginit},
{.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_core_v3_SocketOption_msginit},
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_listener_v3_UdpListenerConfig_msginit},
+ {.submsg = &envoy_config_listener_v3_ApiListener_msginit},
+ {.submsg = &envoy_config_listener_v3_Listener_ConnectionBalanceConfig_msginit},
+ {.submsg = &envoy_config_accesslog_v3_AccessLog_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
-};
-
-static const upb_MiniTable_Field envoy_config_listener_v3_Listener__fields[29] = {
- {1, UPB_SIZE(16, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(32, 48), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(96, 176), 0, 5, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(36, 56), 2, 11, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(40, 64), 3, 13, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(44, 72), 4, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(48, 80), 5, 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {9, UPB_SIZE(100, 184), 0, 9, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(52, 88), 6, 11, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(56, 96), 7, 11, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(60, 104), 8, 13, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {13, UPB_SIZE(104, 192), 0, 3, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {15, UPB_SIZE(64, 112), 9, 12, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {16, UPB_SIZE(8, 8), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {17, UPB_SIZE(12, 12), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {18, UPB_SIZE(68, 120), 10, 10, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {19, UPB_SIZE(72, 128), 11, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {20, UPB_SIZE(76, 136), 12, 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {21, UPB_SIZE(13, 13), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {22, UPB_SIZE(108, 200), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {24, UPB_SIZE(80, 144), 13, 13, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {25, UPB_SIZE(84, 152), 14, 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {26, UPB_SIZE(88, 160), 15, 11, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {27, UPB_SIZE(112, 208), UPB_SIZE(-117, -217), 8, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {28, UPB_SIZE(24, 32), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {29, UPB_SIZE(92, 168), 16, 11, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {30, UPB_SIZE(14, 14), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {31, UPB_SIZE(15, 15), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {.submsg = &envoy_config_listener_v3_FilterChain_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &envoy_config_listener_v3_Listener_InternalListenerConfig_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &xds_type_matcher_v3_Matcher_msginit},
+ {.submsg = &envoy_config_listener_v3_AdditionalAddress_msginit},
+};
+
+static const upb_MiniTable_Field envoy_config_listener_v3_Listener__fields[31] = {
+ {1, UPB_SIZE(24, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(32, 40), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(36, 48), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(40, 56), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(44, 64), UPB_SIZE(3, 3), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(48, 72), UPB_SIZE(4, 4), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(52, 80), UPB_SIZE(5, 5), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(56, 88), UPB_SIZE(0, 0), 6, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(60, 96), UPB_SIZE(6, 6), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(64, 104), UPB_SIZE(7, 7), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(68, 112), UPB_SIZE(8, 8), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(72, 120), UPB_SIZE(0, 0), 10, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(76, 128), UPB_SIZE(9, 9), 11, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {16, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {17, UPB_SIZE(12, 12), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {18, UPB_SIZE(80, 136), UPB_SIZE(10, 10), 12, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {19, UPB_SIZE(84, 144), UPB_SIZE(11, 11), 13, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {20, UPB_SIZE(88, 152), UPB_SIZE(12, 12), 14, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {21, UPB_SIZE(13, 13), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {22, UPB_SIZE(92, 160), UPB_SIZE(0, 0), 15, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {24, UPB_SIZE(96, 168), UPB_SIZE(13, 13), 16, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {25, UPB_SIZE(100, 176), UPB_SIZE(14, 14), 17, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {26, UPB_SIZE(104, 184), UPB_SIZE(15, 15), 18, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {27, UPB_SIZE(128, 232), UPB_SIZE(-17, -17), 19, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {28, UPB_SIZE(108, 192), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {29, UPB_SIZE(116, 208), UPB_SIZE(16, 16), 20, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {30, UPB_SIZE(20, 20), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {31, UPB_SIZE(21, 21), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {32, UPB_SIZE(120, 216), UPB_SIZE(17, 17), 21, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {33, UPB_SIZE(124, 224), UPB_SIZE(0, 0), 22, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_listener_v3_Listener_msginit = {
&envoy_config_listener_v3_Listener_submsgs[0],
&envoy_config_listener_v3_Listener__fields[0],
- UPB_SIZE(120, 224), 29, upb_ExtMode_NonExtendable, 13, 255, 0,
+ UPB_SIZE(136, 240), 31, kUpb_ExtMode_NonExtendable, 13, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_listener_v3_Listener_DeprecatedV1_submsgs[1] = {
@@ -101,42 +129,45 @@ static const upb_MiniTable_Sub envoy_config_listener_v3_Listener_DeprecatedV1_su
};
static const upb_MiniTable_Field envoy_config_listener_v3_Listener_DeprecatedV1__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_listener_v3_Listener_DeprecatedV1_msginit = {
&envoy_config_listener_v3_Listener_DeprecatedV1_submsgs[0],
&envoy_config_listener_v3_Listener_DeprecatedV1__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_listener_v3_Listener_ConnectionBalanceConfig_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_listener_v3_Listener_ConnectionBalanceConfig_submsgs[2] = {
{.submsg = &envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
};
-static const upb_MiniTable_Field envoy_config_listener_v3_Listener_ConnectionBalanceConfig__fields[1] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_listener_v3_Listener_ConnectionBalanceConfig__fields[2] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_listener_v3_Listener_ConnectionBalanceConfig_msginit = {
&envoy_config_listener_v3_Listener_ConnectionBalanceConfig_submsgs[0],
&envoy_config_listener_v3_Listener_ConnectionBalanceConfig__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
const upb_MiniTable envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
const upb_MiniTable envoy_config_listener_v3_Listener_InternalListenerConfig_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
-static const upb_MiniTable *messages_layout[6] = {
+static const upb_MiniTable *messages_layout[7] = {
+ &envoy_config_listener_v3_AdditionalAddress_msginit,
&envoy_config_listener_v3_ListenerCollection_msginit,
&envoy_config_listener_v3_Listener_msginit,
&envoy_config_listener_v3_Listener_DeprecatedV1_msginit,
@@ -149,7 +180,7 @@ const upb_MiniTable_File envoy_config_listener_v3_listener_proto_upb_file_layout
messages_layout,
NULL,
NULL,
- 6,
+ 7,
0,
0,
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h
index c6b6872f89..031da5c04c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h
@@ -20,18 +20,21 @@
extern "C" {
#endif
+struct envoy_config_listener_v3_AdditionalAddress;
struct envoy_config_listener_v3_ListenerCollection;
struct envoy_config_listener_v3_Listener;
struct envoy_config_listener_v3_Listener_DeprecatedV1;
struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig;
struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance;
struct envoy_config_listener_v3_Listener_InternalListenerConfig;
+typedef struct envoy_config_listener_v3_AdditionalAddress envoy_config_listener_v3_AdditionalAddress;
typedef struct envoy_config_listener_v3_ListenerCollection envoy_config_listener_v3_ListenerCollection;
typedef struct envoy_config_listener_v3_Listener envoy_config_listener_v3_Listener;
typedef struct envoy_config_listener_v3_Listener_DeprecatedV1 envoy_config_listener_v3_Listener_DeprecatedV1;
typedef struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig envoy_config_listener_v3_Listener_ConnectionBalanceConfig;
typedef struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance;
typedef struct envoy_config_listener_v3_Listener_InternalListenerConfig envoy_config_listener_v3_Listener_InternalListenerConfig;
+extern const upb_MiniTable envoy_config_listener_v3_AdditionalAddress_msginit;
extern const upb_MiniTable envoy_config_listener_v3_ListenerCollection_msginit;
extern const upb_MiniTable envoy_config_listener_v3_Listener_msginit;
extern const upb_MiniTable envoy_config_listener_v3_Listener_DeprecatedV1_msginit;
@@ -42,6 +45,7 @@ struct envoy_config_accesslog_v3_AccessLog;
struct envoy_config_core_v3_Address;
struct envoy_config_core_v3_Metadata;
struct envoy_config_core_v3_SocketOption;
+struct envoy_config_core_v3_TypedExtensionConfig;
struct envoy_config_listener_v3_ApiListener;
struct envoy_config_listener_v3_FilterChain;
struct envoy_config_listener_v3_ListenerFilter;
@@ -50,10 +54,12 @@ struct google_protobuf_BoolValue;
struct google_protobuf_Duration;
struct google_protobuf_UInt32Value;
struct xds_core_v3_CollectionEntry;
+struct xds_type_matcher_v3_Matcher;
extern const upb_MiniTable envoy_config_accesslog_v3_AccessLog_msginit;
extern const upb_MiniTable envoy_config_core_v3_Address_msginit;
extern const upb_MiniTable envoy_config_core_v3_Metadata_msginit;
extern const upb_MiniTable envoy_config_core_v3_SocketOption_msginit;
+extern const upb_MiniTable envoy_config_core_v3_TypedExtensionConfig_msginit;
extern const upb_MiniTable envoy_config_listener_v3_ApiListener_msginit;
extern const upb_MiniTable envoy_config_listener_v3_FilterChain_msginit;
extern const upb_MiniTable envoy_config_listener_v3_ListenerFilter_msginit;
@@ -62,6 +68,7 @@ extern const upb_MiniTable google_protobuf_BoolValue_msginit;
extern const upb_MiniTable google_protobuf_Duration_msginit;
extern const upb_MiniTable google_protobuf_UInt32Value_msginit;
extern const upb_MiniTable xds_core_v3_CollectionEntry_msginit;
+extern const upb_MiniTable xds_type_matcher_v3_Matcher_msginit;
typedef enum {
envoy_config_listener_v3_Listener_DEFAULT = 0,
@@ -70,6 +77,65 @@ typedef enum {
+/* envoy.config.listener.v3.AdditionalAddress */
+
+UPB_INLINE envoy_config_listener_v3_AdditionalAddress* envoy_config_listener_v3_AdditionalAddress_new(upb_Arena* arena) {
+ return (envoy_config_listener_v3_AdditionalAddress*)_upb_Message_New(&envoy_config_listener_v3_AdditionalAddress_msginit, arena);
+}
+UPB_INLINE envoy_config_listener_v3_AdditionalAddress* envoy_config_listener_v3_AdditionalAddress_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_config_listener_v3_AdditionalAddress* ret = envoy_config_listener_v3_AdditionalAddress_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_listener_v3_AdditionalAddress_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_config_listener_v3_AdditionalAddress* envoy_config_listener_v3_AdditionalAddress_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_config_listener_v3_AdditionalAddress* ret = envoy_config_listener_v3_AdditionalAddress_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_listener_v3_AdditionalAddress_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_config_listener_v3_AdditionalAddress_serialize(const envoy_config_listener_v3_AdditionalAddress* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_AdditionalAddress_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_config_listener_v3_AdditionalAddress_serialize_ex(const envoy_config_listener_v3_AdditionalAddress* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_AdditionalAddress_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_listener_v3_AdditionalAddress_has_address(const envoy_config_listener_v3_AdditionalAddress* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_listener_v3_AdditionalAddress_clear_address(const envoy_config_listener_v3_AdditionalAddress* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct envoy_config_core_v3_Address* envoy_config_listener_v3_AdditionalAddress_address(const envoy_config_listener_v3_AdditionalAddress* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_Address*);
+}
+
+UPB_INLINE void envoy_config_listener_v3_AdditionalAddress_set_address(envoy_config_listener_v3_AdditionalAddress *msg, struct envoy_config_core_v3_Address* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_Address*) = value;
+}
+UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_listener_v3_AdditionalAddress_mutable_address(envoy_config_listener_v3_AdditionalAddress* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_Address* sub = (struct envoy_config_core_v3_Address*)envoy_config_listener_v3_AdditionalAddress_address(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_core_v3_Address*)_upb_Message_New(&envoy_config_core_v3_Address_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_listener_v3_AdditionalAddress_set_address(msg, sub);
+ }
+ return sub;
+}
+
/* envoy.config.listener.v3.ListenerCollection */
UPB_INLINE envoy_config_listener_v3_ListenerCollection* envoy_config_listener_v3_ListenerCollection_new(upb_Arena* arena) {
@@ -95,25 +161,35 @@ UPB_INLINE envoy_config_listener_v3_ListenerCollection* envoy_config_listener_v3
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_ListenerCollection_serialize(const envoy_config_listener_v3_ListenerCollection* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_ListenerCollection_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_ListenerCollection_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_ListenerCollection_serialize_ex(const envoy_config_listener_v3_ListenerCollection* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_ListenerCollection_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_ListenerCollection_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_listener_v3_ListenerCollection_has_entries(const envoy_config_listener_v3_ListenerCollection* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_listener_v3_ListenerCollection_clear_entries(const envoy_config_listener_v3_ListenerCollection* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const struct xds_core_v3_CollectionEntry* const* envoy_config_listener_v3_ListenerCollection_entries(const envoy_config_listener_v3_ListenerCollection* msg, size_t* len) {
+ return (const struct xds_core_v3_CollectionEntry* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_listener_v3_ListenerCollection_has_entries(const envoy_config_listener_v3_ListenerCollection *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const struct xds_core_v3_CollectionEntry* const* envoy_config_listener_v3_ListenerCollection_entries(const envoy_config_listener_v3_ListenerCollection *msg, size_t *len) { return (const struct xds_core_v3_CollectionEntry* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE struct xds_core_v3_CollectionEntry** envoy_config_listener_v3_ListenerCollection_mutable_entries(envoy_config_listener_v3_ListenerCollection *msg, size_t *len) {
+UPB_INLINE struct xds_core_v3_CollectionEntry** envoy_config_listener_v3_ListenerCollection_mutable_entries(envoy_config_listener_v3_ListenerCollection* msg, size_t* len) {
return (struct xds_core_v3_CollectionEntry**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE struct xds_core_v3_CollectionEntry** envoy_config_listener_v3_ListenerCollection_resize_entries(envoy_config_listener_v3_ListenerCollection *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_CollectionEntry** envoy_config_listener_v3_ListenerCollection_resize_entries(envoy_config_listener_v3_ListenerCollection* msg, size_t len, upb_Arena* arena) {
return (struct xds_core_v3_CollectionEntry**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct xds_core_v3_CollectionEntry* envoy_config_listener_v3_ListenerCollection_add_entries(envoy_config_listener_v3_ListenerCollection *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_CollectionEntry* envoy_config_listener_v3_ListenerCollection_add_entries(envoy_config_listener_v3_ListenerCollection* msg, upb_Arena* arena) {
struct xds_core_v3_CollectionEntry* sub = (struct xds_core_v3_CollectionEntry*)_upb_Message_New(&xds_core_v3_CollectionEntry_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -143,125 +219,287 @@ UPB_INLINE envoy_config_listener_v3_Listener* envoy_config_listener_v3_Listener_
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_Listener_serialize(const envoy_config_listener_v3_Listener* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_Listener_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_Listener_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_Listener_serialize_ex(const envoy_config_listener_v3_Listener* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_Listener_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_Listener_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_listener_v3_Listener_listener_specifier_internal_listener = 27,
envoy_config_listener_v3_Listener_listener_specifier_NOT_SET = 0
} envoy_config_listener_v3_Listener_listener_specifier_oneofcases;
-UPB_INLINE envoy_config_listener_v3_Listener_listener_specifier_oneofcases envoy_config_listener_v3_Listener_listener_specifier_case(const envoy_config_listener_v3_Listener* msg) { return (envoy_config_listener_v3_Listener_listener_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(116, 216), int32_t); }
-
+UPB_INLINE envoy_config_listener_v3_Listener_listener_specifier_oneofcases envoy_config_listener_v3_Listener_listener_specifier_case(const envoy_config_listener_v3_Listener* msg) {
+ return (envoy_config_listener_v3_Listener_listener_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_name(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_listener_v3_Listener_name(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), upb_StringView);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_address(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_address(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_address(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_Address* envoy_config_listener_v3_Listener_address(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 48), const struct envoy_config_core_v3_Address*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 40), const struct envoy_config_core_v3_Address*);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_filter_chains(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 48));
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_filter_chains(const envoy_config_listener_v3_Listener* msg) {
+ _upb_array_detach(msg, UPB_SIZE(36, 48));
+}
+UPB_INLINE const struct envoy_config_listener_v3_FilterChain* const* envoy_config_listener_v3_Listener_filter_chains(const envoy_config_listener_v3_Listener* msg, size_t* len) {
+ return (const struct envoy_config_listener_v3_FilterChain* const*)_upb_array_accessor(msg, UPB_SIZE(36, 48), len);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_use_original_dst(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_use_original_dst(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_filter_chains(const envoy_config_listener_v3_Listener *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(96, 176)); }
-UPB_INLINE const struct envoy_config_listener_v3_FilterChain* const* envoy_config_listener_v3_Listener_filter_chains(const envoy_config_listener_v3_Listener *msg, size_t *len) { return (const struct envoy_config_listener_v3_FilterChain* const*)_upb_array_accessor(msg, UPB_SIZE(96, 176), len); }
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_use_original_dst(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_use_original_dst(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(36, 56), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 56), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_per_connection_buffer_limit_bytes(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_per_connection_buffer_limit_bytes(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 64), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_per_connection_buffer_limit_bytes(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_listener_v3_Listener_per_connection_buffer_limit_bytes(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 64), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 64), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_metadata(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_metadata(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 72), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_metadata(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const struct envoy_config_core_v3_Metadata* envoy_config_listener_v3_Listener_metadata(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(44, 72), const struct envoy_config_core_v3_Metadata*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 72), const struct envoy_config_core_v3_Metadata*);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_deprecated_v1(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_deprecated_v1(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 80), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_deprecated_v1(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE const envoy_config_listener_v3_Listener_DeprecatedV1* envoy_config_listener_v3_Listener_deprecated_v1(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 80), const envoy_config_listener_v3_Listener_DeprecatedV1*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(52, 80), const envoy_config_listener_v3_Listener_DeprecatedV1*);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_drain_type(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_listener_v3_Listener_drain_type(const envoy_config_listener_v3_Listener* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_listener_filters(const envoy_config_listener_v3_Listener *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(100, 184)); }
-UPB_INLINE const struct envoy_config_listener_v3_ListenerFilter* const* envoy_config_listener_v3_Listener_listener_filters(const envoy_config_listener_v3_Listener *msg, size_t *len) { return (const struct envoy_config_listener_v3_ListenerFilter* const*)_upb_array_accessor(msg, UPB_SIZE(100, 184), len); }
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_transparent(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_listener_filters(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(56, 88));
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_listener_filters(const envoy_config_listener_v3_Listener* msg) {
+ _upb_array_detach(msg, UPB_SIZE(56, 88));
+}
+UPB_INLINE const struct envoy_config_listener_v3_ListenerFilter* const* envoy_config_listener_v3_Listener_listener_filters(const envoy_config_listener_v3_Listener* msg, size_t* len) {
+ return (const struct envoy_config_listener_v3_ListenerFilter* const*)_upb_array_accessor(msg, UPB_SIZE(56, 88), len);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_transparent(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_transparent(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 96), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_transparent(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(52, 88), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(60, 96), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_freebind(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_freebind(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 104), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_freebind(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 7); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_freebind(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(56, 96), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(64, 104), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_tcp_fast_open_queue_length(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 8);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_tcp_fast_open_queue_length(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 112), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_tcp_fast_open_queue_length(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 8); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_listener_v3_Listener_tcp_fast_open_queue_length(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(60, 104), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(68, 112), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_socket_options(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(72, 120));
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_socket_options(const envoy_config_listener_v3_Listener* msg) {
+ _upb_array_detach(msg, UPB_SIZE(72, 120));
+}
+UPB_INLINE const struct envoy_config_core_v3_SocketOption* const* envoy_config_listener_v3_Listener_socket_options(const envoy_config_listener_v3_Listener* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_SocketOption* const*)_upb_array_accessor(msg, UPB_SIZE(72, 120), len);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_listener_filters_timeout(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 9);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_listener_filters_timeout(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 128), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_socket_options(const envoy_config_listener_v3_Listener *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(104, 192)); }
-UPB_INLINE const struct envoy_config_core_v3_SocketOption* const* envoy_config_listener_v3_Listener_socket_options(const envoy_config_listener_v3_Listener *msg, size_t *len) { return (const struct envoy_config_core_v3_SocketOption* const*)_upb_array_accessor(msg, UPB_SIZE(104, 192), len); }
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_listener_filters_timeout(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 9); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_listener_v3_Listener_listener_filters_timeout(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(64, 112), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(76, 128), const struct google_protobuf_Duration*);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_traffic_direction(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_listener_v3_Listener_traffic_direction(const envoy_config_listener_v3_Listener* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_continue_on_listener_filters_timeout(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool) = 0;
+}
UPB_INLINE bool envoy_config_listener_v3_Listener_continue_on_listener_filters_timeout(const envoy_config_listener_v3_Listener* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool);
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_udp_listener_config(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 10); }
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_udp_listener_config(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 10);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_udp_listener_config(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 136), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_listener_v3_UdpListenerConfig* envoy_config_listener_v3_Listener_udp_listener_config(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(68, 120), const struct envoy_config_listener_v3_UdpListenerConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(80, 136), const struct envoy_config_listener_v3_UdpListenerConfig*);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_api_listener(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 11);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_api_listener(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(84, 144), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_api_listener(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 11); }
UPB_INLINE const struct envoy_config_listener_v3_ApiListener* envoy_config_listener_v3_Listener_api_listener(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(72, 128), const struct envoy_config_listener_v3_ApiListener*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(84, 144), const struct envoy_config_listener_v3_ApiListener*);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_connection_balance_config(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 12);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_connection_balance_config(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(88, 152), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_connection_balance_config(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 12); }
UPB_INLINE const envoy_config_listener_v3_Listener_ConnectionBalanceConfig* envoy_config_listener_v3_Listener_connection_balance_config(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(76, 136), const envoy_config_listener_v3_Listener_ConnectionBalanceConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(88, 152), const envoy_config_listener_v3_Listener_ConnectionBalanceConfig*);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_reuse_port(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(13, 13), bool) = 0;
}
UPB_INLINE bool envoy_config_listener_v3_Listener_reuse_port(const envoy_config_listener_v3_Listener* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(13, 13), bool);
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_access_log(const envoy_config_listener_v3_Listener *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(108, 200)); }
-UPB_INLINE const struct envoy_config_accesslog_v3_AccessLog* const* envoy_config_listener_v3_Listener_access_log(const envoy_config_listener_v3_Listener *msg, size_t *len) { return (const struct envoy_config_accesslog_v3_AccessLog* const*)_upb_array_accessor(msg, UPB_SIZE(108, 200), len); }
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_tcp_backlog_size(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 13); }
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_access_log(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(92, 160));
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_access_log(const envoy_config_listener_v3_Listener* msg) {
+ _upb_array_detach(msg, UPB_SIZE(92, 160));
+}
+UPB_INLINE const struct envoy_config_accesslog_v3_AccessLog* const* envoy_config_listener_v3_Listener_access_log(const envoy_config_listener_v3_Listener* msg, size_t* len) {
+ return (const struct envoy_config_accesslog_v3_AccessLog* const*)_upb_array_accessor(msg, UPB_SIZE(92, 160), len);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_tcp_backlog_size(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 13);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_tcp_backlog_size(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(96, 168), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_listener_v3_Listener_tcp_backlog_size(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(80, 144), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(96, 168), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_default_filter_chain(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 14);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_default_filter_chain(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(100, 176), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_default_filter_chain(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 14); }
UPB_INLINE const struct envoy_config_listener_v3_FilterChain* envoy_config_listener_v3_Listener_default_filter_chain(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(84, 152), const struct envoy_config_listener_v3_FilterChain*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(100, 176), const struct envoy_config_listener_v3_FilterChain*);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_bind_to_port(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 15);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_bind_to_port(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(104, 184), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_bind_to_port(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 15); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_bind_to_port(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(88, 160), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(104, 184), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_internal_listener(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(16, 16)) == 27;
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_internal_listener(const envoy_config_listener_v3_Listener* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_Listener_InternalListenerConfig*, UPB_SIZE(128, 232), 0, UPB_SIZE(16, 16), envoy_config_listener_v3_Listener_listener_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_listener_v3_Listener_InternalListenerConfig* envoy_config_listener_v3_Listener_internal_listener(const envoy_config_listener_v3_Listener* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_listener_v3_Listener_InternalListenerConfig*, UPB_SIZE(128, 232), UPB_SIZE(16, 16), 27, NULL);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_stat_prefix(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(108, 192), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_internal_listener(const envoy_config_listener_v3_Listener *msg) { return _upb_getoneofcase(msg, UPB_SIZE(116, 216)) == 27; }
-UPB_INLINE const envoy_config_listener_v3_Listener_InternalListenerConfig* envoy_config_listener_v3_Listener_internal_listener(const envoy_config_listener_v3_Listener *msg) { return UPB_READ_ONEOF(msg, const envoy_config_listener_v3_Listener_InternalListenerConfig*, UPB_SIZE(112, 208), UPB_SIZE(116, 216), 27, NULL); }
UPB_INLINE upb_StringView envoy_config_listener_v3_Listener_stat_prefix(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(108, 192), upb_StringView);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_enable_reuse_port(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 16);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_enable_reuse_port(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(116, 208), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_has_enable_reuse_port(const envoy_config_listener_v3_Listener *msg) { return _upb_hasbit(msg, 16); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_enable_reuse_port(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(92, 168), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(116, 208), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_enable_mptcp(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool) = 0;
}
UPB_INLINE bool envoy_config_listener_v3_Listener_enable_mptcp(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(14, 14), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_ignore_global_conn_limit(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(21, 21), bool) = 0;
}
UPB_INLINE bool envoy_config_listener_v3_Listener_ignore_global_conn_limit(const envoy_config_listener_v3_Listener* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(15, 15), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(21, 21), bool);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_filter_chain_matcher(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_hasbit(msg, 17);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_filter_chain_matcher(const envoy_config_listener_v3_Listener* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(120, 216), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct xds_type_matcher_v3_Matcher* envoy_config_listener_v3_Listener_filter_chain_matcher(const envoy_config_listener_v3_Listener* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(120, 216), const struct xds_type_matcher_v3_Matcher*);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_has_additional_addresses(const envoy_config_listener_v3_Listener* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(124, 224));
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_clear_additional_addresses(const envoy_config_listener_v3_Listener* msg) {
+ _upb_array_detach(msg, UPB_SIZE(124, 224));
+}
+UPB_INLINE const envoy_config_listener_v3_AdditionalAddress* const* envoy_config_listener_v3_Listener_additional_addresses(const envoy_config_listener_v3_Listener* msg, size_t* len) {
+ return (const envoy_config_listener_v3_AdditionalAddress* const*)_upb_array_accessor(msg, UPB_SIZE(124, 224), len);
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_name(envoy_config_listener_v3_Listener *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 24), upb_StringView) = value;
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_address(envoy_config_listener_v3_Listener *msg, struct envoy_config_core_v3_Address* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 48), struct envoy_config_core_v3_Address*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), struct envoy_config_core_v3_Address*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_listener_v3_Listener_mutable_address(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_listener_v3_Listener_mutable_address(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Address* sub = (struct envoy_config_core_v3_Address*)envoy_config_listener_v3_Listener_address(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Address*)_upb_Message_New(&envoy_config_core_v3_Address_msginit, arena);
@@ -270,24 +508,23 @@ UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_listener_v3_Listene
}
return sub;
}
-UPB_INLINE struct envoy_config_listener_v3_FilterChain** envoy_config_listener_v3_Listener_mutable_filter_chains(envoy_config_listener_v3_Listener *msg, size_t *len) {
- return (struct envoy_config_listener_v3_FilterChain**)_upb_array_mutable_accessor(msg, UPB_SIZE(96, 176), len);
+UPB_INLINE struct envoy_config_listener_v3_FilterChain** envoy_config_listener_v3_Listener_mutable_filter_chains(envoy_config_listener_v3_Listener* msg, size_t* len) {
+ return (struct envoy_config_listener_v3_FilterChain**)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 48), len);
}
-UPB_INLINE struct envoy_config_listener_v3_FilterChain** envoy_config_listener_v3_Listener_resize_filter_chains(envoy_config_listener_v3_Listener *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_listener_v3_FilterChain**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(96, 176), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_listener_v3_FilterChain** envoy_config_listener_v3_Listener_resize_filter_chains(envoy_config_listener_v3_Listener* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_listener_v3_FilterChain**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 48), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_listener_v3_FilterChain* envoy_config_listener_v3_Listener_add_filter_chains(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_FilterChain* envoy_config_listener_v3_Listener_add_filter_chains(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_FilterChain* sub = (struct envoy_config_listener_v3_FilterChain*)_upb_Message_New(&envoy_config_listener_v3_FilterChain_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(96, 176), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 48), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_use_original_dst(envoy_config_listener_v3_Listener *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(36, 56), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 56), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_mutable_use_original_dst(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_mutable_use_original_dst(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_listener_v3_Listener_use_original_dst(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -298,9 +535,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_m
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_per_connection_buffer_limit_bytes(envoy_config_listener_v3_Listener *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 64), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 64), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_Listener_mutable_per_connection_buffer_limit_bytes(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_Listener_mutable_per_connection_buffer_limit_bytes(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_listener_v3_Listener_per_connection_buffer_limit_bytes(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -311,9 +548,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_Listener
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_metadata(envoy_config_listener_v3_Listener *msg, struct envoy_config_core_v3_Metadata* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(44, 72), struct envoy_config_core_v3_Metadata*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 72), struct envoy_config_core_v3_Metadata*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_listener_v3_Listener_mutable_metadata(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_listener_v3_Listener_mutable_metadata(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Metadata* sub = (struct envoy_config_core_v3_Metadata*)envoy_config_listener_v3_Listener_metadata(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Metadata*)_upb_Message_New(&envoy_config_core_v3_Metadata_msginit, arena);
@@ -324,9 +561,9 @@ UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_listener_v3_Listen
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_deprecated_v1(envoy_config_listener_v3_Listener *msg, envoy_config_listener_v3_Listener_DeprecatedV1* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 80), envoy_config_listener_v3_Listener_DeprecatedV1*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 80), envoy_config_listener_v3_Listener_DeprecatedV1*) = value;
}
-UPB_INLINE struct envoy_config_listener_v3_Listener_DeprecatedV1* envoy_config_listener_v3_Listener_mutable_deprecated_v1(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_Listener_DeprecatedV1* envoy_config_listener_v3_Listener_mutable_deprecated_v1(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_Listener_DeprecatedV1* sub = (struct envoy_config_listener_v3_Listener_DeprecatedV1*)envoy_config_listener_v3_Listener_deprecated_v1(msg);
if (sub == NULL) {
sub = (struct envoy_config_listener_v3_Listener_DeprecatedV1*)_upb_Message_New(&envoy_config_listener_v3_Listener_DeprecatedV1_msginit, arena);
@@ -338,24 +575,23 @@ UPB_INLINE struct envoy_config_listener_v3_Listener_DeprecatedV1* envoy_config_l
UPB_INLINE void envoy_config_listener_v3_Listener_set_drain_type(envoy_config_listener_v3_Listener *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
-UPB_INLINE struct envoy_config_listener_v3_ListenerFilter** envoy_config_listener_v3_Listener_mutable_listener_filters(envoy_config_listener_v3_Listener *msg, size_t *len) {
- return (struct envoy_config_listener_v3_ListenerFilter**)_upb_array_mutable_accessor(msg, UPB_SIZE(100, 184), len);
+UPB_INLINE struct envoy_config_listener_v3_ListenerFilter** envoy_config_listener_v3_Listener_mutable_listener_filters(envoy_config_listener_v3_Listener* msg, size_t* len) {
+ return (struct envoy_config_listener_v3_ListenerFilter**)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 88), len);
}
-UPB_INLINE struct envoy_config_listener_v3_ListenerFilter** envoy_config_listener_v3_Listener_resize_listener_filters(envoy_config_listener_v3_Listener *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_listener_v3_ListenerFilter**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(100, 184), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_listener_v3_ListenerFilter** envoy_config_listener_v3_Listener_resize_listener_filters(envoy_config_listener_v3_Listener* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_listener_v3_ListenerFilter**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 88), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_listener_v3_ListenerFilter* envoy_config_listener_v3_Listener_add_listener_filters(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_ListenerFilter* envoy_config_listener_v3_Listener_add_listener_filters(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_ListenerFilter* sub = (struct envoy_config_listener_v3_ListenerFilter*)_upb_Message_New(&envoy_config_listener_v3_ListenerFilter_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(100, 184), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(56, 88), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_transparent(envoy_config_listener_v3_Listener *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(52, 88), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 96), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_mutable_transparent(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_mutable_transparent(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_listener_v3_Listener_transparent(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -366,9 +602,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_m
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_freebind(envoy_config_listener_v3_Listener *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 7);
- *UPB_PTR_AT(msg, UPB_SIZE(56, 96), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 104), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_mutable_freebind(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_mutable_freebind(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_listener_v3_Listener_freebind(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -379,9 +615,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_m
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_tcp_fast_open_queue_length(envoy_config_listener_v3_Listener *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 8);
- *UPB_PTR_AT(msg, UPB_SIZE(60, 104), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 112), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_Listener_mutable_tcp_fast_open_queue_length(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_Listener_mutable_tcp_fast_open_queue_length(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_listener_v3_Listener_tcp_fast_open_queue_length(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -390,24 +626,23 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_Listener
}
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_SocketOption** envoy_config_listener_v3_Listener_mutable_socket_options(envoy_config_listener_v3_Listener *msg, size_t *len) {
- return (struct envoy_config_core_v3_SocketOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(104, 192), len);
+UPB_INLINE struct envoy_config_core_v3_SocketOption** envoy_config_listener_v3_Listener_mutable_socket_options(envoy_config_listener_v3_Listener* msg, size_t* len) {
+ return (struct envoy_config_core_v3_SocketOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(72, 120), len);
}
-UPB_INLINE struct envoy_config_core_v3_SocketOption** envoy_config_listener_v3_Listener_resize_socket_options(envoy_config_listener_v3_Listener *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_SocketOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(104, 192), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_SocketOption** envoy_config_listener_v3_Listener_resize_socket_options(envoy_config_listener_v3_Listener* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_SocketOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(72, 120), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_SocketOption* envoy_config_listener_v3_Listener_add_socket_options(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_SocketOption* envoy_config_listener_v3_Listener_add_socket_options(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct envoy_config_core_v3_SocketOption* sub = (struct envoy_config_core_v3_SocketOption*)_upb_Message_New(&envoy_config_core_v3_SocketOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(104, 192), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(72, 120), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_listener_filters_timeout(envoy_config_listener_v3_Listener *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 9);
- *UPB_PTR_AT(msg, UPB_SIZE(64, 112), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 128), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_listener_v3_Listener_mutable_listener_filters_timeout(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_listener_v3_Listener_mutable_listener_filters_timeout(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_listener_v3_Listener_listener_filters_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -424,9 +659,9 @@ UPB_INLINE void envoy_config_listener_v3_Listener_set_continue_on_listener_filte
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_udp_listener_config(envoy_config_listener_v3_Listener *msg, struct envoy_config_listener_v3_UdpListenerConfig* value) {
_upb_sethas(msg, 10);
- *UPB_PTR_AT(msg, UPB_SIZE(68, 120), struct envoy_config_listener_v3_UdpListenerConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 136), struct envoy_config_listener_v3_UdpListenerConfig*) = value;
}
-UPB_INLINE struct envoy_config_listener_v3_UdpListenerConfig* envoy_config_listener_v3_Listener_mutable_udp_listener_config(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_UdpListenerConfig* envoy_config_listener_v3_Listener_mutable_udp_listener_config(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_UdpListenerConfig* sub = (struct envoy_config_listener_v3_UdpListenerConfig*)envoy_config_listener_v3_Listener_udp_listener_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_listener_v3_UdpListenerConfig*)_upb_Message_New(&envoy_config_listener_v3_UdpListenerConfig_msginit, arena);
@@ -437,9 +672,9 @@ UPB_INLINE struct envoy_config_listener_v3_UdpListenerConfig* envoy_config_liste
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_api_listener(envoy_config_listener_v3_Listener *msg, struct envoy_config_listener_v3_ApiListener* value) {
_upb_sethas(msg, 11);
- *UPB_PTR_AT(msg, UPB_SIZE(72, 128), struct envoy_config_listener_v3_ApiListener*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(84, 144), struct envoy_config_listener_v3_ApiListener*) = value;
}
-UPB_INLINE struct envoy_config_listener_v3_ApiListener* envoy_config_listener_v3_Listener_mutable_api_listener(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_ApiListener* envoy_config_listener_v3_Listener_mutable_api_listener(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_ApiListener* sub = (struct envoy_config_listener_v3_ApiListener*)envoy_config_listener_v3_Listener_api_listener(msg);
if (sub == NULL) {
sub = (struct envoy_config_listener_v3_ApiListener*)_upb_Message_New(&envoy_config_listener_v3_ApiListener_msginit, arena);
@@ -450,9 +685,9 @@ UPB_INLINE struct envoy_config_listener_v3_ApiListener* envoy_config_listener_v3
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_connection_balance_config(envoy_config_listener_v3_Listener *msg, envoy_config_listener_v3_Listener_ConnectionBalanceConfig* value) {
_upb_sethas(msg, 12);
- *UPB_PTR_AT(msg, UPB_SIZE(76, 136), envoy_config_listener_v3_Listener_ConnectionBalanceConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(88, 152), envoy_config_listener_v3_Listener_ConnectionBalanceConfig*) = value;
}
-UPB_INLINE struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig* envoy_config_listener_v3_Listener_mutable_connection_balance_config(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig* envoy_config_listener_v3_Listener_mutable_connection_balance_config(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig* sub = (struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig*)envoy_config_listener_v3_Listener_connection_balance_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig*)_upb_Message_New(&envoy_config_listener_v3_Listener_ConnectionBalanceConfig_msginit, arena);
@@ -464,24 +699,23 @@ UPB_INLINE struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig* env
UPB_INLINE void envoy_config_listener_v3_Listener_set_reuse_port(envoy_config_listener_v3_Listener *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(13, 13), bool) = value;
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_config_listener_v3_Listener_mutable_access_log(envoy_config_listener_v3_Listener *msg, size_t *len) {
- return (struct envoy_config_accesslog_v3_AccessLog**)_upb_array_mutable_accessor(msg, UPB_SIZE(108, 200), len);
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_config_listener_v3_Listener_mutable_access_log(envoy_config_listener_v3_Listener* msg, size_t* len) {
+ return (struct envoy_config_accesslog_v3_AccessLog**)_upb_array_mutable_accessor(msg, UPB_SIZE(92, 160), len);
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_config_listener_v3_Listener_resize_access_log(envoy_config_listener_v3_Listener *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_accesslog_v3_AccessLog**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(108, 200), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_config_listener_v3_Listener_resize_access_log(envoy_config_listener_v3_Listener* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_accesslog_v3_AccessLog**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(92, 160), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLog* envoy_config_listener_v3_Listener_add_access_log(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLog* envoy_config_listener_v3_Listener_add_access_log(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_AccessLog* sub = (struct envoy_config_accesslog_v3_AccessLog*)_upb_Message_New(&envoy_config_accesslog_v3_AccessLog_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(108, 200), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(92, 160), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_tcp_backlog_size(envoy_config_listener_v3_Listener *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 13);
- *UPB_PTR_AT(msg, UPB_SIZE(80, 144), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(96, 168), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_Listener_mutable_tcp_backlog_size(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_Listener_mutable_tcp_backlog_size(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_listener_v3_Listener_tcp_backlog_size(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -492,9 +726,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_Listener
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_default_filter_chain(envoy_config_listener_v3_Listener *msg, struct envoy_config_listener_v3_FilterChain* value) {
_upb_sethas(msg, 14);
- *UPB_PTR_AT(msg, UPB_SIZE(84, 152), struct envoy_config_listener_v3_FilterChain*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(100, 176), struct envoy_config_listener_v3_FilterChain*) = value;
}
-UPB_INLINE struct envoy_config_listener_v3_FilterChain* envoy_config_listener_v3_Listener_mutable_default_filter_chain(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_FilterChain* envoy_config_listener_v3_Listener_mutable_default_filter_chain(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_FilterChain* sub = (struct envoy_config_listener_v3_FilterChain*)envoy_config_listener_v3_Listener_default_filter_chain(msg);
if (sub == NULL) {
sub = (struct envoy_config_listener_v3_FilterChain*)_upb_Message_New(&envoy_config_listener_v3_FilterChain_msginit, arena);
@@ -505,9 +739,9 @@ UPB_INLINE struct envoy_config_listener_v3_FilterChain* envoy_config_listener_v3
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_bind_to_port(envoy_config_listener_v3_Listener *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 15);
- *UPB_PTR_AT(msg, UPB_SIZE(88, 160), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(104, 184), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_mutable_bind_to_port(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_mutable_bind_to_port(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_listener_v3_Listener_bind_to_port(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -517,9 +751,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_m
return sub;
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_internal_listener(envoy_config_listener_v3_Listener *msg, envoy_config_listener_v3_Listener_InternalListenerConfig* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_Listener_InternalListenerConfig*, UPB_SIZE(112, 208), value, UPB_SIZE(116, 216), 27);
+ UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_Listener_InternalListenerConfig*, UPB_SIZE(128, 232), value, UPB_SIZE(16, 16), 27);
}
-UPB_INLINE struct envoy_config_listener_v3_Listener_InternalListenerConfig* envoy_config_listener_v3_Listener_mutable_internal_listener(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_Listener_InternalListenerConfig* envoy_config_listener_v3_Listener_mutable_internal_listener(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_Listener_InternalListenerConfig* sub = (struct envoy_config_listener_v3_Listener_InternalListenerConfig*)envoy_config_listener_v3_Listener_internal_listener(msg);
if (sub == NULL) {
sub = (struct envoy_config_listener_v3_Listener_InternalListenerConfig*)_upb_Message_New(&envoy_config_listener_v3_Listener_InternalListenerConfig_msginit, arena);
@@ -529,13 +763,13 @@ UPB_INLINE struct envoy_config_listener_v3_Listener_InternalListenerConfig* envo
return sub;
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_stat_prefix(envoy_config_listener_v3_Listener *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(24, 32), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(108, 192), upb_StringView) = value;
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_enable_reuse_port(envoy_config_listener_v3_Listener *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 16);
- *UPB_PTR_AT(msg, UPB_SIZE(92, 168), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(116, 208), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_mutable_enable_reuse_port(envoy_config_listener_v3_Listener *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_mutable_enable_reuse_port(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_listener_v3_Listener_enable_reuse_port(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -545,10 +779,35 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_m
return sub;
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_enable_mptcp(envoy_config_listener_v3_Listener *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(14, 14), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool) = value;
}
UPB_INLINE void envoy_config_listener_v3_Listener_set_ignore_global_conn_limit(envoy_config_listener_v3_Listener *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(15, 15), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(21, 21), bool) = value;
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_set_filter_chain_matcher(envoy_config_listener_v3_Listener *msg, struct xds_type_matcher_v3_Matcher* value) {
+ _upb_sethas(msg, 17);
+ *UPB_PTR_AT(msg, UPB_SIZE(120, 216), struct xds_type_matcher_v3_Matcher*) = value;
+}
+UPB_INLINE struct xds_type_matcher_v3_Matcher* envoy_config_listener_v3_Listener_mutable_filter_chain_matcher(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
+ struct xds_type_matcher_v3_Matcher* sub = (struct xds_type_matcher_v3_Matcher*)envoy_config_listener_v3_Listener_filter_chain_matcher(msg);
+ if (sub == NULL) {
+ sub = (struct xds_type_matcher_v3_Matcher*)_upb_Message_New(&xds_type_matcher_v3_Matcher_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_listener_v3_Listener_set_filter_chain_matcher(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE envoy_config_listener_v3_AdditionalAddress** envoy_config_listener_v3_Listener_mutable_additional_addresses(envoy_config_listener_v3_Listener* msg, size_t* len) {
+ return (envoy_config_listener_v3_AdditionalAddress**)_upb_array_mutable_accessor(msg, UPB_SIZE(124, 224), len);
+}
+UPB_INLINE envoy_config_listener_v3_AdditionalAddress** envoy_config_listener_v3_Listener_resize_additional_addresses(envoy_config_listener_v3_Listener* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_listener_v3_AdditionalAddress**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(124, 224), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_config_listener_v3_AdditionalAddress* envoy_config_listener_v3_Listener_add_additional_addresses(envoy_config_listener_v3_Listener* msg, upb_Arena* arena) {
+ struct envoy_config_listener_v3_AdditionalAddress* sub = (struct envoy_config_listener_v3_AdditionalAddress*)_upb_Message_New(&envoy_config_listener_v3_AdditionalAddress_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(124, 224), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
}
/* envoy.config.listener.v3.Listener.DeprecatedV1 */
@@ -576,13 +835,22 @@ UPB_INLINE envoy_config_listener_v3_Listener_DeprecatedV1* envoy_config_listener
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_Listener_DeprecatedV1_serialize(const envoy_config_listener_v3_Listener_DeprecatedV1* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_Listener_DeprecatedV1_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_Listener_DeprecatedV1_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_Listener_DeprecatedV1_serialize_ex(const envoy_config_listener_v3_Listener_DeprecatedV1* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_Listener_DeprecatedV1_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_Listener_DeprecatedV1_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_DeprecatedV1_has_bind_to_port(const envoy_config_listener_v3_Listener_DeprecatedV1* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_DeprecatedV1_clear_bind_to_port(const envoy_config_listener_v3_Listener_DeprecatedV1* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_Listener_DeprecatedV1_has_bind_to_port(const envoy_config_listener_v3_Listener_DeprecatedV1 *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_DeprecatedV1_bind_to_port(const envoy_config_listener_v3_Listener_DeprecatedV1* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_BoolValue*);
}
@@ -591,7 +859,7 @@ UPB_INLINE void envoy_config_listener_v3_Listener_DeprecatedV1_set_bind_to_port(
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_DeprecatedV1_mutable_bind_to_port(envoy_config_listener_v3_Listener_DeprecatedV1 *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_Listener_DeprecatedV1_mutable_bind_to_port(envoy_config_listener_v3_Listener_DeprecatedV1* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_listener_v3_Listener_DeprecatedV1_bind_to_port(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -626,25 +894,47 @@ UPB_INLINE envoy_config_listener_v3_Listener_ConnectionBalanceConfig* envoy_conf
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_Listener_ConnectionBalanceConfig_serialize(const envoy_config_listener_v3_Listener_ConnectionBalanceConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_Listener_ConnectionBalanceConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_Listener_ConnectionBalanceConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_Listener_ConnectionBalanceConfig_serialize_ex(const envoy_config_listener_v3_Listener_ConnectionBalanceConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_Listener_ConnectionBalanceConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_Listener_ConnectionBalanceConfig_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_listener_v3_Listener_ConnectionBalanceConfig_balance_type_exact_balance = 1,
+ envoy_config_listener_v3_Listener_ConnectionBalanceConfig_balance_type_extend_balance = 2,
envoy_config_listener_v3_Listener_ConnectionBalanceConfig_balance_type_NOT_SET = 0
} envoy_config_listener_v3_Listener_ConnectionBalanceConfig_balance_type_oneofcases;
-UPB_INLINE envoy_config_listener_v3_Listener_ConnectionBalanceConfig_balance_type_oneofcases envoy_config_listener_v3_Listener_ConnectionBalanceConfig_balance_type_case(const envoy_config_listener_v3_Listener_ConnectionBalanceConfig* msg) { return (envoy_config_listener_v3_Listener_ConnectionBalanceConfig_balance_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_listener_v3_Listener_ConnectionBalanceConfig_has_exact_balance(const envoy_config_listener_v3_Listener_ConnectionBalanceConfig *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance* envoy_config_listener_v3_Listener_ConnectionBalanceConfig_exact_balance(const envoy_config_listener_v3_Listener_ConnectionBalanceConfig *msg) { return UPB_READ_ONEOF(msg, const envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
+UPB_INLINE envoy_config_listener_v3_Listener_ConnectionBalanceConfig_balance_type_oneofcases envoy_config_listener_v3_Listener_ConnectionBalanceConfig_balance_type_case(const envoy_config_listener_v3_Listener_ConnectionBalanceConfig* msg) {
+ return (envoy_config_listener_v3_Listener_ConnectionBalanceConfig_balance_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_ConnectionBalanceConfig_has_exact_balance(const envoy_config_listener_v3_Listener_ConnectionBalanceConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_ConnectionBalanceConfig_clear_exact_balance(const envoy_config_listener_v3_Listener_ConnectionBalanceConfig* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_listener_v3_Listener_ConnectionBalanceConfig_balance_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance* envoy_config_listener_v3_Listener_ConnectionBalanceConfig_exact_balance(const envoy_config_listener_v3_Listener_ConnectionBalanceConfig* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_listener_v3_Listener_ConnectionBalanceConfig_has_extend_balance(const envoy_config_listener_v3_Listener_ConnectionBalanceConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_listener_v3_Listener_ConnectionBalanceConfig_clear_extend_balance(const envoy_config_listener_v3_Listener_ConnectionBalanceConfig* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_listener_v3_Listener_ConnectionBalanceConfig_balance_type_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_listener_v3_Listener_ConnectionBalanceConfig_extend_balance(const envoy_config_listener_v3_Listener_ConnectionBalanceConfig* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
UPB_INLINE void envoy_config_listener_v3_Listener_ConnectionBalanceConfig_set_exact_balance(envoy_config_listener_v3_Listener_ConnectionBalanceConfig *msg, envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance* envoy_config_listener_v3_Listener_ConnectionBalanceConfig_mutable_exact_balance(envoy_config_listener_v3_Listener_ConnectionBalanceConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance* envoy_config_listener_v3_Listener_ConnectionBalanceConfig_mutable_exact_balance(envoy_config_listener_v3_Listener_ConnectionBalanceConfig* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance* sub = (struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance*)envoy_config_listener_v3_Listener_ConnectionBalanceConfig_exact_balance(msg);
if (sub == NULL) {
sub = (struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance*)_upb_Message_New(&envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance_msginit, arena);
@@ -653,6 +943,18 @@ UPB_INLINE struct envoy_config_listener_v3_Listener_ConnectionBalanceConfig_Exac
}
return sub;
}
+UPB_INLINE void envoy_config_listener_v3_Listener_ConnectionBalanceConfig_set_extend_balance(envoy_config_listener_v3_Listener_ConnectionBalanceConfig *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
+}
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_listener_v3_Listener_ConnectionBalanceConfig_mutable_extend_balance(envoy_config_listener_v3_Listener_ConnectionBalanceConfig* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_listener_v3_Listener_ConnectionBalanceConfig_extend_balance(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_listener_v3_Listener_ConnectionBalanceConfig_set_extend_balance(msg, sub);
+ }
+ return sub;
+}
/* envoy.config.listener.v3.Listener.ConnectionBalanceConfig.ExactBalance */
@@ -679,11 +981,15 @@ UPB_INLINE envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalanc
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance_serialize(const envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance_serialize_ex(const envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_Listener_ConnectionBalanceConfig_ExactBalance_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -712,11 +1018,15 @@ UPB_INLINE envoy_config_listener_v3_Listener_InternalListenerConfig* envoy_confi
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_Listener_InternalListenerConfig_serialize(const envoy_config_listener_v3_Listener_InternalListenerConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_Listener_InternalListenerConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_Listener_InternalListenerConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_Listener_InternalListenerConfig_serialize_ex(const envoy_config_listener_v3_Listener_InternalListenerConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_Listener_InternalListenerConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_Listener_InternalListenerConfig_msginit, options, arena, &ptr, len);
+ return ptr;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c
index a9d4da30d0..b5b035b8df 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c
@@ -11,7 +11,7 @@
#include "envoy/config/listener/v3/listener_components.upb.h"
#include "envoy/config/core/v3/address.upb.h"
#include "envoy/config/core/v3/base.upb.h"
-#include "envoy/config/core/v3/extension.upb.h"
+#include "envoy/config/core/v3/config_source.upb.h"
#include "envoy/type/v3/range.upb.h"
#include "google/protobuf/any.upb.h"
#include "google/protobuf/duration.upb.h"
@@ -24,72 +24,75 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_config_listener_v3_Filter_submsgs[2] = {
- {.submsg = &envoy_config_core_v3_ExtensionConfigSource_msginit},
{.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &envoy_config_core_v3_ExtensionConfigSource_msginit},
};
static const upb_MiniTable_Field envoy_config_listener_v3_Filter__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_listener_v3_Filter_msginit = {
&envoy_config_listener_v3_Filter_submsgs[0],
&envoy_config_listener_v3_Filter__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_listener_v3_FilterChainMatch_submsgs[2] = {
+static const upb_MiniTable_Sub envoy_config_listener_v3_FilterChainMatch_submsgs[5] = {
{.submsg = &envoy_config_core_v3_CidrRange_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_core_v3_CidrRange_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_core_v3_CidrRange_msginit},
};
static const upb_MiniTable_Field envoy_config_listener_v3_FilterChainMatch__fields[11] = {
- {3, UPB_SIZE(32, 56), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(24, 40), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(36, 64), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(40, 72), 0, 0, 13, kUpb_FieldMode_Array | upb_LabelFlags_IsPacked | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(28, 48), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(16, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {10, UPB_SIZE(44, 80), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(48, 88), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {13, UPB_SIZE(52, 96), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 32), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 40), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(28, 48), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Array | kUpb_LabelFlags_IsPacked | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(32, 56), UPB_SIZE(2, 2), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(36, 64), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(44, 80), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(48, 88), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(52, 96), UPB_SIZE(0, 0), 4, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_listener_v3_FilterChainMatch_msginit = {
&envoy_config_listener_v3_FilterChainMatch_submsgs[0],
&envoy_config_listener_v3_FilterChainMatch__fields[0],
- UPB_SIZE(56, 112), 11, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(56, 104), 11, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_listener_v3_FilterChain_submsgs[7] = {
+ {.submsg = &envoy_config_listener_v3_FilterChainMatch_msginit},
+ {.submsg = &envoy_config_listener_v3_Filter_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
{.submsg = &envoy_config_core_v3_Metadata_msginit},
{.submsg = &envoy_config_core_v3_TransportSocket_msginit},
- {.submsg = &envoy_config_listener_v3_Filter_msginit},
{.submsg = &envoy_config_listener_v3_FilterChain_OnDemandConfiguration_msginit},
- {.submsg = &envoy_config_listener_v3_FilterChainMatch_msginit},
- {.submsg = &google_protobuf_BoolValue_msginit},
{.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field envoy_config_listener_v3_FilterChain__fields[8] = {
- {1, UPB_SIZE(12, 24), 1, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(36, 72), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 2, 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 40), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(24, 48), 4, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {8, UPB_SIZE(28, 56), 5, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(32, 64), 6, 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 24), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(16, 32), UPB_SIZE(3, 3), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(20, 40), UPB_SIZE(4, 4), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(24, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(32, 64), UPB_SIZE(5, 5), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(36, 72), UPB_SIZE(6, 6), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_listener_v3_FilterChain_msginit = {
&envoy_config_listener_v3_FilterChain_submsgs[0],
&envoy_config_listener_v3_FilterChain__fields[0],
- UPB_SIZE(40, 80), 8, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(40, 80), 8, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_listener_v3_FilterChain_OnDemandConfiguration_submsgs[1] = {
@@ -97,33 +100,34 @@ static const upb_MiniTable_Sub envoy_config_listener_v3_FilterChain_OnDemandConf
};
static const upb_MiniTable_Field envoy_config_listener_v3_FilterChain_OnDemandConfiguration__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_listener_v3_FilterChain_OnDemandConfiguration_msginit = {
&envoy_config_listener_v3_FilterChain_OnDemandConfiguration_submsgs[0],
&envoy_config_listener_v3_FilterChain_OnDemandConfiguration__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_listener_v3_ListenerFilterChainMatchPredicate_submsgs[3] = {
- {.submsg = &envoy_config_listener_v3_ListenerFilterChainMatchPredicate_msginit},
+static const upb_MiniTable_Sub envoy_config_listener_v3_ListenerFilterChainMatchPredicate_submsgs[4] = {
+ {.submsg = &envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_msginit},
{.submsg = &envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_msginit},
+ {.submsg = &envoy_config_listener_v3_ListenerFilterChainMatchPredicate_msginit},
{.submsg = &envoy_type_v3_Int32Range_msginit},
};
static const upb_MiniTable_Field envoy_config_listener_v3_ListenerFilterChainMatchPredicate__fields[5] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_listener_v3_ListenerFilterChainMatchPredicate_msginit = {
&envoy_config_listener_v3_ListenerFilterChainMatchPredicate_submsgs[0],
&envoy_config_listener_v3_ListenerFilterChainMatchPredicate__fields[0],
- UPB_SIZE(8, 16), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(8, 16), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_submsgs[1] = {
@@ -131,30 +135,32 @@ static const upb_MiniTable_Sub envoy_config_listener_v3_ListenerFilterChainMatch
};
static const upb_MiniTable_Field envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_msginit = {
&envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_submsgs[0],
&envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_listener_v3_ListenerFilter_submsgs[2] = {
- {.submsg = &envoy_config_listener_v3_ListenerFilterChainMatchPredicate_msginit},
+static const upb_MiniTable_Sub envoy_config_listener_v3_ListenerFilter_submsgs[3] = {
{.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &envoy_config_listener_v3_ListenerFilterChainMatchPredicate_msginit},
+ {.submsg = &envoy_config_core_v3_ExtensionConfigSource_msginit},
};
-static const upb_MiniTable_Field envoy_config_listener_v3_ListenerFilter__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), UPB_SIZE(-21, -41), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_listener_v3_ListenerFilter__fields[4] = {
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 32), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 24), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 32), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_listener_v3_ListenerFilter_msginit = {
&envoy_config_listener_v3_ListenerFilter_submsgs[0],
&envoy_config_listener_v3_ListenerFilter__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[7] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h
index d870186f3d..3052fb84ee 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h
@@ -93,34 +93,56 @@ UPB_INLINE envoy_config_listener_v3_Filter* envoy_config_listener_v3_Filter_pars
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_Filter_serialize(const envoy_config_listener_v3_Filter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_Filter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_Filter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_Filter_serialize_ex(const envoy_config_listener_v3_Filter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_Filter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_Filter_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_listener_v3_Filter_config_type_typed_config = 4,
envoy_config_listener_v3_Filter_config_type_config_discovery = 5,
envoy_config_listener_v3_Filter_config_type_NOT_SET = 0
} envoy_config_listener_v3_Filter_config_type_oneofcases;
-UPB_INLINE envoy_config_listener_v3_Filter_config_type_oneofcases envoy_config_listener_v3_Filter_config_type_case(const envoy_config_listener_v3_Filter* msg) { return (envoy_config_listener_v3_Filter_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_config_listener_v3_Filter_config_type_oneofcases envoy_config_listener_v3_Filter_config_type_case(const envoy_config_listener_v3_Filter* msg) {
+ return (envoy_config_listener_v3_Filter_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_listener_v3_Filter_clear_name(const envoy_config_listener_v3_Filter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_listener_v3_Filter_name(const envoy_config_listener_v3_Filter* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_listener_v3_Filter_has_typed_config(const envoy_config_listener_v3_Filter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_config_listener_v3_Filter_clear_typed_config(const envoy_config_listener_v3_Filter* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_listener_v3_Filter_config_type_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_listener_v3_Filter_typed_config(const envoy_config_listener_v3_Filter* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 4, NULL);
+}
+UPB_INLINE bool envoy_config_listener_v3_Filter_has_config_discovery(const envoy_config_listener_v3_Filter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_config_listener_v3_Filter_clear_config_discovery(const envoy_config_listener_v3_Filter* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_ExtensionConfigSource*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_listener_v3_Filter_config_type_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_ExtensionConfigSource* envoy_config_listener_v3_Filter_config_discovery(const envoy_config_listener_v3_Filter* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_ExtensionConfigSource*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 5, NULL);
}
-UPB_INLINE bool envoy_config_listener_v3_Filter_has_typed_config(const envoy_config_listener_v3_Filter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 4; }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_listener_v3_Filter_typed_config(const envoy_config_listener_v3_Filter *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 4, NULL); }
-UPB_INLINE bool envoy_config_listener_v3_Filter_has_config_discovery(const envoy_config_listener_v3_Filter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 5; }
-UPB_INLINE const struct envoy_config_core_v3_ExtensionConfigSource* envoy_config_listener_v3_Filter_config_discovery(const envoy_config_listener_v3_Filter *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_ExtensionConfigSource*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 5, NULL); }
UPB_INLINE void envoy_config_listener_v3_Filter_set_name(envoy_config_listener_v3_Filter *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_listener_v3_Filter_set_typed_config(envoy_config_listener_v3_Filter *msg, struct google_protobuf_Any* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 4);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_listener_v3_Filter_mutable_typed_config(envoy_config_listener_v3_Filter *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_listener_v3_Filter_mutable_typed_config(envoy_config_listener_v3_Filter* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_listener_v3_Filter_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -130,9 +152,9 @@ UPB_INLINE struct google_protobuf_Any* envoy_config_listener_v3_Filter_mutable_t
return sub;
}
UPB_INLINE void envoy_config_listener_v3_Filter_set_config_discovery(envoy_config_listener_v3_Filter *msg, struct envoy_config_core_v3_ExtensionConfigSource* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_ExtensionConfigSource*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 5);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_ExtensionConfigSource*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct envoy_config_core_v3_ExtensionConfigSource* envoy_config_listener_v3_Filter_mutable_config_discovery(envoy_config_listener_v3_Filter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ExtensionConfigSource* envoy_config_listener_v3_Filter_mutable_config_discovery(envoy_config_listener_v3_Filter* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ExtensionConfigSource* sub = (struct envoy_config_core_v3_ExtensionConfigSource*)envoy_config_listener_v3_Filter_config_discovery(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ExtensionConfigSource*)_upb_Message_New(&envoy_config_core_v3_ExtensionConfigSource_msginit, arena);
@@ -167,60 +189,118 @@ UPB_INLINE envoy_config_listener_v3_FilterChainMatch* envoy_config_listener_v3_F
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_FilterChainMatch_serialize(const envoy_config_listener_v3_FilterChainMatch* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_FilterChainMatch_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_FilterChainMatch_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_FilterChainMatch_serialize_ex(const envoy_config_listener_v3_FilterChainMatch* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_FilterChainMatch_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_FilterChainMatch_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_has_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 8));
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_clear_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 8));
+}
+UPB_INLINE const struct envoy_config_core_v3_CidrRange* const* envoy_config_listener_v3_FilterChainMatch_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_CidrRange* const*)_upb_array_accessor(msg, UPB_SIZE(8, 8), len);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_clear_address_suffix(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
-UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_has_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 56)); }
-UPB_INLINE const struct envoy_config_core_v3_CidrRange* const* envoy_config_listener_v3_FilterChainMatch_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch *msg, size_t *len) { return (const struct envoy_config_core_v3_CidrRange* const*)_upb_array_accessor(msg, UPB_SIZE(32, 56), len); }
UPB_INLINE upb_StringView envoy_config_listener_v3_FilterChainMatch_address_suffix(const envoy_config_listener_v3_FilterChainMatch* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView);
+}
+UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_has_suffix_len(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_clear_suffix_len(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_has_suffix_len(const envoy_config_listener_v3_FilterChainMatch *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_listener_v3_FilterChainMatch_suffix_len(const envoy_config_listener_v3_FilterChainMatch* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_has_source_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 40));
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_clear_source_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 40));
+}
+UPB_INLINE const struct envoy_config_core_v3_CidrRange* const* envoy_config_listener_v3_FilterChainMatch_source_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_CidrRange* const*)_upb_array_accessor(msg, UPB_SIZE(24, 40), len);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_clear_source_ports(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 48));
+}
+UPB_INLINE uint32_t const* envoy_config_listener_v3_FilterChainMatch_source_ports(const envoy_config_listener_v3_FilterChainMatch* msg, size_t* len) {
+ return (uint32_t const*)_upb_array_accessor(msg, UPB_SIZE(28, 48), len);
+}
+UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_has_destination_port(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_clear_destination_port(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_has_source_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 64)); }
-UPB_INLINE const struct envoy_config_core_v3_CidrRange* const* envoy_config_listener_v3_FilterChainMatch_source_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch *msg, size_t *len) { return (const struct envoy_config_core_v3_CidrRange* const*)_upb_array_accessor(msg, UPB_SIZE(36, 64), len); }
-UPB_INLINE uint32_t const* envoy_config_listener_v3_FilterChainMatch_source_ports(const envoy_config_listener_v3_FilterChainMatch *msg, size_t *len) { return (uint32_t const*)_upb_array_accessor(msg, UPB_SIZE(40, 72), len); }
-UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_has_destination_port(const envoy_config_listener_v3_FilterChainMatch *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_listener_v3_FilterChainMatch_destination_port(const envoy_config_listener_v3_FilterChainMatch* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_clear_transport_protocol(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_listener_v3_FilterChainMatch_transport_protocol(const envoy_config_listener_v3_FilterChainMatch* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), upb_StringView);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_clear_application_protocols(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ _upb_array_detach(msg, UPB_SIZE(44, 80));
+}
+UPB_INLINE upb_StringView const* envoy_config_listener_v3_FilterChainMatch_application_protocols(const envoy_config_listener_v3_FilterChainMatch* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(44, 80), len);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_clear_server_names(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ _upb_array_detach(msg, UPB_SIZE(48, 88));
+}
+UPB_INLINE upb_StringView const* envoy_config_listener_v3_FilterChainMatch_server_names(const envoy_config_listener_v3_FilterChainMatch* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(48, 88), len);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_clear_source_type(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
-UPB_INLINE upb_StringView const* envoy_config_listener_v3_FilterChainMatch_application_protocols(const envoy_config_listener_v3_FilterChainMatch *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(44, 80), len); }
-UPB_INLINE upb_StringView const* envoy_config_listener_v3_FilterChainMatch_server_names(const envoy_config_listener_v3_FilterChainMatch *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(48, 88), len); }
UPB_INLINE int32_t envoy_config_listener_v3_FilterChainMatch_source_type(const envoy_config_listener_v3_FilterChainMatch* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_has_direct_source_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(52, 96)); }
-UPB_INLINE const struct envoy_config_core_v3_CidrRange* const* envoy_config_listener_v3_FilterChainMatch_direct_source_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch *msg, size_t *len) { return (const struct envoy_config_core_v3_CidrRange* const*)_upb_array_accessor(msg, UPB_SIZE(52, 96), len); }
+UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_has_direct_source_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(52, 96));
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_clear_direct_source_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch* msg) {
+ _upb_array_detach(msg, UPB_SIZE(52, 96));
+}
+UPB_INLINE const struct envoy_config_core_v3_CidrRange* const* envoy_config_listener_v3_FilterChainMatch_direct_source_prefix_ranges(const envoy_config_listener_v3_FilterChainMatch* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_CidrRange* const*)_upb_array_accessor(msg, UPB_SIZE(52, 96), len);
+}
-UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_config_listener_v3_FilterChainMatch_mutable_prefix_ranges(envoy_config_listener_v3_FilterChainMatch *msg, size_t *len) {
- return (struct envoy_config_core_v3_CidrRange**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 56), len);
+UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_config_listener_v3_FilterChainMatch_mutable_prefix_ranges(envoy_config_listener_v3_FilterChainMatch* msg, size_t* len) {
+ return (struct envoy_config_core_v3_CidrRange**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 8), len);
}
-UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_config_listener_v3_FilterChainMatch_resize_prefix_ranges(envoy_config_listener_v3_FilterChainMatch *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_CidrRange**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 56), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_config_listener_v3_FilterChainMatch_resize_prefix_ranges(envoy_config_listener_v3_FilterChainMatch* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_CidrRange**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_listener_v3_FilterChainMatch_add_prefix_ranges(envoy_config_listener_v3_FilterChainMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_listener_v3_FilterChainMatch_add_prefix_ranges(envoy_config_listener_v3_FilterChainMatch* msg, upb_Arena* arena) {
struct envoy_config_core_v3_CidrRange* sub = (struct envoy_config_core_v3_CidrRange*)_upb_Message_New(&envoy_config_core_v3_CidrRange_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(32, 56), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_set_address_suffix(envoy_config_listener_v3_FilterChainMatch *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = value;
}
UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_set_suffix_len(envoy_config_listener_v3_FilterChainMatch *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_FilterChainMatch_mutable_suffix_len(envoy_config_listener_v3_FilterChainMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_FilterChainMatch_mutable_suffix_len(envoy_config_listener_v3_FilterChainMatch* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_listener_v3_FilterChainMatch_suffix_len(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -229,34 +309,32 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_FilterCh
}
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_config_listener_v3_FilterChainMatch_mutable_source_prefix_ranges(envoy_config_listener_v3_FilterChainMatch *msg, size_t *len) {
- return (struct envoy_config_core_v3_CidrRange**)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 64), len);
+UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_config_listener_v3_FilterChainMatch_mutable_source_prefix_ranges(envoy_config_listener_v3_FilterChainMatch* msg, size_t* len) {
+ return (struct envoy_config_core_v3_CidrRange**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 40), len);
}
-UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_config_listener_v3_FilterChainMatch_resize_source_prefix_ranges(envoy_config_listener_v3_FilterChainMatch *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_CidrRange**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 64), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_config_listener_v3_FilterChainMatch_resize_source_prefix_ranges(envoy_config_listener_v3_FilterChainMatch* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_CidrRange**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_listener_v3_FilterChainMatch_add_source_prefix_ranges(envoy_config_listener_v3_FilterChainMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_listener_v3_FilterChainMatch_add_source_prefix_ranges(envoy_config_listener_v3_FilterChainMatch* msg, upb_Arena* arena) {
struct envoy_config_core_v3_CidrRange* sub = (struct envoy_config_core_v3_CidrRange*)_upb_Message_New(&envoy_config_core_v3_CidrRange_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(36, 64), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE uint32_t* envoy_config_listener_v3_FilterChainMatch_mutable_source_ports(envoy_config_listener_v3_FilterChainMatch *msg, size_t *len) {
- return (uint32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 72), len);
+UPB_INLINE uint32_t* envoy_config_listener_v3_FilterChainMatch_mutable_source_ports(envoy_config_listener_v3_FilterChainMatch* msg, size_t* len) {
+ return (uint32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 48), len);
}
-UPB_INLINE uint32_t* envoy_config_listener_v3_FilterChainMatch_resize_source_ports(envoy_config_listener_v3_FilterChainMatch *msg, size_t len, upb_Arena *arena) {
- return (uint32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 72), len, 2, arena);
+UPB_INLINE uint32_t* envoy_config_listener_v3_FilterChainMatch_resize_source_ports(envoy_config_listener_v3_FilterChainMatch* msg, size_t len, upb_Arena* arena) {
+ return (uint32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 48), len, 2, arena);
}
-UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_add_source_ports(envoy_config_listener_v3_FilterChainMatch *msg, uint32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 72), 2, &val,
- arena);
+UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_add_source_ports(envoy_config_listener_v3_FilterChainMatch* msg, uint32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 48), 2, &val, arena);
}
UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_set_destination_port(envoy_config_listener_v3_FilterChainMatch *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 48), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_FilterChainMatch_mutable_destination_port(envoy_config_listener_v3_FilterChainMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_FilterChainMatch_mutable_destination_port(envoy_config_listener_v3_FilterChainMatch* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_listener_v3_FilterChainMatch_destination_port(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -266,41 +344,38 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_FilterCh
return sub;
}
UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_set_transport_protocol(envoy_config_listener_v3_FilterChainMatch *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), upb_StringView) = value;
}
-UPB_INLINE upb_StringView* envoy_config_listener_v3_FilterChainMatch_mutable_application_protocols(envoy_config_listener_v3_FilterChainMatch *msg, size_t *len) {
+UPB_INLINE upb_StringView* envoy_config_listener_v3_FilterChainMatch_mutable_application_protocols(envoy_config_listener_v3_FilterChainMatch* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 80), len);
}
-UPB_INLINE upb_StringView* envoy_config_listener_v3_FilterChainMatch_resize_application_protocols(envoy_config_listener_v3_FilterChainMatch *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* envoy_config_listener_v3_FilterChainMatch_resize_application_protocols(envoy_config_listener_v3_FilterChainMatch* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 80), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_add_application_protocols(envoy_config_listener_v3_FilterChainMatch *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(44, 80), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_add_application_protocols(envoy_config_listener_v3_FilterChainMatch* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(44, 80), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE upb_StringView* envoy_config_listener_v3_FilterChainMatch_mutable_server_names(envoy_config_listener_v3_FilterChainMatch *msg, size_t *len) {
+UPB_INLINE upb_StringView* envoy_config_listener_v3_FilterChainMatch_mutable_server_names(envoy_config_listener_v3_FilterChainMatch* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 88), len);
}
-UPB_INLINE upb_StringView* envoy_config_listener_v3_FilterChainMatch_resize_server_names(envoy_config_listener_v3_FilterChainMatch *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* envoy_config_listener_v3_FilterChainMatch_resize_server_names(envoy_config_listener_v3_FilterChainMatch* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 88), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_add_server_names(envoy_config_listener_v3_FilterChainMatch *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(48, 88), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_listener_v3_FilterChainMatch_add_server_names(envoy_config_listener_v3_FilterChainMatch* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(48, 88), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_config_listener_v3_FilterChainMatch_set_source_type(envoy_config_listener_v3_FilterChainMatch *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
-UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_config_listener_v3_FilterChainMatch_mutable_direct_source_prefix_ranges(envoy_config_listener_v3_FilterChainMatch *msg, size_t *len) {
+UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_config_listener_v3_FilterChainMatch_mutable_direct_source_prefix_ranges(envoy_config_listener_v3_FilterChainMatch* msg, size_t* len) {
return (struct envoy_config_core_v3_CidrRange**)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 96), len);
}
-UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_config_listener_v3_FilterChainMatch_resize_direct_source_prefix_ranges(envoy_config_listener_v3_FilterChainMatch *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_config_listener_v3_FilterChainMatch_resize_direct_source_prefix_ranges(envoy_config_listener_v3_FilterChainMatch* msg, size_t len, upb_Arena* arena) {
return (struct envoy_config_core_v3_CidrRange**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 96), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_listener_v3_FilterChainMatch_add_direct_source_prefix_ranges(envoy_config_listener_v3_FilterChainMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_listener_v3_FilterChainMatch_add_direct_source_prefix_ranges(envoy_config_listener_v3_FilterChainMatch* msg, upb_Arena* arena) {
struct envoy_config_core_v3_CidrRange* sub = (struct envoy_config_core_v3_CidrRange*)_upb_Message_New(&envoy_config_core_v3_CidrRange_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(52, 96), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(52, 96), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -330,47 +405,91 @@ UPB_INLINE envoy_config_listener_v3_FilterChain* envoy_config_listener_v3_Filter
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_FilterChain_serialize(const envoy_config_listener_v3_FilterChain* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_FilterChain_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_FilterChain_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_FilterChain_serialize_ex(const envoy_config_listener_v3_FilterChain* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_FilterChain_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_FilterChain_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_listener_v3_FilterChain_has_filter_chain_match(const envoy_config_listener_v3_FilterChain* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChain_clear_filter_chain_match(const envoy_config_listener_v3_FilterChain* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_FilterChain_has_filter_chain_match(const envoy_config_listener_v3_FilterChain *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_listener_v3_FilterChainMatch* envoy_config_listener_v3_FilterChain_filter_chain_match(const envoy_config_listener_v3_FilterChain* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_config_listener_v3_FilterChainMatch*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_listener_v3_FilterChainMatch*);
+}
+UPB_INLINE bool envoy_config_listener_v3_FilterChain_has_filters(const envoy_config_listener_v3_FilterChain* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChain_clear_filters(const envoy_config_listener_v3_FilterChain* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const envoy_config_listener_v3_Filter* const* envoy_config_listener_v3_FilterChain_filters(const envoy_config_listener_v3_FilterChain* msg, size_t* len) {
+ return (const envoy_config_listener_v3_Filter* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool envoy_config_listener_v3_FilterChain_has_use_proxy_proto(const envoy_config_listener_v3_FilterChain* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChain_clear_use_proxy_proto(const envoy_config_listener_v3_FilterChain* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_FilterChain_has_filters(const envoy_config_listener_v3_FilterChain *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 72)); }
-UPB_INLINE const envoy_config_listener_v3_Filter* const* envoy_config_listener_v3_FilterChain_filters(const envoy_config_listener_v3_FilterChain *msg, size_t *len) { return (const envoy_config_listener_v3_Filter* const*)_upb_array_accessor(msg, UPB_SIZE(36, 72), len); }
-UPB_INLINE bool envoy_config_listener_v3_FilterChain_has_use_proxy_proto(const envoy_config_listener_v3_FilterChain *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_listener_v3_FilterChain_use_proxy_proto(const envoy_config_listener_v3_FilterChain* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_config_listener_v3_FilterChain_has_metadata(const envoy_config_listener_v3_FilterChain* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChain_clear_metadata(const envoy_config_listener_v3_FilterChain* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_FilterChain_has_metadata(const envoy_config_listener_v3_FilterChain *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct envoy_config_core_v3_Metadata* envoy_config_listener_v3_FilterChain_metadata(const envoy_config_listener_v3_FilterChain* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct envoy_config_core_v3_Metadata*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_config_core_v3_Metadata*);
+}
+UPB_INLINE bool envoy_config_listener_v3_FilterChain_has_transport_socket(const envoy_config_listener_v3_FilterChain* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChain_clear_transport_socket(const envoy_config_listener_v3_FilterChain* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_FilterChain_has_transport_socket(const envoy_config_listener_v3_FilterChain *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const struct envoy_config_core_v3_TransportSocket* envoy_config_listener_v3_FilterChain_transport_socket(const envoy_config_listener_v3_FilterChain* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct envoy_config_core_v3_TransportSocket*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct envoy_config_core_v3_TransportSocket*);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChain_clear_name(const envoy_config_listener_v3_FilterChain* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_listener_v3_FilterChain_name(const envoy_config_listener_v3_FilterChain* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView);
+}
+UPB_INLINE bool envoy_config_listener_v3_FilterChain_has_on_demand_configuration(const envoy_config_listener_v3_FilterChain* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChain_clear_on_demand_configuration(const envoy_config_listener_v3_FilterChain* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_FilterChain_has_on_demand_configuration(const envoy_config_listener_v3_FilterChain *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE const envoy_config_listener_v3_FilterChain_OnDemandConfiguration* envoy_config_listener_v3_FilterChain_on_demand_configuration(const envoy_config_listener_v3_FilterChain* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const envoy_config_listener_v3_FilterChain_OnDemandConfiguration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const envoy_config_listener_v3_FilterChain_OnDemandConfiguration*);
+}
+UPB_INLINE bool envoy_config_listener_v3_FilterChain_has_transport_socket_connect_timeout(const envoy_config_listener_v3_FilterChain* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChain_clear_transport_socket_connect_timeout(const envoy_config_listener_v3_FilterChain* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_FilterChain_has_transport_socket_connect_timeout(const envoy_config_listener_v3_FilterChain *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_listener_v3_FilterChain_transport_socket_connect_timeout(const envoy_config_listener_v3_FilterChain* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const struct google_protobuf_Duration*);
}
UPB_INLINE void envoy_config_listener_v3_FilterChain_set_filter_chain_match(envoy_config_listener_v3_FilterChain *msg, envoy_config_listener_v3_FilterChainMatch* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_config_listener_v3_FilterChainMatch*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_listener_v3_FilterChainMatch*) = value;
}
-UPB_INLINE struct envoy_config_listener_v3_FilterChainMatch* envoy_config_listener_v3_FilterChain_mutable_filter_chain_match(envoy_config_listener_v3_FilterChain *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_FilterChainMatch* envoy_config_listener_v3_FilterChain_mutable_filter_chain_match(envoy_config_listener_v3_FilterChain* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_FilterChainMatch* sub = (struct envoy_config_listener_v3_FilterChainMatch*)envoy_config_listener_v3_FilterChain_filter_chain_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_listener_v3_FilterChainMatch*)_upb_Message_New(&envoy_config_listener_v3_FilterChainMatch_msginit, arena);
@@ -379,24 +498,23 @@ UPB_INLINE struct envoy_config_listener_v3_FilterChainMatch* envoy_config_listen
}
return sub;
}
-UPB_INLINE envoy_config_listener_v3_Filter** envoy_config_listener_v3_FilterChain_mutable_filters(envoy_config_listener_v3_FilterChain *msg, size_t *len) {
- return (envoy_config_listener_v3_Filter**)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 72), len);
+UPB_INLINE envoy_config_listener_v3_Filter** envoy_config_listener_v3_FilterChain_mutable_filters(envoy_config_listener_v3_FilterChain* msg, size_t* len) {
+ return (envoy_config_listener_v3_Filter**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE envoy_config_listener_v3_Filter** envoy_config_listener_v3_FilterChain_resize_filters(envoy_config_listener_v3_FilterChain *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_listener_v3_Filter**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 72), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_listener_v3_Filter** envoy_config_listener_v3_FilterChain_resize_filters(envoy_config_listener_v3_FilterChain* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_listener_v3_Filter**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_listener_v3_Filter* envoy_config_listener_v3_FilterChain_add_filters(envoy_config_listener_v3_FilterChain *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_Filter* envoy_config_listener_v3_FilterChain_add_filters(envoy_config_listener_v3_FilterChain* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_Filter* sub = (struct envoy_config_listener_v3_Filter*)_upb_Message_New(&envoy_config_listener_v3_Filter_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(36, 72), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_listener_v3_FilterChain_set_use_proxy_proto(envoy_config_listener_v3_FilterChain *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_FilterChain_mutable_use_proxy_proto(envoy_config_listener_v3_FilterChain *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_FilterChain_mutable_use_proxy_proto(envoy_config_listener_v3_FilterChain* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_listener_v3_FilterChain_use_proxy_proto(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -407,9 +525,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_listener_v3_FilterChai
}
UPB_INLINE void envoy_config_listener_v3_FilterChain_set_metadata(envoy_config_listener_v3_FilterChain *msg, struct envoy_config_core_v3_Metadata* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct envoy_config_core_v3_Metadata*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_config_core_v3_Metadata*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_listener_v3_FilterChain_mutable_metadata(envoy_config_listener_v3_FilterChain *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_listener_v3_FilterChain_mutable_metadata(envoy_config_listener_v3_FilterChain* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Metadata* sub = (struct envoy_config_core_v3_Metadata*)envoy_config_listener_v3_FilterChain_metadata(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Metadata*)_upb_Message_New(&envoy_config_core_v3_Metadata_msginit, arena);
@@ -420,9 +538,9 @@ UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_listener_v3_Filter
}
UPB_INLINE void envoy_config_listener_v3_FilterChain_set_transport_socket(envoy_config_listener_v3_FilterChain *msg, struct envoy_config_core_v3_TransportSocket* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct envoy_config_core_v3_TransportSocket*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct envoy_config_core_v3_TransportSocket*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TransportSocket* envoy_config_listener_v3_FilterChain_mutable_transport_socket(envoy_config_listener_v3_FilterChain *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TransportSocket* envoy_config_listener_v3_FilterChain_mutable_transport_socket(envoy_config_listener_v3_FilterChain* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TransportSocket* sub = (struct envoy_config_core_v3_TransportSocket*)envoy_config_listener_v3_FilterChain_transport_socket(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TransportSocket*)_upb_Message_New(&envoy_config_core_v3_TransportSocket_msginit, arena);
@@ -432,13 +550,13 @@ UPB_INLINE struct envoy_config_core_v3_TransportSocket* envoy_config_listener_v3
return sub;
}
UPB_INLINE void envoy_config_listener_v3_FilterChain_set_name(envoy_config_listener_v3_FilterChain *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = value;
}
UPB_INLINE void envoy_config_listener_v3_FilterChain_set_on_demand_configuration(envoy_config_listener_v3_FilterChain *msg, envoy_config_listener_v3_FilterChain_OnDemandConfiguration* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 56), envoy_config_listener_v3_FilterChain_OnDemandConfiguration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), envoy_config_listener_v3_FilterChain_OnDemandConfiguration*) = value;
}
-UPB_INLINE struct envoy_config_listener_v3_FilterChain_OnDemandConfiguration* envoy_config_listener_v3_FilterChain_mutable_on_demand_configuration(envoy_config_listener_v3_FilterChain *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_FilterChain_OnDemandConfiguration* envoy_config_listener_v3_FilterChain_mutable_on_demand_configuration(envoy_config_listener_v3_FilterChain* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_FilterChain_OnDemandConfiguration* sub = (struct envoy_config_listener_v3_FilterChain_OnDemandConfiguration*)envoy_config_listener_v3_FilterChain_on_demand_configuration(msg);
if (sub == NULL) {
sub = (struct envoy_config_listener_v3_FilterChain_OnDemandConfiguration*)_upb_Message_New(&envoy_config_listener_v3_FilterChain_OnDemandConfiguration_msginit, arena);
@@ -449,9 +567,9 @@ UPB_INLINE struct envoy_config_listener_v3_FilterChain_OnDemandConfiguration* en
}
UPB_INLINE void envoy_config_listener_v3_FilterChain_set_transport_socket_connect_timeout(envoy_config_listener_v3_FilterChain *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 64), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_listener_v3_FilterChain_mutable_transport_socket_connect_timeout(envoy_config_listener_v3_FilterChain *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_listener_v3_FilterChain_mutable_transport_socket_connect_timeout(envoy_config_listener_v3_FilterChain* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_listener_v3_FilterChain_transport_socket_connect_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -486,13 +604,22 @@ UPB_INLINE envoy_config_listener_v3_FilterChain_OnDemandConfiguration* envoy_con
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_FilterChain_OnDemandConfiguration_serialize(const envoy_config_listener_v3_FilterChain_OnDemandConfiguration* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_FilterChain_OnDemandConfiguration_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_FilterChain_OnDemandConfiguration_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_FilterChain_OnDemandConfiguration_serialize_ex(const envoy_config_listener_v3_FilterChain_OnDemandConfiguration* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_FilterChain_OnDemandConfiguration_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_FilterChain_OnDemandConfiguration_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_listener_v3_FilterChain_OnDemandConfiguration_has_rebuild_timeout(const envoy_config_listener_v3_FilterChain_OnDemandConfiguration* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_listener_v3_FilterChain_OnDemandConfiguration_clear_rebuild_timeout(const envoy_config_listener_v3_FilterChain_OnDemandConfiguration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_FilterChain_OnDemandConfiguration_has_rebuild_timeout(const envoy_config_listener_v3_FilterChain_OnDemandConfiguration *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_listener_v3_FilterChain_OnDemandConfiguration_rebuild_timeout(const envoy_config_listener_v3_FilterChain_OnDemandConfiguration* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
}
@@ -501,7 +628,7 @@ UPB_INLINE void envoy_config_listener_v3_FilterChain_OnDemandConfiguration_set_r
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_listener_v3_FilterChain_OnDemandConfiguration_mutable_rebuild_timeout(envoy_config_listener_v3_FilterChain_OnDemandConfiguration *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_listener_v3_FilterChain_OnDemandConfiguration_mutable_rebuild_timeout(envoy_config_listener_v3_FilterChain_OnDemandConfiguration* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_listener_v3_FilterChain_OnDemandConfiguration_rebuild_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -536,11 +663,15 @@ UPB_INLINE envoy_config_listener_v3_ListenerFilterChainMatchPredicate* envoy_con
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_serialize(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_ListenerFilterChainMatchPredicate_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_ListenerFilterChainMatchPredicate_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_serialize_ex(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_ListenerFilterChainMatchPredicate_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_ListenerFilterChainMatchPredicate_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_or_match = 1,
@@ -550,23 +681,59 @@ typedef enum {
envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_destination_port_range = 5,
envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_NOT_SET = 0
} envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_oneofcases;
-UPB_INLINE envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_oneofcases envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_case(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) { return (envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_listener_v3_ListenerFilterChainMatchPredicate_has_or_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_or_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_config_listener_v3_ListenerFilterChainMatchPredicate_has_and_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_and_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool envoy_config_listener_v3_ListenerFilterChainMatchPredicate_has_not_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_not_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_listener_v3_ListenerFilterChainMatchPredicate*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
-UPB_INLINE bool envoy_config_listener_v3_ListenerFilterChainMatchPredicate_has_any_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 4; }
-UPB_INLINE bool envoy_config_listener_v3_ListenerFilterChainMatchPredicate_any_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 4, false); }
-UPB_INLINE bool envoy_config_listener_v3_ListenerFilterChainMatchPredicate_has_destination_port_range(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 5; }
-UPB_INLINE const struct envoy_type_v3_Int32Range* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_destination_port_range(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_v3_Int32Range*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 5, NULL); }
+UPB_INLINE envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_oneofcases envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_case(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ return (envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_listener_v3_ListenerFilterChainMatchPredicate_has_or_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_listener_v3_ListenerFilterChainMatchPredicate_clear_or_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_or_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_listener_v3_ListenerFilterChainMatchPredicate_has_and_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_listener_v3_ListenerFilterChainMatchPredicate_clear_and_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_and_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_config_listener_v3_ListenerFilterChainMatchPredicate_has_not_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_listener_v3_ListenerFilterChainMatchPredicate_clear_not_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_ListenerFilterChainMatchPredicate*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_not_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_listener_v3_ListenerFilterChainMatchPredicate*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE bool envoy_config_listener_v3_ListenerFilterChainMatchPredicate_has_any_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_config_listener_v3_ListenerFilterChainMatchPredicate_clear_any_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE bool envoy_config_listener_v3_ListenerFilterChainMatchPredicate_any_match(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, false);
+}
+UPB_INLINE bool envoy_config_listener_v3_ListenerFilterChainMatchPredicate_has_destination_port_range(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_config_listener_v3_ListenerFilterChainMatchPredicate_clear_destination_port_range(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_v3_Int32Range*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_listener_v3_ListenerFilterChainMatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_v3_Int32Range* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_destination_port_range(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_v3_Int32Range*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 5, NULL);
+}
UPB_INLINE void envoy_config_listener_v3_ListenerFilterChainMatchPredicate_set_or_match(envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg, envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_mutable_or_match(envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_mutable_or_match(envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* sub = (struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*)envoy_config_listener_v3_ListenerFilterChainMatchPredicate_or_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*)_upb_Message_New(&envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_msginit, arena);
@@ -576,9 +743,9 @@ UPB_INLINE struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate_Mat
return sub;
}
UPB_INLINE void envoy_config_listener_v3_ListenerFilterChainMatchPredicate_set_and_match(envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg, envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_mutable_and_match(envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_mutable_and_match(envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* sub = (struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*)envoy_config_listener_v3_ListenerFilterChainMatchPredicate_and_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*)_upb_Message_New(&envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_msginit, arena);
@@ -588,9 +755,9 @@ UPB_INLINE struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate_Mat
return sub;
}
UPB_INLINE void envoy_config_listener_v3_ListenerFilterChainMatchPredicate_set_not_match(envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg, envoy_config_listener_v3_ListenerFilterChainMatchPredicate* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_ListenerFilterChainMatchPredicate*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_listener_v3_ListenerFilterChainMatchPredicate*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_mutable_not_match(envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_mutable_not_match(envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate* sub = (struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate*)envoy_config_listener_v3_ListenerFilterChainMatchPredicate_not_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate*)_upb_Message_New(&envoy_config_listener_v3_ListenerFilterChainMatchPredicate_msginit, arena);
@@ -600,12 +767,12 @@ UPB_INLINE struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate* en
return sub;
}
UPB_INLINE void envoy_config_listener_v3_ListenerFilterChainMatchPredicate_set_any_match(envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 4);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
UPB_INLINE void envoy_config_listener_v3_ListenerFilterChainMatchPredicate_set_destination_port_range(envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg, struct envoy_type_v3_Int32Range* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_v3_Int32Range*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 5);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_v3_Int32Range*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct envoy_type_v3_Int32Range* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_mutable_destination_port_range(envoy_config_listener_v3_ListenerFilterChainMatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Int32Range* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_mutable_destination_port_range(envoy_config_listener_v3_ListenerFilterChainMatchPredicate* msg, upb_Arena* arena) {
struct envoy_type_v3_Int32Range* sub = (struct envoy_type_v3_Int32Range*)envoy_config_listener_v3_ListenerFilterChainMatchPredicate_destination_port_range(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Int32Range*)_upb_Message_New(&envoy_type_v3_Int32Range_msginit, arena);
@@ -640,25 +807,35 @@ UPB_INLINE envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet*
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_serialize(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_serialize_ex(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_has_rules(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_clear_rules(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* const* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_rules(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* msg, size_t* len) {
+ return (const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_has_rules(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* const* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_rules(const envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet *msg, size_t *len) { return (const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_listener_v3_ListenerFilterChainMatchPredicate** envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_mutable_rules(envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet *msg, size_t *len) {
+UPB_INLINE envoy_config_listener_v3_ListenerFilterChainMatchPredicate** envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_mutable_rules(envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* msg, size_t* len) {
return (envoy_config_listener_v3_ListenerFilterChainMatchPredicate**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_listener_v3_ListenerFilterChainMatchPredicate** envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_resize_rules(envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_listener_v3_ListenerFilterChainMatchPredicate** envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_resize_rules(envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* msg, size_t len, upb_Arena* arena) {
return (envoy_config_listener_v3_ListenerFilterChainMatchPredicate**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_add_rules(envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate* envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet_add_rules(envoy_config_listener_v3_ListenerFilterChainMatchPredicate_MatchSet* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate* sub = (struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate*)_upb_Message_New(&envoy_config_listener_v3_ListenerFilterChainMatchPredicate_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -688,35 +865,65 @@ UPB_INLINE envoy_config_listener_v3_ListenerFilter* envoy_config_listener_v3_Lis
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_ListenerFilter_serialize(const envoy_config_listener_v3_ListenerFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_ListenerFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_ListenerFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_ListenerFilter_serialize_ex(const envoy_config_listener_v3_ListenerFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_ListenerFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_ListenerFilter_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_listener_v3_ListenerFilter_config_type_typed_config = 3,
+ envoy_config_listener_v3_ListenerFilter_config_type_config_discovery = 5,
envoy_config_listener_v3_ListenerFilter_config_type_NOT_SET = 0
} envoy_config_listener_v3_ListenerFilter_config_type_oneofcases;
-UPB_INLINE envoy_config_listener_v3_ListenerFilter_config_type_oneofcases envoy_config_listener_v3_ListenerFilter_config_type_case(const envoy_config_listener_v3_ListenerFilter* msg) { return (envoy_config_listener_v3_ListenerFilter_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(20, 40), int32_t); }
-
+UPB_INLINE envoy_config_listener_v3_ListenerFilter_config_type_oneofcases envoy_config_listener_v3_ListenerFilter_config_type_case(const envoy_config_listener_v3_ListenerFilter* msg) {
+ return (envoy_config_listener_v3_ListenerFilter_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_config_listener_v3_ListenerFilter_clear_name(const envoy_config_listener_v3_ListenerFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_listener_v3_ListenerFilter_name(const envoy_config_listener_v3_ListenerFilter* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_listener_v3_ListenerFilter_has_typed_config(const envoy_config_listener_v3_ListenerFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_config_listener_v3_ListenerFilter_clear_typed_config(const envoy_config_listener_v3_ListenerFilter* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(20, 32), 0, UPB_SIZE(4, 4), envoy_config_listener_v3_ListenerFilter_config_type_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_listener_v3_ListenerFilter_typed_config(const envoy_config_listener_v3_ListenerFilter* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(20, 32), UPB_SIZE(4, 4), 3, NULL);
+}
+UPB_INLINE bool envoy_config_listener_v3_ListenerFilter_has_filter_disabled(const envoy_config_listener_v3_ListenerFilter* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_listener_v3_ListenerFilter_clear_filter_disabled(const envoy_config_listener_v3_ListenerFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_ListenerFilter_has_typed_config(const envoy_config_listener_v3_ListenerFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 3; }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_listener_v3_ListenerFilter_typed_config(const envoy_config_listener_v3_ListenerFilter *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(16, 32), UPB_SIZE(20, 40), 3, NULL); }
-UPB_INLINE bool envoy_config_listener_v3_ListenerFilter_has_filter_disabled(const envoy_config_listener_v3_ListenerFilter *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_listener_v3_ListenerFilterChainMatchPredicate* envoy_config_listener_v3_ListenerFilter_filter_disabled(const envoy_config_listener_v3_ListenerFilter* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_config_listener_v3_ListenerFilterChainMatchPredicate*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const envoy_config_listener_v3_ListenerFilterChainMatchPredicate*);
+}
+UPB_INLINE bool envoy_config_listener_v3_ListenerFilter_has_config_discovery(const envoy_config_listener_v3_ListenerFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void envoy_config_listener_v3_ListenerFilter_clear_config_discovery(const envoy_config_listener_v3_ListenerFilter* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_ExtensionConfigSource*, UPB_SIZE(20, 32), 0, UPB_SIZE(4, 4), envoy_config_listener_v3_ListenerFilter_config_type_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_ExtensionConfigSource* envoy_config_listener_v3_ListenerFilter_config_discovery(const envoy_config_listener_v3_ListenerFilter* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_ExtensionConfigSource*, UPB_SIZE(20, 32), UPB_SIZE(4, 4), 5, NULL);
}
UPB_INLINE void envoy_config_listener_v3_ListenerFilter_set_name(envoy_config_listener_v3_ListenerFilter *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_listener_v3_ListenerFilter_set_typed_config(envoy_config_listener_v3_ListenerFilter *msg, struct google_protobuf_Any* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(16, 32), value, UPB_SIZE(20, 40), 3);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(20, 32), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_listener_v3_ListenerFilter_mutable_typed_config(envoy_config_listener_v3_ListenerFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_listener_v3_ListenerFilter_mutable_typed_config(envoy_config_listener_v3_ListenerFilter* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_listener_v3_ListenerFilter_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -727,9 +934,9 @@ UPB_INLINE struct google_protobuf_Any* envoy_config_listener_v3_ListenerFilter_m
}
UPB_INLINE void envoy_config_listener_v3_ListenerFilter_set_filter_disabled(envoy_config_listener_v3_ListenerFilter *msg, envoy_config_listener_v3_ListenerFilterChainMatchPredicate* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_config_listener_v3_ListenerFilterChainMatchPredicate*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), envoy_config_listener_v3_ListenerFilterChainMatchPredicate*) = value;
}
-UPB_INLINE struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate* envoy_config_listener_v3_ListenerFilter_mutable_filter_disabled(envoy_config_listener_v3_ListenerFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate* envoy_config_listener_v3_ListenerFilter_mutable_filter_disabled(envoy_config_listener_v3_ListenerFilter* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate* sub = (struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate*)envoy_config_listener_v3_ListenerFilter_filter_disabled(msg);
if (sub == NULL) {
sub = (struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate*)_upb_Message_New(&envoy_config_listener_v3_ListenerFilterChainMatchPredicate_msginit, arena);
@@ -738,6 +945,18 @@ UPB_INLINE struct envoy_config_listener_v3_ListenerFilterChainMatchPredicate* en
}
return sub;
}
+UPB_INLINE void envoy_config_listener_v3_ListenerFilter_set_config_discovery(envoy_config_listener_v3_ListenerFilter *msg, struct envoy_config_core_v3_ExtensionConfigSource* value) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_ExtensionConfigSource*, UPB_SIZE(20, 32), value, UPB_SIZE(4, 4), 5);
+}
+UPB_INLINE struct envoy_config_core_v3_ExtensionConfigSource* envoy_config_listener_v3_ListenerFilter_mutable_config_discovery(envoy_config_listener_v3_ListenerFilter* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_ExtensionConfigSource* sub = (struct envoy_config_core_v3_ExtensionConfigSource*)envoy_config_listener_v3_ListenerFilter_config_discovery(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_core_v3_ExtensionConfigSource*)_upb_Message_New(&envoy_config_core_v3_ExtensionConfigSource_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_listener_v3_ListenerFilter_set_config_discovery(msg, sub);
+ }
+ return sub;
+}
extern const upb_MiniTable_File envoy_config_listener_v3_listener_components_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c
index d11968805c..5245adcb3c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c
@@ -20,28 +20,30 @@
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_config_listener_v3_QuicProtocolOptions_submsgs[5] = {
+static const upb_MiniTable_Sub envoy_config_listener_v3_QuicProtocolOptions_submsgs[7] = {
{.submsg = &envoy_config_core_v3_QuicProtocolOptions_msginit},
- {.submsg = &envoy_config_core_v3_RuntimeFeatureFlag_msginit},
- {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_core_v3_RuntimeFeatureFlag_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
};
static const upb_MiniTable_Field envoy_config_listener_v3_QuicProtocolOptions__fields[7] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 3, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 4, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 40), 5, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(24, 48), 6, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(28, 56), 7, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 40), UPB_SIZE(5, 5), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 48), UPB_SIZE(6, 6), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(28, 56), UPB_SIZE(7, 7), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_listener_v3_QuicProtocolOptions_msginit = {
&envoy_config_listener_v3_QuicProtocolOptions_submsgs[0],
&envoy_config_listener_v3_QuicProtocolOptions__fields[0],
- UPB_SIZE(32, 64), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(32, 64), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h
index 7e7f2114f1..203c628c07 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h
@@ -61,37 +61,76 @@ UPB_INLINE envoy_config_listener_v3_QuicProtocolOptions* envoy_config_listener_v
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_QuicProtocolOptions_serialize(const envoy_config_listener_v3_QuicProtocolOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_QuicProtocolOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_QuicProtocolOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_QuicProtocolOptions_serialize_ex(const envoy_config_listener_v3_QuicProtocolOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_QuicProtocolOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_QuicProtocolOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_quic_protocol_options(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_clear_quic_protocol_options(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_quic_protocol_options(const envoy_config_listener_v3_QuicProtocolOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_QuicProtocolOptions* envoy_config_listener_v3_QuicProtocolOptions_quic_protocol_options(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_QuicProtocolOptions*);
}
-UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_idle_timeout(const envoy_config_listener_v3_QuicProtocolOptions *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_idle_timeout(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_clear_idle_timeout(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_listener_v3_QuicProtocolOptions_idle_timeout(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_crypto_handshake_timeout(const envoy_config_listener_v3_QuicProtocolOptions *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_crypto_handshake_timeout(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_clear_crypto_handshake_timeout(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_listener_v3_QuicProtocolOptions_crypto_handshake_timeout(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_enabled(const envoy_config_listener_v3_QuicProtocolOptions *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_enabled(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_clear_enabled(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_RuntimeFeatureFlag* envoy_config_listener_v3_QuicProtocolOptions_enabled(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_config_core_v3_RuntimeFeatureFlag*);
}
-UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_packets_to_read_to_connection_count_ratio(const envoy_config_listener_v3_QuicProtocolOptions *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_packets_to_read_to_connection_count_ratio(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_clear_packets_to_read_to_connection_count_ratio(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_listener_v3_QuicProtocolOptions_packets_to_read_to_connection_count_ratio(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_crypto_stream_config(const envoy_config_listener_v3_QuicProtocolOptions *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_crypto_stream_config(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_clear_crypto_stream_config(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_listener_v3_QuicProtocolOptions_crypto_stream_config(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct envoy_config_core_v3_TypedExtensionConfig*);
}
-UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_proof_source_config(const envoy_config_listener_v3_QuicProtocolOptions *msg) { return _upb_hasbit(msg, 7); }
+UPB_INLINE bool envoy_config_listener_v3_QuicProtocolOptions_has_proof_source_config(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_clear_proof_source_config(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_listener_v3_QuicProtocolOptions_proof_source_config(const envoy_config_listener_v3_QuicProtocolOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct envoy_config_core_v3_TypedExtensionConfig*);
}
@@ -100,7 +139,7 @@ UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_set_quic_protocol_o
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_QuicProtocolOptions*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_QuicProtocolOptions* envoy_config_listener_v3_QuicProtocolOptions_mutable_quic_protocol_options(envoy_config_listener_v3_QuicProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_QuicProtocolOptions* envoy_config_listener_v3_QuicProtocolOptions_mutable_quic_protocol_options(envoy_config_listener_v3_QuicProtocolOptions* msg, upb_Arena* arena) {
struct envoy_config_core_v3_QuicProtocolOptions* sub = (struct envoy_config_core_v3_QuicProtocolOptions*)envoy_config_listener_v3_QuicProtocolOptions_quic_protocol_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_QuicProtocolOptions*)_upb_Message_New(&envoy_config_core_v3_QuicProtocolOptions_msginit, arena);
@@ -113,7 +152,7 @@ UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_set_idle_timeout(en
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_listener_v3_QuicProtocolOptions_mutable_idle_timeout(envoy_config_listener_v3_QuicProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_listener_v3_QuicProtocolOptions_mutable_idle_timeout(envoy_config_listener_v3_QuicProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_listener_v3_QuicProtocolOptions_idle_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -126,7 +165,7 @@ UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_set_crypto_handshak
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_listener_v3_QuicProtocolOptions_mutable_crypto_handshake_timeout(envoy_config_listener_v3_QuicProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_listener_v3_QuicProtocolOptions_mutable_crypto_handshake_timeout(envoy_config_listener_v3_QuicProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_listener_v3_QuicProtocolOptions_crypto_handshake_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -139,7 +178,7 @@ UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_set_enabled(envoy_c
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_config_core_v3_RuntimeFeatureFlag*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_RuntimeFeatureFlag* envoy_config_listener_v3_QuicProtocolOptions_mutable_enabled(envoy_config_listener_v3_QuicProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_RuntimeFeatureFlag* envoy_config_listener_v3_QuicProtocolOptions_mutable_enabled(envoy_config_listener_v3_QuicProtocolOptions* msg, upb_Arena* arena) {
struct envoy_config_core_v3_RuntimeFeatureFlag* sub = (struct envoy_config_core_v3_RuntimeFeatureFlag*)envoy_config_listener_v3_QuicProtocolOptions_enabled(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_RuntimeFeatureFlag*)_upb_Message_New(&envoy_config_core_v3_RuntimeFeatureFlag_msginit, arena);
@@ -152,7 +191,7 @@ UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_set_packets_to_read
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_QuicProtocolOptions_mutable_packets_to_read_to_connection_count_ratio(envoy_config_listener_v3_QuicProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_listener_v3_QuicProtocolOptions_mutable_packets_to_read_to_connection_count_ratio(envoy_config_listener_v3_QuicProtocolOptions* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_listener_v3_QuicProtocolOptions_packets_to_read_to_connection_count_ratio(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -165,7 +204,7 @@ UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_set_crypto_stream_c
_upb_sethas(msg, 6);
*UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_listener_v3_QuicProtocolOptions_mutable_crypto_stream_config(envoy_config_listener_v3_QuicProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_listener_v3_QuicProtocolOptions_mutable_crypto_stream_config(envoy_config_listener_v3_QuicProtocolOptions* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_listener_v3_QuicProtocolOptions_crypto_stream_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -178,7 +217,7 @@ UPB_INLINE void envoy_config_listener_v3_QuicProtocolOptions_set_proof_source_co
_upb_sethas(msg, 7);
*UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_listener_v3_QuicProtocolOptions_mutable_proof_source_config(envoy_config_listener_v3_QuicProtocolOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_listener_v3_QuicProtocolOptions_mutable_proof_source_config(envoy_config_listener_v3_QuicProtocolOptions* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_listener_v3_QuicProtocolOptions_proof_source_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c
index 6f45831fe9..13f07cfe3a 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c
@@ -9,6 +9,7 @@
#include <stddef.h>
#include "upb/msg_internal.h"
#include "envoy/config/listener/v3/udp_listener_config.upb.h"
+#include "envoy/config/core/v3/extension.upb.h"
#include "envoy/config/core/v3/udp_socket_config.upb.h"
#include "envoy/config/listener/v3/quic_config.upb.h"
#include "udpa/annotations/status.upb.h"
@@ -16,26 +17,28 @@
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_config_listener_v3_UdpListenerConfig_submsgs[2] = {
+static const upb_MiniTable_Sub envoy_config_listener_v3_UdpListenerConfig_submsgs[3] = {
{.submsg = &envoy_config_core_v3_UdpSocketConfig_msginit},
{.submsg = &envoy_config_listener_v3_QuicProtocolOptions_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
};
-static const upb_MiniTable_Field envoy_config_listener_v3_UdpListenerConfig__fields[2] = {
- {5, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_listener_v3_UdpListenerConfig__fields[3] = {
+ {5, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_listener_v3_UdpListenerConfig_msginit = {
&envoy_config_listener_v3_UdpListenerConfig_submsgs[0],
&envoy_config_listener_v3_UdpListenerConfig__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
const upb_MiniTable envoy_config_listener_v3_ActiveRawUdpListenerConfig_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h
index f4844b8e20..31cdecec6c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h
@@ -26,8 +26,10 @@ typedef struct envoy_config_listener_v3_UdpListenerConfig envoy_config_listener_
typedef struct envoy_config_listener_v3_ActiveRawUdpListenerConfig envoy_config_listener_v3_ActiveRawUdpListenerConfig;
extern const upb_MiniTable envoy_config_listener_v3_UdpListenerConfig_msginit;
extern const upb_MiniTable envoy_config_listener_v3_ActiveRawUdpListenerConfig_msginit;
+struct envoy_config_core_v3_TypedExtensionConfig;
struct envoy_config_core_v3_UdpSocketConfig;
struct envoy_config_listener_v3_QuicProtocolOptions;
+extern const upb_MiniTable envoy_config_core_v3_TypedExtensionConfig_msginit;
extern const upb_MiniTable envoy_config_core_v3_UdpSocketConfig_msginit;
extern const upb_MiniTable envoy_config_listener_v3_QuicProtocolOptions_msginit;
@@ -58,26 +60,49 @@ UPB_INLINE envoy_config_listener_v3_UdpListenerConfig* envoy_config_listener_v3_
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_UdpListenerConfig_serialize(const envoy_config_listener_v3_UdpListenerConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_UdpListenerConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_UdpListenerConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_UdpListenerConfig_serialize_ex(const envoy_config_listener_v3_UdpListenerConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_UdpListenerConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_UdpListenerConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_listener_v3_UdpListenerConfig_has_downstream_socket_config(const envoy_config_listener_v3_UdpListenerConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_listener_v3_UdpListenerConfig_clear_downstream_socket_config(const envoy_config_listener_v3_UdpListenerConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_listener_v3_UdpListenerConfig_has_downstream_socket_config(const envoy_config_listener_v3_UdpListenerConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_UdpSocketConfig* envoy_config_listener_v3_UdpListenerConfig_downstream_socket_config(const envoy_config_listener_v3_UdpListenerConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_UdpSocketConfig*);
}
-UPB_INLINE bool envoy_config_listener_v3_UdpListenerConfig_has_quic_options(const envoy_config_listener_v3_UdpListenerConfig *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_listener_v3_UdpListenerConfig_has_quic_options(const envoy_config_listener_v3_UdpListenerConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_listener_v3_UdpListenerConfig_clear_quic_options(const envoy_config_listener_v3_UdpListenerConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_listener_v3_QuicProtocolOptions* envoy_config_listener_v3_UdpListenerConfig_quic_options(const envoy_config_listener_v3_UdpListenerConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_config_listener_v3_QuicProtocolOptions*);
}
+UPB_INLINE bool envoy_config_listener_v3_UdpListenerConfig_has_udp_packet_packet_writer_config(const envoy_config_listener_v3_UdpListenerConfig* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_listener_v3_UdpListenerConfig_clear_udp_packet_packet_writer_config(const envoy_config_listener_v3_UdpListenerConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_listener_v3_UdpListenerConfig_udp_packet_packet_writer_config(const envoy_config_listener_v3_UdpListenerConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_TypedExtensionConfig*);
+}
UPB_INLINE void envoy_config_listener_v3_UdpListenerConfig_set_downstream_socket_config(envoy_config_listener_v3_UdpListenerConfig *msg, struct envoy_config_core_v3_UdpSocketConfig* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_UdpSocketConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_UdpSocketConfig* envoy_config_listener_v3_UdpListenerConfig_mutable_downstream_socket_config(envoy_config_listener_v3_UdpListenerConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_UdpSocketConfig* envoy_config_listener_v3_UdpListenerConfig_mutable_downstream_socket_config(envoy_config_listener_v3_UdpListenerConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_UdpSocketConfig* sub = (struct envoy_config_core_v3_UdpSocketConfig*)envoy_config_listener_v3_UdpListenerConfig_downstream_socket_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_UdpSocketConfig*)_upb_Message_New(&envoy_config_core_v3_UdpSocketConfig_msginit, arena);
@@ -90,7 +115,7 @@ UPB_INLINE void envoy_config_listener_v3_UdpListenerConfig_set_quic_options(envo
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_config_listener_v3_QuicProtocolOptions*) = value;
}
-UPB_INLINE struct envoy_config_listener_v3_QuicProtocolOptions* envoy_config_listener_v3_UdpListenerConfig_mutable_quic_options(envoy_config_listener_v3_UdpListenerConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_listener_v3_QuicProtocolOptions* envoy_config_listener_v3_UdpListenerConfig_mutable_quic_options(envoy_config_listener_v3_UdpListenerConfig* msg, upb_Arena* arena) {
struct envoy_config_listener_v3_QuicProtocolOptions* sub = (struct envoy_config_listener_v3_QuicProtocolOptions*)envoy_config_listener_v3_UdpListenerConfig_quic_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_listener_v3_QuicProtocolOptions*)_upb_Message_New(&envoy_config_listener_v3_QuicProtocolOptions_msginit, arena);
@@ -99,6 +124,19 @@ UPB_INLINE struct envoy_config_listener_v3_QuicProtocolOptions* envoy_config_lis
}
return sub;
}
+UPB_INLINE void envoy_config_listener_v3_UdpListenerConfig_set_udp_packet_packet_writer_config(envoy_config_listener_v3_UdpListenerConfig *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
+ _upb_sethas(msg, 3);
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
+}
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_listener_v3_UdpListenerConfig_mutable_udp_packet_packet_writer_config(envoy_config_listener_v3_UdpListenerConfig* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_listener_v3_UdpListenerConfig_udp_packet_packet_writer_config(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_listener_v3_UdpListenerConfig_set_udp_packet_packet_writer_config(msg, sub);
+ }
+ return sub;
+}
/* envoy.config.listener.v3.ActiveRawUdpListenerConfig */
@@ -125,11 +163,15 @@ UPB_INLINE envoy_config_listener_v3_ActiveRawUdpListenerConfig* envoy_config_lis
return ret;
}
UPB_INLINE char* envoy_config_listener_v3_ActiveRawUdpListenerConfig_serialize(const envoy_config_listener_v3_ActiveRawUdpListenerConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_ActiveRawUdpListenerConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_ActiveRawUdpListenerConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_listener_v3_ActiveRawUdpListenerConfig_serialize_ex(const envoy_config_listener_v3_ActiveRawUdpListenerConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_listener_v3_ActiveRawUdpListenerConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_listener_v3_ActiveRawUdpListenerConfig_msginit, options, arena, &ptr, len);
+ return ptr;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c
index cd89b37447..fa40c5b29f 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c
@@ -24,16 +24,16 @@ static const upb_MiniTable_Sub envoy_config_metrics_v3_MetricsServiceConfig_subm
};
static const upb_MiniTable_Field envoy_config_metrics_v3_MetricsServiceConfig__fields[4] = {
- {1, UPB_SIZE(12, 16), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 24), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 8), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 16), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_metrics_v3_MetricsServiceConfig_msginit = {
&envoy_config_metrics_v3_MetricsServiceConfig_submsgs[0],
&envoy_config_metrics_v3_MetricsServiceConfig__fields[0],
- UPB_SIZE(24, 32), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 32), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h
index 58b185cbd7..c268f26dc0 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h
@@ -55,23 +55,43 @@ UPB_INLINE envoy_config_metrics_v3_MetricsServiceConfig* envoy_config_metrics_v3
return ret;
}
UPB_INLINE char* envoy_config_metrics_v3_MetricsServiceConfig_serialize(const envoy_config_metrics_v3_MetricsServiceConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_MetricsServiceConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_MetricsServiceConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_metrics_v3_MetricsServiceConfig_serialize_ex(const envoy_config_metrics_v3_MetricsServiceConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_MetricsServiceConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_MetricsServiceConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_metrics_v3_MetricsServiceConfig_has_grpc_service(const envoy_config_metrics_v3_MetricsServiceConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_metrics_v3_MetricsServiceConfig_clear_grpc_service(const envoy_config_metrics_v3_MetricsServiceConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_metrics_v3_MetricsServiceConfig_has_grpc_service(const envoy_config_metrics_v3_MetricsServiceConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_GrpcService* envoy_config_metrics_v3_MetricsServiceConfig_grpc_service(const envoy_config_metrics_v3_MetricsServiceConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct envoy_config_core_v3_GrpcService*);
}
-UPB_INLINE bool envoy_config_metrics_v3_MetricsServiceConfig_has_report_counters_as_deltas(const envoy_config_metrics_v3_MetricsServiceConfig *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_metrics_v3_MetricsServiceConfig_has_report_counters_as_deltas(const envoy_config_metrics_v3_MetricsServiceConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_metrics_v3_MetricsServiceConfig_clear_report_counters_as_deltas(const envoy_config_metrics_v3_MetricsServiceConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_metrics_v3_MetricsServiceConfig_report_counters_as_deltas(const envoy_config_metrics_v3_MetricsServiceConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_BoolValue*);
}
+UPB_INLINE void envoy_config_metrics_v3_MetricsServiceConfig_clear_transport_api_version(const envoy_config_metrics_v3_MetricsServiceConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_config_metrics_v3_MetricsServiceConfig_transport_api_version(const envoy_config_metrics_v3_MetricsServiceConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
+UPB_INLINE void envoy_config_metrics_v3_MetricsServiceConfig_clear_emit_tags_as_labels(const envoy_config_metrics_v3_MetricsServiceConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
+}
UPB_INLINE bool envoy_config_metrics_v3_MetricsServiceConfig_emit_tags_as_labels(const envoy_config_metrics_v3_MetricsServiceConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
}
@@ -80,7 +100,7 @@ UPB_INLINE void envoy_config_metrics_v3_MetricsServiceConfig_set_grpc_service(en
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct envoy_config_core_v3_GrpcService*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_metrics_v3_MetricsServiceConfig_mutable_grpc_service(envoy_config_metrics_v3_MetricsServiceConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_metrics_v3_MetricsServiceConfig_mutable_grpc_service(envoy_config_metrics_v3_MetricsServiceConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService* sub = (struct envoy_config_core_v3_GrpcService*)envoy_config_metrics_v3_MetricsServiceConfig_grpc_service(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService*)_upb_Message_New(&envoy_config_core_v3_GrpcService_msginit, arena);
@@ -93,7 +113,7 @@ UPB_INLINE void envoy_config_metrics_v3_MetricsServiceConfig_set_report_counters
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_metrics_v3_MetricsServiceConfig_mutable_report_counters_as_deltas(envoy_config_metrics_v3_MetricsServiceConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_metrics_v3_MetricsServiceConfig_mutable_report_counters_as_deltas(envoy_config_metrics_v3_MetricsServiceConfig* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_metrics_v3_MetricsServiceConfig_report_counters_as_deltas(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c
index 9bab74afa3..a6cff06fc4 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c
@@ -24,62 +24,63 @@ static const upb_MiniTable_Sub envoy_config_metrics_v3_StatsSink_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_metrics_v3_StatsSink__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_metrics_v3_StatsSink_msginit = {
&envoy_config_metrics_v3_StatsSink_submsgs[0],
&envoy_config_metrics_v3_StatsSink__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_metrics_v3_StatsConfig_submsgs[4] = {
- {.submsg = &envoy_config_metrics_v3_HistogramBucketSettings_msginit},
- {.submsg = &envoy_config_metrics_v3_StatsMatcher_msginit},
{.submsg = &envoy_config_metrics_v3_TagSpecifier_msginit},
{.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &envoy_config_metrics_v3_StatsMatcher_msginit},
+ {.submsg = &envoy_config_metrics_v3_HistogramBucketSettings_msginit},
};
static const upb_MiniTable_Field envoy_config_metrics_v3_StatsConfig__fields[4] = {
- {1, UPB_SIZE(12, 24), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 1, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_metrics_v3_StatsConfig_msginit = {
&envoy_config_metrics_v3_StatsConfig_submsgs[0],
&envoy_config_metrics_v3_StatsConfig__fields[0],
- UPB_SIZE(24, 40), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_metrics_v3_StatsMatcher_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_metrics_v3_StatsMatcher_submsgs[2] = {
+ {.submsg = &envoy_type_matcher_v3_ListStringMatcher_msginit},
{.submsg = &envoy_type_matcher_v3_ListStringMatcher_msginit},
};
static const upb_MiniTable_Field envoy_config_metrics_v3_StatsMatcher__fields[3] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_metrics_v3_StatsMatcher_msginit = {
&envoy_config_metrics_v3_StatsMatcher_submsgs[0],
&envoy_config_metrics_v3_StatsMatcher__fields[0],
- UPB_SIZE(8, 16), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(8, 16), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Field envoy_config_metrics_v3_TagSpecifier__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-17, -33), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-17, -33), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_metrics_v3_TagSpecifier_msginit = {
NULL,
&envoy_config_metrics_v3_TagSpecifier__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_metrics_v3_HistogramBucketSettings_submsgs[1] = {
@@ -87,14 +88,14 @@ static const upb_MiniTable_Sub envoy_config_metrics_v3_HistogramBucketSettings_s
};
static const upb_MiniTable_Field envoy_config_metrics_v3_HistogramBucketSettings__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 1, kUpb_FieldMode_Array | upb_LabelFlags_IsPacked | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Array | kUpb_LabelFlags_IsPacked | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_metrics_v3_HistogramBucketSettings_msginit = {
&envoy_config_metrics_v3_HistogramBucketSettings_submsgs[0],
&envoy_config_metrics_v3_HistogramBucketSettings__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_metrics_v3_StatsdSink_submsgs[1] = {
@@ -102,15 +103,15 @@ static const upb_MiniTable_Sub envoy_config_metrics_v3_StatsdSink_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_metrics_v3_StatsdSink__fields[3] = {
- {1, UPB_SIZE(8, 16), UPB_SIZE(-17, -33), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-17, -33), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_metrics_v3_StatsdSink_msginit = {
&envoy_config_metrics_v3_StatsdSink_submsgs[0],
&envoy_config_metrics_v3_StatsdSink__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_metrics_v3_DogStatsdSink_submsgs[2] = {
@@ -119,25 +120,25 @@ static const upb_MiniTable_Sub envoy_config_metrics_v3_DogStatsdSink_submsgs[2]
};
static const upb_MiniTable_Field envoy_config_metrics_v3_DogStatsdSink__fields[3] = {
- {1, UPB_SIZE(16, 32), UPB_SIZE(-21, -41), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(20, 32), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 24), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_metrics_v3_DogStatsdSink_msginit = {
&envoy_config_metrics_v3_DogStatsdSink_submsgs[0],
&envoy_config_metrics_v3_DogStatsdSink__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_metrics_v3_HystrixSink__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_metrics_v3_HystrixSink_msginit = {
NULL,
&envoy_config_metrics_v3_HystrixSink__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[8] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h
index 2c6fc2d1e4..5bba950f02 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h
@@ -84,31 +84,46 @@ UPB_INLINE envoy_config_metrics_v3_StatsSink* envoy_config_metrics_v3_StatsSink_
return ret;
}
UPB_INLINE char* envoy_config_metrics_v3_StatsSink_serialize(const envoy_config_metrics_v3_StatsSink* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_StatsSink_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_StatsSink_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_metrics_v3_StatsSink_serialize_ex(const envoy_config_metrics_v3_StatsSink* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_StatsSink_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_StatsSink_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_metrics_v3_StatsSink_config_type_typed_config = 3,
envoy_config_metrics_v3_StatsSink_config_type_NOT_SET = 0
} envoy_config_metrics_v3_StatsSink_config_type_oneofcases;
-UPB_INLINE envoy_config_metrics_v3_StatsSink_config_type_oneofcases envoy_config_metrics_v3_StatsSink_config_type_case(const envoy_config_metrics_v3_StatsSink* msg) { return (envoy_config_metrics_v3_StatsSink_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_config_metrics_v3_StatsSink_config_type_oneofcases envoy_config_metrics_v3_StatsSink_config_type_case(const envoy_config_metrics_v3_StatsSink* msg) {
+ return (envoy_config_metrics_v3_StatsSink_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_metrics_v3_StatsSink_clear_name(const envoy_config_metrics_v3_StatsSink* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_metrics_v3_StatsSink_name(const envoy_config_metrics_v3_StatsSink* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_metrics_v3_StatsSink_has_typed_config(const envoy_config_metrics_v3_StatsSink* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_metrics_v3_StatsSink_clear_typed_config(const envoy_config_metrics_v3_StatsSink* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_metrics_v3_StatsSink_config_type_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_metrics_v3_StatsSink_typed_config(const envoy_config_metrics_v3_StatsSink* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
}
-UPB_INLINE bool envoy_config_metrics_v3_StatsSink_has_typed_config(const envoy_config_metrics_v3_StatsSink *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_metrics_v3_StatsSink_typed_config(const envoy_config_metrics_v3_StatsSink *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void envoy_config_metrics_v3_StatsSink_set_name(envoy_config_metrics_v3_StatsSink *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_metrics_v3_StatsSink_set_typed_config(envoy_config_metrics_v3_StatsSink *msg, struct google_protobuf_Any* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_metrics_v3_StatsSink_mutable_typed_config(envoy_config_metrics_v3_StatsSink *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_metrics_v3_StatsSink_mutable_typed_config(envoy_config_metrics_v3_StatsSink* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_metrics_v3_StatsSink_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -143,43 +158,70 @@ UPB_INLINE envoy_config_metrics_v3_StatsConfig* envoy_config_metrics_v3_StatsCon
return ret;
}
UPB_INLINE char* envoy_config_metrics_v3_StatsConfig_serialize(const envoy_config_metrics_v3_StatsConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_StatsConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_StatsConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_metrics_v3_StatsConfig_serialize_ex(const envoy_config_metrics_v3_StatsConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_StatsConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_StatsConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_metrics_v3_StatsConfig_has_stats_tags(const envoy_config_metrics_v3_StatsConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_config_metrics_v3_StatsConfig_clear_stats_tags(const envoy_config_metrics_v3_StatsConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_config_metrics_v3_TagSpecifier* const* envoy_config_metrics_v3_StatsConfig_stats_tags(const envoy_config_metrics_v3_StatsConfig* msg, size_t* len) {
+ return (const envoy_config_metrics_v3_TagSpecifier* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool envoy_config_metrics_v3_StatsConfig_has_use_all_default_tags(const envoy_config_metrics_v3_StatsConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_metrics_v3_StatsConfig_clear_use_all_default_tags(const envoy_config_metrics_v3_StatsConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_metrics_v3_StatsConfig_has_stats_tags(const envoy_config_metrics_v3_StatsConfig *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE const envoy_config_metrics_v3_TagSpecifier* const* envoy_config_metrics_v3_StatsConfig_stats_tags(const envoy_config_metrics_v3_StatsConfig *msg, size_t *len) { return (const envoy_config_metrics_v3_TagSpecifier* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len); }
-UPB_INLINE bool envoy_config_metrics_v3_StatsConfig_has_use_all_default_tags(const envoy_config_metrics_v3_StatsConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_metrics_v3_StatsConfig_use_all_default_tags(const envoy_config_metrics_v3_StatsConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_config_metrics_v3_StatsConfig_has_stats_matcher(const envoy_config_metrics_v3_StatsConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_metrics_v3_StatsConfig_clear_stats_matcher(const envoy_config_metrics_v3_StatsConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_metrics_v3_StatsConfig_has_stats_matcher(const envoy_config_metrics_v3_StatsConfig *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const envoy_config_metrics_v3_StatsMatcher* envoy_config_metrics_v3_StatsConfig_stats_matcher(const envoy_config_metrics_v3_StatsConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const envoy_config_metrics_v3_StatsMatcher*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_config_metrics_v3_StatsMatcher*);
+}
+UPB_INLINE bool envoy_config_metrics_v3_StatsConfig_has_histogram_bucket_settings(const envoy_config_metrics_v3_StatsConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE void envoy_config_metrics_v3_StatsConfig_clear_histogram_bucket_settings(const envoy_config_metrics_v3_StatsConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE const envoy_config_metrics_v3_HistogramBucketSettings* const* envoy_config_metrics_v3_StatsConfig_histogram_bucket_settings(const envoy_config_metrics_v3_StatsConfig* msg, size_t* len) {
+ return (const envoy_config_metrics_v3_HistogramBucketSettings* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE bool envoy_config_metrics_v3_StatsConfig_has_histogram_bucket_settings(const envoy_config_metrics_v3_StatsConfig *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const envoy_config_metrics_v3_HistogramBucketSettings* const* envoy_config_metrics_v3_StatsConfig_histogram_bucket_settings(const envoy_config_metrics_v3_StatsConfig *msg, size_t *len) { return (const envoy_config_metrics_v3_HistogramBucketSettings* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
-UPB_INLINE envoy_config_metrics_v3_TagSpecifier** envoy_config_metrics_v3_StatsConfig_mutable_stats_tags(envoy_config_metrics_v3_StatsConfig *msg, size_t *len) {
- return (envoy_config_metrics_v3_TagSpecifier**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
+UPB_INLINE envoy_config_metrics_v3_TagSpecifier** envoy_config_metrics_v3_StatsConfig_mutable_stats_tags(envoy_config_metrics_v3_StatsConfig* msg, size_t* len) {
+ return (envoy_config_metrics_v3_TagSpecifier**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE envoy_config_metrics_v3_TagSpecifier** envoy_config_metrics_v3_StatsConfig_resize_stats_tags(envoy_config_metrics_v3_StatsConfig *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_metrics_v3_TagSpecifier**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_metrics_v3_TagSpecifier** envoy_config_metrics_v3_StatsConfig_resize_stats_tags(envoy_config_metrics_v3_StatsConfig* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_metrics_v3_TagSpecifier**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_metrics_v3_TagSpecifier* envoy_config_metrics_v3_StatsConfig_add_stats_tags(envoy_config_metrics_v3_StatsConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_metrics_v3_TagSpecifier* envoy_config_metrics_v3_StatsConfig_add_stats_tags(envoy_config_metrics_v3_StatsConfig* msg, upb_Arena* arena) {
struct envoy_config_metrics_v3_TagSpecifier* sub = (struct envoy_config_metrics_v3_TagSpecifier*)_upb_Message_New(&envoy_config_metrics_v3_TagSpecifier_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_metrics_v3_StatsConfig_set_use_all_default_tags(envoy_config_metrics_v3_StatsConfig *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_metrics_v3_StatsConfig_mutable_use_all_default_tags(envoy_config_metrics_v3_StatsConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_metrics_v3_StatsConfig_mutable_use_all_default_tags(envoy_config_metrics_v3_StatsConfig* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_metrics_v3_StatsConfig_use_all_default_tags(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -190,9 +232,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_metrics_v3_StatsConfig
}
UPB_INLINE void envoy_config_metrics_v3_StatsConfig_set_stats_matcher(envoy_config_metrics_v3_StatsConfig *msg, envoy_config_metrics_v3_StatsMatcher* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), envoy_config_metrics_v3_StatsMatcher*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_config_metrics_v3_StatsMatcher*) = value;
}
-UPB_INLINE struct envoy_config_metrics_v3_StatsMatcher* envoy_config_metrics_v3_StatsConfig_mutable_stats_matcher(envoy_config_metrics_v3_StatsConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_metrics_v3_StatsMatcher* envoy_config_metrics_v3_StatsConfig_mutable_stats_matcher(envoy_config_metrics_v3_StatsConfig* msg, upb_Arena* arena) {
struct envoy_config_metrics_v3_StatsMatcher* sub = (struct envoy_config_metrics_v3_StatsMatcher*)envoy_config_metrics_v3_StatsConfig_stats_matcher(msg);
if (sub == NULL) {
sub = (struct envoy_config_metrics_v3_StatsMatcher*)_upb_Message_New(&envoy_config_metrics_v3_StatsMatcher_msginit, arena);
@@ -201,16 +243,15 @@ UPB_INLINE struct envoy_config_metrics_v3_StatsMatcher* envoy_config_metrics_v3_
}
return sub;
}
-UPB_INLINE envoy_config_metrics_v3_HistogramBucketSettings** envoy_config_metrics_v3_StatsConfig_mutable_histogram_bucket_settings(envoy_config_metrics_v3_StatsConfig *msg, size_t *len) {
+UPB_INLINE envoy_config_metrics_v3_HistogramBucketSettings** envoy_config_metrics_v3_StatsConfig_mutable_histogram_bucket_settings(envoy_config_metrics_v3_StatsConfig* msg, size_t* len) {
return (envoy_config_metrics_v3_HistogramBucketSettings**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE envoy_config_metrics_v3_HistogramBucketSettings** envoy_config_metrics_v3_StatsConfig_resize_histogram_bucket_settings(envoy_config_metrics_v3_StatsConfig *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_metrics_v3_HistogramBucketSettings** envoy_config_metrics_v3_StatsConfig_resize_histogram_bucket_settings(envoy_config_metrics_v3_StatsConfig* msg, size_t len, upb_Arena* arena) {
return (envoy_config_metrics_v3_HistogramBucketSettings**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_metrics_v3_HistogramBucketSettings* envoy_config_metrics_v3_StatsConfig_add_histogram_bucket_settings(envoy_config_metrics_v3_StatsConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_metrics_v3_HistogramBucketSettings* envoy_config_metrics_v3_StatsConfig_add_histogram_bucket_settings(envoy_config_metrics_v3_StatsConfig* msg, upb_Arena* arena) {
struct envoy_config_metrics_v3_HistogramBucketSettings* sub = (struct envoy_config_metrics_v3_HistogramBucketSettings*)_upb_Message_New(&envoy_config_metrics_v3_HistogramBucketSettings_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -240,11 +281,15 @@ UPB_INLINE envoy_config_metrics_v3_StatsMatcher* envoy_config_metrics_v3_StatsMa
return ret;
}
UPB_INLINE char* envoy_config_metrics_v3_StatsMatcher_serialize(const envoy_config_metrics_v3_StatsMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_StatsMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_StatsMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_metrics_v3_StatsMatcher_serialize_ex(const envoy_config_metrics_v3_StatsMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_StatsMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_StatsMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_metrics_v3_StatsMatcher_stats_matcher_reject_all = 1,
@@ -252,22 +297,44 @@ typedef enum {
envoy_config_metrics_v3_StatsMatcher_stats_matcher_inclusion_list = 3,
envoy_config_metrics_v3_StatsMatcher_stats_matcher_NOT_SET = 0
} envoy_config_metrics_v3_StatsMatcher_stats_matcher_oneofcases;
-UPB_INLINE envoy_config_metrics_v3_StatsMatcher_stats_matcher_oneofcases envoy_config_metrics_v3_StatsMatcher_stats_matcher_case(const envoy_config_metrics_v3_StatsMatcher* msg) { return (envoy_config_metrics_v3_StatsMatcher_stats_matcher_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_metrics_v3_StatsMatcher_has_reject_all(const envoy_config_metrics_v3_StatsMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE bool envoy_config_metrics_v3_StatsMatcher_reject_all(const envoy_config_metrics_v3_StatsMatcher *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, false); }
-UPB_INLINE bool envoy_config_metrics_v3_StatsMatcher_has_exclusion_list(const envoy_config_metrics_v3_StatsMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const struct envoy_type_matcher_v3_ListStringMatcher* envoy_config_metrics_v3_StatsMatcher_exclusion_list(const envoy_config_metrics_v3_StatsMatcher *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_ListStringMatcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool envoy_config_metrics_v3_StatsMatcher_has_inclusion_list(const envoy_config_metrics_v3_StatsMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const struct envoy_type_matcher_v3_ListStringMatcher* envoy_config_metrics_v3_StatsMatcher_inclusion_list(const envoy_config_metrics_v3_StatsMatcher *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_ListStringMatcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
+UPB_INLINE envoy_config_metrics_v3_StatsMatcher_stats_matcher_oneofcases envoy_config_metrics_v3_StatsMatcher_stats_matcher_case(const envoy_config_metrics_v3_StatsMatcher* msg) {
+ return (envoy_config_metrics_v3_StatsMatcher_stats_matcher_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_metrics_v3_StatsMatcher_has_reject_all(const envoy_config_metrics_v3_StatsMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_metrics_v3_StatsMatcher_clear_reject_all(const envoy_config_metrics_v3_StatsMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_metrics_v3_StatsMatcher_stats_matcher_NOT_SET);
+}
+UPB_INLINE bool envoy_config_metrics_v3_StatsMatcher_reject_all(const envoy_config_metrics_v3_StatsMatcher* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, false);
+}
+UPB_INLINE bool envoy_config_metrics_v3_StatsMatcher_has_exclusion_list(const envoy_config_metrics_v3_StatsMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_metrics_v3_StatsMatcher_clear_exclusion_list(const envoy_config_metrics_v3_StatsMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_ListStringMatcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_metrics_v3_StatsMatcher_stats_matcher_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_ListStringMatcher* envoy_config_metrics_v3_StatsMatcher_exclusion_list(const envoy_config_metrics_v3_StatsMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_ListStringMatcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_config_metrics_v3_StatsMatcher_has_inclusion_list(const envoy_config_metrics_v3_StatsMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_metrics_v3_StatsMatcher_clear_inclusion_list(const envoy_config_metrics_v3_StatsMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_ListStringMatcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_metrics_v3_StatsMatcher_stats_matcher_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_ListStringMatcher* envoy_config_metrics_v3_StatsMatcher_inclusion_list(const envoy_config_metrics_v3_StatsMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_ListStringMatcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
UPB_INLINE void envoy_config_metrics_v3_StatsMatcher_set_reject_all(envoy_config_metrics_v3_StatsMatcher *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
UPB_INLINE void envoy_config_metrics_v3_StatsMatcher_set_exclusion_list(envoy_config_metrics_v3_StatsMatcher *msg, struct envoy_type_matcher_v3_ListStringMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_ListStringMatcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_ListStringMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_type_matcher_v3_ListStringMatcher* envoy_config_metrics_v3_StatsMatcher_mutable_exclusion_list(envoy_config_metrics_v3_StatsMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_ListStringMatcher* envoy_config_metrics_v3_StatsMatcher_mutable_exclusion_list(envoy_config_metrics_v3_StatsMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_ListStringMatcher* sub = (struct envoy_type_matcher_v3_ListStringMatcher*)envoy_config_metrics_v3_StatsMatcher_exclusion_list(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_ListStringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_ListStringMatcher_msginit, arena);
@@ -277,9 +344,9 @@ UPB_INLINE struct envoy_type_matcher_v3_ListStringMatcher* envoy_config_metrics_
return sub;
}
UPB_INLINE void envoy_config_metrics_v3_StatsMatcher_set_inclusion_list(envoy_config_metrics_v3_StatsMatcher *msg, struct envoy_type_matcher_v3_ListStringMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_ListStringMatcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_ListStringMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_type_matcher_v3_ListStringMatcher* envoy_config_metrics_v3_StatsMatcher_mutable_inclusion_list(envoy_config_metrics_v3_StatsMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_ListStringMatcher* envoy_config_metrics_v3_StatsMatcher_mutable_inclusion_list(envoy_config_metrics_v3_StatsMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_ListStringMatcher* sub = (struct envoy_type_matcher_v3_ListStringMatcher*)envoy_config_metrics_v3_StatsMatcher_inclusion_list(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_ListStringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_ListStringMatcher_msginit, arena);
@@ -314,35 +381,57 @@ UPB_INLINE envoy_config_metrics_v3_TagSpecifier* envoy_config_metrics_v3_TagSpec
return ret;
}
UPB_INLINE char* envoy_config_metrics_v3_TagSpecifier_serialize(const envoy_config_metrics_v3_TagSpecifier* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_TagSpecifier_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_TagSpecifier_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_metrics_v3_TagSpecifier_serialize_ex(const envoy_config_metrics_v3_TagSpecifier* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_TagSpecifier_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_TagSpecifier_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_metrics_v3_TagSpecifier_tag_value_regex = 2,
envoy_config_metrics_v3_TagSpecifier_tag_value_fixed_value = 3,
envoy_config_metrics_v3_TagSpecifier_tag_value_NOT_SET = 0
} envoy_config_metrics_v3_TagSpecifier_tag_value_oneofcases;
-UPB_INLINE envoy_config_metrics_v3_TagSpecifier_tag_value_oneofcases envoy_config_metrics_v3_TagSpecifier_tag_value_case(const envoy_config_metrics_v3_TagSpecifier* msg) { return (envoy_config_metrics_v3_TagSpecifier_tag_value_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(16, 32), int32_t); }
-
+UPB_INLINE envoy_config_metrics_v3_TagSpecifier_tag_value_oneofcases envoy_config_metrics_v3_TagSpecifier_tag_value_case(const envoy_config_metrics_v3_TagSpecifier* msg) {
+ return (envoy_config_metrics_v3_TagSpecifier_tag_value_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_metrics_v3_TagSpecifier_clear_tag_name(const envoy_config_metrics_v3_TagSpecifier* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_metrics_v3_TagSpecifier_tag_name(const envoy_config_metrics_v3_TagSpecifier* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+}
+UPB_INLINE bool envoy_config_metrics_v3_TagSpecifier_has_regex(const envoy_config_metrics_v3_TagSpecifier* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_metrics_v3_TagSpecifier_clear_regex(const envoy_config_metrics_v3_TagSpecifier* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_metrics_v3_TagSpecifier_tag_value_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_metrics_v3_TagSpecifier_regex(const envoy_config_metrics_v3_TagSpecifier* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_metrics_v3_TagSpecifier_has_fixed_value(const envoy_config_metrics_v3_TagSpecifier* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_metrics_v3_TagSpecifier_clear_fixed_value(const envoy_config_metrics_v3_TagSpecifier* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_metrics_v3_TagSpecifier_tag_value_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_metrics_v3_TagSpecifier_fixed_value(const envoy_config_metrics_v3_TagSpecifier* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, upb_StringView_FromString(""));
}
-UPB_INLINE bool envoy_config_metrics_v3_TagSpecifier_has_regex(const envoy_config_metrics_v3_TagSpecifier *msg) { return _upb_getoneofcase(msg, UPB_SIZE(16, 32)) == 2; }
-UPB_INLINE upb_StringView envoy_config_metrics_v3_TagSpecifier_regex(const envoy_config_metrics_v3_TagSpecifier *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 16), UPB_SIZE(16, 32), 2, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_metrics_v3_TagSpecifier_has_fixed_value(const envoy_config_metrics_v3_TagSpecifier *msg) { return _upb_getoneofcase(msg, UPB_SIZE(16, 32)) == 3; }
-UPB_INLINE upb_StringView envoy_config_metrics_v3_TagSpecifier_fixed_value(const envoy_config_metrics_v3_TagSpecifier *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 16), UPB_SIZE(16, 32), 3, upb_StringView_FromString("")); }
UPB_INLINE void envoy_config_metrics_v3_TagSpecifier_set_tag_name(envoy_config_metrics_v3_TagSpecifier *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
}
UPB_INLINE void envoy_config_metrics_v3_TagSpecifier_set_regex(envoy_config_metrics_v3_TagSpecifier *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 16), value, UPB_SIZE(16, 32), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
UPB_INLINE void envoy_config_metrics_v3_TagSpecifier_set_fixed_value(envoy_config_metrics_v3_TagSpecifier *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 16), value, UPB_SIZE(16, 32), 3);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
/* envoy.config.metrics.v3.HistogramBucketSettings */
@@ -370,23 +459,37 @@ UPB_INLINE envoy_config_metrics_v3_HistogramBucketSettings* envoy_config_metrics
return ret;
}
UPB_INLINE char* envoy_config_metrics_v3_HistogramBucketSettings_serialize(const envoy_config_metrics_v3_HistogramBucketSettings* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_HistogramBucketSettings_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_HistogramBucketSettings_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_metrics_v3_HistogramBucketSettings_serialize_ex(const envoy_config_metrics_v3_HistogramBucketSettings* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_HistogramBucketSettings_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_HistogramBucketSettings_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_metrics_v3_HistogramBucketSettings_has_match(const envoy_config_metrics_v3_HistogramBucketSettings* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_metrics_v3_HistogramBucketSettings_clear_match(const envoy_config_metrics_v3_HistogramBucketSettings* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_metrics_v3_HistogramBucketSettings_has_match(const envoy_config_metrics_v3_HistogramBucketSettings *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_config_metrics_v3_HistogramBucketSettings_match(const envoy_config_metrics_v3_HistogramBucketSettings* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_matcher_v3_StringMatcher*);
}
-UPB_INLINE double const* envoy_config_metrics_v3_HistogramBucketSettings_buckets(const envoy_config_metrics_v3_HistogramBucketSettings *msg, size_t *len) { return (double const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
+UPB_INLINE void envoy_config_metrics_v3_HistogramBucketSettings_clear_buckets(const envoy_config_metrics_v3_HistogramBucketSettings* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE double const* envoy_config_metrics_v3_HistogramBucketSettings_buckets(const envoy_config_metrics_v3_HistogramBucketSettings* msg, size_t* len) {
+ return (double const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
UPB_INLINE void envoy_config_metrics_v3_HistogramBucketSettings_set_match(envoy_config_metrics_v3_HistogramBucketSettings *msg, struct envoy_type_matcher_v3_StringMatcher* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_matcher_v3_StringMatcher*) = value;
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_metrics_v3_HistogramBucketSettings_mutable_match(envoy_config_metrics_v3_HistogramBucketSettings *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_metrics_v3_HistogramBucketSettings_mutable_match(envoy_config_metrics_v3_HistogramBucketSettings* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)envoy_config_metrics_v3_HistogramBucketSettings_match(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StringMatcher_msginit, arena);
@@ -395,15 +498,14 @@ UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_metrics_v3_H
}
return sub;
}
-UPB_INLINE double* envoy_config_metrics_v3_HistogramBucketSettings_mutable_buckets(envoy_config_metrics_v3_HistogramBucketSettings *msg, size_t *len) {
+UPB_INLINE double* envoy_config_metrics_v3_HistogramBucketSettings_mutable_buckets(envoy_config_metrics_v3_HistogramBucketSettings* msg, size_t* len) {
return (double*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE double* envoy_config_metrics_v3_HistogramBucketSettings_resize_buckets(envoy_config_metrics_v3_HistogramBucketSettings *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE double* envoy_config_metrics_v3_HistogramBucketSettings_resize_buckets(envoy_config_metrics_v3_HistogramBucketSettings* msg, size_t len, upb_Arena* arena) {
return (double*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, 3, arena);
}
-UPB_INLINE bool envoy_config_metrics_v3_HistogramBucketSettings_add_buckets(envoy_config_metrics_v3_HistogramBucketSettings *msg, double val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), 3, &val,
- arena);
+UPB_INLINE bool envoy_config_metrics_v3_HistogramBucketSettings_add_buckets(envoy_config_metrics_v3_HistogramBucketSettings* msg, double val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), 3, &val, arena);
}
/* envoy.config.metrics.v3.StatsdSink */
@@ -431,31 +533,53 @@ UPB_INLINE envoy_config_metrics_v3_StatsdSink* envoy_config_metrics_v3_StatsdSin
return ret;
}
UPB_INLINE char* envoy_config_metrics_v3_StatsdSink_serialize(const envoy_config_metrics_v3_StatsdSink* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_StatsdSink_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_StatsdSink_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_metrics_v3_StatsdSink_serialize_ex(const envoy_config_metrics_v3_StatsdSink* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_StatsdSink_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_StatsdSink_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_metrics_v3_StatsdSink_statsd_specifier_address = 1,
envoy_config_metrics_v3_StatsdSink_statsd_specifier_tcp_cluster_name = 2,
envoy_config_metrics_v3_StatsdSink_statsd_specifier_NOT_SET = 0
} envoy_config_metrics_v3_StatsdSink_statsd_specifier_oneofcases;
-UPB_INLINE envoy_config_metrics_v3_StatsdSink_statsd_specifier_oneofcases envoy_config_metrics_v3_StatsdSink_statsd_specifier_case(const envoy_config_metrics_v3_StatsdSink* msg) { return (envoy_config_metrics_v3_StatsdSink_statsd_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(16, 32), int32_t); }
-
-UPB_INLINE bool envoy_config_metrics_v3_StatsdSink_has_address(const envoy_config_metrics_v3_StatsdSink *msg) { return _upb_getoneofcase(msg, UPB_SIZE(16, 32)) == 1; }
-UPB_INLINE const struct envoy_config_core_v3_Address* envoy_config_metrics_v3_StatsdSink_address(const envoy_config_metrics_v3_StatsdSink *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_Address*, UPB_SIZE(8, 16), UPB_SIZE(16, 32), 1, NULL); }
-UPB_INLINE bool envoy_config_metrics_v3_StatsdSink_has_tcp_cluster_name(const envoy_config_metrics_v3_StatsdSink *msg) { return _upb_getoneofcase(msg, UPB_SIZE(16, 32)) == 2; }
-UPB_INLINE upb_StringView envoy_config_metrics_v3_StatsdSink_tcp_cluster_name(const envoy_config_metrics_v3_StatsdSink *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 16), UPB_SIZE(16, 32), 2, upb_StringView_FromString("")); }
+UPB_INLINE envoy_config_metrics_v3_StatsdSink_statsd_specifier_oneofcases envoy_config_metrics_v3_StatsdSink_statsd_specifier_case(const envoy_config_metrics_v3_StatsdSink* msg) {
+ return (envoy_config_metrics_v3_StatsdSink_statsd_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_metrics_v3_StatsdSink_has_address(const envoy_config_metrics_v3_StatsdSink* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_metrics_v3_StatsdSink_clear_address(const envoy_config_metrics_v3_StatsdSink* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_Address*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_metrics_v3_StatsdSink_statsd_specifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_Address* envoy_config_metrics_v3_StatsdSink_address(const envoy_config_metrics_v3_StatsdSink* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_Address*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_metrics_v3_StatsdSink_has_tcp_cluster_name(const envoy_config_metrics_v3_StatsdSink* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_metrics_v3_StatsdSink_clear_tcp_cluster_name(const envoy_config_metrics_v3_StatsdSink* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_metrics_v3_StatsdSink_statsd_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_metrics_v3_StatsdSink_tcp_cluster_name(const envoy_config_metrics_v3_StatsdSink* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, upb_StringView_FromString(""));
+}
+UPB_INLINE void envoy_config_metrics_v3_StatsdSink_clear_prefix(const envoy_config_metrics_v3_StatsdSink* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_metrics_v3_StatsdSink_prefix(const envoy_config_metrics_v3_StatsdSink* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
UPB_INLINE void envoy_config_metrics_v3_StatsdSink_set_address(envoy_config_metrics_v3_StatsdSink *msg, struct envoy_config_core_v3_Address* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_Address*, UPB_SIZE(8, 16), value, UPB_SIZE(16, 32), 1);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_Address*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_metrics_v3_StatsdSink_mutable_address(envoy_config_metrics_v3_StatsdSink *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_metrics_v3_StatsdSink_mutable_address(envoy_config_metrics_v3_StatsdSink* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Address* sub = (struct envoy_config_core_v3_Address*)envoy_config_metrics_v3_StatsdSink_address(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Address*)_upb_Message_New(&envoy_config_core_v3_Address_msginit, arena);
@@ -465,10 +589,10 @@ UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_metrics_v3_StatsdSi
return sub;
}
UPB_INLINE void envoy_config_metrics_v3_StatsdSink_set_tcp_cluster_name(envoy_config_metrics_v3_StatsdSink *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 16), value, UPB_SIZE(16, 32), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
UPB_INLINE void envoy_config_metrics_v3_StatsdSink_set_prefix(envoy_config_metrics_v3_StatsdSink *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
}
/* envoy.config.metrics.v3.DogStatsdSink */
@@ -496,32 +620,52 @@ UPB_INLINE envoy_config_metrics_v3_DogStatsdSink* envoy_config_metrics_v3_DogSta
return ret;
}
UPB_INLINE char* envoy_config_metrics_v3_DogStatsdSink_serialize(const envoy_config_metrics_v3_DogStatsdSink* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_DogStatsdSink_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_DogStatsdSink_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_metrics_v3_DogStatsdSink_serialize_ex(const envoy_config_metrics_v3_DogStatsdSink* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_DogStatsdSink_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_DogStatsdSink_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_metrics_v3_DogStatsdSink_dog_statsd_specifier_address = 1,
envoy_config_metrics_v3_DogStatsdSink_dog_statsd_specifier_NOT_SET = 0
} envoy_config_metrics_v3_DogStatsdSink_dog_statsd_specifier_oneofcases;
-UPB_INLINE envoy_config_metrics_v3_DogStatsdSink_dog_statsd_specifier_oneofcases envoy_config_metrics_v3_DogStatsdSink_dog_statsd_specifier_case(const envoy_config_metrics_v3_DogStatsdSink* msg) { return (envoy_config_metrics_v3_DogStatsdSink_dog_statsd_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(20, 40), int32_t); }
-
-UPB_INLINE bool envoy_config_metrics_v3_DogStatsdSink_has_address(const envoy_config_metrics_v3_DogStatsdSink *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 1; }
-UPB_INLINE const struct envoy_config_core_v3_Address* envoy_config_metrics_v3_DogStatsdSink_address(const envoy_config_metrics_v3_DogStatsdSink *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_Address*, UPB_SIZE(16, 32), UPB_SIZE(20, 40), 1, NULL); }
+UPB_INLINE envoy_config_metrics_v3_DogStatsdSink_dog_statsd_specifier_oneofcases envoy_config_metrics_v3_DogStatsdSink_dog_statsd_specifier_case(const envoy_config_metrics_v3_DogStatsdSink* msg) {
+ return (envoy_config_metrics_v3_DogStatsdSink_dog_statsd_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_config_metrics_v3_DogStatsdSink_has_address(const envoy_config_metrics_v3_DogStatsdSink* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 1;
+}
+UPB_INLINE void envoy_config_metrics_v3_DogStatsdSink_clear_address(const envoy_config_metrics_v3_DogStatsdSink* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_Address*, UPB_SIZE(20, 32), 0, UPB_SIZE(4, 4), envoy_config_metrics_v3_DogStatsdSink_dog_statsd_specifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_Address* envoy_config_metrics_v3_DogStatsdSink_address(const envoy_config_metrics_v3_DogStatsdSink* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_Address*, UPB_SIZE(20, 32), UPB_SIZE(4, 4), 1, NULL);
+}
+UPB_INLINE void envoy_config_metrics_v3_DogStatsdSink_clear_prefix(const envoy_config_metrics_v3_DogStatsdSink* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_metrics_v3_DogStatsdSink_prefix(const envoy_config_metrics_v3_DogStatsdSink* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_metrics_v3_DogStatsdSink_has_max_bytes_per_datagram(const envoy_config_metrics_v3_DogStatsdSink* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_metrics_v3_DogStatsdSink_clear_max_bytes_per_datagram(const envoy_config_metrics_v3_DogStatsdSink* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_metrics_v3_DogStatsdSink_has_max_bytes_per_datagram(const envoy_config_metrics_v3_DogStatsdSink *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt64Value* envoy_config_metrics_v3_DogStatsdSink_max_bytes_per_datagram(const envoy_config_metrics_v3_DogStatsdSink* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_UInt64Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_UInt64Value*);
}
UPB_INLINE void envoy_config_metrics_v3_DogStatsdSink_set_address(envoy_config_metrics_v3_DogStatsdSink *msg, struct envoy_config_core_v3_Address* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_Address*, UPB_SIZE(16, 32), value, UPB_SIZE(20, 40), 1);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_Address*, UPB_SIZE(20, 32), value, UPB_SIZE(4, 4), 1);
}
-UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_metrics_v3_DogStatsdSink_mutable_address(envoy_config_metrics_v3_DogStatsdSink *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_metrics_v3_DogStatsdSink_mutable_address(envoy_config_metrics_v3_DogStatsdSink* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Address* sub = (struct envoy_config_core_v3_Address*)envoy_config_metrics_v3_DogStatsdSink_address(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Address*)_upb_Message_New(&envoy_config_core_v3_Address_msginit, arena);
@@ -531,13 +675,13 @@ UPB_INLINE struct envoy_config_core_v3_Address* envoy_config_metrics_v3_DogStats
return sub;
}
UPB_INLINE void envoy_config_metrics_v3_DogStatsdSink_set_prefix(envoy_config_metrics_v3_DogStatsdSink *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_metrics_v3_DogStatsdSink_set_max_bytes_per_datagram(envoy_config_metrics_v3_DogStatsdSink *msg, struct google_protobuf_UInt64Value* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_UInt64Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_UInt64Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_metrics_v3_DogStatsdSink_mutable_max_bytes_per_datagram(envoy_config_metrics_v3_DogStatsdSink *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt64Value* envoy_config_metrics_v3_DogStatsdSink_mutable_max_bytes_per_datagram(envoy_config_metrics_v3_DogStatsdSink* msg, upb_Arena* arena) {
struct google_protobuf_UInt64Value* sub = (struct google_protobuf_UInt64Value*)envoy_config_metrics_v3_DogStatsdSink_max_bytes_per_datagram(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt64Value*)_upb_Message_New(&google_protobuf_UInt64Value_msginit, arena);
@@ -572,11 +716,18 @@ UPB_INLINE envoy_config_metrics_v3_HystrixSink* envoy_config_metrics_v3_HystrixS
return ret;
}
UPB_INLINE char* envoy_config_metrics_v3_HystrixSink_serialize(const envoy_config_metrics_v3_HystrixSink* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_HystrixSink_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_HystrixSink_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_metrics_v3_HystrixSink_serialize_ex(const envoy_config_metrics_v3_HystrixSink* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_metrics_v3_HystrixSink_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_metrics_v3_HystrixSink_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_metrics_v3_HystrixSink_clear_num_buckets(const envoy_config_metrics_v3_HystrixSink* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t) = 0;
}
UPB_INLINE int64_t envoy_config_metrics_v3_HystrixSink_num_buckets(const envoy_config_metrics_v3_HystrixSink* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c
index e877db7626..2344d86cec 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c
@@ -23,52 +23,52 @@ static const upb_MiniTable_Sub envoy_config_overload_v3_ResourceMonitor_submsgs[
};
static const upb_MiniTable_Field envoy_config_overload_v3_ResourceMonitor__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_overload_v3_ResourceMonitor_msginit = {
&envoy_config_overload_v3_ResourceMonitor_submsgs[0],
&envoy_config_overload_v3_ResourceMonitor__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_overload_v3_ThresholdTrigger__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_overload_v3_ThresholdTrigger_msginit = {
NULL,
&envoy_config_overload_v3_ThresholdTrigger__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_overload_v3_ScaledTrigger__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 0, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_overload_v3_ScaledTrigger_msginit = {
NULL,
&envoy_config_overload_v3_ScaledTrigger__fields[0],
- UPB_SIZE(16, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_overload_v3_Trigger_submsgs[2] = {
- {.submsg = &envoy_config_overload_v3_ScaledTrigger_msginit},
{.submsg = &envoy_config_overload_v3_ThresholdTrigger_msginit},
+ {.submsg = &envoy_config_overload_v3_ScaledTrigger_msginit},
};
static const upb_MiniTable_Field envoy_config_overload_v3_Trigger__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_overload_v3_Trigger_msginit = {
&envoy_config_overload_v3_Trigger_submsgs[0],
&envoy_config_overload_v3_Trigger__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_overload_v3_ScaleTimersOverloadActionConfig_submsgs[1] = {
@@ -76,30 +76,30 @@ static const upb_MiniTable_Sub envoy_config_overload_v3_ScaleTimersOverloadActio
};
static const upb_MiniTable_Field envoy_config_overload_v3_ScaleTimersOverloadActionConfig__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_overload_v3_ScaleTimersOverloadActionConfig_msginit = {
&envoy_config_overload_v3_ScaleTimersOverloadActionConfig_submsgs[0],
&envoy_config_overload_v3_ScaleTimersOverloadActionConfig__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_submsgs[2] = {
- {.submsg = &envoy_type_v3_Percent_msginit},
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_type_v3_Percent_msginit},
};
static const upb_MiniTable_Field envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), UPB_SIZE(-9, -17), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), UPB_SIZE(-9, -17), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_msginit = {
&envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_submsgs[0],
&envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer__fields[0],
- UPB_SIZE(16, 24), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 16), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_overload_v3_OverloadAction_submsgs[2] = {
@@ -108,45 +108,45 @@ static const upb_MiniTable_Sub envoy_config_overload_v3_OverloadAction_submsgs[2
};
static const upb_MiniTable_Field envoy_config_overload_v3_OverloadAction__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_overload_v3_OverloadAction_msginit = {
&envoy_config_overload_v3_OverloadAction_submsgs[0],
&envoy_config_overload_v3_OverloadAction__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Field envoy_config_overload_v3_BufferFactoryConfig__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_overload_v3_BufferFactoryConfig_msginit = {
NULL,
&envoy_config_overload_v3_BufferFactoryConfig__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_overload_v3_OverloadManager_submsgs[4] = {
- {.submsg = &envoy_config_overload_v3_BufferFactoryConfig_msginit},
- {.submsg = &envoy_config_overload_v3_OverloadAction_msginit},
- {.submsg = &envoy_config_overload_v3_ResourceMonitor_msginit},
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_overload_v3_ResourceMonitor_msginit},
+ {.submsg = &envoy_config_overload_v3_OverloadAction_msginit},
+ {.submsg = &envoy_config_overload_v3_BufferFactoryConfig_msginit},
};
static const upb_MiniTable_Field envoy_config_overload_v3_OverloadManager__fields[4] = {
- {1, UPB_SIZE(4, 8), 1, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_overload_v3_OverloadManager_msginit = {
&envoy_config_overload_v3_OverloadManager_submsgs[0],
&envoy_config_overload_v3_OverloadManager__fields[0],
- UPB_SIZE(24, 40), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable *messages_layout[9] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h
index 16ba0b44c6..97d02f0b70 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h
@@ -88,31 +88,46 @@ UPB_INLINE envoy_config_overload_v3_ResourceMonitor* envoy_config_overload_v3_Re
return ret;
}
UPB_INLINE char* envoy_config_overload_v3_ResourceMonitor_serialize(const envoy_config_overload_v3_ResourceMonitor* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_ResourceMonitor_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_ResourceMonitor_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_overload_v3_ResourceMonitor_serialize_ex(const envoy_config_overload_v3_ResourceMonitor* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_ResourceMonitor_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_ResourceMonitor_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_overload_v3_ResourceMonitor_config_type_typed_config = 3,
envoy_config_overload_v3_ResourceMonitor_config_type_NOT_SET = 0
} envoy_config_overload_v3_ResourceMonitor_config_type_oneofcases;
-UPB_INLINE envoy_config_overload_v3_ResourceMonitor_config_type_oneofcases envoy_config_overload_v3_ResourceMonitor_config_type_case(const envoy_config_overload_v3_ResourceMonitor* msg) { return (envoy_config_overload_v3_ResourceMonitor_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_config_overload_v3_ResourceMonitor_config_type_oneofcases envoy_config_overload_v3_ResourceMonitor_config_type_case(const envoy_config_overload_v3_ResourceMonitor* msg) {
+ return (envoy_config_overload_v3_ResourceMonitor_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_overload_v3_ResourceMonitor_clear_name(const envoy_config_overload_v3_ResourceMonitor* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_overload_v3_ResourceMonitor_name(const envoy_config_overload_v3_ResourceMonitor* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_overload_v3_ResourceMonitor_has_typed_config(const envoy_config_overload_v3_ResourceMonitor* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_overload_v3_ResourceMonitor_clear_typed_config(const envoy_config_overload_v3_ResourceMonitor* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_overload_v3_ResourceMonitor_config_type_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_overload_v3_ResourceMonitor_typed_config(const envoy_config_overload_v3_ResourceMonitor* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
}
-UPB_INLINE bool envoy_config_overload_v3_ResourceMonitor_has_typed_config(const envoy_config_overload_v3_ResourceMonitor *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_overload_v3_ResourceMonitor_typed_config(const envoy_config_overload_v3_ResourceMonitor *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void envoy_config_overload_v3_ResourceMonitor_set_name(envoy_config_overload_v3_ResourceMonitor *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_overload_v3_ResourceMonitor_set_typed_config(envoy_config_overload_v3_ResourceMonitor *msg, struct google_protobuf_Any* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_overload_v3_ResourceMonitor_mutable_typed_config(envoy_config_overload_v3_ResourceMonitor *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_overload_v3_ResourceMonitor_mutable_typed_config(envoy_config_overload_v3_ResourceMonitor* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_overload_v3_ResourceMonitor_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -147,11 +162,18 @@ UPB_INLINE envoy_config_overload_v3_ThresholdTrigger* envoy_config_overload_v3_T
return ret;
}
UPB_INLINE char* envoy_config_overload_v3_ThresholdTrigger_serialize(const envoy_config_overload_v3_ThresholdTrigger* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_ThresholdTrigger_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_ThresholdTrigger_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_overload_v3_ThresholdTrigger_serialize_ex(const envoy_config_overload_v3_ThresholdTrigger* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_ThresholdTrigger_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_ThresholdTrigger_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_overload_v3_ThresholdTrigger_clear_value(const envoy_config_overload_v3_ThresholdTrigger* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double) = 0;
}
UPB_INLINE double envoy_config_overload_v3_ThresholdTrigger_value(const envoy_config_overload_v3_ThresholdTrigger* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double);
@@ -186,15 +208,25 @@ UPB_INLINE envoy_config_overload_v3_ScaledTrigger* envoy_config_overload_v3_Scal
return ret;
}
UPB_INLINE char* envoy_config_overload_v3_ScaledTrigger_serialize(const envoy_config_overload_v3_ScaledTrigger* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_ScaledTrigger_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_ScaledTrigger_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_overload_v3_ScaledTrigger_serialize_ex(const envoy_config_overload_v3_ScaledTrigger* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_ScaledTrigger_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_ScaledTrigger_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_overload_v3_ScaledTrigger_clear_scaling_threshold(const envoy_config_overload_v3_ScaledTrigger* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double) = 0;
}
UPB_INLINE double envoy_config_overload_v3_ScaledTrigger_scaling_threshold(const envoy_config_overload_v3_ScaledTrigger* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double);
}
+UPB_INLINE void envoy_config_overload_v3_ScaledTrigger_clear_saturation_threshold(const envoy_config_overload_v3_ScaledTrigger* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), double) = 0;
+}
UPB_INLINE double envoy_config_overload_v3_ScaledTrigger_saturation_threshold(const envoy_config_overload_v3_ScaledTrigger* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), double);
}
@@ -231,34 +263,56 @@ UPB_INLINE envoy_config_overload_v3_Trigger* envoy_config_overload_v3_Trigger_pa
return ret;
}
UPB_INLINE char* envoy_config_overload_v3_Trigger_serialize(const envoy_config_overload_v3_Trigger* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_Trigger_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_Trigger_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_overload_v3_Trigger_serialize_ex(const envoy_config_overload_v3_Trigger* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_Trigger_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_Trigger_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_overload_v3_Trigger_trigger_oneof_threshold = 2,
envoy_config_overload_v3_Trigger_trigger_oneof_scaled = 3,
envoy_config_overload_v3_Trigger_trigger_oneof_NOT_SET = 0
} envoy_config_overload_v3_Trigger_trigger_oneof_oneofcases;
-UPB_INLINE envoy_config_overload_v3_Trigger_trigger_oneof_oneofcases envoy_config_overload_v3_Trigger_trigger_oneof_case(const envoy_config_overload_v3_Trigger* msg) { return (envoy_config_overload_v3_Trigger_trigger_oneof_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_config_overload_v3_Trigger_trigger_oneof_oneofcases envoy_config_overload_v3_Trigger_trigger_oneof_case(const envoy_config_overload_v3_Trigger* msg) {
+ return (envoy_config_overload_v3_Trigger_trigger_oneof_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_overload_v3_Trigger_clear_name(const envoy_config_overload_v3_Trigger* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_overload_v3_Trigger_name(const envoy_config_overload_v3_Trigger* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_overload_v3_Trigger_has_threshold(const envoy_config_overload_v3_Trigger* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_overload_v3_Trigger_clear_threshold(const envoy_config_overload_v3_Trigger* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_overload_v3_ThresholdTrigger*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_overload_v3_Trigger_trigger_oneof_NOT_SET);
+}
+UPB_INLINE const envoy_config_overload_v3_ThresholdTrigger* envoy_config_overload_v3_Trigger_threshold(const envoy_config_overload_v3_Trigger* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_overload_v3_ThresholdTrigger*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_config_overload_v3_Trigger_has_scaled(const envoy_config_overload_v3_Trigger* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_overload_v3_Trigger_clear_scaled(const envoy_config_overload_v3_Trigger* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_overload_v3_ScaledTrigger*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_overload_v3_Trigger_trigger_oneof_NOT_SET);
+}
+UPB_INLINE const envoy_config_overload_v3_ScaledTrigger* envoy_config_overload_v3_Trigger_scaled(const envoy_config_overload_v3_Trigger* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_overload_v3_ScaledTrigger*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
}
-UPB_INLINE bool envoy_config_overload_v3_Trigger_has_threshold(const envoy_config_overload_v3_Trigger *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE const envoy_config_overload_v3_ThresholdTrigger* envoy_config_overload_v3_Trigger_threshold(const envoy_config_overload_v3_Trigger *msg) { return UPB_READ_ONEOF(msg, const envoy_config_overload_v3_ThresholdTrigger*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 2, NULL); }
-UPB_INLINE bool envoy_config_overload_v3_Trigger_has_scaled(const envoy_config_overload_v3_Trigger *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const envoy_config_overload_v3_ScaledTrigger* envoy_config_overload_v3_Trigger_scaled(const envoy_config_overload_v3_Trigger *msg) { return UPB_READ_ONEOF(msg, const envoy_config_overload_v3_ScaledTrigger*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void envoy_config_overload_v3_Trigger_set_name(envoy_config_overload_v3_Trigger *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_overload_v3_Trigger_set_threshold(envoy_config_overload_v3_Trigger *msg, envoy_config_overload_v3_ThresholdTrigger* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_overload_v3_ThresholdTrigger*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_overload_v3_ThresholdTrigger*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_config_overload_v3_ThresholdTrigger* envoy_config_overload_v3_Trigger_mutable_threshold(envoy_config_overload_v3_Trigger *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_overload_v3_ThresholdTrigger* envoy_config_overload_v3_Trigger_mutable_threshold(envoy_config_overload_v3_Trigger* msg, upb_Arena* arena) {
struct envoy_config_overload_v3_ThresholdTrigger* sub = (struct envoy_config_overload_v3_ThresholdTrigger*)envoy_config_overload_v3_Trigger_threshold(msg);
if (sub == NULL) {
sub = (struct envoy_config_overload_v3_ThresholdTrigger*)_upb_Message_New(&envoy_config_overload_v3_ThresholdTrigger_msginit, arena);
@@ -268,9 +322,9 @@ UPB_INLINE struct envoy_config_overload_v3_ThresholdTrigger* envoy_config_overlo
return sub;
}
UPB_INLINE void envoy_config_overload_v3_Trigger_set_scaled(envoy_config_overload_v3_Trigger *msg, envoy_config_overload_v3_ScaledTrigger* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_overload_v3_ScaledTrigger*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_overload_v3_ScaledTrigger*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_config_overload_v3_ScaledTrigger* envoy_config_overload_v3_Trigger_mutable_scaled(envoy_config_overload_v3_Trigger *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_overload_v3_ScaledTrigger* envoy_config_overload_v3_Trigger_mutable_scaled(envoy_config_overload_v3_Trigger* msg, upb_Arena* arena) {
struct envoy_config_overload_v3_ScaledTrigger* sub = (struct envoy_config_overload_v3_ScaledTrigger*)envoy_config_overload_v3_Trigger_scaled(msg);
if (sub == NULL) {
sub = (struct envoy_config_overload_v3_ScaledTrigger*)_upb_Message_New(&envoy_config_overload_v3_ScaledTrigger_msginit, arena);
@@ -305,25 +359,35 @@ UPB_INLINE envoy_config_overload_v3_ScaleTimersOverloadActionConfig* envoy_confi
return ret;
}
UPB_INLINE char* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_serialize(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_ScaleTimersOverloadActionConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_ScaleTimersOverloadActionConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_serialize_ex(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_ScaleTimersOverloadActionConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_ScaleTimersOverloadActionConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_overload_v3_ScaleTimersOverloadActionConfig_has_timer_scale_factors(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_overload_v3_ScaleTimersOverloadActionConfig_clear_timer_scale_factors(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* const* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_timer_scale_factors(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig* msg, size_t* len) {
+ return (const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_overload_v3_ScaleTimersOverloadActionConfig_has_timer_scale_factors(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* const* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_timer_scale_factors(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig *msg, size_t *len) { return (const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer** envoy_config_overload_v3_ScaleTimersOverloadActionConfig_mutable_timer_scale_factors(envoy_config_overload_v3_ScaleTimersOverloadActionConfig *msg, size_t *len) {
+UPB_INLINE envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer** envoy_config_overload_v3_ScaleTimersOverloadActionConfig_mutable_timer_scale_factors(envoy_config_overload_v3_ScaleTimersOverloadActionConfig* msg, size_t* len) {
return (envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer** envoy_config_overload_v3_ScaleTimersOverloadActionConfig_resize_timer_scale_factors(envoy_config_overload_v3_ScaleTimersOverloadActionConfig *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer** envoy_config_overload_v3_ScaleTimersOverloadActionConfig_resize_timer_scale_factors(envoy_config_overload_v3_ScaleTimersOverloadActionConfig* msg, size_t len, upb_Arena* arena) {
return (envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_add_timer_scale_factors(envoy_config_overload_v3_ScaleTimersOverloadActionConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_add_timer_scale_factors(envoy_config_overload_v3_ScaleTimersOverloadActionConfig* msg, upb_Arena* arena) {
struct envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* sub = (struct envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer*)_upb_Message_New(&envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -353,34 +417,56 @@ UPB_INLINE envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer*
return ret;
}
UPB_INLINE char* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_serialize(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_serialize_ex(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_overload_adjust_min_timeout = 2,
envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_overload_adjust_min_scale = 3,
envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_overload_adjust_NOT_SET = 0
} envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_overload_adjust_oneofcases;
-UPB_INLINE envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_overload_adjust_oneofcases envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_overload_adjust_case(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* msg) { return (envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_overload_adjust_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
+UPB_INLINE envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_overload_adjust_oneofcases envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_overload_adjust_case(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* msg) {
+ return (envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_overload_adjust_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_clear_timer(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_timer(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
-UPB_INLINE bool envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_has_min_timeout(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 2; }
-UPB_INLINE const struct google_protobuf_Duration* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_min_timeout(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Duration*, UPB_SIZE(4, 8), UPB_SIZE(8, 16), 2, NULL); }
-UPB_INLINE bool envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_has_min_scale(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 3; }
-UPB_INLINE const struct envoy_type_v3_Percent* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_min_scale(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_v3_Percent*, UPB_SIZE(4, 8), UPB_SIZE(8, 16), 3, NULL); }
+UPB_INLINE bool envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_has_min_timeout(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_clear_min_timeout(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Duration*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_overload_adjust_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Duration* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_min_timeout(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Duration*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_has_min_scale(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_clear_min_scale(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_v3_Percent*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_overload_adjust_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_v3_Percent* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_min_scale(const envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_v3_Percent*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 3, NULL);
+}
UPB_INLINE void envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_set_timer(envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
}
UPB_INLINE void envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_set_min_timeout(envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer *msg, struct google_protobuf_Duration* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Duration*, UPB_SIZE(4, 8), value, UPB_SIZE(8, 16), 2);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Duration*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_mutable_min_timeout(envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_mutable_min_timeout(envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_min_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -390,9 +476,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_overload_v3_ScaleTimers
return sub;
}
UPB_INLINE void envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_set_min_scale(envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer *msg, struct envoy_type_v3_Percent* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_v3_Percent*, UPB_SIZE(4, 8), value, UPB_SIZE(8, 16), 3);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_v3_Percent*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct envoy_type_v3_Percent* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_mutable_min_scale(envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Percent* envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_mutable_min_scale(envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer* msg, upb_Arena* arena) {
struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_config_overload_v3_ScaleTimersOverloadActionConfig_ScaleTimer_min_scale(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
@@ -427,43 +513,61 @@ UPB_INLINE envoy_config_overload_v3_OverloadAction* envoy_config_overload_v3_Ove
return ret;
}
UPB_INLINE char* envoy_config_overload_v3_OverloadAction_serialize(const envoy_config_overload_v3_OverloadAction* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_OverloadAction_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_OverloadAction_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_overload_v3_OverloadAction_serialize_ex(const envoy_config_overload_v3_OverloadAction* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_OverloadAction_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_OverloadAction_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_overload_v3_OverloadAction_clear_name(const envoy_config_overload_v3_OverloadAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_overload_v3_OverloadAction_name(const envoy_config_overload_v3_OverloadAction* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_overload_v3_OverloadAction_has_triggers(const envoy_config_overload_v3_OverloadAction *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const envoy_config_overload_v3_Trigger* const* envoy_config_overload_v3_OverloadAction_triggers(const envoy_config_overload_v3_OverloadAction *msg, size_t *len) { return (const envoy_config_overload_v3_Trigger* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
-UPB_INLINE bool envoy_config_overload_v3_OverloadAction_has_typed_config(const envoy_config_overload_v3_OverloadAction *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_overload_v3_OverloadAction_has_triggers(const envoy_config_overload_v3_OverloadAction* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_config_overload_v3_OverloadAction_clear_triggers(const envoy_config_overload_v3_OverloadAction* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const envoy_config_overload_v3_Trigger* const* envoy_config_overload_v3_OverloadAction_triggers(const envoy_config_overload_v3_OverloadAction* msg, size_t* len) {
+ return (const envoy_config_overload_v3_Trigger* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE bool envoy_config_overload_v3_OverloadAction_has_typed_config(const envoy_config_overload_v3_OverloadAction* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_overload_v3_OverloadAction_clear_typed_config(const envoy_config_overload_v3_OverloadAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Any* envoy_config_overload_v3_OverloadAction_typed_config(const envoy_config_overload_v3_OverloadAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Any*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_Any*);
}
UPB_INLINE void envoy_config_overload_v3_OverloadAction_set_name(envoy_config_overload_v3_OverloadAction *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE envoy_config_overload_v3_Trigger** envoy_config_overload_v3_OverloadAction_mutable_triggers(envoy_config_overload_v3_OverloadAction *msg, size_t *len) {
- return (envoy_config_overload_v3_Trigger**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
+UPB_INLINE envoy_config_overload_v3_Trigger** envoy_config_overload_v3_OverloadAction_mutable_triggers(envoy_config_overload_v3_OverloadAction* msg, size_t* len) {
+ return (envoy_config_overload_v3_Trigger**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE envoy_config_overload_v3_Trigger** envoy_config_overload_v3_OverloadAction_resize_triggers(envoy_config_overload_v3_OverloadAction *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_overload_v3_Trigger**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_overload_v3_Trigger** envoy_config_overload_v3_OverloadAction_resize_triggers(envoy_config_overload_v3_OverloadAction* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_overload_v3_Trigger**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_overload_v3_Trigger* envoy_config_overload_v3_OverloadAction_add_triggers(envoy_config_overload_v3_OverloadAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_overload_v3_Trigger* envoy_config_overload_v3_OverloadAction_add_triggers(envoy_config_overload_v3_OverloadAction* msg, upb_Arena* arena) {
struct envoy_config_overload_v3_Trigger* sub = (struct envoy_config_overload_v3_Trigger*)_upb_Message_New(&envoy_config_overload_v3_Trigger_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_overload_v3_OverloadAction_set_typed_config(envoy_config_overload_v3_OverloadAction *msg, struct google_protobuf_Any* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Any*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_overload_v3_OverloadAction_mutable_typed_config(envoy_config_overload_v3_OverloadAction *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_overload_v3_OverloadAction_mutable_typed_config(envoy_config_overload_v3_OverloadAction* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_overload_v3_OverloadAction_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -498,11 +602,18 @@ UPB_INLINE envoy_config_overload_v3_BufferFactoryConfig* envoy_config_overload_v
return ret;
}
UPB_INLINE char* envoy_config_overload_v3_BufferFactoryConfig_serialize(const envoy_config_overload_v3_BufferFactoryConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_BufferFactoryConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_BufferFactoryConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_overload_v3_BufferFactoryConfig_serialize_ex(const envoy_config_overload_v3_BufferFactoryConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_BufferFactoryConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_BufferFactoryConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_overload_v3_BufferFactoryConfig_clear_minimum_account_to_track_power_of_two(const envoy_config_overload_v3_BufferFactoryConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_config_overload_v3_BufferFactoryConfig_minimum_account_to_track_power_of_two(const envoy_config_overload_v3_BufferFactoryConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t);
@@ -537,30 +648,58 @@ UPB_INLINE envoy_config_overload_v3_OverloadManager* envoy_config_overload_v3_Ov
return ret;
}
UPB_INLINE char* envoy_config_overload_v3_OverloadManager_serialize(const envoy_config_overload_v3_OverloadManager* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_OverloadManager_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_OverloadManager_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_overload_v3_OverloadManager_serialize_ex(const envoy_config_overload_v3_OverloadManager* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_overload_v3_OverloadManager_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_overload_v3_OverloadManager_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_overload_v3_OverloadManager_has_refresh_interval(const envoy_config_overload_v3_OverloadManager* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_overload_v3_OverloadManager_clear_refresh_interval(const envoy_config_overload_v3_OverloadManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_overload_v3_OverloadManager_has_refresh_interval(const envoy_config_overload_v3_OverloadManager *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_overload_v3_OverloadManager_refresh_interval(const envoy_config_overload_v3_OverloadManager* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_overload_v3_OverloadManager_has_resource_monitors(const envoy_config_overload_v3_OverloadManager *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE const envoy_config_overload_v3_ResourceMonitor* const* envoy_config_overload_v3_OverloadManager_resource_monitors(const envoy_config_overload_v3_OverloadManager *msg, size_t *len) { return (const envoy_config_overload_v3_ResourceMonitor* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len); }
-UPB_INLINE bool envoy_config_overload_v3_OverloadManager_has_actions(const envoy_config_overload_v3_OverloadManager *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const envoy_config_overload_v3_OverloadAction* const* envoy_config_overload_v3_OverloadManager_actions(const envoy_config_overload_v3_OverloadManager *msg, size_t *len) { return (const envoy_config_overload_v3_OverloadAction* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
-UPB_INLINE bool envoy_config_overload_v3_OverloadManager_has_buffer_factory_config(const envoy_config_overload_v3_OverloadManager *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_overload_v3_OverloadManager_has_resource_monitors(const envoy_config_overload_v3_OverloadManager* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_config_overload_v3_OverloadManager_clear_resource_monitors(const envoy_config_overload_v3_OverloadManager* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const envoy_config_overload_v3_ResourceMonitor* const* envoy_config_overload_v3_OverloadManager_resource_monitors(const envoy_config_overload_v3_OverloadManager* msg, size_t* len) {
+ return (const envoy_config_overload_v3_ResourceMonitor* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool envoy_config_overload_v3_OverloadManager_has_actions(const envoy_config_overload_v3_OverloadManager* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_config_overload_v3_OverloadManager_clear_actions(const envoy_config_overload_v3_OverloadManager* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const envoy_config_overload_v3_OverloadAction* const* envoy_config_overload_v3_OverloadManager_actions(const envoy_config_overload_v3_OverloadManager* msg, size_t* len) {
+ return (const envoy_config_overload_v3_OverloadAction* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE bool envoy_config_overload_v3_OverloadManager_has_buffer_factory_config(const envoy_config_overload_v3_OverloadManager* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_overload_v3_OverloadManager_clear_buffer_factory_config(const envoy_config_overload_v3_OverloadManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_overload_v3_BufferFactoryConfig* envoy_config_overload_v3_OverloadManager_buffer_factory_config(const envoy_config_overload_v3_OverloadManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const envoy_config_overload_v3_BufferFactoryConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const envoy_config_overload_v3_BufferFactoryConfig*);
}
UPB_INLINE void envoy_config_overload_v3_OverloadManager_set_refresh_interval(envoy_config_overload_v3_OverloadManager *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_overload_v3_OverloadManager_mutable_refresh_interval(envoy_config_overload_v3_OverloadManager *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_overload_v3_OverloadManager_mutable_refresh_interval(envoy_config_overload_v3_OverloadManager* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_overload_v3_OverloadManager_refresh_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -569,37 +708,35 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_overload_v3_OverloadMan
}
return sub;
}
-UPB_INLINE envoy_config_overload_v3_ResourceMonitor** envoy_config_overload_v3_OverloadManager_mutable_resource_monitors(envoy_config_overload_v3_OverloadManager *msg, size_t *len) {
- return (envoy_config_overload_v3_ResourceMonitor**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
+UPB_INLINE envoy_config_overload_v3_ResourceMonitor** envoy_config_overload_v3_OverloadManager_mutable_resource_monitors(envoy_config_overload_v3_OverloadManager* msg, size_t* len) {
+ return (envoy_config_overload_v3_ResourceMonitor**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE envoy_config_overload_v3_ResourceMonitor** envoy_config_overload_v3_OverloadManager_resize_resource_monitors(envoy_config_overload_v3_OverloadManager *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_overload_v3_ResourceMonitor**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_overload_v3_ResourceMonitor** envoy_config_overload_v3_OverloadManager_resize_resource_monitors(envoy_config_overload_v3_OverloadManager* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_overload_v3_ResourceMonitor**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_overload_v3_ResourceMonitor* envoy_config_overload_v3_OverloadManager_add_resource_monitors(envoy_config_overload_v3_OverloadManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_overload_v3_ResourceMonitor* envoy_config_overload_v3_OverloadManager_add_resource_monitors(envoy_config_overload_v3_OverloadManager* msg, upb_Arena* arena) {
struct envoy_config_overload_v3_ResourceMonitor* sub = (struct envoy_config_overload_v3_ResourceMonitor*)_upb_Message_New(&envoy_config_overload_v3_ResourceMonitor_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE envoy_config_overload_v3_OverloadAction** envoy_config_overload_v3_OverloadManager_mutable_actions(envoy_config_overload_v3_OverloadManager *msg, size_t *len) {
- return (envoy_config_overload_v3_OverloadAction**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
+UPB_INLINE envoy_config_overload_v3_OverloadAction** envoy_config_overload_v3_OverloadManager_mutable_actions(envoy_config_overload_v3_OverloadManager* msg, size_t* len) {
+ return (envoy_config_overload_v3_OverloadAction**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE envoy_config_overload_v3_OverloadAction** envoy_config_overload_v3_OverloadManager_resize_actions(envoy_config_overload_v3_OverloadManager *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_overload_v3_OverloadAction**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_overload_v3_OverloadAction** envoy_config_overload_v3_OverloadManager_resize_actions(envoy_config_overload_v3_OverloadManager* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_overload_v3_OverloadAction**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_overload_v3_OverloadAction* envoy_config_overload_v3_OverloadManager_add_actions(envoy_config_overload_v3_OverloadManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_overload_v3_OverloadAction* envoy_config_overload_v3_OverloadManager_add_actions(envoy_config_overload_v3_OverloadManager* msg, upb_Arena* arena) {
struct envoy_config_overload_v3_OverloadAction* sub = (struct envoy_config_overload_v3_OverloadAction*)_upb_Message_New(&envoy_config_overload_v3_OverloadAction_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_overload_v3_OverloadManager_set_buffer_factory_config(envoy_config_overload_v3_OverloadManager *msg, envoy_config_overload_v3_BufferFactoryConfig* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), envoy_config_overload_v3_BufferFactoryConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), envoy_config_overload_v3_BufferFactoryConfig*) = value;
}
-UPB_INLINE struct envoy_config_overload_v3_BufferFactoryConfig* envoy_config_overload_v3_OverloadManager_mutable_buffer_factory_config(envoy_config_overload_v3_OverloadManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_overload_v3_BufferFactoryConfig* envoy_config_overload_v3_OverloadManager_mutable_buffer_factory_config(envoy_config_overload_v3_OverloadManager* msg, upb_Arena* arena) {
struct envoy_config_overload_v3_BufferFactoryConfig* sub = (struct envoy_config_overload_v3_BufferFactoryConfig*)envoy_config_overload_v3_OverloadManager_buffer_factory_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_overload_v3_BufferFactoryConfig*)_upb_Message_New(&envoy_config_overload_v3_BufferFactoryConfig_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c
index bffd2a0cb9..ea49a6f8e8 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c
@@ -31,14 +31,14 @@ static const upb_MiniTable_Sub envoy_config_rbac_v3_RBAC_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_rbac_v3_RBAC__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_rbac_v3_RBAC_msginit = {
&envoy_config_rbac_v3_RBAC_submsgs[0],
&envoy_config_rbac_v3_RBAC__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_rbac_v3_RBAC_PoliciesEntry_submsgs[1] = {
@@ -46,67 +46,68 @@ static const upb_MiniTable_Sub envoy_config_rbac_v3_RBAC_PoliciesEntry_submsgs[1
};
static const upb_MiniTable_Field envoy_config_rbac_v3_RBAC_PoliciesEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_rbac_v3_RBAC_PoliciesEntry_msginit = {
&envoy_config_rbac_v3_RBAC_PoliciesEntry_submsgs[0],
&envoy_config_rbac_v3_RBAC_PoliciesEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_rbac_v3_Policy_submsgs[4] = {
{.submsg = &envoy_config_rbac_v3_Permission_msginit},
{.submsg = &envoy_config_rbac_v3_Principal_msginit},
- {.submsg = &google_api_expr_v1alpha1_CheckedExpr_msginit},
{.submsg = &google_api_expr_v1alpha1_Expr_msginit},
+ {.submsg = &google_api_expr_v1alpha1_CheckedExpr_msginit},
};
static const upb_MiniTable_Field envoy_config_rbac_v3_Policy__fields[4] = {
- {1, UPB_SIZE(12, 24), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 1, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 16), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_rbac_v3_Policy_msginit = {
&envoy_config_rbac_v3_Policy_submsgs[0],
&envoy_config_rbac_v3_Policy__fields[0],
- UPB_SIZE(24, 40), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_rbac_v3_Permission_submsgs[9] = {
- {.submsg = &envoy_config_core_v3_CidrRange_msginit},
- {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
- {.submsg = &envoy_config_rbac_v3_Permission_msginit},
+static const upb_MiniTable_Sub envoy_config_rbac_v3_Permission_submsgs[10] = {
+ {.submsg = &envoy_config_rbac_v3_Permission_Set_msginit},
{.submsg = &envoy_config_rbac_v3_Permission_Set_msginit},
{.submsg = &envoy_config_route_v3_HeaderMatcher_msginit},
+ {.submsg = &envoy_config_core_v3_CidrRange_msginit},
{.submsg = &envoy_type_matcher_v3_MetadataMatcher_msginit},
- {.submsg = &envoy_type_matcher_v3_PathMatcher_msginit},
+ {.submsg = &envoy_config_rbac_v3_Permission_msginit},
{.submsg = &envoy_type_matcher_v3_StringMatcher_msginit},
+ {.submsg = &envoy_type_matcher_v3_PathMatcher_msginit},
{.submsg = &envoy_type_v3_Int32Range_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
};
static const upb_MiniTable_Field envoy_config_rbac_v3_Permission__fields[12] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 8, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_rbac_v3_Permission_msginit = {
&envoy_config_rbac_v3_Permission_submsgs[0],
&envoy_config_rbac_v3_Permission__fields[0],
- UPB_SIZE(8, 16), 12, upb_ExtMode_NonExtendable, 12, 255, 0,
+ UPB_SIZE(8, 16), 12, kUpb_ExtMode_NonExtendable, 12, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_rbac_v3_Permission_Set_submsgs[1] = {
@@ -114,43 +115,46 @@ static const upb_MiniTable_Sub envoy_config_rbac_v3_Permission_Set_submsgs[1] =
};
static const upb_MiniTable_Field envoy_config_rbac_v3_Permission_Set__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_rbac_v3_Permission_Set_msginit = {
&envoy_config_rbac_v3_Permission_Set_submsgs[0],
&envoy_config_rbac_v3_Permission_Set__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_rbac_v3_Principal_submsgs[7] = {
- {.submsg = &envoy_config_core_v3_CidrRange_msginit},
- {.submsg = &envoy_config_rbac_v3_Principal_msginit},
- {.submsg = &envoy_config_rbac_v3_Principal_Authenticated_msginit},
+static const upb_MiniTable_Sub envoy_config_rbac_v3_Principal_submsgs[10] = {
+ {.submsg = &envoy_config_rbac_v3_Principal_Set_msginit},
{.submsg = &envoy_config_rbac_v3_Principal_Set_msginit},
+ {.submsg = &envoy_config_rbac_v3_Principal_Authenticated_msginit},
+ {.submsg = &envoy_config_core_v3_CidrRange_msginit},
{.submsg = &envoy_config_route_v3_HeaderMatcher_msginit},
{.submsg = &envoy_type_matcher_v3_MetadataMatcher_msginit},
+ {.submsg = &envoy_config_rbac_v3_Principal_msginit},
{.submsg = &envoy_type_matcher_v3_PathMatcher_msginit},
+ {.submsg = &envoy_config_core_v3_CidrRange_msginit},
+ {.submsg = &envoy_config_core_v3_CidrRange_msginit},
};
static const upb_MiniTable_Field envoy_config_rbac_v3_Principal__fields[11] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_rbac_v3_Principal_msginit = {
&envoy_config_rbac_v3_Principal_submsgs[0],
&envoy_config_rbac_v3_Principal__fields[0],
- UPB_SIZE(8, 16), 11, upb_ExtMode_NonExtendable, 11, 255, 0,
+ UPB_SIZE(8, 16), 11, kUpb_ExtMode_NonExtendable, 11, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_rbac_v3_Principal_Set_submsgs[1] = {
@@ -158,13 +162,13 @@ static const upb_MiniTable_Sub envoy_config_rbac_v3_Principal_Set_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_rbac_v3_Principal_Set__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_rbac_v3_Principal_Set_msginit = {
&envoy_config_rbac_v3_Principal_Set_submsgs[0],
&envoy_config_rbac_v3_Principal_Set__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_rbac_v3_Principal_Authenticated_submsgs[1] = {
@@ -172,16 +176,27 @@ static const upb_MiniTable_Sub envoy_config_rbac_v3_Principal_Authenticated_subm
};
static const upb_MiniTable_Field envoy_config_rbac_v3_Principal_Authenticated__fields[1] = {
- {2, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_rbac_v3_Principal_Authenticated_msginit = {
&envoy_config_rbac_v3_Principal_Authenticated_submsgs[0],
&envoy_config_rbac_v3_Principal_Authenticated__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 0, 255, 0,
+};
+
+static const upb_MiniTable_Field envoy_config_rbac_v3_Action__fields[2] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_config_rbac_v3_Action_msginit = {
+ NULL,
+ &envoy_config_rbac_v3_Action__fields[0],
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable *messages_layout[8] = {
+static const upb_MiniTable *messages_layout[9] = {
&envoy_config_rbac_v3_RBAC_msginit,
&envoy_config_rbac_v3_RBAC_PoliciesEntry_msginit,
&envoy_config_rbac_v3_Policy_msginit,
@@ -190,13 +205,14 @@ static const upb_MiniTable *messages_layout[8] = {
&envoy_config_rbac_v3_Principal_msginit,
&envoy_config_rbac_v3_Principal_Set_msginit,
&envoy_config_rbac_v3_Principal_Authenticated_msginit,
+ &envoy_config_rbac_v3_Action_msginit,
};
const upb_MiniTable_File envoy_config_rbac_v3_rbac_proto_upb_file_layout = {
messages_layout,
NULL,
NULL,
- 8,
+ 9,
0,
0,
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h
index d4892642eb..138c07f505 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h
@@ -28,6 +28,7 @@ struct envoy_config_rbac_v3_Permission_Set;
struct envoy_config_rbac_v3_Principal;
struct envoy_config_rbac_v3_Principal_Set;
struct envoy_config_rbac_v3_Principal_Authenticated;
+struct envoy_config_rbac_v3_Action;
typedef struct envoy_config_rbac_v3_RBAC envoy_config_rbac_v3_RBAC;
typedef struct envoy_config_rbac_v3_RBAC_PoliciesEntry envoy_config_rbac_v3_RBAC_PoliciesEntry;
typedef struct envoy_config_rbac_v3_Policy envoy_config_rbac_v3_Policy;
@@ -36,6 +37,7 @@ typedef struct envoy_config_rbac_v3_Permission_Set envoy_config_rbac_v3_Permissi
typedef struct envoy_config_rbac_v3_Principal envoy_config_rbac_v3_Principal;
typedef struct envoy_config_rbac_v3_Principal_Set envoy_config_rbac_v3_Principal_Set;
typedef struct envoy_config_rbac_v3_Principal_Authenticated envoy_config_rbac_v3_Principal_Authenticated;
+typedef struct envoy_config_rbac_v3_Action envoy_config_rbac_v3_Action;
extern const upb_MiniTable envoy_config_rbac_v3_RBAC_msginit;
extern const upb_MiniTable envoy_config_rbac_v3_RBAC_PoliciesEntry_msginit;
extern const upb_MiniTable envoy_config_rbac_v3_Policy_msginit;
@@ -44,6 +46,7 @@ extern const upb_MiniTable envoy_config_rbac_v3_Permission_Set_msginit;
extern const upb_MiniTable envoy_config_rbac_v3_Principal_msginit;
extern const upb_MiniTable envoy_config_rbac_v3_Principal_Set_msginit;
extern const upb_MiniTable envoy_config_rbac_v3_Principal_Authenticated_msginit;
+extern const upb_MiniTable envoy_config_rbac_v3_Action_msginit;
struct envoy_config_core_v3_CidrRange;
struct envoy_config_core_v3_TypedExtensionConfig;
struct envoy_config_route_v3_HeaderMatcher;
@@ -96,37 +99,63 @@ UPB_INLINE envoy_config_rbac_v3_RBAC* envoy_config_rbac_v3_RBAC_parse_ex(const c
return ret;
}
UPB_INLINE char* envoy_config_rbac_v3_RBAC_serialize(const envoy_config_rbac_v3_RBAC* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_rbac_v3_RBAC_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_RBAC_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_rbac_v3_RBAC_serialize_ex(const envoy_config_rbac_v3_RBAC* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_rbac_v3_RBAC_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_RBAC_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_rbac_v3_RBAC_clear_action(const envoy_config_rbac_v3_RBAC* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_rbac_v3_RBAC_action(const envoy_config_rbac_v3_RBAC* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
-UPB_INLINE bool envoy_config_rbac_v3_RBAC_has_policies(const envoy_config_rbac_v3_RBAC *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE size_t envoy_config_rbac_v3_RBAC_policies_size(const envoy_config_rbac_v3_RBAC *msg) {return _upb_msg_map_size(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE bool envoy_config_rbac_v3_RBAC_policies_get(const envoy_config_rbac_v3_RBAC *msg, upb_StringView key, envoy_config_rbac_v3_Policy* *val) { return _upb_msg_map_get(msg, UPB_SIZE(4, 8), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const envoy_config_rbac_v3_RBAC_PoliciesEntry* envoy_config_rbac_v3_RBAC_policies_next(const envoy_config_rbac_v3_RBAC *msg, size_t* iter) { return (const envoy_config_rbac_v3_RBAC_PoliciesEntry*)_upb_msg_map_next(msg, UPB_SIZE(4, 8), iter); }
+UPB_INLINE bool envoy_config_rbac_v3_RBAC_has_policies(const envoy_config_rbac_v3_RBAC* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_config_rbac_v3_RBAC_clear_policies(const envoy_config_rbac_v3_RBAC* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE size_t envoy_config_rbac_v3_RBAC_policies_size(const envoy_config_rbac_v3_RBAC* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE bool envoy_config_rbac_v3_RBAC_policies_get(const envoy_config_rbac_v3_RBAC* msg, upb_StringView key, envoy_config_rbac_v3_Policy** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(4, 8), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const envoy_config_rbac_v3_RBAC_PoliciesEntry* envoy_config_rbac_v3_RBAC_policies_next(const envoy_config_rbac_v3_RBAC* msg, size_t* iter) {
+ return (const envoy_config_rbac_v3_RBAC_PoliciesEntry*)_upb_msg_map_next(msg, UPB_SIZE(4, 8), iter);
+}
UPB_INLINE void envoy_config_rbac_v3_RBAC_set_action(envoy_config_rbac_v3_RBAC *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
}
-UPB_INLINE void envoy_config_rbac_v3_RBAC_policies_clear(envoy_config_rbac_v3_RBAC *msg) { _upb_msg_map_clear(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE bool envoy_config_rbac_v3_RBAC_policies_set(envoy_config_rbac_v3_RBAC *msg, upb_StringView key, envoy_config_rbac_v3_Policy* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(4, 8), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool envoy_config_rbac_v3_RBAC_policies_delete(envoy_config_rbac_v3_RBAC *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(4, 8), &key, 0); }
-UPB_INLINE envoy_config_rbac_v3_RBAC_PoliciesEntry* envoy_config_rbac_v3_RBAC_policies_nextmutable(envoy_config_rbac_v3_RBAC *msg, size_t* iter) { return (envoy_config_rbac_v3_RBAC_PoliciesEntry*)_upb_msg_map_next(msg, UPB_SIZE(4, 8), iter); }
+UPB_INLINE void envoy_config_rbac_v3_RBAC_policies_clear(envoy_config_rbac_v3_RBAC* msg) { _upb_msg_map_clear(msg, UPB_SIZE(4, 8)); }
+UPB_INLINE bool envoy_config_rbac_v3_RBAC_policies_set(envoy_config_rbac_v3_RBAC* msg, upb_StringView key, envoy_config_rbac_v3_Policy* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(4, 8), &key, 0, &val, sizeof(val), a);
+}
+UPB_INLINE bool envoy_config_rbac_v3_RBAC_policies_delete(envoy_config_rbac_v3_RBAC* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(4, 8), &key, 0);
+}
+UPB_INLINE envoy_config_rbac_v3_RBAC_PoliciesEntry* envoy_config_rbac_v3_RBAC_policies_nextmutable(envoy_config_rbac_v3_RBAC* msg, size_t* iter) {
+ return (envoy_config_rbac_v3_RBAC_PoliciesEntry*)_upb_msg_map_next(msg, UPB_SIZE(4, 8), iter);
+}
/* envoy.config.rbac.v3.RBAC.PoliciesEntry */
-UPB_INLINE upb_StringView envoy_config_rbac_v3_RBAC_PoliciesEntry_key(const envoy_config_rbac_v3_RBAC_PoliciesEntry *msg) {
+UPB_INLINE upb_StringView envoy_config_rbac_v3_RBAC_PoliciesEntry_key(const envoy_config_rbac_v3_RBAC_PoliciesEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE bool envoy_config_rbac_v3_RBAC_PoliciesEntry_has_value(const envoy_config_rbac_v3_RBAC_PoliciesEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const envoy_config_rbac_v3_Policy* envoy_config_rbac_v3_RBAC_PoliciesEntry_value(const envoy_config_rbac_v3_RBAC_PoliciesEntry *msg) {
+UPB_INLINE bool envoy_config_rbac_v3_RBAC_PoliciesEntry_has_value(const envoy_config_rbac_v3_RBAC_PoliciesEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const envoy_config_rbac_v3_Policy* envoy_config_rbac_v3_RBAC_PoliciesEntry_value(const envoy_config_rbac_v3_RBAC_PoliciesEntry* msg) {
envoy_config_rbac_v3_Policy* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -161,56 +190,82 @@ UPB_INLINE envoy_config_rbac_v3_Policy* envoy_config_rbac_v3_Policy_parse_ex(con
return ret;
}
UPB_INLINE char* envoy_config_rbac_v3_Policy_serialize(const envoy_config_rbac_v3_Policy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_rbac_v3_Policy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_Policy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_rbac_v3_Policy_serialize_ex(const envoy_config_rbac_v3_Policy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_rbac_v3_Policy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_Policy_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_rbac_v3_Policy_has_permissions(const envoy_config_rbac_v3_Policy* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_config_rbac_v3_Policy_clear_permissions(const envoy_config_rbac_v3_Policy* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_config_rbac_v3_Permission* const* envoy_config_rbac_v3_Policy_permissions(const envoy_config_rbac_v3_Policy* msg, size_t* len) {
+ return (const envoy_config_rbac_v3_Permission* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Policy_has_principals(const envoy_config_rbac_v3_Policy* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_config_rbac_v3_Policy_clear_principals(const envoy_config_rbac_v3_Policy* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const envoy_config_rbac_v3_Principal* const* envoy_config_rbac_v3_Policy_principals(const envoy_config_rbac_v3_Policy* msg, size_t* len) {
+ return (const envoy_config_rbac_v3_Principal* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Policy_has_condition(const envoy_config_rbac_v3_Policy* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_rbac_v3_Policy_clear_condition(const envoy_config_rbac_v3_Policy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_rbac_v3_Policy_has_permissions(const envoy_config_rbac_v3_Policy *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE const envoy_config_rbac_v3_Permission* const* envoy_config_rbac_v3_Policy_permissions(const envoy_config_rbac_v3_Policy *msg, size_t *len) { return (const envoy_config_rbac_v3_Permission* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len); }
-UPB_INLINE bool envoy_config_rbac_v3_Policy_has_principals(const envoy_config_rbac_v3_Policy *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const envoy_config_rbac_v3_Principal* const* envoy_config_rbac_v3_Policy_principals(const envoy_config_rbac_v3_Policy *msg, size_t *len) { return (const envoy_config_rbac_v3_Principal* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
-UPB_INLINE bool envoy_config_rbac_v3_Policy_has_condition(const envoy_config_rbac_v3_Policy *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_api_expr_v1alpha1_Expr* envoy_config_rbac_v3_Policy_condition(const envoy_config_rbac_v3_Policy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_api_expr_v1alpha1_Expr*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_api_expr_v1alpha1_Expr*);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Policy_has_checked_condition(const envoy_config_rbac_v3_Policy* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_rbac_v3_Policy_clear_checked_condition(const envoy_config_rbac_v3_Policy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_rbac_v3_Policy_has_checked_condition(const envoy_config_rbac_v3_Policy *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_api_expr_v1alpha1_CheckedExpr* envoy_config_rbac_v3_Policy_checked_condition(const envoy_config_rbac_v3_Policy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_api_expr_v1alpha1_CheckedExpr*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_api_expr_v1alpha1_CheckedExpr*);
}
-UPB_INLINE envoy_config_rbac_v3_Permission** envoy_config_rbac_v3_Policy_mutable_permissions(envoy_config_rbac_v3_Policy *msg, size_t *len) {
- return (envoy_config_rbac_v3_Permission**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
+UPB_INLINE envoy_config_rbac_v3_Permission** envoy_config_rbac_v3_Policy_mutable_permissions(envoy_config_rbac_v3_Policy* msg, size_t* len) {
+ return (envoy_config_rbac_v3_Permission**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE envoy_config_rbac_v3_Permission** envoy_config_rbac_v3_Policy_resize_permissions(envoy_config_rbac_v3_Policy *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_rbac_v3_Permission**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_rbac_v3_Permission** envoy_config_rbac_v3_Policy_resize_permissions(envoy_config_rbac_v3_Policy* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_rbac_v3_Permission**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_rbac_v3_Permission* envoy_config_rbac_v3_Policy_add_permissions(envoy_config_rbac_v3_Policy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_rbac_v3_Permission* envoy_config_rbac_v3_Policy_add_permissions(envoy_config_rbac_v3_Policy* msg, upb_Arena* arena) {
struct envoy_config_rbac_v3_Permission* sub = (struct envoy_config_rbac_v3_Permission*)_upb_Message_New(&envoy_config_rbac_v3_Permission_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE envoy_config_rbac_v3_Principal** envoy_config_rbac_v3_Policy_mutable_principals(envoy_config_rbac_v3_Policy *msg, size_t *len) {
- return (envoy_config_rbac_v3_Principal**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
+UPB_INLINE envoy_config_rbac_v3_Principal** envoy_config_rbac_v3_Policy_mutable_principals(envoy_config_rbac_v3_Policy* msg, size_t* len) {
+ return (envoy_config_rbac_v3_Principal**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE envoy_config_rbac_v3_Principal** envoy_config_rbac_v3_Policy_resize_principals(envoy_config_rbac_v3_Policy *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_rbac_v3_Principal**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_rbac_v3_Principal** envoy_config_rbac_v3_Policy_resize_principals(envoy_config_rbac_v3_Policy* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_rbac_v3_Principal**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_rbac_v3_Principal* envoy_config_rbac_v3_Policy_add_principals(envoy_config_rbac_v3_Policy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_rbac_v3_Principal* envoy_config_rbac_v3_Policy_add_principals(envoy_config_rbac_v3_Policy* msg, upb_Arena* arena) {
struct envoy_config_rbac_v3_Principal* sub = (struct envoy_config_rbac_v3_Principal*)_upb_Message_New(&envoy_config_rbac_v3_Principal_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Policy_set_condition(envoy_config_rbac_v3_Policy *msg, struct google_api_expr_v1alpha1_Expr* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_api_expr_v1alpha1_Expr*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_api_expr_v1alpha1_Expr*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr* envoy_config_rbac_v3_Policy_mutable_condition(envoy_config_rbac_v3_Policy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr* envoy_config_rbac_v3_Policy_mutable_condition(envoy_config_rbac_v3_Policy* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr* sub = (struct google_api_expr_v1alpha1_Expr*)envoy_config_rbac_v3_Policy_condition(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_msginit, arena);
@@ -221,9 +276,9 @@ UPB_INLINE struct google_api_expr_v1alpha1_Expr* envoy_config_rbac_v3_Policy_mut
}
UPB_INLINE void envoy_config_rbac_v3_Policy_set_checked_condition(envoy_config_rbac_v3_Policy *msg, struct google_api_expr_v1alpha1_CheckedExpr* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_api_expr_v1alpha1_CheckedExpr*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_api_expr_v1alpha1_CheckedExpr*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_CheckedExpr* envoy_config_rbac_v3_Policy_mutable_checked_condition(envoy_config_rbac_v3_Policy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_CheckedExpr* envoy_config_rbac_v3_Policy_mutable_checked_condition(envoy_config_rbac_v3_Policy* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_CheckedExpr* sub = (struct google_api_expr_v1alpha1_CheckedExpr*)envoy_config_rbac_v3_Policy_checked_condition(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_CheckedExpr*)_upb_Message_New(&google_api_expr_v1alpha1_CheckedExpr_msginit, arena);
@@ -258,11 +313,15 @@ UPB_INLINE envoy_config_rbac_v3_Permission* envoy_config_rbac_v3_Permission_pars
return ret;
}
UPB_INLINE char* envoy_config_rbac_v3_Permission_serialize(const envoy_config_rbac_v3_Permission* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_rbac_v3_Permission_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_Permission_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_rbac_v3_Permission_serialize_ex(const envoy_config_rbac_v3_Permission* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_rbac_v3_Permission_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_Permission_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_rbac_v3_Permission_rule_and_rules = 1,
@@ -279,37 +338,122 @@ typedef enum {
envoy_config_rbac_v3_Permission_rule_matcher = 12,
envoy_config_rbac_v3_Permission_rule_NOT_SET = 0
} envoy_config_rbac_v3_Permission_rule_oneofcases;
-UPB_INLINE envoy_config_rbac_v3_Permission_rule_oneofcases envoy_config_rbac_v3_Permission_rule_case(const envoy_config_rbac_v3_Permission* msg) { return (envoy_config_rbac_v3_Permission_rule_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_rbac_v3_Permission_has_and_rules(const envoy_config_rbac_v3_Permission *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_rbac_v3_Permission_Set* envoy_config_rbac_v3_Permission_and_rules(const envoy_config_rbac_v3_Permission *msg) { return UPB_READ_ONEOF(msg, const envoy_config_rbac_v3_Permission_Set*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Permission_has_or_rules(const envoy_config_rbac_v3_Permission *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const envoy_config_rbac_v3_Permission_Set* envoy_config_rbac_v3_Permission_or_rules(const envoy_config_rbac_v3_Permission *msg) { return UPB_READ_ONEOF(msg, const envoy_config_rbac_v3_Permission_Set*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Permission_has_any(const envoy_config_rbac_v3_Permission *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE bool envoy_config_rbac_v3_Permission_any(const envoy_config_rbac_v3_Permission *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, false); }
-UPB_INLINE bool envoy_config_rbac_v3_Permission_has_header(const envoy_config_rbac_v3_Permission *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 4; }
-UPB_INLINE const struct envoy_config_route_v3_HeaderMatcher* envoy_config_rbac_v3_Permission_header(const envoy_config_rbac_v3_Permission *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_route_v3_HeaderMatcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 4, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Permission_has_destination_ip(const envoy_config_rbac_v3_Permission *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 5; }
-UPB_INLINE const struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Permission_destination_ip(const envoy_config_rbac_v3_Permission *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_CidrRange*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 5, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Permission_has_destination_port(const envoy_config_rbac_v3_Permission *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 6; }
-UPB_INLINE uint32_t envoy_config_rbac_v3_Permission_destination_port(const envoy_config_rbac_v3_Permission *msg) { return UPB_READ_ONEOF(msg, uint32_t, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 6, 0); }
-UPB_INLINE bool envoy_config_rbac_v3_Permission_has_metadata(const envoy_config_rbac_v3_Permission *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 7; }
-UPB_INLINE const struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_rbac_v3_Permission_metadata(const envoy_config_rbac_v3_Permission *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_MetadataMatcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 7, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Permission_has_not_rule(const envoy_config_rbac_v3_Permission *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 8; }
-UPB_INLINE const envoy_config_rbac_v3_Permission* envoy_config_rbac_v3_Permission_not_rule(const envoy_config_rbac_v3_Permission *msg) { return UPB_READ_ONEOF(msg, const envoy_config_rbac_v3_Permission*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 8, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Permission_has_requested_server_name(const envoy_config_rbac_v3_Permission *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 9; }
-UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_config_rbac_v3_Permission_requested_server_name(const envoy_config_rbac_v3_Permission *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 9, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Permission_has_url_path(const envoy_config_rbac_v3_Permission *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 10; }
-UPB_INLINE const struct envoy_type_matcher_v3_PathMatcher* envoy_config_rbac_v3_Permission_url_path(const envoy_config_rbac_v3_Permission *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_PathMatcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 10, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Permission_has_destination_port_range(const envoy_config_rbac_v3_Permission *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 11; }
-UPB_INLINE const struct envoy_type_v3_Int32Range* envoy_config_rbac_v3_Permission_destination_port_range(const envoy_config_rbac_v3_Permission *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_v3_Int32Range*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 11, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Permission_has_matcher(const envoy_config_rbac_v3_Permission *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 12; }
-UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_rbac_v3_Permission_matcher(const envoy_config_rbac_v3_Permission *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 12, NULL); }
+UPB_INLINE envoy_config_rbac_v3_Permission_rule_oneofcases envoy_config_rbac_v3_Permission_rule_case(const envoy_config_rbac_v3_Permission* msg) {
+ return (envoy_config_rbac_v3_Permission_rule_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Permission_has_and_rules(const envoy_config_rbac_v3_Permission* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_rbac_v3_Permission_clear_and_rules(const envoy_config_rbac_v3_Permission* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Permission_Set*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Permission_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_rbac_v3_Permission_Set* envoy_config_rbac_v3_Permission_and_rules(const envoy_config_rbac_v3_Permission* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_rbac_v3_Permission_Set*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Permission_has_or_rules(const envoy_config_rbac_v3_Permission* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_rbac_v3_Permission_clear_or_rules(const envoy_config_rbac_v3_Permission* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Permission_Set*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Permission_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_rbac_v3_Permission_Set* envoy_config_rbac_v3_Permission_or_rules(const envoy_config_rbac_v3_Permission* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_rbac_v3_Permission_Set*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Permission_has_any(const envoy_config_rbac_v3_Permission* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_rbac_v3_Permission_clear_any(const envoy_config_rbac_v3_Permission* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Permission_rule_NOT_SET);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Permission_any(const envoy_config_rbac_v3_Permission* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, false);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Permission_has_header(const envoy_config_rbac_v3_Permission* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_config_rbac_v3_Permission_clear_header(const envoy_config_rbac_v3_Permission* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_route_v3_HeaderMatcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Permission_rule_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_route_v3_HeaderMatcher* envoy_config_rbac_v3_Permission_header(const envoy_config_rbac_v3_Permission* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_route_v3_HeaderMatcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Permission_has_destination_ip(const envoy_config_rbac_v3_Permission* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_config_rbac_v3_Permission_clear_destination_ip(const envoy_config_rbac_v3_Permission* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_CidrRange*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Permission_rule_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Permission_destination_ip(const envoy_config_rbac_v3_Permission* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_CidrRange*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 5, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Permission_has_destination_port(const envoy_config_rbac_v3_Permission* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 6;
+}
+UPB_INLINE void envoy_config_rbac_v3_Permission_clear_destination_port(const envoy_config_rbac_v3_Permission* msg) {
+ UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Permission_rule_NOT_SET);
+}
+UPB_INLINE uint32_t envoy_config_rbac_v3_Permission_destination_port(const envoy_config_rbac_v3_Permission* msg) {
+ return UPB_READ_ONEOF(msg, uint32_t, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 6, _upb_UInt32_FromU(0u));
+}
+UPB_INLINE bool envoy_config_rbac_v3_Permission_has_metadata(const envoy_config_rbac_v3_Permission* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 7;
+}
+UPB_INLINE void envoy_config_rbac_v3_Permission_clear_metadata(const envoy_config_rbac_v3_Permission* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_MetadataMatcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Permission_rule_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_rbac_v3_Permission_metadata(const envoy_config_rbac_v3_Permission* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_MetadataMatcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 7, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Permission_has_not_rule(const envoy_config_rbac_v3_Permission* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 8;
+}
+UPB_INLINE void envoy_config_rbac_v3_Permission_clear_not_rule(const envoy_config_rbac_v3_Permission* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Permission*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Permission_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_rbac_v3_Permission* envoy_config_rbac_v3_Permission_not_rule(const envoy_config_rbac_v3_Permission* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_rbac_v3_Permission*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 8, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Permission_has_requested_server_name(const envoy_config_rbac_v3_Permission* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 9;
+}
+UPB_INLINE void envoy_config_rbac_v3_Permission_clear_requested_server_name(const envoy_config_rbac_v3_Permission* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Permission_rule_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_config_rbac_v3_Permission_requested_server_name(const envoy_config_rbac_v3_Permission* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 9, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Permission_has_url_path(const envoy_config_rbac_v3_Permission* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 10;
+}
+UPB_INLINE void envoy_config_rbac_v3_Permission_clear_url_path(const envoy_config_rbac_v3_Permission* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_PathMatcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Permission_rule_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_PathMatcher* envoy_config_rbac_v3_Permission_url_path(const envoy_config_rbac_v3_Permission* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_PathMatcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 10, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Permission_has_destination_port_range(const envoy_config_rbac_v3_Permission* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 11;
+}
+UPB_INLINE void envoy_config_rbac_v3_Permission_clear_destination_port_range(const envoy_config_rbac_v3_Permission* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_v3_Int32Range*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Permission_rule_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_v3_Int32Range* envoy_config_rbac_v3_Permission_destination_port_range(const envoy_config_rbac_v3_Permission* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_v3_Int32Range*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 11, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Permission_has_matcher(const envoy_config_rbac_v3_Permission* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 12;
+}
+UPB_INLINE void envoy_config_rbac_v3_Permission_clear_matcher(const envoy_config_rbac_v3_Permission* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Permission_rule_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_rbac_v3_Permission_matcher(const envoy_config_rbac_v3_Permission* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 12, NULL);
+}
UPB_INLINE void envoy_config_rbac_v3_Permission_set_and_rules(envoy_config_rbac_v3_Permission *msg, envoy_config_rbac_v3_Permission_Set* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Permission_Set*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Permission_Set*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_rbac_v3_Permission_Set* envoy_config_rbac_v3_Permission_mutable_and_rules(envoy_config_rbac_v3_Permission *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_rbac_v3_Permission_Set* envoy_config_rbac_v3_Permission_mutable_and_rules(envoy_config_rbac_v3_Permission* msg, upb_Arena* arena) {
struct envoy_config_rbac_v3_Permission_Set* sub = (struct envoy_config_rbac_v3_Permission_Set*)envoy_config_rbac_v3_Permission_and_rules(msg);
if (sub == NULL) {
sub = (struct envoy_config_rbac_v3_Permission_Set*)_upb_Message_New(&envoy_config_rbac_v3_Permission_Set_msginit, arena);
@@ -319,9 +463,9 @@ UPB_INLINE struct envoy_config_rbac_v3_Permission_Set* envoy_config_rbac_v3_Perm
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Permission_set_or_rules(envoy_config_rbac_v3_Permission *msg, envoy_config_rbac_v3_Permission_Set* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Permission_Set*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Permission_Set*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_config_rbac_v3_Permission_Set* envoy_config_rbac_v3_Permission_mutable_or_rules(envoy_config_rbac_v3_Permission *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_rbac_v3_Permission_Set* envoy_config_rbac_v3_Permission_mutable_or_rules(envoy_config_rbac_v3_Permission* msg, upb_Arena* arena) {
struct envoy_config_rbac_v3_Permission_Set* sub = (struct envoy_config_rbac_v3_Permission_Set*)envoy_config_rbac_v3_Permission_or_rules(msg);
if (sub == NULL) {
sub = (struct envoy_config_rbac_v3_Permission_Set*)_upb_Message_New(&envoy_config_rbac_v3_Permission_Set_msginit, arena);
@@ -331,12 +475,12 @@ UPB_INLINE struct envoy_config_rbac_v3_Permission_Set* envoy_config_rbac_v3_Perm
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Permission_set_any(envoy_config_rbac_v3_Permission *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
UPB_INLINE void envoy_config_rbac_v3_Permission_set_header(envoy_config_rbac_v3_Permission *msg, struct envoy_config_route_v3_HeaderMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_route_v3_HeaderMatcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 4);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_route_v3_HeaderMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_rbac_v3_Permission_mutable_header(envoy_config_rbac_v3_Permission *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_rbac_v3_Permission_mutable_header(envoy_config_rbac_v3_Permission* msg, upb_Arena* arena) {
struct envoy_config_route_v3_HeaderMatcher* sub = (struct envoy_config_route_v3_HeaderMatcher*)envoy_config_rbac_v3_Permission_header(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_HeaderMatcher*)_upb_Message_New(&envoy_config_route_v3_HeaderMatcher_msginit, arena);
@@ -346,9 +490,9 @@ UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_rbac_v3_Perm
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Permission_set_destination_ip(envoy_config_rbac_v3_Permission *msg, struct envoy_config_core_v3_CidrRange* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_CidrRange*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 5);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_CidrRange*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Permission_mutable_destination_ip(envoy_config_rbac_v3_Permission *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Permission_mutable_destination_ip(envoy_config_rbac_v3_Permission* msg, upb_Arena* arena) {
struct envoy_config_core_v3_CidrRange* sub = (struct envoy_config_core_v3_CidrRange*)envoy_config_rbac_v3_Permission_destination_ip(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_CidrRange*)_upb_Message_New(&envoy_config_core_v3_CidrRange_msginit, arena);
@@ -358,12 +502,12 @@ UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Permissio
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Permission_set_destination_port(envoy_config_rbac_v3_Permission *msg, uint32_t value) {
- UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 6);
+ UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 6);
}
UPB_INLINE void envoy_config_rbac_v3_Permission_set_metadata(envoy_config_rbac_v3_Permission *msg, struct envoy_type_matcher_v3_MetadataMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_MetadataMatcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 7);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_MetadataMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 7);
}
-UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_rbac_v3_Permission_mutable_metadata(envoy_config_rbac_v3_Permission *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_rbac_v3_Permission_mutable_metadata(envoy_config_rbac_v3_Permission* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_MetadataMatcher* sub = (struct envoy_type_matcher_v3_MetadataMatcher*)envoy_config_rbac_v3_Permission_metadata(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_MetadataMatcher*)_upb_Message_New(&envoy_type_matcher_v3_MetadataMatcher_msginit, arena);
@@ -373,9 +517,9 @@ UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_rbac_v3_Pe
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Permission_set_not_rule(envoy_config_rbac_v3_Permission *msg, envoy_config_rbac_v3_Permission* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Permission*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 8);
+ UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Permission*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 8);
}
-UPB_INLINE struct envoy_config_rbac_v3_Permission* envoy_config_rbac_v3_Permission_mutable_not_rule(envoy_config_rbac_v3_Permission *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_rbac_v3_Permission* envoy_config_rbac_v3_Permission_mutable_not_rule(envoy_config_rbac_v3_Permission* msg, upb_Arena* arena) {
struct envoy_config_rbac_v3_Permission* sub = (struct envoy_config_rbac_v3_Permission*)envoy_config_rbac_v3_Permission_not_rule(msg);
if (sub == NULL) {
sub = (struct envoy_config_rbac_v3_Permission*)_upb_Message_New(&envoy_config_rbac_v3_Permission_msginit, arena);
@@ -385,9 +529,9 @@ UPB_INLINE struct envoy_config_rbac_v3_Permission* envoy_config_rbac_v3_Permissi
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Permission_set_requested_server_name(envoy_config_rbac_v3_Permission *msg, struct envoy_type_matcher_v3_StringMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 9);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 9);
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_rbac_v3_Permission_mutable_requested_server_name(envoy_config_rbac_v3_Permission *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_rbac_v3_Permission_mutable_requested_server_name(envoy_config_rbac_v3_Permission* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)envoy_config_rbac_v3_Permission_requested_server_name(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StringMatcher_msginit, arena);
@@ -397,9 +541,9 @@ UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_rbac_v3_Perm
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Permission_set_url_path(envoy_config_rbac_v3_Permission *msg, struct envoy_type_matcher_v3_PathMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_PathMatcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 10);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_PathMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 10);
}
-UPB_INLINE struct envoy_type_matcher_v3_PathMatcher* envoy_config_rbac_v3_Permission_mutable_url_path(envoy_config_rbac_v3_Permission *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_PathMatcher* envoy_config_rbac_v3_Permission_mutable_url_path(envoy_config_rbac_v3_Permission* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_PathMatcher* sub = (struct envoy_type_matcher_v3_PathMatcher*)envoy_config_rbac_v3_Permission_url_path(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_PathMatcher*)_upb_Message_New(&envoy_type_matcher_v3_PathMatcher_msginit, arena);
@@ -409,9 +553,9 @@ UPB_INLINE struct envoy_type_matcher_v3_PathMatcher* envoy_config_rbac_v3_Permis
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Permission_set_destination_port_range(envoy_config_rbac_v3_Permission *msg, struct envoy_type_v3_Int32Range* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_v3_Int32Range*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 11);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_v3_Int32Range*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 11);
}
-UPB_INLINE struct envoy_type_v3_Int32Range* envoy_config_rbac_v3_Permission_mutable_destination_port_range(envoy_config_rbac_v3_Permission *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Int32Range* envoy_config_rbac_v3_Permission_mutable_destination_port_range(envoy_config_rbac_v3_Permission* msg, upb_Arena* arena) {
struct envoy_type_v3_Int32Range* sub = (struct envoy_type_v3_Int32Range*)envoy_config_rbac_v3_Permission_destination_port_range(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Int32Range*)_upb_Message_New(&envoy_type_v3_Int32Range_msginit, arena);
@@ -421,9 +565,9 @@ UPB_INLINE struct envoy_type_v3_Int32Range* envoy_config_rbac_v3_Permission_muta
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Permission_set_matcher(envoy_config_rbac_v3_Permission *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 12);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 12);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_rbac_v3_Permission_mutable_matcher(envoy_config_rbac_v3_Permission *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_rbac_v3_Permission_mutable_matcher(envoy_config_rbac_v3_Permission* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_rbac_v3_Permission_matcher(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -458,25 +602,35 @@ UPB_INLINE envoy_config_rbac_v3_Permission_Set* envoy_config_rbac_v3_Permission_
return ret;
}
UPB_INLINE char* envoy_config_rbac_v3_Permission_Set_serialize(const envoy_config_rbac_v3_Permission_Set* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_rbac_v3_Permission_Set_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_Permission_Set_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_rbac_v3_Permission_Set_serialize_ex(const envoy_config_rbac_v3_Permission_Set* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_rbac_v3_Permission_Set_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_Permission_Set_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_rbac_v3_Permission_Set_has_rules(const envoy_config_rbac_v3_Permission_Set* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_rbac_v3_Permission_Set_clear_rules(const envoy_config_rbac_v3_Permission_Set* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_rbac_v3_Permission* const* envoy_config_rbac_v3_Permission_Set_rules(const envoy_config_rbac_v3_Permission_Set* msg, size_t* len) {
+ return (const envoy_config_rbac_v3_Permission* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_rbac_v3_Permission_Set_has_rules(const envoy_config_rbac_v3_Permission_Set *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_rbac_v3_Permission* const* envoy_config_rbac_v3_Permission_Set_rules(const envoy_config_rbac_v3_Permission_Set *msg, size_t *len) { return (const envoy_config_rbac_v3_Permission* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_rbac_v3_Permission** envoy_config_rbac_v3_Permission_Set_mutable_rules(envoy_config_rbac_v3_Permission_Set *msg, size_t *len) {
+UPB_INLINE envoy_config_rbac_v3_Permission** envoy_config_rbac_v3_Permission_Set_mutable_rules(envoy_config_rbac_v3_Permission_Set* msg, size_t* len) {
return (envoy_config_rbac_v3_Permission**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_rbac_v3_Permission** envoy_config_rbac_v3_Permission_Set_resize_rules(envoy_config_rbac_v3_Permission_Set *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_rbac_v3_Permission** envoy_config_rbac_v3_Permission_Set_resize_rules(envoy_config_rbac_v3_Permission_Set* msg, size_t len, upb_Arena* arena) {
return (envoy_config_rbac_v3_Permission**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_rbac_v3_Permission* envoy_config_rbac_v3_Permission_Set_add_rules(envoy_config_rbac_v3_Permission_Set *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_rbac_v3_Permission* envoy_config_rbac_v3_Permission_Set_add_rules(envoy_config_rbac_v3_Permission_Set* msg, upb_Arena* arena) {
struct envoy_config_rbac_v3_Permission* sub = (struct envoy_config_rbac_v3_Permission*)_upb_Message_New(&envoy_config_rbac_v3_Permission_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -506,11 +660,15 @@ UPB_INLINE envoy_config_rbac_v3_Principal* envoy_config_rbac_v3_Principal_parse_
return ret;
}
UPB_INLINE char* envoy_config_rbac_v3_Principal_serialize(const envoy_config_rbac_v3_Principal* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_rbac_v3_Principal_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_Principal_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_rbac_v3_Principal_serialize_ex(const envoy_config_rbac_v3_Principal* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_rbac_v3_Principal_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_Principal_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_rbac_v3_Principal_identifier_and_ids = 1,
@@ -526,35 +684,113 @@ typedef enum {
envoy_config_rbac_v3_Principal_identifier_not_id = 8,
envoy_config_rbac_v3_Principal_identifier_NOT_SET = 0
} envoy_config_rbac_v3_Principal_identifier_oneofcases;
-UPB_INLINE envoy_config_rbac_v3_Principal_identifier_oneofcases envoy_config_rbac_v3_Principal_identifier_case(const envoy_config_rbac_v3_Principal* msg) { return (envoy_config_rbac_v3_Principal_identifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_rbac_v3_Principal_has_and_ids(const envoy_config_rbac_v3_Principal *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_rbac_v3_Principal_Set* envoy_config_rbac_v3_Principal_and_ids(const envoy_config_rbac_v3_Principal *msg) { return UPB_READ_ONEOF(msg, const envoy_config_rbac_v3_Principal_Set*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Principal_has_or_ids(const envoy_config_rbac_v3_Principal *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const envoy_config_rbac_v3_Principal_Set* envoy_config_rbac_v3_Principal_or_ids(const envoy_config_rbac_v3_Principal *msg) { return UPB_READ_ONEOF(msg, const envoy_config_rbac_v3_Principal_Set*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Principal_has_any(const envoy_config_rbac_v3_Principal *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE bool envoy_config_rbac_v3_Principal_any(const envoy_config_rbac_v3_Principal *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, false); }
-UPB_INLINE bool envoy_config_rbac_v3_Principal_has_authenticated(const envoy_config_rbac_v3_Principal *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 4; }
-UPB_INLINE const envoy_config_rbac_v3_Principal_Authenticated* envoy_config_rbac_v3_Principal_authenticated(const envoy_config_rbac_v3_Principal *msg) { return UPB_READ_ONEOF(msg, const envoy_config_rbac_v3_Principal_Authenticated*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 4, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Principal_has_source_ip(const envoy_config_rbac_v3_Principal *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 5; }
-UPB_INLINE const struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Principal_source_ip(const envoy_config_rbac_v3_Principal *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_CidrRange*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 5, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Principal_has_header(const envoy_config_rbac_v3_Principal *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 6; }
-UPB_INLINE const struct envoy_config_route_v3_HeaderMatcher* envoy_config_rbac_v3_Principal_header(const envoy_config_rbac_v3_Principal *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_route_v3_HeaderMatcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 6, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Principal_has_metadata(const envoy_config_rbac_v3_Principal *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 7; }
-UPB_INLINE const struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_rbac_v3_Principal_metadata(const envoy_config_rbac_v3_Principal *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_MetadataMatcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 7, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Principal_has_not_id(const envoy_config_rbac_v3_Principal *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 8; }
-UPB_INLINE const envoy_config_rbac_v3_Principal* envoy_config_rbac_v3_Principal_not_id(const envoy_config_rbac_v3_Principal *msg) { return UPB_READ_ONEOF(msg, const envoy_config_rbac_v3_Principal*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 8, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Principal_has_url_path(const envoy_config_rbac_v3_Principal *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 9; }
-UPB_INLINE const struct envoy_type_matcher_v3_PathMatcher* envoy_config_rbac_v3_Principal_url_path(const envoy_config_rbac_v3_Principal *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_PathMatcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 9, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Principal_has_direct_remote_ip(const envoy_config_rbac_v3_Principal *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 10; }
-UPB_INLINE const struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Principal_direct_remote_ip(const envoy_config_rbac_v3_Principal *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_CidrRange*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 10, NULL); }
-UPB_INLINE bool envoy_config_rbac_v3_Principal_has_remote_ip(const envoy_config_rbac_v3_Principal *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 11; }
-UPB_INLINE const struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Principal_remote_ip(const envoy_config_rbac_v3_Principal *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_CidrRange*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 11, NULL); }
+UPB_INLINE envoy_config_rbac_v3_Principal_identifier_oneofcases envoy_config_rbac_v3_Principal_identifier_case(const envoy_config_rbac_v3_Principal* msg) {
+ return (envoy_config_rbac_v3_Principal_identifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Principal_has_and_ids(const envoy_config_rbac_v3_Principal* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_rbac_v3_Principal_clear_and_ids(const envoy_config_rbac_v3_Principal* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Principal_Set*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Principal_identifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_rbac_v3_Principal_Set* envoy_config_rbac_v3_Principal_and_ids(const envoy_config_rbac_v3_Principal* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_rbac_v3_Principal_Set*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Principal_has_or_ids(const envoy_config_rbac_v3_Principal* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_rbac_v3_Principal_clear_or_ids(const envoy_config_rbac_v3_Principal* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Principal_Set*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Principal_identifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_rbac_v3_Principal_Set* envoy_config_rbac_v3_Principal_or_ids(const envoy_config_rbac_v3_Principal* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_rbac_v3_Principal_Set*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Principal_has_any(const envoy_config_rbac_v3_Principal* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_rbac_v3_Principal_clear_any(const envoy_config_rbac_v3_Principal* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Principal_identifier_NOT_SET);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Principal_any(const envoy_config_rbac_v3_Principal* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, false);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Principal_has_authenticated(const envoy_config_rbac_v3_Principal* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_config_rbac_v3_Principal_clear_authenticated(const envoy_config_rbac_v3_Principal* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Principal_Authenticated*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Principal_identifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_rbac_v3_Principal_Authenticated* envoy_config_rbac_v3_Principal_authenticated(const envoy_config_rbac_v3_Principal* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_rbac_v3_Principal_Authenticated*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Principal_has_source_ip(const envoy_config_rbac_v3_Principal* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_config_rbac_v3_Principal_clear_source_ip(const envoy_config_rbac_v3_Principal* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_CidrRange*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Principal_identifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Principal_source_ip(const envoy_config_rbac_v3_Principal* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_CidrRange*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 5, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Principal_has_header(const envoy_config_rbac_v3_Principal* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 6;
+}
+UPB_INLINE void envoy_config_rbac_v3_Principal_clear_header(const envoy_config_rbac_v3_Principal* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_route_v3_HeaderMatcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Principal_identifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_route_v3_HeaderMatcher* envoy_config_rbac_v3_Principal_header(const envoy_config_rbac_v3_Principal* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_route_v3_HeaderMatcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 6, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Principal_has_metadata(const envoy_config_rbac_v3_Principal* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 7;
+}
+UPB_INLINE void envoy_config_rbac_v3_Principal_clear_metadata(const envoy_config_rbac_v3_Principal* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_MetadataMatcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Principal_identifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_rbac_v3_Principal_metadata(const envoy_config_rbac_v3_Principal* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_MetadataMatcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 7, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Principal_has_not_id(const envoy_config_rbac_v3_Principal* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 8;
+}
+UPB_INLINE void envoy_config_rbac_v3_Principal_clear_not_id(const envoy_config_rbac_v3_Principal* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Principal*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Principal_identifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_rbac_v3_Principal* envoy_config_rbac_v3_Principal_not_id(const envoy_config_rbac_v3_Principal* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_rbac_v3_Principal*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 8, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Principal_has_url_path(const envoy_config_rbac_v3_Principal* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 9;
+}
+UPB_INLINE void envoy_config_rbac_v3_Principal_clear_url_path(const envoy_config_rbac_v3_Principal* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_PathMatcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Principal_identifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_PathMatcher* envoy_config_rbac_v3_Principal_url_path(const envoy_config_rbac_v3_Principal* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_PathMatcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 9, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Principal_has_direct_remote_ip(const envoy_config_rbac_v3_Principal* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 10;
+}
+UPB_INLINE void envoy_config_rbac_v3_Principal_clear_direct_remote_ip(const envoy_config_rbac_v3_Principal* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_CidrRange*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Principal_identifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Principal_direct_remote_ip(const envoy_config_rbac_v3_Principal* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_CidrRange*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 10, NULL);
+}
+UPB_INLINE bool envoy_config_rbac_v3_Principal_has_remote_ip(const envoy_config_rbac_v3_Principal* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 11;
+}
+UPB_INLINE void envoy_config_rbac_v3_Principal_clear_remote_ip(const envoy_config_rbac_v3_Principal* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_CidrRange*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_rbac_v3_Principal_identifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Principal_remote_ip(const envoy_config_rbac_v3_Principal* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_CidrRange*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 11, NULL);
+}
UPB_INLINE void envoy_config_rbac_v3_Principal_set_and_ids(envoy_config_rbac_v3_Principal *msg, envoy_config_rbac_v3_Principal_Set* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Principal_Set*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Principal_Set*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_rbac_v3_Principal_Set* envoy_config_rbac_v3_Principal_mutable_and_ids(envoy_config_rbac_v3_Principal *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_rbac_v3_Principal_Set* envoy_config_rbac_v3_Principal_mutable_and_ids(envoy_config_rbac_v3_Principal* msg, upb_Arena* arena) {
struct envoy_config_rbac_v3_Principal_Set* sub = (struct envoy_config_rbac_v3_Principal_Set*)envoy_config_rbac_v3_Principal_and_ids(msg);
if (sub == NULL) {
sub = (struct envoy_config_rbac_v3_Principal_Set*)_upb_Message_New(&envoy_config_rbac_v3_Principal_Set_msginit, arena);
@@ -564,9 +800,9 @@ UPB_INLINE struct envoy_config_rbac_v3_Principal_Set* envoy_config_rbac_v3_Princ
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Principal_set_or_ids(envoy_config_rbac_v3_Principal *msg, envoy_config_rbac_v3_Principal_Set* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Principal_Set*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Principal_Set*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_config_rbac_v3_Principal_Set* envoy_config_rbac_v3_Principal_mutable_or_ids(envoy_config_rbac_v3_Principal *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_rbac_v3_Principal_Set* envoy_config_rbac_v3_Principal_mutable_or_ids(envoy_config_rbac_v3_Principal* msg, upb_Arena* arena) {
struct envoy_config_rbac_v3_Principal_Set* sub = (struct envoy_config_rbac_v3_Principal_Set*)envoy_config_rbac_v3_Principal_or_ids(msg);
if (sub == NULL) {
sub = (struct envoy_config_rbac_v3_Principal_Set*)_upb_Message_New(&envoy_config_rbac_v3_Principal_Set_msginit, arena);
@@ -576,12 +812,12 @@ UPB_INLINE struct envoy_config_rbac_v3_Principal_Set* envoy_config_rbac_v3_Princ
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Principal_set_any(envoy_config_rbac_v3_Principal *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
UPB_INLINE void envoy_config_rbac_v3_Principal_set_authenticated(envoy_config_rbac_v3_Principal *msg, envoy_config_rbac_v3_Principal_Authenticated* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Principal_Authenticated*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 4);
+ UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Principal_Authenticated*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct envoy_config_rbac_v3_Principal_Authenticated* envoy_config_rbac_v3_Principal_mutable_authenticated(envoy_config_rbac_v3_Principal *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_rbac_v3_Principal_Authenticated* envoy_config_rbac_v3_Principal_mutable_authenticated(envoy_config_rbac_v3_Principal* msg, upb_Arena* arena) {
struct envoy_config_rbac_v3_Principal_Authenticated* sub = (struct envoy_config_rbac_v3_Principal_Authenticated*)envoy_config_rbac_v3_Principal_authenticated(msg);
if (sub == NULL) {
sub = (struct envoy_config_rbac_v3_Principal_Authenticated*)_upb_Message_New(&envoy_config_rbac_v3_Principal_Authenticated_msginit, arena);
@@ -591,9 +827,9 @@ UPB_INLINE struct envoy_config_rbac_v3_Principal_Authenticated* envoy_config_rba
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Principal_set_source_ip(envoy_config_rbac_v3_Principal *msg, struct envoy_config_core_v3_CidrRange* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_CidrRange*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 5);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_CidrRange*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Principal_mutable_source_ip(envoy_config_rbac_v3_Principal *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Principal_mutable_source_ip(envoy_config_rbac_v3_Principal* msg, upb_Arena* arena) {
struct envoy_config_core_v3_CidrRange* sub = (struct envoy_config_core_v3_CidrRange*)envoy_config_rbac_v3_Principal_source_ip(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_CidrRange*)_upb_Message_New(&envoy_config_core_v3_CidrRange_msginit, arena);
@@ -603,9 +839,9 @@ UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Principal
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Principal_set_header(envoy_config_rbac_v3_Principal *msg, struct envoy_config_route_v3_HeaderMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_route_v3_HeaderMatcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 6);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_route_v3_HeaderMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 6);
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_rbac_v3_Principal_mutable_header(envoy_config_rbac_v3_Principal *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_rbac_v3_Principal_mutable_header(envoy_config_rbac_v3_Principal* msg, upb_Arena* arena) {
struct envoy_config_route_v3_HeaderMatcher* sub = (struct envoy_config_route_v3_HeaderMatcher*)envoy_config_rbac_v3_Principal_header(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_HeaderMatcher*)_upb_Message_New(&envoy_config_route_v3_HeaderMatcher_msginit, arena);
@@ -615,9 +851,9 @@ UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_rbac_v3_Prin
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Principal_set_metadata(envoy_config_rbac_v3_Principal *msg, struct envoy_type_matcher_v3_MetadataMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_MetadataMatcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 7);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_MetadataMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 7);
}
-UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_rbac_v3_Principal_mutable_metadata(envoy_config_rbac_v3_Principal *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_rbac_v3_Principal_mutable_metadata(envoy_config_rbac_v3_Principal* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_MetadataMatcher* sub = (struct envoy_type_matcher_v3_MetadataMatcher*)envoy_config_rbac_v3_Principal_metadata(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_MetadataMatcher*)_upb_Message_New(&envoy_type_matcher_v3_MetadataMatcher_msginit, arena);
@@ -627,9 +863,9 @@ UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_rbac_v3_Pr
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Principal_set_not_id(envoy_config_rbac_v3_Principal *msg, envoy_config_rbac_v3_Principal* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Principal*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 8);
+ UPB_WRITE_ONEOF(msg, envoy_config_rbac_v3_Principal*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 8);
}
-UPB_INLINE struct envoy_config_rbac_v3_Principal* envoy_config_rbac_v3_Principal_mutable_not_id(envoy_config_rbac_v3_Principal *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_rbac_v3_Principal* envoy_config_rbac_v3_Principal_mutable_not_id(envoy_config_rbac_v3_Principal* msg, upb_Arena* arena) {
struct envoy_config_rbac_v3_Principal* sub = (struct envoy_config_rbac_v3_Principal*)envoy_config_rbac_v3_Principal_not_id(msg);
if (sub == NULL) {
sub = (struct envoy_config_rbac_v3_Principal*)_upb_Message_New(&envoy_config_rbac_v3_Principal_msginit, arena);
@@ -639,9 +875,9 @@ UPB_INLINE struct envoy_config_rbac_v3_Principal* envoy_config_rbac_v3_Principal
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Principal_set_url_path(envoy_config_rbac_v3_Principal *msg, struct envoy_type_matcher_v3_PathMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_PathMatcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 9);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_PathMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 9);
}
-UPB_INLINE struct envoy_type_matcher_v3_PathMatcher* envoy_config_rbac_v3_Principal_mutable_url_path(envoy_config_rbac_v3_Principal *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_PathMatcher* envoy_config_rbac_v3_Principal_mutable_url_path(envoy_config_rbac_v3_Principal* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_PathMatcher* sub = (struct envoy_type_matcher_v3_PathMatcher*)envoy_config_rbac_v3_Principal_url_path(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_PathMatcher*)_upb_Message_New(&envoy_type_matcher_v3_PathMatcher_msginit, arena);
@@ -651,9 +887,9 @@ UPB_INLINE struct envoy_type_matcher_v3_PathMatcher* envoy_config_rbac_v3_Princi
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Principal_set_direct_remote_ip(envoy_config_rbac_v3_Principal *msg, struct envoy_config_core_v3_CidrRange* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_CidrRange*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 10);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_CidrRange*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 10);
}
-UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Principal_mutable_direct_remote_ip(envoy_config_rbac_v3_Principal *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Principal_mutable_direct_remote_ip(envoy_config_rbac_v3_Principal* msg, upb_Arena* arena) {
struct envoy_config_core_v3_CidrRange* sub = (struct envoy_config_core_v3_CidrRange*)envoy_config_rbac_v3_Principal_direct_remote_ip(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_CidrRange*)_upb_Message_New(&envoy_config_core_v3_CidrRange_msginit, arena);
@@ -663,9 +899,9 @@ UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Principal
return sub;
}
UPB_INLINE void envoy_config_rbac_v3_Principal_set_remote_ip(envoy_config_rbac_v3_Principal *msg, struct envoy_config_core_v3_CidrRange* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_CidrRange*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 11);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_CidrRange*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 11);
}
-UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Principal_mutable_remote_ip(envoy_config_rbac_v3_Principal *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_config_rbac_v3_Principal_mutable_remote_ip(envoy_config_rbac_v3_Principal* msg, upb_Arena* arena) {
struct envoy_config_core_v3_CidrRange* sub = (struct envoy_config_core_v3_CidrRange*)envoy_config_rbac_v3_Principal_remote_ip(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_CidrRange*)_upb_Message_New(&envoy_config_core_v3_CidrRange_msginit, arena);
@@ -700,25 +936,35 @@ UPB_INLINE envoy_config_rbac_v3_Principal_Set* envoy_config_rbac_v3_Principal_Se
return ret;
}
UPB_INLINE char* envoy_config_rbac_v3_Principal_Set_serialize(const envoy_config_rbac_v3_Principal_Set* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_rbac_v3_Principal_Set_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_Principal_Set_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_rbac_v3_Principal_Set_serialize_ex(const envoy_config_rbac_v3_Principal_Set* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_rbac_v3_Principal_Set_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_Principal_Set_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_rbac_v3_Principal_Set_has_ids(const envoy_config_rbac_v3_Principal_Set* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_rbac_v3_Principal_Set_clear_ids(const envoy_config_rbac_v3_Principal_Set* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_rbac_v3_Principal* const* envoy_config_rbac_v3_Principal_Set_ids(const envoy_config_rbac_v3_Principal_Set* msg, size_t* len) {
+ return (const envoy_config_rbac_v3_Principal* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_rbac_v3_Principal_Set_has_ids(const envoy_config_rbac_v3_Principal_Set *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_rbac_v3_Principal* const* envoy_config_rbac_v3_Principal_Set_ids(const envoy_config_rbac_v3_Principal_Set *msg, size_t *len) { return (const envoy_config_rbac_v3_Principal* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_rbac_v3_Principal** envoy_config_rbac_v3_Principal_Set_mutable_ids(envoy_config_rbac_v3_Principal_Set *msg, size_t *len) {
+UPB_INLINE envoy_config_rbac_v3_Principal** envoy_config_rbac_v3_Principal_Set_mutable_ids(envoy_config_rbac_v3_Principal_Set* msg, size_t* len) {
return (envoy_config_rbac_v3_Principal**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_rbac_v3_Principal** envoy_config_rbac_v3_Principal_Set_resize_ids(envoy_config_rbac_v3_Principal_Set *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_rbac_v3_Principal** envoy_config_rbac_v3_Principal_Set_resize_ids(envoy_config_rbac_v3_Principal_Set* msg, size_t len, upb_Arena* arena) {
return (envoy_config_rbac_v3_Principal**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_rbac_v3_Principal* envoy_config_rbac_v3_Principal_Set_add_ids(envoy_config_rbac_v3_Principal_Set *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_rbac_v3_Principal* envoy_config_rbac_v3_Principal_Set_add_ids(envoy_config_rbac_v3_Principal_Set* msg, upb_Arena* arena) {
struct envoy_config_rbac_v3_Principal* sub = (struct envoy_config_rbac_v3_Principal*)_upb_Message_New(&envoy_config_rbac_v3_Principal_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -748,13 +994,22 @@ UPB_INLINE envoy_config_rbac_v3_Principal_Authenticated* envoy_config_rbac_v3_Pr
return ret;
}
UPB_INLINE char* envoy_config_rbac_v3_Principal_Authenticated_serialize(const envoy_config_rbac_v3_Principal_Authenticated* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_rbac_v3_Principal_Authenticated_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_Principal_Authenticated_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_rbac_v3_Principal_Authenticated_serialize_ex(const envoy_config_rbac_v3_Principal_Authenticated* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_rbac_v3_Principal_Authenticated_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_Principal_Authenticated_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_rbac_v3_Principal_Authenticated_has_principal_name(const envoy_config_rbac_v3_Principal_Authenticated* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_rbac_v3_Principal_Authenticated_clear_principal_name(const envoy_config_rbac_v3_Principal_Authenticated* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_rbac_v3_Principal_Authenticated_has_principal_name(const envoy_config_rbac_v3_Principal_Authenticated *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_config_rbac_v3_Principal_Authenticated_principal_name(const envoy_config_rbac_v3_Principal_Authenticated* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_matcher_v3_StringMatcher*);
}
@@ -763,7 +1018,7 @@ UPB_INLINE void envoy_config_rbac_v3_Principal_Authenticated_set_principal_name(
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_matcher_v3_StringMatcher*) = value;
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_rbac_v3_Principal_Authenticated_mutable_principal_name(envoy_config_rbac_v3_Principal_Authenticated *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_rbac_v3_Principal_Authenticated_mutable_principal_name(envoy_config_rbac_v3_Principal_Authenticated* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)envoy_config_rbac_v3_Principal_Authenticated_principal_name(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StringMatcher_msginit, arena);
@@ -773,6 +1028,61 @@ UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_rbac_v3_Prin
return sub;
}
+/* envoy.config.rbac.v3.Action */
+
+UPB_INLINE envoy_config_rbac_v3_Action* envoy_config_rbac_v3_Action_new(upb_Arena* arena) {
+ return (envoy_config_rbac_v3_Action*)_upb_Message_New(&envoy_config_rbac_v3_Action_msginit, arena);
+}
+UPB_INLINE envoy_config_rbac_v3_Action* envoy_config_rbac_v3_Action_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_config_rbac_v3_Action* ret = envoy_config_rbac_v3_Action_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_rbac_v3_Action_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_config_rbac_v3_Action* envoy_config_rbac_v3_Action_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_config_rbac_v3_Action* ret = envoy_config_rbac_v3_Action_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_rbac_v3_Action_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_config_rbac_v3_Action_serialize(const envoy_config_rbac_v3_Action* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_Action_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_config_rbac_v3_Action_serialize_ex(const envoy_config_rbac_v3_Action* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_rbac_v3_Action_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_rbac_v3_Action_clear_name(const envoy_config_rbac_v3_Action* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_config_rbac_v3_Action_name(const envoy_config_rbac_v3_Action* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE void envoy_config_rbac_v3_Action_clear_action(const envoy_config_rbac_v3_Action* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
+}
+UPB_INLINE int32_t envoy_config_rbac_v3_Action_action(const envoy_config_rbac_v3_Action* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+
+UPB_INLINE void envoy_config_rbac_v3_Action_set_name(envoy_config_rbac_v3_Action *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+}
+UPB_INLINE void envoy_config_rbac_v3_Action_set_action(envoy_config_rbac_v3_Action *msg, int32_t value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
+}
+
extern const upb_MiniTable_File envoy_config_rbac_v3_rbac_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c
index 09d21d392a..44b34d20c6 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c
@@ -11,7 +11,6 @@
#include "envoy/config/route/v3/route.upb.h"
#include "envoy/config/core/v3/base.upb.h"
#include "envoy/config/core/v3/config_source.upb.h"
-#include "envoy/config/core/v3/extension.upb.h"
#include "envoy/config/route/v3/route_components.upb.h"
#include "google/protobuf/wrappers.upb.h"
#include "udpa/annotations/status.upb.h"
@@ -20,48 +19,39 @@
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_config_route_v3_RouteConfiguration_submsgs[6] = {
- {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
- {.submsg = &envoy_config_route_v3_ClusterSpecifierPlugin_msginit},
- {.submsg = &envoy_config_route_v3_Vhds_msginit},
+static const upb_MiniTable_Sub envoy_config_route_v3_RouteConfiguration_submsgs[8] = {
{.submsg = &envoy_config_route_v3_VirtualHost_msginit},
+ {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
+ {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
{.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &envoy_config_route_v3_Vhds_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_route_v3_ClusterSpecifierPlugin_msginit},
+ {.submsg = &envoy_config_route_v3_RouteAction_RequestMirrorPolicy_msginit},
};
-static const upb_MiniTable_Field envoy_config_route_v3_RouteConfiguration__fields[12] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(24, 48), 0, 3, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(28, 56), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 64), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(36, 72), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(40, 80), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(12, 24), 1, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(44, 88), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(16, 32), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {11, UPB_SIZE(20, 40), 3, 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(48, 96), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_route_v3_RouteConfiguration__fields[15] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 56), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(32, 64), UPB_SIZE(1, 1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(36, 72), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(40, 80), UPB_SIZE(2, 2), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(44, 88), UPB_SIZE(3, 3), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(48, 96), UPB_SIZE(0, 0), 6, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(52, 104), UPB_SIZE(0, 0), 7, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(2, 2), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(3, 3), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RouteConfiguration_msginit = {
&envoy_config_route_v3_RouteConfiguration_submsgs[0],
&envoy_config_route_v3_RouteConfiguration__fields[0],
- UPB_SIZE(56, 112), 12, upb_ExtMode_NonExtendable, 12, 255, 0,
-};
-
-static const upb_MiniTable_Sub envoy_config_route_v3_ClusterSpecifierPlugin_submsgs[1] = {
- {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
-};
-
-static const upb_MiniTable_Field envoy_config_route_v3_ClusterSpecifierPlugin__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
-};
-
-const upb_MiniTable envoy_config_route_v3_ClusterSpecifierPlugin_msginit = {
- &envoy_config_route_v3_ClusterSpecifierPlugin_submsgs[0],
- &envoy_config_route_v3_ClusterSpecifierPlugin__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(56, 112), 15, kUpb_ExtMode_NonExtendable, 15, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_Vhds_submsgs[1] = {
@@ -69,18 +59,17 @@ static const upb_MiniTable_Sub envoy_config_route_v3_Vhds_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_route_v3_Vhds__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_Vhds_msginit = {
&envoy_config_route_v3_Vhds_submsgs[0],
&envoy_config_route_v3_Vhds__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable *messages_layout[3] = {
+static const upb_MiniTable *messages_layout[2] = {
&envoy_config_route_v3_RouteConfiguration_msginit,
- &envoy_config_route_v3_ClusterSpecifierPlugin_msginit,
&envoy_config_route_v3_Vhds_msginit,
};
@@ -88,7 +77,7 @@ const upb_MiniTable_File envoy_config_route_v3_route_proto_upb_file_layout = {
messages_layout,
NULL,
NULL,
- 3,
+ 2,
0,
0,
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h
index fd82c987d7..7c2c6ee9c1 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h
@@ -21,23 +21,22 @@ extern "C" {
#endif
struct envoy_config_route_v3_RouteConfiguration;
-struct envoy_config_route_v3_ClusterSpecifierPlugin;
struct envoy_config_route_v3_Vhds;
typedef struct envoy_config_route_v3_RouteConfiguration envoy_config_route_v3_RouteConfiguration;
-typedef struct envoy_config_route_v3_ClusterSpecifierPlugin envoy_config_route_v3_ClusterSpecifierPlugin;
typedef struct envoy_config_route_v3_Vhds envoy_config_route_v3_Vhds;
extern const upb_MiniTable envoy_config_route_v3_RouteConfiguration_msginit;
-extern const upb_MiniTable envoy_config_route_v3_ClusterSpecifierPlugin_msginit;
extern const upb_MiniTable envoy_config_route_v3_Vhds_msginit;
struct envoy_config_core_v3_ConfigSource;
struct envoy_config_core_v3_HeaderValueOption;
-struct envoy_config_core_v3_TypedExtensionConfig;
+struct envoy_config_route_v3_ClusterSpecifierPlugin;
+struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy;
struct envoy_config_route_v3_VirtualHost;
struct google_protobuf_BoolValue;
struct google_protobuf_UInt32Value;
extern const upb_MiniTable envoy_config_core_v3_ConfigSource_msginit;
extern const upb_MiniTable envoy_config_core_v3_HeaderValueOption_msginit;
-extern const upb_MiniTable envoy_config_core_v3_TypedExtensionConfig_msginit;
+extern const upb_MiniTable envoy_config_route_v3_ClusterSpecifierPlugin_msginit;
+extern const upb_MiniTable envoy_config_route_v3_RouteAction_RequestMirrorPolicy_msginit;
extern const upb_MiniTable envoy_config_route_v3_VirtualHost_msginit;
extern const upb_MiniTable google_protobuf_BoolValue_msginit;
extern const upb_MiniTable google_protobuf_UInt32Value_msginit;
@@ -69,109 +68,193 @@ UPB_INLINE envoy_config_route_v3_RouteConfiguration* envoy_config_route_v3_Route
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteConfiguration_serialize(const envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteConfiguration_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteConfiguration_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteConfiguration_serialize_ex(const envoy_config_route_v3_RouteConfiguration* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteConfiguration_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteConfiguration_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_name(const envoy_config_route_v3_RouteConfiguration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RouteConfiguration_name(const envoy_config_route_v3_RouteConfiguration* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_virtual_hosts(const envoy_config_route_v3_RouteConfiguration *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48)); }
-UPB_INLINE const struct envoy_config_route_v3_VirtualHost* const* envoy_config_route_v3_RouteConfiguration_virtual_hosts(const envoy_config_route_v3_RouteConfiguration *msg, size_t *len) { return (const struct envoy_config_route_v3_VirtualHost* const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len); }
-UPB_INLINE upb_StringView const* envoy_config_route_v3_RouteConfiguration_internal_only_headers(const envoy_config_route_v3_RouteConfiguration *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len); }
-UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_response_headers_to_add(const envoy_config_route_v3_RouteConfiguration *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 64)); }
-UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_RouteConfiguration_response_headers_to_add(const envoy_config_route_v3_RouteConfiguration *msg, size_t *len) { return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len); }
-UPB_INLINE upb_StringView const* envoy_config_route_v3_RouteConfiguration_response_headers_to_remove(const envoy_config_route_v3_RouteConfiguration *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(36, 72), len); }
-UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_request_headers_to_add(const envoy_config_route_v3_RouteConfiguration *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(40, 80)); }
-UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_RouteConfiguration_request_headers_to_add(const envoy_config_route_v3_RouteConfiguration *msg, size_t *len) { return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(40, 80), len); }
-UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_validate_clusters(const envoy_config_route_v3_RouteConfiguration *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_virtual_hosts(const envoy_config_route_v3_RouteConfiguration* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_virtual_hosts(const envoy_config_route_v3_RouteConfiguration* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const struct envoy_config_route_v3_VirtualHost* const* envoy_config_route_v3_RouteConfiguration_virtual_hosts(const envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (const struct envoy_config_route_v3_VirtualHost* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_internal_only_headers(const envoy_config_route_v3_RouteConfiguration* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE upb_StringView const* envoy_config_route_v3_RouteConfiguration_internal_only_headers(const envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_response_headers_to_add(const envoy_config_route_v3_RouteConfiguration* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_response_headers_to_add(const envoy_config_route_v3_RouteConfiguration* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_RouteConfiguration_response_headers_to_add(const envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len);
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_response_headers_to_remove(const envoy_config_route_v3_RouteConfiguration* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE upb_StringView const* envoy_config_route_v3_RouteConfiguration_response_headers_to_remove(const envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_request_headers_to_add(const envoy_config_route_v3_RouteConfiguration* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_request_headers_to_add(const envoy_config_route_v3_RouteConfiguration* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_RouteConfiguration_request_headers_to_add(const envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_validate_clusters(const envoy_config_route_v3_RouteConfiguration* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_validate_clusters(const envoy_config_route_v3_RouteConfiguration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_RouteConfiguration_validate_clusters(const envoy_config_route_v3_RouteConfiguration* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_request_headers_to_remove(const envoy_config_route_v3_RouteConfiguration* msg) {
+ _upb_array_detach(msg, UPB_SIZE(36, 72));
+}
+UPB_INLINE upb_StringView const* envoy_config_route_v3_RouteConfiguration_request_headers_to_remove(const envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(36, 72), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_vhds(const envoy_config_route_v3_RouteConfiguration* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_vhds(const envoy_config_route_v3_RouteConfiguration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 80), const upb_Message*) = NULL;
}
-UPB_INLINE upb_StringView const* envoy_config_route_v3_RouteConfiguration_request_headers_to_remove(const envoy_config_route_v3_RouteConfiguration *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(44, 88), len); }
-UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_vhds(const envoy_config_route_v3_RouteConfiguration *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const envoy_config_route_v3_Vhds* envoy_config_route_v3_RouteConfiguration_vhds(const envoy_config_route_v3_RouteConfiguration* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const envoy_config_route_v3_Vhds*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 80), const envoy_config_route_v3_Vhds*);
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_most_specific_header_mutations_wins(const envoy_config_route_v3_RouteConfiguration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
}
UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_most_specific_header_mutations_wins(const envoy_config_route_v3_RouteConfiguration* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_max_direct_response_body_size_bytes(const envoy_config_route_v3_RouteConfiguration *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_max_direct_response_body_size_bytes(const envoy_config_route_v3_RouteConfiguration* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_max_direct_response_body_size_bytes(const envoy_config_route_v3_RouteConfiguration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 88), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_route_v3_RouteConfiguration_max_direct_response_body_size_bytes(const envoy_config_route_v3_RouteConfiguration* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 88), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_cluster_specifier_plugins(const envoy_config_route_v3_RouteConfiguration* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 96));
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_cluster_specifier_plugins(const envoy_config_route_v3_RouteConfiguration* msg) {
+ _upb_array_detach(msg, UPB_SIZE(48, 96));
+}
+UPB_INLINE const struct envoy_config_route_v3_ClusterSpecifierPlugin* const* envoy_config_route_v3_RouteConfiguration_cluster_specifier_plugins(const envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (const struct envoy_config_route_v3_ClusterSpecifierPlugin* const*)_upb_array_accessor(msg, UPB_SIZE(48, 96), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_request_mirror_policies(const envoy_config_route_v3_RouteConfiguration* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(52, 104));
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_request_mirror_policies(const envoy_config_route_v3_RouteConfiguration* msg) {
+ _upb_array_detach(msg, UPB_SIZE(52, 104));
+}
+UPB_INLINE const struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* const* envoy_config_route_v3_RouteConfiguration_request_mirror_policies(const envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (const struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* const*)_upb_array_accessor(msg, UPB_SIZE(52, 104), len);
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_ignore_port_in_host_matching(const envoy_config_route_v3_RouteConfiguration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
+}
+UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_ignore_port_in_host_matching(const envoy_config_route_v3_RouteConfiguration* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
+}
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_clear_ignore_path_parameters_in_path_matching(const envoy_config_route_v3_RouteConfiguration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = 0;
+}
+UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_ignore_path_parameters_in_path_matching(const envoy_config_route_v3_RouteConfiguration* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool);
}
-UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_has_cluster_specifier_plugins(const envoy_config_route_v3_RouteConfiguration *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 96)); }
-UPB_INLINE const envoy_config_route_v3_ClusterSpecifierPlugin* const* envoy_config_route_v3_RouteConfiguration_cluster_specifier_plugins(const envoy_config_route_v3_RouteConfiguration *msg, size_t *len) { return (const envoy_config_route_v3_ClusterSpecifierPlugin* const*)_upb_array_accessor(msg, UPB_SIZE(48, 96), len); }
UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_name(envoy_config_route_v3_RouteConfiguration *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE struct envoy_config_route_v3_VirtualHost** envoy_config_route_v3_RouteConfiguration_mutable_virtual_hosts(envoy_config_route_v3_RouteConfiguration *msg, size_t *len) {
- return (struct envoy_config_route_v3_VirtualHost**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
+UPB_INLINE struct envoy_config_route_v3_VirtualHost** envoy_config_route_v3_RouteConfiguration_mutable_virtual_hosts(envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (struct envoy_config_route_v3_VirtualHost**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE struct envoy_config_route_v3_VirtualHost** envoy_config_route_v3_RouteConfiguration_resize_virtual_hosts(envoy_config_route_v3_RouteConfiguration *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_route_v3_VirtualHost**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_route_v3_VirtualHost** envoy_config_route_v3_RouteConfiguration_resize_virtual_hosts(envoy_config_route_v3_RouteConfiguration* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_route_v3_VirtualHost**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_VirtualHost* envoy_config_route_v3_RouteConfiguration_add_virtual_hosts(envoy_config_route_v3_RouteConfiguration *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_VirtualHost* envoy_config_route_v3_RouteConfiguration_add_virtual_hosts(envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* arena) {
struct envoy_config_route_v3_VirtualHost* sub = (struct envoy_config_route_v3_VirtualHost*)_upb_Message_New(&envoy_config_route_v3_VirtualHost_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(24, 48), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_mutable_internal_only_headers(envoy_config_route_v3_RouteConfiguration *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
+UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_mutable_internal_only_headers(envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_resize_internal_only_headers(envoy_config_route_v3_RouteConfiguration *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_resize_internal_only_headers(envoy_config_route_v3_RouteConfiguration* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_add_internal_only_headers(envoy_config_route_v3_RouteConfiguration *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 56), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_add_internal_only_headers(envoy_config_route_v3_RouteConfiguration* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_RouteConfiguration_mutable_response_headers_to_add(envoy_config_route_v3_RouteConfiguration *msg, size_t *len) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_RouteConfiguration_mutable_response_headers_to_add(envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_RouteConfiguration_resize_response_headers_to_add(envoy_config_route_v3_RouteConfiguration *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_RouteConfiguration_resize_response_headers_to_add(envoy_config_route_v3_RouteConfiguration* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_RouteConfiguration_add_response_headers_to_add(envoy_config_route_v3_RouteConfiguration *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_RouteConfiguration_add_response_headers_to_add(envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HeaderValueOption* sub = (struct envoy_config_core_v3_HeaderValueOption*)_upb_Message_New(&envoy_config_core_v3_HeaderValueOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(32, 64), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_mutable_response_headers_to_remove(envoy_config_route_v3_RouteConfiguration *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 72), len);
+UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_mutable_response_headers_to_remove(envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_resize_response_headers_to_remove(envoy_config_route_v3_RouteConfiguration *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 72), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_resize_response_headers_to_remove(envoy_config_route_v3_RouteConfiguration* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_add_response_headers_to_remove(envoy_config_route_v3_RouteConfiguration *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 72), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_add_response_headers_to_remove(envoy_config_route_v3_RouteConfiguration* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 48), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_RouteConfiguration_mutable_request_headers_to_add(envoy_config_route_v3_RouteConfiguration *msg, size_t *len) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 80), len);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_RouteConfiguration_mutable_request_headers_to_add(envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_RouteConfiguration_resize_request_headers_to_add(envoy_config_route_v3_RouteConfiguration *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 80), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_RouteConfiguration_resize_request_headers_to_add(envoy_config_route_v3_RouteConfiguration* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_RouteConfiguration_add_request_headers_to_add(envoy_config_route_v3_RouteConfiguration *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_RouteConfiguration_add_request_headers_to_add(envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HeaderValueOption* sub = (struct envoy_config_core_v3_HeaderValueOption*)_upb_Message_New(&envoy_config_core_v3_HeaderValueOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(40, 80), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 56), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_validate_clusters(envoy_config_route_v3_RouteConfiguration *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteConfiguration_mutable_validate_clusters(envoy_config_route_v3_RouteConfiguration *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteConfiguration_mutable_validate_clusters(envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_route_v3_RouteConfiguration_validate_clusters(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -180,21 +263,20 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteConfigur
}
return sub;
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_mutable_request_headers_to_remove(envoy_config_route_v3_RouteConfiguration *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 88), len);
+UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_mutable_request_headers_to_remove(envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 72), len);
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_resize_request_headers_to_remove(envoy_config_route_v3_RouteConfiguration *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 88), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_config_route_v3_RouteConfiguration_resize_request_headers_to_remove(envoy_config_route_v3_RouteConfiguration* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 72), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_add_request_headers_to_remove(envoy_config_route_v3_RouteConfiguration *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(44, 88), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_route_v3_RouteConfiguration_add_request_headers_to_remove(envoy_config_route_v3_RouteConfiguration* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 72), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_vhds(envoy_config_route_v3_RouteConfiguration *msg, envoy_config_route_v3_Vhds* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 32), envoy_config_route_v3_Vhds*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 80), envoy_config_route_v3_Vhds*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_Vhds* envoy_config_route_v3_RouteConfiguration_mutable_vhds(envoy_config_route_v3_RouteConfiguration *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_Vhds* envoy_config_route_v3_RouteConfiguration_mutable_vhds(envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* arena) {
struct envoy_config_route_v3_Vhds* sub = (struct envoy_config_route_v3_Vhds*)envoy_config_route_v3_RouteConfiguration_vhds(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_Vhds*)_upb_Message_New(&envoy_config_route_v3_Vhds_msginit, arena);
@@ -208,9 +290,9 @@ UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_most_specific_heade
}
UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_max_direct_response_body_size_bytes(envoy_config_route_v3_RouteConfiguration *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 88), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RouteConfiguration_mutable_max_direct_response_body_size_bytes(envoy_config_route_v3_RouteConfiguration *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RouteConfiguration_mutable_max_direct_response_body_size_bytes(envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_route_v3_RouteConfiguration_max_direct_response_body_size_bytes(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -219,68 +301,35 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RouteConfig
}
return sub;
}
-UPB_INLINE envoy_config_route_v3_ClusterSpecifierPlugin** envoy_config_route_v3_RouteConfiguration_mutable_cluster_specifier_plugins(envoy_config_route_v3_RouteConfiguration *msg, size_t *len) {
- return (envoy_config_route_v3_ClusterSpecifierPlugin**)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 96), len);
+UPB_INLINE struct envoy_config_route_v3_ClusterSpecifierPlugin** envoy_config_route_v3_RouteConfiguration_mutable_cluster_specifier_plugins(envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (struct envoy_config_route_v3_ClusterSpecifierPlugin**)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 96), len);
}
-UPB_INLINE envoy_config_route_v3_ClusterSpecifierPlugin** envoy_config_route_v3_RouteConfiguration_resize_cluster_specifier_plugins(envoy_config_route_v3_RouteConfiguration *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_ClusterSpecifierPlugin**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 96), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_route_v3_ClusterSpecifierPlugin** envoy_config_route_v3_RouteConfiguration_resize_cluster_specifier_plugins(envoy_config_route_v3_RouteConfiguration* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_route_v3_ClusterSpecifierPlugin**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 96), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_ClusterSpecifierPlugin* envoy_config_route_v3_RouteConfiguration_add_cluster_specifier_plugins(envoy_config_route_v3_RouteConfiguration *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_ClusterSpecifierPlugin* envoy_config_route_v3_RouteConfiguration_add_cluster_specifier_plugins(envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* arena) {
struct envoy_config_route_v3_ClusterSpecifierPlugin* sub = (struct envoy_config_route_v3_ClusterSpecifierPlugin*)_upb_Message_New(&envoy_config_route_v3_ClusterSpecifierPlugin_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(48, 96), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(48, 96), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-
-/* envoy.config.route.v3.ClusterSpecifierPlugin */
-
-UPB_INLINE envoy_config_route_v3_ClusterSpecifierPlugin* envoy_config_route_v3_ClusterSpecifierPlugin_new(upb_Arena* arena) {
- return (envoy_config_route_v3_ClusterSpecifierPlugin*)_upb_Message_New(&envoy_config_route_v3_ClusterSpecifierPlugin_msginit, arena);
-}
-UPB_INLINE envoy_config_route_v3_ClusterSpecifierPlugin* envoy_config_route_v3_ClusterSpecifierPlugin_parse(const char* buf, size_t size, upb_Arena* arena) {
- envoy_config_route_v3_ClusterSpecifierPlugin* ret = envoy_config_route_v3_ClusterSpecifierPlugin_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_config_route_v3_ClusterSpecifierPlugin_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE envoy_config_route_v3_ClusterSpecifierPlugin* envoy_config_route_v3_ClusterSpecifierPlugin_parse_ex(const char* buf, size_t size,
- const upb_ExtensionRegistry* extreg,
- int options, upb_Arena* arena) {
- envoy_config_route_v3_ClusterSpecifierPlugin* ret = envoy_config_route_v3_ClusterSpecifierPlugin_new(arena);
- if (!ret) return NULL;
- if (upb_Decode(buf, size, ret, &envoy_config_route_v3_ClusterSpecifierPlugin_msginit, extreg, options, arena) !=
- kUpb_DecodeStatus_Ok) {
- return NULL;
- }
- return ret;
-}
-UPB_INLINE char* envoy_config_route_v3_ClusterSpecifierPlugin_serialize(const envoy_config_route_v3_ClusterSpecifierPlugin* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_ClusterSpecifierPlugin_msginit, 0, arena, len);
+UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_config_route_v3_RouteConfiguration_mutable_request_mirror_policies(envoy_config_route_v3_RouteConfiguration* msg, size_t* len) {
+ return (struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy**)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 104), len);
}
-UPB_INLINE char* envoy_config_route_v3_ClusterSpecifierPlugin_serialize_ex(const envoy_config_route_v3_ClusterSpecifierPlugin* msg, int options,
- upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_ClusterSpecifierPlugin_msginit, options, arena, len);
+UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_config_route_v3_RouteConfiguration_resize_request_mirror_policies(envoy_config_route_v3_RouteConfiguration* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 104), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE bool envoy_config_route_v3_ClusterSpecifierPlugin_has_extension(const envoy_config_route_v3_ClusterSpecifierPlugin *msg) { return _upb_hasbit(msg, 1); }
-UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_ClusterSpecifierPlugin_extension(const envoy_config_route_v3_ClusterSpecifierPlugin* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_TypedExtensionConfig*);
+UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* envoy_config_route_v3_RouteConfiguration_add_request_mirror_policies(envoy_config_route_v3_RouteConfiguration* msg, upb_Arena* arena) {
+ struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* sub = (struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy*)_upb_Message_New(&envoy_config_route_v3_RouteAction_RequestMirrorPolicy_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(52, 104), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
}
-
-UPB_INLINE void envoy_config_route_v3_ClusterSpecifierPlugin_set_extension(envoy_config_route_v3_ClusterSpecifierPlugin *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
- _upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_ignore_port_in_host_matching(envoy_config_route_v3_RouteConfiguration *msg, bool value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_ClusterSpecifierPlugin_mutable_extension(envoy_config_route_v3_ClusterSpecifierPlugin *msg, upb_Arena *arena) {
- struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_route_v3_ClusterSpecifierPlugin_extension(msg);
- if (sub == NULL) {
- sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
- if (!sub) return NULL;
- envoy_config_route_v3_ClusterSpecifierPlugin_set_extension(msg, sub);
- }
- return sub;
+UPB_INLINE void envoy_config_route_v3_RouteConfiguration_set_ignore_path_parameters_in_path_matching(envoy_config_route_v3_RouteConfiguration *msg, bool value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = value;
}
/* envoy.config.route.v3.Vhds */
@@ -308,13 +357,22 @@ UPB_INLINE envoy_config_route_v3_Vhds* envoy_config_route_v3_Vhds_parse_ex(const
return ret;
}
UPB_INLINE char* envoy_config_route_v3_Vhds_serialize(const envoy_config_route_v3_Vhds* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_Vhds_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_Vhds_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_Vhds_serialize_ex(const envoy_config_route_v3_Vhds* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_Vhds_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_Vhds_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_Vhds_has_config_source(const envoy_config_route_v3_Vhds* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_Vhds_clear_config_source(const envoy_config_route_v3_Vhds* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_Vhds_has_config_source(const envoy_config_route_v3_Vhds *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_config_route_v3_Vhds_config_source(const envoy_config_route_v3_Vhds* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_ConfigSource*);
}
@@ -323,7 +381,7 @@ UPB_INLINE void envoy_config_route_v3_Vhds_set_config_source(envoy_config_route_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_ConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_route_v3_Vhds_mutable_config_source(envoy_config_route_v3_Vhds *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_config_route_v3_Vhds_mutable_config_source(envoy_config_route_v3_Vhds* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_config_route_v3_Vhds_config_source(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c
index 661fc5d369..a9cc01fb76 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c
@@ -32,46 +32,49 @@
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_config_route_v3_VirtualHost_submsgs[11] = {
- {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
- {.submsg = &envoy_config_route_v3_CorsPolicy_msginit},
- {.submsg = &envoy_config_route_v3_HedgePolicy_msginit},
- {.submsg = &envoy_config_route_v3_RateLimit_msginit},
- {.submsg = &envoy_config_route_v3_RetryPolicy_msginit},
+static const upb_MiniTable_Sub envoy_config_route_v3_VirtualHost_submsgs[13] = {
{.submsg = &envoy_config_route_v3_Route_msginit},
{.submsg = &envoy_config_route_v3_VirtualCluster_msginit},
+ {.submsg = &envoy_config_route_v3_RateLimit_msginit},
+ {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
+ {.submsg = &envoy_config_route_v3_CorsPolicy_msginit},
+ {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
{.submsg = &envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_msginit},
- {.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &envoy_config_route_v3_RetryPolicy_msginit},
+ {.submsg = &envoy_config_route_v3_HedgePolicy_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_Any_msginit},
{.submsg = &xds_type_matcher_v3_Matcher_msginit},
+ {.submsg = &envoy_config_route_v3_RouteAction_RequestMirrorPolicy_msginit},
};
-static const upb_MiniTable_Field envoy_config_route_v3_VirtualHost__fields[19] = {
- {1, UPB_SIZE(12, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(44, 80), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(48, 88), 0, 5, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(52, 96), 0, 6, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(56, 104), 0, 3, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(60, 112), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(20, 32), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(64, 120), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(68, 128), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {13, UPB_SIZE(72, 136), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {14, UPB_SIZE(8, 8), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {15, UPB_SIZE(76, 144), 0, 7, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {16, UPB_SIZE(24, 40), 2, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {17, UPB_SIZE(28, 48), 3, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {18, UPB_SIZE(32, 56), 4, 9, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {19, UPB_SIZE(9, 9), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {20, UPB_SIZE(36, 64), 5, 8, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {21, UPB_SIZE(40, 72), 6, 10, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_route_v3_VirtualHost__fields[20] = {
+ {1, UPB_SIZE(12, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(20, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(24, 40), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(28, 48), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(32, 56), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(36, 64), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(40, 72), UPB_SIZE(1, 1), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(44, 80), UPB_SIZE(0, 0), 5, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(48, 88), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(52, 96), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(56, 104), UPB_SIZE(0, 0), 6, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {16, UPB_SIZE(60, 112), UPB_SIZE(2, 2), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {17, UPB_SIZE(64, 120), UPB_SIZE(3, 3), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {18, UPB_SIZE(68, 128), UPB_SIZE(4, 4), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {19, UPB_SIZE(9, 9), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {20, UPB_SIZE(72, 136), UPB_SIZE(5, 5), 10, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {21, UPB_SIZE(76, 144), UPB_SIZE(6, 6), 11, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {22, UPB_SIZE(80, 152), UPB_SIZE(0, 0), 12, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_VirtualHost_msginit = {
&envoy_config_route_v3_VirtualHost_submsgs[0],
&envoy_config_route_v3_VirtualHost__fields[0],
- UPB_SIZE(80, 160), 19, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(88, 160), 20, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_submsgs[1] = {
@@ -79,14 +82,14 @@ static const upb_MiniTable_Sub envoy_config_route_v3_VirtualHost_TypedPerFilterC
};
static const upb_MiniTable_Field envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_msginit = {
&envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_submsgs[0],
&envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_FilterAction_submsgs[1] = {
@@ -94,53 +97,55 @@ static const upb_MiniTable_Sub envoy_config_route_v3_FilterAction_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_route_v3_FilterAction__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_FilterAction_msginit = {
&envoy_config_route_v3_FilterAction_submsgs[0],
&envoy_config_route_v3_FilterAction__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_route_v3_Route_submsgs[12] = {
- {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
+static const upb_MiniTable_Sub envoy_config_route_v3_Route_submsgs[13] = {
+ {.submsg = &envoy_config_route_v3_RouteMatch_msginit},
+ {.submsg = &envoy_config_route_v3_RouteAction_msginit},
+ {.submsg = &envoy_config_route_v3_RedirectAction_msginit},
{.submsg = &envoy_config_core_v3_Metadata_msginit},
{.submsg = &envoy_config_route_v3_Decorator_msginit},
{.submsg = &envoy_config_route_v3_DirectResponseAction_msginit},
- {.submsg = &envoy_config_route_v3_FilterAction_msginit},
- {.submsg = &envoy_config_route_v3_NonForwardingAction_msginit},
- {.submsg = &envoy_config_route_v3_RedirectAction_msginit},
+ {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
+ {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
{.submsg = &envoy_config_route_v3_Route_TypedPerFilterConfigEntry_msginit},
- {.submsg = &envoy_config_route_v3_RouteAction_msginit},
- {.submsg = &envoy_config_route_v3_RouteMatch_msginit},
{.submsg = &envoy_config_route_v3_Tracing_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_route_v3_FilterAction_msginit},
+ {.submsg = &envoy_config_route_v3_NonForwardingAction_msginit},
};
-static const upb_MiniTable_Field envoy_config_route_v3_Route__fields[16] = {
- {1, UPB_SIZE(12, 24), 1, 9, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(52, 104), UPB_SIZE(-57, -113), 8, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(52, 104), UPB_SIZE(-57, -113), 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 40), 3, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(52, 104), UPB_SIZE(-57, -113), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(32, 64), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(36, 72), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(40, 80), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(44, 88), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {13, UPB_SIZE(48, 96), 0, 7, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {14, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {15, UPB_SIZE(24, 48), 4, 10, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {16, UPB_SIZE(28, 56), 5, 11, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {17, UPB_SIZE(52, 104), UPB_SIZE(-57, -113), 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {18, UPB_SIZE(52, 104), UPB_SIZE(-57, -113), 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_route_v3_Route__fields[17] = {
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(64, 120), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(64, 120), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 16), UPB_SIZE(2, 2), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(16, 24), UPB_SIZE(3, 3), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(64, 120), UPB_SIZE(-5, -5), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(20, 32), UPB_SIZE(0, 0), 6, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(24, 40), UPB_SIZE(0, 0), 7, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(28, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(32, 56), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(36, 64), UPB_SIZE(0, 0), 8, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(40, 72), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(48, 88), UPB_SIZE(4, 4), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {16, UPB_SIZE(52, 96), UPB_SIZE(5, 5), 10, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {17, UPB_SIZE(64, 120), UPB_SIZE(-5, -5), 11, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {18, UPB_SIZE(64, 120), UPB_SIZE(-5, -5), 12, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {19, UPB_SIZE(56, 104), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_Route_msginit = {
&envoy_config_route_v3_Route_submsgs[0],
&envoy_config_route_v3_Route__fields[0],
- UPB_SIZE(64, 128), 16, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(72, 128), 17, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_Route_TypedPerFilterConfigEntry_submsgs[1] = {
@@ -148,14 +153,14 @@ static const upb_MiniTable_Sub envoy_config_route_v3_Route_TypedPerFilterConfigE
};
static const upb_MiniTable_Field envoy_config_route_v3_Route_TypedPerFilterConfigEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_Route_TypedPerFilterConfigEntry_msginit = {
&envoy_config_route_v3_Route_TypedPerFilterConfigEntry_submsgs[0],
&envoy_config_route_v3_Route_TypedPerFilterConfigEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_WeightedCluster_submsgs[2] = {
@@ -163,42 +168,44 @@ static const upb_MiniTable_Sub envoy_config_route_v3_WeightedCluster_submsgs[2]
{.submsg = &google_protobuf_UInt32Value_msginit},
};
-static const upb_MiniTable_Field envoy_config_route_v3_WeightedCluster__fields[3] = {
- {1, UPB_SIZE(16, 32), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_route_v3_WeightedCluster__fields[4] = {
+ {1, UPB_SIZE(16, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(20, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(28, 48), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_WeightedCluster_msginit = {
&envoy_config_route_v3_WeightedCluster_submsgs[0],
&envoy_config_route_v3_WeightedCluster__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(32, 56), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_route_v3_WeightedCluster_ClusterWeight_submsgs[4] = {
- {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
+static const upb_MiniTable_Sub envoy_config_route_v3_WeightedCluster_ClusterWeight_submsgs[5] = {
+ {.submsg = &google_protobuf_UInt32Value_msginit},
{.submsg = &envoy_config_core_v3_Metadata_msginit},
+ {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
+ {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
{.submsg = &envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_msginit},
- {.submsg = &google_protobuf_UInt32Value_msginit},
};
static const upb_MiniTable_Field envoy_config_route_v3_WeightedCluster_ClusterWeight__fields[10] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(20, 40), 1, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 48), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(28, 56), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(32, 64), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(36, 72), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(40, 80), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(44, 88), 0, 2, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(48, 96), UPB_SIZE(-57, -113), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {12, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(24, 40), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(28, 48), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(32, 56), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(36, 64), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(40, 72), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(44, 80), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(48, 88), UPB_SIZE(0, 0), 4, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(52, 96), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_WeightedCluster_ClusterWeight_msginit = {
&envoy_config_route_v3_WeightedCluster_ClusterWeight_submsgs[0],
&envoy_config_route_v3_WeightedCluster_ClusterWeight__fields[0],
- UPB_SIZE(64, 128), 10, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(64, 112), 10, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_submsgs[1] = {
@@ -206,155 +213,184 @@ static const upb_MiniTable_Sub envoy_config_route_v3_WeightedCluster_ClusterWeig
};
static const upb_MiniTable_Field envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_msginit = {
&envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_submsgs[0],
&envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_config_route_v3_ClusterSpecifierPlugin_submsgs[1] = {
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
+};
+
+static const upb_MiniTable_Field envoy_config_route_v3_ClusterSpecifierPlugin__fields[2] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_config_route_v3_ClusterSpecifierPlugin_msginit = {
+ &envoy_config_route_v3_ClusterSpecifierPlugin_submsgs[0],
+ &envoy_config_route_v3_ClusterSpecifierPlugin__fields[0],
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RouteMatch_submsgs[9] = {
- {.submsg = &envoy_config_core_v3_RuntimeFractionalPercent_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
{.submsg = &envoy_config_route_v3_HeaderMatcher_msginit},
{.submsg = &envoy_config_route_v3_QueryParameterMatcher_msginit},
- {.submsg = &envoy_config_route_v3_RouteMatch_ConnectMatcher_msginit},
{.submsg = &envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions_msginit},
+ {.submsg = &envoy_config_core_v3_RuntimeFractionalPercent_msginit},
+ {.submsg = &envoy_type_matcher_v3_RegexMatcher_msginit},
{.submsg = &envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_msginit},
+ {.submsg = &envoy_config_route_v3_RouteMatch_ConnectMatcher_msginit},
{.submsg = &envoy_type_matcher_v3_MetadataMatcher_msginit},
- {.submsg = &envoy_type_matcher_v3_RegexMatcher_msginit},
- {.submsg = &google_protobuf_BoolValue_msginit},
};
-static const upb_MiniTable_Field envoy_config_route_v3_RouteMatch__fields[11] = {
- {1, UPB_SIZE(32, 64), UPB_SIZE(-41, -81), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(32, 64), UPB_SIZE(-41, -81), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(4, 8), 1, 8, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(20, 40), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(24, 48), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(8, 16), 2, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(12, 24), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(32, 64), UPB_SIZE(-41, -81), 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(16, 32), 4, 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(32, 64), UPB_SIZE(-41, -81), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {13, UPB_SIZE(28, 56), 0, 6, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_route_v3_RouteMatch__fields[13] = {
+ {1, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(20, 32), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(24, 40), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(28, 48), UPB_SIZE(2, 2), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(32, 56), UPB_SIZE(3, 3), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(36, 64), UPB_SIZE(4, 4), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(40, 72), UPB_SIZE(0, 0), 8, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RouteMatch_msginit = {
&envoy_config_route_v3_RouteMatch_submsgs[0],
&envoy_config_route_v3_RouteMatch__fields[0],
- UPB_SIZE(48, 96), 11, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(48, 80), 13, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
const upb_MiniTable envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_submsgs[2] = {
+ {.submsg = &google_protobuf_BoolValue_msginit},
{.submsg = &google_protobuf_BoolValue_msginit},
};
static const upb_MiniTable_Field envoy_config_route_v3_RouteMatch_TlsContextMatchOptions__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_msginit = {
&envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_submsgs[0],
&envoy_config_route_v3_RouteMatch_TlsContextMatchOptions__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
const upb_MiniTable envoy_config_route_v3_RouteMatch_ConnectMatcher_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_route_v3_CorsPolicy_submsgs[3] = {
+static const upb_MiniTable_Sub envoy_config_route_v3_CorsPolicy_submsgs[4] = {
+ {.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &envoy_config_core_v3_RuntimeFractionalPercent_msginit},
{.submsg = &envoy_config_core_v3_RuntimeFractionalPercent_msginit},
{.submsg = &envoy_type_matcher_v3_StringMatcher_msginit},
- {.submsg = &google_protobuf_BoolValue_msginit},
};
static const upb_MiniTable_Field envoy_config_route_v3_CorsPolicy__fields[8] = {
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(28, 56), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(36, 72), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(48, 96), UPB_SIZE(-53, -105), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(40, 80), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(44, 88), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(32, 56), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(40, 72), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(52, 96), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(44, 80), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(48, 88), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_CorsPolicy_msginit = {
&envoy_config_route_v3_CorsPolicy_submsgs[0],
&envoy_config_route_v3_CorsPolicy__fields[0],
- UPB_SIZE(56, 112), 8, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(56, 104), 8, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_route_v3_RouteAction_submsgs[16] = {
+static const upb_MiniTable_Sub envoy_config_route_v3_RouteAction_submsgs[23] = {
+ {.submsg = &envoy_config_route_v3_WeightedCluster_msginit},
{.submsg = &envoy_config_core_v3_Metadata_msginit},
- {.submsg = &envoy_config_route_v3_CorsPolicy_msginit},
- {.submsg = &envoy_config_route_v3_HedgePolicy_msginit},
- {.submsg = &envoy_config_route_v3_InternalRedirectPolicy_msginit},
- {.submsg = &envoy_config_route_v3_RateLimit_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &envoy_config_route_v3_RetryPolicy_msginit},
+ {.submsg = &envoy_config_route_v3_RateLimit_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
{.submsg = &envoy_config_route_v3_RouteAction_HashPolicy_msginit},
- {.submsg = &envoy_config_route_v3_RouteAction_MaxStreamDuration_msginit},
- {.submsg = &envoy_config_route_v3_RouteAction_RequestMirrorPolicy_msginit},
+ {.submsg = &envoy_config_route_v3_CorsPolicy_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &envoy_config_route_v3_RouteAction_UpgradeConfig_msginit},
- {.submsg = &envoy_config_route_v3_WeightedCluster_msginit},
- {.submsg = &envoy_type_matcher_v3_RegexMatchAndSubstitute_msginit},
- {.submsg = &google_protobuf_Any_msginit},
- {.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &envoy_config_route_v3_HedgePolicy_msginit},
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_route_v3_RouteAction_RequestMirrorPolicy_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_type_matcher_v3_RegexMatchAndSubstitute_msginit},
+ {.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &envoy_config_route_v3_InternalRedirectPolicy_msginit},
+ {.submsg = &envoy_type_matcher_v3_RegexMatchAndSubstitute_msginit},
+ {.submsg = &envoy_config_route_v3_RouteAction_MaxStreamDuration_msginit},
+ {.submsg = &envoy_config_route_v3_ClusterSpecifierPlugin_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
};
-static const upb_MiniTable_Field envoy_config_route_v3_RouteAction__fields[31] = {
- {1, UPB_SIZE(100, 184), UPB_SIZE(-109, -201), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(100, 184), UPB_SIZE(-109, -201), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(100, 184), UPB_SIZE(-109, -201), 10, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(28, 40), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(112, 208), UPB_SIZE(-121, -225), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {7, UPB_SIZE(112, 208), UPB_SIZE(-121, -225), 13, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(32, 48), 2, 14, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(36, 56), 3, 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {13, UPB_SIZE(84, 152), 0, 4, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {14, UPB_SIZE(40, 64), 4, 13, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {15, UPB_SIZE(88, 160), 0, 6, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {17, UPB_SIZE(44, 72), 5, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {20, UPB_SIZE(8, 8), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {23, UPB_SIZE(48, 80), 6, 14, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {24, UPB_SIZE(52, 88), 7, 14, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {25, UPB_SIZE(92, 168), 0, 9, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {26, UPB_SIZE(12, 12), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {27, UPB_SIZE(56, 96), 8, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {28, UPB_SIZE(60, 104), 9, 14, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {29, UPB_SIZE(112, 208), UPB_SIZE(-121, -225), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {30, UPB_SIZE(96, 176), 0, 8, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {31, UPB_SIZE(64, 112), 10, 15, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {32, UPB_SIZE(68, 120), 11, 11, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {33, UPB_SIZE(72, 128), 12, 12, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {34, UPB_SIZE(76, 136), 13, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {35, UPB_SIZE(112, 208), UPB_SIZE(-121, -225), 11, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {36, UPB_SIZE(80, 144), 14, 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {37, UPB_SIZE(100, 184), UPB_SIZE(-109, -201), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {38, UPB_SIZE(16, 16), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_route_v3_RouteAction__fields[34] = {
+ {1, UPB_SIZE(36, 48), UPB_SIZE(-25, -25), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(36, 48), UPB_SIZE(-25, -25), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(36, 48), UPB_SIZE(-25, -25), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(44, 64), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(48, 72), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 32), UPB_SIZE(-17, -17), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(28, 32), UPB_SIZE(-17, -17), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(56, 88), UPB_SIZE(2, 2), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(60, 96), UPB_SIZE(3, 3), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(64, 104), UPB_SIZE(0, 0), 5, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(68, 112), UPB_SIZE(4, 4), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(72, 120), UPB_SIZE(0, 0), 7, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {17, UPB_SIZE(76, 128), UPB_SIZE(5, 5), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {20, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {23, UPB_SIZE(80, 136), UPB_SIZE(6, 6), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {24, UPB_SIZE(84, 144), UPB_SIZE(7, 7), 10, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {25, UPB_SIZE(88, 152), UPB_SIZE(0, 0), 11, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {26, UPB_SIZE(12, 12), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {27, UPB_SIZE(92, 160), UPB_SIZE(8, 8), 12, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {28, UPB_SIZE(96, 168), UPB_SIZE(9, 9), 13, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {29, UPB_SIZE(28, 32), UPB_SIZE(-17, -17), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {30, UPB_SIZE(100, 176), UPB_SIZE(0, 0), 14, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {31, UPB_SIZE(104, 184), UPB_SIZE(10, 10), 15, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {32, UPB_SIZE(108, 192), UPB_SIZE(11, 11), 16, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {33, UPB_SIZE(112, 200), UPB_SIZE(12, 12), 17, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {34, UPB_SIZE(116, 208), UPB_SIZE(13, 13), 18, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {35, UPB_SIZE(28, 32), UPB_SIZE(-17, -17), 19, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {36, UPB_SIZE(120, 216), UPB_SIZE(14, 14), 20, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {37, UPB_SIZE(36, 48), UPB_SIZE(-25, -25), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {38, UPB_SIZE(20, 20), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {39, UPB_SIZE(36, 48), UPB_SIZE(-25, -25), 21, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {40, UPB_SIZE(124, 224), UPB_SIZE(15, 15), 22, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {41, UPB_SIZE(128, 232), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RouteAction_msginit = {
&envoy_config_route_v3_RouteAction_submsgs[0],
&envoy_config_route_v3_RouteAction__fields[0],
- UPB_SIZE(128, 240), 31, upb_ExtMode_NonExtendable, 9, 255, 0,
+ UPB_SIZE(136, 248), 34, kUpb_ExtMode_NonExtendable, 9, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RouteAction_RequestMirrorPolicy_submsgs[2] = {
@@ -362,39 +398,40 @@ static const upb_MiniTable_Sub envoy_config_route_v3_RouteAction_RequestMirrorPo
{.submsg = &google_protobuf_BoolValue_msginit},
};
-static const upb_MiniTable_Field envoy_config_route_v3_RouteAction_RequestMirrorPolicy__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_route_v3_RouteAction_RequestMirrorPolicy__fields[4] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RouteAction_RequestMirrorPolicy_msginit = {
&envoy_config_route_v3_RouteAction_RequestMirrorPolicy_submsgs[0],
&envoy_config_route_v3_RouteAction_RequestMirrorPolicy__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(32, 56), 4, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RouteAction_HashPolicy_submsgs[5] = {
- {.submsg = &envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties_msginit},
- {.submsg = &envoy_config_route_v3_RouteAction_HashPolicy_Cookie_msginit},
- {.submsg = &envoy_config_route_v3_RouteAction_HashPolicy_FilterState_msginit},
{.submsg = &envoy_config_route_v3_RouteAction_HashPolicy_Header_msginit},
+ {.submsg = &envoy_config_route_v3_RouteAction_HashPolicy_Cookie_msginit},
+ {.submsg = &envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties_msginit},
{.submsg = &envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter_msginit},
+ {.submsg = &envoy_config_route_v3_RouteAction_HashPolicy_FilterState_msginit},
};
static const upb_MiniTable_Field envoy_config_route_v3_RouteAction_HashPolicy__fields[6] = {
- {1, UPB_SIZE(4, 8), UPB_SIZE(-9, -17), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), UPB_SIZE(-9, -17), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), UPB_SIZE(-9, -17), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(4, 8), UPB_SIZE(-9, -17), 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(4, 8), UPB_SIZE(-9, -17), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RouteAction_HashPolicy_msginit = {
&envoy_config_route_v3_RouteAction_HashPolicy_submsgs[0],
&envoy_config_route_v3_RouteAction_HashPolicy__fields[0],
- UPB_SIZE(16, 24), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(16, 16), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RouteAction_HashPolicy_Header_submsgs[1] = {
@@ -402,14 +439,14 @@ static const upb_MiniTable_Sub envoy_config_route_v3_RouteAction_HashPolicy_Head
};
static const upb_MiniTable_Field envoy_config_route_v3_RouteAction_HashPolicy_Header__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RouteAction_HashPolicy_Header_msginit = {
&envoy_config_route_v3_RouteAction_HashPolicy_Header_submsgs[0],
&envoy_config_route_v3_RouteAction_HashPolicy_Header__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RouteAction_HashPolicy_Cookie_submsgs[1] = {
@@ -417,62 +454,62 @@ static const upb_MiniTable_Sub envoy_config_route_v3_RouteAction_HashPolicy_Cook
};
static const upb_MiniTable_Field envoy_config_route_v3_RouteAction_HashPolicy_Cookie__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(20, 40), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RouteAction_HashPolicy_Cookie_msginit = {
&envoy_config_route_v3_RouteAction_HashPolicy_Cookie_submsgs[0],
&envoy_config_route_v3_RouteAction_HashPolicy_Cookie__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 48), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Field envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties_msginit = {
NULL,
&envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter_msginit = {
NULL,
&envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_route_v3_RouteAction_HashPolicy_FilterState__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RouteAction_HashPolicy_FilterState_msginit = {
NULL,
&envoy_config_route_v3_RouteAction_HashPolicy_FilterState__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RouteAction_UpgradeConfig_submsgs[2] = {
- {.submsg = &envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_msginit},
{.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_msginit},
};
static const upb_MiniTable_Field envoy_config_route_v3_RouteAction_UpgradeConfig__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RouteAction_UpgradeConfig_msginit = {
&envoy_config_route_v3_RouteAction_UpgradeConfig_submsgs[0],
&envoy_config_route_v3_RouteAction_UpgradeConfig__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_submsgs[1] = {
@@ -480,63 +517,67 @@ static const upb_MiniTable_Sub envoy_config_route_v3_RouteAction_UpgradeConfig_C
};
static const upb_MiniTable_Field envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_msginit = {
&envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_submsgs[0],
&envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_route_v3_RouteAction_MaxStreamDuration_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_route_v3_RouteAction_MaxStreamDuration_submsgs[3] = {
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field envoy_config_route_v3_RouteAction_MaxStreamDuration__fields[3] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RouteAction_MaxStreamDuration_msginit = {
&envoy_config_route_v3_RouteAction_MaxStreamDuration_submsgs[0],
&envoy_config_route_v3_RouteAction_MaxStreamDuration__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_route_v3_RetryPolicy_submsgs[8] = {
- {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
+static const upb_MiniTable_Sub envoy_config_route_v3_RetryPolicy_submsgs[10] = {
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_route_v3_RetryPolicy_RetryPriority_msginit},
+ {.submsg = &envoy_config_route_v3_RetryPolicy_RetryHostPredicate_msginit},
+ {.submsg = &envoy_config_route_v3_RetryPolicy_RetryBackOff_msginit},
+ {.submsg = &envoy_config_route_v3_HeaderMatcher_msginit},
{.submsg = &envoy_config_route_v3_HeaderMatcher_msginit},
{.submsg = &envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_msginit},
- {.submsg = &envoy_config_route_v3_RetryPolicy_RetryBackOff_msginit},
- {.submsg = &envoy_config_route_v3_RetryPolicy_RetryHostPredicate_msginit},
- {.submsg = &envoy_config_route_v3_RetryPolicy_RetryPriority_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
{.submsg = &google_protobuf_Duration_msginit},
- {.submsg = &google_protobuf_UInt32Value_msginit},
};
static const upb_MiniTable_Field envoy_config_route_v3_RetryPolicy__fields[13] = {
- {1, UPB_SIZE(16, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(24, 32), 1, 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(28, 40), 2, 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 48), 3, 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(48, 80), 0, 4, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(8, 8), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(52, 88), 0, 0, 13, kUpb_FieldMode_Array | upb_LabelFlags_IsPacked | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(36, 56), 4, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(56, 96), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(60, 104), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(40, 64), 5, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(64, 112), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {13, UPB_SIZE(44, 72), 6, 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 48), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(56, 112), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(28, 56), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Array | kUpb_LabelFlags_IsPacked | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(32, 64), UPB_SIZE(4, 4), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(36, 72), UPB_SIZE(0, 0), 5, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(40, 80), UPB_SIZE(0, 0), 6, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(44, 88), UPB_SIZE(5, 5), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(48, 96), UPB_SIZE(0, 0), 8, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(52, 104), UPB_SIZE(6, 6), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RetryPolicy_msginit = {
&envoy_config_route_v3_RetryPolicy_submsgs[0],
&envoy_config_route_v3_RetryPolicy__fields[0],
- UPB_SIZE(72, 128), 13, upb_ExtMode_NonExtendable, 13, 255, 0,
+ UPB_SIZE(64, 120), 13, kUpb_ExtMode_NonExtendable, 13, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RetryPolicy_RetryPriority_submsgs[1] = {
@@ -544,14 +585,14 @@ static const upb_MiniTable_Sub envoy_config_route_v3_RetryPolicy_RetryPriority_s
};
static const upb_MiniTable_Field envoy_config_route_v3_RetryPolicy_RetryPriority__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RetryPolicy_RetryPriority_msginit = {
&envoy_config_route_v3_RetryPolicy_RetryPriority_submsgs[0],
&envoy_config_route_v3_RetryPolicy_RetryPriority__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RetryPolicy_RetryHostPredicate_submsgs[1] = {
@@ -559,40 +600,41 @@ static const upb_MiniTable_Sub envoy_config_route_v3_RetryPolicy_RetryHostPredic
};
static const upb_MiniTable_Field envoy_config_route_v3_RetryPolicy_RetryHostPredicate__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RetryPolicy_RetryHostPredicate_msginit = {
&envoy_config_route_v3_RetryPolicy_RetryHostPredicate_submsgs[0],
&envoy_config_route_v3_RetryPolicy_RetryHostPredicate__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_route_v3_RetryPolicy_RetryBackOff_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_config_route_v3_RetryPolicy_RetryBackOff_submsgs[2] = {
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field envoy_config_route_v3_RetryPolicy_RetryBackOff__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RetryPolicy_RetryBackOff_msginit = {
&envoy_config_route_v3_RetryPolicy_RetryBackOff_submsgs[0],
&envoy_config_route_v3_RetryPolicy_RetryBackOff__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_route_v3_RetryPolicy_ResetHeader__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RetryPolicy_ResetHeader_msginit = {
NULL,
&envoy_config_route_v3_RetryPolicy_ResetHeader__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_submsgs[2] = {
@@ -601,31 +643,31 @@ static const upb_MiniTable_Sub envoy_config_route_v3_RetryPolicy_RateLimitedRetr
};
static const upb_MiniTable_Field envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff__fields[2] = {
- {1, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_msginit = {
&envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_submsgs[0],
&envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_HedgePolicy_submsgs[2] = {
- {.submsg = &envoy_type_v3_FractionalPercent_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_type_v3_FractionalPercent_msginit},
};
static const upb_MiniTable_Field envoy_config_route_v3_HedgePolicy__fields[3] = {
- {1, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_HedgePolicy_msginit = {
&envoy_config_route_v3_HedgePolicy_submsgs[0],
&envoy_config_route_v3_HedgePolicy__fields[0],
- UPB_SIZE(16, 24), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RedirectAction_submsgs[1] = {
@@ -633,21 +675,21 @@ static const upb_MiniTable_Sub envoy_config_route_v3_RedirectAction_submsgs[1] =
};
static const upb_MiniTable_Field envoy_config_route_v3_RedirectAction__fields[9] = {
- {1, UPB_SIZE(12, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(20, 32), UPB_SIZE(-29, -49), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 56), UPB_SIZE(-41, -73), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 32), UPB_SIZE(-29, -49), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(8, 8), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(32, 56), UPB_SIZE(-41, -73), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {8, UPB_SIZE(4, 4), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {9, UPB_SIZE(20, 32), UPB_SIZE(-29, -49), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(36, 56), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(28, 40), UPB_SIZE(-17, -17), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 24), UPB_SIZE(-9, -9), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(28, 40), UPB_SIZE(-17, -17), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(20, 24), UPB_SIZE(-9, -9), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(12, 12), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(28, 40), UPB_SIZE(-17, -17), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RedirectAction_msginit = {
&envoy_config_route_v3_RedirectAction_submsgs[0],
&envoy_config_route_v3_RedirectAction__fields[0],
- UPB_SIZE(48, 80), 9, upb_ExtMode_NonExtendable, 9, 255, 0,
+ UPB_SIZE(48, 72), 9, kUpb_ExtMode_NonExtendable, 9, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_DirectResponseAction_submsgs[1] = {
@@ -655,20 +697,20 @@ static const upb_MiniTable_Sub envoy_config_route_v3_DirectResponseAction_submsg
};
static const upb_MiniTable_Field envoy_config_route_v3_DirectResponseAction__fields[2] = {
- {1, UPB_SIZE(4, 4), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_DirectResponseAction_msginit = {
&envoy_config_route_v3_DirectResponseAction_submsgs[0],
&envoy_config_route_v3_DirectResponseAction__fields[0],
- UPB_SIZE(16, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
const upb_MiniTable envoy_config_route_v3_NonForwardingAction_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_Decorator_submsgs[1] = {
@@ -676,32 +718,34 @@ static const upb_MiniTable_Sub envoy_config_route_v3_Decorator_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_route_v3_Decorator__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_Decorator_msginit = {
&envoy_config_route_v3_Decorator_submsgs[0],
&envoy_config_route_v3_Decorator__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_route_v3_Tracing_submsgs[2] = {
- {.submsg = &envoy_type_tracing_v3_CustomTag_msginit},
+static const upb_MiniTable_Sub envoy_config_route_v3_Tracing_submsgs[4] = {
+ {.submsg = &envoy_type_v3_FractionalPercent_msginit},
{.submsg = &envoy_type_v3_FractionalPercent_msginit},
+ {.submsg = &envoy_type_v3_FractionalPercent_msginit},
+ {.submsg = &envoy_type_tracing_v3_CustomTag_msginit},
};
static const upb_MiniTable_Field envoy_config_route_v3_Tracing__fields[4] = {
- {1, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 3, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_Tracing_msginit = {
&envoy_config_route_v3_Tracing_submsgs[0],
&envoy_config_route_v3_Tracing__fields[0],
- UPB_SIZE(24, 40), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_VirtualCluster_submsgs[1] = {
@@ -709,121 +753,140 @@ static const upb_MiniTable_Sub envoy_config_route_v3_VirtualCluster_submsgs[1] =
};
static const upb_MiniTable_Field envoy_config_route_v3_VirtualCluster__fields[2] = {
- {2, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_VirtualCluster_msginit = {
&envoy_config_route_v3_VirtualCluster_submsgs[0],
&envoy_config_route_v3_VirtualCluster__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RateLimit_submsgs[3] = {
+ {.submsg = &google_protobuf_UInt32Value_msginit},
{.submsg = &envoy_config_route_v3_RateLimit_Action_msginit},
{.submsg = &envoy_config_route_v3_RateLimit_Override_msginit},
- {.submsg = &google_protobuf_UInt32Value_msginit},
};
static const upb_MiniTable_Field envoy_config_route_v3_RateLimit__fields[4] = {
- {1, UPB_SIZE(12, 24), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 40), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RateLimit_msginit = {
&envoy_config_route_v3_RateLimit_submsgs[0],
&envoy_config_route_v3_RateLimit__fields[0],
- UPB_SIZE(24, 48), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 48), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_route_v3_RateLimit_Action_submsgs[9] = {
- {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
+static const upb_MiniTable_Sub envoy_config_route_v3_RateLimit_Action_submsgs[10] = {
+ {.submsg = &envoy_config_route_v3_RateLimit_Action_SourceCluster_msginit},
{.submsg = &envoy_config_route_v3_RateLimit_Action_DestinationCluster_msginit},
- {.submsg = &envoy_config_route_v3_RateLimit_Action_DynamicMetaData_msginit},
+ {.submsg = &envoy_config_route_v3_RateLimit_Action_RequestHeaders_msginit},
+ {.submsg = &envoy_config_route_v3_RateLimit_Action_RemoteAddress_msginit},
{.submsg = &envoy_config_route_v3_RateLimit_Action_GenericKey_msginit},
{.submsg = &envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_msginit},
+ {.submsg = &envoy_config_route_v3_RateLimit_Action_DynamicMetaData_msginit},
{.submsg = &envoy_config_route_v3_RateLimit_Action_MetaData_msginit},
- {.submsg = &envoy_config_route_v3_RateLimit_Action_RemoteAddress_msginit},
- {.submsg = &envoy_config_route_v3_RateLimit_Action_RequestHeaders_msginit},
- {.submsg = &envoy_config_route_v3_RateLimit_Action_SourceCluster_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
+ {.submsg = &envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_msginit},
};
-static const upb_MiniTable_Field envoy_config_route_v3_RateLimit_Action__fields[9] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 8, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_route_v3_RateLimit_Action__fields[10] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RateLimit_Action_msginit = {
&envoy_config_route_v3_RateLimit_Action_submsgs[0],
&envoy_config_route_v3_RateLimit_Action__fields[0],
- UPB_SIZE(8, 16), 9, upb_ExtMode_NonExtendable, 9, 255, 0,
+ UPB_SIZE(8, 16), 10, kUpb_ExtMode_NonExtendable, 10, 255, 0,
};
const upb_MiniTable envoy_config_route_v3_RateLimit_Action_SourceCluster_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
const upb_MiniTable envoy_config_route_v3_RateLimit_Action_DestinationCluster_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Field envoy_config_route_v3_RateLimit_Action_RequestHeaders__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RateLimit_Action_RequestHeaders_msginit = {
NULL,
&envoy_config_route_v3_RateLimit_Action_RequestHeaders__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
const upb_MiniTable envoy_config_route_v3_RateLimit_Action_RemoteAddress_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_submsgs[2] = {
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+};
+
+static const upb_MiniTable_Field envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress__fields[2] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_msginit = {
+ &envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_submsgs[0],
+ &envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress__fields[0],
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_route_v3_RateLimit_Action_GenericKey__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RateLimit_Action_GenericKey_msginit = {
NULL,
&envoy_config_route_v3_RateLimit_Action_GenericKey__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_submsgs[2] = {
- {.submsg = &envoy_config_route_v3_HeaderMatcher_msginit},
{.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &envoy_config_route_v3_HeaderMatcher_msginit},
};
-static const upb_MiniTable_Field envoy_config_route_v3_RateLimit_Action_HeaderValueMatch__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_route_v3_RateLimit_Action_HeaderValueMatch__fields[4] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_msginit = {
&envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_submsgs[0],
&envoy_config_route_v3_RateLimit_Action_HeaderValueMatch__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(32, 56), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RateLimit_Action_DynamicMetaData_submsgs[1] = {
@@ -831,15 +894,15 @@ static const upb_MiniTable_Sub envoy_config_route_v3_RateLimit_Action_DynamicMet
};
static const upb_MiniTable_Field envoy_config_route_v3_RateLimit_Action_DynamicMetaData__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(20, 40), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RateLimit_Action_DynamicMetaData_msginit = {
&envoy_config_route_v3_RateLimit_Action_DynamicMetaData_submsgs[0],
&envoy_config_route_v3_RateLimit_Action_DynamicMetaData__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 48), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RateLimit_Action_MetaData_submsgs[1] = {
@@ -847,16 +910,16 @@ static const upb_MiniTable_Sub envoy_config_route_v3_RateLimit_Action_MetaData_s
};
static const upb_MiniTable_Field envoy_config_route_v3_RateLimit_Action_MetaData__fields[4] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(24, 40), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RateLimit_Action_MetaData_msginit = {
&envoy_config_route_v3_RateLimit_Action_MetaData_submsgs[0],
&envoy_config_route_v3_RateLimit_Action_MetaData__fields[0],
- UPB_SIZE(32, 48), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(32, 48), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RateLimit_Override_submsgs[1] = {
@@ -864,13 +927,13 @@ static const upb_MiniTable_Sub envoy_config_route_v3_RateLimit_Override_submsgs[
};
static const upb_MiniTable_Field envoy_config_route_v3_RateLimit_Override__fields[1] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RateLimit_Override_msginit = {
&envoy_config_route_v3_RateLimit_Override_submsgs[0],
&envoy_config_route_v3_RateLimit_Override__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_RateLimit_Override_DynamicMetadata_submsgs[1] = {
@@ -878,38 +941,39 @@ static const upb_MiniTable_Sub envoy_config_route_v3_RateLimit_Override_DynamicM
};
static const upb_MiniTable_Field envoy_config_route_v3_RateLimit_Override_DynamicMetadata__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_RateLimit_Override_DynamicMetadata_msginit = {
&envoy_config_route_v3_RateLimit_Override_DynamicMetadata_submsgs[0],
&envoy_config_route_v3_RateLimit_Override_DynamicMetadata__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_HeaderMatcher_submsgs[3] = {
+ {.submsg = &envoy_type_v3_Int64Range_msginit},
{.submsg = &envoy_type_matcher_v3_RegexMatcher_msginit},
{.submsg = &envoy_type_matcher_v3_StringMatcher_msginit},
- {.submsg = &envoy_type_v3_Int64Range_msginit},
};
-static const upb_MiniTable_Field envoy_config_route_v3_HeaderMatcher__fields[10] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 24), UPB_SIZE(-21, -41), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(12, 24), UPB_SIZE(-21, -41), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(12, 24), UPB_SIZE(-21, -41), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {8, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {9, UPB_SIZE(12, 24), UPB_SIZE(-21, -41), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {10, UPB_SIZE(12, 24), UPB_SIZE(-21, -41), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {11, UPB_SIZE(12, 24), UPB_SIZE(-21, -41), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(12, 24), UPB_SIZE(-21, -41), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {13, UPB_SIZE(12, 24), UPB_SIZE(-21, -41), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_route_v3_HeaderMatcher__fields[11] = {
+ {1, UPB_SIZE(20, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_HeaderMatcher_msginit = {
&envoy_config_route_v3_HeaderMatcher_submsgs[0],
&envoy_config_route_v3_HeaderMatcher__fields[0],
- UPB_SIZE(24, 48), 10, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(32, 48), 11, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_QueryParameterMatcher_submsgs[1] = {
@@ -917,33 +981,33 @@ static const upb_MiniTable_Sub envoy_config_route_v3_QueryParameterMatcher_subms
};
static const upb_MiniTable_Field envoy_config_route_v3_QueryParameterMatcher__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_QueryParameterMatcher_msginit = {
&envoy_config_route_v3_QueryParameterMatcher_submsgs[0],
&envoy_config_route_v3_QueryParameterMatcher__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_InternalRedirectPolicy_submsgs[2] = {
- {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
};
static const upb_MiniTable_Field envoy_config_route_v3_InternalRedirectPolicy__fields[4] = {
- {1, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 13, kUpb_FieldMode_Array | upb_LabelFlags_IsPacked | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Array | kUpb_LabelFlags_IsPacked | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_InternalRedirectPolicy_msginit = {
&envoy_config_route_v3_InternalRedirectPolicy_submsgs[0],
&envoy_config_route_v3_InternalRedirectPolicy__fields[0],
- UPB_SIZE(16, 32), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(16, 32), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_FilterConfig_submsgs[1] = {
@@ -951,17 +1015,17 @@ static const upb_MiniTable_Sub envoy_config_route_v3_FilterConfig_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_route_v3_FilterConfig__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_FilterConfig_msginit = {
&envoy_config_route_v3_FilterConfig_submsgs[0],
&envoy_config_route_v3_FilterConfig__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable *messages_layout[53] = {
+static const upb_MiniTable *messages_layout[55] = {
&envoy_config_route_v3_VirtualHost_msginit,
&envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_msginit,
&envoy_config_route_v3_FilterAction_msginit,
@@ -970,6 +1034,7 @@ static const upb_MiniTable *messages_layout[53] = {
&envoy_config_route_v3_WeightedCluster_msginit,
&envoy_config_route_v3_WeightedCluster_ClusterWeight_msginit,
&envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_msginit,
+ &envoy_config_route_v3_ClusterSpecifierPlugin_msginit,
&envoy_config_route_v3_RouteMatch_msginit,
&envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions_msginit,
&envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_msginit,
@@ -1005,6 +1070,7 @@ static const upb_MiniTable *messages_layout[53] = {
&envoy_config_route_v3_RateLimit_Action_DestinationCluster_msginit,
&envoy_config_route_v3_RateLimit_Action_RequestHeaders_msginit,
&envoy_config_route_v3_RateLimit_Action_RemoteAddress_msginit,
+ &envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_msginit,
&envoy_config_route_v3_RateLimit_Action_GenericKey_msginit,
&envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_msginit,
&envoy_config_route_v3_RateLimit_Action_DynamicMetaData_msginit,
@@ -1021,7 +1087,7 @@ const upb_MiniTable_File envoy_config_route_v3_route_components_proto_upb_file_l
messages_layout,
NULL,
NULL,
- 53,
+ 55,
0,
0,
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h
index 53683830a1..29e860a87b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h
@@ -28,6 +28,7 @@ struct envoy_config_route_v3_Route_TypedPerFilterConfigEntry;
struct envoy_config_route_v3_WeightedCluster;
struct envoy_config_route_v3_WeightedCluster_ClusterWeight;
struct envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry;
+struct envoy_config_route_v3_ClusterSpecifierPlugin;
struct envoy_config_route_v3_RouteMatch;
struct envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions;
struct envoy_config_route_v3_RouteMatch_TlsContextMatchOptions;
@@ -63,6 +64,7 @@ struct envoy_config_route_v3_RateLimit_Action_SourceCluster;
struct envoy_config_route_v3_RateLimit_Action_DestinationCluster;
struct envoy_config_route_v3_RateLimit_Action_RequestHeaders;
struct envoy_config_route_v3_RateLimit_Action_RemoteAddress;
+struct envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress;
struct envoy_config_route_v3_RateLimit_Action_GenericKey;
struct envoy_config_route_v3_RateLimit_Action_HeaderValueMatch;
struct envoy_config_route_v3_RateLimit_Action_DynamicMetaData;
@@ -81,6 +83,7 @@ typedef struct envoy_config_route_v3_Route_TypedPerFilterConfigEntry envoy_confi
typedef struct envoy_config_route_v3_WeightedCluster envoy_config_route_v3_WeightedCluster;
typedef struct envoy_config_route_v3_WeightedCluster_ClusterWeight envoy_config_route_v3_WeightedCluster_ClusterWeight;
typedef struct envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry;
+typedef struct envoy_config_route_v3_ClusterSpecifierPlugin envoy_config_route_v3_ClusterSpecifierPlugin;
typedef struct envoy_config_route_v3_RouteMatch envoy_config_route_v3_RouteMatch;
typedef struct envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions;
typedef struct envoy_config_route_v3_RouteMatch_TlsContextMatchOptions envoy_config_route_v3_RouteMatch_TlsContextMatchOptions;
@@ -116,6 +119,7 @@ typedef struct envoy_config_route_v3_RateLimit_Action_SourceCluster envoy_config
typedef struct envoy_config_route_v3_RateLimit_Action_DestinationCluster envoy_config_route_v3_RateLimit_Action_DestinationCluster;
typedef struct envoy_config_route_v3_RateLimit_Action_RequestHeaders envoy_config_route_v3_RateLimit_Action_RequestHeaders;
typedef struct envoy_config_route_v3_RateLimit_Action_RemoteAddress envoy_config_route_v3_RateLimit_Action_RemoteAddress;
+typedef struct envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress;
typedef struct envoy_config_route_v3_RateLimit_Action_GenericKey envoy_config_route_v3_RateLimit_Action_GenericKey;
typedef struct envoy_config_route_v3_RateLimit_Action_HeaderValueMatch envoy_config_route_v3_RateLimit_Action_HeaderValueMatch;
typedef struct envoy_config_route_v3_RateLimit_Action_DynamicMetaData envoy_config_route_v3_RateLimit_Action_DynamicMetaData;
@@ -134,6 +138,7 @@ extern const upb_MiniTable envoy_config_route_v3_Route_TypedPerFilterConfigEntry
extern const upb_MiniTable envoy_config_route_v3_WeightedCluster_msginit;
extern const upb_MiniTable envoy_config_route_v3_WeightedCluster_ClusterWeight_msginit;
extern const upb_MiniTable envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_msginit;
+extern const upb_MiniTable envoy_config_route_v3_ClusterSpecifierPlugin_msginit;
extern const upb_MiniTable envoy_config_route_v3_RouteMatch_msginit;
extern const upb_MiniTable envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions_msginit;
extern const upb_MiniTable envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_msginit;
@@ -169,6 +174,7 @@ extern const upb_MiniTable envoy_config_route_v3_RateLimit_Action_SourceCluster_
extern const upb_MiniTable envoy_config_route_v3_RateLimit_Action_DestinationCluster_msginit;
extern const upb_MiniTable envoy_config_route_v3_RateLimit_Action_RequestHeaders_msginit;
extern const upb_MiniTable envoy_config_route_v3_RateLimit_Action_RemoteAddress_msginit;
+extern const upb_MiniTable envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_msginit;
extern const upb_MiniTable envoy_config_route_v3_RateLimit_Action_GenericKey_msginit;
extern const upb_MiniTable envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_msginit;
extern const upb_MiniTable envoy_config_route_v3_RateLimit_Action_DynamicMetaData_msginit;
@@ -238,7 +244,8 @@ typedef enum {
typedef enum {
envoy_config_route_v3_RouteAction_SERVICE_UNAVAILABLE = 0,
- envoy_config_route_v3_RouteAction_NOT_FOUND = 1
+ envoy_config_route_v3_RouteAction_NOT_FOUND = 1,
+ envoy_config_route_v3_RouteAction_INTERNAL_SERVER_ERROR = 2
} envoy_config_route_v3_RouteAction_ClusterNotFoundResponseCode;
typedef enum {
@@ -279,139 +286,250 @@ UPB_INLINE envoy_config_route_v3_VirtualHost* envoy_config_route_v3_VirtualHost_
return ret;
}
UPB_INLINE char* envoy_config_route_v3_VirtualHost_serialize(const envoy_config_route_v3_VirtualHost* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_VirtualHost_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_VirtualHost_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_VirtualHost_serialize_ex(const envoy_config_route_v3_VirtualHost* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_VirtualHost_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_VirtualHost_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_name(const envoy_config_route_v3_VirtualHost* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_VirtualHost_name(const envoy_config_route_v3_VirtualHost* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView);
}
-UPB_INLINE upb_StringView const* envoy_config_route_v3_VirtualHost_domains(const envoy_config_route_v3_VirtualHost *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(44, 80), len); }
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_routes(const envoy_config_route_v3_VirtualHost *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 88)); }
-UPB_INLINE const envoy_config_route_v3_Route* const* envoy_config_route_v3_VirtualHost_routes(const envoy_config_route_v3_VirtualHost *msg, size_t *len) { return (const envoy_config_route_v3_Route* const*)_upb_array_accessor(msg, UPB_SIZE(48, 88), len); }
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_domains(const envoy_config_route_v3_VirtualHost* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 32));
+}
+UPB_INLINE upb_StringView const* envoy_config_route_v3_VirtualHost_domains(const envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(20, 32), len);
+}
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_routes(const envoy_config_route_v3_VirtualHost* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 40));
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_routes(const envoy_config_route_v3_VirtualHost* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 40));
+}
+UPB_INLINE const envoy_config_route_v3_Route* const* envoy_config_route_v3_VirtualHost_routes(const envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (const envoy_config_route_v3_Route* const*)_upb_array_accessor(msg, UPB_SIZE(24, 40), len);
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_require_tls(const envoy_config_route_v3_VirtualHost* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_config_route_v3_VirtualHost_require_tls(const envoy_config_route_v3_VirtualHost* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_virtual_clusters(const envoy_config_route_v3_VirtualHost *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(52, 96)); }
-UPB_INLINE const envoy_config_route_v3_VirtualCluster* const* envoy_config_route_v3_VirtualHost_virtual_clusters(const envoy_config_route_v3_VirtualHost *msg, size_t *len) { return (const envoy_config_route_v3_VirtualCluster* const*)_upb_array_accessor(msg, UPB_SIZE(52, 96), len); }
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_rate_limits(const envoy_config_route_v3_VirtualHost *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(56, 104)); }
-UPB_INLINE const envoy_config_route_v3_RateLimit* const* envoy_config_route_v3_VirtualHost_rate_limits(const envoy_config_route_v3_VirtualHost *msg, size_t *len) { return (const envoy_config_route_v3_RateLimit* const*)_upb_array_accessor(msg, UPB_SIZE(56, 104), len); }
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_request_headers_to_add(const envoy_config_route_v3_VirtualHost *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(60, 112)); }
-UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_VirtualHost_request_headers_to_add(const envoy_config_route_v3_VirtualHost *msg, size_t *len) { return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(60, 112), len); }
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_cors(const envoy_config_route_v3_VirtualHost *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_virtual_clusters(const envoy_config_route_v3_VirtualHost* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 48));
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_virtual_clusters(const envoy_config_route_v3_VirtualHost* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 48));
+}
+UPB_INLINE const envoy_config_route_v3_VirtualCluster* const* envoy_config_route_v3_VirtualHost_virtual_clusters(const envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (const envoy_config_route_v3_VirtualCluster* const*)_upb_array_accessor(msg, UPB_SIZE(28, 48), len);
+}
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_rate_limits(const envoy_config_route_v3_VirtualHost* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 56));
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_rate_limits(const envoy_config_route_v3_VirtualHost* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 56));
+}
+UPB_INLINE const envoy_config_route_v3_RateLimit* const* envoy_config_route_v3_VirtualHost_rate_limits(const envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (const envoy_config_route_v3_RateLimit* const*)_upb_array_accessor(msg, UPB_SIZE(32, 56), len);
+}
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_request_headers_to_add(const envoy_config_route_v3_VirtualHost* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 64));
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_request_headers_to_add(const envoy_config_route_v3_VirtualHost* msg) {
+ _upb_array_detach(msg, UPB_SIZE(36, 64));
+}
+UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_VirtualHost_request_headers_to_add(const envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(36, 64), len);
+}
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_cors(const envoy_config_route_v3_VirtualHost* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_cors(const envoy_config_route_v3_VirtualHost* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_route_v3_CorsPolicy* envoy_config_route_v3_VirtualHost_cors(const envoy_config_route_v3_VirtualHost* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const envoy_config_route_v3_CorsPolicy*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const envoy_config_route_v3_CorsPolicy*);
+}
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_response_headers_to_add(const envoy_config_route_v3_VirtualHost* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 80));
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_response_headers_to_add(const envoy_config_route_v3_VirtualHost* msg) {
+ _upb_array_detach(msg, UPB_SIZE(44, 80));
+}
+UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_VirtualHost_response_headers_to_add(const envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(44, 80), len);
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_response_headers_to_remove(const envoy_config_route_v3_VirtualHost* msg) {
+ _upb_array_detach(msg, UPB_SIZE(48, 88));
+}
+UPB_INLINE upb_StringView const* envoy_config_route_v3_VirtualHost_response_headers_to_remove(const envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(48, 88), len);
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_request_headers_to_remove(const envoy_config_route_v3_VirtualHost* msg) {
+ _upb_array_detach(msg, UPB_SIZE(52, 96));
+}
+UPB_INLINE upb_StringView const* envoy_config_route_v3_VirtualHost_request_headers_to_remove(const envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(52, 96), len);
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_include_request_attempt_count(const envoy_config_route_v3_VirtualHost* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
}
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_response_headers_to_add(const envoy_config_route_v3_VirtualHost *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(64, 120)); }
-UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_VirtualHost_response_headers_to_add(const envoy_config_route_v3_VirtualHost *msg, size_t *len) { return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(64, 120), len); }
-UPB_INLINE upb_StringView const* envoy_config_route_v3_VirtualHost_response_headers_to_remove(const envoy_config_route_v3_VirtualHost *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(68, 128), len); }
-UPB_INLINE upb_StringView const* envoy_config_route_v3_VirtualHost_request_headers_to_remove(const envoy_config_route_v3_VirtualHost *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(72, 136), len); }
UPB_INLINE bool envoy_config_route_v3_VirtualHost_include_request_attempt_count(const envoy_config_route_v3_VirtualHost* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
}
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_typed_per_filter_config(const envoy_config_route_v3_VirtualHost *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(76, 144)); }
-UPB_INLINE size_t envoy_config_route_v3_VirtualHost_typed_per_filter_config_size(const envoy_config_route_v3_VirtualHost *msg) {return _upb_msg_map_size(msg, UPB_SIZE(76, 144)); }
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_typed_per_filter_config_get(const envoy_config_route_v3_VirtualHost *msg, upb_StringView key, struct google_protobuf_Any* *val) { return _upb_msg_map_get(msg, UPB_SIZE(76, 144), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry* envoy_config_route_v3_VirtualHost_typed_per_filter_config_next(const envoy_config_route_v3_VirtualHost *msg, size_t* iter) { return (const envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry*)_upb_msg_map_next(msg, UPB_SIZE(76, 144), iter); }
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_retry_policy(const envoy_config_route_v3_VirtualHost *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_typed_per_filter_config(const envoy_config_route_v3_VirtualHost* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(56, 104));
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_typed_per_filter_config(const envoy_config_route_v3_VirtualHost* msg) {
+ _upb_array_detach(msg, UPB_SIZE(56, 104));
+}
+UPB_INLINE size_t envoy_config_route_v3_VirtualHost_typed_per_filter_config_size(const envoy_config_route_v3_VirtualHost* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(56, 104));
+}
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_typed_per_filter_config_get(const envoy_config_route_v3_VirtualHost* msg, upb_StringView key, struct google_protobuf_Any** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(56, 104), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry* envoy_config_route_v3_VirtualHost_typed_per_filter_config_next(const envoy_config_route_v3_VirtualHost* msg, size_t* iter) {
+ return (const envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry*)_upb_msg_map_next(msg, UPB_SIZE(56, 104), iter);
+}
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_retry_policy(const envoy_config_route_v3_VirtualHost* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_retry_policy(const envoy_config_route_v3_VirtualHost* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 112), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_route_v3_RetryPolicy* envoy_config_route_v3_VirtualHost_retry_policy(const envoy_config_route_v3_VirtualHost* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const envoy_config_route_v3_RetryPolicy*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(60, 112), const envoy_config_route_v3_RetryPolicy*);
+}
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_hedge_policy(const envoy_config_route_v3_VirtualHost* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_hedge_policy(const envoy_config_route_v3_VirtualHost* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 120), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_hedge_policy(const envoy_config_route_v3_VirtualHost *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const envoy_config_route_v3_HedgePolicy* envoy_config_route_v3_VirtualHost_hedge_policy(const envoy_config_route_v3_VirtualHost* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const envoy_config_route_v3_HedgePolicy*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(64, 120), const envoy_config_route_v3_HedgePolicy*);
+}
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_per_request_buffer_limit_bytes(const envoy_config_route_v3_VirtualHost* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_per_request_buffer_limit_bytes(const envoy_config_route_v3_VirtualHost* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 128), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_per_request_buffer_limit_bytes(const envoy_config_route_v3_VirtualHost *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_route_v3_VirtualHost_per_request_buffer_limit_bytes(const envoy_config_route_v3_VirtualHost* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(68, 128), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_include_attempt_count_in_response(const envoy_config_route_v3_VirtualHost* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool) = 0;
}
UPB_INLINE bool envoy_config_route_v3_VirtualHost_include_attempt_count_in_response(const envoy_config_route_v3_VirtualHost* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool);
}
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_retry_policy_typed_config(const envoy_config_route_v3_VirtualHost *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_retry_policy_typed_config(const envoy_config_route_v3_VirtualHost* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_retry_policy_typed_config(const envoy_config_route_v3_VirtualHost* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 136), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_VirtualHost_retry_policy_typed_config(const envoy_config_route_v3_VirtualHost* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const struct google_protobuf_Any*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(72, 136), const struct google_protobuf_Any*);
+}
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_matcher(const envoy_config_route_v3_VirtualHost* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_matcher(const envoy_config_route_v3_VirtualHost* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 144), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_matcher(const envoy_config_route_v3_VirtualHost *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE const struct xds_type_matcher_v3_Matcher* envoy_config_route_v3_VirtualHost_matcher(const envoy_config_route_v3_VirtualHost* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const struct xds_type_matcher_v3_Matcher*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(76, 144), const struct xds_type_matcher_v3_Matcher*);
+}
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_has_request_mirror_policies(const envoy_config_route_v3_VirtualHost* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(80, 152));
+}
+UPB_INLINE void envoy_config_route_v3_VirtualHost_clear_request_mirror_policies(const envoy_config_route_v3_VirtualHost* msg) {
+ _upb_array_detach(msg, UPB_SIZE(80, 152));
+}
+UPB_INLINE const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* const* envoy_config_route_v3_VirtualHost_request_mirror_policies(const envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* const*)_upb_array_accessor(msg, UPB_SIZE(80, 152), len);
}
UPB_INLINE void envoy_config_route_v3_VirtualHost_set_name(envoy_config_route_v3_VirtualHost *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = value;
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_VirtualHost_mutable_domains(envoy_config_route_v3_VirtualHost *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 80), len);
+UPB_INLINE upb_StringView* envoy_config_route_v3_VirtualHost_mutable_domains(envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 32), len);
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_VirtualHost_resize_domains(envoy_config_route_v3_VirtualHost *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 80), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_config_route_v3_VirtualHost_resize_domains(envoy_config_route_v3_VirtualHost* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 32), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_add_domains(envoy_config_route_v3_VirtualHost *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(44, 80), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_add_domains(envoy_config_route_v3_VirtualHost* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 32), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE envoy_config_route_v3_Route** envoy_config_route_v3_VirtualHost_mutable_routes(envoy_config_route_v3_VirtualHost *msg, size_t *len) {
- return (envoy_config_route_v3_Route**)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 88), len);
+UPB_INLINE envoy_config_route_v3_Route** envoy_config_route_v3_VirtualHost_mutable_routes(envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (envoy_config_route_v3_Route**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 40), len);
}
-UPB_INLINE envoy_config_route_v3_Route** envoy_config_route_v3_VirtualHost_resize_routes(envoy_config_route_v3_VirtualHost *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_Route**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 88), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_Route** envoy_config_route_v3_VirtualHost_resize_routes(envoy_config_route_v3_VirtualHost* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_Route**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_Route* envoy_config_route_v3_VirtualHost_add_routes(envoy_config_route_v3_VirtualHost *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_Route* envoy_config_route_v3_VirtualHost_add_routes(envoy_config_route_v3_VirtualHost* msg, upb_Arena* arena) {
struct envoy_config_route_v3_Route* sub = (struct envoy_config_route_v3_Route*)_upb_Message_New(&envoy_config_route_v3_Route_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(48, 88), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_route_v3_VirtualHost_set_require_tls(envoy_config_route_v3_VirtualHost *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
-UPB_INLINE envoy_config_route_v3_VirtualCluster** envoy_config_route_v3_VirtualHost_mutable_virtual_clusters(envoy_config_route_v3_VirtualHost *msg, size_t *len) {
- return (envoy_config_route_v3_VirtualCluster**)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 96), len);
+UPB_INLINE envoy_config_route_v3_VirtualCluster** envoy_config_route_v3_VirtualHost_mutable_virtual_clusters(envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (envoy_config_route_v3_VirtualCluster**)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 48), len);
}
-UPB_INLINE envoy_config_route_v3_VirtualCluster** envoy_config_route_v3_VirtualHost_resize_virtual_clusters(envoy_config_route_v3_VirtualHost *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_VirtualCluster**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 96), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_VirtualCluster** envoy_config_route_v3_VirtualHost_resize_virtual_clusters(envoy_config_route_v3_VirtualHost* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_VirtualCluster**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 48), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_VirtualCluster* envoy_config_route_v3_VirtualHost_add_virtual_clusters(envoy_config_route_v3_VirtualHost *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_VirtualCluster* envoy_config_route_v3_VirtualHost_add_virtual_clusters(envoy_config_route_v3_VirtualHost* msg, upb_Arena* arena) {
struct envoy_config_route_v3_VirtualCluster* sub = (struct envoy_config_route_v3_VirtualCluster*)_upb_Message_New(&envoy_config_route_v3_VirtualCluster_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(52, 96), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 48), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE envoy_config_route_v3_RateLimit** envoy_config_route_v3_VirtualHost_mutable_rate_limits(envoy_config_route_v3_VirtualHost *msg, size_t *len) {
- return (envoy_config_route_v3_RateLimit**)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 104), len);
+UPB_INLINE envoy_config_route_v3_RateLimit** envoy_config_route_v3_VirtualHost_mutable_rate_limits(envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (envoy_config_route_v3_RateLimit**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 56), len);
}
-UPB_INLINE envoy_config_route_v3_RateLimit** envoy_config_route_v3_VirtualHost_resize_rate_limits(envoy_config_route_v3_VirtualHost *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_RateLimit**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 104), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_RateLimit** envoy_config_route_v3_VirtualHost_resize_rate_limits(envoy_config_route_v3_VirtualHost* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_RateLimit**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 56), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_RateLimit* envoy_config_route_v3_VirtualHost_add_rate_limits(envoy_config_route_v3_VirtualHost *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RateLimit* envoy_config_route_v3_VirtualHost_add_rate_limits(envoy_config_route_v3_VirtualHost* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RateLimit* sub = (struct envoy_config_route_v3_RateLimit*)_upb_Message_New(&envoy_config_route_v3_RateLimit_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(56, 104), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 56), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_VirtualHost_mutable_request_headers_to_add(envoy_config_route_v3_VirtualHost *msg, size_t *len) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(60, 112), len);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_VirtualHost_mutable_request_headers_to_add(envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 64), len);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_VirtualHost_resize_request_headers_to_add(envoy_config_route_v3_VirtualHost *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(60, 112), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_VirtualHost_resize_request_headers_to_add(envoy_config_route_v3_VirtualHost* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 64), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_VirtualHost_add_request_headers_to_add(envoy_config_route_v3_VirtualHost *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_VirtualHost_add_request_headers_to_add(envoy_config_route_v3_VirtualHost* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HeaderValueOption* sub = (struct envoy_config_core_v3_HeaderValueOption*)_upb_Message_New(&envoy_config_core_v3_HeaderValueOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(60, 112), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 64), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_route_v3_VirtualHost_set_cors(envoy_config_route_v3_VirtualHost *msg, envoy_config_route_v3_CorsPolicy* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 32), envoy_config_route_v3_CorsPolicy*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), envoy_config_route_v3_CorsPolicy*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_CorsPolicy* envoy_config_route_v3_VirtualHost_mutable_cors(envoy_config_route_v3_VirtualHost *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_CorsPolicy* envoy_config_route_v3_VirtualHost_mutable_cors(envoy_config_route_v3_VirtualHost* msg, upb_Arena* arena) {
struct envoy_config_route_v3_CorsPolicy* sub = (struct envoy_config_route_v3_CorsPolicy*)envoy_config_route_v3_VirtualHost_cors(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_CorsPolicy*)_upb_Message_New(&envoy_config_route_v3_CorsPolicy_msginit, arena);
@@ -420,51 +538,54 @@ UPB_INLINE struct envoy_config_route_v3_CorsPolicy* envoy_config_route_v3_Virtua
}
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_VirtualHost_mutable_response_headers_to_add(envoy_config_route_v3_VirtualHost *msg, size_t *len) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(64, 120), len);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_VirtualHost_mutable_response_headers_to_add(envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 80), len);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_VirtualHost_resize_response_headers_to_add(envoy_config_route_v3_VirtualHost *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(64, 120), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_VirtualHost_resize_response_headers_to_add(envoy_config_route_v3_VirtualHost* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 80), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_VirtualHost_add_response_headers_to_add(envoy_config_route_v3_VirtualHost *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_VirtualHost_add_response_headers_to_add(envoy_config_route_v3_VirtualHost* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HeaderValueOption* sub = (struct envoy_config_core_v3_HeaderValueOption*)_upb_Message_New(&envoy_config_core_v3_HeaderValueOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(64, 120), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(44, 80), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_VirtualHost_mutable_response_headers_to_remove(envoy_config_route_v3_VirtualHost *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(68, 128), len);
+UPB_INLINE upb_StringView* envoy_config_route_v3_VirtualHost_mutable_response_headers_to_remove(envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 88), len);
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_VirtualHost_resize_response_headers_to_remove(envoy_config_route_v3_VirtualHost *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(68, 128), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_config_route_v3_VirtualHost_resize_response_headers_to_remove(envoy_config_route_v3_VirtualHost* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 88), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_add_response_headers_to_remove(envoy_config_route_v3_VirtualHost *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(68, 128), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_add_response_headers_to_remove(envoy_config_route_v3_VirtualHost* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(48, 88), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_VirtualHost_mutable_request_headers_to_remove(envoy_config_route_v3_VirtualHost *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(72, 136), len);
+UPB_INLINE upb_StringView* envoy_config_route_v3_VirtualHost_mutable_request_headers_to_remove(envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 96), len);
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_VirtualHost_resize_request_headers_to_remove(envoy_config_route_v3_VirtualHost *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(72, 136), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_config_route_v3_VirtualHost_resize_request_headers_to_remove(envoy_config_route_v3_VirtualHost* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 96), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_add_request_headers_to_remove(envoy_config_route_v3_VirtualHost *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(72, 136), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_add_request_headers_to_remove(envoy_config_route_v3_VirtualHost* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(52, 96), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_config_route_v3_VirtualHost_set_include_request_attempt_count(envoy_config_route_v3_VirtualHost *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
}
-UPB_INLINE void envoy_config_route_v3_VirtualHost_typed_per_filter_config_clear(envoy_config_route_v3_VirtualHost *msg) { _upb_msg_map_clear(msg, UPB_SIZE(76, 144)); }
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_typed_per_filter_config_set(envoy_config_route_v3_VirtualHost *msg, upb_StringView key, struct google_protobuf_Any* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(76, 144), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_typed_per_filter_config_delete(envoy_config_route_v3_VirtualHost *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(76, 144), &key, 0); }
-UPB_INLINE envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry* envoy_config_route_v3_VirtualHost_typed_per_filter_config_nextmutable(envoy_config_route_v3_VirtualHost *msg, size_t* iter) { return (envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry*)_upb_msg_map_next(msg, UPB_SIZE(76, 144), iter); }
+UPB_INLINE void envoy_config_route_v3_VirtualHost_typed_per_filter_config_clear(envoy_config_route_v3_VirtualHost* msg) { _upb_msg_map_clear(msg, UPB_SIZE(56, 104)); }
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_typed_per_filter_config_set(envoy_config_route_v3_VirtualHost* msg, upb_StringView key, struct google_protobuf_Any* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(56, 104), &key, 0, &val, sizeof(val), a);
+}
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_typed_per_filter_config_delete(envoy_config_route_v3_VirtualHost* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(56, 104), &key, 0);
+}
+UPB_INLINE envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry* envoy_config_route_v3_VirtualHost_typed_per_filter_config_nextmutable(envoy_config_route_v3_VirtualHost* msg, size_t* iter) {
+ return (envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry*)_upb_msg_map_next(msg, UPB_SIZE(56, 104), iter);
+}
UPB_INLINE void envoy_config_route_v3_VirtualHost_set_retry_policy(envoy_config_route_v3_VirtualHost *msg, envoy_config_route_v3_RetryPolicy* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), envoy_config_route_v3_RetryPolicy*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 112), envoy_config_route_v3_RetryPolicy*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_RetryPolicy* envoy_config_route_v3_VirtualHost_mutable_retry_policy(envoy_config_route_v3_VirtualHost *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RetryPolicy* envoy_config_route_v3_VirtualHost_mutable_retry_policy(envoy_config_route_v3_VirtualHost* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RetryPolicy* sub = (struct envoy_config_route_v3_RetryPolicy*)envoy_config_route_v3_VirtualHost_retry_policy(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RetryPolicy*)_upb_Message_New(&envoy_config_route_v3_RetryPolicy_msginit, arena);
@@ -475,9 +596,9 @@ UPB_INLINE struct envoy_config_route_v3_RetryPolicy* envoy_config_route_v3_Virtu
}
UPB_INLINE void envoy_config_route_v3_VirtualHost_set_hedge_policy(envoy_config_route_v3_VirtualHost *msg, envoy_config_route_v3_HedgePolicy* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 48), envoy_config_route_v3_HedgePolicy*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 120), envoy_config_route_v3_HedgePolicy*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_HedgePolicy* envoy_config_route_v3_VirtualHost_mutable_hedge_policy(envoy_config_route_v3_VirtualHost *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HedgePolicy* envoy_config_route_v3_VirtualHost_mutable_hedge_policy(envoy_config_route_v3_VirtualHost* msg, upb_Arena* arena) {
struct envoy_config_route_v3_HedgePolicy* sub = (struct envoy_config_route_v3_HedgePolicy*)envoy_config_route_v3_VirtualHost_hedge_policy(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_HedgePolicy*)_upb_Message_New(&envoy_config_route_v3_HedgePolicy_msginit, arena);
@@ -488,9 +609,9 @@ UPB_INLINE struct envoy_config_route_v3_HedgePolicy* envoy_config_route_v3_Virtu
}
UPB_INLINE void envoy_config_route_v3_VirtualHost_set_per_request_buffer_limit_bytes(envoy_config_route_v3_VirtualHost *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 56), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 128), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_VirtualHost_mutable_per_request_buffer_limit_bytes(envoy_config_route_v3_VirtualHost *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_VirtualHost_mutable_per_request_buffer_limit_bytes(envoy_config_route_v3_VirtualHost* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_route_v3_VirtualHost_per_request_buffer_limit_bytes(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -504,9 +625,9 @@ UPB_INLINE void envoy_config_route_v3_VirtualHost_set_include_attempt_count_in_r
}
UPB_INLINE void envoy_config_route_v3_VirtualHost_set_retry_policy_typed_config(envoy_config_route_v3_VirtualHost *msg, struct google_protobuf_Any* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(36, 64), struct google_protobuf_Any*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 136), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_VirtualHost_mutable_retry_policy_typed_config(envoy_config_route_v3_VirtualHost *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_VirtualHost_mutable_retry_policy_typed_config(envoy_config_route_v3_VirtualHost* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_route_v3_VirtualHost_retry_policy_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -517,9 +638,9 @@ UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_VirtualHost_mutable
}
UPB_INLINE void envoy_config_route_v3_VirtualHost_set_matcher(envoy_config_route_v3_VirtualHost *msg, struct xds_type_matcher_v3_Matcher* value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 72), struct xds_type_matcher_v3_Matcher*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 144), struct xds_type_matcher_v3_Matcher*) = value;
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher* envoy_config_route_v3_VirtualHost_mutable_matcher(envoy_config_route_v3_VirtualHost *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher* envoy_config_route_v3_VirtualHost_mutable_matcher(envoy_config_route_v3_VirtualHost* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher* sub = (struct xds_type_matcher_v3_Matcher*)envoy_config_route_v3_VirtualHost_matcher(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_Matcher*)_upb_Message_New(&xds_type_matcher_v3_Matcher_msginit, arena);
@@ -528,16 +649,30 @@ UPB_INLINE struct xds_type_matcher_v3_Matcher* envoy_config_route_v3_VirtualHost
}
return sub;
}
+UPB_INLINE envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_config_route_v3_VirtualHost_mutable_request_mirror_policies(envoy_config_route_v3_VirtualHost* msg, size_t* len) {
+ return (envoy_config_route_v3_RouteAction_RequestMirrorPolicy**)_upb_array_mutable_accessor(msg, UPB_SIZE(80, 152), len);
+}
+UPB_INLINE envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_config_route_v3_VirtualHost_resize_request_mirror_policies(envoy_config_route_v3_VirtualHost* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_RouteAction_RequestMirrorPolicy**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(80, 152), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* envoy_config_route_v3_VirtualHost_add_request_mirror_policies(envoy_config_route_v3_VirtualHost* msg, upb_Arena* arena) {
+ struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* sub = (struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy*)_upb_Message_New(&envoy_config_route_v3_RouteAction_RequestMirrorPolicy_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(80, 152), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
/* envoy.config.route.v3.VirtualHost.TypedPerFilterConfigEntry */
-UPB_INLINE upb_StringView envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_key(const envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry *msg) {
+UPB_INLINE upb_StringView envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_key(const envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE bool envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_has_value(const envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_value(const envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry *msg) {
+UPB_INLINE bool envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_has_value(const envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_value(const envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry* msg) {
struct google_protobuf_Any* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -572,13 +707,22 @@ UPB_INLINE envoy_config_route_v3_FilterAction* envoy_config_route_v3_FilterActio
return ret;
}
UPB_INLINE char* envoy_config_route_v3_FilterAction_serialize(const envoy_config_route_v3_FilterAction* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_FilterAction_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_FilterAction_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_FilterAction_serialize_ex(const envoy_config_route_v3_FilterAction* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_FilterAction_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_FilterAction_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_FilterAction_has_action(const envoy_config_route_v3_FilterAction* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_FilterAction_clear_action(const envoy_config_route_v3_FilterAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_FilterAction_has_action(const envoy_config_route_v3_FilterAction *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_FilterAction_action(const envoy_config_route_v3_FilterAction* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Any*);
}
@@ -587,7 +731,7 @@ UPB_INLINE void envoy_config_route_v3_FilterAction_set_action(envoy_config_route
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_FilterAction_mutable_action(envoy_config_route_v3_FilterAction *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_FilterAction_mutable_action(envoy_config_route_v3_FilterAction* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_route_v3_FilterAction_action(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -622,11 +766,15 @@ UPB_INLINE envoy_config_route_v3_Route* envoy_config_route_v3_Route_parse_ex(con
return ret;
}
UPB_INLINE char* envoy_config_route_v3_Route_serialize(const envoy_config_route_v3_Route* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_Route_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_Route_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_Route_serialize_ex(const envoy_config_route_v3_Route* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_Route_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_Route_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_route_v3_Route_action_route = 2,
@@ -636,57 +784,162 @@ typedef enum {
envoy_config_route_v3_Route_action_non_forwarding_action = 18,
envoy_config_route_v3_Route_action_NOT_SET = 0
} envoy_config_route_v3_Route_action_oneofcases;
-UPB_INLINE envoy_config_route_v3_Route_action_oneofcases envoy_config_route_v3_Route_action_case(const envoy_config_route_v3_Route* msg) { return (envoy_config_route_v3_Route_action_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(56, 112), int32_t); }
-
-UPB_INLINE bool envoy_config_route_v3_Route_has_match(const envoy_config_route_v3_Route *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_config_route_v3_Route_action_oneofcases envoy_config_route_v3_Route_action_case(const envoy_config_route_v3_Route* msg) {
+ return (envoy_config_route_v3_Route_action_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_config_route_v3_Route_has_match(const envoy_config_route_v3_Route* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_match(const envoy_config_route_v3_Route* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_route_v3_RouteMatch* envoy_config_route_v3_Route_match(const envoy_config_route_v3_Route* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_config_route_v3_RouteMatch*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const envoy_config_route_v3_RouteMatch*);
+}
+UPB_INLINE bool envoy_config_route_v3_Route_has_route(const envoy_config_route_v3_Route* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_route(const envoy_config_route_v3_Route* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction*, UPB_SIZE(64, 120), 0, UPB_SIZE(4, 4), envoy_config_route_v3_Route_action_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RouteAction* envoy_config_route_v3_Route_route(const envoy_config_route_v3_Route* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RouteAction*, UPB_SIZE(64, 120), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_Route_has_redirect(const envoy_config_route_v3_Route* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_redirect(const envoy_config_route_v3_Route* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RedirectAction*, UPB_SIZE(64, 120), 0, UPB_SIZE(4, 4), envoy_config_route_v3_Route_action_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RedirectAction* envoy_config_route_v3_Route_redirect(const envoy_config_route_v3_Route* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RedirectAction*, UPB_SIZE(64, 120), UPB_SIZE(4, 4), 3, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_Route_has_metadata(const envoy_config_route_v3_Route* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_metadata(const envoy_config_route_v3_Route* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_Route_has_route(const envoy_config_route_v3_Route *msg) { return _upb_getoneofcase(msg, UPB_SIZE(56, 112)) == 2; }
-UPB_INLINE const envoy_config_route_v3_RouteAction* envoy_config_route_v3_Route_route(const envoy_config_route_v3_Route *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RouteAction*, UPB_SIZE(52, 104), UPB_SIZE(56, 112), 2, NULL); }
-UPB_INLINE bool envoy_config_route_v3_Route_has_redirect(const envoy_config_route_v3_Route *msg) { return _upb_getoneofcase(msg, UPB_SIZE(56, 112)) == 3; }
-UPB_INLINE const envoy_config_route_v3_RedirectAction* envoy_config_route_v3_Route_redirect(const envoy_config_route_v3_Route *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RedirectAction*, UPB_SIZE(52, 104), UPB_SIZE(56, 112), 3, NULL); }
-UPB_INLINE bool envoy_config_route_v3_Route_has_metadata(const envoy_config_route_v3_Route *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct envoy_config_core_v3_Metadata* envoy_config_route_v3_Route_metadata(const envoy_config_route_v3_Route* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_config_core_v3_Metadata*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct envoy_config_core_v3_Metadata*);
+}
+UPB_INLINE bool envoy_config_route_v3_Route_has_decorator(const envoy_config_route_v3_Route* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_decorator(const envoy_config_route_v3_Route* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_Route_has_decorator(const envoy_config_route_v3_Route *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const envoy_config_route_v3_Decorator* envoy_config_route_v3_Route_decorator(const envoy_config_route_v3_Route* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const envoy_config_route_v3_Decorator*);
-}
-UPB_INLINE bool envoy_config_route_v3_Route_has_direct_response(const envoy_config_route_v3_Route *msg) { return _upb_getoneofcase(msg, UPB_SIZE(56, 112)) == 7; }
-UPB_INLINE const envoy_config_route_v3_DirectResponseAction* envoy_config_route_v3_Route_direct_response(const envoy_config_route_v3_Route *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_DirectResponseAction*, UPB_SIZE(52, 104), UPB_SIZE(56, 112), 7, NULL); }
-UPB_INLINE bool envoy_config_route_v3_Route_has_request_headers_to_add(const envoy_config_route_v3_Route *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 64)); }
-UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_Route_request_headers_to_add(const envoy_config_route_v3_Route *msg, size_t *len) { return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len); }
-UPB_INLINE bool envoy_config_route_v3_Route_has_response_headers_to_add(const envoy_config_route_v3_Route *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 72)); }
-UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_Route_response_headers_to_add(const envoy_config_route_v3_Route *msg, size_t *len) { return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(36, 72), len); }
-UPB_INLINE upb_StringView const* envoy_config_route_v3_Route_response_headers_to_remove(const envoy_config_route_v3_Route *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(40, 80), len); }
-UPB_INLINE upb_StringView const* envoy_config_route_v3_Route_request_headers_to_remove(const envoy_config_route_v3_Route *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(44, 88), len); }
-UPB_INLINE bool envoy_config_route_v3_Route_has_typed_per_filter_config(const envoy_config_route_v3_Route *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 96)); }
-UPB_INLINE size_t envoy_config_route_v3_Route_typed_per_filter_config_size(const envoy_config_route_v3_Route *msg) {return _upb_msg_map_size(msg, UPB_SIZE(48, 96)); }
-UPB_INLINE bool envoy_config_route_v3_Route_typed_per_filter_config_get(const envoy_config_route_v3_Route *msg, upb_StringView key, struct google_protobuf_Any* *val) { return _upb_msg_map_get(msg, UPB_SIZE(48, 96), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const envoy_config_route_v3_Route_TypedPerFilterConfigEntry* envoy_config_route_v3_Route_typed_per_filter_config_next(const envoy_config_route_v3_Route *msg, size_t* iter) { return (const envoy_config_route_v3_Route_TypedPerFilterConfigEntry*)_upb_msg_map_next(msg, UPB_SIZE(48, 96), iter); }
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const envoy_config_route_v3_Decorator*);
+}
+UPB_INLINE bool envoy_config_route_v3_Route_has_direct_response(const envoy_config_route_v3_Route* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 7;
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_direct_response(const envoy_config_route_v3_Route* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_DirectResponseAction*, UPB_SIZE(64, 120), 0, UPB_SIZE(4, 4), envoy_config_route_v3_Route_action_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_DirectResponseAction* envoy_config_route_v3_Route_direct_response(const envoy_config_route_v3_Route* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_DirectResponseAction*, UPB_SIZE(64, 120), UPB_SIZE(4, 4), 7, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_Route_has_request_headers_to_add(const envoy_config_route_v3_Route* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 32));
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_request_headers_to_add(const envoy_config_route_v3_Route* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 32));
+}
+UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_Route_request_headers_to_add(const envoy_config_route_v3_Route* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(20, 32), len);
+}
+UPB_INLINE bool envoy_config_route_v3_Route_has_response_headers_to_add(const envoy_config_route_v3_Route* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 40));
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_response_headers_to_add(const envoy_config_route_v3_Route* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 40));
+}
+UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_Route_response_headers_to_add(const envoy_config_route_v3_Route* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(24, 40), len);
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_response_headers_to_remove(const envoy_config_route_v3_Route* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 48));
+}
+UPB_INLINE upb_StringView const* envoy_config_route_v3_Route_response_headers_to_remove(const envoy_config_route_v3_Route* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(28, 48), len);
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_request_headers_to_remove(const envoy_config_route_v3_Route* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 56));
+}
+UPB_INLINE upb_StringView const* envoy_config_route_v3_Route_request_headers_to_remove(const envoy_config_route_v3_Route* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(32, 56), len);
+}
+UPB_INLINE bool envoy_config_route_v3_Route_has_typed_per_filter_config(const envoy_config_route_v3_Route* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 64));
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_typed_per_filter_config(const envoy_config_route_v3_Route* msg) {
+ _upb_array_detach(msg, UPB_SIZE(36, 64));
+}
+UPB_INLINE size_t envoy_config_route_v3_Route_typed_per_filter_config_size(const envoy_config_route_v3_Route* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(36, 64));
+}
+UPB_INLINE bool envoy_config_route_v3_Route_typed_per_filter_config_get(const envoy_config_route_v3_Route* msg, upb_StringView key, struct google_protobuf_Any** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(36, 64), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const envoy_config_route_v3_Route_TypedPerFilterConfigEntry* envoy_config_route_v3_Route_typed_per_filter_config_next(const envoy_config_route_v3_Route* msg, size_t* iter) {
+ return (const envoy_config_route_v3_Route_TypedPerFilterConfigEntry*)_upb_msg_map_next(msg, UPB_SIZE(36, 64), iter);
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_name(const envoy_config_route_v3_Route* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_route_v3_Route_name(const envoy_config_route_v3_Route* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), upb_StringView);
+}
+UPB_INLINE bool envoy_config_route_v3_Route_has_tracing(const envoy_config_route_v3_Route* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_tracing(const envoy_config_route_v3_Route* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 88), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_Route_has_tracing(const envoy_config_route_v3_Route *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const envoy_config_route_v3_Tracing* envoy_config_route_v3_Route_tracing(const envoy_config_route_v3_Route* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const envoy_config_route_v3_Tracing*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 88), const envoy_config_route_v3_Tracing*);
+}
+UPB_INLINE bool envoy_config_route_v3_Route_has_per_request_buffer_limit_bytes(const envoy_config_route_v3_Route* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_per_request_buffer_limit_bytes(const envoy_config_route_v3_Route* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 96), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_Route_has_per_request_buffer_limit_bytes(const envoy_config_route_v3_Route *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_route_v3_Route_per_request_buffer_limit_bytes(const envoy_config_route_v3_Route* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(52, 96), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_route_v3_Route_has_filter_action(const envoy_config_route_v3_Route* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 17;
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_filter_action(const envoy_config_route_v3_Route* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_FilterAction*, UPB_SIZE(64, 120), 0, UPB_SIZE(4, 4), envoy_config_route_v3_Route_action_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_FilterAction* envoy_config_route_v3_Route_filter_action(const envoy_config_route_v3_Route* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_FilterAction*, UPB_SIZE(64, 120), UPB_SIZE(4, 4), 17, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_Route_has_non_forwarding_action(const envoy_config_route_v3_Route* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 18;
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_non_forwarding_action(const envoy_config_route_v3_Route* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_NonForwardingAction*, UPB_SIZE(64, 120), 0, UPB_SIZE(4, 4), envoy_config_route_v3_Route_action_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_NonForwardingAction* envoy_config_route_v3_Route_non_forwarding_action(const envoy_config_route_v3_Route* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_NonForwardingAction*, UPB_SIZE(64, 120), UPB_SIZE(4, 4), 18, NULL);
+}
+UPB_INLINE void envoy_config_route_v3_Route_clear_stat_prefix(const envoy_config_route_v3_Route* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 104), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_Route_stat_prefix(const envoy_config_route_v3_Route* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(56, 104), upb_StringView);
}
-UPB_INLINE bool envoy_config_route_v3_Route_has_filter_action(const envoy_config_route_v3_Route *msg) { return _upb_getoneofcase(msg, UPB_SIZE(56, 112)) == 17; }
-UPB_INLINE const envoy_config_route_v3_FilterAction* envoy_config_route_v3_Route_filter_action(const envoy_config_route_v3_Route *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_FilterAction*, UPB_SIZE(52, 104), UPB_SIZE(56, 112), 17, NULL); }
-UPB_INLINE bool envoy_config_route_v3_Route_has_non_forwarding_action(const envoy_config_route_v3_Route *msg) { return _upb_getoneofcase(msg, UPB_SIZE(56, 112)) == 18; }
-UPB_INLINE const envoy_config_route_v3_NonForwardingAction* envoy_config_route_v3_Route_non_forwarding_action(const envoy_config_route_v3_Route *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_NonForwardingAction*, UPB_SIZE(52, 104), UPB_SIZE(56, 112), 18, NULL); }
UPB_INLINE void envoy_config_route_v3_Route_set_match(envoy_config_route_v3_Route *msg, envoy_config_route_v3_RouteMatch* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_config_route_v3_RouteMatch*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), envoy_config_route_v3_RouteMatch*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_RouteMatch* envoy_config_route_v3_Route_mutable_match(envoy_config_route_v3_Route *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteMatch* envoy_config_route_v3_Route_mutable_match(envoy_config_route_v3_Route* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteMatch* sub = (struct envoy_config_route_v3_RouteMatch*)envoy_config_route_v3_Route_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RouteMatch*)_upb_Message_New(&envoy_config_route_v3_RouteMatch_msginit, arena);
@@ -696,9 +949,9 @@ UPB_INLINE struct envoy_config_route_v3_RouteMatch* envoy_config_route_v3_Route_
return sub;
}
UPB_INLINE void envoy_config_route_v3_Route_set_route(envoy_config_route_v3_Route *msg, envoy_config_route_v3_RouteAction* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction*, UPB_SIZE(52, 104), value, UPB_SIZE(56, 112), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction*, UPB_SIZE(64, 120), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct envoy_config_route_v3_RouteAction* envoy_config_route_v3_Route_mutable_route(envoy_config_route_v3_Route *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteAction* envoy_config_route_v3_Route_mutable_route(envoy_config_route_v3_Route* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteAction* sub = (struct envoy_config_route_v3_RouteAction*)envoy_config_route_v3_Route_route(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RouteAction*)_upb_Message_New(&envoy_config_route_v3_RouteAction_msginit, arena);
@@ -708,9 +961,9 @@ UPB_INLINE struct envoy_config_route_v3_RouteAction* envoy_config_route_v3_Route
return sub;
}
UPB_INLINE void envoy_config_route_v3_Route_set_redirect(envoy_config_route_v3_Route *msg, envoy_config_route_v3_RedirectAction* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RedirectAction*, UPB_SIZE(52, 104), value, UPB_SIZE(56, 112), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RedirectAction*, UPB_SIZE(64, 120), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct envoy_config_route_v3_RedirectAction* envoy_config_route_v3_Route_mutable_redirect(envoy_config_route_v3_Route *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RedirectAction* envoy_config_route_v3_Route_mutable_redirect(envoy_config_route_v3_Route* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RedirectAction* sub = (struct envoy_config_route_v3_RedirectAction*)envoy_config_route_v3_Route_redirect(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RedirectAction*)_upb_Message_New(&envoy_config_route_v3_RedirectAction_msginit, arena);
@@ -721,9 +974,9 @@ UPB_INLINE struct envoy_config_route_v3_RedirectAction* envoy_config_route_v3_Ro
}
UPB_INLINE void envoy_config_route_v3_Route_set_metadata(envoy_config_route_v3_Route *msg, struct envoy_config_core_v3_Metadata* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_config_core_v3_Metadata*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct envoy_config_core_v3_Metadata*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_route_v3_Route_mutable_metadata(envoy_config_route_v3_Route *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_route_v3_Route_mutable_metadata(envoy_config_route_v3_Route* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Metadata* sub = (struct envoy_config_core_v3_Metadata*)envoy_config_route_v3_Route_metadata(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Metadata*)_upb_Message_New(&envoy_config_core_v3_Metadata_msginit, arena);
@@ -734,9 +987,9 @@ UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_route_v3_Route_mut
}
UPB_INLINE void envoy_config_route_v3_Route_set_decorator(envoy_config_route_v3_Route *msg, envoy_config_route_v3_Decorator* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), envoy_config_route_v3_Decorator*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), envoy_config_route_v3_Decorator*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_Decorator* envoy_config_route_v3_Route_mutable_decorator(envoy_config_route_v3_Route *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_Decorator* envoy_config_route_v3_Route_mutable_decorator(envoy_config_route_v3_Route* msg, upb_Arena* arena) {
struct envoy_config_route_v3_Decorator* sub = (struct envoy_config_route_v3_Decorator*)envoy_config_route_v3_Route_decorator(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_Decorator*)_upb_Message_New(&envoy_config_route_v3_Decorator_msginit, arena);
@@ -746,9 +999,9 @@ UPB_INLINE struct envoy_config_route_v3_Decorator* envoy_config_route_v3_Route_m
return sub;
}
UPB_INLINE void envoy_config_route_v3_Route_set_direct_response(envoy_config_route_v3_Route *msg, envoy_config_route_v3_DirectResponseAction* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_DirectResponseAction*, UPB_SIZE(52, 104), value, UPB_SIZE(56, 112), 7);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_DirectResponseAction*, UPB_SIZE(64, 120), value, UPB_SIZE(4, 4), 7);
}
-UPB_INLINE struct envoy_config_route_v3_DirectResponseAction* envoy_config_route_v3_Route_mutable_direct_response(envoy_config_route_v3_Route *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_DirectResponseAction* envoy_config_route_v3_Route_mutable_direct_response(envoy_config_route_v3_Route* msg, upb_Arena* arena) {
struct envoy_config_route_v3_DirectResponseAction* sub = (struct envoy_config_route_v3_DirectResponseAction*)envoy_config_route_v3_Route_direct_response(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_DirectResponseAction*)_upb_Message_New(&envoy_config_route_v3_DirectResponseAction_msginit, arena);
@@ -757,64 +1010,66 @@ UPB_INLINE struct envoy_config_route_v3_DirectResponseAction* envoy_config_route
}
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_Route_mutable_request_headers_to_add(envoy_config_route_v3_Route *msg, size_t *len) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_Route_mutable_request_headers_to_add(envoy_config_route_v3_Route* msg, size_t* len) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 32), len);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_Route_resize_request_headers_to_add(envoy_config_route_v3_Route *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_Route_resize_request_headers_to_add(envoy_config_route_v3_Route* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 32), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_Route_add_request_headers_to_add(envoy_config_route_v3_Route *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_Route_add_request_headers_to_add(envoy_config_route_v3_Route* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HeaderValueOption* sub = (struct envoy_config_core_v3_HeaderValueOption*)_upb_Message_New(&envoy_config_core_v3_HeaderValueOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(32, 64), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 32), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_Route_mutable_response_headers_to_add(envoy_config_route_v3_Route *msg, size_t *len) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 72), len);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_Route_mutable_response_headers_to_add(envoy_config_route_v3_Route* msg, size_t* len) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 40), len);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_Route_resize_response_headers_to_add(envoy_config_route_v3_Route *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 72), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_Route_resize_response_headers_to_add(envoy_config_route_v3_Route* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_Route_add_response_headers_to_add(envoy_config_route_v3_Route *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_Route_add_response_headers_to_add(envoy_config_route_v3_Route* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HeaderValueOption* sub = (struct envoy_config_core_v3_HeaderValueOption*)_upb_Message_New(&envoy_config_core_v3_HeaderValueOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(36, 72), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_Route_mutable_response_headers_to_remove(envoy_config_route_v3_Route *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 80), len);
+UPB_INLINE upb_StringView* envoy_config_route_v3_Route_mutable_response_headers_to_remove(envoy_config_route_v3_Route* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 48), len);
+}
+UPB_INLINE upb_StringView* envoy_config_route_v3_Route_resize_response_headers_to_remove(envoy_config_route_v3_Route* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 48), len, UPB_SIZE(3, 4), arena);
+}
+UPB_INLINE bool envoy_config_route_v3_Route_add_response_headers_to_remove(envoy_config_route_v3_Route* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 48), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_Route_resize_response_headers_to_remove(envoy_config_route_v3_Route *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 80), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_config_route_v3_Route_mutable_request_headers_to_remove(envoy_config_route_v3_Route* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 56), len);
}
-UPB_INLINE bool envoy_config_route_v3_Route_add_response_headers_to_remove(envoy_config_route_v3_Route *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 80), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE upb_StringView* envoy_config_route_v3_Route_resize_request_headers_to_remove(envoy_config_route_v3_Route* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 56), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_Route_mutable_request_headers_to_remove(envoy_config_route_v3_Route *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 88), len);
+UPB_INLINE bool envoy_config_route_v3_Route_add_request_headers_to_remove(envoy_config_route_v3_Route* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 56), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_Route_resize_request_headers_to_remove(envoy_config_route_v3_Route *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 88), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE void envoy_config_route_v3_Route_typed_per_filter_config_clear(envoy_config_route_v3_Route* msg) { _upb_msg_map_clear(msg, UPB_SIZE(36, 64)); }
+UPB_INLINE bool envoy_config_route_v3_Route_typed_per_filter_config_set(envoy_config_route_v3_Route* msg, upb_StringView key, struct google_protobuf_Any* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(36, 64), &key, 0, &val, sizeof(val), a);
}
-UPB_INLINE bool envoy_config_route_v3_Route_add_request_headers_to_remove(envoy_config_route_v3_Route *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(44, 88), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_route_v3_Route_typed_per_filter_config_delete(envoy_config_route_v3_Route* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(36, 64), &key, 0);
+}
+UPB_INLINE envoy_config_route_v3_Route_TypedPerFilterConfigEntry* envoy_config_route_v3_Route_typed_per_filter_config_nextmutable(envoy_config_route_v3_Route* msg, size_t* iter) {
+ return (envoy_config_route_v3_Route_TypedPerFilterConfigEntry*)_upb_msg_map_next(msg, UPB_SIZE(36, 64), iter);
}
-UPB_INLINE void envoy_config_route_v3_Route_typed_per_filter_config_clear(envoy_config_route_v3_Route *msg) { _upb_msg_map_clear(msg, UPB_SIZE(48, 96)); }
-UPB_INLINE bool envoy_config_route_v3_Route_typed_per_filter_config_set(envoy_config_route_v3_Route *msg, upb_StringView key, struct google_protobuf_Any* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(48, 96), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool envoy_config_route_v3_Route_typed_per_filter_config_delete(envoy_config_route_v3_Route *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(48, 96), &key, 0); }
-UPB_INLINE envoy_config_route_v3_Route_TypedPerFilterConfigEntry* envoy_config_route_v3_Route_typed_per_filter_config_nextmutable(envoy_config_route_v3_Route *msg, size_t* iter) { return (envoy_config_route_v3_Route_TypedPerFilterConfigEntry*)_upb_msg_map_next(msg, UPB_SIZE(48, 96), iter); }
UPB_INLINE void envoy_config_route_v3_Route_set_name(envoy_config_route_v3_Route *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_Route_set_tracing(envoy_config_route_v3_Route *msg, envoy_config_route_v3_Tracing* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 48), envoy_config_route_v3_Tracing*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 88), envoy_config_route_v3_Tracing*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_Tracing* envoy_config_route_v3_Route_mutable_tracing(envoy_config_route_v3_Route *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_Tracing* envoy_config_route_v3_Route_mutable_tracing(envoy_config_route_v3_Route* msg, upb_Arena* arena) {
struct envoy_config_route_v3_Tracing* sub = (struct envoy_config_route_v3_Tracing*)envoy_config_route_v3_Route_tracing(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_Tracing*)_upb_Message_New(&envoy_config_route_v3_Tracing_msginit, arena);
@@ -825,9 +1080,9 @@ UPB_INLINE struct envoy_config_route_v3_Tracing* envoy_config_route_v3_Route_mut
}
UPB_INLINE void envoy_config_route_v3_Route_set_per_request_buffer_limit_bytes(envoy_config_route_v3_Route *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 96), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_Route_mutable_per_request_buffer_limit_bytes(envoy_config_route_v3_Route *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_Route_mutable_per_request_buffer_limit_bytes(envoy_config_route_v3_Route* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_route_v3_Route_per_request_buffer_limit_bytes(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -837,9 +1092,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_Route_mutab
return sub;
}
UPB_INLINE void envoy_config_route_v3_Route_set_filter_action(envoy_config_route_v3_Route *msg, envoy_config_route_v3_FilterAction* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_FilterAction*, UPB_SIZE(52, 104), value, UPB_SIZE(56, 112), 17);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_FilterAction*, UPB_SIZE(64, 120), value, UPB_SIZE(4, 4), 17);
}
-UPB_INLINE struct envoy_config_route_v3_FilterAction* envoy_config_route_v3_Route_mutable_filter_action(envoy_config_route_v3_Route *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_FilterAction* envoy_config_route_v3_Route_mutable_filter_action(envoy_config_route_v3_Route* msg, upb_Arena* arena) {
struct envoy_config_route_v3_FilterAction* sub = (struct envoy_config_route_v3_FilterAction*)envoy_config_route_v3_Route_filter_action(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_FilterAction*)_upb_Message_New(&envoy_config_route_v3_FilterAction_msginit, arena);
@@ -849,9 +1104,9 @@ UPB_INLINE struct envoy_config_route_v3_FilterAction* envoy_config_route_v3_Rout
return sub;
}
UPB_INLINE void envoy_config_route_v3_Route_set_non_forwarding_action(envoy_config_route_v3_Route *msg, envoy_config_route_v3_NonForwardingAction* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_NonForwardingAction*, UPB_SIZE(52, 104), value, UPB_SIZE(56, 112), 18);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_NonForwardingAction*, UPB_SIZE(64, 120), value, UPB_SIZE(4, 4), 18);
}
-UPB_INLINE struct envoy_config_route_v3_NonForwardingAction* envoy_config_route_v3_Route_mutable_non_forwarding_action(envoy_config_route_v3_Route *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_NonForwardingAction* envoy_config_route_v3_Route_mutable_non_forwarding_action(envoy_config_route_v3_Route* msg, upb_Arena* arena) {
struct envoy_config_route_v3_NonForwardingAction* sub = (struct envoy_config_route_v3_NonForwardingAction*)envoy_config_route_v3_Route_non_forwarding_action(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_NonForwardingAction*)_upb_Message_New(&envoy_config_route_v3_NonForwardingAction_msginit, arena);
@@ -860,16 +1115,21 @@ UPB_INLINE struct envoy_config_route_v3_NonForwardingAction* envoy_config_route_
}
return sub;
}
+UPB_INLINE void envoy_config_route_v3_Route_set_stat_prefix(envoy_config_route_v3_Route *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 104), upb_StringView) = value;
+}
/* envoy.config.route.v3.Route.TypedPerFilterConfigEntry */
-UPB_INLINE upb_StringView envoy_config_route_v3_Route_TypedPerFilterConfigEntry_key(const envoy_config_route_v3_Route_TypedPerFilterConfigEntry *msg) {
+UPB_INLINE upb_StringView envoy_config_route_v3_Route_TypedPerFilterConfigEntry_key(const envoy_config_route_v3_Route_TypedPerFilterConfigEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE bool envoy_config_route_v3_Route_TypedPerFilterConfigEntry_has_value(const envoy_config_route_v3_Route_TypedPerFilterConfigEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_Route_TypedPerFilterConfigEntry_value(const envoy_config_route_v3_Route_TypedPerFilterConfigEntry *msg) {
+UPB_INLINE bool envoy_config_route_v3_Route_TypedPerFilterConfigEntry_has_value(const envoy_config_route_v3_Route_TypedPerFilterConfigEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_Route_TypedPerFilterConfigEntry_value(const envoy_config_route_v3_Route_TypedPerFilterConfigEntry* msg) {
struct google_protobuf_Any* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -904,43 +1164,77 @@ UPB_INLINE envoy_config_route_v3_WeightedCluster* envoy_config_route_v3_Weighted
return ret;
}
UPB_INLINE char* envoy_config_route_v3_WeightedCluster_serialize(const envoy_config_route_v3_WeightedCluster* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_WeightedCluster_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_WeightedCluster_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_WeightedCluster_serialize_ex(const envoy_config_route_v3_WeightedCluster* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_WeightedCluster_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_WeightedCluster_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+typedef enum {
+ envoy_config_route_v3_WeightedCluster_random_value_specifier_header_name = 4,
+ envoy_config_route_v3_WeightedCluster_random_value_specifier_NOT_SET = 0
+} envoy_config_route_v3_WeightedCluster_random_value_specifier_oneofcases;
+UPB_INLINE envoy_config_route_v3_WeightedCluster_random_value_specifier_oneofcases envoy_config_route_v3_WeightedCluster_random_value_specifier_case(const envoy_config_route_v3_WeightedCluster* msg) {
+ return (envoy_config_route_v3_WeightedCluster_random_value_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_has_clusters(const envoy_config_route_v3_WeightedCluster* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_clear_clusters(const envoy_config_route_v3_WeightedCluster* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE const envoy_config_route_v3_WeightedCluster_ClusterWeight* const* envoy_config_route_v3_WeightedCluster_clusters(const envoy_config_route_v3_WeightedCluster* msg, size_t* len) {
+ return (const envoy_config_route_v3_WeightedCluster_ClusterWeight* const*)_upb_array_accessor(msg, UPB_SIZE(16, 24), len);
+}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_clear_runtime_key_prefix(const envoy_config_route_v3_WeightedCluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
-UPB_INLINE bool envoy_config_route_v3_WeightedCluster_has_clusters(const envoy_config_route_v3_WeightedCluster *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const envoy_config_route_v3_WeightedCluster_ClusterWeight* const* envoy_config_route_v3_WeightedCluster_clusters(const envoy_config_route_v3_WeightedCluster *msg, size_t *len) { return (const envoy_config_route_v3_WeightedCluster_ClusterWeight* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
UPB_INLINE upb_StringView envoy_config_route_v3_WeightedCluster_runtime_key_prefix(const envoy_config_route_v3_WeightedCluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView);
+}
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_has_total_weight(const envoy_config_route_v3_WeightedCluster* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_clear_total_weight(const envoy_config_route_v3_WeightedCluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_WeightedCluster_has_total_weight(const envoy_config_route_v3_WeightedCluster *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_route_v3_WeightedCluster_total_weight(const envoy_config_route_v3_WeightedCluster* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_has_header_name(const envoy_config_route_v3_WeightedCluster* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 4;
+}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_clear_header_name(const envoy_config_route_v3_WeightedCluster* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_route_v3_WeightedCluster_random_value_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_WeightedCluster_header_name(const envoy_config_route_v3_WeightedCluster* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 4, upb_StringView_FromString(""));
}
-UPB_INLINE envoy_config_route_v3_WeightedCluster_ClusterWeight** envoy_config_route_v3_WeightedCluster_mutable_clusters(envoy_config_route_v3_WeightedCluster *msg, size_t *len) {
- return (envoy_config_route_v3_WeightedCluster_ClusterWeight**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
+UPB_INLINE envoy_config_route_v3_WeightedCluster_ClusterWeight** envoy_config_route_v3_WeightedCluster_mutable_clusters(envoy_config_route_v3_WeightedCluster* msg, size_t* len) {
+ return (envoy_config_route_v3_WeightedCluster_ClusterWeight**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 24), len);
}
-UPB_INLINE envoy_config_route_v3_WeightedCluster_ClusterWeight** envoy_config_route_v3_WeightedCluster_resize_clusters(envoy_config_route_v3_WeightedCluster *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_WeightedCluster_ClusterWeight**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_WeightedCluster_ClusterWeight** envoy_config_route_v3_WeightedCluster_resize_clusters(envoy_config_route_v3_WeightedCluster* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_WeightedCluster_ClusterWeight**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_WeightedCluster_ClusterWeight* envoy_config_route_v3_WeightedCluster_add_clusters(envoy_config_route_v3_WeightedCluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_WeightedCluster_ClusterWeight* envoy_config_route_v3_WeightedCluster_add_clusters(envoy_config_route_v3_WeightedCluster* msg, upb_Arena* arena) {
struct envoy_config_route_v3_WeightedCluster_ClusterWeight* sub = (struct envoy_config_route_v3_WeightedCluster_ClusterWeight*)_upb_Message_New(&envoy_config_route_v3_WeightedCluster_ClusterWeight_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_route_v3_WeightedCluster_set_runtime_key_prefix(envoy_config_route_v3_WeightedCluster *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_WeightedCluster_set_total_weight(envoy_config_route_v3_WeightedCluster *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_WeightedCluster_mutable_total_weight(envoy_config_route_v3_WeightedCluster *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_WeightedCluster_mutable_total_weight(envoy_config_route_v3_WeightedCluster* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_route_v3_WeightedCluster_total_weight(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -949,6 +1243,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_WeightedClu
}
return sub;
}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_set_header_name(envoy_config_route_v3_WeightedCluster *msg, upb_StringView value) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 4);
+}
/* envoy.config.route.v3.WeightedCluster.ClusterWeight */
@@ -975,53 +1272,116 @@ UPB_INLINE envoy_config_route_v3_WeightedCluster_ClusterWeight* envoy_config_rou
return ret;
}
UPB_INLINE char* envoy_config_route_v3_WeightedCluster_ClusterWeight_serialize(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_WeightedCluster_ClusterWeight_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_WeightedCluster_ClusterWeight_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_WeightedCluster_ClusterWeight_serialize_ex(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_WeightedCluster_ClusterWeight_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_WeightedCluster_ClusterWeight_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_route_v3_WeightedCluster_ClusterWeight_host_rewrite_specifier_host_rewrite_literal = 11,
envoy_config_route_v3_WeightedCluster_ClusterWeight_host_rewrite_specifier_NOT_SET = 0
} envoy_config_route_v3_WeightedCluster_ClusterWeight_host_rewrite_specifier_oneofcases;
-UPB_INLINE envoy_config_route_v3_WeightedCluster_ClusterWeight_host_rewrite_specifier_oneofcases envoy_config_route_v3_WeightedCluster_ClusterWeight_host_rewrite_specifier_case(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) { return (envoy_config_route_v3_WeightedCluster_ClusterWeight_host_rewrite_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(56, 112), int32_t); }
-
+UPB_INLINE envoy_config_route_v3_WeightedCluster_ClusterWeight_host_rewrite_specifier_oneofcases envoy_config_route_v3_WeightedCluster_ClusterWeight_host_rewrite_specifier_case(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ return (envoy_config_route_v3_WeightedCluster_ClusterWeight_host_rewrite_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_clear_name(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_route_v3_WeightedCluster_ClusterWeight_name(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+}
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_has_weight(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_clear_weight(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_has_weight(const envoy_config_route_v3_WeightedCluster_ClusterWeight *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_route_v3_WeightedCluster_ClusterWeight_weight(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_has_metadata_match(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_clear_metadata_match(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_has_metadata_match(const envoy_config_route_v3_WeightedCluster_ClusterWeight *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct envoy_config_core_v3_Metadata* envoy_config_route_v3_WeightedCluster_ClusterWeight_metadata_match(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct envoy_config_core_v3_Metadata*);
-}
-UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_has_request_headers_to_add(const envoy_config_route_v3_WeightedCluster_ClusterWeight *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 56)); }
-UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_WeightedCluster_ClusterWeight_request_headers_to_add(const envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, size_t *len) { return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len); }
-UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_has_response_headers_to_add(const envoy_config_route_v3_WeightedCluster_ClusterWeight *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 64)); }
-UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_WeightedCluster_ClusterWeight_response_headers_to_add(const envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, size_t *len) { return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len); }
-UPB_INLINE upb_StringView const* envoy_config_route_v3_WeightedCluster_ClusterWeight_response_headers_to_remove(const envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(36, 72), len); }
-UPB_INLINE upb_StringView const* envoy_config_route_v3_WeightedCluster_ClusterWeight_request_headers_to_remove(const envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(40, 80), len); }
-UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_has_typed_per_filter_config(const envoy_config_route_v3_WeightedCluster_ClusterWeight *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 88)); }
-UPB_INLINE size_t envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_size(const envoy_config_route_v3_WeightedCluster_ClusterWeight *msg) {return _upb_msg_map_size(msg, UPB_SIZE(44, 88)); }
-UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_get(const envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, upb_StringView key, struct google_protobuf_Any* *val) { return _upb_msg_map_get(msg, UPB_SIZE(44, 88), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry* envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_next(const envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, size_t* iter) { return (const envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry*)_upb_msg_map_next(msg, UPB_SIZE(44, 88), iter); }
-UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_has_host_rewrite_literal(const envoy_config_route_v3_WeightedCluster_ClusterWeight *msg) { return _upb_getoneofcase(msg, UPB_SIZE(56, 112)) == 11; }
-UPB_INLINE upb_StringView envoy_config_route_v3_WeightedCluster_ClusterWeight_host_rewrite_literal(const envoy_config_route_v3_WeightedCluster_ClusterWeight *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(48, 96), UPB_SIZE(56, 112), 11, upb_StringView_FromString("")); }
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const struct envoy_config_core_v3_Metadata*);
+}
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_has_request_headers_to_add(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 56));
+}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_clear_request_headers_to_add(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 56));
+}
+UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_WeightedCluster_ClusterWeight_request_headers_to_add(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(32, 56), len);
+}
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_has_response_headers_to_add(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 64));
+}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_clear_response_headers_to_add(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ _upb_array_detach(msg, UPB_SIZE(36, 64));
+}
+UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_config_route_v3_WeightedCluster_ClusterWeight_response_headers_to_add(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(36, 64), len);
+}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_clear_response_headers_to_remove(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ _upb_array_detach(msg, UPB_SIZE(40, 72));
+}
+UPB_INLINE upb_StringView const* envoy_config_route_v3_WeightedCluster_ClusterWeight_response_headers_to_remove(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(40, 72), len);
+}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_clear_request_headers_to_remove(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ _upb_array_detach(msg, UPB_SIZE(44, 80));
+}
+UPB_INLINE upb_StringView const* envoy_config_route_v3_WeightedCluster_ClusterWeight_request_headers_to_remove(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(44, 80), len);
+}
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_has_typed_per_filter_config(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 88));
+}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_clear_typed_per_filter_config(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ _upb_array_detach(msg, UPB_SIZE(48, 88));
+}
+UPB_INLINE size_t envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_size(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(48, 88));
+}
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_get(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, upb_StringView key, struct google_protobuf_Any** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(48, 88), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry* envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_next(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, size_t* iter) {
+ return (const envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry*)_upb_msg_map_next(msg, UPB_SIZE(48, 88), iter);
+}
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_has_host_rewrite_literal(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 11;
+}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_clear_host_rewrite_literal(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_route_v3_WeightedCluster_ClusterWeight_host_rewrite_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_WeightedCluster_ClusterWeight_host_rewrite_literal(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 11, upb_StringView_FromString(""));
+}
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_clear_cluster_header(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 96), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_route_v3_WeightedCluster_ClusterWeight_cluster_header(const envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(52, 96), upb_StringView);
}
UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_set_name(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_set_weight(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_WeightedCluster_ClusterWeight_mutable_weight(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_WeightedCluster_ClusterWeight_mutable_weight(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_route_v3_WeightedCluster_ClusterWeight_weight(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1032,9 +1392,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_WeightedClu
}
UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_set_metadata_match(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, struct envoy_config_core_v3_Metadata* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct envoy_config_core_v3_Metadata*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), struct envoy_config_core_v3_Metadata*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_route_v3_WeightedCluster_ClusterWeight_mutable_metadata_match(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_route_v3_WeightedCluster_ClusterWeight_mutable_metadata_match(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Metadata* sub = (struct envoy_config_core_v3_Metadata*)envoy_config_route_v3_WeightedCluster_ClusterWeight_metadata_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Metadata*)_upb_Message_New(&envoy_config_core_v3_Metadata_msginit, arena);
@@ -1043,72 +1403,76 @@ UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_route_v3_WeightedC
}
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_WeightedCluster_ClusterWeight_mutable_request_headers_to_add(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, size_t *len) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_WeightedCluster_ClusterWeight_mutable_request_headers_to_add(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, size_t* len) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 56), len);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_WeightedCluster_ClusterWeight_resize_request_headers_to_add(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_WeightedCluster_ClusterWeight_resize_request_headers_to_add(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 56), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_WeightedCluster_ClusterWeight_add_request_headers_to_add(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_WeightedCluster_ClusterWeight_add_request_headers_to_add(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HeaderValueOption* sub = (struct envoy_config_core_v3_HeaderValueOption*)_upb_Message_New(&envoy_config_core_v3_HeaderValueOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(28, 56), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 56), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_WeightedCluster_ClusterWeight_mutable_response_headers_to_add(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, size_t *len) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_WeightedCluster_ClusterWeight_mutable_response_headers_to_add(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, size_t* len) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 64), len);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_WeightedCluster_ClusterWeight_resize_response_headers_to_add(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_config_route_v3_WeightedCluster_ClusterWeight_resize_response_headers_to_add(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 64), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_WeightedCluster_ClusterWeight_add_response_headers_to_add(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_config_route_v3_WeightedCluster_ClusterWeight_add_response_headers_to_add(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HeaderValueOption* sub = (struct envoy_config_core_v3_HeaderValueOption*)_upb_Message_New(&envoy_config_core_v3_HeaderValueOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(32, 64), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 64), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_WeightedCluster_ClusterWeight_mutable_response_headers_to_remove(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 72), len);
+UPB_INLINE upb_StringView* envoy_config_route_v3_WeightedCluster_ClusterWeight_mutable_response_headers_to_remove(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 72), len);
+}
+UPB_INLINE upb_StringView* envoy_config_route_v3_WeightedCluster_ClusterWeight_resize_response_headers_to_remove(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 72), len, UPB_SIZE(3, 4), arena);
+}
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_add_response_headers_to_remove(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 72), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_WeightedCluster_ClusterWeight_resize_response_headers_to_remove(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 72), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_config_route_v3_WeightedCluster_ClusterWeight_mutable_request_headers_to_remove(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 80), len);
+}
+UPB_INLINE upb_StringView* envoy_config_route_v3_WeightedCluster_ClusterWeight_resize_request_headers_to_remove(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 80), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_add_response_headers_to_remove(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 72), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_add_request_headers_to_remove(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(44, 80), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_WeightedCluster_ClusterWeight_mutable_request_headers_to_remove(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 80), len);
+UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_clear(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg) { _upb_msg_map_clear(msg, UPB_SIZE(48, 88)); }
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_set(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, upb_StringView key, struct google_protobuf_Any* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(48, 88), &key, 0, &val, sizeof(val), a);
}
-UPB_INLINE upb_StringView* envoy_config_route_v3_WeightedCluster_ClusterWeight_resize_request_headers_to_remove(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 80), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_delete(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(48, 88), &key, 0);
}
-UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_add_request_headers_to_remove(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 80), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry* envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_nextmutable(envoy_config_route_v3_WeightedCluster_ClusterWeight* msg, size_t* iter) {
+ return (envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry*)_upb_msg_map_next(msg, UPB_SIZE(48, 88), iter);
}
-UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_clear(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg) { _upb_msg_map_clear(msg, UPB_SIZE(44, 88)); }
-UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_set(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, upb_StringView key, struct google_protobuf_Any* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(44, 88), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_delete(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(44, 88), &key, 0); }
-UPB_INLINE envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry* envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_nextmutable(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, size_t* iter) { return (envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry*)_upb_msg_map_next(msg, UPB_SIZE(44, 88), iter); }
UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_set_host_rewrite_literal(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(48, 96), value, UPB_SIZE(56, 112), 11);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 11);
}
UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_set_cluster_header(envoy_config_route_v3_WeightedCluster_ClusterWeight *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 96), upb_StringView) = value;
}
/* envoy.config.route.v3.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry */
-UPB_INLINE upb_StringView envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_key(const envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry *msg) {
+UPB_INLINE upb_StringView envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_key(const envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_has_value(const envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_value(const envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry *msg) {
+UPB_INLINE bool envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_has_value(const envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_value(const envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry* msg) {
struct google_protobuf_Any* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -1118,6 +1482,74 @@ UPB_INLINE void envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilt
_upb_msg_map_set_value(msg, &value, sizeof(struct google_protobuf_Any*));
}
+/* envoy.config.route.v3.ClusterSpecifierPlugin */
+
+UPB_INLINE envoy_config_route_v3_ClusterSpecifierPlugin* envoy_config_route_v3_ClusterSpecifierPlugin_new(upb_Arena* arena) {
+ return (envoy_config_route_v3_ClusterSpecifierPlugin*)_upb_Message_New(&envoy_config_route_v3_ClusterSpecifierPlugin_msginit, arena);
+}
+UPB_INLINE envoy_config_route_v3_ClusterSpecifierPlugin* envoy_config_route_v3_ClusterSpecifierPlugin_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_config_route_v3_ClusterSpecifierPlugin* ret = envoy_config_route_v3_ClusterSpecifierPlugin_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_route_v3_ClusterSpecifierPlugin_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_config_route_v3_ClusterSpecifierPlugin* envoy_config_route_v3_ClusterSpecifierPlugin_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_config_route_v3_ClusterSpecifierPlugin* ret = envoy_config_route_v3_ClusterSpecifierPlugin_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_route_v3_ClusterSpecifierPlugin_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_config_route_v3_ClusterSpecifierPlugin_serialize(const envoy_config_route_v3_ClusterSpecifierPlugin* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_ClusterSpecifierPlugin_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_config_route_v3_ClusterSpecifierPlugin_serialize_ex(const envoy_config_route_v3_ClusterSpecifierPlugin* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_ClusterSpecifierPlugin_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_ClusterSpecifierPlugin_has_extension(const envoy_config_route_v3_ClusterSpecifierPlugin* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_ClusterSpecifierPlugin_clear_extension(const envoy_config_route_v3_ClusterSpecifierPlugin* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_ClusterSpecifierPlugin_extension(const envoy_config_route_v3_ClusterSpecifierPlugin* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_TypedExtensionConfig*);
+}
+UPB_INLINE void envoy_config_route_v3_ClusterSpecifierPlugin_clear_is_optional(const envoy_config_route_v3_ClusterSpecifierPlugin* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
+UPB_INLINE bool envoy_config_route_v3_ClusterSpecifierPlugin_is_optional(const envoy_config_route_v3_ClusterSpecifierPlugin* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
+}
+
+UPB_INLINE void envoy_config_route_v3_ClusterSpecifierPlugin_set_extension(envoy_config_route_v3_ClusterSpecifierPlugin *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
+}
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_ClusterSpecifierPlugin_mutable_extension(envoy_config_route_v3_ClusterSpecifierPlugin* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_route_v3_ClusterSpecifierPlugin_extension(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_route_v3_ClusterSpecifierPlugin_set_extension(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_config_route_v3_ClusterSpecifierPlugin_set_is_optional(envoy_config_route_v3_ClusterSpecifierPlugin *msg, bool value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
+}
+
/* envoy.config.route.v3.RouteMatch */
UPB_INLINE envoy_config_route_v3_RouteMatch* envoy_config_route_v3_RouteMatch_new(upb_Arena* arena) {
@@ -1143,63 +1575,157 @@ UPB_INLINE envoy_config_route_v3_RouteMatch* envoy_config_route_v3_RouteMatch_pa
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteMatch_serialize(const envoy_config_route_v3_RouteMatch* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteMatch_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteMatch_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteMatch_serialize_ex(const envoy_config_route_v3_RouteMatch* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteMatch_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteMatch_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_route_v3_RouteMatch_path_specifier_prefix = 1,
envoy_config_route_v3_RouteMatch_path_specifier_path = 2,
envoy_config_route_v3_RouteMatch_path_specifier_safe_regex = 10,
envoy_config_route_v3_RouteMatch_path_specifier_connect_matcher = 12,
+ envoy_config_route_v3_RouteMatch_path_specifier_path_separated_prefix = 14,
+ envoy_config_route_v3_RouteMatch_path_specifier_path_template = 15,
envoy_config_route_v3_RouteMatch_path_specifier_NOT_SET = 0
} envoy_config_route_v3_RouteMatch_path_specifier_oneofcases;
-UPB_INLINE envoy_config_route_v3_RouteMatch_path_specifier_oneofcases envoy_config_route_v3_RouteMatch_path_specifier_case(const envoy_config_route_v3_RouteMatch* msg) { return (envoy_config_route_v3_RouteMatch_path_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(40, 80), int32_t); }
-
-UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_prefix(const envoy_config_route_v3_RouteMatch *msg) { return _upb_getoneofcase(msg, UPB_SIZE(40, 80)) == 1; }
-UPB_INLINE upb_StringView envoy_config_route_v3_RouteMatch_prefix(const envoy_config_route_v3_RouteMatch *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(32, 64), UPB_SIZE(40, 80), 1, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_path(const envoy_config_route_v3_RouteMatch *msg) { return _upb_getoneofcase(msg, UPB_SIZE(40, 80)) == 2; }
-UPB_INLINE upb_StringView envoy_config_route_v3_RouteMatch_path(const envoy_config_route_v3_RouteMatch *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(32, 64), UPB_SIZE(40, 80), 2, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_case_sensitive(const envoy_config_route_v3_RouteMatch *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_config_route_v3_RouteMatch_path_specifier_oneofcases envoy_config_route_v3_RouteMatch_path_specifier_case(const envoy_config_route_v3_RouteMatch* msg) {
+ return (envoy_config_route_v3_RouteMatch_path_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_prefix(const envoy_config_route_v3_RouteMatch* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 1;
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_prefix(const envoy_config_route_v3_RouteMatch* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_route_v3_RouteMatch_path_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RouteMatch_prefix(const envoy_config_route_v3_RouteMatch* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 1, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_path(const envoy_config_route_v3_RouteMatch* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_path(const envoy_config_route_v3_RouteMatch* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_route_v3_RouteMatch_path_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RouteMatch_path(const envoy_config_route_v3_RouteMatch* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 2, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_case_sensitive(const envoy_config_route_v3_RouteMatch* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_case_sensitive(const envoy_config_route_v3_RouteMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_RouteMatch_case_sensitive(const envoy_config_route_v3_RouteMatch* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_headers(const envoy_config_route_v3_RouteMatch* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 32));
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_headers(const envoy_config_route_v3_RouteMatch* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 32));
+}
+UPB_INLINE const envoy_config_route_v3_HeaderMatcher* const* envoy_config_route_v3_RouteMatch_headers(const envoy_config_route_v3_RouteMatch* msg, size_t* len) {
+ return (const envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(20, 32), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_query_parameters(const envoy_config_route_v3_RouteMatch* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 40));
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_query_parameters(const envoy_config_route_v3_RouteMatch* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 40));
+}
+UPB_INLINE const envoy_config_route_v3_QueryParameterMatcher* const* envoy_config_route_v3_RouteMatch_query_parameters(const envoy_config_route_v3_RouteMatch* msg, size_t* len) {
+ return (const envoy_config_route_v3_QueryParameterMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(24, 40), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_grpc(const envoy_config_route_v3_RouteMatch* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_grpc(const envoy_config_route_v3_RouteMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_headers(const envoy_config_route_v3_RouteMatch *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE const envoy_config_route_v3_HeaderMatcher* const* envoy_config_route_v3_RouteMatch_headers(const envoy_config_route_v3_RouteMatch *msg, size_t *len) { return (const envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len); }
-UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_query_parameters(const envoy_config_route_v3_RouteMatch *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48)); }
-UPB_INLINE const envoy_config_route_v3_QueryParameterMatcher* const* envoy_config_route_v3_RouteMatch_query_parameters(const envoy_config_route_v3_RouteMatch *msg, size_t *len) { return (const envoy_config_route_v3_QueryParameterMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len); }
-UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_grpc(const envoy_config_route_v3_RouteMatch *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions* envoy_config_route_v3_RouteMatch_grpc(const envoy_config_route_v3_RouteMatch* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_runtime_fraction(const envoy_config_route_v3_RouteMatch* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_runtime_fraction(const envoy_config_route_v3_RouteMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_runtime_fraction(const envoy_config_route_v3_RouteMatch *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_route_v3_RouteMatch_runtime_fraction(const envoy_config_route_v3_RouteMatch* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_RuntimeFractionalPercent*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const struct envoy_config_core_v3_RuntimeFractionalPercent*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_safe_regex(const envoy_config_route_v3_RouteMatch* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 10;
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_safe_regex(const envoy_config_route_v3_RouteMatch* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_route_v3_RouteMatch_path_specifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_RegexMatcher* envoy_config_route_v3_RouteMatch_safe_regex(const envoy_config_route_v3_RouteMatch* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 10, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_tls_context(const envoy_config_route_v3_RouteMatch* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_tls_context(const envoy_config_route_v3_RouteMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_safe_regex(const envoy_config_route_v3_RouteMatch *msg) { return _upb_getoneofcase(msg, UPB_SIZE(40, 80)) == 10; }
-UPB_INLINE const struct envoy_type_matcher_v3_RegexMatcher* envoy_config_route_v3_RouteMatch_safe_regex(const envoy_config_route_v3_RouteMatch *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(32, 64), UPB_SIZE(40, 80), 10, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_tls_context(const envoy_config_route_v3_RouteMatch *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* envoy_config_route_v3_RouteMatch_tls_context(const envoy_config_route_v3_RouteMatch* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const envoy_config_route_v3_RouteMatch_TlsContextMatchOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const envoy_config_route_v3_RouteMatch_TlsContextMatchOptions*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_connect_matcher(const envoy_config_route_v3_RouteMatch* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 12;
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_connect_matcher(const envoy_config_route_v3_RouteMatch* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteMatch_ConnectMatcher*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_route_v3_RouteMatch_path_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RouteMatch_ConnectMatcher* envoy_config_route_v3_RouteMatch_connect_matcher(const envoy_config_route_v3_RouteMatch* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RouteMatch_ConnectMatcher*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 12, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_dynamic_metadata(const envoy_config_route_v3_RouteMatch* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(40, 72));
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_dynamic_metadata(const envoy_config_route_v3_RouteMatch* msg) {
+ _upb_array_detach(msg, UPB_SIZE(40, 72));
+}
+UPB_INLINE const struct envoy_type_matcher_v3_MetadataMatcher* const* envoy_config_route_v3_RouteMatch_dynamic_metadata(const envoy_config_route_v3_RouteMatch* msg, size_t* len) {
+ return (const struct envoy_type_matcher_v3_MetadataMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(40, 72), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_path_separated_prefix(const envoy_config_route_v3_RouteMatch* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 14;
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_path_separated_prefix(const envoy_config_route_v3_RouteMatch* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_route_v3_RouteMatch_path_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RouteMatch_path_separated_prefix(const envoy_config_route_v3_RouteMatch* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 14, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_path_template(const envoy_config_route_v3_RouteMatch* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 15;
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_clear_path_template(const envoy_config_route_v3_RouteMatch* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_route_v3_RouteMatch_path_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RouteMatch_path_template(const envoy_config_route_v3_RouteMatch* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 15, upb_StringView_FromString(""));
}
-UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_connect_matcher(const envoy_config_route_v3_RouteMatch *msg) { return _upb_getoneofcase(msg, UPB_SIZE(40, 80)) == 12; }
-UPB_INLINE const envoy_config_route_v3_RouteMatch_ConnectMatcher* envoy_config_route_v3_RouteMatch_connect_matcher(const envoy_config_route_v3_RouteMatch *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RouteMatch_ConnectMatcher*, UPB_SIZE(32, 64), UPB_SIZE(40, 80), 12, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RouteMatch_has_dynamic_metadata(const envoy_config_route_v3_RouteMatch *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 56)); }
-UPB_INLINE const struct envoy_type_matcher_v3_MetadataMatcher* const* envoy_config_route_v3_RouteMatch_dynamic_metadata(const envoy_config_route_v3_RouteMatch *msg, size_t *len) { return (const struct envoy_type_matcher_v3_MetadataMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len); }
UPB_INLINE void envoy_config_route_v3_RouteMatch_set_prefix(envoy_config_route_v3_RouteMatch *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(32, 64), value, UPB_SIZE(40, 80), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 1);
}
UPB_INLINE void envoy_config_route_v3_RouteMatch_set_path(envoy_config_route_v3_RouteMatch *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(32, 64), value, UPB_SIZE(40, 80), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 2);
}
UPB_INLINE void envoy_config_route_v3_RouteMatch_set_case_sensitive(envoy_config_route_v3_RouteMatch *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteMatch_mutable_case_sensitive(envoy_config_route_v3_RouteMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteMatch_mutable_case_sensitive(envoy_config_route_v3_RouteMatch* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_route_v3_RouteMatch_case_sensitive(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -1208,37 +1734,35 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteMatch_mu
}
return sub;
}
-UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RouteMatch_mutable_headers(envoy_config_route_v3_RouteMatch *msg, size_t *len) {
- return (envoy_config_route_v3_HeaderMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
+UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RouteMatch_mutable_headers(envoy_config_route_v3_RouteMatch* msg, size_t* len) {
+ return (envoy_config_route_v3_HeaderMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 32), len);
}
-UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RouteMatch_resize_headers(envoy_config_route_v3_RouteMatch *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_HeaderMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RouteMatch_resize_headers(envoy_config_route_v3_RouteMatch* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_HeaderMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 32), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_route_v3_RouteMatch_add_headers(envoy_config_route_v3_RouteMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_route_v3_RouteMatch_add_headers(envoy_config_route_v3_RouteMatch* msg, upb_Arena* arena) {
struct envoy_config_route_v3_HeaderMatcher* sub = (struct envoy_config_route_v3_HeaderMatcher*)_upb_Message_New(&envoy_config_route_v3_HeaderMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 32), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE envoy_config_route_v3_QueryParameterMatcher** envoy_config_route_v3_RouteMatch_mutable_query_parameters(envoy_config_route_v3_RouteMatch *msg, size_t *len) {
- return (envoy_config_route_v3_QueryParameterMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
+UPB_INLINE envoy_config_route_v3_QueryParameterMatcher** envoy_config_route_v3_RouteMatch_mutable_query_parameters(envoy_config_route_v3_RouteMatch* msg, size_t* len) {
+ return (envoy_config_route_v3_QueryParameterMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 40), len);
}
-UPB_INLINE envoy_config_route_v3_QueryParameterMatcher** envoy_config_route_v3_RouteMatch_resize_query_parameters(envoy_config_route_v3_RouteMatch *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_QueryParameterMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_QueryParameterMatcher** envoy_config_route_v3_RouteMatch_resize_query_parameters(envoy_config_route_v3_RouteMatch* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_QueryParameterMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_QueryParameterMatcher* envoy_config_route_v3_RouteMatch_add_query_parameters(envoy_config_route_v3_RouteMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_QueryParameterMatcher* envoy_config_route_v3_RouteMatch_add_query_parameters(envoy_config_route_v3_RouteMatch* msg, upb_Arena* arena) {
struct envoy_config_route_v3_QueryParameterMatcher* sub = (struct envoy_config_route_v3_QueryParameterMatcher*)_upb_Message_New(&envoy_config_route_v3_QueryParameterMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(24, 48), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteMatch_set_grpc(envoy_config_route_v3_RouteMatch *msg, envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions* envoy_config_route_v3_RouteMatch_mutable_grpc(envoy_config_route_v3_RouteMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions* envoy_config_route_v3_RouteMatch_mutable_grpc(envoy_config_route_v3_RouteMatch* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions* sub = (struct envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions*)envoy_config_route_v3_RouteMatch_grpc(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions*)_upb_Message_New(&envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions_msginit, arena);
@@ -1249,9 +1773,9 @@ UPB_INLINE struct envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions* envoy_
}
UPB_INLINE void envoy_config_route_v3_RouteMatch_set_runtime_fraction(envoy_config_route_v3_RouteMatch *msg, struct envoy_config_core_v3_RuntimeFractionalPercent* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_RuntimeFractionalPercent*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), struct envoy_config_core_v3_RuntimeFractionalPercent*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_route_v3_RouteMatch_mutable_runtime_fraction(envoy_config_route_v3_RouteMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_route_v3_RouteMatch_mutable_runtime_fraction(envoy_config_route_v3_RouteMatch* msg, upb_Arena* arena) {
struct envoy_config_core_v3_RuntimeFractionalPercent* sub = (struct envoy_config_core_v3_RuntimeFractionalPercent*)envoy_config_route_v3_RouteMatch_runtime_fraction(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_RuntimeFractionalPercent*)_upb_Message_New(&envoy_config_core_v3_RuntimeFractionalPercent_msginit, arena);
@@ -1261,9 +1785,9 @@ UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_ro
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteMatch_set_safe_regex(envoy_config_route_v3_RouteMatch *msg, struct envoy_type_matcher_v3_RegexMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(32, 64), value, UPB_SIZE(40, 80), 10);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 10);
}
-UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher* envoy_config_route_v3_RouteMatch_mutable_safe_regex(envoy_config_route_v3_RouteMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher* envoy_config_route_v3_RouteMatch_mutable_safe_regex(envoy_config_route_v3_RouteMatch* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_RegexMatcher* sub = (struct envoy_type_matcher_v3_RegexMatcher*)envoy_config_route_v3_RouteMatch_safe_regex(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_RegexMatcher*)_upb_Message_New(&envoy_type_matcher_v3_RegexMatcher_msginit, arena);
@@ -1274,9 +1798,9 @@ UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher* envoy_config_route_v3_Rout
}
UPB_INLINE void envoy_config_route_v3_RouteMatch_set_tls_context(envoy_config_route_v3_RouteMatch *msg, envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 32), envoy_config_route_v3_RouteMatch_TlsContextMatchOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), envoy_config_route_v3_RouteMatch_TlsContextMatchOptions*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* envoy_config_route_v3_RouteMatch_mutable_tls_context(envoy_config_route_v3_RouteMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* envoy_config_route_v3_RouteMatch_mutable_tls_context(envoy_config_route_v3_RouteMatch* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* sub = (struct envoy_config_route_v3_RouteMatch_TlsContextMatchOptions*)envoy_config_route_v3_RouteMatch_tls_context(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RouteMatch_TlsContextMatchOptions*)_upb_Message_New(&envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_msginit, arena);
@@ -1286,9 +1810,9 @@ UPB_INLINE struct envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* envoy
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteMatch_set_connect_matcher(envoy_config_route_v3_RouteMatch *msg, envoy_config_route_v3_RouteMatch_ConnectMatcher* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteMatch_ConnectMatcher*, UPB_SIZE(32, 64), value, UPB_SIZE(40, 80), 12);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteMatch_ConnectMatcher*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 12);
}
-UPB_INLINE struct envoy_config_route_v3_RouteMatch_ConnectMatcher* envoy_config_route_v3_RouteMatch_mutable_connect_matcher(envoy_config_route_v3_RouteMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteMatch_ConnectMatcher* envoy_config_route_v3_RouteMatch_mutable_connect_matcher(envoy_config_route_v3_RouteMatch* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteMatch_ConnectMatcher* sub = (struct envoy_config_route_v3_RouteMatch_ConnectMatcher*)envoy_config_route_v3_RouteMatch_connect_matcher(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RouteMatch_ConnectMatcher*)_upb_Message_New(&envoy_config_route_v3_RouteMatch_ConnectMatcher_msginit, arena);
@@ -1297,19 +1821,24 @@ UPB_INLINE struct envoy_config_route_v3_RouteMatch_ConnectMatcher* envoy_config_
}
return sub;
}
-UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher** envoy_config_route_v3_RouteMatch_mutable_dynamic_metadata(envoy_config_route_v3_RouteMatch *msg, size_t *len) {
- return (struct envoy_type_matcher_v3_MetadataMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
+UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher** envoy_config_route_v3_RouteMatch_mutable_dynamic_metadata(envoy_config_route_v3_RouteMatch* msg, size_t* len) {
+ return (struct envoy_type_matcher_v3_MetadataMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 72), len);
}
-UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher** envoy_config_route_v3_RouteMatch_resize_dynamic_metadata(envoy_config_route_v3_RouteMatch *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_type_matcher_v3_MetadataMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher** envoy_config_route_v3_RouteMatch_resize_dynamic_metadata(envoy_config_route_v3_RouteMatch* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_type_matcher_v3_MetadataMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 72), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_route_v3_RouteMatch_add_dynamic_metadata(envoy_config_route_v3_RouteMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher* envoy_config_route_v3_RouteMatch_add_dynamic_metadata(envoy_config_route_v3_RouteMatch* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_MetadataMatcher* sub = (struct envoy_type_matcher_v3_MetadataMatcher*)_upb_Message_New(&envoy_type_matcher_v3_MetadataMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(28, 56), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 72), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_set_path_separated_prefix(envoy_config_route_v3_RouteMatch *msg, upb_StringView value) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 14);
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_set_path_template(envoy_config_route_v3_RouteMatch *msg, upb_StringView value) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 15);
+}
/* envoy.config.route.v3.RouteMatch.GrpcRouteMatchOptions */
@@ -1336,11 +1865,15 @@ UPB_INLINE envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions* envoy_config_
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions_serialize(const envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions_serialize_ex(const envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteMatch_GrpcRouteMatchOptions_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -1369,17 +1902,31 @@ UPB_INLINE envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* envoy_config
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_serialize(const envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_serialize_ex(const envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_has_presented(const envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_clear_presented(const envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_has_presented(const envoy_config_route_v3_RouteMatch_TlsContextMatchOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_presented(const envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_BoolValue*);
}
-UPB_INLINE bool envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_has_validated(const envoy_config_route_v3_RouteMatch_TlsContextMatchOptions *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_has_validated(const envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_clear_validated(const envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_validated(const envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_BoolValue*);
}
@@ -1388,7 +1935,7 @@ UPB_INLINE void envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_set_pres
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_mutable_presented(envoy_config_route_v3_RouteMatch_TlsContextMatchOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_mutable_presented(envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_presented(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -1401,7 +1948,7 @@ UPB_INLINE void envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_set_vali
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_mutable_validated(envoy_config_route_v3_RouteMatch_TlsContextMatchOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_mutable_validated(envoy_config_route_v3_RouteMatch_TlsContextMatchOptions* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_route_v3_RouteMatch_TlsContextMatchOptions_validated(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -1436,11 +1983,15 @@ UPB_INLINE envoy_config_route_v3_RouteMatch_ConnectMatcher* envoy_config_route_v
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteMatch_ConnectMatcher_serialize(const envoy_config_route_v3_RouteMatch_ConnectMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteMatch_ConnectMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteMatch_ConnectMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteMatch_ConnectMatcher_serialize_ex(const envoy_config_route_v3_RouteMatch_ConnectMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteMatch_ConnectMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteMatch_ConnectMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -1469,60 +2020,101 @@ UPB_INLINE envoy_config_route_v3_CorsPolicy* envoy_config_route_v3_CorsPolicy_pa
return ret;
}
UPB_INLINE char* envoy_config_route_v3_CorsPolicy_serialize(const envoy_config_route_v3_CorsPolicy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_CorsPolicy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_CorsPolicy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_CorsPolicy_serialize_ex(const envoy_config_route_v3_CorsPolicy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_CorsPolicy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_CorsPolicy_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_route_v3_CorsPolicy_enabled_specifier_filter_enabled = 9,
envoy_config_route_v3_CorsPolicy_enabled_specifier_NOT_SET = 0
} envoy_config_route_v3_CorsPolicy_enabled_specifier_oneofcases;
-UPB_INLINE envoy_config_route_v3_CorsPolicy_enabled_specifier_oneofcases envoy_config_route_v3_CorsPolicy_enabled_specifier_case(const envoy_config_route_v3_CorsPolicy* msg) { return (envoy_config_route_v3_CorsPolicy_enabled_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(52, 104), int32_t); }
-
+UPB_INLINE envoy_config_route_v3_CorsPolicy_enabled_specifier_oneofcases envoy_config_route_v3_CorsPolicy_enabled_specifier_case(const envoy_config_route_v3_CorsPolicy* msg) {
+ return (envoy_config_route_v3_CorsPolicy_enabled_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_config_route_v3_CorsPolicy_clear_allow_methods(const envoy_config_route_v3_CorsPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_route_v3_CorsPolicy_allow_methods(const envoy_config_route_v3_CorsPolicy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE void envoy_config_route_v3_CorsPolicy_clear_allow_headers(const envoy_config_route_v3_CorsPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_CorsPolicy_allow_headers(const envoy_config_route_v3_CorsPolicy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+}
+UPB_INLINE void envoy_config_route_v3_CorsPolicy_clear_expose_headers(const envoy_config_route_v3_CorsPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_CorsPolicy_expose_headers(const envoy_config_route_v3_CorsPolicy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView);
+}
+UPB_INLINE void envoy_config_route_v3_CorsPolicy_clear_max_age(const envoy_config_route_v3_CorsPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_CorsPolicy_max_age(const envoy_config_route_v3_CorsPolicy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), upb_StringView);
+}
+UPB_INLINE bool envoy_config_route_v3_CorsPolicy_has_allow_credentials(const envoy_config_route_v3_CorsPolicy* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_CorsPolicy_clear_allow_credentials(const envoy_config_route_v3_CorsPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_CorsPolicy_has_allow_credentials(const envoy_config_route_v3_CorsPolicy *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_CorsPolicy_allow_credentials(const envoy_config_route_v3_CorsPolicy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_config_route_v3_CorsPolicy_has_filter_enabled(const envoy_config_route_v3_CorsPolicy* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 9;
+}
+UPB_INLINE void envoy_config_route_v3_CorsPolicy_clear_filter_enabled(const envoy_config_route_v3_CorsPolicy* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_RuntimeFractionalPercent*, UPB_SIZE(52, 96), 0, UPB_SIZE(4, 4), envoy_config_route_v3_CorsPolicy_enabled_specifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_route_v3_CorsPolicy_filter_enabled(const envoy_config_route_v3_CorsPolicy* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_RuntimeFractionalPercent*, UPB_SIZE(52, 96), UPB_SIZE(4, 4), 9, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_CorsPolicy_has_shadow_enabled(const envoy_config_route_v3_CorsPolicy* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_CorsPolicy_clear_shadow_enabled(const envoy_config_route_v3_CorsPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_CorsPolicy_has_filter_enabled(const envoy_config_route_v3_CorsPolicy *msg) { return _upb_getoneofcase(msg, UPB_SIZE(52, 104)) == 9; }
-UPB_INLINE const struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_route_v3_CorsPolicy_filter_enabled(const envoy_config_route_v3_CorsPolicy *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_RuntimeFractionalPercent*, UPB_SIZE(48, 96), UPB_SIZE(52, 104), 9, NULL); }
-UPB_INLINE bool envoy_config_route_v3_CorsPolicy_has_shadow_enabled(const envoy_config_route_v3_CorsPolicy *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_route_v3_CorsPolicy_shadow_enabled(const envoy_config_route_v3_CorsPolicy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 80), const struct envoy_config_core_v3_RuntimeFractionalPercent*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const struct envoy_config_core_v3_RuntimeFractionalPercent*);
+}
+UPB_INLINE bool envoy_config_route_v3_CorsPolicy_has_allow_origin_string_match(const envoy_config_route_v3_CorsPolicy* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 88));
+}
+UPB_INLINE void envoy_config_route_v3_CorsPolicy_clear_allow_origin_string_match(const envoy_config_route_v3_CorsPolicy* msg) {
+ _upb_array_detach(msg, UPB_SIZE(48, 88));
+}
+UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* const* envoy_config_route_v3_CorsPolicy_allow_origin_string_match(const envoy_config_route_v3_CorsPolicy* msg, size_t* len) {
+ return (const struct envoy_type_matcher_v3_StringMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(48, 88), len);
}
-UPB_INLINE bool envoy_config_route_v3_CorsPolicy_has_allow_origin_string_match(const envoy_config_route_v3_CorsPolicy *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 88)); }
-UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* const* envoy_config_route_v3_CorsPolicy_allow_origin_string_match(const envoy_config_route_v3_CorsPolicy *msg, size_t *len) { return (const struct envoy_type_matcher_v3_StringMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(44, 88), len); }
UPB_INLINE void envoy_config_route_v3_CorsPolicy_set_allow_methods(envoy_config_route_v3_CorsPolicy *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_CorsPolicy_set_allow_headers(envoy_config_route_v3_CorsPolicy *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_CorsPolicy_set_expose_headers(envoy_config_route_v3_CorsPolicy *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_CorsPolicy_set_max_age(envoy_config_route_v3_CorsPolicy *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_CorsPolicy_set_allow_credentials(envoy_config_route_v3_CorsPolicy *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(36, 72), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_CorsPolicy_mutable_allow_credentials(envoy_config_route_v3_CorsPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_CorsPolicy_mutable_allow_credentials(envoy_config_route_v3_CorsPolicy* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_route_v3_CorsPolicy_allow_credentials(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -1532,9 +2124,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_CorsPolicy_mu
return sub;
}
UPB_INLINE void envoy_config_route_v3_CorsPolicy_set_filter_enabled(envoy_config_route_v3_CorsPolicy *msg, struct envoy_config_core_v3_RuntimeFractionalPercent* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_RuntimeFractionalPercent*, UPB_SIZE(48, 96), value, UPB_SIZE(52, 104), 9);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_RuntimeFractionalPercent*, UPB_SIZE(52, 96), value, UPB_SIZE(4, 4), 9);
}
-UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_route_v3_CorsPolicy_mutable_filter_enabled(envoy_config_route_v3_CorsPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_route_v3_CorsPolicy_mutable_filter_enabled(envoy_config_route_v3_CorsPolicy* msg, upb_Arena* arena) {
struct envoy_config_core_v3_RuntimeFractionalPercent* sub = (struct envoy_config_core_v3_RuntimeFractionalPercent*)envoy_config_route_v3_CorsPolicy_filter_enabled(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_RuntimeFractionalPercent*)_upb_Message_New(&envoy_config_core_v3_RuntimeFractionalPercent_msginit, arena);
@@ -1545,9 +2137,9 @@ UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_ro
}
UPB_INLINE void envoy_config_route_v3_CorsPolicy_set_shadow_enabled(envoy_config_route_v3_CorsPolicy *msg, struct envoy_config_core_v3_RuntimeFractionalPercent* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 80), struct envoy_config_core_v3_RuntimeFractionalPercent*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 80), struct envoy_config_core_v3_RuntimeFractionalPercent*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_route_v3_CorsPolicy_mutable_shadow_enabled(envoy_config_route_v3_CorsPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_route_v3_CorsPolicy_mutable_shadow_enabled(envoy_config_route_v3_CorsPolicy* msg, upb_Arena* arena) {
struct envoy_config_core_v3_RuntimeFractionalPercent* sub = (struct envoy_config_core_v3_RuntimeFractionalPercent*)envoy_config_route_v3_CorsPolicy_shadow_enabled(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_RuntimeFractionalPercent*)_upb_Message_New(&envoy_config_core_v3_RuntimeFractionalPercent_msginit, arena);
@@ -1556,16 +2148,15 @@ UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_ro
}
return sub;
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher** envoy_config_route_v3_CorsPolicy_mutable_allow_origin_string_match(envoy_config_route_v3_CorsPolicy *msg, size_t *len) {
- return (struct envoy_type_matcher_v3_StringMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 88), len);
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher** envoy_config_route_v3_CorsPolicy_mutable_allow_origin_string_match(envoy_config_route_v3_CorsPolicy* msg, size_t* len) {
+ return (struct envoy_type_matcher_v3_StringMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 88), len);
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher** envoy_config_route_v3_CorsPolicy_resize_allow_origin_string_match(envoy_config_route_v3_CorsPolicy *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_type_matcher_v3_StringMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 88), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher** envoy_config_route_v3_CorsPolicy_resize_allow_origin_string_match(envoy_config_route_v3_CorsPolicy* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_type_matcher_v3_StringMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 88), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_route_v3_CorsPolicy_add_allow_origin_string_match(envoy_config_route_v3_CorsPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_route_v3_CorsPolicy_add_allow_origin_string_match(envoy_config_route_v3_CorsPolicy* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StringMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(44, 88), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(48, 88), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1595,21 +2186,27 @@ UPB_INLINE envoy_config_route_v3_RouteAction* envoy_config_route_v3_RouteAction_
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_serialize(const envoy_config_route_v3_RouteAction* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_serialize_ex(const envoy_config_route_v3_RouteAction* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_route_v3_RouteAction_cluster_specifier_cluster = 1,
envoy_config_route_v3_RouteAction_cluster_specifier_cluster_header = 2,
envoy_config_route_v3_RouteAction_cluster_specifier_weighted_clusters = 3,
envoy_config_route_v3_RouteAction_cluster_specifier_cluster_specifier_plugin = 37,
+ envoy_config_route_v3_RouteAction_cluster_specifier_inline_cluster_specifier_plugin = 39,
envoy_config_route_v3_RouteAction_cluster_specifier_NOT_SET = 0
} envoy_config_route_v3_RouteAction_cluster_specifier_oneofcases;
-UPB_INLINE envoy_config_route_v3_RouteAction_cluster_specifier_oneofcases envoy_config_route_v3_RouteAction_cluster_specifier_case(const envoy_config_route_v3_RouteAction* msg) { return (envoy_config_route_v3_RouteAction_cluster_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(108, 200), int32_t); }
-
+UPB_INLINE envoy_config_route_v3_RouteAction_cluster_specifier_oneofcases envoy_config_route_v3_RouteAction_cluster_specifier_case(const envoy_config_route_v3_RouteAction* msg) {
+ return (envoy_config_route_v3_RouteAction_cluster_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(24, 24), int32_t);
+}
typedef enum {
envoy_config_route_v3_RouteAction_host_rewrite_specifier_host_rewrite_literal = 6,
envoy_config_route_v3_RouteAction_host_rewrite_specifier_auto_host_rewrite = 7,
@@ -1617,114 +2214,308 @@ typedef enum {
envoy_config_route_v3_RouteAction_host_rewrite_specifier_host_rewrite_path_regex = 35,
envoy_config_route_v3_RouteAction_host_rewrite_specifier_NOT_SET = 0
} envoy_config_route_v3_RouteAction_host_rewrite_specifier_oneofcases;
-UPB_INLINE envoy_config_route_v3_RouteAction_host_rewrite_specifier_oneofcases envoy_config_route_v3_RouteAction_host_rewrite_specifier_case(const envoy_config_route_v3_RouteAction* msg) { return (envoy_config_route_v3_RouteAction_host_rewrite_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(120, 224), int32_t); }
-
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_cluster(const envoy_config_route_v3_RouteAction *msg) { return _upb_getoneofcase(msg, UPB_SIZE(108, 200)) == 1; }
-UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_cluster(const envoy_config_route_v3_RouteAction *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(100, 184), UPB_SIZE(108, 200), 1, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_cluster_header(const envoy_config_route_v3_RouteAction *msg) { return _upb_getoneofcase(msg, UPB_SIZE(108, 200)) == 2; }
-UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_cluster_header(const envoy_config_route_v3_RouteAction *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(100, 184), UPB_SIZE(108, 200), 2, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_weighted_clusters(const envoy_config_route_v3_RouteAction *msg) { return _upb_getoneofcase(msg, UPB_SIZE(108, 200)) == 3; }
-UPB_INLINE const envoy_config_route_v3_WeightedCluster* envoy_config_route_v3_RouteAction_weighted_clusters(const envoy_config_route_v3_RouteAction *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_WeightedCluster*, UPB_SIZE(100, 184), UPB_SIZE(108, 200), 3, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_metadata_match(const envoy_config_route_v3_RouteAction *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_config_route_v3_RouteAction_host_rewrite_specifier_oneofcases envoy_config_route_v3_RouteAction_host_rewrite_specifier_case(const envoy_config_route_v3_RouteAction* msg) {
+ return (envoy_config_route_v3_RouteAction_host_rewrite_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_cluster(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(24, 24)) == 1;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_cluster(const envoy_config_route_v3_RouteAction* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(36, 48), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(24, 24), envoy_config_route_v3_RouteAction_cluster_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_cluster(const envoy_config_route_v3_RouteAction* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(36, 48), UPB_SIZE(24, 24), 1, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_cluster_header(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(24, 24)) == 2;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_cluster_header(const envoy_config_route_v3_RouteAction* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(36, 48), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(24, 24), envoy_config_route_v3_RouteAction_cluster_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_cluster_header(const envoy_config_route_v3_RouteAction* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(36, 48), UPB_SIZE(24, 24), 2, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_weighted_clusters(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(24, 24)) == 3;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_weighted_clusters(const envoy_config_route_v3_RouteAction* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_WeightedCluster*, UPB_SIZE(36, 48), 0, UPB_SIZE(24, 24), envoy_config_route_v3_RouteAction_cluster_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_WeightedCluster* envoy_config_route_v3_RouteAction_weighted_clusters(const envoy_config_route_v3_RouteAction* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_WeightedCluster*, UPB_SIZE(36, 48), UPB_SIZE(24, 24), 3, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_metadata_match(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_metadata_match(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 64), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_Metadata* envoy_config_route_v3_RouteAction_metadata_match(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 40), const struct envoy_config_core_v3_Metadata*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 64), const struct envoy_config_core_v3_Metadata*);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_prefix_rewrite(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 72), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_prefix_rewrite(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 72), upb_StringView);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_host_rewrite_literal(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(16, 16)) == 6;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_host_rewrite_literal(const envoy_config_route_v3_RouteAction* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(28, 32), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(16, 16), envoy_config_route_v3_RouteAction_host_rewrite_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_host_rewrite_literal(const envoy_config_route_v3_RouteAction* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(28, 32), UPB_SIZE(16, 16), 6, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_auto_host_rewrite(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(16, 16)) == 7;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_auto_host_rewrite(const envoy_config_route_v3_RouteAction* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_BoolValue*, UPB_SIZE(28, 32), 0, UPB_SIZE(16, 16), envoy_config_route_v3_RouteAction_host_rewrite_specifier_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_auto_host_rewrite(const envoy_config_route_v3_RouteAction* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_BoolValue*, UPB_SIZE(28, 32), UPB_SIZE(16, 16), 7, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_timeout(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_timeout(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 88), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_host_rewrite_literal(const envoy_config_route_v3_RouteAction *msg) { return _upb_getoneofcase(msg, UPB_SIZE(120, 224)) == 6; }
-UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_host_rewrite_literal(const envoy_config_route_v3_RouteAction *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(112, 208), UPB_SIZE(120, 224), 6, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_auto_host_rewrite(const envoy_config_route_v3_RouteAction *msg) { return _upb_getoneofcase(msg, UPB_SIZE(120, 224)) == 7; }
-UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_auto_host_rewrite(const envoy_config_route_v3_RouteAction *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_BoolValue*, UPB_SIZE(112, 208), UPB_SIZE(120, 224), 7, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_timeout(const envoy_config_route_v3_RouteAction *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_timeout(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 48), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(56, 88), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_retry_policy(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_retry_policy(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 96), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_retry_policy(const envoy_config_route_v3_RouteAction *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const envoy_config_route_v3_RetryPolicy* envoy_config_route_v3_RouteAction_retry_policy(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(36, 56), const envoy_config_route_v3_RetryPolicy*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(60, 96), const envoy_config_route_v3_RetryPolicy*);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_priority(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_route_v3_RouteAction_priority(const envoy_config_route_v3_RouteAction* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_rate_limits(const envoy_config_route_v3_RouteAction *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(84, 152)); }
-UPB_INLINE const envoy_config_route_v3_RateLimit* const* envoy_config_route_v3_RouteAction_rate_limits(const envoy_config_route_v3_RouteAction *msg, size_t *len) { return (const envoy_config_route_v3_RateLimit* const*)_upb_array_accessor(msg, UPB_SIZE(84, 152), len); }
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_include_vh_rate_limits(const envoy_config_route_v3_RouteAction *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_rate_limits(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(64, 104));
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_rate_limits(const envoy_config_route_v3_RouteAction* msg) {
+ _upb_array_detach(msg, UPB_SIZE(64, 104));
+}
+UPB_INLINE const envoy_config_route_v3_RateLimit* const* envoy_config_route_v3_RouteAction_rate_limits(const envoy_config_route_v3_RouteAction* msg, size_t* len) {
+ return (const envoy_config_route_v3_RateLimit* const*)_upb_array_accessor(msg, UPB_SIZE(64, 104), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_include_vh_rate_limits(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_include_vh_rate_limits(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 112), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_include_vh_rate_limits(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 64), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(68, 112), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_hash_policy(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(72, 120));
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_hash_policy(const envoy_config_route_v3_RouteAction* msg) {
+ _upb_array_detach(msg, UPB_SIZE(72, 120));
+}
+UPB_INLINE const envoy_config_route_v3_RouteAction_HashPolicy* const* envoy_config_route_v3_RouteAction_hash_policy(const envoy_config_route_v3_RouteAction* msg, size_t* len) {
+ return (const envoy_config_route_v3_RouteAction_HashPolicy* const*)_upb_array_accessor(msg, UPB_SIZE(72, 120), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_cors(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_cors(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 128), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_hash_policy(const envoy_config_route_v3_RouteAction *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(88, 160)); }
-UPB_INLINE const envoy_config_route_v3_RouteAction_HashPolicy* const* envoy_config_route_v3_RouteAction_hash_policy(const envoy_config_route_v3_RouteAction *msg, size_t *len) { return (const envoy_config_route_v3_RouteAction_HashPolicy* const*)_upb_array_accessor(msg, UPB_SIZE(88, 160), len); }
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_cors(const envoy_config_route_v3_RouteAction *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE const envoy_config_route_v3_CorsPolicy* envoy_config_route_v3_RouteAction_cors(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(44, 72), const envoy_config_route_v3_CorsPolicy*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(76, 128), const envoy_config_route_v3_CorsPolicy*);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_cluster_not_found_response_code(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_route_v3_RouteAction_cluster_not_found_response_code(const envoy_config_route_v3_RouteAction* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_max_grpc_timeout(const envoy_config_route_v3_RouteAction *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_max_grpc_timeout(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_max_grpc_timeout(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 136), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_max_grpc_timeout(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 80), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(80, 136), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_idle_timeout(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_idle_timeout(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(84, 144), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_idle_timeout(const envoy_config_route_v3_RouteAction *msg) { return _upb_hasbit(msg, 7); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_idle_timeout(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(52, 88), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(84, 144), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_upgrade_configs(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(88, 152));
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_upgrade_configs(const envoy_config_route_v3_RouteAction* msg) {
+ _upb_array_detach(msg, UPB_SIZE(88, 152));
+}
+UPB_INLINE const envoy_config_route_v3_RouteAction_UpgradeConfig* const* envoy_config_route_v3_RouteAction_upgrade_configs(const envoy_config_route_v3_RouteAction* msg, size_t* len) {
+ return (const envoy_config_route_v3_RouteAction_UpgradeConfig* const*)_upb_array_accessor(msg, UPB_SIZE(88, 152), len);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_internal_redirect_action(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = 0;
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_upgrade_configs(const envoy_config_route_v3_RouteAction *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(92, 168)); }
-UPB_INLINE const envoy_config_route_v3_RouteAction_UpgradeConfig* const* envoy_config_route_v3_RouteAction_upgrade_configs(const envoy_config_route_v3_RouteAction *msg, size_t *len) { return (const envoy_config_route_v3_RouteAction_UpgradeConfig* const*)_upb_array_accessor(msg, UPB_SIZE(92, 168), len); }
UPB_INLINE int32_t envoy_config_route_v3_RouteAction_internal_redirect_action(const envoy_config_route_v3_RouteAction* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t);
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_hedge_policy(const envoy_config_route_v3_RouteAction *msg) { return _upb_hasbit(msg, 8); }
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_hedge_policy(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 8);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_hedge_policy(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(92, 160), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_route_v3_HedgePolicy* envoy_config_route_v3_RouteAction_hedge_policy(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(56, 96), const envoy_config_route_v3_HedgePolicy*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(92, 160), const envoy_config_route_v3_HedgePolicy*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_grpc_timeout_offset(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 9);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_grpc_timeout_offset(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(96, 168), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_grpc_timeout_offset(const envoy_config_route_v3_RouteAction *msg) { return _upb_hasbit(msg, 9); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_grpc_timeout_offset(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(60, 104), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(96, 168), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_host_rewrite_header(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(16, 16)) == 29;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_host_rewrite_header(const envoy_config_route_v3_RouteAction* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(28, 32), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(16, 16), envoy_config_route_v3_RouteAction_host_rewrite_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_host_rewrite_header(const envoy_config_route_v3_RouteAction* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(28, 32), UPB_SIZE(16, 16), 29, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_request_mirror_policies(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(100, 176));
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_request_mirror_policies(const envoy_config_route_v3_RouteAction* msg) {
+ _upb_array_detach(msg, UPB_SIZE(100, 176));
+}
+UPB_INLINE const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* const* envoy_config_route_v3_RouteAction_request_mirror_policies(const envoy_config_route_v3_RouteAction* msg, size_t* len) {
+ return (const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* const*)_upb_array_accessor(msg, UPB_SIZE(100, 176), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_max_internal_redirects(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 10);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_max_internal_redirects(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(104, 184), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_host_rewrite_header(const envoy_config_route_v3_RouteAction *msg) { return _upb_getoneofcase(msg, UPB_SIZE(120, 224)) == 29; }
-UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_host_rewrite_header(const envoy_config_route_v3_RouteAction *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(112, 208), UPB_SIZE(120, 224), 29, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_request_mirror_policies(const envoy_config_route_v3_RouteAction *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(96, 176)); }
-UPB_INLINE const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* const* envoy_config_route_v3_RouteAction_request_mirror_policies(const envoy_config_route_v3_RouteAction *msg, size_t *len) { return (const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* const*)_upb_array_accessor(msg, UPB_SIZE(96, 176), len); }
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_max_internal_redirects(const envoy_config_route_v3_RouteAction *msg) { return _upb_hasbit(msg, 10); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_route_v3_RouteAction_max_internal_redirects(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(64, 112), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(104, 184), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_regex_rewrite(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 11);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_regex_rewrite(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(108, 192), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_regex_rewrite(const envoy_config_route_v3_RouteAction *msg) { return _upb_hasbit(msg, 11); }
UPB_INLINE const struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RouteAction_regex_rewrite(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(68, 120), const struct envoy_type_matcher_v3_RegexMatchAndSubstitute*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(108, 192), const struct envoy_type_matcher_v3_RegexMatchAndSubstitute*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_retry_policy_typed_config(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 12);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_retry_policy_typed_config(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(112, 200), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_retry_policy_typed_config(const envoy_config_route_v3_RouteAction *msg) { return _upb_hasbit(msg, 12); }
UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_RouteAction_retry_policy_typed_config(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(72, 128), const struct google_protobuf_Any*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(112, 200), const struct google_protobuf_Any*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_internal_redirect_policy(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 13);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_internal_redirect_policy(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(116, 208), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_internal_redirect_policy(const envoy_config_route_v3_RouteAction *msg) { return _upb_hasbit(msg, 13); }
UPB_INLINE const envoy_config_route_v3_InternalRedirectPolicy* envoy_config_route_v3_RouteAction_internal_redirect_policy(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(76, 136), const envoy_config_route_v3_InternalRedirectPolicy*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(116, 208), const envoy_config_route_v3_InternalRedirectPolicy*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_host_rewrite_path_regex(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(16, 16)) == 35;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_host_rewrite_path_regex(const envoy_config_route_v3_RouteAction* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatchAndSubstitute*, UPB_SIZE(28, 32), 0, UPB_SIZE(16, 16), envoy_config_route_v3_RouteAction_host_rewrite_specifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RouteAction_host_rewrite_path_regex(const envoy_config_route_v3_RouteAction* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_RegexMatchAndSubstitute*, UPB_SIZE(28, 32), UPB_SIZE(16, 16), 35, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_max_stream_duration(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 14);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_max_stream_duration(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(120, 216), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_host_rewrite_path_regex(const envoy_config_route_v3_RouteAction *msg) { return _upb_getoneofcase(msg, UPB_SIZE(120, 224)) == 35; }
-UPB_INLINE const struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RouteAction_host_rewrite_path_regex(const envoy_config_route_v3_RouteAction *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_RegexMatchAndSubstitute*, UPB_SIZE(112, 208), UPB_SIZE(120, 224), 35, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_max_stream_duration(const envoy_config_route_v3_RouteAction *msg) { return _upb_hasbit(msg, 14); }
UPB_INLINE const envoy_config_route_v3_RouteAction_MaxStreamDuration* envoy_config_route_v3_RouteAction_max_stream_duration(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(80, 144), const envoy_config_route_v3_RouteAction_MaxStreamDuration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(120, 216), const envoy_config_route_v3_RouteAction_MaxStreamDuration*);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_cluster_specifier_plugin(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(24, 24)) == 37;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_cluster_specifier_plugin(const envoy_config_route_v3_RouteAction* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(36, 48), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(24, 24), envoy_config_route_v3_RouteAction_cluster_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_cluster_specifier_plugin(const envoy_config_route_v3_RouteAction* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(36, 48), UPB_SIZE(24, 24), 37, upb_StringView_FromString(""));
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_append_x_forwarded_host(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool) = 0;
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_has_cluster_specifier_plugin(const envoy_config_route_v3_RouteAction *msg) { return _upb_getoneofcase(msg, UPB_SIZE(108, 200)) == 37; }
-UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_cluster_specifier_plugin(const envoy_config_route_v3_RouteAction *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(100, 184), UPB_SIZE(108, 200), 37, upb_StringView_FromString("")); }
UPB_INLINE bool envoy_config_route_v3_RouteAction_append_x_forwarded_host(const envoy_config_route_v3_RouteAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_inline_cluster_specifier_plugin(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(24, 24)) == 39;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_inline_cluster_specifier_plugin(const envoy_config_route_v3_RouteAction* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_ClusterSpecifierPlugin*, UPB_SIZE(36, 48), 0, UPB_SIZE(24, 24), envoy_config_route_v3_RouteAction_cluster_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_ClusterSpecifierPlugin* envoy_config_route_v3_RouteAction_inline_cluster_specifier_plugin(const envoy_config_route_v3_RouteAction* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_ClusterSpecifierPlugin*, UPB_SIZE(36, 48), UPB_SIZE(24, 24), 39, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_has_early_data_policy(const envoy_config_route_v3_RouteAction* msg) {
+ return _upb_hasbit(msg, 15);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_early_data_policy(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(124, 224), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_RouteAction_early_data_policy(const envoy_config_route_v3_RouteAction* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(124, 224), const struct envoy_config_core_v3_TypedExtensionConfig*);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_clear_path_template_rewrite(const envoy_config_route_v3_RouteAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(128, 232), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_path_template_rewrite(const envoy_config_route_v3_RouteAction* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(128, 232), upb_StringView);
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_cluster(envoy_config_route_v3_RouteAction *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(100, 184), value, UPB_SIZE(108, 200), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(36, 48), value, UPB_SIZE(24, 24), 1);
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_cluster_header(envoy_config_route_v3_RouteAction *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(100, 184), value, UPB_SIZE(108, 200), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(36, 48), value, UPB_SIZE(24, 24), 2);
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_weighted_clusters(envoy_config_route_v3_RouteAction *msg, envoy_config_route_v3_WeightedCluster* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_WeightedCluster*, UPB_SIZE(100, 184), value, UPB_SIZE(108, 200), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_WeightedCluster*, UPB_SIZE(36, 48), value, UPB_SIZE(24, 24), 3);
}
-UPB_INLINE struct envoy_config_route_v3_WeightedCluster* envoy_config_route_v3_RouteAction_mutable_weighted_clusters(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_WeightedCluster* envoy_config_route_v3_RouteAction_mutable_weighted_clusters(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct envoy_config_route_v3_WeightedCluster* sub = (struct envoy_config_route_v3_WeightedCluster*)envoy_config_route_v3_RouteAction_weighted_clusters(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_WeightedCluster*)_upb_Message_New(&envoy_config_route_v3_WeightedCluster_msginit, arena);
@@ -1735,9 +2526,9 @@ UPB_INLINE struct envoy_config_route_v3_WeightedCluster* envoy_config_route_v3_R
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_metadata_match(envoy_config_route_v3_RouteAction *msg, struct envoy_config_core_v3_Metadata* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 40), struct envoy_config_core_v3_Metadata*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 64), struct envoy_config_core_v3_Metadata*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_route_v3_RouteAction_mutable_metadata_match(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_route_v3_RouteAction_mutable_metadata_match(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Metadata* sub = (struct envoy_config_core_v3_Metadata*)envoy_config_route_v3_RouteAction_metadata_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Metadata*)_upb_Message_New(&envoy_config_core_v3_Metadata_msginit, arena);
@@ -1747,15 +2538,15 @@ UPB_INLINE struct envoy_config_core_v3_Metadata* envoy_config_route_v3_RouteActi
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_prefix_rewrite(envoy_config_route_v3_RouteAction *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 72), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_host_rewrite_literal(envoy_config_route_v3_RouteAction *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(112, 208), value, UPB_SIZE(120, 224), 6);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(28, 32), value, UPB_SIZE(16, 16), 6);
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_auto_host_rewrite(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_BoolValue* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_BoolValue*, UPB_SIZE(112, 208), value, UPB_SIZE(120, 224), 7);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_BoolValue*, UPB_SIZE(28, 32), value, UPB_SIZE(16, 16), 7);
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_mutable_auto_host_rewrite(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_mutable_auto_host_rewrite(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_route_v3_RouteAction_auto_host_rewrite(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -1766,9 +2557,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_m
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_timeout(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 48), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 88), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mutable_timeout(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mutable_timeout(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_route_v3_RouteAction_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -1779,9 +2570,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mu
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_retry_policy(envoy_config_route_v3_RouteAction *msg, envoy_config_route_v3_RetryPolicy* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(36, 56), envoy_config_route_v3_RetryPolicy*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 96), envoy_config_route_v3_RetryPolicy*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_RetryPolicy* envoy_config_route_v3_RouteAction_mutable_retry_policy(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RetryPolicy* envoy_config_route_v3_RouteAction_mutable_retry_policy(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RetryPolicy* sub = (struct envoy_config_route_v3_RetryPolicy*)envoy_config_route_v3_RouteAction_retry_policy(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RetryPolicy*)_upb_Message_New(&envoy_config_route_v3_RetryPolicy_msginit, arena);
@@ -1793,24 +2584,23 @@ UPB_INLINE struct envoy_config_route_v3_RetryPolicy* envoy_config_route_v3_Route
UPB_INLINE void envoy_config_route_v3_RouteAction_set_priority(envoy_config_route_v3_RouteAction *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
-UPB_INLINE envoy_config_route_v3_RateLimit** envoy_config_route_v3_RouteAction_mutable_rate_limits(envoy_config_route_v3_RouteAction *msg, size_t *len) {
- return (envoy_config_route_v3_RateLimit**)_upb_array_mutable_accessor(msg, UPB_SIZE(84, 152), len);
+UPB_INLINE envoy_config_route_v3_RateLimit** envoy_config_route_v3_RouteAction_mutable_rate_limits(envoy_config_route_v3_RouteAction* msg, size_t* len) {
+ return (envoy_config_route_v3_RateLimit**)_upb_array_mutable_accessor(msg, UPB_SIZE(64, 104), len);
}
-UPB_INLINE envoy_config_route_v3_RateLimit** envoy_config_route_v3_RouteAction_resize_rate_limits(envoy_config_route_v3_RouteAction *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_RateLimit**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(84, 152), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_RateLimit** envoy_config_route_v3_RouteAction_resize_rate_limits(envoy_config_route_v3_RouteAction* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_RateLimit**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(64, 104), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_RateLimit* envoy_config_route_v3_RouteAction_add_rate_limits(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RateLimit* envoy_config_route_v3_RouteAction_add_rate_limits(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RateLimit* sub = (struct envoy_config_route_v3_RateLimit*)_upb_Message_New(&envoy_config_route_v3_RateLimit_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(84, 152), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(64, 104), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_include_vh_rate_limits(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 64), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 112), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_mutable_include_vh_rate_limits(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_mutable_include_vh_rate_limits(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_route_v3_RouteAction_include_vh_rate_limits(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -1819,24 +2609,23 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_m
}
return sub;
}
-UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy** envoy_config_route_v3_RouteAction_mutable_hash_policy(envoy_config_route_v3_RouteAction *msg, size_t *len) {
- return (envoy_config_route_v3_RouteAction_HashPolicy**)_upb_array_mutable_accessor(msg, UPB_SIZE(88, 160), len);
+UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy** envoy_config_route_v3_RouteAction_mutable_hash_policy(envoy_config_route_v3_RouteAction* msg, size_t* len) {
+ return (envoy_config_route_v3_RouteAction_HashPolicy**)_upb_array_mutable_accessor(msg, UPB_SIZE(72, 120), len);
}
-UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy** envoy_config_route_v3_RouteAction_resize_hash_policy(envoy_config_route_v3_RouteAction *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_RouteAction_HashPolicy**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(88, 160), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy** envoy_config_route_v3_RouteAction_resize_hash_policy(envoy_config_route_v3_RouteAction* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_RouteAction_HashPolicy**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(72, 120), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy* envoy_config_route_v3_RouteAction_add_hash_policy(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy* envoy_config_route_v3_RouteAction_add_hash_policy(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteAction_HashPolicy* sub = (struct envoy_config_route_v3_RouteAction_HashPolicy*)_upb_Message_New(&envoy_config_route_v3_RouteAction_HashPolicy_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(88, 160), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(72, 120), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_cors(envoy_config_route_v3_RouteAction *msg, envoy_config_route_v3_CorsPolicy* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(44, 72), envoy_config_route_v3_CorsPolicy*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 128), envoy_config_route_v3_CorsPolicy*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_CorsPolicy* envoy_config_route_v3_RouteAction_mutable_cors(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_CorsPolicy* envoy_config_route_v3_RouteAction_mutable_cors(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct envoy_config_route_v3_CorsPolicy* sub = (struct envoy_config_route_v3_CorsPolicy*)envoy_config_route_v3_RouteAction_cors(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_CorsPolicy*)_upb_Message_New(&envoy_config_route_v3_CorsPolicy_msginit, arena);
@@ -1850,9 +2639,9 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_set_cluster_not_found_response
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_max_grpc_timeout(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 80), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 136), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mutable_max_grpc_timeout(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mutable_max_grpc_timeout(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_route_v3_RouteAction_max_grpc_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -1863,9 +2652,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mu
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_idle_timeout(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 7);
- *UPB_PTR_AT(msg, UPB_SIZE(52, 88), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(84, 144), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mutable_idle_timeout(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mutable_idle_timeout(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_route_v3_RouteAction_idle_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -1874,16 +2663,15 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mu
}
return sub;
}
-UPB_INLINE envoy_config_route_v3_RouteAction_UpgradeConfig** envoy_config_route_v3_RouteAction_mutable_upgrade_configs(envoy_config_route_v3_RouteAction *msg, size_t *len) {
- return (envoy_config_route_v3_RouteAction_UpgradeConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(92, 168), len);
+UPB_INLINE envoy_config_route_v3_RouteAction_UpgradeConfig** envoy_config_route_v3_RouteAction_mutable_upgrade_configs(envoy_config_route_v3_RouteAction* msg, size_t* len) {
+ return (envoy_config_route_v3_RouteAction_UpgradeConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(88, 152), len);
}
-UPB_INLINE envoy_config_route_v3_RouteAction_UpgradeConfig** envoy_config_route_v3_RouteAction_resize_upgrade_configs(envoy_config_route_v3_RouteAction *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_RouteAction_UpgradeConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(92, 168), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_RouteAction_UpgradeConfig** envoy_config_route_v3_RouteAction_resize_upgrade_configs(envoy_config_route_v3_RouteAction* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_RouteAction_UpgradeConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(88, 152), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_RouteAction_UpgradeConfig* envoy_config_route_v3_RouteAction_add_upgrade_configs(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteAction_UpgradeConfig* envoy_config_route_v3_RouteAction_add_upgrade_configs(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteAction_UpgradeConfig* sub = (struct envoy_config_route_v3_RouteAction_UpgradeConfig*)_upb_Message_New(&envoy_config_route_v3_RouteAction_UpgradeConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(92, 168), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(88, 152), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1892,9 +2680,9 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_set_internal_redirect_action(e
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_hedge_policy(envoy_config_route_v3_RouteAction *msg, envoy_config_route_v3_HedgePolicy* value) {
_upb_sethas(msg, 8);
- *UPB_PTR_AT(msg, UPB_SIZE(56, 96), envoy_config_route_v3_HedgePolicy*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(92, 160), envoy_config_route_v3_HedgePolicy*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_HedgePolicy* envoy_config_route_v3_RouteAction_mutable_hedge_policy(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HedgePolicy* envoy_config_route_v3_RouteAction_mutable_hedge_policy(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct envoy_config_route_v3_HedgePolicy* sub = (struct envoy_config_route_v3_HedgePolicy*)envoy_config_route_v3_RouteAction_hedge_policy(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_HedgePolicy*)_upb_Message_New(&envoy_config_route_v3_HedgePolicy_msginit, arena);
@@ -1905,9 +2693,9 @@ UPB_INLINE struct envoy_config_route_v3_HedgePolicy* envoy_config_route_v3_Route
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_grpc_timeout_offset(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 9);
- *UPB_PTR_AT(msg, UPB_SIZE(60, 104), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(96, 168), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mutable_grpc_timeout_offset(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mutable_grpc_timeout_offset(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_route_v3_RouteAction_grpc_timeout_offset(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -1917,26 +2705,25 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_mu
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_host_rewrite_header(envoy_config_route_v3_RouteAction *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(112, 208), value, UPB_SIZE(120, 224), 29);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(28, 32), value, UPB_SIZE(16, 16), 29);
}
-UPB_INLINE envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_config_route_v3_RouteAction_mutable_request_mirror_policies(envoy_config_route_v3_RouteAction *msg, size_t *len) {
- return (envoy_config_route_v3_RouteAction_RequestMirrorPolicy**)_upb_array_mutable_accessor(msg, UPB_SIZE(96, 176), len);
+UPB_INLINE envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_config_route_v3_RouteAction_mutable_request_mirror_policies(envoy_config_route_v3_RouteAction* msg, size_t* len) {
+ return (envoy_config_route_v3_RouteAction_RequestMirrorPolicy**)_upb_array_mutable_accessor(msg, UPB_SIZE(100, 176), len);
}
-UPB_INLINE envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_config_route_v3_RouteAction_resize_request_mirror_policies(envoy_config_route_v3_RouteAction *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_RouteAction_RequestMirrorPolicy**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(96, 176), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_RouteAction_RequestMirrorPolicy** envoy_config_route_v3_RouteAction_resize_request_mirror_policies(envoy_config_route_v3_RouteAction* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_RouteAction_RequestMirrorPolicy**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(100, 176), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* envoy_config_route_v3_RouteAction_add_request_mirror_policies(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* envoy_config_route_v3_RouteAction_add_request_mirror_policies(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy* sub = (struct envoy_config_route_v3_RouteAction_RequestMirrorPolicy*)_upb_Message_New(&envoy_config_route_v3_RouteAction_RequestMirrorPolicy_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(96, 176), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(100, 176), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_max_internal_redirects(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 10);
- *UPB_PTR_AT(msg, UPB_SIZE(64, 112), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(104, 184), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RouteAction_mutable_max_internal_redirects(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RouteAction_mutable_max_internal_redirects(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_route_v3_RouteAction_max_internal_redirects(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1947,9 +2734,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RouteAction
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_regex_rewrite(envoy_config_route_v3_RouteAction *msg, struct envoy_type_matcher_v3_RegexMatchAndSubstitute* value) {
_upb_sethas(msg, 11);
- *UPB_PTR_AT(msg, UPB_SIZE(68, 120), struct envoy_type_matcher_v3_RegexMatchAndSubstitute*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(108, 192), struct envoy_type_matcher_v3_RegexMatchAndSubstitute*) = value;
}
-UPB_INLINE struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RouteAction_mutable_regex_rewrite(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RouteAction_mutable_regex_rewrite(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_RegexMatchAndSubstitute* sub = (struct envoy_type_matcher_v3_RegexMatchAndSubstitute*)envoy_config_route_v3_RouteAction_regex_rewrite(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_RegexMatchAndSubstitute*)_upb_Message_New(&envoy_type_matcher_v3_RegexMatchAndSubstitute_msginit, arena);
@@ -1960,9 +2747,9 @@ UPB_INLINE struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_ro
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_retry_policy_typed_config(envoy_config_route_v3_RouteAction *msg, struct google_protobuf_Any* value) {
_upb_sethas(msg, 12);
- *UPB_PTR_AT(msg, UPB_SIZE(72, 128), struct google_protobuf_Any*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(112, 200), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_RouteAction_mutable_retry_policy_typed_config(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_RouteAction_mutable_retry_policy_typed_config(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_route_v3_RouteAction_retry_policy_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -1973,9 +2760,9 @@ UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_RouteAction_mutable
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_internal_redirect_policy(envoy_config_route_v3_RouteAction *msg, envoy_config_route_v3_InternalRedirectPolicy* value) {
_upb_sethas(msg, 13);
- *UPB_PTR_AT(msg, UPB_SIZE(76, 136), envoy_config_route_v3_InternalRedirectPolicy*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(116, 208), envoy_config_route_v3_InternalRedirectPolicy*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_InternalRedirectPolicy* envoy_config_route_v3_RouteAction_mutable_internal_redirect_policy(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_InternalRedirectPolicy* envoy_config_route_v3_RouteAction_mutable_internal_redirect_policy(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct envoy_config_route_v3_InternalRedirectPolicy* sub = (struct envoy_config_route_v3_InternalRedirectPolicy*)envoy_config_route_v3_RouteAction_internal_redirect_policy(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_InternalRedirectPolicy*)_upb_Message_New(&envoy_config_route_v3_InternalRedirectPolicy_msginit, arena);
@@ -1985,9 +2772,9 @@ UPB_INLINE struct envoy_config_route_v3_InternalRedirectPolicy* envoy_config_rou
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_host_rewrite_path_regex(envoy_config_route_v3_RouteAction *msg, struct envoy_type_matcher_v3_RegexMatchAndSubstitute* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatchAndSubstitute*, UPB_SIZE(112, 208), value, UPB_SIZE(120, 224), 35);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatchAndSubstitute*, UPB_SIZE(28, 32), value, UPB_SIZE(16, 16), 35);
}
-UPB_INLINE struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RouteAction_mutable_host_rewrite_path_regex(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RouteAction_mutable_host_rewrite_path_regex(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_RegexMatchAndSubstitute* sub = (struct envoy_type_matcher_v3_RegexMatchAndSubstitute*)envoy_config_route_v3_RouteAction_host_rewrite_path_regex(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_RegexMatchAndSubstitute*)_upb_Message_New(&envoy_type_matcher_v3_RegexMatchAndSubstitute_msginit, arena);
@@ -1998,9 +2785,9 @@ UPB_INLINE struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_ro
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_max_stream_duration(envoy_config_route_v3_RouteAction *msg, envoy_config_route_v3_RouteAction_MaxStreamDuration* value) {
_upb_sethas(msg, 14);
- *UPB_PTR_AT(msg, UPB_SIZE(80, 144), envoy_config_route_v3_RouteAction_MaxStreamDuration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(120, 216), envoy_config_route_v3_RouteAction_MaxStreamDuration*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_RouteAction_MaxStreamDuration* envoy_config_route_v3_RouteAction_mutable_max_stream_duration(envoy_config_route_v3_RouteAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteAction_MaxStreamDuration* envoy_config_route_v3_RouteAction_mutable_max_stream_duration(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteAction_MaxStreamDuration* sub = (struct envoy_config_route_v3_RouteAction_MaxStreamDuration*)envoy_config_route_v3_RouteAction_max_stream_duration(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RouteAction_MaxStreamDuration*)_upb_Message_New(&envoy_config_route_v3_RouteAction_MaxStreamDuration_msginit, arena);
@@ -2010,10 +2797,38 @@ UPB_INLINE struct envoy_config_route_v3_RouteAction_MaxStreamDuration* envoy_con
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_cluster_specifier_plugin(envoy_config_route_v3_RouteAction *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(100, 184), value, UPB_SIZE(108, 200), 37);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(36, 48), value, UPB_SIZE(24, 24), 37);
}
UPB_INLINE void envoy_config_route_v3_RouteAction_set_append_x_forwarded_host(envoy_config_route_v3_RouteAction *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool) = value;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_set_inline_cluster_specifier_plugin(envoy_config_route_v3_RouteAction *msg, envoy_config_route_v3_ClusterSpecifierPlugin* value) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_ClusterSpecifierPlugin*, UPB_SIZE(36, 48), value, UPB_SIZE(24, 24), 39);
+}
+UPB_INLINE struct envoy_config_route_v3_ClusterSpecifierPlugin* envoy_config_route_v3_RouteAction_mutable_inline_cluster_specifier_plugin(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
+ struct envoy_config_route_v3_ClusterSpecifierPlugin* sub = (struct envoy_config_route_v3_ClusterSpecifierPlugin*)envoy_config_route_v3_RouteAction_inline_cluster_specifier_plugin(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_route_v3_ClusterSpecifierPlugin*)_upb_Message_New(&envoy_config_route_v3_ClusterSpecifierPlugin_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_route_v3_RouteAction_set_inline_cluster_specifier_plugin(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_set_early_data_policy(envoy_config_route_v3_RouteAction *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
+ _upb_sethas(msg, 15);
+ *UPB_PTR_AT(msg, UPB_SIZE(124, 224), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
+}
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_RouteAction_mutable_early_data_policy(envoy_config_route_v3_RouteAction* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_route_v3_RouteAction_early_data_policy(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_route_v3_RouteAction_set_early_data_policy(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_set_path_template_rewrite(envoy_config_route_v3_RouteAction *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(128, 232), upb_StringView) = value;
}
/* envoy.config.route.v3.RouteAction.RequestMirrorPolicy */
@@ -2041,23 +2856,46 @@ UPB_INLINE envoy_config_route_v3_RouteAction_RequestMirrorPolicy* envoy_config_r
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_RequestMirrorPolicy_serialize(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_RequestMirrorPolicy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_RequestMirrorPolicy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_RequestMirrorPolicy_serialize_ex(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_RequestMirrorPolicy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_RequestMirrorPolicy_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_clear_cluster(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_RequestMirrorPolicy_cluster(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_RequestMirrorPolicy_has_runtime_fraction(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_route_v3_RouteAction_RequestMirrorPolicy_has_runtime_fraction(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_clear_runtime_fraction(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_route_v3_RouteAction_RequestMirrorPolicy_runtime_fraction(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_RuntimeFractionalPercent*);
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_RequestMirrorPolicy_has_trace_sampled(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_route_v3_RouteAction_RequestMirrorPolicy_has_trace_sampled(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_clear_trace_sampled(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_RequestMirrorPolicy_trace_sampled(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_BoolValue*);
}
+UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_clear_cluster_header(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_RequestMirrorPolicy_cluster_header(const envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+}
UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_set_cluster(envoy_config_route_v3_RouteAction_RequestMirrorPolicy *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
@@ -2066,7 +2904,7 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_set_runtim
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_RuntimeFractionalPercent*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_route_v3_RouteAction_RequestMirrorPolicy_mutable_runtime_fraction(envoy_config_route_v3_RouteAction_RequestMirrorPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_route_v3_RouteAction_RequestMirrorPolicy_mutable_runtime_fraction(envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg, upb_Arena* arena) {
struct envoy_config_core_v3_RuntimeFractionalPercent* sub = (struct envoy_config_core_v3_RuntimeFractionalPercent*)envoy_config_route_v3_RouteAction_RequestMirrorPolicy_runtime_fraction(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_RuntimeFractionalPercent*)_upb_Message_New(&envoy_config_core_v3_RuntimeFractionalPercent_msginit, arena);
@@ -2079,7 +2917,7 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_set_trace_
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_RequestMirrorPolicy_mutable_trace_sampled(envoy_config_route_v3_RouteAction_RequestMirrorPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_RequestMirrorPolicy_mutable_trace_sampled(envoy_config_route_v3_RouteAction_RequestMirrorPolicy* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_route_v3_RouteAction_RequestMirrorPolicy_trace_sampled(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -2088,6 +2926,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_R
}
return sub;
}
+UPB_INLINE void envoy_config_route_v3_RouteAction_RequestMirrorPolicy_set_cluster_header(envoy_config_route_v3_RouteAction_RequestMirrorPolicy *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
+}
/* envoy.config.route.v3.RouteAction.HashPolicy */
@@ -2114,11 +2955,15 @@ UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy* envoy_config_route_v3_R
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_HashPolicy_serialize(const envoy_config_route_v3_RouteAction_HashPolicy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_HashPolicy_serialize_ex(const envoy_config_route_v3_RouteAction_HashPolicy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_header = 1,
@@ -2128,26 +2973,65 @@ typedef enum {
envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_filter_state = 6,
envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_NOT_SET = 0
} envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_oneofcases;
-UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_oneofcases envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_case(const envoy_config_route_v3_RouteAction_HashPolicy* msg) { return (envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_has_header(const envoy_config_route_v3_RouteAction_HashPolicy *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE const envoy_config_route_v3_RouteAction_HashPolicy_Header* envoy_config_route_v3_RouteAction_HashPolicy_header(const envoy_config_route_v3_RouteAction_HashPolicy *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RouteAction_HashPolicy_Header*, UPB_SIZE(4, 8), UPB_SIZE(8, 16), 1, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_has_cookie(const envoy_config_route_v3_RouteAction_HashPolicy *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 2; }
-UPB_INLINE const envoy_config_route_v3_RouteAction_HashPolicy_Cookie* envoy_config_route_v3_RouteAction_HashPolicy_cookie(const envoy_config_route_v3_RouteAction_HashPolicy *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RouteAction_HashPolicy_Cookie*, UPB_SIZE(4, 8), UPB_SIZE(8, 16), 2, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_has_connection_properties(const envoy_config_route_v3_RouteAction_HashPolicy *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 3; }
-UPB_INLINE const envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties* envoy_config_route_v3_RouteAction_HashPolicy_connection_properties(const envoy_config_route_v3_RouteAction_HashPolicy *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties*, UPB_SIZE(4, 8), UPB_SIZE(8, 16), 3, NULL); }
+UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_oneofcases envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_case(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ return (envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_has_header(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 1;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_clear_header(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_Header*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RouteAction_HashPolicy_Header* envoy_config_route_v3_RouteAction_HashPolicy_header(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RouteAction_HashPolicy_Header*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 1, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_has_cookie(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_clear_cookie(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_Cookie*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RouteAction_HashPolicy_Cookie* envoy_config_route_v3_RouteAction_HashPolicy_cookie(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RouteAction_HashPolicy_Cookie*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_has_connection_properties(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_clear_connection_properties(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties* envoy_config_route_v3_RouteAction_HashPolicy_connection_properties(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 3, NULL);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_clear_terminal(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
+}
UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_terminal(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_has_query_parameter(const envoy_config_route_v3_RouteAction_HashPolicy *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 5; }
-UPB_INLINE const envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter* envoy_config_route_v3_RouteAction_HashPolicy_query_parameter(const envoy_config_route_v3_RouteAction_HashPolicy *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter*, UPB_SIZE(4, 8), UPB_SIZE(8, 16), 5, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_has_filter_state(const envoy_config_route_v3_RouteAction_HashPolicy *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 6; }
-UPB_INLINE const envoy_config_route_v3_RouteAction_HashPolicy_FilterState* envoy_config_route_v3_RouteAction_HashPolicy_filter_state(const envoy_config_route_v3_RouteAction_HashPolicy *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RouteAction_HashPolicy_FilterState*, UPB_SIZE(4, 8), UPB_SIZE(8, 16), 6, NULL); }
+UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_has_query_parameter(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_clear_query_parameter(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter* envoy_config_route_v3_RouteAction_HashPolicy_query_parameter(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 5, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_has_filter_state(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 6;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_clear_filter_state(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_FilterState*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_route_v3_RouteAction_HashPolicy_policy_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RouteAction_HashPolicy_FilterState* envoy_config_route_v3_RouteAction_HashPolicy_filter_state(const envoy_config_route_v3_RouteAction_HashPolicy* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RouteAction_HashPolicy_FilterState*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 6, NULL);
+}
UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_set_header(envoy_config_route_v3_RouteAction_HashPolicy *msg, envoy_config_route_v3_RouteAction_HashPolicy_Header* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_Header*, UPB_SIZE(4, 8), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_Header*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 1);
}
-UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy_Header* envoy_config_route_v3_RouteAction_HashPolicy_mutable_header(envoy_config_route_v3_RouteAction_HashPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy_Header* envoy_config_route_v3_RouteAction_HashPolicy_mutable_header(envoy_config_route_v3_RouteAction_HashPolicy* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteAction_HashPolicy_Header* sub = (struct envoy_config_route_v3_RouteAction_HashPolicy_Header*)envoy_config_route_v3_RouteAction_HashPolicy_header(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RouteAction_HashPolicy_Header*)_upb_Message_New(&envoy_config_route_v3_RouteAction_HashPolicy_Header_msginit, arena);
@@ -2157,9 +3041,9 @@ UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy_Header* envoy_con
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_set_cookie(envoy_config_route_v3_RouteAction_HashPolicy *msg, envoy_config_route_v3_RouteAction_HashPolicy_Cookie* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_Cookie*, UPB_SIZE(4, 8), value, UPB_SIZE(8, 16), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_Cookie*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy_Cookie* envoy_config_route_v3_RouteAction_HashPolicy_mutable_cookie(envoy_config_route_v3_RouteAction_HashPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy_Cookie* envoy_config_route_v3_RouteAction_HashPolicy_mutable_cookie(envoy_config_route_v3_RouteAction_HashPolicy* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteAction_HashPolicy_Cookie* sub = (struct envoy_config_route_v3_RouteAction_HashPolicy_Cookie*)envoy_config_route_v3_RouteAction_HashPolicy_cookie(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RouteAction_HashPolicy_Cookie*)_upb_Message_New(&envoy_config_route_v3_RouteAction_HashPolicy_Cookie_msginit, arena);
@@ -2169,9 +3053,9 @@ UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy_Cookie* envoy_con
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_set_connection_properties(envoy_config_route_v3_RouteAction_HashPolicy *msg, envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties*, UPB_SIZE(4, 8), value, UPB_SIZE(8, 16), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties* envoy_config_route_v3_RouteAction_HashPolicy_mutable_connection_properties(envoy_config_route_v3_RouteAction_HashPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties* envoy_config_route_v3_RouteAction_HashPolicy_mutable_connection_properties(envoy_config_route_v3_RouteAction_HashPolicy* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties* sub = (struct envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties*)envoy_config_route_v3_RouteAction_HashPolicy_connection_properties(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties*)_upb_Message_New(&envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties_msginit, arena);
@@ -2184,9 +3068,9 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_set_terminal(envoy_
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = value;
}
UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_set_query_parameter(envoy_config_route_v3_RouteAction_HashPolicy *msg, envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter*, UPB_SIZE(4, 8), value, UPB_SIZE(8, 16), 5);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 5);
}
-UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter* envoy_config_route_v3_RouteAction_HashPolicy_mutable_query_parameter(envoy_config_route_v3_RouteAction_HashPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter* envoy_config_route_v3_RouteAction_HashPolicy_mutable_query_parameter(envoy_config_route_v3_RouteAction_HashPolicy* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter* sub = (struct envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter*)envoy_config_route_v3_RouteAction_HashPolicy_query_parameter(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter*)_upb_Message_New(&envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter_msginit, arena);
@@ -2196,9 +3080,9 @@ UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter* e
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_set_filter_state(envoy_config_route_v3_RouteAction_HashPolicy *msg, envoy_config_route_v3_RouteAction_HashPolicy_FilterState* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_FilterState*, UPB_SIZE(4, 8), value, UPB_SIZE(8, 16), 6);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RouteAction_HashPolicy_FilterState*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 6);
}
-UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy_FilterState* envoy_config_route_v3_RouteAction_HashPolicy_mutable_filter_state(envoy_config_route_v3_RouteAction_HashPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteAction_HashPolicy_FilterState* envoy_config_route_v3_RouteAction_HashPolicy_mutable_filter_state(envoy_config_route_v3_RouteAction_HashPolicy* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteAction_HashPolicy_FilterState* sub = (struct envoy_config_route_v3_RouteAction_HashPolicy_FilterState*)envoy_config_route_v3_RouteAction_HashPolicy_filter_state(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RouteAction_HashPolicy_FilterState*)_upb_Message_New(&envoy_config_route_v3_RouteAction_HashPolicy_FilterState_msginit, arena);
@@ -2233,16 +3117,28 @@ UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy_Header* envoy_config_rou
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_HashPolicy_Header_serialize(const envoy_config_route_v3_RouteAction_HashPolicy_Header* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_Header_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_Header_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_HashPolicy_Header_serialize_ex(const envoy_config_route_v3_RouteAction_HashPolicy_Header* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_Header_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_Header_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_Header_clear_header_name(const envoy_config_route_v3_RouteAction_HashPolicy_Header* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_HashPolicy_Header_header_name(const envoy_config_route_v3_RouteAction_HashPolicy_Header* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_Header_has_regex_rewrite(const envoy_config_route_v3_RouteAction_HashPolicy_Header *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_Header_has_regex_rewrite(const envoy_config_route_v3_RouteAction_HashPolicy_Header* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_Header_clear_regex_rewrite(const envoy_config_route_v3_RouteAction_HashPolicy_Header* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RouteAction_HashPolicy_Header_regex_rewrite(const envoy_config_route_v3_RouteAction_HashPolicy_Header* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_type_matcher_v3_RegexMatchAndSubstitute*);
}
@@ -2254,7 +3150,7 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_Header_set_regex_re
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_type_matcher_v3_RegexMatchAndSubstitute*) = value;
}
-UPB_INLINE struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RouteAction_HashPolicy_Header_mutable_regex_rewrite(envoy_config_route_v3_RouteAction_HashPolicy_Header *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RouteAction_HashPolicy_Header_mutable_regex_rewrite(envoy_config_route_v3_RouteAction_HashPolicy_Header* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_RegexMatchAndSubstitute* sub = (struct envoy_type_matcher_v3_RegexMatchAndSubstitute*)envoy_config_route_v3_RouteAction_HashPolicy_Header_regex_rewrite(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_RegexMatchAndSubstitute*)_upb_Message_New(&envoy_type_matcher_v3_RegexMatchAndSubstitute_msginit, arena);
@@ -2289,21 +3185,36 @@ UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy_Cookie* envoy_config_rou
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_HashPolicy_Cookie_serialize(const envoy_config_route_v3_RouteAction_HashPolicy_Cookie* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_Cookie_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_Cookie_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_HashPolicy_Cookie_serialize_ex(const envoy_config_route_v3_RouteAction_HashPolicy_Cookie* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_Cookie_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_Cookie_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_Cookie_clear_name(const envoy_config_route_v3_RouteAction_HashPolicy_Cookie* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_HashPolicy_Cookie_name(const envoy_config_route_v3_RouteAction_HashPolicy_Cookie* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_Cookie_has_ttl(const envoy_config_route_v3_RouteAction_HashPolicy_Cookie *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_Cookie_has_ttl(const envoy_config_route_v3_RouteAction_HashPolicy_Cookie* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_Cookie_clear_ttl(const envoy_config_route_v3_RouteAction_HashPolicy_Cookie* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_HashPolicy_Cookie_ttl(const envoy_config_route_v3_RouteAction_HashPolicy_Cookie* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Duration*);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_Cookie_clear_path(const envoy_config_route_v3_RouteAction_HashPolicy_Cookie* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_HashPolicy_Cookie_path(const envoy_config_route_v3_RouteAction_HashPolicy_Cookie* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView);
}
UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_Cookie_set_name(envoy_config_route_v3_RouteAction_HashPolicy_Cookie *msg, upb_StringView value) {
@@ -2311,9 +3222,9 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_Cookie_set_name(env
}
UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_Cookie_set_ttl(envoy_config_route_v3_RouteAction_HashPolicy_Cookie *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_HashPolicy_Cookie_mutable_ttl(envoy_config_route_v3_RouteAction_HashPolicy_Cookie *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_HashPolicy_Cookie_mutable_ttl(envoy_config_route_v3_RouteAction_HashPolicy_Cookie* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_route_v3_RouteAction_HashPolicy_Cookie_ttl(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -2323,7 +3234,7 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_Ha
return sub;
}
UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_Cookie_set_path(envoy_config_route_v3_RouteAction_HashPolicy_Cookie *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = value;
}
/* envoy.config.route.v3.RouteAction.HashPolicy.ConnectionProperties */
@@ -2351,11 +3262,18 @@ UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties* en
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties_serialize(const envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties_serialize_ex(const envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties_clear_source_ip(const envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties_source_ip(const envoy_config_route_v3_RouteAction_HashPolicy_ConnectionProperties* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
@@ -2390,11 +3308,18 @@ UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter* envoy_co
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter_serialize(const envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter_serialize_ex(const envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter_clear_name(const envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter_name(const envoy_config_route_v3_RouteAction_HashPolicy_QueryParameter* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -2429,11 +3354,18 @@ UPB_INLINE envoy_config_route_v3_RouteAction_HashPolicy_FilterState* envoy_confi
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_HashPolicy_FilterState_serialize(const envoy_config_route_v3_RouteAction_HashPolicy_FilterState* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_FilterState_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_FilterState_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_HashPolicy_FilterState_serialize_ex(const envoy_config_route_v3_RouteAction_HashPolicy_FilterState* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_FilterState_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_HashPolicy_FilterState_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_HashPolicy_FilterState_clear_key(const envoy_config_route_v3_RouteAction_HashPolicy_FilterState* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_HashPolicy_FilterState_key(const envoy_config_route_v3_RouteAction_HashPolicy_FilterState* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -2468,20 +3400,37 @@ UPB_INLINE envoy_config_route_v3_RouteAction_UpgradeConfig* envoy_config_route_v
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_UpgradeConfig_serialize(const envoy_config_route_v3_RouteAction_UpgradeConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_UpgradeConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_UpgradeConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_UpgradeConfig_serialize_ex(const envoy_config_route_v3_RouteAction_UpgradeConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_UpgradeConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_UpgradeConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_UpgradeConfig_clear_upgrade_type(const envoy_config_route_v3_RouteAction_UpgradeConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RouteAction_UpgradeConfig_upgrade_type(const envoy_config_route_v3_RouteAction_UpgradeConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_UpgradeConfig_has_enabled(const envoy_config_route_v3_RouteAction_UpgradeConfig *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_route_v3_RouteAction_UpgradeConfig_has_enabled(const envoy_config_route_v3_RouteAction_UpgradeConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_UpgradeConfig_clear_enabled(const envoy_config_route_v3_RouteAction_UpgradeConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_UpgradeConfig_enabled(const envoy_config_route_v3_RouteAction_UpgradeConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_BoolValue*);
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_UpgradeConfig_has_connect_config(const envoy_config_route_v3_RouteAction_UpgradeConfig *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_route_v3_RouteAction_UpgradeConfig_has_connect_config(const envoy_config_route_v3_RouteAction_UpgradeConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_UpgradeConfig_clear_connect_config(const envoy_config_route_v3_RouteAction_UpgradeConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig* envoy_config_route_v3_RouteAction_UpgradeConfig_connect_config(const envoy_config_route_v3_RouteAction_UpgradeConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig*);
}
@@ -2493,7 +3442,7 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_UpgradeConfig_set_enabled(envo
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_UpgradeConfig_mutable_enabled(envoy_config_route_v3_RouteAction_UpgradeConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RouteAction_UpgradeConfig_mutable_enabled(envoy_config_route_v3_RouteAction_UpgradeConfig* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_route_v3_RouteAction_UpgradeConfig_enabled(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -2506,7 +3455,7 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_UpgradeConfig_set_connect_conf
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig* envoy_config_route_v3_RouteAction_UpgradeConfig_mutable_connect_config(envoy_config_route_v3_RouteAction_UpgradeConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig* envoy_config_route_v3_RouteAction_UpgradeConfig_mutable_connect_config(envoy_config_route_v3_RouteAction_UpgradeConfig* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig* sub = (struct envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig*)envoy_config_route_v3_RouteAction_UpgradeConfig_connect_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig*)_upb_Message_New(&envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_msginit, arena);
@@ -2541,16 +3490,28 @@ UPB_INLINE envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig* envoy_
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_serialize(const envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_serialize_ex(const envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_has_proxy_protocol_config(const envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_clear_proxy_protocol_config(const envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_has_proxy_protocol_config(const envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_ProxyProtocolConfig* envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_proxy_protocol_config(const envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_ProxyProtocolConfig*);
}
+UPB_INLINE void envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_clear_allow_post(const envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_allow_post(const envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
@@ -2559,7 +3520,7 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_se
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_ProxyProtocolConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ProxyProtocolConfig* envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_mutable_proxy_protocol_config(envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ProxyProtocolConfig* envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_mutable_proxy_protocol_config(envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ProxyProtocolConfig* sub = (struct envoy_config_core_v3_ProxyProtocolConfig*)envoy_config_route_v3_RouteAction_UpgradeConfig_ConnectConfig_proxy_protocol_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ProxyProtocolConfig*)_upb_Message_New(&envoy_config_core_v3_ProxyProtocolConfig_msginit, arena);
@@ -2597,21 +3558,40 @@ UPB_INLINE envoy_config_route_v3_RouteAction_MaxStreamDuration* envoy_config_rou
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_MaxStreamDuration_serialize(const envoy_config_route_v3_RouteAction_MaxStreamDuration* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_MaxStreamDuration_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_MaxStreamDuration_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RouteAction_MaxStreamDuration_serialize_ex(const envoy_config_route_v3_RouteAction_MaxStreamDuration* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RouteAction_MaxStreamDuration_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RouteAction_MaxStreamDuration_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_RouteAction_MaxStreamDuration_has_max_stream_duration(const envoy_config_route_v3_RouteAction_MaxStreamDuration* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_MaxStreamDuration_clear_max_stream_duration(const envoy_config_route_v3_RouteAction_MaxStreamDuration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_MaxStreamDuration_has_max_stream_duration(const envoy_config_route_v3_RouteAction_MaxStreamDuration *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_MaxStreamDuration_max_stream_duration(const envoy_config_route_v3_RouteAction_MaxStreamDuration* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_MaxStreamDuration_has_grpc_timeout_header_max(const envoy_config_route_v3_RouteAction_MaxStreamDuration *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_route_v3_RouteAction_MaxStreamDuration_has_grpc_timeout_header_max(const envoy_config_route_v3_RouteAction_MaxStreamDuration* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_MaxStreamDuration_clear_grpc_timeout_header_max(const envoy_config_route_v3_RouteAction_MaxStreamDuration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_MaxStreamDuration_grpc_timeout_header_max(const envoy_config_route_v3_RouteAction_MaxStreamDuration* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_route_v3_RouteAction_MaxStreamDuration_has_grpc_timeout_header_offset(const envoy_config_route_v3_RouteAction_MaxStreamDuration *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_route_v3_RouteAction_MaxStreamDuration_has_grpc_timeout_header_offset(const envoy_config_route_v3_RouteAction_MaxStreamDuration* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_route_v3_RouteAction_MaxStreamDuration_clear_grpc_timeout_header_offset(const envoy_config_route_v3_RouteAction_MaxStreamDuration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_MaxStreamDuration_grpc_timeout_header_offset(const envoy_config_route_v3_RouteAction_MaxStreamDuration* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Duration*);
}
@@ -2620,7 +3600,7 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_MaxStreamDuration_set_max_stre
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_MaxStreamDuration_mutable_max_stream_duration(envoy_config_route_v3_RouteAction_MaxStreamDuration *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_MaxStreamDuration_mutable_max_stream_duration(envoy_config_route_v3_RouteAction_MaxStreamDuration* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_route_v3_RouteAction_MaxStreamDuration_max_stream_duration(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -2633,7 +3613,7 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_MaxStreamDuration_set_grpc_tim
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_MaxStreamDuration_mutable_grpc_timeout_header_max(envoy_config_route_v3_RouteAction_MaxStreamDuration *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_MaxStreamDuration_mutable_grpc_timeout_header_max(envoy_config_route_v3_RouteAction_MaxStreamDuration* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_route_v3_RouteAction_MaxStreamDuration_grpc_timeout_header_max(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -2646,7 +3626,7 @@ UPB_INLINE void envoy_config_route_v3_RouteAction_MaxStreamDuration_set_grpc_tim
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_MaxStreamDuration_mutable_grpc_timeout_header_offset(envoy_config_route_v3_RouteAction_MaxStreamDuration *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RouteAction_MaxStreamDuration_mutable_grpc_timeout_header_offset(envoy_config_route_v3_RouteAction_MaxStreamDuration* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_route_v3_RouteAction_MaxStreamDuration_grpc_timeout_header_offset(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -2681,60 +3661,133 @@ UPB_INLINE envoy_config_route_v3_RetryPolicy* envoy_config_route_v3_RetryPolicy_
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RetryPolicy_serialize(const envoy_config_route_v3_RetryPolicy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RetryPolicy_serialize_ex(const envoy_config_route_v3_RetryPolicy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_clear_retry_on(const envoy_config_route_v3_RetryPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RetryPolicy_retry_on(const envoy_config_route_v3_RetryPolicy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_num_retries(const envoy_config_route_v3_RetryPolicy* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_clear_num_retries(const envoy_config_route_v3_RetryPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_num_retries(const envoy_config_route_v3_RetryPolicy *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_route_v3_RetryPolicy_num_retries(const envoy_config_route_v3_RetryPolicy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_per_try_timeout(const envoy_config_route_v3_RetryPolicy* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_clear_per_try_timeout(const envoy_config_route_v3_RetryPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_per_try_timeout(const envoy_config_route_v3_RetryPolicy *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_per_try_timeout(const envoy_config_route_v3_RetryPolicy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 40), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_retry_priority(const envoy_config_route_v3_RetryPolicy* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_clear_retry_priority(const envoy_config_route_v3_RetryPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_retry_priority(const envoy_config_route_v3_RetryPolicy *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const envoy_config_route_v3_RetryPolicy_RetryPriority* envoy_config_route_v3_RetryPolicy_retry_priority(const envoy_config_route_v3_RetryPolicy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 48), const envoy_config_route_v3_RetryPolicy_RetryPriority*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const envoy_config_route_v3_RetryPolicy_RetryPriority*);
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_retry_host_predicate(const envoy_config_route_v3_RetryPolicy* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_clear_retry_host_predicate(const envoy_config_route_v3_RetryPolicy* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE const envoy_config_route_v3_RetryPolicy_RetryHostPredicate* const* envoy_config_route_v3_RetryPolicy_retry_host_predicate(const envoy_config_route_v3_RetryPolicy* msg, size_t* len) {
+ return (const envoy_config_route_v3_RetryPolicy_RetryHostPredicate* const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len);
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_clear_host_selection_retry_max_attempts(const envoy_config_route_v3_RetryPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 112), int64_t) = 0;
}
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_retry_host_predicate(const envoy_config_route_v3_RetryPolicy *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 80)); }
-UPB_INLINE const envoy_config_route_v3_RetryPolicy_RetryHostPredicate* const* envoy_config_route_v3_RetryPolicy_retry_host_predicate(const envoy_config_route_v3_RetryPolicy *msg, size_t *len) { return (const envoy_config_route_v3_RetryPolicy_RetryHostPredicate* const*)_upb_array_accessor(msg, UPB_SIZE(48, 80), len); }
UPB_INLINE int64_t envoy_config_route_v3_RetryPolicy_host_selection_retry_max_attempts(const envoy_config_route_v3_RetryPolicy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(56, 112), int64_t);
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_clear_retriable_status_codes(const envoy_config_route_v3_RetryPolicy* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE uint32_t const* envoy_config_route_v3_RetryPolicy_retriable_status_codes(const envoy_config_route_v3_RetryPolicy* msg, size_t* len) {
+ return (uint32_t const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_retry_back_off(const envoy_config_route_v3_RetryPolicy* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_clear_retry_back_off(const envoy_config_route_v3_RetryPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const upb_Message*) = NULL;
}
-UPB_INLINE uint32_t const* envoy_config_route_v3_RetryPolicy_retriable_status_codes(const envoy_config_route_v3_RetryPolicy *msg, size_t *len) { return (uint32_t const*)_upb_array_accessor(msg, UPB_SIZE(52, 88), len); }
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_retry_back_off(const envoy_config_route_v3_RetryPolicy *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const envoy_config_route_v3_RetryPolicy_RetryBackOff* envoy_config_route_v3_RetryPolicy_retry_back_off(const envoy_config_route_v3_RetryPolicy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(36, 56), const envoy_config_route_v3_RetryPolicy_RetryBackOff*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const envoy_config_route_v3_RetryPolicy_RetryBackOff*);
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_retriable_headers(const envoy_config_route_v3_RetryPolicy* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 72));
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_clear_retriable_headers(const envoy_config_route_v3_RetryPolicy* msg) {
+ _upb_array_detach(msg, UPB_SIZE(36, 72));
+}
+UPB_INLINE const envoy_config_route_v3_HeaderMatcher* const* envoy_config_route_v3_RetryPolicy_retriable_headers(const envoy_config_route_v3_RetryPolicy* msg, size_t* len) {
+ return (const envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(36, 72), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_retriable_request_headers(const envoy_config_route_v3_RetryPolicy* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(40, 80));
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_clear_retriable_request_headers(const envoy_config_route_v3_RetryPolicy* msg) {
+ _upb_array_detach(msg, UPB_SIZE(40, 80));
+}
+UPB_INLINE const envoy_config_route_v3_HeaderMatcher* const* envoy_config_route_v3_RetryPolicy_retriable_request_headers(const envoy_config_route_v3_RetryPolicy* msg, size_t* len) {
+ return (const envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(40, 80), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_rate_limited_retry_back_off(const envoy_config_route_v3_RetryPolicy* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_clear_rate_limited_retry_back_off(const envoy_config_route_v3_RetryPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 88), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_retriable_headers(const envoy_config_route_v3_RetryPolicy *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(56, 96)); }
-UPB_INLINE const envoy_config_route_v3_HeaderMatcher* const* envoy_config_route_v3_RetryPolicy_retriable_headers(const envoy_config_route_v3_RetryPolicy *msg, size_t *len) { return (const envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(56, 96), len); }
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_retriable_request_headers(const envoy_config_route_v3_RetryPolicy *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(60, 104)); }
-UPB_INLINE const envoy_config_route_v3_HeaderMatcher* const* envoy_config_route_v3_RetryPolicy_retriable_request_headers(const envoy_config_route_v3_RetryPolicy *msg, size_t *len) { return (const envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(60, 104), len); }
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_rate_limited_retry_back_off(const envoy_config_route_v3_RetryPolicy *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE const envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* envoy_config_route_v3_RetryPolicy_rate_limited_retry_back_off(const envoy_config_route_v3_RetryPolicy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 64), const envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 88), const envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff*);
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_retry_options_predicates(const envoy_config_route_v3_RetryPolicy* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 96));
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_clear_retry_options_predicates(const envoy_config_route_v3_RetryPolicy* msg) {
+ _upb_array_detach(msg, UPB_SIZE(48, 96));
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* const* envoy_config_route_v3_RetryPolicy_retry_options_predicates(const envoy_config_route_v3_RetryPolicy* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_TypedExtensionConfig* const*)_upb_array_accessor(msg, UPB_SIZE(48, 96), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_per_try_idle_timeout(const envoy_config_route_v3_RetryPolicy* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_clear_per_try_idle_timeout(const envoy_config_route_v3_RetryPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 104), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_retry_options_predicates(const envoy_config_route_v3_RetryPolicy *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(64, 112)); }
-UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* const* envoy_config_route_v3_RetryPolicy_retry_options_predicates(const envoy_config_route_v3_RetryPolicy *msg, size_t *len) { return (const struct envoy_config_core_v3_TypedExtensionConfig* const*)_upb_array_accessor(msg, UPB_SIZE(64, 112), len); }
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_has_per_try_idle_timeout(const envoy_config_route_v3_RetryPolicy *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_per_try_idle_timeout(const envoy_config_route_v3_RetryPolicy* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(44, 72), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(52, 104), const struct google_protobuf_Duration*);
}
UPB_INLINE void envoy_config_route_v3_RetryPolicy_set_retry_on(envoy_config_route_v3_RetryPolicy *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_RetryPolicy_set_num_retries(envoy_config_route_v3_RetryPolicy *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 32), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RetryPolicy_mutable_num_retries(envoy_config_route_v3_RetryPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RetryPolicy_mutable_num_retries(envoy_config_route_v3_RetryPolicy* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_route_v3_RetryPolicy_num_retries(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -2745,9 +3798,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RetryPolicy
}
UPB_INLINE void envoy_config_route_v3_RetryPolicy_set_per_try_timeout(envoy_config_route_v3_RetryPolicy *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 40), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_mutable_per_try_timeout(envoy_config_route_v3_RetryPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_mutable_per_try_timeout(envoy_config_route_v3_RetryPolicy* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_route_v3_RetryPolicy_per_try_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -2758,9 +3811,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_mu
}
UPB_INLINE void envoy_config_route_v3_RetryPolicy_set_retry_priority(envoy_config_route_v3_RetryPolicy *msg, envoy_config_route_v3_RetryPolicy_RetryPriority* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 48), envoy_config_route_v3_RetryPolicy_RetryPriority*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), envoy_config_route_v3_RetryPolicy_RetryPriority*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_RetryPolicy_RetryPriority* envoy_config_route_v3_RetryPolicy_mutable_retry_priority(envoy_config_route_v3_RetryPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RetryPolicy_RetryPriority* envoy_config_route_v3_RetryPolicy_mutable_retry_priority(envoy_config_route_v3_RetryPolicy* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RetryPolicy_RetryPriority* sub = (struct envoy_config_route_v3_RetryPolicy_RetryPriority*)envoy_config_route_v3_RetryPolicy_retry_priority(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RetryPolicy_RetryPriority*)_upb_Message_New(&envoy_config_route_v3_RetryPolicy_RetryPriority_msginit, arena);
@@ -2769,37 +3822,35 @@ UPB_INLINE struct envoy_config_route_v3_RetryPolicy_RetryPriority* envoy_config_
}
return sub;
}
-UPB_INLINE envoy_config_route_v3_RetryPolicy_RetryHostPredicate** envoy_config_route_v3_RetryPolicy_mutable_retry_host_predicate(envoy_config_route_v3_RetryPolicy *msg, size_t *len) {
- return (envoy_config_route_v3_RetryPolicy_RetryHostPredicate**)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 80), len);
+UPB_INLINE envoy_config_route_v3_RetryPolicy_RetryHostPredicate** envoy_config_route_v3_RetryPolicy_mutable_retry_host_predicate(envoy_config_route_v3_RetryPolicy* msg, size_t* len) {
+ return (envoy_config_route_v3_RetryPolicy_RetryHostPredicate**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
}
-UPB_INLINE envoy_config_route_v3_RetryPolicy_RetryHostPredicate** envoy_config_route_v3_RetryPolicy_resize_retry_host_predicate(envoy_config_route_v3_RetryPolicy *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_RetryPolicy_RetryHostPredicate**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 80), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_RetryPolicy_RetryHostPredicate** envoy_config_route_v3_RetryPolicy_resize_retry_host_predicate(envoy_config_route_v3_RetryPolicy* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_RetryPolicy_RetryHostPredicate**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_RetryPolicy_RetryHostPredicate* envoy_config_route_v3_RetryPolicy_add_retry_host_predicate(envoy_config_route_v3_RetryPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RetryPolicy_RetryHostPredicate* envoy_config_route_v3_RetryPolicy_add_retry_host_predicate(envoy_config_route_v3_RetryPolicy* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RetryPolicy_RetryHostPredicate* sub = (struct envoy_config_route_v3_RetryPolicy_RetryHostPredicate*)_upb_Message_New(&envoy_config_route_v3_RetryPolicy_RetryHostPredicate_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(48, 80), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 48), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_route_v3_RetryPolicy_set_host_selection_retry_max_attempts(envoy_config_route_v3_RetryPolicy *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 112), int64_t) = value;
}
-UPB_INLINE uint32_t* envoy_config_route_v3_RetryPolicy_mutable_retriable_status_codes(envoy_config_route_v3_RetryPolicy *msg, size_t *len) {
- return (uint32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 88), len);
+UPB_INLINE uint32_t* envoy_config_route_v3_RetryPolicy_mutable_retriable_status_codes(envoy_config_route_v3_RetryPolicy* msg, size_t* len) {
+ return (uint32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
}
-UPB_INLINE uint32_t* envoy_config_route_v3_RetryPolicy_resize_retriable_status_codes(envoy_config_route_v3_RetryPolicy *msg, size_t len, upb_Arena *arena) {
- return (uint32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 88), len, 2, arena);
+UPB_INLINE uint32_t* envoy_config_route_v3_RetryPolicy_resize_retriable_status_codes(envoy_config_route_v3_RetryPolicy* msg, size_t len, upb_Arena* arena) {
+ return (uint32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, 2, arena);
}
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_add_retriable_status_codes(envoy_config_route_v3_RetryPolicy *msg, uint32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(52, 88), 2, &val,
- arena);
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_add_retriable_status_codes(envoy_config_route_v3_RetryPolicy* msg, uint32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 56), 2, &val, arena);
}
UPB_INLINE void envoy_config_route_v3_RetryPolicy_set_retry_back_off(envoy_config_route_v3_RetryPolicy *msg, envoy_config_route_v3_RetryPolicy_RetryBackOff* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(36, 56), envoy_config_route_v3_RetryPolicy_RetryBackOff*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), envoy_config_route_v3_RetryPolicy_RetryBackOff*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_RetryPolicy_RetryBackOff* envoy_config_route_v3_RetryPolicy_mutable_retry_back_off(envoy_config_route_v3_RetryPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RetryPolicy_RetryBackOff* envoy_config_route_v3_RetryPolicy_mutable_retry_back_off(envoy_config_route_v3_RetryPolicy* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RetryPolicy_RetryBackOff* sub = (struct envoy_config_route_v3_RetryPolicy_RetryBackOff*)envoy_config_route_v3_RetryPolicy_retry_back_off(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RetryPolicy_RetryBackOff*)_upb_Message_New(&envoy_config_route_v3_RetryPolicy_RetryBackOff_msginit, arena);
@@ -2808,37 +3859,35 @@ UPB_INLINE struct envoy_config_route_v3_RetryPolicy_RetryBackOff* envoy_config_r
}
return sub;
}
-UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RetryPolicy_mutable_retriable_headers(envoy_config_route_v3_RetryPolicy *msg, size_t *len) {
- return (envoy_config_route_v3_HeaderMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 96), len);
+UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RetryPolicy_mutable_retriable_headers(envoy_config_route_v3_RetryPolicy* msg, size_t* len) {
+ return (envoy_config_route_v3_HeaderMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 72), len);
}
-UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RetryPolicy_resize_retriable_headers(envoy_config_route_v3_RetryPolicy *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_HeaderMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 96), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RetryPolicy_resize_retriable_headers(envoy_config_route_v3_RetryPolicy* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_HeaderMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 72), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_route_v3_RetryPolicy_add_retriable_headers(envoy_config_route_v3_RetryPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_route_v3_RetryPolicy_add_retriable_headers(envoy_config_route_v3_RetryPolicy* msg, upb_Arena* arena) {
struct envoy_config_route_v3_HeaderMatcher* sub = (struct envoy_config_route_v3_HeaderMatcher*)_upb_Message_New(&envoy_config_route_v3_HeaderMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(56, 96), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 72), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RetryPolicy_mutable_retriable_request_headers(envoy_config_route_v3_RetryPolicy *msg, size_t *len) {
- return (envoy_config_route_v3_HeaderMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(60, 104), len);
+UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RetryPolicy_mutable_retriable_request_headers(envoy_config_route_v3_RetryPolicy* msg, size_t* len) {
+ return (envoy_config_route_v3_HeaderMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 80), len);
}
-UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RetryPolicy_resize_retriable_request_headers(envoy_config_route_v3_RetryPolicy *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_HeaderMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(60, 104), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RetryPolicy_resize_retriable_request_headers(envoy_config_route_v3_RetryPolicy* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_HeaderMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 80), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_route_v3_RetryPolicy_add_retriable_request_headers(envoy_config_route_v3_RetryPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_route_v3_RetryPolicy_add_retriable_request_headers(envoy_config_route_v3_RetryPolicy* msg, upb_Arena* arena) {
struct envoy_config_route_v3_HeaderMatcher* sub = (struct envoy_config_route_v3_HeaderMatcher*)_upb_Message_New(&envoy_config_route_v3_HeaderMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(60, 104), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 80), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_route_v3_RetryPolicy_set_rate_limited_retry_back_off(envoy_config_route_v3_RetryPolicy *msg, envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 64), envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 88), envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* envoy_config_route_v3_RetryPolicy_mutable_rate_limited_retry_back_off(envoy_config_route_v3_RetryPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* envoy_config_route_v3_RetryPolicy_mutable_rate_limited_retry_back_off(envoy_config_route_v3_RetryPolicy* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* sub = (struct envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff*)envoy_config_route_v3_RetryPolicy_rate_limited_retry_back_off(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff*)_upb_Message_New(&envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_msginit, arena);
@@ -2847,24 +3896,23 @@ UPB_INLINE struct envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* env
}
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_route_v3_RetryPolicy_mutable_retry_options_predicates(envoy_config_route_v3_RetryPolicy *msg, size_t *len) {
- return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(64, 112), len);
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_route_v3_RetryPolicy_mutable_retry_options_predicates(envoy_config_route_v3_RetryPolicy* msg, size_t* len) {
+ return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 96), len);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_route_v3_RetryPolicy_resize_retry_options_predicates(envoy_config_route_v3_RetryPolicy *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(64, 112), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_route_v3_RetryPolicy_resize_retry_options_predicates(envoy_config_route_v3_RetryPolicy* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 96), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_RetryPolicy_add_retry_options_predicates(envoy_config_route_v3_RetryPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_RetryPolicy_add_retry_options_predicates(envoy_config_route_v3_RetryPolicy* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(64, 112), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(48, 96), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_route_v3_RetryPolicy_set_per_try_idle_timeout(envoy_config_route_v3_RetryPolicy *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(44, 72), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 104), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_mutable_per_try_idle_timeout(envoy_config_route_v3_RetryPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_mutable_per_try_idle_timeout(envoy_config_route_v3_RetryPolicy* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_route_v3_RetryPolicy_per_try_idle_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -2899,31 +3947,46 @@ UPB_INLINE envoy_config_route_v3_RetryPolicy_RetryPriority* envoy_config_route_v
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RetryPolicy_RetryPriority_serialize(const envoy_config_route_v3_RetryPolicy_RetryPriority* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RetryPriority_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RetryPriority_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RetryPolicy_RetryPriority_serialize_ex(const envoy_config_route_v3_RetryPolicy_RetryPriority* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RetryPriority_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RetryPriority_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_route_v3_RetryPolicy_RetryPriority_config_type_typed_config = 3,
envoy_config_route_v3_RetryPolicy_RetryPriority_config_type_NOT_SET = 0
} envoy_config_route_v3_RetryPolicy_RetryPriority_config_type_oneofcases;
-UPB_INLINE envoy_config_route_v3_RetryPolicy_RetryPriority_config_type_oneofcases envoy_config_route_v3_RetryPolicy_RetryPriority_config_type_case(const envoy_config_route_v3_RetryPolicy_RetryPriority* msg) { return (envoy_config_route_v3_RetryPolicy_RetryPriority_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_config_route_v3_RetryPolicy_RetryPriority_config_type_oneofcases envoy_config_route_v3_RetryPolicy_RetryPriority_config_type_case(const envoy_config_route_v3_RetryPolicy_RetryPriority* msg) {
+ return (envoy_config_route_v3_RetryPolicy_RetryPriority_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_RetryPriority_clear_name(const envoy_config_route_v3_RetryPolicy_RetryPriority* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_route_v3_RetryPolicy_RetryPriority_name(const envoy_config_route_v3_RetryPolicy_RetryPriority* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_RetryPriority_has_typed_config(const envoy_config_route_v3_RetryPolicy_RetryPriority* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_RetryPriority_clear_typed_config(const envoy_config_route_v3_RetryPolicy_RetryPriority* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_route_v3_RetryPolicy_RetryPriority_config_type_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_RetryPolicy_RetryPriority_typed_config(const envoy_config_route_v3_RetryPolicy_RetryPriority* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
}
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_RetryPriority_has_typed_config(const envoy_config_route_v3_RetryPolicy_RetryPriority *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_RetryPolicy_RetryPriority_typed_config(const envoy_config_route_v3_RetryPolicy_RetryPriority *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void envoy_config_route_v3_RetryPolicy_RetryPriority_set_name(envoy_config_route_v3_RetryPolicy_RetryPriority *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_RetryPolicy_RetryPriority_set_typed_config(envoy_config_route_v3_RetryPolicy_RetryPriority *msg, struct google_protobuf_Any* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_RetryPolicy_RetryPriority_mutable_typed_config(envoy_config_route_v3_RetryPolicy_RetryPriority *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_RetryPolicy_RetryPriority_mutable_typed_config(envoy_config_route_v3_RetryPolicy_RetryPriority* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_route_v3_RetryPolicy_RetryPriority_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -2958,31 +4021,46 @@ UPB_INLINE envoy_config_route_v3_RetryPolicy_RetryHostPredicate* envoy_config_ro
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RetryPolicy_RetryHostPredicate_serialize(const envoy_config_route_v3_RetryPolicy_RetryHostPredicate* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RetryHostPredicate_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RetryHostPredicate_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RetryPolicy_RetryHostPredicate_serialize_ex(const envoy_config_route_v3_RetryPolicy_RetryHostPredicate* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RetryHostPredicate_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RetryHostPredicate_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_route_v3_RetryPolicy_RetryHostPredicate_config_type_typed_config = 3,
envoy_config_route_v3_RetryPolicy_RetryHostPredicate_config_type_NOT_SET = 0
} envoy_config_route_v3_RetryPolicy_RetryHostPredicate_config_type_oneofcases;
-UPB_INLINE envoy_config_route_v3_RetryPolicy_RetryHostPredicate_config_type_oneofcases envoy_config_route_v3_RetryPolicy_RetryHostPredicate_config_type_case(const envoy_config_route_v3_RetryPolicy_RetryHostPredicate* msg) { return (envoy_config_route_v3_RetryPolicy_RetryHostPredicate_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_config_route_v3_RetryPolicy_RetryHostPredicate_config_type_oneofcases envoy_config_route_v3_RetryPolicy_RetryHostPredicate_config_type_case(const envoy_config_route_v3_RetryPolicy_RetryHostPredicate* msg) {
+ return (envoy_config_route_v3_RetryPolicy_RetryHostPredicate_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_RetryHostPredicate_clear_name(const envoy_config_route_v3_RetryPolicy_RetryHostPredicate* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_route_v3_RetryPolicy_RetryHostPredicate_name(const envoy_config_route_v3_RetryPolicy_RetryHostPredicate* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_RetryHostPredicate_has_typed_config(const envoy_config_route_v3_RetryPolicy_RetryHostPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_RetryHostPredicate_clear_typed_config(const envoy_config_route_v3_RetryPolicy_RetryHostPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_route_v3_RetryPolicy_RetryHostPredicate_config_type_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_RetryPolicy_RetryHostPredicate_typed_config(const envoy_config_route_v3_RetryPolicy_RetryHostPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
}
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_RetryHostPredicate_has_typed_config(const envoy_config_route_v3_RetryPolicy_RetryHostPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_RetryPolicy_RetryHostPredicate_typed_config(const envoy_config_route_v3_RetryPolicy_RetryHostPredicate *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void envoy_config_route_v3_RetryPolicy_RetryHostPredicate_set_name(envoy_config_route_v3_RetryPolicy_RetryHostPredicate *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_RetryPolicy_RetryHostPredicate_set_typed_config(envoy_config_route_v3_RetryPolicy_RetryHostPredicate *msg, struct google_protobuf_Any* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_RetryPolicy_RetryHostPredicate_mutable_typed_config(envoy_config_route_v3_RetryPolicy_RetryHostPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_RetryPolicy_RetryHostPredicate_mutable_typed_config(envoy_config_route_v3_RetryPolicy_RetryHostPredicate* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_route_v3_RetryPolicy_RetryHostPredicate_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -3017,17 +4095,31 @@ UPB_INLINE envoy_config_route_v3_RetryPolicy_RetryBackOff* envoy_config_route_v3
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RetryPolicy_RetryBackOff_serialize(const envoy_config_route_v3_RetryPolicy_RetryBackOff* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RetryBackOff_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RetryBackOff_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RetryPolicy_RetryBackOff_serialize_ex(const envoy_config_route_v3_RetryPolicy_RetryBackOff* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RetryBackOff_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RetryBackOff_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_RetryBackOff_has_base_interval(const envoy_config_route_v3_RetryPolicy_RetryBackOff* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_RetryBackOff_clear_base_interval(const envoy_config_route_v3_RetryPolicy_RetryBackOff* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_RetryBackOff_has_base_interval(const envoy_config_route_v3_RetryPolicy_RetryBackOff *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_RetryBackOff_base_interval(const envoy_config_route_v3_RetryPolicy_RetryBackOff* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_RetryBackOff_has_max_interval(const envoy_config_route_v3_RetryPolicy_RetryBackOff *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_RetryBackOff_has_max_interval(const envoy_config_route_v3_RetryPolicy_RetryBackOff* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_RetryBackOff_clear_max_interval(const envoy_config_route_v3_RetryPolicy_RetryBackOff* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_RetryBackOff_max_interval(const envoy_config_route_v3_RetryPolicy_RetryBackOff* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Duration*);
}
@@ -3036,7 +4128,7 @@ UPB_INLINE void envoy_config_route_v3_RetryPolicy_RetryBackOff_set_base_interval
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_RetryBackOff_mutable_base_interval(envoy_config_route_v3_RetryPolicy_RetryBackOff *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_RetryBackOff_mutable_base_interval(envoy_config_route_v3_RetryPolicy_RetryBackOff* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_route_v3_RetryPolicy_RetryBackOff_base_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -3049,7 +4141,7 @@ UPB_INLINE void envoy_config_route_v3_RetryPolicy_RetryBackOff_set_max_interval(
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_RetryBackOff_mutable_max_interval(envoy_config_route_v3_RetryPolicy_RetryBackOff *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_RetryBackOff_mutable_max_interval(envoy_config_route_v3_RetryPolicy_RetryBackOff* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_route_v3_RetryPolicy_RetryBackOff_max_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -3084,15 +4176,25 @@ UPB_INLINE envoy_config_route_v3_RetryPolicy_ResetHeader* envoy_config_route_v3_
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RetryPolicy_ResetHeader_serialize(const envoy_config_route_v3_RetryPolicy_ResetHeader* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_ResetHeader_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_ResetHeader_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RetryPolicy_ResetHeader_serialize_ex(const envoy_config_route_v3_RetryPolicy_ResetHeader* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_ResetHeader_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_ResetHeader_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_ResetHeader_clear_name(const envoy_config_route_v3_RetryPolicy_ResetHeader* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RetryPolicy_ResetHeader_name(const envoy_config_route_v3_RetryPolicy_ResetHeader* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_ResetHeader_clear_format(const envoy_config_route_v3_RetryPolicy_ResetHeader* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_config_route_v3_RetryPolicy_ResetHeader_format(const envoy_config_route_v3_RetryPolicy_ResetHeader* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
@@ -3129,37 +4231,52 @@ UPB_INLINE envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* envoy_conf
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_serialize(const envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_serialize_ex(const envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_has_reset_headers(const envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_clear_reset_headers(const envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_config_route_v3_RetryPolicy_ResetHeader* const* envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_reset_headers(const envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* msg, size_t* len) {
+ return (const envoy_config_route_v3_RetryPolicy_ResetHeader* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_has_max_interval(const envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_clear_max_interval(const envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_has_reset_headers(const envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const envoy_config_route_v3_RetryPolicy_ResetHeader* const* envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_reset_headers(const envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff *msg, size_t *len) { return (const envoy_config_route_v3_RetryPolicy_ResetHeader* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
-UPB_INLINE bool envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_has_max_interval(const envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_max_interval(const envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Duration*);
}
-UPB_INLINE envoy_config_route_v3_RetryPolicy_ResetHeader** envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_mutable_reset_headers(envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff *msg, size_t *len) {
- return (envoy_config_route_v3_RetryPolicy_ResetHeader**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
+UPB_INLINE envoy_config_route_v3_RetryPolicy_ResetHeader** envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_mutable_reset_headers(envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* msg, size_t* len) {
+ return (envoy_config_route_v3_RetryPolicy_ResetHeader**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE envoy_config_route_v3_RetryPolicy_ResetHeader** envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_resize_reset_headers(envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_RetryPolicy_ResetHeader**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_RetryPolicy_ResetHeader** envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_resize_reset_headers(envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_RetryPolicy_ResetHeader**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_RetryPolicy_ResetHeader* envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_add_reset_headers(envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RetryPolicy_ResetHeader* envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_add_reset_headers(envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RetryPolicy_ResetHeader* sub = (struct envoy_config_route_v3_RetryPolicy_ResetHeader*)_upb_Message_New(&envoy_config_route_v3_RetryPolicy_ResetHeader_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_set_max_interval(envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_mutable_max_interval(envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_mutable_max_interval(envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_route_v3_RetryPolicy_RateLimitedRetryBackOff_max_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -3194,20 +4311,37 @@ UPB_INLINE envoy_config_route_v3_HedgePolicy* envoy_config_route_v3_HedgePolicy_
return ret;
}
UPB_INLINE char* envoy_config_route_v3_HedgePolicy_serialize(const envoy_config_route_v3_HedgePolicy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_HedgePolicy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_HedgePolicy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_HedgePolicy_serialize_ex(const envoy_config_route_v3_HedgePolicy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_HedgePolicy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_HedgePolicy_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_HedgePolicy_has_initial_requests(const envoy_config_route_v3_HedgePolicy* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_HedgePolicy_clear_initial_requests(const envoy_config_route_v3_HedgePolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_HedgePolicy_has_initial_requests(const envoy_config_route_v3_HedgePolicy *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_route_v3_HedgePolicy_initial_requests(const envoy_config_route_v3_HedgePolicy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_config_route_v3_HedgePolicy_has_additional_request_chance(const envoy_config_route_v3_HedgePolicy *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_route_v3_HedgePolicy_has_additional_request_chance(const envoy_config_route_v3_HedgePolicy* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_HedgePolicy_clear_additional_request_chance(const envoy_config_route_v3_HedgePolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_HedgePolicy_additional_request_chance(const envoy_config_route_v3_HedgePolicy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_type_v3_FractionalPercent*);
}
+UPB_INLINE void envoy_config_route_v3_HedgePolicy_clear_hedge_on_per_try_timeout(const envoy_config_route_v3_HedgePolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_config_route_v3_HedgePolicy_hedge_on_per_try_timeout(const envoy_config_route_v3_HedgePolicy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
@@ -3216,7 +4350,7 @@ UPB_INLINE void envoy_config_route_v3_HedgePolicy_set_initial_requests(envoy_con
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_HedgePolicy_mutable_initial_requests(envoy_config_route_v3_HedgePolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_HedgePolicy_mutable_initial_requests(envoy_config_route_v3_HedgePolicy* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_route_v3_HedgePolicy_initial_requests(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -3229,7 +4363,7 @@ UPB_INLINE void envoy_config_route_v3_HedgePolicy_set_additional_request_chance(
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_type_v3_FractionalPercent*) = value;
}
-UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_HedgePolicy_mutable_additional_request_chance(envoy_config_route_v3_HedgePolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_HedgePolicy_mutable_additional_request_chance(envoy_config_route_v3_HedgePolicy* msg, upb_Arena* arena) {
struct envoy_type_v3_FractionalPercent* sub = (struct envoy_type_v3_FractionalPercent*)envoy_config_route_v3_HedgePolicy_additional_request_chance(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_FractionalPercent*)_upb_Message_New(&envoy_type_v3_FractionalPercent_msginit, arena);
@@ -3267,78 +4401,131 @@ UPB_INLINE envoy_config_route_v3_RedirectAction* envoy_config_route_v3_RedirectA
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RedirectAction_serialize(const envoy_config_route_v3_RedirectAction* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RedirectAction_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RedirectAction_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RedirectAction_serialize_ex(const envoy_config_route_v3_RedirectAction* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RedirectAction_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RedirectAction_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_route_v3_RedirectAction_scheme_rewrite_specifier_https_redirect = 4,
envoy_config_route_v3_RedirectAction_scheme_rewrite_specifier_scheme_redirect = 7,
envoy_config_route_v3_RedirectAction_scheme_rewrite_specifier_NOT_SET = 0
} envoy_config_route_v3_RedirectAction_scheme_rewrite_specifier_oneofcases;
-UPB_INLINE envoy_config_route_v3_RedirectAction_scheme_rewrite_specifier_oneofcases envoy_config_route_v3_RedirectAction_scheme_rewrite_specifier_case(const envoy_config_route_v3_RedirectAction* msg) { return (envoy_config_route_v3_RedirectAction_scheme_rewrite_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(40, 72), int32_t); }
-
+UPB_INLINE envoy_config_route_v3_RedirectAction_scheme_rewrite_specifier_oneofcases envoy_config_route_v3_RedirectAction_scheme_rewrite_specifier_case(const envoy_config_route_v3_RedirectAction* msg) {
+ return (envoy_config_route_v3_RedirectAction_scheme_rewrite_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
+}
typedef enum {
envoy_config_route_v3_RedirectAction_path_rewrite_specifier_path_redirect = 2,
envoy_config_route_v3_RedirectAction_path_rewrite_specifier_prefix_rewrite = 5,
envoy_config_route_v3_RedirectAction_path_rewrite_specifier_regex_rewrite = 9,
envoy_config_route_v3_RedirectAction_path_rewrite_specifier_NOT_SET = 0
} envoy_config_route_v3_RedirectAction_path_rewrite_specifier_oneofcases;
-UPB_INLINE envoy_config_route_v3_RedirectAction_path_rewrite_specifier_oneofcases envoy_config_route_v3_RedirectAction_path_rewrite_specifier_case(const envoy_config_route_v3_RedirectAction* msg) { return (envoy_config_route_v3_RedirectAction_path_rewrite_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(28, 48), int32_t); }
-
+UPB_INLINE envoy_config_route_v3_RedirectAction_path_rewrite_specifier_oneofcases envoy_config_route_v3_RedirectAction_path_rewrite_specifier_case(const envoy_config_route_v3_RedirectAction* msg) {
+ return (envoy_config_route_v3_RedirectAction_path_rewrite_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t);
+}
+UPB_INLINE void envoy_config_route_v3_RedirectAction_clear_host_redirect(const envoy_config_route_v3_RedirectAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 56), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_route_v3_RedirectAction_host_redirect(const envoy_config_route_v3_RedirectAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 56), upb_StringView);
+}
+UPB_INLINE bool envoy_config_route_v3_RedirectAction_has_path_redirect(const envoy_config_route_v3_RedirectAction* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(16, 16)) == 2;
+}
+UPB_INLINE void envoy_config_route_v3_RedirectAction_clear_path_redirect(const envoy_config_route_v3_RedirectAction* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(28, 40), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(16, 16), envoy_config_route_v3_RedirectAction_path_rewrite_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RedirectAction_path_redirect(const envoy_config_route_v3_RedirectAction* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(28, 40), UPB_SIZE(16, 16), 2, upb_StringView_FromString(""));
+}
+UPB_INLINE void envoy_config_route_v3_RedirectAction_clear_response_code(const envoy_config_route_v3_RedirectAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
-UPB_INLINE bool envoy_config_route_v3_RedirectAction_has_path_redirect(const envoy_config_route_v3_RedirectAction *msg) { return _upb_getoneofcase(msg, UPB_SIZE(28, 48)) == 2; }
-UPB_INLINE upb_StringView envoy_config_route_v3_RedirectAction_path_redirect(const envoy_config_route_v3_RedirectAction *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(20, 32), UPB_SIZE(28, 48), 2, upb_StringView_FromString("")); }
UPB_INLINE int32_t envoy_config_route_v3_RedirectAction_response_code(const envoy_config_route_v3_RedirectAction* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
-UPB_INLINE bool envoy_config_route_v3_RedirectAction_has_https_redirect(const envoy_config_route_v3_RedirectAction *msg) { return _upb_getoneofcase(msg, UPB_SIZE(40, 72)) == 4; }
-UPB_INLINE bool envoy_config_route_v3_RedirectAction_https_redirect(const envoy_config_route_v3_RedirectAction *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(32, 56), UPB_SIZE(40, 72), 4, false); }
-UPB_INLINE bool envoy_config_route_v3_RedirectAction_has_prefix_rewrite(const envoy_config_route_v3_RedirectAction *msg) { return _upb_getoneofcase(msg, UPB_SIZE(28, 48)) == 5; }
-UPB_INLINE upb_StringView envoy_config_route_v3_RedirectAction_prefix_rewrite(const envoy_config_route_v3_RedirectAction *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(20, 32), UPB_SIZE(28, 48), 5, upb_StringView_FromString("")); }
+UPB_INLINE bool envoy_config_route_v3_RedirectAction_has_https_redirect(const envoy_config_route_v3_RedirectAction* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(8, 8)) == 4;
+}
+UPB_INLINE void envoy_config_route_v3_RedirectAction_clear_https_redirect(const envoy_config_route_v3_RedirectAction* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(20, 24), 0, UPB_SIZE(8, 8), envoy_config_route_v3_RedirectAction_scheme_rewrite_specifier_NOT_SET);
+}
+UPB_INLINE bool envoy_config_route_v3_RedirectAction_https_redirect(const envoy_config_route_v3_RedirectAction* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(20, 24), UPB_SIZE(8, 8), 4, false);
+}
+UPB_INLINE bool envoy_config_route_v3_RedirectAction_has_prefix_rewrite(const envoy_config_route_v3_RedirectAction* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(16, 16)) == 5;
+}
+UPB_INLINE void envoy_config_route_v3_RedirectAction_clear_prefix_rewrite(const envoy_config_route_v3_RedirectAction* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(28, 40), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(16, 16), envoy_config_route_v3_RedirectAction_path_rewrite_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RedirectAction_prefix_rewrite(const envoy_config_route_v3_RedirectAction* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(28, 40), UPB_SIZE(16, 16), 5, upb_StringView_FromString(""));
+}
+UPB_INLINE void envoy_config_route_v3_RedirectAction_clear_strip_query(const envoy_config_route_v3_RedirectAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = 0;
+}
UPB_INLINE bool envoy_config_route_v3_RedirectAction_strip_query(const envoy_config_route_v3_RedirectAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
+}
+UPB_INLINE bool envoy_config_route_v3_RedirectAction_has_scheme_redirect(const envoy_config_route_v3_RedirectAction* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(8, 8)) == 7;
+}
+UPB_INLINE void envoy_config_route_v3_RedirectAction_clear_scheme_redirect(const envoy_config_route_v3_RedirectAction* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(20, 24), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(8, 8), envoy_config_route_v3_RedirectAction_scheme_rewrite_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RedirectAction_scheme_redirect(const envoy_config_route_v3_RedirectAction* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(20, 24), UPB_SIZE(8, 8), 7, upb_StringView_FromString(""));
+}
+UPB_INLINE void envoy_config_route_v3_RedirectAction_clear_port_redirect(const envoy_config_route_v3_RedirectAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), uint32_t) = 0;
}
-UPB_INLINE bool envoy_config_route_v3_RedirectAction_has_scheme_redirect(const envoy_config_route_v3_RedirectAction *msg) { return _upb_getoneofcase(msg, UPB_SIZE(40, 72)) == 7; }
-UPB_INLINE upb_StringView envoy_config_route_v3_RedirectAction_scheme_redirect(const envoy_config_route_v3_RedirectAction *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(32, 56), UPB_SIZE(40, 72), 7, upb_StringView_FromString("")); }
UPB_INLINE uint32_t envoy_config_route_v3_RedirectAction_port_redirect(const envoy_config_route_v3_RedirectAction* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), uint32_t);
+}
+UPB_INLINE bool envoy_config_route_v3_RedirectAction_has_regex_rewrite(const envoy_config_route_v3_RedirectAction* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(16, 16)) == 9;
+}
+UPB_INLINE void envoy_config_route_v3_RedirectAction_clear_regex_rewrite(const envoy_config_route_v3_RedirectAction* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatchAndSubstitute*, UPB_SIZE(28, 40), 0, UPB_SIZE(16, 16), envoy_config_route_v3_RedirectAction_path_rewrite_specifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RedirectAction_regex_rewrite(const envoy_config_route_v3_RedirectAction* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_RegexMatchAndSubstitute*, UPB_SIZE(28, 40), UPB_SIZE(16, 16), 9, NULL);
}
-UPB_INLINE bool envoy_config_route_v3_RedirectAction_has_regex_rewrite(const envoy_config_route_v3_RedirectAction *msg) { return _upb_getoneofcase(msg, UPB_SIZE(28, 48)) == 9; }
-UPB_INLINE const struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RedirectAction_regex_rewrite(const envoy_config_route_v3_RedirectAction *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_RegexMatchAndSubstitute*, UPB_SIZE(20, 32), UPB_SIZE(28, 48), 9, NULL); }
UPB_INLINE void envoy_config_route_v3_RedirectAction_set_host_redirect(envoy_config_route_v3_RedirectAction *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 56), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_RedirectAction_set_path_redirect(envoy_config_route_v3_RedirectAction *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(20, 32), value, UPB_SIZE(28, 48), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(28, 40), value, UPB_SIZE(16, 16), 2);
}
UPB_INLINE void envoy_config_route_v3_RedirectAction_set_response_code(envoy_config_route_v3_RedirectAction *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
}
UPB_INLINE void envoy_config_route_v3_RedirectAction_set_https_redirect(envoy_config_route_v3_RedirectAction *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(32, 56), value, UPB_SIZE(40, 72), 4);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(20, 24), value, UPB_SIZE(8, 8), 4);
}
UPB_INLINE void envoy_config_route_v3_RedirectAction_set_prefix_rewrite(envoy_config_route_v3_RedirectAction *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(20, 32), value, UPB_SIZE(28, 48), 5);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(28, 40), value, UPB_SIZE(16, 16), 5);
}
UPB_INLINE void envoy_config_route_v3_RedirectAction_set_strip_query(envoy_config_route_v3_RedirectAction *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = value;
}
UPB_INLINE void envoy_config_route_v3_RedirectAction_set_scheme_redirect(envoy_config_route_v3_RedirectAction *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(32, 56), value, UPB_SIZE(40, 72), 7);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(20, 24), value, UPB_SIZE(8, 8), 7);
}
UPB_INLINE void envoy_config_route_v3_RedirectAction_set_port_redirect(envoy_config_route_v3_RedirectAction *msg, uint32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), uint32_t) = value;
}
UPB_INLINE void envoy_config_route_v3_RedirectAction_set_regex_rewrite(envoy_config_route_v3_RedirectAction *msg, struct envoy_type_matcher_v3_RegexMatchAndSubstitute* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatchAndSubstitute*, UPB_SIZE(20, 32), value, UPB_SIZE(28, 48), 9);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatchAndSubstitute*, UPB_SIZE(28, 40), value, UPB_SIZE(16, 16), 9);
}
-UPB_INLINE struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RedirectAction_mutable_regex_rewrite(envoy_config_route_v3_RedirectAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_config_route_v3_RedirectAction_mutable_regex_rewrite(envoy_config_route_v3_RedirectAction* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_RegexMatchAndSubstitute* sub = (struct envoy_type_matcher_v3_RegexMatchAndSubstitute*)envoy_config_route_v3_RedirectAction_regex_rewrite(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_RegexMatchAndSubstitute*)_upb_Message_New(&envoy_type_matcher_v3_RegexMatchAndSubstitute_msginit, arena);
@@ -3373,16 +4560,28 @@ UPB_INLINE envoy_config_route_v3_DirectResponseAction* envoy_config_route_v3_Dir
return ret;
}
UPB_INLINE char* envoy_config_route_v3_DirectResponseAction_serialize(const envoy_config_route_v3_DirectResponseAction* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_DirectResponseAction_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_DirectResponseAction_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_DirectResponseAction_serialize_ex(const envoy_config_route_v3_DirectResponseAction* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_DirectResponseAction_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_DirectResponseAction_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_DirectResponseAction_clear_status(const envoy_config_route_v3_DirectResponseAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_config_route_v3_DirectResponseAction_status(const envoy_config_route_v3_DirectResponseAction* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
}
-UPB_INLINE bool envoy_config_route_v3_DirectResponseAction_has_body(const envoy_config_route_v3_DirectResponseAction *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_route_v3_DirectResponseAction_has_body(const envoy_config_route_v3_DirectResponseAction* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_DirectResponseAction_clear_body(const envoy_config_route_v3_DirectResponseAction* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_config_route_v3_DirectResponseAction_body(const envoy_config_route_v3_DirectResponseAction* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct envoy_config_core_v3_DataSource*);
}
@@ -3394,7 +4593,7 @@ UPB_INLINE void envoy_config_route_v3_DirectResponseAction_set_body(envoy_config
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_route_v3_DirectResponseAction_mutable_body(envoy_config_route_v3_DirectResponseAction *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_route_v3_DirectResponseAction_mutable_body(envoy_config_route_v3_DirectResponseAction* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_config_route_v3_DirectResponseAction_body(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -3429,11 +4628,15 @@ UPB_INLINE envoy_config_route_v3_NonForwardingAction* envoy_config_route_v3_NonF
return ret;
}
UPB_INLINE char* envoy_config_route_v3_NonForwardingAction_serialize(const envoy_config_route_v3_NonForwardingAction* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_NonForwardingAction_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_NonForwardingAction_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_NonForwardingAction_serialize_ex(const envoy_config_route_v3_NonForwardingAction* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_NonForwardingAction_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_NonForwardingAction_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -3462,16 +4665,28 @@ UPB_INLINE envoy_config_route_v3_Decorator* envoy_config_route_v3_Decorator_pars
return ret;
}
UPB_INLINE char* envoy_config_route_v3_Decorator_serialize(const envoy_config_route_v3_Decorator* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_Decorator_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_Decorator_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_Decorator_serialize_ex(const envoy_config_route_v3_Decorator* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_Decorator_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_Decorator_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_Decorator_clear_operation(const envoy_config_route_v3_Decorator* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_Decorator_operation(const envoy_config_route_v3_Decorator* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_route_v3_Decorator_has_propagate(const envoy_config_route_v3_Decorator *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_route_v3_Decorator_has_propagate(const envoy_config_route_v3_Decorator* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_Decorator_clear_propagate(const envoy_config_route_v3_Decorator* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_Decorator_propagate(const envoy_config_route_v3_Decorator* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_BoolValue*);
}
@@ -3483,7 +4698,7 @@ UPB_INLINE void envoy_config_route_v3_Decorator_set_propagate(envoy_config_route
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_Decorator_mutable_propagate(envoy_config_route_v3_Decorator *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_Decorator_mutable_propagate(envoy_config_route_v3_Decorator* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_route_v3_Decorator_propagate(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -3518,32 +4733,58 @@ UPB_INLINE envoy_config_route_v3_Tracing* envoy_config_route_v3_Tracing_parse_ex
return ret;
}
UPB_INLINE char* envoy_config_route_v3_Tracing_serialize(const envoy_config_route_v3_Tracing* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_Tracing_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_Tracing_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_Tracing_serialize_ex(const envoy_config_route_v3_Tracing* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_Tracing_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_Tracing_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_Tracing_has_client_sampling(const envoy_config_route_v3_Tracing* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_Tracing_clear_client_sampling(const envoy_config_route_v3_Tracing* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_Tracing_has_client_sampling(const envoy_config_route_v3_Tracing *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing_client_sampling(const envoy_config_route_v3_Tracing* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_v3_FractionalPercent*);
}
-UPB_INLINE bool envoy_config_route_v3_Tracing_has_random_sampling(const envoy_config_route_v3_Tracing *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_route_v3_Tracing_has_random_sampling(const envoy_config_route_v3_Tracing* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_Tracing_clear_random_sampling(const envoy_config_route_v3_Tracing* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing_random_sampling(const envoy_config_route_v3_Tracing* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_type_v3_FractionalPercent*);
}
-UPB_INLINE bool envoy_config_route_v3_Tracing_has_overall_sampling(const envoy_config_route_v3_Tracing *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_route_v3_Tracing_has_overall_sampling(const envoy_config_route_v3_Tracing* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_route_v3_Tracing_clear_overall_sampling(const envoy_config_route_v3_Tracing* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing_overall_sampling(const envoy_config_route_v3_Tracing* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_type_v3_FractionalPercent*);
}
-UPB_INLINE bool envoy_config_route_v3_Tracing_has_custom_tags(const envoy_config_route_v3_Tracing *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const struct envoy_type_tracing_v3_CustomTag* const* envoy_config_route_v3_Tracing_custom_tags(const envoy_config_route_v3_Tracing *msg, size_t *len) { return (const struct envoy_type_tracing_v3_CustomTag* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
+UPB_INLINE bool envoy_config_route_v3_Tracing_has_custom_tags(const envoy_config_route_v3_Tracing* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE void envoy_config_route_v3_Tracing_clear_custom_tags(const envoy_config_route_v3_Tracing* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE const struct envoy_type_tracing_v3_CustomTag* const* envoy_config_route_v3_Tracing_custom_tags(const envoy_config_route_v3_Tracing* msg, size_t* len) {
+ return (const struct envoy_type_tracing_v3_CustomTag* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
UPB_INLINE void envoy_config_route_v3_Tracing_set_client_sampling(envoy_config_route_v3_Tracing *msg, struct envoy_type_v3_FractionalPercent* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_v3_FractionalPercent*) = value;
}
-UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing_mutable_client_sampling(envoy_config_route_v3_Tracing *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing_mutable_client_sampling(envoy_config_route_v3_Tracing* msg, upb_Arena* arena) {
struct envoy_type_v3_FractionalPercent* sub = (struct envoy_type_v3_FractionalPercent*)envoy_config_route_v3_Tracing_client_sampling(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_FractionalPercent*)_upb_Message_New(&envoy_type_v3_FractionalPercent_msginit, arena);
@@ -3556,7 +4797,7 @@ UPB_INLINE void envoy_config_route_v3_Tracing_set_random_sampling(envoy_config_r
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_type_v3_FractionalPercent*) = value;
}
-UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing_mutable_random_sampling(envoy_config_route_v3_Tracing *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing_mutable_random_sampling(envoy_config_route_v3_Tracing* msg, upb_Arena* arena) {
struct envoy_type_v3_FractionalPercent* sub = (struct envoy_type_v3_FractionalPercent*)envoy_config_route_v3_Tracing_random_sampling(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_FractionalPercent*)_upb_Message_New(&envoy_type_v3_FractionalPercent_msginit, arena);
@@ -3569,7 +4810,7 @@ UPB_INLINE void envoy_config_route_v3_Tracing_set_overall_sampling(envoy_config_
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_type_v3_FractionalPercent*) = value;
}
-UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing_mutable_overall_sampling(envoy_config_route_v3_Tracing *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing_mutable_overall_sampling(envoy_config_route_v3_Tracing* msg, upb_Arena* arena) {
struct envoy_type_v3_FractionalPercent* sub = (struct envoy_type_v3_FractionalPercent*)envoy_config_route_v3_Tracing_overall_sampling(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_FractionalPercent*)_upb_Message_New(&envoy_type_v3_FractionalPercent_msginit, arena);
@@ -3578,16 +4819,15 @@ UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_config_route_v3_Tracing
}
return sub;
}
-UPB_INLINE struct envoy_type_tracing_v3_CustomTag** envoy_config_route_v3_Tracing_mutable_custom_tags(envoy_config_route_v3_Tracing *msg, size_t *len) {
+UPB_INLINE struct envoy_type_tracing_v3_CustomTag** envoy_config_route_v3_Tracing_mutable_custom_tags(envoy_config_route_v3_Tracing* msg, size_t* len) {
return (struct envoy_type_tracing_v3_CustomTag**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE struct envoy_type_tracing_v3_CustomTag** envoy_config_route_v3_Tracing_resize_custom_tags(envoy_config_route_v3_Tracing *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_tracing_v3_CustomTag** envoy_config_route_v3_Tracing_resize_custom_tags(envoy_config_route_v3_Tracing* msg, size_t len, upb_Arena* arena) {
return (struct envoy_type_tracing_v3_CustomTag**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_type_tracing_v3_CustomTag* envoy_config_route_v3_Tracing_add_custom_tags(envoy_config_route_v3_Tracing *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_tracing_v3_CustomTag* envoy_config_route_v3_Tracing_add_custom_tags(envoy_config_route_v3_Tracing* msg, upb_Arena* arena) {
struct envoy_type_tracing_v3_CustomTag* sub = (struct envoy_type_tracing_v3_CustomTag*)_upb_Message_New(&envoy_type_tracing_v3_CustomTag_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -3617,31 +4857,44 @@ UPB_INLINE envoy_config_route_v3_VirtualCluster* envoy_config_route_v3_VirtualCl
return ret;
}
UPB_INLINE char* envoy_config_route_v3_VirtualCluster_serialize(const envoy_config_route_v3_VirtualCluster* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_VirtualCluster_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_VirtualCluster_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_VirtualCluster_serialize_ex(const envoy_config_route_v3_VirtualCluster* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_VirtualCluster_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_VirtualCluster_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_VirtualCluster_clear_name(const envoy_config_route_v3_VirtualCluster* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_VirtualCluster_name(const envoy_config_route_v3_VirtualCluster* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
-UPB_INLINE bool envoy_config_route_v3_VirtualCluster_has_headers(const envoy_config_route_v3_VirtualCluster *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const envoy_config_route_v3_HeaderMatcher* const* envoy_config_route_v3_VirtualCluster_headers(const envoy_config_route_v3_VirtualCluster *msg, size_t *len) { return (const envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
+UPB_INLINE bool envoy_config_route_v3_VirtualCluster_has_headers(const envoy_config_route_v3_VirtualCluster* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_config_route_v3_VirtualCluster_clear_headers(const envoy_config_route_v3_VirtualCluster* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const envoy_config_route_v3_HeaderMatcher* const* envoy_config_route_v3_VirtualCluster_headers(const envoy_config_route_v3_VirtualCluster* msg, size_t* len) {
+ return (const envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
UPB_INLINE void envoy_config_route_v3_VirtualCluster_set_name(envoy_config_route_v3_VirtualCluster *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
-UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_VirtualCluster_mutable_headers(envoy_config_route_v3_VirtualCluster *msg, size_t *len) {
+UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_VirtualCluster_mutable_headers(envoy_config_route_v3_VirtualCluster* msg, size_t* len) {
return (envoy_config_route_v3_HeaderMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_VirtualCluster_resize_headers(envoy_config_route_v3_VirtualCluster *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_VirtualCluster_resize_headers(envoy_config_route_v3_VirtualCluster* msg, size_t len, upb_Arena* arena) {
return (envoy_config_route_v3_HeaderMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_route_v3_VirtualCluster_add_headers(envoy_config_route_v3_VirtualCluster *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_route_v3_VirtualCluster_add_headers(envoy_config_route_v3_VirtualCluster* msg, upb_Arena* arena) {
struct envoy_config_route_v3_HeaderMatcher* sub = (struct envoy_config_route_v3_HeaderMatcher*)_upb_Message_New(&envoy_config_route_v3_HeaderMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -3671,31 +4924,55 @@ UPB_INLINE envoy_config_route_v3_RateLimit* envoy_config_route_v3_RateLimit_pars
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_serialize(const envoy_config_route_v3_RateLimit* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_serialize_ex(const envoy_config_route_v3_RateLimit* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_has_stage(const envoy_config_route_v3_RateLimit* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_clear_stage(const envoy_config_route_v3_RateLimit* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RateLimit_has_stage(const envoy_config_route_v3_RateLimit *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_route_v3_RateLimit_stage(const envoy_config_route_v3_RateLimit* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_clear_disable_key(const envoy_config_route_v3_RateLimit* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RateLimit_disable_key(const envoy_config_route_v3_RateLimit* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_has_actions(const envoy_config_route_v3_RateLimit* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_clear_actions(const envoy_config_route_v3_RateLimit* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE const envoy_config_route_v3_RateLimit_Action* const* envoy_config_route_v3_RateLimit_actions(const envoy_config_route_v3_RateLimit* msg, size_t* len) {
+ return (const envoy_config_route_v3_RateLimit_Action* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_has_limit(const envoy_config_route_v3_RateLimit* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_clear_limit(const envoy_config_route_v3_RateLimit* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RateLimit_has_actions(const envoy_config_route_v3_RateLimit *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE const envoy_config_route_v3_RateLimit_Action* const* envoy_config_route_v3_RateLimit_actions(const envoy_config_route_v3_RateLimit *msg, size_t *len) { return (const envoy_config_route_v3_RateLimit_Action* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len); }
-UPB_INLINE bool envoy_config_route_v3_RateLimit_has_limit(const envoy_config_route_v3_RateLimit *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const envoy_config_route_v3_RateLimit_Override* envoy_config_route_v3_RateLimit_limit(const envoy_config_route_v3_RateLimit* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const envoy_config_route_v3_RateLimit_Override*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const envoy_config_route_v3_RateLimit_Override*);
}
UPB_INLINE void envoy_config_route_v3_RateLimit_set_stage(envoy_config_route_v3_RateLimit *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RateLimit_mutable_stage(envoy_config_route_v3_RateLimit *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RateLimit_mutable_stage(envoy_config_route_v3_RateLimit* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_route_v3_RateLimit_stage(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -3705,26 +4982,25 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RateLimit_m
return sub;
}
UPB_INLINE void envoy_config_route_v3_RateLimit_set_disable_key(envoy_config_route_v3_RateLimit *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
-UPB_INLINE envoy_config_route_v3_RateLimit_Action** envoy_config_route_v3_RateLimit_mutable_actions(envoy_config_route_v3_RateLimit *msg, size_t *len) {
- return (envoy_config_route_v3_RateLimit_Action**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
+UPB_INLINE envoy_config_route_v3_RateLimit_Action** envoy_config_route_v3_RateLimit_mutable_actions(envoy_config_route_v3_RateLimit* msg, size_t* len) {
+ return (envoy_config_route_v3_RateLimit_Action**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE envoy_config_route_v3_RateLimit_Action** envoy_config_route_v3_RateLimit_resize_actions(envoy_config_route_v3_RateLimit *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_route_v3_RateLimit_Action**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_route_v3_RateLimit_Action** envoy_config_route_v3_RateLimit_resize_actions(envoy_config_route_v3_RateLimit* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_route_v3_RateLimit_Action**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_RateLimit_Action* envoy_config_route_v3_RateLimit_add_actions(envoy_config_route_v3_RateLimit *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RateLimit_Action* envoy_config_route_v3_RateLimit_add_actions(envoy_config_route_v3_RateLimit* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RateLimit_Action* sub = (struct envoy_config_route_v3_RateLimit_Action*)_upb_Message_New(&envoy_config_route_v3_RateLimit_Action_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_route_v3_RateLimit_set_limit(envoy_config_route_v3_RateLimit *msg, envoy_config_route_v3_RateLimit_Override* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 32), envoy_config_route_v3_RateLimit_Override*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), envoy_config_route_v3_RateLimit_Override*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_RateLimit_Override* envoy_config_route_v3_RateLimit_mutable_limit(envoy_config_route_v3_RateLimit *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RateLimit_Override* envoy_config_route_v3_RateLimit_mutable_limit(envoy_config_route_v3_RateLimit* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RateLimit_Override* sub = (struct envoy_config_route_v3_RateLimit_Override*)envoy_config_route_v3_RateLimit_limit(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RateLimit_Override*)_upb_Message_New(&envoy_config_route_v3_RateLimit_Override_msginit, arena);
@@ -3759,11 +5035,15 @@ UPB_INLINE envoy_config_route_v3_RateLimit_Action* envoy_config_route_v3_RateLim
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_serialize(const envoy_config_route_v3_RateLimit_Action* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_serialize_ex(const envoy_config_route_v3_RateLimit_Action* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_route_v3_RateLimit_Action_action_specifier_source_cluster = 1,
@@ -3775,33 +5055,107 @@ typedef enum {
envoy_config_route_v3_RateLimit_Action_action_specifier_dynamic_metadata = 7,
envoy_config_route_v3_RateLimit_Action_action_specifier_metadata = 8,
envoy_config_route_v3_RateLimit_Action_action_specifier_extension = 9,
+ envoy_config_route_v3_RateLimit_Action_action_specifier_masked_remote_address = 10,
envoy_config_route_v3_RateLimit_Action_action_specifier_NOT_SET = 0
} envoy_config_route_v3_RateLimit_Action_action_specifier_oneofcases;
-UPB_INLINE envoy_config_route_v3_RateLimit_Action_action_specifier_oneofcases envoy_config_route_v3_RateLimit_Action_action_specifier_case(const envoy_config_route_v3_RateLimit_Action* msg) { return (envoy_config_route_v3_RateLimit_Action_action_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_source_cluster(const envoy_config_route_v3_RateLimit_Action *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_route_v3_RateLimit_Action_SourceCluster* envoy_config_route_v3_RateLimit_Action_source_cluster(const envoy_config_route_v3_RateLimit_Action *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_SourceCluster*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_destination_cluster(const envoy_config_route_v3_RateLimit_Action *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const envoy_config_route_v3_RateLimit_Action_DestinationCluster* envoy_config_route_v3_RateLimit_Action_destination_cluster(const envoy_config_route_v3_RateLimit_Action *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_DestinationCluster*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_request_headers(const envoy_config_route_v3_RateLimit_Action *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const envoy_config_route_v3_RateLimit_Action_RequestHeaders* envoy_config_route_v3_RateLimit_Action_request_headers(const envoy_config_route_v3_RateLimit_Action *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_RequestHeaders*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_remote_address(const envoy_config_route_v3_RateLimit_Action *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 4; }
-UPB_INLINE const envoy_config_route_v3_RateLimit_Action_RemoteAddress* envoy_config_route_v3_RateLimit_Action_remote_address(const envoy_config_route_v3_RateLimit_Action *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_RemoteAddress*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 4, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_generic_key(const envoy_config_route_v3_RateLimit_Action *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 5; }
-UPB_INLINE const envoy_config_route_v3_RateLimit_Action_GenericKey* envoy_config_route_v3_RateLimit_Action_generic_key(const envoy_config_route_v3_RateLimit_Action *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_GenericKey*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 5, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_header_value_match(const envoy_config_route_v3_RateLimit_Action *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 6; }
-UPB_INLINE const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* envoy_config_route_v3_RateLimit_Action_header_value_match(const envoy_config_route_v3_RateLimit_Action *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 6, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_dynamic_metadata(const envoy_config_route_v3_RateLimit_Action *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 7; }
-UPB_INLINE const envoy_config_route_v3_RateLimit_Action_DynamicMetaData* envoy_config_route_v3_RateLimit_Action_dynamic_metadata(const envoy_config_route_v3_RateLimit_Action *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_DynamicMetaData*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 7, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_metadata(const envoy_config_route_v3_RateLimit_Action *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 8; }
-UPB_INLINE const envoy_config_route_v3_RateLimit_Action_MetaData* envoy_config_route_v3_RateLimit_Action_metadata(const envoy_config_route_v3_RateLimit_Action *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_MetaData*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 8, NULL); }
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_extension(const envoy_config_route_v3_RateLimit_Action *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 9; }
-UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_RateLimit_Action_extension(const envoy_config_route_v3_RateLimit_Action *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 9, NULL); }
+UPB_INLINE envoy_config_route_v3_RateLimit_Action_action_specifier_oneofcases envoy_config_route_v3_RateLimit_Action_action_specifier_case(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return (envoy_config_route_v3_RateLimit_Action_action_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_source_cluster(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_clear_source_cluster(const envoy_config_route_v3_RateLimit_Action* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_SourceCluster*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_route_v3_RateLimit_Action_action_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RateLimit_Action_SourceCluster* envoy_config_route_v3_RateLimit_Action_source_cluster(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_SourceCluster*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_destination_cluster(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_clear_destination_cluster(const envoy_config_route_v3_RateLimit_Action* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_DestinationCluster*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_route_v3_RateLimit_Action_action_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RateLimit_Action_DestinationCluster* envoy_config_route_v3_RateLimit_Action_destination_cluster(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_DestinationCluster*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_request_headers(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_clear_request_headers(const envoy_config_route_v3_RateLimit_Action* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_RequestHeaders*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_route_v3_RateLimit_Action_action_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RateLimit_Action_RequestHeaders* envoy_config_route_v3_RateLimit_Action_request_headers(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_RequestHeaders*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_remote_address(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_clear_remote_address(const envoy_config_route_v3_RateLimit_Action* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_RemoteAddress*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_route_v3_RateLimit_Action_action_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RateLimit_Action_RemoteAddress* envoy_config_route_v3_RateLimit_Action_remote_address(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_RemoteAddress*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_generic_key(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_clear_generic_key(const envoy_config_route_v3_RateLimit_Action* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_GenericKey*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_route_v3_RateLimit_Action_action_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RateLimit_Action_GenericKey* envoy_config_route_v3_RateLimit_Action_generic_key(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_GenericKey*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 5, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_header_value_match(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 6;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_clear_header_value_match(const envoy_config_route_v3_RateLimit_Action* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_HeaderValueMatch*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_route_v3_RateLimit_Action_action_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* envoy_config_route_v3_RateLimit_Action_header_value_match(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 6, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_dynamic_metadata(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 7;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_clear_dynamic_metadata(const envoy_config_route_v3_RateLimit_Action* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_DynamicMetaData*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_route_v3_RateLimit_Action_action_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RateLimit_Action_DynamicMetaData* envoy_config_route_v3_RateLimit_Action_dynamic_metadata(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_DynamicMetaData*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 7, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_metadata(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 8;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_clear_metadata(const envoy_config_route_v3_RateLimit_Action* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_MetaData*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_route_v3_RateLimit_Action_action_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RateLimit_Action_MetaData* envoy_config_route_v3_RateLimit_Action_metadata(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_MetaData*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 8, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_extension(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 9;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_clear_extension(const envoy_config_route_v3_RateLimit_Action* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_route_v3_RateLimit_Action_action_specifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_RateLimit_Action_extension(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 9, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_has_masked_remote_address(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 10;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_clear_masked_remote_address(const envoy_config_route_v3_RateLimit_Action* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_route_v3_RateLimit_Action_action_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* envoy_config_route_v3_RateLimit_Action_masked_remote_address(const envoy_config_route_v3_RateLimit_Action* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 10, NULL);
+}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_set_source_cluster(envoy_config_route_v3_RateLimit_Action *msg, envoy_config_route_v3_RateLimit_Action_SourceCluster* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_SourceCluster*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_SourceCluster*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_SourceCluster* envoy_config_route_v3_RateLimit_Action_mutable_source_cluster(envoy_config_route_v3_RateLimit_Action *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_SourceCluster* envoy_config_route_v3_RateLimit_Action_mutable_source_cluster(envoy_config_route_v3_RateLimit_Action* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RateLimit_Action_SourceCluster* sub = (struct envoy_config_route_v3_RateLimit_Action_SourceCluster*)envoy_config_route_v3_RateLimit_Action_source_cluster(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RateLimit_Action_SourceCluster*)_upb_Message_New(&envoy_config_route_v3_RateLimit_Action_SourceCluster_msginit, arena);
@@ -3811,9 +5165,9 @@ UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_SourceCluster* envoy_co
return sub;
}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_set_destination_cluster(envoy_config_route_v3_RateLimit_Action *msg, envoy_config_route_v3_RateLimit_Action_DestinationCluster* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_DestinationCluster*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_DestinationCluster*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_DestinationCluster* envoy_config_route_v3_RateLimit_Action_mutable_destination_cluster(envoy_config_route_v3_RateLimit_Action *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_DestinationCluster* envoy_config_route_v3_RateLimit_Action_mutable_destination_cluster(envoy_config_route_v3_RateLimit_Action* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RateLimit_Action_DestinationCluster* sub = (struct envoy_config_route_v3_RateLimit_Action_DestinationCluster*)envoy_config_route_v3_RateLimit_Action_destination_cluster(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RateLimit_Action_DestinationCluster*)_upb_Message_New(&envoy_config_route_v3_RateLimit_Action_DestinationCluster_msginit, arena);
@@ -3823,9 +5177,9 @@ UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_DestinationCluster* env
return sub;
}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_set_request_headers(envoy_config_route_v3_RateLimit_Action *msg, envoy_config_route_v3_RateLimit_Action_RequestHeaders* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_RequestHeaders*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_RequestHeaders*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_RequestHeaders* envoy_config_route_v3_RateLimit_Action_mutable_request_headers(envoy_config_route_v3_RateLimit_Action *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_RequestHeaders* envoy_config_route_v3_RateLimit_Action_mutable_request_headers(envoy_config_route_v3_RateLimit_Action* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RateLimit_Action_RequestHeaders* sub = (struct envoy_config_route_v3_RateLimit_Action_RequestHeaders*)envoy_config_route_v3_RateLimit_Action_request_headers(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RateLimit_Action_RequestHeaders*)_upb_Message_New(&envoy_config_route_v3_RateLimit_Action_RequestHeaders_msginit, arena);
@@ -3835,9 +5189,9 @@ UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_RequestHeaders* envoy_c
return sub;
}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_set_remote_address(envoy_config_route_v3_RateLimit_Action *msg, envoy_config_route_v3_RateLimit_Action_RemoteAddress* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_RemoteAddress*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 4);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_RemoteAddress*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_RemoteAddress* envoy_config_route_v3_RateLimit_Action_mutable_remote_address(envoy_config_route_v3_RateLimit_Action *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_RemoteAddress* envoy_config_route_v3_RateLimit_Action_mutable_remote_address(envoy_config_route_v3_RateLimit_Action* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RateLimit_Action_RemoteAddress* sub = (struct envoy_config_route_v3_RateLimit_Action_RemoteAddress*)envoy_config_route_v3_RateLimit_Action_remote_address(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RateLimit_Action_RemoteAddress*)_upb_Message_New(&envoy_config_route_v3_RateLimit_Action_RemoteAddress_msginit, arena);
@@ -3847,9 +5201,9 @@ UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_RemoteAddress* envoy_co
return sub;
}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_set_generic_key(envoy_config_route_v3_RateLimit_Action *msg, envoy_config_route_v3_RateLimit_Action_GenericKey* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_GenericKey*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 5);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_GenericKey*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_GenericKey* envoy_config_route_v3_RateLimit_Action_mutable_generic_key(envoy_config_route_v3_RateLimit_Action *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_GenericKey* envoy_config_route_v3_RateLimit_Action_mutable_generic_key(envoy_config_route_v3_RateLimit_Action* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RateLimit_Action_GenericKey* sub = (struct envoy_config_route_v3_RateLimit_Action_GenericKey*)envoy_config_route_v3_RateLimit_Action_generic_key(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RateLimit_Action_GenericKey*)_upb_Message_New(&envoy_config_route_v3_RateLimit_Action_GenericKey_msginit, arena);
@@ -3859,9 +5213,9 @@ UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_GenericKey* envoy_confi
return sub;
}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_set_header_value_match(envoy_config_route_v3_RateLimit_Action *msg, envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_HeaderValueMatch*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 6);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_HeaderValueMatch*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 6);
}
-UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* envoy_config_route_v3_RateLimit_Action_mutable_header_value_match(envoy_config_route_v3_RateLimit_Action *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* envoy_config_route_v3_RateLimit_Action_mutable_header_value_match(envoy_config_route_v3_RateLimit_Action* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* sub = (struct envoy_config_route_v3_RateLimit_Action_HeaderValueMatch*)envoy_config_route_v3_RateLimit_Action_header_value_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RateLimit_Action_HeaderValueMatch*)_upb_Message_New(&envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_msginit, arena);
@@ -3871,9 +5225,9 @@ UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* envoy
return sub;
}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_set_dynamic_metadata(envoy_config_route_v3_RateLimit_Action *msg, envoy_config_route_v3_RateLimit_Action_DynamicMetaData* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_DynamicMetaData*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 7);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_DynamicMetaData*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 7);
}
-UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_DynamicMetaData* envoy_config_route_v3_RateLimit_Action_mutable_dynamic_metadata(envoy_config_route_v3_RateLimit_Action *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_DynamicMetaData* envoy_config_route_v3_RateLimit_Action_mutable_dynamic_metadata(envoy_config_route_v3_RateLimit_Action* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RateLimit_Action_DynamicMetaData* sub = (struct envoy_config_route_v3_RateLimit_Action_DynamicMetaData*)envoy_config_route_v3_RateLimit_Action_dynamic_metadata(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RateLimit_Action_DynamicMetaData*)_upb_Message_New(&envoy_config_route_v3_RateLimit_Action_DynamicMetaData_msginit, arena);
@@ -3883,9 +5237,9 @@ UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_DynamicMetaData* envoy_
return sub;
}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_set_metadata(envoy_config_route_v3_RateLimit_Action *msg, envoy_config_route_v3_RateLimit_Action_MetaData* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_MetaData*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 8);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_MetaData*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 8);
}
-UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_MetaData* envoy_config_route_v3_RateLimit_Action_mutable_metadata(envoy_config_route_v3_RateLimit_Action *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_MetaData* envoy_config_route_v3_RateLimit_Action_mutable_metadata(envoy_config_route_v3_RateLimit_Action* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RateLimit_Action_MetaData* sub = (struct envoy_config_route_v3_RateLimit_Action_MetaData*)envoy_config_route_v3_RateLimit_Action_metadata(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RateLimit_Action_MetaData*)_upb_Message_New(&envoy_config_route_v3_RateLimit_Action_MetaData_msginit, arena);
@@ -3895,9 +5249,9 @@ UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_MetaData* envoy_config_
return sub;
}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_set_extension(envoy_config_route_v3_RateLimit_Action *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 9);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 9);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_RateLimit_Action_mutable_extension(envoy_config_route_v3_RateLimit_Action *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_RateLimit_Action_mutable_extension(envoy_config_route_v3_RateLimit_Action* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_config_route_v3_RateLimit_Action_extension(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -3906,6 +5260,18 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_
}
return sub;
}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_set_masked_remote_address(envoy_config_route_v3_RateLimit_Action *msg, envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* value) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 10);
+}
+UPB_INLINE struct envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* envoy_config_route_v3_RateLimit_Action_mutable_masked_remote_address(envoy_config_route_v3_RateLimit_Action* msg, upb_Arena* arena) {
+ struct envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* sub = (struct envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress*)envoy_config_route_v3_RateLimit_Action_masked_remote_address(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress*)_upb_Message_New(&envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_route_v3_RateLimit_Action_set_masked_remote_address(msg, sub);
+ }
+ return sub;
+}
/* envoy.config.route.v3.RateLimit.Action.SourceCluster */
@@ -3932,11 +5298,15 @@ UPB_INLINE envoy_config_route_v3_RateLimit_Action_SourceCluster* envoy_config_ro
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_SourceCluster_serialize(const envoy_config_route_v3_RateLimit_Action_SourceCluster* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_SourceCluster_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_SourceCluster_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_SourceCluster_serialize_ex(const envoy_config_route_v3_RateLimit_Action_SourceCluster* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_SourceCluster_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_SourceCluster_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -3965,11 +5335,15 @@ UPB_INLINE envoy_config_route_v3_RateLimit_Action_DestinationCluster* envoy_conf
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_DestinationCluster_serialize(const envoy_config_route_v3_RateLimit_Action_DestinationCluster* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_DestinationCluster_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_DestinationCluster_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_DestinationCluster_serialize_ex(const envoy_config_route_v3_RateLimit_Action_DestinationCluster* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_DestinationCluster_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_DestinationCluster_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -3998,18 +5372,31 @@ UPB_INLINE envoy_config_route_v3_RateLimit_Action_RequestHeaders* envoy_config_r
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_RequestHeaders_serialize(const envoy_config_route_v3_RateLimit_Action_RequestHeaders* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_RequestHeaders_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_RequestHeaders_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_RequestHeaders_serialize_ex(const envoy_config_route_v3_RateLimit_Action_RequestHeaders* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_RequestHeaders_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_RequestHeaders_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_RequestHeaders_clear_header_name(const envoy_config_route_v3_RateLimit_Action_RequestHeaders* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RateLimit_Action_RequestHeaders_header_name(const envoy_config_route_v3_RateLimit_Action_RequestHeaders* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_RequestHeaders_clear_descriptor_key(const envoy_config_route_v3_RateLimit_Action_RequestHeaders* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_route_v3_RateLimit_Action_RequestHeaders_descriptor_key(const envoy_config_route_v3_RateLimit_Action_RequestHeaders* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_RequestHeaders_clear_skip_if_absent(const envoy_config_route_v3_RateLimit_Action_RequestHeaders* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
+}
UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_RequestHeaders_skip_if_absent(const envoy_config_route_v3_RateLimit_Action_RequestHeaders* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
@@ -4049,13 +5436,98 @@ UPB_INLINE envoy_config_route_v3_RateLimit_Action_RemoteAddress* envoy_config_ro
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_RemoteAddress_serialize(const envoy_config_route_v3_RateLimit_Action_RemoteAddress* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_RemoteAddress_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_RemoteAddress_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_RemoteAddress_serialize_ex(const envoy_config_route_v3_RateLimit_Action_RemoteAddress* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_RemoteAddress_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_RemoteAddress_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+
+
+/* envoy.config.route.v3.RateLimit.Action.MaskedRemoteAddress */
+
+UPB_INLINE envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_new(upb_Arena* arena) {
+ return (envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress*)_upb_Message_New(&envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_msginit, arena);
+}
+UPB_INLINE envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* ret = envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* ret = envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_serialize(const envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_serialize_ex(const envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_has_v4_prefix_mask_len(const envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_clear_v4_prefix_mask_len(const envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_v4_prefix_mask_len(const envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_has_v6_prefix_mask_len(const envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_clear_v6_prefix_mask_len(const envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_v6_prefix_mask_len(const envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_UInt32Value*);
}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_set_v4_prefix_mask_len(envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress *msg, struct google_protobuf_UInt32Value* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt32Value*) = value;
+}
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_mutable_v4_prefix_mask_len(envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* msg, upb_Arena* arena) {
+ struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_v4_prefix_mask_len(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_set_v4_prefix_mask_len(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_set_v6_prefix_mask_len(envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress *msg, struct google_protobuf_UInt32Value* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_UInt32Value*) = value;
+}
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_mutable_v6_prefix_mask_len(envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress* msg, upb_Arena* arena) {
+ struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_v6_prefix_mask_len(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_set_v6_prefix_mask_len(msg, sub);
+ }
+ return sub;
+}
/* envoy.config.route.v3.RateLimit.Action.GenericKey */
@@ -4082,15 +5554,25 @@ UPB_INLINE envoy_config_route_v3_RateLimit_Action_GenericKey* envoy_config_route
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_GenericKey_serialize(const envoy_config_route_v3_RateLimit_Action_GenericKey* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_GenericKey_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_GenericKey_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_GenericKey_serialize_ex(const envoy_config_route_v3_RateLimit_Action_GenericKey* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_GenericKey_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_GenericKey_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_GenericKey_clear_descriptor_value(const envoy_config_route_v3_RateLimit_Action_GenericKey* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RateLimit_Action_GenericKey_descriptor_value(const envoy_config_route_v3_RateLimit_Action_GenericKey* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_GenericKey_clear_descriptor_key(const envoy_config_route_v3_RateLimit_Action_GenericKey* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_route_v3_RateLimit_Action_GenericKey_descriptor_key(const envoy_config_route_v3_RateLimit_Action_GenericKey* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
@@ -4127,21 +5609,46 @@ UPB_INLINE envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* envoy_config
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_serialize(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_serialize_ex(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_clear_descriptor_value(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_descriptor_value(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_has_expect_match(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_has_expect_match(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_clear_expect_match(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_expect_match(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_BoolValue*);
}
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_has_headers(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const envoy_config_route_v3_HeaderMatcher* const* envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_headers(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch *msg, size_t *len) { return (const envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_has_headers(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_clear_headers(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE const envoy_config_route_v3_HeaderMatcher* const* envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_headers(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg, size_t* len) {
+ return (const envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_clear_descriptor_key(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_descriptor_key(const envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_set_descriptor_value(envoy_config_route_v3_RateLimit_Action_HeaderValueMatch *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
@@ -4150,7 +5657,7 @@ UPB_INLINE void envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_set_expe
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_mutable_expect_match(envoy_config_route_v3_RateLimit_Action_HeaderValueMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_mutable_expect_match(envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_expect_match(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -4159,19 +5666,21 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_config_route_v3_RateLimit_Act
}
return sub;
}
-UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_mutable_headers(envoy_config_route_v3_RateLimit_Action_HeaderValueMatch *msg, size_t *len) {
+UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_mutable_headers(envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg, size_t* len) {
return (envoy_config_route_v3_HeaderMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_resize_headers(envoy_config_route_v3_RateLimit_Action_HeaderValueMatch *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_route_v3_HeaderMatcher** envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_resize_headers(envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg, size_t len, upb_Arena* arena) {
return (envoy_config_route_v3_HeaderMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_add_headers(envoy_config_route_v3_RateLimit_Action_HeaderValueMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_add_headers(envoy_config_route_v3_RateLimit_Action_HeaderValueMatch* msg, upb_Arena* arena) {
struct envoy_config_route_v3_HeaderMatcher* sub = (struct envoy_config_route_v3_HeaderMatcher*)_upb_Message_New(&envoy_config_route_v3_HeaderMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_HeaderValueMatch_set_descriptor_key(envoy_config_route_v3_RateLimit_Action_HeaderValueMatch *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
+}
/* envoy.config.route.v3.RateLimit.Action.DynamicMetaData */
@@ -4198,21 +5707,36 @@ UPB_INLINE envoy_config_route_v3_RateLimit_Action_DynamicMetaData* envoy_config_
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_DynamicMetaData_serialize(const envoy_config_route_v3_RateLimit_Action_DynamicMetaData* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_DynamicMetaData_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_DynamicMetaData_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_DynamicMetaData_serialize_ex(const envoy_config_route_v3_RateLimit_Action_DynamicMetaData* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_DynamicMetaData_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_DynamicMetaData_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_DynamicMetaData_clear_descriptor_key(const envoy_config_route_v3_RateLimit_Action_DynamicMetaData* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RateLimit_Action_DynamicMetaData_descriptor_key(const envoy_config_route_v3_RateLimit_Action_DynamicMetaData* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_DynamicMetaData_has_metadata_key(const envoy_config_route_v3_RateLimit_Action_DynamicMetaData *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_DynamicMetaData_has_metadata_key(const envoy_config_route_v3_RateLimit_Action_DynamicMetaData* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_DynamicMetaData_clear_metadata_key(const envoy_config_route_v3_RateLimit_Action_DynamicMetaData* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_metadata_v3_MetadataKey* envoy_config_route_v3_RateLimit_Action_DynamicMetaData_metadata_key(const envoy_config_route_v3_RateLimit_Action_DynamicMetaData* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct envoy_type_metadata_v3_MetadataKey*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_type_metadata_v3_MetadataKey*);
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_DynamicMetaData_clear_default_value(const envoy_config_route_v3_RateLimit_Action_DynamicMetaData* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RateLimit_Action_DynamicMetaData_default_value(const envoy_config_route_v3_RateLimit_Action_DynamicMetaData* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView);
}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_DynamicMetaData_set_descriptor_key(envoy_config_route_v3_RateLimit_Action_DynamicMetaData *msg, upb_StringView value) {
@@ -4220,9 +5744,9 @@ UPB_INLINE void envoy_config_route_v3_RateLimit_Action_DynamicMetaData_set_descr
}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_DynamicMetaData_set_metadata_key(envoy_config_route_v3_RateLimit_Action_DynamicMetaData *msg, struct envoy_type_metadata_v3_MetadataKey* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct envoy_type_metadata_v3_MetadataKey*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_type_metadata_v3_MetadataKey*) = value;
}
-UPB_INLINE struct envoy_type_metadata_v3_MetadataKey* envoy_config_route_v3_RateLimit_Action_DynamicMetaData_mutable_metadata_key(envoy_config_route_v3_RateLimit_Action_DynamicMetaData *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_metadata_v3_MetadataKey* envoy_config_route_v3_RateLimit_Action_DynamicMetaData_mutable_metadata_key(envoy_config_route_v3_RateLimit_Action_DynamicMetaData* msg, upb_Arena* arena) {
struct envoy_type_metadata_v3_MetadataKey* sub = (struct envoy_type_metadata_v3_MetadataKey*)envoy_config_route_v3_RateLimit_Action_DynamicMetaData_metadata_key(msg);
if (sub == NULL) {
sub = (struct envoy_type_metadata_v3_MetadataKey*)_upb_Message_New(&envoy_type_metadata_v3_MetadataKey_msginit, arena);
@@ -4232,7 +5756,7 @@ UPB_INLINE struct envoy_type_metadata_v3_MetadataKey* envoy_config_route_v3_Rate
return sub;
}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_DynamicMetaData_set_default_value(envoy_config_route_v3_RateLimit_Action_DynamicMetaData *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = value;
}
/* envoy.config.route.v3.RateLimit.Action.MetaData */
@@ -4260,21 +5784,39 @@ UPB_INLINE envoy_config_route_v3_RateLimit_Action_MetaData* envoy_config_route_v
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_MetaData_serialize(const envoy_config_route_v3_RateLimit_Action_MetaData* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_MetaData_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_MetaData_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Action_MetaData_serialize_ex(const envoy_config_route_v3_RateLimit_Action_MetaData* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_MetaData_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Action_MetaData_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_MetaData_clear_descriptor_key(const envoy_config_route_v3_RateLimit_Action_MetaData* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RateLimit_Action_MetaData_descriptor_key(const envoy_config_route_v3_RateLimit_Action_MetaData* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_MetaData_has_metadata_key(const envoy_config_route_v3_RateLimit_Action_MetaData *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Action_MetaData_has_metadata_key(const envoy_config_route_v3_RateLimit_Action_MetaData* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_MetaData_clear_metadata_key(const envoy_config_route_v3_RateLimit_Action_MetaData* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_metadata_v3_MetadataKey* envoy_config_route_v3_RateLimit_Action_MetaData_metadata_key(const envoy_config_route_v3_RateLimit_Action_MetaData* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct envoy_type_metadata_v3_MetadataKey*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct envoy_type_metadata_v3_MetadataKey*);
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_MetaData_clear_default_value(const envoy_config_route_v3_RateLimit_Action_MetaData* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_RateLimit_Action_MetaData_default_value(const envoy_config_route_v3_RateLimit_Action_MetaData* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView);
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Action_MetaData_clear_source(const envoy_config_route_v3_RateLimit_Action_MetaData* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_route_v3_RateLimit_Action_MetaData_source(const envoy_config_route_v3_RateLimit_Action_MetaData* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
@@ -4285,9 +5827,9 @@ UPB_INLINE void envoy_config_route_v3_RateLimit_Action_MetaData_set_descriptor_k
}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_MetaData_set_metadata_key(envoy_config_route_v3_RateLimit_Action_MetaData *msg, struct envoy_type_metadata_v3_MetadataKey* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct envoy_type_metadata_v3_MetadataKey*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct envoy_type_metadata_v3_MetadataKey*) = value;
}
-UPB_INLINE struct envoy_type_metadata_v3_MetadataKey* envoy_config_route_v3_RateLimit_Action_MetaData_mutable_metadata_key(envoy_config_route_v3_RateLimit_Action_MetaData *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_metadata_v3_MetadataKey* envoy_config_route_v3_RateLimit_Action_MetaData_mutable_metadata_key(envoy_config_route_v3_RateLimit_Action_MetaData* msg, upb_Arena* arena) {
struct envoy_type_metadata_v3_MetadataKey* sub = (struct envoy_type_metadata_v3_MetadataKey*)envoy_config_route_v3_RateLimit_Action_MetaData_metadata_key(msg);
if (sub == NULL) {
sub = (struct envoy_type_metadata_v3_MetadataKey*)_upb_Message_New(&envoy_type_metadata_v3_MetadataKey_msginit, arena);
@@ -4297,7 +5839,7 @@ UPB_INLINE struct envoy_type_metadata_v3_MetadataKey* envoy_config_route_v3_Rate
return sub;
}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_MetaData_set_default_value(envoy_config_route_v3_RateLimit_Action_MetaData *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_RateLimit_Action_MetaData_set_source(envoy_config_route_v3_RateLimit_Action_MetaData *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
@@ -4328,25 +5870,37 @@ UPB_INLINE envoy_config_route_v3_RateLimit_Override* envoy_config_route_v3_RateL
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Override_serialize(const envoy_config_route_v3_RateLimit_Override* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Override_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Override_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Override_serialize_ex(const envoy_config_route_v3_RateLimit_Override* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Override_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Override_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_route_v3_RateLimit_Override_override_specifier_dynamic_metadata = 1,
envoy_config_route_v3_RateLimit_Override_override_specifier_NOT_SET = 0
} envoy_config_route_v3_RateLimit_Override_override_specifier_oneofcases;
-UPB_INLINE envoy_config_route_v3_RateLimit_Override_override_specifier_oneofcases envoy_config_route_v3_RateLimit_Override_override_specifier_case(const envoy_config_route_v3_RateLimit_Override* msg) { return (envoy_config_route_v3_RateLimit_Override_override_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Override_has_dynamic_metadata(const envoy_config_route_v3_RateLimit_Override *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_route_v3_RateLimit_Override_DynamicMetadata* envoy_config_route_v3_RateLimit_Override_dynamic_metadata(const envoy_config_route_v3_RateLimit_Override *msg) { return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Override_DynamicMetadata*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
+UPB_INLINE envoy_config_route_v3_RateLimit_Override_override_specifier_oneofcases envoy_config_route_v3_RateLimit_Override_override_specifier_case(const envoy_config_route_v3_RateLimit_Override* msg) {
+ return (envoy_config_route_v3_RateLimit_Override_override_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Override_has_dynamic_metadata(const envoy_config_route_v3_RateLimit_Override* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Override_clear_dynamic_metadata(const envoy_config_route_v3_RateLimit_Override* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Override_DynamicMetadata*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_route_v3_RateLimit_Override_override_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_config_route_v3_RateLimit_Override_DynamicMetadata* envoy_config_route_v3_RateLimit_Override_dynamic_metadata(const envoy_config_route_v3_RateLimit_Override* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_route_v3_RateLimit_Override_DynamicMetadata*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
UPB_INLINE void envoy_config_route_v3_RateLimit_Override_set_dynamic_metadata(envoy_config_route_v3_RateLimit_Override *msg, envoy_config_route_v3_RateLimit_Override_DynamicMetadata* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Override_DynamicMetadata*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_route_v3_RateLimit_Override_DynamicMetadata*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_route_v3_RateLimit_Override_DynamicMetadata* envoy_config_route_v3_RateLimit_Override_mutable_dynamic_metadata(envoy_config_route_v3_RateLimit_Override *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RateLimit_Override_DynamicMetadata* envoy_config_route_v3_RateLimit_Override_mutable_dynamic_metadata(envoy_config_route_v3_RateLimit_Override* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RateLimit_Override_DynamicMetadata* sub = (struct envoy_config_route_v3_RateLimit_Override_DynamicMetadata*)envoy_config_route_v3_RateLimit_Override_dynamic_metadata(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RateLimit_Override_DynamicMetadata*)_upb_Message_New(&envoy_config_route_v3_RateLimit_Override_DynamicMetadata_msginit, arena);
@@ -4381,13 +5935,22 @@ UPB_INLINE envoy_config_route_v3_RateLimit_Override_DynamicMetadata* envoy_confi
return ret;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Override_DynamicMetadata_serialize(const envoy_config_route_v3_RateLimit_Override_DynamicMetadata* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Override_DynamicMetadata_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Override_DynamicMetadata_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_RateLimit_Override_DynamicMetadata_serialize_ex(const envoy_config_route_v3_RateLimit_Override_DynamicMetadata* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_RateLimit_Override_DynamicMetadata_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_RateLimit_Override_DynamicMetadata_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_RateLimit_Override_DynamicMetadata_has_metadata_key(const envoy_config_route_v3_RateLimit_Override_DynamicMetadata* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_RateLimit_Override_DynamicMetadata_clear_metadata_key(const envoy_config_route_v3_RateLimit_Override_DynamicMetadata* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_RateLimit_Override_DynamicMetadata_has_metadata_key(const envoy_config_route_v3_RateLimit_Override_DynamicMetadata *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_metadata_v3_MetadataKey* envoy_config_route_v3_RateLimit_Override_DynamicMetadata_metadata_key(const envoy_config_route_v3_RateLimit_Override_DynamicMetadata* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_metadata_v3_MetadataKey*);
}
@@ -4396,7 +5959,7 @@ UPB_INLINE void envoy_config_route_v3_RateLimit_Override_DynamicMetadata_set_met
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_metadata_v3_MetadataKey*) = value;
}
-UPB_INLINE struct envoy_type_metadata_v3_MetadataKey* envoy_config_route_v3_RateLimit_Override_DynamicMetadata_mutable_metadata_key(envoy_config_route_v3_RateLimit_Override_DynamicMetadata *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_metadata_v3_MetadataKey* envoy_config_route_v3_RateLimit_Override_DynamicMetadata_mutable_metadata_key(envoy_config_route_v3_RateLimit_Override_DynamicMetadata* msg, upb_Arena* arena) {
struct envoy_type_metadata_v3_MetadataKey* sub = (struct envoy_type_metadata_v3_MetadataKey*)envoy_config_route_v3_RateLimit_Override_DynamicMetadata_metadata_key(msg);
if (sub == NULL) {
sub = (struct envoy_type_metadata_v3_MetadataKey*)_upb_Message_New(&envoy_type_metadata_v3_MetadataKey_msginit, arena);
@@ -4431,11 +5994,15 @@ UPB_INLINE envoy_config_route_v3_HeaderMatcher* envoy_config_route_v3_HeaderMatc
return ret;
}
UPB_INLINE char* envoy_config_route_v3_HeaderMatcher_serialize(const envoy_config_route_v3_HeaderMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_HeaderMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_HeaderMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_HeaderMatcher_serialize_ex(const envoy_config_route_v3_HeaderMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_HeaderMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_HeaderMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_route_v3_HeaderMatcher_header_match_specifier_exact_match = 4,
@@ -4448,41 +6015,110 @@ typedef enum {
envoy_config_route_v3_HeaderMatcher_header_match_specifier_string_match = 13,
envoy_config_route_v3_HeaderMatcher_header_match_specifier_NOT_SET = 0
} envoy_config_route_v3_HeaderMatcher_header_match_specifier_oneofcases;
-UPB_INLINE envoy_config_route_v3_HeaderMatcher_header_match_specifier_oneofcases envoy_config_route_v3_HeaderMatcher_header_match_specifier_case(const envoy_config_route_v3_HeaderMatcher* msg) { return (envoy_config_route_v3_HeaderMatcher_header_match_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(20, 40), int32_t); }
-
+UPB_INLINE envoy_config_route_v3_HeaderMatcher_header_match_specifier_oneofcases envoy_config_route_v3_HeaderMatcher_header_match_specifier_case(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return (envoy_config_route_v3_HeaderMatcher_header_match_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_config_route_v3_HeaderMatcher_clear_name(const envoy_config_route_v3_HeaderMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_route_v3_HeaderMatcher_name(const envoy_config_route_v3_HeaderMatcher* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView);
+}
+UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_exact_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 4;
+}
+UPB_INLINE void envoy_config_route_v3_HeaderMatcher_clear_exact_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_route_v3_HeaderMatcher_header_match_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_HeaderMatcher_exact_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 4, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_range_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 6;
+}
+UPB_INLINE void envoy_config_route_v3_HeaderMatcher_clear_range_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_v3_Int64Range*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_route_v3_HeaderMatcher_header_match_specifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_v3_Int64Range* envoy_config_route_v3_HeaderMatcher_range_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_v3_Int64Range*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 6, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_present_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 7;
+}
+UPB_INLINE void envoy_config_route_v3_HeaderMatcher_clear_present_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_route_v3_HeaderMatcher_header_match_specifier_NOT_SET);
+}
+UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_present_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 7, false);
+}
+UPB_INLINE void envoy_config_route_v3_HeaderMatcher_clear_invert_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
-UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_exact_match(const envoy_config_route_v3_HeaderMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 4; }
-UPB_INLINE upb_StringView envoy_config_route_v3_HeaderMatcher_exact_match(const envoy_config_route_v3_HeaderMatcher *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(12, 24), UPB_SIZE(20, 40), 4, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_range_match(const envoy_config_route_v3_HeaderMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 6; }
-UPB_INLINE const struct envoy_type_v3_Int64Range* envoy_config_route_v3_HeaderMatcher_range_match(const envoy_config_route_v3_HeaderMatcher *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_v3_Int64Range*, UPB_SIZE(12, 24), UPB_SIZE(20, 40), 6, NULL); }
-UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_present_match(const envoy_config_route_v3_HeaderMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 7; }
-UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_present_match(const envoy_config_route_v3_HeaderMatcher *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(12, 24), UPB_SIZE(20, 40), 7, false); }
UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_invert_match(const envoy_config_route_v3_HeaderMatcher* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
-UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_prefix_match(const envoy_config_route_v3_HeaderMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 9; }
-UPB_INLINE upb_StringView envoy_config_route_v3_HeaderMatcher_prefix_match(const envoy_config_route_v3_HeaderMatcher *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(12, 24), UPB_SIZE(20, 40), 9, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_suffix_match(const envoy_config_route_v3_HeaderMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 10; }
-UPB_INLINE upb_StringView envoy_config_route_v3_HeaderMatcher_suffix_match(const envoy_config_route_v3_HeaderMatcher *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(12, 24), UPB_SIZE(20, 40), 10, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_safe_regex_match(const envoy_config_route_v3_HeaderMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 11; }
-UPB_INLINE const struct envoy_type_matcher_v3_RegexMatcher* envoy_config_route_v3_HeaderMatcher_safe_regex_match(const envoy_config_route_v3_HeaderMatcher *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(12, 24), UPB_SIZE(20, 40), 11, NULL); }
-UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_contains_match(const envoy_config_route_v3_HeaderMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 12; }
-UPB_INLINE upb_StringView envoy_config_route_v3_HeaderMatcher_contains_match(const envoy_config_route_v3_HeaderMatcher *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(12, 24), UPB_SIZE(20, 40), 12, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_string_match(const envoy_config_route_v3_HeaderMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 13; }
-UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_config_route_v3_HeaderMatcher_string_match(const envoy_config_route_v3_HeaderMatcher *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(12, 24), UPB_SIZE(20, 40), 13, NULL); }
+UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_prefix_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 9;
+}
+UPB_INLINE void envoy_config_route_v3_HeaderMatcher_clear_prefix_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_route_v3_HeaderMatcher_header_match_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_HeaderMatcher_prefix_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 9, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_suffix_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 10;
+}
+UPB_INLINE void envoy_config_route_v3_HeaderMatcher_clear_suffix_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_route_v3_HeaderMatcher_header_match_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_HeaderMatcher_suffix_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 10, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_safe_regex_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 11;
+}
+UPB_INLINE void envoy_config_route_v3_HeaderMatcher_clear_safe_regex_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_route_v3_HeaderMatcher_header_match_specifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_RegexMatcher* envoy_config_route_v3_HeaderMatcher_safe_regex_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 11, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_contains_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 12;
+}
+UPB_INLINE void envoy_config_route_v3_HeaderMatcher_clear_contains_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_route_v3_HeaderMatcher_header_match_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_HeaderMatcher_contains_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 12, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_has_string_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 13;
+}
+UPB_INLINE void envoy_config_route_v3_HeaderMatcher_clear_string_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_config_route_v3_HeaderMatcher_header_match_specifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_config_route_v3_HeaderMatcher_string_match(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 13, NULL);
+}
+UPB_INLINE void envoy_config_route_v3_HeaderMatcher_clear_treat_missing_header_as_empty(const envoy_config_route_v3_HeaderMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
+}
+UPB_INLINE bool envoy_config_route_v3_HeaderMatcher_treat_missing_header_as_empty(const envoy_config_route_v3_HeaderMatcher* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+}
UPB_INLINE void envoy_config_route_v3_HeaderMatcher_set_name(envoy_config_route_v3_HeaderMatcher *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_HeaderMatcher_set_exact_match(envoy_config_route_v3_HeaderMatcher *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 24), value, UPB_SIZE(20, 40), 4);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 4);
}
UPB_INLINE void envoy_config_route_v3_HeaderMatcher_set_range_match(envoy_config_route_v3_HeaderMatcher *msg, struct envoy_type_v3_Int64Range* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_v3_Int64Range*, UPB_SIZE(12, 24), value, UPB_SIZE(20, 40), 6);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_v3_Int64Range*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 6);
}
-UPB_INLINE struct envoy_type_v3_Int64Range* envoy_config_route_v3_HeaderMatcher_mutable_range_match(envoy_config_route_v3_HeaderMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Int64Range* envoy_config_route_v3_HeaderMatcher_mutable_range_match(envoy_config_route_v3_HeaderMatcher* msg, upb_Arena* arena) {
struct envoy_type_v3_Int64Range* sub = (struct envoy_type_v3_Int64Range*)envoy_config_route_v3_HeaderMatcher_range_match(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Int64Range*)_upb_Message_New(&envoy_type_v3_Int64Range_msginit, arena);
@@ -4492,21 +6128,21 @@ UPB_INLINE struct envoy_type_v3_Int64Range* envoy_config_route_v3_HeaderMatcher_
return sub;
}
UPB_INLINE void envoy_config_route_v3_HeaderMatcher_set_present_match(envoy_config_route_v3_HeaderMatcher *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 24), value, UPB_SIZE(20, 40), 7);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 7);
}
UPB_INLINE void envoy_config_route_v3_HeaderMatcher_set_invert_match(envoy_config_route_v3_HeaderMatcher *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = value;
}
UPB_INLINE void envoy_config_route_v3_HeaderMatcher_set_prefix_match(envoy_config_route_v3_HeaderMatcher *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 24), value, UPB_SIZE(20, 40), 9);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 9);
}
UPB_INLINE void envoy_config_route_v3_HeaderMatcher_set_suffix_match(envoy_config_route_v3_HeaderMatcher *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 24), value, UPB_SIZE(20, 40), 10);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 10);
}
UPB_INLINE void envoy_config_route_v3_HeaderMatcher_set_safe_regex_match(envoy_config_route_v3_HeaderMatcher *msg, struct envoy_type_matcher_v3_RegexMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(12, 24), value, UPB_SIZE(20, 40), 11);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 11);
}
-UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher* envoy_config_route_v3_HeaderMatcher_mutable_safe_regex_match(envoy_config_route_v3_HeaderMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher* envoy_config_route_v3_HeaderMatcher_mutable_safe_regex_match(envoy_config_route_v3_HeaderMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_RegexMatcher* sub = (struct envoy_type_matcher_v3_RegexMatcher*)envoy_config_route_v3_HeaderMatcher_safe_regex_match(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_RegexMatcher*)_upb_Message_New(&envoy_type_matcher_v3_RegexMatcher_msginit, arena);
@@ -4516,12 +6152,12 @@ UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher* envoy_config_route_v3_Head
return sub;
}
UPB_INLINE void envoy_config_route_v3_HeaderMatcher_set_contains_match(envoy_config_route_v3_HeaderMatcher *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 24), value, UPB_SIZE(20, 40), 12);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 12);
}
UPB_INLINE void envoy_config_route_v3_HeaderMatcher_set_string_match(envoy_config_route_v3_HeaderMatcher *msg, struct envoy_type_matcher_v3_StringMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(12, 24), value, UPB_SIZE(20, 40), 13);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 13);
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_route_v3_HeaderMatcher_mutable_string_match(envoy_config_route_v3_HeaderMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_route_v3_HeaderMatcher_mutable_string_match(envoy_config_route_v3_HeaderMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)envoy_config_route_v3_HeaderMatcher_string_match(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StringMatcher_msginit, arena);
@@ -4530,6 +6166,9 @@ UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_route_v3_Hea
}
return sub;
}
+UPB_INLINE void envoy_config_route_v3_HeaderMatcher_set_treat_missing_header_as_empty(envoy_config_route_v3_HeaderMatcher *msg, bool value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
+}
/* envoy.config.route.v3.QueryParameterMatcher */
@@ -4556,34 +6195,56 @@ UPB_INLINE envoy_config_route_v3_QueryParameterMatcher* envoy_config_route_v3_Qu
return ret;
}
UPB_INLINE char* envoy_config_route_v3_QueryParameterMatcher_serialize(const envoy_config_route_v3_QueryParameterMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_QueryParameterMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_QueryParameterMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_QueryParameterMatcher_serialize_ex(const envoy_config_route_v3_QueryParameterMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_QueryParameterMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_QueryParameterMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_route_v3_QueryParameterMatcher_query_parameter_match_specifier_string_match = 5,
envoy_config_route_v3_QueryParameterMatcher_query_parameter_match_specifier_present_match = 6,
envoy_config_route_v3_QueryParameterMatcher_query_parameter_match_specifier_NOT_SET = 0
} envoy_config_route_v3_QueryParameterMatcher_query_parameter_match_specifier_oneofcases;
-UPB_INLINE envoy_config_route_v3_QueryParameterMatcher_query_parameter_match_specifier_oneofcases envoy_config_route_v3_QueryParameterMatcher_query_parameter_match_specifier_case(const envoy_config_route_v3_QueryParameterMatcher* msg) { return (envoy_config_route_v3_QueryParameterMatcher_query_parameter_match_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_config_route_v3_QueryParameterMatcher_query_parameter_match_specifier_oneofcases envoy_config_route_v3_QueryParameterMatcher_query_parameter_match_specifier_case(const envoy_config_route_v3_QueryParameterMatcher* msg) {
+ return (envoy_config_route_v3_QueryParameterMatcher_query_parameter_match_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_route_v3_QueryParameterMatcher_clear_name(const envoy_config_route_v3_QueryParameterMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_route_v3_QueryParameterMatcher_name(const envoy_config_route_v3_QueryParameterMatcher* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_route_v3_QueryParameterMatcher_has_string_match(const envoy_config_route_v3_QueryParameterMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_config_route_v3_QueryParameterMatcher_clear_string_match(const envoy_config_route_v3_QueryParameterMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_route_v3_QueryParameterMatcher_query_parameter_match_specifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_config_route_v3_QueryParameterMatcher_string_match(const envoy_config_route_v3_QueryParameterMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 5, NULL);
+}
+UPB_INLINE bool envoy_config_route_v3_QueryParameterMatcher_has_present_match(const envoy_config_route_v3_QueryParameterMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 6;
+}
+UPB_INLINE void envoy_config_route_v3_QueryParameterMatcher_clear_present_match(const envoy_config_route_v3_QueryParameterMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_route_v3_QueryParameterMatcher_query_parameter_match_specifier_NOT_SET);
+}
+UPB_INLINE bool envoy_config_route_v3_QueryParameterMatcher_present_match(const envoy_config_route_v3_QueryParameterMatcher* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 6, false);
}
-UPB_INLINE bool envoy_config_route_v3_QueryParameterMatcher_has_string_match(const envoy_config_route_v3_QueryParameterMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 5; }
-UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_config_route_v3_QueryParameterMatcher_string_match(const envoy_config_route_v3_QueryParameterMatcher *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 5, NULL); }
-UPB_INLINE bool envoy_config_route_v3_QueryParameterMatcher_has_present_match(const envoy_config_route_v3_QueryParameterMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 6; }
-UPB_INLINE bool envoy_config_route_v3_QueryParameterMatcher_present_match(const envoy_config_route_v3_QueryParameterMatcher *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 6, false); }
UPB_INLINE void envoy_config_route_v3_QueryParameterMatcher_set_name(envoy_config_route_v3_QueryParameterMatcher *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_route_v3_QueryParameterMatcher_set_string_match(envoy_config_route_v3_QueryParameterMatcher *msg, struct envoy_type_matcher_v3_StringMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 5);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_route_v3_QueryParameterMatcher_mutable_string_match(envoy_config_route_v3_QueryParameterMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_route_v3_QueryParameterMatcher_mutable_string_match(envoy_config_route_v3_QueryParameterMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)envoy_config_route_v3_QueryParameterMatcher_string_match(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StringMatcher_msginit, arena);
@@ -4593,7 +6254,7 @@ UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_config_route_v3_Que
return sub;
}
UPB_INLINE void envoy_config_route_v3_QueryParameterMatcher_set_present_match(envoy_config_route_v3_QueryParameterMatcher *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 6);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 6);
}
/* envoy.config.route.v3.InternalRedirectPolicy */
@@ -4621,19 +6282,43 @@ UPB_INLINE envoy_config_route_v3_InternalRedirectPolicy* envoy_config_route_v3_I
return ret;
}
UPB_INLINE char* envoy_config_route_v3_InternalRedirectPolicy_serialize(const envoy_config_route_v3_InternalRedirectPolicy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_InternalRedirectPolicy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_InternalRedirectPolicy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_InternalRedirectPolicy_serialize_ex(const envoy_config_route_v3_InternalRedirectPolicy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_InternalRedirectPolicy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_InternalRedirectPolicy_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_InternalRedirectPolicy_has_max_internal_redirects(const envoy_config_route_v3_InternalRedirectPolicy* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_InternalRedirectPolicy_clear_max_internal_redirects(const envoy_config_route_v3_InternalRedirectPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_InternalRedirectPolicy_has_max_internal_redirects(const envoy_config_route_v3_InternalRedirectPolicy *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_route_v3_InternalRedirectPolicy_max_internal_redirects(const envoy_config_route_v3_InternalRedirectPolicy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE uint32_t const* envoy_config_route_v3_InternalRedirectPolicy_redirect_response_codes(const envoy_config_route_v3_InternalRedirectPolicy *msg, size_t *len) { return (uint32_t const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
-UPB_INLINE bool envoy_config_route_v3_InternalRedirectPolicy_has_predicates(const envoy_config_route_v3_InternalRedirectPolicy *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* const* envoy_config_route_v3_InternalRedirectPolicy_predicates(const envoy_config_route_v3_InternalRedirectPolicy *msg, size_t *len) { return (const struct envoy_config_core_v3_TypedExtensionConfig* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len); }
+UPB_INLINE void envoy_config_route_v3_InternalRedirectPolicy_clear_redirect_response_codes(const envoy_config_route_v3_InternalRedirectPolicy* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE uint32_t const* envoy_config_route_v3_InternalRedirectPolicy_redirect_response_codes(const envoy_config_route_v3_InternalRedirectPolicy* msg, size_t* len) {
+ return (uint32_t const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool envoy_config_route_v3_InternalRedirectPolicy_has_predicates(const envoy_config_route_v3_InternalRedirectPolicy* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_config_route_v3_InternalRedirectPolicy_clear_predicates(const envoy_config_route_v3_InternalRedirectPolicy* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* const* envoy_config_route_v3_InternalRedirectPolicy_predicates(const envoy_config_route_v3_InternalRedirectPolicy* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_TypedExtensionConfig* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE void envoy_config_route_v3_InternalRedirectPolicy_clear_allow_cross_scheme_redirect(const envoy_config_route_v3_InternalRedirectPolicy* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_config_route_v3_InternalRedirectPolicy_allow_cross_scheme_redirect(const envoy_config_route_v3_InternalRedirectPolicy* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
@@ -4642,7 +6327,7 @@ UPB_INLINE void envoy_config_route_v3_InternalRedirectPolicy_set_max_internal_re
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_InternalRedirectPolicy_mutable_max_internal_redirects(envoy_config_route_v3_InternalRedirectPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_InternalRedirectPolicy_mutable_max_internal_redirects(envoy_config_route_v3_InternalRedirectPolicy* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_route_v3_InternalRedirectPolicy_max_internal_redirects(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -4651,26 +6336,24 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_route_v3_InternalRed
}
return sub;
}
-UPB_INLINE uint32_t* envoy_config_route_v3_InternalRedirectPolicy_mutable_redirect_response_codes(envoy_config_route_v3_InternalRedirectPolicy *msg, size_t *len) {
+UPB_INLINE uint32_t* envoy_config_route_v3_InternalRedirectPolicy_mutable_redirect_response_codes(envoy_config_route_v3_InternalRedirectPolicy* msg, size_t* len) {
return (uint32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE uint32_t* envoy_config_route_v3_InternalRedirectPolicy_resize_redirect_response_codes(envoy_config_route_v3_InternalRedirectPolicy *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE uint32_t* envoy_config_route_v3_InternalRedirectPolicy_resize_redirect_response_codes(envoy_config_route_v3_InternalRedirectPolicy* msg, size_t len, upb_Arena* arena) {
return (uint32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, 2, arena);
}
-UPB_INLINE bool envoy_config_route_v3_InternalRedirectPolicy_add_redirect_response_codes(envoy_config_route_v3_InternalRedirectPolicy *msg, uint32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), 2, &val,
- arena);
+UPB_INLINE bool envoy_config_route_v3_InternalRedirectPolicy_add_redirect_response_codes(envoy_config_route_v3_InternalRedirectPolicy* msg, uint32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), 2, &val, arena);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_route_v3_InternalRedirectPolicy_mutable_predicates(envoy_config_route_v3_InternalRedirectPolicy *msg, size_t *len) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_route_v3_InternalRedirectPolicy_mutable_predicates(envoy_config_route_v3_InternalRedirectPolicy* msg, size_t* len) {
return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_route_v3_InternalRedirectPolicy_resize_predicates(envoy_config_route_v3_InternalRedirectPolicy *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_config_route_v3_InternalRedirectPolicy_resize_predicates(envoy_config_route_v3_InternalRedirectPolicy* msg, size_t len, upb_Arena* arena) {
return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_InternalRedirectPolicy_add_predicates(envoy_config_route_v3_InternalRedirectPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_config_route_v3_InternalRedirectPolicy_add_predicates(envoy_config_route_v3_InternalRedirectPolicy* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -4703,16 +6386,28 @@ UPB_INLINE envoy_config_route_v3_FilterConfig* envoy_config_route_v3_FilterConfi
return ret;
}
UPB_INLINE char* envoy_config_route_v3_FilterConfig_serialize(const envoy_config_route_v3_FilterConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_FilterConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_FilterConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_FilterConfig_serialize_ex(const envoy_config_route_v3_FilterConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_FilterConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_FilterConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_FilterConfig_has_config(const envoy_config_route_v3_FilterConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_FilterConfig_clear_config(const envoy_config_route_v3_FilterConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_route_v3_FilterConfig_has_config(const envoy_config_route_v3_FilterConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Any* envoy_config_route_v3_FilterConfig_config(const envoy_config_route_v3_FilterConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Any*);
}
+UPB_INLINE void envoy_config_route_v3_FilterConfig_clear_is_optional(const envoy_config_route_v3_FilterConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_config_route_v3_FilterConfig_is_optional(const envoy_config_route_v3_FilterConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
@@ -4721,7 +6416,7 @@ UPB_INLINE void envoy_config_route_v3_FilterConfig_set_config(envoy_config_route
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_FilterConfig_mutable_config(envoy_config_route_v3_FilterConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_route_v3_FilterConfig_mutable_config(envoy_config_route_v3_FilterConfig* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_route_v3_FilterConfig_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c
index 27c34446d8..0daff66731 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c
@@ -18,22 +18,22 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_config_route_v3_ScopedRouteConfiguration_submsgs[2] = {
- {.submsg = &envoy_config_route_v3_RouteConfiguration_msginit},
{.submsg = &envoy_config_route_v3_ScopedRouteConfiguration_Key_msginit},
+ {.submsg = &envoy_config_route_v3_RouteConfiguration_msginit},
};
static const upb_MiniTable_Field envoy_config_route_v3_ScopedRouteConfiguration__fields[5] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 40), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(24, 48), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 40), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 48), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_ScopedRouteConfiguration_msginit = {
&envoy_config_route_v3_ScopedRouteConfiguration_submsgs[0],
&envoy_config_route_v3_ScopedRouteConfiguration__fields[0],
- UPB_SIZE(32, 64), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(32, 56), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_route_v3_ScopedRouteConfiguration_Key_submsgs[1] = {
@@ -41,23 +41,23 @@ static const upb_MiniTable_Sub envoy_config_route_v3_ScopedRouteConfiguration_Ke
};
static const upb_MiniTable_Field envoy_config_route_v3_ScopedRouteConfiguration_Key__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_ScopedRouteConfiguration_Key_msginit = {
&envoy_config_route_v3_ScopedRouteConfiguration_Key_submsgs[0],
&envoy_config_route_v3_ScopedRouteConfiguration_Key__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment__fields[1] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_msginit = {
NULL,
&envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment__fields[0],
- UPB_SIZE(16, 32), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[3] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h
index 9e96efddf1..a632f1266e 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h
@@ -59,26 +59,49 @@ UPB_INLINE envoy_config_route_v3_ScopedRouteConfiguration* envoy_config_route_v3
return ret;
}
UPB_INLINE char* envoy_config_route_v3_ScopedRouteConfiguration_serialize(const envoy_config_route_v3_ScopedRouteConfiguration* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_ScopedRouteConfiguration_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_ScopedRouteConfiguration_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_ScopedRouteConfiguration_serialize_ex(const envoy_config_route_v3_ScopedRouteConfiguration* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_ScopedRouteConfiguration_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_ScopedRouteConfiguration_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_route_v3_ScopedRouteConfiguration_clear_name(const envoy_config_route_v3_ScopedRouteConfiguration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_route_v3_ScopedRouteConfiguration_name(const envoy_config_route_v3_ScopedRouteConfiguration* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
+UPB_INLINE void envoy_config_route_v3_ScopedRouteConfiguration_clear_route_configuration_name(const envoy_config_route_v3_ScopedRouteConfiguration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_route_v3_ScopedRouteConfiguration_route_configuration_name(const envoy_config_route_v3_ScopedRouteConfiguration* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
-UPB_INLINE bool envoy_config_route_v3_ScopedRouteConfiguration_has_key(const envoy_config_route_v3_ScopedRouteConfiguration *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_route_v3_ScopedRouteConfiguration_has_key(const envoy_config_route_v3_ScopedRouteConfiguration* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_route_v3_ScopedRouteConfiguration_clear_key(const envoy_config_route_v3_ScopedRouteConfiguration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_route_v3_ScopedRouteConfiguration_Key* envoy_config_route_v3_ScopedRouteConfiguration_key(const envoy_config_route_v3_ScopedRouteConfiguration* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const envoy_config_route_v3_ScopedRouteConfiguration_Key*);
}
+UPB_INLINE void envoy_config_route_v3_ScopedRouteConfiguration_clear_on_demand(const envoy_config_route_v3_ScopedRouteConfiguration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_config_route_v3_ScopedRouteConfiguration_on_demand(const envoy_config_route_v3_ScopedRouteConfiguration* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE bool envoy_config_route_v3_ScopedRouteConfiguration_has_route_configuration(const envoy_config_route_v3_ScopedRouteConfiguration *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_route_v3_ScopedRouteConfiguration_has_route_configuration(const envoy_config_route_v3_ScopedRouteConfiguration* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_route_v3_ScopedRouteConfiguration_clear_route_configuration(const envoy_config_route_v3_ScopedRouteConfiguration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_route_v3_RouteConfiguration* envoy_config_route_v3_ScopedRouteConfiguration_route_configuration(const envoy_config_route_v3_ScopedRouteConfiguration* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct envoy_config_route_v3_RouteConfiguration*);
}
@@ -93,7 +116,7 @@ UPB_INLINE void envoy_config_route_v3_ScopedRouteConfiguration_set_key(envoy_con
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(20, 40), envoy_config_route_v3_ScopedRouteConfiguration_Key*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_ScopedRouteConfiguration_Key* envoy_config_route_v3_ScopedRouteConfiguration_mutable_key(envoy_config_route_v3_ScopedRouteConfiguration *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_ScopedRouteConfiguration_Key* envoy_config_route_v3_ScopedRouteConfiguration_mutable_key(envoy_config_route_v3_ScopedRouteConfiguration* msg, upb_Arena* arena) {
struct envoy_config_route_v3_ScopedRouteConfiguration_Key* sub = (struct envoy_config_route_v3_ScopedRouteConfiguration_Key*)envoy_config_route_v3_ScopedRouteConfiguration_key(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_ScopedRouteConfiguration_Key*)_upb_Message_New(&envoy_config_route_v3_ScopedRouteConfiguration_Key_msginit, arena);
@@ -109,7 +132,7 @@ UPB_INLINE void envoy_config_route_v3_ScopedRouteConfiguration_set_route_configu
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct envoy_config_route_v3_RouteConfiguration*) = value;
}
-UPB_INLINE struct envoy_config_route_v3_RouteConfiguration* envoy_config_route_v3_ScopedRouteConfiguration_mutable_route_configuration(envoy_config_route_v3_ScopedRouteConfiguration *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteConfiguration* envoy_config_route_v3_ScopedRouteConfiguration_mutable_route_configuration(envoy_config_route_v3_ScopedRouteConfiguration* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteConfiguration* sub = (struct envoy_config_route_v3_RouteConfiguration*)envoy_config_route_v3_ScopedRouteConfiguration_route_configuration(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RouteConfiguration*)_upb_Message_New(&envoy_config_route_v3_RouteConfiguration_msginit, arena);
@@ -144,25 +167,35 @@ UPB_INLINE envoy_config_route_v3_ScopedRouteConfiguration_Key* envoy_config_rout
return ret;
}
UPB_INLINE char* envoy_config_route_v3_ScopedRouteConfiguration_Key_serialize(const envoy_config_route_v3_ScopedRouteConfiguration_Key* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_ScopedRouteConfiguration_Key_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_ScopedRouteConfiguration_Key_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_ScopedRouteConfiguration_Key_serialize_ex(const envoy_config_route_v3_ScopedRouteConfiguration_Key* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_ScopedRouteConfiguration_Key_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_ScopedRouteConfiguration_Key_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_route_v3_ScopedRouteConfiguration_Key_has_fragments(const envoy_config_route_v3_ScopedRouteConfiguration_Key* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_route_v3_ScopedRouteConfiguration_Key_clear_fragments(const envoy_config_route_v3_ScopedRouteConfiguration_Key* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* const* envoy_config_route_v3_ScopedRouteConfiguration_Key_fragments(const envoy_config_route_v3_ScopedRouteConfiguration_Key* msg, size_t* len) {
+ return (const envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_route_v3_ScopedRouteConfiguration_Key_has_fragments(const envoy_config_route_v3_ScopedRouteConfiguration_Key *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* const* envoy_config_route_v3_ScopedRouteConfiguration_Key_fragments(const envoy_config_route_v3_ScopedRouteConfiguration_Key *msg, size_t *len) { return (const envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment** envoy_config_route_v3_ScopedRouteConfiguration_Key_mutable_fragments(envoy_config_route_v3_ScopedRouteConfiguration_Key *msg, size_t *len) {
+UPB_INLINE envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment** envoy_config_route_v3_ScopedRouteConfiguration_Key_mutable_fragments(envoy_config_route_v3_ScopedRouteConfiguration_Key* msg, size_t* len) {
return (envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment** envoy_config_route_v3_ScopedRouteConfiguration_Key_resize_fragments(envoy_config_route_v3_ScopedRouteConfiguration_Key *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment** envoy_config_route_v3_ScopedRouteConfiguration_Key_resize_fragments(envoy_config_route_v3_ScopedRouteConfiguration_Key* msg, size_t len, upb_Arena* arena) {
return (envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* envoy_config_route_v3_ScopedRouteConfiguration_Key_add_fragments(envoy_config_route_v3_ScopedRouteConfiguration_Key *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* envoy_config_route_v3_ScopedRouteConfiguration_Key_add_fragments(envoy_config_route_v3_ScopedRouteConfiguration_Key* msg, upb_Arena* arena) {
struct envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* sub = (struct envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment*)_upb_Message_New(&envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -192,23 +225,35 @@ UPB_INLINE envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* envoy_co
return ret;
}
UPB_INLINE char* envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_serialize(const envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_serialize_ex(const envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_type_string_key = 1,
envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_type_NOT_SET = 0
} envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_type_oneofcases;
-UPB_INLINE envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_type_oneofcases envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_type_case(const envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* msg) { return (envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_has_string_key(const envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE upb_StringView envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_string_key(const envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, upb_StringView_FromString("")); }
+UPB_INLINE envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_type_oneofcases envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_type_case(const envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* msg) {
+ return (envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_has_string_key(const envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_clear_string_key(const envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_type_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_string_key(const envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, upb_StringView_FromString(""));
+}
UPB_INLINE void envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment_set_string_key(envoy_config_route_v3_ScopedRouteConfiguration_Key_Fragment *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
extern const upb_MiniTable_File envoy_config_route_v3_scoped_route_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c
index 77e1906538..67b0785e38 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c
@@ -13,6 +13,7 @@
#include "envoy/config/core/v3/base.upb.h"
#include "envoy/config/core/v3/grpc_service.upb.h"
#include "envoy/config/route/v3/route_components.upb.h"
+#include "google/protobuf/duration.upb.h"
#include "google/protobuf/wrappers.upb.h"
#include "envoy/annotations/deprecation.upb.h"
#include "udpa/annotations/status.upb.h"
@@ -22,49 +23,54 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_config_tap_v3_TapConfig_submsgs[4] = {
- {.submsg = &envoy_config_common_matcher_v3_MatchPredicate_msginit},
- {.submsg = &envoy_config_core_v3_RuntimeFractionalPercent_msginit},
{.submsg = &envoy_config_tap_v3_MatchPredicate_msginit},
{.submsg = &envoy_config_tap_v3_OutputConfig_msginit},
+ {.submsg = &envoy_config_core_v3_RuntimeFractionalPercent_msginit},
+ {.submsg = &envoy_config_common_matcher_v3_MatchPredicate_msginit},
};
static const upb_MiniTable_Field envoy_config_tap_v3_TapConfig__fields[4] = {
- {1, UPB_SIZE(4, 8), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 3, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 4, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_tap_v3_TapConfig_msginit = {
&envoy_config_tap_v3_TapConfig_submsgs[0],
&envoy_config_tap_v3_TapConfig__fields[0],
- UPB_SIZE(24, 40), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_tap_v3_MatchPredicate_submsgs[4] = {
- {.submsg = &envoy_config_tap_v3_HttpGenericBodyMatch_msginit},
- {.submsg = &envoy_config_tap_v3_HttpHeadersMatch_msginit},
- {.submsg = &envoy_config_tap_v3_MatchPredicate_msginit},
+static const upb_MiniTable_Sub envoy_config_tap_v3_MatchPredicate_submsgs[9] = {
+ {.submsg = &envoy_config_tap_v3_MatchPredicate_MatchSet_msginit},
{.submsg = &envoy_config_tap_v3_MatchPredicate_MatchSet_msginit},
+ {.submsg = &envoy_config_tap_v3_MatchPredicate_msginit},
+ {.submsg = &envoy_config_tap_v3_HttpHeadersMatch_msginit},
+ {.submsg = &envoy_config_tap_v3_HttpHeadersMatch_msginit},
+ {.submsg = &envoy_config_tap_v3_HttpHeadersMatch_msginit},
+ {.submsg = &envoy_config_tap_v3_HttpHeadersMatch_msginit},
+ {.submsg = &envoy_config_tap_v3_HttpGenericBodyMatch_msginit},
+ {.submsg = &envoy_config_tap_v3_HttpGenericBodyMatch_msginit},
};
static const upb_MiniTable_Field envoy_config_tap_v3_MatchPredicate__fields[10] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_tap_v3_MatchPredicate_msginit = {
&envoy_config_tap_v3_MatchPredicate_submsgs[0],
&envoy_config_tap_v3_MatchPredicate__fields[0],
- UPB_SIZE(8, 16), 10, upb_ExtMode_NonExtendable, 10, 255, 0,
+ UPB_SIZE(8, 16), 10, kUpb_ExtMode_NonExtendable, 10, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_tap_v3_MatchPredicate_MatchSet_submsgs[1] = {
@@ -72,13 +78,13 @@ static const upb_MiniTable_Sub envoy_config_tap_v3_MatchPredicate_MatchSet_subms
};
static const upb_MiniTable_Field envoy_config_tap_v3_MatchPredicate_MatchSet__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_tap_v3_MatchPredicate_MatchSet_msginit = {
&envoy_config_tap_v3_MatchPredicate_MatchSet_submsgs[0],
&envoy_config_tap_v3_MatchPredicate_MatchSet__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_tap_v3_HttpHeadersMatch_submsgs[1] = {
@@ -86,13 +92,13 @@ static const upb_MiniTable_Sub envoy_config_tap_v3_HttpHeadersMatch_submsgs[1] =
};
static const upb_MiniTable_Field envoy_config_tap_v3_HttpHeadersMatch__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_tap_v3_HttpHeadersMatch_msginit = {
&envoy_config_tap_v3_HttpHeadersMatch_submsgs[0],
&envoy_config_tap_v3_HttpHeadersMatch__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_tap_v3_HttpGenericBodyMatch_submsgs[1] = {
@@ -100,78 +106,96 @@ static const upb_MiniTable_Sub envoy_config_tap_v3_HttpGenericBodyMatch_submsgs[
};
static const upb_MiniTable_Field envoy_config_tap_v3_HttpGenericBodyMatch__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_tap_v3_HttpGenericBodyMatch_msginit = {
&envoy_config_tap_v3_HttpGenericBodyMatch_submsgs[0],
&envoy_config_tap_v3_HttpGenericBodyMatch__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch__fields[2] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_msginit = {
NULL,
&envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_tap_v3_OutputConfig_submsgs[2] = {
+static const upb_MiniTable_Sub envoy_config_tap_v3_OutputConfig_submsgs[3] = {
{.submsg = &envoy_config_tap_v3_OutputSink_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
};
static const upb_MiniTable_Field envoy_config_tap_v3_OutputConfig__fields[4] = {
- {1, UPB_SIZE(12, 24), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_tap_v3_OutputConfig_msginit = {
&envoy_config_tap_v3_OutputConfig_submsgs[0],
&envoy_config_tap_v3_OutputConfig__fields[0],
- UPB_SIZE(16, 32), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(16, 32), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable_Sub envoy_config_tap_v3_OutputSink_submsgs[3] = {
- {.submsg = &envoy_config_tap_v3_FilePerTapSink_msginit},
+static const upb_MiniTable_Sub envoy_config_tap_v3_OutputSink_submsgs[4] = {
{.submsg = &envoy_config_tap_v3_StreamingAdminSink_msginit},
+ {.submsg = &envoy_config_tap_v3_FilePerTapSink_msginit},
{.submsg = &envoy_config_tap_v3_StreamingGrpcSink_msginit},
+ {.submsg = &envoy_config_tap_v3_BufferedAdminSink_msginit},
};
-static const upb_MiniTable_Field envoy_config_tap_v3_OutputSink__fields[4] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), UPB_SIZE(-9, -17), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), UPB_SIZE(-9, -17), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(4, 8), UPB_SIZE(-9, -17), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_config_tap_v3_OutputSink__fields[5] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_tap_v3_OutputSink_msginit = {
&envoy_config_tap_v3_OutputSink_submsgs[0],
&envoy_config_tap_v3_OutputSink__fields[0],
- UPB_SIZE(16, 24), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(16, 16), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
const upb_MiniTable envoy_config_tap_v3_StreamingAdminSink_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_config_tap_v3_BufferedAdminSink_submsgs[1] = {
+ {.submsg = &google_protobuf_Duration_msginit},
+};
+
+static const upb_MiniTable_Field envoy_config_tap_v3_BufferedAdminSink__fields[2] = {
+ {1, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_config_tap_v3_BufferedAdminSink_msginit = {
+ &envoy_config_tap_v3_BufferedAdminSink_submsgs[0],
+ &envoy_config_tap_v3_BufferedAdminSink__fields[0],
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_config_tap_v3_FilePerTapSink__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_tap_v3_FilePerTapSink_msginit = {
NULL,
&envoy_config_tap_v3_FilePerTapSink__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_tap_v3_StreamingGrpcSink_submsgs[1] = {
@@ -179,17 +203,17 @@ static const upb_MiniTable_Sub envoy_config_tap_v3_StreamingGrpcSink_submsgs[1]
};
static const upb_MiniTable_Field envoy_config_tap_v3_StreamingGrpcSink__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_tap_v3_StreamingGrpcSink_msginit = {
&envoy_config_tap_v3_StreamingGrpcSink_submsgs[0],
&envoy_config_tap_v3_StreamingGrpcSink__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable *messages_layout[11] = {
+static const upb_MiniTable *messages_layout[12] = {
&envoy_config_tap_v3_TapConfig_msginit,
&envoy_config_tap_v3_MatchPredicate_msginit,
&envoy_config_tap_v3_MatchPredicate_MatchSet_msginit,
@@ -199,6 +223,7 @@ static const upb_MiniTable *messages_layout[11] = {
&envoy_config_tap_v3_OutputConfig_msginit,
&envoy_config_tap_v3_OutputSink_msginit,
&envoy_config_tap_v3_StreamingAdminSink_msginit,
+ &envoy_config_tap_v3_BufferedAdminSink_msginit,
&envoy_config_tap_v3_FilePerTapSink_msginit,
&envoy_config_tap_v3_StreamingGrpcSink_msginit,
};
@@ -207,7 +232,7 @@ const upb_MiniTable_File envoy_config_tap_v3_common_proto_upb_file_layout = {
messages_layout,
NULL,
NULL,
- 11,
+ 12,
0,
0,
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h
index 480a1a2be4..ff73825a99 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h
@@ -29,6 +29,7 @@ struct envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch;
struct envoy_config_tap_v3_OutputConfig;
struct envoy_config_tap_v3_OutputSink;
struct envoy_config_tap_v3_StreamingAdminSink;
+struct envoy_config_tap_v3_BufferedAdminSink;
struct envoy_config_tap_v3_FilePerTapSink;
struct envoy_config_tap_v3_StreamingGrpcSink;
typedef struct envoy_config_tap_v3_TapConfig envoy_config_tap_v3_TapConfig;
@@ -40,6 +41,7 @@ typedef struct envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch envoy_c
typedef struct envoy_config_tap_v3_OutputConfig envoy_config_tap_v3_OutputConfig;
typedef struct envoy_config_tap_v3_OutputSink envoy_config_tap_v3_OutputSink;
typedef struct envoy_config_tap_v3_StreamingAdminSink envoy_config_tap_v3_StreamingAdminSink;
+typedef struct envoy_config_tap_v3_BufferedAdminSink envoy_config_tap_v3_BufferedAdminSink;
typedef struct envoy_config_tap_v3_FilePerTapSink envoy_config_tap_v3_FilePerTapSink;
typedef struct envoy_config_tap_v3_StreamingGrpcSink envoy_config_tap_v3_StreamingGrpcSink;
extern const upb_MiniTable envoy_config_tap_v3_TapConfig_msginit;
@@ -51,17 +53,20 @@ extern const upb_MiniTable envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextM
extern const upb_MiniTable envoy_config_tap_v3_OutputConfig_msginit;
extern const upb_MiniTable envoy_config_tap_v3_OutputSink_msginit;
extern const upb_MiniTable envoy_config_tap_v3_StreamingAdminSink_msginit;
+extern const upb_MiniTable envoy_config_tap_v3_BufferedAdminSink_msginit;
extern const upb_MiniTable envoy_config_tap_v3_FilePerTapSink_msginit;
extern const upb_MiniTable envoy_config_tap_v3_StreamingGrpcSink_msginit;
struct envoy_config_common_matcher_v3_MatchPredicate;
struct envoy_config_core_v3_GrpcService;
struct envoy_config_core_v3_RuntimeFractionalPercent;
struct envoy_config_route_v3_HeaderMatcher;
+struct google_protobuf_Duration;
struct google_protobuf_UInt32Value;
extern const upb_MiniTable envoy_config_common_matcher_v3_MatchPredicate_msginit;
extern const upb_MiniTable envoy_config_core_v3_GrpcService_msginit;
extern const upb_MiniTable envoy_config_core_v3_RuntimeFractionalPercent_msginit;
extern const upb_MiniTable envoy_config_route_v3_HeaderMatcher_msginit;
+extern const upb_MiniTable google_protobuf_Duration_msginit;
extern const upb_MiniTable google_protobuf_UInt32Value_msginit;
typedef enum {
@@ -99,25 +104,49 @@ UPB_INLINE envoy_config_tap_v3_TapConfig* envoy_config_tap_v3_TapConfig_parse_ex
return ret;
}
UPB_INLINE char* envoy_config_tap_v3_TapConfig_serialize(const envoy_config_tap_v3_TapConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_TapConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_TapConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_tap_v3_TapConfig_serialize_ex(const envoy_config_tap_v3_TapConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_TapConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_TapConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_tap_v3_TapConfig_has_match_config(const envoy_config_tap_v3_TapConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_tap_v3_TapConfig_clear_match_config(const envoy_config_tap_v3_TapConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_tap_v3_TapConfig_has_match_config(const envoy_config_tap_v3_TapConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_tap_v3_MatchPredicate* envoy_config_tap_v3_TapConfig_match_config(const envoy_config_tap_v3_TapConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_tap_v3_MatchPredicate*);
}
-UPB_INLINE bool envoy_config_tap_v3_TapConfig_has_output_config(const envoy_config_tap_v3_TapConfig *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_tap_v3_TapConfig_has_output_config(const envoy_config_tap_v3_TapConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_tap_v3_TapConfig_clear_output_config(const envoy_config_tap_v3_TapConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_tap_v3_OutputConfig* envoy_config_tap_v3_TapConfig_output_config(const envoy_config_tap_v3_TapConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const envoy_config_tap_v3_OutputConfig*);
}
-UPB_INLINE bool envoy_config_tap_v3_TapConfig_has_tap_enabled(const envoy_config_tap_v3_TapConfig *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_tap_v3_TapConfig_has_tap_enabled(const envoy_config_tap_v3_TapConfig* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_tap_v3_TapConfig_clear_tap_enabled(const envoy_config_tap_v3_TapConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_tap_v3_TapConfig_tap_enabled(const envoy_config_tap_v3_TapConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_RuntimeFractionalPercent*);
}
-UPB_INLINE bool envoy_config_tap_v3_TapConfig_has_match(const envoy_config_tap_v3_TapConfig *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_config_tap_v3_TapConfig_has_match(const envoy_config_tap_v3_TapConfig* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_config_tap_v3_TapConfig_clear_match(const envoy_config_tap_v3_TapConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_common_matcher_v3_MatchPredicate* envoy_config_tap_v3_TapConfig_match(const envoy_config_tap_v3_TapConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_config_common_matcher_v3_MatchPredicate*);
}
@@ -126,7 +155,7 @@ UPB_INLINE void envoy_config_tap_v3_TapConfig_set_match_config(envoy_config_tap_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_tap_v3_MatchPredicate*) = value;
}
-UPB_INLINE struct envoy_config_tap_v3_MatchPredicate* envoy_config_tap_v3_TapConfig_mutable_match_config(envoy_config_tap_v3_TapConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_MatchPredicate* envoy_config_tap_v3_TapConfig_mutable_match_config(envoy_config_tap_v3_TapConfig* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_MatchPredicate* sub = (struct envoy_config_tap_v3_MatchPredicate*)envoy_config_tap_v3_TapConfig_match_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_MatchPredicate*)_upb_Message_New(&envoy_config_tap_v3_MatchPredicate_msginit, arena);
@@ -139,7 +168,7 @@ UPB_INLINE void envoy_config_tap_v3_TapConfig_set_output_config(envoy_config_tap
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), envoy_config_tap_v3_OutputConfig*) = value;
}
-UPB_INLINE struct envoy_config_tap_v3_OutputConfig* envoy_config_tap_v3_TapConfig_mutable_output_config(envoy_config_tap_v3_TapConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_OutputConfig* envoy_config_tap_v3_TapConfig_mutable_output_config(envoy_config_tap_v3_TapConfig* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_OutputConfig* sub = (struct envoy_config_tap_v3_OutputConfig*)envoy_config_tap_v3_TapConfig_output_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_OutputConfig*)_upb_Message_New(&envoy_config_tap_v3_OutputConfig_msginit, arena);
@@ -152,7 +181,7 @@ UPB_INLINE void envoy_config_tap_v3_TapConfig_set_tap_enabled(envoy_config_tap_v
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_RuntimeFractionalPercent*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_tap_v3_TapConfig_mutable_tap_enabled(envoy_config_tap_v3_TapConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_RuntimeFractionalPercent* envoy_config_tap_v3_TapConfig_mutable_tap_enabled(envoy_config_tap_v3_TapConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_RuntimeFractionalPercent* sub = (struct envoy_config_core_v3_RuntimeFractionalPercent*)envoy_config_tap_v3_TapConfig_tap_enabled(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_RuntimeFractionalPercent*)_upb_Message_New(&envoy_config_core_v3_RuntimeFractionalPercent_msginit, arena);
@@ -165,7 +194,7 @@ UPB_INLINE void envoy_config_tap_v3_TapConfig_set_match(envoy_config_tap_v3_TapC
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_config_common_matcher_v3_MatchPredicate*) = value;
}
-UPB_INLINE struct envoy_config_common_matcher_v3_MatchPredicate* envoy_config_tap_v3_TapConfig_mutable_match(envoy_config_tap_v3_TapConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_common_matcher_v3_MatchPredicate* envoy_config_tap_v3_TapConfig_mutable_match(envoy_config_tap_v3_TapConfig* msg, upb_Arena* arena) {
struct envoy_config_common_matcher_v3_MatchPredicate* sub = (struct envoy_config_common_matcher_v3_MatchPredicate*)envoy_config_tap_v3_TapConfig_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_common_matcher_v3_MatchPredicate*)_upb_Message_New(&envoy_config_common_matcher_v3_MatchPredicate_msginit, arena);
@@ -200,11 +229,15 @@ UPB_INLINE envoy_config_tap_v3_MatchPredicate* envoy_config_tap_v3_MatchPredicat
return ret;
}
UPB_INLINE char* envoy_config_tap_v3_MatchPredicate_serialize(const envoy_config_tap_v3_MatchPredicate* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_MatchPredicate_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_MatchPredicate_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_tap_v3_MatchPredicate_serialize_ex(const envoy_config_tap_v3_MatchPredicate* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_MatchPredicate_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_MatchPredicate_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_tap_v3_MatchPredicate_rule_or_match = 1,
@@ -219,33 +252,104 @@ typedef enum {
envoy_config_tap_v3_MatchPredicate_rule_http_response_generic_body_match = 10,
envoy_config_tap_v3_MatchPredicate_rule_NOT_SET = 0
} envoy_config_tap_v3_MatchPredicate_rule_oneofcases;
-UPB_INLINE envoy_config_tap_v3_MatchPredicate_rule_oneofcases envoy_config_tap_v3_MatchPredicate_rule_case(const envoy_config_tap_v3_MatchPredicate* msg) { return (envoy_config_tap_v3_MatchPredicate_rule_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_or_match(const envoy_config_tap_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_config_tap_v3_MatchPredicate_MatchSet* envoy_config_tap_v3_MatchPredicate_or_match(const envoy_config_tap_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_MatchPredicate_MatchSet*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_and_match(const envoy_config_tap_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const envoy_config_tap_v3_MatchPredicate_MatchSet* envoy_config_tap_v3_MatchPredicate_and_match(const envoy_config_tap_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_MatchPredicate_MatchSet*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_not_match(const envoy_config_tap_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const envoy_config_tap_v3_MatchPredicate* envoy_config_tap_v3_MatchPredicate_not_match(const envoy_config_tap_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_MatchPredicate*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
-UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_any_match(const envoy_config_tap_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 4; }
-UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_any_match(const envoy_config_tap_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 4, false); }
-UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_http_request_headers_match(const envoy_config_tap_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 5; }
-UPB_INLINE const envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_http_request_headers_match(const envoy_config_tap_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 5, NULL); }
-UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_http_request_trailers_match(const envoy_config_tap_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 6; }
-UPB_INLINE const envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_http_request_trailers_match(const envoy_config_tap_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 6, NULL); }
-UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_http_response_headers_match(const envoy_config_tap_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 7; }
-UPB_INLINE const envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_http_response_headers_match(const envoy_config_tap_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 7, NULL); }
-UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_http_response_trailers_match(const envoy_config_tap_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 8; }
-UPB_INLINE const envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_http_response_trailers_match(const envoy_config_tap_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 8, NULL); }
-UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_http_request_generic_body_match(const envoy_config_tap_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 9; }
-UPB_INLINE const envoy_config_tap_v3_HttpGenericBodyMatch* envoy_config_tap_v3_MatchPredicate_http_request_generic_body_match(const envoy_config_tap_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_HttpGenericBodyMatch*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 9, NULL); }
-UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_http_response_generic_body_match(const envoy_config_tap_v3_MatchPredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 10; }
-UPB_INLINE const envoy_config_tap_v3_HttpGenericBodyMatch* envoy_config_tap_v3_MatchPredicate_http_response_generic_body_match(const envoy_config_tap_v3_MatchPredicate *msg) { return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_HttpGenericBodyMatch*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 10, NULL); }
+UPB_INLINE envoy_config_tap_v3_MatchPredicate_rule_oneofcases envoy_config_tap_v3_MatchPredicate_rule_case(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return (envoy_config_tap_v3_MatchPredicate_rule_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_or_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_tap_v3_MatchPredicate_clear_or_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_MatchPredicate_MatchSet*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_tap_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_tap_v3_MatchPredicate_MatchSet* envoy_config_tap_v3_MatchPredicate_or_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_MatchPredicate_MatchSet*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_and_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_tap_v3_MatchPredicate_clear_and_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_MatchPredicate_MatchSet*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_tap_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_tap_v3_MatchPredicate_MatchSet* envoy_config_tap_v3_MatchPredicate_and_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_MatchPredicate_MatchSet*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_not_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_tap_v3_MatchPredicate_clear_not_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_MatchPredicate*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_tap_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_tap_v3_MatchPredicate* envoy_config_tap_v3_MatchPredicate_not_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_MatchPredicate*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_any_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_config_tap_v3_MatchPredicate_clear_any_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_tap_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_any_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, false);
+}
+UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_http_request_headers_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_config_tap_v3_MatchPredicate_clear_http_request_headers_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_tap_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_http_request_headers_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 5, NULL);
+}
+UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_http_request_trailers_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 6;
+}
+UPB_INLINE void envoy_config_tap_v3_MatchPredicate_clear_http_request_trailers_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_tap_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_http_request_trailers_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 6, NULL);
+}
+UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_http_response_headers_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 7;
+}
+UPB_INLINE void envoy_config_tap_v3_MatchPredicate_clear_http_response_headers_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_tap_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_http_response_headers_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 7, NULL);
+}
+UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_http_response_trailers_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 8;
+}
+UPB_INLINE void envoy_config_tap_v3_MatchPredicate_clear_http_response_trailers_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_tap_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_http_response_trailers_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 8, NULL);
+}
+UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_http_request_generic_body_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 9;
+}
+UPB_INLINE void envoy_config_tap_v3_MatchPredicate_clear_http_request_generic_body_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpGenericBodyMatch*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_tap_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_tap_v3_HttpGenericBodyMatch* envoy_config_tap_v3_MatchPredicate_http_request_generic_body_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_HttpGenericBodyMatch*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 9, NULL);
+}
+UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_has_http_response_generic_body_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 10;
+}
+UPB_INLINE void envoy_config_tap_v3_MatchPredicate_clear_http_response_generic_body_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpGenericBodyMatch*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_config_tap_v3_MatchPredicate_rule_NOT_SET);
+}
+UPB_INLINE const envoy_config_tap_v3_HttpGenericBodyMatch* envoy_config_tap_v3_MatchPredicate_http_response_generic_body_match(const envoy_config_tap_v3_MatchPredicate* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_HttpGenericBodyMatch*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 10, NULL);
+}
UPB_INLINE void envoy_config_tap_v3_MatchPredicate_set_or_match(envoy_config_tap_v3_MatchPredicate *msg, envoy_config_tap_v3_MatchPredicate_MatchSet* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_MatchPredicate_MatchSet*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_MatchPredicate_MatchSet*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_config_tap_v3_MatchPredicate_MatchSet* envoy_config_tap_v3_MatchPredicate_mutable_or_match(envoy_config_tap_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_MatchPredicate_MatchSet* envoy_config_tap_v3_MatchPredicate_mutable_or_match(envoy_config_tap_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_MatchPredicate_MatchSet* sub = (struct envoy_config_tap_v3_MatchPredicate_MatchSet*)envoy_config_tap_v3_MatchPredicate_or_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_MatchPredicate_MatchSet*)_upb_Message_New(&envoy_config_tap_v3_MatchPredicate_MatchSet_msginit, arena);
@@ -255,9 +359,9 @@ UPB_INLINE struct envoy_config_tap_v3_MatchPredicate_MatchSet* envoy_config_tap_
return sub;
}
UPB_INLINE void envoy_config_tap_v3_MatchPredicate_set_and_match(envoy_config_tap_v3_MatchPredicate *msg, envoy_config_tap_v3_MatchPredicate_MatchSet* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_MatchPredicate_MatchSet*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_MatchPredicate_MatchSet*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_config_tap_v3_MatchPredicate_MatchSet* envoy_config_tap_v3_MatchPredicate_mutable_and_match(envoy_config_tap_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_MatchPredicate_MatchSet* envoy_config_tap_v3_MatchPredicate_mutable_and_match(envoy_config_tap_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_MatchPredicate_MatchSet* sub = (struct envoy_config_tap_v3_MatchPredicate_MatchSet*)envoy_config_tap_v3_MatchPredicate_and_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_MatchPredicate_MatchSet*)_upb_Message_New(&envoy_config_tap_v3_MatchPredicate_MatchSet_msginit, arena);
@@ -267,9 +371,9 @@ UPB_INLINE struct envoy_config_tap_v3_MatchPredicate_MatchSet* envoy_config_tap_
return sub;
}
UPB_INLINE void envoy_config_tap_v3_MatchPredicate_set_not_match(envoy_config_tap_v3_MatchPredicate *msg, envoy_config_tap_v3_MatchPredicate* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_MatchPredicate*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_MatchPredicate*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_config_tap_v3_MatchPredicate* envoy_config_tap_v3_MatchPredicate_mutable_not_match(envoy_config_tap_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_MatchPredicate* envoy_config_tap_v3_MatchPredicate_mutable_not_match(envoy_config_tap_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_MatchPredicate* sub = (struct envoy_config_tap_v3_MatchPredicate*)envoy_config_tap_v3_MatchPredicate_not_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_MatchPredicate*)_upb_Message_New(&envoy_config_tap_v3_MatchPredicate_msginit, arena);
@@ -279,12 +383,12 @@ UPB_INLINE struct envoy_config_tap_v3_MatchPredicate* envoy_config_tap_v3_MatchP
return sub;
}
UPB_INLINE void envoy_config_tap_v3_MatchPredicate_set_any_match(envoy_config_tap_v3_MatchPredicate *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 4);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
UPB_INLINE void envoy_config_tap_v3_MatchPredicate_set_http_request_headers_match(envoy_config_tap_v3_MatchPredicate *msg, envoy_config_tap_v3_HttpHeadersMatch* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 5);
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_mutable_http_request_headers_match(envoy_config_tap_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_mutable_http_request_headers_match(envoy_config_tap_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_HttpHeadersMatch* sub = (struct envoy_config_tap_v3_HttpHeadersMatch*)envoy_config_tap_v3_MatchPredicate_http_request_headers_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_HttpHeadersMatch*)_upb_Message_New(&envoy_config_tap_v3_HttpHeadersMatch_msginit, arena);
@@ -294,9 +398,9 @@ UPB_INLINE struct envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_Matc
return sub;
}
UPB_INLINE void envoy_config_tap_v3_MatchPredicate_set_http_request_trailers_match(envoy_config_tap_v3_MatchPredicate *msg, envoy_config_tap_v3_HttpHeadersMatch* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 6);
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 6);
}
-UPB_INLINE struct envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_mutable_http_request_trailers_match(envoy_config_tap_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_mutable_http_request_trailers_match(envoy_config_tap_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_HttpHeadersMatch* sub = (struct envoy_config_tap_v3_HttpHeadersMatch*)envoy_config_tap_v3_MatchPredicate_http_request_trailers_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_HttpHeadersMatch*)_upb_Message_New(&envoy_config_tap_v3_HttpHeadersMatch_msginit, arena);
@@ -306,9 +410,9 @@ UPB_INLINE struct envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_Matc
return sub;
}
UPB_INLINE void envoy_config_tap_v3_MatchPredicate_set_http_response_headers_match(envoy_config_tap_v3_MatchPredicate *msg, envoy_config_tap_v3_HttpHeadersMatch* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 7);
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 7);
}
-UPB_INLINE struct envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_mutable_http_response_headers_match(envoy_config_tap_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_mutable_http_response_headers_match(envoy_config_tap_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_HttpHeadersMatch* sub = (struct envoy_config_tap_v3_HttpHeadersMatch*)envoy_config_tap_v3_MatchPredicate_http_response_headers_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_HttpHeadersMatch*)_upb_Message_New(&envoy_config_tap_v3_HttpHeadersMatch_msginit, arena);
@@ -318,9 +422,9 @@ UPB_INLINE struct envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_Matc
return sub;
}
UPB_INLINE void envoy_config_tap_v3_MatchPredicate_set_http_response_trailers_match(envoy_config_tap_v3_MatchPredicate *msg, envoy_config_tap_v3_HttpHeadersMatch* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 8);
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpHeadersMatch*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 8);
}
-UPB_INLINE struct envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_mutable_http_response_trailers_match(envoy_config_tap_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_MatchPredicate_mutable_http_response_trailers_match(envoy_config_tap_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_HttpHeadersMatch* sub = (struct envoy_config_tap_v3_HttpHeadersMatch*)envoy_config_tap_v3_MatchPredicate_http_response_trailers_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_HttpHeadersMatch*)_upb_Message_New(&envoy_config_tap_v3_HttpHeadersMatch_msginit, arena);
@@ -330,9 +434,9 @@ UPB_INLINE struct envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_Matc
return sub;
}
UPB_INLINE void envoy_config_tap_v3_MatchPredicate_set_http_request_generic_body_match(envoy_config_tap_v3_MatchPredicate *msg, envoy_config_tap_v3_HttpGenericBodyMatch* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpGenericBodyMatch*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 9);
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpGenericBodyMatch*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 9);
}
-UPB_INLINE struct envoy_config_tap_v3_HttpGenericBodyMatch* envoy_config_tap_v3_MatchPredicate_mutable_http_request_generic_body_match(envoy_config_tap_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_HttpGenericBodyMatch* envoy_config_tap_v3_MatchPredicate_mutable_http_request_generic_body_match(envoy_config_tap_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_HttpGenericBodyMatch* sub = (struct envoy_config_tap_v3_HttpGenericBodyMatch*)envoy_config_tap_v3_MatchPredicate_http_request_generic_body_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_HttpGenericBodyMatch*)_upb_Message_New(&envoy_config_tap_v3_HttpGenericBodyMatch_msginit, arena);
@@ -342,9 +446,9 @@ UPB_INLINE struct envoy_config_tap_v3_HttpGenericBodyMatch* envoy_config_tap_v3_
return sub;
}
UPB_INLINE void envoy_config_tap_v3_MatchPredicate_set_http_response_generic_body_match(envoy_config_tap_v3_MatchPredicate *msg, envoy_config_tap_v3_HttpGenericBodyMatch* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpGenericBodyMatch*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 10);
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_HttpGenericBodyMatch*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 10);
}
-UPB_INLINE struct envoy_config_tap_v3_HttpGenericBodyMatch* envoy_config_tap_v3_MatchPredicate_mutable_http_response_generic_body_match(envoy_config_tap_v3_MatchPredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_HttpGenericBodyMatch* envoy_config_tap_v3_MatchPredicate_mutable_http_response_generic_body_match(envoy_config_tap_v3_MatchPredicate* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_HttpGenericBodyMatch* sub = (struct envoy_config_tap_v3_HttpGenericBodyMatch*)envoy_config_tap_v3_MatchPredicate_http_response_generic_body_match(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_HttpGenericBodyMatch*)_upb_Message_New(&envoy_config_tap_v3_HttpGenericBodyMatch_msginit, arena);
@@ -379,25 +483,35 @@ UPB_INLINE envoy_config_tap_v3_MatchPredicate_MatchSet* envoy_config_tap_v3_Matc
return ret;
}
UPB_INLINE char* envoy_config_tap_v3_MatchPredicate_MatchSet_serialize(const envoy_config_tap_v3_MatchPredicate_MatchSet* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_MatchPredicate_MatchSet_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_MatchPredicate_MatchSet_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_tap_v3_MatchPredicate_MatchSet_serialize_ex(const envoy_config_tap_v3_MatchPredicate_MatchSet* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_MatchPredicate_MatchSet_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_MatchPredicate_MatchSet_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_MatchSet_has_rules(const envoy_config_tap_v3_MatchPredicate_MatchSet* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_tap_v3_MatchPredicate_MatchSet_clear_rules(const envoy_config_tap_v3_MatchPredicate_MatchSet* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_config_tap_v3_MatchPredicate* const* envoy_config_tap_v3_MatchPredicate_MatchSet_rules(const envoy_config_tap_v3_MatchPredicate_MatchSet* msg, size_t* len) {
+ return (const envoy_config_tap_v3_MatchPredicate* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_tap_v3_MatchPredicate_MatchSet_has_rules(const envoy_config_tap_v3_MatchPredicate_MatchSet *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_config_tap_v3_MatchPredicate* const* envoy_config_tap_v3_MatchPredicate_MatchSet_rules(const envoy_config_tap_v3_MatchPredicate_MatchSet *msg, size_t *len) { return (const envoy_config_tap_v3_MatchPredicate* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_config_tap_v3_MatchPredicate** envoy_config_tap_v3_MatchPredicate_MatchSet_mutable_rules(envoy_config_tap_v3_MatchPredicate_MatchSet *msg, size_t *len) {
+UPB_INLINE envoy_config_tap_v3_MatchPredicate** envoy_config_tap_v3_MatchPredicate_MatchSet_mutable_rules(envoy_config_tap_v3_MatchPredicate_MatchSet* msg, size_t* len) {
return (envoy_config_tap_v3_MatchPredicate**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_config_tap_v3_MatchPredicate** envoy_config_tap_v3_MatchPredicate_MatchSet_resize_rules(envoy_config_tap_v3_MatchPredicate_MatchSet *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_tap_v3_MatchPredicate** envoy_config_tap_v3_MatchPredicate_MatchSet_resize_rules(envoy_config_tap_v3_MatchPredicate_MatchSet* msg, size_t len, upb_Arena* arena) {
return (envoy_config_tap_v3_MatchPredicate**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_tap_v3_MatchPredicate* envoy_config_tap_v3_MatchPredicate_MatchSet_add_rules(envoy_config_tap_v3_MatchPredicate_MatchSet *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_MatchPredicate* envoy_config_tap_v3_MatchPredicate_MatchSet_add_rules(envoy_config_tap_v3_MatchPredicate_MatchSet* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_MatchPredicate* sub = (struct envoy_config_tap_v3_MatchPredicate*)_upb_Message_New(&envoy_config_tap_v3_MatchPredicate_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -427,25 +541,35 @@ UPB_INLINE envoy_config_tap_v3_HttpHeadersMatch* envoy_config_tap_v3_HttpHeaders
return ret;
}
UPB_INLINE char* envoy_config_tap_v3_HttpHeadersMatch_serialize(const envoy_config_tap_v3_HttpHeadersMatch* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_HttpHeadersMatch_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_HttpHeadersMatch_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_tap_v3_HttpHeadersMatch_serialize_ex(const envoy_config_tap_v3_HttpHeadersMatch* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_HttpHeadersMatch_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_HttpHeadersMatch_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_tap_v3_HttpHeadersMatch_has_headers(const envoy_config_tap_v3_HttpHeadersMatch* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_config_tap_v3_HttpHeadersMatch_clear_headers(const envoy_config_tap_v3_HttpHeadersMatch* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const struct envoy_config_route_v3_HeaderMatcher* const* envoy_config_tap_v3_HttpHeadersMatch_headers(const envoy_config_tap_v3_HttpHeadersMatch* msg, size_t* len) {
+ return (const struct envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_config_tap_v3_HttpHeadersMatch_has_headers(const envoy_config_tap_v3_HttpHeadersMatch *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const struct envoy_config_route_v3_HeaderMatcher* const* envoy_config_tap_v3_HttpHeadersMatch_headers(const envoy_config_tap_v3_HttpHeadersMatch *msg, size_t *len) { return (const struct envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher** envoy_config_tap_v3_HttpHeadersMatch_mutable_headers(envoy_config_tap_v3_HttpHeadersMatch *msg, size_t *len) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher** envoy_config_tap_v3_HttpHeadersMatch_mutable_headers(envoy_config_tap_v3_HttpHeadersMatch* msg, size_t* len) {
return (struct envoy_config_route_v3_HeaderMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher** envoy_config_tap_v3_HttpHeadersMatch_resize_headers(envoy_config_tap_v3_HttpHeadersMatch *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher** envoy_config_tap_v3_HttpHeadersMatch_resize_headers(envoy_config_tap_v3_HttpHeadersMatch* msg, size_t len, upb_Arena* arena) {
return (struct envoy_config_route_v3_HeaderMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_tap_v3_HttpHeadersMatch_add_headers(envoy_config_tap_v3_HttpHeadersMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_config_tap_v3_HttpHeadersMatch_add_headers(envoy_config_tap_v3_HttpHeadersMatch* msg, upb_Arena* arena) {
struct envoy_config_route_v3_HeaderMatcher* sub = (struct envoy_config_route_v3_HeaderMatcher*)_upb_Message_New(&envoy_config_route_v3_HeaderMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -475,31 +599,44 @@ UPB_INLINE envoy_config_tap_v3_HttpGenericBodyMatch* envoy_config_tap_v3_HttpGen
return ret;
}
UPB_INLINE char* envoy_config_tap_v3_HttpGenericBodyMatch_serialize(const envoy_config_tap_v3_HttpGenericBodyMatch* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_HttpGenericBodyMatch_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_HttpGenericBodyMatch_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_tap_v3_HttpGenericBodyMatch_serialize_ex(const envoy_config_tap_v3_HttpGenericBodyMatch* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_HttpGenericBodyMatch_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_HttpGenericBodyMatch_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_tap_v3_HttpGenericBodyMatch_clear_bytes_limit(const envoy_config_tap_v3_HttpGenericBodyMatch* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_config_tap_v3_HttpGenericBodyMatch_bytes_limit(const envoy_config_tap_v3_HttpGenericBodyMatch* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t);
}
-UPB_INLINE bool envoy_config_tap_v3_HttpGenericBodyMatch_has_patterns(const envoy_config_tap_v3_HttpGenericBodyMatch *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* const* envoy_config_tap_v3_HttpGenericBodyMatch_patterns(const envoy_config_tap_v3_HttpGenericBodyMatch *msg, size_t *len) { return (const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
+UPB_INLINE bool envoy_config_tap_v3_HttpGenericBodyMatch_has_patterns(const envoy_config_tap_v3_HttpGenericBodyMatch* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_config_tap_v3_HttpGenericBodyMatch_clear_patterns(const envoy_config_tap_v3_HttpGenericBodyMatch* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* const* envoy_config_tap_v3_HttpGenericBodyMatch_patterns(const envoy_config_tap_v3_HttpGenericBodyMatch* msg, size_t* len) {
+ return (const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
UPB_INLINE void envoy_config_tap_v3_HttpGenericBodyMatch_set_bytes_limit(envoy_config_tap_v3_HttpGenericBodyMatch *msg, uint32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = value;
}
-UPB_INLINE envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch** envoy_config_tap_v3_HttpGenericBodyMatch_mutable_patterns(envoy_config_tap_v3_HttpGenericBodyMatch *msg, size_t *len) {
+UPB_INLINE envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch** envoy_config_tap_v3_HttpGenericBodyMatch_mutable_patterns(envoy_config_tap_v3_HttpGenericBodyMatch* msg, size_t* len) {
return (envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch** envoy_config_tap_v3_HttpGenericBodyMatch_resize_patterns(envoy_config_tap_v3_HttpGenericBodyMatch *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch** envoy_config_tap_v3_HttpGenericBodyMatch_resize_patterns(envoy_config_tap_v3_HttpGenericBodyMatch* msg, size_t len, upb_Arena* arena) {
return (envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* envoy_config_tap_v3_HttpGenericBodyMatch_add_patterns(envoy_config_tap_v3_HttpGenericBodyMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* envoy_config_tap_v3_HttpGenericBodyMatch_add_patterns(envoy_config_tap_v3_HttpGenericBodyMatch* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* sub = (struct envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch*)_upb_Message_New(&envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -529,29 +666,48 @@ UPB_INLINE envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* envoy_conf
return ret;
}
UPB_INLINE char* envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_serialize(const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_serialize_ex(const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_rule_string_match = 1,
envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_rule_binary_match = 2,
envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_rule_NOT_SET = 0
} envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_rule_oneofcases;
-UPB_INLINE envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_rule_oneofcases envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_rule_case(const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* msg) { return (envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_rule_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_has_string_match(const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE upb_StringView envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_string_match(const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_has_binary_match(const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 2; }
-UPB_INLINE upb_StringView envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_binary_match(const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 2, upb_StringView_FromString("")); }
+UPB_INLINE envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_rule_oneofcases envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_rule_case(const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* msg) {
+ return (envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_rule_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_has_string_match(const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_clear_string_match(const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_rule_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_string_match(const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_has_binary_match(const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_clear_binary_match(const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_rule_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_binary_match(const envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, upb_StringView_FromString(""));
+}
UPB_INLINE void envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_set_string_match(envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
UPB_INLINE void envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch_set_binary_match(envoy_config_tap_v3_HttpGenericBodyMatch_GenericTextMatch *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
/* envoy.config.tap.v3.OutputConfig */
@@ -579,44 +735,67 @@ UPB_INLINE envoy_config_tap_v3_OutputConfig* envoy_config_tap_v3_OutputConfig_pa
return ret;
}
UPB_INLINE char* envoy_config_tap_v3_OutputConfig_serialize(const envoy_config_tap_v3_OutputConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_OutputConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_OutputConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_tap_v3_OutputConfig_serialize_ex(const envoy_config_tap_v3_OutputConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_OutputConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_OutputConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_tap_v3_OutputConfig_has_sinks(const envoy_config_tap_v3_OutputConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_config_tap_v3_OutputConfig_clear_sinks(const envoy_config_tap_v3_OutputConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_config_tap_v3_OutputSink* const* envoy_config_tap_v3_OutputConfig_sinks(const envoy_config_tap_v3_OutputConfig* msg, size_t* len) {
+ return (const envoy_config_tap_v3_OutputSink* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool envoy_config_tap_v3_OutputConfig_has_max_buffered_rx_bytes(const envoy_config_tap_v3_OutputConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_tap_v3_OutputConfig_clear_max_buffered_rx_bytes(const envoy_config_tap_v3_OutputConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_tap_v3_OutputConfig_has_sinks(const envoy_config_tap_v3_OutputConfig *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE const envoy_config_tap_v3_OutputSink* const* envoy_config_tap_v3_OutputConfig_sinks(const envoy_config_tap_v3_OutputConfig *msg, size_t *len) { return (const envoy_config_tap_v3_OutputSink* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len); }
-UPB_INLINE bool envoy_config_tap_v3_OutputConfig_has_max_buffered_rx_bytes(const envoy_config_tap_v3_OutputConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_tap_v3_OutputConfig_max_buffered_rx_bytes(const envoy_config_tap_v3_OutputConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_config_tap_v3_OutputConfig_has_max_buffered_tx_bytes(const envoy_config_tap_v3_OutputConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_tap_v3_OutputConfig_clear_max_buffered_tx_bytes(const envoy_config_tap_v3_OutputConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_tap_v3_OutputConfig_has_max_buffered_tx_bytes(const envoy_config_tap_v3_OutputConfig *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_tap_v3_OutputConfig_max_buffered_tx_bytes(const envoy_config_tap_v3_OutputConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE void envoy_config_tap_v3_OutputConfig_clear_streaming(const envoy_config_tap_v3_OutputConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
}
UPB_INLINE bool envoy_config_tap_v3_OutputConfig_streaming(const envoy_config_tap_v3_OutputConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE envoy_config_tap_v3_OutputSink** envoy_config_tap_v3_OutputConfig_mutable_sinks(envoy_config_tap_v3_OutputConfig *msg, size_t *len) {
- return (envoy_config_tap_v3_OutputSink**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
+UPB_INLINE envoy_config_tap_v3_OutputSink** envoy_config_tap_v3_OutputConfig_mutable_sinks(envoy_config_tap_v3_OutputConfig* msg, size_t* len) {
+ return (envoy_config_tap_v3_OutputSink**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE envoy_config_tap_v3_OutputSink** envoy_config_tap_v3_OutputConfig_resize_sinks(envoy_config_tap_v3_OutputConfig *msg, size_t len, upb_Arena *arena) {
- return (envoy_config_tap_v3_OutputSink**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_config_tap_v3_OutputSink** envoy_config_tap_v3_OutputConfig_resize_sinks(envoy_config_tap_v3_OutputConfig* msg, size_t len, upb_Arena* arena) {
+ return (envoy_config_tap_v3_OutputSink**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_tap_v3_OutputSink* envoy_config_tap_v3_OutputConfig_add_sinks(envoy_config_tap_v3_OutputConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_OutputSink* envoy_config_tap_v3_OutputConfig_add_sinks(envoy_config_tap_v3_OutputConfig* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_OutputSink* sub = (struct envoy_config_tap_v3_OutputSink*)_upb_Message_New(&envoy_config_tap_v3_OutputSink_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_config_tap_v3_OutputConfig_set_max_buffered_rx_bytes(envoy_config_tap_v3_OutputConfig *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_tap_v3_OutputConfig_mutable_max_buffered_rx_bytes(envoy_config_tap_v3_OutputConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_tap_v3_OutputConfig_mutable_max_buffered_rx_bytes(envoy_config_tap_v3_OutputConfig* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_tap_v3_OutputConfig_max_buffered_rx_bytes(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -627,9 +806,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_tap_v3_OutputConfig_
}
UPB_INLINE void envoy_config_tap_v3_OutputConfig_set_max_buffered_tx_bytes(envoy_config_tap_v3_OutputConfig *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_tap_v3_OutputConfig_mutable_max_buffered_tx_bytes(envoy_config_tap_v3_OutputConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_tap_v3_OutputConfig_mutable_max_buffered_tx_bytes(envoy_config_tap_v3_OutputConfig* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_tap_v3_OutputConfig_max_buffered_tx_bytes(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -667,37 +846,76 @@ UPB_INLINE envoy_config_tap_v3_OutputSink* envoy_config_tap_v3_OutputSink_parse_
return ret;
}
UPB_INLINE char* envoy_config_tap_v3_OutputSink_serialize(const envoy_config_tap_v3_OutputSink* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_OutputSink_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_OutputSink_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_tap_v3_OutputSink_serialize_ex(const envoy_config_tap_v3_OutputSink* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_OutputSink_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_OutputSink_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_tap_v3_OutputSink_output_sink_type_streaming_admin = 2,
envoy_config_tap_v3_OutputSink_output_sink_type_file_per_tap = 3,
envoy_config_tap_v3_OutputSink_output_sink_type_streaming_grpc = 4,
+ envoy_config_tap_v3_OutputSink_output_sink_type_buffered_admin = 5,
envoy_config_tap_v3_OutputSink_output_sink_type_NOT_SET = 0
} envoy_config_tap_v3_OutputSink_output_sink_type_oneofcases;
-UPB_INLINE envoy_config_tap_v3_OutputSink_output_sink_type_oneofcases envoy_config_tap_v3_OutputSink_output_sink_type_case(const envoy_config_tap_v3_OutputSink* msg) { return (envoy_config_tap_v3_OutputSink_output_sink_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
+UPB_INLINE envoy_config_tap_v3_OutputSink_output_sink_type_oneofcases envoy_config_tap_v3_OutputSink_output_sink_type_case(const envoy_config_tap_v3_OutputSink* msg) {
+ return (envoy_config_tap_v3_OutputSink_output_sink_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_config_tap_v3_OutputSink_clear_format(const envoy_config_tap_v3_OutputSink* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_config_tap_v3_OutputSink_format(const envoy_config_tap_v3_OutputSink* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
-UPB_INLINE bool envoy_config_tap_v3_OutputSink_has_streaming_admin(const envoy_config_tap_v3_OutputSink *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 2; }
-UPB_INLINE const envoy_config_tap_v3_StreamingAdminSink* envoy_config_tap_v3_OutputSink_streaming_admin(const envoy_config_tap_v3_OutputSink *msg) { return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_StreamingAdminSink*, UPB_SIZE(4, 8), UPB_SIZE(8, 16), 2, NULL); }
-UPB_INLINE bool envoy_config_tap_v3_OutputSink_has_file_per_tap(const envoy_config_tap_v3_OutputSink *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 3; }
-UPB_INLINE const envoy_config_tap_v3_FilePerTapSink* envoy_config_tap_v3_OutputSink_file_per_tap(const envoy_config_tap_v3_OutputSink *msg) { return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_FilePerTapSink*, UPB_SIZE(4, 8), UPB_SIZE(8, 16), 3, NULL); }
-UPB_INLINE bool envoy_config_tap_v3_OutputSink_has_streaming_grpc(const envoy_config_tap_v3_OutputSink *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 4; }
-UPB_INLINE const envoy_config_tap_v3_StreamingGrpcSink* envoy_config_tap_v3_OutputSink_streaming_grpc(const envoy_config_tap_v3_OutputSink *msg) { return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_StreamingGrpcSink*, UPB_SIZE(4, 8), UPB_SIZE(8, 16), 4, NULL); }
+UPB_INLINE bool envoy_config_tap_v3_OutputSink_has_streaming_admin(const envoy_config_tap_v3_OutputSink* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_config_tap_v3_OutputSink_clear_streaming_admin(const envoy_config_tap_v3_OutputSink* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_StreamingAdminSink*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_tap_v3_OutputSink_output_sink_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_tap_v3_StreamingAdminSink* envoy_config_tap_v3_OutputSink_streaming_admin(const envoy_config_tap_v3_OutputSink* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_StreamingAdminSink*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool envoy_config_tap_v3_OutputSink_has_file_per_tap(const envoy_config_tap_v3_OutputSink* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_config_tap_v3_OutputSink_clear_file_per_tap(const envoy_config_tap_v3_OutputSink* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_FilePerTapSink*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_tap_v3_OutputSink_output_sink_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_tap_v3_FilePerTapSink* envoy_config_tap_v3_OutputSink_file_per_tap(const envoy_config_tap_v3_OutputSink* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_FilePerTapSink*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 3, NULL);
+}
+UPB_INLINE bool envoy_config_tap_v3_OutputSink_has_streaming_grpc(const envoy_config_tap_v3_OutputSink* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 4;
+}
+UPB_INLINE void envoy_config_tap_v3_OutputSink_clear_streaming_grpc(const envoy_config_tap_v3_OutputSink* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_StreamingGrpcSink*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_tap_v3_OutputSink_output_sink_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_tap_v3_StreamingGrpcSink* envoy_config_tap_v3_OutputSink_streaming_grpc(const envoy_config_tap_v3_OutputSink* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_StreamingGrpcSink*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 4, NULL);
+}
+UPB_INLINE bool envoy_config_tap_v3_OutputSink_has_buffered_admin(const envoy_config_tap_v3_OutputSink* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void envoy_config_tap_v3_OutputSink_clear_buffered_admin(const envoy_config_tap_v3_OutputSink* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_BufferedAdminSink*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_config_tap_v3_OutputSink_output_sink_type_NOT_SET);
+}
+UPB_INLINE const envoy_config_tap_v3_BufferedAdminSink* envoy_config_tap_v3_OutputSink_buffered_admin(const envoy_config_tap_v3_OutputSink* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_config_tap_v3_BufferedAdminSink*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 5, NULL);
+}
UPB_INLINE void envoy_config_tap_v3_OutputSink_set_format(envoy_config_tap_v3_OutputSink *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
}
UPB_INLINE void envoy_config_tap_v3_OutputSink_set_streaming_admin(envoy_config_tap_v3_OutputSink *msg, envoy_config_tap_v3_StreamingAdminSink* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_StreamingAdminSink*, UPB_SIZE(4, 8), value, UPB_SIZE(8, 16), 2);
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_StreamingAdminSink*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct envoy_config_tap_v3_StreamingAdminSink* envoy_config_tap_v3_OutputSink_mutable_streaming_admin(envoy_config_tap_v3_OutputSink *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_StreamingAdminSink* envoy_config_tap_v3_OutputSink_mutable_streaming_admin(envoy_config_tap_v3_OutputSink* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_StreamingAdminSink* sub = (struct envoy_config_tap_v3_StreamingAdminSink*)envoy_config_tap_v3_OutputSink_streaming_admin(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_StreamingAdminSink*)_upb_Message_New(&envoy_config_tap_v3_StreamingAdminSink_msginit, arena);
@@ -707,9 +925,9 @@ UPB_INLINE struct envoy_config_tap_v3_StreamingAdminSink* envoy_config_tap_v3_Ou
return sub;
}
UPB_INLINE void envoy_config_tap_v3_OutputSink_set_file_per_tap(envoy_config_tap_v3_OutputSink *msg, envoy_config_tap_v3_FilePerTapSink* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_FilePerTapSink*, UPB_SIZE(4, 8), value, UPB_SIZE(8, 16), 3);
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_FilePerTapSink*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct envoy_config_tap_v3_FilePerTapSink* envoy_config_tap_v3_OutputSink_mutable_file_per_tap(envoy_config_tap_v3_OutputSink *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_FilePerTapSink* envoy_config_tap_v3_OutputSink_mutable_file_per_tap(envoy_config_tap_v3_OutputSink* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_FilePerTapSink* sub = (struct envoy_config_tap_v3_FilePerTapSink*)envoy_config_tap_v3_OutputSink_file_per_tap(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_FilePerTapSink*)_upb_Message_New(&envoy_config_tap_v3_FilePerTapSink_msginit, arena);
@@ -719,9 +937,9 @@ UPB_INLINE struct envoy_config_tap_v3_FilePerTapSink* envoy_config_tap_v3_Output
return sub;
}
UPB_INLINE void envoy_config_tap_v3_OutputSink_set_streaming_grpc(envoy_config_tap_v3_OutputSink *msg, envoy_config_tap_v3_StreamingGrpcSink* value) {
- UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_StreamingGrpcSink*, UPB_SIZE(4, 8), value, UPB_SIZE(8, 16), 4);
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_StreamingGrpcSink*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 4);
}
-UPB_INLINE struct envoy_config_tap_v3_StreamingGrpcSink* envoy_config_tap_v3_OutputSink_mutable_streaming_grpc(envoy_config_tap_v3_OutputSink *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_tap_v3_StreamingGrpcSink* envoy_config_tap_v3_OutputSink_mutable_streaming_grpc(envoy_config_tap_v3_OutputSink* msg, upb_Arena* arena) {
struct envoy_config_tap_v3_StreamingGrpcSink* sub = (struct envoy_config_tap_v3_StreamingGrpcSink*)envoy_config_tap_v3_OutputSink_streaming_grpc(msg);
if (sub == NULL) {
sub = (struct envoy_config_tap_v3_StreamingGrpcSink*)_upb_Message_New(&envoy_config_tap_v3_StreamingGrpcSink_msginit, arena);
@@ -730,6 +948,18 @@ UPB_INLINE struct envoy_config_tap_v3_StreamingGrpcSink* envoy_config_tap_v3_Out
}
return sub;
}
+UPB_INLINE void envoy_config_tap_v3_OutputSink_set_buffered_admin(envoy_config_tap_v3_OutputSink *msg, envoy_config_tap_v3_BufferedAdminSink* value) {
+ UPB_WRITE_ONEOF(msg, envoy_config_tap_v3_BufferedAdminSink*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 5);
+}
+UPB_INLINE struct envoy_config_tap_v3_BufferedAdminSink* envoy_config_tap_v3_OutputSink_mutable_buffered_admin(envoy_config_tap_v3_OutputSink* msg, upb_Arena* arena) {
+ struct envoy_config_tap_v3_BufferedAdminSink* sub = (struct envoy_config_tap_v3_BufferedAdminSink*)envoy_config_tap_v3_OutputSink_buffered_admin(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_tap_v3_BufferedAdminSink*)_upb_Message_New(&envoy_config_tap_v3_BufferedAdminSink_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_tap_v3_OutputSink_set_buffered_admin(msg, sub);
+ }
+ return sub;
+}
/* envoy.config.tap.v3.StreamingAdminSink */
@@ -756,14 +986,86 @@ UPB_INLINE envoy_config_tap_v3_StreamingAdminSink* envoy_config_tap_v3_Streaming
return ret;
}
UPB_INLINE char* envoy_config_tap_v3_StreamingAdminSink_serialize(const envoy_config_tap_v3_StreamingAdminSink* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_StreamingAdminSink_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_StreamingAdminSink_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_tap_v3_StreamingAdminSink_serialize_ex(const envoy_config_tap_v3_StreamingAdminSink* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_StreamingAdminSink_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_StreamingAdminSink_msginit, options, arena, &ptr, len);
+ return ptr;
}
+/* envoy.config.tap.v3.BufferedAdminSink */
+
+UPB_INLINE envoy_config_tap_v3_BufferedAdminSink* envoy_config_tap_v3_BufferedAdminSink_new(upb_Arena* arena) {
+ return (envoy_config_tap_v3_BufferedAdminSink*)_upb_Message_New(&envoy_config_tap_v3_BufferedAdminSink_msginit, arena);
+}
+UPB_INLINE envoy_config_tap_v3_BufferedAdminSink* envoy_config_tap_v3_BufferedAdminSink_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_config_tap_v3_BufferedAdminSink* ret = envoy_config_tap_v3_BufferedAdminSink_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_tap_v3_BufferedAdminSink_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_config_tap_v3_BufferedAdminSink* envoy_config_tap_v3_BufferedAdminSink_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_config_tap_v3_BufferedAdminSink* ret = envoy_config_tap_v3_BufferedAdminSink_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_tap_v3_BufferedAdminSink_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_config_tap_v3_BufferedAdminSink_serialize(const envoy_config_tap_v3_BufferedAdminSink* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_BufferedAdminSink_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_config_tap_v3_BufferedAdminSink_serialize_ex(const envoy_config_tap_v3_BufferedAdminSink* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_BufferedAdminSink_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_tap_v3_BufferedAdminSink_clear_max_traces(const envoy_config_tap_v3_BufferedAdminSink* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t) = 0;
+}
+UPB_INLINE uint64_t envoy_config_tap_v3_BufferedAdminSink_max_traces(const envoy_config_tap_v3_BufferedAdminSink* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t);
+}
+UPB_INLINE bool envoy_config_tap_v3_BufferedAdminSink_has_timeout(const envoy_config_tap_v3_BufferedAdminSink* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_tap_v3_BufferedAdminSink_clear_timeout(const envoy_config_tap_v3_BufferedAdminSink* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Duration* envoy_config_tap_v3_BufferedAdminSink_timeout(const envoy_config_tap_v3_BufferedAdminSink* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
+}
+
+UPB_INLINE void envoy_config_tap_v3_BufferedAdminSink_set_max_traces(envoy_config_tap_v3_BufferedAdminSink *msg, uint64_t value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t) = value;
+}
+UPB_INLINE void envoy_config_tap_v3_BufferedAdminSink_set_timeout(envoy_config_tap_v3_BufferedAdminSink *msg, struct google_protobuf_Duration* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
+}
+UPB_INLINE struct google_protobuf_Duration* envoy_config_tap_v3_BufferedAdminSink_mutable_timeout(envoy_config_tap_v3_BufferedAdminSink* msg, upb_Arena* arena) {
+ struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_config_tap_v3_BufferedAdminSink_timeout(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_tap_v3_BufferedAdminSink_set_timeout(msg, sub);
+ }
+ return sub;
+}
+
/* envoy.config.tap.v3.FilePerTapSink */
UPB_INLINE envoy_config_tap_v3_FilePerTapSink* envoy_config_tap_v3_FilePerTapSink_new(upb_Arena* arena) {
@@ -789,11 +1091,18 @@ UPB_INLINE envoy_config_tap_v3_FilePerTapSink* envoy_config_tap_v3_FilePerTapSin
return ret;
}
UPB_INLINE char* envoy_config_tap_v3_FilePerTapSink_serialize(const envoy_config_tap_v3_FilePerTapSink* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_FilePerTapSink_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_FilePerTapSink_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_tap_v3_FilePerTapSink_serialize_ex(const envoy_config_tap_v3_FilePerTapSink* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_FilePerTapSink_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_FilePerTapSink_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_tap_v3_FilePerTapSink_clear_path_prefix(const envoy_config_tap_v3_FilePerTapSink* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_tap_v3_FilePerTapSink_path_prefix(const envoy_config_tap_v3_FilePerTapSink* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -828,16 +1137,28 @@ UPB_INLINE envoy_config_tap_v3_StreamingGrpcSink* envoy_config_tap_v3_StreamingG
return ret;
}
UPB_INLINE char* envoy_config_tap_v3_StreamingGrpcSink_serialize(const envoy_config_tap_v3_StreamingGrpcSink* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_StreamingGrpcSink_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_StreamingGrpcSink_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_tap_v3_StreamingGrpcSink_serialize_ex(const envoy_config_tap_v3_StreamingGrpcSink* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_tap_v3_StreamingGrpcSink_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_tap_v3_StreamingGrpcSink_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_tap_v3_StreamingGrpcSink_clear_tap_id(const envoy_config_tap_v3_StreamingGrpcSink* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_tap_v3_StreamingGrpcSink_tap_id(const envoy_config_tap_v3_StreamingGrpcSink* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_tap_v3_StreamingGrpcSink_has_grpc_service(const envoy_config_tap_v3_StreamingGrpcSink *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_tap_v3_StreamingGrpcSink_has_grpc_service(const envoy_config_tap_v3_StreamingGrpcSink* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_tap_v3_StreamingGrpcSink_clear_grpc_service(const envoy_config_tap_v3_StreamingGrpcSink* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_GrpcService* envoy_config_tap_v3_StreamingGrpcSink_grpc_service(const envoy_config_tap_v3_StreamingGrpcSink* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_GrpcService*);
}
@@ -849,7 +1170,7 @@ UPB_INLINE void envoy_config_tap_v3_StreamingGrpcSink_set_grpc_service(envoy_con
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_GrpcService*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_tap_v3_StreamingGrpcSink_mutable_grpc_service(envoy_config_tap_v3_StreamingGrpcSink *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_tap_v3_StreamingGrpcSink_mutable_grpc_service(envoy_config_tap_v3_StreamingGrpcSink* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService* sub = (struct envoy_config_core_v3_GrpcService*)envoy_config_tap_v3_StreamingGrpcSink_grpc_service(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService*)_upb_Message_New(&envoy_config_core_v3_GrpcService_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c
index 66a6bdbf3a..855c71ff63 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c
@@ -17,14 +17,14 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_config_trace_v3_DatadogConfig__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_trace_v3_DatadogConfig_msginit = {
NULL,
&envoy_config_trace_v3_DatadogConfig__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h
index 0981b77b40..3113c2646d 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h
@@ -51,15 +51,25 @@ UPB_INLINE envoy_config_trace_v3_DatadogConfig* envoy_config_trace_v3_DatadogCon
return ret;
}
UPB_INLINE char* envoy_config_trace_v3_DatadogConfig_serialize(const envoy_config_trace_v3_DatadogConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_DatadogConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_DatadogConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_trace_v3_DatadogConfig_serialize_ex(const envoy_config_trace_v3_DatadogConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_DatadogConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_DatadogConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_trace_v3_DatadogConfig_clear_collector_cluster(const envoy_config_trace_v3_DatadogConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_trace_v3_DatadogConfig_collector_cluster(const envoy_config_trace_v3_DatadogConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void envoy_config_trace_v3_DatadogConfig_clear_service_name(const envoy_config_trace_v3_DatadogConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_trace_v3_DatadogConfig_service_name(const envoy_config_trace_v3_DatadogConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c
index fcd44a88a0..b42bbdcd7a 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c
@@ -22,14 +22,14 @@ static const upb_MiniTable_Sub envoy_config_trace_v3_DynamicOtConfig_submsgs[1]
};
static const upb_MiniTable_Field envoy_config_trace_v3_DynamicOtConfig__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_trace_v3_DynamicOtConfig_msginit = {
&envoy_config_trace_v3_DynamicOtConfig_submsgs[0],
&envoy_config_trace_v3_DynamicOtConfig__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h
index 39139bcb26..9b8745be26 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h
@@ -53,16 +53,28 @@ UPB_INLINE envoy_config_trace_v3_DynamicOtConfig* envoy_config_trace_v3_DynamicO
return ret;
}
UPB_INLINE char* envoy_config_trace_v3_DynamicOtConfig_serialize(const envoy_config_trace_v3_DynamicOtConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_DynamicOtConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_DynamicOtConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_trace_v3_DynamicOtConfig_serialize_ex(const envoy_config_trace_v3_DynamicOtConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_DynamicOtConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_DynamicOtConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_trace_v3_DynamicOtConfig_clear_library(const envoy_config_trace_v3_DynamicOtConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_trace_v3_DynamicOtConfig_library(const envoy_config_trace_v3_DynamicOtConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_trace_v3_DynamicOtConfig_has_config(const envoy_config_trace_v3_DynamicOtConfig *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_trace_v3_DynamicOtConfig_has_config(const envoy_config_trace_v3_DynamicOtConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_trace_v3_DynamicOtConfig_clear_config(const envoy_config_trace_v3_DynamicOtConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Struct* envoy_config_trace_v3_DynamicOtConfig_config(const envoy_config_trace_v3_DynamicOtConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Struct*);
}
@@ -74,7 +86,7 @@ UPB_INLINE void envoy_config_trace_v3_DynamicOtConfig_set_config(envoy_config_tr
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Struct*) = value;
}
-UPB_INLINE struct google_protobuf_Struct* envoy_config_trace_v3_DynamicOtConfig_mutable_config(envoy_config_trace_v3_DynamicOtConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Struct* envoy_config_trace_v3_DynamicOtConfig_mutable_config(envoy_config_trace_v3_DynamicOtConfig* msg, upb_Arena* arena) {
struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)envoy_config_trace_v3_DynamicOtConfig_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Struct*)_upb_Message_New(&google_protobuf_Struct_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c
index 53eab7670b..e7ac581c24 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c
@@ -21,13 +21,13 @@ static const upb_MiniTable_Sub envoy_config_trace_v3_Tracing_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_trace_v3_Tracing__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_trace_v3_Tracing_msginit = {
&envoy_config_trace_v3_Tracing_submsgs[0],
&envoy_config_trace_v3_Tracing__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_trace_v3_Tracing_Http_submsgs[1] = {
@@ -35,14 +35,14 @@ static const upb_MiniTable_Sub envoy_config_trace_v3_Tracing_Http_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_trace_v3_Tracing_Http__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_trace_v3_Tracing_Http_msginit = {
&envoy_config_trace_v3_Tracing_Http_submsgs[0],
&envoy_config_trace_v3_Tracing_Http__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h
index e037cccf10..2a3ec508c0 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h
@@ -56,13 +56,22 @@ UPB_INLINE envoy_config_trace_v3_Tracing* envoy_config_trace_v3_Tracing_parse_ex
return ret;
}
UPB_INLINE char* envoy_config_trace_v3_Tracing_serialize(const envoy_config_trace_v3_Tracing* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_Tracing_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_Tracing_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_trace_v3_Tracing_serialize_ex(const envoy_config_trace_v3_Tracing* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_Tracing_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_Tracing_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_trace_v3_Tracing_has_http(const envoy_config_trace_v3_Tracing* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_trace_v3_Tracing_clear_http(const envoy_config_trace_v3_Tracing* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_trace_v3_Tracing_has_http(const envoy_config_trace_v3_Tracing *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_config_trace_v3_Tracing_Http* envoy_config_trace_v3_Tracing_http(const envoy_config_trace_v3_Tracing* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_config_trace_v3_Tracing_Http*);
}
@@ -71,7 +80,7 @@ UPB_INLINE void envoy_config_trace_v3_Tracing_set_http(envoy_config_trace_v3_Tra
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_config_trace_v3_Tracing_Http*) = value;
}
-UPB_INLINE struct envoy_config_trace_v3_Tracing_Http* envoy_config_trace_v3_Tracing_mutable_http(envoy_config_trace_v3_Tracing *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_trace_v3_Tracing_Http* envoy_config_trace_v3_Tracing_mutable_http(envoy_config_trace_v3_Tracing* msg, upb_Arena* arena) {
struct envoy_config_trace_v3_Tracing_Http* sub = (struct envoy_config_trace_v3_Tracing_Http*)envoy_config_trace_v3_Tracing_http(msg);
if (sub == NULL) {
sub = (struct envoy_config_trace_v3_Tracing_Http*)_upb_Message_New(&envoy_config_trace_v3_Tracing_Http_msginit, arena);
@@ -106,31 +115,46 @@ UPB_INLINE envoy_config_trace_v3_Tracing_Http* envoy_config_trace_v3_Tracing_Htt
return ret;
}
UPB_INLINE char* envoy_config_trace_v3_Tracing_Http_serialize(const envoy_config_trace_v3_Tracing_Http* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_Tracing_Http_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_Tracing_Http_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_trace_v3_Tracing_Http_serialize_ex(const envoy_config_trace_v3_Tracing_Http* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_Tracing_Http_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_Tracing_Http_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_trace_v3_Tracing_Http_config_type_typed_config = 3,
envoy_config_trace_v3_Tracing_Http_config_type_NOT_SET = 0
} envoy_config_trace_v3_Tracing_Http_config_type_oneofcases;
-UPB_INLINE envoy_config_trace_v3_Tracing_Http_config_type_oneofcases envoy_config_trace_v3_Tracing_Http_config_type_case(const envoy_config_trace_v3_Tracing_Http* msg) { return (envoy_config_trace_v3_Tracing_Http_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_config_trace_v3_Tracing_Http_config_type_oneofcases envoy_config_trace_v3_Tracing_Http_config_type_case(const envoy_config_trace_v3_Tracing_Http* msg) {
+ return (envoy_config_trace_v3_Tracing_Http_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_config_trace_v3_Tracing_Http_clear_name(const envoy_config_trace_v3_Tracing_Http* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_trace_v3_Tracing_Http_name(const envoy_config_trace_v3_Tracing_Http* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_config_trace_v3_Tracing_Http_has_typed_config(const envoy_config_trace_v3_Tracing_Http* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_config_trace_v3_Tracing_Http_clear_typed_config(const envoy_config_trace_v3_Tracing_Http* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_config_trace_v3_Tracing_Http_config_type_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_config_trace_v3_Tracing_Http_typed_config(const envoy_config_trace_v3_Tracing_Http* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
}
-UPB_INLINE bool envoy_config_trace_v3_Tracing_Http_has_typed_config(const envoy_config_trace_v3_Tracing_Http *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const struct google_protobuf_Any* envoy_config_trace_v3_Tracing_Http_typed_config(const envoy_config_trace_v3_Tracing_Http *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void envoy_config_trace_v3_Tracing_Http_set_name(envoy_config_trace_v3_Tracing_Http *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_trace_v3_Tracing_Http_set_typed_config(envoy_config_trace_v3_Tracing_Http *msg, struct google_protobuf_Any* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct google_protobuf_Any* envoy_config_trace_v3_Tracing_Http_mutable_typed_config(envoy_config_trace_v3_Tracing_Http *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_config_trace_v3_Tracing_Http_mutable_typed_config(envoy_config_trace_v3_Tracing_Http* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_config_trace_v3_Tracing_Http_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c
index 508ed13974..d7a1d556b8 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c
@@ -23,16 +23,16 @@ static const upb_MiniTable_Sub envoy_config_trace_v3_LightstepConfig_submsgs[1]
};
static const upb_MiniTable_Field envoy_config_trace_v3_LightstepConfig__fields[4] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 48), 0, 0, 5, kUpb_FieldMode_Array | upb_LabelFlags_IsPacked | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 40), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 40), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | kUpb_LabelFlags_IsPacked | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 48), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_trace_v3_LightstepConfig_msginit = {
&envoy_config_trace_v3_LightstepConfig_submsgs[0],
&envoy_config_trace_v3_LightstepConfig__fields[0],
- UPB_SIZE(32, 64), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(32, 56), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h
index ac97794912..388ecab1d6 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h
@@ -60,22 +60,42 @@ UPB_INLINE envoy_config_trace_v3_LightstepConfig* envoy_config_trace_v3_Lightste
return ret;
}
UPB_INLINE char* envoy_config_trace_v3_LightstepConfig_serialize(const envoy_config_trace_v3_LightstepConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_LightstepConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_LightstepConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_trace_v3_LightstepConfig_serialize_ex(const envoy_config_trace_v3_LightstepConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_LightstepConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_LightstepConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_trace_v3_LightstepConfig_clear_collector_cluster(const envoy_config_trace_v3_LightstepConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_trace_v3_LightstepConfig_collector_cluster(const envoy_config_trace_v3_LightstepConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
+UPB_INLINE void envoy_config_trace_v3_LightstepConfig_clear_access_token_file(const envoy_config_trace_v3_LightstepConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_trace_v3_LightstepConfig_access_token_file(const envoy_config_trace_v3_LightstepConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
-UPB_INLINE int32_t const* envoy_config_trace_v3_LightstepConfig_propagation_modes(const envoy_config_trace_v3_LightstepConfig *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len); }
-UPB_INLINE bool envoy_config_trace_v3_LightstepConfig_has_access_token(const envoy_config_trace_v3_LightstepConfig *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE void envoy_config_trace_v3_LightstepConfig_clear_propagation_modes(const envoy_config_trace_v3_LightstepConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE int32_t const* envoy_config_trace_v3_LightstepConfig_propagation_modes(const envoy_config_trace_v3_LightstepConfig* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len);
+}
+UPB_INLINE bool envoy_config_trace_v3_LightstepConfig_has_access_token(const envoy_config_trace_v3_LightstepConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_trace_v3_LightstepConfig_clear_access_token(const envoy_config_trace_v3_LightstepConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_config_trace_v3_LightstepConfig_access_token(const envoy_config_trace_v3_LightstepConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct envoy_config_core_v3_DataSource*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct envoy_config_core_v3_DataSource*);
}
UPB_INLINE void envoy_config_trace_v3_LightstepConfig_set_collector_cluster(envoy_config_trace_v3_LightstepConfig *msg, upb_StringView value) {
@@ -84,21 +104,20 @@ UPB_INLINE void envoy_config_trace_v3_LightstepConfig_set_collector_cluster(envo
UPB_INLINE void envoy_config_trace_v3_LightstepConfig_set_access_token_file(envoy_config_trace_v3_LightstepConfig *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
}
-UPB_INLINE int32_t* envoy_config_trace_v3_LightstepConfig_mutable_propagation_modes(envoy_config_trace_v3_LightstepConfig *msg, size_t *len) {
- return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
+UPB_INLINE int32_t* envoy_config_trace_v3_LightstepConfig_mutable_propagation_modes(envoy_config_trace_v3_LightstepConfig* msg, size_t* len) {
+ return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
}
-UPB_INLINE int32_t* envoy_config_trace_v3_LightstepConfig_resize_propagation_modes(envoy_config_trace_v3_LightstepConfig *msg, size_t len, upb_Arena *arena) {
- return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, 2, arena);
+UPB_INLINE int32_t* envoy_config_trace_v3_LightstepConfig_resize_propagation_modes(envoy_config_trace_v3_LightstepConfig* msg, size_t len, upb_Arena* arena) {
+ return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, 2, arena);
}
-UPB_INLINE bool envoy_config_trace_v3_LightstepConfig_add_propagation_modes(envoy_config_trace_v3_LightstepConfig *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 48), 2, &val,
- arena);
+UPB_INLINE bool envoy_config_trace_v3_LightstepConfig_add_propagation_modes(envoy_config_trace_v3_LightstepConfig* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 40), 2, &val, arena);
}
UPB_INLINE void envoy_config_trace_v3_LightstepConfig_set_access_token(envoy_config_trace_v3_LightstepConfig *msg, struct envoy_config_core_v3_DataSource* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct envoy_config_core_v3_DataSource*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_trace_v3_LightstepConfig_mutable_access_token(envoy_config_trace_v3_LightstepConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_trace_v3_LightstepConfig_mutable_access_token(envoy_config_trace_v3_LightstepConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_config_trace_v3_LightstepConfig_access_token(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c
index 2f6cb59ad5..9fc1f8cfae 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c
@@ -18,31 +18,32 @@
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_config_trace_v3_OpenCensusConfig_submsgs[2] = {
- {.submsg = &envoy_config_core_v3_GrpcService_msginit},
+static const upb_MiniTable_Sub envoy_config_trace_v3_OpenCensusConfig_submsgs[3] = {
{.submsg = &opencensus_proto_trace_v1_TraceConfig_msginit},
+ {.submsg = &envoy_config_core_v3_GrpcService_msginit},
+ {.submsg = &envoy_config_core_v3_GrpcService_msginit},
};
static const upb_MiniTable_Field envoy_config_trace_v3_OpenCensusConfig__fields[13] = {
- {1, UPB_SIZE(40, 72), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(2, 2), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(3, 3), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(16, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {8, UPB_SIZE(52, 96), 0, 0, 5, kUpb_FieldMode_Array | upb_LabelFlags_IsPacked | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(56, 104), 0, 0, 5, kUpb_FieldMode_Array | upb_LabelFlags_IsPacked | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(24, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {11, UPB_SIZE(4, 4), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {12, UPB_SIZE(32, 56), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {13, UPB_SIZE(44, 80), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {14, UPB_SIZE(48, 88), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(2, 2), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(3, 3), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(20, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(28, 48), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | kUpb_LabelFlags_IsPacked | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(32, 56), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | kUpb_LabelFlags_IsPacked | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(36, 64), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(44, 80), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(52, 96), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(56, 104), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_trace_v3_OpenCensusConfig_msginit = {
&envoy_config_trace_v3_OpenCensusConfig_submsgs[0],
&envoy_config_trace_v3_OpenCensusConfig__fields[0],
- UPB_SIZE(64, 112), 13, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(64, 112), 13, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h
index 83bd9ca808..4c8e867039 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h
@@ -63,56 +63,109 @@ UPB_INLINE envoy_config_trace_v3_OpenCensusConfig* envoy_config_trace_v3_OpenCen
return ret;
}
UPB_INLINE char* envoy_config_trace_v3_OpenCensusConfig_serialize(const envoy_config_trace_v3_OpenCensusConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_OpenCensusConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_OpenCensusConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_trace_v3_OpenCensusConfig_serialize_ex(const envoy_config_trace_v3_OpenCensusConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_OpenCensusConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_OpenCensusConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_trace_v3_OpenCensusConfig_has_trace_config(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_clear_trace_config(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_trace_v3_OpenCensusConfig_has_trace_config(const envoy_config_trace_v3_OpenCensusConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct opencensus_proto_trace_v1_TraceConfig* envoy_config_trace_v3_OpenCensusConfig_trace_config(const envoy_config_trace_v3_OpenCensusConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const struct opencensus_proto_trace_v1_TraceConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct opencensus_proto_trace_v1_TraceConfig*);
+}
+UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_clear_stdout_exporter_enabled(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
}
UPB_INLINE bool envoy_config_trace_v3_OpenCensusConfig_stdout_exporter_enabled(const envoy_config_trace_v3_OpenCensusConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
+UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_clear_stackdriver_exporter_enabled(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
+}
UPB_INLINE bool envoy_config_trace_v3_OpenCensusConfig_stackdriver_exporter_enabled(const envoy_config_trace_v3_OpenCensusConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
}
+UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_clear_stackdriver_project_id(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_trace_v3_OpenCensusConfig_stackdriver_project_id(const envoy_config_trace_v3_OpenCensusConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView);
+}
+UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_clear_zipkin_exporter_enabled(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = 0;
}
UPB_INLINE bool envoy_config_trace_v3_OpenCensusConfig_zipkin_exporter_enabled(const envoy_config_trace_v3_OpenCensusConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool);
}
+UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_clear_zipkin_url(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_trace_v3_OpenCensusConfig_zipkin_url(const envoy_config_trace_v3_OpenCensusConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView);
+}
+UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_clear_incoming_trace_context(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 48));
+}
+UPB_INLINE int32_t const* envoy_config_trace_v3_OpenCensusConfig_incoming_trace_context(const envoy_config_trace_v3_OpenCensusConfig* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(28, 48), len);
+}
+UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_clear_outgoing_trace_context(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 56));
+}
+UPB_INLINE int32_t const* envoy_config_trace_v3_OpenCensusConfig_outgoing_trace_context(const envoy_config_trace_v3_OpenCensusConfig* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(32, 56), len);
+}
+UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_clear_stackdriver_address(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
-UPB_INLINE int32_t const* envoy_config_trace_v3_OpenCensusConfig_incoming_trace_context(const envoy_config_trace_v3_OpenCensusConfig *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(52, 96), len); }
-UPB_INLINE int32_t const* envoy_config_trace_v3_OpenCensusConfig_outgoing_trace_context(const envoy_config_trace_v3_OpenCensusConfig *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(56, 104), len); }
UPB_INLINE upb_StringView envoy_config_trace_v3_OpenCensusConfig_stackdriver_address(const envoy_config_trace_v3_OpenCensusConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), upb_StringView);
+}
+UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_clear_ocagent_exporter_enabled(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = 0;
}
UPB_INLINE bool envoy_config_trace_v3_OpenCensusConfig_ocagent_exporter_enabled(const envoy_config_trace_v3_OpenCensusConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
}
+UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_clear_ocagent_address(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 80), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_trace_v3_OpenCensusConfig_ocagent_address(const envoy_config_trace_v3_OpenCensusConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 80), upb_StringView);
+}
+UPB_INLINE bool envoy_config_trace_v3_OpenCensusConfig_has_stackdriver_grpc_service(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_clear_stackdriver_grpc_service(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 96), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_trace_v3_OpenCensusConfig_has_stackdriver_grpc_service(const envoy_config_trace_v3_OpenCensusConfig *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_OpenCensusConfig_stackdriver_grpc_service(const envoy_config_trace_v3_OpenCensusConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const struct envoy_config_core_v3_GrpcService*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(52, 96), const struct envoy_config_core_v3_GrpcService*);
+}
+UPB_INLINE bool envoy_config_trace_v3_OpenCensusConfig_has_ocagent_grpc_service(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_clear_ocagent_grpc_service(const envoy_config_trace_v3_OpenCensusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 104), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_trace_v3_OpenCensusConfig_has_ocagent_grpc_service(const envoy_config_trace_v3_OpenCensusConfig *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_OpenCensusConfig_ocagent_grpc_service(const envoy_config_trace_v3_OpenCensusConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 88), const struct envoy_config_core_v3_GrpcService*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(56, 104), const struct envoy_config_core_v3_GrpcService*);
}
UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_set_trace_config(envoy_config_trace_v3_OpenCensusConfig *msg, struct opencensus_proto_trace_v1_TraceConfig* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 72), struct opencensus_proto_trace_v1_TraceConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct opencensus_proto_trace_v1_TraceConfig*) = value;
}
-UPB_INLINE struct opencensus_proto_trace_v1_TraceConfig* envoy_config_trace_v3_OpenCensusConfig_mutable_trace_config(envoy_config_trace_v3_OpenCensusConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct opencensus_proto_trace_v1_TraceConfig* envoy_config_trace_v3_OpenCensusConfig_mutable_trace_config(envoy_config_trace_v3_OpenCensusConfig* msg, upb_Arena* arena) {
struct opencensus_proto_trace_v1_TraceConfig* sub = (struct opencensus_proto_trace_v1_TraceConfig*)envoy_config_trace_v3_OpenCensusConfig_trace_config(msg);
if (sub == NULL) {
sub = (struct opencensus_proto_trace_v1_TraceConfig*)_upb_Message_New(&opencensus_proto_trace_v1_TraceConfig_msginit, arena);
@@ -128,48 +181,46 @@ UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_set_stackdriver_exporter_
*UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = value;
}
UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_set_stackdriver_project_id(envoy_config_trace_v3_OpenCensusConfig *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = value;
}
UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_set_zipkin_exporter_enabled(envoy_config_trace_v3_OpenCensusConfig *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = value;
}
UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_set_zipkin_url(envoy_config_trace_v3_OpenCensusConfig *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView) = value;
}
-UPB_INLINE int32_t* envoy_config_trace_v3_OpenCensusConfig_mutable_incoming_trace_context(envoy_config_trace_v3_OpenCensusConfig *msg, size_t *len) {
- return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 96), len);
+UPB_INLINE int32_t* envoy_config_trace_v3_OpenCensusConfig_mutable_incoming_trace_context(envoy_config_trace_v3_OpenCensusConfig* msg, size_t* len) {
+ return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 48), len);
}
-UPB_INLINE int32_t* envoy_config_trace_v3_OpenCensusConfig_resize_incoming_trace_context(envoy_config_trace_v3_OpenCensusConfig *msg, size_t len, upb_Arena *arena) {
- return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 96), len, 2, arena);
+UPB_INLINE int32_t* envoy_config_trace_v3_OpenCensusConfig_resize_incoming_trace_context(envoy_config_trace_v3_OpenCensusConfig* msg, size_t len, upb_Arena* arena) {
+ return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 48), len, 2, arena);
}
-UPB_INLINE bool envoy_config_trace_v3_OpenCensusConfig_add_incoming_trace_context(envoy_config_trace_v3_OpenCensusConfig *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(52, 96), 2, &val,
- arena);
+UPB_INLINE bool envoy_config_trace_v3_OpenCensusConfig_add_incoming_trace_context(envoy_config_trace_v3_OpenCensusConfig* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 48), 2, &val, arena);
}
-UPB_INLINE int32_t* envoy_config_trace_v3_OpenCensusConfig_mutable_outgoing_trace_context(envoy_config_trace_v3_OpenCensusConfig *msg, size_t *len) {
- return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 104), len);
+UPB_INLINE int32_t* envoy_config_trace_v3_OpenCensusConfig_mutable_outgoing_trace_context(envoy_config_trace_v3_OpenCensusConfig* msg, size_t* len) {
+ return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 56), len);
}
-UPB_INLINE int32_t* envoy_config_trace_v3_OpenCensusConfig_resize_outgoing_trace_context(envoy_config_trace_v3_OpenCensusConfig *msg, size_t len, upb_Arena *arena) {
- return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 104), len, 2, arena);
+UPB_INLINE int32_t* envoy_config_trace_v3_OpenCensusConfig_resize_outgoing_trace_context(envoy_config_trace_v3_OpenCensusConfig* msg, size_t len, upb_Arena* arena) {
+ return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 56), len, 2, arena);
}
-UPB_INLINE bool envoy_config_trace_v3_OpenCensusConfig_add_outgoing_trace_context(envoy_config_trace_v3_OpenCensusConfig *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(56, 104), 2, &val,
- arena);
+UPB_INLINE bool envoy_config_trace_v3_OpenCensusConfig_add_outgoing_trace_context(envoy_config_trace_v3_OpenCensusConfig* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 56), 2, &val, arena);
}
UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_set_stackdriver_address(envoy_config_trace_v3_OpenCensusConfig *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), upb_StringView) = value;
}
UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_set_ocagent_exporter_enabled(envoy_config_trace_v3_OpenCensusConfig *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = value;
}
UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_set_ocagent_address(envoy_config_trace_v3_OpenCensusConfig *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(32, 56), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 80), upb_StringView) = value;
}
UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_set_stackdriver_grpc_service(envoy_config_trace_v3_OpenCensusConfig *msg, struct envoy_config_core_v3_GrpcService* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(44, 80), struct envoy_config_core_v3_GrpcService*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 96), struct envoy_config_core_v3_GrpcService*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_OpenCensusConfig_mutable_stackdriver_grpc_service(envoy_config_trace_v3_OpenCensusConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_OpenCensusConfig_mutable_stackdriver_grpc_service(envoy_config_trace_v3_OpenCensusConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService* sub = (struct envoy_config_core_v3_GrpcService*)envoy_config_trace_v3_OpenCensusConfig_stackdriver_grpc_service(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService*)_upb_Message_New(&envoy_config_core_v3_GrpcService_msginit, arena);
@@ -180,9 +231,9 @@ UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_OpenCe
}
UPB_INLINE void envoy_config_trace_v3_OpenCensusConfig_set_ocagent_grpc_service(envoy_config_trace_v3_OpenCensusConfig *msg, struct envoy_config_core_v3_GrpcService* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 88), struct envoy_config_core_v3_GrpcService*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 104), struct envoy_config_core_v3_GrpcService*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_OpenCensusConfig_mutable_ocagent_grpc_service(envoy_config_trace_v3_OpenCensusConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_OpenCensusConfig_mutable_ocagent_grpc_service(envoy_config_trace_v3_OpenCensusConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService* sub = (struct envoy_config_core_v3_GrpcService*)envoy_config_trace_v3_OpenCensusConfig_ocagent_grpc_service(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService*)_upb_Message_New(&envoy_config_core_v3_GrpcService_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c
new file mode 100644
index 0000000000..6816cbdb21
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c
@@ -0,0 +1,46 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/config/trace/v3/opentelemetry.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#include <stddef.h>
+#include "upb/msg_internal.h"
+#include "envoy/config/trace/v3/opentelemetry.upb.h"
+#include "envoy/config/core/v3/grpc_service.upb.h"
+#include "udpa/annotations/status.upb.h"
+#include "validate/validate.upb.h"
+
+#include "upb/port_def.inc"
+
+static const upb_MiniTable_Sub envoy_config_trace_v3_OpenTelemetryConfig_submsgs[1] = {
+ {.submsg = &envoy_config_core_v3_GrpcService_msginit},
+};
+
+static const upb_MiniTable_Field envoy_config_trace_v3_OpenTelemetryConfig__fields[1] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_config_trace_v3_OpenTelemetryConfig_msginit = {
+ &envoy_config_trace_v3_OpenTelemetryConfig_submsgs[0],
+ &envoy_config_trace_v3_OpenTelemetryConfig__fields[0],
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
+};
+
+static const upb_MiniTable *messages_layout[1] = {
+ &envoy_config_trace_v3_OpenTelemetryConfig_msginit,
+};
+
+const upb_MiniTable_File envoy_config_trace_v3_opentelemetry_proto_upb_file_layout = {
+ messages_layout,
+ NULL,
+ NULL,
+ 1,
+ 0,
+ 0,
+};
+
+#include "upb/port_undef.inc"
+
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h
new file mode 100644
index 0000000000..f0c0eb1d6e
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h
@@ -0,0 +1,98 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/config/trace/v3/opentelemetry.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#ifndef ENVOY_CONFIG_TRACE_V3_OPENTELEMETRY_PROTO_UPB_H_
+#define ENVOY_CONFIG_TRACE_V3_OPENTELEMETRY_PROTO_UPB_H_
+
+#include "upb/msg_internal.h"
+#include "upb/decode.h"
+#include "upb/decode_fast.h"
+#include "upb/encode.h"
+
+#include "upb/port_def.inc"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct envoy_config_trace_v3_OpenTelemetryConfig;
+typedef struct envoy_config_trace_v3_OpenTelemetryConfig envoy_config_trace_v3_OpenTelemetryConfig;
+extern const upb_MiniTable envoy_config_trace_v3_OpenTelemetryConfig_msginit;
+struct envoy_config_core_v3_GrpcService;
+extern const upb_MiniTable envoy_config_core_v3_GrpcService_msginit;
+
+
+
+/* envoy.config.trace.v3.OpenTelemetryConfig */
+
+UPB_INLINE envoy_config_trace_v3_OpenTelemetryConfig* envoy_config_trace_v3_OpenTelemetryConfig_new(upb_Arena* arena) {
+ return (envoy_config_trace_v3_OpenTelemetryConfig*)_upb_Message_New(&envoy_config_trace_v3_OpenTelemetryConfig_msginit, arena);
+}
+UPB_INLINE envoy_config_trace_v3_OpenTelemetryConfig* envoy_config_trace_v3_OpenTelemetryConfig_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_config_trace_v3_OpenTelemetryConfig* ret = envoy_config_trace_v3_OpenTelemetryConfig_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_trace_v3_OpenTelemetryConfig_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_config_trace_v3_OpenTelemetryConfig* envoy_config_trace_v3_OpenTelemetryConfig_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_config_trace_v3_OpenTelemetryConfig* ret = envoy_config_trace_v3_OpenTelemetryConfig_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_config_trace_v3_OpenTelemetryConfig_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_config_trace_v3_OpenTelemetryConfig_serialize(const envoy_config_trace_v3_OpenTelemetryConfig* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_OpenTelemetryConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_config_trace_v3_OpenTelemetryConfig_serialize_ex(const envoy_config_trace_v3_OpenTelemetryConfig* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_OpenTelemetryConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_trace_v3_OpenTelemetryConfig_has_grpc_service(const envoy_config_trace_v3_OpenTelemetryConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_trace_v3_OpenTelemetryConfig_clear_grpc_service(const envoy_config_trace_v3_OpenTelemetryConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_OpenTelemetryConfig_grpc_service(const envoy_config_trace_v3_OpenTelemetryConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_GrpcService*);
+}
+
+UPB_INLINE void envoy_config_trace_v3_OpenTelemetryConfig_set_grpc_service(envoy_config_trace_v3_OpenTelemetryConfig *msg, struct envoy_config_core_v3_GrpcService* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_GrpcService*) = value;
+}
+UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_OpenTelemetryConfig_mutable_grpc_service(envoy_config_trace_v3_OpenTelemetryConfig* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_GrpcService* sub = (struct envoy_config_core_v3_GrpcService*)envoy_config_trace_v3_OpenTelemetryConfig_grpc_service(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_core_v3_GrpcService*)_upb_Message_New(&envoy_config_core_v3_GrpcService_msginit, arena);
+ if (!sub) return NULL;
+ envoy_config_trace_v3_OpenTelemetryConfig_set_grpc_service(msg, sub);
+ }
+ return sub;
+}
+
+extern const upb_MiniTable_File envoy_config_trace_v3_opentelemetry_proto_upb_file_layout;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* ENVOY_CONFIG_TRACE_V3_OPENTELEMETRY_PROTO_UPB_H_ */
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c
index 9119eb475c..f8dcbea6b6 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c
@@ -21,13 +21,13 @@ static const upb_MiniTable_Sub envoy_config_trace_v3_TraceServiceConfig_submsgs[
};
static const upb_MiniTable_Field envoy_config_trace_v3_TraceServiceConfig__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_trace_v3_TraceServiceConfig_msginit = {
&envoy_config_trace_v3_TraceServiceConfig_submsgs[0],
&envoy_config_trace_v3_TraceServiceConfig__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h
index a7e96b2393..a1ff88de4d 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h
@@ -53,13 +53,22 @@ UPB_INLINE envoy_config_trace_v3_TraceServiceConfig* envoy_config_trace_v3_Trace
return ret;
}
UPB_INLINE char* envoy_config_trace_v3_TraceServiceConfig_serialize(const envoy_config_trace_v3_TraceServiceConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_TraceServiceConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_TraceServiceConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_trace_v3_TraceServiceConfig_serialize_ex(const envoy_config_trace_v3_TraceServiceConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_TraceServiceConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_TraceServiceConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_trace_v3_TraceServiceConfig_has_grpc_service(const envoy_config_trace_v3_TraceServiceConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_trace_v3_TraceServiceConfig_clear_grpc_service(const envoy_config_trace_v3_TraceServiceConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_trace_v3_TraceServiceConfig_has_grpc_service(const envoy_config_trace_v3_TraceServiceConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_TraceServiceConfig_grpc_service(const envoy_config_trace_v3_TraceServiceConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_GrpcService*);
}
@@ -68,7 +77,7 @@ UPB_INLINE void envoy_config_trace_v3_TraceServiceConfig_set_grpc_service(envoy_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_GrpcService*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_TraceServiceConfig_mutable_grpc_service(envoy_config_trace_v3_TraceServiceConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_TraceServiceConfig_mutable_grpc_service(envoy_config_trace_v3_TraceServiceConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService* sub = (struct envoy_config_core_v3_GrpcService*)envoy_config_trace_v3_TraceServiceConfig_grpc_service(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService*)_upb_Message_New(&envoy_config_core_v3_GrpcService_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c
index d8bda60a3b..6fd29d151f 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c
@@ -24,14 +24,14 @@ static const upb_MiniTable_Sub envoy_config_trace_v3_SkyWalkingConfig_submsgs[2]
};
static const upb_MiniTable_Field envoy_config_trace_v3_SkyWalkingConfig__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_trace_v3_SkyWalkingConfig_msginit = {
&envoy_config_trace_v3_SkyWalkingConfig_submsgs[0],
&envoy_config_trace_v3_SkyWalkingConfig__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_trace_v3_ClientConfig_submsgs[1] = {
@@ -39,16 +39,16 @@ static const upb_MiniTable_Sub envoy_config_trace_v3_ClientConfig_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_trace_v3_ClientConfig__fields[4] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 48), UPB_SIZE(-33, -65), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 40), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(24, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(32, 56), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_trace_v3_ClientConfig_msginit = {
&envoy_config_trace_v3_ClientConfig_submsgs[0],
&envoy_config_trace_v3_ClientConfig__fields[0],
- UPB_SIZE(40, 80), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(40, 64), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h
index 4605258aff..6eba4aa85b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h
@@ -58,17 +58,31 @@ UPB_INLINE envoy_config_trace_v3_SkyWalkingConfig* envoy_config_trace_v3_SkyWalk
return ret;
}
UPB_INLINE char* envoy_config_trace_v3_SkyWalkingConfig_serialize(const envoy_config_trace_v3_SkyWalkingConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_SkyWalkingConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_SkyWalkingConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_trace_v3_SkyWalkingConfig_serialize_ex(const envoy_config_trace_v3_SkyWalkingConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_SkyWalkingConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_SkyWalkingConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_trace_v3_SkyWalkingConfig_has_grpc_service(const envoy_config_trace_v3_SkyWalkingConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_trace_v3_SkyWalkingConfig_clear_grpc_service(const envoy_config_trace_v3_SkyWalkingConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_trace_v3_SkyWalkingConfig_has_grpc_service(const envoy_config_trace_v3_SkyWalkingConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_SkyWalkingConfig_grpc_service(const envoy_config_trace_v3_SkyWalkingConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_GrpcService*);
}
-UPB_INLINE bool envoy_config_trace_v3_SkyWalkingConfig_has_client_config(const envoy_config_trace_v3_SkyWalkingConfig *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_config_trace_v3_SkyWalkingConfig_has_client_config(const envoy_config_trace_v3_SkyWalkingConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_trace_v3_SkyWalkingConfig_clear_client_config(const envoy_config_trace_v3_SkyWalkingConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_trace_v3_ClientConfig* envoy_config_trace_v3_SkyWalkingConfig_client_config(const envoy_config_trace_v3_SkyWalkingConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const envoy_config_trace_v3_ClientConfig*);
}
@@ -77,7 +91,7 @@ UPB_INLINE void envoy_config_trace_v3_SkyWalkingConfig_set_grpc_service(envoy_co
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_GrpcService*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_SkyWalkingConfig_mutable_grpc_service(envoy_config_trace_v3_SkyWalkingConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_GrpcService* envoy_config_trace_v3_SkyWalkingConfig_mutable_grpc_service(envoy_config_trace_v3_SkyWalkingConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_GrpcService* sub = (struct envoy_config_core_v3_GrpcService*)envoy_config_trace_v3_SkyWalkingConfig_grpc_service(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_GrpcService*)_upb_Message_New(&envoy_config_core_v3_GrpcService_msginit, arena);
@@ -90,7 +104,7 @@ UPB_INLINE void envoy_config_trace_v3_SkyWalkingConfig_set_client_config(envoy_c
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), envoy_config_trace_v3_ClientConfig*) = value;
}
-UPB_INLINE struct envoy_config_trace_v3_ClientConfig* envoy_config_trace_v3_SkyWalkingConfig_mutable_client_config(envoy_config_trace_v3_SkyWalkingConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_trace_v3_ClientConfig* envoy_config_trace_v3_SkyWalkingConfig_mutable_client_config(envoy_config_trace_v3_SkyWalkingConfig* msg, upb_Arena* arena) {
struct envoy_config_trace_v3_ClientConfig* sub = (struct envoy_config_trace_v3_ClientConfig*)envoy_config_trace_v3_SkyWalkingConfig_client_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_trace_v3_ClientConfig*)_upb_Message_New(&envoy_config_trace_v3_ClientConfig_msginit, arena);
@@ -125,45 +139,68 @@ UPB_INLINE envoy_config_trace_v3_ClientConfig* envoy_config_trace_v3_ClientConfi
return ret;
}
UPB_INLINE char* envoy_config_trace_v3_ClientConfig_serialize(const envoy_config_trace_v3_ClientConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_ClientConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_ClientConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_trace_v3_ClientConfig_serialize_ex(const envoy_config_trace_v3_ClientConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_ClientConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_ClientConfig_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_config_trace_v3_ClientConfig_backend_token_specifier_backend_token = 3,
envoy_config_trace_v3_ClientConfig_backend_token_specifier_NOT_SET = 0
} envoy_config_trace_v3_ClientConfig_backend_token_specifier_oneofcases;
-UPB_INLINE envoy_config_trace_v3_ClientConfig_backend_token_specifier_oneofcases envoy_config_trace_v3_ClientConfig_backend_token_specifier_case(const envoy_config_trace_v3_ClientConfig* msg) { return (envoy_config_trace_v3_ClientConfig_backend_token_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(32, 64), int32_t); }
-
+UPB_INLINE envoy_config_trace_v3_ClientConfig_backend_token_specifier_oneofcases envoy_config_trace_v3_ClientConfig_backend_token_specifier_case(const envoy_config_trace_v3_ClientConfig* msg) {
+ return (envoy_config_trace_v3_ClientConfig_backend_token_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_config_trace_v3_ClientConfig_clear_service_name(const envoy_config_trace_v3_ClientConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_trace_v3_ClientConfig_service_name(const envoy_config_trace_v3_ClientConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+}
+UPB_INLINE void envoy_config_trace_v3_ClientConfig_clear_instance_name(const envoy_config_trace_v3_ClientConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_trace_v3_ClientConfig_instance_name(const envoy_config_trace_v3_ClientConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView);
+}
+UPB_INLINE bool envoy_config_trace_v3_ClientConfig_has_backend_token(const envoy_config_trace_v3_ClientConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_config_trace_v3_ClientConfig_clear_backend_token(const envoy_config_trace_v3_ClientConfig* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_config_trace_v3_ClientConfig_backend_token_specifier_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_config_trace_v3_ClientConfig_backend_token(const envoy_config_trace_v3_ClientConfig* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 3, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_config_trace_v3_ClientConfig_has_max_cache_size(const envoy_config_trace_v3_ClientConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_trace_v3_ClientConfig_clear_max_cache_size(const envoy_config_trace_v3_ClientConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_trace_v3_ClientConfig_has_backend_token(const envoy_config_trace_v3_ClientConfig *msg) { return _upb_getoneofcase(msg, UPB_SIZE(32, 64)) == 3; }
-UPB_INLINE upb_StringView envoy_config_trace_v3_ClientConfig_backend_token(const envoy_config_trace_v3_ClientConfig *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(24, 48), UPB_SIZE(32, 64), 3, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_config_trace_v3_ClientConfig_has_max_cache_size(const envoy_config_trace_v3_ClientConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_config_trace_v3_ClientConfig_max_cache_size(const envoy_config_trace_v3_ClientConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const struct google_protobuf_UInt32Value*);
}
UPB_INLINE void envoy_config_trace_v3_ClientConfig_set_service_name(envoy_config_trace_v3_ClientConfig *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
}
UPB_INLINE void envoy_config_trace_v3_ClientConfig_set_instance_name(envoy_config_trace_v3_ClientConfig *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = value;
}
UPB_INLINE void envoy_config_trace_v3_ClientConfig_set_backend_token(envoy_config_trace_v3_ClientConfig *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(24, 48), value, UPB_SIZE(32, 64), 3);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 3);
}
UPB_INLINE void envoy_config_trace_v3_ClientConfig_set_max_cache_size(envoy_config_trace_v3_ClientConfig *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_trace_v3_ClientConfig_mutable_max_cache_size(envoy_config_trace_v3_ClientConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_config_trace_v3_ClientConfig_mutable_max_cache_size(envoy_config_trace_v3_ClientConfig* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_config_trace_v3_ClientConfig_max_cache_size(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c
index 4dd1cf20b8..df33447bb5 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c
@@ -14,6 +14,7 @@
#include "envoy/config/trace/v3/http_tracer.upb.h"
#include "envoy/config/trace/v3/lightstep.upb.h"
#include "envoy/config/trace/v3/opencensus.upb.h"
+#include "envoy/config/trace/v3/opentelemetry.upb.h"
#include "envoy/config/trace/v3/service.upb.h"
#include "envoy/config/trace/v3/zipkin.upb.h"
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h
index 8d53fd1481..58a3090624 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h
@@ -22,6 +22,7 @@
#include "envoy/config/trace/v3/trace.upb.h"
#include "envoy/config/trace/v3/trace.upb.h"
#include "envoy/config/trace/v3/trace.upb.h"
+#include "envoy/config/trace/v3/trace.upb.h"
#include "upb/port_def.inc"
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c
index fb005bb338..db06874321 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c
@@ -20,22 +20,22 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_config_trace_v3_XRayConfig_submsgs[3] = {
- {.submsg = &envoy_config_core_v3_DataSource_msginit},
{.submsg = &envoy_config_core_v3_SocketAddress_msginit},
+ {.submsg = &envoy_config_core_v3_DataSource_msginit},
{.submsg = &envoy_config_trace_v3_XRayConfig_SegmentFields_msginit},
};
static const upb_MiniTable_Field envoy_config_trace_v3_XRayConfig__fields[4] = {
- {1, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 40), 3, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_trace_v3_XRayConfig_msginit = {
&envoy_config_trace_v3_XRayConfig_submsgs[0],
&envoy_config_trace_v3_XRayConfig__fields[0],
- UPB_SIZE(24, 48), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 48), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub envoy_config_trace_v3_XRayConfig_SegmentFields_submsgs[1] = {
@@ -43,14 +43,14 @@ static const upb_MiniTable_Sub envoy_config_trace_v3_XRayConfig_SegmentFields_su
};
static const upb_MiniTable_Field envoy_config_trace_v3_XRayConfig_SegmentFields__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_trace_v3_XRayConfig_SegmentFields_msginit = {
&envoy_config_trace_v3_XRayConfig_SegmentFields_submsgs[0],
&envoy_config_trace_v3_XRayConfig_SegmentFields__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h
index a292297560..fb00760b9c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h
@@ -60,33 +60,55 @@ UPB_INLINE envoy_config_trace_v3_XRayConfig* envoy_config_trace_v3_XRayConfig_pa
return ret;
}
UPB_INLINE char* envoy_config_trace_v3_XRayConfig_serialize(const envoy_config_trace_v3_XRayConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_XRayConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_XRayConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_trace_v3_XRayConfig_serialize_ex(const envoy_config_trace_v3_XRayConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_XRayConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_XRayConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_config_trace_v3_XRayConfig_has_daemon_endpoint(const envoy_config_trace_v3_XRayConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_trace_v3_XRayConfig_clear_daemon_endpoint(const envoy_config_trace_v3_XRayConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_trace_v3_XRayConfig_has_daemon_endpoint(const envoy_config_trace_v3_XRayConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_SocketAddress* envoy_config_trace_v3_XRayConfig_daemon_endpoint(const envoy_config_trace_v3_XRayConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_SocketAddress*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_SocketAddress*);
+}
+UPB_INLINE void envoy_config_trace_v3_XRayConfig_clear_segment_name(const envoy_config_trace_v3_XRayConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_trace_v3_XRayConfig_segment_name(const envoy_config_trace_v3_XRayConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
+}
+UPB_INLINE bool envoy_config_trace_v3_XRayConfig_has_sampling_rule_manifest(const envoy_config_trace_v3_XRayConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_config_trace_v3_XRayConfig_clear_sampling_rule_manifest(const envoy_config_trace_v3_XRayConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_trace_v3_XRayConfig_has_sampling_rule_manifest(const envoy_config_trace_v3_XRayConfig *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_config_trace_v3_XRayConfig_sampling_rule_manifest(const envoy_config_trace_v3_XRayConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_config_core_v3_DataSource*);
}
-UPB_INLINE bool envoy_config_trace_v3_XRayConfig_has_segment_fields(const envoy_config_trace_v3_XRayConfig *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_config_trace_v3_XRayConfig_has_segment_fields(const envoy_config_trace_v3_XRayConfig* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_config_trace_v3_XRayConfig_clear_segment_fields(const envoy_config_trace_v3_XRayConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_config_trace_v3_XRayConfig_SegmentFields* envoy_config_trace_v3_XRayConfig_segment_fields(const envoy_config_trace_v3_XRayConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const envoy_config_trace_v3_XRayConfig_SegmentFields*);
}
UPB_INLINE void envoy_config_trace_v3_XRayConfig_set_daemon_endpoint(envoy_config_trace_v3_XRayConfig *msg, struct envoy_config_core_v3_SocketAddress* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_SocketAddress*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_SocketAddress*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_SocketAddress* envoy_config_trace_v3_XRayConfig_mutable_daemon_endpoint(envoy_config_trace_v3_XRayConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_SocketAddress* envoy_config_trace_v3_XRayConfig_mutable_daemon_endpoint(envoy_config_trace_v3_XRayConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_SocketAddress* sub = (struct envoy_config_core_v3_SocketAddress*)envoy_config_trace_v3_XRayConfig_daemon_endpoint(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_SocketAddress*)_upb_Message_New(&envoy_config_core_v3_SocketAddress_msginit, arena);
@@ -96,13 +118,13 @@ UPB_INLINE struct envoy_config_core_v3_SocketAddress* envoy_config_trace_v3_XRay
return sub;
}
UPB_INLINE void envoy_config_trace_v3_XRayConfig_set_segment_name(envoy_config_trace_v3_XRayConfig *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
UPB_INLINE void envoy_config_trace_v3_XRayConfig_set_sampling_rule_manifest(envoy_config_trace_v3_XRayConfig *msg, struct envoy_config_core_v3_DataSource* value) {
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_trace_v3_XRayConfig_mutable_sampling_rule_manifest(envoy_config_trace_v3_XRayConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_config_trace_v3_XRayConfig_mutable_sampling_rule_manifest(envoy_config_trace_v3_XRayConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_config_trace_v3_XRayConfig_sampling_rule_manifest(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -115,7 +137,7 @@ UPB_INLINE void envoy_config_trace_v3_XRayConfig_set_segment_fields(envoy_config
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(20, 40), envoy_config_trace_v3_XRayConfig_SegmentFields*) = value;
}
-UPB_INLINE struct envoy_config_trace_v3_XRayConfig_SegmentFields* envoy_config_trace_v3_XRayConfig_mutable_segment_fields(envoy_config_trace_v3_XRayConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_trace_v3_XRayConfig_SegmentFields* envoy_config_trace_v3_XRayConfig_mutable_segment_fields(envoy_config_trace_v3_XRayConfig* msg, upb_Arena* arena) {
struct envoy_config_trace_v3_XRayConfig_SegmentFields* sub = (struct envoy_config_trace_v3_XRayConfig_SegmentFields*)envoy_config_trace_v3_XRayConfig_segment_fields(msg);
if (sub == NULL) {
sub = (struct envoy_config_trace_v3_XRayConfig_SegmentFields*)_upb_Message_New(&envoy_config_trace_v3_XRayConfig_SegmentFields_msginit, arena);
@@ -150,16 +172,28 @@ UPB_INLINE envoy_config_trace_v3_XRayConfig_SegmentFields* envoy_config_trace_v3
return ret;
}
UPB_INLINE char* envoy_config_trace_v3_XRayConfig_SegmentFields_serialize(const envoy_config_trace_v3_XRayConfig_SegmentFields* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_XRayConfig_SegmentFields_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_XRayConfig_SegmentFields_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_trace_v3_XRayConfig_SegmentFields_serialize_ex(const envoy_config_trace_v3_XRayConfig_SegmentFields* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_XRayConfig_SegmentFields_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_XRayConfig_SegmentFields_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_trace_v3_XRayConfig_SegmentFields_clear_origin(const envoy_config_trace_v3_XRayConfig_SegmentFields* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_trace_v3_XRayConfig_SegmentFields_origin(const envoy_config_trace_v3_XRayConfig_SegmentFields* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_config_trace_v3_XRayConfig_SegmentFields_has_aws(const envoy_config_trace_v3_XRayConfig_SegmentFields *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_config_trace_v3_XRayConfig_SegmentFields_has_aws(const envoy_config_trace_v3_XRayConfig_SegmentFields* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_trace_v3_XRayConfig_SegmentFields_clear_aws(const envoy_config_trace_v3_XRayConfig_SegmentFields* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Struct* envoy_config_trace_v3_XRayConfig_SegmentFields_aws(const envoy_config_trace_v3_XRayConfig_SegmentFields* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Struct*);
}
@@ -171,7 +205,7 @@ UPB_INLINE void envoy_config_trace_v3_XRayConfig_SegmentFields_set_aws(envoy_con
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Struct*) = value;
}
-UPB_INLINE struct google_protobuf_Struct* envoy_config_trace_v3_XRayConfig_SegmentFields_mutable_aws(envoy_config_trace_v3_XRayConfig_SegmentFields *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Struct* envoy_config_trace_v3_XRayConfig_SegmentFields_mutable_aws(envoy_config_trace_v3_XRayConfig_SegmentFields* msg, upb_Arena* arena) {
struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)envoy_config_trace_v3_XRayConfig_SegmentFields_aws(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Struct*)_upb_Message_New(&google_protobuf_Struct_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c
index 18b59a0db6..39be1f2ed6 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c
@@ -23,18 +23,18 @@ static const upb_MiniTable_Sub envoy_config_trace_v3_ZipkinConfig_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_config_trace_v3_ZipkinConfig__fields[6] = {
- {1, UPB_SIZE(12, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(20, 32), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 8), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(36, 64), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(28, 48), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 40), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_config_trace_v3_ZipkinConfig_msginit = {
&envoy_config_trace_v3_ZipkinConfig_submsgs[0],
&envoy_config_trace_v3_ZipkinConfig__fields[0],
- UPB_SIZE(40, 80), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(40, 64), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h
index 7ba78e62f2..8ee7d142b8 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h
@@ -60,46 +60,70 @@ UPB_INLINE envoy_config_trace_v3_ZipkinConfig* envoy_config_trace_v3_ZipkinConfi
return ret;
}
UPB_INLINE char* envoy_config_trace_v3_ZipkinConfig_serialize(const envoy_config_trace_v3_ZipkinConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_ZipkinConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_ZipkinConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_config_trace_v3_ZipkinConfig_serialize_ex(const envoy_config_trace_v3_ZipkinConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_config_trace_v3_ZipkinConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_config_trace_v3_ZipkinConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_clear_collector_cluster(const envoy_config_trace_v3_ZipkinConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_trace_v3_ZipkinConfig_collector_cluster(const envoy_config_trace_v3_ZipkinConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_clear_collector_endpoint(const envoy_config_trace_v3_ZipkinConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_config_trace_v3_ZipkinConfig_collector_endpoint(const envoy_config_trace_v3_ZipkinConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+}
+UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_clear_trace_id_128bit(const envoy_config_trace_v3_ZipkinConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
}
UPB_INLINE bool envoy_config_trace_v3_ZipkinConfig_trace_id_128bit(const envoy_config_trace_v3_ZipkinConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
+}
+UPB_INLINE bool envoy_config_trace_v3_ZipkinConfig_has_shared_span_context(const envoy_config_trace_v3_ZipkinConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_clear_shared_span_context(const envoy_config_trace_v3_ZipkinConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_config_trace_v3_ZipkinConfig_has_shared_span_context(const envoy_config_trace_v3_ZipkinConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_config_trace_v3_ZipkinConfig_shared_span_context(const envoy_config_trace_v3_ZipkinConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_clear_collector_endpoint_version(const envoy_config_trace_v3_ZipkinConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t envoy_config_trace_v3_ZipkinConfig_collector_endpoint_version(const envoy_config_trace_v3_ZipkinConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
+UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_clear_collector_hostname(const envoy_config_trace_v3_ZipkinConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_config_trace_v3_ZipkinConfig_collector_hostname(const envoy_config_trace_v3_ZipkinConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView);
}
UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_set_collector_cluster(envoy_config_trace_v3_ZipkinConfig *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_set_collector_endpoint(envoy_config_trace_v3_ZipkinConfig *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
}
UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_set_trace_id_128bit(envoy_config_trace_v3_ZipkinConfig *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
UPB_INLINE void envoy_config_trace_v3_ZipkinConfig_set_shared_span_context(envoy_config_trace_v3_ZipkinConfig *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(36, 64), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_config_trace_v3_ZipkinConfig_mutable_shared_span_context(envoy_config_trace_v3_ZipkinConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_config_trace_v3_ZipkinConfig_mutable_shared_span_context(envoy_config_trace_v3_ZipkinConfig* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_config_trace_v3_ZipkinConfig_shared_span_context(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c
index 1d4b023326..61c5bf4406 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c
@@ -16,13 +16,13 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_extensions_clusters_aggregate_v3_ClusterConfig__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_clusters_aggregate_v3_ClusterConfig_msginit = {
NULL,
&envoy_extensions_clusters_aggregate_v3_ClusterConfig__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h
index f06e04c5f9..f69e6f3538 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h
@@ -51,23 +51,31 @@ UPB_INLINE envoy_extensions_clusters_aggregate_v3_ClusterConfig* envoy_extension
return ret;
}
UPB_INLINE char* envoy_extensions_clusters_aggregate_v3_ClusterConfig_serialize(const envoy_extensions_clusters_aggregate_v3_ClusterConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_clusters_aggregate_v3_ClusterConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_clusters_aggregate_v3_ClusterConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_clusters_aggregate_v3_ClusterConfig_serialize_ex(const envoy_extensions_clusters_aggregate_v3_ClusterConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_clusters_aggregate_v3_ClusterConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_clusters_aggregate_v3_ClusterConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_extensions_clusters_aggregate_v3_ClusterConfig_clear_clusters(const envoy_extensions_clusters_aggregate_v3_ClusterConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE upb_StringView const* envoy_extensions_clusters_aggregate_v3_ClusterConfig_clusters(const envoy_extensions_clusters_aggregate_v3_ClusterConfig* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE upb_StringView const* envoy_extensions_clusters_aggregate_v3_ClusterConfig_clusters(const envoy_extensions_clusters_aggregate_v3_ClusterConfig *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE upb_StringView* envoy_extensions_clusters_aggregate_v3_ClusterConfig_mutable_clusters(envoy_extensions_clusters_aggregate_v3_ClusterConfig *msg, size_t *len) {
+UPB_INLINE upb_StringView* envoy_extensions_clusters_aggregate_v3_ClusterConfig_mutable_clusters(envoy_extensions_clusters_aggregate_v3_ClusterConfig* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE upb_StringView* envoy_extensions_clusters_aggregate_v3_ClusterConfig_resize_clusters(envoy_extensions_clusters_aggregate_v3_ClusterConfig *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* envoy_extensions_clusters_aggregate_v3_ClusterConfig_resize_clusters(envoy_extensions_clusters_aggregate_v3_ClusterConfig* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_extensions_clusters_aggregate_v3_ClusterConfig_add_clusters(envoy_extensions_clusters_aggregate_v3_ClusterConfig *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_extensions_clusters_aggregate_v3_ClusterConfig_add_clusters(envoy_extensions_clusters_aggregate_v3_ClusterConfig* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(3, 4), &val, arena);
}
extern const upb_MiniTable_File envoy_extensions_clusters_aggregate_v3_cluster_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c
index b0721bd41b..cba03ac027 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c
@@ -18,61 +18,61 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_extensions_filters_common_fault_v3_FaultDelay_submsgs[3] = {
- {.submsg = &envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay_msginit},
- {.submsg = &envoy_type_v3_FractionalPercent_msginit},
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_type_v3_FractionalPercent_msginit},
+ {.submsg = &envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay_msginit},
};
static const upb_MiniTable_Field envoy_extensions_filters_common_fault_v3_FaultDelay__fields[3] = {
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_common_fault_v3_FaultDelay_msginit = {
&envoy_extensions_filters_common_fault_v3_FaultDelay_submsgs[0],
&envoy_extensions_filters_common_fault_v3_FaultDelay__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
const upb_MiniTable envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_common_fault_v3_FaultRateLimit_submsgs[3] = {
{.submsg = &envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit_msginit},
- {.submsg = &envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit_msginit},
{.submsg = &envoy_type_v3_FractionalPercent_msginit},
+ {.submsg = &envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit_msginit},
};
static const upb_MiniTable_Field envoy_extensions_filters_common_fault_v3_FaultRateLimit__fields[3] = {
- {1, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_common_fault_v3_FaultRateLimit_msginit = {
&envoy_extensions_filters_common_fault_v3_FaultRateLimit_submsgs[0],
&envoy_extensions_filters_common_fault_v3_FaultRateLimit__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Field envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit_msginit = {
NULL,
&envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
const upb_MiniTable envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable *messages_layout[5] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h
index 958df36851..e9d461d592 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h
@@ -71,32 +71,56 @@ UPB_INLINE envoy_extensions_filters_common_fault_v3_FaultDelay* envoy_extensions
return ret;
}
UPB_INLINE char* envoy_extensions_filters_common_fault_v3_FaultDelay_serialize(const envoy_extensions_filters_common_fault_v3_FaultDelay* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultDelay_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultDelay_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_common_fault_v3_FaultDelay_serialize_ex(const envoy_extensions_filters_common_fault_v3_FaultDelay* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultDelay_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultDelay_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_extensions_filters_common_fault_v3_FaultDelay_fault_delay_secifier_fixed_delay = 3,
envoy_extensions_filters_common_fault_v3_FaultDelay_fault_delay_secifier_header_delay = 5,
envoy_extensions_filters_common_fault_v3_FaultDelay_fault_delay_secifier_NOT_SET = 0
} envoy_extensions_filters_common_fault_v3_FaultDelay_fault_delay_secifier_oneofcases;
-UPB_INLINE envoy_extensions_filters_common_fault_v3_FaultDelay_fault_delay_secifier_oneofcases envoy_extensions_filters_common_fault_v3_FaultDelay_fault_delay_secifier_case(const envoy_extensions_filters_common_fault_v3_FaultDelay* msg) { return (envoy_extensions_filters_common_fault_v3_FaultDelay_fault_delay_secifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool envoy_extensions_filters_common_fault_v3_FaultDelay_has_fixed_delay(const envoy_extensions_filters_common_fault_v3_FaultDelay *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const struct google_protobuf_Duration* envoy_extensions_filters_common_fault_v3_FaultDelay_fixed_delay(const envoy_extensions_filters_common_fault_v3_FaultDelay *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Duration*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
-UPB_INLINE bool envoy_extensions_filters_common_fault_v3_FaultDelay_has_percentage(const envoy_extensions_filters_common_fault_v3_FaultDelay *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_extensions_filters_common_fault_v3_FaultDelay_fault_delay_secifier_oneofcases envoy_extensions_filters_common_fault_v3_FaultDelay_fault_delay_secifier_case(const envoy_extensions_filters_common_fault_v3_FaultDelay* msg) {
+ return (envoy_extensions_filters_common_fault_v3_FaultDelay_fault_delay_secifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_extensions_filters_common_fault_v3_FaultDelay_has_fixed_delay(const envoy_extensions_filters_common_fault_v3_FaultDelay* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_extensions_filters_common_fault_v3_FaultDelay_clear_fixed_delay(const envoy_extensions_filters_common_fault_v3_FaultDelay* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Duration*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_extensions_filters_common_fault_v3_FaultDelay_fault_delay_secifier_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Duration* envoy_extensions_filters_common_fault_v3_FaultDelay_fixed_delay(const envoy_extensions_filters_common_fault_v3_FaultDelay* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Duration*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 3, NULL);
+}
+UPB_INLINE bool envoy_extensions_filters_common_fault_v3_FaultDelay_has_percentage(const envoy_extensions_filters_common_fault_v3_FaultDelay* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_common_fault_v3_FaultDelay_clear_percentage(const envoy_extensions_filters_common_fault_v3_FaultDelay* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_FractionalPercent* envoy_extensions_filters_common_fault_v3_FaultDelay_percentage(const envoy_extensions_filters_common_fault_v3_FaultDelay* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_v3_FractionalPercent*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct envoy_type_v3_FractionalPercent*);
+}
+UPB_INLINE bool envoy_extensions_filters_common_fault_v3_FaultDelay_has_header_delay(const envoy_extensions_filters_common_fault_v3_FaultDelay* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void envoy_extensions_filters_common_fault_v3_FaultDelay_clear_header_delay(const envoy_extensions_filters_common_fault_v3_FaultDelay* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_extensions_filters_common_fault_v3_FaultDelay_fault_delay_secifier_NOT_SET);
+}
+UPB_INLINE const envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay* envoy_extensions_filters_common_fault_v3_FaultDelay_header_delay(const envoy_extensions_filters_common_fault_v3_FaultDelay* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 5, NULL);
}
-UPB_INLINE bool envoy_extensions_filters_common_fault_v3_FaultDelay_has_header_delay(const envoy_extensions_filters_common_fault_v3_FaultDelay *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 5; }
-UPB_INLINE const envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay* envoy_extensions_filters_common_fault_v3_FaultDelay_header_delay(const envoy_extensions_filters_common_fault_v3_FaultDelay *msg) { return UPB_READ_ONEOF(msg, const envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 5, NULL); }
UPB_INLINE void envoy_extensions_filters_common_fault_v3_FaultDelay_set_fixed_delay(envoy_extensions_filters_common_fault_v3_FaultDelay *msg, struct google_protobuf_Duration* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Duration*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Duration*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_common_fault_v3_FaultDelay_mutable_fixed_delay(envoy_extensions_filters_common_fault_v3_FaultDelay *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_common_fault_v3_FaultDelay_mutable_fixed_delay(envoy_extensions_filters_common_fault_v3_FaultDelay* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_extensions_filters_common_fault_v3_FaultDelay_fixed_delay(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -107,9 +131,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_common_faul
}
UPB_INLINE void envoy_extensions_filters_common_fault_v3_FaultDelay_set_percentage(envoy_extensions_filters_common_fault_v3_FaultDelay *msg, struct envoy_type_v3_FractionalPercent* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_v3_FractionalPercent*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct envoy_type_v3_FractionalPercent*) = value;
}
-UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_extensions_filters_common_fault_v3_FaultDelay_mutable_percentage(envoy_extensions_filters_common_fault_v3_FaultDelay *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_extensions_filters_common_fault_v3_FaultDelay_mutable_percentage(envoy_extensions_filters_common_fault_v3_FaultDelay* msg, upb_Arena* arena) {
struct envoy_type_v3_FractionalPercent* sub = (struct envoy_type_v3_FractionalPercent*)envoy_extensions_filters_common_fault_v3_FaultDelay_percentage(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_FractionalPercent*)_upb_Message_New(&envoy_type_v3_FractionalPercent_msginit, arena);
@@ -119,9 +143,9 @@ UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_extensions_filters_comm
return sub;
}
UPB_INLINE void envoy_extensions_filters_common_fault_v3_FaultDelay_set_header_delay(envoy_extensions_filters_common_fault_v3_FaultDelay *msg, envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay* value) {
- UPB_WRITE_ONEOF(msg, envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 5);
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 5);
}
-UPB_INLINE struct envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay* envoy_extensions_filters_common_fault_v3_FaultDelay_mutable_header_delay(envoy_extensions_filters_common_fault_v3_FaultDelay *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay* envoy_extensions_filters_common_fault_v3_FaultDelay_mutable_header_delay(envoy_extensions_filters_common_fault_v3_FaultDelay* msg, upb_Arena* arena) {
struct envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay* sub = (struct envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay*)envoy_extensions_filters_common_fault_v3_FaultDelay_header_delay(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay*)_upb_Message_New(&envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay_msginit, arena);
@@ -156,11 +180,15 @@ UPB_INLINE envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay* envo
return ret;
}
UPB_INLINE char* envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay_serialize(const envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay_serialize_ex(const envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultDelay_HeaderDelay_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -189,32 +217,56 @@ UPB_INLINE envoy_extensions_filters_common_fault_v3_FaultRateLimit* envoy_extens
return ret;
}
UPB_INLINE char* envoy_extensions_filters_common_fault_v3_FaultRateLimit_serialize(const envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultRateLimit_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultRateLimit_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_common_fault_v3_FaultRateLimit_serialize_ex(const envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultRateLimit_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultRateLimit_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_extensions_filters_common_fault_v3_FaultRateLimit_limit_type_fixed_limit = 1,
envoy_extensions_filters_common_fault_v3_FaultRateLimit_limit_type_header_limit = 3,
envoy_extensions_filters_common_fault_v3_FaultRateLimit_limit_type_NOT_SET = 0
} envoy_extensions_filters_common_fault_v3_FaultRateLimit_limit_type_oneofcases;
-UPB_INLINE envoy_extensions_filters_common_fault_v3_FaultRateLimit_limit_type_oneofcases envoy_extensions_filters_common_fault_v3_FaultRateLimit_limit_type_case(const envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg) { return (envoy_extensions_filters_common_fault_v3_FaultRateLimit_limit_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool envoy_extensions_filters_common_fault_v3_FaultRateLimit_has_fixed_limit(const envoy_extensions_filters_common_fault_v3_FaultRateLimit *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 1; }
-UPB_INLINE const envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit* envoy_extensions_filters_common_fault_v3_FaultRateLimit_fixed_limit(const envoy_extensions_filters_common_fault_v3_FaultRateLimit *msg) { return UPB_READ_ONEOF(msg, const envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 1, NULL); }
-UPB_INLINE bool envoy_extensions_filters_common_fault_v3_FaultRateLimit_has_percentage(const envoy_extensions_filters_common_fault_v3_FaultRateLimit *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_extensions_filters_common_fault_v3_FaultRateLimit_limit_type_oneofcases envoy_extensions_filters_common_fault_v3_FaultRateLimit_limit_type_case(const envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg) {
+ return (envoy_extensions_filters_common_fault_v3_FaultRateLimit_limit_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_extensions_filters_common_fault_v3_FaultRateLimit_has_fixed_limit(const envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 1;
+}
+UPB_INLINE void envoy_extensions_filters_common_fault_v3_FaultRateLimit_clear_fixed_limit(const envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_extensions_filters_common_fault_v3_FaultRateLimit_limit_type_NOT_SET);
+}
+UPB_INLINE const envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit* envoy_extensions_filters_common_fault_v3_FaultRateLimit_fixed_limit(const envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 1, NULL);
+}
+UPB_INLINE bool envoy_extensions_filters_common_fault_v3_FaultRateLimit_has_percentage(const envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_common_fault_v3_FaultRateLimit_clear_percentage(const envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_FractionalPercent* envoy_extensions_filters_common_fault_v3_FaultRateLimit_percentage(const envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_v3_FractionalPercent*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct envoy_type_v3_FractionalPercent*);
+}
+UPB_INLINE bool envoy_extensions_filters_common_fault_v3_FaultRateLimit_has_header_limit(const envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_extensions_filters_common_fault_v3_FaultRateLimit_clear_header_limit(const envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_extensions_filters_common_fault_v3_FaultRateLimit_limit_type_NOT_SET);
+}
+UPB_INLINE const envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit* envoy_extensions_filters_common_fault_v3_FaultRateLimit_header_limit(const envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 3, NULL);
}
-UPB_INLINE bool envoy_extensions_filters_common_fault_v3_FaultRateLimit_has_header_limit(const envoy_extensions_filters_common_fault_v3_FaultRateLimit *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit* envoy_extensions_filters_common_fault_v3_FaultRateLimit_header_limit(const envoy_extensions_filters_common_fault_v3_FaultRateLimit *msg) { return UPB_READ_ONEOF(msg, const envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void envoy_extensions_filters_common_fault_v3_FaultRateLimit_set_fixed_limit(envoy_extensions_filters_common_fault_v3_FaultRateLimit *msg, envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit* value) {
- UPB_WRITE_ONEOF(msg, envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 1);
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 1);
}
-UPB_INLINE struct envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit* envoy_extensions_filters_common_fault_v3_FaultRateLimit_mutable_fixed_limit(envoy_extensions_filters_common_fault_v3_FaultRateLimit *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit* envoy_extensions_filters_common_fault_v3_FaultRateLimit_mutable_fixed_limit(envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg, upb_Arena* arena) {
struct envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit* sub = (struct envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit*)envoy_extensions_filters_common_fault_v3_FaultRateLimit_fixed_limit(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit*)_upb_Message_New(&envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit_msginit, arena);
@@ -225,9 +277,9 @@ UPB_INLINE struct envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedL
}
UPB_INLINE void envoy_extensions_filters_common_fault_v3_FaultRateLimit_set_percentage(envoy_extensions_filters_common_fault_v3_FaultRateLimit *msg, struct envoy_type_v3_FractionalPercent* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_v3_FractionalPercent*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct envoy_type_v3_FractionalPercent*) = value;
}
-UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_extensions_filters_common_fault_v3_FaultRateLimit_mutable_percentage(envoy_extensions_filters_common_fault_v3_FaultRateLimit *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_extensions_filters_common_fault_v3_FaultRateLimit_mutable_percentage(envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg, upb_Arena* arena) {
struct envoy_type_v3_FractionalPercent* sub = (struct envoy_type_v3_FractionalPercent*)envoy_extensions_filters_common_fault_v3_FaultRateLimit_percentage(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_FractionalPercent*)_upb_Message_New(&envoy_type_v3_FractionalPercent_msginit, arena);
@@ -237,9 +289,9 @@ UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_extensions_filters_comm
return sub;
}
UPB_INLINE void envoy_extensions_filters_common_fault_v3_FaultRateLimit_set_header_limit(envoy_extensions_filters_common_fault_v3_FaultRateLimit *msg, envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit* value) {
- UPB_WRITE_ONEOF(msg, envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit* envoy_extensions_filters_common_fault_v3_FaultRateLimit_mutable_header_limit(envoy_extensions_filters_common_fault_v3_FaultRateLimit *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit* envoy_extensions_filters_common_fault_v3_FaultRateLimit_mutable_header_limit(envoy_extensions_filters_common_fault_v3_FaultRateLimit* msg, upb_Arena* arena) {
struct envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit* sub = (struct envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit*)envoy_extensions_filters_common_fault_v3_FaultRateLimit_header_limit(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit*)_upb_Message_New(&envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit_msginit, arena);
@@ -274,11 +326,18 @@ UPB_INLINE envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit* e
return ret;
}
UPB_INLINE char* envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit_serialize(const envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit_serialize_ex(const envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit_clear_limit_kbps(const envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint64_t) = 0;
}
UPB_INLINE uint64_t envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit_limit_kbps(const envoy_extensions_filters_common_fault_v3_FaultRateLimit_FixedLimit* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint64_t);
@@ -313,11 +372,15 @@ UPB_INLINE envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit*
return ret;
}
UPB_INLINE char* envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit_serialize(const envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit_serialize_ex(const envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_common_fault_v3_FaultRateLimit_HeaderLimit_msginit, options, arena, &ptr, len);
+ return ptr;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c
index d22d02d105..c8bb2b5dbb 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c
@@ -20,59 +20,59 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_extensions_filters_http_fault_v3_FaultAbort_submsgs[2] = {
- {.submsg = &envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort_msginit},
{.submsg = &envoy_type_v3_FractionalPercent_msginit},
+ {.submsg = &envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort_msginit},
};
static const upb_MiniTable_Field envoy_extensions_filters_http_fault_v3_FaultAbort__fields[4] = {
- {2, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(-5, -5), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 16), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(8, 16), UPB_SIZE(-5, -5), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_http_fault_v3_FaultAbort_msginit = {
&envoy_extensions_filters_http_fault_v3_FaultAbort_submsgs[0],
&envoy_extensions_filters_http_fault_v3_FaultAbort__fields[0],
- UPB_SIZE(16, 32), 4, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(16, 24), 4, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
const upb_MiniTable envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_http_fault_v3_HTTPFault_submsgs[5] = {
- {.submsg = &envoy_config_route_v3_HeaderMatcher_msginit},
{.submsg = &envoy_extensions_filters_common_fault_v3_FaultDelay_msginit},
- {.submsg = &envoy_extensions_filters_common_fault_v3_FaultRateLimit_msginit},
{.submsg = &envoy_extensions_filters_http_fault_v3_FaultAbort_msginit},
+ {.submsg = &envoy_config_route_v3_HeaderMatcher_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_extensions_filters_common_fault_v3_FaultRateLimit_msginit},
};
static const upb_MiniTable_Field envoy_extensions_filters_http_fault_v3_HTTPFault__fields[15] = {
- {1, UPB_SIZE(68, 136), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(72, 144), 2, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(84, 168), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(88, 176), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(76, 152), 3, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(80, 160), 4, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {9, UPB_SIZE(20, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {10, UPB_SIZE(28, 56), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {11, UPB_SIZE(36, 72), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {12, UPB_SIZE(44, 88), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {13, UPB_SIZE(52, 104), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {14, UPB_SIZE(60, 120), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {15, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 56), UPB_SIZE(3, 3), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(32, 64), UPB_SIZE(4, 4), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(36, 72), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(44, 88), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(52, 104), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(60, 120), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(68, 136), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(76, 152), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(84, 168), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_http_fault_v3_HTTPFault_msginit = {
&envoy_extensions_filters_http_fault_v3_HTTPFault_submsgs[0],
&envoy_extensions_filters_http_fault_v3_HTTPFault__fields[0],
- UPB_SIZE(96, 192), 15, upb_ExtMode_NonExtendable, 15, 255, 0,
+ UPB_SIZE(96, 184), 15, kUpb_ExtMode_NonExtendable, 15, 255, 0,
};
static const upb_MiniTable *messages_layout[3] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h
index 62737d9966..4a106be1de 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h
@@ -67,11 +67,15 @@ UPB_INLINE envoy_extensions_filters_http_fault_v3_FaultAbort* envoy_extensions_f
return ret;
}
UPB_INLINE char* envoy_extensions_filters_http_fault_v3_FaultAbort_serialize(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_http_fault_v3_FaultAbort_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_http_fault_v3_FaultAbort_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_http_fault_v3_FaultAbort_serialize_ex(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_http_fault_v3_FaultAbort_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_http_fault_v3_FaultAbort_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_extensions_filters_http_fault_v3_FaultAbort_error_type_http_status = 2,
@@ -79,27 +83,54 @@ typedef enum {
envoy_extensions_filters_http_fault_v3_FaultAbort_error_type_header_abort = 4,
envoy_extensions_filters_http_fault_v3_FaultAbort_error_type_NOT_SET = 0
} envoy_extensions_filters_http_fault_v3_FaultAbort_error_type_oneofcases;
-UPB_INLINE envoy_extensions_filters_http_fault_v3_FaultAbort_error_type_oneofcases envoy_extensions_filters_http_fault_v3_FaultAbort_error_type_case(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg) { return (envoy_extensions_filters_http_fault_v3_FaultAbort_error_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool envoy_extensions_filters_http_fault_v3_FaultAbort_has_http_status(const envoy_extensions_filters_http_fault_v3_FaultAbort *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE uint32_t envoy_extensions_filters_http_fault_v3_FaultAbort_http_status(const envoy_extensions_filters_http_fault_v3_FaultAbort *msg) { return UPB_READ_ONEOF(msg, uint32_t, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 2, 0); }
-UPB_INLINE bool envoy_extensions_filters_http_fault_v3_FaultAbort_has_percentage(const envoy_extensions_filters_http_fault_v3_FaultAbort *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_extensions_filters_http_fault_v3_FaultAbort_error_type_oneofcases envoy_extensions_filters_http_fault_v3_FaultAbort_error_type_case(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg) {
+ return (envoy_extensions_filters_http_fault_v3_FaultAbort_error_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_extensions_filters_http_fault_v3_FaultAbort_has_http_status(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_FaultAbort_clear_http_status(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg) {
+ UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(8, 16), 0, UPB_SIZE(4, 4), envoy_extensions_filters_http_fault_v3_FaultAbort_error_type_NOT_SET);
+}
+UPB_INLINE uint32_t envoy_extensions_filters_http_fault_v3_FaultAbort_http_status(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg) {
+ return UPB_READ_ONEOF(msg, uint32_t, UPB_SIZE(8, 16), UPB_SIZE(4, 4), 2, _upb_UInt32_FromU(0u));
+}
+UPB_INLINE bool envoy_extensions_filters_http_fault_v3_FaultAbort_has_percentage(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_FaultAbort_clear_percentage(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_FractionalPercent* envoy_extensions_filters_http_fault_v3_FaultAbort_percentage(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_v3_FractionalPercent*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 8), const struct envoy_type_v3_FractionalPercent*);
+}
+UPB_INLINE bool envoy_extensions_filters_http_fault_v3_FaultAbort_has_header_abort(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 4;
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_FaultAbort_clear_header_abort(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort*, UPB_SIZE(8, 16), 0, UPB_SIZE(4, 4), envoy_extensions_filters_http_fault_v3_FaultAbort_error_type_NOT_SET);
+}
+UPB_INLINE const envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort* envoy_extensions_filters_http_fault_v3_FaultAbort_header_abort(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort*, UPB_SIZE(8, 16), UPB_SIZE(4, 4), 4, NULL);
+}
+UPB_INLINE bool envoy_extensions_filters_http_fault_v3_FaultAbort_has_grpc_status(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_FaultAbort_clear_grpc_status(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg) {
+ UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(8, 16), 0, UPB_SIZE(4, 4), envoy_extensions_filters_http_fault_v3_FaultAbort_error_type_NOT_SET);
+}
+UPB_INLINE uint32_t envoy_extensions_filters_http_fault_v3_FaultAbort_grpc_status(const envoy_extensions_filters_http_fault_v3_FaultAbort* msg) {
+ return UPB_READ_ONEOF(msg, uint32_t, UPB_SIZE(8, 16), UPB_SIZE(4, 4), 5, _upb_UInt32_FromU(0u));
}
-UPB_INLINE bool envoy_extensions_filters_http_fault_v3_FaultAbort_has_header_abort(const envoy_extensions_filters_http_fault_v3_FaultAbort *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 4; }
-UPB_INLINE const envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort* envoy_extensions_filters_http_fault_v3_FaultAbort_header_abort(const envoy_extensions_filters_http_fault_v3_FaultAbort *msg) { return UPB_READ_ONEOF(msg, const envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 4, NULL); }
-UPB_INLINE bool envoy_extensions_filters_http_fault_v3_FaultAbort_has_grpc_status(const envoy_extensions_filters_http_fault_v3_FaultAbort *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 5; }
-UPB_INLINE uint32_t envoy_extensions_filters_http_fault_v3_FaultAbort_grpc_status(const envoy_extensions_filters_http_fault_v3_FaultAbort *msg) { return UPB_READ_ONEOF(msg, uint32_t, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 5, 0); }
UPB_INLINE void envoy_extensions_filters_http_fault_v3_FaultAbort_set_http_status(envoy_extensions_filters_http_fault_v3_FaultAbort *msg, uint32_t value) {
- UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(8, 16), value, UPB_SIZE(4, 4), 2);
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_FaultAbort_set_percentage(envoy_extensions_filters_http_fault_v3_FaultAbort *msg, struct envoy_type_v3_FractionalPercent* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_v3_FractionalPercent*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 8), struct envoy_type_v3_FractionalPercent*) = value;
}
-UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_extensions_filters_http_fault_v3_FaultAbort_mutable_percentage(envoy_extensions_filters_http_fault_v3_FaultAbort *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_extensions_filters_http_fault_v3_FaultAbort_mutable_percentage(envoy_extensions_filters_http_fault_v3_FaultAbort* msg, upb_Arena* arena) {
struct envoy_type_v3_FractionalPercent* sub = (struct envoy_type_v3_FractionalPercent*)envoy_extensions_filters_http_fault_v3_FaultAbort_percentage(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_FractionalPercent*)_upb_Message_New(&envoy_type_v3_FractionalPercent_msginit, arena);
@@ -109,9 +140,9 @@ UPB_INLINE struct envoy_type_v3_FractionalPercent* envoy_extensions_filters_http
return sub;
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_FaultAbort_set_header_abort(envoy_extensions_filters_http_fault_v3_FaultAbort *msg, envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort* value) {
- UPB_WRITE_ONEOF(msg, envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 4);
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort*, UPB_SIZE(8, 16), value, UPB_SIZE(4, 4), 4);
}
-UPB_INLINE struct envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort* envoy_extensions_filters_http_fault_v3_FaultAbort_mutable_header_abort(envoy_extensions_filters_http_fault_v3_FaultAbort *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort* envoy_extensions_filters_http_fault_v3_FaultAbort_mutable_header_abort(envoy_extensions_filters_http_fault_v3_FaultAbort* msg, upb_Arena* arena) {
struct envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort* sub = (struct envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort*)envoy_extensions_filters_http_fault_v3_FaultAbort_header_abort(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort*)_upb_Message_New(&envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort_msginit, arena);
@@ -121,7 +152,7 @@ UPB_INLINE struct envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort*
return sub;
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_FaultAbort_set_grpc_status(envoy_extensions_filters_http_fault_v3_FaultAbort *msg, uint32_t value) {
- UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 5);
+ UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(8, 16), value, UPB_SIZE(4, 4), 5);
}
/* envoy.extensions.filters.http.fault.v3.FaultAbort.HeaderAbort */
@@ -149,11 +180,15 @@ UPB_INLINE envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort* envoy_
return ret;
}
UPB_INLINE char* envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort_serialize(const envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort_serialize_ex(const envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_http_fault_v3_FaultAbort_HeaderAbort_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -182,54 +217,117 @@ UPB_INLINE envoy_extensions_filters_http_fault_v3_HTTPFault* envoy_extensions_fi
return ret;
}
UPB_INLINE char* envoy_extensions_filters_http_fault_v3_HTTPFault_serialize(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_http_fault_v3_HTTPFault_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_http_fault_v3_HTTPFault_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_http_fault_v3_HTTPFault_serialize_ex(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_http_fault_v3_HTTPFault_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_http_fault_v3_HTTPFault_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_http_fault_v3_HTTPFault_has_delay(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_delay(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_http_fault_v3_HTTPFault_has_delay(const envoy_extensions_filters_http_fault_v3_HTTPFault *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_extensions_filters_common_fault_v3_FaultDelay* envoy_extensions_filters_http_fault_v3_HTTPFault_delay(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(68, 136), const struct envoy_extensions_filters_common_fault_v3_FaultDelay*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_extensions_filters_common_fault_v3_FaultDelay*);
+}
+UPB_INLINE bool envoy_extensions_filters_http_fault_v3_HTTPFault_has_abort(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_abort(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_http_fault_v3_HTTPFault_has_abort(const envoy_extensions_filters_http_fault_v3_HTTPFault *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const envoy_extensions_filters_http_fault_v3_FaultAbort* envoy_extensions_filters_http_fault_v3_HTTPFault_abort(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(72, 144), const envoy_extensions_filters_http_fault_v3_FaultAbort*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const envoy_extensions_filters_http_fault_v3_FaultAbort*);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_upstream_cluster(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_http_fault_v3_HTTPFault_upstream_cluster(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+}
+UPB_INLINE bool envoy_extensions_filters_http_fault_v3_HTTPFault_has_headers(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_headers(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE const struct envoy_config_route_v3_HeaderMatcher* const* envoy_extensions_filters_http_fault_v3_HTTPFault_headers(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg, size_t* len) {
+ return (const struct envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_downstream_nodes(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE upb_StringView const* envoy_extensions_filters_http_fault_v3_HTTPFault_downstream_nodes(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len);
+}
+UPB_INLINE bool envoy_extensions_filters_http_fault_v3_HTTPFault_has_max_active_faults(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_max_active_faults(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_http_fault_v3_HTTPFault_has_headers(const envoy_extensions_filters_http_fault_v3_HTTPFault *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(84, 168)); }
-UPB_INLINE const struct envoy_config_route_v3_HeaderMatcher* const* envoy_extensions_filters_http_fault_v3_HTTPFault_headers(const envoy_extensions_filters_http_fault_v3_HTTPFault *msg, size_t *len) { return (const struct envoy_config_route_v3_HeaderMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(84, 168), len); }
-UPB_INLINE upb_StringView const* envoy_extensions_filters_http_fault_v3_HTTPFault_downstream_nodes(const envoy_extensions_filters_http_fault_v3_HTTPFault *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(88, 176), len); }
-UPB_INLINE bool envoy_extensions_filters_http_fault_v3_HTTPFault_has_max_active_faults(const envoy_extensions_filters_http_fault_v3_HTTPFault *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_extensions_filters_http_fault_v3_HTTPFault_max_active_faults(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(76, 152), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_extensions_filters_http_fault_v3_HTTPFault_has_response_rate_limit(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_response_rate_limit(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_http_fault_v3_HTTPFault_has_response_rate_limit(const envoy_extensions_filters_http_fault_v3_HTTPFault *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const struct envoy_extensions_filters_common_fault_v3_FaultRateLimit* envoy_extensions_filters_http_fault_v3_HTTPFault_response_rate_limit(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(80, 160), const struct envoy_extensions_filters_common_fault_v3_FaultRateLimit*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const struct envoy_extensions_filters_common_fault_v3_FaultRateLimit*);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_delay_percent_runtime(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_http_fault_v3_HTTPFault_delay_percent_runtime(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 72), upb_StringView);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_abort_percent_runtime(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 88), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_http_fault_v3_HTTPFault_abort_percent_runtime(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 88), upb_StringView);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_delay_duration_runtime(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 104), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_http_fault_v3_HTTPFault_delay_duration_runtime(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(52, 104), upb_StringView);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_abort_http_status_runtime(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 120), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_http_fault_v3_HTTPFault_abort_http_status_runtime(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(36, 72), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(60, 120), upb_StringView);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_max_active_faults_runtime(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 136), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_http_fault_v3_HTTPFault_max_active_faults_runtime(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(44, 88), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(68, 136), upb_StringView);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_response_rate_limit_percent_runtime(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 152), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_http_fault_v3_HTTPFault_response_rate_limit_percent_runtime(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(52, 104), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(76, 152), upb_StringView);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_abort_grpc_status_runtime(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(84, 168), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_http_fault_v3_HTTPFault_abort_grpc_status_runtime(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(60, 120), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(84, 168), upb_StringView);
+}
+UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_clear_disable_downstream_cluster_stats(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
}
UPB_INLINE bool envoy_extensions_filters_http_fault_v3_HTTPFault_disable_downstream_cluster_stats(const envoy_extensions_filters_http_fault_v3_HTTPFault* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
@@ -237,9 +335,9 @@ UPB_INLINE bool envoy_extensions_filters_http_fault_v3_HTTPFault_disable_downstr
UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_set_delay(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, struct envoy_extensions_filters_common_fault_v3_FaultDelay* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(68, 136), struct envoy_extensions_filters_common_fault_v3_FaultDelay*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_extensions_filters_common_fault_v3_FaultDelay*) = value;
}
-UPB_INLINE struct envoy_extensions_filters_common_fault_v3_FaultDelay* envoy_extensions_filters_http_fault_v3_HTTPFault_mutable_delay(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_common_fault_v3_FaultDelay* envoy_extensions_filters_http_fault_v3_HTTPFault_mutable_delay(envoy_extensions_filters_http_fault_v3_HTTPFault* msg, upb_Arena* arena) {
struct envoy_extensions_filters_common_fault_v3_FaultDelay* sub = (struct envoy_extensions_filters_common_fault_v3_FaultDelay*)envoy_extensions_filters_http_fault_v3_HTTPFault_delay(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_common_fault_v3_FaultDelay*)_upb_Message_New(&envoy_extensions_filters_common_fault_v3_FaultDelay_msginit, arena);
@@ -250,9 +348,9 @@ UPB_INLINE struct envoy_extensions_filters_common_fault_v3_FaultDelay* envoy_ext
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_set_abort(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, envoy_extensions_filters_http_fault_v3_FaultAbort* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(72, 144), envoy_extensions_filters_http_fault_v3_FaultAbort*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), envoy_extensions_filters_http_fault_v3_FaultAbort*) = value;
}
-UPB_INLINE struct envoy_extensions_filters_http_fault_v3_FaultAbort* envoy_extensions_filters_http_fault_v3_HTTPFault_mutable_abort(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_http_fault_v3_FaultAbort* envoy_extensions_filters_http_fault_v3_HTTPFault_mutable_abort(envoy_extensions_filters_http_fault_v3_HTTPFault* msg, upb_Arena* arena) {
struct envoy_extensions_filters_http_fault_v3_FaultAbort* sub = (struct envoy_extensions_filters_http_fault_v3_FaultAbort*)envoy_extensions_filters_http_fault_v3_HTTPFault_abort(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_http_fault_v3_FaultAbort*)_upb_Message_New(&envoy_extensions_filters_http_fault_v3_FaultAbort_msginit, arena);
@@ -262,36 +360,34 @@ UPB_INLINE struct envoy_extensions_filters_http_fault_v3_FaultAbort* envoy_exten
return sub;
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_set_upstream_cluster(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher** envoy_extensions_filters_http_fault_v3_HTTPFault_mutable_headers(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, size_t *len) {
- return (struct envoy_config_route_v3_HeaderMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(84, 168), len);
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher** envoy_extensions_filters_http_fault_v3_HTTPFault_mutable_headers(envoy_extensions_filters_http_fault_v3_HTTPFault* msg, size_t* len) {
+ return (struct envoy_config_route_v3_HeaderMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher** envoy_extensions_filters_http_fault_v3_HTTPFault_resize_headers(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_route_v3_HeaderMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(84, 168), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher** envoy_extensions_filters_http_fault_v3_HTTPFault_resize_headers(envoy_extensions_filters_http_fault_v3_HTTPFault* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_route_v3_HeaderMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_extensions_filters_http_fault_v3_HTTPFault_add_headers(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_HeaderMatcher* envoy_extensions_filters_http_fault_v3_HTTPFault_add_headers(envoy_extensions_filters_http_fault_v3_HTTPFault* msg, upb_Arena* arena) {
struct envoy_config_route_v3_HeaderMatcher* sub = (struct envoy_config_route_v3_HeaderMatcher*)_upb_Message_New(&envoy_config_route_v3_HeaderMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(84, 168), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE upb_StringView* envoy_extensions_filters_http_fault_v3_HTTPFault_mutable_downstream_nodes(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(88, 176), len);
+UPB_INLINE upb_StringView* envoy_extensions_filters_http_fault_v3_HTTPFault_mutable_downstream_nodes(envoy_extensions_filters_http_fault_v3_HTTPFault* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
}
-UPB_INLINE upb_StringView* envoy_extensions_filters_http_fault_v3_HTTPFault_resize_downstream_nodes(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(88, 176), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_extensions_filters_http_fault_v3_HTTPFault_resize_downstream_nodes(envoy_extensions_filters_http_fault_v3_HTTPFault* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_extensions_filters_http_fault_v3_HTTPFault_add_downstream_nodes(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(88, 176), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_extensions_filters_http_fault_v3_HTTPFault_add_downstream_nodes(envoy_extensions_filters_http_fault_v3_HTTPFault* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 48), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_set_max_active_faults(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(76, 152), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_filters_http_fault_v3_HTTPFault_mutable_max_active_faults(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_filters_http_fault_v3_HTTPFault_mutable_max_active_faults(envoy_extensions_filters_http_fault_v3_HTTPFault* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_extensions_filters_http_fault_v3_HTTPFault_max_active_faults(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -302,9 +398,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_filters_http_fau
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_set_response_rate_limit(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, struct envoy_extensions_filters_common_fault_v3_FaultRateLimit* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(80, 160), struct envoy_extensions_filters_common_fault_v3_FaultRateLimit*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), struct envoy_extensions_filters_common_fault_v3_FaultRateLimit*) = value;
}
-UPB_INLINE struct envoy_extensions_filters_common_fault_v3_FaultRateLimit* envoy_extensions_filters_http_fault_v3_HTTPFault_mutable_response_rate_limit(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_common_fault_v3_FaultRateLimit* envoy_extensions_filters_http_fault_v3_HTTPFault_mutable_response_rate_limit(envoy_extensions_filters_http_fault_v3_HTTPFault* msg, upb_Arena* arena) {
struct envoy_extensions_filters_common_fault_v3_FaultRateLimit* sub = (struct envoy_extensions_filters_common_fault_v3_FaultRateLimit*)envoy_extensions_filters_http_fault_v3_HTTPFault_response_rate_limit(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_common_fault_v3_FaultRateLimit*)_upb_Message_New(&envoy_extensions_filters_common_fault_v3_FaultRateLimit_msginit, arena);
@@ -314,25 +410,25 @@ UPB_INLINE struct envoy_extensions_filters_common_fault_v3_FaultRateLimit* envoy
return sub;
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_set_delay_percent_runtime(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_set_abort_percent_runtime(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 88), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_set_delay_duration_runtime(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 104), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_set_abort_http_status_runtime(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(36, 72), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 120), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_set_max_active_faults_runtime(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(44, 88), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 136), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_set_response_rate_limit_percent_runtime(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(52, 104), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 152), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_set_abort_grpc_status_runtime(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(60, 120), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(84, 168), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_filters_http_fault_v3_HTTPFault_set_disable_downstream_cluster_stats(envoy_extensions_filters_http_fault_v3_HTTPFault *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c
index 543303dabe..767e2f03d2 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c
@@ -10,25 +10,33 @@
#include "upb/msg_internal.h"
#include "envoy/extensions/filters/http/rbac/v3/rbac.upb.h"
#include "envoy/config/rbac/v3/rbac.upb.h"
+#include "xds/annotations/v3/status.upb.h"
+#include "xds/type/matcher/v3/matcher.upb.h"
+#include "udpa/annotations/migrate.upb.h"
#include "udpa/annotations/status.upb.h"
#include "udpa/annotations/versioning.upb.h"
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_extensions_filters_http_rbac_v3_RBAC_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_extensions_filters_http_rbac_v3_RBAC_submsgs[4] = {
{.submsg = &envoy_config_rbac_v3_RBAC_msginit},
+ {.submsg = &envoy_config_rbac_v3_RBAC_msginit},
+ {.submsg = &xds_type_matcher_v3_Matcher_msginit},
+ {.submsg = &xds_type_matcher_v3_Matcher_msginit},
};
-static const upb_MiniTable_Field envoy_extensions_filters_http_rbac_v3_RBAC__fields[3] = {
- {1, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_extensions_filters_http_rbac_v3_RBAC__fields[5] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 48), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_http_rbac_v3_RBAC_msginit = {
&envoy_extensions_filters_http_rbac_v3_RBAC_submsgs[0],
&envoy_extensions_filters_http_rbac_v3_RBAC__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(32, 56), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_http_rbac_v3_RBACPerRoute_submsgs[1] = {
@@ -36,13 +44,13 @@ static const upb_MiniTable_Sub envoy_extensions_filters_http_rbac_v3_RBACPerRout
};
static const upb_MiniTable_Field envoy_extensions_filters_http_rbac_v3_RBACPerRoute__fields[1] = {
- {2, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_http_rbac_v3_RBACPerRoute_msginit = {
&envoy_extensions_filters_http_rbac_v3_RBACPerRoute_submsgs[0],
&envoy_extensions_filters_http_rbac_v3_RBACPerRoute__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h
index 3b49c7469e..ad8061cc5d 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h
@@ -27,7 +27,9 @@ typedef struct envoy_extensions_filters_http_rbac_v3_RBACPerRoute envoy_extensio
extern const upb_MiniTable envoy_extensions_filters_http_rbac_v3_RBAC_msginit;
extern const upb_MiniTable envoy_extensions_filters_http_rbac_v3_RBACPerRoute_msginit;
struct envoy_config_rbac_v3_RBAC;
+struct xds_type_matcher_v3_Matcher;
extern const upb_MiniTable envoy_config_rbac_v3_RBAC_msginit;
+extern const upb_MiniTable xds_type_matcher_v3_Matcher_msginit;
@@ -56,29 +58,64 @@ UPB_INLINE envoy_extensions_filters_http_rbac_v3_RBAC* envoy_extensions_filters_
return ret;
}
UPB_INLINE char* envoy_extensions_filters_http_rbac_v3_RBAC_serialize(const envoy_extensions_filters_http_rbac_v3_RBAC* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_http_rbac_v3_RBAC_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_http_rbac_v3_RBAC_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_http_rbac_v3_RBAC_serialize_ex(const envoy_extensions_filters_http_rbac_v3_RBAC* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_http_rbac_v3_RBAC_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_http_rbac_v3_RBAC_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_http_rbac_v3_RBAC_has_rules(const envoy_extensions_filters_http_rbac_v3_RBAC* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_http_rbac_v3_RBAC_clear_rules(const envoy_extensions_filters_http_rbac_v3_RBAC* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_http_rbac_v3_RBAC_has_rules(const envoy_extensions_filters_http_rbac_v3_RBAC *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_rbac_v3_RBAC* envoy_extensions_filters_http_rbac_v3_RBAC_rules(const envoy_extensions_filters_http_rbac_v3_RBAC* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_rbac_v3_RBAC*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_rbac_v3_RBAC*);
+}
+UPB_INLINE bool envoy_extensions_filters_http_rbac_v3_RBAC_has_shadow_rules(const envoy_extensions_filters_http_rbac_v3_RBAC* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_extensions_filters_http_rbac_v3_RBAC_clear_shadow_rules(const envoy_extensions_filters_http_rbac_v3_RBAC* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_http_rbac_v3_RBAC_has_shadow_rules(const envoy_extensions_filters_http_rbac_v3_RBAC *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct envoy_config_rbac_v3_RBAC* envoy_extensions_filters_http_rbac_v3_RBAC_shadow_rules(const envoy_extensions_filters_http_rbac_v3_RBAC* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_config_rbac_v3_RBAC*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_config_rbac_v3_RBAC*);
+}
+UPB_INLINE void envoy_extensions_filters_http_rbac_v3_RBAC_clear_shadow_rules_stat_prefix(const envoy_extensions_filters_http_rbac_v3_RBAC* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_http_rbac_v3_RBAC_shadow_rules_stat_prefix(const envoy_extensions_filters_http_rbac_v3_RBAC* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+}
+UPB_INLINE bool envoy_extensions_filters_http_rbac_v3_RBAC_has_matcher(const envoy_extensions_filters_http_rbac_v3_RBAC* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_extensions_filters_http_rbac_v3_RBAC_clear_matcher(const envoy_extensions_filters_http_rbac_v3_RBAC* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct xds_type_matcher_v3_Matcher* envoy_extensions_filters_http_rbac_v3_RBAC_matcher(const envoy_extensions_filters_http_rbac_v3_RBAC* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct xds_type_matcher_v3_Matcher*);
+}
+UPB_INLINE bool envoy_extensions_filters_http_rbac_v3_RBAC_has_shadow_matcher(const envoy_extensions_filters_http_rbac_v3_RBAC* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_extensions_filters_http_rbac_v3_RBAC_clear_shadow_matcher(const envoy_extensions_filters_http_rbac_v3_RBAC* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct xds_type_matcher_v3_Matcher* envoy_extensions_filters_http_rbac_v3_RBAC_shadow_matcher(const envoy_extensions_filters_http_rbac_v3_RBAC* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct xds_type_matcher_v3_Matcher*);
}
UPB_INLINE void envoy_extensions_filters_http_rbac_v3_RBAC_set_rules(envoy_extensions_filters_http_rbac_v3_RBAC *msg, struct envoy_config_rbac_v3_RBAC* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_rbac_v3_RBAC*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_rbac_v3_RBAC*) = value;
}
-UPB_INLINE struct envoy_config_rbac_v3_RBAC* envoy_extensions_filters_http_rbac_v3_RBAC_mutable_rules(envoy_extensions_filters_http_rbac_v3_RBAC *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_rbac_v3_RBAC* envoy_extensions_filters_http_rbac_v3_RBAC_mutable_rules(envoy_extensions_filters_http_rbac_v3_RBAC* msg, upb_Arena* arena) {
struct envoy_config_rbac_v3_RBAC* sub = (struct envoy_config_rbac_v3_RBAC*)envoy_extensions_filters_http_rbac_v3_RBAC_rules(msg);
if (sub == NULL) {
sub = (struct envoy_config_rbac_v3_RBAC*)_upb_Message_New(&envoy_config_rbac_v3_RBAC_msginit, arena);
@@ -89,9 +126,9 @@ UPB_INLINE struct envoy_config_rbac_v3_RBAC* envoy_extensions_filters_http_rbac_
}
UPB_INLINE void envoy_extensions_filters_http_rbac_v3_RBAC_set_shadow_rules(envoy_extensions_filters_http_rbac_v3_RBAC *msg, struct envoy_config_rbac_v3_RBAC* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_config_rbac_v3_RBAC*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_config_rbac_v3_RBAC*) = value;
}
-UPB_INLINE struct envoy_config_rbac_v3_RBAC* envoy_extensions_filters_http_rbac_v3_RBAC_mutable_shadow_rules(envoy_extensions_filters_http_rbac_v3_RBAC *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_rbac_v3_RBAC* envoy_extensions_filters_http_rbac_v3_RBAC_mutable_shadow_rules(envoy_extensions_filters_http_rbac_v3_RBAC* msg, upb_Arena* arena) {
struct envoy_config_rbac_v3_RBAC* sub = (struct envoy_config_rbac_v3_RBAC*)envoy_extensions_filters_http_rbac_v3_RBAC_shadow_rules(msg);
if (sub == NULL) {
sub = (struct envoy_config_rbac_v3_RBAC*)_upb_Message_New(&envoy_config_rbac_v3_RBAC_msginit, arena);
@@ -101,7 +138,33 @@ UPB_INLINE struct envoy_config_rbac_v3_RBAC* envoy_extensions_filters_http_rbac_
return sub;
}
UPB_INLINE void envoy_extensions_filters_http_rbac_v3_RBAC_set_shadow_rules_stat_prefix(envoy_extensions_filters_http_rbac_v3_RBAC *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+}
+UPB_INLINE void envoy_extensions_filters_http_rbac_v3_RBAC_set_matcher(envoy_extensions_filters_http_rbac_v3_RBAC *msg, struct xds_type_matcher_v3_Matcher* value) {
+ _upb_sethas(msg, 3);
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct xds_type_matcher_v3_Matcher*) = value;
+}
+UPB_INLINE struct xds_type_matcher_v3_Matcher* envoy_extensions_filters_http_rbac_v3_RBAC_mutable_matcher(envoy_extensions_filters_http_rbac_v3_RBAC* msg, upb_Arena* arena) {
+ struct xds_type_matcher_v3_Matcher* sub = (struct xds_type_matcher_v3_Matcher*)envoy_extensions_filters_http_rbac_v3_RBAC_matcher(msg);
+ if (sub == NULL) {
+ sub = (struct xds_type_matcher_v3_Matcher*)_upb_Message_New(&xds_type_matcher_v3_Matcher_msginit, arena);
+ if (!sub) return NULL;
+ envoy_extensions_filters_http_rbac_v3_RBAC_set_matcher(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_extensions_filters_http_rbac_v3_RBAC_set_shadow_matcher(envoy_extensions_filters_http_rbac_v3_RBAC *msg, struct xds_type_matcher_v3_Matcher* value) {
+ _upb_sethas(msg, 4);
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct xds_type_matcher_v3_Matcher*) = value;
+}
+UPB_INLINE struct xds_type_matcher_v3_Matcher* envoy_extensions_filters_http_rbac_v3_RBAC_mutable_shadow_matcher(envoy_extensions_filters_http_rbac_v3_RBAC* msg, upb_Arena* arena) {
+ struct xds_type_matcher_v3_Matcher* sub = (struct xds_type_matcher_v3_Matcher*)envoy_extensions_filters_http_rbac_v3_RBAC_shadow_matcher(msg);
+ if (sub == NULL) {
+ sub = (struct xds_type_matcher_v3_Matcher*)_upb_Message_New(&xds_type_matcher_v3_Matcher_msginit, arena);
+ if (!sub) return NULL;
+ envoy_extensions_filters_http_rbac_v3_RBAC_set_shadow_matcher(msg, sub);
+ }
+ return sub;
}
/* envoy.extensions.filters.http.rbac.v3.RBACPerRoute */
@@ -129,13 +192,22 @@ UPB_INLINE envoy_extensions_filters_http_rbac_v3_RBACPerRoute* envoy_extensions_
return ret;
}
UPB_INLINE char* envoy_extensions_filters_http_rbac_v3_RBACPerRoute_serialize(const envoy_extensions_filters_http_rbac_v3_RBACPerRoute* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_http_rbac_v3_RBACPerRoute_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_http_rbac_v3_RBACPerRoute_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_http_rbac_v3_RBACPerRoute_serialize_ex(const envoy_extensions_filters_http_rbac_v3_RBACPerRoute* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_http_rbac_v3_RBACPerRoute_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_http_rbac_v3_RBACPerRoute_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_http_rbac_v3_RBACPerRoute_has_rbac(const envoy_extensions_filters_http_rbac_v3_RBACPerRoute* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_http_rbac_v3_RBACPerRoute_clear_rbac(const envoy_extensions_filters_http_rbac_v3_RBACPerRoute* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_http_rbac_v3_RBACPerRoute_has_rbac(const envoy_extensions_filters_http_rbac_v3_RBACPerRoute *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_extensions_filters_http_rbac_v3_RBAC* envoy_extensions_filters_http_rbac_v3_RBACPerRoute_rbac(const envoy_extensions_filters_http_rbac_v3_RBACPerRoute* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_extensions_filters_http_rbac_v3_RBAC*);
}
@@ -144,7 +216,7 @@ UPB_INLINE void envoy_extensions_filters_http_rbac_v3_RBACPerRoute_set_rbac(envo
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_extensions_filters_http_rbac_v3_RBAC*) = value;
}
-UPB_INLINE struct envoy_extensions_filters_http_rbac_v3_RBAC* envoy_extensions_filters_http_rbac_v3_RBACPerRoute_mutable_rbac(envoy_extensions_filters_http_rbac_v3_RBACPerRoute *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_http_rbac_v3_RBAC* envoy_extensions_filters_http_rbac_v3_RBACPerRoute_mutable_rbac(envoy_extensions_filters_http_rbac_v3_RBACPerRoute* msg, upb_Arena* arena) {
struct envoy_extensions_filters_http_rbac_v3_RBAC* sub = (struct envoy_extensions_filters_http_rbac_v3_RBAC*)envoy_extensions_filters_http_rbac_v3_RBACPerRoute_rbac(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_http_rbac_v3_RBAC*)_upb_Message_New(&envoy_extensions_filters_http_rbac_v3_RBAC_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c
index f134bc918e..25f312c0ed 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c
@@ -18,24 +18,24 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_extensions_filters_http_router_v3_Router_submsgs[2] = {
- {.submsg = &envoy_config_accesslog_v3_AccessLog_msginit},
{.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &envoy_config_accesslog_v3_AccessLog_msginit},
};
static const upb_MiniTable_Field envoy_extensions_filters_http_router_v3_Router__fields[7] = {
- {1, UPB_SIZE(8, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 16), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(2, 2), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(16, 24), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(3, 3), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(4, 4), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(2, 2), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(3, 3), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_http_router_v3_Router_msginit = {
&envoy_extensions_filters_http_router_v3_Router_submsgs[0],
&envoy_extensions_filters_http_router_v3_Router__fields[0],
- UPB_SIZE(24, 32), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(24, 32), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h
index c89f7354da..ceccf3eb39 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h
@@ -55,28 +55,61 @@ UPB_INLINE envoy_extensions_filters_http_router_v3_Router* envoy_extensions_filt
return ret;
}
UPB_INLINE char* envoy_extensions_filters_http_router_v3_Router_serialize(const envoy_extensions_filters_http_router_v3_Router* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_http_router_v3_Router_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_http_router_v3_Router_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_http_router_v3_Router_serialize_ex(const envoy_extensions_filters_http_router_v3_Router* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_http_router_v3_Router_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_http_router_v3_Router_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_has_dynamic_stats(const envoy_extensions_filters_http_router_v3_Router* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_clear_dynamic_stats(const envoy_extensions_filters_http_router_v3_Router* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_has_dynamic_stats(const envoy_extensions_filters_http_router_v3_Router *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_extensions_filters_http_router_v3_Router_dynamic_stats(const envoy_extensions_filters_http_router_v3_Router* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct google_protobuf_BoolValue*);
}
+UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_clear_start_child_span(const envoy_extensions_filters_http_router_v3_Router* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_start_child_span(const envoy_extensions_filters_http_router_v3_Router* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_has_upstream_log(const envoy_extensions_filters_http_router_v3_Router *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 16)); }
-UPB_INLINE const struct envoy_config_accesslog_v3_AccessLog* const* envoy_extensions_filters_http_router_v3_Router_upstream_log(const envoy_extensions_filters_http_router_v3_Router *msg, size_t *len) { return (const struct envoy_config_accesslog_v3_AccessLog* const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len); }
+UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_has_upstream_log(const envoy_extensions_filters_http_router_v3_Router* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_clear_upstream_log(const envoy_extensions_filters_http_router_v3_Router* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE const struct envoy_config_accesslog_v3_AccessLog* const* envoy_extensions_filters_http_router_v3_Router_upstream_log(const envoy_extensions_filters_http_router_v3_Router* msg, size_t* len) {
+ return (const struct envoy_config_accesslog_v3_AccessLog* const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len);
+}
+UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_clear_suppress_envoy_headers(const envoy_extensions_filters_http_router_v3_Router* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
+}
UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_suppress_envoy_headers(const envoy_extensions_filters_http_router_v3_Router* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
}
-UPB_INLINE upb_StringView const* envoy_extensions_filters_http_router_v3_Router_strict_check_headers(const envoy_extensions_filters_http_router_v3_Router *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(16, 24), len); }
+UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_clear_strict_check_headers(const envoy_extensions_filters_http_router_v3_Router* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE upb_StringView const* envoy_extensions_filters_http_router_v3_Router_strict_check_headers(const envoy_extensions_filters_http_router_v3_Router* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(16, 24), len);
+}
+UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_clear_respect_expected_rq_timeout(const envoy_extensions_filters_http_router_v3_Router* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = 0;
+}
UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_respect_expected_rq_timeout(const envoy_extensions_filters_http_router_v3_Router* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool);
}
+UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_clear_suppress_grpc_request_failure_code_stats(const envoy_extensions_filters_http_router_v3_Router* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = 0;
+}
UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_suppress_grpc_request_failure_code_stats(const envoy_extensions_filters_http_router_v3_Router* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
}
@@ -85,7 +118,7 @@ UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_set_dynamic_stats
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_http_router_v3_Router_mutable_dynamic_stats(envoy_extensions_filters_http_router_v3_Router *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_http_router_v3_Router_mutable_dynamic_stats(envoy_extensions_filters_http_router_v3_Router* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_extensions_filters_http_router_v3_Router_dynamic_stats(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -97,31 +130,29 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_http_route
UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_set_start_child_span(envoy_extensions_filters_http_router_v3_Router *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_extensions_filters_http_router_v3_Router_mutable_upstream_log(envoy_extensions_filters_http_router_v3_Router *msg, size_t *len) {
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_extensions_filters_http_router_v3_Router_mutable_upstream_log(envoy_extensions_filters_http_router_v3_Router* msg, size_t* len) {
return (struct envoy_config_accesslog_v3_AccessLog**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 16), len);
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_extensions_filters_http_router_v3_Router_resize_upstream_log(envoy_extensions_filters_http_router_v3_Router *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_extensions_filters_http_router_v3_Router_resize_upstream_log(envoy_extensions_filters_http_router_v3_Router* msg, size_t len, upb_Arena* arena) {
return (struct envoy_config_accesslog_v3_AccessLog**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLog* envoy_extensions_filters_http_router_v3_Router_add_upstream_log(envoy_extensions_filters_http_router_v3_Router *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLog* envoy_extensions_filters_http_router_v3_Router_add_upstream_log(envoy_extensions_filters_http_router_v3_Router* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_AccessLog* sub = (struct envoy_config_accesslog_v3_AccessLog*)_upb_Message_New(&envoy_config_accesslog_v3_AccessLog_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_set_suppress_envoy_headers(envoy_extensions_filters_http_router_v3_Router *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = value;
}
-UPB_INLINE upb_StringView* envoy_extensions_filters_http_router_v3_Router_mutable_strict_check_headers(envoy_extensions_filters_http_router_v3_Router *msg, size_t *len) {
+UPB_INLINE upb_StringView* envoy_extensions_filters_http_router_v3_Router_mutable_strict_check_headers(envoy_extensions_filters_http_router_v3_Router* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 24), len);
}
-UPB_INLINE upb_StringView* envoy_extensions_filters_http_router_v3_Router_resize_strict_check_headers(envoy_extensions_filters_http_router_v3_Router *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* envoy_extensions_filters_http_router_v3_Router_resize_strict_check_headers(envoy_extensions_filters_http_router_v3_Router* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 24), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_add_strict_check_headers(envoy_extensions_filters_http_router_v3_Router *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 24), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_extensions_filters_http_router_v3_Router_add_strict_check_headers(envoy_extensions_filters_http_router_v3_Router* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 24), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_extensions_filters_http_router_v3_Router_set_respect_expected_rq_timeout(envoy_extensions_filters_http_router_v3_Router *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = value;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c
index 29dda1713e..9fc94a1f65 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c
@@ -10,6 +10,7 @@
#include "upb/msg_internal.h"
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h"
#include "envoy/config/accesslog/v3/accesslog.upb.h"
+#include "envoy/config/core/v3/address.upb.h"
#include "envoy/config/core/v3/base.upb.h"
#include "envoy/config/core/v3/config_source.upb.h"
#include "envoy/config/core/v3/extension.upb.h"
@@ -32,116 +33,135 @@
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_submsgs[21] = {
- {.submsg = &envoy_config_accesslog_v3_AccessLog_msginit},
+static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_submsgs[31] = {
+ {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_Rds_msginit},
+ {.submsg = &envoy_config_route_v3_RouteConfiguration_msginit},
+ {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_msginit},
{.submsg = &envoy_config_core_v3_Http1ProtocolOptions_msginit},
{.submsg = &envoy_config_core_v3_Http2ProtocolOptions_msginit},
- {.submsg = &envoy_config_core_v3_Http3ProtocolOptions_msginit},
- {.submsg = &envoy_config_core_v3_HttpProtocolOptions_msginit},
- {.submsg = &envoy_config_core_v3_SchemeHeaderTransformation_msginit},
- {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
- {.submsg = &envoy_config_route_v3_RouteConfiguration_msginit},
- {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_msginit},
- {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_config_accesslog_v3_AccessLog_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
{.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_msginit},
- {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_msginit},
{.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_msginit},
- {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_msginit},
- {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_msginit},
- {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_Rds_msginit},
- {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
{.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_msginit},
+ {.submsg = &envoy_config_core_v3_HttpProtocolOptions_msginit},
+ {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_msginit},
+ {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_msginit},
{.submsg = &google_protobuf_BoolValue_msginit},
{.submsg = &google_protobuf_Duration_msginit},
- {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_msginit},
+ {.submsg = &envoy_config_core_v3_Http3ProtocolOptions_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
+ {.submsg = &envoy_config_core_v3_SchemeHeaderTransformation_msginit},
+ {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
};
-static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager__fields[46] = {
- {1, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(32, 32), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(160, 288), UPB_SIZE(-165, -297), 15, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(160, 288), UPB_SIZE(-165, -297), 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(144, 256), 0, 13, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(56, 80), 1, 18, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(60, 88), 2, 11, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(64, 96), 3, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(68, 104), 4, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(40, 48), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {12, UPB_SIZE(72, 112), 5, 19, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {13, UPB_SIZE(148, 264), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {14, UPB_SIZE(76, 120), 6, 18, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {15, UPB_SIZE(80, 128), 7, 18, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {16, UPB_SIZE(8, 8), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {17, UPB_SIZE(84, 136), 8, 10, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {18, UPB_SIZE(24, 24), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {19, UPB_SIZE(20, 20), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {20, UPB_SIZE(25, 25), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {21, UPB_SIZE(26, 26), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {22, UPB_SIZE(48, 64), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {23, UPB_SIZE(152, 272), 0, 12, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {24, UPB_SIZE(88, 144), 9, 19, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {25, UPB_SIZE(92, 152), 10, 8, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {26, UPB_SIZE(96, 160), 11, 19, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {28, UPB_SIZE(100, 168), 12, 19, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {29, UPB_SIZE(104, 176), 13, 20, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {30, UPB_SIZE(108, 184), 14, 18, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {31, UPB_SIZE(160, 288), UPB_SIZE(-165, -297), 17, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {32, UPB_SIZE(27, 27), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {33, UPB_SIZE(28, 28), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {34, UPB_SIZE(12, 12), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {35, UPB_SIZE(112, 192), 15, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {36, UPB_SIZE(116, 200), 16, 16, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {37, UPB_SIZE(29, 29), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {38, UPB_SIZE(120, 208), 17, 14, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {39, UPB_SIZE(30, 30), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {40, UPB_SIZE(124, 216), 18, 18, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {41, UPB_SIZE(128, 224), 19, 19, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {42, UPB_SIZE(168, 300), UPB_SIZE(-173, -305), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {43, UPB_SIZE(132, 232), 20, 9, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {44, UPB_SIZE(136, 240), 21, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {45, UPB_SIZE(16, 16), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {46, UPB_SIZE(156, 280), 0, 6, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {47, UPB_SIZE(31, 31), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {48, UPB_SIZE(140, 248), 22, 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager__fields[48] = {
+ {1, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(52, 56), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(188, 328), UPB_SIZE(-25, -25), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(188, 328), UPB_SIZE(-25, -25), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(60, 72), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(64, 80), UPB_SIZE(1, 1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(68, 88), UPB_SIZE(2, 2), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(72, 96), UPB_SIZE(3, 3), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(76, 104), UPB_SIZE(4, 4), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(80, 112), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(88, 128), UPB_SIZE(5, 5), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(92, 136), UPB_SIZE(0, 0), 8, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(96, 144), UPB_SIZE(6, 6), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(100, 152), UPB_SIZE(7, 7), 10, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {16, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {17, UPB_SIZE(104, 160), UPB_SIZE(8, 8), 11, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {18, UPB_SIZE(12, 12), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {19, UPB_SIZE(16, 16), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {20, UPB_SIZE(20, 20), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {21, UPB_SIZE(21, 21), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {22, UPB_SIZE(108, 168), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {23, UPB_SIZE(116, 184), UPB_SIZE(0, 0), 12, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {24, UPB_SIZE(120, 192), UPB_SIZE(9, 9), 13, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {25, UPB_SIZE(124, 200), UPB_SIZE(10, 10), 14, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {26, UPB_SIZE(128, 208), UPB_SIZE(11, 11), 15, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {28, UPB_SIZE(132, 216), UPB_SIZE(12, 12), 16, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {29, UPB_SIZE(136, 224), UPB_SIZE(13, 13), 17, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {30, UPB_SIZE(140, 232), UPB_SIZE(14, 14), 18, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {31, UPB_SIZE(188, 328), UPB_SIZE(-25, -25), 19, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {32, UPB_SIZE(28, 28), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {33, UPB_SIZE(29, 29), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {34, UPB_SIZE(32, 32), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {35, UPB_SIZE(144, 240), UPB_SIZE(15, 15), 20, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {36, UPB_SIZE(148, 248), UPB_SIZE(16, 16), 21, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {37, UPB_SIZE(36, 36), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {38, UPB_SIZE(152, 256), UPB_SIZE(17, 17), 22, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {39, UPB_SIZE(37, 37), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {40, UPB_SIZE(156, 264), UPB_SIZE(18, 18), 23, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {41, UPB_SIZE(160, 272), UPB_SIZE(19, 19), 24, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {42, UPB_SIZE(192, 336), UPB_SIZE(-41, -41), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {43, UPB_SIZE(164, 280), UPB_SIZE(20, 20), 25, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {44, UPB_SIZE(168, 288), UPB_SIZE(21, 21), 26, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {45, UPB_SIZE(44, 44), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {46, UPB_SIZE(172, 296), UPB_SIZE(0, 0), 27, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {47, UPB_SIZE(48, 48), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {48, UPB_SIZE(176, 304), UPB_SIZE(22, 22), 28, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {49, UPB_SIZE(180, 312), UPB_SIZE(23, 23), 29, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {50, UPB_SIZE(184, 320), UPB_SIZE(24, 24), 30, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager__fields[0],
- UPB_SIZE(176, 320), 46, upb_ExtMode_NonExtendable, 10, 255, 0,
+ UPB_SIZE(200, 344), 48, kUpb_ExtMode_NonExtendable, 10, 255, 0,
};
-static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_submsgs[4] = {
- {.submsg = &envoy_config_trace_v3_Tracing_Http_msginit},
- {.submsg = &envoy_type_tracing_v3_CustomTag_msginit},
+static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_submsgs[6] = {
+ {.submsg = &envoy_type_v3_Percent_msginit},
+ {.submsg = &envoy_type_v3_Percent_msginit},
{.submsg = &envoy_type_v3_Percent_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_type_tracing_v3_CustomTag_msginit},
+ {.submsg = &envoy_config_trace_v3_Tracing_Http_msginit},
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing__fields[7] = {
- {3, UPB_SIZE(4, 8), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 16), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(12, 24), 3, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(16, 32), 4, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(24, 48), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(20, 40), 5, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(16, 32), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(20, 40), UPB_SIZE(0, 0), 4, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(24, 48), UPB_SIZE(5, 5), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing__fields[0],
- UPB_SIZE(32, 56), 7, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(32, 56), 7, kUpb_ExtMode_NonExtendable, 0, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_submsgs[1] = {
+ {.submsg = &envoy_config_core_v3_CidrRange_msginit},
};
-static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig__fields[2] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_msginit = {
- NULL,
+ &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_submsgs[1] = {
@@ -149,17 +169,17 @@ static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails__fields[5] = {
- {1, UPB_SIZE(8, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(2, 2), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(3, 3), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(4, 4), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(2, 2), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(3, 3), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails__fields[0],
- UPB_SIZE(16, 16), 5, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 16), 5, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_submsgs[2] = {
@@ -168,68 +188,84 @@ static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
-static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_submsgs[1] = {
+static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_submsgs[2] = {
+ {.submsg = &envoy_type_http_v3_PathTransformation_msginit},
{.submsg = &envoy_type_http_v3_PathTransformation_msginit},
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig__fields[6] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(2, 2), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(3, 3), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_msginit = {
+ NULL,
+ &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig__fields[0],
+ UPB_SIZE(16, 24), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_submsgs[2] = {
- {.submsg = &envoy_config_core_v3_SubstitutionFormatString_msginit},
{.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_msginit},
+ {.submsg = &envoy_config_core_v3_SubstitutionFormatString_msginit},
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig__fields[2] = {
- {1, UPB_SIZE(8, 16), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_submsgs[5] = {
{.submsg = &envoy_config_accesslog_v3_AccessLogFilter_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
{.submsg = &envoy_config_core_v3_DataSource_msginit},
- {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
{.submsg = &envoy_config_core_v3_SubstitutionFormatString_msginit},
- {.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &envoy_config_core_v3_HeaderValueOption_msginit},
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper__fields[5] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 3, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 4, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 40), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 40), UPB_SIZE(0, 0), 4, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper__fields[0],
- UPB_SIZE(24, 48), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(24, 48), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_Rds_submsgs[1] = {
@@ -237,14 +273,14 @@ static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_Rds__fields[2] = {
- {1, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_Rds_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_Rds_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_Rds__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_submsgs[1] = {
@@ -252,34 +288,34 @@ static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_submsgs[4] = {
+ {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_msginit},
{.submsg = &envoy_config_core_v3_ConfigSource_msginit},
- {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_msginit},
{.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_msginit},
- {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_msginit},
+ {.submsg = &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_msginit},
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes__fields[5] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 40), UPB_SIZE(-25, -49), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 40), UPB_SIZE(-25, -49), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 40), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 40), UPB_SIZE(-5, -5), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes__fields[0],
- UPB_SIZE(32, 64), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(32, 48), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_submsgs[1] = {
@@ -287,13 +323,13 @@ static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_submsgs[1] = {
@@ -301,13 +337,13 @@ static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder__fields[1] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_submsgs[1] = {
@@ -315,27 +351,27 @@ static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor__fields[4] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), UPB_SIZE(-21, -41), 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), UPB_SIZE(-21, -41), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 40), UPB_SIZE(-1, -1), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 40), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor__fields[0],
- UPB_SIZE(24, 48), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 48), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement_msginit = {
NULL,
&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_submsgs[1] = {
@@ -343,32 +379,32 @@ static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds__fields[2] = {
- {1, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_submsgs[2] = {
- {.submsg = &envoy_config_core_v3_ExtensionConfigSource_msginit},
{.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &envoy_config_core_v3_ExtensionConfigSource_msginit},
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter__fields[4] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 24), UPB_SIZE(-17, -33), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(12, 24), UPB_SIZE(-17, -33), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(16, 24), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter__fields[0],
- UPB_SIZE(24, 48), 4, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(24, 32), 4, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_submsgs[1] = {
@@ -376,13 +412,13 @@ static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_submsgs[1] = {
@@ -390,22 +426,23 @@ static const upb_MiniTable_Sub envoy_extensions_filters_network_http_connection_
};
static const upb_MiniTable_Field envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_msginit = {
&envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_submsgs[0],
&envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable *messages_layout[19] = {
+static const upb_MiniTable *messages_layout[20] = {
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_msginit,
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_msginit,
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_msginit,
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_msginit,
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_msginit,
&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_msginit,
+ &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_msginit,
&envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_msginit,
&envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_msginit,
&envoy_extensions_filters_network_http_connection_manager_v3_Rds_msginit,
@@ -425,7 +462,7 @@ const upb_MiniTable_File envoy_extensions_filters_network_http_connection_manage
messages_layout,
NULL,
NULL,
- 19,
+ 20,
0,
0,
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h
index 7440f50112..3eef13a030 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h
@@ -26,6 +26,7 @@ struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectio
struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails;
struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig;
struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions;
+struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig;
struct envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig;
struct envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper;
struct envoy_extensions_filters_network_http_connection_manager_v3_Rds;
@@ -45,6 +46,7 @@ typedef struct envoy_extensions_filters_network_http_connection_manager_v3_HttpC
typedef struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails;
typedef struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig;
typedef struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions;
+typedef struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig;
typedef struct envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig;
typedef struct envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper;
typedef struct envoy_extensions_filters_network_http_connection_manager_v3_Rds envoy_extensions_filters_network_http_connection_manager_v3_Rds;
@@ -64,6 +66,7 @@ extern const upb_MiniTable envoy_extensions_filters_network_http_connection_mana
extern const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_msginit;
extern const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_msginit;
extern const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_msginit;
+extern const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_msginit;
extern const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_msginit;
extern const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_msginit;
extern const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_Rds_msginit;
@@ -79,6 +82,7 @@ extern const upb_MiniTable envoy_extensions_filters_network_http_connection_mana
extern const upb_MiniTable envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_msginit;
struct envoy_config_accesslog_v3_AccessLog;
struct envoy_config_accesslog_v3_AccessLogFilter;
+struct envoy_config_core_v3_CidrRange;
struct envoy_config_core_v3_ConfigSource;
struct envoy_config_core_v3_DataSource;
struct envoy_config_core_v3_ExtensionConfigSource;
@@ -102,6 +106,7 @@ struct google_protobuf_Duration;
struct google_protobuf_UInt32Value;
extern const upb_MiniTable envoy_config_accesslog_v3_AccessLog_msginit;
extern const upb_MiniTable envoy_config_accesslog_v3_AccessLogFilter_msginit;
+extern const upb_MiniTable envoy_config_core_v3_CidrRange_msginit;
extern const upb_MiniTable envoy_config_core_v3_ConfigSource_msginit;
extern const upb_MiniTable envoy_config_core_v3_DataSource_msginit;
extern const upb_MiniTable envoy_config_core_v3_ExtensionConfigSource_msginit;
@@ -185,11 +190,15 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConne
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_rds = 3,
@@ -197,177 +206,411 @@ typedef enum {
envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_scoped_routes = 31,
envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_NOT_SET = 0
} envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_oneofcases;
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_case(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { return (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(164, 296), int32_t); }
-
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_case(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(24, 24), int32_t);
+}
typedef enum {
envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_strip_any_host_port = 42,
envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_NOT_SET = 0
} envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_oneofcases;
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_case(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) { return (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(172, 304), int32_t); }
-
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_case(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(40, 40), int32_t);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_codec_type(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_codec_type(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_stat_prefix(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 56), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_stat_prefix(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), upb_StringView);
-}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_rds(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_getoneofcase(msg, UPB_SIZE(164, 296)) == 3; }
-UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_Rds* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_rds(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return UPB_READ_ONEOF(msg, const envoy_extensions_filters_network_http_connection_manager_v3_Rds*, UPB_SIZE(160, 288), UPB_SIZE(164, 296), 3, NULL); }
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_route_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_getoneofcase(msg, UPB_SIZE(164, 296)) == 4; }
-UPB_INLINE const struct envoy_config_route_v3_RouteConfiguration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_route_v3_RouteConfiguration*, UPB_SIZE(160, 288), UPB_SIZE(164, 296), 4, NULL); }
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_http_filters(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(144, 256)); }
-UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* const* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_http_filters(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, size_t *len) { return (const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* const*)_upb_array_accessor(msg, UPB_SIZE(144, 256), len); }
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_add_user_agent(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 1); }
+ return *UPB_PTR_AT(msg, UPB_SIZE(52, 56), upb_StringView);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_rds(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(24, 24)) == 3;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_rds(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_Rds*, UPB_SIZE(188, 328), 0, UPB_SIZE(24, 24), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_Rds* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_rds(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_extensions_filters_network_http_connection_manager_v3_Rds*, UPB_SIZE(188, 328), UPB_SIZE(24, 24), 3, NULL);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_route_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(24, 24)) == 4;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_route_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_route_v3_RouteConfiguration*, UPB_SIZE(188, 328), 0, UPB_SIZE(24, 24), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_route_v3_RouteConfiguration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_route_v3_RouteConfiguration*, UPB_SIZE(188, 328), UPB_SIZE(24, 24), 4, NULL);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_http_filters(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(60, 72));
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_http_filters(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ _upb_array_detach(msg, UPB_SIZE(60, 72));
+}
+UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* const* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_http_filters(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, size_t* len) {
+ return (const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* const*)_upb_array_accessor(msg, UPB_SIZE(60, 72), len);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_add_user_agent(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_add_user_agent(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 80), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_add_user_agent(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(56, 80), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(64, 80), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_tracing(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_tracing(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 88), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_tracing(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_tracing(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(60, 88), const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(68, 88), const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_http_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_http_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 96), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_http_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct envoy_config_core_v3_Http1ProtocolOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_http_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(64, 96), const struct envoy_config_core_v3_Http1ProtocolOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(72, 96), const struct envoy_config_core_v3_Http1ProtocolOptions*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_http2_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_http2_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 104), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_http2_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const struct envoy_config_core_v3_Http2ProtocolOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_http2_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(68, 104), const struct envoy_config_core_v3_Http2ProtocolOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(76, 104), const struct envoy_config_core_v3_Http2ProtocolOptions*);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_server_name(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 112), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_server_name(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 48), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(80, 112), upb_StringView);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_drain_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_drain_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(88, 128), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_drain_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE const struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_drain_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(72, 112), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(88, 128), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_access_log(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(92, 136));
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_access_log(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ _upb_array_detach(msg, UPB_SIZE(92, 136));
+}
+UPB_INLINE const struct envoy_config_accesslog_v3_AccessLog* const* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_access_log(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, size_t* len) {
+ return (const struct envoy_config_accesslog_v3_AccessLog* const*)_upb_array_accessor(msg, UPB_SIZE(92, 136), len);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_use_remote_address(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_use_remote_address(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(96, 144), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_access_log(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(148, 264)); }
-UPB_INLINE const struct envoy_config_accesslog_v3_AccessLog* const* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_access_log(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, size_t *len) { return (const struct envoy_config_accesslog_v3_AccessLog* const*)_upb_array_accessor(msg, UPB_SIZE(148, 264), len); }
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_use_remote_address(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_use_remote_address(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(76, 120), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(96, 144), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_generate_request_id(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_generate_request_id(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(100, 152), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_generate_request_id(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 7); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_generate_request_id(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(80, 128), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(100, 152), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_forward_client_cert_details(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
}
UPB_INLINE int32_t envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_forward_client_cert_details(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_set_current_client_cert_details(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 8); }
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_set_current_client_cert_details(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 8);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_set_current_client_cert_details(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(104, 160), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_current_client_cert_details(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(84, 136), const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(104, 160), const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails*);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_proxy_100_continue(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool) = 0;
}
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_proxy_100_continue(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_xff_num_trusted_hops(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_xff_num_trusted_hops(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 20), uint32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint32_t);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_represent_ipv4_remote_address_as_ipv4_mapped_ipv6(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool) = 0;
}
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_represent_ipv4_remote_address_as_ipv4_mapped_ipv6(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(25, 25), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_skip_xff_append(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(21, 21), bool) = 0;
}
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_skip_xff_append(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(26, 26), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(21, 21), bool);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_via(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(108, 168), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_via(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 64), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(108, 168), upb_StringView);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_upgrade_configs(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(116, 184));
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_upgrade_configs(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ _upb_array_detach(msg, UPB_SIZE(116, 184));
+}
+UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* const* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_upgrade_configs(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, size_t* len) {
+ return (const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* const*)_upb_array_accessor(msg, UPB_SIZE(116, 184), len);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_stream_idle_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 9);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_stream_idle_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(120, 192), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_upgrade_configs(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(152, 272)); }
-UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* const* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_upgrade_configs(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, size_t *len) { return (const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* const*)_upb_array_accessor(msg, UPB_SIZE(152, 272), len); }
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_stream_idle_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 9); }
UPB_INLINE const struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_stream_idle_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(88, 144), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(120, 192), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_internal_address_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 10);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_internal_address_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(124, 200), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_internal_address_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 10); }
UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_internal_address_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(92, 152), const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(124, 200), const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_delayed_close_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 11);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_delayed_close_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(128, 208), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_delayed_close_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 11); }
UPB_INLINE const struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_delayed_close_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(96, 160), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(128, 208), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_request_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 12);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_request_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(132, 216), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_request_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 12); }
UPB_INLINE const struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_request_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(100, 168), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(132, 216), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_max_request_headers_kb(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 13);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_max_request_headers_kb(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(136, 224), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_max_request_headers_kb(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 13); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_max_request_headers_kb(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(104, 176), const struct google_protobuf_UInt32Value*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(136, 224), const struct google_protobuf_UInt32Value*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_normalize_path(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 14);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_normalize_path(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(140, 232), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_normalize_path(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 14); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_normalize_path(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(108, 184), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(140, 232), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_scoped_routes(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(24, 24)) == 31;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_scoped_routes(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes*, UPB_SIZE(188, 328), 0, UPB_SIZE(24, 24), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_scoped_routes(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes*, UPB_SIZE(188, 328), UPB_SIZE(24, 24), 31, NULL);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_preserve_external_request_id(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 28), bool) = 0;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_scoped_routes(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_getoneofcase(msg, UPB_SIZE(164, 296)) == 31; }
-UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_scoped_routes(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return UPB_READ_ONEOF(msg, const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes*, UPB_SIZE(160, 288), UPB_SIZE(164, 296), 31, NULL); }
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_preserve_external_request_id(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(27, 27), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 28), bool);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_merge_slashes(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(29, 29), bool) = 0;
}
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_merge_slashes(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 28), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(29, 29), bool);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_server_header_transformation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 32), int32_t) = 0;
}
UPB_INLINE int32_t envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_server_header_transformation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), int32_t);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_common_http_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 15);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_common_http_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(144, 240), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_common_http_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 15); }
UPB_INLINE const struct envoy_config_core_v3_HttpProtocolOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_common_http_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(112, 192), const struct envoy_config_core_v3_HttpProtocolOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(144, 240), const struct envoy_config_core_v3_HttpProtocolOptions*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_request_id_extension(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 16);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_request_id_extension(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(148, 248), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_request_id_extension(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 16); }
UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_request_id_extension(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(116, 200), const envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(148, 248), const envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension*);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_always_set_request_id_in_response(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 36), bool) = 0;
}
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_always_set_request_id_in_response(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(29, 29), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 36), bool);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_local_reply_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 17);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_local_reply_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(152, 256), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_local_reply_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 17); }
UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_local_reply_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(120, 208), const envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(152, 256), const envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig*);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_strip_matching_host_port(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(37, 37), bool) = 0;
}
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_matching_host_port(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(30, 30), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(37, 37), bool);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_stream_error_on_invalid_http_message(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 18);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_stream_error_on_invalid_http_message(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(156, 264), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_stream_error_on_invalid_http_message(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 18); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_stream_error_on_invalid_http_message(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(124, 216), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(156, 264), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_request_headers_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 19);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_request_headers_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(160, 272), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_request_headers_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 19); }
UPB_INLINE const struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_request_headers_timeout(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(128, 224), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(160, 272), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_strip_any_host_port(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(40, 40)) == 42;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_strip_any_host_port(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(192, 336), 0, UPB_SIZE(40, 40), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_port_mode_NOT_SET);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_any_host_port(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(192, 336), UPB_SIZE(40, 40), 42, false);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_path_normalization_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 20);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_path_normalization_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(164, 280), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_strip_any_host_port(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_getoneofcase(msg, UPB_SIZE(172, 304)) == 42; }
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_any_host_port(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(168, 300), UPB_SIZE(172, 304), 42, false); }
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_path_normalization_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 20); }
UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_path_normalization_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(132, 232), const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(164, 280), const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_http3_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 21);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_http3_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(168, 288), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_http3_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 21); }
UPB_INLINE const struct envoy_config_core_v3_Http3ProtocolOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_http3_protocol_options(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(136, 240), const struct envoy_config_core_v3_Http3ProtocolOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(168, 288), const struct envoy_config_core_v3_Http3ProtocolOptions*);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_path_with_escaped_slashes_action(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 44), int32_t) = 0;
}
UPB_INLINE int32_t envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_path_with_escaped_slashes_action(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 44), int32_t);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_original_ip_detection_extensions(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(172, 296));
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_original_ip_detection_extensions(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ _upb_array_detach(msg, UPB_SIZE(172, 296));
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* const* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_original_ip_detection_extensions(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_TypedExtensionConfig* const*)_upb_array_accessor(msg, UPB_SIZE(172, 296), len);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_strip_trailing_host_dot(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool) = 0;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_original_ip_detection_extensions(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(156, 280)); }
-UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* const* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_original_ip_detection_extensions(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, size_t *len) { return (const struct envoy_config_core_v3_TypedExtensionConfig* const*)_upb_array_accessor(msg, UPB_SIZE(156, 280), len); }
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_strip_trailing_host_dot(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(31, 31), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_scheme_header_transformation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 22);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_scheme_header_transformation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(176, 304), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_scheme_header_transformation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg) { return _upb_hasbit(msg, 22); }
UPB_INLINE const struct envoy_config_core_v3_SchemeHeaderTransformation* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_scheme_header_transformation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(140, 248), const struct envoy_config_core_v3_SchemeHeaderTransformation*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(176, 304), const struct envoy_config_core_v3_SchemeHeaderTransformation*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_proxy_status_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 23);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_proxy_status_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(180, 312), const upb_Message*) = NULL;
+}
+UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_proxy_status_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(180, 312), const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_typed_header_validation_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 24);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_clear_typed_header_validation_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(184, 320), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_typed_header_validation_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(184, 320), const struct envoy_config_core_v3_TypedExtensionConfig*);
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_codec_type(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_stat_prefix(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(32, 32), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 56), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_rds(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, envoy_extensions_filters_network_http_connection_manager_v3_Rds* value) {
- UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_Rds*, UPB_SIZE(160, 288), value, UPB_SIZE(164, 296), 3);
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_Rds*, UPB_SIZE(188, 328), value, UPB_SIZE(24, 24), 3);
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_Rds* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_rds(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_Rds* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_rds(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_Rds* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_Rds*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_rds(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_Rds*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_Rds_msginit, arena);
@@ -377,9 +620,9 @@ UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_Rd
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_route_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct envoy_config_route_v3_RouteConfiguration* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_route_v3_RouteConfiguration*, UPB_SIZE(160, 288), value, UPB_SIZE(164, 296), 4);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_route_v3_RouteConfiguration*, UPB_SIZE(188, 328), value, UPB_SIZE(24, 24), 4);
}
-UPB_INLINE struct envoy_config_route_v3_RouteConfiguration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_route_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_RouteConfiguration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_route_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_config_route_v3_RouteConfiguration* sub = (struct envoy_config_route_v3_RouteConfiguration*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_route_v3_RouteConfiguration*)_upb_Message_New(&envoy_config_route_v3_RouteConfiguration_msginit, arena);
@@ -388,24 +631,23 @@ UPB_INLINE struct envoy_config_route_v3_RouteConfiguration* envoy_extensions_fil
}
return sub;
}
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_http_filters(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, size_t *len) {
- return (envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter**)_upb_array_mutable_accessor(msg, UPB_SIZE(144, 256), len);
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_http_filters(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, size_t* len) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter**)_upb_array_mutable_accessor(msg, UPB_SIZE(60, 72), len);
}
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_resize_http_filters(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, size_t len, upb_Arena *arena) {
- return (envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(144, 256), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_resize_http_filters(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, size_t len, upb_Arena* arena) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(60, 72), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_add_http_filters(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_add_http_filters(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(144, 256), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(60, 72), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_add_user_agent(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(56, 80), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 80), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_add_user_agent(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_add_user_agent(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_add_user_agent(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -416,9 +658,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_ht
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_tracing(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(60, 88), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 88), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing*) = value;
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_tracing(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_tracing(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_tracing(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_msginit, arena);
@@ -429,9 +671,9 @@ UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_Ht
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_http_protocol_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct envoy_config_core_v3_Http1ProtocolOptions* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(64, 96), struct envoy_config_core_v3_Http1ProtocolOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 96), struct envoy_config_core_v3_Http1ProtocolOptions*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Http1ProtocolOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_http_protocol_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Http1ProtocolOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_http_protocol_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Http1ProtocolOptions* sub = (struct envoy_config_core_v3_Http1ProtocolOptions*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_http_protocol_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Http1ProtocolOptions*)_upb_Message_New(&envoy_config_core_v3_Http1ProtocolOptions_msginit, arena);
@@ -442,9 +684,9 @@ UPB_INLINE struct envoy_config_core_v3_Http1ProtocolOptions* envoy_extensions_fi
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_http2_protocol_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct envoy_config_core_v3_Http2ProtocolOptions* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(68, 104), struct envoy_config_core_v3_Http2ProtocolOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 104), struct envoy_config_core_v3_Http2ProtocolOptions*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Http2ProtocolOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_http2_protocol_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Http2ProtocolOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_http2_protocol_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Http2ProtocolOptions* sub = (struct envoy_config_core_v3_Http2ProtocolOptions*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_http2_protocol_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Http2ProtocolOptions*)_upb_Message_New(&envoy_config_core_v3_Http2ProtocolOptions_msginit, arena);
@@ -454,13 +696,13 @@ UPB_INLINE struct envoy_config_core_v3_Http2ProtocolOptions* envoy_extensions_fi
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_server_name(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(40, 48), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 112), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_drain_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(72, 112), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(88, 128), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_drain_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_drain_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_drain_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -469,24 +711,23 @@ UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_htt
}
return sub;
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_access_log(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, size_t *len) {
- return (struct envoy_config_accesslog_v3_AccessLog**)_upb_array_mutable_accessor(msg, UPB_SIZE(148, 264), len);
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_access_log(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, size_t* len) {
+ return (struct envoy_config_accesslog_v3_AccessLog**)_upb_array_mutable_accessor(msg, UPB_SIZE(92, 136), len);
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_resize_access_log(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_accesslog_v3_AccessLog**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(148, 264), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLog** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_resize_access_log(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_accesslog_v3_AccessLog**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(92, 136), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLog* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_add_access_log(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLog* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_add_access_log(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_AccessLog* sub = (struct envoy_config_accesslog_v3_AccessLog*)_upb_Message_New(&envoy_config_accesslog_v3_AccessLog_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(148, 264), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(92, 136), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_use_remote_address(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(76, 120), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(96, 144), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_use_remote_address(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_use_remote_address(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_use_remote_address(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -497,9 +738,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_ht
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_generate_request_id(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 7);
- *UPB_PTR_AT(msg, UPB_SIZE(80, 128), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(100, 152), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_generate_request_id(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_generate_request_id(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_generate_request_id(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -513,9 +754,9 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Http
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_set_current_client_cert_details(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* value) {
_upb_sethas(msg, 8);
- *UPB_PTR_AT(msg, UPB_SIZE(84, 136), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(104, 160), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails*) = value;
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_set_current_client_cert_details(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_set_current_client_cert_details(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_current_client_cert_details(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_msginit, arena);
@@ -525,38 +766,37 @@ UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_Ht
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_proxy_100_continue(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_xff_num_trusted_hops(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, uint32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 20), uint32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint32_t) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_represent_ipv4_remote_address_as_ipv4_mapped_ipv6(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(25, 25), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_skip_xff_append(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(26, 26), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(21, 21), bool) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_via(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(48, 64), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(108, 168), upb_StringView) = value;
}
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_upgrade_configs(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, size_t *len) {
- return (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(152, 272), len);
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_upgrade_configs(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, size_t* len) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(116, 184), len);
}
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_resize_upgrade_configs(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, size_t len, upb_Arena *arena) {
- return (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(152, 272), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_resize_upgrade_configs(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, size_t len, upb_Arena* arena) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(116, 184), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_add_upgrade_configs(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_add_upgrade_configs(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(152, 272), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(116, 184), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_stream_idle_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 9);
- *UPB_PTR_AT(msg, UPB_SIZE(88, 144), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(120, 192), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_stream_idle_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_stream_idle_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_stream_idle_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -567,9 +807,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_htt
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_internal_address_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* value) {
_upb_sethas(msg, 10);
- *UPB_PTR_AT(msg, UPB_SIZE(92, 152), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(124, 200), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig*) = value;
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_internal_address_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_internal_address_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_internal_address_config(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_msginit, arena);
@@ -580,9 +820,9 @@ UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_Ht
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_delayed_close_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 11);
- *UPB_PTR_AT(msg, UPB_SIZE(96, 160), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(128, 208), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_delayed_close_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_delayed_close_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_delayed_close_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -593,9 +833,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_htt
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_request_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 12);
- *UPB_PTR_AT(msg, UPB_SIZE(100, 168), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(132, 216), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_request_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_request_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_request_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -606,9 +846,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_htt
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_max_request_headers_kb(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct google_protobuf_UInt32Value* value) {
_upb_sethas(msg, 13);
- *UPB_PTR_AT(msg, UPB_SIZE(104, 176), struct google_protobuf_UInt32Value*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(136, 224), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_max_request_headers_kb(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_max_request_headers_kb(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_max_request_headers_kb(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -619,9 +859,9 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_filters_network_
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_normalize_path(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 14);
- *UPB_PTR_AT(msg, UPB_SIZE(108, 184), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(140, 232), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_normalize_path(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_normalize_path(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_normalize_path(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -631,9 +871,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_ht
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_scoped_routes(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* value) {
- UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes*, UPB_SIZE(160, 288), value, UPB_SIZE(164, 296), 31);
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes*, UPB_SIZE(188, 328), value, UPB_SIZE(24, 24), 31);
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_scoped_routes(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_scoped_routes(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_scoped_routes(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_msginit, arena);
@@ -643,19 +883,19 @@ UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_Sc
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_preserve_external_request_id(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(27, 27), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 28), bool) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_merge_slashes(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(28, 28), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(29, 29), bool) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_server_header_transformation(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 32), int32_t) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_common_http_protocol_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct envoy_config_core_v3_HttpProtocolOptions* value) {
_upb_sethas(msg, 15);
- *UPB_PTR_AT(msg, UPB_SIZE(112, 192), struct envoy_config_core_v3_HttpProtocolOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(144, 240), struct envoy_config_core_v3_HttpProtocolOptions*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_HttpProtocolOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_common_http_protocol_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HttpProtocolOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_common_http_protocol_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HttpProtocolOptions* sub = (struct envoy_config_core_v3_HttpProtocolOptions*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_common_http_protocol_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_HttpProtocolOptions*)_upb_Message_New(&envoy_config_core_v3_HttpProtocolOptions_msginit, arena);
@@ -666,9 +906,9 @@ UPB_INLINE struct envoy_config_core_v3_HttpProtocolOptions* envoy_extensions_fil
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_request_id_extension(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension* value) {
_upb_sethas(msg, 16);
- *UPB_PTR_AT(msg, UPB_SIZE(116, 200), envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(148, 248), envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension*) = value;
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_request_id_extension(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_request_id_extension(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_request_id_extension(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_msginit, arena);
@@ -678,13 +918,13 @@ UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_Re
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_always_set_request_id_in_response(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(29, 29), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 36), bool) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_local_reply_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* value) {
_upb_sethas(msg, 17);
- *UPB_PTR_AT(msg, UPB_SIZE(120, 208), envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(152, 256), envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig*) = value;
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_local_reply_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_local_reply_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_local_reply_config(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_msginit, arena);
@@ -694,13 +934,13 @@ UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_Lo
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_strip_matching_host_port(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(30, 30), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(37, 37), bool) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_stream_error_on_invalid_http_message(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 18);
- *UPB_PTR_AT(msg, UPB_SIZE(124, 216), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(156, 264), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_stream_error_on_invalid_http_message(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_stream_error_on_invalid_http_message(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_stream_error_on_invalid_http_message(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -711,9 +951,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_ht
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_request_headers_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 19);
- *UPB_PTR_AT(msg, UPB_SIZE(128, 224), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(160, 272), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_request_headers_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_request_headers_timeout(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_request_headers_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -723,13 +963,13 @@ UPB_INLINE struct google_protobuf_Duration* envoy_extensions_filters_network_htt
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_strip_any_host_port(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(168, 300), value, UPB_SIZE(172, 304), 42);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(192, 336), value, UPB_SIZE(40, 40), 42);
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_path_normalization_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* value) {
_upb_sethas(msg, 20);
- *UPB_PTR_AT(msg, UPB_SIZE(132, 232), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(164, 280), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions*) = value;
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_path_normalization_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_path_normalization_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_path_normalization_options(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_msginit, arena);
@@ -740,9 +980,9 @@ UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_Ht
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_http3_protocol_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct envoy_config_core_v3_Http3ProtocolOptions* value) {
_upb_sethas(msg, 21);
- *UPB_PTR_AT(msg, UPB_SIZE(136, 240), struct envoy_config_core_v3_Http3ProtocolOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(168, 288), struct envoy_config_core_v3_Http3ProtocolOptions*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Http3ProtocolOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_http3_protocol_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Http3ProtocolOptions* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_http3_protocol_options(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Http3ProtocolOptions* sub = (struct envoy_config_core_v3_Http3ProtocolOptions*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_http3_protocol_options(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Http3ProtocolOptions*)_upb_Message_New(&envoy_config_core_v3_Http3ProtocolOptions_msginit, arena);
@@ -752,29 +992,28 @@ UPB_INLINE struct envoy_config_core_v3_Http3ProtocolOptions* envoy_extensions_fi
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_path_with_escaped_slashes_action(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 44), int32_t) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_original_ip_detection_extensions(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, size_t *len) {
- return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(156, 280), len);
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_original_ip_detection_extensions(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, size_t* len) {
+ return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(172, 296), len);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_resize_original_ip_detection_extensions(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(156, 280), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_resize_original_ip_detection_extensions(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_TypedExtensionConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(172, 296), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_add_original_ip_detection_extensions(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_add_original_ip_detection_extensions(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(156, 280), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(172, 296), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_strip_trailing_host_dot(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(31, 31), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_scheme_header_transformation(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct envoy_config_core_v3_SchemeHeaderTransformation* value) {
_upb_sethas(msg, 22);
- *UPB_PTR_AT(msg, UPB_SIZE(140, 248), struct envoy_config_core_v3_SchemeHeaderTransformation*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(176, 304), struct envoy_config_core_v3_SchemeHeaderTransformation*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_SchemeHeaderTransformation* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_scheme_header_transformation(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_SchemeHeaderTransformation* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_scheme_header_transformation(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_config_core_v3_SchemeHeaderTransformation* sub = (struct envoy_config_core_v3_SchemeHeaderTransformation*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_scheme_header_transformation(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_SchemeHeaderTransformation*)_upb_Message_New(&envoy_config_core_v3_SchemeHeaderTransformation_msginit, arena);
@@ -783,6 +1022,32 @@ UPB_INLINE struct envoy_config_core_v3_SchemeHeaderTransformation* envoy_extensi
}
return sub;
}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_proxy_status_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* value) {
+ _upb_sethas(msg, 23);
+ *UPB_PTR_AT(msg, UPB_SIZE(180, 312), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig*) = value;
+}
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_proxy_status_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
+ struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_proxy_status_config(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_msginit, arena);
+ if (!sub) return NULL;
+ envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_proxy_status_config(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_typed_header_validation_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
+ _upb_sethas(msg, 24);
+ *UPB_PTR_AT(msg, UPB_SIZE(184, 320), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
+}
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_mutable_typed_header_validation_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_typed_header_validation_config(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
+ if (!sub) return NULL;
+ envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_set_typed_header_validation_config(msg, sub);
+ }
+ return sub;
+}
/* envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.Tracing */
@@ -809,43 +1074,82 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConne
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_client_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_client_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_client_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_v3_Percent* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_client_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_v3_Percent*);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_random_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_random_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_random_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_Percent* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_random_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_type_v3_Percent*);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_overall_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_overall_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_overall_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_v3_Percent* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_overall_sampling(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_type_v3_Percent*);
}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_verbose(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_verbose(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_max_path_tag_length(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_max_path_tag_length(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_max_path_tag_length(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_max_path_tag_length(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_custom_tags(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48)); }
-UPB_INLINE const struct envoy_type_tracing_v3_CustomTag* const* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_custom_tags(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, size_t *len) { return (const struct envoy_type_tracing_v3_CustomTag* const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len); }
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_provider(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_custom_tags(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_custom_tags(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE const struct envoy_type_tracing_v3_CustomTag* const* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_custom_tags(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, size_t* len) {
+ return (const struct envoy_type_tracing_v3_CustomTag* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_has_provider(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_clear_provider(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_trace_v3_Tracing_Http* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_provider(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct envoy_config_trace_v3_Tracing_Http*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct envoy_config_trace_v3_Tracing_Http*);
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_set_client_sampling(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, struct envoy_type_v3_Percent* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_v3_Percent*) = value;
}
-UPB_INLINE struct envoy_type_v3_Percent* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_mutable_client_sampling(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Percent* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_mutable_client_sampling(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, upb_Arena* arena) {
struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_client_sampling(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
@@ -858,7 +1162,7 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Http
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_type_v3_Percent*) = value;
}
-UPB_INLINE struct envoy_type_v3_Percent* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_mutable_random_sampling(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Percent* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_mutable_random_sampling(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, upb_Arena* arena) {
struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_random_sampling(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
@@ -871,7 +1175,7 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Http
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_type_v3_Percent*) = value;
}
-UPB_INLINE struct envoy_type_v3_Percent* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_mutable_overall_sampling(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_Percent* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_mutable_overall_sampling(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, upb_Arena* arena) {
struct envoy_type_v3_Percent* sub = (struct envoy_type_v3_Percent*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_overall_sampling(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_Percent*)_upb_Message_New(&envoy_type_v3_Percent_msginit, arena);
@@ -887,7 +1191,7 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Http
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_mutable_max_path_tag_length(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_mutable_max_path_tag_length(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_max_path_tag_length(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -896,24 +1200,23 @@ UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_filters_network_
}
return sub;
}
-UPB_INLINE struct envoy_type_tracing_v3_CustomTag** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_mutable_custom_tags(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, size_t *len) {
- return (struct envoy_type_tracing_v3_CustomTag**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
+UPB_INLINE struct envoy_type_tracing_v3_CustomTag** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_mutable_custom_tags(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, size_t* len) {
+ return (struct envoy_type_tracing_v3_CustomTag**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
}
-UPB_INLINE struct envoy_type_tracing_v3_CustomTag** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_resize_custom_tags(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_type_tracing_v3_CustomTag**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_type_tracing_v3_CustomTag** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_resize_custom_tags(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_type_tracing_v3_CustomTag**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_type_tracing_v3_CustomTag* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_add_custom_tags(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_tracing_v3_CustomTag* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_add_custom_tags(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, upb_Arena* arena) {
struct envoy_type_tracing_v3_CustomTag* sub = (struct envoy_type_tracing_v3_CustomTag*)_upb_Message_New(&envoy_type_tracing_v3_CustomTag_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(24, 48), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_set_provider(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, struct envoy_config_trace_v3_Tracing_Http* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct envoy_config_trace_v3_Tracing_Http*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct envoy_config_trace_v3_Tracing_Http*) = value;
}
-UPB_INLINE struct envoy_config_trace_v3_Tracing_Http* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_mutable_provider(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_trace_v3_Tracing_Http* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_mutable_provider(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing* msg, upb_Arena* arena) {
struct envoy_config_trace_v3_Tracing_Http* sub = (struct envoy_config_trace_v3_Tracing_Http*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_Tracing_provider(msg);
if (sub == NULL) {
sub = (struct envoy_config_trace_v3_Tracing_Http*)_upb_Message_New(&envoy_config_trace_v3_Tracing_Http_msginit, arena);
@@ -948,19 +1251,47 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConne
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_clear_unix_sockets(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_unix_sockets(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_has_cidr_ranges(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_clear_cidr_ranges(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const struct envoy_config_core_v3_CidrRange* const* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_cidr_ranges(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_CidrRange* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_set_unix_sockets(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = value;
}
+UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_mutable_cidr_ranges(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* msg, size_t* len) {
+ return (struct envoy_config_core_v3_CidrRange**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_resize_cidr_ranges(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_CidrRange**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig_add_cidr_ranges(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_InternalAddressConfig* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_CidrRange* sub = (struct envoy_config_core_v3_CidrRange*)_upb_Message_New(&envoy_config_core_v3_CidrRange_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
/* envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.SetCurrentClientCertDetails */
@@ -987,25 +1318,46 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConne
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_has_subject(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_clear_subject(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_has_subject(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_subject(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct google_protobuf_BoolValue*);
}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_clear_cert(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_cert(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_clear_dns(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
+}
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_dns(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_clear_uri(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = 0;
+}
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_uri(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool);
}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_clear_chain(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = 0;
+}
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_chain(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
}
@@ -1014,7 +1366,7 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Http
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_mutable_subject(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_mutable_subject(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_SetCurrentClientCertDetails_subject(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -1061,43 +1413,61 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConne
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_clear_upgrade_type(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_upgrade_type(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_has_filters(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* const* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_filters(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig *msg, size_t *len) { return (const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_has_enabled(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_has_filters(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_clear_filters(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* const* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_filters(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* msg, size_t* len) {
+ return (const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_has_enabled(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_clear_enabled(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_enabled(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_BoolValue*);
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_set_upgrade_type(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_mutable_filters(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig *msg, size_t *len) {
- return (envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_mutable_filters(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* msg, size_t* len) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_resize_filters(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig *msg, size_t len, upb_Arena *arena) {
- return (envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter** envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_resize_filters(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* msg, size_t len, upb_Arena* arena) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_add_filters(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_add_filters(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_set_enabled(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_mutable_enabled(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_mutable_enabled(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_UpgradeConfig_enabled(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -1132,17 +1502,31 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConne
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_has_forwarding_transformation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_clear_forwarding_transformation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_has_forwarding_transformation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_http_v3_PathTransformation* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_forwarding_transformation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_http_v3_PathTransformation*);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_has_http_filter_transformation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_has_http_filter_transformation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_clear_http_filter_transformation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_http_v3_PathTransformation* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_http_filter_transformation(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_type_http_v3_PathTransformation*);
}
@@ -1151,7 +1535,7 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Http
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_http_v3_PathTransformation*) = value;
}
-UPB_INLINE struct envoy_type_http_v3_PathTransformation* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_mutable_forwarding_transformation(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_http_v3_PathTransformation* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_mutable_forwarding_transformation(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* msg, upb_Arena* arena) {
struct envoy_type_http_v3_PathTransformation* sub = (struct envoy_type_http_v3_PathTransformation*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_forwarding_transformation(msg);
if (sub == NULL) {
sub = (struct envoy_type_http_v3_PathTransformation*)_upb_Message_New(&envoy_type_http_v3_PathTransformation_msginit, arena);
@@ -1164,7 +1548,7 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Http
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_type_http_v3_PathTransformation*) = value;
}
-UPB_INLINE struct envoy_type_http_v3_PathTransformation* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_mutable_http_filter_transformation(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_http_v3_PathTransformation* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_mutable_http_filter_transformation(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions* msg, upb_Arena* arena) {
struct envoy_type_http_v3_PathTransformation* sub = (struct envoy_type_http_v3_PathTransformation*)envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_PathNormalizationOptions_http_filter_transformation(msg);
if (sub == NULL) {
sub = (struct envoy_type_http_v3_PathTransformation*)_upb_Message_New(&envoy_type_http_v3_PathTransformation_msginit, arena);
@@ -1174,6 +1558,111 @@ UPB_INLINE struct envoy_type_http_v3_PathTransformation* envoy_extensions_filter
return sub;
}
+/* envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.ProxyStatusConfig */
+
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_new(upb_Arena* arena) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_msginit, arena);
+}
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* ret = envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* ret = envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+typedef enum {
+ envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_proxy_name_use_node_id = 5,
+ envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_proxy_name_literal_proxy_name = 6,
+ envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_proxy_name_NOT_SET = 0
+} envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_proxy_name_oneofcases;
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_proxy_name_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_proxy_name_case(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_proxy_name_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_clear_remove_details(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_remove_details(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_clear_remove_connection_termination_details(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_remove_connection_termination_details(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_clear_remove_response_flags(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_remove_response_flags(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_clear_set_recommended_response_code(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = 0;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_set_recommended_response_code(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_has_use_node_id(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_clear_use_node_id(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_proxy_name_NOT_SET);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_use_node_id(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 5, false);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_has_literal_proxy_name(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 6;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_clear_literal_proxy_name(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_proxy_name_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_literal_proxy_name(const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 6, upb_StringView_FromString(""));
+}
+
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_set_remove_details(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig *msg, bool value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = value;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_set_remove_connection_termination_details(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig *msg, bool value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_set_remove_response_flags(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig *msg, bool value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = value;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_set_set_recommended_response_code(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig *msg, bool value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = value;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_set_use_node_id(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig *msg, bool value) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 5);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_set_literal_proxy_name(envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig *msg, upb_StringView value) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 6);
+}
+
/* envoy.extensions.filters.network.http_connection_manager.v3.LocalReplyConfig */
UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_new(upb_Arena* arena) {
@@ -1199,37 +1688,52 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_LocalRepl
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_has_mappers(const envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_clear_mappers(const envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* const* envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_mappers(const envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* msg, size_t* len) {
+ return (const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_has_body_format(const envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_clear_body_format(const envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_has_mappers(const envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* const* envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_mappers(const envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig *msg, size_t *len) { return (const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_has_body_format(const envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_SubstitutionFormatString* envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_body_format(const envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_SubstitutionFormatString*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_config_core_v3_SubstitutionFormatString*);
}
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper** envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_mutable_mappers(envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig *msg, size_t *len) {
- return (envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper** envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_mutable_mappers(envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* msg, size_t* len) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper** envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_resize_mappers(envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig *msg, size_t len, upb_Arena *arena) {
- return (envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper** envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_resize_mappers(envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* msg, size_t len, upb_Arena* arena) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_add_mappers(envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_add_mappers(envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_set_body_format(envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig *msg, struct envoy_config_core_v3_SubstitutionFormatString* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_SubstitutionFormatString*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_config_core_v3_SubstitutionFormatString*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_SubstitutionFormatString* envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_mutable_body_format(envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_SubstitutionFormatString* envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_mutable_body_format(envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_SubstitutionFormatString* sub = (struct envoy_config_core_v3_SubstitutionFormatString*)envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_body_format(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_SubstitutionFormatString*)_upb_Message_New(&envoy_config_core_v3_SubstitutionFormatString_msginit, arena);
@@ -1264,36 +1768,67 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ResponseM
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_has_filter(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_clear_filter(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_has_filter(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_accesslog_v3_AccessLogFilter* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_filter(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_accesslog_v3_AccessLogFilter*);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_has_status_code(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_has_status_code(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_clear_status_code(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_status_code(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_has_body(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_has_body(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_clear_body(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_body(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_DataSource*);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_has_body_format_override(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_has_body_format_override(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_clear_body_format_override(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_SubstitutionFormatString* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_body_format_override(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_config_core_v3_SubstitutionFormatString*);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_has_headers_to_add(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_headers_to_add(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper *msg, size_t *len) { return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len); }
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_has_headers_to_add(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_clear_headers_to_add(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE const struct envoy_config_core_v3_HeaderValueOption* const* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_headers_to_add(const envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_HeaderValueOption* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len);
+}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_set_filter(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper *msg, struct envoy_config_accesslog_v3_AccessLogFilter* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_accesslog_v3_AccessLogFilter*) = value;
}
-UPB_INLINE struct envoy_config_accesslog_v3_AccessLogFilter* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_mutable_filter(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_accesslog_v3_AccessLogFilter* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_mutable_filter(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg, upb_Arena* arena) {
struct envoy_config_accesslog_v3_AccessLogFilter* sub = (struct envoy_config_accesslog_v3_AccessLogFilter*)envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_filter(msg);
if (sub == NULL) {
sub = (struct envoy_config_accesslog_v3_AccessLogFilter*)_upb_Message_New(&envoy_config_accesslog_v3_AccessLogFilter_msginit, arena);
@@ -1306,7 +1841,7 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Resp
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_mutable_status_code(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_mutable_status_code(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_status_code(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -1319,7 +1854,7 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Resp
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_mutable_body(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_mutable_body(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_body(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -1332,7 +1867,7 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Resp
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_config_core_v3_SubstitutionFormatString*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_SubstitutionFormatString* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_mutable_body_format_override(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_SubstitutionFormatString* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_mutable_body_format_override(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg, upb_Arena* arena) {
struct envoy_config_core_v3_SubstitutionFormatString* sub = (struct envoy_config_core_v3_SubstitutionFormatString*)envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_body_format_override(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_SubstitutionFormatString*)_upb_Message_New(&envoy_config_core_v3_SubstitutionFormatString_msginit, arena);
@@ -1341,16 +1876,15 @@ UPB_INLINE struct envoy_config_core_v3_SubstitutionFormatString* envoy_extension
}
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_mutable_headers_to_add(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper *msg, size_t *len) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_mutable_headers_to_add(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg, size_t* len) {
return (struct envoy_config_core_v3_HeaderValueOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_resize_headers_to_add(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption** envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_resize_headers_to_add(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg, size_t len, upb_Arena* arena) {
return (struct envoy_config_core_v3_HeaderValueOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_add_headers_to_add(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_HeaderValueOption* envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper_add_headers_to_add(envoy_extensions_filters_network_http_connection_manager_v3_ResponseMapper* msg, upb_Arena* arena) {
struct envoy_config_core_v3_HeaderValueOption* sub = (struct envoy_config_core_v3_HeaderValueOption*)_upb_Message_New(&envoy_config_core_v3_HeaderValueOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1380,25 +1914,37 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_Rds* envo
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_Rds_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_Rds* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_Rds_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_Rds_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_Rds_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_Rds* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_Rds_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_Rds_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_Rds_has_config_source(const envoy_extensions_filters_network_http_connection_manager_v3_Rds* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Rds_clear_config_source(const envoy_extensions_filters_network_http_connection_manager_v3_Rds* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_Rds_has_config_source(const envoy_extensions_filters_network_http_connection_manager_v3_Rds *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_extensions_filters_network_http_connection_manager_v3_Rds_config_source(const envoy_extensions_filters_network_http_connection_manager_v3_Rds* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_ConfigSource*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_ConfigSource*);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Rds_clear_route_config_name(const envoy_extensions_filters_network_http_connection_manager_v3_Rds* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_Rds_route_config_name(const envoy_extensions_filters_network_http_connection_manager_v3_Rds* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Rds_set_config_source(envoy_extensions_filters_network_http_connection_manager_v3_Rds *msg, struct envoy_config_core_v3_ConfigSource* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_ConfigSource*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_ConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_extensions_filters_network_http_connection_manager_v3_Rds_mutable_config_source(envoy_extensions_filters_network_http_connection_manager_v3_Rds *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_extensions_filters_network_http_connection_manager_v3_Rds_mutable_config_source(envoy_extensions_filters_network_http_connection_manager_v3_Rds* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_extensions_filters_network_http_connection_manager_v3_Rds_config_source(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
@@ -1408,7 +1954,7 @@ UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_extensions_filters_ne
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Rds_set_route_config_name(envoy_extensions_filters_network_http_connection_manager_v3_Rds *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
/* envoy.extensions.filters.network.http_connection_manager.v3.ScopedRouteConfigurationsList */
@@ -1436,25 +1982,35 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRou
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_has_scoped_route_configurations(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_clear_scoped_route_configurations(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const struct envoy_config_route_v3_ScopedRouteConfiguration* const* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_scoped_route_configurations(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList* msg, size_t* len) {
+ return (const struct envoy_config_route_v3_ScopedRouteConfiguration* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_has_scoped_route_configurations(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const struct envoy_config_route_v3_ScopedRouteConfiguration* const* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_scoped_route_configurations(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList *msg, size_t *len) { return (const struct envoy_config_route_v3_ScopedRouteConfiguration* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE struct envoy_config_route_v3_ScopedRouteConfiguration** envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_mutable_scoped_route_configurations(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList *msg, size_t *len) {
+UPB_INLINE struct envoy_config_route_v3_ScopedRouteConfiguration** envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_mutable_scoped_route_configurations(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList* msg, size_t* len) {
return (struct envoy_config_route_v3_ScopedRouteConfiguration**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE struct envoy_config_route_v3_ScopedRouteConfiguration** envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_resize_scoped_route_configurations(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_ScopedRouteConfiguration** envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_resize_scoped_route_configurations(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList* msg, size_t len, upb_Arena* arena) {
return (struct envoy_config_route_v3_ScopedRouteConfiguration**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_route_v3_ScopedRouteConfiguration* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_add_scoped_route_configurations(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_route_v3_ScopedRouteConfiguration* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_add_scoped_route_configurations(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList* msg, upb_Arena* arena) {
struct envoy_config_route_v3_ScopedRouteConfiguration* sub = (struct envoy_config_route_v3_ScopedRouteConfiguration*)_upb_Message_New(&envoy_config_route_v3_ScopedRouteConfiguration_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1484,43 +2040,75 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRou
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_config_specifier_scoped_route_configurations_list = 4,
envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_config_specifier_scoped_rds = 5,
envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_config_specifier_NOT_SET = 0
} envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_config_specifier_oneofcases;
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_config_specifier_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_config_specifier_case(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) { return (envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_config_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(24, 48), int32_t); }
-
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_config_specifier_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_config_specifier_case(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_config_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_clear_name(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_name(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_has_scope_key_builder(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_clear_scope_key_builder(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_has_scope_key_builder(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_scope_key_builder(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_has_rds_config_source(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_clear_rds_config_source(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_has_rds_config_source(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_rds_config_source(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_config_core_v3_ConfigSource*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct envoy_config_core_v3_ConfigSource*);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_has_scoped_route_configurations_list(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 4;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_clear_scoped_route_configurations_list(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList*, UPB_SIZE(24, 40), 0, UPB_SIZE(4, 4), envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_config_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_scoped_route_configurations_list(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList*, UPB_SIZE(24, 40), UPB_SIZE(4, 4), 4, NULL);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_has_scoped_rds(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_clear_scoped_rds(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds*, UPB_SIZE(24, 40), 0, UPB_SIZE(4, 4), envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_config_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_scoped_rds(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds*, UPB_SIZE(24, 40), UPB_SIZE(4, 4), 5, NULL);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_has_scoped_route_configurations_list(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg) { return _upb_getoneofcase(msg, UPB_SIZE(24, 48)) == 4; }
-UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_scoped_route_configurations_list(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg) { return UPB_READ_ONEOF(msg, const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList*, UPB_SIZE(20, 40), UPB_SIZE(24, 48), 4, NULL); }
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_has_scoped_rds(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg) { return _upb_getoneofcase(msg, UPB_SIZE(24, 48)) == 5; }
-UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_scoped_rds(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg) { return UPB_READ_ONEOF(msg, const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds*, UPB_SIZE(20, 40), UPB_SIZE(24, 48), 5, NULL); }
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_set_name(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_set_scope_key_builder(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder*) = value;
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_mutable_scope_key_builder(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_mutable_scope_key_builder(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder*)envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_scope_key_builder(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_msginit, arena);
@@ -1531,9 +2119,9 @@ UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_Sc
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_set_rds_config_source(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg, struct envoy_config_core_v3_ConfigSource* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_config_core_v3_ConfigSource*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct envoy_config_core_v3_ConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_mutable_rds_config_source(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_mutable_rds_config_source(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_rds_config_source(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
@@ -1543,9 +2131,9 @@ UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_extensions_filters_ne
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_set_scoped_route_configurations_list(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList* value) {
- UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList*, UPB_SIZE(20, 40), value, UPB_SIZE(24, 48), 4);
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList*, UPB_SIZE(24, 40), value, UPB_SIZE(4, 4), 4);
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_mutable_scoped_route_configurations_list(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_mutable_scoped_route_configurations_list(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList*)envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_scoped_route_configurations_list(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRouteConfigurationsList_msginit, arena);
@@ -1555,9 +2143,9 @@ UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_Sc
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_set_scoped_rds(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds* value) {
- UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds*, UPB_SIZE(20, 40), value, UPB_SIZE(24, 48), 5);
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds*, UPB_SIZE(24, 40), value, UPB_SIZE(4, 4), 5);
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_mutable_scoped_rds(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_mutable_scoped_rds(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds*)envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_scoped_rds(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_msginit, arena);
@@ -1592,25 +2180,35 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRou
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_has_fragments(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_clear_fragments(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* const* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_fragments(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder* msg, size_t* len) {
+ return (const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_has_fragments(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* const* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_fragments(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder *msg, size_t *len) { return (const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder** envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_mutable_fragments(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder *msg, size_t *len) {
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder** envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_mutable_fragments(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder* msg, size_t* len) {
return (envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder** envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_resize_fragments(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder** envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_resize_fragments(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder* msg, size_t len, upb_Arena* arena) {
return (envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_add_fragments(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_add_fragments(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1640,25 +2238,37 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRou
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_type_header_value_extractor = 1,
envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_type_NOT_SET = 0
} envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_type_oneofcases;
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_type_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_type_case(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* msg) { return (envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_has_header_value_extractor(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_header_value_extractor(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder *msg) { return UPB_READ_ONEOF(msg, const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_type_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_type_case(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* msg) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_has_header_value_extractor(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_clear_header_value_extractor(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_type_NOT_SET);
+}
+UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_header_value_extractor(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_set_header_value_extractor(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder *msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* value) {
- UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_mutable_header_value_extractor(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_mutable_header_value_extractor(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor*)envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_header_value_extractor(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_msginit, arena);
@@ -1693,43 +2303,68 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRou
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_extract_type_index = 3,
envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_extract_type_element = 4,
envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_extract_type_NOT_SET = 0
} envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_extract_type_oneofcases;
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_extract_type_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_extract_type_case(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg) { return (envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_extract_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(20, 40), int32_t); }
-
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_extract_type_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_extract_type_case(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_extract_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_clear_name(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_name(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_clear_element_separator(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_element_separator(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_has_index(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_clear_index(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg) {
+ UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(4, 40), 0, UPB_SIZE(0, 0), envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_extract_type_NOT_SET);
+}
+UPB_INLINE uint32_t envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_index(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg) {
+ return UPB_READ_ONEOF(msg, uint32_t, UPB_SIZE(4, 40), UPB_SIZE(0, 0), 3, _upb_UInt32_FromU(0u));
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_has_element(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_clear_element(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement*, UPB_SIZE(4, 40), 0, UPB_SIZE(0, 0), envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_extract_type_NOT_SET);
+}
+UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_element(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement*, UPB_SIZE(4, 40), UPB_SIZE(0, 0), 4, NULL);
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_has_index(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 3; }
-UPB_INLINE uint32_t envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_index(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor *msg) { return UPB_READ_ONEOF(msg, uint32_t, UPB_SIZE(16, 32), UPB_SIZE(20, 40), 3, 0); }
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_has_element(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor *msg) { return _upb_getoneofcase(msg, UPB_SIZE(20, 40)) == 4; }
-UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_element(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor *msg) { return UPB_READ_ONEOF(msg, const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement*, UPB_SIZE(16, 32), UPB_SIZE(20, 40), 4, NULL); }
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_set_name(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_set_element_separator(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_set_index(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor *msg, uint32_t value) {
- UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(16, 32), value, UPB_SIZE(20, 40), 3);
+ UPB_WRITE_ONEOF(msg, uint32_t, UPB_SIZE(4, 40), value, UPB_SIZE(0, 0), 3);
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_set_element(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor *msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement* value) {
- UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement*, UPB_SIZE(16, 32), value, UPB_SIZE(20, 40), 4);
+ UPB_WRITE_ONEOF(msg, envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement*, UPB_SIZE(4, 40), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_mutable_element(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_mutable_element(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement*)envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_element(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement_msginit, arena);
@@ -1764,15 +2399,25 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRou
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement_clear_separator(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement_separator(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement_clear_key(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement_key(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRoutes_ScopeKeyBuilder_FragmentBuilder_HeaderValueExtractor_KvElement* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
@@ -1809,25 +2454,37 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_has_scoped_rds_config_source(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_clear_scoped_rds_config_source(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_has_scoped_rds_config_source(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_scoped_rds_config_source(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_ConfigSource*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_ConfigSource*);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_clear_srds_resources_locator(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_srds_resources_locator(const envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_set_scoped_rds_config_source(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds *msg, struct envoy_config_core_v3_ConfigSource* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_ConfigSource*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_ConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_mutable_scoped_rds_config_source(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_mutable_scoped_rds_config_source(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_scoped_rds_config_source(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
@@ -1837,7 +2494,7 @@ UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_extensions_filters_ne
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds_set_srds_resources_locator(envoy_extensions_filters_network_http_connection_manager_v3_ScopedRds *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
/* envoy.extensions.filters.network.http_connection_manager.v3.HttpFilter */
@@ -1865,37 +2522,62 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpFilte
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_type_typed_config = 4,
envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_type_config_discovery = 5,
envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_type_NOT_SET = 0
} envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_type_oneofcases;
-UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_type_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_type_case(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg) { return (envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(16, 32), int32_t); }
-
+UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_type_oneofcases envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_type_case(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg) {
+ return (envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_clear_name(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_name(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_has_typed_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_clear_typed_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(16, 24), 0, UPB_SIZE(0, 0), envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_type_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_typed_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(16, 24), UPB_SIZE(0, 0), 4, NULL);
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_has_config_discovery(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_clear_config_discovery(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_ExtensionConfigSource*, UPB_SIZE(16, 24), 0, UPB_SIZE(0, 0), envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_type_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_ExtensionConfigSource* envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_discovery(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_ExtensionConfigSource*, UPB_SIZE(16, 24), UPB_SIZE(0, 0), 5, NULL);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_clear_is_optional(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = 0;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_has_typed_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(16, 32)) == 4; }
-UPB_INLINE const struct google_protobuf_Any* envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_typed_config(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(12, 24), UPB_SIZE(16, 32), 4, NULL); }
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_has_config_discovery(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter *msg) { return _upb_getoneofcase(msg, UPB_SIZE(16, 32)) == 5; }
-UPB_INLINE const struct envoy_config_core_v3_ExtensionConfigSource* envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_discovery(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_ExtensionConfigSource*, UPB_SIZE(12, 24), UPB_SIZE(16, 32), 5, NULL); }
UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_is_optional(const envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_set_name(envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_set_typed_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter *msg, struct google_protobuf_Any* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), value, UPB_SIZE(16, 32), 4);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(16, 24), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct google_protobuf_Any* envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_mutable_typed_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_mutable_typed_config(envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -1905,9 +2587,9 @@ UPB_INLINE struct google_protobuf_Any* envoy_extensions_filters_network_http_con
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_set_config_discovery(envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter *msg, struct envoy_config_core_v3_ExtensionConfigSource* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_ExtensionConfigSource*, UPB_SIZE(12, 24), value, UPB_SIZE(16, 32), 5);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_ExtensionConfigSource*, UPB_SIZE(16, 24), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct envoy_config_core_v3_ExtensionConfigSource* envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_mutable_config_discovery(envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ExtensionConfigSource* envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_mutable_config_discovery(envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ExtensionConfigSource* sub = (struct envoy_config_core_v3_ExtensionConfigSource*)envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_config_discovery(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ExtensionConfigSource*)_upb_Message_New(&envoy_config_core_v3_ExtensionConfigSource_msginit, arena);
@@ -1917,7 +2599,7 @@ UPB_INLINE struct envoy_config_core_v3_ExtensionConfigSource* envoy_extensions_f
return sub;
}
UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_set_is_optional(envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = value;
}
/* envoy.extensions.filters.network.http_connection_manager.v3.RequestIDExtension */
@@ -1945,13 +2627,22 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_RequestID
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_has_typed_config(const envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_clear_typed_config(const envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_has_typed_config(const envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Any* envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_typed_config(const envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Any*);
}
@@ -1960,7 +2651,7 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Requ
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_mutable_typed_config(envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_mutable_typed_config(envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_extensions_filters_network_http_connection_manager_v3_RequestIDExtension_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -1995,13 +2686,22 @@ UPB_INLINE envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobi
return ret;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_serialize(const envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_serialize_ex(const envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_has_config(const envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_clear_config(const envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_has_config(const envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_config(const envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager*);
}
@@ -2010,7 +2710,7 @@ UPB_INLINE void envoy_extensions_filters_network_http_connection_manager_v3_Envo
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager*) = value;
}
-UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_mutable_config(envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_mutable_config(envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager* msg, upb_Arena* arena) {
struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager* sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager*)envoy_extensions_filters_network_http_connection_manager_v3_EnvoyMobileHttpConnectionManager_config(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager*)_upb_Message_New(&envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c
new file mode 100644
index 0000000000..23a52cab89
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c
@@ -0,0 +1,52 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#include <stddef.h>
+#include "upb/msg_internal.h"
+#include "envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h"
+#include "google/protobuf/wrappers.upb.h"
+#include "udpa/annotations/status.upb.h"
+#include "validate/validate.upb.h"
+
+#include "upb/port_def.inc"
+
+static const upb_MiniTable_Sub envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_submsgs[3] = {
+ {.submsg = &google_protobuf_UInt64Value_msginit},
+ {.submsg = &google_protobuf_UInt64Value_msginit},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+};
+
+static const upb_MiniTable_Field envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash__fields[5] = {
+ {1, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 24), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 32), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_msginit = {
+ &envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_submsgs[0],
+ &envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash__fields[0],
+ UPB_SIZE(24, 40), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
+};
+
+static const upb_MiniTable *messages_layout[1] = {
+ &envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_msginit,
+};
+
+const upb_MiniTable_File envoy_extensions_load_balancing_policies_ring_hash_v3_ring_hash_proto_upb_file_layout = {
+ messages_layout,
+ NULL,
+ NULL,
+ 1,
+ 0,
+ 0,
+};
+
+#include "upb/port_undef.inc"
+
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h
new file mode 100644
index 0000000000..bf1b599f67
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h
@@ -0,0 +1,168 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#ifndef ENVOY_EXTENSIONS_LOAD_BALANCING_POLICIES_RING_HASH_V3_RING_HASH_PROTO_UPB_H_
+#define ENVOY_EXTENSIONS_LOAD_BALANCING_POLICIES_RING_HASH_V3_RING_HASH_PROTO_UPB_H_
+
+#include "upb/msg_internal.h"
+#include "upb/decode.h"
+#include "upb/decode_fast.h"
+#include "upb/encode.h"
+
+#include "upb/port_def.inc"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash;
+typedef struct envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash;
+extern const upb_MiniTable envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_msginit;
+struct google_protobuf_UInt32Value;
+struct google_protobuf_UInt64Value;
+extern const upb_MiniTable google_protobuf_UInt32Value_msginit;
+extern const upb_MiniTable google_protobuf_UInt64Value_msginit;
+
+typedef enum {
+ envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_DEFAULT_HASH = 0,
+ envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_XX_HASH = 1,
+ envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_MURMUR_HASH_2 = 2
+} envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_HashFunction;
+
+
+
+/* envoy.extensions.load_balancing_policies.ring_hash.v3.RingHash */
+
+UPB_INLINE envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_new(upb_Arena* arena) {
+ return (envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash*)_upb_Message_New(&envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_msginit, arena);
+}
+UPB_INLINE envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* ret = envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* ret = envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_serialize(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_serialize_ex(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_clear_hash_function(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
+UPB_INLINE int32_t envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_hash_function(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_has_minimum_ring_size(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_clear_minimum_ring_size(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_UInt64Value* envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_minimum_ring_size(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct google_protobuf_UInt64Value*);
+}
+UPB_INLINE bool envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_has_maximum_ring_size(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_clear_maximum_ring_size(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_UInt64Value* envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_maximum_ring_size(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_UInt64Value*);
+}
+UPB_INLINE void envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_clear_use_hostname_for_hashing(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
+}
+UPB_INLINE bool envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_use_hostname_for_hashing(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+}
+UPB_INLINE bool envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_has_hash_balance_factor(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_clear_hash_balance_factor(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_UInt32Value* envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_hash_balance_factor(const envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_UInt32Value*);
+}
+
+UPB_INLINE void envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_set_hash_function(envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash *msg, int32_t value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
+}
+UPB_INLINE void envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_set_minimum_ring_size(envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash *msg, struct google_protobuf_UInt64Value* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct google_protobuf_UInt64Value*) = value;
+}
+UPB_INLINE struct google_protobuf_UInt64Value* envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_mutable_minimum_ring_size(envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg, upb_Arena* arena) {
+ struct google_protobuf_UInt64Value* sub = (struct google_protobuf_UInt64Value*)envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_minimum_ring_size(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_UInt64Value*)_upb_Message_New(&google_protobuf_UInt64Value_msginit, arena);
+ if (!sub) return NULL;
+ envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_set_minimum_ring_size(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_set_maximum_ring_size(envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash *msg, struct google_protobuf_UInt64Value* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_UInt64Value*) = value;
+}
+UPB_INLINE struct google_protobuf_UInt64Value* envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_mutable_maximum_ring_size(envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg, upb_Arena* arena) {
+ struct google_protobuf_UInt64Value* sub = (struct google_protobuf_UInt64Value*)envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_maximum_ring_size(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_UInt64Value*)_upb_Message_New(&google_protobuf_UInt64Value_msginit, arena);
+ if (!sub) return NULL;
+ envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_set_maximum_ring_size(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_set_use_hostname_for_hashing(envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash *msg, bool value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
+}
+UPB_INLINE void envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_set_hash_balance_factor(envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash *msg, struct google_protobuf_UInt32Value* value) {
+ _upb_sethas(msg, 3);
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_UInt32Value*) = value;
+}
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_mutable_hash_balance_factor(envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash* msg, upb_Arena* arena) {
+ struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_hash_balance_factor(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
+ if (!sub) return NULL;
+ envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_set_hash_balance_factor(msg, sub);
+ }
+ return sub;
+}
+
+extern const upb_MiniTable_File envoy_extensions_load_balancing_policies_ring_hash_v3_ring_hash_proto_upb_file_layout;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* ENVOY_EXTENSIONS_LOAD_BALANCING_POLICIES_RING_HASH_V3_RING_HASH_PROTO_UPB_H_ */
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c
new file mode 100644
index 0000000000..0544401d58
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c
@@ -0,0 +1,46 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#include <stddef.h>
+#include "upb/msg_internal.h"
+#include "envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h"
+#include "envoy/config/cluster/v3/cluster.upb.h"
+#include "udpa/annotations/status.upb.h"
+#include "validate/validate.upb.h"
+
+#include "upb/port_def.inc"
+
+static const upb_MiniTable_Sub envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_submsgs[1] = {
+ {.submsg = &envoy_config_cluster_v3_LoadBalancingPolicy_msginit},
+};
+
+static const upb_MiniTable_Field envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality__fields[1] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_msginit = {
+ &envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_submsgs[0],
+ &envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality__fields[0],
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
+};
+
+static const upb_MiniTable *messages_layout[1] = {
+ &envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_msginit,
+};
+
+const upb_MiniTable_File envoy_extensions_load_balancing_policies_wrr_locality_v3_wrr_locality_proto_upb_file_layout = {
+ messages_layout,
+ NULL,
+ NULL,
+ 1,
+ 0,
+ 0,
+};
+
+#include "upb/port_undef.inc"
+
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h
new file mode 100644
index 0000000000..407af554d9
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h
@@ -0,0 +1,98 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#ifndef ENVOY_EXTENSIONS_LOAD_BALANCING_POLICIES_WRR_LOCALITY_V3_WRR_LOCALITY_PROTO_UPB_H_
+#define ENVOY_EXTENSIONS_LOAD_BALANCING_POLICIES_WRR_LOCALITY_V3_WRR_LOCALITY_PROTO_UPB_H_
+
+#include "upb/msg_internal.h"
+#include "upb/decode.h"
+#include "upb/decode_fast.h"
+#include "upb/encode.h"
+
+#include "upb/port_def.inc"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality;
+typedef struct envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality;
+extern const upb_MiniTable envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_msginit;
+struct envoy_config_cluster_v3_LoadBalancingPolicy;
+extern const upb_MiniTable envoy_config_cluster_v3_LoadBalancingPolicy_msginit;
+
+
+
+/* envoy.extensions.load_balancing_policies.wrr_locality.v3.WrrLocality */
+
+UPB_INLINE envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality* envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_new(upb_Arena* arena) {
+ return (envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality*)_upb_Message_New(&envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_msginit, arena);
+}
+UPB_INLINE envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality* envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality* ret = envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality* envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality* ret = envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_serialize(const envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_serialize_ex(const envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_has_endpoint_picking_policy(const envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_clear_endpoint_picking_policy(const envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct envoy_config_cluster_v3_LoadBalancingPolicy* envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_endpoint_picking_policy(const envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_cluster_v3_LoadBalancingPolicy*);
+}
+
+UPB_INLINE void envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_set_endpoint_picking_policy(envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality *msg, struct envoy_config_cluster_v3_LoadBalancingPolicy* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_cluster_v3_LoadBalancingPolicy*) = value;
+}
+UPB_INLINE struct envoy_config_cluster_v3_LoadBalancingPolicy* envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_mutable_endpoint_picking_policy(envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality* msg, upb_Arena* arena) {
+ struct envoy_config_cluster_v3_LoadBalancingPolicy* sub = (struct envoy_config_cluster_v3_LoadBalancingPolicy*)envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_endpoint_picking_policy(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_config_cluster_v3_LoadBalancingPolicy*)_upb_Message_New(&envoy_config_cluster_v3_LoadBalancingPolicy_msginit, arena);
+ if (!sub) return NULL;
+ envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_set_endpoint_picking_policy(msg, sub);
+ }
+ return sub;
+}
+
+extern const upb_MiniTable_File envoy_extensions_load_balancing_policies_wrr_locality_v3_wrr_locality_proto_upb_file_layout;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* ENVOY_EXTENSIONS_LOAD_BALANCING_POLICIES_WRR_LOCALITY_V3_WRR_LOCALITY_PROTO_UPB_H_ */
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c
index 170e0bcf0c..0c46147d6d 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c
@@ -24,16 +24,16 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_TlsParameters__fields[4] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 16), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_TlsParameters_msginit = {
NULL,
&envoy_extensions_transport_sockets_tls_v3_TlsParameters__fields[0],
- UPB_SIZE(16, 24), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(16, 24), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_submsgs[1] = {
@@ -41,37 +41,42 @@ static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_Private
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_msginit = {
&envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_TlsCertificate_submsgs[3] = {
+static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_TlsCertificate_submsgs[8] = {
+ {.submsg = &envoy_config_core_v3_DataSource_msginit},
+ {.submsg = &envoy_config_core_v3_DataSource_msginit},
+ {.submsg = &envoy_config_core_v3_DataSource_msginit},
+ {.submsg = &envoy_config_core_v3_DataSource_msginit},
{.submsg = &envoy_config_core_v3_DataSource_msginit},
- {.submsg = &envoy_config_core_v3_WatchedDirectory_msginit},
{.submsg = &envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_msginit},
+ {.submsg = &envoy_config_core_v3_WatchedDirectory_msginit},
+ {.submsg = &envoy_config_core_v3_DataSource_msginit},
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_TlsCertificate__fields[8] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 4, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(32, 64), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(20, 40), 5, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(24, 48), 6, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(28, 56), 7, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 40), UPB_SIZE(0, 0), 4, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 48), UPB_SIZE(5, 5), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(28, 56), UPB_SIZE(6, 6), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(32, 64), UPB_SIZE(7, 7), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_TlsCertificate_msginit = {
&envoy_extensions_transport_sockets_tls_v3_TlsCertificate_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_TlsCertificate__fields[0],
- UPB_SIZE(40, 72), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(40, 72), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_submsgs[1] = {
@@ -79,24 +84,24 @@ static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_TlsSess
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_msginit = {
&envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_msginit = {
NULL,
&envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_submsgs[1] = {
@@ -104,46 +109,49 @@ static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_Subject
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher__fields[2] = {
- {1, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_msginit = {
&envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher__fields[0],
- UPB_SIZE(16, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_submsgs[7] = {
+static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_submsgs[9] = {
{.submsg = &envoy_config_core_v3_DataSource_msginit},
- {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &envoy_config_core_v3_DataSource_msginit},
+ {.submsg = &envoy_type_matcher_v3_StringMatcher_msginit},
{.submsg = &envoy_config_core_v3_WatchedDirectory_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
{.submsg = &envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_msginit},
{.submsg = &envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_msginit},
- {.submsg = &envoy_type_matcher_v3_StringMatcher_msginit},
- {.submsg = &google_protobuf_BoolValue_msginit},
-};
-
-static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext__fields[13] = {
- {1, UPB_SIZE(12, 16), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(36, 64), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(40, 72), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(16, 24), 2, 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(20, 32), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(8, 8), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {9, UPB_SIZE(44, 80), 0, 5, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {11, UPB_SIZE(24, 40), 4, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(28, 48), 5, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {13, UPB_SIZE(32, 56), 6, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {14, UPB_SIZE(9, 9), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {15, UPB_SIZE(48, 88), 0, 4, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {.submsg = &google_protobuf_UInt32Value_msginit},
+};
+
+static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext__fields[14] = {
+ {1, UPB_SIZE(12, 16), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 40), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(28, 48), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(32, 56), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(36, 64), UPB_SIZE(4, 4), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(40, 72), UPB_SIZE(5, 5), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(44, 80), UPB_SIZE(6, 6), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(48, 88), UPB_SIZE(0, 0), 7, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {16, UPB_SIZE(52, 96), UPB_SIZE(7, 7), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_msginit = {
&envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext__fields[0],
- UPB_SIZE(56, 96), 13, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(56, 104), 14, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable *messages_layout[7] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h
index cd528f36d2..a375c1c38e 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h
@@ -47,12 +47,14 @@ struct envoy_config_core_v3_WatchedDirectory;
struct envoy_type_matcher_v3_StringMatcher;
struct google_protobuf_Any;
struct google_protobuf_BoolValue;
+struct google_protobuf_UInt32Value;
extern const upb_MiniTable envoy_config_core_v3_DataSource_msginit;
extern const upb_MiniTable envoy_config_core_v3_TypedExtensionConfig_msginit;
extern const upb_MiniTable envoy_config_core_v3_WatchedDirectory_msginit;
extern const upb_MiniTable envoy_type_matcher_v3_StringMatcher_msginit;
extern const upb_MiniTable google_protobuf_Any_msginit;
extern const upb_MiniTable google_protobuf_BoolValue_msginit;
+extern const upb_MiniTable google_protobuf_UInt32Value_msginit;
typedef enum {
envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_VERIFY_TRUST_CHAIN = 0,
@@ -102,20 +104,40 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_TlsParameters* envoy_extens
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_TlsParameters_serialize(const envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_TlsParameters_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_TlsParameters_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_TlsParameters_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_TlsParameters_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_TlsParameters_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsParameters_clear_tls_minimum_protocol_version(const envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
UPB_INLINE int32_t envoy_extensions_transport_sockets_tls_v3_TlsParameters_tls_minimum_protocol_version(const envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsParameters_clear_tls_maximum_protocol_version(const envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_extensions_transport_sockets_tls_v3_TlsParameters_tls_maximum_protocol_version(const envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE upb_StringView const* envoy_extensions_transport_sockets_tls_v3_TlsParameters_cipher_suites(const envoy_extensions_transport_sockets_tls_v3_TlsParameters *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 8), len); }
-UPB_INLINE upb_StringView const* envoy_extensions_transport_sockets_tls_v3_TlsParameters_ecdh_curves(const envoy_extensions_transport_sockets_tls_v3_TlsParameters *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len); }
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsParameters_clear_cipher_suites(const envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 8));
+}
+UPB_INLINE upb_StringView const* envoy_extensions_transport_sockets_tls_v3_TlsParameters_cipher_suites(const envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 8), len);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsParameters_clear_ecdh_curves(const envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE upb_StringView const* envoy_extensions_transport_sockets_tls_v3_TlsParameters_ecdh_curves(const envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len);
+}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsParameters_set_tls_minimum_protocol_version(envoy_extensions_transport_sockets_tls_v3_TlsParameters *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
@@ -123,25 +145,23 @@ UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsParameters_set_tls_
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsParameters_set_tls_maximum_protocol_version(envoy_extensions_transport_sockets_tls_v3_TlsParameters *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
-UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_TlsParameters_mutable_cipher_suites(envoy_extensions_transport_sockets_tls_v3_TlsParameters *msg, size_t *len) {
+UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_TlsParameters_mutable_cipher_suites(envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 8), len);
}
-UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_TlsParameters_resize_cipher_suites(envoy_extensions_transport_sockets_tls_v3_TlsParameters *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_TlsParameters_resize_cipher_suites(envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 8), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsParameters_add_cipher_suites(envoy_extensions_transport_sockets_tls_v3_TlsParameters *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 8), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsParameters_add_cipher_suites(envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 8), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_TlsParameters_mutable_ecdh_curves(envoy_extensions_transport_sockets_tls_v3_TlsParameters *msg, size_t *len) {
+UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_TlsParameters_mutable_ecdh_curves(envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 16), len);
}
-UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_TlsParameters_resize_ecdh_curves(envoy_extensions_transport_sockets_tls_v3_TlsParameters *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_TlsParameters_resize_ecdh_curves(envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 16), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsParameters_add_ecdh_curves(envoy_extensions_transport_sockets_tls_v3_TlsParameters *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 16), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsParameters_add_ecdh_curves(envoy_extensions_transport_sockets_tls_v3_TlsParameters* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 16), UPB_SIZE(3, 4), &val, arena);
}
/* envoy.extensions.transport_sockets.tls.v3.PrivateKeyProvider */
@@ -169,31 +189,46 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* envoy_e
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_serialize(const envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_config_type_typed_config = 3,
envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_config_type_NOT_SET = 0
} envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_config_type_oneofcases;
-UPB_INLINE envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_config_type_oneofcases envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_config_type_case(const envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* msg) { return (envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_config_type_oneofcases envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_config_type_case(const envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* msg) {
+ return (envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_config_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_clear_provider_name(const envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_provider_name(const envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_has_typed_config(const envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_clear_typed_config(const envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_config_type_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Any* envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_typed_config(const envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_has_typed_config(const envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const struct google_protobuf_Any* envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_typed_config(const envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Any*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_set_provider_name(envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_set_typed_config(envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider *msg, struct google_protobuf_Any* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Any*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct google_protobuf_Any* envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_mutable_typed_config(envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_mutable_typed_config(envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -228,48 +263,94 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_TlsCertificate* envoy_exten
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_serialize(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_TlsCertificate_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_TlsCertificate_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_TlsCertificate_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_TlsCertificate_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_certificate_chain(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_clear_certificate_chain(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_certificate_chain(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_certificate_chain(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_DataSource*);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_private_key(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_private_key(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_clear_private_key(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_private_key(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_config_core_v3_DataSource*);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_password(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_password(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_clear_password(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_password(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_DataSource*);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_ocsp_staple(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_ocsp_staple(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_clear_ocsp_staple(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_ocsp_staple(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_config_core_v3_DataSource*);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_signed_certificate_timestamp(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 64)); }
-UPB_INLINE const struct envoy_config_core_v3_DataSource* const* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_signed_certificate_timestamp(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, size_t *len) { return (const struct envoy_config_core_v3_DataSource* const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len); }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_private_key_provider(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_signed_certificate_timestamp(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_clear_signed_certificate_timestamp(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE const struct envoy_config_core_v3_DataSource* const* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_signed_certificate_timestamp(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_DataSource* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_private_key_provider(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_clear_private_key_provider(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_private_key_provider(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider*);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_watched_directory(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_clear_watched_directory(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_watched_directory(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE const struct envoy_config_core_v3_WatchedDirectory* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_watched_directory(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct envoy_config_core_v3_WatchedDirectory*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct envoy_config_core_v3_WatchedDirectory*);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_pkcs12(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_clear_pkcs12(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsCertificate_has_pkcs12(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg) { return _upb_hasbit(msg, 7); }
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_pkcs12(const envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct envoy_config_core_v3_DataSource*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const struct envoy_config_core_v3_DataSource*);
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_set_certificate_chain(envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, struct envoy_config_core_v3_DataSource* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_certificate_chain(envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_certificate_chain(envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_extensions_transport_sockets_tls_v3_TlsCertificate_certificate_chain(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -282,7 +363,7 @@ UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_set_pri
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_private_key(envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_private_key(envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_extensions_transport_sockets_tls_v3_TlsCertificate_private_key(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -295,7 +376,7 @@ UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_set_pas
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_password(envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_password(envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_extensions_transport_sockets_tls_v3_TlsCertificate_password(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -308,7 +389,7 @@ UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_set_ocs
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_ocsp_staple(envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_ocsp_staple(envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_extensions_transport_sockets_tls_v3_TlsCertificate_ocsp_staple(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -317,24 +398,23 @@ UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_so
}
return sub;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource** envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_signed_certificate_timestamp(envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, size_t *len) {
- return (struct envoy_config_core_v3_DataSource**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
+UPB_INLINE struct envoy_config_core_v3_DataSource** envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_signed_certificate_timestamp(envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg, size_t* len) {
+ return (struct envoy_config_core_v3_DataSource**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
}
-UPB_INLINE struct envoy_config_core_v3_DataSource** envoy_extensions_transport_sockets_tls_v3_TlsCertificate_resize_signed_certificate_timestamp(envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_config_core_v3_DataSource**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_config_core_v3_DataSource** envoy_extensions_transport_sockets_tls_v3_TlsCertificate_resize_signed_certificate_timestamp(envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_DataSource**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_add_signed_certificate_timestamp(envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_add_signed_certificate_timestamp(envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(32, 64), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_set_private_key_provider(envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider*) = value;
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_private_key_provider(envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_private_key_provider(envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider* sub = (struct envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider*)envoy_extensions_transport_sockets_tls_v3_TlsCertificate_private_key_provider(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider_msginit, arena);
@@ -345,9 +425,9 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_PrivateKeyProvider*
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_set_watched_directory(envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, struct envoy_config_core_v3_WatchedDirectory* value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct envoy_config_core_v3_WatchedDirectory*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct envoy_config_core_v3_WatchedDirectory*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_WatchedDirectory* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_watched_directory(envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_WatchedDirectory* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_watched_directory(envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg, upb_Arena* arena) {
struct envoy_config_core_v3_WatchedDirectory* sub = (struct envoy_config_core_v3_WatchedDirectory*)envoy_extensions_transport_sockets_tls_v3_TlsCertificate_watched_directory(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_WatchedDirectory*)_upb_Message_New(&envoy_config_core_v3_WatchedDirectory_msginit, arena);
@@ -358,9 +438,9 @@ UPB_INLINE struct envoy_config_core_v3_WatchedDirectory* envoy_extensions_transp
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsCertificate_set_pkcs12(envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, struct envoy_config_core_v3_DataSource* value) {
_upb_sethas(msg, 7);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct envoy_config_core_v3_DataSource*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_pkcs12(envoy_extensions_transport_sockets_tls_v3_TlsCertificate *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsCertificate_mutable_pkcs12(envoy_extensions_transport_sockets_tls_v3_TlsCertificate* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_extensions_transport_sockets_tls_v3_TlsCertificate_pkcs12(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -395,25 +475,35 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* envoy
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_serialize(const envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_has_keys(const envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_clear_keys(const envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const struct envoy_config_core_v3_DataSource* const* envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_keys(const envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_DataSource* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_has_keys(const envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const struct envoy_config_core_v3_DataSource* const* envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_keys(const envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys *msg, size_t *len) { return (const struct envoy_config_core_v3_DataSource* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE struct envoy_config_core_v3_DataSource** envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_mutable_keys(envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys *msg, size_t *len) {
+UPB_INLINE struct envoy_config_core_v3_DataSource** envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_mutable_keys(envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* msg, size_t* len) {
return (struct envoy_config_core_v3_DataSource**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE struct envoy_config_core_v3_DataSource** envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_resize_keys(envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource** envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_resize_keys(envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* msg, size_t len, upb_Arena* arena) {
return (struct envoy_config_core_v3_DataSource**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_add_keys(envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_add_keys(envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -443,15 +533,25 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginIn
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_serialize(const envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_clear_instance_name(const envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_instance_name(const envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_clear_certificate_name(const envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_certificate_name(const envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
@@ -488,16 +588,28 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* envo
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_serialize(const envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_clear_san_type(const envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_san_type(const envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_has_matcher(const envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_has_matcher(const envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_clear_matcher(const envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_matcher(const envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct envoy_type_matcher_v3_StringMatcher*);
}
@@ -509,7 +621,7 @@ UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct envoy_type_matcher_v3_StringMatcher*) = value;
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_mutable_matcher(envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_mutable_matcher(envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_matcher(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StringMatcher_msginit, arena);
@@ -544,57 +656,133 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_CertificateValidationContex
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_serialize(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_trusted_ca(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_clear_trusted_ca(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_trusted_ca(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_trusted_ca(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct envoy_config_core_v3_DataSource*);
}
-UPB_INLINE upb_StringView const* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_verify_certificate_hash(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(36, 64), len); }
-UPB_INLINE upb_StringView const* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_verify_certificate_spki(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(40, 72), len); }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_require_signed_certificate_timestamp(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_clear_verify_certificate_hash(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE upb_StringView const* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_verify_certificate_hash(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(16, 24), len);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_clear_verify_certificate_spki(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 32));
+}
+UPB_INLINE upb_StringView const* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_verify_certificate_spki(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(20, 32), len);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_require_signed_certificate_timestamp(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_clear_require_signed_certificate_timestamp(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_BoolValue* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_require_signed_certificate_timestamp(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_crl(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_clear_crl(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_crl(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_crl(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct envoy_config_core_v3_DataSource*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const struct envoy_config_core_v3_DataSource*);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_clear_allow_expired_certificate(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
}
UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_allow_expired_certificate(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_match_subject_alt_names(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 56));
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_clear_match_subject_alt_names(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 56));
+}
+UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* const* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_match_subject_alt_names(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, size_t* len) {
+ return (const struct envoy_type_matcher_v3_StringMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(32, 56), len);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_clear_trust_chain_verification(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_match_subject_alt_names(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 80)); }
-UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* const* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_match_subject_alt_names(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, size_t *len) { return (const struct envoy_type_matcher_v3_StringMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(44, 80), len); }
UPB_INLINE int32_t envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_trust_chain_verification(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_watched_directory(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_watched_directory(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_clear_watched_directory(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_WatchedDirectory* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_watched_directory(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct envoy_config_core_v3_WatchedDirectory*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const struct envoy_config_core_v3_WatchedDirectory*);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_custom_validator_config(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_clear_custom_validator_config(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_custom_validator_config(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_custom_validator_config(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const struct envoy_config_core_v3_TypedExtensionConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const struct envoy_config_core_v3_TypedExtensionConfig*);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_ca_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_clear_ca_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_ca_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_ca_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance*);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_clear_only_verify_leaf_cert_crl(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
}
UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_only_verify_leaf_cert_crl(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_match_typed_subject_alt_names(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 88));
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_clear_match_typed_subject_alt_names(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ _upb_array_detach(msg, UPB_SIZE(48, 88));
+}
+UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* const* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_match_typed_subject_alt_names(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, size_t* len) {
+ return (const envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(48, 88), len);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_max_verify_depth(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_clear_max_verify_depth(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 96), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_UInt32Value* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_max_verify_depth(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(52, 96), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_match_typed_subject_alt_names(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 88)); }
-UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* const* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_match_typed_subject_alt_names(const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, size_t *len) { return (const envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(48, 88), len); }
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_set_trusted_ca(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, struct envoy_config_core_v3_DataSource* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_trusted_ca(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_trusted_ca(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_trusted_ca(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -603,31 +791,29 @@ UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_so
}
return sub;
}
-UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_verify_certificate_hash(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 64), len);
+UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_verify_certificate_hash(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 24), len);
}
-UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_resize_verify_certificate_hash(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 64), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_resize_verify_certificate_hash(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 24), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_add_verify_certificate_hash(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 64), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_add_verify_certificate_hash(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 24), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_verify_certificate_spki(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 72), len);
+UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_verify_certificate_spki(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 32), len);
}
-UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_resize_verify_certificate_spki(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 72), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_resize_verify_certificate_spki(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 32), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_add_verify_certificate_spki(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 72), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_add_verify_certificate_spki(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 32), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_set_require_signed_certificate_timestamp(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_require_signed_certificate_timestamp(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_require_signed_certificate_timestamp(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_require_signed_certificate_timestamp(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -638,9 +824,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_transport_sockets_
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_set_crl(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, struct envoy_config_core_v3_DataSource* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct envoy_config_core_v3_DataSource*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_crl(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_crl(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_crl(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -650,18 +836,17 @@ UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_so
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_set_allow_expired_certificate(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher** envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_match_subject_alt_names(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, size_t *len) {
- return (struct envoy_type_matcher_v3_StringMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 80), len);
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher** envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_match_subject_alt_names(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, size_t* len) {
+ return (struct envoy_type_matcher_v3_StringMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 56), len);
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher** envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_resize_match_subject_alt_names(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_type_matcher_v3_StringMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 80), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher** envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_resize_match_subject_alt_names(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_type_matcher_v3_StringMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 56), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_add_match_subject_alt_names(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_add_match_subject_alt_names(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StringMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(44, 80), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 56), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -670,9 +855,9 @@ UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationC
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_set_watched_directory(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, struct envoy_config_core_v3_WatchedDirectory* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct envoy_config_core_v3_WatchedDirectory*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), struct envoy_config_core_v3_WatchedDirectory*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_WatchedDirectory* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_watched_directory(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_WatchedDirectory* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_watched_directory(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, upb_Arena* arena) {
struct envoy_config_core_v3_WatchedDirectory* sub = (struct envoy_config_core_v3_WatchedDirectory*)envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_watched_directory(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_WatchedDirectory*)_upb_Message_New(&envoy_config_core_v3_WatchedDirectory_msginit, arena);
@@ -683,9 +868,9 @@ UPB_INLINE struct envoy_config_core_v3_WatchedDirectory* envoy_extensions_transp
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_set_custom_validator_config(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 48), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_custom_validator_config(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_custom_validator_config(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_custom_validator_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -696,9 +881,9 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_tr
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_set_ca_certificate_provider_instance(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 56), envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 80), envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance*) = value;
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_ca_certificate_provider_instance(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_ca_certificate_provider_instance(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* sub = (struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance*)envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_ca_certificate_provider_instance(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_msginit, arena);
@@ -708,21 +893,33 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderP
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_set_only_verify_leaf_cert_crl(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
}
-UPB_INLINE envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher** envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_match_typed_subject_alt_names(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, size_t *len) {
+UPB_INLINE envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher** envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_match_typed_subject_alt_names(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, size_t* len) {
return (envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 88), len);
}
-UPB_INLINE envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher** envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_resize_match_typed_subject_alt_names(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher** envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_resize_match_typed_subject_alt_names(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, size_t len, upb_Arena* arena) {
return (envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 88), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_add_match_typed_subject_alt_names(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_add_match_typed_subject_alt_names(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher* sub = (struct envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_SubjectAltNameMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(48, 88), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(48, 88), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_set_max_verify_depth(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext *msg, struct google_protobuf_UInt32Value* value) {
+ _upb_sethas(msg, 7);
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 96), struct google_protobuf_UInt32Value*) = value;
+}
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_mutable_max_verify_depth(envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* msg, upb_Arena* arena) {
+ struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_max_verify_depth(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
+ if (!sub) return NULL;
+ envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_set_max_verify_depth(msg, sub);
+ }
+ return sub;
+}
extern const upb_MiniTable_File envoy_extensions_transport_sockets_tls_v3_common_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c
index 75db030756..8fefcb2cc2 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c
@@ -24,13 +24,13 @@ static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_Generic
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_GenericSecret__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_GenericSecret_msginit = {
&envoy_extensions_transport_sockets_tls_v3_GenericSecret_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_GenericSecret__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_submsgs[1] = {
@@ -38,35 +38,35 @@ static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_SdsSecr
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit = {
&envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_Secret_submsgs[4] = {
- {.submsg = &envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_msginit},
- {.submsg = &envoy_extensions_transport_sockets_tls_v3_GenericSecret_msginit},
{.submsg = &envoy_extensions_transport_sockets_tls_v3_TlsCertificate_msginit},
{.submsg = &envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_msginit},
+ {.submsg = &envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_msginit},
+ {.submsg = &envoy_extensions_transport_sockets_tls_v3_GenericSecret_msginit},
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_Secret__fields[5] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_Secret_msginit = {
&envoy_extensions_transport_sockets_tls_v3_Secret_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_Secret__fields[0],
- UPB_SIZE(16, 32), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(16, 32), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
static const upb_MiniTable *messages_layout[3] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h
index 67675b390a..9937d7b889 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h
@@ -67,13 +67,22 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_GenericSecret* envoy_extens
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_GenericSecret_serialize(const envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_GenericSecret_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_GenericSecret_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_GenericSecret_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_GenericSecret_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_GenericSecret_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_GenericSecret_has_secret(const envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_GenericSecret_clear_secret(const envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_GenericSecret_has_secret(const envoy_extensions_transport_sockets_tls_v3_GenericSecret *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_GenericSecret_secret(const envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_DataSource*);
}
@@ -82,7 +91,7 @@ UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_GenericSecret_set_secr
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_GenericSecret_mutable_secret(envoy_extensions_transport_sockets_tls_v3_GenericSecret *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_GenericSecret_mutable_secret(envoy_extensions_transport_sockets_tls_v3_GenericSecret* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_extensions_transport_sockets_tls_v3_GenericSecret_secret(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
@@ -117,16 +126,28 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* envoy_exte
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_serialize(const envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_clear_name(const envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_name(const envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_has_sds_config(const envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_has_sds_config(const envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_clear_sds_config(const envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_ConfigSource* envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_sds_config(const envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_ConfigSource*);
}
@@ -138,7 +159,7 @@ UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_set_sd
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_ConfigSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_mutable_sds_config(envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ConfigSource* envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_mutable_sds_config(envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ConfigSource* sub = (struct envoy_config_core_v3_ConfigSource*)envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_sds_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ConfigSource*)_upb_Message_New(&envoy_config_core_v3_ConfigSource_msginit, arena);
@@ -173,11 +194,15 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_Secret* envoy_extensions_tr
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_Secret_serialize(const envoy_extensions_transport_sockets_tls_v3_Secret* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_Secret_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_Secret_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_Secret_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_Secret* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_Secret_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_Secret_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_extensions_transport_sockets_tls_v3_Secret_type_tls_certificate = 2,
@@ -186,27 +211,59 @@ typedef enum {
envoy_extensions_transport_sockets_tls_v3_Secret_type_generic_secret = 5,
envoy_extensions_transport_sockets_tls_v3_Secret_type_NOT_SET = 0
} envoy_extensions_transport_sockets_tls_v3_Secret_type_oneofcases;
-UPB_INLINE envoy_extensions_transport_sockets_tls_v3_Secret_type_oneofcases envoy_extensions_transport_sockets_tls_v3_Secret_type_case(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) { return (envoy_extensions_transport_sockets_tls_v3_Secret_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_extensions_transport_sockets_tls_v3_Secret_type_oneofcases envoy_extensions_transport_sockets_tls_v3_Secret_type_case(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
+ return (envoy_extensions_transport_sockets_tls_v3_Secret_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_Secret_clear_name(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_extensions_transport_sockets_tls_v3_Secret_name(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
-}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_Secret_has_tls_certificate(const envoy_extensions_transport_sockets_tls_v3_Secret *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate* envoy_extensions_transport_sockets_tls_v3_Secret_tls_certificate(const envoy_extensions_transport_sockets_tls_v3_Secret *msg) { return UPB_READ_ONEOF(msg, const struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 2, NULL); }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_Secret_has_session_ticket_keys(const envoy_extensions_transport_sockets_tls_v3_Secret *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* envoy_extensions_transport_sockets_tls_v3_Secret_session_ticket_keys(const envoy_extensions_transport_sockets_tls_v3_Secret *msg) { return UPB_READ_ONEOF(msg, const struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_Secret_has_validation_context(const envoy_extensions_transport_sockets_tls_v3_Secret *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 4; }
-UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_Secret_validation_context(const envoy_extensions_transport_sockets_tls_v3_Secret *msg) { return UPB_READ_ONEOF(msg, const struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 4, NULL); }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_Secret_has_generic_secret(const envoy_extensions_transport_sockets_tls_v3_Secret *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 5; }
-UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_GenericSecret* envoy_extensions_transport_sockets_tls_v3_Secret_generic_secret(const envoy_extensions_transport_sockets_tls_v3_Secret *msg) { return UPB_READ_ONEOF(msg, const envoy_extensions_transport_sockets_tls_v3_GenericSecret*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 5, NULL); }
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_Secret_has_tls_certificate(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_Secret_clear_tls_certificate(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_extensions_transport_sockets_tls_v3_Secret_type_NOT_SET);
+}
+UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate* envoy_extensions_transport_sockets_tls_v3_Secret_tls_certificate(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_Secret_has_session_ticket_keys(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_Secret_clear_session_ticket_keys(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_extensions_transport_sockets_tls_v3_Secret_type_NOT_SET);
+}
+UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* envoy_extensions_transport_sockets_tls_v3_Secret_session_ticket_keys(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_Secret_has_validation_context(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_Secret_clear_validation_context(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_extensions_transport_sockets_tls_v3_Secret_type_NOT_SET);
+}
+UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_Secret_validation_context(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 4, NULL);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_Secret_has_generic_secret(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_Secret_clear_generic_secret(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_extensions_transport_sockets_tls_v3_GenericSecret*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_extensions_transport_sockets_tls_v3_Secret_type_NOT_SET);
+}
+UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_GenericSecret* envoy_extensions_transport_sockets_tls_v3_Secret_generic_secret(const envoy_extensions_transport_sockets_tls_v3_Secret* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_extensions_transport_sockets_tls_v3_GenericSecret*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 5, NULL);
+}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_Secret_set_name(envoy_extensions_transport_sockets_tls_v3_Secret *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_Secret_set_tls_certificate(envoy_extensions_transport_sockets_tls_v3_Secret *msg, struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate* envoy_extensions_transport_sockets_tls_v3_Secret_mutable_tls_certificate(envoy_extensions_transport_sockets_tls_v3_Secret *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate* envoy_extensions_transport_sockets_tls_v3_Secret_mutable_tls_certificate(envoy_extensions_transport_sockets_tls_v3_Secret* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate* sub = (struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate*)envoy_extensions_transport_sockets_tls_v3_Secret_tls_certificate(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_TlsCertificate_msginit, arena);
@@ -216,9 +273,9 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate* envo
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_Secret_set_session_ticket_keys(envoy_extensions_transport_sockets_tls_v3_Secret *msg, struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* envoy_extensions_transport_sockets_tls_v3_Secret_mutable_session_ticket_keys(envoy_extensions_transport_sockets_tls_v3_Secret *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* envoy_extensions_transport_sockets_tls_v3_Secret_mutable_session_ticket_keys(envoy_extensions_transport_sockets_tls_v3_Secret* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* sub = (struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys*)envoy_extensions_transport_sockets_tls_v3_Secret_session_ticket_keys(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_msginit, arena);
@@ -228,9 +285,9 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_Secret_set_validation_context(envoy_extensions_transport_sockets_tls_v3_Secret *msg, struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 4);
+ UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_Secret_mutable_validation_context(envoy_extensions_transport_sockets_tls_v3_Secret *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_Secret_mutable_validation_context(envoy_extensions_transport_sockets_tls_v3_Secret* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* sub = (struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*)envoy_extensions_transport_sockets_tls_v3_Secret_validation_context(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_msginit, arena);
@@ -240,9 +297,9 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CertificateValidatio
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_Secret_set_generic_secret(envoy_extensions_transport_sockets_tls_v3_Secret *msg, envoy_extensions_transport_sockets_tls_v3_GenericSecret* value) {
- UPB_WRITE_ONEOF(msg, envoy_extensions_transport_sockets_tls_v3_GenericSecret*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 5);
+ UPB_WRITE_ONEOF(msg, envoy_extensions_transport_sockets_tls_v3_GenericSecret*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_GenericSecret* envoy_extensions_transport_sockets_tls_v3_Secret_mutable_generic_secret(envoy_extensions_transport_sockets_tls_v3_Secret *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_GenericSecret* envoy_extensions_transport_sockets_tls_v3_Secret_mutable_generic_secret(envoy_extensions_transport_sockets_tls_v3_Secret* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_GenericSecret* sub = (struct envoy_extensions_transport_sockets_tls_v3_GenericSecret*)envoy_extensions_transport_sockets_tls_v3_Secret_generic_secret(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_GenericSecret*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_GenericSecret_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c
index 83ae0a9681..d9941f2a77 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c
@@ -9,6 +9,7 @@
#include <stddef.h>
#include "upb/msg_internal.h"
#include "envoy/extensions/transport_sockets/tls/v3/tls.upb.h"
+#include "envoy/config/core/v3/address.upb.h"
#include "envoy/config/core/v3/extension.upb.h"
#include "envoy/extensions/transport_sockets/tls/v3/common.upb.h"
#include "envoy/extensions/transport_sockets/tls/v3/secret.upb.h"
@@ -27,75 +28,98 @@ static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_Upstrea
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext__fields[4] = {
- {1, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_msginit = {
&envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext__fields[0],
- UPB_SIZE(24, 48), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_submsgs[5] = {
+static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_submsgs[6] = {
{.submsg = &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_msginit},
- {.submsg = &envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit},
- {.submsg = &envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_msginit},
{.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &google_protobuf_BoolValue_msginit},
+ {.submsg = &envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_msginit},
+ {.submsg = &envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit},
{.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext__fields[8] = {
- {1, UPB_SIZE(8, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 16), 2, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 24), 3, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 40), UPB_SIZE(-29, -49), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(24, 40), UPB_SIZE(-29, -49), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(20, 32), 4, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(24, 40), UPB_SIZE(-29, -49), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {8, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 16), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 32), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(28, 48), UPB_SIZE(-5, -5), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(28, 48), UPB_SIZE(-5, -5), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 40), UPB_SIZE(4, 4), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(28, 48), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_msginit = {
&envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext__fields[0],
- UPB_SIZE(32, 56), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(32, 56), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
-static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_submsgs[9] = {
- {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
- {.submsg = &envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_msginit},
+static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_submsgs[2] = {
+ {.submsg = &envoy_config_core_v3_CidrRange_msginit},
+ {.submsg = &envoy_config_core_v3_CidrRange_msginit},
+};
+
+static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_TlsKeyLog__fields[3] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_msginit = {
+ &envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_submsgs[0],
+ &envoy_extensions_transport_sockets_tls_v3_TlsKeyLog__fields[0],
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_submsgs[13] = {
+ {.submsg = &envoy_extensions_transport_sockets_tls_v3_TlsParameters_msginit},
+ {.submsg = &envoy_extensions_transport_sockets_tls_v3_TlsCertificate_msginit},
{.submsg = &envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_msginit},
+ {.submsg = &envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit},
+ {.submsg = &envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit},
+ {.submsg = &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_msginit},
+ {.submsg = &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_msginit},
{.submsg = &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_msginit},
{.submsg = &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_msginit},
- {.submsg = &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_msginit},
- {.submsg = &envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit},
- {.submsg = &envoy_extensions_transport_sockets_tls_v3_TlsCertificate_msginit},
- {.submsg = &envoy_extensions_transport_sockets_tls_v3_TlsParameters_msginit},
-};
-
-static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_CommonTlsContext__fields[13] = {
- {1, UPB_SIZE(4, 8), 1, 8, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(24, 48), 0, 7, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(36, 72), UPB_SIZE(-41, -81), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(28, 56), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(32, 64), 0, 6, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(36, 72), UPB_SIZE(-41, -81), 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(36, 72), UPB_SIZE(-41, -81), 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(8, 16), 2, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(36, 72), UPB_SIZE(-41, -81), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(12, 24), 3, 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(36, 72), UPB_SIZE(-41, -81), 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {13, UPB_SIZE(16, 32), 4, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {14, UPB_SIZE(20, 40), 5, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {.submsg = &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_msginit},
+ {.submsg = &envoy_config_core_v3_TypedExtensionConfig_msginit},
+ {.submsg = &envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_msginit},
+ {.submsg = &envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_msginit},
+};
+
+static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_CommonTlsContext__fields[14] = {
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(44, 80), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(20, 32), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(44, 80), UPB_SIZE(-5, -5), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(44, 80), UPB_SIZE(-5, -5), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(24, 40), UPB_SIZE(2, 2), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(44, 80), UPB_SIZE(-5, -5), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(28, 48), UPB_SIZE(3, 3), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(44, 80), UPB_SIZE(-5, -5), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(32, 56), UPB_SIZE(4, 4), 10, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(36, 64), UPB_SIZE(5, 5), 11, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(40, 72), UPB_SIZE(6, 6), 12, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_msginit = {
&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext__fields[0],
- UPB_SIZE(48, 88), 13, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(48, 88), 14, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_submsgs[1] = {
@@ -103,50 +127,51 @@ static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_CommonT
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_msginit = {
&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_msginit = {
NULL,
&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_submsgs[4] = {
{.submsg = &envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_msginit},
+ {.submsg = &envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit},
{.submsg = &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_msginit},
{.submsg = &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_msginit},
- {.submsg = &envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit},
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext__fields[4] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 3, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 32), 4, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_msginit = {
&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext__fields[0],
- UPB_SIZE(24, 40), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable *messages_layout[6] = {
+static const upb_MiniTable *messages_layout[7] = {
&envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_msginit,
&envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_msginit,
+ &envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_msginit,
&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_msginit,
&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_msginit,
&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_msginit,
@@ -157,7 +182,7 @@ const upb_MiniTable_File envoy_extensions_transport_sockets_tls_v3_tls_proto_upb
messages_layout,
NULL,
NULL,
- 6,
+ 7,
0,
0,
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h
index dbe13e8791..d1c0533fac 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h
@@ -22,22 +22,26 @@ extern "C" {
struct envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext;
struct envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext;
+struct envoy_extensions_transport_sockets_tls_v3_TlsKeyLog;
struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext;
struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider;
struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance;
struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext;
typedef struct envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext;
typedef struct envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext;
+typedef struct envoy_extensions_transport_sockets_tls_v3_TlsKeyLog envoy_extensions_transport_sockets_tls_v3_TlsKeyLog;
typedef struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext envoy_extensions_transport_sockets_tls_v3_CommonTlsContext;
typedef struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider;
typedef struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance;
typedef struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext;
extern const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_msginit;
extern const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_msginit;
+extern const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_msginit;
extern const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_msginit;
extern const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_msginit;
extern const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_msginit;
extern const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_msginit;
+struct envoy_config_core_v3_CidrRange;
struct envoy_config_core_v3_TypedExtensionConfig;
struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance;
struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext;
@@ -48,6 +52,7 @@ struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys;
struct google_protobuf_BoolValue;
struct google_protobuf_Duration;
struct google_protobuf_UInt32Value;
+extern const upb_MiniTable envoy_config_core_v3_CidrRange_msginit;
extern const upb_MiniTable envoy_config_core_v3_TypedExtensionConfig_msginit;
extern const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_msginit;
extern const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_msginit;
@@ -92,32 +97,52 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* envoy_e
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_serialize(const envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_has_common_tls_context(const envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_clear_common_tls_context(const envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_has_common_tls_context(const envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_common_tls_context(const envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_clear_sni(const envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_sni(const envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_clear_allow_renegotiation(const envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
}
UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_allow_renegotiation(const envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_has_max_session_keys(const envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_has_max_session_keys(const envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_clear_max_session_keys(const envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_max_session_keys(const envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_UInt32Value*);
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_set_common_tls_context(envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext *msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*) = value;
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_mutable_common_tls_context(envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_mutable_common_tls_context(envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*)envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_common_tls_context(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_msginit, arena);
@@ -127,7 +152,7 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* en
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_set_sni(envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_set_allow_renegotiation(envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
@@ -136,7 +161,7 @@ UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_set
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_mutable_max_session_keys(envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_mutable_max_session_keys(envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_max_session_keys(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -171,11 +196,15 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* envoy
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_serialize(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_type_session_ticket_keys = 4,
@@ -183,39 +212,84 @@ typedef enum {
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_type_disable_stateless_session_resumption = 7,
envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_type_NOT_SET = 0
} envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_type_oneofcases;
-UPB_INLINE envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_type_oneofcases envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_type_case(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) { return (envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(28, 48), int32_t); }
-
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_has_common_tls_context(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_type_oneofcases envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_type_case(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ return (envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_has_common_tls_context(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_clear_common_tls_context(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_common_tls_context(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_has_require_client_certificate(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_clear_require_client_certificate(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_has_require_client_certificate(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_client_certificate(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_has_require_sni(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_clear_require_sni(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_has_require_sni(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct google_protobuf_BoolValue* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_sni(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_BoolValue*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_BoolValue*);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_has_session_ticket_keys(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 4;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_clear_session_ticket_keys(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys*, UPB_SIZE(28, 48), 0, UPB_SIZE(4, 4), envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_type_NOT_SET);
+}
+UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys*, UPB_SIZE(28, 48), UPB_SIZE(4, 4), 4, NULL);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_has_session_ticket_keys_sds_secret_config(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_clear_session_ticket_keys_sds_secret_config(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*, UPB_SIZE(28, 48), 0, UPB_SIZE(4, 4), envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_type_NOT_SET);
+}
+UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_sds_secret_config(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*, UPB_SIZE(28, 48), UPB_SIZE(4, 4), 5, NULL);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_has_session_timeout(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_clear_session_timeout(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_has_session_ticket_keys(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg) { return _upb_getoneofcase(msg, UPB_SIZE(28, 48)) == 4; }
-UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg) { return UPB_READ_ONEOF(msg, const struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys*, UPB_SIZE(24, 40), UPB_SIZE(28, 48), 4, NULL); }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_has_session_ticket_keys_sds_secret_config(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg) { return _upb_getoneofcase(msg, UPB_SIZE(28, 48)) == 5; }
-UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_sds_secret_config(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg) { return UPB_READ_ONEOF(msg, const struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*, UPB_SIZE(24, 40), UPB_SIZE(28, 48), 5, NULL); }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_has_session_timeout(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const struct google_protobuf_Duration* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_timeout(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_has_disable_stateless_session_resumption(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 7;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_clear_disable_stateless_session_resumption(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(28, 48), 0, UPB_SIZE(4, 4), envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_type_NOT_SET);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_disable_stateless_session_resumption(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(28, 48), UPB_SIZE(4, 4), 7, false);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_clear_ocsp_staple_policy(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_has_disable_stateless_session_resumption(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg) { return _upb_getoneofcase(msg, UPB_SIZE(28, 48)) == 7; }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_disable_stateless_session_resumption(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(24, 40), UPB_SIZE(28, 48), 7, false); }
UPB_INLINE int32_t envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_ocsp_staple_policy(const envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_set_common_tls_context(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*) = value;
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_mutable_common_tls_context(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_mutable_common_tls_context(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*)envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_common_tls_context(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_msginit, arena);
@@ -226,9 +300,9 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* en
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_set_require_client_certificate(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_mutable_require_client_certificate(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_mutable_require_client_certificate(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_client_certificate(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -239,9 +313,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_transport_sockets_
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_set_require_sni(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg, struct google_protobuf_BoolValue* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_BoolValue*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_BoolValue*) = value;
}
-UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_mutable_require_sni(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_mutable_require_sni(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg, upb_Arena* arena) {
struct google_protobuf_BoolValue* sub = (struct google_protobuf_BoolValue*)envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_sni(msg);
if (sub == NULL) {
sub = (struct google_protobuf_BoolValue*)_upb_Message_New(&google_protobuf_BoolValue_msginit, arena);
@@ -251,9 +325,9 @@ UPB_INLINE struct google_protobuf_BoolValue* envoy_extensions_transport_sockets_
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_set_session_ticket_keys(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg, struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys*, UPB_SIZE(24, 40), value, UPB_SIZE(28, 48), 4);
+ UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys*, UPB_SIZE(28, 48), value, UPB_SIZE(4, 4), 4);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_mutable_session_ticket_keys(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_mutable_session_ticket_keys(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys* sub = (struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys*)envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys_msginit, arena);
@@ -263,9 +337,9 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsSessionTicketKeys
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_set_session_ticket_keys_sds_secret_config(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg, struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*, UPB_SIZE(24, 40), value, UPB_SIZE(28, 48), 5);
+ UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*, UPB_SIZE(28, 48), value, UPB_SIZE(4, 4), 5);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_mutable_session_ticket_keys_sds_secret_config(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_mutable_session_ticket_keys_sds_secret_config(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* sub = (struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*)envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_ticket_keys_sds_secret_config(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit, arena);
@@ -276,9 +350,9 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* env
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_set_session_timeout(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_mutable_session_timeout(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_mutable_session_timeout(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_session_timeout(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -288,10 +362,98 @@ UPB_INLINE struct google_protobuf_Duration* envoy_extensions_transport_sockets_t
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_set_disable_stateless_session_resumption(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(24, 40), value, UPB_SIZE(28, 48), 7);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(28, 48), value, UPB_SIZE(4, 4), 7);
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_set_ocsp_staple_policy(envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = value;
+}
+
+/* envoy.extensions.transport_sockets.tls.v3.TlsKeyLog */
+
+UPB_INLINE envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_new(upb_Arena* arena) {
+ return (envoy_extensions_transport_sockets_tls_v3_TlsKeyLog*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_msginit, arena);
+}
+UPB_INLINE envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* ret = envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* ret = envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_serialize(const envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_clear_path(const envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_path(const envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_has_local_address_range(const envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_clear_local_address_range(const envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const struct envoy_config_core_v3_CidrRange* const* envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_local_address_range(const envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_CidrRange* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_has_remote_address_range(const envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_clear_remote_address_range(const envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const struct envoy_config_core_v3_CidrRange* const* envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_remote_address_range(const envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg, size_t* len) {
+ return (const struct envoy_config_core_v3_CidrRange* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_set_path(envoy_extensions_transport_sockets_tls_v3_TlsKeyLog *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+}
+UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_mutable_local_address_range(envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg, size_t* len) {
+ return (struct envoy_config_core_v3_CidrRange**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_resize_local_address_range(envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_CidrRange**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_add_local_address_range(envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_CidrRange* sub = (struct envoy_config_core_v3_CidrRange*)_upb_Message_New(&envoy_config_core_v3_CidrRange_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_mutable_remote_address_range(envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg, size_t* len) {
+ return (struct envoy_config_core_v3_CidrRange**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE struct envoy_config_core_v3_CidrRange** envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_resize_remote_address_range(envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_config_core_v3_CidrRange**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_config_core_v3_CidrRange* envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_add_remote_address_range(envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* msg, upb_Arena* arena) {
+ struct envoy_config_core_v3_CidrRange* sub = (struct envoy_config_core_v3_CidrRange*)_upb_Message_New(&envoy_config_core_v3_CidrRange_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
}
/* envoy.extensions.transport_sockets.tls.v3.CommonTlsContext */
@@ -319,11 +481,15 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* envoy_ext
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_serialize(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_validation_context = 3,
@@ -333,49 +499,138 @@ typedef enum {
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_validation_context_certificate_provider_instance = 12,
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_NOT_SET = 0
} envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_oneofcases;
-UPB_INLINE envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_oneofcases envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_case(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) { return (envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(40, 80), int32_t); }
-
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_params(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_oneofcases envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_case(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return (envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_params(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_clear_tls_params(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_TlsParameters* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_params(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_extensions_transport_sockets_tls_v3_TlsParameters*);
-}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_certificates(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48)); }
-UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate* const* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificates(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, size_t *len) { return (const struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate* const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len); }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_validation_context(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return _upb_getoneofcase(msg, UPB_SIZE(40, 80)) == 3; }
-UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return UPB_READ_ONEOF(msg, const struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*, UPB_SIZE(36, 72), UPB_SIZE(40, 80), 3, NULL); }
-UPB_INLINE upb_StringView const* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_alpn_protocols(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len); }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_certificate_sds_secret_configs(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 64)); }
-UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* const* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificate_sds_secret_configs(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, size_t *len) { return (const struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len); }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_validation_context_sds_secret_config(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return _upb_getoneofcase(msg, UPB_SIZE(40, 80)) == 7; }
-UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_sds_secret_config(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return UPB_READ_ONEOF(msg, const struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*, UPB_SIZE(36, 72), UPB_SIZE(40, 80), 7, NULL); }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_combined_validation_context(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return _upb_getoneofcase(msg, UPB_SIZE(40, 80)) == 8; }
-UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_combined_validation_context(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return UPB_READ_ONEOF(msg, const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext*, UPB_SIZE(36, 72), UPB_SIZE(40, 80), 8, NULL); }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_certificate_certificate_provider(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return _upb_hasbit(msg, 2); }
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct envoy_extensions_transport_sockets_tls_v3_TlsParameters*);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_certificates(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_clear_tls_certificates(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate* const* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificates(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, size_t* len) {
+ return (const struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate* const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_validation_context(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_clear_validation_context(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*, UPB_SIZE(44, 80), 0, UPB_SIZE(4, 4), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_NOT_SET);
+}
+UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*, UPB_SIZE(44, 80), UPB_SIZE(4, 4), 3, NULL);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_clear_alpn_protocols(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE upb_StringView const* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_alpn_protocols(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(16, 24), len);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_certificate_sds_secret_configs(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 32));
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_clear_tls_certificate_sds_secret_configs(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 32));
+}
+UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* const* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificate_sds_secret_configs(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, size_t* len) {
+ return (const struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* const*)_upb_array_accessor(msg, UPB_SIZE(20, 32), len);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_validation_context_sds_secret_config(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 7;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_clear_validation_context_sds_secret_config(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*, UPB_SIZE(44, 80), 0, UPB_SIZE(4, 4), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_NOT_SET);
+}
+UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_sds_secret_config(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*, UPB_SIZE(44, 80), UPB_SIZE(4, 4), 7, NULL);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_combined_validation_context(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 8;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_clear_combined_validation_context(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext*, UPB_SIZE(44, 80), 0, UPB_SIZE(4, 4), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_NOT_SET);
+}
+UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_combined_validation_context(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext*, UPB_SIZE(44, 80), UPB_SIZE(4, 4), 8, NULL);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_certificate_certificate_provider(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_clear_tls_certificate_certificate_provider(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificate_certificate_provider(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_validation_context_certificate_provider(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 10;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_clear_validation_context_certificate_provider(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*, UPB_SIZE(44, 80), 0, UPB_SIZE(4, 4), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_NOT_SET);
+}
+UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_certificate_provider(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*, UPB_SIZE(44, 80), UPB_SIZE(4, 4), 10, NULL);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_certificate_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_clear_tls_certificate_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_validation_context_certificate_provider(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return _upb_getoneofcase(msg, UPB_SIZE(40, 80)) == 10; }
-UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_certificate_provider(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return UPB_READ_ONEOF(msg, const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*, UPB_SIZE(36, 72), UPB_SIZE(40, 80), 10, NULL); }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_certificate_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificate_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_validation_context_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 12;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_clear_validation_context_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*, UPB_SIZE(44, 80), 0, UPB_SIZE(4, 4), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_type_NOT_SET);
+}
+UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*, UPB_SIZE(44, 80), UPB_SIZE(4, 4), 12, NULL);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_custom_handshaker(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_clear_custom_handshaker(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_validation_context_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return _upb_getoneofcase(msg, UPB_SIZE(40, 80)) == 12; }
-UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return UPB_READ_ONEOF(msg, const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*, UPB_SIZE(36, 72), UPB_SIZE(40, 80), 12, NULL); }
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_custom_handshaker(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_custom_handshaker(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_config_core_v3_TypedExtensionConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const struct envoy_config_core_v3_TypedExtensionConfig*);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_clear_tls_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance*);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_key_log(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_clear_key_log(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const upb_Message*) = NULL;
+}
+UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_key_log(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const envoy_extensions_transport_sockets_tls_v3_TlsKeyLog*);
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_set_tls_params(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, struct envoy_extensions_transport_sockets_tls_v3_TlsParameters* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_extensions_transport_sockets_tls_v3_TlsParameters*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct envoy_extensions_transport_sockets_tls_v3_TlsParameters*) = value;
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsParameters* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_tls_params(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsParameters* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_tls_params(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_TlsParameters* sub = (struct envoy_extensions_transport_sockets_tls_v3_TlsParameters*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_params(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_TlsParameters*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_TlsParameters_msginit, arena);
@@ -384,23 +639,22 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsParameters* envoy
}
return sub;
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate** envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_tls_certificates(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, size_t *len) {
- return (struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate** envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_tls_certificates(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, size_t* len) {
+ return (struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 16), len);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate** envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_resize_tls_certificates(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate** envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_resize_tls_certificates(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_add_tls_certificates(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_add_tls_certificates(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate* sub = (struct envoy_extensions_transport_sockets_tls_v3_TlsCertificate*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_TlsCertificate_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(24, 48), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_set_validation_context(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*, UPB_SIZE(36, 72), value, UPB_SIZE(40, 80), 3);
+ UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*, UPB_SIZE(44, 80), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_validation_context(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_validation_context(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* sub = (struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_msginit, arena);
@@ -409,33 +663,31 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CertificateValidatio
}
return sub;
}
-UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_alpn_protocols(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
+UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_alpn_protocols(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 24), len);
}
-UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_resize_alpn_protocols(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_resize_alpn_protocols(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 24), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_add_alpn_protocols(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 56), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_add_alpn_protocols(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 24), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig** envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_tls_certificate_sds_secret_configs(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, size_t *len) {
- return (struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig** envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_tls_certificate_sds_secret_configs(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, size_t* len) {
+ return (struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 32), len);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig** envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_resize_tls_certificate_sds_secret_configs(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig** envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_resize_tls_certificate_sds_secret_configs(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 32), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_add_tls_certificate_sds_secret_configs(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_add_tls_certificate_sds_secret_configs(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* sub = (struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(32, 64), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 32), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_set_validation_context_sds_secret_config(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*, UPB_SIZE(36, 72), value, UPB_SIZE(40, 80), 7);
+ UPB_WRITE_ONEOF(msg, struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*, UPB_SIZE(44, 80), value, UPB_SIZE(4, 4), 7);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_validation_context_sds_secret_config(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_validation_context_sds_secret_config(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* sub = (struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_sds_secret_config(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit, arena);
@@ -445,9 +697,9 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* env
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_set_combined_validation_context(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* value) {
- UPB_WRITE_ONEOF(msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext*, UPB_SIZE(36, 72), value, UPB_SIZE(40, 80), 8);
+ UPB_WRITE_ONEOF(msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext*, UPB_SIZE(44, 80), value, UPB_SIZE(4, 4), 8);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_combined_validation_context(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_combined_validation_context(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_combined_validation_context(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_msginit, arena);
@@ -458,9 +710,9 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_Com
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_set_tls_certificate_certificate_provider(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*) = value;
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_tls_certificate_certificate_provider(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_tls_certificate_certificate_provider(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificate_certificate_provider(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_msginit, arena);
@@ -470,9 +722,9 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_Cer
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_set_validation_context_certificate_provider(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* value) {
- UPB_WRITE_ONEOF(msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*, UPB_SIZE(36, 72), value, UPB_SIZE(40, 80), 10);
+ UPB_WRITE_ONEOF(msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*, UPB_SIZE(44, 80), value, UPB_SIZE(4, 4), 10);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_validation_context_certificate_provider(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_validation_context_certificate_provider(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_certificate_provider(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_msginit, arena);
@@ -483,9 +735,9 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_Cer
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_set_tls_certificate_certificate_provider_instance(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*) = value;
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_tls_certificate_certificate_provider_instance(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_tls_certificate_certificate_provider_instance(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificate_certificate_provider_instance(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_msginit, arena);
@@ -495,9 +747,9 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_Cer
return sub;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_set_validation_context_certificate_provider_instance(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* value) {
- UPB_WRITE_ONEOF(msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*, UPB_SIZE(36, 72), value, UPB_SIZE(40, 80), 12);
+ UPB_WRITE_ONEOF(msg, envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*, UPB_SIZE(44, 80), value, UPB_SIZE(4, 4), 12);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_validation_context_certificate_provider_instance(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_validation_context_certificate_provider_instance(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context_certificate_provider_instance(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_msginit, arena);
@@ -508,9 +760,9 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_Cer
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_set_custom_handshaker(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), struct envoy_config_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_custom_handshaker(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_custom_handshaker(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_custom_handshaker(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -521,9 +773,9 @@ UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_tr
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_set_tls_certificate_provider_instance(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance*) = value;
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_tls_certificate_provider_instance(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_tls_certificate_provider_instance(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance* sub = (struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificate_provider_instance(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_msginit, arena);
@@ -532,6 +784,19 @@ UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CertificateProviderP
}
return sub;
}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_set_key_log(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext *msg, envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* value) {
+ _upb_sethas(msg, 6);
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), envoy_extensions_transport_sockets_tls_v3_TlsKeyLog*) = value;
+}
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_mutable_key_log(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext* msg, upb_Arena* arena) {
+ struct envoy_extensions_transport_sockets_tls_v3_TlsKeyLog* sub = (struct envoy_extensions_transport_sockets_tls_v3_TlsKeyLog*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_key_log(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_extensions_transport_sockets_tls_v3_TlsKeyLog*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_msginit, arena);
+ if (!sub) return NULL;
+ envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_set_key_log(msg, sub);
+ }
+ return sub;
+}
/* envoy.extensions.transport_sockets.tls.v3.CommonTlsContext.CertificateProvider */
@@ -558,31 +823,46 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_Certificat
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_serialize(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_config_typed_config = 2,
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_config_NOT_SET = 0
} envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_config_oneofcases;
-UPB_INLINE envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_config_oneofcases envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_config_case(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* msg) { return (envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_config_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_config_oneofcases envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_config_case(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* msg) {
+ return (envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_config_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_clear_name(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_name(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_has_typed_config(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_clear_typed_config(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_config_NOT_SET);
+}
+UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_typed_config(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 2, NULL);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_has_typed_config(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE const struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_typed_config(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider *msg) { return UPB_READ_ONEOF(msg, const struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 2, NULL); }
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_set_name(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_set_typed_config(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider *msg, struct envoy_config_core_v3_TypedExtensionConfig* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, struct envoy_config_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_mutable_typed_config(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_TypedExtensionConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_mutable_typed_config(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* msg, upb_Arena* arena) {
struct envoy_config_core_v3_TypedExtensionConfig* sub = (struct envoy_config_core_v3_TypedExtensionConfig*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_typed_config(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_TypedExtensionConfig*)_upb_Message_New(&envoy_config_core_v3_TypedExtensionConfig_msginit, arena);
@@ -617,15 +897,25 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_Certificat
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_serialize(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_clear_instance_name(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_instance_name(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_clear_certificate_name(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_certificate_name(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
@@ -662,25 +952,49 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCe
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_serialize(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_has_default_validation_context(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_clear_default_validation_context(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_has_default_validation_context(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_default_validation_context(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_has_validation_context_sds_secret_config(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_has_validation_context_sds_secret_config(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_clear_validation_context_sds_secret_config(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_validation_context_sds_secret_config(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_has_validation_context_certificate_provider(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_has_validation_context_certificate_provider(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_clear_validation_context_certificate_provider(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_validation_context_certificate_provider(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_has_validation_context_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_has_validation_context_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_clear_validation_context_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_validation_context_certificate_provider_instance(const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*);
}
@@ -689,7 +1003,7 @@ UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_Combi
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*) = value;
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_mutable_default_validation_context(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_mutable_default_validation_context(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext* sub = (struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_default_validation_context(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_msginit, arena);
@@ -702,7 +1016,7 @@ UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_Combi
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*) = value;
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_mutable_validation_context_sds_secret_config(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_mutable_validation_context_sds_secret_config(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig* sub = (struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_validation_context_sds_secret_config(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_SdsSecretConfig_msginit, arena);
@@ -715,7 +1029,7 @@ UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_Combi
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*) = value;
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_mutable_validation_context_certificate_provider(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_mutable_validation_context_certificate_provider(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider* sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_validation_context_certificate_provider(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProvider_msginit, arena);
@@ -728,7 +1042,7 @@ UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_Combi
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*) = value;
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_mutable_validation_context_certificate_provider_instance(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_mutable_validation_context_certificate_provider_instance(envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance* sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*)envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_validation_context_certificate_provider_instance(msg);
if (sub == NULL) {
sub = (struct envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c
index fdbfe141e7..32386615b8 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c
@@ -20,13 +20,13 @@ static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_SPIFFEC
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_msginit = {
&envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_submsgs[1] = {
@@ -34,14 +34,14 @@ static const upb_MiniTable_Sub envoy_extensions_transport_sockets_tls_v3_SPIFFEC
};
static const upb_MiniTable_Field envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_msginit = {
&envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_submsgs[0],
&envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h
index 9a92f99362..1cb9437bbc 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h
@@ -56,25 +56,35 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig*
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_serialize(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_has_trust_domains(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_clear_trust_domains(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* const* envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_trust_domains(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig* msg, size_t* len) {
+ return (const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_has_trust_domains(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* const* envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_trust_domains(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig *msg, size_t *len) { return (const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain** envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_mutable_trust_domains(envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig *msg, size_t *len) {
+UPB_INLINE envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain** envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_mutable_trust_domains(envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig* msg, size_t* len) {
return (envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain** envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_resize_trust_domains(envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain** envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_resize_trust_domains(envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig* msg, size_t len, upb_Arena* arena) {
return (envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_add_trust_domains(envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_add_trust_domains(envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig* msg, upb_Arena* arena) {
struct envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* sub = (struct envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain*)_upb_Message_New(&envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -104,16 +114,28 @@ UPB_INLINE envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_T
return ret;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_serialize(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_serialize_ex(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_clear_name(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_name(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_has_trust_bundle(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_has_trust_bundle(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_clear_trust_bundle(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_trust_bundle(const envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_DataSource*);
}
@@ -125,7 +147,7 @@ UPB_INLINE void envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorCon
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_DataSource*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_mutable_trust_bundle(envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_DataSource* envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_mutable_trust_bundle(envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain* msg, upb_Arena* arena) {
struct envoy_config_core_v3_DataSource* sub = (struct envoy_config_core_v3_DataSource*)envoy_extensions_transport_sockets_tls_v3_SPIFFECertValidatorConfig_TrustDomain_trust_bundle(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_DataSource*)_upb_Message_New(&envoy_config_core_v3_DataSource_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c
index 34ea0a5b3b..612a2c3f88 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c
@@ -18,7 +18,7 @@
const upb_MiniTable envoy_service_discovery_v3_AdsDummy_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h
index 4d226a3c2f..5c8864686c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h
@@ -51,11 +51,15 @@ UPB_INLINE envoy_service_discovery_v3_AdsDummy* envoy_service_discovery_v3_AdsDu
return ret;
}
UPB_INLINE char* envoy_service_discovery_v3_AdsDummy_serialize(const envoy_service_discovery_v3_AdsDummy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_discovery_v3_AdsDummy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_AdsDummy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_service_discovery_v3_AdsDummy_serialize_ex(const envoy_service_discovery_v3_AdsDummy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_discovery_v3_AdsDummy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_AdsDummy_msginit, options, arena, &ptr, len);
+ return ptr;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c
index 50a77b9886..0abadf9536 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c
@@ -15,139 +15,254 @@
#include "google/rpc/status.upb.h"
#include "udpa/annotations/status.upb.h"
#include "udpa/annotations/versioning.upb.h"
+#include "validate/validate.upb.h"
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub envoy_service_discovery_v3_DiscoveryRequest_submsgs[2] = {
+static const upb_MiniTable_Sub envoy_service_discovery_v3_ResourceLocator_submsgs[1] = {
+ {.submsg = &envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry_msginit},
+};
+
+static const upb_MiniTable_Field envoy_service_discovery_v3_ResourceLocator__fields[2] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_service_discovery_v3_ResourceLocator_msginit = {
+ &envoy_service_discovery_v3_ResourceLocator_submsgs[0],
+ &envoy_service_discovery_v3_ResourceLocator__fields[0],
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable_Field envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry__fields[2] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry_msginit = {
+ NULL,
+ &envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry__fields[0],
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_service_discovery_v3_ResourceName_submsgs[1] = {
+ {.submsg = &envoy_service_discovery_v3_DynamicParameterConstraints_msginit},
+};
+
+static const upb_MiniTable_Field envoy_service_discovery_v3_ResourceName__fields[2] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_service_discovery_v3_ResourceName_msginit = {
+ &envoy_service_discovery_v3_ResourceName_submsgs[0],
+ &envoy_service_discovery_v3_ResourceName__fields[0],
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_service_discovery_v3_DiscoveryRequest_submsgs[3] = {
{.submsg = &envoy_config_core_v3_Node_msginit},
{.submsg = &google_rpc_Status_msginit},
+ {.submsg = &envoy_service_discovery_v3_ResourceLocator_msginit},
};
-static const upb_MiniTable_Field envoy_service_discovery_v3_DiscoveryRequest__fields[6] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(28, 56), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(36, 72), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(32, 64), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_service_discovery_v3_DiscoveryRequest__fields[7] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(28, 56), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(36, 72), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(40, 80), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_service_discovery_v3_DiscoveryRequest_msginit = {
&envoy_service_discovery_v3_DiscoveryRequest_submsgs[0],
&envoy_service_discovery_v3_DiscoveryRequest__fields[0],
- UPB_SIZE(40, 80), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(48, 88), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
static const upb_MiniTable_Sub envoy_service_discovery_v3_DiscoveryResponse_submsgs[2] = {
- {.submsg = &envoy_config_core_v3_ControlPlane_msginit},
{.submsg = &google_protobuf_Any_msginit},
+ {.submsg = &envoy_config_core_v3_ControlPlane_msginit},
};
static const upb_MiniTable_Field envoy_service_discovery_v3_DiscoveryResponse__fields[6] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(32, 64), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(28, 56), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(32, 64), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_service_discovery_v3_DiscoveryResponse_msginit = {
&envoy_service_discovery_v3_DiscoveryResponse_submsgs[0],
&envoy_service_discovery_v3_DiscoveryResponse__fields[0],
- UPB_SIZE(40, 80), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(40, 72), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
-static const upb_MiniTable_Sub envoy_service_discovery_v3_DeltaDiscoveryRequest_submsgs[3] = {
+static const upb_MiniTable_Sub envoy_service_discovery_v3_DeltaDiscoveryRequest_submsgs[5] = {
{.submsg = &envoy_config_core_v3_Node_msginit},
{.submsg = &envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry_msginit},
{.submsg = &google_rpc_Status_msginit},
+ {.submsg = &envoy_service_discovery_v3_ResourceLocator_msginit},
+ {.submsg = &envoy_service_discovery_v3_ResourceLocator_msginit},
};
-static const upb_MiniTable_Field envoy_service_discovery_v3_DeltaDiscoveryRequest__fields[7] = {
- {1, UPB_SIZE(20, 40), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(28, 56), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 64), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(36, 72), 0, 1, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {7, UPB_SIZE(24, 48), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_service_discovery_v3_DeltaDiscoveryRequest__fields[9] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 48), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 56), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(36, 72), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(40, 80), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(44, 88), UPB_SIZE(0, 0), 4, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_service_discovery_v3_DeltaDiscoveryRequest_msginit = {
&envoy_service_discovery_v3_DeltaDiscoveryRequest_submsgs[0],
&envoy_service_discovery_v3_DeltaDiscoveryRequest__fields[0],
- UPB_SIZE(40, 80), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(48, 96), 9, kUpb_ExtMode_NonExtendable, 9, 255, 0,
};
static const upb_MiniTable_Field envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry_msginit = {
NULL,
&envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_service_discovery_v3_DeltaDiscoveryResponse_submsgs[2] = {
- {.submsg = &envoy_config_core_v3_ControlPlane_msginit},
+static const upb_MiniTable_Sub envoy_service_discovery_v3_DeltaDiscoveryResponse_submsgs[3] = {
{.submsg = &envoy_service_discovery_v3_Resource_msginit},
+ {.submsg = &envoy_config_core_v3_ControlPlane_msginit},
+ {.submsg = &envoy_service_discovery_v3_ResourceName_msginit},
};
-static const upb_MiniTable_Field envoy_service_discovery_v3_DeltaDiscoveryResponse__fields[6] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(32, 64), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(36, 72), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(28, 56), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_service_discovery_v3_DeltaDiscoveryResponse__fields[7] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(32, 64), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(36, 72), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(40, 80), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_service_discovery_v3_DeltaDiscoveryResponse_msginit = {
&envoy_service_discovery_v3_DeltaDiscoveryResponse_submsgs[0],
&envoy_service_discovery_v3_DeltaDiscoveryResponse__fields[0],
- UPB_SIZE(40, 80), 6, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(48, 88), 7, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub envoy_service_discovery_v3_Resource_submsgs[3] = {
- {.submsg = &envoy_service_discovery_v3_Resource_CacheControl_msginit},
+static const upb_MiniTable_Sub envoy_service_discovery_v3_DynamicParameterConstraints_submsgs[4] = {
+ {.submsg = &envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_msginit},
+ {.submsg = &envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_msginit},
+ {.submsg = &envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_msginit},
+ {.submsg = &envoy_service_discovery_v3_DynamicParameterConstraints_msginit},
+};
+
+static const upb_MiniTable_Field envoy_service_discovery_v3_DynamicParameterConstraints__fields[4] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_service_discovery_v3_DynamicParameterConstraints_msginit = {
+ &envoy_service_discovery_v3_DynamicParameterConstraints_submsgs[0],
+ &envoy_service_discovery_v3_DynamicParameterConstraints__fields[0],
+ UPB_SIZE(8, 16), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_submsgs[1] = {
+ {.submsg = &envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_msginit},
+};
+
+static const upb_MiniTable_Field envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint__fields[3] = {
+ {1, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_msginit = {
+ &envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_submsgs[0],
+ &envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint__fields[0],
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
+};
+
+const upb_MiniTable envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_msginit = {
+ NULL,
+ NULL,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_submsgs[1] = {
+ {.submsg = &envoy_service_discovery_v3_DynamicParameterConstraints_msginit},
+};
+
+static const upb_MiniTable_Field envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList__fields[1] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_msginit = {
+ &envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_submsgs[0],
+ &envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList__fields[0],
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
+};
+
+static const upb_MiniTable_Sub envoy_service_discovery_v3_Resource_submsgs[4] = {
{.submsg = &google_protobuf_Any_msginit},
{.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &envoy_service_discovery_v3_Resource_CacheControl_msginit},
+ {.submsg = &envoy_service_discovery_v3_ResourceName_msginit},
};
-static const upb_MiniTable_Field envoy_service_discovery_v3_Resource__fields[6] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(20, 40), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 64), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(24, 48), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(28, 56), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field envoy_service_discovery_v3_Resource__fields[7] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 56), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(32, 64), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(36, 72), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_service_discovery_v3_Resource_msginit = {
&envoy_service_discovery_v3_Resource_submsgs[0],
&envoy_service_discovery_v3_Resource__fields[0],
- UPB_SIZE(40, 80), 6, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(40, 80), 7, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Field envoy_service_discovery_v3_Resource_CacheControl__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_service_discovery_v3_Resource_CacheControl_msginit = {
NULL,
&envoy_service_discovery_v3_Resource_CacheControl__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable *messages_layout[7] = {
+static const upb_MiniTable *messages_layout[14] = {
+ &envoy_service_discovery_v3_ResourceLocator_msginit,
+ &envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry_msginit,
+ &envoy_service_discovery_v3_ResourceName_msginit,
&envoy_service_discovery_v3_DiscoveryRequest_msginit,
&envoy_service_discovery_v3_DiscoveryResponse_msginit,
&envoy_service_discovery_v3_DeltaDiscoveryRequest_msginit,
&envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry_msginit,
&envoy_service_discovery_v3_DeltaDiscoveryResponse_msginit,
+ &envoy_service_discovery_v3_DynamicParameterConstraints_msginit,
+ &envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_msginit,
+ &envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_msginit,
+ &envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_msginit,
&envoy_service_discovery_v3_Resource_msginit,
&envoy_service_discovery_v3_Resource_CacheControl_msginit,
};
@@ -156,7 +271,7 @@ const upb_MiniTable_File envoy_service_discovery_v3_discovery_proto_upb_file_lay
messages_layout,
NULL,
NULL,
- 7,
+ 14,
0,
0,
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h
index 50631f5435..5161b8af55 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h
@@ -20,25 +20,46 @@
extern "C" {
#endif
+struct envoy_service_discovery_v3_ResourceLocator;
+struct envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry;
+struct envoy_service_discovery_v3_ResourceName;
struct envoy_service_discovery_v3_DiscoveryRequest;
struct envoy_service_discovery_v3_DiscoveryResponse;
struct envoy_service_discovery_v3_DeltaDiscoveryRequest;
struct envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry;
struct envoy_service_discovery_v3_DeltaDiscoveryResponse;
+struct envoy_service_discovery_v3_DynamicParameterConstraints;
+struct envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint;
+struct envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists;
+struct envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList;
struct envoy_service_discovery_v3_Resource;
struct envoy_service_discovery_v3_Resource_CacheControl;
+typedef struct envoy_service_discovery_v3_ResourceLocator envoy_service_discovery_v3_ResourceLocator;
+typedef struct envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry;
+typedef struct envoy_service_discovery_v3_ResourceName envoy_service_discovery_v3_ResourceName;
typedef struct envoy_service_discovery_v3_DiscoveryRequest envoy_service_discovery_v3_DiscoveryRequest;
typedef struct envoy_service_discovery_v3_DiscoveryResponse envoy_service_discovery_v3_DiscoveryResponse;
typedef struct envoy_service_discovery_v3_DeltaDiscoveryRequest envoy_service_discovery_v3_DeltaDiscoveryRequest;
typedef struct envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry;
typedef struct envoy_service_discovery_v3_DeltaDiscoveryResponse envoy_service_discovery_v3_DeltaDiscoveryResponse;
+typedef struct envoy_service_discovery_v3_DynamicParameterConstraints envoy_service_discovery_v3_DynamicParameterConstraints;
+typedef struct envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint;
+typedef struct envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists;
+typedef struct envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList;
typedef struct envoy_service_discovery_v3_Resource envoy_service_discovery_v3_Resource;
typedef struct envoy_service_discovery_v3_Resource_CacheControl envoy_service_discovery_v3_Resource_CacheControl;
+extern const upb_MiniTable envoy_service_discovery_v3_ResourceLocator_msginit;
+extern const upb_MiniTable envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry_msginit;
+extern const upb_MiniTable envoy_service_discovery_v3_ResourceName_msginit;
extern const upb_MiniTable envoy_service_discovery_v3_DiscoveryRequest_msginit;
extern const upb_MiniTable envoy_service_discovery_v3_DiscoveryResponse_msginit;
extern const upb_MiniTable envoy_service_discovery_v3_DeltaDiscoveryRequest_msginit;
extern const upb_MiniTable envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry_msginit;
extern const upb_MiniTable envoy_service_discovery_v3_DeltaDiscoveryResponse_msginit;
+extern const upb_MiniTable envoy_service_discovery_v3_DynamicParameterConstraints_msginit;
+extern const upb_MiniTable envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_msginit;
+extern const upb_MiniTable envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_msginit;
+extern const upb_MiniTable envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_msginit;
extern const upb_MiniTable envoy_service_discovery_v3_Resource_msginit;
extern const upb_MiniTable envoy_service_discovery_v3_Resource_CacheControl_msginit;
struct envoy_config_core_v3_ControlPlane;
@@ -54,6 +75,162 @@ extern const upb_MiniTable google_rpc_Status_msginit;
+/* envoy.service.discovery.v3.ResourceLocator */
+
+UPB_INLINE envoy_service_discovery_v3_ResourceLocator* envoy_service_discovery_v3_ResourceLocator_new(upb_Arena* arena) {
+ return (envoy_service_discovery_v3_ResourceLocator*)_upb_Message_New(&envoy_service_discovery_v3_ResourceLocator_msginit, arena);
+}
+UPB_INLINE envoy_service_discovery_v3_ResourceLocator* envoy_service_discovery_v3_ResourceLocator_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_service_discovery_v3_ResourceLocator* ret = envoy_service_discovery_v3_ResourceLocator_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_service_discovery_v3_ResourceLocator_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_service_discovery_v3_ResourceLocator* envoy_service_discovery_v3_ResourceLocator_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_service_discovery_v3_ResourceLocator* ret = envoy_service_discovery_v3_ResourceLocator_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_service_discovery_v3_ResourceLocator_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_service_discovery_v3_ResourceLocator_serialize(const envoy_service_discovery_v3_ResourceLocator* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_ResourceLocator_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_service_discovery_v3_ResourceLocator_serialize_ex(const envoy_service_discovery_v3_ResourceLocator* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_ResourceLocator_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_service_discovery_v3_ResourceLocator_clear_name(const envoy_service_discovery_v3_ResourceLocator* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_service_discovery_v3_ResourceLocator_name(const envoy_service_discovery_v3_ResourceLocator* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+}
+UPB_INLINE bool envoy_service_discovery_v3_ResourceLocator_has_dynamic_parameters(const envoy_service_discovery_v3_ResourceLocator* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_service_discovery_v3_ResourceLocator_clear_dynamic_parameters(const envoy_service_discovery_v3_ResourceLocator* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE size_t envoy_service_discovery_v3_ResourceLocator_dynamic_parameters_size(const envoy_service_discovery_v3_ResourceLocator* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE bool envoy_service_discovery_v3_ResourceLocator_dynamic_parameters_get(const envoy_service_discovery_v3_ResourceLocator* msg, upb_StringView key, upb_StringView* val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(8, 16), &key, 0, val, 0);
+}
+UPB_INLINE const envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry* envoy_service_discovery_v3_ResourceLocator_dynamic_parameters_next(const envoy_service_discovery_v3_ResourceLocator* msg, size_t* iter) {
+ return (const envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry*)_upb_msg_map_next(msg, UPB_SIZE(8, 16), iter);
+}
+
+UPB_INLINE void envoy_service_discovery_v3_ResourceLocator_set_name(envoy_service_discovery_v3_ResourceLocator *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+}
+UPB_INLINE void envoy_service_discovery_v3_ResourceLocator_dynamic_parameters_clear(envoy_service_discovery_v3_ResourceLocator* msg) { _upb_msg_map_clear(msg, UPB_SIZE(8, 16)); }
+UPB_INLINE bool envoy_service_discovery_v3_ResourceLocator_dynamic_parameters_set(envoy_service_discovery_v3_ResourceLocator* msg, upb_StringView key, upb_StringView val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(8, 16), &key, 0, &val, 0, a);
+}
+UPB_INLINE bool envoy_service_discovery_v3_ResourceLocator_dynamic_parameters_delete(envoy_service_discovery_v3_ResourceLocator* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(8, 16), &key, 0);
+}
+UPB_INLINE envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry* envoy_service_discovery_v3_ResourceLocator_dynamic_parameters_nextmutable(envoy_service_discovery_v3_ResourceLocator* msg, size_t* iter) {
+ return (envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry*)_upb_msg_map_next(msg, UPB_SIZE(8, 16), iter);
+}
+
+/* envoy.service.discovery.v3.ResourceLocator.DynamicParametersEntry */
+
+UPB_INLINE upb_StringView envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry_key(const envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry* msg) {
+ upb_StringView ret;
+ _upb_msg_map_key(msg, &ret, 0);
+ return ret;
+}
+UPB_INLINE upb_StringView envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry_value(const envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry* msg) {
+ upb_StringView ret;
+ _upb_msg_map_value(msg, &ret, 0);
+ return ret;
+}
+
+UPB_INLINE void envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry_set_value(envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry *msg, upb_StringView value) {
+ _upb_msg_map_set_value(msg, &value, 0);
+}
+
+/* envoy.service.discovery.v3.ResourceName */
+
+UPB_INLINE envoy_service_discovery_v3_ResourceName* envoy_service_discovery_v3_ResourceName_new(upb_Arena* arena) {
+ return (envoy_service_discovery_v3_ResourceName*)_upb_Message_New(&envoy_service_discovery_v3_ResourceName_msginit, arena);
+}
+UPB_INLINE envoy_service_discovery_v3_ResourceName* envoy_service_discovery_v3_ResourceName_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_service_discovery_v3_ResourceName* ret = envoy_service_discovery_v3_ResourceName_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_service_discovery_v3_ResourceName_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_service_discovery_v3_ResourceName* envoy_service_discovery_v3_ResourceName_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_service_discovery_v3_ResourceName* ret = envoy_service_discovery_v3_ResourceName_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_service_discovery_v3_ResourceName_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_service_discovery_v3_ResourceName_serialize(const envoy_service_discovery_v3_ResourceName* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_ResourceName_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_service_discovery_v3_ResourceName_serialize_ex(const envoy_service_discovery_v3_ResourceName* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_ResourceName_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_service_discovery_v3_ResourceName_clear_name(const envoy_service_discovery_v3_ResourceName* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_service_discovery_v3_ResourceName_name(const envoy_service_discovery_v3_ResourceName* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_service_discovery_v3_ResourceName_has_dynamic_parameter_constraints(const envoy_service_discovery_v3_ResourceName* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_service_discovery_v3_ResourceName_clear_dynamic_parameter_constraints(const envoy_service_discovery_v3_ResourceName* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
+UPB_INLINE const envoy_service_discovery_v3_DynamicParameterConstraints* envoy_service_discovery_v3_ResourceName_dynamic_parameter_constraints(const envoy_service_discovery_v3_ResourceName* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_service_discovery_v3_DynamicParameterConstraints*);
+}
+
+UPB_INLINE void envoy_service_discovery_v3_ResourceName_set_name(envoy_service_discovery_v3_ResourceName *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+}
+UPB_INLINE void envoy_service_discovery_v3_ResourceName_set_dynamic_parameter_constraints(envoy_service_discovery_v3_ResourceName *msg, envoy_service_discovery_v3_DynamicParameterConstraints* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_service_discovery_v3_DynamicParameterConstraints*) = value;
+}
+UPB_INLINE struct envoy_service_discovery_v3_DynamicParameterConstraints* envoy_service_discovery_v3_ResourceName_mutable_dynamic_parameter_constraints(envoy_service_discovery_v3_ResourceName* msg, upb_Arena* arena) {
+ struct envoy_service_discovery_v3_DynamicParameterConstraints* sub = (struct envoy_service_discovery_v3_DynamicParameterConstraints*)envoy_service_discovery_v3_ResourceName_dynamic_parameter_constraints(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_service_discovery_v3_DynamicParameterConstraints*)_upb_Message_New(&envoy_service_discovery_v3_DynamicParameterConstraints_msginit, arena);
+ if (!sub) return NULL;
+ envoy_service_discovery_v3_ResourceName_set_dynamic_parameter_constraints(msg, sub);
+ }
+ return sub;
+}
+
/* envoy.service.discovery.v3.DiscoveryRequest */
UPB_INLINE envoy_service_discovery_v3_DiscoveryRequest* envoy_service_discovery_v3_DiscoveryRequest_new(upb_Arena* arena) {
@@ -79,29 +256,66 @@ UPB_INLINE envoy_service_discovery_v3_DiscoveryRequest* envoy_service_discovery_
return ret;
}
UPB_INLINE char* envoy_service_discovery_v3_DiscoveryRequest_serialize(const envoy_service_discovery_v3_DiscoveryRequest* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_discovery_v3_DiscoveryRequest_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DiscoveryRequest_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_service_discovery_v3_DiscoveryRequest_serialize_ex(const envoy_service_discovery_v3_DiscoveryRequest* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_discovery_v3_DiscoveryRequest_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DiscoveryRequest_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_service_discovery_v3_DiscoveryRequest_clear_version_info(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_service_discovery_v3_DiscoveryRequest_version_info(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_service_discovery_v3_DiscoveryRequest_has_node(const envoy_service_discovery_v3_DiscoveryRequest *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_service_discovery_v3_DiscoveryRequest_has_node(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_service_discovery_v3_DiscoveryRequest_clear_node(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_config_core_v3_Node* envoy_service_discovery_v3_DiscoveryRequest_node(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct envoy_config_core_v3_Node*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_config_core_v3_Node*);
+}
+UPB_INLINE void envoy_service_discovery_v3_DiscoveryRequest_clear_resource_names(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE upb_StringView const* envoy_service_discovery_v3_DiscoveryRequest_resource_names(const envoy_service_discovery_v3_DiscoveryRequest* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
+UPB_INLINE void envoy_service_discovery_v3_DiscoveryRequest_clear_type_url(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
-UPB_INLINE upb_StringView const* envoy_service_discovery_v3_DiscoveryRequest_resource_names(const envoy_service_discovery_v3_DiscoveryRequest *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(36, 72), len); }
UPB_INLINE upb_StringView envoy_service_discovery_v3_DiscoveryRequest_type_url(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+}
+UPB_INLINE void envoy_service_discovery_v3_DiscoveryRequest_clear_response_nonce(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_service_discovery_v3_DiscoveryRequest_response_nonce(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DiscoveryRequest_has_error_detail(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_service_discovery_v3_DiscoveryRequest_clear_error_detail(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_service_discovery_v3_DiscoveryRequest_has_error_detail(const envoy_service_discovery_v3_DiscoveryRequest *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_rpc_Status* envoy_service_discovery_v3_DiscoveryRequest_error_detail(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const struct google_rpc_Status*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const struct google_rpc_Status*);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DiscoveryRequest_has_resource_locators(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(40, 80));
+}
+UPB_INLINE void envoy_service_discovery_v3_DiscoveryRequest_clear_resource_locators(const envoy_service_discovery_v3_DiscoveryRequest* msg) {
+ _upb_array_detach(msg, UPB_SIZE(40, 80));
+}
+UPB_INLINE const envoy_service_discovery_v3_ResourceLocator* const* envoy_service_discovery_v3_DiscoveryRequest_resource_locators(const envoy_service_discovery_v3_DiscoveryRequest* msg, size_t* len) {
+ return (const envoy_service_discovery_v3_ResourceLocator* const*)_upb_array_accessor(msg, UPB_SIZE(40, 80), len);
}
UPB_INLINE void envoy_service_discovery_v3_DiscoveryRequest_set_version_info(envoy_service_discovery_v3_DiscoveryRequest *msg, upb_StringView value) {
@@ -109,9 +323,9 @@ UPB_INLINE void envoy_service_discovery_v3_DiscoveryRequest_set_version_info(env
}
UPB_INLINE void envoy_service_discovery_v3_DiscoveryRequest_set_node(envoy_service_discovery_v3_DiscoveryRequest *msg, struct envoy_config_core_v3_Node* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct envoy_config_core_v3_Node*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_config_core_v3_Node*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Node* envoy_service_discovery_v3_DiscoveryRequest_mutable_node(envoy_service_discovery_v3_DiscoveryRequest *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Node* envoy_service_discovery_v3_DiscoveryRequest_mutable_node(envoy_service_discovery_v3_DiscoveryRequest* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Node* sub = (struct envoy_config_core_v3_Node*)envoy_service_discovery_v3_DiscoveryRequest_node(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Node*)_upb_Message_New(&envoy_config_core_v3_Node_msginit, arena);
@@ -120,27 +334,26 @@ UPB_INLINE struct envoy_config_core_v3_Node* envoy_service_discovery_v3_Discover
}
return sub;
}
-UPB_INLINE upb_StringView* envoy_service_discovery_v3_DiscoveryRequest_mutable_resource_names(envoy_service_discovery_v3_DiscoveryRequest *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 72), len);
+UPB_INLINE upb_StringView* envoy_service_discovery_v3_DiscoveryRequest_mutable_resource_names(envoy_service_discovery_v3_DiscoveryRequest* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE upb_StringView* envoy_service_discovery_v3_DiscoveryRequest_resize_resource_names(envoy_service_discovery_v3_DiscoveryRequest *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 72), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_service_discovery_v3_DiscoveryRequest_resize_resource_names(envoy_service_discovery_v3_DiscoveryRequest* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_service_discovery_v3_DiscoveryRequest_add_resource_names(envoy_service_discovery_v3_DiscoveryRequest *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 72), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_service_discovery_v3_DiscoveryRequest_add_resource_names(envoy_service_discovery_v3_DiscoveryRequest* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_service_discovery_v3_DiscoveryRequest_set_type_url(envoy_service_discovery_v3_DiscoveryRequest *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
}
UPB_INLINE void envoy_service_discovery_v3_DiscoveryRequest_set_response_nonce(envoy_service_discovery_v3_DiscoveryRequest *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView) = value;
}
UPB_INLINE void envoy_service_discovery_v3_DiscoveryRequest_set_error_detail(envoy_service_discovery_v3_DiscoveryRequest *msg, struct google_rpc_Status* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 64), struct google_rpc_Status*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), struct google_rpc_Status*) = value;
}
-UPB_INLINE struct google_rpc_Status* envoy_service_discovery_v3_DiscoveryRequest_mutable_error_detail(envoy_service_discovery_v3_DiscoveryRequest *msg, upb_Arena *arena) {
+UPB_INLINE struct google_rpc_Status* envoy_service_discovery_v3_DiscoveryRequest_mutable_error_detail(envoy_service_discovery_v3_DiscoveryRequest* msg, upb_Arena* arena) {
struct google_rpc_Status* sub = (struct google_rpc_Status*)envoy_service_discovery_v3_DiscoveryRequest_error_detail(msg);
if (sub == NULL) {
sub = (struct google_rpc_Status*)_upb_Message_New(&google_rpc_Status_msginit, arena);
@@ -149,6 +362,18 @@ UPB_INLINE struct google_rpc_Status* envoy_service_discovery_v3_DiscoveryRequest
}
return sub;
}
+UPB_INLINE envoy_service_discovery_v3_ResourceLocator** envoy_service_discovery_v3_DiscoveryRequest_mutable_resource_locators(envoy_service_discovery_v3_DiscoveryRequest* msg, size_t* len) {
+ return (envoy_service_discovery_v3_ResourceLocator**)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 80), len);
+}
+UPB_INLINE envoy_service_discovery_v3_ResourceLocator** envoy_service_discovery_v3_DiscoveryRequest_resize_resource_locators(envoy_service_discovery_v3_DiscoveryRequest* msg, size_t len, upb_Arena* arena) {
+ return (envoy_service_discovery_v3_ResourceLocator**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 80), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_service_discovery_v3_ResourceLocator* envoy_service_discovery_v3_DiscoveryRequest_add_resource_locators(envoy_service_discovery_v3_DiscoveryRequest* msg, upb_Arena* arena) {
+ struct envoy_service_discovery_v3_ResourceLocator* sub = (struct envoy_service_discovery_v3_ResourceLocator*)_upb_Message_New(&envoy_service_discovery_v3_ResourceLocator_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 80), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
/* envoy.service.discovery.v3.DiscoveryResponse */
@@ -175,44 +400,71 @@ UPB_INLINE envoy_service_discovery_v3_DiscoveryResponse* envoy_service_discovery
return ret;
}
UPB_INLINE char* envoy_service_discovery_v3_DiscoveryResponse_serialize(const envoy_service_discovery_v3_DiscoveryResponse* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_discovery_v3_DiscoveryResponse_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DiscoveryResponse_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_service_discovery_v3_DiscoveryResponse_serialize_ex(const envoy_service_discovery_v3_DiscoveryResponse* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_discovery_v3_DiscoveryResponse_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DiscoveryResponse_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_service_discovery_v3_DiscoveryResponse_clear_version_info(const envoy_service_discovery_v3_DiscoveryResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_service_discovery_v3_DiscoveryResponse_version_info(const envoy_service_discovery_v3_DiscoveryResponse* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_service_discovery_v3_DiscoveryResponse_has_resources(const envoy_service_discovery_v3_DiscoveryResponse *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 64)); }
-UPB_INLINE const struct google_protobuf_Any* const* envoy_service_discovery_v3_DiscoveryResponse_resources(const envoy_service_discovery_v3_DiscoveryResponse *msg, size_t *len) { return (const struct google_protobuf_Any* const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len); }
+UPB_INLINE bool envoy_service_discovery_v3_DiscoveryResponse_has_resources(const envoy_service_discovery_v3_DiscoveryResponse* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_service_discovery_v3_DiscoveryResponse_clear_resources(const envoy_service_discovery_v3_DiscoveryResponse* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const struct google_protobuf_Any* const* envoy_service_discovery_v3_DiscoveryResponse_resources(const envoy_service_discovery_v3_DiscoveryResponse* msg, size_t* len) {
+ return (const struct google_protobuf_Any* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE void envoy_service_discovery_v3_DiscoveryResponse_clear_canary(const envoy_service_discovery_v3_DiscoveryResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool envoy_service_discovery_v3_DiscoveryResponse_canary(const envoy_service_discovery_v3_DiscoveryResponse* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
+UPB_INLINE void envoy_service_discovery_v3_DiscoveryResponse_clear_type_url(const envoy_service_discovery_v3_DiscoveryResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_service_discovery_v3_DiscoveryResponse_type_url(const envoy_service_discovery_v3_DiscoveryResponse* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView);
+}
+UPB_INLINE void envoy_service_discovery_v3_DiscoveryResponse_clear_nonce(const envoy_service_discovery_v3_DiscoveryResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_service_discovery_v3_DiscoveryResponse_nonce(const envoy_service_discovery_v3_DiscoveryResponse* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DiscoveryResponse_has_control_plane(const envoy_service_discovery_v3_DiscoveryResponse* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_service_discovery_v3_DiscoveryResponse_clear_control_plane(const envoy_service_discovery_v3_DiscoveryResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_service_discovery_v3_DiscoveryResponse_has_control_plane(const envoy_service_discovery_v3_DiscoveryResponse *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_ControlPlane* envoy_service_discovery_v3_DiscoveryResponse_control_plane(const envoy_service_discovery_v3_DiscoveryResponse* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct envoy_config_core_v3_ControlPlane*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const struct envoy_config_core_v3_ControlPlane*);
}
UPB_INLINE void envoy_service_discovery_v3_DiscoveryResponse_set_version_info(envoy_service_discovery_v3_DiscoveryResponse *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE struct google_protobuf_Any** envoy_service_discovery_v3_DiscoveryResponse_mutable_resources(envoy_service_discovery_v3_DiscoveryResponse *msg, size_t *len) {
- return (struct google_protobuf_Any**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
+UPB_INLINE struct google_protobuf_Any** envoy_service_discovery_v3_DiscoveryResponse_mutable_resources(envoy_service_discovery_v3_DiscoveryResponse* msg, size_t* len) {
+ return (struct google_protobuf_Any**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE struct google_protobuf_Any** envoy_service_discovery_v3_DiscoveryResponse_resize_resources(envoy_service_discovery_v3_DiscoveryResponse *msg, size_t len, upb_Arena *arena) {
- return (struct google_protobuf_Any**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct google_protobuf_Any** envoy_service_discovery_v3_DiscoveryResponse_resize_resources(envoy_service_discovery_v3_DiscoveryResponse* msg, size_t len, upb_Arena* arena) {
+ return (struct google_protobuf_Any**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_Any* envoy_service_discovery_v3_DiscoveryResponse_add_resources(envoy_service_discovery_v3_DiscoveryResponse *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_service_discovery_v3_DiscoveryResponse_add_resources(envoy_service_discovery_v3_DiscoveryResponse* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(32, 64), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -220,16 +472,16 @@ UPB_INLINE void envoy_service_discovery_v3_DiscoveryResponse_set_canary(envoy_se
*UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
UPB_INLINE void envoy_service_discovery_v3_DiscoveryResponse_set_type_url(envoy_service_discovery_v3_DiscoveryResponse *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = value;
}
UPB_INLINE void envoy_service_discovery_v3_DiscoveryResponse_set_nonce(envoy_service_discovery_v3_DiscoveryResponse *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = value;
}
UPB_INLINE void envoy_service_discovery_v3_DiscoveryResponse_set_control_plane(envoy_service_discovery_v3_DiscoveryResponse *msg, struct envoy_config_core_v3_ControlPlane* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct envoy_config_core_v3_ControlPlane*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), struct envoy_config_core_v3_ControlPlane*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ControlPlane* envoy_service_discovery_v3_DiscoveryResponse_mutable_control_plane(envoy_service_discovery_v3_DiscoveryResponse *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ControlPlane* envoy_service_discovery_v3_DiscoveryResponse_mutable_control_plane(envoy_service_discovery_v3_DiscoveryResponse* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ControlPlane* sub = (struct envoy_config_core_v3_ControlPlane*)envoy_service_discovery_v3_DiscoveryResponse_control_plane(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ControlPlane*)_upb_Message_New(&envoy_config_core_v3_ControlPlane_msginit, arena);
@@ -264,38 +516,97 @@ UPB_INLINE envoy_service_discovery_v3_DeltaDiscoveryRequest* envoy_service_disco
return ret;
}
UPB_INLINE char* envoy_service_discovery_v3_DeltaDiscoveryRequest_serialize(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_discovery_v3_DeltaDiscoveryRequest_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DeltaDiscoveryRequest_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_service_discovery_v3_DeltaDiscoveryRequest_serialize_ex(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_discovery_v3_DeltaDiscoveryRequest_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DeltaDiscoveryRequest_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_has_node(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_clear_node(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_has_node(const envoy_service_discovery_v3_DeltaDiscoveryRequest *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_Node* envoy_service_discovery_v3_DeltaDiscoveryRequest_node(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct envoy_config_core_v3_Node*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_Node*);
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_clear_type_url(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_service_discovery_v3_DeltaDiscoveryRequest_type_url(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_clear_resource_names_subscribe(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE upb_StringView const* envoy_service_discovery_v3_DeltaDiscoveryRequest_resource_names_subscribe(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_clear_resource_names_unsubscribe(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE upb_StringView const* envoy_service_discovery_v3_DeltaDiscoveryRequest_resource_names_unsubscribe(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_has_initial_resource_versions(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_clear_initial_resource_versions(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE size_t envoy_service_discovery_v3_DeltaDiscoveryRequest_initial_resource_versions_size(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_initial_resource_versions_get(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, upb_StringView key, upb_StringView* val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(24, 48), &key, 0, val, 0);
+}
+UPB_INLINE const envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry* envoy_service_discovery_v3_DeltaDiscoveryRequest_initial_resource_versions_next(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, size_t* iter) {
+ return (const envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry*)_upb_msg_map_next(msg, UPB_SIZE(24, 48), iter);
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_clear_response_nonce(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
-UPB_INLINE upb_StringView const* envoy_service_discovery_v3_DeltaDiscoveryRequest_resource_names_subscribe(const envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len); }
-UPB_INLINE upb_StringView const* envoy_service_discovery_v3_DeltaDiscoveryRequest_resource_names_unsubscribe(const envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len); }
-UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_has_initial_resource_versions(const envoy_service_discovery_v3_DeltaDiscoveryRequest *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 72)); }
-UPB_INLINE size_t envoy_service_discovery_v3_DeltaDiscoveryRequest_initial_resource_versions_size(const envoy_service_discovery_v3_DeltaDiscoveryRequest *msg) {return _upb_msg_map_size(msg, UPB_SIZE(36, 72)); }
-UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_initial_resource_versions_get(const envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, upb_StringView key, upb_StringView *val) { return _upb_msg_map_get(msg, UPB_SIZE(36, 72), &key, 0, val, 0); }
-UPB_INLINE const envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry* envoy_service_discovery_v3_DeltaDiscoveryRequest_initial_resource_versions_next(const envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, size_t* iter) { return (const envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry*)_upb_msg_map_next(msg, UPB_SIZE(36, 72), iter); }
UPB_INLINE upb_StringView envoy_service_discovery_v3_DeltaDiscoveryRequest_response_nonce(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_has_error_detail(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_clear_error_detail(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_has_error_detail(const envoy_service_discovery_v3_DeltaDiscoveryRequest *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_rpc_Status* envoy_service_discovery_v3_DeltaDiscoveryRequest_error_detail(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct google_rpc_Status*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const struct google_rpc_Status*);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_has_resource_locators_subscribe(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(40, 80));
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_clear_resource_locators_subscribe(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ _upb_array_detach(msg, UPB_SIZE(40, 80));
+}
+UPB_INLINE const envoy_service_discovery_v3_ResourceLocator* const* envoy_service_discovery_v3_DeltaDiscoveryRequest_resource_locators_subscribe(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, size_t* len) {
+ return (const envoy_service_discovery_v3_ResourceLocator* const*)_upb_array_accessor(msg, UPB_SIZE(40, 80), len);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_has_resource_locators_unsubscribe(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 88));
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_clear_resource_locators_unsubscribe(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) {
+ _upb_array_detach(msg, UPB_SIZE(44, 88));
+}
+UPB_INLINE const envoy_service_discovery_v3_ResourceLocator* const* envoy_service_discovery_v3_DeltaDiscoveryRequest_resource_locators_unsubscribe(const envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, size_t* len) {
+ return (const envoy_service_discovery_v3_ResourceLocator* const*)_upb_array_accessor(msg, UPB_SIZE(44, 88), len);
}
UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_set_node(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, struct envoy_config_core_v3_Node* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct envoy_config_core_v3_Node*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_Node*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Node* envoy_service_discovery_v3_DeltaDiscoveryRequest_mutable_node(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Node* envoy_service_discovery_v3_DeltaDiscoveryRequest_mutable_node(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Node* sub = (struct envoy_config_core_v3_Node*)envoy_service_discovery_v3_DeltaDiscoveryRequest_node(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Node*)_upb_Message_New(&envoy_config_core_v3_Node_msginit, arena);
@@ -305,40 +616,44 @@ UPB_INLINE struct envoy_config_core_v3_Node* envoy_service_discovery_v3_DeltaDis
return sub;
}
UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_set_type_url(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
-UPB_INLINE upb_StringView* envoy_service_discovery_v3_DeltaDiscoveryRequest_mutable_resource_names_subscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
+UPB_INLINE upb_StringView* envoy_service_discovery_v3_DeltaDiscoveryRequest_mutable_resource_names_subscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE upb_StringView* envoy_service_discovery_v3_DeltaDiscoveryRequest_resize_resource_names_subscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_service_discovery_v3_DeltaDiscoveryRequest_resize_resource_names_subscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_add_resource_names_subscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 56), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_add_resource_names_subscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE upb_StringView* envoy_service_discovery_v3_DeltaDiscoveryRequest_mutable_resource_names_unsubscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
+UPB_INLINE upb_StringView* envoy_service_discovery_v3_DeltaDiscoveryRequest_mutable_resource_names_unsubscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
}
-UPB_INLINE upb_StringView* envoy_service_discovery_v3_DeltaDiscoveryRequest_resize_resource_names_unsubscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_service_discovery_v3_DeltaDiscoveryRequest_resize_resource_names_unsubscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(3, 4), arena);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_add_resource_names_unsubscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 40), UPB_SIZE(3, 4), &val, arena);
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_initial_resource_versions_clear(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg) { _upb_msg_map_clear(msg, UPB_SIZE(24, 48)); }
+UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_initial_resource_versions_set(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, upb_StringView key, upb_StringView val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(24, 48), &key, 0, &val, 0, a);
}
-UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_add_resource_names_unsubscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 64), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_initial_resource_versions_delete(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(24, 48), &key, 0);
+}
+UPB_INLINE envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry* envoy_service_discovery_v3_DeltaDiscoveryRequest_initial_resource_versions_nextmutable(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, size_t* iter) {
+ return (envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry*)_upb_msg_map_next(msg, UPB_SIZE(24, 48), iter);
}
-UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_initial_resource_versions_clear(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg) { _upb_msg_map_clear(msg, UPB_SIZE(36, 72)); }
-UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_initial_resource_versions_set(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, upb_StringView key, upb_StringView val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(36, 72), &key, 0, &val, 0, a); }
-UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryRequest_initial_resource_versions_delete(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(36, 72), &key, 0); }
-UPB_INLINE envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry* envoy_service_discovery_v3_DeltaDiscoveryRequest_initial_resource_versions_nextmutable(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, size_t* iter) { return (envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry*)_upb_msg_map_next(msg, UPB_SIZE(36, 72), iter); }
UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_set_response_nonce(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), upb_StringView) = value;
}
UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryRequest_set_error_detail(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, struct google_rpc_Status* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct google_rpc_Status*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), struct google_rpc_Status*) = value;
}
-UPB_INLINE struct google_rpc_Status* envoy_service_discovery_v3_DeltaDiscoveryRequest_mutable_error_detail(envoy_service_discovery_v3_DeltaDiscoveryRequest *msg, upb_Arena *arena) {
+UPB_INLINE struct google_rpc_Status* envoy_service_discovery_v3_DeltaDiscoveryRequest_mutable_error_detail(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, upb_Arena* arena) {
struct google_rpc_Status* sub = (struct google_rpc_Status*)envoy_service_discovery_v3_DeltaDiscoveryRequest_error_detail(msg);
if (sub == NULL) {
sub = (struct google_rpc_Status*)_upb_Message_New(&google_rpc_Status_msginit, arena);
@@ -347,15 +662,39 @@ UPB_INLINE struct google_rpc_Status* envoy_service_discovery_v3_DeltaDiscoveryRe
}
return sub;
}
+UPB_INLINE envoy_service_discovery_v3_ResourceLocator** envoy_service_discovery_v3_DeltaDiscoveryRequest_mutable_resource_locators_subscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, size_t* len) {
+ return (envoy_service_discovery_v3_ResourceLocator**)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 80), len);
+}
+UPB_INLINE envoy_service_discovery_v3_ResourceLocator** envoy_service_discovery_v3_DeltaDiscoveryRequest_resize_resource_locators_subscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, size_t len, upb_Arena* arena) {
+ return (envoy_service_discovery_v3_ResourceLocator**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 80), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_service_discovery_v3_ResourceLocator* envoy_service_discovery_v3_DeltaDiscoveryRequest_add_resource_locators_subscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, upb_Arena* arena) {
+ struct envoy_service_discovery_v3_ResourceLocator* sub = (struct envoy_service_discovery_v3_ResourceLocator*)_upb_Message_New(&envoy_service_discovery_v3_ResourceLocator_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 80), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE envoy_service_discovery_v3_ResourceLocator** envoy_service_discovery_v3_DeltaDiscoveryRequest_mutable_resource_locators_unsubscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, size_t* len) {
+ return (envoy_service_discovery_v3_ResourceLocator**)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 88), len);
+}
+UPB_INLINE envoy_service_discovery_v3_ResourceLocator** envoy_service_discovery_v3_DeltaDiscoveryRequest_resize_resource_locators_unsubscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, size_t len, upb_Arena* arena) {
+ return (envoy_service_discovery_v3_ResourceLocator**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 88), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_service_discovery_v3_ResourceLocator* envoy_service_discovery_v3_DeltaDiscoveryRequest_add_resource_locators_unsubscribe(envoy_service_discovery_v3_DeltaDiscoveryRequest* msg, upb_Arena* arena) {
+ struct envoy_service_discovery_v3_ResourceLocator* sub = (struct envoy_service_discovery_v3_ResourceLocator*)_upb_Message_New(&envoy_service_discovery_v3_ResourceLocator_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(44, 88), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
/* envoy.service.discovery.v3.DeltaDiscoveryRequest.InitialResourceVersionsEntry */
-UPB_INLINE upb_StringView envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry_key(const envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry *msg) {
+UPB_INLINE upb_StringView envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry_key(const envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE upb_StringView envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry_value(const envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry *msg) {
+UPB_INLINE upb_StringView envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry_value(const envoy_service_discovery_v3_DeltaDiscoveryRequest_InitialResourceVersionsEntry* msg) {
upb_StringView ret;
_upb_msg_map_value(msg, &ret, 0);
return ret;
@@ -390,66 +729,103 @@ UPB_INLINE envoy_service_discovery_v3_DeltaDiscoveryResponse* envoy_service_disc
return ret;
}
UPB_INLINE char* envoy_service_discovery_v3_DeltaDiscoveryResponse_serialize(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_discovery_v3_DeltaDiscoveryResponse_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DeltaDiscoveryResponse_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_service_discovery_v3_DeltaDiscoveryResponse_serialize_ex(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_discovery_v3_DeltaDiscoveryResponse_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DeltaDiscoveryResponse_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryResponse_clear_system_version_info(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_service_discovery_v3_DeltaDiscoveryResponse_system_version_info(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryResponse_has_resources(const envoy_service_discovery_v3_DeltaDiscoveryResponse *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 64)); }
-UPB_INLINE const envoy_service_discovery_v3_Resource* const* envoy_service_discovery_v3_DeltaDiscoveryResponse_resources(const envoy_service_discovery_v3_DeltaDiscoveryResponse *msg, size_t *len) { return (const envoy_service_discovery_v3_Resource* const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len); }
+UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryResponse_has_resources(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryResponse_clear_resources(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const envoy_service_discovery_v3_Resource* const* envoy_service_discovery_v3_DeltaDiscoveryResponse_resources(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, size_t* len) {
+ return (const envoy_service_discovery_v3_Resource* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryResponse_clear_type_url(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_service_discovery_v3_DeltaDiscoveryResponse_type_url(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView);
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryResponse_clear_nonce(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_service_discovery_v3_DeltaDiscoveryResponse_nonce(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView);
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryResponse_clear_removed_resources(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 64));
+}
+UPB_INLINE upb_StringView const* envoy_service_discovery_v3_DeltaDiscoveryResponse_removed_resources(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryResponse_has_control_plane(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryResponse_clear_control_plane(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const upb_Message*) = NULL;
}
-UPB_INLINE upb_StringView const* envoy_service_discovery_v3_DeltaDiscoveryResponse_removed_resources(const envoy_service_discovery_v3_DeltaDiscoveryResponse *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(36, 72), len); }
-UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryResponse_has_control_plane(const envoy_service_discovery_v3_DeltaDiscoveryResponse *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_ControlPlane* envoy_service_discovery_v3_DeltaDiscoveryResponse_control_plane(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct envoy_config_core_v3_ControlPlane*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const struct envoy_config_core_v3_ControlPlane*);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryResponse_has_removed_resource_names(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(40, 80));
+}
+UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryResponse_clear_removed_resource_names(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg) {
+ _upb_array_detach(msg, UPB_SIZE(40, 80));
+}
+UPB_INLINE const envoy_service_discovery_v3_ResourceName* const* envoy_service_discovery_v3_DeltaDiscoveryResponse_removed_resource_names(const envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, size_t* len) {
+ return (const envoy_service_discovery_v3_ResourceName* const*)_upb_array_accessor(msg, UPB_SIZE(40, 80), len);
}
UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryResponse_set_system_version_info(envoy_service_discovery_v3_DeltaDiscoveryResponse *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE envoy_service_discovery_v3_Resource** envoy_service_discovery_v3_DeltaDiscoveryResponse_mutable_resources(envoy_service_discovery_v3_DeltaDiscoveryResponse *msg, size_t *len) {
- return (envoy_service_discovery_v3_Resource**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
+UPB_INLINE envoy_service_discovery_v3_Resource** envoy_service_discovery_v3_DeltaDiscoveryResponse_mutable_resources(envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, size_t* len) {
+ return (envoy_service_discovery_v3_Resource**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE envoy_service_discovery_v3_Resource** envoy_service_discovery_v3_DeltaDiscoveryResponse_resize_resources(envoy_service_discovery_v3_DeltaDiscoveryResponse *msg, size_t len, upb_Arena *arena) {
- return (envoy_service_discovery_v3_Resource**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_service_discovery_v3_Resource** envoy_service_discovery_v3_DeltaDiscoveryResponse_resize_resources(envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, size_t len, upb_Arena* arena) {
+ return (envoy_service_discovery_v3_Resource**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_service_discovery_v3_Resource* envoy_service_discovery_v3_DeltaDiscoveryResponse_add_resources(envoy_service_discovery_v3_DeltaDiscoveryResponse *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_service_discovery_v3_Resource* envoy_service_discovery_v3_DeltaDiscoveryResponse_add_resources(envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, upb_Arena* arena) {
struct envoy_service_discovery_v3_Resource* sub = (struct envoy_service_discovery_v3_Resource*)_upb_Message_New(&envoy_service_discovery_v3_Resource_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(32, 64), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryResponse_set_type_url(envoy_service_discovery_v3_DeltaDiscoveryResponse *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = value;
}
UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryResponse_set_nonce(envoy_service_discovery_v3_DeltaDiscoveryResponse *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = value;
}
-UPB_INLINE upb_StringView* envoy_service_discovery_v3_DeltaDiscoveryResponse_mutable_removed_resources(envoy_service_discovery_v3_DeltaDiscoveryResponse *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 72), len);
+UPB_INLINE upb_StringView* envoy_service_discovery_v3_DeltaDiscoveryResponse_mutable_removed_resources(envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
}
-UPB_INLINE upb_StringView* envoy_service_discovery_v3_DeltaDiscoveryResponse_resize_removed_resources(envoy_service_discovery_v3_DeltaDiscoveryResponse *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 72), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_service_discovery_v3_DeltaDiscoveryResponse_resize_removed_resources(envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryResponse_add_removed_resources(envoy_service_discovery_v3_DeltaDiscoveryResponse *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 72), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_service_discovery_v3_DeltaDiscoveryResponse_add_removed_resources(envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 64), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_service_discovery_v3_DeltaDiscoveryResponse_set_control_plane(envoy_service_discovery_v3_DeltaDiscoveryResponse *msg, struct envoy_config_core_v3_ControlPlane* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct envoy_config_core_v3_ControlPlane*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), struct envoy_config_core_v3_ControlPlane*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_ControlPlane* envoy_service_discovery_v3_DeltaDiscoveryResponse_mutable_control_plane(envoy_service_discovery_v3_DeltaDiscoveryResponse *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_ControlPlane* envoy_service_discovery_v3_DeltaDiscoveryResponse_mutable_control_plane(envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, upb_Arena* arena) {
struct envoy_config_core_v3_ControlPlane* sub = (struct envoy_config_core_v3_ControlPlane*)envoy_service_discovery_v3_DeltaDiscoveryResponse_control_plane(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_ControlPlane*)_upb_Message_New(&envoy_config_core_v3_ControlPlane_msginit, arena);
@@ -458,6 +834,331 @@ UPB_INLINE struct envoy_config_core_v3_ControlPlane* envoy_service_discovery_v3_
}
return sub;
}
+UPB_INLINE envoy_service_discovery_v3_ResourceName** envoy_service_discovery_v3_DeltaDiscoveryResponse_mutable_removed_resource_names(envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, size_t* len) {
+ return (envoy_service_discovery_v3_ResourceName**)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 80), len);
+}
+UPB_INLINE envoy_service_discovery_v3_ResourceName** envoy_service_discovery_v3_DeltaDiscoveryResponse_resize_removed_resource_names(envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, size_t len, upb_Arena* arena) {
+ return (envoy_service_discovery_v3_ResourceName**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 80), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_service_discovery_v3_ResourceName* envoy_service_discovery_v3_DeltaDiscoveryResponse_add_removed_resource_names(envoy_service_discovery_v3_DeltaDiscoveryResponse* msg, upb_Arena* arena) {
+ struct envoy_service_discovery_v3_ResourceName* sub = (struct envoy_service_discovery_v3_ResourceName*)_upb_Message_New(&envoy_service_discovery_v3_ResourceName_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 80), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+
+/* envoy.service.discovery.v3.DynamicParameterConstraints */
+
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints* envoy_service_discovery_v3_DynamicParameterConstraints_new(upb_Arena* arena) {
+ return (envoy_service_discovery_v3_DynamicParameterConstraints*)_upb_Message_New(&envoy_service_discovery_v3_DynamicParameterConstraints_msginit, arena);
+}
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints* envoy_service_discovery_v3_DynamicParameterConstraints_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_service_discovery_v3_DynamicParameterConstraints* ret = envoy_service_discovery_v3_DynamicParameterConstraints_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_service_discovery_v3_DynamicParameterConstraints_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints* envoy_service_discovery_v3_DynamicParameterConstraints_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_service_discovery_v3_DynamicParameterConstraints* ret = envoy_service_discovery_v3_DynamicParameterConstraints_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_service_discovery_v3_DynamicParameterConstraints_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_service_discovery_v3_DynamicParameterConstraints_serialize(const envoy_service_discovery_v3_DynamicParameterConstraints* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DynamicParameterConstraints_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_service_discovery_v3_DynamicParameterConstraints_serialize_ex(const envoy_service_discovery_v3_DynamicParameterConstraints* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DynamicParameterConstraints_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+typedef enum {
+ envoy_service_discovery_v3_DynamicParameterConstraints_type_constraint = 1,
+ envoy_service_discovery_v3_DynamicParameterConstraints_type_or_constraints = 2,
+ envoy_service_discovery_v3_DynamicParameterConstraints_type_and_constraints = 3,
+ envoy_service_discovery_v3_DynamicParameterConstraints_type_not_constraints = 4,
+ envoy_service_discovery_v3_DynamicParameterConstraints_type_NOT_SET = 0
+} envoy_service_discovery_v3_DynamicParameterConstraints_type_oneofcases;
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints_type_oneofcases envoy_service_discovery_v3_DynamicParameterConstraints_type_case(const envoy_service_discovery_v3_DynamicParameterConstraints* msg) {
+ return (envoy_service_discovery_v3_DynamicParameterConstraints_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DynamicParameterConstraints_has_constraint(const envoy_service_discovery_v3_DynamicParameterConstraints* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_clear_constraint(const envoy_service_discovery_v3_DynamicParameterConstraints* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_service_discovery_v3_DynamicParameterConstraints_type_NOT_SET);
+}
+UPB_INLINE const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* envoy_service_discovery_v3_DynamicParameterConstraints_constraint(const envoy_service_discovery_v3_DynamicParameterConstraints* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DynamicParameterConstraints_has_or_constraints(const envoy_service_discovery_v3_DynamicParameterConstraints* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_clear_or_constraints(const envoy_service_discovery_v3_DynamicParameterConstraints* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_service_discovery_v3_DynamicParameterConstraints_type_NOT_SET);
+}
+UPB_INLINE const envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* envoy_service_discovery_v3_DynamicParameterConstraints_or_constraints(const envoy_service_discovery_v3_DynamicParameterConstraints* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DynamicParameterConstraints_has_and_constraints(const envoy_service_discovery_v3_DynamicParameterConstraints* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_clear_and_constraints(const envoy_service_discovery_v3_DynamicParameterConstraints* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_service_discovery_v3_DynamicParameterConstraints_type_NOT_SET);
+}
+UPB_INLINE const envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* envoy_service_discovery_v3_DynamicParameterConstraints_and_constraints(const envoy_service_discovery_v3_DynamicParameterConstraints* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DynamicParameterConstraints_has_not_constraints(const envoy_service_discovery_v3_DynamicParameterConstraints* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_clear_not_constraints(const envoy_service_discovery_v3_DynamicParameterConstraints* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_service_discovery_v3_DynamicParameterConstraints*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_service_discovery_v3_DynamicParameterConstraints_type_NOT_SET);
+}
+UPB_INLINE const envoy_service_discovery_v3_DynamicParameterConstraints* envoy_service_discovery_v3_DynamicParameterConstraints_not_constraints(const envoy_service_discovery_v3_DynamicParameterConstraints* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_service_discovery_v3_DynamicParameterConstraints*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, NULL);
+}
+
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_set_constraint(envoy_service_discovery_v3_DynamicParameterConstraints *msg, envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* value) {
+ UPB_WRITE_ONEOF(msg, envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
+}
+UPB_INLINE struct envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* envoy_service_discovery_v3_DynamicParameterConstraints_mutable_constraint(envoy_service_discovery_v3_DynamicParameterConstraints* msg, upb_Arena* arena) {
+ struct envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* sub = (struct envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint*)envoy_service_discovery_v3_DynamicParameterConstraints_constraint(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint*)_upb_Message_New(&envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_msginit, arena);
+ if (!sub) return NULL;
+ envoy_service_discovery_v3_DynamicParameterConstraints_set_constraint(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_set_or_constraints(envoy_service_discovery_v3_DynamicParameterConstraints *msg, envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* value) {
+ UPB_WRITE_ONEOF(msg, envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
+}
+UPB_INLINE struct envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* envoy_service_discovery_v3_DynamicParameterConstraints_mutable_or_constraints(envoy_service_discovery_v3_DynamicParameterConstraints* msg, upb_Arena* arena) {
+ struct envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* sub = (struct envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList*)envoy_service_discovery_v3_DynamicParameterConstraints_or_constraints(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList*)_upb_Message_New(&envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_msginit, arena);
+ if (!sub) return NULL;
+ envoy_service_discovery_v3_DynamicParameterConstraints_set_or_constraints(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_set_and_constraints(envoy_service_discovery_v3_DynamicParameterConstraints *msg, envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* value) {
+ UPB_WRITE_ONEOF(msg, envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
+}
+UPB_INLINE struct envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* envoy_service_discovery_v3_DynamicParameterConstraints_mutable_and_constraints(envoy_service_discovery_v3_DynamicParameterConstraints* msg, upb_Arena* arena) {
+ struct envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* sub = (struct envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList*)envoy_service_discovery_v3_DynamicParameterConstraints_and_constraints(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList*)_upb_Message_New(&envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_msginit, arena);
+ if (!sub) return NULL;
+ envoy_service_discovery_v3_DynamicParameterConstraints_set_and_constraints(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_set_not_constraints(envoy_service_discovery_v3_DynamicParameterConstraints *msg, envoy_service_discovery_v3_DynamicParameterConstraints* value) {
+ UPB_WRITE_ONEOF(msg, envoy_service_discovery_v3_DynamicParameterConstraints*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
+}
+UPB_INLINE struct envoy_service_discovery_v3_DynamicParameterConstraints* envoy_service_discovery_v3_DynamicParameterConstraints_mutable_not_constraints(envoy_service_discovery_v3_DynamicParameterConstraints* msg, upb_Arena* arena) {
+ struct envoy_service_discovery_v3_DynamicParameterConstraints* sub = (struct envoy_service_discovery_v3_DynamicParameterConstraints*)envoy_service_discovery_v3_DynamicParameterConstraints_not_constraints(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_service_discovery_v3_DynamicParameterConstraints*)_upb_Message_New(&envoy_service_discovery_v3_DynamicParameterConstraints_msginit, arena);
+ if (!sub) return NULL;
+ envoy_service_discovery_v3_DynamicParameterConstraints_set_not_constraints(msg, sub);
+ }
+ return sub;
+}
+
+/* envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraint */
+
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_new(upb_Arena* arena) {
+ return (envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint*)_upb_Message_New(&envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_msginit, arena);
+}
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* ret = envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* ret = envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_serialize(const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_serialize_ex(const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+typedef enum {
+ envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_constraint_type_value = 2,
+ envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_constraint_type_exists = 3,
+ envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_constraint_type_NOT_SET = 0
+} envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_constraint_type_oneofcases;
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_constraint_type_oneofcases envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_constraint_type_case(const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* msg) {
+ return (envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_constraint_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_clear_key(const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_key(const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+}
+UPB_INLINE bool envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_has_value(const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_clear_value(const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_constraint_type_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_value(const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_has_exists(const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_clear_exists(const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_constraint_type_NOT_SET);
+}
+UPB_INLINE const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists* envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_exists(const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
+
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_set_key(envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+}
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_set_value(envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint *msg, upb_StringView value) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
+}
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_set_exists(envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint *msg, envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists* value) {
+ UPB_WRITE_ONEOF(msg, envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
+}
+UPB_INLINE struct envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists* envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_mutable_exists(envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint* msg, upb_Arena* arena) {
+ struct envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists* sub = (struct envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists*)envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_exists(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists*)_upb_Message_New(&envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_msginit, arena);
+ if (!sub) return NULL;
+ envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_set_exists(msg, sub);
+ }
+ return sub;
+}
+
+/* envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraint.Exists */
+
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists* envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_new(upb_Arena* arena) {
+ return (envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists*)_upb_Message_New(&envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_msginit, arena);
+}
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists* envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists* ret = envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists* envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists* ret = envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_serialize(const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_serialize_ex(const envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+
+
+/* envoy.service.discovery.v3.DynamicParameterConstraints.ConstraintList */
+
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_new(upb_Arena* arena) {
+ return (envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList*)_upb_Message_New(&envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_msginit, arena);
+}
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* ret = envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* ret = envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_serialize(const envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_serialize_ex(const envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_has_constraints(const envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_clear_constraints(const envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_service_discovery_v3_DynamicParameterConstraints* const* envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_constraints(const envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* msg, size_t* len) {
+ return (const envoy_service_discovery_v3_DynamicParameterConstraints* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
+}
+
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints** envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_mutable_constraints(envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* msg, size_t* len) {
+ return (envoy_service_discovery_v3_DynamicParameterConstraints**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE envoy_service_discovery_v3_DynamicParameterConstraints** envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_resize_constraints(envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* msg, size_t len, upb_Arena* arena) {
+ return (envoy_service_discovery_v3_DynamicParameterConstraints**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct envoy_service_discovery_v3_DynamicParameterConstraints* envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_add_constraints(envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList* msg, upb_Arena* arena) {
+ struct envoy_service_discovery_v3_DynamicParameterConstraints* sub = (struct envoy_service_discovery_v3_DynamicParameterConstraints*)_upb_Message_New(&envoy_service_discovery_v3_DynamicParameterConstraints_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
/* envoy.service.discovery.v3.Resource */
@@ -484,30 +1185,69 @@ UPB_INLINE envoy_service_discovery_v3_Resource* envoy_service_discovery_v3_Resou
return ret;
}
UPB_INLINE char* envoy_service_discovery_v3_Resource_serialize(const envoy_service_discovery_v3_Resource* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_discovery_v3_Resource_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_Resource_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_service_discovery_v3_Resource_serialize_ex(const envoy_service_discovery_v3_Resource* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_discovery_v3_Resource_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_Resource_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_service_discovery_v3_Resource_clear_version(const envoy_service_discovery_v3_Resource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_service_discovery_v3_Resource_version(const envoy_service_discovery_v3_Resource* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_service_discovery_v3_Resource_has_resource(const envoy_service_discovery_v3_Resource *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_service_discovery_v3_Resource_has_resource(const envoy_service_discovery_v3_Resource* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_service_discovery_v3_Resource_clear_resource(const envoy_service_discovery_v3_Resource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Any* envoy_service_discovery_v3_Resource_resource(const envoy_service_discovery_v3_Resource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct google_protobuf_Any*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Any*);
+}
+UPB_INLINE void envoy_service_discovery_v3_Resource_clear_name(const envoy_service_discovery_v3_Resource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_service_discovery_v3_Resource_name(const envoy_service_discovery_v3_Resource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView);
+}
+UPB_INLINE void envoy_service_discovery_v3_Resource_clear_aliases(const envoy_service_discovery_v3_Resource* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE upb_StringView const* envoy_service_discovery_v3_Resource_aliases(const envoy_service_discovery_v3_Resource* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len);
+}
+UPB_INLINE bool envoy_service_discovery_v3_Resource_has_ttl(const envoy_service_discovery_v3_Resource* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_service_discovery_v3_Resource_clear_ttl(const envoy_service_discovery_v3_Resource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const upb_Message*) = NULL;
}
-UPB_INLINE upb_StringView const* envoy_service_discovery_v3_Resource_aliases(const envoy_service_discovery_v3_Resource *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len); }
-UPB_INLINE bool envoy_service_discovery_v3_Resource_has_ttl(const envoy_service_discovery_v3_Resource *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_Duration* envoy_service_discovery_v3_Resource_ttl(const envoy_service_discovery_v3_Resource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool envoy_service_discovery_v3_Resource_has_cache_control(const envoy_service_discovery_v3_Resource* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_service_discovery_v3_Resource_clear_cache_control(const envoy_service_discovery_v3_Resource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_service_discovery_v3_Resource_has_cache_control(const envoy_service_discovery_v3_Resource *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const envoy_service_discovery_v3_Resource_CacheControl* envoy_service_discovery_v3_Resource_cache_control(const envoy_service_discovery_v3_Resource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const envoy_service_discovery_v3_Resource_CacheControl*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const envoy_service_discovery_v3_Resource_CacheControl*);
+}
+UPB_INLINE bool envoy_service_discovery_v3_Resource_has_resource_name(const envoy_service_discovery_v3_Resource* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void envoy_service_discovery_v3_Resource_clear_resource_name(const envoy_service_discovery_v3_Resource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const upb_Message*) = NULL;
+}
+UPB_INLINE const envoy_service_discovery_v3_ResourceName* envoy_service_discovery_v3_Resource_resource_name(const envoy_service_discovery_v3_Resource* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const envoy_service_discovery_v3_ResourceName*);
}
UPB_INLINE void envoy_service_discovery_v3_Resource_set_version(envoy_service_discovery_v3_Resource *msg, upb_StringView value) {
@@ -515,9 +1255,9 @@ UPB_INLINE void envoy_service_discovery_v3_Resource_set_version(envoy_service_di
}
UPB_INLINE void envoy_service_discovery_v3_Resource_set_resource(envoy_service_discovery_v3_Resource *msg, struct google_protobuf_Any* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct google_protobuf_Any*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* envoy_service_discovery_v3_Resource_mutable_resource(envoy_service_discovery_v3_Resource *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_service_discovery_v3_Resource_mutable_resource(envoy_service_discovery_v3_Resource* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_service_discovery_v3_Resource_resource(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -527,23 +1267,22 @@ UPB_INLINE struct google_protobuf_Any* envoy_service_discovery_v3_Resource_mutab
return sub;
}
UPB_INLINE void envoy_service_discovery_v3_Resource_set_name(envoy_service_discovery_v3_Resource *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = value;
}
-UPB_INLINE upb_StringView* envoy_service_discovery_v3_Resource_mutable_aliases(envoy_service_discovery_v3_Resource *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
+UPB_INLINE upb_StringView* envoy_service_discovery_v3_Resource_mutable_aliases(envoy_service_discovery_v3_Resource* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
}
-UPB_INLINE upb_StringView* envoy_service_discovery_v3_Resource_resize_aliases(envoy_service_discovery_v3_Resource *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_service_discovery_v3_Resource_resize_aliases(envoy_service_discovery_v3_Resource* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_service_discovery_v3_Resource_add_aliases(envoy_service_discovery_v3_Resource *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 64), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_service_discovery_v3_Resource_add_aliases(envoy_service_discovery_v3_Resource* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 48), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_service_discovery_v3_Resource_set_ttl(envoy_service_discovery_v3_Resource *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_service_discovery_v3_Resource_mutable_ttl(envoy_service_discovery_v3_Resource *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_service_discovery_v3_Resource_mutable_ttl(envoy_service_discovery_v3_Resource* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_service_discovery_v3_Resource_ttl(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -554,9 +1293,9 @@ UPB_INLINE struct google_protobuf_Duration* envoy_service_discovery_v3_Resource_
}
UPB_INLINE void envoy_service_discovery_v3_Resource_set_cache_control(envoy_service_discovery_v3_Resource *msg, envoy_service_discovery_v3_Resource_CacheControl* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 56), envoy_service_discovery_v3_Resource_CacheControl*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), envoy_service_discovery_v3_Resource_CacheControl*) = value;
}
-UPB_INLINE struct envoy_service_discovery_v3_Resource_CacheControl* envoy_service_discovery_v3_Resource_mutable_cache_control(envoy_service_discovery_v3_Resource *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_service_discovery_v3_Resource_CacheControl* envoy_service_discovery_v3_Resource_mutable_cache_control(envoy_service_discovery_v3_Resource* msg, upb_Arena* arena) {
struct envoy_service_discovery_v3_Resource_CacheControl* sub = (struct envoy_service_discovery_v3_Resource_CacheControl*)envoy_service_discovery_v3_Resource_cache_control(msg);
if (sub == NULL) {
sub = (struct envoy_service_discovery_v3_Resource_CacheControl*)_upb_Message_New(&envoy_service_discovery_v3_Resource_CacheControl_msginit, arena);
@@ -565,6 +1304,19 @@ UPB_INLINE struct envoy_service_discovery_v3_Resource_CacheControl* envoy_servic
}
return sub;
}
+UPB_INLINE void envoy_service_discovery_v3_Resource_set_resource_name(envoy_service_discovery_v3_Resource *msg, envoy_service_discovery_v3_ResourceName* value) {
+ _upb_sethas(msg, 4);
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), envoy_service_discovery_v3_ResourceName*) = value;
+}
+UPB_INLINE struct envoy_service_discovery_v3_ResourceName* envoy_service_discovery_v3_Resource_mutable_resource_name(envoy_service_discovery_v3_Resource* msg, upb_Arena* arena) {
+ struct envoy_service_discovery_v3_ResourceName* sub = (struct envoy_service_discovery_v3_ResourceName*)envoy_service_discovery_v3_Resource_resource_name(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_service_discovery_v3_ResourceName*)_upb_Message_New(&envoy_service_discovery_v3_ResourceName_msginit, arena);
+ if (!sub) return NULL;
+ envoy_service_discovery_v3_Resource_set_resource_name(msg, sub);
+ }
+ return sub;
+}
/* envoy.service.discovery.v3.Resource.CacheControl */
@@ -591,11 +1343,18 @@ UPB_INLINE envoy_service_discovery_v3_Resource_CacheControl* envoy_service_disco
return ret;
}
UPB_INLINE char* envoy_service_discovery_v3_Resource_CacheControl_serialize(const envoy_service_discovery_v3_Resource_CacheControl* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_discovery_v3_Resource_CacheControl_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_Resource_CacheControl_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_service_discovery_v3_Resource_CacheControl_serialize_ex(const envoy_service_discovery_v3_Resource_CacheControl* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_discovery_v3_Resource_CacheControl_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_discovery_v3_Resource_CacheControl_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_service_discovery_v3_Resource_CacheControl_clear_do_not_cache(const envoy_service_discovery_v3_Resource_CacheControl* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool envoy_service_discovery_v3_Resource_CacheControl_do_not_cache(const envoy_service_discovery_v3_Resource_CacheControl* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c
index c277f5cb88..539f7ccb8e 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c
@@ -23,14 +23,14 @@ static const upb_MiniTable_Sub envoy_service_load_stats_v3_LoadStatsRequest_subm
};
static const upb_MiniTable_Field envoy_service_load_stats_v3_LoadStatsRequest__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_service_load_stats_v3_LoadStatsRequest_msginit = {
&envoy_service_load_stats_v3_LoadStatsRequest_submsgs[0],
&envoy_service_load_stats_v3_LoadStatsRequest__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_service_load_stats_v3_LoadStatsResponse_submsgs[1] = {
@@ -38,16 +38,16 @@ static const upb_MiniTable_Sub envoy_service_load_stats_v3_LoadStatsResponse_sub
};
static const upb_MiniTable_Field envoy_service_load_stats_v3_LoadStatsResponse__fields[4] = {
- {1, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(2, 2), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(2, 2), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_service_load_stats_v3_LoadStatsResponse_msginit = {
&envoy_service_load_stats_v3_LoadStatsResponse_submsgs[0],
&envoy_service_load_stats_v3_LoadStatsResponse__fields[0],
- UPB_SIZE(16, 24), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(16, 24), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h
index 50d9e592e2..86c0e872ad 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h
@@ -60,24 +60,40 @@ UPB_INLINE envoy_service_load_stats_v3_LoadStatsRequest* envoy_service_load_stat
return ret;
}
UPB_INLINE char* envoy_service_load_stats_v3_LoadStatsRequest_serialize(const envoy_service_load_stats_v3_LoadStatsRequest* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_load_stats_v3_LoadStatsRequest_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_load_stats_v3_LoadStatsRequest_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_service_load_stats_v3_LoadStatsRequest_serialize_ex(const envoy_service_load_stats_v3_LoadStatsRequest* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_load_stats_v3_LoadStatsRequest_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_load_stats_v3_LoadStatsRequest_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_service_load_stats_v3_LoadStatsRequest_has_node(const envoy_service_load_stats_v3_LoadStatsRequest* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_service_load_stats_v3_LoadStatsRequest_clear_node(const envoy_service_load_stats_v3_LoadStatsRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_service_load_stats_v3_LoadStatsRequest_has_node(const envoy_service_load_stats_v3_LoadStatsRequest *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_Node* envoy_service_load_stats_v3_LoadStatsRequest_node(const envoy_service_load_stats_v3_LoadStatsRequest* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_Node*);
}
-UPB_INLINE bool envoy_service_load_stats_v3_LoadStatsRequest_has_cluster_stats(const envoy_service_load_stats_v3_LoadStatsRequest *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct envoy_config_endpoint_v3_ClusterStats* const* envoy_service_load_stats_v3_LoadStatsRequest_cluster_stats(const envoy_service_load_stats_v3_LoadStatsRequest *msg, size_t *len) { return (const struct envoy_config_endpoint_v3_ClusterStats* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
+UPB_INLINE bool envoy_service_load_stats_v3_LoadStatsRequest_has_cluster_stats(const envoy_service_load_stats_v3_LoadStatsRequest* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_service_load_stats_v3_LoadStatsRequest_clear_cluster_stats(const envoy_service_load_stats_v3_LoadStatsRequest* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const struct envoy_config_endpoint_v3_ClusterStats* const* envoy_service_load_stats_v3_LoadStatsRequest_cluster_stats(const envoy_service_load_stats_v3_LoadStatsRequest* msg, size_t* len) {
+ return (const struct envoy_config_endpoint_v3_ClusterStats* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
UPB_INLINE void envoy_service_load_stats_v3_LoadStatsRequest_set_node(envoy_service_load_stats_v3_LoadStatsRequest *msg, struct envoy_config_core_v3_Node* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_Node*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Node* envoy_service_load_stats_v3_LoadStatsRequest_mutable_node(envoy_service_load_stats_v3_LoadStatsRequest *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Node* envoy_service_load_stats_v3_LoadStatsRequest_mutable_node(envoy_service_load_stats_v3_LoadStatsRequest* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Node* sub = (struct envoy_config_core_v3_Node*)envoy_service_load_stats_v3_LoadStatsRequest_node(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Node*)_upb_Message_New(&envoy_config_core_v3_Node_msginit, arena);
@@ -86,16 +102,15 @@ UPB_INLINE struct envoy_config_core_v3_Node* envoy_service_load_stats_v3_LoadSta
}
return sub;
}
-UPB_INLINE struct envoy_config_endpoint_v3_ClusterStats** envoy_service_load_stats_v3_LoadStatsRequest_mutable_cluster_stats(envoy_service_load_stats_v3_LoadStatsRequest *msg, size_t *len) {
+UPB_INLINE struct envoy_config_endpoint_v3_ClusterStats** envoy_service_load_stats_v3_LoadStatsRequest_mutable_cluster_stats(envoy_service_load_stats_v3_LoadStatsRequest* msg, size_t* len) {
return (struct envoy_config_endpoint_v3_ClusterStats**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE struct envoy_config_endpoint_v3_ClusterStats** envoy_service_load_stats_v3_LoadStatsRequest_resize_cluster_stats(envoy_service_load_stats_v3_LoadStatsRequest *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_ClusterStats** envoy_service_load_stats_v3_LoadStatsRequest_resize_cluster_stats(envoy_service_load_stats_v3_LoadStatsRequest* msg, size_t len, upb_Arena* arena) {
return (struct envoy_config_endpoint_v3_ClusterStats**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_config_endpoint_v3_ClusterStats* envoy_service_load_stats_v3_LoadStatsRequest_add_cluster_stats(envoy_service_load_stats_v3_LoadStatsRequest *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_endpoint_v3_ClusterStats* envoy_service_load_stats_v3_LoadStatsRequest_add_cluster_stats(envoy_service_load_stats_v3_LoadStatsRequest* msg, upb_Arena* arena) {
struct envoy_config_endpoint_v3_ClusterStats* sub = (struct envoy_config_endpoint_v3_ClusterStats*)_upb_Message_New(&envoy_config_endpoint_v3_ClusterStats_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -125,39 +140,58 @@ UPB_INLINE envoy_service_load_stats_v3_LoadStatsResponse* envoy_service_load_sta
return ret;
}
UPB_INLINE char* envoy_service_load_stats_v3_LoadStatsResponse_serialize(const envoy_service_load_stats_v3_LoadStatsResponse* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_load_stats_v3_LoadStatsResponse_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_load_stats_v3_LoadStatsResponse_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_service_load_stats_v3_LoadStatsResponse_serialize_ex(const envoy_service_load_stats_v3_LoadStatsResponse* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_load_stats_v3_LoadStatsResponse_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_load_stats_v3_LoadStatsResponse_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_service_load_stats_v3_LoadStatsResponse_clear_clusters(const envoy_service_load_stats_v3_LoadStatsResponse* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE upb_StringView const* envoy_service_load_stats_v3_LoadStatsResponse_clusters(const envoy_service_load_stats_v3_LoadStatsResponse* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool envoy_service_load_stats_v3_LoadStatsResponse_has_load_reporting_interval(const envoy_service_load_stats_v3_LoadStatsResponse* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_service_load_stats_v3_LoadStatsResponse_clear_load_reporting_interval(const envoy_service_load_stats_v3_LoadStatsResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE upb_StringView const* envoy_service_load_stats_v3_LoadStatsResponse_clusters(const envoy_service_load_stats_v3_LoadStatsResponse *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
-UPB_INLINE bool envoy_service_load_stats_v3_LoadStatsResponse_has_load_reporting_interval(const envoy_service_load_stats_v3_LoadStatsResponse *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* envoy_service_load_stats_v3_LoadStatsResponse_load_reporting_interval(const envoy_service_load_stats_v3_LoadStatsResponse* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Duration*);
+}
+UPB_INLINE void envoy_service_load_stats_v3_LoadStatsResponse_clear_report_endpoint_granularity(const envoy_service_load_stats_v3_LoadStatsResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
}
UPB_INLINE bool envoy_service_load_stats_v3_LoadStatsResponse_report_endpoint_granularity(const envoy_service_load_stats_v3_LoadStatsResponse* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
+UPB_INLINE void envoy_service_load_stats_v3_LoadStatsResponse_clear_send_all_clusters(const envoy_service_load_stats_v3_LoadStatsResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
+}
UPB_INLINE bool envoy_service_load_stats_v3_LoadStatsResponse_send_all_clusters(const envoy_service_load_stats_v3_LoadStatsResponse* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
}
-UPB_INLINE upb_StringView* envoy_service_load_stats_v3_LoadStatsResponse_mutable_clusters(envoy_service_load_stats_v3_LoadStatsResponse *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
+UPB_INLINE upb_StringView* envoy_service_load_stats_v3_LoadStatsResponse_mutable_clusters(envoy_service_load_stats_v3_LoadStatsResponse* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE upb_StringView* envoy_service_load_stats_v3_LoadStatsResponse_resize_clusters(envoy_service_load_stats_v3_LoadStatsResponse *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* envoy_service_load_stats_v3_LoadStatsResponse_resize_clusters(envoy_service_load_stats_v3_LoadStatsResponse* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool envoy_service_load_stats_v3_LoadStatsResponse_add_clusters(envoy_service_load_stats_v3_LoadStatsResponse *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool envoy_service_load_stats_v3_LoadStatsResponse_add_clusters(envoy_service_load_stats_v3_LoadStatsResponse* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void envoy_service_load_stats_v3_LoadStatsResponse_set_load_reporting_interval(envoy_service_load_stats_v3_LoadStatsResponse *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_service_load_stats_v3_LoadStatsResponse_mutable_load_reporting_interval(envoy_service_load_stats_v3_LoadStatsResponse *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_service_load_stats_v3_LoadStatsResponse_mutable_load_reporting_interval(envoy_service_load_stats_v3_LoadStatsResponse* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_service_load_stats_v3_LoadStatsResponse_load_reporting_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c
index 0c871dbac9..ccfddce780 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c
@@ -9,7 +9,7 @@
#include <stddef.h>
#include "upb/msg_internal.h"
#include "envoy/service/status/v3/csds.upb.h"
-#include "envoy/admin/v3/config_dump.upb.h"
+#include "envoy/admin/v3/config_dump_shared.upb.h"
#include "envoy/config/core/v3/base.upb.h"
#include "envoy/type/matcher/v3/node.upb.h"
#include "google/api/annotations.upb.h"
@@ -22,85 +22,85 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_service_status_v3_ClientStatusRequest_submsgs[2] = {
- {.submsg = &envoy_config_core_v3_Node_msginit},
{.submsg = &envoy_type_matcher_v3_NodeMatcher_msginit},
+ {.submsg = &envoy_config_core_v3_Node_msginit},
};
static const upb_MiniTable_Field envoy_service_status_v3_ClientStatusRequest__fields[2] = {
- {1, UPB_SIZE(8, 16), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_service_status_v3_ClientStatusRequest_msginit = {
&envoy_service_status_v3_ClientStatusRequest_submsgs[0],
&envoy_service_status_v3_ClientStatusRequest__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_service_status_v3_PerXdsConfig_submsgs[5] = {
- {.submsg = &envoy_admin_v3_ClustersConfigDump_msginit},
- {.submsg = &envoy_admin_v3_EndpointsConfigDump_msginit},
{.submsg = &envoy_admin_v3_ListenersConfigDump_msginit},
+ {.submsg = &envoy_admin_v3_ClustersConfigDump_msginit},
{.submsg = &envoy_admin_v3_RoutesConfigDump_msginit},
{.submsg = &envoy_admin_v3_ScopedRoutesConfigDump_msginit},
+ {.submsg = &envoy_admin_v3_EndpointsConfigDump_msginit},
};
static const upb_MiniTable_Field envoy_service_status_v3_PerXdsConfig__fields[7] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), UPB_SIZE(-13, -17), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 8), UPB_SIZE(-13, -17), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 8), UPB_SIZE(-13, -17), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 8), UPB_SIZE(-13, -17), 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(8, 8), UPB_SIZE(-13, -17), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_service_status_v3_PerXdsConfig_msginit = {
&envoy_service_status_v3_PerXdsConfig_submsgs[0],
&envoy_service_status_v3_PerXdsConfig__fields[0],
- UPB_SIZE(16, 24), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(16, 24), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
static const upb_MiniTable_Sub envoy_service_status_v3_ClientConfig_submsgs[3] = {
{.submsg = &envoy_config_core_v3_Node_msginit},
- {.submsg = &envoy_service_status_v3_ClientConfig_GenericXdsConfig_msginit},
{.submsg = &envoy_service_status_v3_PerXdsConfig_msginit},
+ {.submsg = &envoy_service_status_v3_ClientConfig_GenericXdsConfig_msginit},
};
static const upb_MiniTable_Field envoy_service_status_v3_ClientConfig__fields[3] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_service_status_v3_ClientConfig_msginit = {
&envoy_service_status_v3_ClientConfig_submsgs[0],
&envoy_service_status_v3_ClientConfig__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_service_status_v3_ClientConfig_GenericXdsConfig_submsgs[3] = {
- {.submsg = &envoy_admin_v3_UpdateFailureState_msginit},
{.submsg = &google_protobuf_Any_msginit},
{.submsg = &google_protobuf_Timestamp_msginit},
+ {.submsg = &envoy_admin_v3_UpdateFailureState_msginit},
};
static const upb_MiniTable_Field envoy_service_status_v3_ClientConfig_GenericXdsConfig__fields[9] = {
- {1, UPB_SIZE(16, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(24, 32), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(32, 48), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(40, 64), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(44, 72), 2, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(8, 8), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {8, UPB_SIZE(48, 80), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(12, 12), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(24, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(32, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(40, 64), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(44, 72), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(48, 80), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(12, 12), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_service_status_v3_ClientConfig_GenericXdsConfig_msginit = {
&envoy_service_status_v3_ClientConfig_GenericXdsConfig_submsgs[0],
&envoy_service_status_v3_ClientConfig_GenericXdsConfig__fields[0],
- UPB_SIZE(56, 96), 9, upb_ExtMode_NonExtendable, 9, 255, 0,
+ UPB_SIZE(56, 88), 9, kUpb_ExtMode_NonExtendable, 9, 255, 0,
};
static const upb_MiniTable_Sub envoy_service_status_v3_ClientStatusResponse_submsgs[1] = {
@@ -108,13 +108,13 @@ static const upb_MiniTable_Sub envoy_service_status_v3_ClientStatusResponse_subm
};
static const upb_MiniTable_Field envoy_service_status_v3_ClientStatusResponse__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_service_status_v3_ClientStatusResponse_msginit = {
&envoy_service_status_v3_ClientStatusResponse_submsgs[0],
&envoy_service_status_v3_ClientStatusResponse__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[5] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h
index 23bff94ffa..864215d287 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h
@@ -98,37 +98,52 @@ UPB_INLINE envoy_service_status_v3_ClientStatusRequest* envoy_service_status_v3_
return ret;
}
UPB_INLINE char* envoy_service_status_v3_ClientStatusRequest_serialize(const envoy_service_status_v3_ClientStatusRequest* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_status_v3_ClientStatusRequest_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_status_v3_ClientStatusRequest_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_service_status_v3_ClientStatusRequest_serialize_ex(const envoy_service_status_v3_ClientStatusRequest* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_status_v3_ClientStatusRequest_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_status_v3_ClientStatusRequest_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_service_status_v3_ClientStatusRequest_has_node_matchers(const envoy_service_status_v3_ClientStatusRequest* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_service_status_v3_ClientStatusRequest_clear_node_matchers(const envoy_service_status_v3_ClientStatusRequest* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const struct envoy_type_matcher_v3_NodeMatcher* const* envoy_service_status_v3_ClientStatusRequest_node_matchers(const envoy_service_status_v3_ClientStatusRequest* msg, size_t* len) {
+ return (const struct envoy_type_matcher_v3_NodeMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool envoy_service_status_v3_ClientStatusRequest_has_node(const envoy_service_status_v3_ClientStatusRequest* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_service_status_v3_ClientStatusRequest_clear_node(const envoy_service_status_v3_ClientStatusRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_service_status_v3_ClientStatusRequest_has_node_matchers(const envoy_service_status_v3_ClientStatusRequest *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct envoy_type_matcher_v3_NodeMatcher* const* envoy_service_status_v3_ClientStatusRequest_node_matchers(const envoy_service_status_v3_ClientStatusRequest *msg, size_t *len) { return (const struct envoy_type_matcher_v3_NodeMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
-UPB_INLINE bool envoy_service_status_v3_ClientStatusRequest_has_node(const envoy_service_status_v3_ClientStatusRequest *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_Node* envoy_service_status_v3_ClientStatusRequest_node(const envoy_service_status_v3_ClientStatusRequest* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_Node*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_config_core_v3_Node*);
}
-UPB_INLINE struct envoy_type_matcher_v3_NodeMatcher** envoy_service_status_v3_ClientStatusRequest_mutable_node_matchers(envoy_service_status_v3_ClientStatusRequest *msg, size_t *len) {
- return (struct envoy_type_matcher_v3_NodeMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
+UPB_INLINE struct envoy_type_matcher_v3_NodeMatcher** envoy_service_status_v3_ClientStatusRequest_mutable_node_matchers(envoy_service_status_v3_ClientStatusRequest* msg, size_t* len) {
+ return (struct envoy_type_matcher_v3_NodeMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE struct envoy_type_matcher_v3_NodeMatcher** envoy_service_status_v3_ClientStatusRequest_resize_node_matchers(envoy_service_status_v3_ClientStatusRequest *msg, size_t len, upb_Arena *arena) {
- return (struct envoy_type_matcher_v3_NodeMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE struct envoy_type_matcher_v3_NodeMatcher** envoy_service_status_v3_ClientStatusRequest_resize_node_matchers(envoy_service_status_v3_ClientStatusRequest* msg, size_t len, upb_Arena* arena) {
+ return (struct envoy_type_matcher_v3_NodeMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_type_matcher_v3_NodeMatcher* envoy_service_status_v3_ClientStatusRequest_add_node_matchers(envoy_service_status_v3_ClientStatusRequest *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_NodeMatcher* envoy_service_status_v3_ClientStatusRequest_add_node_matchers(envoy_service_status_v3_ClientStatusRequest* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_NodeMatcher* sub = (struct envoy_type_matcher_v3_NodeMatcher*)_upb_Message_New(&envoy_type_matcher_v3_NodeMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_service_status_v3_ClientStatusRequest_set_node(envoy_service_status_v3_ClientStatusRequest *msg, struct envoy_config_core_v3_Node* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_Node*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_config_core_v3_Node*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Node* envoy_service_status_v3_ClientStatusRequest_mutable_node(envoy_service_status_v3_ClientStatusRequest *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Node* envoy_service_status_v3_ClientStatusRequest_mutable_node(envoy_service_status_v3_ClientStatusRequest* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Node* sub = (struct envoy_config_core_v3_Node*)envoy_service_status_v3_ClientStatusRequest_node(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Node*)_upb_Message_New(&envoy_config_core_v3_Node_msginit, arena);
@@ -163,11 +178,15 @@ UPB_INLINE envoy_service_status_v3_PerXdsConfig* envoy_service_status_v3_PerXdsC
return ret;
}
UPB_INLINE char* envoy_service_status_v3_PerXdsConfig_serialize(const envoy_service_status_v3_PerXdsConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_status_v3_PerXdsConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_status_v3_PerXdsConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_service_status_v3_PerXdsConfig_serialize_ex(const envoy_service_status_v3_PerXdsConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_status_v3_PerXdsConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_status_v3_PerXdsConfig_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_service_status_v3_PerXdsConfig_per_xds_config_listener_config = 2,
@@ -177,32 +196,74 @@ typedef enum {
envoy_service_status_v3_PerXdsConfig_per_xds_config_endpoint_config = 6,
envoy_service_status_v3_PerXdsConfig_per_xds_config_NOT_SET = 0
} envoy_service_status_v3_PerXdsConfig_per_xds_config_oneofcases;
-UPB_INLINE envoy_service_status_v3_PerXdsConfig_per_xds_config_oneofcases envoy_service_status_v3_PerXdsConfig_per_xds_config_case(const envoy_service_status_v3_PerXdsConfig* msg) { return (envoy_service_status_v3_PerXdsConfig_per_xds_config_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 16), int32_t); }
-
+UPB_INLINE envoy_service_status_v3_PerXdsConfig_per_xds_config_oneofcases envoy_service_status_v3_PerXdsConfig_per_xds_config_case(const envoy_service_status_v3_PerXdsConfig* msg) {
+ return (envoy_service_status_v3_PerXdsConfig_per_xds_config_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void envoy_service_status_v3_PerXdsConfig_clear_status(const envoy_service_status_v3_PerXdsConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_service_status_v3_PerXdsConfig_status(const envoy_service_status_v3_PerXdsConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
-UPB_INLINE bool envoy_service_status_v3_PerXdsConfig_has_listener_config(const envoy_service_status_v3_PerXdsConfig *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 16)) == 2; }
-UPB_INLINE const struct envoy_admin_v3_ListenersConfigDump* envoy_service_status_v3_PerXdsConfig_listener_config(const envoy_service_status_v3_PerXdsConfig *msg) { return UPB_READ_ONEOF(msg, const struct envoy_admin_v3_ListenersConfigDump*, UPB_SIZE(8, 8), UPB_SIZE(12, 16), 2, NULL); }
-UPB_INLINE bool envoy_service_status_v3_PerXdsConfig_has_cluster_config(const envoy_service_status_v3_PerXdsConfig *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 16)) == 3; }
-UPB_INLINE const struct envoy_admin_v3_ClustersConfigDump* envoy_service_status_v3_PerXdsConfig_cluster_config(const envoy_service_status_v3_PerXdsConfig *msg) { return UPB_READ_ONEOF(msg, const struct envoy_admin_v3_ClustersConfigDump*, UPB_SIZE(8, 8), UPB_SIZE(12, 16), 3, NULL); }
-UPB_INLINE bool envoy_service_status_v3_PerXdsConfig_has_route_config(const envoy_service_status_v3_PerXdsConfig *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 16)) == 4; }
-UPB_INLINE const struct envoy_admin_v3_RoutesConfigDump* envoy_service_status_v3_PerXdsConfig_route_config(const envoy_service_status_v3_PerXdsConfig *msg) { return UPB_READ_ONEOF(msg, const struct envoy_admin_v3_RoutesConfigDump*, UPB_SIZE(8, 8), UPB_SIZE(12, 16), 4, NULL); }
-UPB_INLINE bool envoy_service_status_v3_PerXdsConfig_has_scoped_route_config(const envoy_service_status_v3_PerXdsConfig *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 16)) == 5; }
-UPB_INLINE const struct envoy_admin_v3_ScopedRoutesConfigDump* envoy_service_status_v3_PerXdsConfig_scoped_route_config(const envoy_service_status_v3_PerXdsConfig *msg) { return UPB_READ_ONEOF(msg, const struct envoy_admin_v3_ScopedRoutesConfigDump*, UPB_SIZE(8, 8), UPB_SIZE(12, 16), 5, NULL); }
-UPB_INLINE bool envoy_service_status_v3_PerXdsConfig_has_endpoint_config(const envoy_service_status_v3_PerXdsConfig *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 16)) == 6; }
-UPB_INLINE const struct envoy_admin_v3_EndpointsConfigDump* envoy_service_status_v3_PerXdsConfig_endpoint_config(const envoy_service_status_v3_PerXdsConfig *msg) { return UPB_READ_ONEOF(msg, const struct envoy_admin_v3_EndpointsConfigDump*, UPB_SIZE(8, 8), UPB_SIZE(12, 16), 6, NULL); }
+UPB_INLINE bool envoy_service_status_v3_PerXdsConfig_has_listener_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_service_status_v3_PerXdsConfig_clear_listener_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_ListenersConfigDump*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_service_status_v3_PerXdsConfig_per_xds_config_NOT_SET);
+}
+UPB_INLINE const struct envoy_admin_v3_ListenersConfigDump* envoy_service_status_v3_PerXdsConfig_listener_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_admin_v3_ListenersConfigDump*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool envoy_service_status_v3_PerXdsConfig_has_cluster_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_service_status_v3_PerXdsConfig_clear_cluster_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_ClustersConfigDump*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_service_status_v3_PerXdsConfig_per_xds_config_NOT_SET);
+}
+UPB_INLINE const struct envoy_admin_v3_ClustersConfigDump* envoy_service_status_v3_PerXdsConfig_cluster_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_admin_v3_ClustersConfigDump*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 3, NULL);
+}
+UPB_INLINE bool envoy_service_status_v3_PerXdsConfig_has_route_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 4;
+}
+UPB_INLINE void envoy_service_status_v3_PerXdsConfig_clear_route_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_RoutesConfigDump*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_service_status_v3_PerXdsConfig_per_xds_config_NOT_SET);
+}
+UPB_INLINE const struct envoy_admin_v3_RoutesConfigDump* envoy_service_status_v3_PerXdsConfig_route_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_admin_v3_RoutesConfigDump*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 4, NULL);
+}
+UPB_INLINE bool envoy_service_status_v3_PerXdsConfig_has_scoped_route_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void envoy_service_status_v3_PerXdsConfig_clear_scoped_route_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_ScopedRoutesConfigDump*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_service_status_v3_PerXdsConfig_per_xds_config_NOT_SET);
+}
+UPB_INLINE const struct envoy_admin_v3_ScopedRoutesConfigDump* envoy_service_status_v3_PerXdsConfig_scoped_route_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_admin_v3_ScopedRoutesConfigDump*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 5, NULL);
+}
+UPB_INLINE bool envoy_service_status_v3_PerXdsConfig_has_endpoint_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 6;
+}
+UPB_INLINE void envoy_service_status_v3_PerXdsConfig_clear_endpoint_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_EndpointsConfigDump*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), envoy_service_status_v3_PerXdsConfig_per_xds_config_NOT_SET);
+}
+UPB_INLINE const struct envoy_admin_v3_EndpointsConfigDump* envoy_service_status_v3_PerXdsConfig_endpoint_config(const envoy_service_status_v3_PerXdsConfig* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_admin_v3_EndpointsConfigDump*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 6, NULL);
+}
+UPB_INLINE void envoy_service_status_v3_PerXdsConfig_clear_client_status(const envoy_service_status_v3_PerXdsConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_service_status_v3_PerXdsConfig_client_status(const envoy_service_status_v3_PerXdsConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
UPB_INLINE void envoy_service_status_v3_PerXdsConfig_set_status(envoy_service_status_v3_PerXdsConfig *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
}
UPB_INLINE void envoy_service_status_v3_PerXdsConfig_set_listener_config(envoy_service_status_v3_PerXdsConfig *msg, struct envoy_admin_v3_ListenersConfigDump* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_ListenersConfigDump*, UPB_SIZE(8, 8), value, UPB_SIZE(12, 16), 2);
+ UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_ListenersConfigDump*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct envoy_admin_v3_ListenersConfigDump* envoy_service_status_v3_PerXdsConfig_mutable_listener_config(envoy_service_status_v3_PerXdsConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_ListenersConfigDump* envoy_service_status_v3_PerXdsConfig_mutable_listener_config(envoy_service_status_v3_PerXdsConfig* msg, upb_Arena* arena) {
struct envoy_admin_v3_ListenersConfigDump* sub = (struct envoy_admin_v3_ListenersConfigDump*)envoy_service_status_v3_PerXdsConfig_listener_config(msg);
if (sub == NULL) {
sub = (struct envoy_admin_v3_ListenersConfigDump*)_upb_Message_New(&envoy_admin_v3_ListenersConfigDump_msginit, arena);
@@ -212,9 +273,9 @@ UPB_INLINE struct envoy_admin_v3_ListenersConfigDump* envoy_service_status_v3_Pe
return sub;
}
UPB_INLINE void envoy_service_status_v3_PerXdsConfig_set_cluster_config(envoy_service_status_v3_PerXdsConfig *msg, struct envoy_admin_v3_ClustersConfigDump* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_ClustersConfigDump*, UPB_SIZE(8, 8), value, UPB_SIZE(12, 16), 3);
+ UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_ClustersConfigDump*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct envoy_admin_v3_ClustersConfigDump* envoy_service_status_v3_PerXdsConfig_mutable_cluster_config(envoy_service_status_v3_PerXdsConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_ClustersConfigDump* envoy_service_status_v3_PerXdsConfig_mutable_cluster_config(envoy_service_status_v3_PerXdsConfig* msg, upb_Arena* arena) {
struct envoy_admin_v3_ClustersConfigDump* sub = (struct envoy_admin_v3_ClustersConfigDump*)envoy_service_status_v3_PerXdsConfig_cluster_config(msg);
if (sub == NULL) {
sub = (struct envoy_admin_v3_ClustersConfigDump*)_upb_Message_New(&envoy_admin_v3_ClustersConfigDump_msginit, arena);
@@ -224,9 +285,9 @@ UPB_INLINE struct envoy_admin_v3_ClustersConfigDump* envoy_service_status_v3_Per
return sub;
}
UPB_INLINE void envoy_service_status_v3_PerXdsConfig_set_route_config(envoy_service_status_v3_PerXdsConfig *msg, struct envoy_admin_v3_RoutesConfigDump* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_RoutesConfigDump*, UPB_SIZE(8, 8), value, UPB_SIZE(12, 16), 4);
+ UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_RoutesConfigDump*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 4);
}
-UPB_INLINE struct envoy_admin_v3_RoutesConfigDump* envoy_service_status_v3_PerXdsConfig_mutable_route_config(envoy_service_status_v3_PerXdsConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_RoutesConfigDump* envoy_service_status_v3_PerXdsConfig_mutable_route_config(envoy_service_status_v3_PerXdsConfig* msg, upb_Arena* arena) {
struct envoy_admin_v3_RoutesConfigDump* sub = (struct envoy_admin_v3_RoutesConfigDump*)envoy_service_status_v3_PerXdsConfig_route_config(msg);
if (sub == NULL) {
sub = (struct envoy_admin_v3_RoutesConfigDump*)_upb_Message_New(&envoy_admin_v3_RoutesConfigDump_msginit, arena);
@@ -236,9 +297,9 @@ UPB_INLINE struct envoy_admin_v3_RoutesConfigDump* envoy_service_status_v3_PerXd
return sub;
}
UPB_INLINE void envoy_service_status_v3_PerXdsConfig_set_scoped_route_config(envoy_service_status_v3_PerXdsConfig *msg, struct envoy_admin_v3_ScopedRoutesConfigDump* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_ScopedRoutesConfigDump*, UPB_SIZE(8, 8), value, UPB_SIZE(12, 16), 5);
+ UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_ScopedRoutesConfigDump*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 5);
}
-UPB_INLINE struct envoy_admin_v3_ScopedRoutesConfigDump* envoy_service_status_v3_PerXdsConfig_mutable_scoped_route_config(envoy_service_status_v3_PerXdsConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_ScopedRoutesConfigDump* envoy_service_status_v3_PerXdsConfig_mutable_scoped_route_config(envoy_service_status_v3_PerXdsConfig* msg, upb_Arena* arena) {
struct envoy_admin_v3_ScopedRoutesConfigDump* sub = (struct envoy_admin_v3_ScopedRoutesConfigDump*)envoy_service_status_v3_PerXdsConfig_scoped_route_config(msg);
if (sub == NULL) {
sub = (struct envoy_admin_v3_ScopedRoutesConfigDump*)_upb_Message_New(&envoy_admin_v3_ScopedRoutesConfigDump_msginit, arena);
@@ -248,9 +309,9 @@ UPB_INLINE struct envoy_admin_v3_ScopedRoutesConfigDump* envoy_service_status_v3
return sub;
}
UPB_INLINE void envoy_service_status_v3_PerXdsConfig_set_endpoint_config(envoy_service_status_v3_PerXdsConfig *msg, struct envoy_admin_v3_EndpointsConfigDump* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_EndpointsConfigDump*, UPB_SIZE(8, 8), value, UPB_SIZE(12, 16), 6);
+ UPB_WRITE_ONEOF(msg, struct envoy_admin_v3_EndpointsConfigDump*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 6);
}
-UPB_INLINE struct envoy_admin_v3_EndpointsConfigDump* envoy_service_status_v3_PerXdsConfig_mutable_endpoint_config(envoy_service_status_v3_PerXdsConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_EndpointsConfigDump* envoy_service_status_v3_PerXdsConfig_mutable_endpoint_config(envoy_service_status_v3_PerXdsConfig* msg, upb_Arena* arena) {
struct envoy_admin_v3_EndpointsConfigDump* sub = (struct envoy_admin_v3_EndpointsConfigDump*)envoy_service_status_v3_PerXdsConfig_endpoint_config(msg);
if (sub == NULL) {
sub = (struct envoy_admin_v3_EndpointsConfigDump*)_upb_Message_New(&envoy_admin_v3_EndpointsConfigDump_msginit, arena);
@@ -260,7 +321,7 @@ UPB_INLINE struct envoy_admin_v3_EndpointsConfigDump* envoy_service_status_v3_Pe
return sub;
}
UPB_INLINE void envoy_service_status_v3_PerXdsConfig_set_client_status(envoy_service_status_v3_PerXdsConfig *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = value;
}
/* envoy.service.status.v3.ClientConfig */
@@ -288,26 +349,49 @@ UPB_INLINE envoy_service_status_v3_ClientConfig* envoy_service_status_v3_ClientC
return ret;
}
UPB_INLINE char* envoy_service_status_v3_ClientConfig_serialize(const envoy_service_status_v3_ClientConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_status_v3_ClientConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_status_v3_ClientConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_service_status_v3_ClientConfig_serialize_ex(const envoy_service_status_v3_ClientConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_status_v3_ClientConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_status_v3_ClientConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_service_status_v3_ClientConfig_has_node(const envoy_service_status_v3_ClientConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_service_status_v3_ClientConfig_clear_node(const envoy_service_status_v3_ClientConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_service_status_v3_ClientConfig_has_node(const envoy_service_status_v3_ClientConfig *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_config_core_v3_Node* envoy_service_status_v3_ClientConfig_node(const envoy_service_status_v3_ClientConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_config_core_v3_Node*);
}
-UPB_INLINE bool envoy_service_status_v3_ClientConfig_has_xds_config(const envoy_service_status_v3_ClientConfig *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const envoy_service_status_v3_PerXdsConfig* const* envoy_service_status_v3_ClientConfig_xds_config(const envoy_service_status_v3_ClientConfig *msg, size_t *len) { return (const envoy_service_status_v3_PerXdsConfig* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
-UPB_INLINE bool envoy_service_status_v3_ClientConfig_has_generic_xds_configs(const envoy_service_status_v3_ClientConfig *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE const envoy_service_status_v3_ClientConfig_GenericXdsConfig* const* envoy_service_status_v3_ClientConfig_generic_xds_configs(const envoy_service_status_v3_ClientConfig *msg, size_t *len) { return (const envoy_service_status_v3_ClientConfig_GenericXdsConfig* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len); }
+UPB_INLINE bool envoy_service_status_v3_ClientConfig_has_xds_config(const envoy_service_status_v3_ClientConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_service_status_v3_ClientConfig_clear_xds_config(const envoy_service_status_v3_ClientConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const envoy_service_status_v3_PerXdsConfig* const* envoy_service_status_v3_ClientConfig_xds_config(const envoy_service_status_v3_ClientConfig* msg, size_t* len) {
+ return (const envoy_service_status_v3_PerXdsConfig* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool envoy_service_status_v3_ClientConfig_has_generic_xds_configs(const envoy_service_status_v3_ClientConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_service_status_v3_ClientConfig_clear_generic_xds_configs(const envoy_service_status_v3_ClientConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const envoy_service_status_v3_ClientConfig_GenericXdsConfig* const* envoy_service_status_v3_ClientConfig_generic_xds_configs(const envoy_service_status_v3_ClientConfig* msg, size_t* len) {
+ return (const envoy_service_status_v3_ClientConfig_GenericXdsConfig* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
UPB_INLINE void envoy_service_status_v3_ClientConfig_set_node(envoy_service_status_v3_ClientConfig *msg, struct envoy_config_core_v3_Node* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_config_core_v3_Node*) = value;
}
-UPB_INLINE struct envoy_config_core_v3_Node* envoy_service_status_v3_ClientConfig_mutable_node(envoy_service_status_v3_ClientConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_config_core_v3_Node* envoy_service_status_v3_ClientConfig_mutable_node(envoy_service_status_v3_ClientConfig* msg, upb_Arena* arena) {
struct envoy_config_core_v3_Node* sub = (struct envoy_config_core_v3_Node*)envoy_service_status_v3_ClientConfig_node(msg);
if (sub == NULL) {
sub = (struct envoy_config_core_v3_Node*)_upb_Message_New(&envoy_config_core_v3_Node_msginit, arena);
@@ -316,29 +400,27 @@ UPB_INLINE struct envoy_config_core_v3_Node* envoy_service_status_v3_ClientConfi
}
return sub;
}
-UPB_INLINE envoy_service_status_v3_PerXdsConfig** envoy_service_status_v3_ClientConfig_mutable_xds_config(envoy_service_status_v3_ClientConfig *msg, size_t *len) {
+UPB_INLINE envoy_service_status_v3_PerXdsConfig** envoy_service_status_v3_ClientConfig_mutable_xds_config(envoy_service_status_v3_ClientConfig* msg, size_t* len) {
return (envoy_service_status_v3_PerXdsConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE envoy_service_status_v3_PerXdsConfig** envoy_service_status_v3_ClientConfig_resize_xds_config(envoy_service_status_v3_ClientConfig *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_service_status_v3_PerXdsConfig** envoy_service_status_v3_ClientConfig_resize_xds_config(envoy_service_status_v3_ClientConfig* msg, size_t len, upb_Arena* arena) {
return (envoy_service_status_v3_PerXdsConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_service_status_v3_PerXdsConfig* envoy_service_status_v3_ClientConfig_add_xds_config(envoy_service_status_v3_ClientConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_service_status_v3_PerXdsConfig* envoy_service_status_v3_ClientConfig_add_xds_config(envoy_service_status_v3_ClientConfig* msg, upb_Arena* arena) {
struct envoy_service_status_v3_PerXdsConfig* sub = (struct envoy_service_status_v3_PerXdsConfig*)_upb_Message_New(&envoy_service_status_v3_PerXdsConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE envoy_service_status_v3_ClientConfig_GenericXdsConfig** envoy_service_status_v3_ClientConfig_mutable_generic_xds_configs(envoy_service_status_v3_ClientConfig *msg, size_t *len) {
+UPB_INLINE envoy_service_status_v3_ClientConfig_GenericXdsConfig** envoy_service_status_v3_ClientConfig_mutable_generic_xds_configs(envoy_service_status_v3_ClientConfig* msg, size_t* len) {
return (envoy_service_status_v3_ClientConfig_GenericXdsConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE envoy_service_status_v3_ClientConfig_GenericXdsConfig** envoy_service_status_v3_ClientConfig_resize_generic_xds_configs(envoy_service_status_v3_ClientConfig *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_service_status_v3_ClientConfig_GenericXdsConfig** envoy_service_status_v3_ClientConfig_resize_generic_xds_configs(envoy_service_status_v3_ClientConfig* msg, size_t len, upb_Arena* arena) {
return (envoy_service_status_v3_ClientConfig_GenericXdsConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_service_status_v3_ClientConfig_GenericXdsConfig* envoy_service_status_v3_ClientConfig_add_generic_xds_configs(envoy_service_status_v3_ClientConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_service_status_v3_ClientConfig_GenericXdsConfig* envoy_service_status_v3_ClientConfig_add_generic_xds_configs(envoy_service_status_v3_ClientConfig* msg, upb_Arena* arena) {
struct envoy_service_status_v3_ClientConfig_GenericXdsConfig* sub = (struct envoy_service_status_v3_ClientConfig_GenericXdsConfig*)_upb_Message_New(&envoy_service_status_v3_ClientConfig_GenericXdsConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -368,39 +450,76 @@ UPB_INLINE envoy_service_status_v3_ClientConfig_GenericXdsConfig* envoy_service_
return ret;
}
UPB_INLINE char* envoy_service_status_v3_ClientConfig_GenericXdsConfig_serialize(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_status_v3_ClientConfig_GenericXdsConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_status_v3_ClientConfig_GenericXdsConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_service_status_v3_ClientConfig_GenericXdsConfig_serialize_ex(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_status_v3_ClientConfig_GenericXdsConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_status_v3_ClientConfig_GenericXdsConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_service_status_v3_ClientConfig_GenericXdsConfig_clear_type_url(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_service_status_v3_ClientConfig_GenericXdsConfig_type_url(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView);
}
+UPB_INLINE void envoy_service_status_v3_ClientConfig_GenericXdsConfig_clear_name(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_service_status_v3_ClientConfig_GenericXdsConfig_name(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), upb_StringView);
}
+UPB_INLINE void envoy_service_status_v3_ClientConfig_GenericXdsConfig_clear_version_info(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_service_status_v3_ClientConfig_GenericXdsConfig_version_info(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(32, 48), upb_StringView);
}
-UPB_INLINE bool envoy_service_status_v3_ClientConfig_GenericXdsConfig_has_xds_config(const envoy_service_status_v3_ClientConfig_GenericXdsConfig *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_service_status_v3_ClientConfig_GenericXdsConfig_has_xds_config(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_service_status_v3_ClientConfig_GenericXdsConfig_clear_xds_config(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 64), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Any* envoy_service_status_v3_ClientConfig_GenericXdsConfig_xds_config(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(40, 64), const struct google_protobuf_Any*);
}
-UPB_INLINE bool envoy_service_status_v3_ClientConfig_GenericXdsConfig_has_last_updated(const envoy_service_status_v3_ClientConfig_GenericXdsConfig *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_service_status_v3_ClientConfig_GenericXdsConfig_has_last_updated(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_service_status_v3_ClientConfig_GenericXdsConfig_clear_last_updated(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 72), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Timestamp* envoy_service_status_v3_ClientConfig_GenericXdsConfig_last_updated(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(44, 72), const struct google_protobuf_Timestamp*);
}
+UPB_INLINE void envoy_service_status_v3_ClientConfig_GenericXdsConfig_clear_config_status(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_service_status_v3_ClientConfig_GenericXdsConfig_config_status(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
+UPB_INLINE void envoy_service_status_v3_ClientConfig_GenericXdsConfig_clear_client_status(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_service_status_v3_ClientConfig_GenericXdsConfig_client_status(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
-UPB_INLINE bool envoy_service_status_v3_ClientConfig_GenericXdsConfig_has_error_state(const envoy_service_status_v3_ClientConfig_GenericXdsConfig *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool envoy_service_status_v3_ClientConfig_GenericXdsConfig_has_error_state(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void envoy_service_status_v3_ClientConfig_GenericXdsConfig_clear_error_state(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 80), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_admin_v3_UpdateFailureState* envoy_service_status_v3_ClientConfig_GenericXdsConfig_error_state(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(48, 80), const struct envoy_admin_v3_UpdateFailureState*);
}
+UPB_INLINE void envoy_service_status_v3_ClientConfig_GenericXdsConfig_clear_is_static_resource(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool) = 0;
+}
UPB_INLINE bool envoy_service_status_v3_ClientConfig_GenericXdsConfig_is_static_resource(const envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool);
}
@@ -418,7 +537,7 @@ UPB_INLINE void envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_xds_co
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(40, 64), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* envoy_service_status_v3_ClientConfig_GenericXdsConfig_mutable_xds_config(envoy_service_status_v3_ClientConfig_GenericXdsConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* envoy_service_status_v3_ClientConfig_GenericXdsConfig_mutable_xds_config(envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)envoy_service_status_v3_ClientConfig_GenericXdsConfig_xds_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
@@ -431,7 +550,7 @@ UPB_INLINE void envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_last_u
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(44, 72), struct google_protobuf_Timestamp*) = value;
}
-UPB_INLINE struct google_protobuf_Timestamp* envoy_service_status_v3_ClientConfig_GenericXdsConfig_mutable_last_updated(envoy_service_status_v3_ClientConfig_GenericXdsConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* envoy_service_status_v3_ClientConfig_GenericXdsConfig_mutable_last_updated(envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)envoy_service_status_v3_ClientConfig_GenericXdsConfig_last_updated(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -450,7 +569,7 @@ UPB_INLINE void envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_error_
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(48, 80), struct envoy_admin_v3_UpdateFailureState*) = value;
}
-UPB_INLINE struct envoy_admin_v3_UpdateFailureState* envoy_service_status_v3_ClientConfig_GenericXdsConfig_mutable_error_state(envoy_service_status_v3_ClientConfig_GenericXdsConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_admin_v3_UpdateFailureState* envoy_service_status_v3_ClientConfig_GenericXdsConfig_mutable_error_state(envoy_service_status_v3_ClientConfig_GenericXdsConfig* msg, upb_Arena* arena) {
struct envoy_admin_v3_UpdateFailureState* sub = (struct envoy_admin_v3_UpdateFailureState*)envoy_service_status_v3_ClientConfig_GenericXdsConfig_error_state(msg);
if (sub == NULL) {
sub = (struct envoy_admin_v3_UpdateFailureState*)_upb_Message_New(&envoy_admin_v3_UpdateFailureState_msginit, arena);
@@ -488,25 +607,35 @@ UPB_INLINE envoy_service_status_v3_ClientStatusResponse* envoy_service_status_v3
return ret;
}
UPB_INLINE char* envoy_service_status_v3_ClientStatusResponse_serialize(const envoy_service_status_v3_ClientStatusResponse* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_status_v3_ClientStatusResponse_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_status_v3_ClientStatusResponse_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_service_status_v3_ClientStatusResponse_serialize_ex(const envoy_service_status_v3_ClientStatusResponse* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_service_status_v3_ClientStatusResponse_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_service_status_v3_ClientStatusResponse_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_service_status_v3_ClientStatusResponse_has_config(const envoy_service_status_v3_ClientStatusResponse* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_service_status_v3_ClientStatusResponse_clear_config(const envoy_service_status_v3_ClientStatusResponse* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_service_status_v3_ClientConfig* const* envoy_service_status_v3_ClientStatusResponse_config(const envoy_service_status_v3_ClientStatusResponse* msg, size_t* len) {
+ return (const envoy_service_status_v3_ClientConfig* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_service_status_v3_ClientStatusResponse_has_config(const envoy_service_status_v3_ClientStatusResponse *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_service_status_v3_ClientConfig* const* envoy_service_status_v3_ClientStatusResponse_config(const envoy_service_status_v3_ClientStatusResponse *msg, size_t *len) { return (const envoy_service_status_v3_ClientConfig* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_service_status_v3_ClientConfig** envoy_service_status_v3_ClientStatusResponse_mutable_config(envoy_service_status_v3_ClientStatusResponse *msg, size_t *len) {
+UPB_INLINE envoy_service_status_v3_ClientConfig** envoy_service_status_v3_ClientStatusResponse_mutable_config(envoy_service_status_v3_ClientStatusResponse* msg, size_t* len) {
return (envoy_service_status_v3_ClientConfig**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_service_status_v3_ClientConfig** envoy_service_status_v3_ClientStatusResponse_resize_config(envoy_service_status_v3_ClientStatusResponse *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_service_status_v3_ClientConfig** envoy_service_status_v3_ClientStatusResponse_resize_config(envoy_service_status_v3_ClientStatusResponse* msg, size_t len, upb_Arena* arena) {
return (envoy_service_status_v3_ClientConfig**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_service_status_v3_ClientConfig* envoy_service_status_v3_ClientStatusResponse_add_config(envoy_service_status_v3_ClientStatusResponse *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_service_status_v3_ClientConfig* envoy_service_status_v3_ClientStatusResponse_add_config(envoy_service_status_v3_ClientStatusResponse* msg, upb_Arena* arena) {
struct envoy_service_status_v3_ClientConfig* sub = (struct envoy_service_status_v3_ClientConfig*)_upb_Message_New(&envoy_service_status_v3_ClientConfig_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c
index 2f84a38d83..7fb008c945 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c
@@ -20,15 +20,15 @@ static const upb_MiniTable_Sub envoy_type_http_v3_Cookie_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_type_http_v3_Cookie__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(20, 40), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_http_v3_Cookie_msginit = {
&envoy_type_http_v3_Cookie_submsgs[0],
&envoy_type_http_v3_Cookie__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 48), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h
index 7c19eecf16..0fcd828d07 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h
@@ -53,21 +53,36 @@ UPB_INLINE envoy_type_http_v3_Cookie* envoy_type_http_v3_Cookie_parse_ex(const c
return ret;
}
UPB_INLINE char* envoy_type_http_v3_Cookie_serialize(const envoy_type_http_v3_Cookie* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_http_v3_Cookie_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_http_v3_Cookie_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_http_v3_Cookie_serialize_ex(const envoy_type_http_v3_Cookie* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_http_v3_Cookie_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_http_v3_Cookie_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_http_v3_Cookie_clear_name(const envoy_type_http_v3_Cookie* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_type_http_v3_Cookie_name(const envoy_type_http_v3_Cookie* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_type_http_v3_Cookie_has_ttl(const envoy_type_http_v3_Cookie *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_type_http_v3_Cookie_has_ttl(const envoy_type_http_v3_Cookie* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_type_http_v3_Cookie_clear_ttl(const envoy_type_http_v3_Cookie* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_type_http_v3_Cookie_ttl(const envoy_type_http_v3_Cookie* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct google_protobuf_Duration*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Duration*);
+}
+UPB_INLINE void envoy_type_http_v3_Cookie_clear_path(const envoy_type_http_v3_Cookie* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_type_http_v3_Cookie_path(const envoy_type_http_v3_Cookie* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView);
}
UPB_INLINE void envoy_type_http_v3_Cookie_set_name(envoy_type_http_v3_Cookie *msg, upb_StringView value) {
@@ -75,9 +90,9 @@ UPB_INLINE void envoy_type_http_v3_Cookie_set_name(envoy_type_http_v3_Cookie *ms
}
UPB_INLINE void envoy_type_http_v3_Cookie_set_ttl(envoy_type_http_v3_Cookie *msg, struct google_protobuf_Duration* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct google_protobuf_Duration*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_type_http_v3_Cookie_mutable_ttl(envoy_type_http_v3_Cookie *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_type_http_v3_Cookie_mutable_ttl(envoy_type_http_v3_Cookie* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_type_http_v3_Cookie_ttl(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -87,7 +102,7 @@ UPB_INLINE struct google_protobuf_Duration* envoy_type_http_v3_Cookie_mutable_tt
return sub;
}
UPB_INLINE void envoy_type_http_v3_Cookie_set_path(envoy_type_http_v3_Cookie *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = value;
}
extern const upb_MiniTable_File envoy_type_http_v3_cookie_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c
index 990d3bbac4..8f0d5e99af 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c
@@ -19,41 +19,41 @@ static const upb_MiniTable_Sub envoy_type_http_v3_PathTransformation_submsgs[1]
};
static const upb_MiniTable_Field envoy_type_http_v3_PathTransformation__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_http_v3_PathTransformation_msginit = {
&envoy_type_http_v3_PathTransformation_submsgs[0],
&envoy_type_http_v3_PathTransformation__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_type_http_v3_PathTransformation_Operation_submsgs[2] = {
- {.submsg = &envoy_type_http_v3_PathTransformation_Operation_MergeSlashes_msginit},
{.submsg = &envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986_msginit},
+ {.submsg = &envoy_type_http_v3_PathTransformation_Operation_MergeSlashes_msginit},
};
static const upb_MiniTable_Field envoy_type_http_v3_PathTransformation_Operation__fields[2] = {
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_http_v3_PathTransformation_Operation_msginit = {
&envoy_type_http_v3_PathTransformation_Operation_submsgs[0],
&envoy_type_http_v3_PathTransformation_Operation__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
const upb_MiniTable envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
const upb_MiniTable envoy_type_http_v3_PathTransformation_Operation_MergeSlashes_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable *messages_layout[4] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h
index b42e5e97a7..cd32ab126c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h
@@ -60,25 +60,35 @@ UPB_INLINE envoy_type_http_v3_PathTransformation* envoy_type_http_v3_PathTransfo
return ret;
}
UPB_INLINE char* envoy_type_http_v3_PathTransformation_serialize(const envoy_type_http_v3_PathTransformation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_http_v3_PathTransformation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_http_v3_PathTransformation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_http_v3_PathTransformation_serialize_ex(const envoy_type_http_v3_PathTransformation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_http_v3_PathTransformation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_http_v3_PathTransformation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_type_http_v3_PathTransformation_has_operations(const envoy_type_http_v3_PathTransformation* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_type_http_v3_PathTransformation_clear_operations(const envoy_type_http_v3_PathTransformation* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_type_http_v3_PathTransformation_Operation* const* envoy_type_http_v3_PathTransformation_operations(const envoy_type_http_v3_PathTransformation* msg, size_t* len) {
+ return (const envoy_type_http_v3_PathTransformation_Operation* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_type_http_v3_PathTransformation_has_operations(const envoy_type_http_v3_PathTransformation *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_type_http_v3_PathTransformation_Operation* const* envoy_type_http_v3_PathTransformation_operations(const envoy_type_http_v3_PathTransformation *msg, size_t *len) { return (const envoy_type_http_v3_PathTransformation_Operation* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_type_http_v3_PathTransformation_Operation** envoy_type_http_v3_PathTransformation_mutable_operations(envoy_type_http_v3_PathTransformation *msg, size_t *len) {
+UPB_INLINE envoy_type_http_v3_PathTransformation_Operation** envoy_type_http_v3_PathTransformation_mutable_operations(envoy_type_http_v3_PathTransformation* msg, size_t* len) {
return (envoy_type_http_v3_PathTransformation_Operation**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_type_http_v3_PathTransformation_Operation** envoy_type_http_v3_PathTransformation_resize_operations(envoy_type_http_v3_PathTransformation *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_type_http_v3_PathTransformation_Operation** envoy_type_http_v3_PathTransformation_resize_operations(envoy_type_http_v3_PathTransformation* msg, size_t len, upb_Arena* arena) {
return (envoy_type_http_v3_PathTransformation_Operation**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_type_http_v3_PathTransformation_Operation* envoy_type_http_v3_PathTransformation_add_operations(envoy_type_http_v3_PathTransformation *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_http_v3_PathTransformation_Operation* envoy_type_http_v3_PathTransformation_add_operations(envoy_type_http_v3_PathTransformation* msg, upb_Arena* arena) {
struct envoy_type_http_v3_PathTransformation_Operation* sub = (struct envoy_type_http_v3_PathTransformation_Operation*)_upb_Message_New(&envoy_type_http_v3_PathTransformation_Operation_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -108,28 +118,47 @@ UPB_INLINE envoy_type_http_v3_PathTransformation_Operation* envoy_type_http_v3_P
return ret;
}
UPB_INLINE char* envoy_type_http_v3_PathTransformation_Operation_serialize(const envoy_type_http_v3_PathTransformation_Operation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_http_v3_PathTransformation_Operation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_http_v3_PathTransformation_Operation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_http_v3_PathTransformation_Operation_serialize_ex(const envoy_type_http_v3_PathTransformation_Operation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_http_v3_PathTransformation_Operation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_http_v3_PathTransformation_Operation_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_type_http_v3_PathTransformation_Operation_operation_specifier_normalize_path_rfc_3986 = 2,
envoy_type_http_v3_PathTransformation_Operation_operation_specifier_merge_slashes = 3,
envoy_type_http_v3_PathTransformation_Operation_operation_specifier_NOT_SET = 0
} envoy_type_http_v3_PathTransformation_Operation_operation_specifier_oneofcases;
-UPB_INLINE envoy_type_http_v3_PathTransformation_Operation_operation_specifier_oneofcases envoy_type_http_v3_PathTransformation_Operation_operation_specifier_case(const envoy_type_http_v3_PathTransformation_Operation* msg) { return (envoy_type_http_v3_PathTransformation_Operation_operation_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_type_http_v3_PathTransformation_Operation_has_normalize_path_rfc_3986(const envoy_type_http_v3_PathTransformation_Operation *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986* envoy_type_http_v3_PathTransformation_Operation_normalize_path_rfc_3986(const envoy_type_http_v3_PathTransformation_Operation *msg) { return UPB_READ_ONEOF(msg, const envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool envoy_type_http_v3_PathTransformation_Operation_has_merge_slashes(const envoy_type_http_v3_PathTransformation_Operation *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const envoy_type_http_v3_PathTransformation_Operation_MergeSlashes* envoy_type_http_v3_PathTransformation_Operation_merge_slashes(const envoy_type_http_v3_PathTransformation_Operation *msg) { return UPB_READ_ONEOF(msg, const envoy_type_http_v3_PathTransformation_Operation_MergeSlashes*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
+UPB_INLINE envoy_type_http_v3_PathTransformation_Operation_operation_specifier_oneofcases envoy_type_http_v3_PathTransformation_Operation_operation_specifier_case(const envoy_type_http_v3_PathTransformation_Operation* msg) {
+ return (envoy_type_http_v3_PathTransformation_Operation_operation_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_type_http_v3_PathTransformation_Operation_has_normalize_path_rfc_3986(const envoy_type_http_v3_PathTransformation_Operation* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_type_http_v3_PathTransformation_Operation_clear_normalize_path_rfc_3986(const envoy_type_http_v3_PathTransformation_Operation* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_http_v3_PathTransformation_Operation_operation_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986* envoy_type_http_v3_PathTransformation_Operation_normalize_path_rfc_3986(const envoy_type_http_v3_PathTransformation_Operation* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_type_http_v3_PathTransformation_Operation_has_merge_slashes(const envoy_type_http_v3_PathTransformation_Operation* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_type_http_v3_PathTransformation_Operation_clear_merge_slashes(const envoy_type_http_v3_PathTransformation_Operation* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_http_v3_PathTransformation_Operation_MergeSlashes*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_http_v3_PathTransformation_Operation_operation_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_type_http_v3_PathTransformation_Operation_MergeSlashes* envoy_type_http_v3_PathTransformation_Operation_merge_slashes(const envoy_type_http_v3_PathTransformation_Operation* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_http_v3_PathTransformation_Operation_MergeSlashes*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
UPB_INLINE void envoy_type_http_v3_PathTransformation_Operation_set_normalize_path_rfc_3986(envoy_type_http_v3_PathTransformation_Operation *msg, envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986* envoy_type_http_v3_PathTransformation_Operation_mutable_normalize_path_rfc_3986(envoy_type_http_v3_PathTransformation_Operation *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986* envoy_type_http_v3_PathTransformation_Operation_mutable_normalize_path_rfc_3986(envoy_type_http_v3_PathTransformation_Operation* msg, upb_Arena* arena) {
struct envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986* sub = (struct envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986*)envoy_type_http_v3_PathTransformation_Operation_normalize_path_rfc_3986(msg);
if (sub == NULL) {
sub = (struct envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986*)_upb_Message_New(&envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986_msginit, arena);
@@ -139,9 +168,9 @@ UPB_INLINE struct envoy_type_http_v3_PathTransformation_Operation_NormalizePathR
return sub;
}
UPB_INLINE void envoy_type_http_v3_PathTransformation_Operation_set_merge_slashes(envoy_type_http_v3_PathTransformation_Operation *msg, envoy_type_http_v3_PathTransformation_Operation_MergeSlashes* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_http_v3_PathTransformation_Operation_MergeSlashes*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, envoy_type_http_v3_PathTransformation_Operation_MergeSlashes*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_type_http_v3_PathTransformation_Operation_MergeSlashes* envoy_type_http_v3_PathTransformation_Operation_mutable_merge_slashes(envoy_type_http_v3_PathTransformation_Operation *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_http_v3_PathTransformation_Operation_MergeSlashes* envoy_type_http_v3_PathTransformation_Operation_mutable_merge_slashes(envoy_type_http_v3_PathTransformation_Operation* msg, upb_Arena* arena) {
struct envoy_type_http_v3_PathTransformation_Operation_MergeSlashes* sub = (struct envoy_type_http_v3_PathTransformation_Operation_MergeSlashes*)envoy_type_http_v3_PathTransformation_Operation_merge_slashes(msg);
if (sub == NULL) {
sub = (struct envoy_type_http_v3_PathTransformation_Operation_MergeSlashes*)_upb_Message_New(&envoy_type_http_v3_PathTransformation_Operation_MergeSlashes_msginit, arena);
@@ -176,11 +205,15 @@ UPB_INLINE envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986*
return ret;
}
UPB_INLINE char* envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986_serialize(const envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986_serialize_ex(const envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_http_v3_PathTransformation_Operation_NormalizePathRFC3986_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -209,11 +242,15 @@ UPB_INLINE envoy_type_http_v3_PathTransformation_Operation_MergeSlashes* envoy_t
return ret;
}
UPB_INLINE char* envoy_type_http_v3_PathTransformation_Operation_MergeSlashes_serialize(const envoy_type_http_v3_PathTransformation_Operation_MergeSlashes* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_http_v3_PathTransformation_Operation_MergeSlashes_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_http_v3_PathTransformation_Operation_MergeSlashes_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_http_v3_PathTransformation_Operation_MergeSlashes_serialize_ex(const envoy_type_http_v3_PathTransformation_Operation_MergeSlashes* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_http_v3_PathTransformation_Operation_MergeSlashes_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_http_v3_PathTransformation_Operation_MergeSlashes_msginit, options, arena, &ptr, len);
+ return ptr;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c
index 3198573595..271aa37f73 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c
@@ -15,43 +15,43 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_type_matcher_v3_HttpRequestHeaderMatchInput__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_HttpRequestHeaderMatchInput_msginit = {
NULL,
&envoy_type_matcher_v3_HttpRequestHeaderMatchInput__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_type_matcher_v3_HttpRequestTrailerMatchInput__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_HttpRequestTrailerMatchInput_msginit = {
NULL,
&envoy_type_matcher_v3_HttpRequestTrailerMatchInput__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_type_matcher_v3_HttpResponseHeaderMatchInput__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_HttpResponseHeaderMatchInput_msginit = {
NULL,
&envoy_type_matcher_v3_HttpResponseHeaderMatchInput__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_type_matcher_v3_HttpResponseTrailerMatchInput__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_HttpResponseTrailerMatchInput_msginit = {
NULL,
&envoy_type_matcher_v3_HttpResponseTrailerMatchInput__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[4] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h
index 975ac67ab5..7cde108420 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h
@@ -60,11 +60,18 @@ UPB_INLINE envoy_type_matcher_v3_HttpRequestHeaderMatchInput* envoy_type_matcher
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_HttpRequestHeaderMatchInput_serialize(const envoy_type_matcher_v3_HttpRequestHeaderMatchInput* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_HttpRequestHeaderMatchInput_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_HttpRequestHeaderMatchInput_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_HttpRequestHeaderMatchInput_serialize_ex(const envoy_type_matcher_v3_HttpRequestHeaderMatchInput* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_HttpRequestHeaderMatchInput_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_HttpRequestHeaderMatchInput_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_matcher_v3_HttpRequestHeaderMatchInput_clear_header_name(const envoy_type_matcher_v3_HttpRequestHeaderMatchInput* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_type_matcher_v3_HttpRequestHeaderMatchInput_header_name(const envoy_type_matcher_v3_HttpRequestHeaderMatchInput* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -99,11 +106,18 @@ UPB_INLINE envoy_type_matcher_v3_HttpRequestTrailerMatchInput* envoy_type_matche
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_HttpRequestTrailerMatchInput_serialize(const envoy_type_matcher_v3_HttpRequestTrailerMatchInput* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_HttpRequestTrailerMatchInput_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_HttpRequestTrailerMatchInput_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_HttpRequestTrailerMatchInput_serialize_ex(const envoy_type_matcher_v3_HttpRequestTrailerMatchInput* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_HttpRequestTrailerMatchInput_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_HttpRequestTrailerMatchInput_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_matcher_v3_HttpRequestTrailerMatchInput_clear_header_name(const envoy_type_matcher_v3_HttpRequestTrailerMatchInput* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_type_matcher_v3_HttpRequestTrailerMatchInput_header_name(const envoy_type_matcher_v3_HttpRequestTrailerMatchInput* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -138,11 +152,18 @@ UPB_INLINE envoy_type_matcher_v3_HttpResponseHeaderMatchInput* envoy_type_matche
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_HttpResponseHeaderMatchInput_serialize(const envoy_type_matcher_v3_HttpResponseHeaderMatchInput* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_HttpResponseHeaderMatchInput_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_HttpResponseHeaderMatchInput_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_HttpResponseHeaderMatchInput_serialize_ex(const envoy_type_matcher_v3_HttpResponseHeaderMatchInput* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_HttpResponseHeaderMatchInput_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_HttpResponseHeaderMatchInput_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_matcher_v3_HttpResponseHeaderMatchInput_clear_header_name(const envoy_type_matcher_v3_HttpResponseHeaderMatchInput* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_type_matcher_v3_HttpResponseHeaderMatchInput_header_name(const envoy_type_matcher_v3_HttpResponseHeaderMatchInput* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -177,11 +198,18 @@ UPB_INLINE envoy_type_matcher_v3_HttpResponseTrailerMatchInput* envoy_type_match
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_HttpResponseTrailerMatchInput_serialize(const envoy_type_matcher_v3_HttpResponseTrailerMatchInput* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_HttpResponseTrailerMatchInput_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_HttpResponseTrailerMatchInput_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_HttpResponseTrailerMatchInput_serialize_ex(const envoy_type_matcher_v3_HttpResponseTrailerMatchInput* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_HttpResponseTrailerMatchInput_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_HttpResponseTrailerMatchInput_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_matcher_v3_HttpResponseTrailerMatchInput_clear_header_name(const envoy_type_matcher_v3_HttpResponseTrailerMatchInput* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_type_matcher_v3_HttpResponseTrailerMatchInput_header_name(const envoy_type_matcher_v3_HttpResponseTrailerMatchInput* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c
index 335fad86cf..bdf6825ad9 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c
@@ -22,26 +22,26 @@ static const upb_MiniTable_Sub envoy_type_matcher_v3_MetadataMatcher_submsgs[2]
};
static const upb_MiniTable_Field envoy_type_matcher_v3_MetadataMatcher__fields[4] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_MetadataMatcher_msginit = {
&envoy_type_matcher_v3_MetadataMatcher_submsgs[0],
&envoy_type_matcher_v3_MetadataMatcher__fields[0],
- UPB_SIZE(24, 48), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Field envoy_type_matcher_v3_MetadataMatcher_PathSegment__fields[1] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_MetadataMatcher_PathSegment_msginit = {
NULL,
&envoy_type_matcher_v3_MetadataMatcher_PathSegment__fields[0],
- UPB_SIZE(16, 32), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h
index 1af3c0b79f..52808c7952 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h
@@ -56,20 +56,42 @@ UPB_INLINE envoy_type_matcher_v3_MetadataMatcher* envoy_type_matcher_v3_Metadata
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_MetadataMatcher_serialize(const envoy_type_matcher_v3_MetadataMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_MetadataMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_MetadataMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_MetadataMatcher_serialize_ex(const envoy_type_matcher_v3_MetadataMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_MetadataMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_MetadataMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_matcher_v3_MetadataMatcher_clear_filter(const envoy_type_matcher_v3_MetadataMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_type_matcher_v3_MetadataMatcher_filter(const envoy_type_matcher_v3_MetadataMatcher* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool envoy_type_matcher_v3_MetadataMatcher_has_path(const envoy_type_matcher_v3_MetadataMatcher *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const envoy_type_matcher_v3_MetadataMatcher_PathSegment* const* envoy_type_matcher_v3_MetadataMatcher_path(const envoy_type_matcher_v3_MetadataMatcher *msg, size_t *len) { return (const envoy_type_matcher_v3_MetadataMatcher_PathSegment* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
-UPB_INLINE bool envoy_type_matcher_v3_MetadataMatcher_has_value(const envoy_type_matcher_v3_MetadataMatcher *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_type_matcher_v3_MetadataMatcher_has_path(const envoy_type_matcher_v3_MetadataMatcher* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void envoy_type_matcher_v3_MetadataMatcher_clear_path(const envoy_type_matcher_v3_MetadataMatcher* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const envoy_type_matcher_v3_MetadataMatcher_PathSegment* const* envoy_type_matcher_v3_MetadataMatcher_path(const envoy_type_matcher_v3_MetadataMatcher* msg, size_t* len) {
+ return (const envoy_type_matcher_v3_MetadataMatcher_PathSegment* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE bool envoy_type_matcher_v3_MetadataMatcher_has_value(const envoy_type_matcher_v3_MetadataMatcher* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_type_matcher_v3_MetadataMatcher_clear_value(const envoy_type_matcher_v3_MetadataMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct envoy_type_matcher_v3_ValueMatcher* envoy_type_matcher_v3_MetadataMatcher_value(const envoy_type_matcher_v3_MetadataMatcher* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_type_matcher_v3_ValueMatcher*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_type_matcher_v3_ValueMatcher*);
+}
+UPB_INLINE void envoy_type_matcher_v3_MetadataMatcher_clear_invert(const envoy_type_matcher_v3_MetadataMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
}
UPB_INLINE bool envoy_type_matcher_v3_MetadataMatcher_invert(const envoy_type_matcher_v3_MetadataMatcher* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
@@ -78,24 +100,23 @@ UPB_INLINE bool envoy_type_matcher_v3_MetadataMatcher_invert(const envoy_type_ma
UPB_INLINE void envoy_type_matcher_v3_MetadataMatcher_set_filter(envoy_type_matcher_v3_MetadataMatcher *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE envoy_type_matcher_v3_MetadataMatcher_PathSegment** envoy_type_matcher_v3_MetadataMatcher_mutable_path(envoy_type_matcher_v3_MetadataMatcher *msg, size_t *len) {
- return (envoy_type_matcher_v3_MetadataMatcher_PathSegment**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
+UPB_INLINE envoy_type_matcher_v3_MetadataMatcher_PathSegment** envoy_type_matcher_v3_MetadataMatcher_mutable_path(envoy_type_matcher_v3_MetadataMatcher* msg, size_t* len) {
+ return (envoy_type_matcher_v3_MetadataMatcher_PathSegment**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE envoy_type_matcher_v3_MetadataMatcher_PathSegment** envoy_type_matcher_v3_MetadataMatcher_resize_path(envoy_type_matcher_v3_MetadataMatcher *msg, size_t len, upb_Arena *arena) {
- return (envoy_type_matcher_v3_MetadataMatcher_PathSegment**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_type_matcher_v3_MetadataMatcher_PathSegment** envoy_type_matcher_v3_MetadataMatcher_resize_path(envoy_type_matcher_v3_MetadataMatcher* msg, size_t len, upb_Arena* arena) {
+ return (envoy_type_matcher_v3_MetadataMatcher_PathSegment**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher_PathSegment* envoy_type_matcher_v3_MetadataMatcher_add_path(envoy_type_matcher_v3_MetadataMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_MetadataMatcher_PathSegment* envoy_type_matcher_v3_MetadataMatcher_add_path(envoy_type_matcher_v3_MetadataMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_MetadataMatcher_PathSegment* sub = (struct envoy_type_matcher_v3_MetadataMatcher_PathSegment*)_upb_Message_New(&envoy_type_matcher_v3_MetadataMatcher_PathSegment_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_type_matcher_v3_MetadataMatcher_set_value(envoy_type_matcher_v3_MetadataMatcher *msg, struct envoy_type_matcher_v3_ValueMatcher* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_type_matcher_v3_ValueMatcher*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_type_matcher_v3_ValueMatcher*) = value;
}
-UPB_INLINE struct envoy_type_matcher_v3_ValueMatcher* envoy_type_matcher_v3_MetadataMatcher_mutable_value(envoy_type_matcher_v3_MetadataMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_ValueMatcher* envoy_type_matcher_v3_MetadataMatcher_mutable_value(envoy_type_matcher_v3_MetadataMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_ValueMatcher* sub = (struct envoy_type_matcher_v3_ValueMatcher*)envoy_type_matcher_v3_MetadataMatcher_value(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_ValueMatcher*)_upb_Message_New(&envoy_type_matcher_v3_ValueMatcher_msginit, arena);
@@ -133,23 +154,35 @@ UPB_INLINE envoy_type_matcher_v3_MetadataMatcher_PathSegment* envoy_type_matcher
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_MetadataMatcher_PathSegment_serialize(const envoy_type_matcher_v3_MetadataMatcher_PathSegment* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_MetadataMatcher_PathSegment_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_MetadataMatcher_PathSegment_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_MetadataMatcher_PathSegment_serialize_ex(const envoy_type_matcher_v3_MetadataMatcher_PathSegment* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_MetadataMatcher_PathSegment_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_MetadataMatcher_PathSegment_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_type_matcher_v3_MetadataMatcher_PathSegment_segment_key = 1,
envoy_type_matcher_v3_MetadataMatcher_PathSegment_segment_NOT_SET = 0
} envoy_type_matcher_v3_MetadataMatcher_PathSegment_segment_oneofcases;
-UPB_INLINE envoy_type_matcher_v3_MetadataMatcher_PathSegment_segment_oneofcases envoy_type_matcher_v3_MetadataMatcher_PathSegment_segment_case(const envoy_type_matcher_v3_MetadataMatcher_PathSegment* msg) { return (envoy_type_matcher_v3_MetadataMatcher_PathSegment_segment_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool envoy_type_matcher_v3_MetadataMatcher_PathSegment_has_key(const envoy_type_matcher_v3_MetadataMatcher_PathSegment *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE upb_StringView envoy_type_matcher_v3_MetadataMatcher_PathSegment_key(const envoy_type_matcher_v3_MetadataMatcher_PathSegment *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, upb_StringView_FromString("")); }
+UPB_INLINE envoy_type_matcher_v3_MetadataMatcher_PathSegment_segment_oneofcases envoy_type_matcher_v3_MetadataMatcher_PathSegment_segment_case(const envoy_type_matcher_v3_MetadataMatcher_PathSegment* msg) {
+ return (envoy_type_matcher_v3_MetadataMatcher_PathSegment_segment_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_type_matcher_v3_MetadataMatcher_PathSegment_has_key(const envoy_type_matcher_v3_MetadataMatcher_PathSegment* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_type_matcher_v3_MetadataMatcher_PathSegment_clear_key(const envoy_type_matcher_v3_MetadataMatcher_PathSegment* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_type_matcher_v3_MetadataMatcher_PathSegment_segment_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_type_matcher_v3_MetadataMatcher_PathSegment_key(const envoy_type_matcher_v3_MetadataMatcher_PathSegment* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, upb_StringView_FromString(""));
+}
UPB_INLINE void envoy_type_matcher_v3_MetadataMatcher_PathSegment_set_key(envoy_type_matcher_v3_MetadataMatcher_PathSegment *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
extern const upb_MiniTable_File envoy_type_matcher_v3_metadata_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c
index c654670bda..003b9293f3 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c
@@ -22,14 +22,14 @@ static const upb_MiniTable_Sub envoy_type_matcher_v3_NodeMatcher_submsgs[2] = {
};
static const upb_MiniTable_Field envoy_type_matcher_v3_NodeMatcher__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_NodeMatcher_msginit = {
&envoy_type_matcher_v3_NodeMatcher_submsgs[0],
&envoy_type_matcher_v3_NodeMatcher__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h
index e5ab350b90..c0a41ff889 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h
@@ -55,24 +55,40 @@ UPB_INLINE envoy_type_matcher_v3_NodeMatcher* envoy_type_matcher_v3_NodeMatcher_
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_NodeMatcher_serialize(const envoy_type_matcher_v3_NodeMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_NodeMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_NodeMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_NodeMatcher_serialize_ex(const envoy_type_matcher_v3_NodeMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_NodeMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_NodeMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_type_matcher_v3_NodeMatcher_has_node_id(const envoy_type_matcher_v3_NodeMatcher* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_type_matcher_v3_NodeMatcher_clear_node_id(const envoy_type_matcher_v3_NodeMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_type_matcher_v3_NodeMatcher_has_node_id(const envoy_type_matcher_v3_NodeMatcher *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_NodeMatcher_node_id(const envoy_type_matcher_v3_NodeMatcher* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_matcher_v3_StringMatcher*);
}
-UPB_INLINE bool envoy_type_matcher_v3_NodeMatcher_has_node_metadatas(const envoy_type_matcher_v3_NodeMatcher *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const struct envoy_type_matcher_v3_StructMatcher* const* envoy_type_matcher_v3_NodeMatcher_node_metadatas(const envoy_type_matcher_v3_NodeMatcher *msg, size_t *len) { return (const struct envoy_type_matcher_v3_StructMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
+UPB_INLINE bool envoy_type_matcher_v3_NodeMatcher_has_node_metadatas(const envoy_type_matcher_v3_NodeMatcher* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_type_matcher_v3_NodeMatcher_clear_node_metadatas(const envoy_type_matcher_v3_NodeMatcher* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const struct envoy_type_matcher_v3_StructMatcher* const* envoy_type_matcher_v3_NodeMatcher_node_metadatas(const envoy_type_matcher_v3_NodeMatcher* msg, size_t* len) {
+ return (const struct envoy_type_matcher_v3_StructMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
UPB_INLINE void envoy_type_matcher_v3_NodeMatcher_set_node_id(envoy_type_matcher_v3_NodeMatcher *msg, struct envoy_type_matcher_v3_StringMatcher* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_matcher_v3_StringMatcher*) = value;
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_NodeMatcher_mutable_node_id(envoy_type_matcher_v3_NodeMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_NodeMatcher_mutable_node_id(envoy_type_matcher_v3_NodeMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)envoy_type_matcher_v3_NodeMatcher_node_id(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StringMatcher_msginit, arena);
@@ -81,16 +97,15 @@ UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_Nod
}
return sub;
}
-UPB_INLINE struct envoy_type_matcher_v3_StructMatcher** envoy_type_matcher_v3_NodeMatcher_mutable_node_metadatas(envoy_type_matcher_v3_NodeMatcher *msg, size_t *len) {
+UPB_INLINE struct envoy_type_matcher_v3_StructMatcher** envoy_type_matcher_v3_NodeMatcher_mutable_node_metadatas(envoy_type_matcher_v3_NodeMatcher* msg, size_t* len) {
return (struct envoy_type_matcher_v3_StructMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE struct envoy_type_matcher_v3_StructMatcher** envoy_type_matcher_v3_NodeMatcher_resize_node_metadatas(envoy_type_matcher_v3_NodeMatcher *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StructMatcher** envoy_type_matcher_v3_NodeMatcher_resize_node_metadatas(envoy_type_matcher_v3_NodeMatcher* msg, size_t len, upb_Arena* arena) {
return (struct envoy_type_matcher_v3_StructMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_type_matcher_v3_StructMatcher* envoy_type_matcher_v3_NodeMatcher_add_node_metadatas(envoy_type_matcher_v3_NodeMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StructMatcher* envoy_type_matcher_v3_NodeMatcher_add_node_metadatas(envoy_type_matcher_v3_NodeMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StructMatcher* sub = (struct envoy_type_matcher_v3_StructMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StructMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c
index a64acdda2f..a59aa8d1dd 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c
@@ -21,14 +21,14 @@ static const upb_MiniTable_Sub envoy_type_matcher_v3_DoubleMatcher_submsgs[1] =
};
static const upb_MiniTable_Field envoy_type_matcher_v3_DoubleMatcher__fields[2] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-9, -9), 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_DoubleMatcher_msginit = {
&envoy_type_matcher_v3_DoubleMatcher_submsgs[0],
&envoy_type_matcher_v3_DoubleMatcher__fields[0],
- UPB_SIZE(16, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h
index 09ac592d87..bb17b247d5 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h
@@ -53,28 +53,47 @@ UPB_INLINE envoy_type_matcher_v3_DoubleMatcher* envoy_type_matcher_v3_DoubleMatc
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_DoubleMatcher_serialize(const envoy_type_matcher_v3_DoubleMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_DoubleMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_DoubleMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_DoubleMatcher_serialize_ex(const envoy_type_matcher_v3_DoubleMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_DoubleMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_DoubleMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_type_matcher_v3_DoubleMatcher_match_pattern_range = 1,
envoy_type_matcher_v3_DoubleMatcher_match_pattern_exact = 2,
envoy_type_matcher_v3_DoubleMatcher_match_pattern_NOT_SET = 0
} envoy_type_matcher_v3_DoubleMatcher_match_pattern_oneofcases;
-UPB_INLINE envoy_type_matcher_v3_DoubleMatcher_match_pattern_oneofcases envoy_type_matcher_v3_DoubleMatcher_match_pattern_case(const envoy_type_matcher_v3_DoubleMatcher* msg) { return (envoy_type_matcher_v3_DoubleMatcher_match_pattern_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t); }
-
-UPB_INLINE bool envoy_type_matcher_v3_DoubleMatcher_has_range(const envoy_type_matcher_v3_DoubleMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 8)) == 1; }
-UPB_INLINE const struct envoy_type_v3_DoubleRange* envoy_type_matcher_v3_DoubleMatcher_range(const envoy_type_matcher_v3_DoubleMatcher *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_v3_DoubleRange*, UPB_SIZE(0, 0), UPB_SIZE(8, 8), 1, NULL); }
-UPB_INLINE bool envoy_type_matcher_v3_DoubleMatcher_has_exact(const envoy_type_matcher_v3_DoubleMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 8)) == 2; }
-UPB_INLINE double envoy_type_matcher_v3_DoubleMatcher_exact(const envoy_type_matcher_v3_DoubleMatcher *msg) { return UPB_READ_ONEOF(msg, double, UPB_SIZE(0, 0), UPB_SIZE(8, 8), 2, 0); }
+UPB_INLINE envoy_type_matcher_v3_DoubleMatcher_match_pattern_oneofcases envoy_type_matcher_v3_DoubleMatcher_match_pattern_case(const envoy_type_matcher_v3_DoubleMatcher* msg) {
+ return (envoy_type_matcher_v3_DoubleMatcher_match_pattern_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_type_matcher_v3_DoubleMatcher_has_range(const envoy_type_matcher_v3_DoubleMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_type_matcher_v3_DoubleMatcher_clear_range(const envoy_type_matcher_v3_DoubleMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_v3_DoubleRange*, UPB_SIZE(8, 8), 0, UPB_SIZE(0, 0), envoy_type_matcher_v3_DoubleMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_v3_DoubleRange* envoy_type_matcher_v3_DoubleMatcher_range(const envoy_type_matcher_v3_DoubleMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_v3_DoubleRange*, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_type_matcher_v3_DoubleMatcher_has_exact(const envoy_type_matcher_v3_DoubleMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_type_matcher_v3_DoubleMatcher_clear_exact(const envoy_type_matcher_v3_DoubleMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, double, UPB_SIZE(8, 8), 0, UPB_SIZE(0, 0), envoy_type_matcher_v3_DoubleMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE double envoy_type_matcher_v3_DoubleMatcher_exact(const envoy_type_matcher_v3_DoubleMatcher* msg) {
+ return UPB_READ_ONEOF(msg, double, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 2, 0);
+}
UPB_INLINE void envoy_type_matcher_v3_DoubleMatcher_set_range(envoy_type_matcher_v3_DoubleMatcher *msg, struct envoy_type_v3_DoubleRange* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_v3_DoubleRange*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 8), 1);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_v3_DoubleRange*, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_type_v3_DoubleRange* envoy_type_matcher_v3_DoubleMatcher_mutable_range(envoy_type_matcher_v3_DoubleMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_DoubleRange* envoy_type_matcher_v3_DoubleMatcher_mutable_range(envoy_type_matcher_v3_DoubleMatcher* msg, upb_Arena* arena) {
struct envoy_type_v3_DoubleRange* sub = (struct envoy_type_v3_DoubleRange*)envoy_type_matcher_v3_DoubleMatcher_range(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_DoubleRange*)_upb_Message_New(&envoy_type_v3_DoubleRange_msginit, arena);
@@ -84,7 +103,7 @@ UPB_INLINE struct envoy_type_v3_DoubleRange* envoy_type_matcher_v3_DoubleMatcher
return sub;
}
UPB_INLINE void envoy_type_matcher_v3_DoubleMatcher_set_exact(envoy_type_matcher_v3_DoubleMatcher *msg, double value) {
- UPB_WRITE_ONEOF(msg, double, UPB_SIZE(0, 0), value, UPB_SIZE(8, 8), 2);
+ UPB_WRITE_ONEOF(msg, double, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 2);
}
extern const upb_MiniTable_File envoy_type_matcher_v3_number_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c
index bd001472ca..31ce5dbb25 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c
@@ -21,13 +21,13 @@ static const upb_MiniTable_Sub envoy_type_matcher_v3_PathMatcher_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_type_matcher_v3_PathMatcher__fields[1] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_PathMatcher_msginit = {
&envoy_type_matcher_v3_PathMatcher_submsgs[0],
&envoy_type_matcher_v3_PathMatcher__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h
index 8b2b080df3..21deddcd8b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h
@@ -53,25 +53,37 @@ UPB_INLINE envoy_type_matcher_v3_PathMatcher* envoy_type_matcher_v3_PathMatcher_
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_PathMatcher_serialize(const envoy_type_matcher_v3_PathMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_PathMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_PathMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_PathMatcher_serialize_ex(const envoy_type_matcher_v3_PathMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_PathMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_PathMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_type_matcher_v3_PathMatcher_rule_path = 1,
envoy_type_matcher_v3_PathMatcher_rule_NOT_SET = 0
} envoy_type_matcher_v3_PathMatcher_rule_oneofcases;
-UPB_INLINE envoy_type_matcher_v3_PathMatcher_rule_oneofcases envoy_type_matcher_v3_PathMatcher_rule_case(const envoy_type_matcher_v3_PathMatcher* msg) { return (envoy_type_matcher_v3_PathMatcher_rule_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_type_matcher_v3_PathMatcher_has_path(const envoy_type_matcher_v3_PathMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_PathMatcher_path(const envoy_type_matcher_v3_PathMatcher *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
+UPB_INLINE envoy_type_matcher_v3_PathMatcher_rule_oneofcases envoy_type_matcher_v3_PathMatcher_rule_case(const envoy_type_matcher_v3_PathMatcher* msg) {
+ return (envoy_type_matcher_v3_PathMatcher_rule_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_type_matcher_v3_PathMatcher_has_path(const envoy_type_matcher_v3_PathMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_type_matcher_v3_PathMatcher_clear_path(const envoy_type_matcher_v3_PathMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_matcher_v3_PathMatcher_rule_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_PathMatcher_path(const envoy_type_matcher_v3_PathMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
UPB_INLINE void envoy_type_matcher_v3_PathMatcher_set_path(envoy_type_matcher_v3_PathMatcher *msg, struct envoy_type_matcher_v3_StringMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_PathMatcher_mutable_path(envoy_type_matcher_v3_PathMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_PathMatcher_mutable_path(envoy_type_matcher_v3_PathMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)envoy_type_matcher_v3_PathMatcher_path(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StringMatcher_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c
index d271292bb8..f1468732e3 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c
@@ -22,14 +22,14 @@ static const upb_MiniTable_Sub envoy_type_matcher_v3_RegexMatcher_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_type_matcher_v3_RegexMatcher__fields[2] = {
- {1, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_RegexMatcher_msginit = {
&envoy_type_matcher_v3_RegexMatcher_submsgs[0],
&envoy_type_matcher_v3_RegexMatcher__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_type_matcher_v3_RegexMatcher_GoogleRE2_submsgs[1] = {
@@ -37,13 +37,13 @@ static const upb_MiniTable_Sub envoy_type_matcher_v3_RegexMatcher_GoogleRE2_subm
};
static const upb_MiniTable_Field envoy_type_matcher_v3_RegexMatcher_GoogleRE2__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_RegexMatcher_GoogleRE2_msginit = {
&envoy_type_matcher_v3_RegexMatcher_GoogleRE2_submsgs[0],
&envoy_type_matcher_v3_RegexMatcher_GoogleRE2__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_type_matcher_v3_RegexMatchAndSubstitute_submsgs[1] = {
@@ -51,14 +51,14 @@ static const upb_MiniTable_Sub envoy_type_matcher_v3_RegexMatchAndSubstitute_sub
};
static const upb_MiniTable_Field envoy_type_matcher_v3_RegexMatchAndSubstitute__fields[2] = {
- {1, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_RegexMatchAndSubstitute_msginit = {
&envoy_type_matcher_v3_RegexMatchAndSubstitute_submsgs[0],
&envoy_type_matcher_v3_RegexMatchAndSubstitute__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[3] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h
index f535969bb5..b7c12bf4a4 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h
@@ -59,28 +59,43 @@ UPB_INLINE envoy_type_matcher_v3_RegexMatcher* envoy_type_matcher_v3_RegexMatche
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_RegexMatcher_serialize(const envoy_type_matcher_v3_RegexMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_RegexMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_RegexMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_RegexMatcher_serialize_ex(const envoy_type_matcher_v3_RegexMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_RegexMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_RegexMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_type_matcher_v3_RegexMatcher_engine_type_google_re2 = 1,
envoy_type_matcher_v3_RegexMatcher_engine_type_NOT_SET = 0
} envoy_type_matcher_v3_RegexMatcher_engine_type_oneofcases;
-UPB_INLINE envoy_type_matcher_v3_RegexMatcher_engine_type_oneofcases envoy_type_matcher_v3_RegexMatcher_engine_type_case(const envoy_type_matcher_v3_RegexMatcher* msg) { return (envoy_type_matcher_v3_RegexMatcher_engine_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool envoy_type_matcher_v3_RegexMatcher_has_google_re2(const envoy_type_matcher_v3_RegexMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 1; }
-UPB_INLINE const envoy_type_matcher_v3_RegexMatcher_GoogleRE2* envoy_type_matcher_v3_RegexMatcher_google_re2(const envoy_type_matcher_v3_RegexMatcher *msg) { return UPB_READ_ONEOF(msg, const envoy_type_matcher_v3_RegexMatcher_GoogleRE2*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 1, NULL); }
+UPB_INLINE envoy_type_matcher_v3_RegexMatcher_engine_type_oneofcases envoy_type_matcher_v3_RegexMatcher_engine_type_case(const envoy_type_matcher_v3_RegexMatcher* msg) {
+ return (envoy_type_matcher_v3_RegexMatcher_engine_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_type_matcher_v3_RegexMatcher_has_google_re2(const envoy_type_matcher_v3_RegexMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_type_matcher_v3_RegexMatcher_clear_google_re2(const envoy_type_matcher_v3_RegexMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_matcher_v3_RegexMatcher_GoogleRE2*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_type_matcher_v3_RegexMatcher_engine_type_NOT_SET);
+}
+UPB_INLINE const envoy_type_matcher_v3_RegexMatcher_GoogleRE2* envoy_type_matcher_v3_RegexMatcher_google_re2(const envoy_type_matcher_v3_RegexMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_matcher_v3_RegexMatcher_GoogleRE2*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE void envoy_type_matcher_v3_RegexMatcher_clear_regex(const envoy_type_matcher_v3_RegexMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_type_matcher_v3_RegexMatcher_regex(const envoy_type_matcher_v3_RegexMatcher* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
UPB_INLINE void envoy_type_matcher_v3_RegexMatcher_set_google_re2(envoy_type_matcher_v3_RegexMatcher *msg, envoy_type_matcher_v3_RegexMatcher_GoogleRE2* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_matcher_v3_RegexMatcher_GoogleRE2*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 1);
+ UPB_WRITE_ONEOF(msg, envoy_type_matcher_v3_RegexMatcher_GoogleRE2*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher_GoogleRE2* envoy_type_matcher_v3_RegexMatcher_mutable_google_re2(envoy_type_matcher_v3_RegexMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher_GoogleRE2* envoy_type_matcher_v3_RegexMatcher_mutable_google_re2(envoy_type_matcher_v3_RegexMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_RegexMatcher_GoogleRE2* sub = (struct envoy_type_matcher_v3_RegexMatcher_GoogleRE2*)envoy_type_matcher_v3_RegexMatcher_google_re2(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_RegexMatcher_GoogleRE2*)_upb_Message_New(&envoy_type_matcher_v3_RegexMatcher_GoogleRE2_msginit, arena);
@@ -90,7 +105,7 @@ UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher_GoogleRE2* envoy_type_match
return sub;
}
UPB_INLINE void envoy_type_matcher_v3_RegexMatcher_set_regex(envoy_type_matcher_v3_RegexMatcher *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
/* envoy.type.matcher.v3.RegexMatcher.GoogleRE2 */
@@ -118,13 +133,22 @@ UPB_INLINE envoy_type_matcher_v3_RegexMatcher_GoogleRE2* envoy_type_matcher_v3_R
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_RegexMatcher_GoogleRE2_serialize(const envoy_type_matcher_v3_RegexMatcher_GoogleRE2* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_RegexMatcher_GoogleRE2_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_RegexMatcher_GoogleRE2_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_RegexMatcher_GoogleRE2_serialize_ex(const envoy_type_matcher_v3_RegexMatcher_GoogleRE2* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_RegexMatcher_GoogleRE2_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_RegexMatcher_GoogleRE2_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_type_matcher_v3_RegexMatcher_GoogleRE2_has_max_program_size(const envoy_type_matcher_v3_RegexMatcher_GoogleRE2* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_type_matcher_v3_RegexMatcher_GoogleRE2_clear_max_program_size(const envoy_type_matcher_v3_RegexMatcher_GoogleRE2* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_type_matcher_v3_RegexMatcher_GoogleRE2_has_max_program_size(const envoy_type_matcher_v3_RegexMatcher_GoogleRE2 *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_type_matcher_v3_RegexMatcher_GoogleRE2_max_program_size(const envoy_type_matcher_v3_RegexMatcher_GoogleRE2* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_UInt32Value*);
}
@@ -133,7 +157,7 @@ UPB_INLINE void envoy_type_matcher_v3_RegexMatcher_GoogleRE2_set_max_program_siz
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_type_matcher_v3_RegexMatcher_GoogleRE2_mutable_max_program_size(envoy_type_matcher_v3_RegexMatcher_GoogleRE2 *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_type_matcher_v3_RegexMatcher_GoogleRE2_mutable_max_program_size(envoy_type_matcher_v3_RegexMatcher_GoogleRE2* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_type_matcher_v3_RegexMatcher_GoogleRE2_max_program_size(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -168,25 +192,37 @@ UPB_INLINE envoy_type_matcher_v3_RegexMatchAndSubstitute* envoy_type_matcher_v3_
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_RegexMatchAndSubstitute_serialize(const envoy_type_matcher_v3_RegexMatchAndSubstitute* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_RegexMatchAndSubstitute_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_RegexMatchAndSubstitute_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_RegexMatchAndSubstitute_serialize_ex(const envoy_type_matcher_v3_RegexMatchAndSubstitute* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_RegexMatchAndSubstitute_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_RegexMatchAndSubstitute_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_type_matcher_v3_RegexMatchAndSubstitute_has_pattern(const envoy_type_matcher_v3_RegexMatchAndSubstitute* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_type_matcher_v3_RegexMatchAndSubstitute_clear_pattern(const envoy_type_matcher_v3_RegexMatchAndSubstitute* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_type_matcher_v3_RegexMatchAndSubstitute_has_pattern(const envoy_type_matcher_v3_RegexMatchAndSubstitute *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const envoy_type_matcher_v3_RegexMatcher* envoy_type_matcher_v3_RegexMatchAndSubstitute_pattern(const envoy_type_matcher_v3_RegexMatchAndSubstitute* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const envoy_type_matcher_v3_RegexMatcher*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const envoy_type_matcher_v3_RegexMatcher*);
+}
+UPB_INLINE void envoy_type_matcher_v3_RegexMatchAndSubstitute_clear_substitution(const envoy_type_matcher_v3_RegexMatchAndSubstitute* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_type_matcher_v3_RegexMatchAndSubstitute_substitution(const envoy_type_matcher_v3_RegexMatchAndSubstitute* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
UPB_INLINE void envoy_type_matcher_v3_RegexMatchAndSubstitute_set_pattern(envoy_type_matcher_v3_RegexMatchAndSubstitute *msg, envoy_type_matcher_v3_RegexMatcher* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), envoy_type_matcher_v3_RegexMatcher*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), envoy_type_matcher_v3_RegexMatcher*) = value;
}
-UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher* envoy_type_matcher_v3_RegexMatchAndSubstitute_mutable_pattern(envoy_type_matcher_v3_RegexMatchAndSubstitute *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher* envoy_type_matcher_v3_RegexMatchAndSubstitute_mutable_pattern(envoy_type_matcher_v3_RegexMatchAndSubstitute* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_RegexMatcher* sub = (struct envoy_type_matcher_v3_RegexMatcher*)envoy_type_matcher_v3_RegexMatchAndSubstitute_pattern(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_RegexMatcher*)_upb_Message_New(&envoy_type_matcher_v3_RegexMatcher_msginit, arena);
@@ -196,7 +232,7 @@ UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher* envoy_type_matcher_v3_Rege
return sub;
}
UPB_INLINE void envoy_type_matcher_v3_RegexMatchAndSubstitute_set_substitution(envoy_type_matcher_v3_RegexMatchAndSubstitute *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
extern const upb_MiniTable_File envoy_type_matcher_v3_regex_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c
index 25e1bd314b..8b702c4508 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c
@@ -21,18 +21,18 @@ static const upb_MiniTable_Sub envoy_type_matcher_v3_StringMatcher_submsgs[1] =
};
static const upb_MiniTable_Field envoy_type_matcher_v3_StringMatcher__fields[6] = {
- {1, UPB_SIZE(4, 8), UPB_SIZE(-13, -25), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), UPB_SIZE(-13, -25), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), UPB_SIZE(-13, -25), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(4, 8), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(4, 8), UPB_SIZE(-13, -25), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_StringMatcher_msginit = {
&envoy_type_matcher_v3_StringMatcher_submsgs[0],
&envoy_type_matcher_v3_StringMatcher__fields[0],
- UPB_SIZE(16, 32), 6, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 6, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub envoy_type_matcher_v3_ListStringMatcher_submsgs[1] = {
@@ -40,13 +40,13 @@ static const upb_MiniTable_Sub envoy_type_matcher_v3_ListStringMatcher_submsgs[1
};
static const upb_MiniTable_Field envoy_type_matcher_v3_ListStringMatcher__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_ListStringMatcher_msginit = {
&envoy_type_matcher_v3_ListStringMatcher_submsgs[0],
&envoy_type_matcher_v3_ListStringMatcher__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h
index 5556a3bd8a..332e2f145a 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h
@@ -56,11 +56,15 @@ UPB_INLINE envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_StringMatc
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_StringMatcher_serialize(const envoy_type_matcher_v3_StringMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_StringMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_StringMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_StringMatcher_serialize_ex(const envoy_type_matcher_v3_StringMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_StringMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_StringMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_type_matcher_v3_StringMatcher_match_pattern_exact = 1,
@@ -70,35 +74,74 @@ typedef enum {
envoy_type_matcher_v3_StringMatcher_match_pattern_contains = 7,
envoy_type_matcher_v3_StringMatcher_match_pattern_NOT_SET = 0
} envoy_type_matcher_v3_StringMatcher_match_pattern_oneofcases;
-UPB_INLINE envoy_type_matcher_v3_StringMatcher_match_pattern_oneofcases envoy_type_matcher_v3_StringMatcher_match_pattern_case(const envoy_type_matcher_v3_StringMatcher* msg) { return (envoy_type_matcher_v3_StringMatcher_match_pattern_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool envoy_type_matcher_v3_StringMatcher_has_exact(const envoy_type_matcher_v3_StringMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 1; }
-UPB_INLINE upb_StringView envoy_type_matcher_v3_StringMatcher_exact(const envoy_type_matcher_v3_StringMatcher *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(12, 24), 1, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_type_matcher_v3_StringMatcher_has_prefix(const envoy_type_matcher_v3_StringMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE upb_StringView envoy_type_matcher_v3_StringMatcher_prefix(const envoy_type_matcher_v3_StringMatcher *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(12, 24), 2, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_type_matcher_v3_StringMatcher_has_suffix(const envoy_type_matcher_v3_StringMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE upb_StringView envoy_type_matcher_v3_StringMatcher_suffix(const envoy_type_matcher_v3_StringMatcher *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(12, 24), 3, upb_StringView_FromString("")); }
-UPB_INLINE bool envoy_type_matcher_v3_StringMatcher_has_safe_regex(const envoy_type_matcher_v3_StringMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 5; }
-UPB_INLINE const struct envoy_type_matcher_v3_RegexMatcher* envoy_type_matcher_v3_StringMatcher_safe_regex(const envoy_type_matcher_v3_StringMatcher *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(4, 8), UPB_SIZE(12, 24), 5, NULL); }
+UPB_INLINE envoy_type_matcher_v3_StringMatcher_match_pattern_oneofcases envoy_type_matcher_v3_StringMatcher_match_pattern_case(const envoy_type_matcher_v3_StringMatcher* msg) {
+ return (envoy_type_matcher_v3_StringMatcher_match_pattern_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool envoy_type_matcher_v3_StringMatcher_has_exact(const envoy_type_matcher_v3_StringMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 1;
+}
+UPB_INLINE void envoy_type_matcher_v3_StringMatcher_clear_exact(const envoy_type_matcher_v3_StringMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_type_matcher_v3_StringMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_type_matcher_v3_StringMatcher_exact(const envoy_type_matcher_v3_StringMatcher* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 1, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_type_matcher_v3_StringMatcher_has_prefix(const envoy_type_matcher_v3_StringMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void envoy_type_matcher_v3_StringMatcher_clear_prefix(const envoy_type_matcher_v3_StringMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_type_matcher_v3_StringMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_type_matcher_v3_StringMatcher_prefix(const envoy_type_matcher_v3_StringMatcher* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 2, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_type_matcher_v3_StringMatcher_has_suffix(const envoy_type_matcher_v3_StringMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void envoy_type_matcher_v3_StringMatcher_clear_suffix(const envoy_type_matcher_v3_StringMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_type_matcher_v3_StringMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_type_matcher_v3_StringMatcher_suffix(const envoy_type_matcher_v3_StringMatcher* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 3, upb_StringView_FromString(""));
+}
+UPB_INLINE bool envoy_type_matcher_v3_StringMatcher_has_safe_regex(const envoy_type_matcher_v3_StringMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void envoy_type_matcher_v3_StringMatcher_clear_safe_regex(const envoy_type_matcher_v3_StringMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), envoy_type_matcher_v3_StringMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_RegexMatcher* envoy_type_matcher_v3_StringMatcher_safe_regex(const envoy_type_matcher_v3_StringMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 5, NULL);
+}
+UPB_INLINE void envoy_type_matcher_v3_StringMatcher_clear_ignore_case(const envoy_type_matcher_v3_StringMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
+}
UPB_INLINE bool envoy_type_matcher_v3_StringMatcher_ignore_case(const envoy_type_matcher_v3_StringMatcher* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
-UPB_INLINE bool envoy_type_matcher_v3_StringMatcher_has_contains(const envoy_type_matcher_v3_StringMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 7; }
-UPB_INLINE upb_StringView envoy_type_matcher_v3_StringMatcher_contains(const envoy_type_matcher_v3_StringMatcher *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(12, 24), 7, upb_StringView_FromString("")); }
+UPB_INLINE bool envoy_type_matcher_v3_StringMatcher_has_contains(const envoy_type_matcher_v3_StringMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 7;
+}
+UPB_INLINE void envoy_type_matcher_v3_StringMatcher_clear_contains(const envoy_type_matcher_v3_StringMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), envoy_type_matcher_v3_StringMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_type_matcher_v3_StringMatcher_contains(const envoy_type_matcher_v3_StringMatcher* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 7, upb_StringView_FromString(""));
+}
UPB_INLINE void envoy_type_matcher_v3_StringMatcher_set_exact(envoy_type_matcher_v3_StringMatcher *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(12, 24), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 1);
}
UPB_INLINE void envoy_type_matcher_v3_StringMatcher_set_prefix(envoy_type_matcher_v3_StringMatcher *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 2);
}
UPB_INLINE void envoy_type_matcher_v3_StringMatcher_set_suffix(envoy_type_matcher_v3_StringMatcher *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 3);
}
UPB_INLINE void envoy_type_matcher_v3_StringMatcher_set_safe_regex(envoy_type_matcher_v3_StringMatcher *msg, struct envoy_type_matcher_v3_RegexMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(12, 24), 5);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_RegexMatcher*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 5);
}
-UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher* envoy_type_matcher_v3_StringMatcher_mutable_safe_regex(envoy_type_matcher_v3_StringMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_RegexMatcher* envoy_type_matcher_v3_StringMatcher_mutable_safe_regex(envoy_type_matcher_v3_StringMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_RegexMatcher* sub = (struct envoy_type_matcher_v3_RegexMatcher*)envoy_type_matcher_v3_StringMatcher_safe_regex(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_RegexMatcher*)_upb_Message_New(&envoy_type_matcher_v3_RegexMatcher_msginit, arena);
@@ -111,7 +154,7 @@ UPB_INLINE void envoy_type_matcher_v3_StringMatcher_set_ignore_case(envoy_type_m
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = value;
}
UPB_INLINE void envoy_type_matcher_v3_StringMatcher_set_contains(envoy_type_matcher_v3_StringMatcher *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(12, 24), 7);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 7);
}
/* envoy.type.matcher.v3.ListStringMatcher */
@@ -139,25 +182,35 @@ UPB_INLINE envoy_type_matcher_v3_ListStringMatcher* envoy_type_matcher_v3_ListSt
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_ListStringMatcher_serialize(const envoy_type_matcher_v3_ListStringMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_ListStringMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_ListStringMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_ListStringMatcher_serialize_ex(const envoy_type_matcher_v3_ListStringMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_ListStringMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_ListStringMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_type_matcher_v3_ListStringMatcher_has_patterns(const envoy_type_matcher_v3_ListStringMatcher* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void envoy_type_matcher_v3_ListStringMatcher_clear_patterns(const envoy_type_matcher_v3_ListStringMatcher* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const envoy_type_matcher_v3_StringMatcher* const* envoy_type_matcher_v3_ListStringMatcher_patterns(const envoy_type_matcher_v3_ListStringMatcher* msg, size_t* len) {
+ return (const envoy_type_matcher_v3_StringMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool envoy_type_matcher_v3_ListStringMatcher_has_patterns(const envoy_type_matcher_v3_ListStringMatcher *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const envoy_type_matcher_v3_StringMatcher* const* envoy_type_matcher_v3_ListStringMatcher_patterns(const envoy_type_matcher_v3_ListStringMatcher *msg, size_t *len) { return (const envoy_type_matcher_v3_StringMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE envoy_type_matcher_v3_StringMatcher** envoy_type_matcher_v3_ListStringMatcher_mutable_patterns(envoy_type_matcher_v3_ListStringMatcher *msg, size_t *len) {
+UPB_INLINE envoy_type_matcher_v3_StringMatcher** envoy_type_matcher_v3_ListStringMatcher_mutable_patterns(envoy_type_matcher_v3_ListStringMatcher* msg, size_t* len) {
return (envoy_type_matcher_v3_StringMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE envoy_type_matcher_v3_StringMatcher** envoy_type_matcher_v3_ListStringMatcher_resize_patterns(envoy_type_matcher_v3_ListStringMatcher *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_type_matcher_v3_StringMatcher** envoy_type_matcher_v3_ListStringMatcher_resize_patterns(envoy_type_matcher_v3_ListStringMatcher* msg, size_t len, upb_Arena* arena) {
return (envoy_type_matcher_v3_StringMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_ListStringMatcher_add_patterns(envoy_type_matcher_v3_ListStringMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_ListStringMatcher_add_patterns(envoy_type_matcher_v3_ListStringMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StringMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c
index a332a28b4e..4441fa487b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c
@@ -22,24 +22,24 @@ static const upb_MiniTable_Sub envoy_type_matcher_v3_StructMatcher_submsgs[2] =
};
static const upb_MiniTable_Field envoy_type_matcher_v3_StructMatcher__fields[2] = {
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 16), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_StructMatcher_msginit = {
&envoy_type_matcher_v3_StructMatcher_submsgs[0],
&envoy_type_matcher_v3_StructMatcher__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Field envoy_type_matcher_v3_StructMatcher_PathSegment__fields[1] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_StructMatcher_PathSegment_msginit = {
NULL,
&envoy_type_matcher_v3_StructMatcher_PathSegment__fields[0],
- UPB_SIZE(16, 32), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h
index 148621905c..e1f8e55843 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h
@@ -56,37 +56,52 @@ UPB_INLINE envoy_type_matcher_v3_StructMatcher* envoy_type_matcher_v3_StructMatc
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_StructMatcher_serialize(const envoy_type_matcher_v3_StructMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_StructMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_StructMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_StructMatcher_serialize_ex(const envoy_type_matcher_v3_StructMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_StructMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_StructMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_type_matcher_v3_StructMatcher_has_path(const envoy_type_matcher_v3_StructMatcher* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void envoy_type_matcher_v3_StructMatcher_clear_path(const envoy_type_matcher_v3_StructMatcher* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const envoy_type_matcher_v3_StructMatcher_PathSegment* const* envoy_type_matcher_v3_StructMatcher_path(const envoy_type_matcher_v3_StructMatcher* msg, size_t* len) {
+ return (const envoy_type_matcher_v3_StructMatcher_PathSegment* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool envoy_type_matcher_v3_StructMatcher_has_value(const envoy_type_matcher_v3_StructMatcher* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_type_matcher_v3_StructMatcher_clear_value(const envoy_type_matcher_v3_StructMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_type_matcher_v3_StructMatcher_has_path(const envoy_type_matcher_v3_StructMatcher *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const envoy_type_matcher_v3_StructMatcher_PathSegment* const* envoy_type_matcher_v3_StructMatcher_path(const envoy_type_matcher_v3_StructMatcher *msg, size_t *len) { return (const envoy_type_matcher_v3_StructMatcher_PathSegment* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
-UPB_INLINE bool envoy_type_matcher_v3_StructMatcher_has_value(const envoy_type_matcher_v3_StructMatcher *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_matcher_v3_ValueMatcher* envoy_type_matcher_v3_StructMatcher_value(const envoy_type_matcher_v3_StructMatcher* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_matcher_v3_ValueMatcher*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_type_matcher_v3_ValueMatcher*);
}
-UPB_INLINE envoy_type_matcher_v3_StructMatcher_PathSegment** envoy_type_matcher_v3_StructMatcher_mutable_path(envoy_type_matcher_v3_StructMatcher *msg, size_t *len) {
- return (envoy_type_matcher_v3_StructMatcher_PathSegment**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
+UPB_INLINE envoy_type_matcher_v3_StructMatcher_PathSegment** envoy_type_matcher_v3_StructMatcher_mutable_path(envoy_type_matcher_v3_StructMatcher* msg, size_t* len) {
+ return (envoy_type_matcher_v3_StructMatcher_PathSegment**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE envoy_type_matcher_v3_StructMatcher_PathSegment** envoy_type_matcher_v3_StructMatcher_resize_path(envoy_type_matcher_v3_StructMatcher *msg, size_t len, upb_Arena *arena) {
- return (envoy_type_matcher_v3_StructMatcher_PathSegment**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE envoy_type_matcher_v3_StructMatcher_PathSegment** envoy_type_matcher_v3_StructMatcher_resize_path(envoy_type_matcher_v3_StructMatcher* msg, size_t len, upb_Arena* arena) {
+ return (envoy_type_matcher_v3_StructMatcher_PathSegment**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_type_matcher_v3_StructMatcher_PathSegment* envoy_type_matcher_v3_StructMatcher_add_path(envoy_type_matcher_v3_StructMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StructMatcher_PathSegment* envoy_type_matcher_v3_StructMatcher_add_path(envoy_type_matcher_v3_StructMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StructMatcher_PathSegment* sub = (struct envoy_type_matcher_v3_StructMatcher_PathSegment*)_upb_Message_New(&envoy_type_matcher_v3_StructMatcher_PathSegment_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void envoy_type_matcher_v3_StructMatcher_set_value(envoy_type_matcher_v3_StructMatcher *msg, struct envoy_type_matcher_v3_ValueMatcher* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_matcher_v3_ValueMatcher*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_type_matcher_v3_ValueMatcher*) = value;
}
-UPB_INLINE struct envoy_type_matcher_v3_ValueMatcher* envoy_type_matcher_v3_StructMatcher_mutable_value(envoy_type_matcher_v3_StructMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_ValueMatcher* envoy_type_matcher_v3_StructMatcher_mutable_value(envoy_type_matcher_v3_StructMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_ValueMatcher* sub = (struct envoy_type_matcher_v3_ValueMatcher*)envoy_type_matcher_v3_StructMatcher_value(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_ValueMatcher*)_upb_Message_New(&envoy_type_matcher_v3_ValueMatcher_msginit, arena);
@@ -121,23 +136,35 @@ UPB_INLINE envoy_type_matcher_v3_StructMatcher_PathSegment* envoy_type_matcher_v
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_StructMatcher_PathSegment_serialize(const envoy_type_matcher_v3_StructMatcher_PathSegment* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_StructMatcher_PathSegment_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_StructMatcher_PathSegment_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_StructMatcher_PathSegment_serialize_ex(const envoy_type_matcher_v3_StructMatcher_PathSegment* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_StructMatcher_PathSegment_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_StructMatcher_PathSegment_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_type_matcher_v3_StructMatcher_PathSegment_segment_key = 1,
envoy_type_matcher_v3_StructMatcher_PathSegment_segment_NOT_SET = 0
} envoy_type_matcher_v3_StructMatcher_PathSegment_segment_oneofcases;
-UPB_INLINE envoy_type_matcher_v3_StructMatcher_PathSegment_segment_oneofcases envoy_type_matcher_v3_StructMatcher_PathSegment_segment_case(const envoy_type_matcher_v3_StructMatcher_PathSegment* msg) { return (envoy_type_matcher_v3_StructMatcher_PathSegment_segment_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool envoy_type_matcher_v3_StructMatcher_PathSegment_has_key(const envoy_type_matcher_v3_StructMatcher_PathSegment *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE upb_StringView envoy_type_matcher_v3_StructMatcher_PathSegment_key(const envoy_type_matcher_v3_StructMatcher_PathSegment *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, upb_StringView_FromString("")); }
+UPB_INLINE envoy_type_matcher_v3_StructMatcher_PathSegment_segment_oneofcases envoy_type_matcher_v3_StructMatcher_PathSegment_segment_case(const envoy_type_matcher_v3_StructMatcher_PathSegment* msg) {
+ return (envoy_type_matcher_v3_StructMatcher_PathSegment_segment_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_type_matcher_v3_StructMatcher_PathSegment_has_key(const envoy_type_matcher_v3_StructMatcher_PathSegment* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_type_matcher_v3_StructMatcher_PathSegment_clear_key(const envoy_type_matcher_v3_StructMatcher_PathSegment* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_type_matcher_v3_StructMatcher_PathSegment_segment_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_type_matcher_v3_StructMatcher_PathSegment_key(const envoy_type_matcher_v3_StructMatcher_PathSegment* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, upb_StringView_FromString(""));
+}
UPB_INLINE void envoy_type_matcher_v3_StructMatcher_PathSegment_set_key(envoy_type_matcher_v3_StructMatcher_PathSegment *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
extern const upb_MiniTable_File envoy_type_matcher_v3_struct_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c
index 24cb2eb880..28b680088b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c
@@ -18,31 +18,31 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_type_matcher_v3_ValueMatcher_submsgs[4] = {
+ {.submsg = &envoy_type_matcher_v3_ValueMatcher_NullMatch_msginit},
{.submsg = &envoy_type_matcher_v3_DoubleMatcher_msginit},
- {.submsg = &envoy_type_matcher_v3_ListMatcher_msginit},
{.submsg = &envoy_type_matcher_v3_StringMatcher_msginit},
- {.submsg = &envoy_type_matcher_v3_ValueMatcher_NullMatch_msginit},
+ {.submsg = &envoy_type_matcher_v3_ListMatcher_msginit},
};
static const upb_MiniTable_Field envoy_type_matcher_v3_ValueMatcher__fields[6] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_ValueMatcher_msginit = {
&envoy_type_matcher_v3_ValueMatcher_submsgs[0],
&envoy_type_matcher_v3_ValueMatcher__fields[0],
- UPB_SIZE(8, 16), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(8, 16), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
const upb_MiniTable envoy_type_matcher_v3_ValueMatcher_NullMatch_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub envoy_type_matcher_v3_ListMatcher_submsgs[1] = {
@@ -50,13 +50,13 @@ static const upb_MiniTable_Sub envoy_type_matcher_v3_ListMatcher_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_type_matcher_v3_ListMatcher__fields[1] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_matcher_v3_ListMatcher_msginit = {
&envoy_type_matcher_v3_ListMatcher_submsgs[0],
&envoy_type_matcher_v3_ListMatcher__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[3] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h
index a075302e79..9f12e58312 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h
@@ -61,11 +61,15 @@ UPB_INLINE envoy_type_matcher_v3_ValueMatcher* envoy_type_matcher_v3_ValueMatche
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_ValueMatcher_serialize(const envoy_type_matcher_v3_ValueMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_ValueMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_ValueMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_ValueMatcher_serialize_ex(const envoy_type_matcher_v3_ValueMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_ValueMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_ValueMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_type_matcher_v3_ValueMatcher_match_pattern_null_match = 1,
@@ -76,25 +80,68 @@ typedef enum {
envoy_type_matcher_v3_ValueMatcher_match_pattern_list_match = 6,
envoy_type_matcher_v3_ValueMatcher_match_pattern_NOT_SET = 0
} envoy_type_matcher_v3_ValueMatcher_match_pattern_oneofcases;
-UPB_INLINE envoy_type_matcher_v3_ValueMatcher_match_pattern_oneofcases envoy_type_matcher_v3_ValueMatcher_match_pattern_case(const envoy_type_matcher_v3_ValueMatcher* msg) { return (envoy_type_matcher_v3_ValueMatcher_match_pattern_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_has_null_match(const envoy_type_matcher_v3_ValueMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_type_matcher_v3_ValueMatcher_NullMatch* envoy_type_matcher_v3_ValueMatcher_null_match(const envoy_type_matcher_v3_ValueMatcher *msg) { return UPB_READ_ONEOF(msg, const envoy_type_matcher_v3_ValueMatcher_NullMatch*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_has_double_match(const envoy_type_matcher_v3_ValueMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const struct envoy_type_matcher_v3_DoubleMatcher* envoy_type_matcher_v3_ValueMatcher_double_match(const envoy_type_matcher_v3_ValueMatcher *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_DoubleMatcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_has_string_match(const envoy_type_matcher_v3_ValueMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_ValueMatcher_string_match(const envoy_type_matcher_v3_ValueMatcher *msg) { return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
-UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_has_bool_match(const envoy_type_matcher_v3_ValueMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 4; }
-UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_bool_match(const envoy_type_matcher_v3_ValueMatcher *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 4, false); }
-UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_has_present_match(const envoy_type_matcher_v3_ValueMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 5; }
-UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_present_match(const envoy_type_matcher_v3_ValueMatcher *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 5, false); }
-UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_has_list_match(const envoy_type_matcher_v3_ValueMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 6; }
-UPB_INLINE const envoy_type_matcher_v3_ListMatcher* envoy_type_matcher_v3_ValueMatcher_list_match(const envoy_type_matcher_v3_ValueMatcher *msg) { return UPB_READ_ONEOF(msg, const envoy_type_matcher_v3_ListMatcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 6, NULL); }
+UPB_INLINE envoy_type_matcher_v3_ValueMatcher_match_pattern_oneofcases envoy_type_matcher_v3_ValueMatcher_match_pattern_case(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ return (envoy_type_matcher_v3_ValueMatcher_match_pattern_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_has_null_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_type_matcher_v3_ValueMatcher_clear_null_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_matcher_v3_ValueMatcher_NullMatch*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_matcher_v3_ValueMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE const envoy_type_matcher_v3_ValueMatcher_NullMatch* envoy_type_matcher_v3_ValueMatcher_null_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_matcher_v3_ValueMatcher_NullMatch*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_has_double_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_type_matcher_v3_ValueMatcher_clear_double_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_DoubleMatcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_matcher_v3_ValueMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_DoubleMatcher* envoy_type_matcher_v3_ValueMatcher_double_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_DoubleMatcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_has_string_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_type_matcher_v3_ValueMatcher_clear_string_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_matcher_v3_ValueMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_ValueMatcher_string_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_has_bool_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_type_matcher_v3_ValueMatcher_clear_bool_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_matcher_v3_ValueMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_bool_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, false);
+}
+UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_has_present_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_type_matcher_v3_ValueMatcher_clear_present_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_matcher_v3_ValueMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_present_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 5, false);
+}
+UPB_INLINE bool envoy_type_matcher_v3_ValueMatcher_has_list_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 6;
+}
+UPB_INLINE void envoy_type_matcher_v3_ValueMatcher_clear_list_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_matcher_v3_ListMatcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_matcher_v3_ValueMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE const envoy_type_matcher_v3_ListMatcher* envoy_type_matcher_v3_ValueMatcher_list_match(const envoy_type_matcher_v3_ValueMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_matcher_v3_ListMatcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 6, NULL);
+}
UPB_INLINE void envoy_type_matcher_v3_ValueMatcher_set_null_match(envoy_type_matcher_v3_ValueMatcher *msg, envoy_type_matcher_v3_ValueMatcher_NullMatch* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_matcher_v3_ValueMatcher_NullMatch*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_type_matcher_v3_ValueMatcher_NullMatch*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_type_matcher_v3_ValueMatcher_NullMatch* envoy_type_matcher_v3_ValueMatcher_mutable_null_match(envoy_type_matcher_v3_ValueMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_ValueMatcher_NullMatch* envoy_type_matcher_v3_ValueMatcher_mutable_null_match(envoy_type_matcher_v3_ValueMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_ValueMatcher_NullMatch* sub = (struct envoy_type_matcher_v3_ValueMatcher_NullMatch*)envoy_type_matcher_v3_ValueMatcher_null_match(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_ValueMatcher_NullMatch*)_upb_Message_New(&envoy_type_matcher_v3_ValueMatcher_NullMatch_msginit, arena);
@@ -104,9 +151,9 @@ UPB_INLINE struct envoy_type_matcher_v3_ValueMatcher_NullMatch* envoy_type_match
return sub;
}
UPB_INLINE void envoy_type_matcher_v3_ValueMatcher_set_double_match(envoy_type_matcher_v3_ValueMatcher *msg, struct envoy_type_matcher_v3_DoubleMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_DoubleMatcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_DoubleMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_type_matcher_v3_DoubleMatcher* envoy_type_matcher_v3_ValueMatcher_mutable_double_match(envoy_type_matcher_v3_ValueMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_DoubleMatcher* envoy_type_matcher_v3_ValueMatcher_mutable_double_match(envoy_type_matcher_v3_ValueMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_DoubleMatcher* sub = (struct envoy_type_matcher_v3_DoubleMatcher*)envoy_type_matcher_v3_ValueMatcher_double_match(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_DoubleMatcher*)_upb_Message_New(&envoy_type_matcher_v3_DoubleMatcher_msginit, arena);
@@ -116,9 +163,9 @@ UPB_INLINE struct envoy_type_matcher_v3_DoubleMatcher* envoy_type_matcher_v3_Val
return sub;
}
UPB_INLINE void envoy_type_matcher_v3_ValueMatcher_set_string_match(envoy_type_matcher_v3_ValueMatcher *msg, struct envoy_type_matcher_v3_StringMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, struct envoy_type_matcher_v3_StringMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_ValueMatcher_mutable_string_match(envoy_type_matcher_v3_ValueMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_ValueMatcher_mutable_string_match(envoy_type_matcher_v3_ValueMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_StringMatcher* sub = (struct envoy_type_matcher_v3_StringMatcher*)envoy_type_matcher_v3_ValueMatcher_string_match(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_StringMatcher*)_upb_Message_New(&envoy_type_matcher_v3_StringMatcher_msginit, arena);
@@ -128,15 +175,15 @@ UPB_INLINE struct envoy_type_matcher_v3_StringMatcher* envoy_type_matcher_v3_Val
return sub;
}
UPB_INLINE void envoy_type_matcher_v3_ValueMatcher_set_bool_match(envoy_type_matcher_v3_ValueMatcher *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 4);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
UPB_INLINE void envoy_type_matcher_v3_ValueMatcher_set_present_match(envoy_type_matcher_v3_ValueMatcher *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 5);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 5);
}
UPB_INLINE void envoy_type_matcher_v3_ValueMatcher_set_list_match(envoy_type_matcher_v3_ValueMatcher *msg, envoy_type_matcher_v3_ListMatcher* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_matcher_v3_ListMatcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 6);
+ UPB_WRITE_ONEOF(msg, envoy_type_matcher_v3_ListMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 6);
}
-UPB_INLINE struct envoy_type_matcher_v3_ListMatcher* envoy_type_matcher_v3_ValueMatcher_mutable_list_match(envoy_type_matcher_v3_ValueMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_ListMatcher* envoy_type_matcher_v3_ValueMatcher_mutable_list_match(envoy_type_matcher_v3_ValueMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_ListMatcher* sub = (struct envoy_type_matcher_v3_ListMatcher*)envoy_type_matcher_v3_ValueMatcher_list_match(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_ListMatcher*)_upb_Message_New(&envoy_type_matcher_v3_ListMatcher_msginit, arena);
@@ -171,11 +218,15 @@ UPB_INLINE envoy_type_matcher_v3_ValueMatcher_NullMatch* envoy_type_matcher_v3_V
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_ValueMatcher_NullMatch_serialize(const envoy_type_matcher_v3_ValueMatcher_NullMatch* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_ValueMatcher_NullMatch_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_ValueMatcher_NullMatch_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_ValueMatcher_NullMatch_serialize_ex(const envoy_type_matcher_v3_ValueMatcher_NullMatch* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_ValueMatcher_NullMatch_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_ValueMatcher_NullMatch_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -204,25 +255,37 @@ UPB_INLINE envoy_type_matcher_v3_ListMatcher* envoy_type_matcher_v3_ListMatcher_
return ret;
}
UPB_INLINE char* envoy_type_matcher_v3_ListMatcher_serialize(const envoy_type_matcher_v3_ListMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_ListMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_ListMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_matcher_v3_ListMatcher_serialize_ex(const envoy_type_matcher_v3_ListMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_matcher_v3_ListMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_matcher_v3_ListMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_type_matcher_v3_ListMatcher_match_pattern_one_of = 1,
envoy_type_matcher_v3_ListMatcher_match_pattern_NOT_SET = 0
} envoy_type_matcher_v3_ListMatcher_match_pattern_oneofcases;
-UPB_INLINE envoy_type_matcher_v3_ListMatcher_match_pattern_oneofcases envoy_type_matcher_v3_ListMatcher_match_pattern_case(const envoy_type_matcher_v3_ListMatcher* msg) { return (envoy_type_matcher_v3_ListMatcher_match_pattern_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_type_matcher_v3_ListMatcher_has_one_of(const envoy_type_matcher_v3_ListMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_type_matcher_v3_ValueMatcher* envoy_type_matcher_v3_ListMatcher_one_of(const envoy_type_matcher_v3_ListMatcher *msg) { return UPB_READ_ONEOF(msg, const envoy_type_matcher_v3_ValueMatcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
+UPB_INLINE envoy_type_matcher_v3_ListMatcher_match_pattern_oneofcases envoy_type_matcher_v3_ListMatcher_match_pattern_case(const envoy_type_matcher_v3_ListMatcher* msg) {
+ return (envoy_type_matcher_v3_ListMatcher_match_pattern_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_type_matcher_v3_ListMatcher_has_one_of(const envoy_type_matcher_v3_ListMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_type_matcher_v3_ListMatcher_clear_one_of(const envoy_type_matcher_v3_ListMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_matcher_v3_ValueMatcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_matcher_v3_ListMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE const envoy_type_matcher_v3_ValueMatcher* envoy_type_matcher_v3_ListMatcher_one_of(const envoy_type_matcher_v3_ListMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_matcher_v3_ValueMatcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
UPB_INLINE void envoy_type_matcher_v3_ListMatcher_set_one_of(envoy_type_matcher_v3_ListMatcher *msg, envoy_type_matcher_v3_ValueMatcher* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_matcher_v3_ValueMatcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_type_matcher_v3_ValueMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_type_matcher_v3_ValueMatcher* envoy_type_matcher_v3_ListMatcher_mutable_one_of(envoy_type_matcher_v3_ListMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_matcher_v3_ValueMatcher* envoy_type_matcher_v3_ListMatcher_mutable_one_of(envoy_type_matcher_v3_ListMatcher* msg, upb_Arena* arena) {
struct envoy_type_matcher_v3_ValueMatcher* sub = (struct envoy_type_matcher_v3_ValueMatcher*)envoy_type_matcher_v3_ListMatcher_one_of(msg);
if (sub == NULL) {
sub = (struct envoy_type_matcher_v3_ValueMatcher*)_upb_Message_New(&envoy_type_matcher_v3_ValueMatcher_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c
index adebdb06d4..3eee584cea 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c
@@ -20,68 +20,68 @@ static const upb_MiniTable_Sub envoy_type_metadata_v3_MetadataKey_submsgs[1] = {
};
static const upb_MiniTable_Field envoy_type_metadata_v3_MetadataKey__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_metadata_v3_MetadataKey_msginit = {
&envoy_type_metadata_v3_MetadataKey_submsgs[0],
&envoy_type_metadata_v3_MetadataKey__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_type_metadata_v3_MetadataKey_PathSegment__fields[1] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_metadata_v3_MetadataKey_PathSegment_msginit = {
NULL,
&envoy_type_metadata_v3_MetadataKey_PathSegment__fields[0],
- UPB_SIZE(16, 32), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(16, 24), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub envoy_type_metadata_v3_MetadataKind_submsgs[4] = {
- {.submsg = &envoy_type_metadata_v3_MetadataKind_Cluster_msginit},
- {.submsg = &envoy_type_metadata_v3_MetadataKind_Host_msginit},
{.submsg = &envoy_type_metadata_v3_MetadataKind_Request_msginit},
{.submsg = &envoy_type_metadata_v3_MetadataKind_Route_msginit},
+ {.submsg = &envoy_type_metadata_v3_MetadataKind_Cluster_msginit},
+ {.submsg = &envoy_type_metadata_v3_MetadataKind_Host_msginit},
};
static const upb_MiniTable_Field envoy_type_metadata_v3_MetadataKind__fields[4] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_metadata_v3_MetadataKind_msginit = {
&envoy_type_metadata_v3_MetadataKind_submsgs[0],
&envoy_type_metadata_v3_MetadataKind__fields[0],
- UPB_SIZE(8, 16), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(8, 16), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
const upb_MiniTable envoy_type_metadata_v3_MetadataKind_Request_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
const upb_MiniTable envoy_type_metadata_v3_MetadataKind_Route_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
const upb_MiniTable envoy_type_metadata_v3_MetadataKind_Cluster_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
const upb_MiniTable envoy_type_metadata_v3_MetadataKind_Host_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable *messages_layout[7] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h
index f1ad0fa964..3623eb41e9 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h
@@ -69,31 +69,44 @@ UPB_INLINE envoy_type_metadata_v3_MetadataKey* envoy_type_metadata_v3_MetadataKe
return ret;
}
UPB_INLINE char* envoy_type_metadata_v3_MetadataKey_serialize(const envoy_type_metadata_v3_MetadataKey* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_metadata_v3_MetadataKey_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_metadata_v3_MetadataKey_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_metadata_v3_MetadataKey_serialize_ex(const envoy_type_metadata_v3_MetadataKey* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_metadata_v3_MetadataKey_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_metadata_v3_MetadataKey_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_metadata_v3_MetadataKey_clear_key(const envoy_type_metadata_v3_MetadataKey* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_type_metadata_v3_MetadataKey_key(const envoy_type_metadata_v3_MetadataKey* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
-UPB_INLINE bool envoy_type_metadata_v3_MetadataKey_has_path(const envoy_type_metadata_v3_MetadataKey *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const envoy_type_metadata_v3_MetadataKey_PathSegment* const* envoy_type_metadata_v3_MetadataKey_path(const envoy_type_metadata_v3_MetadataKey *msg, size_t *len) { return (const envoy_type_metadata_v3_MetadataKey_PathSegment* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
+UPB_INLINE bool envoy_type_metadata_v3_MetadataKey_has_path(const envoy_type_metadata_v3_MetadataKey* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void envoy_type_metadata_v3_MetadataKey_clear_path(const envoy_type_metadata_v3_MetadataKey* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const envoy_type_metadata_v3_MetadataKey_PathSegment* const* envoy_type_metadata_v3_MetadataKey_path(const envoy_type_metadata_v3_MetadataKey* msg, size_t* len) {
+ return (const envoy_type_metadata_v3_MetadataKey_PathSegment* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
UPB_INLINE void envoy_type_metadata_v3_MetadataKey_set_key(envoy_type_metadata_v3_MetadataKey *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
-UPB_INLINE envoy_type_metadata_v3_MetadataKey_PathSegment** envoy_type_metadata_v3_MetadataKey_mutable_path(envoy_type_metadata_v3_MetadataKey *msg, size_t *len) {
+UPB_INLINE envoy_type_metadata_v3_MetadataKey_PathSegment** envoy_type_metadata_v3_MetadataKey_mutable_path(envoy_type_metadata_v3_MetadataKey* msg, size_t* len) {
return (envoy_type_metadata_v3_MetadataKey_PathSegment**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE envoy_type_metadata_v3_MetadataKey_PathSegment** envoy_type_metadata_v3_MetadataKey_resize_path(envoy_type_metadata_v3_MetadataKey *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE envoy_type_metadata_v3_MetadataKey_PathSegment** envoy_type_metadata_v3_MetadataKey_resize_path(envoy_type_metadata_v3_MetadataKey* msg, size_t len, upb_Arena* arena) {
return (envoy_type_metadata_v3_MetadataKey_PathSegment**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct envoy_type_metadata_v3_MetadataKey_PathSegment* envoy_type_metadata_v3_MetadataKey_add_path(envoy_type_metadata_v3_MetadataKey *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_metadata_v3_MetadataKey_PathSegment* envoy_type_metadata_v3_MetadataKey_add_path(envoy_type_metadata_v3_MetadataKey* msg, upb_Arena* arena) {
struct envoy_type_metadata_v3_MetadataKey_PathSegment* sub = (struct envoy_type_metadata_v3_MetadataKey_PathSegment*)_upb_Message_New(&envoy_type_metadata_v3_MetadataKey_PathSegment_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -123,23 +136,35 @@ UPB_INLINE envoy_type_metadata_v3_MetadataKey_PathSegment* envoy_type_metadata_v
return ret;
}
UPB_INLINE char* envoy_type_metadata_v3_MetadataKey_PathSegment_serialize(const envoy_type_metadata_v3_MetadataKey_PathSegment* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_metadata_v3_MetadataKey_PathSegment_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_metadata_v3_MetadataKey_PathSegment_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_metadata_v3_MetadataKey_PathSegment_serialize_ex(const envoy_type_metadata_v3_MetadataKey_PathSegment* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_metadata_v3_MetadataKey_PathSegment_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_metadata_v3_MetadataKey_PathSegment_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_type_metadata_v3_MetadataKey_PathSegment_segment_key = 1,
envoy_type_metadata_v3_MetadataKey_PathSegment_segment_NOT_SET = 0
} envoy_type_metadata_v3_MetadataKey_PathSegment_segment_oneofcases;
-UPB_INLINE envoy_type_metadata_v3_MetadataKey_PathSegment_segment_oneofcases envoy_type_metadata_v3_MetadataKey_PathSegment_segment_case(const envoy_type_metadata_v3_MetadataKey_PathSegment* msg) { return (envoy_type_metadata_v3_MetadataKey_PathSegment_segment_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool envoy_type_metadata_v3_MetadataKey_PathSegment_has_key(const envoy_type_metadata_v3_MetadataKey_PathSegment *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE upb_StringView envoy_type_metadata_v3_MetadataKey_PathSegment_key(const envoy_type_metadata_v3_MetadataKey_PathSegment *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, upb_StringView_FromString("")); }
+UPB_INLINE envoy_type_metadata_v3_MetadataKey_PathSegment_segment_oneofcases envoy_type_metadata_v3_MetadataKey_PathSegment_segment_case(const envoy_type_metadata_v3_MetadataKey_PathSegment* msg) {
+ return (envoy_type_metadata_v3_MetadataKey_PathSegment_segment_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_type_metadata_v3_MetadataKey_PathSegment_has_key(const envoy_type_metadata_v3_MetadataKey_PathSegment* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_type_metadata_v3_MetadataKey_PathSegment_clear_key(const envoy_type_metadata_v3_MetadataKey_PathSegment* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), envoy_type_metadata_v3_MetadataKey_PathSegment_segment_NOT_SET);
+}
+UPB_INLINE upb_StringView envoy_type_metadata_v3_MetadataKey_PathSegment_key(const envoy_type_metadata_v3_MetadataKey_PathSegment* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, upb_StringView_FromString(""));
+}
UPB_INLINE void envoy_type_metadata_v3_MetadataKey_PathSegment_set_key(envoy_type_metadata_v3_MetadataKey_PathSegment *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
/* envoy.type.metadata.v3.MetadataKind */
@@ -167,11 +192,15 @@ UPB_INLINE envoy_type_metadata_v3_MetadataKind* envoy_type_metadata_v3_MetadataK
return ret;
}
UPB_INLINE char* envoy_type_metadata_v3_MetadataKind_serialize(const envoy_type_metadata_v3_MetadataKind* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_metadata_v3_MetadataKind_serialize_ex(const envoy_type_metadata_v3_MetadataKind* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_type_metadata_v3_MetadataKind_kind_request = 1,
@@ -180,21 +209,50 @@ typedef enum {
envoy_type_metadata_v3_MetadataKind_kind_host = 4,
envoy_type_metadata_v3_MetadataKind_kind_NOT_SET = 0
} envoy_type_metadata_v3_MetadataKind_kind_oneofcases;
-UPB_INLINE envoy_type_metadata_v3_MetadataKind_kind_oneofcases envoy_type_metadata_v3_MetadataKind_kind_case(const envoy_type_metadata_v3_MetadataKind* msg) { return (envoy_type_metadata_v3_MetadataKind_kind_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_type_metadata_v3_MetadataKind_has_request(const envoy_type_metadata_v3_MetadataKind *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_type_metadata_v3_MetadataKind_Request* envoy_type_metadata_v3_MetadataKind_request(const envoy_type_metadata_v3_MetadataKind *msg) { return UPB_READ_ONEOF(msg, const envoy_type_metadata_v3_MetadataKind_Request*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_type_metadata_v3_MetadataKind_has_route(const envoy_type_metadata_v3_MetadataKind *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const envoy_type_metadata_v3_MetadataKind_Route* envoy_type_metadata_v3_MetadataKind_route(const envoy_type_metadata_v3_MetadataKind *msg) { return UPB_READ_ONEOF(msg, const envoy_type_metadata_v3_MetadataKind_Route*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool envoy_type_metadata_v3_MetadataKind_has_cluster(const envoy_type_metadata_v3_MetadataKind *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const envoy_type_metadata_v3_MetadataKind_Cluster* envoy_type_metadata_v3_MetadataKind_cluster(const envoy_type_metadata_v3_MetadataKind *msg) { return UPB_READ_ONEOF(msg, const envoy_type_metadata_v3_MetadataKind_Cluster*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
-UPB_INLINE bool envoy_type_metadata_v3_MetadataKind_has_host(const envoy_type_metadata_v3_MetadataKind *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 4; }
-UPB_INLINE const envoy_type_metadata_v3_MetadataKind_Host* envoy_type_metadata_v3_MetadataKind_host(const envoy_type_metadata_v3_MetadataKind *msg) { return UPB_READ_ONEOF(msg, const envoy_type_metadata_v3_MetadataKind_Host*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 4, NULL); }
+UPB_INLINE envoy_type_metadata_v3_MetadataKind_kind_oneofcases envoy_type_metadata_v3_MetadataKind_kind_case(const envoy_type_metadata_v3_MetadataKind* msg) {
+ return (envoy_type_metadata_v3_MetadataKind_kind_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_type_metadata_v3_MetadataKind_has_request(const envoy_type_metadata_v3_MetadataKind* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_type_metadata_v3_MetadataKind_clear_request(const envoy_type_metadata_v3_MetadataKind* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_metadata_v3_MetadataKind_Request*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_metadata_v3_MetadataKind_kind_NOT_SET);
+}
+UPB_INLINE const envoy_type_metadata_v3_MetadataKind_Request* envoy_type_metadata_v3_MetadataKind_request(const envoy_type_metadata_v3_MetadataKind* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_metadata_v3_MetadataKind_Request*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_type_metadata_v3_MetadataKind_has_route(const envoy_type_metadata_v3_MetadataKind* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_type_metadata_v3_MetadataKind_clear_route(const envoy_type_metadata_v3_MetadataKind* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_metadata_v3_MetadataKind_Route*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_metadata_v3_MetadataKind_kind_NOT_SET);
+}
+UPB_INLINE const envoy_type_metadata_v3_MetadataKind_Route* envoy_type_metadata_v3_MetadataKind_route(const envoy_type_metadata_v3_MetadataKind* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_metadata_v3_MetadataKind_Route*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_type_metadata_v3_MetadataKind_has_cluster(const envoy_type_metadata_v3_MetadataKind* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_type_metadata_v3_MetadataKind_clear_cluster(const envoy_type_metadata_v3_MetadataKind* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_metadata_v3_MetadataKind_Cluster*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_metadata_v3_MetadataKind_kind_NOT_SET);
+}
+UPB_INLINE const envoy_type_metadata_v3_MetadataKind_Cluster* envoy_type_metadata_v3_MetadataKind_cluster(const envoy_type_metadata_v3_MetadataKind* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_metadata_v3_MetadataKind_Cluster*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE bool envoy_type_metadata_v3_MetadataKind_has_host(const envoy_type_metadata_v3_MetadataKind* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_type_metadata_v3_MetadataKind_clear_host(const envoy_type_metadata_v3_MetadataKind* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_metadata_v3_MetadataKind_Host*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_metadata_v3_MetadataKind_kind_NOT_SET);
+}
+UPB_INLINE const envoy_type_metadata_v3_MetadataKind_Host* envoy_type_metadata_v3_MetadataKind_host(const envoy_type_metadata_v3_MetadataKind* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_metadata_v3_MetadataKind_Host*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, NULL);
+}
UPB_INLINE void envoy_type_metadata_v3_MetadataKind_set_request(envoy_type_metadata_v3_MetadataKind *msg, envoy_type_metadata_v3_MetadataKind_Request* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_metadata_v3_MetadataKind_Request*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_type_metadata_v3_MetadataKind_Request*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_type_metadata_v3_MetadataKind_Request* envoy_type_metadata_v3_MetadataKind_mutable_request(envoy_type_metadata_v3_MetadataKind *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_metadata_v3_MetadataKind_Request* envoy_type_metadata_v3_MetadataKind_mutable_request(envoy_type_metadata_v3_MetadataKind* msg, upb_Arena* arena) {
struct envoy_type_metadata_v3_MetadataKind_Request* sub = (struct envoy_type_metadata_v3_MetadataKind_Request*)envoy_type_metadata_v3_MetadataKind_request(msg);
if (sub == NULL) {
sub = (struct envoy_type_metadata_v3_MetadataKind_Request*)_upb_Message_New(&envoy_type_metadata_v3_MetadataKind_Request_msginit, arena);
@@ -204,9 +262,9 @@ UPB_INLINE struct envoy_type_metadata_v3_MetadataKind_Request* envoy_type_metada
return sub;
}
UPB_INLINE void envoy_type_metadata_v3_MetadataKind_set_route(envoy_type_metadata_v3_MetadataKind *msg, envoy_type_metadata_v3_MetadataKind_Route* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_metadata_v3_MetadataKind_Route*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, envoy_type_metadata_v3_MetadataKind_Route*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_type_metadata_v3_MetadataKind_Route* envoy_type_metadata_v3_MetadataKind_mutable_route(envoy_type_metadata_v3_MetadataKind *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_metadata_v3_MetadataKind_Route* envoy_type_metadata_v3_MetadataKind_mutable_route(envoy_type_metadata_v3_MetadataKind* msg, upb_Arena* arena) {
struct envoy_type_metadata_v3_MetadataKind_Route* sub = (struct envoy_type_metadata_v3_MetadataKind_Route*)envoy_type_metadata_v3_MetadataKind_route(msg);
if (sub == NULL) {
sub = (struct envoy_type_metadata_v3_MetadataKind_Route*)_upb_Message_New(&envoy_type_metadata_v3_MetadataKind_Route_msginit, arena);
@@ -216,9 +274,9 @@ UPB_INLINE struct envoy_type_metadata_v3_MetadataKind_Route* envoy_type_metadata
return sub;
}
UPB_INLINE void envoy_type_metadata_v3_MetadataKind_set_cluster(envoy_type_metadata_v3_MetadataKind *msg, envoy_type_metadata_v3_MetadataKind_Cluster* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_metadata_v3_MetadataKind_Cluster*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, envoy_type_metadata_v3_MetadataKind_Cluster*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_type_metadata_v3_MetadataKind_Cluster* envoy_type_metadata_v3_MetadataKind_mutable_cluster(envoy_type_metadata_v3_MetadataKind *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_metadata_v3_MetadataKind_Cluster* envoy_type_metadata_v3_MetadataKind_mutable_cluster(envoy_type_metadata_v3_MetadataKind* msg, upb_Arena* arena) {
struct envoy_type_metadata_v3_MetadataKind_Cluster* sub = (struct envoy_type_metadata_v3_MetadataKind_Cluster*)envoy_type_metadata_v3_MetadataKind_cluster(msg);
if (sub == NULL) {
sub = (struct envoy_type_metadata_v3_MetadataKind_Cluster*)_upb_Message_New(&envoy_type_metadata_v3_MetadataKind_Cluster_msginit, arena);
@@ -228,9 +286,9 @@ UPB_INLINE struct envoy_type_metadata_v3_MetadataKind_Cluster* envoy_type_metada
return sub;
}
UPB_INLINE void envoy_type_metadata_v3_MetadataKind_set_host(envoy_type_metadata_v3_MetadataKind *msg, envoy_type_metadata_v3_MetadataKind_Host* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_metadata_v3_MetadataKind_Host*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 4);
+ UPB_WRITE_ONEOF(msg, envoy_type_metadata_v3_MetadataKind_Host*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct envoy_type_metadata_v3_MetadataKind_Host* envoy_type_metadata_v3_MetadataKind_mutable_host(envoy_type_metadata_v3_MetadataKind *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_metadata_v3_MetadataKind_Host* envoy_type_metadata_v3_MetadataKind_mutable_host(envoy_type_metadata_v3_MetadataKind* msg, upb_Arena* arena) {
struct envoy_type_metadata_v3_MetadataKind_Host* sub = (struct envoy_type_metadata_v3_MetadataKind_Host*)envoy_type_metadata_v3_MetadataKind_host(msg);
if (sub == NULL) {
sub = (struct envoy_type_metadata_v3_MetadataKind_Host*)_upb_Message_New(&envoy_type_metadata_v3_MetadataKind_Host_msginit, arena);
@@ -265,11 +323,15 @@ UPB_INLINE envoy_type_metadata_v3_MetadataKind_Request* envoy_type_metadata_v3_M
return ret;
}
UPB_INLINE char* envoy_type_metadata_v3_MetadataKind_Request_serialize(const envoy_type_metadata_v3_MetadataKind_Request* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Request_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Request_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_metadata_v3_MetadataKind_Request_serialize_ex(const envoy_type_metadata_v3_MetadataKind_Request* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Request_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Request_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -298,11 +360,15 @@ UPB_INLINE envoy_type_metadata_v3_MetadataKind_Route* envoy_type_metadata_v3_Met
return ret;
}
UPB_INLINE char* envoy_type_metadata_v3_MetadataKind_Route_serialize(const envoy_type_metadata_v3_MetadataKind_Route* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Route_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Route_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_metadata_v3_MetadataKind_Route_serialize_ex(const envoy_type_metadata_v3_MetadataKind_Route* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Route_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Route_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -331,11 +397,15 @@ UPB_INLINE envoy_type_metadata_v3_MetadataKind_Cluster* envoy_type_metadata_v3_M
return ret;
}
UPB_INLINE char* envoy_type_metadata_v3_MetadataKind_Cluster_serialize(const envoy_type_metadata_v3_MetadataKind_Cluster* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Cluster_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Cluster_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_metadata_v3_MetadataKind_Cluster_serialize_ex(const envoy_type_metadata_v3_MetadataKind_Cluster* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Cluster_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Cluster_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -364,11 +434,15 @@ UPB_INLINE envoy_type_metadata_v3_MetadataKind_Host* envoy_type_metadata_v3_Meta
return ret;
}
UPB_INLINE char* envoy_type_metadata_v3_MetadataKind_Host_serialize(const envoy_type_metadata_v3_MetadataKind_Host* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Host_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Host_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_metadata_v3_MetadataKind_Host_serialize_ex(const envoy_type_metadata_v3_MetadataKind_Host* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Host_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_metadata_v3_MetadataKind_Host_msginit, options, arena, &ptr, len);
+ return ptr;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c
index 21263706b2..3a48dec20b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c
@@ -17,73 +17,73 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_type_tracing_v3_CustomTag_submsgs[4] = {
+ {.submsg = &envoy_type_tracing_v3_CustomTag_Literal_msginit},
{.submsg = &envoy_type_tracing_v3_CustomTag_Environment_msginit},
{.submsg = &envoy_type_tracing_v3_CustomTag_Header_msginit},
- {.submsg = &envoy_type_tracing_v3_CustomTag_Literal_msginit},
{.submsg = &envoy_type_tracing_v3_CustomTag_Metadata_msginit},
};
static const upb_MiniTable_Field envoy_type_tracing_v3_CustomTag__fields[5] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_tracing_v3_CustomTag_msginit = {
&envoy_type_tracing_v3_CustomTag_submsgs[0],
&envoy_type_tracing_v3_CustomTag__fields[0],
- UPB_SIZE(16, 32), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(16, 32), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
static const upb_MiniTable_Field envoy_type_tracing_v3_CustomTag_Literal__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_tracing_v3_CustomTag_Literal_msginit = {
NULL,
&envoy_type_tracing_v3_CustomTag_Literal__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_type_tracing_v3_CustomTag_Environment__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_tracing_v3_CustomTag_Environment_msginit = {
NULL,
&envoy_type_tracing_v3_CustomTag_Environment__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_type_tracing_v3_CustomTag_Header__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_tracing_v3_CustomTag_Header_msginit = {
NULL,
&envoy_type_tracing_v3_CustomTag_Header__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub envoy_type_tracing_v3_CustomTag_Metadata_submsgs[2] = {
- {.submsg = &envoy_type_metadata_v3_MetadataKey_msginit},
{.submsg = &envoy_type_metadata_v3_MetadataKind_msginit},
+ {.submsg = &envoy_type_metadata_v3_MetadataKey_msginit},
};
static const upb_MiniTable_Field envoy_type_tracing_v3_CustomTag_Metadata__fields[3] = {
- {1, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_tracing_v3_CustomTag_Metadata_msginit = {
&envoy_type_tracing_v3_CustomTag_Metadata_submsgs[0],
&envoy_type_tracing_v3_CustomTag_Metadata__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable *messages_layout[5] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h
index 3cdc1eebb6..d51fa4d421 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h
@@ -67,11 +67,15 @@ UPB_INLINE envoy_type_tracing_v3_CustomTag* envoy_type_tracing_v3_CustomTag_pars
return ret;
}
UPB_INLINE char* envoy_type_tracing_v3_CustomTag_serialize(const envoy_type_tracing_v3_CustomTag* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_tracing_v3_CustomTag_serialize_ex(const envoy_type_tracing_v3_CustomTag* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_type_tracing_v3_CustomTag_type_literal = 2,
@@ -80,27 +84,59 @@ typedef enum {
envoy_type_tracing_v3_CustomTag_type_metadata = 5,
envoy_type_tracing_v3_CustomTag_type_NOT_SET = 0
} envoy_type_tracing_v3_CustomTag_type_oneofcases;
-UPB_INLINE envoy_type_tracing_v3_CustomTag_type_oneofcases envoy_type_tracing_v3_CustomTag_type_case(const envoy_type_tracing_v3_CustomTag* msg) { return (envoy_type_tracing_v3_CustomTag_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE envoy_type_tracing_v3_CustomTag_type_oneofcases envoy_type_tracing_v3_CustomTag_type_case(const envoy_type_tracing_v3_CustomTag* msg) {
+ return (envoy_type_tracing_v3_CustomTag_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void envoy_type_tracing_v3_CustomTag_clear_tag(const envoy_type_tracing_v3_CustomTag* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_type_tracing_v3_CustomTag_tag(const envoy_type_tracing_v3_CustomTag* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool envoy_type_tracing_v3_CustomTag_has_literal(const envoy_type_tracing_v3_CustomTag* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_type_tracing_v3_CustomTag_clear_literal(const envoy_type_tracing_v3_CustomTag* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_tracing_v3_CustomTag_Literal*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_type_tracing_v3_CustomTag_type_NOT_SET);
+}
+UPB_INLINE const envoy_type_tracing_v3_CustomTag_Literal* envoy_type_tracing_v3_CustomTag_literal(const envoy_type_tracing_v3_CustomTag* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_tracing_v3_CustomTag_Literal*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_type_tracing_v3_CustomTag_has_environment(const envoy_type_tracing_v3_CustomTag* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_type_tracing_v3_CustomTag_clear_environment(const envoy_type_tracing_v3_CustomTag* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_tracing_v3_CustomTag_Environment*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_type_tracing_v3_CustomTag_type_NOT_SET);
+}
+UPB_INLINE const envoy_type_tracing_v3_CustomTag_Environment* envoy_type_tracing_v3_CustomTag_environment(const envoy_type_tracing_v3_CustomTag* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_tracing_v3_CustomTag_Environment*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE bool envoy_type_tracing_v3_CustomTag_has_request_header(const envoy_type_tracing_v3_CustomTag* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void envoy_type_tracing_v3_CustomTag_clear_request_header(const envoy_type_tracing_v3_CustomTag* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_tracing_v3_CustomTag_Header*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_type_tracing_v3_CustomTag_type_NOT_SET);
+}
+UPB_INLINE const envoy_type_tracing_v3_CustomTag_Header* envoy_type_tracing_v3_CustomTag_request_header(const envoy_type_tracing_v3_CustomTag* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_tracing_v3_CustomTag_Header*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 4, NULL);
+}
+UPB_INLINE bool envoy_type_tracing_v3_CustomTag_has_metadata(const envoy_type_tracing_v3_CustomTag* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void envoy_type_tracing_v3_CustomTag_clear_metadata(const envoy_type_tracing_v3_CustomTag* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_tracing_v3_CustomTag_Metadata*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), envoy_type_tracing_v3_CustomTag_type_NOT_SET);
+}
+UPB_INLINE const envoy_type_tracing_v3_CustomTag_Metadata* envoy_type_tracing_v3_CustomTag_metadata(const envoy_type_tracing_v3_CustomTag* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_tracing_v3_CustomTag_Metadata*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 5, NULL);
}
-UPB_INLINE bool envoy_type_tracing_v3_CustomTag_has_literal(const envoy_type_tracing_v3_CustomTag *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE const envoy_type_tracing_v3_CustomTag_Literal* envoy_type_tracing_v3_CustomTag_literal(const envoy_type_tracing_v3_CustomTag *msg) { return UPB_READ_ONEOF(msg, const envoy_type_tracing_v3_CustomTag_Literal*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 2, NULL); }
-UPB_INLINE bool envoy_type_tracing_v3_CustomTag_has_environment(const envoy_type_tracing_v3_CustomTag *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const envoy_type_tracing_v3_CustomTag_Environment* envoy_type_tracing_v3_CustomTag_environment(const envoy_type_tracing_v3_CustomTag *msg) { return UPB_READ_ONEOF(msg, const envoy_type_tracing_v3_CustomTag_Environment*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
-UPB_INLINE bool envoy_type_tracing_v3_CustomTag_has_request_header(const envoy_type_tracing_v3_CustomTag *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 4; }
-UPB_INLINE const envoy_type_tracing_v3_CustomTag_Header* envoy_type_tracing_v3_CustomTag_request_header(const envoy_type_tracing_v3_CustomTag *msg) { return UPB_READ_ONEOF(msg, const envoy_type_tracing_v3_CustomTag_Header*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 4, NULL); }
-UPB_INLINE bool envoy_type_tracing_v3_CustomTag_has_metadata(const envoy_type_tracing_v3_CustomTag *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 5; }
-UPB_INLINE const envoy_type_tracing_v3_CustomTag_Metadata* envoy_type_tracing_v3_CustomTag_metadata(const envoy_type_tracing_v3_CustomTag *msg) { return UPB_READ_ONEOF(msg, const envoy_type_tracing_v3_CustomTag_Metadata*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 5, NULL); }
UPB_INLINE void envoy_type_tracing_v3_CustomTag_set_tag(envoy_type_tracing_v3_CustomTag *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void envoy_type_tracing_v3_CustomTag_set_literal(envoy_type_tracing_v3_CustomTag *msg, envoy_type_tracing_v3_CustomTag_Literal* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_tracing_v3_CustomTag_Literal*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, envoy_type_tracing_v3_CustomTag_Literal*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Literal* envoy_type_tracing_v3_CustomTag_mutable_literal(envoy_type_tracing_v3_CustomTag *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Literal* envoy_type_tracing_v3_CustomTag_mutable_literal(envoy_type_tracing_v3_CustomTag* msg, upb_Arena* arena) {
struct envoy_type_tracing_v3_CustomTag_Literal* sub = (struct envoy_type_tracing_v3_CustomTag_Literal*)envoy_type_tracing_v3_CustomTag_literal(msg);
if (sub == NULL) {
sub = (struct envoy_type_tracing_v3_CustomTag_Literal*)_upb_Message_New(&envoy_type_tracing_v3_CustomTag_Literal_msginit, arena);
@@ -110,9 +146,9 @@ UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Literal* envoy_type_tracing_v3
return sub;
}
UPB_INLINE void envoy_type_tracing_v3_CustomTag_set_environment(envoy_type_tracing_v3_CustomTag *msg, envoy_type_tracing_v3_CustomTag_Environment* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_tracing_v3_CustomTag_Environment*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, envoy_type_tracing_v3_CustomTag_Environment*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Environment* envoy_type_tracing_v3_CustomTag_mutable_environment(envoy_type_tracing_v3_CustomTag *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Environment* envoy_type_tracing_v3_CustomTag_mutable_environment(envoy_type_tracing_v3_CustomTag* msg, upb_Arena* arena) {
struct envoy_type_tracing_v3_CustomTag_Environment* sub = (struct envoy_type_tracing_v3_CustomTag_Environment*)envoy_type_tracing_v3_CustomTag_environment(msg);
if (sub == NULL) {
sub = (struct envoy_type_tracing_v3_CustomTag_Environment*)_upb_Message_New(&envoy_type_tracing_v3_CustomTag_Environment_msginit, arena);
@@ -122,9 +158,9 @@ UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Environment* envoy_type_tracin
return sub;
}
UPB_INLINE void envoy_type_tracing_v3_CustomTag_set_request_header(envoy_type_tracing_v3_CustomTag *msg, envoy_type_tracing_v3_CustomTag_Header* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_tracing_v3_CustomTag_Header*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 4);
+ UPB_WRITE_ONEOF(msg, envoy_type_tracing_v3_CustomTag_Header*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Header* envoy_type_tracing_v3_CustomTag_mutable_request_header(envoy_type_tracing_v3_CustomTag *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Header* envoy_type_tracing_v3_CustomTag_mutable_request_header(envoy_type_tracing_v3_CustomTag* msg, upb_Arena* arena) {
struct envoy_type_tracing_v3_CustomTag_Header* sub = (struct envoy_type_tracing_v3_CustomTag_Header*)envoy_type_tracing_v3_CustomTag_request_header(msg);
if (sub == NULL) {
sub = (struct envoy_type_tracing_v3_CustomTag_Header*)_upb_Message_New(&envoy_type_tracing_v3_CustomTag_Header_msginit, arena);
@@ -134,9 +170,9 @@ UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Header* envoy_type_tracing_v3_
return sub;
}
UPB_INLINE void envoy_type_tracing_v3_CustomTag_set_metadata(envoy_type_tracing_v3_CustomTag *msg, envoy_type_tracing_v3_CustomTag_Metadata* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_tracing_v3_CustomTag_Metadata*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 5);
+ UPB_WRITE_ONEOF(msg, envoy_type_tracing_v3_CustomTag_Metadata*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Metadata* envoy_type_tracing_v3_CustomTag_mutable_metadata(envoy_type_tracing_v3_CustomTag *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_tracing_v3_CustomTag_Metadata* envoy_type_tracing_v3_CustomTag_mutable_metadata(envoy_type_tracing_v3_CustomTag* msg, upb_Arena* arena) {
struct envoy_type_tracing_v3_CustomTag_Metadata* sub = (struct envoy_type_tracing_v3_CustomTag_Metadata*)envoy_type_tracing_v3_CustomTag_metadata(msg);
if (sub == NULL) {
sub = (struct envoy_type_tracing_v3_CustomTag_Metadata*)_upb_Message_New(&envoy_type_tracing_v3_CustomTag_Metadata_msginit, arena);
@@ -171,11 +207,18 @@ UPB_INLINE envoy_type_tracing_v3_CustomTag_Literal* envoy_type_tracing_v3_Custom
return ret;
}
UPB_INLINE char* envoy_type_tracing_v3_CustomTag_Literal_serialize(const envoy_type_tracing_v3_CustomTag_Literal* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Literal_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Literal_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_tracing_v3_CustomTag_Literal_serialize_ex(const envoy_type_tracing_v3_CustomTag_Literal* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Literal_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Literal_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_tracing_v3_CustomTag_Literal_clear_value(const envoy_type_tracing_v3_CustomTag_Literal* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_type_tracing_v3_CustomTag_Literal_value(const envoy_type_tracing_v3_CustomTag_Literal* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -210,15 +253,25 @@ UPB_INLINE envoy_type_tracing_v3_CustomTag_Environment* envoy_type_tracing_v3_Cu
return ret;
}
UPB_INLINE char* envoy_type_tracing_v3_CustomTag_Environment_serialize(const envoy_type_tracing_v3_CustomTag_Environment* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Environment_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Environment_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_tracing_v3_CustomTag_Environment_serialize_ex(const envoy_type_tracing_v3_CustomTag_Environment* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Environment_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Environment_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_tracing_v3_CustomTag_Environment_clear_name(const envoy_type_tracing_v3_CustomTag_Environment* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_type_tracing_v3_CustomTag_Environment_name(const envoy_type_tracing_v3_CustomTag_Environment* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void envoy_type_tracing_v3_CustomTag_Environment_clear_default_value(const envoy_type_tracing_v3_CustomTag_Environment* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_type_tracing_v3_CustomTag_Environment_default_value(const envoy_type_tracing_v3_CustomTag_Environment* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
@@ -255,15 +308,25 @@ UPB_INLINE envoy_type_tracing_v3_CustomTag_Header* envoy_type_tracing_v3_CustomT
return ret;
}
UPB_INLINE char* envoy_type_tracing_v3_CustomTag_Header_serialize(const envoy_type_tracing_v3_CustomTag_Header* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Header_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Header_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_tracing_v3_CustomTag_Header_serialize_ex(const envoy_type_tracing_v3_CustomTag_Header* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Header_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Header_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_tracing_v3_CustomTag_Header_clear_name(const envoy_type_tracing_v3_CustomTag_Header* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_type_tracing_v3_CustomTag_Header_name(const envoy_type_tracing_v3_CustomTag_Header* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void envoy_type_tracing_v3_CustomTag_Header_clear_default_value(const envoy_type_tracing_v3_CustomTag_Header* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView envoy_type_tracing_v3_CustomTag_Header_default_value(const envoy_type_tracing_v3_CustomTag_Header* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
@@ -300,29 +363,46 @@ UPB_INLINE envoy_type_tracing_v3_CustomTag_Metadata* envoy_type_tracing_v3_Custo
return ret;
}
UPB_INLINE char* envoy_type_tracing_v3_CustomTag_Metadata_serialize(const envoy_type_tracing_v3_CustomTag_Metadata* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Metadata_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Metadata_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_tracing_v3_CustomTag_Metadata_serialize_ex(const envoy_type_tracing_v3_CustomTag_Metadata* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Metadata_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_tracing_v3_CustomTag_Metadata_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool envoy_type_tracing_v3_CustomTag_Metadata_has_kind(const envoy_type_tracing_v3_CustomTag_Metadata* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_type_tracing_v3_CustomTag_Metadata_clear_kind(const envoy_type_tracing_v3_CustomTag_Metadata* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_type_tracing_v3_CustomTag_Metadata_has_kind(const envoy_type_tracing_v3_CustomTag_Metadata *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct envoy_type_metadata_v3_MetadataKind* envoy_type_tracing_v3_CustomTag_Metadata_kind(const envoy_type_tracing_v3_CustomTag_Metadata* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct envoy_type_metadata_v3_MetadataKind*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct envoy_type_metadata_v3_MetadataKind*);
+}
+UPB_INLINE bool envoy_type_tracing_v3_CustomTag_Metadata_has_metadata_key(const envoy_type_tracing_v3_CustomTag_Metadata* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_type_tracing_v3_CustomTag_Metadata_clear_metadata_key(const envoy_type_tracing_v3_CustomTag_Metadata* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool envoy_type_tracing_v3_CustomTag_Metadata_has_metadata_key(const envoy_type_tracing_v3_CustomTag_Metadata *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct envoy_type_metadata_v3_MetadataKey* envoy_type_tracing_v3_CustomTag_Metadata_metadata_key(const envoy_type_tracing_v3_CustomTag_Metadata* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct envoy_type_metadata_v3_MetadataKey*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct envoy_type_metadata_v3_MetadataKey*);
+}
+UPB_INLINE void envoy_type_tracing_v3_CustomTag_Metadata_clear_default_value(const envoy_type_tracing_v3_CustomTag_Metadata* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_type_tracing_v3_CustomTag_Metadata_default_value(const envoy_type_tracing_v3_CustomTag_Metadata* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
UPB_INLINE void envoy_type_tracing_v3_CustomTag_Metadata_set_kind(envoy_type_tracing_v3_CustomTag_Metadata *msg, struct envoy_type_metadata_v3_MetadataKind* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct envoy_type_metadata_v3_MetadataKind*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct envoy_type_metadata_v3_MetadataKind*) = value;
}
-UPB_INLINE struct envoy_type_metadata_v3_MetadataKind* envoy_type_tracing_v3_CustomTag_Metadata_mutable_kind(envoy_type_tracing_v3_CustomTag_Metadata *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_metadata_v3_MetadataKind* envoy_type_tracing_v3_CustomTag_Metadata_mutable_kind(envoy_type_tracing_v3_CustomTag_Metadata* msg, upb_Arena* arena) {
struct envoy_type_metadata_v3_MetadataKind* sub = (struct envoy_type_metadata_v3_MetadataKind*)envoy_type_tracing_v3_CustomTag_Metadata_kind(msg);
if (sub == NULL) {
sub = (struct envoy_type_metadata_v3_MetadataKind*)_upb_Message_New(&envoy_type_metadata_v3_MetadataKind_msginit, arena);
@@ -333,9 +413,9 @@ UPB_INLINE struct envoy_type_metadata_v3_MetadataKind* envoy_type_tracing_v3_Cus
}
UPB_INLINE void envoy_type_tracing_v3_CustomTag_Metadata_set_metadata_key(envoy_type_tracing_v3_CustomTag_Metadata *msg, struct envoy_type_metadata_v3_MetadataKey* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct envoy_type_metadata_v3_MetadataKey*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct envoy_type_metadata_v3_MetadataKey*) = value;
}
-UPB_INLINE struct envoy_type_metadata_v3_MetadataKey* envoy_type_tracing_v3_CustomTag_Metadata_mutable_metadata_key(envoy_type_tracing_v3_CustomTag_Metadata *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_metadata_v3_MetadataKey* envoy_type_tracing_v3_CustomTag_Metadata_mutable_metadata_key(envoy_type_tracing_v3_CustomTag_Metadata* msg, upb_Arena* arena) {
struct envoy_type_metadata_v3_MetadataKey* sub = (struct envoy_type_metadata_v3_MetadataKey*)envoy_type_tracing_v3_CustomTag_Metadata_metadata_key(msg);
if (sub == NULL) {
sub = (struct envoy_type_metadata_v3_MetadataKey*)_upb_Message_New(&envoy_type_metadata_v3_MetadataKey_msginit, arena);
@@ -345,7 +425,7 @@ UPB_INLINE struct envoy_type_metadata_v3_MetadataKey* envoy_type_tracing_v3_Cust
return sub;
}
UPB_INLINE void envoy_type_tracing_v3_CustomTag_Metadata_set_default_value(envoy_type_tracing_v3_CustomTag_Metadata *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
}
extern const upb_MiniTable_File envoy_type_tracing_v3_custom_tag_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c
index b2ffd2286c..942f94fc23 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c
@@ -16,35 +16,35 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_type_v3_HashPolicy_submsgs[2] = {
- {.submsg = &envoy_type_v3_HashPolicy_FilterState_msginit},
{.submsg = &envoy_type_v3_HashPolicy_SourceIp_msginit},
+ {.submsg = &envoy_type_v3_HashPolicy_FilterState_msginit},
};
static const upb_MiniTable_Field envoy_type_v3_HashPolicy__fields[2] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_v3_HashPolicy_msginit = {
&envoy_type_v3_HashPolicy_submsgs[0],
&envoy_type_v3_HashPolicy__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
const upb_MiniTable envoy_type_v3_HashPolicy_SourceIp_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Field envoy_type_v3_HashPolicy_FilterState__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_v3_HashPolicy_FilterState_msginit = {
NULL,
&envoy_type_v3_HashPolicy_FilterState__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[3] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h
index a2bec5b4d9..837de3c659 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h
@@ -57,28 +57,47 @@ UPB_INLINE envoy_type_v3_HashPolicy* envoy_type_v3_HashPolicy_parse_ex(const cha
return ret;
}
UPB_INLINE char* envoy_type_v3_HashPolicy_serialize(const envoy_type_v3_HashPolicy* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_HashPolicy_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_HashPolicy_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_v3_HashPolicy_serialize_ex(const envoy_type_v3_HashPolicy* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_HashPolicy_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_HashPolicy_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
envoy_type_v3_HashPolicy_policy_specifier_source_ip = 1,
envoy_type_v3_HashPolicy_policy_specifier_filter_state = 2,
envoy_type_v3_HashPolicy_policy_specifier_NOT_SET = 0
} envoy_type_v3_HashPolicy_policy_specifier_oneofcases;
-UPB_INLINE envoy_type_v3_HashPolicy_policy_specifier_oneofcases envoy_type_v3_HashPolicy_policy_specifier_case(const envoy_type_v3_HashPolicy* msg) { return (envoy_type_v3_HashPolicy_policy_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool envoy_type_v3_HashPolicy_has_source_ip(const envoy_type_v3_HashPolicy *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const envoy_type_v3_HashPolicy_SourceIp* envoy_type_v3_HashPolicy_source_ip(const envoy_type_v3_HashPolicy *msg) { return UPB_READ_ONEOF(msg, const envoy_type_v3_HashPolicy_SourceIp*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool envoy_type_v3_HashPolicy_has_filter_state(const envoy_type_v3_HashPolicy *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const envoy_type_v3_HashPolicy_FilterState* envoy_type_v3_HashPolicy_filter_state(const envoy_type_v3_HashPolicy *msg) { return UPB_READ_ONEOF(msg, const envoy_type_v3_HashPolicy_FilterState*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
+UPB_INLINE envoy_type_v3_HashPolicy_policy_specifier_oneofcases envoy_type_v3_HashPolicy_policy_specifier_case(const envoy_type_v3_HashPolicy* msg) {
+ return (envoy_type_v3_HashPolicy_policy_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_type_v3_HashPolicy_has_source_ip(const envoy_type_v3_HashPolicy* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_type_v3_HashPolicy_clear_source_ip(const envoy_type_v3_HashPolicy* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_v3_HashPolicy_SourceIp*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_v3_HashPolicy_policy_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_type_v3_HashPolicy_SourceIp* envoy_type_v3_HashPolicy_source_ip(const envoy_type_v3_HashPolicy* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_v3_HashPolicy_SourceIp*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool envoy_type_v3_HashPolicy_has_filter_state(const envoy_type_v3_HashPolicy* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_type_v3_HashPolicy_clear_filter_state(const envoy_type_v3_HashPolicy* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_v3_HashPolicy_FilterState*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_v3_HashPolicy_policy_specifier_NOT_SET);
+}
+UPB_INLINE const envoy_type_v3_HashPolicy_FilterState* envoy_type_v3_HashPolicy_filter_state(const envoy_type_v3_HashPolicy* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_v3_HashPolicy_FilterState*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
UPB_INLINE void envoy_type_v3_HashPolicy_set_source_ip(envoy_type_v3_HashPolicy *msg, envoy_type_v3_HashPolicy_SourceIp* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_v3_HashPolicy_SourceIp*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, envoy_type_v3_HashPolicy_SourceIp*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct envoy_type_v3_HashPolicy_SourceIp* envoy_type_v3_HashPolicy_mutable_source_ip(envoy_type_v3_HashPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_HashPolicy_SourceIp* envoy_type_v3_HashPolicy_mutable_source_ip(envoy_type_v3_HashPolicy* msg, upb_Arena* arena) {
struct envoy_type_v3_HashPolicy_SourceIp* sub = (struct envoy_type_v3_HashPolicy_SourceIp*)envoy_type_v3_HashPolicy_source_ip(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_HashPolicy_SourceIp*)_upb_Message_New(&envoy_type_v3_HashPolicy_SourceIp_msginit, arena);
@@ -88,9 +107,9 @@ UPB_INLINE struct envoy_type_v3_HashPolicy_SourceIp* envoy_type_v3_HashPolicy_mu
return sub;
}
UPB_INLINE void envoy_type_v3_HashPolicy_set_filter_state(envoy_type_v3_HashPolicy *msg, envoy_type_v3_HashPolicy_FilterState* value) {
- UPB_WRITE_ONEOF(msg, envoy_type_v3_HashPolicy_FilterState*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, envoy_type_v3_HashPolicy_FilterState*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct envoy_type_v3_HashPolicy_FilterState* envoy_type_v3_HashPolicy_mutable_filter_state(envoy_type_v3_HashPolicy *msg, upb_Arena *arena) {
+UPB_INLINE struct envoy_type_v3_HashPolicy_FilterState* envoy_type_v3_HashPolicy_mutable_filter_state(envoy_type_v3_HashPolicy* msg, upb_Arena* arena) {
struct envoy_type_v3_HashPolicy_FilterState* sub = (struct envoy_type_v3_HashPolicy_FilterState*)envoy_type_v3_HashPolicy_filter_state(msg);
if (sub == NULL) {
sub = (struct envoy_type_v3_HashPolicy_FilterState*)_upb_Message_New(&envoy_type_v3_HashPolicy_FilterState_msginit, arena);
@@ -125,11 +144,15 @@ UPB_INLINE envoy_type_v3_HashPolicy_SourceIp* envoy_type_v3_HashPolicy_SourceIp_
return ret;
}
UPB_INLINE char* envoy_type_v3_HashPolicy_SourceIp_serialize(const envoy_type_v3_HashPolicy_SourceIp* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_HashPolicy_SourceIp_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_HashPolicy_SourceIp_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_v3_HashPolicy_SourceIp_serialize_ex(const envoy_type_v3_HashPolicy_SourceIp* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_HashPolicy_SourceIp_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_HashPolicy_SourceIp_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -158,11 +181,18 @@ UPB_INLINE envoy_type_v3_HashPolicy_FilterState* envoy_type_v3_HashPolicy_Filter
return ret;
}
UPB_INLINE char* envoy_type_v3_HashPolicy_FilterState_serialize(const envoy_type_v3_HashPolicy_FilterState* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_HashPolicy_FilterState_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_HashPolicy_FilterState_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_v3_HashPolicy_FilterState_serialize_ex(const envoy_type_v3_HashPolicy_FilterState* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_HashPolicy_FilterState_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_HashPolicy_FilterState_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_v3_HashPolicy_FilterState_clear_key(const envoy_type_v3_HashPolicy_FilterState* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView envoy_type_v3_HashPolicy_FilterState_key(const envoy_type_v3_HashPolicy_FilterState* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c
index 428c155b71..264107bc6c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c
@@ -16,13 +16,13 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_type_v3_HttpStatus__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_v3_HttpStatus_msginit = {
NULL,
&envoy_type_v3_HttpStatus__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h
index ae7bac45da..6882f7d083 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h
@@ -111,11 +111,18 @@ UPB_INLINE envoy_type_v3_HttpStatus* envoy_type_v3_HttpStatus_parse_ex(const cha
return ret;
}
UPB_INLINE char* envoy_type_v3_HttpStatus_serialize(const envoy_type_v3_HttpStatus* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_HttpStatus_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_HttpStatus_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_v3_HttpStatus_serialize_ex(const envoy_type_v3_HttpStatus* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_HttpStatus_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_HttpStatus_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_v3_HttpStatus_clear_code(const envoy_type_v3_HttpStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
UPB_INLINE int32_t envoy_type_v3_HttpStatus_code(const envoy_type_v3_HttpStatus* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c
index 7ac396b3c8..fdb7e4d970 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c
@@ -16,24 +16,24 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_type_v3_Percent__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_v3_Percent_msginit = {
NULL,
&envoy_type_v3_Percent__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field envoy_type_v3_FractionalPercent__fields[2] = {
- {1, UPB_SIZE(4, 4), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_v3_FractionalPercent_msginit = {
NULL,
&envoy_type_v3_FractionalPercent__fields[0],
- UPB_SIZE(8, 8), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 8), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h
index f160be5e5e..56be5a6800 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h
@@ -60,11 +60,18 @@ UPB_INLINE envoy_type_v3_Percent* envoy_type_v3_Percent_parse_ex(const char* buf
return ret;
}
UPB_INLINE char* envoy_type_v3_Percent_serialize(const envoy_type_v3_Percent* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_Percent_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_Percent_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_v3_Percent_serialize_ex(const envoy_type_v3_Percent* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_Percent_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_Percent_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_v3_Percent_clear_value(const envoy_type_v3_Percent* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double) = 0;
}
UPB_INLINE double envoy_type_v3_Percent_value(const envoy_type_v3_Percent* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double);
@@ -99,24 +106,34 @@ UPB_INLINE envoy_type_v3_FractionalPercent* envoy_type_v3_FractionalPercent_pars
return ret;
}
UPB_INLINE char* envoy_type_v3_FractionalPercent_serialize(const envoy_type_v3_FractionalPercent* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_FractionalPercent_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_FractionalPercent_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_v3_FractionalPercent_serialize_ex(const envoy_type_v3_FractionalPercent* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_FractionalPercent_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_FractionalPercent_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_v3_FractionalPercent_clear_numerator(const envoy_type_v3_FractionalPercent* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_type_v3_FractionalPercent_numerator(const envoy_type_v3_FractionalPercent* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t);
+}
+UPB_INLINE void envoy_type_v3_FractionalPercent_clear_denominator(const envoy_type_v3_FractionalPercent* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t envoy_type_v3_FractionalPercent_denominator(const envoy_type_v3_FractionalPercent* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
UPB_INLINE void envoy_type_v3_FractionalPercent_set_numerator(envoy_type_v3_FractionalPercent *msg, uint32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = value;
}
UPB_INLINE void envoy_type_v3_FractionalPercent_set_denominator(envoy_type_v3_FractionalPercent *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
extern const upb_MiniTable_File envoy_type_v3_percent_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/range.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/range.upb.c
index 794d65ad1d..9f65e19ca4 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/range.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/range.upb.c
@@ -15,36 +15,36 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_type_v3_Int64Range__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_v3_Int64Range_msginit = {
NULL,
&envoy_type_v3_Int64Range__fields[0],
- UPB_SIZE(16, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_type_v3_Int32Range__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_v3_Int32Range_msginit = {
NULL,
&envoy_type_v3_Int32Range__fields[0],
- UPB_SIZE(8, 8), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 8), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field envoy_type_v3_DoubleRange__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 0, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_v3_DoubleRange_msginit = {
NULL,
&envoy_type_v3_DoubleRange__fields[0],
- UPB_SIZE(16, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[3] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/range.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/range.upb.h
index f1fb4386aa..a8ba4efb63 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/range.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/range.upb.h
@@ -57,15 +57,25 @@ UPB_INLINE envoy_type_v3_Int64Range* envoy_type_v3_Int64Range_parse_ex(const cha
return ret;
}
UPB_INLINE char* envoy_type_v3_Int64Range_serialize(const envoy_type_v3_Int64Range* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_Int64Range_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_Int64Range_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_v3_Int64Range_serialize_ex(const envoy_type_v3_Int64Range* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_Int64Range_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_Int64Range_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_v3_Int64Range_clear_start(const envoy_type_v3_Int64Range* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t) = 0;
}
UPB_INLINE int64_t envoy_type_v3_Int64Range_start(const envoy_type_v3_Int64Range* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t);
}
+UPB_INLINE void envoy_type_v3_Int64Range_clear_end(const envoy_type_v3_Int64Range* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t) = 0;
+}
UPB_INLINE int64_t envoy_type_v3_Int64Range_end(const envoy_type_v3_Int64Range* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t);
}
@@ -102,15 +112,25 @@ UPB_INLINE envoy_type_v3_Int32Range* envoy_type_v3_Int32Range_parse_ex(const cha
return ret;
}
UPB_INLINE char* envoy_type_v3_Int32Range_serialize(const envoy_type_v3_Int32Range* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_Int32Range_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_Int32Range_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_v3_Int32Range_serialize_ex(const envoy_type_v3_Int32Range* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_Int32Range_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_Int32Range_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_v3_Int32Range_clear_start(const envoy_type_v3_Int32Range* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
UPB_INLINE int32_t envoy_type_v3_Int32Range_start(const envoy_type_v3_Int32Range* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
+UPB_INLINE void envoy_type_v3_Int32Range_clear_end(const envoy_type_v3_Int32Range* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
UPB_INLINE int32_t envoy_type_v3_Int32Range_end(const envoy_type_v3_Int32Range* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
@@ -147,15 +167,25 @@ UPB_INLINE envoy_type_v3_DoubleRange* envoy_type_v3_DoubleRange_parse_ex(const c
return ret;
}
UPB_INLINE char* envoy_type_v3_DoubleRange_serialize(const envoy_type_v3_DoubleRange* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_DoubleRange_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_DoubleRange_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_v3_DoubleRange_serialize_ex(const envoy_type_v3_DoubleRange* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_DoubleRange_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_DoubleRange_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_v3_DoubleRange_clear_start(const envoy_type_v3_DoubleRange* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double) = 0;
}
UPB_INLINE double envoy_type_v3_DoubleRange_start(const envoy_type_v3_DoubleRange* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double);
}
+UPB_INLINE void envoy_type_v3_DoubleRange_clear_end(const envoy_type_v3_DoubleRange* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), double) = 0;
+}
UPB_INLINE double envoy_type_v3_DoubleRange_end(const envoy_type_v3_DoubleRange* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), double);
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c
new file mode 100644
index 0000000000..8d4bf3eccf
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c
@@ -0,0 +1,63 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/type/v3/ratelimit_strategy.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#include <stddef.h>
+#include "upb/msg_internal.h"
+#include "envoy/type/v3/ratelimit_strategy.upb.h"
+#include "envoy/type/v3/ratelimit_unit.upb.h"
+#include "envoy/type/v3/token_bucket.upb.h"
+#include "xds/annotations/v3/status.upb.h"
+#include "udpa/annotations/status.upb.h"
+#include "validate/validate.upb.h"
+
+#include "upb/port_def.inc"
+
+static const upb_MiniTable_Sub envoy_type_v3_RateLimitStrategy_submsgs[2] = {
+ {.submsg = &envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_msginit},
+ {.submsg = &envoy_type_v3_TokenBucket_msginit},
+};
+
+static const upb_MiniTable_Field envoy_type_v3_RateLimitStrategy__fields[3] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_type_v3_RateLimitStrategy_msginit = {
+ &envoy_type_v3_RateLimitStrategy_submsgs[0],
+ &envoy_type_v3_RateLimitStrategy__fields[0],
+ UPB_SIZE(8, 16), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
+};
+
+static const upb_MiniTable_Field envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit__fields[2] = {
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_msginit = {
+ NULL,
+ &envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit__fields[0],
+ UPB_SIZE(16, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable *messages_layout[2] = {
+ &envoy_type_v3_RateLimitStrategy_msginit,
+ &envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_msginit,
+};
+
+const upb_MiniTable_File envoy_type_v3_ratelimit_strategy_proto_upb_file_layout = {
+ messages_layout,
+ NULL,
+ NULL,
+ 2,
+ 0,
+ 0,
+};
+
+#include "upb/port_undef.inc"
+
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h
new file mode 100644
index 0000000000..ce0249e6c0
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h
@@ -0,0 +1,202 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/type/v3/ratelimit_strategy.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#ifndef ENVOY_TYPE_V3_RATELIMIT_STRATEGY_PROTO_UPB_H_
+#define ENVOY_TYPE_V3_RATELIMIT_STRATEGY_PROTO_UPB_H_
+
+#include "upb/msg_internal.h"
+#include "upb/decode.h"
+#include "upb/decode_fast.h"
+#include "upb/encode.h"
+
+#include "upb/port_def.inc"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct envoy_type_v3_RateLimitStrategy;
+struct envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit;
+typedef struct envoy_type_v3_RateLimitStrategy envoy_type_v3_RateLimitStrategy;
+typedef struct envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit;
+extern const upb_MiniTable envoy_type_v3_RateLimitStrategy_msginit;
+extern const upb_MiniTable envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_msginit;
+struct envoy_type_v3_TokenBucket;
+extern const upb_MiniTable envoy_type_v3_TokenBucket_msginit;
+
+typedef enum {
+ envoy_type_v3_RateLimitStrategy_ALLOW_ALL = 0,
+ envoy_type_v3_RateLimitStrategy_DENY_ALL = 1
+} envoy_type_v3_RateLimitStrategy_BlanketRule;
+
+
+
+/* envoy.type.v3.RateLimitStrategy */
+
+UPB_INLINE envoy_type_v3_RateLimitStrategy* envoy_type_v3_RateLimitStrategy_new(upb_Arena* arena) {
+ return (envoy_type_v3_RateLimitStrategy*)_upb_Message_New(&envoy_type_v3_RateLimitStrategy_msginit, arena);
+}
+UPB_INLINE envoy_type_v3_RateLimitStrategy* envoy_type_v3_RateLimitStrategy_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_type_v3_RateLimitStrategy* ret = envoy_type_v3_RateLimitStrategy_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_type_v3_RateLimitStrategy_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_type_v3_RateLimitStrategy* envoy_type_v3_RateLimitStrategy_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_type_v3_RateLimitStrategy* ret = envoy_type_v3_RateLimitStrategy_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_type_v3_RateLimitStrategy_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_type_v3_RateLimitStrategy_serialize(const envoy_type_v3_RateLimitStrategy* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_RateLimitStrategy_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_type_v3_RateLimitStrategy_serialize_ex(const envoy_type_v3_RateLimitStrategy* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_RateLimitStrategy_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+typedef enum {
+ envoy_type_v3_RateLimitStrategy_strategy_blanket_rule = 1,
+ envoy_type_v3_RateLimitStrategy_strategy_requests_per_time_unit = 2,
+ envoy_type_v3_RateLimitStrategy_strategy_token_bucket = 3,
+ envoy_type_v3_RateLimitStrategy_strategy_NOT_SET = 0
+} envoy_type_v3_RateLimitStrategy_strategy_oneofcases;
+UPB_INLINE envoy_type_v3_RateLimitStrategy_strategy_oneofcases envoy_type_v3_RateLimitStrategy_strategy_case(const envoy_type_v3_RateLimitStrategy* msg) {
+ return (envoy_type_v3_RateLimitStrategy_strategy_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool envoy_type_v3_RateLimitStrategy_has_blanket_rule(const envoy_type_v3_RateLimitStrategy* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void envoy_type_v3_RateLimitStrategy_clear_blanket_rule(const envoy_type_v3_RateLimitStrategy* msg) {
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_v3_RateLimitStrategy_strategy_NOT_SET);
+}
+UPB_INLINE int32_t envoy_type_v3_RateLimitStrategy_blanket_rule(const envoy_type_v3_RateLimitStrategy* msg) {
+ return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, 0);
+}
+UPB_INLINE bool envoy_type_v3_RateLimitStrategy_has_requests_per_time_unit(const envoy_type_v3_RateLimitStrategy* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void envoy_type_v3_RateLimitStrategy_clear_requests_per_time_unit(const envoy_type_v3_RateLimitStrategy* msg) {
+ UPB_WRITE_ONEOF(msg, envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_v3_RateLimitStrategy_strategy_NOT_SET);
+}
+UPB_INLINE const envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* envoy_type_v3_RateLimitStrategy_requests_per_time_unit(const envoy_type_v3_RateLimitStrategy* msg) {
+ return UPB_READ_ONEOF(msg, const envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool envoy_type_v3_RateLimitStrategy_has_token_bucket(const envoy_type_v3_RateLimitStrategy* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void envoy_type_v3_RateLimitStrategy_clear_token_bucket(const envoy_type_v3_RateLimitStrategy* msg) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_v3_TokenBucket*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), envoy_type_v3_RateLimitStrategy_strategy_NOT_SET);
+}
+UPB_INLINE const struct envoy_type_v3_TokenBucket* envoy_type_v3_RateLimitStrategy_token_bucket(const envoy_type_v3_RateLimitStrategy* msg) {
+ return UPB_READ_ONEOF(msg, const struct envoy_type_v3_TokenBucket*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
+
+UPB_INLINE void envoy_type_v3_RateLimitStrategy_set_blanket_rule(envoy_type_v3_RateLimitStrategy *msg, int32_t value) {
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
+}
+UPB_INLINE void envoy_type_v3_RateLimitStrategy_set_requests_per_time_unit(envoy_type_v3_RateLimitStrategy *msg, envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* value) {
+ UPB_WRITE_ONEOF(msg, envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
+}
+UPB_INLINE struct envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* envoy_type_v3_RateLimitStrategy_mutable_requests_per_time_unit(envoy_type_v3_RateLimitStrategy* msg, upb_Arena* arena) {
+ struct envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* sub = (struct envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit*)envoy_type_v3_RateLimitStrategy_requests_per_time_unit(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit*)_upb_Message_New(&envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_msginit, arena);
+ if (!sub) return NULL;
+ envoy_type_v3_RateLimitStrategy_set_requests_per_time_unit(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void envoy_type_v3_RateLimitStrategy_set_token_bucket(envoy_type_v3_RateLimitStrategy *msg, struct envoy_type_v3_TokenBucket* value) {
+ UPB_WRITE_ONEOF(msg, struct envoy_type_v3_TokenBucket*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
+}
+UPB_INLINE struct envoy_type_v3_TokenBucket* envoy_type_v3_RateLimitStrategy_mutable_token_bucket(envoy_type_v3_RateLimitStrategy* msg, upb_Arena* arena) {
+ struct envoy_type_v3_TokenBucket* sub = (struct envoy_type_v3_TokenBucket*)envoy_type_v3_RateLimitStrategy_token_bucket(msg);
+ if (sub == NULL) {
+ sub = (struct envoy_type_v3_TokenBucket*)_upb_Message_New(&envoy_type_v3_TokenBucket_msginit, arena);
+ if (!sub) return NULL;
+ envoy_type_v3_RateLimitStrategy_set_token_bucket(msg, sub);
+ }
+ return sub;
+}
+
+/* envoy.type.v3.RateLimitStrategy.RequestsPerTimeUnit */
+
+UPB_INLINE envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_new(upb_Arena* arena) {
+ return (envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit*)_upb_Message_New(&envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_msginit, arena);
+}
+UPB_INLINE envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_parse(const char* buf, size_t size, upb_Arena* arena) {
+ envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* ret = envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* ret = envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_serialize(const envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_serialize_ex(const envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_clear_requests_per_time_unit(const envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = 0;
+}
+UPB_INLINE uint64_t envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_requests_per_time_unit(const envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
+}
+UPB_INLINE void envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_clear_time_unit(const envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
+}
+UPB_INLINE int32_t envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_time_unit(const envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+
+UPB_INLINE void envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_set_requests_per_time_unit(envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit *msg, uint64_t value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = value;
+}
+UPB_INLINE void envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_set_time_unit(envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit *msg, int32_t value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
+}
+
+extern const upb_MiniTable_File envoy_type_v3_ratelimit_strategy_proto_upb_file_layout;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* ENVOY_TYPE_V3_RATELIMIT_STRATEGY_PROTO_UPB_H_ */
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c
index 43ac959883..38e75e0ec1 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c
@@ -15,15 +15,15 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field envoy_type_v3_SemanticVersion__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 4), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 8), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_v3_SemanticVersion_msginit = {
NULL,
&envoy_type_v3_SemanticVersion__fields[0],
- UPB_SIZE(16, 16), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 16), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h
index cf09268aaf..98025bd5ac 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h
@@ -51,18 +51,31 @@ UPB_INLINE envoy_type_v3_SemanticVersion* envoy_type_v3_SemanticVersion_parse_ex
return ret;
}
UPB_INLINE char* envoy_type_v3_SemanticVersion_serialize(const envoy_type_v3_SemanticVersion* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_SemanticVersion_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_SemanticVersion_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_v3_SemanticVersion_serialize_ex(const envoy_type_v3_SemanticVersion* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_SemanticVersion_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_SemanticVersion_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_v3_SemanticVersion_clear_major_number(const envoy_type_v3_SemanticVersion* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_type_v3_SemanticVersion_major_number(const envoy_type_v3_SemanticVersion* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t);
}
+UPB_INLINE void envoy_type_v3_SemanticVersion_clear_minor_number(const envoy_type_v3_SemanticVersion* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = 0;
+}
UPB_INLINE uint32_t envoy_type_v3_SemanticVersion_minor_number(const envoy_type_v3_SemanticVersion* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
}
+UPB_INLINE void envoy_type_v3_SemanticVersion_clear_patch(const envoy_type_v3_SemanticVersion* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint32_t) = 0;
+}
UPB_INLINE uint32_t envoy_type_v3_SemanticVersion_patch(const envoy_type_v3_SemanticVersion* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint32_t);
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c
index cf7383ac4c..f5b2a2dded 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c
@@ -18,20 +18,20 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub envoy_type_v3_TokenBucket_submsgs[2] = {
- {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &google_protobuf_UInt32Value_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field envoy_type_v3_TokenBucket__fields[3] = {
- {1, UPB_SIZE(4, 4), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable envoy_type_v3_TokenBucket_msginit = {
&envoy_type_v3_TokenBucket_submsgs[0],
&envoy_type_v3_TokenBucket__fields[0],
- UPB_SIZE(16, 24), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h
index 67be19fbb1..7ebf2314c9 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h
@@ -55,20 +55,37 @@ UPB_INLINE envoy_type_v3_TokenBucket* envoy_type_v3_TokenBucket_parse_ex(const c
return ret;
}
UPB_INLINE char* envoy_type_v3_TokenBucket_serialize(const envoy_type_v3_TokenBucket* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_TokenBucket_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_TokenBucket_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* envoy_type_v3_TokenBucket_serialize_ex(const envoy_type_v3_TokenBucket* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &envoy_type_v3_TokenBucket_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &envoy_type_v3_TokenBucket_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void envoy_type_v3_TokenBucket_clear_max_tokens(const envoy_type_v3_TokenBucket* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = 0;
}
UPB_INLINE uint32_t envoy_type_v3_TokenBucket_max_tokens(const envoy_type_v3_TokenBucket* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
}
-UPB_INLINE bool envoy_type_v3_TokenBucket_has_tokens_per_fill(const envoy_type_v3_TokenBucket *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool envoy_type_v3_TokenBucket_has_tokens_per_fill(const envoy_type_v3_TokenBucket* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void envoy_type_v3_TokenBucket_clear_tokens_per_fill(const envoy_type_v3_TokenBucket* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_UInt32Value* envoy_type_v3_TokenBucket_tokens_per_fill(const envoy_type_v3_TokenBucket* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct google_protobuf_UInt32Value*);
}
-UPB_INLINE bool envoy_type_v3_TokenBucket_has_fill_interval(const envoy_type_v3_TokenBucket *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool envoy_type_v3_TokenBucket_has_fill_interval(const envoy_type_v3_TokenBucket* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void envoy_type_v3_TokenBucket_clear_fill_interval(const envoy_type_v3_TokenBucket* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* envoy_type_v3_TokenBucket_fill_interval(const envoy_type_v3_TokenBucket* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct google_protobuf_Duration*);
}
@@ -80,7 +97,7 @@ UPB_INLINE void envoy_type_v3_TokenBucket_set_tokens_per_fill(envoy_type_v3_Toke
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct google_protobuf_UInt32Value*) = value;
}
-UPB_INLINE struct google_protobuf_UInt32Value* envoy_type_v3_TokenBucket_mutable_tokens_per_fill(envoy_type_v3_TokenBucket *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UInt32Value* envoy_type_v3_TokenBucket_mutable_tokens_per_fill(envoy_type_v3_TokenBucket* msg, upb_Arena* arena) {
struct google_protobuf_UInt32Value* sub = (struct google_protobuf_UInt32Value*)envoy_type_v3_TokenBucket_tokens_per_fill(msg);
if (sub == NULL) {
sub = (struct google_protobuf_UInt32Value*)_upb_Message_New(&google_protobuf_UInt32Value_msginit, arena);
@@ -93,7 +110,7 @@ UPB_INLINE void envoy_type_v3_TokenBucket_set_fill_interval(envoy_type_v3_TokenB
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* envoy_type_v3_TokenBucket_mutable_fill_interval(envoy_type_v3_TokenBucket *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* envoy_type_v3_TokenBucket_mutable_fill_interval(envoy_type_v3_TokenBucket* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)envoy_type_v3_TokenBucket_fill_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/annotations.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/annotations.upb.c
index a81cf95ce2..c446cfd21b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/annotations.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/annotations.upb.c
@@ -17,9 +17,9 @@
extern const upb_MiniTable google_api_HttpRule_msginit;
extern const upb_MiniTable google_protobuf_MethodOptions_msginit;
const upb_MiniTable_Extension google_api_http_ext = {
- {72295728, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_MethodOptions_msginit,
- {.submsg = &google_api_HttpRule_msginit},
+ {72295728, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_MethodOptions_msginit,
+ {.submsg = &google_api_HttpRule_msginit},
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/annotations.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/annotations.upb.h
index 01ee589d2e..60df095cba 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/annotations.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/annotations.upb.h
@@ -25,8 +25,23 @@ struct google_protobuf_MethodOptions;
extern const upb_MiniTable google_protobuf_MethodOptions_msginit;
-UPB_INLINE bool google_api_has_http(const struct google_protobuf_MethodOptions *msg) { return _upb_Message_Getext(msg, &google_api_http_ext) != NULL; }
-UPB_INLINE const struct google_api_HttpRule* google_api_http(const struct google_protobuf_MethodOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &google_api_http_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const struct google_api_HttpRule*); }
+UPB_INLINE bool google_api_has_http(const struct google_protobuf_MethodOptions* msg) {
+ return _upb_Message_Getext(msg, &google_api_http_ext) != NULL;
+}
+UPB_INLINE void google_api_clear_http(struct google_protobuf_MethodOptions* msg) {
+ _upb_Message_Clearext(msg, &google_api_http_ext);
+}
+UPB_INLINE const struct google_api_HttpRule* google_api_http(const struct google_protobuf_MethodOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &google_api_http_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const struct google_api_HttpRule*);
+}
+UPB_INLINE void google_api_set_http(struct google_protobuf_MethodOptions* msg, const struct google_api_HttpRule* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &google_api_http_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const struct google_api_HttpRule*) = ext;
+}
extern const upb_MiniTable_File google_api_annotations_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c
index 9f1e0f77cf..416ce312a8 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c
@@ -23,16 +23,16 @@ static const upb_MiniTable_Sub google_api_expr_v1alpha1_CheckedExpr_submsgs[4] =
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_CheckedExpr__fields[4] = {
- {2, UPB_SIZE(12, 24), 0, 0, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 0, 1, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(4, 8), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 16), 2, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_CheckedExpr_msginit = {
&google_api_expr_v1alpha1_CheckedExpr_submsgs[0],
&google_api_expr_v1alpha1_CheckedExpr__fields[0],
- UPB_SIZE(24, 40), 4, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry_submsgs[1] = {
@@ -40,14 +40,14 @@ static const upb_MiniTable_Sub google_api_expr_v1alpha1_CheckedExpr_ReferenceMap
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry_msginit = {
&google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry_submsgs[0],
&google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry_submsgs[1] = {
@@ -55,45 +55,46 @@ static const upb_MiniTable_Sub google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry_msginit = {
&google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry_submsgs[0],
&google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub google_api_expr_v1alpha1_Type_submsgs[6] = {
- {.submsg = &google_api_expr_v1alpha1_Type_msginit},
- {.submsg = &google_api_expr_v1alpha1_Type_AbstractType_msginit},
- {.submsg = &google_api_expr_v1alpha1_Type_FunctionType_msginit},
+static const upb_MiniTable_Sub google_api_expr_v1alpha1_Type_submsgs[7] = {
+ {.submsg = &google_protobuf_Empty_msginit},
{.submsg = &google_api_expr_v1alpha1_Type_ListType_msginit},
{.submsg = &google_api_expr_v1alpha1_Type_MapType_msginit},
+ {.submsg = &google_api_expr_v1alpha1_Type_FunctionType_msginit},
+ {.submsg = &google_api_expr_v1alpha1_Type_msginit},
{.submsg = &google_protobuf_Empty_msginit},
+ {.submsg = &google_api_expr_v1alpha1_Type_AbstractType_msginit},
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Type__fields[13] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {10, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {11, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {14, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Type_msginit = {
&google_api_expr_v1alpha1_Type_submsgs[0],
&google_api_expr_v1alpha1_Type__fields[0],
- UPB_SIZE(16, 32), 13, upb_ExtMode_NonExtendable, 12, 255, 0,
+ UPB_SIZE(16, 24), 13, kUpb_ExtMode_NonExtendable, 12, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_Type_ListType_submsgs[1] = {
@@ -101,43 +102,45 @@ static const upb_MiniTable_Sub google_api_expr_v1alpha1_Type_ListType_submsgs[1]
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Type_ListType__fields[1] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Type_ListType_msginit = {
&google_api_expr_v1alpha1_Type_ListType_submsgs[0],
&google_api_expr_v1alpha1_Type_ListType__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub google_api_expr_v1alpha1_Type_MapType_submsgs[1] = {
+static const upb_MiniTable_Sub google_api_expr_v1alpha1_Type_MapType_submsgs[2] = {
+ {.submsg = &google_api_expr_v1alpha1_Type_msginit},
{.submsg = &google_api_expr_v1alpha1_Type_msginit},
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Type_MapType__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Type_MapType_msginit = {
&google_api_expr_v1alpha1_Type_MapType_submsgs[0],
&google_api_expr_v1alpha1_Type_MapType__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub google_api_expr_v1alpha1_Type_FunctionType_submsgs[1] = {
+static const upb_MiniTable_Sub google_api_expr_v1alpha1_Type_FunctionType_submsgs[2] = {
+ {.submsg = &google_api_expr_v1alpha1_Type_msginit},
{.submsg = &google_api_expr_v1alpha1_Type_msginit},
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Type_FunctionType__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Type_FunctionType_msginit = {
&google_api_expr_v1alpha1_Type_FunctionType_submsgs[0],
&google_api_expr_v1alpha1_Type_FunctionType__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_Type_AbstractType_submsgs[1] = {
@@ -145,48 +148,48 @@ static const upb_MiniTable_Sub google_api_expr_v1alpha1_Type_AbstractType_submsg
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Type_AbstractType__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Type_AbstractType_msginit = {
&google_api_expr_v1alpha1_Type_AbstractType_submsgs[0],
&google_api_expr_v1alpha1_Type_AbstractType__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_Decl_submsgs[2] = {
- {.submsg = &google_api_expr_v1alpha1_Decl_FunctionDecl_msginit},
{.submsg = &google_api_expr_v1alpha1_Decl_IdentDecl_msginit},
+ {.submsg = &google_api_expr_v1alpha1_Decl_FunctionDecl_msginit},
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Decl__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Decl_msginit = {
&google_api_expr_v1alpha1_Decl_submsgs[0],
&google_api_expr_v1alpha1_Decl__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_Decl_IdentDecl_submsgs[2] = {
- {.submsg = &google_api_expr_v1alpha1_Constant_msginit},
{.submsg = &google_api_expr_v1alpha1_Type_msginit},
+ {.submsg = &google_api_expr_v1alpha1_Constant_msginit},
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Decl_IdentDecl__fields[3] = {
- {1, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Decl_IdentDecl_msginit = {
&google_api_expr_v1alpha1_Decl_IdentDecl_submsgs[0],
&google_api_expr_v1alpha1_Decl_IdentDecl__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_Decl_FunctionDecl_submsgs[1] = {
@@ -194,32 +197,33 @@ static const upb_MiniTable_Sub google_api_expr_v1alpha1_Decl_FunctionDecl_submsg
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Decl_FunctionDecl__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Decl_FunctionDecl_msginit = {
&google_api_expr_v1alpha1_Decl_FunctionDecl_submsgs[0],
&google_api_expr_v1alpha1_Decl_FunctionDecl__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_submsgs[1] = {
+static const upb_MiniTable_Sub google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_submsgs[2] = {
+ {.submsg = &google_api_expr_v1alpha1_Type_msginit},
{.submsg = &google_api_expr_v1alpha1_Type_msginit},
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Decl_FunctionDecl_Overload__fields[6] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(24, 48), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(28, 56), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 40), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 48), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_msginit = {
&google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_submsgs[0],
&google_api_expr_v1alpha1_Decl_FunctionDecl_Overload__fields[0],
- UPB_SIZE(32, 64), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(32, 64), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_Reference_submsgs[1] = {
@@ -227,15 +231,15 @@ static const upb_MiniTable_Sub google_api_expr_v1alpha1_Reference_submsgs[1] = {
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Reference__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Reference_msginit = {
&google_api_expr_v1alpha1_Reference_submsgs[0],
&google_api_expr_v1alpha1_Reference__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[13] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h
index b203c20dab..62875b994c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h
@@ -112,42 +112,90 @@ UPB_INLINE google_api_expr_v1alpha1_CheckedExpr* google_api_expr_v1alpha1_Checke
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_CheckedExpr_serialize(const google_api_expr_v1alpha1_CheckedExpr* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_CheckedExpr_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_CheckedExpr_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_CheckedExpr_serialize_ex(const google_api_expr_v1alpha1_CheckedExpr* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_CheckedExpr_msginit, options, arena, len);
-}
-UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_has_reference_map(const google_api_expr_v1alpha1_CheckedExpr *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE size_t google_api_expr_v1alpha1_CheckedExpr_reference_map_size(const google_api_expr_v1alpha1_CheckedExpr *msg) {return _upb_msg_map_size(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_reference_map_get(const google_api_expr_v1alpha1_CheckedExpr *msg, int64_t key, google_api_expr_v1alpha1_Reference* *val) { return _upb_msg_map_get(msg, UPB_SIZE(12, 24), &key, sizeof(key), val, sizeof(*val)); }
-UPB_INLINE const google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry* google_api_expr_v1alpha1_CheckedExpr_reference_map_next(const google_api_expr_v1alpha1_CheckedExpr *msg, size_t* iter) { return (const google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry*)_upb_msg_map_next(msg, UPB_SIZE(12, 24), iter); }
-UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_has_type_map(const google_api_expr_v1alpha1_CheckedExpr *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE size_t google_api_expr_v1alpha1_CheckedExpr_type_map_size(const google_api_expr_v1alpha1_CheckedExpr *msg) {return _upb_msg_map_size(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_type_map_get(const google_api_expr_v1alpha1_CheckedExpr *msg, int64_t key, google_api_expr_v1alpha1_Type* *val) { return _upb_msg_map_get(msg, UPB_SIZE(16, 32), &key, sizeof(key), val, sizeof(*val)); }
-UPB_INLINE const google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry* google_api_expr_v1alpha1_CheckedExpr_type_map_next(const google_api_expr_v1alpha1_CheckedExpr *msg, size_t* iter) { return (const google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry*)_upb_msg_map_next(msg, UPB_SIZE(16, 32), iter); }
-UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_has_expr(const google_api_expr_v1alpha1_CheckedExpr *msg) { return _upb_hasbit(msg, 1); }
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_CheckedExpr_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_has_reference_map(const google_api_expr_v1alpha1_CheckedExpr* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void google_api_expr_v1alpha1_CheckedExpr_clear_reference_map(const google_api_expr_v1alpha1_CheckedExpr* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE size_t google_api_expr_v1alpha1_CheckedExpr_reference_map_size(const google_api_expr_v1alpha1_CheckedExpr* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_reference_map_get(const google_api_expr_v1alpha1_CheckedExpr* msg, int64_t key, google_api_expr_v1alpha1_Reference** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(4, 8), &key, sizeof(key), val, sizeof(*val));
+}
+UPB_INLINE const google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry* google_api_expr_v1alpha1_CheckedExpr_reference_map_next(const google_api_expr_v1alpha1_CheckedExpr* msg, size_t* iter) {
+ return (const google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry*)_upb_msg_map_next(msg, UPB_SIZE(4, 8), iter);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_has_type_map(const google_api_expr_v1alpha1_CheckedExpr* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void google_api_expr_v1alpha1_CheckedExpr_clear_type_map(const google_api_expr_v1alpha1_CheckedExpr* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE size_t google_api_expr_v1alpha1_CheckedExpr_type_map_size(const google_api_expr_v1alpha1_CheckedExpr* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_type_map_get(const google_api_expr_v1alpha1_CheckedExpr* msg, int64_t key, google_api_expr_v1alpha1_Type** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(8, 16), &key, sizeof(key), val, sizeof(*val));
+}
+UPB_INLINE const google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry* google_api_expr_v1alpha1_CheckedExpr_type_map_next(const google_api_expr_v1alpha1_CheckedExpr* msg, size_t* iter) {
+ return (const google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry*)_upb_msg_map_next(msg, UPB_SIZE(8, 16), iter);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_has_expr(const google_api_expr_v1alpha1_CheckedExpr* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_api_expr_v1alpha1_CheckedExpr_clear_expr(const google_api_expr_v1alpha1_CheckedExpr* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_CheckedExpr_expr(const google_api_expr_v1alpha1_CheckedExpr* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_api_expr_v1alpha1_Expr*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_api_expr_v1alpha1_Expr*);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_has_source_info(const google_api_expr_v1alpha1_CheckedExpr* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_api_expr_v1alpha1_CheckedExpr_clear_source_info(const google_api_expr_v1alpha1_CheckedExpr* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_has_source_info(const google_api_expr_v1alpha1_CheckedExpr *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_api_expr_v1alpha1_SourceInfo* google_api_expr_v1alpha1_CheckedExpr_source_info(const google_api_expr_v1alpha1_CheckedExpr* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_api_expr_v1alpha1_SourceInfo*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_api_expr_v1alpha1_SourceInfo*);
}
-UPB_INLINE void google_api_expr_v1alpha1_CheckedExpr_reference_map_clear(google_api_expr_v1alpha1_CheckedExpr *msg) { _upb_msg_map_clear(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_reference_map_set(google_api_expr_v1alpha1_CheckedExpr *msg, int64_t key, google_api_expr_v1alpha1_Reference* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(12, 24), &key, sizeof(key), &val, sizeof(val), a); }
-UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_reference_map_delete(google_api_expr_v1alpha1_CheckedExpr *msg, int64_t key) { return _upb_msg_map_delete(msg, UPB_SIZE(12, 24), &key, sizeof(key)); }
-UPB_INLINE google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry* google_api_expr_v1alpha1_CheckedExpr_reference_map_nextmutable(google_api_expr_v1alpha1_CheckedExpr *msg, size_t* iter) { return (google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry*)_upb_msg_map_next(msg, UPB_SIZE(12, 24), iter); }
-UPB_INLINE void google_api_expr_v1alpha1_CheckedExpr_type_map_clear(google_api_expr_v1alpha1_CheckedExpr *msg) { _upb_msg_map_clear(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_type_map_set(google_api_expr_v1alpha1_CheckedExpr *msg, int64_t key, google_api_expr_v1alpha1_Type* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(16, 32), &key, sizeof(key), &val, sizeof(val), a); }
-UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_type_map_delete(google_api_expr_v1alpha1_CheckedExpr *msg, int64_t key) { return _upb_msg_map_delete(msg, UPB_SIZE(16, 32), &key, sizeof(key)); }
-UPB_INLINE google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry* google_api_expr_v1alpha1_CheckedExpr_type_map_nextmutable(google_api_expr_v1alpha1_CheckedExpr *msg, size_t* iter) { return (google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry*)_upb_msg_map_next(msg, UPB_SIZE(16, 32), iter); }
+UPB_INLINE void google_api_expr_v1alpha1_CheckedExpr_reference_map_clear(google_api_expr_v1alpha1_CheckedExpr* msg) { _upb_msg_map_clear(msg, UPB_SIZE(4, 8)); }
+UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_reference_map_set(google_api_expr_v1alpha1_CheckedExpr* msg, int64_t key, google_api_expr_v1alpha1_Reference* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(4, 8), &key, sizeof(key), &val, sizeof(val), a);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_reference_map_delete(google_api_expr_v1alpha1_CheckedExpr* msg, int64_t key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(4, 8), &key, sizeof(key));
+}
+UPB_INLINE google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry* google_api_expr_v1alpha1_CheckedExpr_reference_map_nextmutable(google_api_expr_v1alpha1_CheckedExpr* msg, size_t* iter) {
+ return (google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry*)_upb_msg_map_next(msg, UPB_SIZE(4, 8), iter);
+}
+UPB_INLINE void google_api_expr_v1alpha1_CheckedExpr_type_map_clear(google_api_expr_v1alpha1_CheckedExpr* msg) { _upb_msg_map_clear(msg, UPB_SIZE(8, 16)); }
+UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_type_map_set(google_api_expr_v1alpha1_CheckedExpr* msg, int64_t key, google_api_expr_v1alpha1_Type* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(8, 16), &key, sizeof(key), &val, sizeof(val), a);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_type_map_delete(google_api_expr_v1alpha1_CheckedExpr* msg, int64_t key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(8, 16), &key, sizeof(key));
+}
+UPB_INLINE google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry* google_api_expr_v1alpha1_CheckedExpr_type_map_nextmutable(google_api_expr_v1alpha1_CheckedExpr* msg, size_t* iter) {
+ return (google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry*)_upb_msg_map_next(msg, UPB_SIZE(8, 16), iter);
+}
UPB_INLINE void google_api_expr_v1alpha1_CheckedExpr_set_expr(google_api_expr_v1alpha1_CheckedExpr *msg, struct google_api_expr_v1alpha1_Expr* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_api_expr_v1alpha1_Expr*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_api_expr_v1alpha1_Expr*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_CheckedExpr_mutable_expr(google_api_expr_v1alpha1_CheckedExpr *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_CheckedExpr_mutable_expr(google_api_expr_v1alpha1_CheckedExpr* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr* sub = (struct google_api_expr_v1alpha1_Expr*)google_api_expr_v1alpha1_CheckedExpr_expr(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_msginit, arena);
@@ -158,9 +206,9 @@ UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Checke
}
UPB_INLINE void google_api_expr_v1alpha1_CheckedExpr_set_source_info(google_api_expr_v1alpha1_CheckedExpr *msg, struct google_api_expr_v1alpha1_SourceInfo* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_api_expr_v1alpha1_SourceInfo*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_api_expr_v1alpha1_SourceInfo*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_SourceInfo* google_api_expr_v1alpha1_CheckedExpr_mutable_source_info(google_api_expr_v1alpha1_CheckedExpr *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_SourceInfo* google_api_expr_v1alpha1_CheckedExpr_mutable_source_info(google_api_expr_v1alpha1_CheckedExpr* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_SourceInfo* sub = (struct google_api_expr_v1alpha1_SourceInfo*)google_api_expr_v1alpha1_CheckedExpr_source_info(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_SourceInfo*)_upb_Message_New(&google_api_expr_v1alpha1_SourceInfo_msginit, arena);
@@ -172,13 +220,15 @@ UPB_INLINE struct google_api_expr_v1alpha1_SourceInfo* google_api_expr_v1alpha1_
/* google.api.expr.v1alpha1.CheckedExpr.ReferenceMapEntry */
-UPB_INLINE int64_t google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry_key(const google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry *msg) {
+UPB_INLINE int64_t google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry_key(const google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry* msg) {
int64_t ret;
_upb_msg_map_key(msg, &ret, sizeof(ret));
return ret;
}
-UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry_has_value(const google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const google_api_expr_v1alpha1_Reference* google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry_value(const google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry *msg) {
+UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry_has_value(const google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const google_api_expr_v1alpha1_Reference* google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry_value(const google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry* msg) {
google_api_expr_v1alpha1_Reference* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -190,13 +240,15 @@ UPB_INLINE void google_api_expr_v1alpha1_CheckedExpr_ReferenceMapEntry_set_value
/* google.api.expr.v1alpha1.CheckedExpr.TypeMapEntry */
-UPB_INLINE int64_t google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry_key(const google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry *msg) {
+UPB_INLINE int64_t google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry_key(const google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry* msg) {
int64_t ret;
_upb_msg_map_key(msg, &ret, sizeof(ret));
return ret;
}
-UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry_has_value(const google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry_value(const google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry *msg) {
+UPB_INLINE bool google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry_has_value(const google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry_value(const google_api_expr_v1alpha1_CheckedExpr_TypeMapEntry* msg) {
google_api_expr_v1alpha1_Type* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -231,11 +283,15 @@ UPB_INLINE google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_parse_ex
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Type_serialize(const google_api_expr_v1alpha1_Type* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Type_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Type_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Type_serialize_ex(const google_api_expr_v1alpha1_Type* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Type_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Type_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
google_api_expr_v1alpha1_Type_type_kind_dyn = 1,
@@ -253,39 +309,131 @@ typedef enum {
google_api_expr_v1alpha1_Type_type_kind_abstract_type = 14,
google_api_expr_v1alpha1_Type_type_kind_NOT_SET = 0
} google_api_expr_v1alpha1_Type_type_kind_oneofcases;
-UPB_INLINE google_api_expr_v1alpha1_Type_type_kind_oneofcases google_api_expr_v1alpha1_Type_type_kind_case(const google_api_expr_v1alpha1_Type* msg) { return (google_api_expr_v1alpha1_Type_type_kind_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool google_api_expr_v1alpha1_Type_has_dyn(const google_api_expr_v1alpha1_Type *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE const struct google_protobuf_Empty* google_api_expr_v1alpha1_Type_dyn(const google_api_expr_v1alpha1_Type *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Empty*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Type_has_null(const google_api_expr_v1alpha1_Type *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 2; }
-UPB_INLINE int32_t google_api_expr_v1alpha1_Type_null(const google_api_expr_v1alpha1_Type *msg) { return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 2, 0); }
-UPB_INLINE bool google_api_expr_v1alpha1_Type_has_primitive(const google_api_expr_v1alpha1_Type *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 3; }
-UPB_INLINE int32_t google_api_expr_v1alpha1_Type_primitive(const google_api_expr_v1alpha1_Type *msg) { return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 3, 0); }
-UPB_INLINE bool google_api_expr_v1alpha1_Type_has_wrapper(const google_api_expr_v1alpha1_Type *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 4; }
-UPB_INLINE int32_t google_api_expr_v1alpha1_Type_wrapper(const google_api_expr_v1alpha1_Type *msg) { return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 4, 0); }
-UPB_INLINE bool google_api_expr_v1alpha1_Type_has_well_known(const google_api_expr_v1alpha1_Type *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 5; }
-UPB_INLINE int32_t google_api_expr_v1alpha1_Type_well_known(const google_api_expr_v1alpha1_Type *msg) { return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 5, 0); }
-UPB_INLINE bool google_api_expr_v1alpha1_Type_has_list_type(const google_api_expr_v1alpha1_Type *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 6; }
-UPB_INLINE const google_api_expr_v1alpha1_Type_ListType* google_api_expr_v1alpha1_Type_list_type(const google_api_expr_v1alpha1_Type *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Type_ListType*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 6, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Type_has_map_type(const google_api_expr_v1alpha1_Type *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 7; }
-UPB_INLINE const google_api_expr_v1alpha1_Type_MapType* google_api_expr_v1alpha1_Type_map_type(const google_api_expr_v1alpha1_Type *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Type_MapType*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 7, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Type_has_function(const google_api_expr_v1alpha1_Type *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 8; }
-UPB_INLINE const google_api_expr_v1alpha1_Type_FunctionType* google_api_expr_v1alpha1_Type_function(const google_api_expr_v1alpha1_Type *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Type_FunctionType*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 8, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Type_has_message_type(const google_api_expr_v1alpha1_Type *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 9; }
-UPB_INLINE upb_StringView google_api_expr_v1alpha1_Type_message_type(const google_api_expr_v1alpha1_Type *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 9, upb_StringView_FromString("")); }
-UPB_INLINE bool google_api_expr_v1alpha1_Type_has_type_param(const google_api_expr_v1alpha1_Type *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 10; }
-UPB_INLINE upb_StringView google_api_expr_v1alpha1_Type_type_param(const google_api_expr_v1alpha1_Type *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 10, upb_StringView_FromString("")); }
-UPB_INLINE bool google_api_expr_v1alpha1_Type_has_type(const google_api_expr_v1alpha1_Type *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 11; }
-UPB_INLINE const google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_type(const google_api_expr_v1alpha1_Type *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Type*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 11, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Type_has_error(const google_api_expr_v1alpha1_Type *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 12; }
-UPB_INLINE const struct google_protobuf_Empty* google_api_expr_v1alpha1_Type_error(const google_api_expr_v1alpha1_Type *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Empty*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 12, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Type_has_abstract_type(const google_api_expr_v1alpha1_Type *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 14; }
-UPB_INLINE const google_api_expr_v1alpha1_Type_AbstractType* google_api_expr_v1alpha1_Type_abstract_type(const google_api_expr_v1alpha1_Type *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Type_AbstractType*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 14, NULL); }
+UPB_INLINE google_api_expr_v1alpha1_Type_type_kind_oneofcases google_api_expr_v1alpha1_Type_type_kind_case(const google_api_expr_v1alpha1_Type* msg) {
+ return (google_api_expr_v1alpha1_Type_type_kind_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_has_dyn(const google_api_expr_v1alpha1_Type* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_clear_dyn(const google_api_expr_v1alpha1_Type* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Empty*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Type_type_kind_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Empty* google_api_expr_v1alpha1_Type_dyn(const google_api_expr_v1alpha1_Type* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Empty*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_has_null(const google_api_expr_v1alpha1_Type* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_clear_null(const google_api_expr_v1alpha1_Type* msg) {
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Type_type_kind_NOT_SET);
+}
+UPB_INLINE int32_t google_api_expr_v1alpha1_Type_null(const google_api_expr_v1alpha1_Type* msg) {
+ return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, 0);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_has_primitive(const google_api_expr_v1alpha1_Type* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_clear_primitive(const google_api_expr_v1alpha1_Type* msg) {
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Type_type_kind_NOT_SET);
+}
+UPB_INLINE int32_t google_api_expr_v1alpha1_Type_primitive(const google_api_expr_v1alpha1_Type* msg) {
+ return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, 0);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_has_wrapper(const google_api_expr_v1alpha1_Type* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_clear_wrapper(const google_api_expr_v1alpha1_Type* msg) {
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Type_type_kind_NOT_SET);
+}
+UPB_INLINE int32_t google_api_expr_v1alpha1_Type_wrapper(const google_api_expr_v1alpha1_Type* msg) {
+ return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, 0);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_has_well_known(const google_api_expr_v1alpha1_Type* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_clear_well_known(const google_api_expr_v1alpha1_Type* msg) {
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Type_type_kind_NOT_SET);
+}
+UPB_INLINE int32_t google_api_expr_v1alpha1_Type_well_known(const google_api_expr_v1alpha1_Type* msg) {
+ return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 5, 0);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_has_list_type(const google_api_expr_v1alpha1_Type* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 6;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_clear_list_type(const google_api_expr_v1alpha1_Type* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type_ListType*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Type_type_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Type_ListType* google_api_expr_v1alpha1_Type_list_type(const google_api_expr_v1alpha1_Type* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Type_ListType*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 6, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_has_map_type(const google_api_expr_v1alpha1_Type* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 7;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_clear_map_type(const google_api_expr_v1alpha1_Type* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type_MapType*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Type_type_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Type_MapType* google_api_expr_v1alpha1_Type_map_type(const google_api_expr_v1alpha1_Type* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Type_MapType*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 7, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_has_function(const google_api_expr_v1alpha1_Type* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 8;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_clear_function(const google_api_expr_v1alpha1_Type* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type_FunctionType*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Type_type_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Type_FunctionType* google_api_expr_v1alpha1_Type_function(const google_api_expr_v1alpha1_Type* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Type_FunctionType*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 8, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_has_message_type(const google_api_expr_v1alpha1_Type* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 9;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_clear_message_type(const google_api_expr_v1alpha1_Type* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), google_api_expr_v1alpha1_Type_type_kind_NOT_SET);
+}
+UPB_INLINE upb_StringView google_api_expr_v1alpha1_Type_message_type(const google_api_expr_v1alpha1_Type* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 9, upb_StringView_FromString(""));
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_has_type_param(const google_api_expr_v1alpha1_Type* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 10;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_clear_type_param(const google_api_expr_v1alpha1_Type* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), google_api_expr_v1alpha1_Type_type_kind_NOT_SET);
+}
+UPB_INLINE upb_StringView google_api_expr_v1alpha1_Type_type_param(const google_api_expr_v1alpha1_Type* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 10, upb_StringView_FromString(""));
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_has_type(const google_api_expr_v1alpha1_Type* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 11;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_clear_type(const google_api_expr_v1alpha1_Type* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Type_type_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_type(const google_api_expr_v1alpha1_Type* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Type*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 11, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_has_error(const google_api_expr_v1alpha1_Type* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 12;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_clear_error(const google_api_expr_v1alpha1_Type* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Empty*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Type_type_kind_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Empty* google_api_expr_v1alpha1_Type_error(const google_api_expr_v1alpha1_Type* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Empty*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 12, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_has_abstract_type(const google_api_expr_v1alpha1_Type* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 14;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_clear_abstract_type(const google_api_expr_v1alpha1_Type* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type_AbstractType*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Type_type_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Type_AbstractType* google_api_expr_v1alpha1_Type_abstract_type(const google_api_expr_v1alpha1_Type* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Type_AbstractType*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 14, NULL);
+}
UPB_INLINE void google_api_expr_v1alpha1_Type_set_dyn(google_api_expr_v1alpha1_Type *msg, struct google_protobuf_Empty* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Empty*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Empty*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct google_protobuf_Empty* google_api_expr_v1alpha1_Type_mutable_dyn(google_api_expr_v1alpha1_Type *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Empty* google_api_expr_v1alpha1_Type_mutable_dyn(google_api_expr_v1alpha1_Type* msg, upb_Arena* arena) {
struct google_protobuf_Empty* sub = (struct google_protobuf_Empty*)google_api_expr_v1alpha1_Type_dyn(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Empty*)_upb_Message_New(&google_protobuf_Empty_msginit, arena);
@@ -295,21 +443,21 @@ UPB_INLINE struct google_protobuf_Empty* google_api_expr_v1alpha1_Type_mutable_d
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Type_set_null(google_api_expr_v1alpha1_Type *msg, int32_t value) {
- UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 2);
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
UPB_INLINE void google_api_expr_v1alpha1_Type_set_primitive(google_api_expr_v1alpha1_Type *msg, int32_t value) {
- UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 3);
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
UPB_INLINE void google_api_expr_v1alpha1_Type_set_wrapper(google_api_expr_v1alpha1_Type *msg, int32_t value) {
- UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 4);
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
UPB_INLINE void google_api_expr_v1alpha1_Type_set_well_known(google_api_expr_v1alpha1_Type *msg, int32_t value) {
- UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 5);
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 5);
}
UPB_INLINE void google_api_expr_v1alpha1_Type_set_list_type(google_api_expr_v1alpha1_Type *msg, google_api_expr_v1alpha1_Type_ListType* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type_ListType*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 6);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type_ListType*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 6);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Type_ListType* google_api_expr_v1alpha1_Type_mutable_list_type(google_api_expr_v1alpha1_Type *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Type_ListType* google_api_expr_v1alpha1_Type_mutable_list_type(google_api_expr_v1alpha1_Type* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Type_ListType* sub = (struct google_api_expr_v1alpha1_Type_ListType*)google_api_expr_v1alpha1_Type_list_type(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Type_ListType*)_upb_Message_New(&google_api_expr_v1alpha1_Type_ListType_msginit, arena);
@@ -319,9 +467,9 @@ UPB_INLINE struct google_api_expr_v1alpha1_Type_ListType* google_api_expr_v1alph
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Type_set_map_type(google_api_expr_v1alpha1_Type *msg, google_api_expr_v1alpha1_Type_MapType* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type_MapType*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 7);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type_MapType*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 7);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Type_MapType* google_api_expr_v1alpha1_Type_mutable_map_type(google_api_expr_v1alpha1_Type *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Type_MapType* google_api_expr_v1alpha1_Type_mutable_map_type(google_api_expr_v1alpha1_Type* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Type_MapType* sub = (struct google_api_expr_v1alpha1_Type_MapType*)google_api_expr_v1alpha1_Type_map_type(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Type_MapType*)_upb_Message_New(&google_api_expr_v1alpha1_Type_MapType_msginit, arena);
@@ -331,9 +479,9 @@ UPB_INLINE struct google_api_expr_v1alpha1_Type_MapType* google_api_expr_v1alpha
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Type_set_function(google_api_expr_v1alpha1_Type *msg, google_api_expr_v1alpha1_Type_FunctionType* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type_FunctionType*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 8);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type_FunctionType*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 8);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Type_FunctionType* google_api_expr_v1alpha1_Type_mutable_function(google_api_expr_v1alpha1_Type *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Type_FunctionType* google_api_expr_v1alpha1_Type_mutable_function(google_api_expr_v1alpha1_Type* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Type_FunctionType* sub = (struct google_api_expr_v1alpha1_Type_FunctionType*)google_api_expr_v1alpha1_Type_function(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Type_FunctionType*)_upb_Message_New(&google_api_expr_v1alpha1_Type_FunctionType_msginit, arena);
@@ -343,15 +491,15 @@ UPB_INLINE struct google_api_expr_v1alpha1_Type_FunctionType* google_api_expr_v1
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Type_set_message_type(google_api_expr_v1alpha1_Type *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 9);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 9);
}
UPB_INLINE void google_api_expr_v1alpha1_Type_set_type_param(google_api_expr_v1alpha1_Type *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 10);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 10);
}
UPB_INLINE void google_api_expr_v1alpha1_Type_set_type(google_api_expr_v1alpha1_Type *msg, google_api_expr_v1alpha1_Type* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 11);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 11);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_mutable_type(google_api_expr_v1alpha1_Type *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_mutable_type(google_api_expr_v1alpha1_Type* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Type* sub = (struct google_api_expr_v1alpha1_Type*)google_api_expr_v1alpha1_Type_type(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Type*)_upb_Message_New(&google_api_expr_v1alpha1_Type_msginit, arena);
@@ -361,9 +509,9 @@ UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_m
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Type_set_error(google_api_expr_v1alpha1_Type *msg, struct google_protobuf_Empty* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Empty*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 12);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Empty*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 12);
}
-UPB_INLINE struct google_protobuf_Empty* google_api_expr_v1alpha1_Type_mutable_error(google_api_expr_v1alpha1_Type *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Empty* google_api_expr_v1alpha1_Type_mutable_error(google_api_expr_v1alpha1_Type* msg, upb_Arena* arena) {
struct google_protobuf_Empty* sub = (struct google_protobuf_Empty*)google_api_expr_v1alpha1_Type_error(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Empty*)_upb_Message_New(&google_protobuf_Empty_msginit, arena);
@@ -373,9 +521,9 @@ UPB_INLINE struct google_protobuf_Empty* google_api_expr_v1alpha1_Type_mutable_e
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Type_set_abstract_type(google_api_expr_v1alpha1_Type *msg, google_api_expr_v1alpha1_Type_AbstractType* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type_AbstractType*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 14);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Type_AbstractType*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 14);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Type_AbstractType* google_api_expr_v1alpha1_Type_mutable_abstract_type(google_api_expr_v1alpha1_Type *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Type_AbstractType* google_api_expr_v1alpha1_Type_mutable_abstract_type(google_api_expr_v1alpha1_Type* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Type_AbstractType* sub = (struct google_api_expr_v1alpha1_Type_AbstractType*)google_api_expr_v1alpha1_Type_abstract_type(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Type_AbstractType*)_upb_Message_New(&google_api_expr_v1alpha1_Type_AbstractType_msginit, arena);
@@ -410,13 +558,22 @@ UPB_INLINE google_api_expr_v1alpha1_Type_ListType* google_api_expr_v1alpha1_Type
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Type_ListType_serialize(const google_api_expr_v1alpha1_Type_ListType* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Type_ListType_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Type_ListType_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Type_ListType_serialize_ex(const google_api_expr_v1alpha1_Type_ListType* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Type_ListType_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Type_ListType_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_ListType_has_elem_type(const google_api_expr_v1alpha1_Type_ListType* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_ListType_clear_elem_type(const google_api_expr_v1alpha1_Type_ListType* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool google_api_expr_v1alpha1_Type_ListType_has_elem_type(const google_api_expr_v1alpha1_Type_ListType *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_ListType_elem_type(const google_api_expr_v1alpha1_Type_ListType* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const google_api_expr_v1alpha1_Type*);
}
@@ -425,7 +582,7 @@ UPB_INLINE void google_api_expr_v1alpha1_Type_ListType_set_elem_type(google_api_
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), google_api_expr_v1alpha1_Type*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_ListType_mutable_elem_type(google_api_expr_v1alpha1_Type_ListType *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_ListType_mutable_elem_type(google_api_expr_v1alpha1_Type_ListType* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Type* sub = (struct google_api_expr_v1alpha1_Type*)google_api_expr_v1alpha1_Type_ListType_elem_type(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Type*)_upb_Message_New(&google_api_expr_v1alpha1_Type_msginit, arena);
@@ -460,17 +617,31 @@ UPB_INLINE google_api_expr_v1alpha1_Type_MapType* google_api_expr_v1alpha1_Type_
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Type_MapType_serialize(const google_api_expr_v1alpha1_Type_MapType* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Type_MapType_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Type_MapType_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Type_MapType_serialize_ex(const google_api_expr_v1alpha1_Type_MapType* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Type_MapType_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Type_MapType_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_MapType_has_key_type(const google_api_expr_v1alpha1_Type_MapType* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_MapType_clear_key_type(const google_api_expr_v1alpha1_Type_MapType* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool google_api_expr_v1alpha1_Type_MapType_has_key_type(const google_api_expr_v1alpha1_Type_MapType *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_MapType_key_type(const google_api_expr_v1alpha1_Type_MapType* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const google_api_expr_v1alpha1_Type*);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Type_MapType_has_value_type(const google_api_expr_v1alpha1_Type_MapType *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_api_expr_v1alpha1_Type_MapType_has_value_type(const google_api_expr_v1alpha1_Type_MapType* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_MapType_clear_value_type(const google_api_expr_v1alpha1_Type_MapType* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_MapType_value_type(const google_api_expr_v1alpha1_Type_MapType* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const google_api_expr_v1alpha1_Type*);
}
@@ -479,7 +650,7 @@ UPB_INLINE void google_api_expr_v1alpha1_Type_MapType_set_key_type(google_api_ex
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), google_api_expr_v1alpha1_Type*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_MapType_mutable_key_type(google_api_expr_v1alpha1_Type_MapType *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_MapType_mutable_key_type(google_api_expr_v1alpha1_Type_MapType* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Type* sub = (struct google_api_expr_v1alpha1_Type*)google_api_expr_v1alpha1_Type_MapType_key_type(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Type*)_upb_Message_New(&google_api_expr_v1alpha1_Type_msginit, arena);
@@ -492,7 +663,7 @@ UPB_INLINE void google_api_expr_v1alpha1_Type_MapType_set_value_type(google_api_
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), google_api_expr_v1alpha1_Type*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_MapType_mutable_value_type(google_api_expr_v1alpha1_Type_MapType *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_MapType_mutable_value_type(google_api_expr_v1alpha1_Type_MapType* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Type* sub = (struct google_api_expr_v1alpha1_Type*)google_api_expr_v1alpha1_Type_MapType_value_type(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Type*)_upb_Message_New(&google_api_expr_v1alpha1_Type_msginit, arena);
@@ -527,24 +698,40 @@ UPB_INLINE google_api_expr_v1alpha1_Type_FunctionType* google_api_expr_v1alpha1_
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Type_FunctionType_serialize(const google_api_expr_v1alpha1_Type_FunctionType* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Type_FunctionType_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Type_FunctionType_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Type_FunctionType_serialize_ex(const google_api_expr_v1alpha1_Type_FunctionType* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Type_FunctionType_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Type_FunctionType_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Type_FunctionType_has_result_type(const google_api_expr_v1alpha1_Type_FunctionType* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_FunctionType_clear_result_type(const google_api_expr_v1alpha1_Type_FunctionType* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool google_api_expr_v1alpha1_Type_FunctionType_has_result_type(const google_api_expr_v1alpha1_Type_FunctionType *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_FunctionType_result_type(const google_api_expr_v1alpha1_Type_FunctionType* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const google_api_expr_v1alpha1_Type*);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Type_FunctionType_has_arg_types(const google_api_expr_v1alpha1_Type_FunctionType *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const google_api_expr_v1alpha1_Type* const* google_api_expr_v1alpha1_Type_FunctionType_arg_types(const google_api_expr_v1alpha1_Type_FunctionType *msg, size_t *len) { return (const google_api_expr_v1alpha1_Type* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
+UPB_INLINE bool google_api_expr_v1alpha1_Type_FunctionType_has_arg_types(const google_api_expr_v1alpha1_Type_FunctionType* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_FunctionType_clear_arg_types(const google_api_expr_v1alpha1_Type_FunctionType* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const google_api_expr_v1alpha1_Type* const* google_api_expr_v1alpha1_Type_FunctionType_arg_types(const google_api_expr_v1alpha1_Type_FunctionType* msg, size_t* len) {
+ return (const google_api_expr_v1alpha1_Type* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
UPB_INLINE void google_api_expr_v1alpha1_Type_FunctionType_set_result_type(google_api_expr_v1alpha1_Type_FunctionType *msg, google_api_expr_v1alpha1_Type* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), google_api_expr_v1alpha1_Type*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_FunctionType_mutable_result_type(google_api_expr_v1alpha1_Type_FunctionType *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_FunctionType_mutable_result_type(google_api_expr_v1alpha1_Type_FunctionType* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Type* sub = (struct google_api_expr_v1alpha1_Type*)google_api_expr_v1alpha1_Type_FunctionType_result_type(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Type*)_upb_Message_New(&google_api_expr_v1alpha1_Type_msginit, arena);
@@ -553,16 +740,15 @@ UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_F
}
return sub;
}
-UPB_INLINE google_api_expr_v1alpha1_Type** google_api_expr_v1alpha1_Type_FunctionType_mutable_arg_types(google_api_expr_v1alpha1_Type_FunctionType *msg, size_t *len) {
+UPB_INLINE google_api_expr_v1alpha1_Type** google_api_expr_v1alpha1_Type_FunctionType_mutable_arg_types(google_api_expr_v1alpha1_Type_FunctionType* msg, size_t* len) {
return (google_api_expr_v1alpha1_Type**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE google_api_expr_v1alpha1_Type** google_api_expr_v1alpha1_Type_FunctionType_resize_arg_types(google_api_expr_v1alpha1_Type_FunctionType *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_api_expr_v1alpha1_Type** google_api_expr_v1alpha1_Type_FunctionType_resize_arg_types(google_api_expr_v1alpha1_Type_FunctionType* msg, size_t len, upb_Arena* arena) {
return (google_api_expr_v1alpha1_Type**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_FunctionType_add_arg_types(google_api_expr_v1alpha1_Type_FunctionType *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_FunctionType_add_arg_types(google_api_expr_v1alpha1_Type_FunctionType* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Type* sub = (struct google_api_expr_v1alpha1_Type*)_upb_Message_New(&google_api_expr_v1alpha1_Type_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -592,31 +778,44 @@ UPB_INLINE google_api_expr_v1alpha1_Type_AbstractType* google_api_expr_v1alpha1_
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Type_AbstractType_serialize(const google_api_expr_v1alpha1_Type_AbstractType* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Type_AbstractType_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Type_AbstractType_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Type_AbstractType_serialize_ex(const google_api_expr_v1alpha1_Type_AbstractType* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Type_AbstractType_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Type_AbstractType_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_AbstractType_clear_name(const google_api_expr_v1alpha1_Type_AbstractType* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_Type_AbstractType_name(const google_api_expr_v1alpha1_Type_AbstractType* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Type_AbstractType_has_parameter_types(const google_api_expr_v1alpha1_Type_AbstractType *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const google_api_expr_v1alpha1_Type* const* google_api_expr_v1alpha1_Type_AbstractType_parameter_types(const google_api_expr_v1alpha1_Type_AbstractType *msg, size_t *len) { return (const google_api_expr_v1alpha1_Type* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
+UPB_INLINE bool google_api_expr_v1alpha1_Type_AbstractType_has_parameter_types(const google_api_expr_v1alpha1_Type_AbstractType* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void google_api_expr_v1alpha1_Type_AbstractType_clear_parameter_types(const google_api_expr_v1alpha1_Type_AbstractType* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const google_api_expr_v1alpha1_Type* const* google_api_expr_v1alpha1_Type_AbstractType_parameter_types(const google_api_expr_v1alpha1_Type_AbstractType* msg, size_t* len) {
+ return (const google_api_expr_v1alpha1_Type* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
UPB_INLINE void google_api_expr_v1alpha1_Type_AbstractType_set_name(google_api_expr_v1alpha1_Type_AbstractType *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
-UPB_INLINE google_api_expr_v1alpha1_Type** google_api_expr_v1alpha1_Type_AbstractType_mutable_parameter_types(google_api_expr_v1alpha1_Type_AbstractType *msg, size_t *len) {
+UPB_INLINE google_api_expr_v1alpha1_Type** google_api_expr_v1alpha1_Type_AbstractType_mutable_parameter_types(google_api_expr_v1alpha1_Type_AbstractType* msg, size_t* len) {
return (google_api_expr_v1alpha1_Type**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE google_api_expr_v1alpha1_Type** google_api_expr_v1alpha1_Type_AbstractType_resize_parameter_types(google_api_expr_v1alpha1_Type_AbstractType *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_api_expr_v1alpha1_Type** google_api_expr_v1alpha1_Type_AbstractType_resize_parameter_types(google_api_expr_v1alpha1_Type_AbstractType* msg, size_t len, upb_Arena* arena) {
return (google_api_expr_v1alpha1_Type**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_AbstractType_add_parameter_types(google_api_expr_v1alpha1_Type_AbstractType *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Type_AbstractType_add_parameter_types(google_api_expr_v1alpha1_Type_AbstractType* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Type* sub = (struct google_api_expr_v1alpha1_Type*)_upb_Message_New(&google_api_expr_v1alpha1_Type_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -646,34 +845,56 @@ UPB_INLINE google_api_expr_v1alpha1_Decl* google_api_expr_v1alpha1_Decl_parse_ex
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Decl_serialize(const google_api_expr_v1alpha1_Decl* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Decl_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Decl_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Decl_serialize_ex(const google_api_expr_v1alpha1_Decl* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Decl_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Decl_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
google_api_expr_v1alpha1_Decl_decl_kind_ident = 2,
google_api_expr_v1alpha1_Decl_decl_kind_function = 3,
google_api_expr_v1alpha1_Decl_decl_kind_NOT_SET = 0
} google_api_expr_v1alpha1_Decl_decl_kind_oneofcases;
-UPB_INLINE google_api_expr_v1alpha1_Decl_decl_kind_oneofcases google_api_expr_v1alpha1_Decl_decl_kind_case(const google_api_expr_v1alpha1_Decl* msg) { return (google_api_expr_v1alpha1_Decl_decl_kind_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
+UPB_INLINE google_api_expr_v1alpha1_Decl_decl_kind_oneofcases google_api_expr_v1alpha1_Decl_decl_kind_case(const google_api_expr_v1alpha1_Decl* msg) {
+ return (google_api_expr_v1alpha1_Decl_decl_kind_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Decl_clear_name(const google_api_expr_v1alpha1_Decl* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_Decl_name(const google_api_expr_v1alpha1_Decl* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Decl_has_ident(const google_api_expr_v1alpha1_Decl* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Decl_clear_ident(const google_api_expr_v1alpha1_Decl* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Decl_IdentDecl*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Decl_decl_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Decl_IdentDecl* google_api_expr_v1alpha1_Decl_ident(const google_api_expr_v1alpha1_Decl* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Decl_IdentDecl*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Decl_has_function(const google_api_expr_v1alpha1_Decl* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Decl_clear_function(const google_api_expr_v1alpha1_Decl* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Decl_FunctionDecl*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Decl_decl_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Decl_FunctionDecl* google_api_expr_v1alpha1_Decl_function(const google_api_expr_v1alpha1_Decl* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Decl_FunctionDecl*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 3, NULL);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Decl_has_ident(const google_api_expr_v1alpha1_Decl *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE const google_api_expr_v1alpha1_Decl_IdentDecl* google_api_expr_v1alpha1_Decl_ident(const google_api_expr_v1alpha1_Decl *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Decl_IdentDecl*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 2, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Decl_has_function(const google_api_expr_v1alpha1_Decl *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const google_api_expr_v1alpha1_Decl_FunctionDecl* google_api_expr_v1alpha1_Decl_function(const google_api_expr_v1alpha1_Decl *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Decl_FunctionDecl*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void google_api_expr_v1alpha1_Decl_set_name(google_api_expr_v1alpha1_Decl *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
UPB_INLINE void google_api_expr_v1alpha1_Decl_set_ident(google_api_expr_v1alpha1_Decl *msg, google_api_expr_v1alpha1_Decl_IdentDecl* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Decl_IdentDecl*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Decl_IdentDecl*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Decl_IdentDecl* google_api_expr_v1alpha1_Decl_mutable_ident(google_api_expr_v1alpha1_Decl *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Decl_IdentDecl* google_api_expr_v1alpha1_Decl_mutable_ident(google_api_expr_v1alpha1_Decl* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Decl_IdentDecl* sub = (struct google_api_expr_v1alpha1_Decl_IdentDecl*)google_api_expr_v1alpha1_Decl_ident(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Decl_IdentDecl*)_upb_Message_New(&google_api_expr_v1alpha1_Decl_IdentDecl_msginit, arena);
@@ -683,9 +904,9 @@ UPB_INLINE struct google_api_expr_v1alpha1_Decl_IdentDecl* google_api_expr_v1alp
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Decl_set_function(google_api_expr_v1alpha1_Decl *msg, google_api_expr_v1alpha1_Decl_FunctionDecl* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Decl_FunctionDecl*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Decl_FunctionDecl*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Decl_FunctionDecl* google_api_expr_v1alpha1_Decl_mutable_function(google_api_expr_v1alpha1_Decl *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Decl_FunctionDecl* google_api_expr_v1alpha1_Decl_mutable_function(google_api_expr_v1alpha1_Decl* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Decl_FunctionDecl* sub = (struct google_api_expr_v1alpha1_Decl_FunctionDecl*)google_api_expr_v1alpha1_Decl_function(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Decl_FunctionDecl*)_upb_Message_New(&google_api_expr_v1alpha1_Decl_FunctionDecl_msginit, arena);
@@ -720,29 +941,46 @@ UPB_INLINE google_api_expr_v1alpha1_Decl_IdentDecl* google_api_expr_v1alpha1_Dec
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Decl_IdentDecl_serialize(const google_api_expr_v1alpha1_Decl_IdentDecl* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Decl_IdentDecl_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Decl_IdentDecl_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Decl_IdentDecl_serialize_ex(const google_api_expr_v1alpha1_Decl_IdentDecl* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Decl_IdentDecl_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Decl_IdentDecl_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Decl_IdentDecl_has_type(const google_api_expr_v1alpha1_Decl_IdentDecl* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Decl_IdentDecl_clear_type(const google_api_expr_v1alpha1_Decl_IdentDecl* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool google_api_expr_v1alpha1_Decl_IdentDecl_has_type(const google_api_expr_v1alpha1_Decl_IdentDecl *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Decl_IdentDecl_type(const google_api_expr_v1alpha1_Decl_IdentDecl* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const google_api_expr_v1alpha1_Type*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const google_api_expr_v1alpha1_Type*);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Decl_IdentDecl_has_value(const google_api_expr_v1alpha1_Decl_IdentDecl* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Decl_IdentDecl_clear_value(const google_api_expr_v1alpha1_Decl_IdentDecl* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool google_api_expr_v1alpha1_Decl_IdentDecl_has_value(const google_api_expr_v1alpha1_Decl_IdentDecl *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_api_expr_v1alpha1_Constant* google_api_expr_v1alpha1_Decl_IdentDecl_value(const google_api_expr_v1alpha1_Decl_IdentDecl* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_api_expr_v1alpha1_Constant*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_api_expr_v1alpha1_Constant*);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Decl_IdentDecl_clear_doc(const google_api_expr_v1alpha1_Decl_IdentDecl* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_Decl_IdentDecl_doc(const google_api_expr_v1alpha1_Decl_IdentDecl* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
UPB_INLINE void google_api_expr_v1alpha1_Decl_IdentDecl_set_type(google_api_expr_v1alpha1_Decl_IdentDecl *msg, google_api_expr_v1alpha1_Type* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), google_api_expr_v1alpha1_Type*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), google_api_expr_v1alpha1_Type*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Decl_IdentDecl_mutable_type(google_api_expr_v1alpha1_Decl_IdentDecl *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Decl_IdentDecl_mutable_type(google_api_expr_v1alpha1_Decl_IdentDecl* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Type* sub = (struct google_api_expr_v1alpha1_Type*)google_api_expr_v1alpha1_Decl_IdentDecl_type(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Type*)_upb_Message_New(&google_api_expr_v1alpha1_Type_msginit, arena);
@@ -753,9 +991,9 @@ UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Decl_I
}
UPB_INLINE void google_api_expr_v1alpha1_Decl_IdentDecl_set_value(google_api_expr_v1alpha1_Decl_IdentDecl *msg, struct google_api_expr_v1alpha1_Constant* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_api_expr_v1alpha1_Constant*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_api_expr_v1alpha1_Constant*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Constant* google_api_expr_v1alpha1_Decl_IdentDecl_mutable_value(google_api_expr_v1alpha1_Decl_IdentDecl *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Constant* google_api_expr_v1alpha1_Decl_IdentDecl_mutable_value(google_api_expr_v1alpha1_Decl_IdentDecl* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Constant* sub = (struct google_api_expr_v1alpha1_Constant*)google_api_expr_v1alpha1_Decl_IdentDecl_value(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Constant*)_upb_Message_New(&google_api_expr_v1alpha1_Constant_msginit, arena);
@@ -765,7 +1003,7 @@ UPB_INLINE struct google_api_expr_v1alpha1_Constant* google_api_expr_v1alpha1_De
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Decl_IdentDecl_set_doc(google_api_expr_v1alpha1_Decl_IdentDecl *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
}
/* google.api.expr.v1alpha1.Decl.FunctionDecl */
@@ -793,25 +1031,35 @@ UPB_INLINE google_api_expr_v1alpha1_Decl_FunctionDecl* google_api_expr_v1alpha1_
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Decl_FunctionDecl_serialize(const google_api_expr_v1alpha1_Decl_FunctionDecl* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Decl_FunctionDecl_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Decl_FunctionDecl_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Decl_FunctionDecl_serialize_ex(const google_api_expr_v1alpha1_Decl_FunctionDecl* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Decl_FunctionDecl_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Decl_FunctionDecl_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Decl_FunctionDecl_has_overloads(const google_api_expr_v1alpha1_Decl_FunctionDecl* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void google_api_expr_v1alpha1_Decl_FunctionDecl_clear_overloads(const google_api_expr_v1alpha1_Decl_FunctionDecl* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* const* google_api_expr_v1alpha1_Decl_FunctionDecl_overloads(const google_api_expr_v1alpha1_Decl_FunctionDecl* msg, size_t* len) {
+ return (const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Decl_FunctionDecl_has_overloads(const google_api_expr_v1alpha1_Decl_FunctionDecl *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* const* google_api_expr_v1alpha1_Decl_FunctionDecl_overloads(const google_api_expr_v1alpha1_Decl_FunctionDecl *msg, size_t *len) { return (const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE google_api_expr_v1alpha1_Decl_FunctionDecl_Overload** google_api_expr_v1alpha1_Decl_FunctionDecl_mutable_overloads(google_api_expr_v1alpha1_Decl_FunctionDecl *msg, size_t *len) {
+UPB_INLINE google_api_expr_v1alpha1_Decl_FunctionDecl_Overload** google_api_expr_v1alpha1_Decl_FunctionDecl_mutable_overloads(google_api_expr_v1alpha1_Decl_FunctionDecl* msg, size_t* len) {
return (google_api_expr_v1alpha1_Decl_FunctionDecl_Overload**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE google_api_expr_v1alpha1_Decl_FunctionDecl_Overload** google_api_expr_v1alpha1_Decl_FunctionDecl_resize_overloads(google_api_expr_v1alpha1_Decl_FunctionDecl *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_api_expr_v1alpha1_Decl_FunctionDecl_Overload** google_api_expr_v1alpha1_Decl_FunctionDecl_resize_overloads(google_api_expr_v1alpha1_Decl_FunctionDecl* msg, size_t len, upb_Arena* arena) {
return (google_api_expr_v1alpha1_Decl_FunctionDecl_Overload**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* google_api_expr_v1alpha1_Decl_FunctionDecl_add_overloads(google_api_expr_v1alpha1_Decl_FunctionDecl *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* google_api_expr_v1alpha1_Decl_FunctionDecl_add_overloads(google_api_expr_v1alpha1_Decl_FunctionDecl* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* sub = (struct google_api_expr_v1alpha1_Decl_FunctionDecl_Overload*)_upb_Message_New(&google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -841,60 +1089,88 @@ UPB_INLINE google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* google_api_expr_
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_serialize(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_serialize_ex(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_clear_overload_id(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_overload_id(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_has_params(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48)); }
-UPB_INLINE const google_api_expr_v1alpha1_Type* const* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_params(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload *msg, size_t *len) { return (const google_api_expr_v1alpha1_Type* const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len); }
-UPB_INLINE upb_StringView const* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_type_params(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len); }
-UPB_INLINE bool google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_has_result_type(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_has_params(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_clear_params(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const google_api_expr_v1alpha1_Type* const* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_params(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg, size_t* len) {
+ return (const google_api_expr_v1alpha1_Type* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_clear_type_params(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE upb_StringView const* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_type_params(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_has_result_type(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_clear_result_type(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_result_type(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const google_api_expr_v1alpha1_Type*);
}
+UPB_INLINE void google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_clear_is_instance_function(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_is_instance_function(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
+UPB_INLINE void google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_clear_doc(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_doc(const google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView);
}
UPB_INLINE void google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_set_overload_id(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE google_api_expr_v1alpha1_Type** google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_mutable_params(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload *msg, size_t *len) {
- return (google_api_expr_v1alpha1_Type**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
+UPB_INLINE google_api_expr_v1alpha1_Type** google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_mutable_params(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg, size_t* len) {
+ return (google_api_expr_v1alpha1_Type**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE google_api_expr_v1alpha1_Type** google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_resize_params(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload *msg, size_t len, upb_Arena *arena) {
- return (google_api_expr_v1alpha1_Type**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_api_expr_v1alpha1_Type** google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_resize_params(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg, size_t len, upb_Arena* arena) {
+ return (google_api_expr_v1alpha1_Type**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_add_params(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_add_params(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Type* sub = (struct google_api_expr_v1alpha1_Type*)_upb_Message_New(&google_api_expr_v1alpha1_Type_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(24, 48), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE upb_StringView* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_mutable_type_params(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
+UPB_INLINE upb_StringView* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_mutable_type_params(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE upb_StringView* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_resize_type_params(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_resize_type_params(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_add_type_params(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 56), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_add_type_params(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_set_result_type(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload *msg, google_api_expr_v1alpha1_Type* value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(20, 40), google_api_expr_v1alpha1_Type*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_mutable_result_type(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Type* google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_mutable_result_type(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Type* sub = (struct google_api_expr_v1alpha1_Type*)google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_result_type(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Type*)_upb_Message_New(&google_api_expr_v1alpha1_Type_msginit, arena);
@@ -907,7 +1183,7 @@ UPB_INLINE void google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_set_is_insta
*UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
UPB_INLINE void google_api_expr_v1alpha1_Decl_FunctionDecl_Overload_set_doc(google_api_expr_v1alpha1_Decl_FunctionDecl_Overload *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = value;
}
/* google.api.expr.v1alpha1.Reference */
@@ -935,39 +1211,55 @@ UPB_INLINE google_api_expr_v1alpha1_Reference* google_api_expr_v1alpha1_Referenc
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Reference_serialize(const google_api_expr_v1alpha1_Reference* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Reference_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Reference_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Reference_serialize_ex(const google_api_expr_v1alpha1_Reference* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Reference_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Reference_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Reference_clear_name(const google_api_expr_v1alpha1_Reference* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_Reference_name(const google_api_expr_v1alpha1_Reference* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE upb_StringView const* google_api_expr_v1alpha1_Reference_overload_id(const google_api_expr_v1alpha1_Reference *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
-UPB_INLINE bool google_api_expr_v1alpha1_Reference_has_value(const google_api_expr_v1alpha1_Reference *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE void google_api_expr_v1alpha1_Reference_clear_overload_id(const google_api_expr_v1alpha1_Reference* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE upb_StringView const* google_api_expr_v1alpha1_Reference_overload_id(const google_api_expr_v1alpha1_Reference* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Reference_has_value(const google_api_expr_v1alpha1_Reference* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Reference_clear_value(const google_api_expr_v1alpha1_Reference* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_api_expr_v1alpha1_Constant* google_api_expr_v1alpha1_Reference_value(const google_api_expr_v1alpha1_Reference* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_api_expr_v1alpha1_Constant*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_api_expr_v1alpha1_Constant*);
}
UPB_INLINE void google_api_expr_v1alpha1_Reference_set_name(google_api_expr_v1alpha1_Reference *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE upb_StringView* google_api_expr_v1alpha1_Reference_mutable_overload_id(google_api_expr_v1alpha1_Reference *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
+UPB_INLINE upb_StringView* google_api_expr_v1alpha1_Reference_mutable_overload_id(google_api_expr_v1alpha1_Reference* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE upb_StringView* google_api_expr_v1alpha1_Reference_resize_overload_id(google_api_expr_v1alpha1_Reference *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* google_api_expr_v1alpha1_Reference_resize_overload_id(google_api_expr_v1alpha1_Reference* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Reference_add_overload_id(google_api_expr_v1alpha1_Reference *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool google_api_expr_v1alpha1_Reference_add_overload_id(google_api_expr_v1alpha1_Reference* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void google_api_expr_v1alpha1_Reference_set_value(google_api_expr_v1alpha1_Reference *msg, struct google_api_expr_v1alpha1_Constant* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_api_expr_v1alpha1_Constant*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_api_expr_v1alpha1_Constant*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Constant* google_api_expr_v1alpha1_Reference_mutable_value(google_api_expr_v1alpha1_Reference *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Constant* google_api_expr_v1alpha1_Reference_mutable_value(google_api_expr_v1alpha1_Reference* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Constant* sub = (struct google_api_expr_v1alpha1_Constant*)google_api_expr_v1alpha1_Reference_value(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Constant*)_upb_Message_New(&google_api_expr_v1alpha1_Constant_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c
index 289164724f..0056cca443 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c
@@ -21,51 +21,51 @@ static const upb_MiniTable_Sub google_api_expr_v1alpha1_ParsedExpr_submsgs[2] =
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_ParsedExpr__fields[2] = {
- {2, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_ParsedExpr_msginit = {
&google_api_expr_v1alpha1_ParsedExpr_submsgs[0],
&google_api_expr_v1alpha1_ParsedExpr__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_Expr_submsgs[7] = {
{.submsg = &google_api_expr_v1alpha1_Constant_msginit},
+ {.submsg = &google_api_expr_v1alpha1_Expr_Ident_msginit},
+ {.submsg = &google_api_expr_v1alpha1_Expr_Select_msginit},
{.submsg = &google_api_expr_v1alpha1_Expr_Call_msginit},
- {.submsg = &google_api_expr_v1alpha1_Expr_Comprehension_msginit},
{.submsg = &google_api_expr_v1alpha1_Expr_CreateList_msginit},
{.submsg = &google_api_expr_v1alpha1_Expr_CreateStruct_msginit},
- {.submsg = &google_api_expr_v1alpha1_Expr_Ident_msginit},
- {.submsg = &google_api_expr_v1alpha1_Expr_Select_msginit},
+ {.submsg = &google_api_expr_v1alpha1_Expr_Comprehension_msginit},
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Expr__fields[8] = {
- {2, UPB_SIZE(0, 0), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 8), UPB_SIZE(-13, -17), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 8), UPB_SIZE(-13, -17), 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 8), UPB_SIZE(-13, -17), 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(8, 8), UPB_SIZE(-13, -17), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(8, 8), UPB_SIZE(-13, -17), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(8, 8), UPB_SIZE(-13, -17), 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(8, 8), UPB_SIZE(-13, -17), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Expr_msginit = {
&google_api_expr_v1alpha1_Expr_submsgs[0],
&google_api_expr_v1alpha1_Expr__fields[0],
- UPB_SIZE(16, 24), 8, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(16, 24), 8, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Expr_Ident__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Expr_Ident_msginit = {
NULL,
&google_api_expr_v1alpha1_Expr_Ident__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_Expr_Select_submsgs[1] = {
@@ -73,31 +73,32 @@ static const upb_MiniTable_Sub google_api_expr_v1alpha1_Expr_Select_submsgs[1] =
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Expr_Select__fields[3] = {
- {1, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Expr_Select_msginit = {
&google_api_expr_v1alpha1_Expr_Select_submsgs[0],
&google_api_expr_v1alpha1_Expr_Select__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
-static const upb_MiniTable_Sub google_api_expr_v1alpha1_Expr_Call_submsgs[1] = {
+static const upb_MiniTable_Sub google_api_expr_v1alpha1_Expr_Call_submsgs[2] = {
+ {.submsg = &google_api_expr_v1alpha1_Expr_msginit},
{.submsg = &google_api_expr_v1alpha1_Expr_msginit},
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Expr_Call__fields[3] = {
- {1, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Expr_Call_msginit = {
&google_api_expr_v1alpha1_Expr_Call_submsgs[0],
&google_api_expr_v1alpha1_Expr_Call__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_Expr_CreateList_submsgs[1] = {
@@ -105,13 +106,13 @@ static const upb_MiniTable_Sub google_api_expr_v1alpha1_Expr_CreateList_submsgs[
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Expr_CreateList__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Expr_CreateList_msginit = {
&google_api_expr_v1alpha1_Expr_CreateList_submsgs[0],
&google_api_expr_v1alpha1_Expr_CreateList__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_Expr_CreateStruct_submsgs[1] = {
@@ -119,51 +120,56 @@ static const upb_MiniTable_Sub google_api_expr_v1alpha1_Expr_CreateStruct_submsg
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Expr_CreateStruct__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Expr_CreateStruct_msginit = {
&google_api_expr_v1alpha1_Expr_CreateStruct_submsgs[0],
&google_api_expr_v1alpha1_Expr_CreateStruct__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub google_api_expr_v1alpha1_Expr_CreateStruct_Entry_submsgs[1] = {
+static const upb_MiniTable_Sub google_api_expr_v1alpha1_Expr_CreateStruct_Entry_submsgs[2] = {
+ {.submsg = &google_api_expr_v1alpha1_Expr_msginit},
{.submsg = &google_api_expr_v1alpha1_Expr_msginit},
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Expr_CreateStruct_Entry__fields[4] = {
- {1, UPB_SIZE(8, 8), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(20, 24), UPB_SIZE(-29, -41), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 24), UPB_SIZE(-29, -41), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 16), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(24, 32), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 24), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Expr_CreateStruct_Entry_msginit = {
&google_api_expr_v1alpha1_Expr_CreateStruct_Entry_submsgs[0],
&google_api_expr_v1alpha1_Expr_CreateStruct_Entry__fields[0],
- UPB_SIZE(32, 48), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(32, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable_Sub google_api_expr_v1alpha1_Expr_Comprehension_submsgs[1] = {
+static const upb_MiniTable_Sub google_api_expr_v1alpha1_Expr_Comprehension_submsgs[5] = {
+ {.submsg = &google_api_expr_v1alpha1_Expr_msginit},
+ {.submsg = &google_api_expr_v1alpha1_Expr_msginit},
+ {.submsg = &google_api_expr_v1alpha1_Expr_msginit},
+ {.submsg = &google_api_expr_v1alpha1_Expr_msginit},
{.submsg = &google_api_expr_v1alpha1_Expr_msginit},
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Expr_Comprehension__fields[7] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(20, 40), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 48), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(28, 56), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(32, 64), 4, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(36, 72), 5, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 48), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(28, 56), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(32, 64), UPB_SIZE(4, 4), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(36, 72), UPB_SIZE(5, 5), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Expr_Comprehension_msginit = {
&google_api_expr_v1alpha1_Expr_Comprehension_submsgs[0],
&google_api_expr_v1alpha1_Expr_Comprehension__fields[0],
- UPB_SIZE(40, 80), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(40, 80), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_Constant_submsgs[2] = {
@@ -172,51 +178,51 @@ static const upb_MiniTable_Sub google_api_expr_v1alpha1_Constant_submsgs[2] = {
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_Constant__fields[9] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {7, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {8, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_Constant_msginit = {
&google_api_expr_v1alpha1_Constant_submsgs[0],
&google_api_expr_v1alpha1_Constant__fields[0],
- UPB_SIZE(16, 32), 9, upb_ExtMode_NonExtendable, 9, 255, 0,
+ UPB_SIZE(16, 24), 9, kUpb_ExtMode_NonExtendable, 9, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_SourceInfo_submsgs[2] = {
- {.submsg = &google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry_msginit},
{.submsg = &google_api_expr_v1alpha1_SourceInfo_PositionsEntry_msginit},
+ {.submsg = &google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry_msginit},
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_SourceInfo__fields[5] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 0, 0, 5, kUpb_FieldMode_Array | upb_LabelFlags_IsPacked | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 40), 0, 1, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(24, 48), 0, 0, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | kUpb_LabelFlags_IsPacked | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 48), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_SourceInfo_msginit = {
&google_api_expr_v1alpha1_SourceInfo_submsgs[0],
&google_api_expr_v1alpha1_SourceInfo__fields[0],
- UPB_SIZE(32, 64), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(32, 56), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_SourceInfo_PositionsEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_SourceInfo_PositionsEntry_msginit = {
NULL,
&google_api_expr_v1alpha1_SourceInfo_PositionsEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry_submsgs[1] = {
@@ -224,27 +230,27 @@ static const upb_MiniTable_Sub google_api_expr_v1alpha1_SourceInfo_MacroCallsEnt
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry_msginit = {
&google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry_submsgs[0],
&google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field google_api_expr_v1alpha1_SourcePosition__fields[4] = {
- {1, UPB_SIZE(12, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 8), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_expr_v1alpha1_SourcePosition_msginit = {
NULL,
&google_api_expr_v1alpha1_SourcePosition__fields[0],
- UPB_SIZE(24, 32), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 32), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable *messages_layout[14] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h
index 9cc2521388..89570657a3 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h
@@ -94,17 +94,31 @@ UPB_INLINE google_api_expr_v1alpha1_ParsedExpr* google_api_expr_v1alpha1_ParsedE
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_ParsedExpr_serialize(const google_api_expr_v1alpha1_ParsedExpr* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_ParsedExpr_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_ParsedExpr_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_ParsedExpr_serialize_ex(const google_api_expr_v1alpha1_ParsedExpr* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_ParsedExpr_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_ParsedExpr_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_api_expr_v1alpha1_ParsedExpr_has_expr(const google_api_expr_v1alpha1_ParsedExpr* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_api_expr_v1alpha1_ParsedExpr_clear_expr(const google_api_expr_v1alpha1_ParsedExpr* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool google_api_expr_v1alpha1_ParsedExpr_has_expr(const google_api_expr_v1alpha1_ParsedExpr *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_ParsedExpr_expr(const google_api_expr_v1alpha1_ParsedExpr* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const google_api_expr_v1alpha1_Expr*);
}
-UPB_INLINE bool google_api_expr_v1alpha1_ParsedExpr_has_source_info(const google_api_expr_v1alpha1_ParsedExpr *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_api_expr_v1alpha1_ParsedExpr_has_source_info(const google_api_expr_v1alpha1_ParsedExpr* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_api_expr_v1alpha1_ParsedExpr_clear_source_info(const google_api_expr_v1alpha1_ParsedExpr* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const google_api_expr_v1alpha1_SourceInfo* google_api_expr_v1alpha1_ParsedExpr_source_info(const google_api_expr_v1alpha1_ParsedExpr* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const google_api_expr_v1alpha1_SourceInfo*);
}
@@ -113,7 +127,7 @@ UPB_INLINE void google_api_expr_v1alpha1_ParsedExpr_set_expr(google_api_expr_v1a
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), google_api_expr_v1alpha1_Expr*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_ParsedExpr_mutable_expr(google_api_expr_v1alpha1_ParsedExpr *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_ParsedExpr_mutable_expr(google_api_expr_v1alpha1_ParsedExpr* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr* sub = (struct google_api_expr_v1alpha1_Expr*)google_api_expr_v1alpha1_ParsedExpr_expr(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_msginit, arena);
@@ -126,7 +140,7 @@ UPB_INLINE void google_api_expr_v1alpha1_ParsedExpr_set_source_info(google_api_e
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), google_api_expr_v1alpha1_SourceInfo*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_SourceInfo* google_api_expr_v1alpha1_ParsedExpr_mutable_source_info(google_api_expr_v1alpha1_ParsedExpr *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_SourceInfo* google_api_expr_v1alpha1_ParsedExpr_mutable_source_info(google_api_expr_v1alpha1_ParsedExpr* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_SourceInfo* sub = (struct google_api_expr_v1alpha1_SourceInfo*)google_api_expr_v1alpha1_ParsedExpr_source_info(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_SourceInfo*)_upb_Message_New(&google_api_expr_v1alpha1_SourceInfo_msginit, arena);
@@ -161,11 +175,15 @@ UPB_INLINE google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_parse_ex
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_serialize(const google_api_expr_v1alpha1_Expr* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_serialize_ex(const google_api_expr_v1alpha1_Expr* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
google_api_expr_v1alpha1_Expr_expr_kind_const_expr = 3,
@@ -177,33 +195,86 @@ typedef enum {
google_api_expr_v1alpha1_Expr_expr_kind_comprehension_expr = 9,
google_api_expr_v1alpha1_Expr_expr_kind_NOT_SET = 0
} google_api_expr_v1alpha1_Expr_expr_kind_oneofcases;
-UPB_INLINE google_api_expr_v1alpha1_Expr_expr_kind_oneofcases google_api_expr_v1alpha1_Expr_expr_kind_case(const google_api_expr_v1alpha1_Expr* msg) { return (google_api_expr_v1alpha1_Expr_expr_kind_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 16), int32_t); }
-
+UPB_INLINE google_api_expr_v1alpha1_Expr_expr_kind_oneofcases google_api_expr_v1alpha1_Expr_expr_kind_case(const google_api_expr_v1alpha1_Expr* msg) {
+ return (google_api_expr_v1alpha1_Expr_expr_kind_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_clear_id(const google_api_expr_v1alpha1_Expr* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), int64_t) = 0;
+}
UPB_INLINE int64_t google_api_expr_v1alpha1_Expr_id(const google_api_expr_v1alpha1_Expr* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t);
-}
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_has_const_expr(const google_api_expr_v1alpha1_Expr *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 16)) == 3; }
-UPB_INLINE const google_api_expr_v1alpha1_Constant* google_api_expr_v1alpha1_Expr_const_expr(const google_api_expr_v1alpha1_Expr *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Constant*, UPB_SIZE(8, 8), UPB_SIZE(12, 16), 3, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_has_ident_expr(const google_api_expr_v1alpha1_Expr *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 16)) == 4; }
-UPB_INLINE const google_api_expr_v1alpha1_Expr_Ident* google_api_expr_v1alpha1_Expr_ident_expr(const google_api_expr_v1alpha1_Expr *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Expr_Ident*, UPB_SIZE(8, 8), UPB_SIZE(12, 16), 4, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_has_select_expr(const google_api_expr_v1alpha1_Expr *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 16)) == 5; }
-UPB_INLINE const google_api_expr_v1alpha1_Expr_Select* google_api_expr_v1alpha1_Expr_select_expr(const google_api_expr_v1alpha1_Expr *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Expr_Select*, UPB_SIZE(8, 8), UPB_SIZE(12, 16), 5, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_has_call_expr(const google_api_expr_v1alpha1_Expr *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 16)) == 6; }
-UPB_INLINE const google_api_expr_v1alpha1_Expr_Call* google_api_expr_v1alpha1_Expr_call_expr(const google_api_expr_v1alpha1_Expr *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Expr_Call*, UPB_SIZE(8, 8), UPB_SIZE(12, 16), 6, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_has_list_expr(const google_api_expr_v1alpha1_Expr *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 16)) == 7; }
-UPB_INLINE const google_api_expr_v1alpha1_Expr_CreateList* google_api_expr_v1alpha1_Expr_list_expr(const google_api_expr_v1alpha1_Expr *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Expr_CreateList*, UPB_SIZE(8, 8), UPB_SIZE(12, 16), 7, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_has_struct_expr(const google_api_expr_v1alpha1_Expr *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 16)) == 8; }
-UPB_INLINE const google_api_expr_v1alpha1_Expr_CreateStruct* google_api_expr_v1alpha1_Expr_struct_expr(const google_api_expr_v1alpha1_Expr *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Expr_CreateStruct*, UPB_SIZE(8, 8), UPB_SIZE(12, 16), 8, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_has_comprehension_expr(const google_api_expr_v1alpha1_Expr *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 16)) == 9; }
-UPB_INLINE const google_api_expr_v1alpha1_Expr_Comprehension* google_api_expr_v1alpha1_Expr_comprehension_expr(const google_api_expr_v1alpha1_Expr *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Expr_Comprehension*, UPB_SIZE(8, 8), UPB_SIZE(12, 16), 9, NULL); }
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), int64_t);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_has_const_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_clear_const_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Constant*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Expr_expr_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Constant* google_api_expr_v1alpha1_Expr_const_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Constant*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_has_ident_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_clear_ident_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_Ident*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Expr_expr_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Expr_Ident* google_api_expr_v1alpha1_Expr_ident_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Expr_Ident*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_has_select_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_clear_select_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_Select*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Expr_expr_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Expr_Select* google_api_expr_v1alpha1_Expr_select_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Expr_Select*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 5, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_has_call_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 6;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_clear_call_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_Call*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Expr_expr_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Expr_Call* google_api_expr_v1alpha1_Expr_call_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Expr_Call*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 6, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_has_list_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 7;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_clear_list_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_CreateList*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Expr_expr_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Expr_CreateList* google_api_expr_v1alpha1_Expr_list_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Expr_CreateList*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 7, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_has_struct_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 8;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_clear_struct_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_CreateStruct*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Expr_expr_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Expr_CreateStruct* google_api_expr_v1alpha1_Expr_struct_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Expr_CreateStruct*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 8, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_has_comprehension_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 9;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_clear_comprehension_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_Comprehension*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Expr_expr_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Expr_Comprehension* google_api_expr_v1alpha1_Expr_comprehension_expr(const google_api_expr_v1alpha1_Expr* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Expr_Comprehension*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 9, NULL);
+}
UPB_INLINE void google_api_expr_v1alpha1_Expr_set_id(google_api_expr_v1alpha1_Expr *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), int64_t) = value;
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_set_const_expr(google_api_expr_v1alpha1_Expr *msg, google_api_expr_v1alpha1_Constant* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Constant*, UPB_SIZE(8, 8), value, UPB_SIZE(12, 16), 3);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Constant*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Constant* google_api_expr_v1alpha1_Expr_mutable_const_expr(google_api_expr_v1alpha1_Expr *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Constant* google_api_expr_v1alpha1_Expr_mutable_const_expr(google_api_expr_v1alpha1_Expr* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Constant* sub = (struct google_api_expr_v1alpha1_Constant*)google_api_expr_v1alpha1_Expr_const_expr(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Constant*)_upb_Message_New(&google_api_expr_v1alpha1_Constant_msginit, arena);
@@ -213,9 +284,9 @@ UPB_INLINE struct google_api_expr_v1alpha1_Constant* google_api_expr_v1alpha1_Ex
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_set_ident_expr(google_api_expr_v1alpha1_Expr *msg, google_api_expr_v1alpha1_Expr_Ident* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_Ident*, UPB_SIZE(8, 8), value, UPB_SIZE(12, 16), 4);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_Ident*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr_Ident* google_api_expr_v1alpha1_Expr_mutable_ident_expr(google_api_expr_v1alpha1_Expr *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr_Ident* google_api_expr_v1alpha1_Expr_mutable_ident_expr(google_api_expr_v1alpha1_Expr* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr_Ident* sub = (struct google_api_expr_v1alpha1_Expr_Ident*)google_api_expr_v1alpha1_Expr_ident_expr(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr_Ident*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_Ident_msginit, arena);
@@ -225,9 +296,9 @@ UPB_INLINE struct google_api_expr_v1alpha1_Expr_Ident* google_api_expr_v1alpha1_
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_set_select_expr(google_api_expr_v1alpha1_Expr *msg, google_api_expr_v1alpha1_Expr_Select* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_Select*, UPB_SIZE(8, 8), value, UPB_SIZE(12, 16), 5);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_Select*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr_Select* google_api_expr_v1alpha1_Expr_mutable_select_expr(google_api_expr_v1alpha1_Expr *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr_Select* google_api_expr_v1alpha1_Expr_mutable_select_expr(google_api_expr_v1alpha1_Expr* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr_Select* sub = (struct google_api_expr_v1alpha1_Expr_Select*)google_api_expr_v1alpha1_Expr_select_expr(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr_Select*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_Select_msginit, arena);
@@ -237,9 +308,9 @@ UPB_INLINE struct google_api_expr_v1alpha1_Expr_Select* google_api_expr_v1alpha1
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_set_call_expr(google_api_expr_v1alpha1_Expr *msg, google_api_expr_v1alpha1_Expr_Call* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_Call*, UPB_SIZE(8, 8), value, UPB_SIZE(12, 16), 6);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_Call*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 6);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr_Call* google_api_expr_v1alpha1_Expr_mutable_call_expr(google_api_expr_v1alpha1_Expr *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr_Call* google_api_expr_v1alpha1_Expr_mutable_call_expr(google_api_expr_v1alpha1_Expr* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr_Call* sub = (struct google_api_expr_v1alpha1_Expr_Call*)google_api_expr_v1alpha1_Expr_call_expr(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr_Call*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_Call_msginit, arena);
@@ -249,9 +320,9 @@ UPB_INLINE struct google_api_expr_v1alpha1_Expr_Call* google_api_expr_v1alpha1_E
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_set_list_expr(google_api_expr_v1alpha1_Expr *msg, google_api_expr_v1alpha1_Expr_CreateList* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_CreateList*, UPB_SIZE(8, 8), value, UPB_SIZE(12, 16), 7);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_CreateList*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 7);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr_CreateList* google_api_expr_v1alpha1_Expr_mutable_list_expr(google_api_expr_v1alpha1_Expr *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr_CreateList* google_api_expr_v1alpha1_Expr_mutable_list_expr(google_api_expr_v1alpha1_Expr* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr_CreateList* sub = (struct google_api_expr_v1alpha1_Expr_CreateList*)google_api_expr_v1alpha1_Expr_list_expr(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr_CreateList*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_CreateList_msginit, arena);
@@ -261,9 +332,9 @@ UPB_INLINE struct google_api_expr_v1alpha1_Expr_CreateList* google_api_expr_v1al
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_set_struct_expr(google_api_expr_v1alpha1_Expr *msg, google_api_expr_v1alpha1_Expr_CreateStruct* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_CreateStruct*, UPB_SIZE(8, 8), value, UPB_SIZE(12, 16), 8);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_CreateStruct*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 8);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr_CreateStruct* google_api_expr_v1alpha1_Expr_mutable_struct_expr(google_api_expr_v1alpha1_Expr *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr_CreateStruct* google_api_expr_v1alpha1_Expr_mutable_struct_expr(google_api_expr_v1alpha1_Expr* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr_CreateStruct* sub = (struct google_api_expr_v1alpha1_Expr_CreateStruct*)google_api_expr_v1alpha1_Expr_struct_expr(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr_CreateStruct*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_CreateStruct_msginit, arena);
@@ -273,9 +344,9 @@ UPB_INLINE struct google_api_expr_v1alpha1_Expr_CreateStruct* google_api_expr_v1
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_set_comprehension_expr(google_api_expr_v1alpha1_Expr *msg, google_api_expr_v1alpha1_Expr_Comprehension* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_Comprehension*, UPB_SIZE(8, 8), value, UPB_SIZE(12, 16), 9);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr_Comprehension*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 9);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr_Comprehension* google_api_expr_v1alpha1_Expr_mutable_comprehension_expr(google_api_expr_v1alpha1_Expr *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr_Comprehension* google_api_expr_v1alpha1_Expr_mutable_comprehension_expr(google_api_expr_v1alpha1_Expr* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr_Comprehension* sub = (struct google_api_expr_v1alpha1_Expr_Comprehension*)google_api_expr_v1alpha1_Expr_comprehension_expr(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr_Comprehension*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_Comprehension_msginit, arena);
@@ -310,11 +381,18 @@ UPB_INLINE google_api_expr_v1alpha1_Expr_Ident* google_api_expr_v1alpha1_Expr_Id
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_Ident_serialize(const google_api_expr_v1alpha1_Expr_Ident* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Ident_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Ident_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_Ident_serialize_ex(const google_api_expr_v1alpha1_Expr_Ident* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Ident_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Ident_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_Ident_clear_name(const google_api_expr_v1alpha1_Expr_Ident* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_Expr_Ident_name(const google_api_expr_v1alpha1_Expr_Ident* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -349,18 +427,33 @@ UPB_INLINE google_api_expr_v1alpha1_Expr_Select* google_api_expr_v1alpha1_Expr_S
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_Select_serialize(const google_api_expr_v1alpha1_Expr_Select* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Select_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Select_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_Select_serialize_ex(const google_api_expr_v1alpha1_Expr_Select* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Select_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Select_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_Select_has_operand(const google_api_expr_v1alpha1_Expr_Select* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_Select_clear_operand(const google_api_expr_v1alpha1_Expr_Select* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_Select_has_operand(const google_api_expr_v1alpha1_Expr_Select *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Select_operand(const google_api_expr_v1alpha1_Expr_Select* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const google_api_expr_v1alpha1_Expr*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const google_api_expr_v1alpha1_Expr*);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_Select_clear_field(const google_api_expr_v1alpha1_Expr_Select* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_Expr_Select_field(const google_api_expr_v1alpha1_Expr_Select* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_Select_clear_test_only(const google_api_expr_v1alpha1_Expr_Select* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
}
UPB_INLINE bool google_api_expr_v1alpha1_Expr_Select_test_only(const google_api_expr_v1alpha1_Expr_Select* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
@@ -368,9 +461,9 @@ UPB_INLINE bool google_api_expr_v1alpha1_Expr_Select_test_only(const google_api_
UPB_INLINE void google_api_expr_v1alpha1_Expr_Select_set_operand(google_api_expr_v1alpha1_Expr_Select *msg, google_api_expr_v1alpha1_Expr* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), google_api_expr_v1alpha1_Expr*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), google_api_expr_v1alpha1_Expr*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Select_mutable_operand(google_api_expr_v1alpha1_Expr_Select *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Select_mutable_operand(google_api_expr_v1alpha1_Expr_Select* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr* sub = (struct google_api_expr_v1alpha1_Expr*)google_api_expr_v1alpha1_Expr_Select_operand(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_msginit, arena);
@@ -380,7 +473,7 @@ UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_S
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_Select_set_field(google_api_expr_v1alpha1_Expr_Select *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_Select_set_test_only(google_api_expr_v1alpha1_Expr_Select *msg, bool value) {
*UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
@@ -411,27 +504,46 @@ UPB_INLINE google_api_expr_v1alpha1_Expr_Call* google_api_expr_v1alpha1_Expr_Cal
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_Call_serialize(const google_api_expr_v1alpha1_Expr_Call* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Call_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Call_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_Call_serialize_ex(const google_api_expr_v1alpha1_Expr_Call* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Call_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Call_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_Call_has_target(const google_api_expr_v1alpha1_Expr_Call* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_Call_clear_target(const google_api_expr_v1alpha1_Expr_Call* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_Call_has_target(const google_api_expr_v1alpha1_Expr_Call *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Call_target(const google_api_expr_v1alpha1_Expr_Call* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const google_api_expr_v1alpha1_Expr*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const google_api_expr_v1alpha1_Expr*);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_Call_clear_function(const google_api_expr_v1alpha1_Expr_Call* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_Expr_Call_function(const google_api_expr_v1alpha1_Expr_Call* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_Call_has_args(const google_api_expr_v1alpha1_Expr_Call* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_Call_clear_args(const google_api_expr_v1alpha1_Expr_Call* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE const google_api_expr_v1alpha1_Expr* const* google_api_expr_v1alpha1_Expr_Call_args(const google_api_expr_v1alpha1_Expr_Call* msg, size_t* len) {
+ return (const google_api_expr_v1alpha1_Expr* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_Call_has_args(const google_api_expr_v1alpha1_Expr_Call *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const google_api_expr_v1alpha1_Expr* const* google_api_expr_v1alpha1_Expr_Call_args(const google_api_expr_v1alpha1_Expr_Call *msg, size_t *len) { return (const google_api_expr_v1alpha1_Expr* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
UPB_INLINE void google_api_expr_v1alpha1_Expr_Call_set_target(google_api_expr_v1alpha1_Expr_Call *msg, google_api_expr_v1alpha1_Expr* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), google_api_expr_v1alpha1_Expr*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), google_api_expr_v1alpha1_Expr*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Call_mutable_target(google_api_expr_v1alpha1_Expr_Call *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Call_mutable_target(google_api_expr_v1alpha1_Expr_Call* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr* sub = (struct google_api_expr_v1alpha1_Expr*)google_api_expr_v1alpha1_Expr_Call_target(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_msginit, arena);
@@ -441,18 +553,17 @@ UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_C
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_Call_set_function(google_api_expr_v1alpha1_Expr_Call *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
-UPB_INLINE google_api_expr_v1alpha1_Expr** google_api_expr_v1alpha1_Expr_Call_mutable_args(google_api_expr_v1alpha1_Expr_Call *msg, size_t *len) {
+UPB_INLINE google_api_expr_v1alpha1_Expr** google_api_expr_v1alpha1_Expr_Call_mutable_args(google_api_expr_v1alpha1_Expr_Call* msg, size_t* len) {
return (google_api_expr_v1alpha1_Expr**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE google_api_expr_v1alpha1_Expr** google_api_expr_v1alpha1_Expr_Call_resize_args(google_api_expr_v1alpha1_Expr_Call *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_api_expr_v1alpha1_Expr** google_api_expr_v1alpha1_Expr_Call_resize_args(google_api_expr_v1alpha1_Expr_Call* msg, size_t len, upb_Arena* arena) {
return (google_api_expr_v1alpha1_Expr**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Call_add_args(google_api_expr_v1alpha1_Expr_Call *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Call_add_args(google_api_expr_v1alpha1_Expr_Call* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr* sub = (struct google_api_expr_v1alpha1_Expr*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -482,25 +593,35 @@ UPB_INLINE google_api_expr_v1alpha1_Expr_CreateList* google_api_expr_v1alpha1_Ex
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_CreateList_serialize(const google_api_expr_v1alpha1_Expr_CreateList* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_CreateList_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_CreateList_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_CreateList_serialize_ex(const google_api_expr_v1alpha1_Expr_CreateList* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_CreateList_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_CreateList_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_CreateList_has_elements(const google_api_expr_v1alpha1_Expr_CreateList* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_CreateList_clear_elements(const google_api_expr_v1alpha1_Expr_CreateList* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const google_api_expr_v1alpha1_Expr* const* google_api_expr_v1alpha1_Expr_CreateList_elements(const google_api_expr_v1alpha1_Expr_CreateList* msg, size_t* len) {
+ return (const google_api_expr_v1alpha1_Expr* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_CreateList_has_elements(const google_api_expr_v1alpha1_Expr_CreateList *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const google_api_expr_v1alpha1_Expr* const* google_api_expr_v1alpha1_Expr_CreateList_elements(const google_api_expr_v1alpha1_Expr_CreateList *msg, size_t *len) { return (const google_api_expr_v1alpha1_Expr* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE google_api_expr_v1alpha1_Expr** google_api_expr_v1alpha1_Expr_CreateList_mutable_elements(google_api_expr_v1alpha1_Expr_CreateList *msg, size_t *len) {
+UPB_INLINE google_api_expr_v1alpha1_Expr** google_api_expr_v1alpha1_Expr_CreateList_mutable_elements(google_api_expr_v1alpha1_Expr_CreateList* msg, size_t* len) {
return (google_api_expr_v1alpha1_Expr**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE google_api_expr_v1alpha1_Expr** google_api_expr_v1alpha1_Expr_CreateList_resize_elements(google_api_expr_v1alpha1_Expr_CreateList *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_api_expr_v1alpha1_Expr** google_api_expr_v1alpha1_Expr_CreateList_resize_elements(google_api_expr_v1alpha1_Expr_CreateList* msg, size_t len, upb_Arena* arena) {
return (google_api_expr_v1alpha1_Expr**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_CreateList_add_elements(google_api_expr_v1alpha1_Expr_CreateList *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_CreateList_add_elements(google_api_expr_v1alpha1_Expr_CreateList* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr* sub = (struct google_api_expr_v1alpha1_Expr*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -530,31 +651,44 @@ UPB_INLINE google_api_expr_v1alpha1_Expr_CreateStruct* google_api_expr_v1alpha1_
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_CreateStruct_serialize(const google_api_expr_v1alpha1_Expr_CreateStruct* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_CreateStruct_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_CreateStruct_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_CreateStruct_serialize_ex(const google_api_expr_v1alpha1_Expr_CreateStruct* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_CreateStruct_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_CreateStruct_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_CreateStruct_clear_message_name(const google_api_expr_v1alpha1_Expr_CreateStruct* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_Expr_CreateStruct_message_name(const google_api_expr_v1alpha1_Expr_CreateStruct* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_CreateStruct_has_entries(const google_api_expr_v1alpha1_Expr_CreateStruct *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* const* google_api_expr_v1alpha1_Expr_CreateStruct_entries(const google_api_expr_v1alpha1_Expr_CreateStruct *msg, size_t *len) { return (const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_CreateStruct_has_entries(const google_api_expr_v1alpha1_Expr_CreateStruct* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_CreateStruct_clear_entries(const google_api_expr_v1alpha1_Expr_CreateStruct* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* const* google_api_expr_v1alpha1_Expr_CreateStruct_entries(const google_api_expr_v1alpha1_Expr_CreateStruct* msg, size_t* len) {
+ return (const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
UPB_INLINE void google_api_expr_v1alpha1_Expr_CreateStruct_set_message_name(google_api_expr_v1alpha1_Expr_CreateStruct *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
-UPB_INLINE google_api_expr_v1alpha1_Expr_CreateStruct_Entry** google_api_expr_v1alpha1_Expr_CreateStruct_mutable_entries(google_api_expr_v1alpha1_Expr_CreateStruct *msg, size_t *len) {
+UPB_INLINE google_api_expr_v1alpha1_Expr_CreateStruct_Entry** google_api_expr_v1alpha1_Expr_CreateStruct_mutable_entries(google_api_expr_v1alpha1_Expr_CreateStruct* msg, size_t* len) {
return (google_api_expr_v1alpha1_Expr_CreateStruct_Entry**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE google_api_expr_v1alpha1_Expr_CreateStruct_Entry** google_api_expr_v1alpha1_Expr_CreateStruct_resize_entries(google_api_expr_v1alpha1_Expr_CreateStruct *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_api_expr_v1alpha1_Expr_CreateStruct_Entry** google_api_expr_v1alpha1_Expr_CreateStruct_resize_entries(google_api_expr_v1alpha1_Expr_CreateStruct* msg, size_t len, upb_Arena* arena) {
return (google_api_expr_v1alpha1_Expr_CreateStruct_Entry**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr_CreateStruct_Entry* google_api_expr_v1alpha1_Expr_CreateStruct_add_entries(google_api_expr_v1alpha1_Expr_CreateStruct *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr_CreateStruct_Entry* google_api_expr_v1alpha1_Expr_CreateStruct_add_entries(google_api_expr_v1alpha1_Expr_CreateStruct* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr_CreateStruct_Entry* sub = (struct google_api_expr_v1alpha1_Expr_CreateStruct_Entry*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_CreateStruct_Entry_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -584,41 +718,68 @@ UPB_INLINE google_api_expr_v1alpha1_Expr_CreateStruct_Entry* google_api_expr_v1a
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_CreateStruct_Entry_serialize(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_CreateStruct_Entry_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_CreateStruct_Entry_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_CreateStruct_Entry_serialize_ex(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_CreateStruct_Entry_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_CreateStruct_Entry_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
google_api_expr_v1alpha1_Expr_CreateStruct_Entry_key_kind_field_key = 2,
google_api_expr_v1alpha1_Expr_CreateStruct_Entry_key_kind_map_key = 3,
google_api_expr_v1alpha1_Expr_CreateStruct_Entry_key_kind_NOT_SET = 0
} google_api_expr_v1alpha1_Expr_CreateStruct_Entry_key_kind_oneofcases;
-UPB_INLINE google_api_expr_v1alpha1_Expr_CreateStruct_Entry_key_kind_oneofcases google_api_expr_v1alpha1_Expr_CreateStruct_Entry_key_kind_case(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg) { return (google_api_expr_v1alpha1_Expr_CreateStruct_Entry_key_kind_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(28, 40), int32_t); }
-
+UPB_INLINE google_api_expr_v1alpha1_Expr_CreateStruct_Entry_key_kind_oneofcases google_api_expr_v1alpha1_Expr_CreateStruct_Entry_key_kind_case(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg) {
+ return (google_api_expr_v1alpha1_Expr_CreateStruct_Entry_key_kind_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_CreateStruct_Entry_clear_id(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t) = 0;
+}
UPB_INLINE int64_t google_api_expr_v1alpha1_Expr_CreateStruct_Entry_id(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_CreateStruct_Entry_has_field_key(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_CreateStruct_Entry_clear_field_key(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), google_api_expr_v1alpha1_Expr_CreateStruct_Entry_key_kind_NOT_SET);
+}
+UPB_INLINE upb_StringView google_api_expr_v1alpha1_Expr_CreateStruct_Entry_field_key(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 2, upb_StringView_FromString(""));
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_CreateStruct_Entry_has_map_key(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_CreateStruct_Entry_clear_map_key(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), google_api_expr_v1alpha1_Expr_CreateStruct_Entry_key_kind_NOT_SET);
+}
+UPB_INLINE const google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_CreateStruct_Entry_map_key(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Expr*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 3, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_CreateStruct_Entry_has_value(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_CreateStruct_Entry_clear_value(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
}
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_CreateStruct_Entry_has_field_key(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry *msg) { return _upb_getoneofcase(msg, UPB_SIZE(28, 40)) == 2; }
-UPB_INLINE upb_StringView google_api_expr_v1alpha1_Expr_CreateStruct_Entry_field_key(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(20, 24), UPB_SIZE(28, 40), 2, upb_StringView_FromString("")); }
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_CreateStruct_Entry_has_map_key(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry *msg) { return _upb_getoneofcase(msg, UPB_SIZE(28, 40)) == 3; }
-UPB_INLINE const google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_CreateStruct_Entry_map_key(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry *msg) { return UPB_READ_ONEOF(msg, const google_api_expr_v1alpha1_Expr*, UPB_SIZE(20, 24), UPB_SIZE(28, 40), 3, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_CreateStruct_Entry_has_value(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_CreateStruct_Entry_value(const google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), const google_api_expr_v1alpha1_Expr*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const google_api_expr_v1alpha1_Expr*);
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_CreateStruct_Entry_set_id(google_api_expr_v1alpha1_Expr_CreateStruct_Entry *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t) = value;
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_CreateStruct_Entry_set_field_key(google_api_expr_v1alpha1_Expr_CreateStruct_Entry *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(20, 24), value, UPB_SIZE(28, 40), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 2);
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_CreateStruct_Entry_set_map_key(google_api_expr_v1alpha1_Expr_CreateStruct_Entry *msg, google_api_expr_v1alpha1_Expr* value) {
- UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr*, UPB_SIZE(20, 24), value, UPB_SIZE(28, 40), 3);
+ UPB_WRITE_ONEOF(msg, google_api_expr_v1alpha1_Expr*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_CreateStruct_Entry_mutable_map_key(google_api_expr_v1alpha1_Expr_CreateStruct_Entry *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_CreateStruct_Entry_mutable_map_key(google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr* sub = (struct google_api_expr_v1alpha1_Expr*)google_api_expr_v1alpha1_Expr_CreateStruct_Entry_map_key(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_msginit, arena);
@@ -629,9 +790,9 @@ UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_C
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_CreateStruct_Entry_set_value(google_api_expr_v1alpha1_Expr_CreateStruct_Entry *msg, google_api_expr_v1alpha1_Expr* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), google_api_expr_v1alpha1_Expr*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), google_api_expr_v1alpha1_Expr*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_CreateStruct_Entry_mutable_value(google_api_expr_v1alpha1_Expr_CreateStruct_Entry *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_CreateStruct_Entry_mutable_value(google_api_expr_v1alpha1_Expr_CreateStruct_Entry* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr* sub = (struct google_api_expr_v1alpha1_Expr*)google_api_expr_v1alpha1_Expr_CreateStruct_Entry_value(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_msginit, arena);
@@ -666,35 +827,70 @@ UPB_INLINE google_api_expr_v1alpha1_Expr_Comprehension* google_api_expr_v1alpha1
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_Comprehension_serialize(const google_api_expr_v1alpha1_Expr_Comprehension* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Comprehension_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Comprehension_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Expr_Comprehension_serialize_ex(const google_api_expr_v1alpha1_Expr_Comprehension* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Comprehension_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Expr_Comprehension_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_Comprehension_clear_iter_var(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_Expr_Comprehension_iter_var(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_Comprehension_has_iter_range(const google_api_expr_v1alpha1_Expr_Comprehension *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_Comprehension_has_iter_range(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_Comprehension_clear_iter_range(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_iter_range(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const google_api_expr_v1alpha1_Expr*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const google_api_expr_v1alpha1_Expr*);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_Comprehension_clear_accu_var(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_Expr_Comprehension_accu_var(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_Comprehension_has_accu_init(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_Comprehension_clear_accu_init(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const upb_Message*) = NULL;
}
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_Comprehension_has_accu_init(const google_api_expr_v1alpha1_Expr_Comprehension *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_accu_init(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const google_api_expr_v1alpha1_Expr*);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_Comprehension_has_loop_condition(const google_api_expr_v1alpha1_Expr_Comprehension *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_Comprehension_has_loop_condition(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_Comprehension_clear_loop_condition(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const upb_Message*) = NULL;
+}
UPB_INLINE const google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_loop_condition(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const google_api_expr_v1alpha1_Expr*);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_Comprehension_has_loop_step(const google_api_expr_v1alpha1_Expr_Comprehension *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_Comprehension_has_loop_step(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_Comprehension_clear_loop_step(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const upb_Message*) = NULL;
+}
UPB_INLINE const google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_loop_step(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const google_api_expr_v1alpha1_Expr*);
}
-UPB_INLINE bool google_api_expr_v1alpha1_Expr_Comprehension_has_result(const google_api_expr_v1alpha1_Expr_Comprehension *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool google_api_expr_v1alpha1_Expr_Comprehension_has_result(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void google_api_expr_v1alpha1_Expr_Comprehension_clear_result(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const upb_Message*) = NULL;
+}
UPB_INLINE const google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_result(const google_api_expr_v1alpha1_Expr_Comprehension* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(36, 72), const google_api_expr_v1alpha1_Expr*);
}
@@ -704,9 +900,9 @@ UPB_INLINE void google_api_expr_v1alpha1_Expr_Comprehension_set_iter_var(google_
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_Comprehension_set_iter_range(google_api_expr_v1alpha1_Expr_Comprehension *msg, google_api_expr_v1alpha1_Expr* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), google_api_expr_v1alpha1_Expr*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), google_api_expr_v1alpha1_Expr*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_mutable_iter_range(google_api_expr_v1alpha1_Expr_Comprehension *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_mutable_iter_range(google_api_expr_v1alpha1_Expr_Comprehension* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr* sub = (struct google_api_expr_v1alpha1_Expr*)google_api_expr_v1alpha1_Expr_Comprehension_iter_range(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_msginit, arena);
@@ -716,13 +912,13 @@ UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_C
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_Comprehension_set_accu_var(google_api_expr_v1alpha1_Expr_Comprehension *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = value;
}
UPB_INLINE void google_api_expr_v1alpha1_Expr_Comprehension_set_accu_init(google_api_expr_v1alpha1_Expr_Comprehension *msg, google_api_expr_v1alpha1_Expr* value) {
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(24, 48), google_api_expr_v1alpha1_Expr*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_mutable_accu_init(google_api_expr_v1alpha1_Expr_Comprehension *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_mutable_accu_init(google_api_expr_v1alpha1_Expr_Comprehension* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr* sub = (struct google_api_expr_v1alpha1_Expr*)google_api_expr_v1alpha1_Expr_Comprehension_accu_init(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_msginit, arena);
@@ -735,7 +931,7 @@ UPB_INLINE void google_api_expr_v1alpha1_Expr_Comprehension_set_loop_condition(g
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(28, 56), google_api_expr_v1alpha1_Expr*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_mutable_loop_condition(google_api_expr_v1alpha1_Expr_Comprehension *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_mutable_loop_condition(google_api_expr_v1alpha1_Expr_Comprehension* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr* sub = (struct google_api_expr_v1alpha1_Expr*)google_api_expr_v1alpha1_Expr_Comprehension_loop_condition(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_msginit, arena);
@@ -748,7 +944,7 @@ UPB_INLINE void google_api_expr_v1alpha1_Expr_Comprehension_set_loop_step(google
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(32, 64), google_api_expr_v1alpha1_Expr*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_mutable_loop_step(google_api_expr_v1alpha1_Expr_Comprehension *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_mutable_loop_step(google_api_expr_v1alpha1_Expr_Comprehension* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr* sub = (struct google_api_expr_v1alpha1_Expr*)google_api_expr_v1alpha1_Expr_Comprehension_loop_step(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_msginit, arena);
@@ -761,7 +957,7 @@ UPB_INLINE void google_api_expr_v1alpha1_Expr_Comprehension_set_result(google_ap
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(36, 72), google_api_expr_v1alpha1_Expr*) = value;
}
-UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_mutable_result(google_api_expr_v1alpha1_Expr_Comprehension *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_Expr_Comprehension_mutable_result(google_api_expr_v1alpha1_Expr_Comprehension* msg, upb_Arena* arena) {
struct google_api_expr_v1alpha1_Expr* sub = (struct google_api_expr_v1alpha1_Expr*)google_api_expr_v1alpha1_Expr_Comprehension_result(msg);
if (sub == NULL) {
sub = (struct google_api_expr_v1alpha1_Expr*)_upb_Message_New(&google_api_expr_v1alpha1_Expr_msginit, arena);
@@ -796,11 +992,15 @@ UPB_INLINE google_api_expr_v1alpha1_Constant* google_api_expr_v1alpha1_Constant_
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_Constant_serialize(const google_api_expr_v1alpha1_Constant* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Constant_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Constant_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_Constant_serialize_ex(const google_api_expr_v1alpha1_Constant* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_Constant_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_Constant_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
google_api_expr_v1alpha1_Constant_constant_kind_null_value = 1,
@@ -814,52 +1014,116 @@ typedef enum {
google_api_expr_v1alpha1_Constant_constant_kind_timestamp_value = 9,
google_api_expr_v1alpha1_Constant_constant_kind_NOT_SET = 0
} google_api_expr_v1alpha1_Constant_constant_kind_oneofcases;
-UPB_INLINE google_api_expr_v1alpha1_Constant_constant_kind_oneofcases google_api_expr_v1alpha1_Constant_constant_kind_case(const google_api_expr_v1alpha1_Constant* msg) { return (google_api_expr_v1alpha1_Constant_constant_kind_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_null_value(const google_api_expr_v1alpha1_Constant *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE int32_t google_api_expr_v1alpha1_Constant_null_value(const google_api_expr_v1alpha1_Constant *msg) { return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, 0); }
-UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_bool_value(const google_api_expr_v1alpha1_Constant *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 2; }
-UPB_INLINE bool google_api_expr_v1alpha1_Constant_bool_value(const google_api_expr_v1alpha1_Constant *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 2, false); }
-UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_int64_value(const google_api_expr_v1alpha1_Constant *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 3; }
-UPB_INLINE int64_t google_api_expr_v1alpha1_Constant_int64_value(const google_api_expr_v1alpha1_Constant *msg) { return UPB_READ_ONEOF(msg, int64_t, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 3, 0); }
-UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_uint64_value(const google_api_expr_v1alpha1_Constant *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 4; }
-UPB_INLINE uint64_t google_api_expr_v1alpha1_Constant_uint64_value(const google_api_expr_v1alpha1_Constant *msg) { return UPB_READ_ONEOF(msg, uint64_t, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 4, 0); }
-UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_double_value(const google_api_expr_v1alpha1_Constant *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 5; }
-UPB_INLINE double google_api_expr_v1alpha1_Constant_double_value(const google_api_expr_v1alpha1_Constant *msg) { return UPB_READ_ONEOF(msg, double, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 5, 0); }
-UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_string_value(const google_api_expr_v1alpha1_Constant *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 6; }
-UPB_INLINE upb_StringView google_api_expr_v1alpha1_Constant_string_value(const google_api_expr_v1alpha1_Constant *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 6, upb_StringView_FromString("")); }
-UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_bytes_value(const google_api_expr_v1alpha1_Constant *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 7; }
-UPB_INLINE upb_StringView google_api_expr_v1alpha1_Constant_bytes_value(const google_api_expr_v1alpha1_Constant *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 7, upb_StringView_FromString("")); }
-UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_duration_value(const google_api_expr_v1alpha1_Constant *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 8; }
-UPB_INLINE const struct google_protobuf_Duration* google_api_expr_v1alpha1_Constant_duration_value(const google_api_expr_v1alpha1_Constant *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Duration*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 8, NULL); }
-UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_timestamp_value(const google_api_expr_v1alpha1_Constant *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 9; }
-UPB_INLINE const struct google_protobuf_Timestamp* google_api_expr_v1alpha1_Constant_timestamp_value(const google_api_expr_v1alpha1_Constant *msg) { return UPB_READ_ONEOF(msg, const struct google_protobuf_Timestamp*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 9, NULL); }
+UPB_INLINE google_api_expr_v1alpha1_Constant_constant_kind_oneofcases google_api_expr_v1alpha1_Constant_constant_kind_case(const google_api_expr_v1alpha1_Constant* msg) {
+ return (google_api_expr_v1alpha1_Constant_constant_kind_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_null_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Constant_clear_null_value(const google_api_expr_v1alpha1_Constant* msg) {
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(8, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Constant_constant_kind_NOT_SET);
+}
+UPB_INLINE int32_t google_api_expr_v1alpha1_Constant_null_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 1, 0);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_bool_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Constant_clear_bool_value(const google_api_expr_v1alpha1_Constant* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(8, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Constant_constant_kind_NOT_SET);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Constant_bool_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 2, false);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_int64_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Constant_clear_int64_value(const google_api_expr_v1alpha1_Constant* msg) {
+ UPB_WRITE_ONEOF(msg, int64_t, UPB_SIZE(8, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Constant_constant_kind_NOT_SET);
+}
+UPB_INLINE int64_t google_api_expr_v1alpha1_Constant_int64_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return UPB_READ_ONEOF(msg, int64_t, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 3, _upb_Int64_FromLL(0ll));
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_uint64_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Constant_clear_uint64_value(const google_api_expr_v1alpha1_Constant* msg) {
+ UPB_WRITE_ONEOF(msg, uint64_t, UPB_SIZE(8, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Constant_constant_kind_NOT_SET);
+}
+UPB_INLINE uint64_t google_api_expr_v1alpha1_Constant_uint64_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return UPB_READ_ONEOF(msg, uint64_t, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 4, _upb_UInt64_FromULL(0ull));
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_double_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Constant_clear_double_value(const google_api_expr_v1alpha1_Constant* msg) {
+ UPB_WRITE_ONEOF(msg, double, UPB_SIZE(8, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Constant_constant_kind_NOT_SET);
+}
+UPB_INLINE double google_api_expr_v1alpha1_Constant_double_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return UPB_READ_ONEOF(msg, double, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 5, 0);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_string_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 6;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Constant_clear_string_value(const google_api_expr_v1alpha1_Constant* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), google_api_expr_v1alpha1_Constant_constant_kind_NOT_SET);
+}
+UPB_INLINE upb_StringView google_api_expr_v1alpha1_Constant_string_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 6, upb_StringView_FromString(""));
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_bytes_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 7;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Constant_clear_bytes_value(const google_api_expr_v1alpha1_Constant* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), google_api_expr_v1alpha1_Constant_constant_kind_NOT_SET);
+}
+UPB_INLINE upb_StringView google_api_expr_v1alpha1_Constant_bytes_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 7, upb_StringView_FromString(""));
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_duration_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 8;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Constant_clear_duration_value(const google_api_expr_v1alpha1_Constant* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Duration*, UPB_SIZE(8, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Constant_constant_kind_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Duration* google_api_expr_v1alpha1_Constant_duration_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Duration*, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 8, NULL);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_Constant_has_timestamp_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 9;
+}
+UPB_INLINE void google_api_expr_v1alpha1_Constant_clear_timestamp_value(const google_api_expr_v1alpha1_Constant* msg) {
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Timestamp*, UPB_SIZE(8, 8), 0, UPB_SIZE(0, 0), google_api_expr_v1alpha1_Constant_constant_kind_NOT_SET);
+}
+UPB_INLINE const struct google_protobuf_Timestamp* google_api_expr_v1alpha1_Constant_timestamp_value(const google_api_expr_v1alpha1_Constant* msg) {
+ return UPB_READ_ONEOF(msg, const struct google_protobuf_Timestamp*, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 9, NULL);
+}
UPB_INLINE void google_api_expr_v1alpha1_Constant_set_null_value(google_api_expr_v1alpha1_Constant *msg, int32_t value) {
- UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 1);
}
UPB_INLINE void google_api_expr_v1alpha1_Constant_set_bool_value(google_api_expr_v1alpha1_Constant *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 2);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 2);
}
UPB_INLINE void google_api_expr_v1alpha1_Constant_set_int64_value(google_api_expr_v1alpha1_Constant *msg, int64_t value) {
- UPB_WRITE_ONEOF(msg, int64_t, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 3);
+ UPB_WRITE_ONEOF(msg, int64_t, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 3);
}
UPB_INLINE void google_api_expr_v1alpha1_Constant_set_uint64_value(google_api_expr_v1alpha1_Constant *msg, uint64_t value) {
- UPB_WRITE_ONEOF(msg, uint64_t, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 4);
+ UPB_WRITE_ONEOF(msg, uint64_t, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 4);
}
UPB_INLINE void google_api_expr_v1alpha1_Constant_set_double_value(google_api_expr_v1alpha1_Constant *msg, double value) {
- UPB_WRITE_ONEOF(msg, double, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 5);
+ UPB_WRITE_ONEOF(msg, double, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 5);
}
UPB_INLINE void google_api_expr_v1alpha1_Constant_set_string_value(google_api_expr_v1alpha1_Constant *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 6);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 6);
}
UPB_INLINE void google_api_expr_v1alpha1_Constant_set_bytes_value(google_api_expr_v1alpha1_Constant *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 7);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 7);
}
UPB_INLINE void google_api_expr_v1alpha1_Constant_set_duration_value(google_api_expr_v1alpha1_Constant *msg, struct google_protobuf_Duration* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Duration*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 8);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Duration*, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 8);
}
-UPB_INLINE struct google_protobuf_Duration* google_api_expr_v1alpha1_Constant_mutable_duration_value(google_api_expr_v1alpha1_Constant *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* google_api_expr_v1alpha1_Constant_mutable_duration_value(google_api_expr_v1alpha1_Constant* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)google_api_expr_v1alpha1_Constant_duration_value(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -869,9 +1133,9 @@ UPB_INLINE struct google_protobuf_Duration* google_api_expr_v1alpha1_Constant_mu
return sub;
}
UPB_INLINE void google_api_expr_v1alpha1_Constant_set_timestamp_value(google_api_expr_v1alpha1_Constant *msg, struct google_protobuf_Timestamp* value) {
- UPB_WRITE_ONEOF(msg, struct google_protobuf_Timestamp*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 9);
+ UPB_WRITE_ONEOF(msg, struct google_protobuf_Timestamp*, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 9);
}
-UPB_INLINE struct google_protobuf_Timestamp* google_api_expr_v1alpha1_Constant_mutable_timestamp_value(google_api_expr_v1alpha1_Constant *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* google_api_expr_v1alpha1_Constant_mutable_timestamp_value(google_api_expr_v1alpha1_Constant* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)google_api_expr_v1alpha1_Constant_timestamp_value(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -906,27 +1170,64 @@ UPB_INLINE google_api_expr_v1alpha1_SourceInfo* google_api_expr_v1alpha1_SourceI
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_SourceInfo_serialize(const google_api_expr_v1alpha1_SourceInfo* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_SourceInfo_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_SourceInfo_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_SourceInfo_serialize_ex(const google_api_expr_v1alpha1_SourceInfo* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_SourceInfo_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_SourceInfo_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_api_expr_v1alpha1_SourceInfo_clear_syntax_version(const google_api_expr_v1alpha1_SourceInfo* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_SourceInfo_syntax_version(const google_api_expr_v1alpha1_SourceInfo* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void google_api_expr_v1alpha1_SourceInfo_clear_location(const google_api_expr_v1alpha1_SourceInfo* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_SourceInfo_location(const google_api_expr_v1alpha1_SourceInfo* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
-UPB_INLINE int32_t const* google_api_expr_v1alpha1_SourceInfo_line_offsets(const google_api_expr_v1alpha1_SourceInfo *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
-UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_has_positions(const google_api_expr_v1alpha1_SourceInfo *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE size_t google_api_expr_v1alpha1_SourceInfo_positions_size(const google_api_expr_v1alpha1_SourceInfo *msg) {return _upb_msg_map_size(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_positions_get(const google_api_expr_v1alpha1_SourceInfo *msg, int64_t key, int32_t *val) { return _upb_msg_map_get(msg, UPB_SIZE(20, 40), &key, sizeof(key), val, sizeof(*val)); }
-UPB_INLINE const google_api_expr_v1alpha1_SourceInfo_PositionsEntry* google_api_expr_v1alpha1_SourceInfo_positions_next(const google_api_expr_v1alpha1_SourceInfo *msg, size_t* iter) { return (const google_api_expr_v1alpha1_SourceInfo_PositionsEntry*)_upb_msg_map_next(msg, UPB_SIZE(20, 40), iter); }
-UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_has_macro_calls(const google_api_expr_v1alpha1_SourceInfo *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48)); }
-UPB_INLINE size_t google_api_expr_v1alpha1_SourceInfo_macro_calls_size(const google_api_expr_v1alpha1_SourceInfo *msg) {return _upb_msg_map_size(msg, UPB_SIZE(24, 48)); }
-UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_macro_calls_get(const google_api_expr_v1alpha1_SourceInfo *msg, int64_t key, google_api_expr_v1alpha1_Expr* *val) { return _upb_msg_map_get(msg, UPB_SIZE(24, 48), &key, sizeof(key), val, sizeof(*val)); }
-UPB_INLINE const google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry* google_api_expr_v1alpha1_SourceInfo_macro_calls_next(const google_api_expr_v1alpha1_SourceInfo *msg, size_t* iter) { return (const google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry*)_upb_msg_map_next(msg, UPB_SIZE(24, 48), iter); }
+UPB_INLINE void google_api_expr_v1alpha1_SourceInfo_clear_line_offsets(const google_api_expr_v1alpha1_SourceInfo* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE int32_t const* google_api_expr_v1alpha1_SourceInfo_line_offsets(const google_api_expr_v1alpha1_SourceInfo* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_has_positions(const google_api_expr_v1alpha1_SourceInfo* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE void google_api_expr_v1alpha1_SourceInfo_clear_positions(const google_api_expr_v1alpha1_SourceInfo* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE size_t google_api_expr_v1alpha1_SourceInfo_positions_size(const google_api_expr_v1alpha1_SourceInfo* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_positions_get(const google_api_expr_v1alpha1_SourceInfo* msg, int64_t key, int32_t* val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(20, 40), &key, sizeof(key), val, sizeof(*val));
+}
+UPB_INLINE const google_api_expr_v1alpha1_SourceInfo_PositionsEntry* google_api_expr_v1alpha1_SourceInfo_positions_next(const google_api_expr_v1alpha1_SourceInfo* msg, size_t* iter) {
+ return (const google_api_expr_v1alpha1_SourceInfo_PositionsEntry*)_upb_msg_map_next(msg, UPB_SIZE(20, 40), iter);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_has_macro_calls(const google_api_expr_v1alpha1_SourceInfo* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE void google_api_expr_v1alpha1_SourceInfo_clear_macro_calls(const google_api_expr_v1alpha1_SourceInfo* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE size_t google_api_expr_v1alpha1_SourceInfo_macro_calls_size(const google_api_expr_v1alpha1_SourceInfo* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_macro_calls_get(const google_api_expr_v1alpha1_SourceInfo* msg, int64_t key, google_api_expr_v1alpha1_Expr** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(24, 48), &key, sizeof(key), val, sizeof(*val));
+}
+UPB_INLINE const google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry* google_api_expr_v1alpha1_SourceInfo_macro_calls_next(const google_api_expr_v1alpha1_SourceInfo* msg, size_t* iter) {
+ return (const google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry*)_upb_msg_map_next(msg, UPB_SIZE(24, 48), iter);
+}
UPB_INLINE void google_api_expr_v1alpha1_SourceInfo_set_syntax_version(google_api_expr_v1alpha1_SourceInfo *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
@@ -934,33 +1235,44 @@ UPB_INLINE void google_api_expr_v1alpha1_SourceInfo_set_syntax_version(google_ap
UPB_INLINE void google_api_expr_v1alpha1_SourceInfo_set_location(google_api_expr_v1alpha1_SourceInfo *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
-UPB_INLINE int32_t* google_api_expr_v1alpha1_SourceInfo_mutable_line_offsets(google_api_expr_v1alpha1_SourceInfo *msg, size_t *len) {
+UPB_INLINE int32_t* google_api_expr_v1alpha1_SourceInfo_mutable_line_offsets(google_api_expr_v1alpha1_SourceInfo* msg, size_t* len) {
return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE int32_t* google_api_expr_v1alpha1_SourceInfo_resize_line_offsets(google_api_expr_v1alpha1_SourceInfo *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE int32_t* google_api_expr_v1alpha1_SourceInfo_resize_line_offsets(google_api_expr_v1alpha1_SourceInfo* msg, size_t len, upb_Arena* arena) {
return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, 2, arena);
}
-UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_add_line_offsets(google_api_expr_v1alpha1_SourceInfo *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), 2, &val,
- arena);
-}
-UPB_INLINE void google_api_expr_v1alpha1_SourceInfo_positions_clear(google_api_expr_v1alpha1_SourceInfo *msg) { _upb_msg_map_clear(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_positions_set(google_api_expr_v1alpha1_SourceInfo *msg, int64_t key, int32_t val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(20, 40), &key, sizeof(key), &val, sizeof(val), a); }
-UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_positions_delete(google_api_expr_v1alpha1_SourceInfo *msg, int64_t key) { return _upb_msg_map_delete(msg, UPB_SIZE(20, 40), &key, sizeof(key)); }
-UPB_INLINE google_api_expr_v1alpha1_SourceInfo_PositionsEntry* google_api_expr_v1alpha1_SourceInfo_positions_nextmutable(google_api_expr_v1alpha1_SourceInfo *msg, size_t* iter) { return (google_api_expr_v1alpha1_SourceInfo_PositionsEntry*)_upb_msg_map_next(msg, UPB_SIZE(20, 40), iter); }
-UPB_INLINE void google_api_expr_v1alpha1_SourceInfo_macro_calls_clear(google_api_expr_v1alpha1_SourceInfo *msg) { _upb_msg_map_clear(msg, UPB_SIZE(24, 48)); }
-UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_macro_calls_set(google_api_expr_v1alpha1_SourceInfo *msg, int64_t key, google_api_expr_v1alpha1_Expr* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(24, 48), &key, sizeof(key), &val, sizeof(val), a); }
-UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_macro_calls_delete(google_api_expr_v1alpha1_SourceInfo *msg, int64_t key) { return _upb_msg_map_delete(msg, UPB_SIZE(24, 48), &key, sizeof(key)); }
-UPB_INLINE google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry* google_api_expr_v1alpha1_SourceInfo_macro_calls_nextmutable(google_api_expr_v1alpha1_SourceInfo *msg, size_t* iter) { return (google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry*)_upb_msg_map_next(msg, UPB_SIZE(24, 48), iter); }
+UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_add_line_offsets(google_api_expr_v1alpha1_SourceInfo* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), 2, &val, arena);
+}
+UPB_INLINE void google_api_expr_v1alpha1_SourceInfo_positions_clear(google_api_expr_v1alpha1_SourceInfo* msg) { _upb_msg_map_clear(msg, UPB_SIZE(20, 40)); }
+UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_positions_set(google_api_expr_v1alpha1_SourceInfo* msg, int64_t key, int32_t val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(20, 40), &key, sizeof(key), &val, sizeof(val), a);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_positions_delete(google_api_expr_v1alpha1_SourceInfo* msg, int64_t key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(20, 40), &key, sizeof(key));
+}
+UPB_INLINE google_api_expr_v1alpha1_SourceInfo_PositionsEntry* google_api_expr_v1alpha1_SourceInfo_positions_nextmutable(google_api_expr_v1alpha1_SourceInfo* msg, size_t* iter) {
+ return (google_api_expr_v1alpha1_SourceInfo_PositionsEntry*)_upb_msg_map_next(msg, UPB_SIZE(20, 40), iter);
+}
+UPB_INLINE void google_api_expr_v1alpha1_SourceInfo_macro_calls_clear(google_api_expr_v1alpha1_SourceInfo* msg) { _upb_msg_map_clear(msg, UPB_SIZE(24, 48)); }
+UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_macro_calls_set(google_api_expr_v1alpha1_SourceInfo* msg, int64_t key, google_api_expr_v1alpha1_Expr* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(24, 48), &key, sizeof(key), &val, sizeof(val), a);
+}
+UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_macro_calls_delete(google_api_expr_v1alpha1_SourceInfo* msg, int64_t key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(24, 48), &key, sizeof(key));
+}
+UPB_INLINE google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry* google_api_expr_v1alpha1_SourceInfo_macro_calls_nextmutable(google_api_expr_v1alpha1_SourceInfo* msg, size_t* iter) {
+ return (google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry*)_upb_msg_map_next(msg, UPB_SIZE(24, 48), iter);
+}
/* google.api.expr.v1alpha1.SourceInfo.PositionsEntry */
-UPB_INLINE int64_t google_api_expr_v1alpha1_SourceInfo_PositionsEntry_key(const google_api_expr_v1alpha1_SourceInfo_PositionsEntry *msg) {
+UPB_INLINE int64_t google_api_expr_v1alpha1_SourceInfo_PositionsEntry_key(const google_api_expr_v1alpha1_SourceInfo_PositionsEntry* msg) {
int64_t ret;
_upb_msg_map_key(msg, &ret, sizeof(ret));
return ret;
}
-UPB_INLINE int32_t google_api_expr_v1alpha1_SourceInfo_PositionsEntry_value(const google_api_expr_v1alpha1_SourceInfo_PositionsEntry *msg) {
+UPB_INLINE int32_t google_api_expr_v1alpha1_SourceInfo_PositionsEntry_value(const google_api_expr_v1alpha1_SourceInfo_PositionsEntry* msg) {
int32_t ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -972,13 +1284,15 @@ UPB_INLINE void google_api_expr_v1alpha1_SourceInfo_PositionsEntry_set_value(goo
/* google.api.expr.v1alpha1.SourceInfo.MacroCallsEntry */
-UPB_INLINE int64_t google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry_key(const google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry *msg) {
+UPB_INLINE int64_t google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry_key(const google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry* msg) {
int64_t ret;
_upb_msg_map_key(msg, &ret, sizeof(ret));
return ret;
}
-UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry_has_value(const google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry_value(const google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry *msg) {
+UPB_INLINE bool google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry_has_value(const google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const google_api_expr_v1alpha1_Expr* google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry_value(const google_api_expr_v1alpha1_SourceInfo_MacroCallsEntry* msg) {
google_api_expr_v1alpha1_Expr* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -1013,21 +1327,37 @@ UPB_INLINE google_api_expr_v1alpha1_SourcePosition* google_api_expr_v1alpha1_Sou
return ret;
}
UPB_INLINE char* google_api_expr_v1alpha1_SourcePosition_serialize(const google_api_expr_v1alpha1_SourcePosition* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_SourcePosition_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_SourcePosition_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_expr_v1alpha1_SourcePosition_serialize_ex(const google_api_expr_v1alpha1_SourcePosition* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_expr_v1alpha1_SourcePosition_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_expr_v1alpha1_SourcePosition_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_api_expr_v1alpha1_SourcePosition_clear_location(const google_api_expr_v1alpha1_SourcePosition* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_api_expr_v1alpha1_SourcePosition_location(const google_api_expr_v1alpha1_SourcePosition* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView);
}
+UPB_INLINE void google_api_expr_v1alpha1_SourcePosition_clear_offset(const google_api_expr_v1alpha1_SourcePosition* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
+}
UPB_INLINE int32_t google_api_expr_v1alpha1_SourcePosition_offset(const google_api_expr_v1alpha1_SourcePosition* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
+UPB_INLINE void google_api_expr_v1alpha1_SourcePosition_clear_line(const google_api_expr_v1alpha1_SourcePosition* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
UPB_INLINE int32_t google_api_expr_v1alpha1_SourcePosition_line(const google_api_expr_v1alpha1_SourcePosition* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
+UPB_INLINE void google_api_expr_v1alpha1_SourcePosition_clear_column(const google_api_expr_v1alpha1_SourcePosition* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
+}
UPB_INLINE int32_t google_api_expr_v1alpha1_SourcePosition_column(const google_api_expr_v1alpha1_SourcePosition* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/http.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/http.upb.c
index d489c8b50d..8a823e0c3a 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/http.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/http.upb.c
@@ -17,14 +17,14 @@ static const upb_MiniTable_Sub google_api_Http_submsgs[1] = {
};
static const upb_MiniTable_Field google_api_Http__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_Http_msginit = {
&google_api_Http_submsgs[0],
&google_api_Http__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub google_api_HttpRule_submsgs[2] = {
@@ -33,33 +33,33 @@ static const upb_MiniTable_Sub google_api_HttpRule_submsgs[2] = {
};
static const upb_MiniTable_Field google_api_HttpRule__fields[10] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(28, 56), UPB_SIZE(-37, -73), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(28, 56), UPB_SIZE(-37, -73), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(28, 56), UPB_SIZE(-37, -73), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(28, 56), UPB_SIZE(-37, -73), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(28, 56), UPB_SIZE(-37, -73), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {7, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {8, UPB_SIZE(28, 56), UPB_SIZE(-37, -73), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(24, 48), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(16, 32), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(20, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(28, 56), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(32, 64), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_HttpRule_msginit = {
&google_api_HttpRule_submsgs[0],
&google_api_HttpRule__fields[0],
- UPB_SIZE(40, 80), 10, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(40, 80), 10, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Field google_api_CustomHttpPattern__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_CustomHttpPattern_msginit = {
NULL,
&google_api_CustomHttpPattern__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[3] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/http.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/http.upb.h
index c39fdbbc73..afb5b754e9 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/http.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/http.upb.h
@@ -57,28 +57,41 @@ UPB_INLINE google_api_Http* google_api_Http_parse_ex(const char* buf, size_t siz
return ret;
}
UPB_INLINE char* google_api_Http_serialize(const google_api_Http* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_Http_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_Http_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_Http_serialize_ex(const google_api_Http* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_Http_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_Http_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_api_Http_has_rules(const google_api_Http* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void google_api_Http_clear_rules(const google_api_Http* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const google_api_HttpRule* const* google_api_Http_rules(const google_api_Http* msg, size_t* len) {
+ return (const google_api_HttpRule* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE void google_api_Http_clear_fully_decode_reserved_expansion(const google_api_Http* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
-UPB_INLINE bool google_api_Http_has_rules(const google_api_Http *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE const google_api_HttpRule* const* google_api_Http_rules(const google_api_Http *msg, size_t *len) { return (const google_api_HttpRule* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
UPB_INLINE bool google_api_Http_fully_decode_reserved_expansion(const google_api_Http* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
-UPB_INLINE google_api_HttpRule** google_api_Http_mutable_rules(google_api_Http *msg, size_t *len) {
+UPB_INLINE google_api_HttpRule** google_api_Http_mutable_rules(google_api_Http* msg, size_t* len) {
return (google_api_HttpRule**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE google_api_HttpRule** google_api_Http_resize_rules(google_api_Http *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_api_HttpRule** google_api_Http_resize_rules(google_api_Http* msg, size_t len, upb_Arena* arena) {
return (google_api_HttpRule**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_api_HttpRule* google_api_Http_add_rules(google_api_Http *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_HttpRule* google_api_Http_add_rules(google_api_Http* msg, upb_Arena* arena) {
struct google_api_HttpRule* sub = (struct google_api_HttpRule*)_upb_Message_New(&google_api_HttpRule_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -111,11 +124,15 @@ UPB_INLINE google_api_HttpRule* google_api_HttpRule_parse_ex(const char* buf, si
return ret;
}
UPB_INLINE char* google_api_HttpRule_serialize(const google_api_HttpRule* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_HttpRule_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_HttpRule_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_HttpRule_serialize_ex(const google_api_HttpRule* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_HttpRule_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_HttpRule_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
google_api_HttpRule_pattern_get = 2,
@@ -126,57 +143,116 @@ typedef enum {
google_api_HttpRule_pattern_custom = 8,
google_api_HttpRule_pattern_NOT_SET = 0
} google_api_HttpRule_pattern_oneofcases;
-UPB_INLINE google_api_HttpRule_pattern_oneofcases google_api_HttpRule_pattern_case(const google_api_HttpRule* msg) { return (google_api_HttpRule_pattern_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(36, 72), int32_t); }
-
+UPB_INLINE google_api_HttpRule_pattern_oneofcases google_api_HttpRule_pattern_case(const google_api_HttpRule* msg) {
+ return (google_api_HttpRule_pattern_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void google_api_HttpRule_clear_selector(const google_api_HttpRule* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView google_api_HttpRule_selector(const google_api_HttpRule* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+}
+UPB_INLINE bool google_api_HttpRule_has_get(const google_api_HttpRule* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void google_api_HttpRule_clear_get(const google_api_HttpRule* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), google_api_HttpRule_pattern_NOT_SET);
+}
+UPB_INLINE upb_StringView google_api_HttpRule_get(const google_api_HttpRule* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, upb_StringView_FromString(""));
+}
+UPB_INLINE bool google_api_HttpRule_has_put(const google_api_HttpRule* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void google_api_HttpRule_clear_put(const google_api_HttpRule* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), google_api_HttpRule_pattern_NOT_SET);
+}
+UPB_INLINE upb_StringView google_api_HttpRule_put(const google_api_HttpRule* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, upb_StringView_FromString(""));
+}
+UPB_INLINE bool google_api_HttpRule_has_post(const google_api_HttpRule* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void google_api_HttpRule_clear_post(const google_api_HttpRule* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), google_api_HttpRule_pattern_NOT_SET);
+}
+UPB_INLINE upb_StringView google_api_HttpRule_post(const google_api_HttpRule* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, upb_StringView_FromString(""));
+}
+UPB_INLINE bool google_api_HttpRule_has_delete(const google_api_HttpRule* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void google_api_HttpRule_clear_delete(const google_api_HttpRule* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), google_api_HttpRule_pattern_NOT_SET);
+}
+UPB_INLINE upb_StringView google_api_HttpRule_delete(const google_api_HttpRule* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 5, upb_StringView_FromString(""));
+}
+UPB_INLINE bool google_api_HttpRule_has_patch(const google_api_HttpRule* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 6;
+}
+UPB_INLINE void google_api_HttpRule_clear_patch(const google_api_HttpRule* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), google_api_HttpRule_pattern_NOT_SET);
+}
+UPB_INLINE upb_StringView google_api_HttpRule_patch(const google_api_HttpRule* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 6, upb_StringView_FromString(""));
+}
+UPB_INLINE void google_api_HttpRule_clear_body(const google_api_HttpRule* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
-UPB_INLINE bool google_api_HttpRule_has_get(const google_api_HttpRule *msg) { return _upb_getoneofcase(msg, UPB_SIZE(36, 72)) == 2; }
-UPB_INLINE upb_StringView google_api_HttpRule_get(const google_api_HttpRule *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(28, 56), UPB_SIZE(36, 72), 2, upb_StringView_FromString("")); }
-UPB_INLINE bool google_api_HttpRule_has_put(const google_api_HttpRule *msg) { return _upb_getoneofcase(msg, UPB_SIZE(36, 72)) == 3; }
-UPB_INLINE upb_StringView google_api_HttpRule_put(const google_api_HttpRule *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(28, 56), UPB_SIZE(36, 72), 3, upb_StringView_FromString("")); }
-UPB_INLINE bool google_api_HttpRule_has_post(const google_api_HttpRule *msg) { return _upb_getoneofcase(msg, UPB_SIZE(36, 72)) == 4; }
-UPB_INLINE upb_StringView google_api_HttpRule_post(const google_api_HttpRule *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(28, 56), UPB_SIZE(36, 72), 4, upb_StringView_FromString("")); }
-UPB_INLINE bool google_api_HttpRule_has_delete(const google_api_HttpRule *msg) { return _upb_getoneofcase(msg, UPB_SIZE(36, 72)) == 5; }
-UPB_INLINE upb_StringView google_api_HttpRule_delete(const google_api_HttpRule *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(28, 56), UPB_SIZE(36, 72), 5, upb_StringView_FromString("")); }
-UPB_INLINE bool google_api_HttpRule_has_patch(const google_api_HttpRule *msg) { return _upb_getoneofcase(msg, UPB_SIZE(36, 72)) == 6; }
-UPB_INLINE upb_StringView google_api_HttpRule_patch(const google_api_HttpRule *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(28, 56), UPB_SIZE(36, 72), 6, upb_StringView_FromString("")); }
UPB_INLINE upb_StringView google_api_HttpRule_body(const google_api_HttpRule* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+}
+UPB_INLINE bool google_api_HttpRule_has_custom(const google_api_HttpRule* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 8;
+}
+UPB_INLINE void google_api_HttpRule_clear_custom(const google_api_HttpRule* msg) {
+ UPB_WRITE_ONEOF(msg, google_api_CustomHttpPattern*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), google_api_HttpRule_pattern_NOT_SET);
+}
+UPB_INLINE const google_api_CustomHttpPattern* google_api_HttpRule_custom(const google_api_HttpRule* msg) {
+ return UPB_READ_ONEOF(msg, const google_api_CustomHttpPattern*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 8, NULL);
+}
+UPB_INLINE bool google_api_HttpRule_has_additional_bindings(const google_api_HttpRule* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE void google_api_HttpRule_clear_additional_bindings(const google_api_HttpRule* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE const google_api_HttpRule* const* google_api_HttpRule_additional_bindings(const google_api_HttpRule* msg, size_t* len) {
+ return (const google_api_HttpRule* const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len);
+}
+UPB_INLINE void google_api_HttpRule_clear_response_body(const google_api_HttpRule* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
-UPB_INLINE bool google_api_HttpRule_has_custom(const google_api_HttpRule *msg) { return _upb_getoneofcase(msg, UPB_SIZE(36, 72)) == 8; }
-UPB_INLINE const google_api_CustomHttpPattern* google_api_HttpRule_custom(const google_api_HttpRule *msg) { return UPB_READ_ONEOF(msg, const google_api_CustomHttpPattern*, UPB_SIZE(28, 56), UPB_SIZE(36, 72), 8, NULL); }
-UPB_INLINE bool google_api_HttpRule_has_additional_bindings(const google_api_HttpRule *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48)); }
-UPB_INLINE const google_api_HttpRule* const* google_api_HttpRule_additional_bindings(const google_api_HttpRule *msg, size_t *len) { return (const google_api_HttpRule* const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len); }
UPB_INLINE upb_StringView google_api_HttpRule_response_body(const google_api_HttpRule* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), upb_StringView);
}
UPB_INLINE void google_api_HttpRule_set_selector(google_api_HttpRule *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
}
UPB_INLINE void google_api_HttpRule_set_get(google_api_HttpRule *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(28, 56), value, UPB_SIZE(36, 72), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
UPB_INLINE void google_api_HttpRule_set_put(google_api_HttpRule *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(28, 56), value, UPB_SIZE(36, 72), 3);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
UPB_INLINE void google_api_HttpRule_set_post(google_api_HttpRule *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(28, 56), value, UPB_SIZE(36, 72), 4);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
UPB_INLINE void google_api_HttpRule_set_delete(google_api_HttpRule *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(28, 56), value, UPB_SIZE(36, 72), 5);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 5);
}
UPB_INLINE void google_api_HttpRule_set_patch(google_api_HttpRule *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(28, 56), value, UPB_SIZE(36, 72), 6);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 6);
}
UPB_INLINE void google_api_HttpRule_set_body(google_api_HttpRule *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
}
UPB_INLINE void google_api_HttpRule_set_custom(google_api_HttpRule *msg, google_api_CustomHttpPattern* value) {
- UPB_WRITE_ONEOF(msg, google_api_CustomHttpPattern*, UPB_SIZE(28, 56), value, UPB_SIZE(36, 72), 8);
+ UPB_WRITE_ONEOF(msg, google_api_CustomHttpPattern*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 8);
}
-UPB_INLINE struct google_api_CustomHttpPattern* google_api_HttpRule_mutable_custom(google_api_HttpRule *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_CustomHttpPattern* google_api_HttpRule_mutable_custom(google_api_HttpRule* msg, upb_Arena* arena) {
struct google_api_CustomHttpPattern* sub = (struct google_api_CustomHttpPattern*)google_api_HttpRule_custom(msg);
if (sub == NULL) {
sub = (struct google_api_CustomHttpPattern*)_upb_Message_New(&google_api_CustomHttpPattern_msginit, arena);
@@ -185,21 +261,20 @@ UPB_INLINE struct google_api_CustomHttpPattern* google_api_HttpRule_mutable_cust
}
return sub;
}
-UPB_INLINE google_api_HttpRule** google_api_HttpRule_mutable_additional_bindings(google_api_HttpRule *msg, size_t *len) {
- return (google_api_HttpRule**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
+UPB_INLINE google_api_HttpRule** google_api_HttpRule_mutable_additional_bindings(google_api_HttpRule* msg, size_t* len) {
+ return (google_api_HttpRule**)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
}
-UPB_INLINE google_api_HttpRule** google_api_HttpRule_resize_additional_bindings(google_api_HttpRule *msg, size_t len, upb_Arena *arena) {
- return (google_api_HttpRule**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_api_HttpRule** google_api_HttpRule_resize_additional_bindings(google_api_HttpRule* msg, size_t len, upb_Arena* arena) {
+ return (google_api_HttpRule**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_api_HttpRule* google_api_HttpRule_add_additional_bindings(google_api_HttpRule *msg, upb_Arena *arena) {
+UPB_INLINE struct google_api_HttpRule* google_api_HttpRule_add_additional_bindings(google_api_HttpRule* msg, upb_Arena* arena) {
struct google_api_HttpRule* sub = (struct google_api_HttpRule*)_upb_Message_New(&google_api_HttpRule_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(24, 48), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 56), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void google_api_HttpRule_set_response_body(google_api_HttpRule *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), upb_StringView) = value;
}
/* google.api.CustomHttpPattern */
@@ -227,15 +302,25 @@ UPB_INLINE google_api_CustomHttpPattern* google_api_CustomHttpPattern_parse_ex(c
return ret;
}
UPB_INLINE char* google_api_CustomHttpPattern_serialize(const google_api_CustomHttpPattern* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_CustomHttpPattern_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_CustomHttpPattern_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_CustomHttpPattern_serialize_ex(const google_api_CustomHttpPattern* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_CustomHttpPattern_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_CustomHttpPattern_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_api_CustomHttpPattern_clear_kind(const google_api_CustomHttpPattern* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_api_CustomHttpPattern_kind(const google_api_CustomHttpPattern* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void google_api_CustomHttpPattern_clear_path(const google_api_CustomHttpPattern* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView google_api_CustomHttpPattern_path(const google_api_CustomHttpPattern* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/httpbody.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/httpbody.upb.c
index 0fe66897ff..832eb6b5da 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/httpbody.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/httpbody.upb.c
@@ -18,15 +18,15 @@ static const upb_MiniTable_Sub google_api_HttpBody_submsgs[1] = {
};
static const upb_MiniTable_Field google_api_HttpBody__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_api_HttpBody_msginit = {
&google_api_HttpBody_submsgs[0],
&google_api_HttpBody__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/httpbody.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/httpbody.upb.h
index 5aa8e54c79..19ef4ec0a7 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/api/httpbody.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/api/httpbody.upb.h
@@ -53,20 +53,37 @@ UPB_INLINE google_api_HttpBody* google_api_HttpBody_parse_ex(const char* buf, si
return ret;
}
UPB_INLINE char* google_api_HttpBody_serialize(const google_api_HttpBody* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_HttpBody_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_HttpBody_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_api_HttpBody_serialize_ex(const google_api_HttpBody* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_api_HttpBody_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_api_HttpBody_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_api_HttpBody_clear_content_type(const google_api_HttpBody* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_api_HttpBody_content_type(const google_api_HttpBody* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void google_api_HttpBody_clear_data(const google_api_HttpBody* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView google_api_HttpBody_data(const google_api_HttpBody* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
-UPB_INLINE bool google_api_HttpBody_has_extensions(const google_api_HttpBody *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const struct google_protobuf_Any* const* google_api_HttpBody_extensions(const google_api_HttpBody *msg, size_t *len) { return (const struct google_protobuf_Any* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
+UPB_INLINE bool google_api_HttpBody_has_extensions(const google_api_HttpBody* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE void google_api_HttpBody_clear_extensions(const google_api_HttpBody* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE const struct google_protobuf_Any* const* google_api_HttpBody_extensions(const google_api_HttpBody* msg, size_t* len) {
+ return (const struct google_protobuf_Any* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
UPB_INLINE void google_api_HttpBody_set_content_type(google_api_HttpBody *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
@@ -74,16 +91,15 @@ UPB_INLINE void google_api_HttpBody_set_content_type(google_api_HttpBody *msg, u
UPB_INLINE void google_api_HttpBody_set_data(google_api_HttpBody *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
-UPB_INLINE struct google_protobuf_Any** google_api_HttpBody_mutable_extensions(google_api_HttpBody *msg, size_t *len) {
+UPB_INLINE struct google_protobuf_Any** google_api_HttpBody_mutable_extensions(google_api_HttpBody* msg, size_t* len) {
return (struct google_protobuf_Any**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE struct google_protobuf_Any** google_api_HttpBody_resize_extensions(google_api_HttpBody *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any** google_api_HttpBody_resize_extensions(google_api_HttpBody* msg, size_t len, upb_Arena* arena) {
return (struct google_protobuf_Any**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_Any* google_api_HttpBody_add_extensions(google_api_HttpBody *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* google_api_HttpBody_add_extensions(google_api_HttpBody* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/any.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/any.upb.c
index a5d22d37ef..9a6718b46c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/any.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/any.upb.c
@@ -13,14 +13,14 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field google_protobuf_Any__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_Any_msginit = {
NULL,
&google_protobuf_Any__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/any.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/any.upb.h
index 4b8d4bfc02..8ef20c3ab2 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/any.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/any.upb.h
@@ -51,15 +51,25 @@ UPB_INLINE google_protobuf_Any* google_protobuf_Any_parse_ex(const char* buf, si
return ret;
}
UPB_INLINE char* google_protobuf_Any_serialize(const google_protobuf_Any* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Any_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Any_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_Any_serialize_ex(const google_protobuf_Any* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Any_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Any_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_protobuf_Any_clear_type_url(const google_protobuf_Any* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_protobuf_Any_type_url(const google_protobuf_Any* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void google_protobuf_Any_clear_value(const google_protobuf_Any* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView google_protobuf_Any_value(const google_protobuf_Any* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c
index 91050db2ed..bb7a88f5de 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c
@@ -17,72 +17,73 @@ static const upb_MiniTable_Sub google_protobuf_FileDescriptorSet_submsgs[1] = {
};
static const upb_MiniTable_Field google_protobuf_FileDescriptorSet__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_FileDescriptorSet_msginit = {
&google_protobuf_FileDescriptorSet_submsgs[0],
&google_protobuf_FileDescriptorSet__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_FileDescriptorProto_submsgs[6] = {
{.submsg = &google_protobuf_DescriptorProto_msginit},
{.submsg = &google_protobuf_EnumDescriptorProto_msginit},
+ {.submsg = &google_protobuf_ServiceDescriptorProto_msginit},
{.submsg = &google_protobuf_FieldDescriptorProto_msginit},
{.submsg = &google_protobuf_FileOptions_msginit},
- {.submsg = &google_protobuf_ServiceDescriptorProto_msginit},
{.submsg = &google_protobuf_SourceCodeInfo_msginit},
};
static const upb_MiniTable_Field google_protobuf_FileDescriptorProto__fields[12] = {
- {1, UPB_SIZE(4, 8), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 2, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(36, 72), 0, 0, 12, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(40, 80), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(44, 88), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(48, 96), 0, 4, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(52, 104), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(28, 56), 3, 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(32, 64), 4, 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(56, 112), 0, 0, 5, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(60, 120), 0, 0, 5, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(20, 40), 5, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(2, 2), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 40), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 48), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(28, 56), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(32, 64), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(36, 72), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(40, 80), UPB_SIZE(3, 3), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(44, 88), UPB_SIZE(4, 4), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(48, 96), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(52, 104), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(56, 112), UPB_SIZE(5, 5), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_FileDescriptorProto_msginit = {
&google_protobuf_FileDescriptorProto_submsgs[0],
&google_protobuf_FileDescriptorProto__fields[0],
- UPB_SIZE(64, 128), 12, upb_ExtMode_NonExtendable, 12, 255, 0,
+ UPB_SIZE(64, 128), 12, kUpb_ExtMode_NonExtendable, 12, 255, 0,
};
-static const upb_MiniTable_Sub google_protobuf_DescriptorProto_submsgs[7] = {
+static const upb_MiniTable_Sub google_protobuf_DescriptorProto_submsgs[8] = {
+ {.submsg = &google_protobuf_FieldDescriptorProto_msginit},
{.submsg = &google_protobuf_DescriptorProto_msginit},
- {.submsg = &google_protobuf_DescriptorProto_ExtensionRange_msginit},
- {.submsg = &google_protobuf_DescriptorProto_ReservedRange_msginit},
{.submsg = &google_protobuf_EnumDescriptorProto_msginit},
+ {.submsg = &google_protobuf_DescriptorProto_ExtensionRange_msginit},
{.submsg = &google_protobuf_FieldDescriptorProto_msginit},
{.submsg = &google_protobuf_MessageOptions_msginit},
{.submsg = &google_protobuf_OneofDescriptorProto_msginit},
+ {.submsg = &google_protobuf_DescriptorProto_ReservedRange_msginit},
};
static const upb_MiniTable_Field google_protobuf_DescriptorProto__fields[10] = {
- {1, UPB_SIZE(4, 8), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), 0, 4, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 40), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 48), 0, 3, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(28, 56), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(32, 64), 0, 4, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(12, 24), 2, 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(36, 72), 0, 6, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(40, 80), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(44, 88), 0, 0, 12, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 48), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 56), UPB_SIZE(0, 0), 4, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(32, 64), UPB_SIZE(2, 2), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(36, 72), UPB_SIZE(0, 0), 6, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(40, 80), UPB_SIZE(0, 0), 7, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(44, 88), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_DescriptorProto_msginit = {
&google_protobuf_DescriptorProto_submsgs[0],
&google_protobuf_DescriptorProto__fields[0],
- UPB_SIZE(48, 96), 10, upb_ExtMode_NonExtendable, 10, 255, 0,
+ UPB_SIZE(48, 96), 10, kUpb_ExtMode_NonExtendable, 10, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_DescriptorProto_ExtensionRange_submsgs[1] = {
@@ -90,26 +91,26 @@ static const upb_MiniTable_Sub google_protobuf_DescriptorProto_ExtensionRange_su
};
static const upb_MiniTable_Field google_protobuf_DescriptorProto_ExtensionRange__fields[3] = {
- {1, UPB_SIZE(4, 4), 1, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 2, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 16), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(1, 1), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(2, 2), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(3, 3), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_DescriptorProto_ExtensionRange_msginit = {
&google_protobuf_DescriptorProto_ExtensionRange_submsgs[0],
&google_protobuf_DescriptorProto_ExtensionRange__fields[0],
- UPB_SIZE(16, 24), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Field google_protobuf_DescriptorProto_ReservedRange__fields[2] = {
- {1, UPB_SIZE(4, 4), 1, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 2, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(1, 1), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(2, 2), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_DescriptorProto_ReservedRange_msginit = {
NULL,
&google_protobuf_DescriptorProto_ReservedRange__fields[0],
- UPB_SIZE(16, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_ExtensionRangeOptions_submsgs[1] = {
@@ -117,39 +118,39 @@ static const upb_MiniTable_Sub google_protobuf_ExtensionRangeOptions_submsgs[1]
};
static const upb_MiniTable_Field google_protobuf_ExtensionRangeOptions__fields[1] = {
- {999, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {999, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_ExtensionRangeOptions_msginit = {
&google_protobuf_ExtensionRangeOptions_submsgs[0],
&google_protobuf_ExtensionRangeOptions__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_Extendable, 0, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_Extendable, 0, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_FieldDescriptorProto_submsgs[3] = {
- {.submsg = &google_protobuf_FieldOptions_msginit},
{.subenum = &google_protobuf_FieldDescriptorProto_Label_enuminit},
{.subenum = &google_protobuf_FieldDescriptorProto_Type_enuminit},
+ {.submsg = &google_protobuf_FieldOptions_msginit},
};
static const upb_MiniTable_Field google_protobuf_FieldDescriptorProto__fields[11] = {
- {1, UPB_SIZE(24, 24), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(32, 40), 2, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 12), 3, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(4, 4), 4, 1, 14, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 8), 5, 2, 14, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(40, 56), 6, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {7, UPB_SIZE(48, 72), 7, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {8, UPB_SIZE(64, 104), 8, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(16, 16), 9, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {10, UPB_SIZE(56, 88), 10, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {17, UPB_SIZE(20, 20), 11, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(24, 24), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(32, 40), UPB_SIZE(2, 2), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 4), UPB_SIZE(3, 3), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 0, 14, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(12, 12), UPB_SIZE(5, 5), 1, 14, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(40, 56), UPB_SIZE(6, 6), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(48, 72), UPB_SIZE(7, 7), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(56, 88), UPB_SIZE(8, 8), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(16, 16), UPB_SIZE(9, 9), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(60, 96), UPB_SIZE(10, 10), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {17, UPB_SIZE(20, 20), UPB_SIZE(11, 11), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_FieldDescriptorProto_msginit = {
&google_protobuf_FieldDescriptorProto_submsgs[0],
&google_protobuf_FieldDescriptorProto__fields[0],
- UPB_SIZE(72, 112), 11, upb_ExtMode_NonExtendable, 10, 255, 0,
+ UPB_SIZE(72, 112), 11, kUpb_ExtMode_NonExtendable, 10, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_OneofDescriptorProto_submsgs[1] = {
@@ -157,45 +158,45 @@ static const upb_MiniTable_Sub google_protobuf_OneofDescriptorProto_submsgs[1] =
};
static const upb_MiniTable_Field google_protobuf_OneofDescriptorProto__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(2, 2), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_OneofDescriptorProto_msginit = {
&google_protobuf_OneofDescriptorProto_submsgs[0],
&google_protobuf_OneofDescriptorProto__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_EnumDescriptorProto_submsgs[3] = {
- {.submsg = &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit},
- {.submsg = &google_protobuf_EnumOptions_msginit},
{.submsg = &google_protobuf_EnumValueDescriptorProto_msginit},
+ {.submsg = &google_protobuf_EnumOptions_msginit},
+ {.submsg = &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit},
};
static const upb_MiniTable_Field google_protobuf_EnumDescriptorProto__fields[5] = {
- {1, UPB_SIZE(4, 8), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), 0, 2, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 40), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(24, 48), 0, 0, 12, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 48), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_EnumDescriptorProto_msginit = {
&google_protobuf_EnumDescriptorProto_submsgs[0],
&google_protobuf_EnumDescriptorProto__fields[0],
- UPB_SIZE(32, 64), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(32, 56), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
static const upb_MiniTable_Field google_protobuf_EnumDescriptorProto_EnumReservedRange__fields[2] = {
- {1, UPB_SIZE(4, 4), 1, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 2, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(1, 1), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(2, 2), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit = {
NULL,
&google_protobuf_EnumDescriptorProto_EnumReservedRange__fields[0],
- UPB_SIZE(16, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_EnumValueDescriptorProto_submsgs[1] = {
@@ -203,15 +204,15 @@ static const upb_MiniTable_Sub google_protobuf_EnumValueDescriptorProto_submsgs[
};
static const upb_MiniTable_Field google_protobuf_EnumValueDescriptorProto__fields[3] = {
- {1, UPB_SIZE(8, 8), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 4), 2, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 24), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 4), UPB_SIZE(2, 2), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 24), UPB_SIZE(3, 3), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_EnumValueDescriptorProto_msginit = {
&google_protobuf_EnumValueDescriptorProto_submsgs[0],
&google_protobuf_EnumValueDescriptorProto__fields[0],
- UPB_SIZE(24, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_ServiceDescriptorProto_submsgs[2] = {
@@ -220,15 +221,15 @@ static const upb_MiniTable_Sub google_protobuf_ServiceDescriptorProto_submsgs[2]
};
static const upb_MiniTable_Field google_protobuf_ServiceDescriptorProto__fields[3] = {
- {1, UPB_SIZE(4, 8), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 32), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_ServiceDescriptorProto_msginit = {
&google_protobuf_ServiceDescriptorProto_submsgs[0],
&google_protobuf_ServiceDescriptorProto__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_MethodDescriptorProto_submsgs[1] = {
@@ -236,53 +237,53 @@ static const upb_MiniTable_Sub google_protobuf_MethodDescriptorProto_submsgs[1]
};
static const upb_MiniTable_Field google_protobuf_MethodDescriptorProto__fields[6] = {
- {1, UPB_SIZE(4, 8), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 2, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 40), 3, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(28, 56), 4, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(1, 1), 5, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(2, 2), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(2, 2), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 40), UPB_SIZE(3, 3), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(28, 56), UPB_SIZE(4, 4), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(1, 1), UPB_SIZE(5, 5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(2, 2), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_MethodDescriptorProto_msginit = {
&google_protobuf_MethodDescriptorProto_submsgs[0],
&google_protobuf_MethodDescriptorProto__fields[0],
- UPB_SIZE(32, 64), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(32, 64), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_FileOptions_submsgs[2] = {
- {.submsg = &google_protobuf_UninterpretedOption_msginit},
{.subenum = &google_protobuf_FileOptions_OptimizeMode_enuminit},
+ {.submsg = &google_protobuf_UninterpretedOption_msginit},
};
static const upb_MiniTable_Field google_protobuf_FileOptions__fields[21] = {
- {1, UPB_SIZE(20, 24), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {8, UPB_SIZE(28, 40), 2, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {9, UPB_SIZE(4, 4), 3, 1, 14, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {10, UPB_SIZE(8, 8), 4, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {11, UPB_SIZE(36, 56), 5, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {16, UPB_SIZE(9, 9), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {17, UPB_SIZE(10, 10), 7, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {18, UPB_SIZE(11, 11), 8, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {20, UPB_SIZE(12, 12), 9, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {23, UPB_SIZE(13, 13), 10, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {27, UPB_SIZE(14, 14), 11, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {31, UPB_SIZE(15, 15), 12, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {36, UPB_SIZE(44, 72), 13, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {37, UPB_SIZE(52, 88), 14, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {39, UPB_SIZE(60, 104), 15, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {40, UPB_SIZE(68, 120), 16, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {41, UPB_SIZE(76, 136), 17, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {42, UPB_SIZE(16, 16), 18, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {44, UPB_SIZE(84, 152), 19, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {45, UPB_SIZE(92, 168), 20, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {999, UPB_SIZE(100, 184), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(20, 24), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(28, 40), UPB_SIZE(2, 2), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(4, 4), UPB_SIZE(3, 3), 0, 14, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(8, 8), UPB_SIZE(4, 4), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(36, 56), UPB_SIZE(5, 5), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {16, UPB_SIZE(9, 9), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {17, UPB_SIZE(10, 10), UPB_SIZE(7, 7), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {18, UPB_SIZE(11, 11), UPB_SIZE(8, 8), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {20, UPB_SIZE(12, 12), UPB_SIZE(9, 9), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {23, UPB_SIZE(13, 13), UPB_SIZE(10, 10), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {27, UPB_SIZE(14, 14), UPB_SIZE(11, 11), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {31, UPB_SIZE(15, 15), UPB_SIZE(12, 12), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {36, UPB_SIZE(44, 72), UPB_SIZE(13, 13), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {37, UPB_SIZE(52, 88), UPB_SIZE(14, 14), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {39, UPB_SIZE(60, 104), UPB_SIZE(15, 15), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {40, UPB_SIZE(68, 120), UPB_SIZE(16, 16), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {41, UPB_SIZE(76, 136), UPB_SIZE(17, 17), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {42, UPB_SIZE(16, 16), UPB_SIZE(18, 18), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {44, UPB_SIZE(84, 152), UPB_SIZE(19, 19), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {45, UPB_SIZE(92, 168), UPB_SIZE(20, 20), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {999, UPB_SIZE(100, 184), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_FileOptions_msginit = {
&google_protobuf_FileOptions_submsgs[0],
&google_protobuf_FileOptions__fields[0],
- UPB_SIZE(104, 192), 21, upb_ExtMode_Extendable, 1, 255, 0,
+ UPB_SIZE(104, 192), 21, kUpb_ExtMode_Extendable, 1, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_MessageOptions_submsgs[1] = {
@@ -290,39 +291,40 @@ static const upb_MiniTable_Sub google_protobuf_MessageOptions_submsgs[1] = {
};
static const upb_MiniTable_Field google_protobuf_MessageOptions__fields[5] = {
- {1, UPB_SIZE(1, 1), 1, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(2, 2), 2, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(3, 3), 3, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(4, 4), 4, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {999, UPB_SIZE(8, 8), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(1, 1), UPB_SIZE(1, 1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(2, 2), UPB_SIZE(2, 2), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(3, 3), UPB_SIZE(3, 3), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(4, 4), UPB_SIZE(4, 4), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {999, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_MessageOptions_msginit = {
&google_protobuf_MessageOptions_submsgs[0],
&google_protobuf_MessageOptions__fields[0],
- UPB_SIZE(16, 16), 5, upb_ExtMode_Extendable, 3, 255, 0,
+ UPB_SIZE(16, 16), 5, kUpb_ExtMode_Extendable, 3, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_FieldOptions_submsgs[3] = {
- {.submsg = &google_protobuf_UninterpretedOption_msginit},
{.subenum = &google_protobuf_FieldOptions_CType_enuminit},
{.subenum = &google_protobuf_FieldOptions_JSType_enuminit},
+ {.submsg = &google_protobuf_UninterpretedOption_msginit},
};
-static const upb_MiniTable_Field google_protobuf_FieldOptions__fields[7] = {
- {1, UPB_SIZE(4, 4), 1, 1, 14, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 12), 2, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(13, 13), 3, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(14, 14), 4, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(8, 8), 5, 2, 14, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {10, UPB_SIZE(15, 15), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {999, UPB_SIZE(16, 16), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+static const upb_MiniTable_Field google_protobuf_FieldOptions__fields[8] = {
+ {1, UPB_SIZE(4, 4), UPB_SIZE(1, 1), 0, 14, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(2, 2), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(9, 9), UPB_SIZE(3, 3), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(10, 10), UPB_SIZE(4, 4), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(12, 12), UPB_SIZE(5, 5), 1, 14, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(16, 16), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(17, 17), UPB_SIZE(7, 7), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {999, UPB_SIZE(20, 24), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_FieldOptions_msginit = {
&google_protobuf_FieldOptions_submsgs[0],
&google_protobuf_FieldOptions__fields[0],
- UPB_SIZE(24, 24), 7, upb_ExtMode_Extendable, 3, 255, 0,
+ UPB_SIZE(24, 32), 8, kUpb_ExtMode_Extendable, 3, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_OneofOptions_submsgs[1] = {
@@ -330,13 +332,13 @@ static const upb_MiniTable_Sub google_protobuf_OneofOptions_submsgs[1] = {
};
static const upb_MiniTable_Field google_protobuf_OneofOptions__fields[1] = {
- {999, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {999, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_OneofOptions_msginit = {
&google_protobuf_OneofOptions_submsgs[0],
&google_protobuf_OneofOptions__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_Extendable, 0, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_Extendable, 0, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_EnumOptions_submsgs[1] = {
@@ -344,15 +346,15 @@ static const upb_MiniTable_Sub google_protobuf_EnumOptions_submsgs[1] = {
};
static const upb_MiniTable_Field google_protobuf_EnumOptions__fields[3] = {
- {2, UPB_SIZE(1, 1), 1, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(2, 2), 2, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {999, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(1, 1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(2, 2), UPB_SIZE(2, 2), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {999, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_EnumOptions_msginit = {
&google_protobuf_EnumOptions_submsgs[0],
&google_protobuf_EnumOptions__fields[0],
- UPB_SIZE(8, 16), 3, upb_ExtMode_Extendable, 0, 255, 0,
+ UPB_SIZE(8, 16), 3, kUpb_ExtMode_Extendable, 0, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_EnumValueOptions_submsgs[1] = {
@@ -360,14 +362,14 @@ static const upb_MiniTable_Sub google_protobuf_EnumValueOptions_submsgs[1] = {
};
static const upb_MiniTable_Field google_protobuf_EnumValueOptions__fields[2] = {
- {1, UPB_SIZE(1, 1), 1, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {999, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(1, 1), UPB_SIZE(1, 1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {999, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_EnumValueOptions_msginit = {
&google_protobuf_EnumValueOptions_submsgs[0],
&google_protobuf_EnumValueOptions__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_Extendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_Extendable, 1, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_ServiceOptions_submsgs[1] = {
@@ -375,31 +377,31 @@ static const upb_MiniTable_Sub google_protobuf_ServiceOptions_submsgs[1] = {
};
static const upb_MiniTable_Field google_protobuf_ServiceOptions__fields[2] = {
- {33, UPB_SIZE(1, 1), 1, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {999, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {33, UPB_SIZE(1, 1), UPB_SIZE(1, 1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {999, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_ServiceOptions_msginit = {
&google_protobuf_ServiceOptions_submsgs[0],
&google_protobuf_ServiceOptions__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_Extendable, 0, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_Extendable, 0, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_MethodOptions_submsgs[2] = {
- {.submsg = &google_protobuf_UninterpretedOption_msginit},
{.subenum = &google_protobuf_MethodOptions_IdempotencyLevel_enuminit},
+ {.submsg = &google_protobuf_UninterpretedOption_msginit},
};
static const upb_MiniTable_Field google_protobuf_MethodOptions__fields[3] = {
- {33, UPB_SIZE(8, 8), 1, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {34, UPB_SIZE(4, 4), 2, 1, 14, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {999, UPB_SIZE(12, 16), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {33, UPB_SIZE(1, 1), UPB_SIZE(1, 1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {34, UPB_SIZE(4, 4), UPB_SIZE(2, 2), 0, 14, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {999, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_MethodOptions_msginit = {
&google_protobuf_MethodOptions_submsgs[0],
&google_protobuf_MethodOptions__fields[0],
- UPB_SIZE(16, 24), 3, upb_ExtMode_Extendable, 0, 255, 0,
+ UPB_SIZE(16, 16), 3, kUpb_ExtMode_Extendable, 0, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_UninterpretedOption_submsgs[1] = {
@@ -407,30 +409,30 @@ static const upb_MiniTable_Sub google_protobuf_UninterpretedOption_submsgs[1] =
};
static const upb_MiniTable_Field google_protobuf_UninterpretedOption__fields[7] = {
- {2, UPB_SIZE(56, 80), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(32, 32), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 8), 2, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(16, 16), 3, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(24, 24), 4, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(40, 48), 5, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {8, UPB_SIZE(48, 64), 6, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 16), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(32, 64), UPB_SIZE(2, 2), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(40, 72), UPB_SIZE(3, 3), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(48, 80), UPB_SIZE(4, 4), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(16, 32), UPB_SIZE(5, 5), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(24, 48), UPB_SIZE(6, 6), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_UninterpretedOption_msginit = {
&google_protobuf_UninterpretedOption_submsgs[0],
&google_protobuf_UninterpretedOption__fields[0],
- UPB_SIZE(64, 96), 7, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(56, 88), 7, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Field google_protobuf_UninterpretedOption_NamePart__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(1, 1), 2, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(2, 2), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_UninterpretedOption_NamePart_msginit = {
NULL,
&google_protobuf_UninterpretedOption_NamePart__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 2,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 2,
};
static const upb_MiniTable_Sub google_protobuf_SourceCodeInfo_submsgs[1] = {
@@ -438,27 +440,27 @@ static const upb_MiniTable_Sub google_protobuf_SourceCodeInfo_submsgs[1] = {
};
static const upb_MiniTable_Field google_protobuf_SourceCodeInfo__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_SourceCodeInfo_msginit = {
&google_protobuf_SourceCodeInfo_submsgs[0],
&google_protobuf_SourceCodeInfo__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field google_protobuf_SourceCodeInfo_Location__fields[5] = {
- {1, UPB_SIZE(20, 40), 0, 0, 5, kUpb_FieldMode_Array | upb_LabelFlags_IsPacked | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(24, 48), 0, 0, 5, kUpb_FieldMode_Array | upb_LabelFlags_IsPacked | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 24), 2, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(28, 56), 0, 0, 12, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | kUpb_LabelFlags_IsPacked | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | kUpb_LabelFlags_IsPacked | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(2, 2), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 56), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_SourceCodeInfo_Location_msginit = {
NULL,
&google_protobuf_SourceCodeInfo_Location__fields[0],
- UPB_SIZE(32, 64), 5, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(32, 64), 5, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_GeneratedCodeInfo_submsgs[1] = {
@@ -466,26 +468,26 @@ static const upb_MiniTable_Sub google_protobuf_GeneratedCodeInfo_submsgs[1] = {
};
static const upb_MiniTable_Field google_protobuf_GeneratedCodeInfo__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_GeneratedCodeInfo_msginit = {
&google_protobuf_GeneratedCodeInfo_submsgs[0],
&google_protobuf_GeneratedCodeInfo__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field google_protobuf_GeneratedCodeInfo_Annotation__fields[4] = {
- {1, UPB_SIZE(20, 32), 0, 0, 5, kUpb_FieldMode_Array | upb_LabelFlags_IsPacked | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 16), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 4), 2, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 8), 3, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 16), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | kUpb_LabelFlags_IsPacked | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 4), UPB_SIZE(2, 2), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 8), UPB_SIZE(3, 3), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_GeneratedCodeInfo_Annotation_msginit = {
NULL,
&google_protobuf_GeneratedCodeInfo_Annotation__fields[0],
- UPB_SIZE(24, 48), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable *messages_layout[27] = {
@@ -519,39 +521,39 @@ static const upb_MiniTable *messages_layout[27] = {
};
const upb_MiniTable_Enum google_protobuf_FieldDescriptorProto_Type_enuminit = {
- NULL,
- 0x7fffeULL,
- 0,
+ NULL,
+ 0x7fffeULL,
+ 0,
};
const upb_MiniTable_Enum google_protobuf_FieldDescriptorProto_Label_enuminit = {
- NULL,
- 0xeULL,
- 0,
+ NULL,
+ 0xeULL,
+ 0,
};
const upb_MiniTable_Enum google_protobuf_FileOptions_OptimizeMode_enuminit = {
- NULL,
- 0xeULL,
- 0,
+ NULL,
+ 0xeULL,
+ 0,
};
const upb_MiniTable_Enum google_protobuf_FieldOptions_CType_enuminit = {
- NULL,
- 0x7ULL,
- 0,
+ NULL,
+ 0x7ULL,
+ 0,
};
const upb_MiniTable_Enum google_protobuf_FieldOptions_JSType_enuminit = {
- NULL,
- 0x7ULL,
- 0,
+ NULL,
+ 0x7ULL,
+ 0,
};
const upb_MiniTable_Enum google_protobuf_MethodOptions_IdempotencyLevel_enuminit = {
- NULL,
- 0x7ULL,
- 0,
+ NULL,
+ 0x7ULL,
+ 0,
};
static const upb_MiniTable_Enum *enums_layout[6] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h
index 8e5be192e4..05269f4be9 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h
@@ -186,25 +186,35 @@ UPB_INLINE google_protobuf_FileDescriptorSet* google_protobuf_FileDescriptorSet_
return ret;
}
UPB_INLINE char* google_protobuf_FileDescriptorSet_serialize(const google_protobuf_FileDescriptorSet* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_FileDescriptorSet_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_FileDescriptorSet_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_FileDescriptorSet_serialize_ex(const google_protobuf_FileDescriptorSet* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_FileDescriptorSet_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_FileDescriptorSet_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_FileDescriptorSet_has_file(const google_protobuf_FileDescriptorSet* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void google_protobuf_FileDescriptorSet_clear_file(const google_protobuf_FileDescriptorSet* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const google_protobuf_FileDescriptorProto* const* google_protobuf_FileDescriptorSet_file(const google_protobuf_FileDescriptorSet* msg, size_t* len) {
+ return (const google_protobuf_FileDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool google_protobuf_FileDescriptorSet_has_file(const google_protobuf_FileDescriptorSet *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const google_protobuf_FileDescriptorProto* const* google_protobuf_FileDescriptorSet_file(const google_protobuf_FileDescriptorSet *msg, size_t *len) { return (const google_protobuf_FileDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE google_protobuf_FileDescriptorProto** google_protobuf_FileDescriptorSet_mutable_file(google_protobuf_FileDescriptorSet *msg, size_t *len) {
+UPB_INLINE google_protobuf_FileDescriptorProto** google_protobuf_FileDescriptorSet_mutable_file(google_protobuf_FileDescriptorSet* msg, size_t* len) {
return (google_protobuf_FileDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE google_protobuf_FileDescriptorProto** google_protobuf_FileDescriptorSet_resize_file(google_protobuf_FileDescriptorSet *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_protobuf_FileDescriptorProto** google_protobuf_FileDescriptorSet_resize_file(google_protobuf_FileDescriptorSet* msg, size_t len, upb_Arena* arena) {
return (google_protobuf_FileDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_FileDescriptorProto* google_protobuf_FileDescriptorSet_add_file(google_protobuf_FileDescriptorSet *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_FileDescriptorProto* google_protobuf_FileDescriptorSet_add_file(google_protobuf_FileDescriptorSet* msg, upb_Arena* arena) {
struct google_protobuf_FileDescriptorProto* sub = (struct google_protobuf_FileDescriptorProto*)_upb_Message_New(&google_protobuf_FileDescriptorProto_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -234,42 +244,117 @@ UPB_INLINE google_protobuf_FileDescriptorProto* google_protobuf_FileDescriptorPr
return ret;
}
UPB_INLINE char* google_protobuf_FileDescriptorProto_serialize(const google_protobuf_FileDescriptorProto* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_FileDescriptorProto_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_FileDescriptorProto_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_FileDescriptorProto_serialize_ex(const google_protobuf_FileDescriptorProto* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_FileDescriptorProto_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_FileDescriptorProto_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_FileDescriptorProto_has_name(const google_protobuf_FileDescriptorProto* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_FileDescriptorProto_clear_name(const google_protobuf_FileDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_FileDescriptorProto_has_name(const google_protobuf_FileDescriptorProto *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE upb_StringView google_protobuf_FileDescriptorProto_name(const google_protobuf_FileDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FileDescriptorProto_has_package(const google_protobuf_FileDescriptorProto *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_FileDescriptorProto_has_package(const google_protobuf_FileDescriptorProto* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_FileDescriptorProto_clear_package(const google_protobuf_FileDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE upb_StringView google_protobuf_FileDescriptorProto_package(const google_protobuf_FileDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
-UPB_INLINE upb_StringView const* google_protobuf_FileDescriptorProto_dependency(const google_protobuf_FileDescriptorProto *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(36, 72), len); }
-UPB_INLINE bool google_protobuf_FileDescriptorProto_has_message_type(const google_protobuf_FileDescriptorProto *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(40, 80)); }
-UPB_INLINE const google_protobuf_DescriptorProto* const* google_protobuf_FileDescriptorProto_message_type(const google_protobuf_FileDescriptorProto *msg, size_t *len) { return (const google_protobuf_DescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(40, 80), len); }
-UPB_INLINE bool google_protobuf_FileDescriptorProto_has_enum_type(const google_protobuf_FileDescriptorProto *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 88)); }
-UPB_INLINE const google_protobuf_EnumDescriptorProto* const* google_protobuf_FileDescriptorProto_enum_type(const google_protobuf_FileDescriptorProto *msg, size_t *len) { return (const google_protobuf_EnumDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(44, 88), len); }
-UPB_INLINE bool google_protobuf_FileDescriptorProto_has_service(const google_protobuf_FileDescriptorProto *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(48, 96)); }
-UPB_INLINE const google_protobuf_ServiceDescriptorProto* const* google_protobuf_FileDescriptorProto_service(const google_protobuf_FileDescriptorProto *msg, size_t *len) { return (const google_protobuf_ServiceDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(48, 96), len); }
-UPB_INLINE bool google_protobuf_FileDescriptorProto_has_extension(const google_protobuf_FileDescriptorProto *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(52, 104)); }
-UPB_INLINE const google_protobuf_FieldDescriptorProto* const* google_protobuf_FileDescriptorProto_extension(const google_protobuf_FileDescriptorProto *msg, size_t *len) { return (const google_protobuf_FieldDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(52, 104), len); }
-UPB_INLINE bool google_protobuf_FileDescriptorProto_has_options(const google_protobuf_FileDescriptorProto *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE void google_protobuf_FileDescriptorProto_clear_dependency(const google_protobuf_FileDescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE upb_StringView const* google_protobuf_FileDescriptorProto_dependency(const google_protobuf_FileDescriptorProto* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len);
+}
+UPB_INLINE bool google_protobuf_FileDescriptorProto_has_message_type(const google_protobuf_FileDescriptorProto* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE void google_protobuf_FileDescriptorProto_clear_message_type(const google_protobuf_FileDescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE const google_protobuf_DescriptorProto* const* google_protobuf_FileDescriptorProto_message_type(const google_protobuf_FileDescriptorProto* msg, size_t* len) {
+ return (const google_protobuf_DescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len);
+}
+UPB_INLINE bool google_protobuf_FileDescriptorProto_has_enum_type(const google_protobuf_FileDescriptorProto* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE void google_protobuf_FileDescriptorProto_clear_enum_type(const google_protobuf_FileDescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE const google_protobuf_EnumDescriptorProto* const* google_protobuf_FileDescriptorProto_enum_type(const google_protobuf_FileDescriptorProto* msg, size_t* len) {
+ return (const google_protobuf_EnumDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len);
+}
+UPB_INLINE bool google_protobuf_FileDescriptorProto_has_service(const google_protobuf_FileDescriptorProto* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 64));
+}
+UPB_INLINE void google_protobuf_FileDescriptorProto_clear_service(const google_protobuf_FileDescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 64));
+}
+UPB_INLINE const google_protobuf_ServiceDescriptorProto* const* google_protobuf_FileDescriptorProto_service(const google_protobuf_FileDescriptorProto* msg, size_t* len) {
+ return (const google_protobuf_ServiceDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len);
+}
+UPB_INLINE bool google_protobuf_FileDescriptorProto_has_extension(const google_protobuf_FileDescriptorProto* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 72));
+}
+UPB_INLINE void google_protobuf_FileDescriptorProto_clear_extension(const google_protobuf_FileDescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(36, 72));
+}
+UPB_INLINE const google_protobuf_FieldDescriptorProto* const* google_protobuf_FileDescriptorProto_extension(const google_protobuf_FileDescriptorProto* msg, size_t* len) {
+ return (const google_protobuf_FieldDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(36, 72), len);
+}
+UPB_INLINE bool google_protobuf_FileDescriptorProto_has_options(const google_protobuf_FileDescriptorProto* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void google_protobuf_FileDescriptorProto_clear_options(const google_protobuf_FileDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 80), const upb_Message*) = NULL;
+}
UPB_INLINE const google_protobuf_FileOptions* google_protobuf_FileDescriptorProto_options(const google_protobuf_FileDescriptorProto* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const google_protobuf_FileOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 80), const google_protobuf_FileOptions*);
+}
+UPB_INLINE bool google_protobuf_FileDescriptorProto_has_source_code_info(const google_protobuf_FileDescriptorProto* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void google_protobuf_FileDescriptorProto_clear_source_code_info(const google_protobuf_FileDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 88), const upb_Message*) = NULL;
}
-UPB_INLINE bool google_protobuf_FileDescriptorProto_has_source_code_info(const google_protobuf_FileDescriptorProto *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const google_protobuf_SourceCodeInfo* google_protobuf_FileDescriptorProto_source_code_info(const google_protobuf_FileDescriptorProto* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const google_protobuf_SourceCodeInfo*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 88), const google_protobuf_SourceCodeInfo*);
+}
+UPB_INLINE void google_protobuf_FileDescriptorProto_clear_public_dependency(const google_protobuf_FileDescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(48, 96));
+}
+UPB_INLINE int32_t const* google_protobuf_FileDescriptorProto_public_dependency(const google_protobuf_FileDescriptorProto* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(48, 96), len);
+}
+UPB_INLINE void google_protobuf_FileDescriptorProto_clear_weak_dependency(const google_protobuf_FileDescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(52, 104));
+}
+UPB_INLINE int32_t const* google_protobuf_FileDescriptorProto_weak_dependency(const google_protobuf_FileDescriptorProto* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(52, 104), len);
+}
+UPB_INLINE bool google_protobuf_FileDescriptorProto_has_syntax(const google_protobuf_FileDescriptorProto* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void google_protobuf_FileDescriptorProto_clear_syntax(const google_protobuf_FileDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 112), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 5);
}
-UPB_INLINE int32_t const* google_protobuf_FileDescriptorProto_public_dependency(const google_protobuf_FileDescriptorProto *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(56, 112), len); }
-UPB_INLINE int32_t const* google_protobuf_FileDescriptorProto_weak_dependency(const google_protobuf_FileDescriptorProto *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(60, 120), len); }
-UPB_INLINE bool google_protobuf_FileDescriptorProto_has_syntax(const google_protobuf_FileDescriptorProto *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE upb_StringView google_protobuf_FileDescriptorProto_syntax(const google_protobuf_FileDescriptorProto* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(56, 112), upb_StringView);
}
UPB_INLINE void google_protobuf_FileDescriptorProto_set_name(google_protobuf_FileDescriptorProto *msg, upb_StringView value) {
@@ -280,73 +365,68 @@ UPB_INLINE void google_protobuf_FileDescriptorProto_set_package(google_protobuf_
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
}
-UPB_INLINE upb_StringView* google_protobuf_FileDescriptorProto_mutable_dependency(google_protobuf_FileDescriptorProto *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 72), len);
+UPB_INLINE upb_StringView* google_protobuf_FileDescriptorProto_mutable_dependency(google_protobuf_FileDescriptorProto* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
}
-UPB_INLINE upb_StringView* google_protobuf_FileDescriptorProto_resize_dependency(google_protobuf_FileDescriptorProto *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 72), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* google_protobuf_FileDescriptorProto_resize_dependency(google_protobuf_FileDescriptorProto* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool google_protobuf_FileDescriptorProto_add_dependency(google_protobuf_FileDescriptorProto *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 72), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool google_protobuf_FileDescriptorProto_add_dependency(google_protobuf_FileDescriptorProto* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 40), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE google_protobuf_DescriptorProto** google_protobuf_FileDescriptorProto_mutable_message_type(google_protobuf_FileDescriptorProto *msg, size_t *len) {
- return (google_protobuf_DescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 80), len);
+UPB_INLINE google_protobuf_DescriptorProto** google_protobuf_FileDescriptorProto_mutable_message_type(google_protobuf_FileDescriptorProto* msg, size_t* len) {
+ return (google_protobuf_DescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
}
-UPB_INLINE google_protobuf_DescriptorProto** google_protobuf_FileDescriptorProto_resize_message_type(google_protobuf_FileDescriptorProto *msg, size_t len, upb_Arena *arena) {
- return (google_protobuf_DescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 80), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_protobuf_DescriptorProto** google_protobuf_FileDescriptorProto_resize_message_type(google_protobuf_FileDescriptorProto* msg, size_t len, upb_Arena* arena) {
+ return (google_protobuf_DescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_DescriptorProto* google_protobuf_FileDescriptorProto_add_message_type(google_protobuf_FileDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_DescriptorProto* google_protobuf_FileDescriptorProto_add_message_type(google_protobuf_FileDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_DescriptorProto* sub = (struct google_protobuf_DescriptorProto*)_upb_Message_New(&google_protobuf_DescriptorProto_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(40, 80), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 48), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE google_protobuf_EnumDescriptorProto** google_protobuf_FileDescriptorProto_mutable_enum_type(google_protobuf_FileDescriptorProto *msg, size_t *len) {
- return (google_protobuf_EnumDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 88), len);
+UPB_INLINE google_protobuf_EnumDescriptorProto** google_protobuf_FileDescriptorProto_mutable_enum_type(google_protobuf_FileDescriptorProto* msg, size_t* len) {
+ return (google_protobuf_EnumDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
}
-UPB_INLINE google_protobuf_EnumDescriptorProto** google_protobuf_FileDescriptorProto_resize_enum_type(google_protobuf_FileDescriptorProto *msg, size_t len, upb_Arena *arena) {
- return (google_protobuf_EnumDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 88), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_protobuf_EnumDescriptorProto** google_protobuf_FileDescriptorProto_resize_enum_type(google_protobuf_FileDescriptorProto* msg, size_t len, upb_Arena* arena) {
+ return (google_protobuf_EnumDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_EnumDescriptorProto* google_protobuf_FileDescriptorProto_add_enum_type(google_protobuf_FileDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_EnumDescriptorProto* google_protobuf_FileDescriptorProto_add_enum_type(google_protobuf_FileDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_EnumDescriptorProto* sub = (struct google_protobuf_EnumDescriptorProto*)_upb_Message_New(&google_protobuf_EnumDescriptorProto_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(44, 88), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 56), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE google_protobuf_ServiceDescriptorProto** google_protobuf_FileDescriptorProto_mutable_service(google_protobuf_FileDescriptorProto *msg, size_t *len) {
- return (google_protobuf_ServiceDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 96), len);
+UPB_INLINE google_protobuf_ServiceDescriptorProto** google_protobuf_FileDescriptorProto_mutable_service(google_protobuf_FileDescriptorProto* msg, size_t* len) {
+ return (google_protobuf_ServiceDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
}
-UPB_INLINE google_protobuf_ServiceDescriptorProto** google_protobuf_FileDescriptorProto_resize_service(google_protobuf_FileDescriptorProto *msg, size_t len, upb_Arena *arena) {
- return (google_protobuf_ServiceDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 96), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_protobuf_ServiceDescriptorProto** google_protobuf_FileDescriptorProto_resize_service(google_protobuf_FileDescriptorProto* msg, size_t len, upb_Arena* arena) {
+ return (google_protobuf_ServiceDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_ServiceDescriptorProto* google_protobuf_FileDescriptorProto_add_service(google_protobuf_FileDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_ServiceDescriptorProto* google_protobuf_FileDescriptorProto_add_service(google_protobuf_FileDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_ServiceDescriptorProto* sub = (struct google_protobuf_ServiceDescriptorProto*)_upb_Message_New(&google_protobuf_ServiceDescriptorProto_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(48, 96), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 64), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE google_protobuf_FieldDescriptorProto** google_protobuf_FileDescriptorProto_mutable_extension(google_protobuf_FileDescriptorProto *msg, size_t *len) {
- return (google_protobuf_FieldDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 104), len);
+UPB_INLINE google_protobuf_FieldDescriptorProto** google_protobuf_FileDescriptorProto_mutable_extension(google_protobuf_FileDescriptorProto* msg, size_t* len) {
+ return (google_protobuf_FieldDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 72), len);
}
-UPB_INLINE google_protobuf_FieldDescriptorProto** google_protobuf_FileDescriptorProto_resize_extension(google_protobuf_FileDescriptorProto *msg, size_t len, upb_Arena *arena) {
- return (google_protobuf_FieldDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 104), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_protobuf_FieldDescriptorProto** google_protobuf_FileDescriptorProto_resize_extension(google_protobuf_FileDescriptorProto* msg, size_t len, upb_Arena* arena) {
+ return (google_protobuf_FieldDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 72), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_FieldDescriptorProto* google_protobuf_FileDescriptorProto_add_extension(google_protobuf_FileDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_FieldDescriptorProto* google_protobuf_FileDescriptorProto_add_extension(google_protobuf_FileDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_FieldDescriptorProto* sub = (struct google_protobuf_FieldDescriptorProto*)_upb_Message_New(&google_protobuf_FieldDescriptorProto_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(52, 104), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 72), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void google_protobuf_FileDescriptorProto_set_options(google_protobuf_FileDescriptorProto *msg, google_protobuf_FileOptions* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 56), google_protobuf_FileOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 80), google_protobuf_FileOptions*) = value;
}
-UPB_INLINE struct google_protobuf_FileOptions* google_protobuf_FileDescriptorProto_mutable_options(google_protobuf_FileDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_FileOptions* google_protobuf_FileDescriptorProto_mutable_options(google_protobuf_FileDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_FileOptions* sub = (struct google_protobuf_FileOptions*)google_protobuf_FileDescriptorProto_options(msg);
if (sub == NULL) {
sub = (struct google_protobuf_FileOptions*)_upb_Message_New(&google_protobuf_FileOptions_msginit, arena);
@@ -357,9 +437,9 @@ UPB_INLINE struct google_protobuf_FileOptions* google_protobuf_FileDescriptorPro
}
UPB_INLINE void google_protobuf_FileDescriptorProto_set_source_code_info(google_protobuf_FileDescriptorProto *msg, google_protobuf_SourceCodeInfo* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 64), google_protobuf_SourceCodeInfo*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 88), google_protobuf_SourceCodeInfo*) = value;
}
-UPB_INLINE struct google_protobuf_SourceCodeInfo* google_protobuf_FileDescriptorProto_mutable_source_code_info(google_protobuf_FileDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_SourceCodeInfo* google_protobuf_FileDescriptorProto_mutable_source_code_info(google_protobuf_FileDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_SourceCodeInfo* sub = (struct google_protobuf_SourceCodeInfo*)google_protobuf_FileDescriptorProto_source_code_info(msg);
if (sub == NULL) {
sub = (struct google_protobuf_SourceCodeInfo*)_upb_Message_New(&google_protobuf_SourceCodeInfo_msginit, arena);
@@ -368,29 +448,27 @@ UPB_INLINE struct google_protobuf_SourceCodeInfo* google_protobuf_FileDescriptor
}
return sub;
}
-UPB_INLINE int32_t* google_protobuf_FileDescriptorProto_mutable_public_dependency(google_protobuf_FileDescriptorProto *msg, size_t *len) {
- return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 112), len);
+UPB_INLINE int32_t* google_protobuf_FileDescriptorProto_mutable_public_dependency(google_protobuf_FileDescriptorProto* msg, size_t* len) {
+ return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(48, 96), len);
}
-UPB_INLINE int32_t* google_protobuf_FileDescriptorProto_resize_public_dependency(google_protobuf_FileDescriptorProto *msg, size_t len, upb_Arena *arena) {
- return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 112), len, 2, arena);
+UPB_INLINE int32_t* google_protobuf_FileDescriptorProto_resize_public_dependency(google_protobuf_FileDescriptorProto* msg, size_t len, upb_Arena* arena) {
+ return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(48, 96), len, 2, arena);
}
-UPB_INLINE bool google_protobuf_FileDescriptorProto_add_public_dependency(google_protobuf_FileDescriptorProto *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(56, 112), 2, &val,
- arena);
+UPB_INLINE bool google_protobuf_FileDescriptorProto_add_public_dependency(google_protobuf_FileDescriptorProto* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(48, 96), 2, &val, arena);
}
-UPB_INLINE int32_t* google_protobuf_FileDescriptorProto_mutable_weak_dependency(google_protobuf_FileDescriptorProto *msg, size_t *len) {
- return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(60, 120), len);
+UPB_INLINE int32_t* google_protobuf_FileDescriptorProto_mutable_weak_dependency(google_protobuf_FileDescriptorProto* msg, size_t* len) {
+ return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 104), len);
}
-UPB_INLINE int32_t* google_protobuf_FileDescriptorProto_resize_weak_dependency(google_protobuf_FileDescriptorProto *msg, size_t len, upb_Arena *arena) {
- return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(60, 120), len, 2, arena);
+UPB_INLINE int32_t* google_protobuf_FileDescriptorProto_resize_weak_dependency(google_protobuf_FileDescriptorProto* msg, size_t len, upb_Arena* arena) {
+ return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 104), len, 2, arena);
}
-UPB_INLINE bool google_protobuf_FileDescriptorProto_add_weak_dependency(google_protobuf_FileDescriptorProto *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(60, 120), 2, &val,
- arena);
+UPB_INLINE bool google_protobuf_FileDescriptorProto_add_weak_dependency(google_protobuf_FileDescriptorProto* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(52, 104), 2, &val, arena);
}
UPB_INLINE void google_protobuf_FileDescriptorProto_set_syntax(google_protobuf_FileDescriptorProto *msg, upb_StringView value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 112), upb_StringView) = value;
}
/* google.protobuf.DescriptorProto */
@@ -418,110 +496,174 @@ UPB_INLINE google_protobuf_DescriptorProto* google_protobuf_DescriptorProto_pars
return ret;
}
UPB_INLINE char* google_protobuf_DescriptorProto_serialize(const google_protobuf_DescriptorProto* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_DescriptorProto_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_DescriptorProto_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_DescriptorProto_serialize_ex(const google_protobuf_DescriptorProto* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_DescriptorProto_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_DescriptorProto_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_DescriptorProto_has_name(const google_protobuf_DescriptorProto* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_DescriptorProto_clear_name(const google_protobuf_DescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_DescriptorProto_has_name(const google_protobuf_DescriptorProto *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE upb_StringView google_protobuf_DescriptorProto_name(const google_protobuf_DescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool google_protobuf_DescriptorProto_has_field(const google_protobuf_DescriptorProto *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const google_protobuf_FieldDescriptorProto* const* google_protobuf_DescriptorProto_field(const google_protobuf_DescriptorProto *msg, size_t *len) { return (const google_protobuf_FieldDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
-UPB_INLINE bool google_protobuf_DescriptorProto_has_nested_type(const google_protobuf_DescriptorProto *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE const google_protobuf_DescriptorProto* const* google_protobuf_DescriptorProto_nested_type(const google_protobuf_DescriptorProto *msg, size_t *len) { return (const google_protobuf_DescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len); }
-UPB_INLINE bool google_protobuf_DescriptorProto_has_enum_type(const google_protobuf_DescriptorProto *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48)); }
-UPB_INLINE const google_protobuf_EnumDescriptorProto* const* google_protobuf_DescriptorProto_enum_type(const google_protobuf_DescriptorProto *msg, size_t *len) { return (const google_protobuf_EnumDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len); }
-UPB_INLINE bool google_protobuf_DescriptorProto_has_extension_range(const google_protobuf_DescriptorProto *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 56)); }
-UPB_INLINE const google_protobuf_DescriptorProto_ExtensionRange* const* google_protobuf_DescriptorProto_extension_range(const google_protobuf_DescriptorProto *msg, size_t *len) { return (const google_protobuf_DescriptorProto_ExtensionRange* const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len); }
-UPB_INLINE bool google_protobuf_DescriptorProto_has_extension(const google_protobuf_DescriptorProto *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 64)); }
-UPB_INLINE const google_protobuf_FieldDescriptorProto* const* google_protobuf_DescriptorProto_extension(const google_protobuf_DescriptorProto *msg, size_t *len) { return (const google_protobuf_FieldDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len); }
-UPB_INLINE bool google_protobuf_DescriptorProto_has_options(const google_protobuf_DescriptorProto *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_DescriptorProto_has_field(const google_protobuf_DescriptorProto* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void google_protobuf_DescriptorProto_clear_field(const google_protobuf_DescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const google_protobuf_FieldDescriptorProto* const* google_protobuf_DescriptorProto_field(const google_protobuf_DescriptorProto* msg, size_t* len) {
+ return (const google_protobuf_FieldDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE bool google_protobuf_DescriptorProto_has_nested_type(const google_protobuf_DescriptorProto* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE void google_protobuf_DescriptorProto_clear_nested_type(const google_protobuf_DescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE const google_protobuf_DescriptorProto* const* google_protobuf_DescriptorProto_nested_type(const google_protobuf_DescriptorProto* msg, size_t* len) {
+ return (const google_protobuf_DescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len);
+}
+UPB_INLINE bool google_protobuf_DescriptorProto_has_enum_type(const google_protobuf_DescriptorProto* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE void google_protobuf_DescriptorProto_clear_enum_type(const google_protobuf_DescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE const google_protobuf_EnumDescriptorProto* const* google_protobuf_DescriptorProto_enum_type(const google_protobuf_DescriptorProto* msg, size_t* len) {
+ return (const google_protobuf_EnumDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len);
+}
+UPB_INLINE bool google_protobuf_DescriptorProto_has_extension_range(const google_protobuf_DescriptorProto* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE void google_protobuf_DescriptorProto_clear_extension_range(const google_protobuf_DescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE const google_protobuf_DescriptorProto_ExtensionRange* const* google_protobuf_DescriptorProto_extension_range(const google_protobuf_DescriptorProto* msg, size_t* len) {
+ return (const google_protobuf_DescriptorProto_ExtensionRange* const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len);
+}
+UPB_INLINE bool google_protobuf_DescriptorProto_has_extension(const google_protobuf_DescriptorProto* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE void google_protobuf_DescriptorProto_clear_extension(const google_protobuf_DescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE const google_protobuf_FieldDescriptorProto* const* google_protobuf_DescriptorProto_extension(const google_protobuf_DescriptorProto* msg, size_t* len) {
+ return (const google_protobuf_FieldDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len);
+}
+UPB_INLINE bool google_protobuf_DescriptorProto_has_options(const google_protobuf_DescriptorProto* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_DescriptorProto_clear_options(const google_protobuf_DescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const upb_Message*) = NULL;
+}
UPB_INLINE const google_protobuf_MessageOptions* google_protobuf_DescriptorProto_options(const google_protobuf_DescriptorProto* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const google_protobuf_MessageOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), const google_protobuf_MessageOptions*);
+}
+UPB_INLINE bool google_protobuf_DescriptorProto_has_oneof_decl(const google_protobuf_DescriptorProto* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 72));
+}
+UPB_INLINE void google_protobuf_DescriptorProto_clear_oneof_decl(const google_protobuf_DescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(36, 72));
+}
+UPB_INLINE const google_protobuf_OneofDescriptorProto* const* google_protobuf_DescriptorProto_oneof_decl(const google_protobuf_DescriptorProto* msg, size_t* len) {
+ return (const google_protobuf_OneofDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(36, 72), len);
+}
+UPB_INLINE bool google_protobuf_DescriptorProto_has_reserved_range(const google_protobuf_DescriptorProto* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(40, 80));
+}
+UPB_INLINE void google_protobuf_DescriptorProto_clear_reserved_range(const google_protobuf_DescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(40, 80));
+}
+UPB_INLINE const google_protobuf_DescriptorProto_ReservedRange* const* google_protobuf_DescriptorProto_reserved_range(const google_protobuf_DescriptorProto* msg, size_t* len) {
+ return (const google_protobuf_DescriptorProto_ReservedRange* const*)_upb_array_accessor(msg, UPB_SIZE(40, 80), len);
+}
+UPB_INLINE void google_protobuf_DescriptorProto_clear_reserved_name(const google_protobuf_DescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(44, 88));
+}
+UPB_INLINE upb_StringView const* google_protobuf_DescriptorProto_reserved_name(const google_protobuf_DescriptorProto* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(44, 88), len);
}
-UPB_INLINE bool google_protobuf_DescriptorProto_has_oneof_decl(const google_protobuf_DescriptorProto *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(36, 72)); }
-UPB_INLINE const google_protobuf_OneofDescriptorProto* const* google_protobuf_DescriptorProto_oneof_decl(const google_protobuf_DescriptorProto *msg, size_t *len) { return (const google_protobuf_OneofDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(36, 72), len); }
-UPB_INLINE bool google_protobuf_DescriptorProto_has_reserved_range(const google_protobuf_DescriptorProto *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(40, 80)); }
-UPB_INLINE const google_protobuf_DescriptorProto_ReservedRange* const* google_protobuf_DescriptorProto_reserved_range(const google_protobuf_DescriptorProto *msg, size_t *len) { return (const google_protobuf_DescriptorProto_ReservedRange* const*)_upb_array_accessor(msg, UPB_SIZE(40, 80), len); }
-UPB_INLINE upb_StringView const* google_protobuf_DescriptorProto_reserved_name(const google_protobuf_DescriptorProto *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(44, 88), len); }
UPB_INLINE void google_protobuf_DescriptorProto_set_name(google_protobuf_DescriptorProto *msg, upb_StringView value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE google_protobuf_FieldDescriptorProto** google_protobuf_DescriptorProto_mutable_field(google_protobuf_DescriptorProto *msg, size_t *len) {
- return (google_protobuf_FieldDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
+UPB_INLINE google_protobuf_FieldDescriptorProto** google_protobuf_DescriptorProto_mutable_field(google_protobuf_DescriptorProto* msg, size_t* len) {
+ return (google_protobuf_FieldDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE google_protobuf_FieldDescriptorProto** google_protobuf_DescriptorProto_resize_field(google_protobuf_DescriptorProto *msg, size_t len, upb_Arena *arena) {
- return (google_protobuf_FieldDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_protobuf_FieldDescriptorProto** google_protobuf_DescriptorProto_resize_field(google_protobuf_DescriptorProto* msg, size_t len, upb_Arena* arena) {
+ return (google_protobuf_FieldDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_FieldDescriptorProto* google_protobuf_DescriptorProto_add_field(google_protobuf_DescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_FieldDescriptorProto* google_protobuf_DescriptorProto_add_field(google_protobuf_DescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_FieldDescriptorProto* sub = (struct google_protobuf_FieldDescriptorProto*)_upb_Message_New(&google_protobuf_FieldDescriptorProto_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE google_protobuf_DescriptorProto** google_protobuf_DescriptorProto_mutable_nested_type(google_protobuf_DescriptorProto *msg, size_t *len) {
- return (google_protobuf_DescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
+UPB_INLINE google_protobuf_DescriptorProto** google_protobuf_DescriptorProto_mutable_nested_type(google_protobuf_DescriptorProto* msg, size_t* len) {
+ return (google_protobuf_DescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
}
-UPB_INLINE google_protobuf_DescriptorProto** google_protobuf_DescriptorProto_resize_nested_type(google_protobuf_DescriptorProto *msg, size_t len, upb_Arena *arena) {
- return (google_protobuf_DescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_protobuf_DescriptorProto** google_protobuf_DescriptorProto_resize_nested_type(google_protobuf_DescriptorProto* msg, size_t len, upb_Arena* arena) {
+ return (google_protobuf_DescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_DescriptorProto* google_protobuf_DescriptorProto_add_nested_type(google_protobuf_DescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_DescriptorProto* google_protobuf_DescriptorProto_add_nested_type(google_protobuf_DescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_DescriptorProto* sub = (struct google_protobuf_DescriptorProto*)_upb_Message_New(&google_protobuf_DescriptorProto_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE google_protobuf_EnumDescriptorProto** google_protobuf_DescriptorProto_mutable_enum_type(google_protobuf_DescriptorProto *msg, size_t *len) {
- return (google_protobuf_EnumDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
+UPB_INLINE google_protobuf_EnumDescriptorProto** google_protobuf_DescriptorProto_mutable_enum_type(google_protobuf_DescriptorProto* msg, size_t* len) {
+ return (google_protobuf_EnumDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
}
-UPB_INLINE google_protobuf_EnumDescriptorProto** google_protobuf_DescriptorProto_resize_enum_type(google_protobuf_DescriptorProto *msg, size_t len, upb_Arena *arena) {
- return (google_protobuf_EnumDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_protobuf_EnumDescriptorProto** google_protobuf_DescriptorProto_resize_enum_type(google_protobuf_DescriptorProto* msg, size_t len, upb_Arena* arena) {
+ return (google_protobuf_EnumDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_EnumDescriptorProto* google_protobuf_DescriptorProto_add_enum_type(google_protobuf_DescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_EnumDescriptorProto* google_protobuf_DescriptorProto_add_enum_type(google_protobuf_DescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_EnumDescriptorProto* sub = (struct google_protobuf_EnumDescriptorProto*)_upb_Message_New(&google_protobuf_EnumDescriptorProto_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(24, 48), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE google_protobuf_DescriptorProto_ExtensionRange** google_protobuf_DescriptorProto_mutable_extension_range(google_protobuf_DescriptorProto *msg, size_t *len) {
- return (google_protobuf_DescriptorProto_ExtensionRange**)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
+UPB_INLINE google_protobuf_DescriptorProto_ExtensionRange** google_protobuf_DescriptorProto_mutable_extension_range(google_protobuf_DescriptorProto* msg, size_t* len) {
+ return (google_protobuf_DescriptorProto_ExtensionRange**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
}
-UPB_INLINE google_protobuf_DescriptorProto_ExtensionRange** google_protobuf_DescriptorProto_resize_extension_range(google_protobuf_DescriptorProto *msg, size_t len, upb_Arena *arena) {
- return (google_protobuf_DescriptorProto_ExtensionRange**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_protobuf_DescriptorProto_ExtensionRange** google_protobuf_DescriptorProto_resize_extension_range(google_protobuf_DescriptorProto* msg, size_t len, upb_Arena* arena) {
+ return (google_protobuf_DescriptorProto_ExtensionRange**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_DescriptorProto_ExtensionRange* google_protobuf_DescriptorProto_add_extension_range(google_protobuf_DescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_DescriptorProto_ExtensionRange* google_protobuf_DescriptorProto_add_extension_range(google_protobuf_DescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_DescriptorProto_ExtensionRange* sub = (struct google_protobuf_DescriptorProto_ExtensionRange*)_upb_Message_New(&google_protobuf_DescriptorProto_ExtensionRange_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(28, 56), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 48), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE google_protobuf_FieldDescriptorProto** google_protobuf_DescriptorProto_mutable_extension(google_protobuf_DescriptorProto *msg, size_t *len) {
- return (google_protobuf_FieldDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
+UPB_INLINE google_protobuf_FieldDescriptorProto** google_protobuf_DescriptorProto_mutable_extension(google_protobuf_DescriptorProto* msg, size_t* len) {
+ return (google_protobuf_FieldDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
}
-UPB_INLINE google_protobuf_FieldDescriptorProto** google_protobuf_DescriptorProto_resize_extension(google_protobuf_DescriptorProto *msg, size_t len, upb_Arena *arena) {
- return (google_protobuf_FieldDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_protobuf_FieldDescriptorProto** google_protobuf_DescriptorProto_resize_extension(google_protobuf_DescriptorProto* msg, size_t len, upb_Arena* arena) {
+ return (google_protobuf_FieldDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_FieldDescriptorProto* google_protobuf_DescriptorProto_add_extension(google_protobuf_DescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_FieldDescriptorProto* google_protobuf_DescriptorProto_add_extension(google_protobuf_DescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_FieldDescriptorProto* sub = (struct google_protobuf_FieldDescriptorProto*)_upb_Message_New(&google_protobuf_FieldDescriptorProto_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(32, 64), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 56), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void google_protobuf_DescriptorProto_set_options(google_protobuf_DescriptorProto *msg, google_protobuf_MessageOptions* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), google_protobuf_MessageOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), google_protobuf_MessageOptions*) = value;
}
-UPB_INLINE struct google_protobuf_MessageOptions* google_protobuf_DescriptorProto_mutable_options(google_protobuf_DescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_MessageOptions* google_protobuf_DescriptorProto_mutable_options(google_protobuf_DescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_MessageOptions* sub = (struct google_protobuf_MessageOptions*)google_protobuf_DescriptorProto_options(msg);
if (sub == NULL) {
sub = (struct google_protobuf_MessageOptions*)_upb_Message_New(&google_protobuf_MessageOptions_msginit, arena);
@@ -530,41 +672,38 @@ UPB_INLINE struct google_protobuf_MessageOptions* google_protobuf_DescriptorProt
}
return sub;
}
-UPB_INLINE google_protobuf_OneofDescriptorProto** google_protobuf_DescriptorProto_mutable_oneof_decl(google_protobuf_DescriptorProto *msg, size_t *len) {
+UPB_INLINE google_protobuf_OneofDescriptorProto** google_protobuf_DescriptorProto_mutable_oneof_decl(google_protobuf_DescriptorProto* msg, size_t* len) {
return (google_protobuf_OneofDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 72), len);
}
-UPB_INLINE google_protobuf_OneofDescriptorProto** google_protobuf_DescriptorProto_resize_oneof_decl(google_protobuf_DescriptorProto *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_protobuf_OneofDescriptorProto** google_protobuf_DescriptorProto_resize_oneof_decl(google_protobuf_DescriptorProto* msg, size_t len, upb_Arena* arena) {
return (google_protobuf_OneofDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 72), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_OneofDescriptorProto* google_protobuf_DescriptorProto_add_oneof_decl(google_protobuf_DescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_OneofDescriptorProto* google_protobuf_DescriptorProto_add_oneof_decl(google_protobuf_DescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_OneofDescriptorProto* sub = (struct google_protobuf_OneofDescriptorProto*)_upb_Message_New(&google_protobuf_OneofDescriptorProto_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(36, 72), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 72), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE google_protobuf_DescriptorProto_ReservedRange** google_protobuf_DescriptorProto_mutable_reserved_range(google_protobuf_DescriptorProto *msg, size_t *len) {
+UPB_INLINE google_protobuf_DescriptorProto_ReservedRange** google_protobuf_DescriptorProto_mutable_reserved_range(google_protobuf_DescriptorProto* msg, size_t* len) {
return (google_protobuf_DescriptorProto_ReservedRange**)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 80), len);
}
-UPB_INLINE google_protobuf_DescriptorProto_ReservedRange** google_protobuf_DescriptorProto_resize_reserved_range(google_protobuf_DescriptorProto *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_protobuf_DescriptorProto_ReservedRange** google_protobuf_DescriptorProto_resize_reserved_range(google_protobuf_DescriptorProto* msg, size_t len, upb_Arena* arena) {
return (google_protobuf_DescriptorProto_ReservedRange**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 80), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_DescriptorProto_ReservedRange* google_protobuf_DescriptorProto_add_reserved_range(google_protobuf_DescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_DescriptorProto_ReservedRange* google_protobuf_DescriptorProto_add_reserved_range(google_protobuf_DescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_DescriptorProto_ReservedRange* sub = (struct google_protobuf_DescriptorProto_ReservedRange*)_upb_Message_New(&google_protobuf_DescriptorProto_ReservedRange_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(40, 80), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 80), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE upb_StringView* google_protobuf_DescriptorProto_mutable_reserved_name(google_protobuf_DescriptorProto *msg, size_t *len) {
+UPB_INLINE upb_StringView* google_protobuf_DescriptorProto_mutable_reserved_name(google_protobuf_DescriptorProto* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 88), len);
}
-UPB_INLINE upb_StringView* google_protobuf_DescriptorProto_resize_reserved_name(google_protobuf_DescriptorProto *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* google_protobuf_DescriptorProto_resize_reserved_name(google_protobuf_DescriptorProto* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 88), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool google_protobuf_DescriptorProto_add_reserved_name(google_protobuf_DescriptorProto *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(44, 88), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool google_protobuf_DescriptorProto_add_reserved_name(google_protobuf_DescriptorProto* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(44, 88), UPB_SIZE(3, 4), &val, arena);
}
/* google.protobuf.DescriptorProto.ExtensionRange */
@@ -592,21 +731,42 @@ UPB_INLINE google_protobuf_DescriptorProto_ExtensionRange* google_protobuf_Descr
return ret;
}
UPB_INLINE char* google_protobuf_DescriptorProto_ExtensionRange_serialize(const google_protobuf_DescriptorProto_ExtensionRange* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_DescriptorProto_ExtensionRange_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_DescriptorProto_ExtensionRange_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_DescriptorProto_ExtensionRange_serialize_ex(const google_protobuf_DescriptorProto_ExtensionRange* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_DescriptorProto_ExtensionRange_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_DescriptorProto_ExtensionRange_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_DescriptorProto_ExtensionRange_has_start(const google_protobuf_DescriptorProto_ExtensionRange* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_DescriptorProto_ExtensionRange_clear_start(const google_protobuf_DescriptorProto_ExtensionRange* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_DescriptorProto_ExtensionRange_has_start(const google_protobuf_DescriptorProto_ExtensionRange *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE int32_t google_protobuf_DescriptorProto_ExtensionRange_start(const google_protobuf_DescriptorProto_ExtensionRange* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool google_protobuf_DescriptorProto_ExtensionRange_has_end(const google_protobuf_DescriptorProto_ExtensionRange *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_DescriptorProto_ExtensionRange_has_end(const google_protobuf_DescriptorProto_ExtensionRange* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_DescriptorProto_ExtensionRange_clear_end(const google_protobuf_DescriptorProto_ExtensionRange* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE int32_t google_protobuf_DescriptorProto_ExtensionRange_end(const google_protobuf_DescriptorProto_ExtensionRange* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
-UPB_INLINE bool google_protobuf_DescriptorProto_ExtensionRange_has_options(const google_protobuf_DescriptorProto_ExtensionRange *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool google_protobuf_DescriptorProto_ExtensionRange_has_options(const google_protobuf_DescriptorProto_ExtensionRange* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void google_protobuf_DescriptorProto_ExtensionRange_clear_options(const google_protobuf_DescriptorProto_ExtensionRange* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const google_protobuf_ExtensionRangeOptions* google_protobuf_DescriptorProto_ExtensionRange_options(const google_protobuf_DescriptorProto_ExtensionRange* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const google_protobuf_ExtensionRangeOptions*);
}
@@ -623,7 +783,7 @@ UPB_INLINE void google_protobuf_DescriptorProto_ExtensionRange_set_options(googl
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 16), google_protobuf_ExtensionRangeOptions*) = value;
}
-UPB_INLINE struct google_protobuf_ExtensionRangeOptions* google_protobuf_DescriptorProto_ExtensionRange_mutable_options(google_protobuf_DescriptorProto_ExtensionRange *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_ExtensionRangeOptions* google_protobuf_DescriptorProto_ExtensionRange_mutable_options(google_protobuf_DescriptorProto_ExtensionRange* msg, upb_Arena* arena) {
struct google_protobuf_ExtensionRangeOptions* sub = (struct google_protobuf_ExtensionRangeOptions*)google_protobuf_DescriptorProto_ExtensionRange_options(msg);
if (sub == NULL) {
sub = (struct google_protobuf_ExtensionRangeOptions*)_upb_Message_New(&google_protobuf_ExtensionRangeOptions_msginit, arena);
@@ -658,17 +818,33 @@ UPB_INLINE google_protobuf_DescriptorProto_ReservedRange* google_protobuf_Descri
return ret;
}
UPB_INLINE char* google_protobuf_DescriptorProto_ReservedRange_serialize(const google_protobuf_DescriptorProto_ReservedRange* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_DescriptorProto_ReservedRange_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_DescriptorProto_ReservedRange_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_DescriptorProto_ReservedRange_serialize_ex(const google_protobuf_DescriptorProto_ReservedRange* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_DescriptorProto_ReservedRange_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_DescriptorProto_ReservedRange_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_DescriptorProto_ReservedRange_has_start(const google_protobuf_DescriptorProto_ReservedRange* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_DescriptorProto_ReservedRange_clear_start(const google_protobuf_DescriptorProto_ReservedRange* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_DescriptorProto_ReservedRange_has_start(const google_protobuf_DescriptorProto_ReservedRange *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE int32_t google_protobuf_DescriptorProto_ReservedRange_start(const google_protobuf_DescriptorProto_ReservedRange* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool google_protobuf_DescriptorProto_ReservedRange_has_end(const google_protobuf_DescriptorProto_ReservedRange *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_DescriptorProto_ReservedRange_has_end(const google_protobuf_DescriptorProto_ReservedRange* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_DescriptorProto_ReservedRange_clear_end(const google_protobuf_DescriptorProto_ReservedRange* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE int32_t google_protobuf_DescriptorProto_ReservedRange_end(const google_protobuf_DescriptorProto_ReservedRange* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
@@ -707,25 +883,35 @@ UPB_INLINE google_protobuf_ExtensionRangeOptions* google_protobuf_ExtensionRange
return ret;
}
UPB_INLINE char* google_protobuf_ExtensionRangeOptions_serialize(const google_protobuf_ExtensionRangeOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_ExtensionRangeOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_ExtensionRangeOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_ExtensionRangeOptions_serialize_ex(const google_protobuf_ExtensionRangeOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_ExtensionRangeOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_ExtensionRangeOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_ExtensionRangeOptions_has_uninterpreted_option(const google_protobuf_ExtensionRangeOptions* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void google_protobuf_ExtensionRangeOptions_clear_uninterpreted_option(const google_protobuf_ExtensionRangeOptions* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_ExtensionRangeOptions_uninterpreted_option(const google_protobuf_ExtensionRangeOptions* msg, size_t* len) {
+ return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool google_protobuf_ExtensionRangeOptions_has_uninterpreted_option(const google_protobuf_ExtensionRangeOptions *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_ExtensionRangeOptions_uninterpreted_option(const google_protobuf_ExtensionRangeOptions *msg, size_t *len) { return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_ExtensionRangeOptions_mutable_uninterpreted_option(google_protobuf_ExtensionRangeOptions *msg, size_t *len) {
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_ExtensionRangeOptions_mutable_uninterpreted_option(google_protobuf_ExtensionRangeOptions* msg, size_t* len) {
return (google_protobuf_UninterpretedOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_ExtensionRangeOptions_resize_uninterpreted_option(google_protobuf_ExtensionRangeOptions *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_ExtensionRangeOptions_resize_uninterpreted_option(google_protobuf_ExtensionRangeOptions* msg, size_t len, upb_Arena* arena) {
return (google_protobuf_UninterpretedOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_ExtensionRangeOptions_add_uninterpreted_option(google_protobuf_ExtensionRangeOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_ExtensionRangeOptions_add_uninterpreted_option(google_protobuf_ExtensionRangeOptions* msg, upb_Arena* arena) {
struct google_protobuf_UninterpretedOption* sub = (struct google_protobuf_UninterpretedOption*)_upb_Message_New(&google_protobuf_UninterpretedOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -755,53 +941,122 @@ UPB_INLINE google_protobuf_FieldDescriptorProto* google_protobuf_FieldDescriptor
return ret;
}
UPB_INLINE char* google_protobuf_FieldDescriptorProto_serialize(const google_protobuf_FieldDescriptorProto* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_FieldDescriptorProto_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_FieldDescriptorProto_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_FieldDescriptorProto_serialize_ex(const google_protobuf_FieldDescriptorProto* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_FieldDescriptorProto_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_FieldDescriptorProto_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_name(const google_protobuf_FieldDescriptorProto* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_FieldDescriptorProto_clear_name(const google_protobuf_FieldDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_name(const google_protobuf_FieldDescriptorProto *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE upb_StringView google_protobuf_FieldDescriptorProto_name(const google_protobuf_FieldDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_extendee(const google_protobuf_FieldDescriptorProto *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_extendee(const google_protobuf_FieldDescriptorProto* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_FieldDescriptorProto_clear_extendee(const google_protobuf_FieldDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE upb_StringView google_protobuf_FieldDescriptorProto_extendee(const google_protobuf_FieldDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(32, 40), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_number(const google_protobuf_FieldDescriptorProto *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_number(const google_protobuf_FieldDescriptorProto* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void google_protobuf_FieldDescriptorProto_clear_number(const google_protobuf_FieldDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+ _upb_clearhas(msg, 3);
+}
UPB_INLINE int32_t google_protobuf_FieldDescriptorProto_number(const google_protobuf_FieldDescriptorProto* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_label(const google_protobuf_FieldDescriptorProto* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void google_protobuf_FieldDescriptorProto_clear_label(const google_protobuf_FieldDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
+ _upb_clearhas(msg, 4);
}
-UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_label(const google_protobuf_FieldDescriptorProto *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE int32_t google_protobuf_FieldDescriptorProto_label(const google_protobuf_FieldDescriptorProto* msg) {
- return google_protobuf_FieldDescriptorProto_has_label(msg) ? *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) : 1;
+ return google_protobuf_FieldDescriptorProto_has_label(msg) ? *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) : 1;
+}
+UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_type(const google_protobuf_FieldDescriptorProto* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void google_protobuf_FieldDescriptorProto_clear_type(const google_protobuf_FieldDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = 0;
+ _upb_clearhas(msg, 5);
}
-UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_type(const google_protobuf_FieldDescriptorProto *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE int32_t google_protobuf_FieldDescriptorProto_type(const google_protobuf_FieldDescriptorProto* msg) {
- return google_protobuf_FieldDescriptorProto_has_type(msg) ? *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) : 1;
+ return google_protobuf_FieldDescriptorProto_has_type(msg) ? *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) : 1;
+}
+UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_type_name(const google_protobuf_FieldDescriptorProto* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void google_protobuf_FieldDescriptorProto_clear_type_name(const google_protobuf_FieldDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 56), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 6);
}
-UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_type_name(const google_protobuf_FieldDescriptorProto *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE upb_StringView google_protobuf_FieldDescriptorProto_type_name(const google_protobuf_FieldDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(40, 56), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_default_value(const google_protobuf_FieldDescriptorProto *msg) { return _upb_hasbit(msg, 7); }
+UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_default_value(const google_protobuf_FieldDescriptorProto* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void google_protobuf_FieldDescriptorProto_clear_default_value(const google_protobuf_FieldDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 72), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 7);
+}
UPB_INLINE upb_StringView google_protobuf_FieldDescriptorProto_default_value(const google_protobuf_FieldDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(48, 72), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_options(const google_protobuf_FieldDescriptorProto *msg) { return _upb_hasbit(msg, 8); }
+UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_options(const google_protobuf_FieldDescriptorProto* msg) {
+ return _upb_hasbit(msg, 8);
+}
+UPB_INLINE void google_protobuf_FieldDescriptorProto_clear_options(const google_protobuf_FieldDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 88), const upb_Message*) = NULL;
+}
UPB_INLINE const google_protobuf_FieldOptions* google_protobuf_FieldDescriptorProto_options(const google_protobuf_FieldDescriptorProto* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(64, 104), const google_protobuf_FieldOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(56, 88), const google_protobuf_FieldOptions*);
+}
+UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_oneof_index(const google_protobuf_FieldDescriptorProto* msg) {
+ return _upb_hasbit(msg, 9);
+}
+UPB_INLINE void google_protobuf_FieldDescriptorProto_clear_oneof_index(const google_protobuf_FieldDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t) = 0;
+ _upb_clearhas(msg, 9);
}
-UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_oneof_index(const google_protobuf_FieldDescriptorProto *msg) { return _upb_hasbit(msg, 9); }
UPB_INLINE int32_t google_protobuf_FieldDescriptorProto_oneof_index(const google_protobuf_FieldDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t);
}
-UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_json_name(const google_protobuf_FieldDescriptorProto *msg) { return _upb_hasbit(msg, 10); }
+UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_json_name(const google_protobuf_FieldDescriptorProto* msg) {
+ return _upb_hasbit(msg, 10);
+}
+UPB_INLINE void google_protobuf_FieldDescriptorProto_clear_json_name(const google_protobuf_FieldDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 96), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 10);
+}
UPB_INLINE upb_StringView google_protobuf_FieldDescriptorProto_json_name(const google_protobuf_FieldDescriptorProto* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(56, 88), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(60, 96), upb_StringView);
+}
+UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_proto3_optional(const google_protobuf_FieldDescriptorProto* msg) {
+ return _upb_hasbit(msg, 11);
+}
+UPB_INLINE void google_protobuf_FieldDescriptorProto_clear_proto3_optional(const google_protobuf_FieldDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool) = 0;
+ _upb_clearhas(msg, 11);
}
-UPB_INLINE bool google_protobuf_FieldDescriptorProto_has_proto3_optional(const google_protobuf_FieldDescriptorProto *msg) { return _upb_hasbit(msg, 11); }
UPB_INLINE bool google_protobuf_FieldDescriptorProto_proto3_optional(const google_protobuf_FieldDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 20), bool);
}
@@ -816,15 +1071,15 @@ UPB_INLINE void google_protobuf_FieldDescriptorProto_set_extendee(google_protobu
}
UPB_INLINE void google_protobuf_FieldDescriptorProto_set_number(google_protobuf_FieldDescriptorProto *msg, int32_t value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
UPB_INLINE void google_protobuf_FieldDescriptorProto_set_label(google_protobuf_FieldDescriptorProto *msg, int32_t value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = value;
}
UPB_INLINE void google_protobuf_FieldDescriptorProto_set_type(google_protobuf_FieldDescriptorProto *msg, int32_t value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = value;
}
UPB_INLINE void google_protobuf_FieldDescriptorProto_set_type_name(google_protobuf_FieldDescriptorProto *msg, upb_StringView value) {
_upb_sethas(msg, 6);
@@ -836,9 +1091,9 @@ UPB_INLINE void google_protobuf_FieldDescriptorProto_set_default_value(google_pr
}
UPB_INLINE void google_protobuf_FieldDescriptorProto_set_options(google_protobuf_FieldDescriptorProto *msg, google_protobuf_FieldOptions* value) {
_upb_sethas(msg, 8);
- *UPB_PTR_AT(msg, UPB_SIZE(64, 104), google_protobuf_FieldOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(56, 88), google_protobuf_FieldOptions*) = value;
}
-UPB_INLINE struct google_protobuf_FieldOptions* google_protobuf_FieldDescriptorProto_mutable_options(google_protobuf_FieldDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_FieldOptions* google_protobuf_FieldDescriptorProto_mutable_options(google_protobuf_FieldDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_FieldOptions* sub = (struct google_protobuf_FieldOptions*)google_protobuf_FieldDescriptorProto_options(msg);
if (sub == NULL) {
sub = (struct google_protobuf_FieldOptions*)_upb_Message_New(&google_protobuf_FieldOptions_msginit, arena);
@@ -853,7 +1108,7 @@ UPB_INLINE void google_protobuf_FieldDescriptorProto_set_oneof_index(google_prot
}
UPB_INLINE void google_protobuf_FieldDescriptorProto_set_json_name(google_protobuf_FieldDescriptorProto *msg, upb_StringView value) {
_upb_sethas(msg, 10);
- *UPB_PTR_AT(msg, UPB_SIZE(56, 88), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 96), upb_StringView) = value;
}
UPB_INLINE void google_protobuf_FieldDescriptorProto_set_proto3_optional(google_protobuf_FieldDescriptorProto *msg, bool value) {
_upb_sethas(msg, 11);
@@ -885,17 +1140,32 @@ UPB_INLINE google_protobuf_OneofDescriptorProto* google_protobuf_OneofDescriptor
return ret;
}
UPB_INLINE char* google_protobuf_OneofDescriptorProto_serialize(const google_protobuf_OneofDescriptorProto* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_OneofDescriptorProto_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_OneofDescriptorProto_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_OneofDescriptorProto_serialize_ex(const google_protobuf_OneofDescriptorProto* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_OneofDescriptorProto_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_OneofDescriptorProto_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_OneofDescriptorProto_has_name(const google_protobuf_OneofDescriptorProto* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_OneofDescriptorProto_clear_name(const google_protobuf_OneofDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_OneofDescriptorProto_has_name(const google_protobuf_OneofDescriptorProto *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE upb_StringView google_protobuf_OneofDescriptorProto_name(const google_protobuf_OneofDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool google_protobuf_OneofDescriptorProto_has_options(const google_protobuf_OneofDescriptorProto *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_OneofDescriptorProto_has_options(const google_protobuf_OneofDescriptorProto* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_OneofDescriptorProto_clear_options(const google_protobuf_OneofDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const google_protobuf_OneofOptions* google_protobuf_OneofDescriptorProto_options(const google_protobuf_OneofDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const google_protobuf_OneofOptions*);
}
@@ -908,7 +1178,7 @@ UPB_INLINE void google_protobuf_OneofDescriptorProto_set_options(google_protobuf
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), google_protobuf_OneofOptions*) = value;
}
-UPB_INLINE struct google_protobuf_OneofOptions* google_protobuf_OneofDescriptorProto_mutable_options(google_protobuf_OneofDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_OneofOptions* google_protobuf_OneofDescriptorProto_mutable_options(google_protobuf_OneofDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_OneofOptions* sub = (struct google_protobuf_OneofOptions*)google_protobuf_OneofDescriptorProto_options(msg);
if (sub == NULL) {
sub = (struct google_protobuf_OneofOptions*)_upb_Message_New(&google_protobuf_OneofOptions_msginit, arena);
@@ -943,48 +1213,81 @@ UPB_INLINE google_protobuf_EnumDescriptorProto* google_protobuf_EnumDescriptorPr
return ret;
}
UPB_INLINE char* google_protobuf_EnumDescriptorProto_serialize(const google_protobuf_EnumDescriptorProto* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_EnumDescriptorProto_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_EnumDescriptorProto_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_EnumDescriptorProto_serialize_ex(const google_protobuf_EnumDescriptorProto* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_EnumDescriptorProto_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_EnumDescriptorProto_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_EnumDescriptorProto_has_name(const google_protobuf_EnumDescriptorProto* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_EnumDescriptorProto_clear_name(const google_protobuf_EnumDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_EnumDescriptorProto_has_name(const google_protobuf_EnumDescriptorProto *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE upb_StringView google_protobuf_EnumDescriptorProto_name(const google_protobuf_EnumDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool google_protobuf_EnumDescriptorProto_has_value(const google_protobuf_EnumDescriptorProto *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const google_protobuf_EnumValueDescriptorProto* const* google_protobuf_EnumDescriptorProto_value(const google_protobuf_EnumDescriptorProto *msg, size_t *len) { return (const google_protobuf_EnumValueDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
-UPB_INLINE bool google_protobuf_EnumDescriptorProto_has_options(const google_protobuf_EnumDescriptorProto *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_EnumDescriptorProto_has_value(const google_protobuf_EnumDescriptorProto* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void google_protobuf_EnumDescriptorProto_clear_value(const google_protobuf_EnumDescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const google_protobuf_EnumValueDescriptorProto* const* google_protobuf_EnumDescriptorProto_value(const google_protobuf_EnumDescriptorProto* msg, size_t* len) {
+ return (const google_protobuf_EnumValueDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE bool google_protobuf_EnumDescriptorProto_has_options(const google_protobuf_EnumDescriptorProto* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_EnumDescriptorProto_clear_options(const google_protobuf_EnumDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const google_protobuf_EnumOptions* google_protobuf_EnumDescriptorProto_options(const google_protobuf_EnumDescriptorProto* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const google_protobuf_EnumOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const google_protobuf_EnumOptions*);
+}
+UPB_INLINE bool google_protobuf_EnumDescriptorProto_has_reserved_range(const google_protobuf_EnumDescriptorProto* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE void google_protobuf_EnumDescriptorProto_clear_reserved_range(const google_protobuf_EnumDescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 40));
+}
+UPB_INLINE const google_protobuf_EnumDescriptorProto_EnumReservedRange* const* google_protobuf_EnumDescriptorProto_reserved_range(const google_protobuf_EnumDescriptorProto* msg, size_t* len) {
+ return (const google_protobuf_EnumDescriptorProto_EnumReservedRange* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len);
+}
+UPB_INLINE void google_protobuf_EnumDescriptorProto_clear_reserved_name(const google_protobuf_EnumDescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE upb_StringView const* google_protobuf_EnumDescriptorProto_reserved_name(const google_protobuf_EnumDescriptorProto* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len);
}
-UPB_INLINE bool google_protobuf_EnumDescriptorProto_has_reserved_range(const google_protobuf_EnumDescriptorProto *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE const google_protobuf_EnumDescriptorProto_EnumReservedRange* const* google_protobuf_EnumDescriptorProto_reserved_range(const google_protobuf_EnumDescriptorProto *msg, size_t *len) { return (const google_protobuf_EnumDescriptorProto_EnumReservedRange* const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len); }
-UPB_INLINE upb_StringView const* google_protobuf_EnumDescriptorProto_reserved_name(const google_protobuf_EnumDescriptorProto *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len); }
UPB_INLINE void google_protobuf_EnumDescriptorProto_set_name(google_protobuf_EnumDescriptorProto *msg, upb_StringView value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE google_protobuf_EnumValueDescriptorProto** google_protobuf_EnumDescriptorProto_mutable_value(google_protobuf_EnumDescriptorProto *msg, size_t *len) {
- return (google_protobuf_EnumValueDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
+UPB_INLINE google_protobuf_EnumValueDescriptorProto** google_protobuf_EnumDescriptorProto_mutable_value(google_protobuf_EnumDescriptorProto* msg, size_t* len) {
+ return (google_protobuf_EnumValueDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE google_protobuf_EnumValueDescriptorProto** google_protobuf_EnumDescriptorProto_resize_value(google_protobuf_EnumDescriptorProto *msg, size_t len, upb_Arena *arena) {
- return (google_protobuf_EnumValueDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_protobuf_EnumValueDescriptorProto** google_protobuf_EnumDescriptorProto_resize_value(google_protobuf_EnumDescriptorProto* msg, size_t len, upb_Arena* arena) {
+ return (google_protobuf_EnumValueDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_EnumValueDescriptorProto* google_protobuf_EnumDescriptorProto_add_value(google_protobuf_EnumDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_EnumValueDescriptorProto* google_protobuf_EnumDescriptorProto_add_value(google_protobuf_EnumDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_EnumValueDescriptorProto* sub = (struct google_protobuf_EnumValueDescriptorProto*)_upb_Message_New(&google_protobuf_EnumValueDescriptorProto_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void google_protobuf_EnumDescriptorProto_set_options(google_protobuf_EnumDescriptorProto *msg, google_protobuf_EnumOptions* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), google_protobuf_EnumOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), google_protobuf_EnumOptions*) = value;
}
-UPB_INLINE struct google_protobuf_EnumOptions* google_protobuf_EnumDescriptorProto_mutable_options(google_protobuf_EnumDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_EnumOptions* google_protobuf_EnumDescriptorProto_mutable_options(google_protobuf_EnumDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_EnumOptions* sub = (struct google_protobuf_EnumOptions*)google_protobuf_EnumDescriptorProto_options(msg);
if (sub == NULL) {
sub = (struct google_protobuf_EnumOptions*)_upb_Message_New(&google_protobuf_EnumOptions_msginit, arena);
@@ -993,28 +1296,26 @@ UPB_INLINE struct google_protobuf_EnumOptions* google_protobuf_EnumDescriptorPro
}
return sub;
}
-UPB_INLINE google_protobuf_EnumDescriptorProto_EnumReservedRange** google_protobuf_EnumDescriptorProto_mutable_reserved_range(google_protobuf_EnumDescriptorProto *msg, size_t *len) {
+UPB_INLINE google_protobuf_EnumDescriptorProto_EnumReservedRange** google_protobuf_EnumDescriptorProto_mutable_reserved_range(google_protobuf_EnumDescriptorProto* msg, size_t* len) {
return (google_protobuf_EnumDescriptorProto_EnumReservedRange**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
}
-UPB_INLINE google_protobuf_EnumDescriptorProto_EnumReservedRange** google_protobuf_EnumDescriptorProto_resize_reserved_range(google_protobuf_EnumDescriptorProto *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_protobuf_EnumDescriptorProto_EnumReservedRange** google_protobuf_EnumDescriptorProto_resize_reserved_range(google_protobuf_EnumDescriptorProto* msg, size_t len, upb_Arena* arena) {
return (google_protobuf_EnumDescriptorProto_EnumReservedRange**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_EnumDescriptorProto_EnumReservedRange* google_protobuf_EnumDescriptorProto_add_reserved_range(google_protobuf_EnumDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_EnumDescriptorProto_EnumReservedRange* google_protobuf_EnumDescriptorProto_add_reserved_range(google_protobuf_EnumDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_EnumDescriptorProto_EnumReservedRange* sub = (struct google_protobuf_EnumDescriptorProto_EnumReservedRange*)_upb_Message_New(&google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 40), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE upb_StringView* google_protobuf_EnumDescriptorProto_mutable_reserved_name(google_protobuf_EnumDescriptorProto *msg, size_t *len) {
+UPB_INLINE upb_StringView* google_protobuf_EnumDescriptorProto_mutable_reserved_name(google_protobuf_EnumDescriptorProto* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
}
-UPB_INLINE upb_StringView* google_protobuf_EnumDescriptorProto_resize_reserved_name(google_protobuf_EnumDescriptorProto *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* google_protobuf_EnumDescriptorProto_resize_reserved_name(google_protobuf_EnumDescriptorProto* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool google_protobuf_EnumDescriptorProto_add_reserved_name(google_protobuf_EnumDescriptorProto *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 48), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool google_protobuf_EnumDescriptorProto_add_reserved_name(google_protobuf_EnumDescriptorProto* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 48), UPB_SIZE(3, 4), &val, arena);
}
/* google.protobuf.EnumDescriptorProto.EnumReservedRange */
@@ -1042,17 +1343,33 @@ UPB_INLINE google_protobuf_EnumDescriptorProto_EnumReservedRange* google_protobu
return ret;
}
UPB_INLINE char* google_protobuf_EnumDescriptorProto_EnumReservedRange_serialize(const google_protobuf_EnumDescriptorProto_EnumReservedRange* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_EnumDescriptorProto_EnumReservedRange_serialize_ex(const google_protobuf_EnumDescriptorProto_EnumReservedRange* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_EnumDescriptorProto_EnumReservedRange_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_EnumDescriptorProto_EnumReservedRange_has_start(const google_protobuf_EnumDescriptorProto_EnumReservedRange* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_EnumDescriptorProto_EnumReservedRange_clear_start(const google_protobuf_EnumDescriptorProto_EnumReservedRange* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_EnumDescriptorProto_EnumReservedRange_has_start(const google_protobuf_EnumDescriptorProto_EnumReservedRange *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE int32_t google_protobuf_EnumDescriptorProto_EnumReservedRange_start(const google_protobuf_EnumDescriptorProto_EnumReservedRange* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool google_protobuf_EnumDescriptorProto_EnumReservedRange_has_end(const google_protobuf_EnumDescriptorProto_EnumReservedRange *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_EnumDescriptorProto_EnumReservedRange_has_end(const google_protobuf_EnumDescriptorProto_EnumReservedRange* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_EnumDescriptorProto_EnumReservedRange_clear_end(const google_protobuf_EnumDescriptorProto_EnumReservedRange* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE int32_t google_protobuf_EnumDescriptorProto_EnumReservedRange_end(const google_protobuf_EnumDescriptorProto_EnumReservedRange* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
@@ -1091,21 +1408,42 @@ UPB_INLINE google_protobuf_EnumValueDescriptorProto* google_protobuf_EnumValueDe
return ret;
}
UPB_INLINE char* google_protobuf_EnumValueDescriptorProto_serialize(const google_protobuf_EnumValueDescriptorProto* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_EnumValueDescriptorProto_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_EnumValueDescriptorProto_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_EnumValueDescriptorProto_serialize_ex(const google_protobuf_EnumValueDescriptorProto* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_EnumValueDescriptorProto_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_EnumValueDescriptorProto_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_EnumValueDescriptorProto_has_name(const google_protobuf_EnumValueDescriptorProto* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_EnumValueDescriptorProto_clear_name(const google_protobuf_EnumValueDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_EnumValueDescriptorProto_has_name(const google_protobuf_EnumValueDescriptorProto *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE upb_StringView google_protobuf_EnumValueDescriptorProto_name(const google_protobuf_EnumValueDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
}
-UPB_INLINE bool google_protobuf_EnumValueDescriptorProto_has_number(const google_protobuf_EnumValueDescriptorProto *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_EnumValueDescriptorProto_has_number(const google_protobuf_EnumValueDescriptorProto* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_EnumValueDescriptorProto_clear_number(const google_protobuf_EnumValueDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE int32_t google_protobuf_EnumValueDescriptorProto_number(const google_protobuf_EnumValueDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool google_protobuf_EnumValueDescriptorProto_has_options(const google_protobuf_EnumValueDescriptorProto *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool google_protobuf_EnumValueDescriptorProto_has_options(const google_protobuf_EnumValueDescriptorProto* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void google_protobuf_EnumValueDescriptorProto_clear_options(const google_protobuf_EnumValueDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const google_protobuf_EnumValueOptions* google_protobuf_EnumValueDescriptorProto_options(const google_protobuf_EnumValueDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const google_protobuf_EnumValueOptions*);
}
@@ -1122,7 +1460,7 @@ UPB_INLINE void google_protobuf_EnumValueDescriptorProto_set_options(google_prot
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(16, 24), google_protobuf_EnumValueOptions*) = value;
}
-UPB_INLINE struct google_protobuf_EnumValueOptions* google_protobuf_EnumValueDescriptorProto_mutable_options(google_protobuf_EnumValueDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_EnumValueOptions* google_protobuf_EnumValueDescriptorProto_mutable_options(google_protobuf_EnumValueDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_EnumValueOptions* sub = (struct google_protobuf_EnumValueOptions*)google_protobuf_EnumValueDescriptorProto_options(msg);
if (sub == NULL) {
sub = (struct google_protobuf_EnumValueOptions*)_upb_Message_New(&google_protobuf_EnumValueOptions_msginit, arena);
@@ -1157,45 +1495,66 @@ UPB_INLINE google_protobuf_ServiceDescriptorProto* google_protobuf_ServiceDescri
return ret;
}
UPB_INLINE char* google_protobuf_ServiceDescriptorProto_serialize(const google_protobuf_ServiceDescriptorProto* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_ServiceDescriptorProto_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_ServiceDescriptorProto_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_ServiceDescriptorProto_serialize_ex(const google_protobuf_ServiceDescriptorProto* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_ServiceDescriptorProto_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_ServiceDescriptorProto_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_ServiceDescriptorProto_has_name(const google_protobuf_ServiceDescriptorProto* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_ServiceDescriptorProto_clear_name(const google_protobuf_ServiceDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_ServiceDescriptorProto_has_name(const google_protobuf_ServiceDescriptorProto *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE upb_StringView google_protobuf_ServiceDescriptorProto_name(const google_protobuf_ServiceDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool google_protobuf_ServiceDescriptorProto_has_method(const google_protobuf_ServiceDescriptorProto *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32)); }
-UPB_INLINE const google_protobuf_MethodDescriptorProto* const* google_protobuf_ServiceDescriptorProto_method(const google_protobuf_ServiceDescriptorProto *msg, size_t *len) { return (const google_protobuf_MethodDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(16, 32), len); }
-UPB_INLINE bool google_protobuf_ServiceDescriptorProto_has_options(const google_protobuf_ServiceDescriptorProto *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_ServiceDescriptorProto_has_method(const google_protobuf_ServiceDescriptorProto* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void google_protobuf_ServiceDescriptorProto_clear_method(const google_protobuf_ServiceDescriptorProto* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const google_protobuf_MethodDescriptorProto* const* google_protobuf_ServiceDescriptorProto_method(const google_protobuf_ServiceDescriptorProto* msg, size_t* len) {
+ return (const google_protobuf_MethodDescriptorProto* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE bool google_protobuf_ServiceDescriptorProto_has_options(const google_protobuf_ServiceDescriptorProto* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_ServiceDescriptorProto_clear_options(const google_protobuf_ServiceDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const google_protobuf_ServiceOptions* google_protobuf_ServiceDescriptorProto_options(const google_protobuf_ServiceDescriptorProto* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const google_protobuf_ServiceOptions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const google_protobuf_ServiceOptions*);
}
UPB_INLINE void google_protobuf_ServiceDescriptorProto_set_name(google_protobuf_ServiceDescriptorProto *msg, upb_StringView value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE google_protobuf_MethodDescriptorProto** google_protobuf_ServiceDescriptorProto_mutable_method(google_protobuf_ServiceDescriptorProto *msg, size_t *len) {
- return (google_protobuf_MethodDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 32), len);
+UPB_INLINE google_protobuf_MethodDescriptorProto** google_protobuf_ServiceDescriptorProto_mutable_method(google_protobuf_ServiceDescriptorProto* msg, size_t* len) {
+ return (google_protobuf_MethodDescriptorProto**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE google_protobuf_MethodDescriptorProto** google_protobuf_ServiceDescriptorProto_resize_method(google_protobuf_ServiceDescriptorProto *msg, size_t len, upb_Arena *arena) {
- return (google_protobuf_MethodDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 32), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_protobuf_MethodDescriptorProto** google_protobuf_ServiceDescriptorProto_resize_method(google_protobuf_ServiceDescriptorProto* msg, size_t len, upb_Arena* arena) {
+ return (google_protobuf_MethodDescriptorProto**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_MethodDescriptorProto* google_protobuf_ServiceDescriptorProto_add_method(google_protobuf_ServiceDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_MethodDescriptorProto* google_protobuf_ServiceDescriptorProto_add_method(google_protobuf_ServiceDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_MethodDescriptorProto* sub = (struct google_protobuf_MethodDescriptorProto*)_upb_Message_New(&google_protobuf_MethodDescriptorProto_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 32), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void google_protobuf_ServiceDescriptorProto_set_options(google_protobuf_ServiceDescriptorProto *msg, google_protobuf_ServiceOptions* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), google_protobuf_ServiceOptions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), google_protobuf_ServiceOptions*) = value;
}
-UPB_INLINE struct google_protobuf_ServiceOptions* google_protobuf_ServiceDescriptorProto_mutable_options(google_protobuf_ServiceDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_ServiceOptions* google_protobuf_ServiceDescriptorProto_mutable_options(google_protobuf_ServiceDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_ServiceOptions* sub = (struct google_protobuf_ServiceOptions*)google_protobuf_ServiceDescriptorProto_options(msg);
if (sub == NULL) {
sub = (struct google_protobuf_ServiceOptions*)_upb_Message_New(&google_protobuf_ServiceOptions_msginit, arena);
@@ -1230,33 +1589,72 @@ UPB_INLINE google_protobuf_MethodDescriptorProto* google_protobuf_MethodDescript
return ret;
}
UPB_INLINE char* google_protobuf_MethodDescriptorProto_serialize(const google_protobuf_MethodDescriptorProto* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_MethodDescriptorProto_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_MethodDescriptorProto_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_MethodDescriptorProto_serialize_ex(const google_protobuf_MethodDescriptorProto* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_MethodDescriptorProto_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_MethodDescriptorProto_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_MethodDescriptorProto_has_name(const google_protobuf_MethodDescriptorProto* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_MethodDescriptorProto_clear_name(const google_protobuf_MethodDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_MethodDescriptorProto_has_name(const google_protobuf_MethodDescriptorProto *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE upb_StringView google_protobuf_MethodDescriptorProto_name(const google_protobuf_MethodDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool google_protobuf_MethodDescriptorProto_has_input_type(const google_protobuf_MethodDescriptorProto *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_MethodDescriptorProto_has_input_type(const google_protobuf_MethodDescriptorProto* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_MethodDescriptorProto_clear_input_type(const google_protobuf_MethodDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE upb_StringView google_protobuf_MethodDescriptorProto_input_type(const google_protobuf_MethodDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
-UPB_INLINE bool google_protobuf_MethodDescriptorProto_has_output_type(const google_protobuf_MethodDescriptorProto *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool google_protobuf_MethodDescriptorProto_has_output_type(const google_protobuf_MethodDescriptorProto* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void google_protobuf_MethodDescriptorProto_clear_output_type(const google_protobuf_MethodDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 3);
+}
UPB_INLINE upb_StringView google_protobuf_MethodDescriptorProto_output_type(const google_protobuf_MethodDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
}
-UPB_INLINE bool google_protobuf_MethodDescriptorProto_has_options(const google_protobuf_MethodDescriptorProto *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool google_protobuf_MethodDescriptorProto_has_options(const google_protobuf_MethodDescriptorProto* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void google_protobuf_MethodDescriptorProto_clear_options(const google_protobuf_MethodDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const upb_Message*) = NULL;
+}
UPB_INLINE const google_protobuf_MethodOptions* google_protobuf_MethodDescriptorProto_options(const google_protobuf_MethodDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const google_protobuf_MethodOptions*);
}
-UPB_INLINE bool google_protobuf_MethodDescriptorProto_has_client_streaming(const google_protobuf_MethodDescriptorProto *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool google_protobuf_MethodDescriptorProto_has_client_streaming(const google_protobuf_MethodDescriptorProto* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void google_protobuf_MethodDescriptorProto_clear_client_streaming(const google_protobuf_MethodDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 5);
+}
UPB_INLINE bool google_protobuf_MethodDescriptorProto_client_streaming(const google_protobuf_MethodDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE bool google_protobuf_MethodDescriptorProto_has_server_streaming(const google_protobuf_MethodDescriptorProto *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE bool google_protobuf_MethodDescriptorProto_has_server_streaming(const google_protobuf_MethodDescriptorProto* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void google_protobuf_MethodDescriptorProto_clear_server_streaming(const google_protobuf_MethodDescriptorProto* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
+ _upb_clearhas(msg, 6);
+}
UPB_INLINE bool google_protobuf_MethodDescriptorProto_server_streaming(const google_protobuf_MethodDescriptorProto* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
}
@@ -1277,7 +1675,7 @@ UPB_INLINE void google_protobuf_MethodDescriptorProto_set_options(google_protobu
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(28, 56), google_protobuf_MethodOptions*) = value;
}
-UPB_INLINE struct google_protobuf_MethodOptions* google_protobuf_MethodDescriptorProto_mutable_options(google_protobuf_MethodDescriptorProto *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_MethodOptions* google_protobuf_MethodDescriptorProto_mutable_options(google_protobuf_MethodDescriptorProto* msg, upb_Arena* arena) {
struct google_protobuf_MethodOptions* sub = (struct google_protobuf_MethodOptions*)google_protobuf_MethodDescriptorProto_options(msg);
if (sub == NULL) {
sub = (struct google_protobuf_MethodOptions*)_upb_Message_New(&google_protobuf_MethodOptions_msginit, arena);
@@ -1320,94 +1718,225 @@ UPB_INLINE google_protobuf_FileOptions* google_protobuf_FileOptions_parse_ex(con
return ret;
}
UPB_INLINE char* google_protobuf_FileOptions_serialize(const google_protobuf_FileOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_FileOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_FileOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_FileOptions_serialize_ex(const google_protobuf_FileOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_FileOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_FileOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_FileOptions_has_java_package(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_java_package(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_java_package(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE upb_StringView google_protobuf_FileOptions_java_package(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 24), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_java_outer_classname(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_FileOptions_has_java_outer_classname(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_java_outer_classname(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE upb_StringView google_protobuf_FileOptions_java_outer_classname(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(28, 40), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_optimize_for(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool google_protobuf_FileOptions_has_optimize_for(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_optimize_for(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+ _upb_clearhas(msg, 3);
+}
UPB_INLINE int32_t google_protobuf_FileOptions_optimize_for(const google_protobuf_FileOptions* msg) {
return google_protobuf_FileOptions_has_optimize_for(msg) ? *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) : 1;
}
-UPB_INLINE bool google_protobuf_FileOptions_has_java_multiple_files(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool google_protobuf_FileOptions_has_java_multiple_files(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_java_multiple_files(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
+ _upb_clearhas(msg, 4);
+}
UPB_INLINE bool google_protobuf_FileOptions_java_multiple_files(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_go_package(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool google_protobuf_FileOptions_has_go_package(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_go_package(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 56), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 5);
+}
UPB_INLINE upb_StringView google_protobuf_FileOptions_go_package(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(36, 56), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_cc_generic_services(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE bool google_protobuf_FileOptions_has_cc_generic_services(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_cc_generic_services(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool) = 0;
+ _upb_clearhas(msg, 6);
+}
UPB_INLINE bool google_protobuf_FileOptions_cc_generic_services(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_java_generic_services(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 7); }
+UPB_INLINE bool google_protobuf_FileOptions_has_java_generic_services(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_java_generic_services(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(10, 10), bool) = 0;
+ _upb_clearhas(msg, 7);
+}
UPB_INLINE bool google_protobuf_FileOptions_java_generic_services(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(10, 10), bool);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_py_generic_services(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 8); }
+UPB_INLINE bool google_protobuf_FileOptions_has_py_generic_services(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 8);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_py_generic_services(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(11, 11), bool) = 0;
+ _upb_clearhas(msg, 8);
+}
UPB_INLINE bool google_protobuf_FileOptions_py_generic_services(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(11, 11), bool);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_java_generate_equals_and_hash(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 9); }
+UPB_INLINE bool google_protobuf_FileOptions_has_java_generate_equals_and_hash(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 9);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_java_generate_equals_and_hash(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool) = 0;
+ _upb_clearhas(msg, 9);
+}
UPB_INLINE bool google_protobuf_FileOptions_java_generate_equals_and_hash(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_deprecated(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 10); }
+UPB_INLINE bool google_protobuf_FileOptions_has_deprecated(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 10);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_deprecated(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(13, 13), bool) = 0;
+ _upb_clearhas(msg, 10);
+}
UPB_INLINE bool google_protobuf_FileOptions_deprecated(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(13, 13), bool);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_java_string_check_utf8(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 11); }
+UPB_INLINE bool google_protobuf_FileOptions_has_java_string_check_utf8(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 11);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_java_string_check_utf8(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(14, 14), bool) = 0;
+ _upb_clearhas(msg, 11);
+}
UPB_INLINE bool google_protobuf_FileOptions_java_string_check_utf8(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(14, 14), bool);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_cc_enable_arenas(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 12); }
+UPB_INLINE bool google_protobuf_FileOptions_has_cc_enable_arenas(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 12);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_cc_enable_arenas(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(15, 15), bool) = 0;
+ _upb_clearhas(msg, 12);
+}
UPB_INLINE bool google_protobuf_FileOptions_cc_enable_arenas(const google_protobuf_FileOptions* msg) {
return google_protobuf_FileOptions_has_cc_enable_arenas(msg) ? *UPB_PTR_AT(msg, UPB_SIZE(15, 15), bool) : true;
}
-UPB_INLINE bool google_protobuf_FileOptions_has_objc_class_prefix(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 13); }
+UPB_INLINE bool google_protobuf_FileOptions_has_objc_class_prefix(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 13);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_objc_class_prefix(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 72), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 13);
+}
UPB_INLINE upb_StringView google_protobuf_FileOptions_objc_class_prefix(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(44, 72), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_csharp_namespace(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 14); }
+UPB_INLINE bool google_protobuf_FileOptions_has_csharp_namespace(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 14);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_csharp_namespace(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(52, 88), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 14);
+}
UPB_INLINE upb_StringView google_protobuf_FileOptions_csharp_namespace(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(52, 88), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_swift_prefix(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 15); }
+UPB_INLINE bool google_protobuf_FileOptions_has_swift_prefix(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 15);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_swift_prefix(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(60, 104), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 15);
+}
UPB_INLINE upb_StringView google_protobuf_FileOptions_swift_prefix(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(60, 104), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_php_class_prefix(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 16); }
+UPB_INLINE bool google_protobuf_FileOptions_has_php_class_prefix(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 16);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_php_class_prefix(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(68, 120), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 16);
+}
UPB_INLINE upb_StringView google_protobuf_FileOptions_php_class_prefix(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(68, 120), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_php_namespace(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 17); }
+UPB_INLINE bool google_protobuf_FileOptions_has_php_namespace(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 17);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_php_namespace(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(76, 136), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 17);
+}
UPB_INLINE upb_StringView google_protobuf_FileOptions_php_namespace(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(76, 136), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_php_generic_services(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 18); }
+UPB_INLINE bool google_protobuf_FileOptions_has_php_generic_services(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 18);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_php_generic_services(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), bool) = 0;
+ _upb_clearhas(msg, 18);
+}
UPB_INLINE bool google_protobuf_FileOptions_php_generic_services(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), bool);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_php_metadata_namespace(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 19); }
+UPB_INLINE bool google_protobuf_FileOptions_has_php_metadata_namespace(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 19);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_php_metadata_namespace(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(84, 152), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 19);
+}
UPB_INLINE upb_StringView google_protobuf_FileOptions_php_metadata_namespace(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(84, 152), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_ruby_package(const google_protobuf_FileOptions *msg) { return _upb_hasbit(msg, 20); }
+UPB_INLINE bool google_protobuf_FileOptions_has_ruby_package(const google_protobuf_FileOptions* msg) {
+ return _upb_hasbit(msg, 20);
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_ruby_package(const google_protobuf_FileOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(92, 168), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 20);
+}
UPB_INLINE upb_StringView google_protobuf_FileOptions_ruby_package(const google_protobuf_FileOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(92, 168), upb_StringView);
}
-UPB_INLINE bool google_protobuf_FileOptions_has_uninterpreted_option(const google_protobuf_FileOptions *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(100, 184)); }
-UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_FileOptions_uninterpreted_option(const google_protobuf_FileOptions *msg, size_t *len) { return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(100, 184), len); }
+UPB_INLINE bool google_protobuf_FileOptions_has_uninterpreted_option(const google_protobuf_FileOptions* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(100, 184));
+}
+UPB_INLINE void google_protobuf_FileOptions_clear_uninterpreted_option(const google_protobuf_FileOptions* msg) {
+ _upb_array_detach(msg, UPB_SIZE(100, 184));
+}
+UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_FileOptions_uninterpreted_option(const google_protobuf_FileOptions* msg, size_t* len) {
+ return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(100, 184), len);
+}
UPB_INLINE void google_protobuf_FileOptions_set_java_package(google_protobuf_FileOptions *msg, upb_StringView value) {
_upb_sethas(msg, 1);
@@ -1489,16 +2018,15 @@ UPB_INLINE void google_protobuf_FileOptions_set_ruby_package(google_protobuf_Fil
_upb_sethas(msg, 20);
*UPB_PTR_AT(msg, UPB_SIZE(92, 168), upb_StringView) = value;
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_FileOptions_mutable_uninterpreted_option(google_protobuf_FileOptions *msg, size_t *len) {
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_FileOptions_mutable_uninterpreted_option(google_protobuf_FileOptions* msg, size_t* len) {
return (google_protobuf_UninterpretedOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(100, 184), len);
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_FileOptions_resize_uninterpreted_option(google_protobuf_FileOptions *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_FileOptions_resize_uninterpreted_option(google_protobuf_FileOptions* msg, size_t len, upb_Arena* arena) {
return (google_protobuf_UninterpretedOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(100, 184), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_FileOptions_add_uninterpreted_option(google_protobuf_FileOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_FileOptions_add_uninterpreted_option(google_protobuf_FileOptions* msg, upb_Arena* arena) {
struct google_protobuf_UninterpretedOption* sub = (struct google_protobuf_UninterpretedOption*)_upb_Message_New(&google_protobuf_UninterpretedOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(100, 184), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(100, 184), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1528,30 +2056,65 @@ UPB_INLINE google_protobuf_MessageOptions* google_protobuf_MessageOptions_parse_
return ret;
}
UPB_INLINE char* google_protobuf_MessageOptions_serialize(const google_protobuf_MessageOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_MessageOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_MessageOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_MessageOptions_serialize_ex(const google_protobuf_MessageOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_MessageOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_MessageOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_MessageOptions_has_message_set_wire_format(const google_protobuf_MessageOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_MessageOptions_clear_message_set_wire_format(const google_protobuf_MessageOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_MessageOptions_has_message_set_wire_format(const google_protobuf_MessageOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE bool google_protobuf_MessageOptions_message_set_wire_format(const google_protobuf_MessageOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE bool google_protobuf_MessageOptions_has_no_standard_descriptor_accessor(const google_protobuf_MessageOptions *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_MessageOptions_has_no_standard_descriptor_accessor(const google_protobuf_MessageOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_MessageOptions_clear_no_standard_descriptor_accessor(const google_protobuf_MessageOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE bool google_protobuf_MessageOptions_no_standard_descriptor_accessor(const google_protobuf_MessageOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
}
-UPB_INLINE bool google_protobuf_MessageOptions_has_deprecated(const google_protobuf_MessageOptions *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool google_protobuf_MessageOptions_has_deprecated(const google_protobuf_MessageOptions* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void google_protobuf_MessageOptions_clear_deprecated(const google_protobuf_MessageOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = 0;
+ _upb_clearhas(msg, 3);
+}
UPB_INLINE bool google_protobuf_MessageOptions_deprecated(const google_protobuf_MessageOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool);
}
-UPB_INLINE bool google_protobuf_MessageOptions_has_map_entry(const google_protobuf_MessageOptions *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool google_protobuf_MessageOptions_has_map_entry(const google_protobuf_MessageOptions* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void google_protobuf_MessageOptions_clear_map_entry(const google_protobuf_MessageOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = 0;
+ _upb_clearhas(msg, 4);
+}
UPB_INLINE bool google_protobuf_MessageOptions_map_entry(const google_protobuf_MessageOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
}
-UPB_INLINE bool google_protobuf_MessageOptions_has_uninterpreted_option(const google_protobuf_MessageOptions *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 8)); }
-UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_MessageOptions_uninterpreted_option(const google_protobuf_MessageOptions *msg, size_t *len) { return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(8, 8), len); }
+UPB_INLINE bool google_protobuf_MessageOptions_has_uninterpreted_option(const google_protobuf_MessageOptions* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 8));
+}
+UPB_INLINE void google_protobuf_MessageOptions_clear_uninterpreted_option(const google_protobuf_MessageOptions* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 8));
+}
+UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_MessageOptions_uninterpreted_option(const google_protobuf_MessageOptions* msg, size_t* len) {
+ return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(8, 8), len);
+}
UPB_INLINE void google_protobuf_MessageOptions_set_message_set_wire_format(google_protobuf_MessageOptions *msg, bool value) {
_upb_sethas(msg, 1);
@@ -1569,16 +2132,15 @@ UPB_INLINE void google_protobuf_MessageOptions_set_map_entry(google_protobuf_Mes
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = value;
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_MessageOptions_mutable_uninterpreted_option(google_protobuf_MessageOptions *msg, size_t *len) {
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_MessageOptions_mutable_uninterpreted_option(google_protobuf_MessageOptions* msg, size_t* len) {
return (google_protobuf_UninterpretedOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 8), len);
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_MessageOptions_resize_uninterpreted_option(google_protobuf_MessageOptions *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_MessageOptions_resize_uninterpreted_option(google_protobuf_MessageOptions* msg, size_t len, upb_Arena* arena) {
return (google_protobuf_UninterpretedOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_MessageOptions_add_uninterpreted_option(google_protobuf_MessageOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_MessageOptions_add_uninterpreted_option(google_protobuf_MessageOptions* msg, upb_Arena* arena) {
struct google_protobuf_UninterpretedOption* sub = (struct google_protobuf_UninterpretedOption*)_upb_Message_New(&google_protobuf_UninterpretedOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(8, 8), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1608,38 +2170,95 @@ UPB_INLINE google_protobuf_FieldOptions* google_protobuf_FieldOptions_parse_ex(c
return ret;
}
UPB_INLINE char* google_protobuf_FieldOptions_serialize(const google_protobuf_FieldOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_FieldOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_FieldOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_FieldOptions_serialize_ex(const google_protobuf_FieldOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_FieldOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_FieldOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_FieldOptions_has_ctype(const google_protobuf_FieldOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_FieldOptions_clear_ctype(const google_protobuf_FieldOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_FieldOptions_has_ctype(const google_protobuf_FieldOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE int32_t google_protobuf_FieldOptions_ctype(const google_protobuf_FieldOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool google_protobuf_FieldOptions_has_packed(const google_protobuf_FieldOptions *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_FieldOptions_has_packed(const google_protobuf_FieldOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_FieldOptions_clear_packed(const google_protobuf_FieldOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE bool google_protobuf_FieldOptions_packed(const google_protobuf_FieldOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+}
+UPB_INLINE bool google_protobuf_FieldOptions_has_deprecated(const google_protobuf_FieldOptions* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void google_protobuf_FieldOptions_clear_deprecated(const google_protobuf_FieldOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool) = 0;
+ _upb_clearhas(msg, 3);
}
-UPB_INLINE bool google_protobuf_FieldOptions_has_deprecated(const google_protobuf_FieldOptions *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE bool google_protobuf_FieldOptions_deprecated(const google_protobuf_FieldOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(13, 13), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool);
+}
+UPB_INLINE bool google_protobuf_FieldOptions_has_lazy(const google_protobuf_FieldOptions* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void google_protobuf_FieldOptions_clear_lazy(const google_protobuf_FieldOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(10, 10), bool) = 0;
+ _upb_clearhas(msg, 4);
}
-UPB_INLINE bool google_protobuf_FieldOptions_has_lazy(const google_protobuf_FieldOptions *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE bool google_protobuf_FieldOptions_lazy(const google_protobuf_FieldOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(14, 14), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(10, 10), bool);
+}
+UPB_INLINE bool google_protobuf_FieldOptions_has_jstype(const google_protobuf_FieldOptions* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void google_protobuf_FieldOptions_clear_jstype(const google_protobuf_FieldOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = 0;
+ _upb_clearhas(msg, 5);
}
-UPB_INLINE bool google_protobuf_FieldOptions_has_jstype(const google_protobuf_FieldOptions *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE int32_t google_protobuf_FieldOptions_jstype(const google_protobuf_FieldOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t);
+}
+UPB_INLINE bool google_protobuf_FieldOptions_has_weak(const google_protobuf_FieldOptions* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void google_protobuf_FieldOptions_clear_weak(const google_protobuf_FieldOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), bool) = 0;
+ _upb_clearhas(msg, 6);
}
-UPB_INLINE bool google_protobuf_FieldOptions_has_weak(const google_protobuf_FieldOptions *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE bool google_protobuf_FieldOptions_weak(const google_protobuf_FieldOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(15, 15), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), bool);
+}
+UPB_INLINE bool google_protobuf_FieldOptions_has_unverified_lazy(const google_protobuf_FieldOptions* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void google_protobuf_FieldOptions_clear_unverified_lazy(const google_protobuf_FieldOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(17, 17), bool) = 0;
+ _upb_clearhas(msg, 7);
+}
+UPB_INLINE bool google_protobuf_FieldOptions_unverified_lazy(const google_protobuf_FieldOptions* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(17, 17), bool);
+}
+UPB_INLINE bool google_protobuf_FieldOptions_has_uninterpreted_option(const google_protobuf_FieldOptions* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 24));
+}
+UPB_INLINE void google_protobuf_FieldOptions_clear_uninterpreted_option(const google_protobuf_FieldOptions* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 24));
+}
+UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_FieldOptions_uninterpreted_option(const google_protobuf_FieldOptions* msg, size_t* len) {
+ return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(20, 24), len);
}
-UPB_INLINE bool google_protobuf_FieldOptions_has_uninterpreted_option(const google_protobuf_FieldOptions *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 16)); }
-UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_FieldOptions_uninterpreted_option(const google_protobuf_FieldOptions *msg, size_t *len) { return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(16, 16), len); }
UPB_INLINE void google_protobuf_FieldOptions_set_ctype(google_protobuf_FieldOptions *msg, int32_t value) {
_upb_sethas(msg, 1);
@@ -1647,34 +2266,37 @@ UPB_INLINE void google_protobuf_FieldOptions_set_ctype(google_protobuf_FieldOpti
}
UPB_INLINE void google_protobuf_FieldOptions_set_packed(google_protobuf_FieldOptions *msg, bool value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 12), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
}
UPB_INLINE void google_protobuf_FieldOptions_set_deprecated(google_protobuf_FieldOptions *msg, bool value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(13, 13), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool) = value;
}
UPB_INLINE void google_protobuf_FieldOptions_set_lazy(google_protobuf_FieldOptions *msg, bool value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(14, 14), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(10, 10), bool) = value;
}
UPB_INLINE void google_protobuf_FieldOptions_set_jstype(google_protobuf_FieldOptions *msg, int32_t value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = value;
}
UPB_INLINE void google_protobuf_FieldOptions_set_weak(google_protobuf_FieldOptions *msg, bool value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(15, 15), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), bool) = value;
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_FieldOptions_mutable_uninterpreted_option(google_protobuf_FieldOptions *msg, size_t *len) {
- return (google_protobuf_UninterpretedOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 16), len);
+UPB_INLINE void google_protobuf_FieldOptions_set_unverified_lazy(google_protobuf_FieldOptions *msg, bool value) {
+ _upb_sethas(msg, 7);
+ *UPB_PTR_AT(msg, UPB_SIZE(17, 17), bool) = value;
+}
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_FieldOptions_mutable_uninterpreted_option(google_protobuf_FieldOptions* msg, size_t* len) {
+ return (google_protobuf_UninterpretedOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 24), len);
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_FieldOptions_resize_uninterpreted_option(google_protobuf_FieldOptions *msg, size_t len, upb_Arena *arena) {
- return (google_protobuf_UninterpretedOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 16), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_FieldOptions_resize_uninterpreted_option(google_protobuf_FieldOptions* msg, size_t len, upb_Arena* arena) {
+ return (google_protobuf_UninterpretedOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_FieldOptions_add_uninterpreted_option(google_protobuf_FieldOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_FieldOptions_add_uninterpreted_option(google_protobuf_FieldOptions* msg, upb_Arena* arena) {
struct google_protobuf_UninterpretedOption* sub = (struct google_protobuf_UninterpretedOption*)_upb_Message_New(&google_protobuf_UninterpretedOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(16, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1704,25 +2326,35 @@ UPB_INLINE google_protobuf_OneofOptions* google_protobuf_OneofOptions_parse_ex(c
return ret;
}
UPB_INLINE char* google_protobuf_OneofOptions_serialize(const google_protobuf_OneofOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_OneofOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_OneofOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_OneofOptions_serialize_ex(const google_protobuf_OneofOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_OneofOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_OneofOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_OneofOptions_has_uninterpreted_option(const google_protobuf_OneofOptions* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void google_protobuf_OneofOptions_clear_uninterpreted_option(const google_protobuf_OneofOptions* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_OneofOptions_uninterpreted_option(const google_protobuf_OneofOptions* msg, size_t* len) {
+ return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool google_protobuf_OneofOptions_has_uninterpreted_option(const google_protobuf_OneofOptions *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_OneofOptions_uninterpreted_option(const google_protobuf_OneofOptions *msg, size_t *len) { return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_OneofOptions_mutable_uninterpreted_option(google_protobuf_OneofOptions *msg, size_t *len) {
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_OneofOptions_mutable_uninterpreted_option(google_protobuf_OneofOptions* msg, size_t* len) {
return (google_protobuf_UninterpretedOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_OneofOptions_resize_uninterpreted_option(google_protobuf_OneofOptions *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_OneofOptions_resize_uninterpreted_option(google_protobuf_OneofOptions* msg, size_t len, upb_Arena* arena) {
return (google_protobuf_UninterpretedOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_OneofOptions_add_uninterpreted_option(google_protobuf_OneofOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_OneofOptions_add_uninterpreted_option(google_protobuf_OneofOptions* msg, upb_Arena* arena) {
struct google_protobuf_UninterpretedOption* sub = (struct google_protobuf_UninterpretedOption*)_upb_Message_New(&google_protobuf_UninterpretedOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1752,22 +2384,45 @@ UPB_INLINE google_protobuf_EnumOptions* google_protobuf_EnumOptions_parse_ex(con
return ret;
}
UPB_INLINE char* google_protobuf_EnumOptions_serialize(const google_protobuf_EnumOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_EnumOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_EnumOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_EnumOptions_serialize_ex(const google_protobuf_EnumOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_EnumOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_EnumOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_EnumOptions_has_allow_alias(const google_protobuf_EnumOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_EnumOptions_clear_allow_alias(const google_protobuf_EnumOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_EnumOptions_has_allow_alias(const google_protobuf_EnumOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE bool google_protobuf_EnumOptions_allow_alias(const google_protobuf_EnumOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE bool google_protobuf_EnumOptions_has_deprecated(const google_protobuf_EnumOptions *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_EnumOptions_has_deprecated(const google_protobuf_EnumOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_EnumOptions_clear_deprecated(const google_protobuf_EnumOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE bool google_protobuf_EnumOptions_deprecated(const google_protobuf_EnumOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
}
-UPB_INLINE bool google_protobuf_EnumOptions_has_uninterpreted_option(const google_protobuf_EnumOptions *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_EnumOptions_uninterpreted_option(const google_protobuf_EnumOptions *msg, size_t *len) { return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
+UPB_INLINE bool google_protobuf_EnumOptions_has_uninterpreted_option(const google_protobuf_EnumOptions* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void google_protobuf_EnumOptions_clear_uninterpreted_option(const google_protobuf_EnumOptions* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_EnumOptions_uninterpreted_option(const google_protobuf_EnumOptions* msg, size_t* len) {
+ return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
UPB_INLINE void google_protobuf_EnumOptions_set_allow_alias(google_protobuf_EnumOptions *msg, bool value) {
_upb_sethas(msg, 1);
@@ -1777,16 +2432,15 @@ UPB_INLINE void google_protobuf_EnumOptions_set_deprecated(google_protobuf_EnumO
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = value;
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_EnumOptions_mutable_uninterpreted_option(google_protobuf_EnumOptions *msg, size_t *len) {
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_EnumOptions_mutable_uninterpreted_option(google_protobuf_EnumOptions* msg, size_t* len) {
return (google_protobuf_UninterpretedOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_EnumOptions_resize_uninterpreted_option(google_protobuf_EnumOptions *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_EnumOptions_resize_uninterpreted_option(google_protobuf_EnumOptions* msg, size_t len, upb_Arena* arena) {
return (google_protobuf_UninterpretedOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_EnumOptions_add_uninterpreted_option(google_protobuf_EnumOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_EnumOptions_add_uninterpreted_option(google_protobuf_EnumOptions* msg, upb_Arena* arena) {
struct google_protobuf_UninterpretedOption* sub = (struct google_protobuf_UninterpretedOption*)_upb_Message_New(&google_protobuf_UninterpretedOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1816,33 +2470,49 @@ UPB_INLINE google_protobuf_EnumValueOptions* google_protobuf_EnumValueOptions_pa
return ret;
}
UPB_INLINE char* google_protobuf_EnumValueOptions_serialize(const google_protobuf_EnumValueOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_EnumValueOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_EnumValueOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_EnumValueOptions_serialize_ex(const google_protobuf_EnumValueOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_EnumValueOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_EnumValueOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_EnumValueOptions_has_deprecated(const google_protobuf_EnumValueOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_EnumValueOptions_clear_deprecated(const google_protobuf_EnumValueOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_EnumValueOptions_has_deprecated(const google_protobuf_EnumValueOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE bool google_protobuf_EnumValueOptions_deprecated(const google_protobuf_EnumValueOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE bool google_protobuf_EnumValueOptions_has_uninterpreted_option(const google_protobuf_EnumValueOptions *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_EnumValueOptions_uninterpreted_option(const google_protobuf_EnumValueOptions *msg, size_t *len) { return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
+UPB_INLINE bool google_protobuf_EnumValueOptions_has_uninterpreted_option(const google_protobuf_EnumValueOptions* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void google_protobuf_EnumValueOptions_clear_uninterpreted_option(const google_protobuf_EnumValueOptions* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_EnumValueOptions_uninterpreted_option(const google_protobuf_EnumValueOptions* msg, size_t* len) {
+ return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
UPB_INLINE void google_protobuf_EnumValueOptions_set_deprecated(google_protobuf_EnumValueOptions *msg, bool value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_EnumValueOptions_mutable_uninterpreted_option(google_protobuf_EnumValueOptions *msg, size_t *len) {
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_EnumValueOptions_mutable_uninterpreted_option(google_protobuf_EnumValueOptions* msg, size_t* len) {
return (google_protobuf_UninterpretedOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_EnumValueOptions_resize_uninterpreted_option(google_protobuf_EnumValueOptions *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_EnumValueOptions_resize_uninterpreted_option(google_protobuf_EnumValueOptions* msg, size_t len, upb_Arena* arena) {
return (google_protobuf_UninterpretedOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_EnumValueOptions_add_uninterpreted_option(google_protobuf_EnumValueOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_EnumValueOptions_add_uninterpreted_option(google_protobuf_EnumValueOptions* msg, upb_Arena* arena) {
struct google_protobuf_UninterpretedOption* sub = (struct google_protobuf_UninterpretedOption*)_upb_Message_New(&google_protobuf_UninterpretedOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1872,33 +2542,49 @@ UPB_INLINE google_protobuf_ServiceOptions* google_protobuf_ServiceOptions_parse_
return ret;
}
UPB_INLINE char* google_protobuf_ServiceOptions_serialize(const google_protobuf_ServiceOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_ServiceOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_ServiceOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_ServiceOptions_serialize_ex(const google_protobuf_ServiceOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_ServiceOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_ServiceOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_ServiceOptions_has_deprecated(const google_protobuf_ServiceOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_ServiceOptions_clear_deprecated(const google_protobuf_ServiceOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_ServiceOptions_has_deprecated(const google_protobuf_ServiceOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE bool google_protobuf_ServiceOptions_deprecated(const google_protobuf_ServiceOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE bool google_protobuf_ServiceOptions_has_uninterpreted_option(const google_protobuf_ServiceOptions *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_ServiceOptions_uninterpreted_option(const google_protobuf_ServiceOptions *msg, size_t *len) { return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
+UPB_INLINE bool google_protobuf_ServiceOptions_has_uninterpreted_option(const google_protobuf_ServiceOptions* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void google_protobuf_ServiceOptions_clear_uninterpreted_option(const google_protobuf_ServiceOptions* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_ServiceOptions_uninterpreted_option(const google_protobuf_ServiceOptions* msg, size_t* len) {
+ return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
UPB_INLINE void google_protobuf_ServiceOptions_set_deprecated(google_protobuf_ServiceOptions *msg, bool value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_ServiceOptions_mutable_uninterpreted_option(google_protobuf_ServiceOptions *msg, size_t *len) {
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_ServiceOptions_mutable_uninterpreted_option(google_protobuf_ServiceOptions* msg, size_t* len) {
return (google_protobuf_UninterpretedOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_ServiceOptions_resize_uninterpreted_option(google_protobuf_ServiceOptions *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_ServiceOptions_resize_uninterpreted_option(google_protobuf_ServiceOptions* msg, size_t len, upb_Arena* arena) {
return (google_protobuf_UninterpretedOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_ServiceOptions_add_uninterpreted_option(google_protobuf_ServiceOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_ServiceOptions_add_uninterpreted_option(google_protobuf_ServiceOptions* msg, upb_Arena* arena) {
struct google_protobuf_UninterpretedOption* sub = (struct google_protobuf_UninterpretedOption*)_upb_Message_New(&google_protobuf_UninterpretedOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1928,41 +2614,63 @@ UPB_INLINE google_protobuf_MethodOptions* google_protobuf_MethodOptions_parse_ex
return ret;
}
UPB_INLINE char* google_protobuf_MethodOptions_serialize(const google_protobuf_MethodOptions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_MethodOptions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_MethodOptions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_MethodOptions_serialize_ex(const google_protobuf_MethodOptions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_MethodOptions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_MethodOptions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_MethodOptions_has_deprecated(const google_protobuf_MethodOptions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_MethodOptions_clear_deprecated(const google_protobuf_MethodOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_MethodOptions_has_deprecated(const google_protobuf_MethodOptions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE bool google_protobuf_MethodOptions_deprecated(const google_protobuf_MethodOptions* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
+}
+UPB_INLINE bool google_protobuf_MethodOptions_has_idempotency_level(const google_protobuf_MethodOptions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_MethodOptions_clear_idempotency_level(const google_protobuf_MethodOptions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+ _upb_clearhas(msg, 2);
}
-UPB_INLINE bool google_protobuf_MethodOptions_has_idempotency_level(const google_protobuf_MethodOptions *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE int32_t google_protobuf_MethodOptions_idempotency_level(const google_protobuf_MethodOptions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool google_protobuf_MethodOptions_has_uninterpreted_option(const google_protobuf_MethodOptions *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 16)); }
-UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_MethodOptions_uninterpreted_option(const google_protobuf_MethodOptions *msg, size_t *len) { return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len); }
+UPB_INLINE bool google_protobuf_MethodOptions_has_uninterpreted_option(const google_protobuf_MethodOptions* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 8));
+}
+UPB_INLINE void google_protobuf_MethodOptions_clear_uninterpreted_option(const google_protobuf_MethodOptions* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 8));
+}
+UPB_INLINE const google_protobuf_UninterpretedOption* const* google_protobuf_MethodOptions_uninterpreted_option(const google_protobuf_MethodOptions* msg, size_t* len) {
+ return (const google_protobuf_UninterpretedOption* const*)_upb_array_accessor(msg, UPB_SIZE(8, 8), len);
+}
UPB_INLINE void google_protobuf_MethodOptions_set_deprecated(google_protobuf_MethodOptions *msg, bool value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
UPB_INLINE void google_protobuf_MethodOptions_set_idempotency_level(google_protobuf_MethodOptions *msg, int32_t value) {
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_MethodOptions_mutable_uninterpreted_option(google_protobuf_MethodOptions *msg, size_t *len) {
- return (google_protobuf_UninterpretedOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 16), len);
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_MethodOptions_mutable_uninterpreted_option(google_protobuf_MethodOptions* msg, size_t* len) {
+ return (google_protobuf_UninterpretedOption**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 8), len);
}
-UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_MethodOptions_resize_uninterpreted_option(google_protobuf_MethodOptions *msg, size_t len, upb_Arena *arena) {
- return (google_protobuf_UninterpretedOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 16), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_protobuf_UninterpretedOption** google_protobuf_MethodOptions_resize_uninterpreted_option(google_protobuf_MethodOptions* msg, size_t len, upb_Arena* arena) {
+ return (google_protobuf_UninterpretedOption**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_MethodOptions_add_uninterpreted_option(google_protobuf_MethodOptions *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UninterpretedOption* google_protobuf_MethodOptions_add_uninterpreted_option(google_protobuf_MethodOptions* msg, upb_Arena* arena) {
struct google_protobuf_UninterpretedOption* sub = (struct google_protobuf_UninterpretedOption*)_upb_Message_New(&google_protobuf_UninterpretedOption_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 16), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -1992,75 +2700,121 @@ UPB_INLINE google_protobuf_UninterpretedOption* google_protobuf_UninterpretedOpt
return ret;
}
UPB_INLINE char* google_protobuf_UninterpretedOption_serialize(const google_protobuf_UninterpretedOption* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_UninterpretedOption_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_UninterpretedOption_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_UninterpretedOption_serialize_ex(const google_protobuf_UninterpretedOption* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_UninterpretedOption_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_UninterpretedOption_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_UninterpretedOption_has_name(const google_protobuf_UninterpretedOption* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void google_protobuf_UninterpretedOption_clear_name(const google_protobuf_UninterpretedOption* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const google_protobuf_UninterpretedOption_NamePart* const* google_protobuf_UninterpretedOption_name(const google_protobuf_UninterpretedOption* msg, size_t* len) {
+ return (const google_protobuf_UninterpretedOption_NamePart* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool google_protobuf_UninterpretedOption_has_identifier_value(const google_protobuf_UninterpretedOption* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_UninterpretedOption_clear_identifier_value(const google_protobuf_UninterpretedOption* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_UninterpretedOption_has_name(const google_protobuf_UninterpretedOption *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(56, 80)); }
-UPB_INLINE const google_protobuf_UninterpretedOption_NamePart* const* google_protobuf_UninterpretedOption_name(const google_protobuf_UninterpretedOption *msg, size_t *len) { return (const google_protobuf_UninterpretedOption_NamePart* const*)_upb_array_accessor(msg, UPB_SIZE(56, 80), len); }
-UPB_INLINE bool google_protobuf_UninterpretedOption_has_identifier_value(const google_protobuf_UninterpretedOption *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE upb_StringView google_protobuf_UninterpretedOption_identifier_value(const google_protobuf_UninterpretedOption* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
+}
+UPB_INLINE bool google_protobuf_UninterpretedOption_has_positive_int_value(const google_protobuf_UninterpretedOption* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_UninterpretedOption_clear_positive_int_value(const google_protobuf_UninterpretedOption* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), uint64_t) = 0;
+ _upb_clearhas(msg, 2);
}
-UPB_INLINE bool google_protobuf_UninterpretedOption_has_positive_int_value(const google_protobuf_UninterpretedOption *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE uint64_t google_protobuf_UninterpretedOption_positive_int_value(const google_protobuf_UninterpretedOption* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 64), uint64_t);
+}
+UPB_INLINE bool google_protobuf_UninterpretedOption_has_negative_int_value(const google_protobuf_UninterpretedOption* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void google_protobuf_UninterpretedOption_clear_negative_int_value(const google_protobuf_UninterpretedOption* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), int64_t) = 0;
+ _upb_clearhas(msg, 3);
}
-UPB_INLINE bool google_protobuf_UninterpretedOption_has_negative_int_value(const google_protobuf_UninterpretedOption *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE int64_t google_protobuf_UninterpretedOption_negative_int_value(const google_protobuf_UninterpretedOption* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), int64_t);
+}
+UPB_INLINE bool google_protobuf_UninterpretedOption_has_double_value(const google_protobuf_UninterpretedOption* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void google_protobuf_UninterpretedOption_clear_double_value(const google_protobuf_UninterpretedOption* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 80), double) = 0;
+ _upb_clearhas(msg, 4);
}
-UPB_INLINE bool google_protobuf_UninterpretedOption_has_double_value(const google_protobuf_UninterpretedOption *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE double google_protobuf_UninterpretedOption_double_value(const google_protobuf_UninterpretedOption* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), double);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 80), double);
+}
+UPB_INLINE bool google_protobuf_UninterpretedOption_has_string_value(const google_protobuf_UninterpretedOption* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void google_protobuf_UninterpretedOption_clear_string_value(const google_protobuf_UninterpretedOption* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 5);
}
-UPB_INLINE bool google_protobuf_UninterpretedOption_has_string_value(const google_protobuf_UninterpretedOption *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE upb_StringView google_protobuf_UninterpretedOption_string_value(const google_protobuf_UninterpretedOption* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 48), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView);
+}
+UPB_INLINE bool google_protobuf_UninterpretedOption_has_aggregate_value(const google_protobuf_UninterpretedOption* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void google_protobuf_UninterpretedOption_clear_aggregate_value(const google_protobuf_UninterpretedOption* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 6);
}
-UPB_INLINE bool google_protobuf_UninterpretedOption_has_aggregate_value(const google_protobuf_UninterpretedOption *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE upb_StringView google_protobuf_UninterpretedOption_aggregate_value(const google_protobuf_UninterpretedOption* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 64), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView);
}
-UPB_INLINE google_protobuf_UninterpretedOption_NamePart** google_protobuf_UninterpretedOption_mutable_name(google_protobuf_UninterpretedOption *msg, size_t *len) {
- return (google_protobuf_UninterpretedOption_NamePart**)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 80), len);
+UPB_INLINE google_protobuf_UninterpretedOption_NamePart** google_protobuf_UninterpretedOption_mutable_name(google_protobuf_UninterpretedOption* msg, size_t* len) {
+ return (google_protobuf_UninterpretedOption_NamePart**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE google_protobuf_UninterpretedOption_NamePart** google_protobuf_UninterpretedOption_resize_name(google_protobuf_UninterpretedOption *msg, size_t len, upb_Arena *arena) {
- return (google_protobuf_UninterpretedOption_NamePart**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 80), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE google_protobuf_UninterpretedOption_NamePart** google_protobuf_UninterpretedOption_resize_name(google_protobuf_UninterpretedOption* msg, size_t len, upb_Arena* arena) {
+ return (google_protobuf_UninterpretedOption_NamePart**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_UninterpretedOption_NamePart* google_protobuf_UninterpretedOption_add_name(google_protobuf_UninterpretedOption *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_UninterpretedOption_NamePart* google_protobuf_UninterpretedOption_add_name(google_protobuf_UninterpretedOption* msg, upb_Arena* arena) {
struct google_protobuf_UninterpretedOption_NamePart* sub = (struct google_protobuf_UninterpretedOption_NamePart*)_upb_Message_New(&google_protobuf_UninterpretedOption_NamePart_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(56, 80), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void google_protobuf_UninterpretedOption_set_identifier_value(google_protobuf_UninterpretedOption *msg, upb_StringView value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 32), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
UPB_INLINE void google_protobuf_UninterpretedOption_set_positive_int_value(google_protobuf_UninterpretedOption *msg, uint64_t value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 64), uint64_t) = value;
}
UPB_INLINE void google_protobuf_UninterpretedOption_set_negative_int_value(google_protobuf_UninterpretedOption *msg, int64_t value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), int64_t) = value;
}
UPB_INLINE void google_protobuf_UninterpretedOption_set_double_value(google_protobuf_UninterpretedOption *msg, double value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), double) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 80), double) = value;
}
UPB_INLINE void google_protobuf_UninterpretedOption_set_string_value(google_protobuf_UninterpretedOption *msg, upb_StringView value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 48), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = value;
}
UPB_INLINE void google_protobuf_UninterpretedOption_set_aggregate_value(google_protobuf_UninterpretedOption *msg, upb_StringView value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 64), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), upb_StringView) = value;
}
/* google.protobuf.UninterpretedOption.NamePart */
@@ -2088,17 +2842,33 @@ UPB_INLINE google_protobuf_UninterpretedOption_NamePart* google_protobuf_Uninter
return ret;
}
UPB_INLINE char* google_protobuf_UninterpretedOption_NamePart_serialize(const google_protobuf_UninterpretedOption_NamePart* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_UninterpretedOption_NamePart_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_UninterpretedOption_NamePart_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_UninterpretedOption_NamePart_serialize_ex(const google_protobuf_UninterpretedOption_NamePart* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_UninterpretedOption_NamePart_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_UninterpretedOption_NamePart_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_UninterpretedOption_NamePart_has_name_part(const google_protobuf_UninterpretedOption_NamePart* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_UninterpretedOption_NamePart_clear_name_part(const google_protobuf_UninterpretedOption_NamePart* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool google_protobuf_UninterpretedOption_NamePart_has_name_part(const google_protobuf_UninterpretedOption_NamePart *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE upb_StringView google_protobuf_UninterpretedOption_NamePart_name_part(const google_protobuf_UninterpretedOption_NamePart* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool google_protobuf_UninterpretedOption_NamePart_has_is_extension(const google_protobuf_UninterpretedOption_NamePart *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool google_protobuf_UninterpretedOption_NamePart_has_is_extension(const google_protobuf_UninterpretedOption_NamePart* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_UninterpretedOption_NamePart_clear_is_extension(const google_protobuf_UninterpretedOption_NamePart* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE bool google_protobuf_UninterpretedOption_NamePart_is_extension(const google_protobuf_UninterpretedOption_NamePart* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
@@ -2137,25 +2907,35 @@ UPB_INLINE google_protobuf_SourceCodeInfo* google_protobuf_SourceCodeInfo_parse_
return ret;
}
UPB_INLINE char* google_protobuf_SourceCodeInfo_serialize(const google_protobuf_SourceCodeInfo* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_SourceCodeInfo_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_SourceCodeInfo_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_SourceCodeInfo_serialize_ex(const google_protobuf_SourceCodeInfo* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_SourceCodeInfo_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_SourceCodeInfo_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_SourceCodeInfo_has_location(const google_protobuf_SourceCodeInfo* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void google_protobuf_SourceCodeInfo_clear_location(const google_protobuf_SourceCodeInfo* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const google_protobuf_SourceCodeInfo_Location* const* google_protobuf_SourceCodeInfo_location(const google_protobuf_SourceCodeInfo* msg, size_t* len) {
+ return (const google_protobuf_SourceCodeInfo_Location* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool google_protobuf_SourceCodeInfo_has_location(const google_protobuf_SourceCodeInfo *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const google_protobuf_SourceCodeInfo_Location* const* google_protobuf_SourceCodeInfo_location(const google_protobuf_SourceCodeInfo *msg, size_t *len) { return (const google_protobuf_SourceCodeInfo_Location* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE google_protobuf_SourceCodeInfo_Location** google_protobuf_SourceCodeInfo_mutable_location(google_protobuf_SourceCodeInfo *msg, size_t *len) {
+UPB_INLINE google_protobuf_SourceCodeInfo_Location** google_protobuf_SourceCodeInfo_mutable_location(google_protobuf_SourceCodeInfo* msg, size_t* len) {
return (google_protobuf_SourceCodeInfo_Location**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE google_protobuf_SourceCodeInfo_Location** google_protobuf_SourceCodeInfo_resize_location(google_protobuf_SourceCodeInfo *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_protobuf_SourceCodeInfo_Location** google_protobuf_SourceCodeInfo_resize_location(google_protobuf_SourceCodeInfo* msg, size_t len, upb_Arena* arena) {
return (google_protobuf_SourceCodeInfo_Location**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_SourceCodeInfo_Location* google_protobuf_SourceCodeInfo_add_location(google_protobuf_SourceCodeInfo *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_SourceCodeInfo_Location* google_protobuf_SourceCodeInfo_add_location(google_protobuf_SourceCodeInfo* msg, upb_Arena* arena) {
struct google_protobuf_SourceCodeInfo_Location* sub = (struct google_protobuf_SourceCodeInfo_Location*)_upb_Message_New(&google_protobuf_SourceCodeInfo_Location_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -2185,61 +2965,89 @@ UPB_INLINE google_protobuf_SourceCodeInfo_Location* google_protobuf_SourceCodeIn
return ret;
}
UPB_INLINE char* google_protobuf_SourceCodeInfo_Location_serialize(const google_protobuf_SourceCodeInfo_Location* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_SourceCodeInfo_Location_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_SourceCodeInfo_Location_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_SourceCodeInfo_Location_serialize_ex(const google_protobuf_SourceCodeInfo_Location* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_SourceCodeInfo_Location_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_SourceCodeInfo_Location_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_protobuf_SourceCodeInfo_Location_clear_path(const google_protobuf_SourceCodeInfo_Location* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE int32_t const* google_protobuf_SourceCodeInfo_Location_path(const google_protobuf_SourceCodeInfo_Location* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE void google_protobuf_SourceCodeInfo_Location_clear_span(const google_protobuf_SourceCodeInfo_Location* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE int32_t const* google_protobuf_SourceCodeInfo_Location_span(const google_protobuf_SourceCodeInfo_Location* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool google_protobuf_SourceCodeInfo_Location_has_leading_comments(const google_protobuf_SourceCodeInfo_Location* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_SourceCodeInfo_Location_clear_leading_comments(const google_protobuf_SourceCodeInfo_Location* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE int32_t const* google_protobuf_SourceCodeInfo_Location_path(const google_protobuf_SourceCodeInfo_Location *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(20, 40), len); }
-UPB_INLINE int32_t const* google_protobuf_SourceCodeInfo_Location_span(const google_protobuf_SourceCodeInfo_Location *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len); }
-UPB_INLINE bool google_protobuf_SourceCodeInfo_Location_has_leading_comments(const google_protobuf_SourceCodeInfo_Location *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE upb_StringView google_protobuf_SourceCodeInfo_Location_leading_comments(const google_protobuf_SourceCodeInfo_Location* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+}
+UPB_INLINE bool google_protobuf_SourceCodeInfo_Location_has_trailing_comments(const google_protobuf_SourceCodeInfo_Location* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_SourceCodeInfo_Location_clear_trailing_comments(const google_protobuf_SourceCodeInfo_Location* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 2);
}
-UPB_INLINE bool google_protobuf_SourceCodeInfo_Location_has_trailing_comments(const google_protobuf_SourceCodeInfo_Location *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE upb_StringView google_protobuf_SourceCodeInfo_Location_trailing_comments(const google_protobuf_SourceCodeInfo_Location* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+}
+UPB_INLINE void google_protobuf_SourceCodeInfo_Location_clear_leading_detached_comments(const google_protobuf_SourceCodeInfo_Location* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE upb_StringView const* google_protobuf_SourceCodeInfo_Location_leading_detached_comments(const google_protobuf_SourceCodeInfo_Location* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len);
}
-UPB_INLINE upb_StringView const* google_protobuf_SourceCodeInfo_Location_leading_detached_comments(const google_protobuf_SourceCodeInfo_Location *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len); }
-UPB_INLINE int32_t* google_protobuf_SourceCodeInfo_Location_mutable_path(google_protobuf_SourceCodeInfo_Location *msg, size_t *len) {
- return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 40), len);
+UPB_INLINE int32_t* google_protobuf_SourceCodeInfo_Location_mutable_path(google_protobuf_SourceCodeInfo_Location* msg, size_t* len) {
+ return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE int32_t* google_protobuf_SourceCodeInfo_Location_resize_path(google_protobuf_SourceCodeInfo_Location *msg, size_t len, upb_Arena *arena) {
- return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 40), len, 2, arena);
+UPB_INLINE int32_t* google_protobuf_SourceCodeInfo_Location_resize_path(google_protobuf_SourceCodeInfo_Location* msg, size_t len, upb_Arena* arena) {
+ return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, 2, arena);
}
-UPB_INLINE bool google_protobuf_SourceCodeInfo_Location_add_path(google_protobuf_SourceCodeInfo_Location *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 40), 2, &val,
- arena);
+UPB_INLINE bool google_protobuf_SourceCodeInfo_Location_add_path(google_protobuf_SourceCodeInfo_Location* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), 2, &val, arena);
}
-UPB_INLINE int32_t* google_protobuf_SourceCodeInfo_Location_mutable_span(google_protobuf_SourceCodeInfo_Location *msg, size_t *len) {
- return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
+UPB_INLINE int32_t* google_protobuf_SourceCodeInfo_Location_mutable_span(google_protobuf_SourceCodeInfo_Location* msg, size_t* len) {
+ return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE int32_t* google_protobuf_SourceCodeInfo_Location_resize_span(google_protobuf_SourceCodeInfo_Location *msg, size_t len, upb_Arena *arena) {
- return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, 2, arena);
+UPB_INLINE int32_t* google_protobuf_SourceCodeInfo_Location_resize_span(google_protobuf_SourceCodeInfo_Location* msg, size_t len, upb_Arena* arena) {
+ return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, 2, arena);
}
-UPB_INLINE bool google_protobuf_SourceCodeInfo_Location_add_span(google_protobuf_SourceCodeInfo_Location *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 48), 2, &val,
- arena);
+UPB_INLINE bool google_protobuf_SourceCodeInfo_Location_add_span(google_protobuf_SourceCodeInfo_Location* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), 2, &val, arena);
}
UPB_INLINE void google_protobuf_SourceCodeInfo_Location_set_leading_comments(google_protobuf_SourceCodeInfo_Location *msg, upb_StringView value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
}
UPB_INLINE void google_protobuf_SourceCodeInfo_Location_set_trailing_comments(google_protobuf_SourceCodeInfo_Location *msg, upb_StringView value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
}
-UPB_INLINE upb_StringView* google_protobuf_SourceCodeInfo_Location_mutable_leading_detached_comments(google_protobuf_SourceCodeInfo_Location *msg, size_t *len) {
+UPB_INLINE upb_StringView* google_protobuf_SourceCodeInfo_Location_mutable_leading_detached_comments(google_protobuf_SourceCodeInfo_Location* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
}
-UPB_INLINE upb_StringView* google_protobuf_SourceCodeInfo_Location_resize_leading_detached_comments(google_protobuf_SourceCodeInfo_Location *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* google_protobuf_SourceCodeInfo_Location_resize_leading_detached_comments(google_protobuf_SourceCodeInfo_Location* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool google_protobuf_SourceCodeInfo_Location_add_leading_detached_comments(google_protobuf_SourceCodeInfo_Location *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 56), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool google_protobuf_SourceCodeInfo_Location_add_leading_detached_comments(google_protobuf_SourceCodeInfo_Location* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 56), UPB_SIZE(3, 4), &val, arena);
}
/* google.protobuf.GeneratedCodeInfo */
@@ -2267,25 +3075,35 @@ UPB_INLINE google_protobuf_GeneratedCodeInfo* google_protobuf_GeneratedCodeInfo_
return ret;
}
UPB_INLINE char* google_protobuf_GeneratedCodeInfo_serialize(const google_protobuf_GeneratedCodeInfo* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_GeneratedCodeInfo_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_GeneratedCodeInfo_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_GeneratedCodeInfo_serialize_ex(const google_protobuf_GeneratedCodeInfo* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_GeneratedCodeInfo_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_GeneratedCodeInfo_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_GeneratedCodeInfo_has_annotation(const google_protobuf_GeneratedCodeInfo* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void google_protobuf_GeneratedCodeInfo_clear_annotation(const google_protobuf_GeneratedCodeInfo* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const google_protobuf_GeneratedCodeInfo_Annotation* const* google_protobuf_GeneratedCodeInfo_annotation(const google_protobuf_GeneratedCodeInfo* msg, size_t* len) {
+ return (const google_protobuf_GeneratedCodeInfo_Annotation* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool google_protobuf_GeneratedCodeInfo_has_annotation(const google_protobuf_GeneratedCodeInfo *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const google_protobuf_GeneratedCodeInfo_Annotation* const* google_protobuf_GeneratedCodeInfo_annotation(const google_protobuf_GeneratedCodeInfo *msg, size_t *len) { return (const google_protobuf_GeneratedCodeInfo_Annotation* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE google_protobuf_GeneratedCodeInfo_Annotation** google_protobuf_GeneratedCodeInfo_mutable_annotation(google_protobuf_GeneratedCodeInfo *msg, size_t *len) {
+UPB_INLINE google_protobuf_GeneratedCodeInfo_Annotation** google_protobuf_GeneratedCodeInfo_mutable_annotation(google_protobuf_GeneratedCodeInfo* msg, size_t* len) {
return (google_protobuf_GeneratedCodeInfo_Annotation**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE google_protobuf_GeneratedCodeInfo_Annotation** google_protobuf_GeneratedCodeInfo_resize_annotation(google_protobuf_GeneratedCodeInfo *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_protobuf_GeneratedCodeInfo_Annotation** google_protobuf_GeneratedCodeInfo_resize_annotation(google_protobuf_GeneratedCodeInfo* msg, size_t len, upb_Arena* arena) {
return (google_protobuf_GeneratedCodeInfo_Annotation**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_GeneratedCodeInfo_Annotation* google_protobuf_GeneratedCodeInfo_add_annotation(google_protobuf_GeneratedCodeInfo *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_GeneratedCodeInfo_Annotation* google_protobuf_GeneratedCodeInfo_add_annotation(google_protobuf_GeneratedCodeInfo* msg, upb_Arena* arena) {
struct google_protobuf_GeneratedCodeInfo_Annotation* sub = (struct google_protobuf_GeneratedCodeInfo_Annotation*)_upb_Message_New(&google_protobuf_GeneratedCodeInfo_Annotation_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -2315,39 +3133,65 @@ UPB_INLINE google_protobuf_GeneratedCodeInfo_Annotation* google_protobuf_Generat
return ret;
}
UPB_INLINE char* google_protobuf_GeneratedCodeInfo_Annotation_serialize(const google_protobuf_GeneratedCodeInfo_Annotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_GeneratedCodeInfo_Annotation_serialize_ex(const google_protobuf_GeneratedCodeInfo_Annotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_GeneratedCodeInfo_Annotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_protobuf_GeneratedCodeInfo_Annotation_clear_path(const google_protobuf_GeneratedCodeInfo_Annotation* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE int32_t const* google_protobuf_GeneratedCodeInfo_Annotation_path(const google_protobuf_GeneratedCodeInfo_Annotation* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len);
+}
+UPB_INLINE bool google_protobuf_GeneratedCodeInfo_Annotation_has_source_file(const google_protobuf_GeneratedCodeInfo_Annotation* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void google_protobuf_GeneratedCodeInfo_Annotation_clear_source_file(const google_protobuf_GeneratedCodeInfo_Annotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE int32_t const* google_protobuf_GeneratedCodeInfo_Annotation_path(const google_protobuf_GeneratedCodeInfo_Annotation *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(20, 32), len); }
-UPB_INLINE bool google_protobuf_GeneratedCodeInfo_Annotation_has_source_file(const google_protobuf_GeneratedCodeInfo_Annotation *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE upb_StringView google_protobuf_GeneratedCodeInfo_Annotation_source_file(const google_protobuf_GeneratedCodeInfo_Annotation* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+}
+UPB_INLINE bool google_protobuf_GeneratedCodeInfo_Annotation_has_begin(const google_protobuf_GeneratedCodeInfo_Annotation* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void google_protobuf_GeneratedCodeInfo_Annotation_clear_begin(const google_protobuf_GeneratedCodeInfo_Annotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+ _upb_clearhas(msg, 2);
}
-UPB_INLINE bool google_protobuf_GeneratedCodeInfo_Annotation_has_begin(const google_protobuf_GeneratedCodeInfo_Annotation *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE int32_t google_protobuf_GeneratedCodeInfo_Annotation_begin(const google_protobuf_GeneratedCodeInfo_Annotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool google_protobuf_GeneratedCodeInfo_Annotation_has_end(const google_protobuf_GeneratedCodeInfo_Annotation *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool google_protobuf_GeneratedCodeInfo_Annotation_has_end(const google_protobuf_GeneratedCodeInfo_Annotation* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void google_protobuf_GeneratedCodeInfo_Annotation_clear_end(const google_protobuf_GeneratedCodeInfo_Annotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
+ _upb_clearhas(msg, 3);
+}
UPB_INLINE int32_t google_protobuf_GeneratedCodeInfo_Annotation_end(const google_protobuf_GeneratedCodeInfo_Annotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
-UPB_INLINE int32_t* google_protobuf_GeneratedCodeInfo_Annotation_mutable_path(google_protobuf_GeneratedCodeInfo_Annotation *msg, size_t *len) {
- return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 32), len);
+UPB_INLINE int32_t* google_protobuf_GeneratedCodeInfo_Annotation_mutable_path(google_protobuf_GeneratedCodeInfo_Annotation* msg, size_t* len) {
+ return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 16), len);
}
-UPB_INLINE int32_t* google_protobuf_GeneratedCodeInfo_Annotation_resize_path(google_protobuf_GeneratedCodeInfo_Annotation *msg, size_t len, upb_Arena *arena) {
- return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 32), len, 2, arena);
+UPB_INLINE int32_t* google_protobuf_GeneratedCodeInfo_Annotation_resize_path(google_protobuf_GeneratedCodeInfo_Annotation* msg, size_t len, upb_Arena* arena) {
+ return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 16), len, 2, arena);
}
-UPB_INLINE bool google_protobuf_GeneratedCodeInfo_Annotation_add_path(google_protobuf_GeneratedCodeInfo_Annotation *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 32), 2, &val,
- arena);
+UPB_INLINE bool google_protobuf_GeneratedCodeInfo_Annotation_add_path(google_protobuf_GeneratedCodeInfo_Annotation* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 16), 2, &val, arena);
}
UPB_INLINE void google_protobuf_GeneratedCodeInfo_Annotation_set_source_file(google_protobuf_GeneratedCodeInfo_Annotation *msg, upb_StringView value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
}
UPB_INLINE void google_protobuf_GeneratedCodeInfo_Annotation_set_begin(google_protobuf_GeneratedCodeInfo_Annotation *msg, int32_t value) {
_upb_sethas(msg, 2);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/duration.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/duration.upb.c
index 65f878f3d9..d95bb374ef 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/duration.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/duration.upb.c
@@ -13,14 +13,14 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field google_protobuf_Duration__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_Duration_msginit = {
NULL,
&google_protobuf_Duration__fields[0],
- UPB_SIZE(16, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/duration.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/duration.upb.h
index 1410703e6c..e766862e77 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/duration.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/duration.upb.h
@@ -51,24 +51,34 @@ UPB_INLINE google_protobuf_Duration* google_protobuf_Duration_parse_ex(const cha
return ret;
}
UPB_INLINE char* google_protobuf_Duration_serialize(const google_protobuf_Duration* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Duration_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Duration_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_Duration_serialize_ex(const google_protobuf_Duration* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Duration_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Duration_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_protobuf_Duration_clear_seconds(const google_protobuf_Duration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t) = 0;
}
UPB_INLINE int64_t google_protobuf_Duration_seconds(const google_protobuf_Duration* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t);
+}
+UPB_INLINE void google_protobuf_Duration_clear_nanos(const google_protobuf_Duration* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
UPB_INLINE int32_t google_protobuf_Duration_nanos(const google_protobuf_Duration* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
UPB_INLINE void google_protobuf_Duration_set_seconds(google_protobuf_Duration *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t) = value;
}
UPB_INLINE void google_protobuf_Duration_set_nanos(google_protobuf_Duration *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
}
extern const upb_MiniTable_File google_protobuf_duration_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/empty.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/empty.upb.c
index 95776dd9af..0baf7664ab 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/empty.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/empty.upb.c
@@ -15,7 +15,7 @@
const upb_MiniTable google_protobuf_Empty_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/empty.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/empty.upb.h
index 0194b9aa33..477ef00699 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/empty.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/empty.upb.h
@@ -51,11 +51,15 @@ UPB_INLINE google_protobuf_Empty* google_protobuf_Empty_parse_ex(const char* buf
return ret;
}
UPB_INLINE char* google_protobuf_Empty_serialize(const google_protobuf_Empty* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Empty_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Empty_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_Empty_serialize_ex(const google_protobuf_Empty* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Empty_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Empty_msginit, options, arena, &ptr, len);
+ return ptr;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/struct.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/struct.upb.c
index b0ae247353..5183b64e5e 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/struct.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/struct.upb.c
@@ -17,13 +17,13 @@ static const upb_MiniTable_Sub google_protobuf_Struct_submsgs[1] = {
};
static const upb_MiniTable_Field google_protobuf_Struct__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_Struct_msginit = {
&google_protobuf_Struct_submsgs[0],
&google_protobuf_Struct__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_Struct_FieldsEntry_submsgs[1] = {
@@ -31,34 +31,34 @@ static const upb_MiniTable_Sub google_protobuf_Struct_FieldsEntry_submsgs[1] = {
};
static const upb_MiniTable_Field google_protobuf_Struct_FieldsEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_Struct_FieldsEntry_msginit = {
&google_protobuf_Struct_FieldsEntry_submsgs[0],
&google_protobuf_Struct_FieldsEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_Value_submsgs[2] = {
- {.submsg = &google_protobuf_ListValue_msginit},
{.submsg = &google_protobuf_Struct_msginit},
+ {.submsg = &google_protobuf_ListValue_msginit},
};
static const upb_MiniTable_Field google_protobuf_Value__fields[6] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(8, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_Value_msginit = {
&google_protobuf_Value_submsgs[0],
&google_protobuf_Value__fields[0],
- UPB_SIZE(16, 32), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(16, 24), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable_Sub google_protobuf_ListValue_submsgs[1] = {
@@ -66,13 +66,13 @@ static const upb_MiniTable_Sub google_protobuf_ListValue_submsgs[1] = {
};
static const upb_MiniTable_Field google_protobuf_ListValue__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_ListValue_msginit = {
&google_protobuf_ListValue_submsgs[0],
&google_protobuf_ListValue__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[4] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/struct.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/struct.upb.h
index 9f9074e26d..d4ec05bc7e 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/struct.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/struct.upb.h
@@ -64,31 +64,54 @@ UPB_INLINE google_protobuf_Struct* google_protobuf_Struct_parse_ex(const char* b
return ret;
}
UPB_INLINE char* google_protobuf_Struct_serialize(const google_protobuf_Struct* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Struct_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Struct_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_Struct_serialize_ex(const google_protobuf_Struct* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Struct_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Struct_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_Struct_has_fields(const google_protobuf_Struct* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void google_protobuf_Struct_clear_fields(const google_protobuf_Struct* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE size_t google_protobuf_Struct_fields_size(const google_protobuf_Struct* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE bool google_protobuf_Struct_fields_get(const google_protobuf_Struct* msg, upb_StringView key, google_protobuf_Value** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(0, 0), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const google_protobuf_Struct_FieldsEntry* google_protobuf_Struct_fields_next(const google_protobuf_Struct* msg, size_t* iter) {
+ return (const google_protobuf_Struct_FieldsEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter);
}
-UPB_INLINE bool google_protobuf_Struct_has_fields(const google_protobuf_Struct *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE size_t google_protobuf_Struct_fields_size(const google_protobuf_Struct *msg) {return _upb_msg_map_size(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE bool google_protobuf_Struct_fields_get(const google_protobuf_Struct *msg, upb_StringView key, google_protobuf_Value* *val) { return _upb_msg_map_get(msg, UPB_SIZE(0, 0), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const google_protobuf_Struct_FieldsEntry* google_protobuf_Struct_fields_next(const google_protobuf_Struct *msg, size_t* iter) { return (const google_protobuf_Struct_FieldsEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter); }
-UPB_INLINE void google_protobuf_Struct_fields_clear(google_protobuf_Struct *msg) { _upb_msg_map_clear(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE bool google_protobuf_Struct_fields_set(google_protobuf_Struct *msg, upb_StringView key, google_protobuf_Value* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(0, 0), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool google_protobuf_Struct_fields_delete(google_protobuf_Struct *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(0, 0), &key, 0); }
-UPB_INLINE google_protobuf_Struct_FieldsEntry* google_protobuf_Struct_fields_nextmutable(google_protobuf_Struct *msg, size_t* iter) { return (google_protobuf_Struct_FieldsEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter); }
+UPB_INLINE void google_protobuf_Struct_fields_clear(google_protobuf_Struct* msg) { _upb_msg_map_clear(msg, UPB_SIZE(0, 0)); }
+UPB_INLINE bool google_protobuf_Struct_fields_set(google_protobuf_Struct* msg, upb_StringView key, google_protobuf_Value* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(0, 0), &key, 0, &val, sizeof(val), a);
+}
+UPB_INLINE bool google_protobuf_Struct_fields_delete(google_protobuf_Struct* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(0, 0), &key, 0);
+}
+UPB_INLINE google_protobuf_Struct_FieldsEntry* google_protobuf_Struct_fields_nextmutable(google_protobuf_Struct* msg, size_t* iter) {
+ return (google_protobuf_Struct_FieldsEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter);
+}
/* google.protobuf.Struct.FieldsEntry */
-UPB_INLINE upb_StringView google_protobuf_Struct_FieldsEntry_key(const google_protobuf_Struct_FieldsEntry *msg) {
+UPB_INLINE upb_StringView google_protobuf_Struct_FieldsEntry_key(const google_protobuf_Struct_FieldsEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE bool google_protobuf_Struct_FieldsEntry_has_value(const google_protobuf_Struct_FieldsEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const google_protobuf_Value* google_protobuf_Struct_FieldsEntry_value(const google_protobuf_Struct_FieldsEntry *msg) {
+UPB_INLINE bool google_protobuf_Struct_FieldsEntry_has_value(const google_protobuf_Struct_FieldsEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const google_protobuf_Value* google_protobuf_Struct_FieldsEntry_value(const google_protobuf_Struct_FieldsEntry* msg) {
google_protobuf_Value* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -123,11 +146,15 @@ UPB_INLINE google_protobuf_Value* google_protobuf_Value_parse_ex(const char* buf
return ret;
}
UPB_INLINE char* google_protobuf_Value_serialize(const google_protobuf_Value* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Value_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Value_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_Value_serialize_ex(const google_protobuf_Value* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Value_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Value_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
google_protobuf_Value_kind_null_value = 1,
@@ -138,37 +165,80 @@ typedef enum {
google_protobuf_Value_kind_list_value = 6,
google_protobuf_Value_kind_NOT_SET = 0
} google_protobuf_Value_kind_oneofcases;
-UPB_INLINE google_protobuf_Value_kind_oneofcases google_protobuf_Value_kind_case(const google_protobuf_Value* msg) { return (google_protobuf_Value_kind_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool google_protobuf_Value_has_null_value(const google_protobuf_Value *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE int32_t google_protobuf_Value_null_value(const google_protobuf_Value *msg) { return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, 0); }
-UPB_INLINE bool google_protobuf_Value_has_number_value(const google_protobuf_Value *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 2; }
-UPB_INLINE double google_protobuf_Value_number_value(const google_protobuf_Value *msg) { return UPB_READ_ONEOF(msg, double, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 2, 0); }
-UPB_INLINE bool google_protobuf_Value_has_string_value(const google_protobuf_Value *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 3; }
-UPB_INLINE upb_StringView google_protobuf_Value_string_value(const google_protobuf_Value *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 3, upb_StringView_FromString("")); }
-UPB_INLINE bool google_protobuf_Value_has_bool_value(const google_protobuf_Value *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 4; }
-UPB_INLINE bool google_protobuf_Value_bool_value(const google_protobuf_Value *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 4, false); }
-UPB_INLINE bool google_protobuf_Value_has_struct_value(const google_protobuf_Value *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 5; }
-UPB_INLINE const google_protobuf_Struct* google_protobuf_Value_struct_value(const google_protobuf_Value *msg) { return UPB_READ_ONEOF(msg, const google_protobuf_Struct*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 5, NULL); }
-UPB_INLINE bool google_protobuf_Value_has_list_value(const google_protobuf_Value *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 6; }
-UPB_INLINE const google_protobuf_ListValue* google_protobuf_Value_list_value(const google_protobuf_Value *msg) { return UPB_READ_ONEOF(msg, const google_protobuf_ListValue*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 6, NULL); }
+UPB_INLINE google_protobuf_Value_kind_oneofcases google_protobuf_Value_kind_case(const google_protobuf_Value* msg) {
+ return (google_protobuf_Value_kind_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool google_protobuf_Value_has_null_value(const google_protobuf_Value* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void google_protobuf_Value_clear_null_value(const google_protobuf_Value* msg) {
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(8, 8), 0, UPB_SIZE(0, 0), google_protobuf_Value_kind_NOT_SET);
+}
+UPB_INLINE int32_t google_protobuf_Value_null_value(const google_protobuf_Value* msg) {
+ return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 1, 0);
+}
+UPB_INLINE bool google_protobuf_Value_has_number_value(const google_protobuf_Value* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void google_protobuf_Value_clear_number_value(const google_protobuf_Value* msg) {
+ UPB_WRITE_ONEOF(msg, double, UPB_SIZE(8, 8), 0, UPB_SIZE(0, 0), google_protobuf_Value_kind_NOT_SET);
+}
+UPB_INLINE double google_protobuf_Value_number_value(const google_protobuf_Value* msg) {
+ return UPB_READ_ONEOF(msg, double, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 2, 0);
+}
+UPB_INLINE bool google_protobuf_Value_has_string_value(const google_protobuf_Value* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void google_protobuf_Value_clear_string_value(const google_protobuf_Value* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), google_protobuf_Value_kind_NOT_SET);
+}
+UPB_INLINE upb_StringView google_protobuf_Value_string_value(const google_protobuf_Value* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 3, upb_StringView_FromString(""));
+}
+UPB_INLINE bool google_protobuf_Value_has_bool_value(const google_protobuf_Value* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void google_protobuf_Value_clear_bool_value(const google_protobuf_Value* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(8, 8), 0, UPB_SIZE(0, 0), google_protobuf_Value_kind_NOT_SET);
+}
+UPB_INLINE bool google_protobuf_Value_bool_value(const google_protobuf_Value* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 4, false);
+}
+UPB_INLINE bool google_protobuf_Value_has_struct_value(const google_protobuf_Value* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 5;
+}
+UPB_INLINE void google_protobuf_Value_clear_struct_value(const google_protobuf_Value* msg) {
+ UPB_WRITE_ONEOF(msg, google_protobuf_Struct*, UPB_SIZE(8, 8), 0, UPB_SIZE(0, 0), google_protobuf_Value_kind_NOT_SET);
+}
+UPB_INLINE const google_protobuf_Struct* google_protobuf_Value_struct_value(const google_protobuf_Value* msg) {
+ return UPB_READ_ONEOF(msg, const google_protobuf_Struct*, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 5, NULL);
+}
+UPB_INLINE bool google_protobuf_Value_has_list_value(const google_protobuf_Value* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 6;
+}
+UPB_INLINE void google_protobuf_Value_clear_list_value(const google_protobuf_Value* msg) {
+ UPB_WRITE_ONEOF(msg, google_protobuf_ListValue*, UPB_SIZE(8, 8), 0, UPB_SIZE(0, 0), google_protobuf_Value_kind_NOT_SET);
+}
+UPB_INLINE const google_protobuf_ListValue* google_protobuf_Value_list_value(const google_protobuf_Value* msg) {
+ return UPB_READ_ONEOF(msg, const google_protobuf_ListValue*, UPB_SIZE(8, 8), UPB_SIZE(0, 0), 6, NULL);
+}
UPB_INLINE void google_protobuf_Value_set_null_value(google_protobuf_Value *msg, int32_t value) {
- UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 1);
}
UPB_INLINE void google_protobuf_Value_set_number_value(google_protobuf_Value *msg, double value) {
- UPB_WRITE_ONEOF(msg, double, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 2);
+ UPB_WRITE_ONEOF(msg, double, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 2);
}
UPB_INLINE void google_protobuf_Value_set_string_value(google_protobuf_Value *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 3);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 3);
}
UPB_INLINE void google_protobuf_Value_set_bool_value(google_protobuf_Value *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 4);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 4);
}
UPB_INLINE void google_protobuf_Value_set_struct_value(google_protobuf_Value *msg, google_protobuf_Struct* value) {
- UPB_WRITE_ONEOF(msg, google_protobuf_Struct*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 5);
+ UPB_WRITE_ONEOF(msg, google_protobuf_Struct*, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 5);
}
-UPB_INLINE struct google_protobuf_Struct* google_protobuf_Value_mutable_struct_value(google_protobuf_Value *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Struct* google_protobuf_Value_mutable_struct_value(google_protobuf_Value* msg, upb_Arena* arena) {
struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)google_protobuf_Value_struct_value(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Struct*)_upb_Message_New(&google_protobuf_Struct_msginit, arena);
@@ -178,9 +248,9 @@ UPB_INLINE struct google_protobuf_Struct* google_protobuf_Value_mutable_struct_v
return sub;
}
UPB_INLINE void google_protobuf_Value_set_list_value(google_protobuf_Value *msg, google_protobuf_ListValue* value) {
- UPB_WRITE_ONEOF(msg, google_protobuf_ListValue*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 6);
+ UPB_WRITE_ONEOF(msg, google_protobuf_ListValue*, UPB_SIZE(8, 8), value, UPB_SIZE(0, 0), 6);
}
-UPB_INLINE struct google_protobuf_ListValue* google_protobuf_Value_mutable_list_value(google_protobuf_Value *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_ListValue* google_protobuf_Value_mutable_list_value(google_protobuf_Value* msg, upb_Arena* arena) {
struct google_protobuf_ListValue* sub = (struct google_protobuf_ListValue*)google_protobuf_Value_list_value(msg);
if (sub == NULL) {
sub = (struct google_protobuf_ListValue*)_upb_Message_New(&google_protobuf_ListValue_msginit, arena);
@@ -215,25 +285,35 @@ UPB_INLINE google_protobuf_ListValue* google_protobuf_ListValue_parse_ex(const c
return ret;
}
UPB_INLINE char* google_protobuf_ListValue_serialize(const google_protobuf_ListValue* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_ListValue_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_ListValue_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_ListValue_serialize_ex(const google_protobuf_ListValue* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_ListValue_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_ListValue_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool google_protobuf_ListValue_has_values(const google_protobuf_ListValue* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void google_protobuf_ListValue_clear_values(const google_protobuf_ListValue* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const google_protobuf_Value* const* google_protobuf_ListValue_values(const google_protobuf_ListValue* msg, size_t* len) {
+ return (const google_protobuf_Value* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool google_protobuf_ListValue_has_values(const google_protobuf_ListValue *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const google_protobuf_Value* const* google_protobuf_ListValue_values(const google_protobuf_ListValue *msg, size_t *len) { return (const google_protobuf_Value* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE google_protobuf_Value** google_protobuf_ListValue_mutable_values(google_protobuf_ListValue *msg, size_t *len) {
+UPB_INLINE google_protobuf_Value** google_protobuf_ListValue_mutable_values(google_protobuf_ListValue* msg, size_t* len) {
return (google_protobuf_Value**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE google_protobuf_Value** google_protobuf_ListValue_resize_values(google_protobuf_ListValue *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE google_protobuf_Value** google_protobuf_ListValue_resize_values(google_protobuf_ListValue* msg, size_t len, upb_Arena* arena) {
return (google_protobuf_Value**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_Value* google_protobuf_ListValue_add_values(google_protobuf_ListValue *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Value* google_protobuf_ListValue_add_values(google_protobuf_ListValue* msg, upb_Arena* arena) {
struct google_protobuf_Value* sub = (struct google_protobuf_Value*)_upb_Message_New(&google_protobuf_Value_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c
index 36bacdff97..5283d8c8a6 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c
@@ -13,14 +13,14 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field google_protobuf_Timestamp__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_Timestamp_msginit = {
NULL,
&google_protobuf_Timestamp__fields[0],
- UPB_SIZE(16, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h
index 6a4eed21e6..089a56cf60 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h
@@ -51,24 +51,34 @@ UPB_INLINE google_protobuf_Timestamp* google_protobuf_Timestamp_parse_ex(const c
return ret;
}
UPB_INLINE char* google_protobuf_Timestamp_serialize(const google_protobuf_Timestamp* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Timestamp_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Timestamp_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_Timestamp_serialize_ex(const google_protobuf_Timestamp* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Timestamp_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Timestamp_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_protobuf_Timestamp_clear_seconds(const google_protobuf_Timestamp* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t) = 0;
}
UPB_INLINE int64_t google_protobuf_Timestamp_seconds(const google_protobuf_Timestamp* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t);
+}
+UPB_INLINE void google_protobuf_Timestamp_clear_nanos(const google_protobuf_Timestamp* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
UPB_INLINE int32_t google_protobuf_Timestamp_nanos(const google_protobuf_Timestamp* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
UPB_INLINE void google_protobuf_Timestamp_set_seconds(google_protobuf_Timestamp *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t) = value;
}
UPB_INLINE void google_protobuf_Timestamp_set_nanos(google_protobuf_Timestamp *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
}
extern const upb_MiniTable_File google_protobuf_timestamp_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c
index 4c312ada00..6ac414ef1a 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c
@@ -13,93 +13,93 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field google_protobuf_DoubleValue__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_DoubleValue_msginit = {
NULL,
&google_protobuf_DoubleValue__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field google_protobuf_FloatValue__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 2, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 2, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_FloatValue_msginit = {
NULL,
&google_protobuf_FloatValue__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field google_protobuf_Int64Value__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_Int64Value_msginit = {
NULL,
&google_protobuf_Int64Value__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field google_protobuf_UInt64Value__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_UInt64Value_msginit = {
NULL,
&google_protobuf_UInt64Value__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field google_protobuf_Int32Value__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_Int32Value_msginit = {
NULL,
&google_protobuf_Int32Value__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field google_protobuf_UInt32Value__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_UInt32Value_msginit = {
NULL,
&google_protobuf_UInt32Value__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field google_protobuf_BoolValue__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_BoolValue_msginit = {
NULL,
&google_protobuf_BoolValue__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field google_protobuf_StringValue__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_StringValue_msginit = {
NULL,
&google_protobuf_StringValue__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field google_protobuf_BytesValue__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_protobuf_BytesValue_msginit = {
NULL,
&google_protobuf_BytesValue__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[9] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h
index 126b487d57..d730b28d80 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h
@@ -75,11 +75,18 @@ UPB_INLINE google_protobuf_DoubleValue* google_protobuf_DoubleValue_parse_ex(con
return ret;
}
UPB_INLINE char* google_protobuf_DoubleValue_serialize(const google_protobuf_DoubleValue* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_DoubleValue_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_DoubleValue_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_DoubleValue_serialize_ex(const google_protobuf_DoubleValue* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_DoubleValue_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_DoubleValue_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_protobuf_DoubleValue_clear_value(const google_protobuf_DoubleValue* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double) = 0;
}
UPB_INLINE double google_protobuf_DoubleValue_value(const google_protobuf_DoubleValue* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double);
@@ -114,11 +121,18 @@ UPB_INLINE google_protobuf_FloatValue* google_protobuf_FloatValue_parse_ex(const
return ret;
}
UPB_INLINE char* google_protobuf_FloatValue_serialize(const google_protobuf_FloatValue* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_FloatValue_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_FloatValue_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_FloatValue_serialize_ex(const google_protobuf_FloatValue* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_FloatValue_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_FloatValue_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_protobuf_FloatValue_clear_value(const google_protobuf_FloatValue* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), float) = 0;
}
UPB_INLINE float google_protobuf_FloatValue_value(const google_protobuf_FloatValue* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), float);
@@ -153,11 +167,18 @@ UPB_INLINE google_protobuf_Int64Value* google_protobuf_Int64Value_parse_ex(const
return ret;
}
UPB_INLINE char* google_protobuf_Int64Value_serialize(const google_protobuf_Int64Value* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Int64Value_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Int64Value_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_Int64Value_serialize_ex(const google_protobuf_Int64Value* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Int64Value_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Int64Value_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_protobuf_Int64Value_clear_value(const google_protobuf_Int64Value* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t) = 0;
}
UPB_INLINE int64_t google_protobuf_Int64Value_value(const google_protobuf_Int64Value* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t);
@@ -192,11 +213,18 @@ UPB_INLINE google_protobuf_UInt64Value* google_protobuf_UInt64Value_parse_ex(con
return ret;
}
UPB_INLINE char* google_protobuf_UInt64Value_serialize(const google_protobuf_UInt64Value* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_UInt64Value_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_UInt64Value_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_UInt64Value_serialize_ex(const google_protobuf_UInt64Value* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_UInt64Value_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_UInt64Value_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_protobuf_UInt64Value_clear_value(const google_protobuf_UInt64Value* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint64_t) = 0;
}
UPB_INLINE uint64_t google_protobuf_UInt64Value_value(const google_protobuf_UInt64Value* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint64_t);
@@ -231,11 +259,18 @@ UPB_INLINE google_protobuf_Int32Value* google_protobuf_Int32Value_parse_ex(const
return ret;
}
UPB_INLINE char* google_protobuf_Int32Value_serialize(const google_protobuf_Int32Value* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Int32Value_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Int32Value_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_Int32Value_serialize_ex(const google_protobuf_Int32Value* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_Int32Value_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_Int32Value_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_protobuf_Int32Value_clear_value(const google_protobuf_Int32Value* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
UPB_INLINE int32_t google_protobuf_Int32Value_value(const google_protobuf_Int32Value* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
@@ -270,11 +305,18 @@ UPB_INLINE google_protobuf_UInt32Value* google_protobuf_UInt32Value_parse_ex(con
return ret;
}
UPB_INLINE char* google_protobuf_UInt32Value_serialize(const google_protobuf_UInt32Value* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_UInt32Value_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_UInt32Value_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_UInt32Value_serialize_ex(const google_protobuf_UInt32Value* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_UInt32Value_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_UInt32Value_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_protobuf_UInt32Value_clear_value(const google_protobuf_UInt32Value* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = 0;
}
UPB_INLINE uint32_t google_protobuf_UInt32Value_value(const google_protobuf_UInt32Value* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t);
@@ -309,11 +351,18 @@ UPB_INLINE google_protobuf_BoolValue* google_protobuf_BoolValue_parse_ex(const c
return ret;
}
UPB_INLINE char* google_protobuf_BoolValue_serialize(const google_protobuf_BoolValue* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_BoolValue_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_BoolValue_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_BoolValue_serialize_ex(const google_protobuf_BoolValue* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_BoolValue_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_BoolValue_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_protobuf_BoolValue_clear_value(const google_protobuf_BoolValue* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool google_protobuf_BoolValue_value(const google_protobuf_BoolValue* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
@@ -348,11 +397,18 @@ UPB_INLINE google_protobuf_StringValue* google_protobuf_StringValue_parse_ex(con
return ret;
}
UPB_INLINE char* google_protobuf_StringValue_serialize(const google_protobuf_StringValue* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_StringValue_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_StringValue_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_StringValue_serialize_ex(const google_protobuf_StringValue* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_StringValue_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_StringValue_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_protobuf_StringValue_clear_value(const google_protobuf_StringValue* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_protobuf_StringValue_value(const google_protobuf_StringValue* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -387,11 +443,18 @@ UPB_INLINE google_protobuf_BytesValue* google_protobuf_BytesValue_parse_ex(const
return ret;
}
UPB_INLINE char* google_protobuf_BytesValue_serialize(const google_protobuf_BytesValue* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_BytesValue_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_BytesValue_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_protobuf_BytesValue_serialize_ex(const google_protobuf_BytesValue* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_protobuf_BytesValue_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_protobuf_BytesValue_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_protobuf_BytesValue_clear_value(const google_protobuf_BytesValue* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView google_protobuf_BytesValue_value(const google_protobuf_BytesValue* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/rpc/status.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/google/rpc/status.upb.c
index df0194b2db..c215e1b2fa 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/rpc/status.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/rpc/status.upb.c
@@ -18,15 +18,15 @@ static const upb_MiniTable_Sub google_rpc_Status_submsgs[1] = {
};
static const upb_MiniTable_Field google_rpc_Status__fields[3] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable google_rpc_Status_msginit = {
&google_rpc_Status_submsgs[0],
&google_rpc_Status__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/google/rpc/status.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/google/rpc/status.upb.h
index 3edf53da48..1a4a95d7c0 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/google/rpc/status.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/google/rpc/status.upb.h
@@ -53,20 +53,37 @@ UPB_INLINE google_rpc_Status* google_rpc_Status_parse_ex(const char* buf, size_t
return ret;
}
UPB_INLINE char* google_rpc_Status_serialize(const google_rpc_Status* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_rpc_Status_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_rpc_Status_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* google_rpc_Status_serialize_ex(const google_rpc_Status* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &google_rpc_Status_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &google_rpc_Status_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void google_rpc_Status_clear_code(const google_rpc_Status* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
UPB_INLINE int32_t google_rpc_Status_code(const google_rpc_Status* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
+UPB_INLINE void google_rpc_Status_clear_message(const google_rpc_Status* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView google_rpc_Status_message(const google_rpc_Status* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool google_rpc_Status_has_details(const google_rpc_Status *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24)); }
-UPB_INLINE const struct google_protobuf_Any* const* google_rpc_Status_details(const google_rpc_Status *msg, size_t *len) { return (const struct google_protobuf_Any* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len); }
+UPB_INLINE bool google_rpc_Status_has_details(const google_rpc_Status* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void google_rpc_Status_clear_details(const google_rpc_Status* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const struct google_protobuf_Any* const* google_rpc_Status_details(const google_rpc_Status* msg, size_t* len) {
+ return (const struct google_protobuf_Any* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
UPB_INLINE void google_rpc_Status_set_code(google_rpc_Status *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
@@ -74,16 +91,15 @@ UPB_INLINE void google_rpc_Status_set_code(google_rpc_Status *msg, int32_t value
UPB_INLINE void google_rpc_Status_set_message(google_rpc_Status *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE struct google_protobuf_Any** google_rpc_Status_mutable_details(google_rpc_Status *msg, size_t *len) {
+UPB_INLINE struct google_protobuf_Any** google_rpc_Status_mutable_details(google_rpc_Status* msg, size_t* len) {
return (struct google_protobuf_Any**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
}
-UPB_INLINE struct google_protobuf_Any** google_rpc_Status_resize_details(google_rpc_Status *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any** google_rpc_Status_resize_details(google_rpc_Status* msg, size_t len, upb_Arena* arena) {
return (struct google_protobuf_Any**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_Any* google_rpc_Status_add_details(google_rpc_Status *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* google_rpc_Status_add_details(google_rpc_Status* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c
index 3597baf9ff..2073727225 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c
@@ -13,55 +13,55 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub opencensus_proto_trace_v1_TraceConfig_submsgs[3] = {
- {.submsg = &opencensus_proto_trace_v1_ConstantSampler_msginit},
{.submsg = &opencensus_proto_trace_v1_ProbabilitySampler_msginit},
+ {.submsg = &opencensus_proto_trace_v1_ConstantSampler_msginit},
{.submsg = &opencensus_proto_trace_v1_RateLimitingSampler_msginit},
};
static const upb_MiniTable_Field opencensus_proto_trace_v1_TraceConfig__fields[7] = {
- {1, UPB_SIZE(32, 32), UPB_SIZE(-37, -41), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(32, 32), UPB_SIZE(-37, -41), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(32, 32), UPB_SIZE(-37, -41), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 8), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(16, 16), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(24, 24), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 32), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(32, 40), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable opencensus_proto_trace_v1_TraceConfig_msginit = {
&opencensus_proto_trace_v1_TraceConfig_submsgs[0],
&opencensus_proto_trace_v1_TraceConfig__fields[0],
- UPB_SIZE(40, 48), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(40, 48), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
static const upb_MiniTable_Field opencensus_proto_trace_v1_ProbabilitySampler__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable opencensus_proto_trace_v1_ProbabilitySampler_msginit = {
NULL,
&opencensus_proto_trace_v1_ProbabilitySampler__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field opencensus_proto_trace_v1_ConstantSampler__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable opencensus_proto_trace_v1_ConstantSampler_msginit = {
NULL,
&opencensus_proto_trace_v1_ConstantSampler__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field opencensus_proto_trace_v1_RateLimitingSampler__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable opencensus_proto_trace_v1_RateLimitingSampler_msginit = {
NULL,
&opencensus_proto_trace_v1_RateLimitingSampler__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[4] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h
index 1bbad1594a..7915939a83 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h
@@ -66,11 +66,15 @@ UPB_INLINE opencensus_proto_trace_v1_TraceConfig* opencensus_proto_trace_v1_Trac
return ret;
}
UPB_INLINE char* opencensus_proto_trace_v1_TraceConfig_serialize(const opencensus_proto_trace_v1_TraceConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &opencensus_proto_trace_v1_TraceConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &opencensus_proto_trace_v1_TraceConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* opencensus_proto_trace_v1_TraceConfig_serialize_ex(const opencensus_proto_trace_v1_TraceConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &opencensus_proto_trace_v1_TraceConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &opencensus_proto_trace_v1_TraceConfig_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
opencensus_proto_trace_v1_TraceConfig_sampler_probability_sampler = 1,
@@ -78,31 +82,65 @@ typedef enum {
opencensus_proto_trace_v1_TraceConfig_sampler_rate_limiting_sampler = 3,
opencensus_proto_trace_v1_TraceConfig_sampler_NOT_SET = 0
} opencensus_proto_trace_v1_TraceConfig_sampler_oneofcases;
-UPB_INLINE opencensus_proto_trace_v1_TraceConfig_sampler_oneofcases opencensus_proto_trace_v1_TraceConfig_sampler_case(const opencensus_proto_trace_v1_TraceConfig* msg) { return (opencensus_proto_trace_v1_TraceConfig_sampler_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(36, 40), int32_t); }
-
-UPB_INLINE bool opencensus_proto_trace_v1_TraceConfig_has_probability_sampler(const opencensus_proto_trace_v1_TraceConfig *msg) { return _upb_getoneofcase(msg, UPB_SIZE(36, 40)) == 1; }
-UPB_INLINE const opencensus_proto_trace_v1_ProbabilitySampler* opencensus_proto_trace_v1_TraceConfig_probability_sampler(const opencensus_proto_trace_v1_TraceConfig *msg) { return UPB_READ_ONEOF(msg, const opencensus_proto_trace_v1_ProbabilitySampler*, UPB_SIZE(32, 32), UPB_SIZE(36, 40), 1, NULL); }
-UPB_INLINE bool opencensus_proto_trace_v1_TraceConfig_has_constant_sampler(const opencensus_proto_trace_v1_TraceConfig *msg) { return _upb_getoneofcase(msg, UPB_SIZE(36, 40)) == 2; }
-UPB_INLINE const opencensus_proto_trace_v1_ConstantSampler* opencensus_proto_trace_v1_TraceConfig_constant_sampler(const opencensus_proto_trace_v1_TraceConfig *msg) { return UPB_READ_ONEOF(msg, const opencensus_proto_trace_v1_ConstantSampler*, UPB_SIZE(32, 32), UPB_SIZE(36, 40), 2, NULL); }
-UPB_INLINE bool opencensus_proto_trace_v1_TraceConfig_has_rate_limiting_sampler(const opencensus_proto_trace_v1_TraceConfig *msg) { return _upb_getoneofcase(msg, UPB_SIZE(36, 40)) == 3; }
-UPB_INLINE const opencensus_proto_trace_v1_RateLimitingSampler* opencensus_proto_trace_v1_TraceConfig_rate_limiting_sampler(const opencensus_proto_trace_v1_TraceConfig *msg) { return UPB_READ_ONEOF(msg, const opencensus_proto_trace_v1_RateLimitingSampler*, UPB_SIZE(32, 32), UPB_SIZE(36, 40), 3, NULL); }
+UPB_INLINE opencensus_proto_trace_v1_TraceConfig_sampler_oneofcases opencensus_proto_trace_v1_TraceConfig_sampler_case(const opencensus_proto_trace_v1_TraceConfig* msg) {
+ return (opencensus_proto_trace_v1_TraceConfig_sampler_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool opencensus_proto_trace_v1_TraceConfig_has_probability_sampler(const opencensus_proto_trace_v1_TraceConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void opencensus_proto_trace_v1_TraceConfig_clear_probability_sampler(const opencensus_proto_trace_v1_TraceConfig* msg) {
+ UPB_WRITE_ONEOF(msg, opencensus_proto_trace_v1_ProbabilitySampler*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), opencensus_proto_trace_v1_TraceConfig_sampler_NOT_SET);
+}
+UPB_INLINE const opencensus_proto_trace_v1_ProbabilitySampler* opencensus_proto_trace_v1_TraceConfig_probability_sampler(const opencensus_proto_trace_v1_TraceConfig* msg) {
+ return UPB_READ_ONEOF(msg, const opencensus_proto_trace_v1_ProbabilitySampler*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool opencensus_proto_trace_v1_TraceConfig_has_constant_sampler(const opencensus_proto_trace_v1_TraceConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void opencensus_proto_trace_v1_TraceConfig_clear_constant_sampler(const opencensus_proto_trace_v1_TraceConfig* msg) {
+ UPB_WRITE_ONEOF(msg, opencensus_proto_trace_v1_ConstantSampler*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), opencensus_proto_trace_v1_TraceConfig_sampler_NOT_SET);
+}
+UPB_INLINE const opencensus_proto_trace_v1_ConstantSampler* opencensus_proto_trace_v1_TraceConfig_constant_sampler(const opencensus_proto_trace_v1_TraceConfig* msg) {
+ return UPB_READ_ONEOF(msg, const opencensus_proto_trace_v1_ConstantSampler*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool opencensus_proto_trace_v1_TraceConfig_has_rate_limiting_sampler(const opencensus_proto_trace_v1_TraceConfig* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void opencensus_proto_trace_v1_TraceConfig_clear_rate_limiting_sampler(const opencensus_proto_trace_v1_TraceConfig* msg) {
+ UPB_WRITE_ONEOF(msg, opencensus_proto_trace_v1_RateLimitingSampler*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), opencensus_proto_trace_v1_TraceConfig_sampler_NOT_SET);
+}
+UPB_INLINE const opencensus_proto_trace_v1_RateLimitingSampler* opencensus_proto_trace_v1_TraceConfig_rate_limiting_sampler(const opencensus_proto_trace_v1_TraceConfig* msg) {
+ return UPB_READ_ONEOF(msg, const opencensus_proto_trace_v1_RateLimitingSampler*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE void opencensus_proto_trace_v1_TraceConfig_clear_max_number_of_attributes(const opencensus_proto_trace_v1_TraceConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), int64_t) = 0;
+}
UPB_INLINE int64_t opencensus_proto_trace_v1_TraceConfig_max_number_of_attributes(const opencensus_proto_trace_v1_TraceConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), int64_t);
+}
+UPB_INLINE void opencensus_proto_trace_v1_TraceConfig_clear_max_number_of_annotations(const opencensus_proto_trace_v1_TraceConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t) = 0;
}
UPB_INLINE int64_t opencensus_proto_trace_v1_TraceConfig_max_number_of_annotations(const opencensus_proto_trace_v1_TraceConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t);
+}
+UPB_INLINE void opencensus_proto_trace_v1_TraceConfig_clear_max_number_of_message_events(const opencensus_proto_trace_v1_TraceConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t) = 0;
}
UPB_INLINE int64_t opencensus_proto_trace_v1_TraceConfig_max_number_of_message_events(const opencensus_proto_trace_v1_TraceConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t);
+}
+UPB_INLINE void opencensus_proto_trace_v1_TraceConfig_clear_max_number_of_links(const opencensus_proto_trace_v1_TraceConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t) = 0;
}
UPB_INLINE int64_t opencensus_proto_trace_v1_TraceConfig_max_number_of_links(const opencensus_proto_trace_v1_TraceConfig* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t);
}
UPB_INLINE void opencensus_proto_trace_v1_TraceConfig_set_probability_sampler(opencensus_proto_trace_v1_TraceConfig *msg, opencensus_proto_trace_v1_ProbabilitySampler* value) {
- UPB_WRITE_ONEOF(msg, opencensus_proto_trace_v1_ProbabilitySampler*, UPB_SIZE(32, 32), value, UPB_SIZE(36, 40), 1);
+ UPB_WRITE_ONEOF(msg, opencensus_proto_trace_v1_ProbabilitySampler*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct opencensus_proto_trace_v1_ProbabilitySampler* opencensus_proto_trace_v1_TraceConfig_mutable_probability_sampler(opencensus_proto_trace_v1_TraceConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct opencensus_proto_trace_v1_ProbabilitySampler* opencensus_proto_trace_v1_TraceConfig_mutable_probability_sampler(opencensus_proto_trace_v1_TraceConfig* msg, upb_Arena* arena) {
struct opencensus_proto_trace_v1_ProbabilitySampler* sub = (struct opencensus_proto_trace_v1_ProbabilitySampler*)opencensus_proto_trace_v1_TraceConfig_probability_sampler(msg);
if (sub == NULL) {
sub = (struct opencensus_proto_trace_v1_ProbabilitySampler*)_upb_Message_New(&opencensus_proto_trace_v1_ProbabilitySampler_msginit, arena);
@@ -112,9 +150,9 @@ UPB_INLINE struct opencensus_proto_trace_v1_ProbabilitySampler* opencensus_proto
return sub;
}
UPB_INLINE void opencensus_proto_trace_v1_TraceConfig_set_constant_sampler(opencensus_proto_trace_v1_TraceConfig *msg, opencensus_proto_trace_v1_ConstantSampler* value) {
- UPB_WRITE_ONEOF(msg, opencensus_proto_trace_v1_ConstantSampler*, UPB_SIZE(32, 32), value, UPB_SIZE(36, 40), 2);
+ UPB_WRITE_ONEOF(msg, opencensus_proto_trace_v1_ConstantSampler*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct opencensus_proto_trace_v1_ConstantSampler* opencensus_proto_trace_v1_TraceConfig_mutable_constant_sampler(opencensus_proto_trace_v1_TraceConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct opencensus_proto_trace_v1_ConstantSampler* opencensus_proto_trace_v1_TraceConfig_mutable_constant_sampler(opencensus_proto_trace_v1_TraceConfig* msg, upb_Arena* arena) {
struct opencensus_proto_trace_v1_ConstantSampler* sub = (struct opencensus_proto_trace_v1_ConstantSampler*)opencensus_proto_trace_v1_TraceConfig_constant_sampler(msg);
if (sub == NULL) {
sub = (struct opencensus_proto_trace_v1_ConstantSampler*)_upb_Message_New(&opencensus_proto_trace_v1_ConstantSampler_msginit, arena);
@@ -124,9 +162,9 @@ UPB_INLINE struct opencensus_proto_trace_v1_ConstantSampler* opencensus_proto_tr
return sub;
}
UPB_INLINE void opencensus_proto_trace_v1_TraceConfig_set_rate_limiting_sampler(opencensus_proto_trace_v1_TraceConfig *msg, opencensus_proto_trace_v1_RateLimitingSampler* value) {
- UPB_WRITE_ONEOF(msg, opencensus_proto_trace_v1_RateLimitingSampler*, UPB_SIZE(32, 32), value, UPB_SIZE(36, 40), 3);
+ UPB_WRITE_ONEOF(msg, opencensus_proto_trace_v1_RateLimitingSampler*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct opencensus_proto_trace_v1_RateLimitingSampler* opencensus_proto_trace_v1_TraceConfig_mutable_rate_limiting_sampler(opencensus_proto_trace_v1_TraceConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct opencensus_proto_trace_v1_RateLimitingSampler* opencensus_proto_trace_v1_TraceConfig_mutable_rate_limiting_sampler(opencensus_proto_trace_v1_TraceConfig* msg, upb_Arena* arena) {
struct opencensus_proto_trace_v1_RateLimitingSampler* sub = (struct opencensus_proto_trace_v1_RateLimitingSampler*)opencensus_proto_trace_v1_TraceConfig_rate_limiting_sampler(msg);
if (sub == NULL) {
sub = (struct opencensus_proto_trace_v1_RateLimitingSampler*)_upb_Message_New(&opencensus_proto_trace_v1_RateLimitingSampler_msginit, arena);
@@ -136,16 +174,16 @@ UPB_INLINE struct opencensus_proto_trace_v1_RateLimitingSampler* opencensus_prot
return sub;
}
UPB_INLINE void opencensus_proto_trace_v1_TraceConfig_set_max_number_of_attributes(opencensus_proto_trace_v1_TraceConfig *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), int64_t) = value;
}
UPB_INLINE void opencensus_proto_trace_v1_TraceConfig_set_max_number_of_annotations(opencensus_proto_trace_v1_TraceConfig *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t) = value;
}
UPB_INLINE void opencensus_proto_trace_v1_TraceConfig_set_max_number_of_message_events(opencensus_proto_trace_v1_TraceConfig *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t) = value;
}
UPB_INLINE void opencensus_proto_trace_v1_TraceConfig_set_max_number_of_links(opencensus_proto_trace_v1_TraceConfig *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t) = value;
}
/* opencensus.proto.trace.v1.ProbabilitySampler */
@@ -173,11 +211,18 @@ UPB_INLINE opencensus_proto_trace_v1_ProbabilitySampler* opencensus_proto_trace_
return ret;
}
UPB_INLINE char* opencensus_proto_trace_v1_ProbabilitySampler_serialize(const opencensus_proto_trace_v1_ProbabilitySampler* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &opencensus_proto_trace_v1_ProbabilitySampler_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &opencensus_proto_trace_v1_ProbabilitySampler_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* opencensus_proto_trace_v1_ProbabilitySampler_serialize_ex(const opencensus_proto_trace_v1_ProbabilitySampler* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &opencensus_proto_trace_v1_ProbabilitySampler_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &opencensus_proto_trace_v1_ProbabilitySampler_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void opencensus_proto_trace_v1_ProbabilitySampler_clear_samplingProbability(const opencensus_proto_trace_v1_ProbabilitySampler* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double) = 0;
}
UPB_INLINE double opencensus_proto_trace_v1_ProbabilitySampler_samplingProbability(const opencensus_proto_trace_v1_ProbabilitySampler* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double);
@@ -212,11 +257,18 @@ UPB_INLINE opencensus_proto_trace_v1_ConstantSampler* opencensus_proto_trace_v1_
return ret;
}
UPB_INLINE char* opencensus_proto_trace_v1_ConstantSampler_serialize(const opencensus_proto_trace_v1_ConstantSampler* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &opencensus_proto_trace_v1_ConstantSampler_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &opencensus_proto_trace_v1_ConstantSampler_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* opencensus_proto_trace_v1_ConstantSampler_serialize_ex(const opencensus_proto_trace_v1_ConstantSampler* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &opencensus_proto_trace_v1_ConstantSampler_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &opencensus_proto_trace_v1_ConstantSampler_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void opencensus_proto_trace_v1_ConstantSampler_clear_decision(const opencensus_proto_trace_v1_ConstantSampler* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
UPB_INLINE int32_t opencensus_proto_trace_v1_ConstantSampler_decision(const opencensus_proto_trace_v1_ConstantSampler* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
@@ -251,11 +303,18 @@ UPB_INLINE opencensus_proto_trace_v1_RateLimitingSampler* opencensus_proto_trace
return ret;
}
UPB_INLINE char* opencensus_proto_trace_v1_RateLimitingSampler_serialize(const opencensus_proto_trace_v1_RateLimitingSampler* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &opencensus_proto_trace_v1_RateLimitingSampler_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &opencensus_proto_trace_v1_RateLimitingSampler_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* opencensus_proto_trace_v1_RateLimitingSampler_serialize_ex(const opencensus_proto_trace_v1_RateLimitingSampler* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &opencensus_proto_trace_v1_RateLimitingSampler_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &opencensus_proto_trace_v1_RateLimitingSampler_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void opencensus_proto_trace_v1_RateLimitingSampler_clear_qps(const opencensus_proto_trace_v1_RateLimitingSampler* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t) = 0;
}
UPB_INLINE int64_t opencensus_proto_trace_v1_RateLimitingSampler_qps(const opencensus_proto_trace_v1_RateLimitingSampler* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c
index eaab638f78..265b5c22ef 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c
@@ -14,35 +14,35 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub grpc_gcp_AltsContext_submsgs[2] = {
- {.submsg = &grpc_gcp_AltsContext_PeerAttributesEntry_msginit},
{.submsg = &grpc_gcp_RpcProtocolVersions_msginit},
+ {.submsg = &grpc_gcp_AltsContext_PeerAttributesEntry_msginit},
};
static const upb_MiniTable_Field grpc_gcp_AltsContext__fields[7] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(32, 56), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(40, 72), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(44, 80), 0, 0, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(32, 56), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(40, 72), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(44, 80), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_AltsContext_msginit = {
&grpc_gcp_AltsContext_submsgs[0],
&grpc_gcp_AltsContext__fields[0],
- UPB_SIZE(48, 96), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(48, 88), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
static const upb_MiniTable_Field grpc_gcp_AltsContext_PeerAttributesEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_AltsContext_PeerAttributesEntry_msginit = {
NULL,
&grpc_gcp_AltsContext_PeerAttributesEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h
index 5df46a42ac..e4b6e44010 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h
@@ -56,35 +56,70 @@ UPB_INLINE grpc_gcp_AltsContext* grpc_gcp_AltsContext_parse_ex(const char* buf,
return ret;
}
UPB_INLINE char* grpc_gcp_AltsContext_serialize(const grpc_gcp_AltsContext* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_AltsContext_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_AltsContext_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_gcp_AltsContext_serialize_ex(const grpc_gcp_AltsContext* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_AltsContext_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_AltsContext_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_gcp_AltsContext_clear_application_protocol(const grpc_gcp_AltsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView grpc_gcp_AltsContext_application_protocol(const grpc_gcp_AltsContext* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
}
+UPB_INLINE void grpc_gcp_AltsContext_clear_record_protocol(const grpc_gcp_AltsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView grpc_gcp_AltsContext_record_protocol(const grpc_gcp_AltsContext* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
}
+UPB_INLINE void grpc_gcp_AltsContext_clear_security_level(const grpc_gcp_AltsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+}
UPB_INLINE int32_t grpc_gcp_AltsContext_security_level(const grpc_gcp_AltsContext* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
+UPB_INLINE void grpc_gcp_AltsContext_clear_peer_service_account(const grpc_gcp_AltsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView grpc_gcp_AltsContext_peer_service_account(const grpc_gcp_AltsContext* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView);
}
+UPB_INLINE void grpc_gcp_AltsContext_clear_local_service_account(const grpc_gcp_AltsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView grpc_gcp_AltsContext_local_service_account(const grpc_gcp_AltsContext* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), upb_StringView);
}
-UPB_INLINE bool grpc_gcp_AltsContext_has_peer_rpc_versions(const grpc_gcp_AltsContext *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool grpc_gcp_AltsContext_has_peer_rpc_versions(const grpc_gcp_AltsContext* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void grpc_gcp_AltsContext_clear_peer_rpc_versions(const grpc_gcp_AltsContext* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const upb_Message*) = NULL;
+}
UPB_INLINE const struct grpc_gcp_RpcProtocolVersions* grpc_gcp_AltsContext_peer_rpc_versions(const grpc_gcp_AltsContext* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const struct grpc_gcp_RpcProtocolVersions*);
}
-UPB_INLINE bool grpc_gcp_AltsContext_has_peer_attributes(const grpc_gcp_AltsContext *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 80)); }
-UPB_INLINE size_t grpc_gcp_AltsContext_peer_attributes_size(const grpc_gcp_AltsContext *msg) {return _upb_msg_map_size(msg, UPB_SIZE(44, 80)); }
-UPB_INLINE bool grpc_gcp_AltsContext_peer_attributes_get(const grpc_gcp_AltsContext *msg, upb_StringView key, upb_StringView *val) { return _upb_msg_map_get(msg, UPB_SIZE(44, 80), &key, 0, val, 0); }
-UPB_INLINE const grpc_gcp_AltsContext_PeerAttributesEntry* grpc_gcp_AltsContext_peer_attributes_next(const grpc_gcp_AltsContext *msg, size_t* iter) { return (const grpc_gcp_AltsContext_PeerAttributesEntry*)_upb_msg_map_next(msg, UPB_SIZE(44, 80), iter); }
+UPB_INLINE bool grpc_gcp_AltsContext_has_peer_attributes(const grpc_gcp_AltsContext* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 80));
+}
+UPB_INLINE void grpc_gcp_AltsContext_clear_peer_attributes(const grpc_gcp_AltsContext* msg) {
+ _upb_array_detach(msg, UPB_SIZE(44, 80));
+}
+UPB_INLINE size_t grpc_gcp_AltsContext_peer_attributes_size(const grpc_gcp_AltsContext* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(44, 80));
+}
+UPB_INLINE bool grpc_gcp_AltsContext_peer_attributes_get(const grpc_gcp_AltsContext* msg, upb_StringView key, upb_StringView* val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(44, 80), &key, 0, val, 0);
+}
+UPB_INLINE const grpc_gcp_AltsContext_PeerAttributesEntry* grpc_gcp_AltsContext_peer_attributes_next(const grpc_gcp_AltsContext* msg, size_t* iter) {
+ return (const grpc_gcp_AltsContext_PeerAttributesEntry*)_upb_msg_map_next(msg, UPB_SIZE(44, 80), iter);
+}
UPB_INLINE void grpc_gcp_AltsContext_set_application_protocol(grpc_gcp_AltsContext *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
@@ -105,7 +140,7 @@ UPB_INLINE void grpc_gcp_AltsContext_set_peer_rpc_versions(grpc_gcp_AltsContext
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(40, 72), struct grpc_gcp_RpcProtocolVersions*) = value;
}
-UPB_INLINE struct grpc_gcp_RpcProtocolVersions* grpc_gcp_AltsContext_mutable_peer_rpc_versions(grpc_gcp_AltsContext *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_RpcProtocolVersions* grpc_gcp_AltsContext_mutable_peer_rpc_versions(grpc_gcp_AltsContext* msg, upb_Arena* arena) {
struct grpc_gcp_RpcProtocolVersions* sub = (struct grpc_gcp_RpcProtocolVersions*)grpc_gcp_AltsContext_peer_rpc_versions(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_RpcProtocolVersions*)_upb_Message_New(&grpc_gcp_RpcProtocolVersions_msginit, arena);
@@ -114,19 +149,25 @@ UPB_INLINE struct grpc_gcp_RpcProtocolVersions* grpc_gcp_AltsContext_mutable_pee
}
return sub;
}
-UPB_INLINE void grpc_gcp_AltsContext_peer_attributes_clear(grpc_gcp_AltsContext *msg) { _upb_msg_map_clear(msg, UPB_SIZE(44, 80)); }
-UPB_INLINE bool grpc_gcp_AltsContext_peer_attributes_set(grpc_gcp_AltsContext *msg, upb_StringView key, upb_StringView val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(44, 80), &key, 0, &val, 0, a); }
-UPB_INLINE bool grpc_gcp_AltsContext_peer_attributes_delete(grpc_gcp_AltsContext *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(44, 80), &key, 0); }
-UPB_INLINE grpc_gcp_AltsContext_PeerAttributesEntry* grpc_gcp_AltsContext_peer_attributes_nextmutable(grpc_gcp_AltsContext *msg, size_t* iter) { return (grpc_gcp_AltsContext_PeerAttributesEntry*)_upb_msg_map_next(msg, UPB_SIZE(44, 80), iter); }
+UPB_INLINE void grpc_gcp_AltsContext_peer_attributes_clear(grpc_gcp_AltsContext* msg) { _upb_msg_map_clear(msg, UPB_SIZE(44, 80)); }
+UPB_INLINE bool grpc_gcp_AltsContext_peer_attributes_set(grpc_gcp_AltsContext* msg, upb_StringView key, upb_StringView val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(44, 80), &key, 0, &val, 0, a);
+}
+UPB_INLINE bool grpc_gcp_AltsContext_peer_attributes_delete(grpc_gcp_AltsContext* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(44, 80), &key, 0);
+}
+UPB_INLINE grpc_gcp_AltsContext_PeerAttributesEntry* grpc_gcp_AltsContext_peer_attributes_nextmutable(grpc_gcp_AltsContext* msg, size_t* iter) {
+ return (grpc_gcp_AltsContext_PeerAttributesEntry*)_upb_msg_map_next(msg, UPB_SIZE(44, 80), iter);
+}
/* grpc.gcp.AltsContext.PeerAttributesEntry */
-UPB_INLINE upb_StringView grpc_gcp_AltsContext_PeerAttributesEntry_key(const grpc_gcp_AltsContext_PeerAttributesEntry *msg) {
+UPB_INLINE upb_StringView grpc_gcp_AltsContext_PeerAttributesEntry_key(const grpc_gcp_AltsContext_PeerAttributesEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE upb_StringView grpc_gcp_AltsContext_PeerAttributesEntry_value(const grpc_gcp_AltsContext_PeerAttributesEntry *msg) {
+UPB_INLINE upb_StringView grpc_gcp_AltsContext_PeerAttributesEntry_value(const grpc_gcp_AltsContext_PeerAttributesEntry* msg) {
upb_StringView ret;
_upb_msg_map_value(msg, &ret, 0);
return ret;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c
index bd7886e0ff..c16c5ac08d 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c
@@ -14,15 +14,15 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field grpc_gcp_Endpoint__fields[3] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_Endpoint_msginit = {
NULL,
&grpc_gcp_Endpoint__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub grpc_gcp_Identity_submsgs[1] = {
@@ -30,51 +30,53 @@ static const upb_MiniTable_Sub grpc_gcp_Identity_submsgs[1] = {
};
static const upb_MiniTable_Field grpc_gcp_Identity__fields[3] = {
- {1, UPB_SIZE(4, 8), UPB_SIZE(-13, -25), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), UPB_SIZE(-13, -25), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_Identity_msginit = {
&grpc_gcp_Identity_submsgs[0],
&grpc_gcp_Identity__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Field grpc_gcp_Identity_AttributesEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_Identity_AttributesEntry_msginit = {
NULL,
&grpc_gcp_Identity_AttributesEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub grpc_gcp_StartClientHandshakeReq_submsgs[3] = {
- {.submsg = &grpc_gcp_Endpoint_msginit},
+static const upb_MiniTable_Sub grpc_gcp_StartClientHandshakeReq_submsgs[5] = {
+ {.submsg = &grpc_gcp_Identity_msginit},
{.submsg = &grpc_gcp_Identity_msginit},
+ {.submsg = &grpc_gcp_Endpoint_msginit},
+ {.submsg = &grpc_gcp_Endpoint_msginit},
{.submsg = &grpc_gcp_RpcProtocolVersions_msginit},
};
static const upb_MiniTable_Field grpc_gcp_StartClientHandshakeReq__fields[10] = {
- {1, UPB_SIZE(4, 4), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(36, 64), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(40, 72), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(44, 80), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 32), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(24, 40), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(28, 48), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(12, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {9, UPB_SIZE(32, 56), 4, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(8, 8), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 32), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 40), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 48), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(32, 56), UPB_SIZE(3, 3), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(36, 64), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(44, 80), UPB_SIZE(4, 4), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_StartClientHandshakeReq_msginit = {
&grpc_gcp_StartClientHandshakeReq_submsgs[0],
&grpc_gcp_StartClientHandshakeReq__fields[0],
- UPB_SIZE(48, 96), 10, upb_ExtMode_NonExtendable, 10, 255, 0,
+ UPB_SIZE(48, 88), 10, kUpb_ExtMode_NonExtendable, 10, 255, 0,
};
static const upb_MiniTable_Sub grpc_gcp_ServerHandshakeParameters_submsgs[1] = {
@@ -82,36 +84,37 @@ static const upb_MiniTable_Sub grpc_gcp_ServerHandshakeParameters_submsgs[1] = {
};
static const upb_MiniTable_Field grpc_gcp_ServerHandshakeParameters__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_ServerHandshakeParameters_msginit = {
&grpc_gcp_ServerHandshakeParameters_submsgs[0],
&grpc_gcp_ServerHandshakeParameters__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub grpc_gcp_StartServerHandshakeReq_submsgs[3] = {
+static const upb_MiniTable_Sub grpc_gcp_StartServerHandshakeReq_submsgs[4] = {
+ {.submsg = &grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry_msginit},
+ {.submsg = &grpc_gcp_Endpoint_msginit},
{.submsg = &grpc_gcp_Endpoint_msginit},
{.submsg = &grpc_gcp_RpcProtocolVersions_msginit},
- {.submsg = &grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry_msginit},
};
static const upb_MiniTable_Field grpc_gcp_StartServerHandshakeReq__fields[7] = {
- {1, UPB_SIZE(28, 48), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(32, 56), 0, 2, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 8), 0, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 32), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(24, 40), 3, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(4, 4), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 40), UPB_SIZE(1, 1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(28, 48), UPB_SIZE(2, 2), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(32, 56), UPB_SIZE(3, 3), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_StartServerHandshakeReq_msginit = {
&grpc_gcp_StartServerHandshakeReq_submsgs[0],
&grpc_gcp_StartServerHandshakeReq__fields[0],
- UPB_SIZE(40, 64), 7, upb_ExtMode_NonExtendable, 7, 255, 0,
+ UPB_SIZE(40, 64), 7, kUpb_ExtMode_NonExtendable, 7, 255, 0,
};
static const upb_MiniTable_Sub grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry_submsgs[1] = {
@@ -119,75 +122,76 @@ static const upb_MiniTable_Sub grpc_gcp_StartServerHandshakeReq_HandshakeParamet
};
static const upb_MiniTable_Field grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry_msginit = {
&grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry_submsgs[0],
&grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field grpc_gcp_NextHandshakeMessageReq__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_NextHandshakeMessageReq_msginit = {
NULL,
&grpc_gcp_NextHandshakeMessageReq__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub grpc_gcp_HandshakerReq_submsgs[3] = {
- {.submsg = &grpc_gcp_NextHandshakeMessageReq_msginit},
{.submsg = &grpc_gcp_StartClientHandshakeReq_msginit},
{.submsg = &grpc_gcp_StartServerHandshakeReq_msginit},
+ {.submsg = &grpc_gcp_NextHandshakeMessageReq_msginit},
};
static const upb_MiniTable_Field grpc_gcp_HandshakerReq__fields[3] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_HandshakerReq_msginit = {
&grpc_gcp_HandshakerReq_submsgs[0],
&grpc_gcp_HandshakerReq__fields[0],
- UPB_SIZE(8, 16), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(8, 16), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
-static const upb_MiniTable_Sub grpc_gcp_HandshakerResult_submsgs[2] = {
+static const upb_MiniTable_Sub grpc_gcp_HandshakerResult_submsgs[3] = {
+ {.submsg = &grpc_gcp_Identity_msginit},
{.submsg = &grpc_gcp_Identity_msginit},
{.submsg = &grpc_gcp_RpcProtocolVersions_msginit},
};
static const upb_MiniTable_Field grpc_gcp_HandshakerResult__fields[8] = {
- {1, UPB_SIZE(12, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(20, 32), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(28, 48), 0, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(36, 64), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(40, 72), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(8, 8), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(44, 80), 3, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(4, 4), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(24, 40), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(32, 56), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(36, 64), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(40, 72), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_HandshakerResult_msginit = {
&grpc_gcp_HandshakerResult_submsgs[0],
&grpc_gcp_HandshakerResult__fields[0],
- UPB_SIZE(48, 96), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(48, 80), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Field grpc_gcp_HandshakerStatus__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_HandshakerStatus_msginit = {
NULL,
&grpc_gcp_HandshakerStatus__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub grpc_gcp_HandshakerResp_submsgs[2] = {
@@ -196,16 +200,16 @@ static const upb_MiniTable_Sub grpc_gcp_HandshakerResp_submsgs[2] = {
};
static const upb_MiniTable_Field grpc_gcp_HandshakerResp__fields[4] = {
- {1, UPB_SIZE(8, 8), 0, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 4), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 32), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_HandshakerResp_msginit = {
&grpc_gcp_HandshakerResp_submsgs[0],
&grpc_gcp_HandshakerResp__fields[0],
- UPB_SIZE(24, 48), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable *messages_layout[12] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h
index 4f69d284ec..8f35fb3700 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h
@@ -98,30 +98,43 @@ UPB_INLINE grpc_gcp_Endpoint* grpc_gcp_Endpoint_parse_ex(const char* buf, size_t
return ret;
}
UPB_INLINE char* grpc_gcp_Endpoint_serialize(const grpc_gcp_Endpoint* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_Endpoint_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_Endpoint_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_gcp_Endpoint_serialize_ex(const grpc_gcp_Endpoint* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_Endpoint_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_Endpoint_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_gcp_Endpoint_clear_ip_address(const grpc_gcp_Endpoint* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView grpc_gcp_Endpoint_ip_address(const grpc_gcp_Endpoint* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
}
+UPB_INLINE void grpc_gcp_Endpoint_clear_port(const grpc_gcp_Endpoint* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
+}
UPB_INLINE int32_t grpc_gcp_Endpoint_port(const grpc_gcp_Endpoint* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE void grpc_gcp_Endpoint_clear_protocol(const grpc_gcp_Endpoint* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t grpc_gcp_Endpoint_protocol(const grpc_gcp_Endpoint* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
UPB_INLINE void grpc_gcp_Endpoint_set_ip_address(grpc_gcp_Endpoint *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
}
UPB_INLINE void grpc_gcp_Endpoint_set_port(grpc_gcp_Endpoint *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
}
UPB_INLINE void grpc_gcp_Endpoint_set_protocol(grpc_gcp_Endpoint *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
/* grpc.gcp.Identity */
@@ -149,47 +162,83 @@ UPB_INLINE grpc_gcp_Identity* grpc_gcp_Identity_parse_ex(const char* buf, size_t
return ret;
}
UPB_INLINE char* grpc_gcp_Identity_serialize(const grpc_gcp_Identity* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_Identity_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_Identity_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_gcp_Identity_serialize_ex(const grpc_gcp_Identity* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_Identity_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_Identity_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
grpc_gcp_Identity_identity_oneof_service_account = 1,
grpc_gcp_Identity_identity_oneof_hostname = 2,
grpc_gcp_Identity_identity_oneof_NOT_SET = 0
} grpc_gcp_Identity_identity_oneof_oneofcases;
-UPB_INLINE grpc_gcp_Identity_identity_oneof_oneofcases grpc_gcp_Identity_identity_oneof_case(const grpc_gcp_Identity* msg) { return (grpc_gcp_Identity_identity_oneof_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool grpc_gcp_Identity_has_service_account(const grpc_gcp_Identity *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 1; }
-UPB_INLINE upb_StringView grpc_gcp_Identity_service_account(const grpc_gcp_Identity *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(12, 24), 1, upb_StringView_FromString("")); }
-UPB_INLINE bool grpc_gcp_Identity_has_hostname(const grpc_gcp_Identity *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE upb_StringView grpc_gcp_Identity_hostname(const grpc_gcp_Identity *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(12, 24), 2, upb_StringView_FromString("")); }
-UPB_INLINE bool grpc_gcp_Identity_has_attributes(const grpc_gcp_Identity *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE size_t grpc_gcp_Identity_attributes_size(const grpc_gcp_Identity *msg) {return _upb_msg_map_size(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE bool grpc_gcp_Identity_attributes_get(const grpc_gcp_Identity *msg, upb_StringView key, upb_StringView *val) { return _upb_msg_map_get(msg, UPB_SIZE(0, 0), &key, 0, val, 0); }
-UPB_INLINE const grpc_gcp_Identity_AttributesEntry* grpc_gcp_Identity_attributes_next(const grpc_gcp_Identity *msg, size_t* iter) { return (const grpc_gcp_Identity_AttributesEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter); }
+UPB_INLINE grpc_gcp_Identity_identity_oneof_oneofcases grpc_gcp_Identity_identity_oneof_case(const grpc_gcp_Identity* msg) {
+ return (grpc_gcp_Identity_identity_oneof_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool grpc_gcp_Identity_has_service_account(const grpc_gcp_Identity* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void grpc_gcp_Identity_clear_service_account(const grpc_gcp_Identity* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), grpc_gcp_Identity_identity_oneof_NOT_SET);
+}
+UPB_INLINE upb_StringView grpc_gcp_Identity_service_account(const grpc_gcp_Identity* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, upb_StringView_FromString(""));
+}
+UPB_INLINE bool grpc_gcp_Identity_has_hostname(const grpc_gcp_Identity* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void grpc_gcp_Identity_clear_hostname(const grpc_gcp_Identity* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), grpc_gcp_Identity_identity_oneof_NOT_SET);
+}
+UPB_INLINE upb_StringView grpc_gcp_Identity_hostname(const grpc_gcp_Identity* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, upb_StringView_FromString(""));
+}
+UPB_INLINE bool grpc_gcp_Identity_has_attributes(const grpc_gcp_Identity* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void grpc_gcp_Identity_clear_attributes(const grpc_gcp_Identity* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE size_t grpc_gcp_Identity_attributes_size(const grpc_gcp_Identity* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE bool grpc_gcp_Identity_attributes_get(const grpc_gcp_Identity* msg, upb_StringView key, upb_StringView* val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(12, 24), &key, 0, val, 0);
+}
+UPB_INLINE const grpc_gcp_Identity_AttributesEntry* grpc_gcp_Identity_attributes_next(const grpc_gcp_Identity* msg, size_t* iter) {
+ return (const grpc_gcp_Identity_AttributesEntry*)_upb_msg_map_next(msg, UPB_SIZE(12, 24), iter);
+}
UPB_INLINE void grpc_gcp_Identity_set_service_account(grpc_gcp_Identity *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(12, 24), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
UPB_INLINE void grpc_gcp_Identity_set_hostname(grpc_gcp_Identity *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
+}
+UPB_INLINE void grpc_gcp_Identity_attributes_clear(grpc_gcp_Identity* msg) { _upb_msg_map_clear(msg, UPB_SIZE(12, 24)); }
+UPB_INLINE bool grpc_gcp_Identity_attributes_set(grpc_gcp_Identity* msg, upb_StringView key, upb_StringView val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(12, 24), &key, 0, &val, 0, a);
+}
+UPB_INLINE bool grpc_gcp_Identity_attributes_delete(grpc_gcp_Identity* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(12, 24), &key, 0);
+}
+UPB_INLINE grpc_gcp_Identity_AttributesEntry* grpc_gcp_Identity_attributes_nextmutable(grpc_gcp_Identity* msg, size_t* iter) {
+ return (grpc_gcp_Identity_AttributesEntry*)_upb_msg_map_next(msg, UPB_SIZE(12, 24), iter);
}
-UPB_INLINE void grpc_gcp_Identity_attributes_clear(grpc_gcp_Identity *msg) { _upb_msg_map_clear(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE bool grpc_gcp_Identity_attributes_set(grpc_gcp_Identity *msg, upb_StringView key, upb_StringView val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(0, 0), &key, 0, &val, 0, a); }
-UPB_INLINE bool grpc_gcp_Identity_attributes_delete(grpc_gcp_Identity *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(0, 0), &key, 0); }
-UPB_INLINE grpc_gcp_Identity_AttributesEntry* grpc_gcp_Identity_attributes_nextmutable(grpc_gcp_Identity *msg, size_t* iter) { return (grpc_gcp_Identity_AttributesEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter); }
/* grpc.gcp.Identity.AttributesEntry */
-UPB_INLINE upb_StringView grpc_gcp_Identity_AttributesEntry_key(const grpc_gcp_Identity_AttributesEntry *msg) {
+UPB_INLINE upb_StringView grpc_gcp_Identity_AttributesEntry_key(const grpc_gcp_Identity_AttributesEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE upb_StringView grpc_gcp_Identity_AttributesEntry_value(const grpc_gcp_Identity_AttributesEntry *msg) {
+UPB_INLINE upb_StringView grpc_gcp_Identity_AttributesEntry_value(const grpc_gcp_Identity_AttributesEntry* msg) {
upb_StringView ret;
_upb_msg_map_value(msg, &ret, 0);
return ret;
@@ -224,37 +273,87 @@ UPB_INLINE grpc_gcp_StartClientHandshakeReq* grpc_gcp_StartClientHandshakeReq_pa
return ret;
}
UPB_INLINE char* grpc_gcp_StartClientHandshakeReq_serialize(const grpc_gcp_StartClientHandshakeReq* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_StartClientHandshakeReq_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_StartClientHandshakeReq_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_gcp_StartClientHandshakeReq_serialize_ex(const grpc_gcp_StartClientHandshakeReq* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_StartClientHandshakeReq_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_StartClientHandshakeReq_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_gcp_StartClientHandshakeReq_clear_handshake_security_protocol(const grpc_gcp_StartClientHandshakeReq* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t grpc_gcp_StartClientHandshakeReq_handshake_security_protocol(const grpc_gcp_StartClientHandshakeReq* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE upb_StringView const* grpc_gcp_StartClientHandshakeReq_application_protocols(const grpc_gcp_StartClientHandshakeReq *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(36, 64), len); }
-UPB_INLINE upb_StringView const* grpc_gcp_StartClientHandshakeReq_record_protocols(const grpc_gcp_StartClientHandshakeReq *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(40, 72), len); }
-UPB_INLINE bool grpc_gcp_StartClientHandshakeReq_has_target_identities(const grpc_gcp_StartClientHandshakeReq *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 80)); }
-UPB_INLINE const grpc_gcp_Identity* const* grpc_gcp_StartClientHandshakeReq_target_identities(const grpc_gcp_StartClientHandshakeReq *msg, size_t *len) { return (const grpc_gcp_Identity* const*)_upb_array_accessor(msg, UPB_SIZE(44, 80), len); }
-UPB_INLINE bool grpc_gcp_StartClientHandshakeReq_has_local_identity(const grpc_gcp_StartClientHandshakeReq *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE void grpc_gcp_StartClientHandshakeReq_clear_application_protocols(const grpc_gcp_StartClientHandshakeReq* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE upb_StringView const* grpc_gcp_StartClientHandshakeReq_application_protocols(const grpc_gcp_StartClientHandshakeReq* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len);
+}
+UPB_INLINE void grpc_gcp_StartClientHandshakeReq_clear_record_protocols(const grpc_gcp_StartClientHandshakeReq* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE upb_StringView const* grpc_gcp_StartClientHandshakeReq_record_protocols(const grpc_gcp_StartClientHandshakeReq* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(16, 24), len);
+}
+UPB_INLINE bool grpc_gcp_StartClientHandshakeReq_has_target_identities(const grpc_gcp_StartClientHandshakeReq* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 32));
+}
+UPB_INLINE void grpc_gcp_StartClientHandshakeReq_clear_target_identities(const grpc_gcp_StartClientHandshakeReq* msg) {
+ _upb_array_detach(msg, UPB_SIZE(20, 32));
+}
+UPB_INLINE const grpc_gcp_Identity* const* grpc_gcp_StartClientHandshakeReq_target_identities(const grpc_gcp_StartClientHandshakeReq* msg, size_t* len) {
+ return (const grpc_gcp_Identity* const*)_upb_array_accessor(msg, UPB_SIZE(20, 32), len);
+}
+UPB_INLINE bool grpc_gcp_StartClientHandshakeReq_has_local_identity(const grpc_gcp_StartClientHandshakeReq* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void grpc_gcp_StartClientHandshakeReq_clear_local_identity(const grpc_gcp_StartClientHandshakeReq* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const grpc_gcp_Identity* grpc_gcp_StartClientHandshakeReq_local_identity(const grpc_gcp_StartClientHandshakeReq* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const grpc_gcp_Identity*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const grpc_gcp_Identity*);
+}
+UPB_INLINE bool grpc_gcp_StartClientHandshakeReq_has_local_endpoint(const grpc_gcp_StartClientHandshakeReq* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void grpc_gcp_StartClientHandshakeReq_clear_local_endpoint(const grpc_gcp_StartClientHandshakeReq* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const upb_Message*) = NULL;
}
-UPB_INLINE bool grpc_gcp_StartClientHandshakeReq_has_local_endpoint(const grpc_gcp_StartClientHandshakeReq *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const grpc_gcp_Endpoint* grpc_gcp_StartClientHandshakeReq_local_endpoint(const grpc_gcp_StartClientHandshakeReq* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const grpc_gcp_Endpoint*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const grpc_gcp_Endpoint*);
+}
+UPB_INLINE bool grpc_gcp_StartClientHandshakeReq_has_remote_endpoint(const grpc_gcp_StartClientHandshakeReq* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void grpc_gcp_StartClientHandshakeReq_clear_remote_endpoint(const grpc_gcp_StartClientHandshakeReq* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool grpc_gcp_StartClientHandshakeReq_has_remote_endpoint(const grpc_gcp_StartClientHandshakeReq *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const grpc_gcp_Endpoint* grpc_gcp_StartClientHandshakeReq_remote_endpoint(const grpc_gcp_StartClientHandshakeReq* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const grpc_gcp_Endpoint*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const grpc_gcp_Endpoint*);
+}
+UPB_INLINE void grpc_gcp_StartClientHandshakeReq_clear_target_name(const grpc_gcp_StartClientHandshakeReq* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView grpc_gcp_StartClientHandshakeReq_target_name(const grpc_gcp_StartClientHandshakeReq* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), upb_StringView);
+}
+UPB_INLINE bool grpc_gcp_StartClientHandshakeReq_has_rpc_versions(const grpc_gcp_StartClientHandshakeReq* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void grpc_gcp_StartClientHandshakeReq_clear_rpc_versions(const grpc_gcp_StartClientHandshakeReq* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const upb_Message*) = NULL;
}
-UPB_INLINE bool grpc_gcp_StartClientHandshakeReq_has_rpc_versions(const grpc_gcp_StartClientHandshakeReq *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const struct grpc_gcp_RpcProtocolVersions* grpc_gcp_StartClientHandshakeReq_rpc_versions(const grpc_gcp_StartClientHandshakeReq* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const struct grpc_gcp_RpcProtocolVersions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const struct grpc_gcp_RpcProtocolVersions*);
+}
+UPB_INLINE void grpc_gcp_StartClientHandshakeReq_clear_max_frame_size(const grpc_gcp_StartClientHandshakeReq* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint32_t) = 0;
}
UPB_INLINE uint32_t grpc_gcp_StartClientHandshakeReq_max_frame_size(const grpc_gcp_StartClientHandshakeReq* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint32_t);
@@ -263,44 +362,41 @@ UPB_INLINE uint32_t grpc_gcp_StartClientHandshakeReq_max_frame_size(const grpc_g
UPB_INLINE void grpc_gcp_StartClientHandshakeReq_set_handshake_security_protocol(grpc_gcp_StartClientHandshakeReq *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
-UPB_INLINE upb_StringView* grpc_gcp_StartClientHandshakeReq_mutable_application_protocols(grpc_gcp_StartClientHandshakeReq *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(36, 64), len);
+UPB_INLINE upb_StringView* grpc_gcp_StartClientHandshakeReq_mutable_application_protocols(grpc_gcp_StartClientHandshakeReq* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 16), len);
}
-UPB_INLINE upb_StringView* grpc_gcp_StartClientHandshakeReq_resize_application_protocols(grpc_gcp_StartClientHandshakeReq *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(36, 64), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* grpc_gcp_StartClientHandshakeReq_resize_application_protocols(grpc_gcp_StartClientHandshakeReq* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 16), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool grpc_gcp_StartClientHandshakeReq_add_application_protocols(grpc_gcp_StartClientHandshakeReq *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(36, 64), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool grpc_gcp_StartClientHandshakeReq_add_application_protocols(grpc_gcp_StartClientHandshakeReq* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 16), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE upb_StringView* grpc_gcp_StartClientHandshakeReq_mutable_record_protocols(grpc_gcp_StartClientHandshakeReq *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(40, 72), len);
+UPB_INLINE upb_StringView* grpc_gcp_StartClientHandshakeReq_mutable_record_protocols(grpc_gcp_StartClientHandshakeReq* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 24), len);
}
-UPB_INLINE upb_StringView* grpc_gcp_StartClientHandshakeReq_resize_record_protocols(grpc_gcp_StartClientHandshakeReq *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(40, 72), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* grpc_gcp_StartClientHandshakeReq_resize_record_protocols(grpc_gcp_StartClientHandshakeReq* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 24), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool grpc_gcp_StartClientHandshakeReq_add_record_protocols(grpc_gcp_StartClientHandshakeReq *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(40, 72), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool grpc_gcp_StartClientHandshakeReq_add_record_protocols(grpc_gcp_StartClientHandshakeReq* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 24), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE grpc_gcp_Identity** grpc_gcp_StartClientHandshakeReq_mutable_target_identities(grpc_gcp_StartClientHandshakeReq *msg, size_t *len) {
- return (grpc_gcp_Identity**)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 80), len);
+UPB_INLINE grpc_gcp_Identity** grpc_gcp_StartClientHandshakeReq_mutable_target_identities(grpc_gcp_StartClientHandshakeReq* msg, size_t* len) {
+ return (grpc_gcp_Identity**)_upb_array_mutable_accessor(msg, UPB_SIZE(20, 32), len);
}
-UPB_INLINE grpc_gcp_Identity** grpc_gcp_StartClientHandshakeReq_resize_target_identities(grpc_gcp_StartClientHandshakeReq *msg, size_t len, upb_Arena *arena) {
- return (grpc_gcp_Identity**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 80), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE grpc_gcp_Identity** grpc_gcp_StartClientHandshakeReq_resize_target_identities(grpc_gcp_StartClientHandshakeReq* msg, size_t len, upb_Arena* arena) {
+ return (grpc_gcp_Identity**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(20, 32), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct grpc_gcp_Identity* grpc_gcp_StartClientHandshakeReq_add_target_identities(grpc_gcp_StartClientHandshakeReq *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_Identity* grpc_gcp_StartClientHandshakeReq_add_target_identities(grpc_gcp_StartClientHandshakeReq* msg, upb_Arena* arena) {
struct grpc_gcp_Identity* sub = (struct grpc_gcp_Identity*)_upb_Message_New(&grpc_gcp_Identity_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(44, 80), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(20, 32), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
UPB_INLINE void grpc_gcp_StartClientHandshakeReq_set_local_identity(grpc_gcp_StartClientHandshakeReq *msg, grpc_gcp_Identity* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 32), grpc_gcp_Identity*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), grpc_gcp_Identity*) = value;
}
-UPB_INLINE struct grpc_gcp_Identity* grpc_gcp_StartClientHandshakeReq_mutable_local_identity(grpc_gcp_StartClientHandshakeReq *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_Identity* grpc_gcp_StartClientHandshakeReq_mutable_local_identity(grpc_gcp_StartClientHandshakeReq* msg, upb_Arena* arena) {
struct grpc_gcp_Identity* sub = (struct grpc_gcp_Identity*)grpc_gcp_StartClientHandshakeReq_local_identity(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_Identity*)_upb_Message_New(&grpc_gcp_Identity_msginit, arena);
@@ -311,9 +407,9 @@ UPB_INLINE struct grpc_gcp_Identity* grpc_gcp_StartClientHandshakeReq_mutable_lo
}
UPB_INLINE void grpc_gcp_StartClientHandshakeReq_set_local_endpoint(grpc_gcp_StartClientHandshakeReq *msg, grpc_gcp_Endpoint* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), grpc_gcp_Endpoint*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), grpc_gcp_Endpoint*) = value;
}
-UPB_INLINE struct grpc_gcp_Endpoint* grpc_gcp_StartClientHandshakeReq_mutable_local_endpoint(grpc_gcp_StartClientHandshakeReq *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_Endpoint* grpc_gcp_StartClientHandshakeReq_mutable_local_endpoint(grpc_gcp_StartClientHandshakeReq* msg, upb_Arena* arena) {
struct grpc_gcp_Endpoint* sub = (struct grpc_gcp_Endpoint*)grpc_gcp_StartClientHandshakeReq_local_endpoint(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_Endpoint*)_upb_Message_New(&grpc_gcp_Endpoint_msginit, arena);
@@ -324,9 +420,9 @@ UPB_INLINE struct grpc_gcp_Endpoint* grpc_gcp_StartClientHandshakeReq_mutable_lo
}
UPB_INLINE void grpc_gcp_StartClientHandshakeReq_set_remote_endpoint(grpc_gcp_StartClientHandshakeReq *msg, grpc_gcp_Endpoint* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 48), grpc_gcp_Endpoint*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), grpc_gcp_Endpoint*) = value;
}
-UPB_INLINE struct grpc_gcp_Endpoint* grpc_gcp_StartClientHandshakeReq_mutable_remote_endpoint(grpc_gcp_StartClientHandshakeReq *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_Endpoint* grpc_gcp_StartClientHandshakeReq_mutable_remote_endpoint(grpc_gcp_StartClientHandshakeReq* msg, upb_Arena* arena) {
struct grpc_gcp_Endpoint* sub = (struct grpc_gcp_Endpoint*)grpc_gcp_StartClientHandshakeReq_remote_endpoint(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_Endpoint*)_upb_Message_New(&grpc_gcp_Endpoint_msginit, arena);
@@ -336,13 +432,13 @@ UPB_INLINE struct grpc_gcp_Endpoint* grpc_gcp_StartClientHandshakeReq_mutable_re
return sub;
}
UPB_INLINE void grpc_gcp_StartClientHandshakeReq_set_target_name(grpc_gcp_StartClientHandshakeReq *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), upb_StringView) = value;
}
UPB_INLINE void grpc_gcp_StartClientHandshakeReq_set_rpc_versions(grpc_gcp_StartClientHandshakeReq *msg, struct grpc_gcp_RpcProtocolVersions* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 56), struct grpc_gcp_RpcProtocolVersions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 80), struct grpc_gcp_RpcProtocolVersions*) = value;
}
-UPB_INLINE struct grpc_gcp_RpcProtocolVersions* grpc_gcp_StartClientHandshakeReq_mutable_rpc_versions(grpc_gcp_StartClientHandshakeReq *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_RpcProtocolVersions* grpc_gcp_StartClientHandshakeReq_mutable_rpc_versions(grpc_gcp_StartClientHandshakeReq* msg, upb_Arena* arena) {
struct grpc_gcp_RpcProtocolVersions* sub = (struct grpc_gcp_RpcProtocolVersions*)grpc_gcp_StartClientHandshakeReq_rpc_versions(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_RpcProtocolVersions*)_upb_Message_New(&grpc_gcp_RpcProtocolVersions_msginit, arena);
@@ -380,36 +476,50 @@ UPB_INLINE grpc_gcp_ServerHandshakeParameters* grpc_gcp_ServerHandshakeParameter
return ret;
}
UPB_INLINE char* grpc_gcp_ServerHandshakeParameters_serialize(const grpc_gcp_ServerHandshakeParameters* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_ServerHandshakeParameters_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_ServerHandshakeParameters_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_gcp_ServerHandshakeParameters_serialize_ex(const grpc_gcp_ServerHandshakeParameters* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_ServerHandshakeParameters_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_ServerHandshakeParameters_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_gcp_ServerHandshakeParameters_clear_record_protocols(const grpc_gcp_ServerHandshakeParameters* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE upb_StringView const* grpc_gcp_ServerHandshakeParameters_record_protocols(const grpc_gcp_ServerHandshakeParameters* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE bool grpc_gcp_ServerHandshakeParameters_has_local_identities(const grpc_gcp_ServerHandshakeParameters* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void grpc_gcp_ServerHandshakeParameters_clear_local_identities(const grpc_gcp_ServerHandshakeParameters* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const grpc_gcp_Identity* const* grpc_gcp_ServerHandshakeParameters_local_identities(const grpc_gcp_ServerHandshakeParameters* msg, size_t* len) {
+ return (const grpc_gcp_Identity* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE upb_StringView const* grpc_gcp_ServerHandshakeParameters_record_protocols(const grpc_gcp_ServerHandshakeParameters *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE bool grpc_gcp_ServerHandshakeParameters_has_local_identities(const grpc_gcp_ServerHandshakeParameters *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8)); }
-UPB_INLINE const grpc_gcp_Identity* const* grpc_gcp_ServerHandshakeParameters_local_identities(const grpc_gcp_ServerHandshakeParameters *msg, size_t *len) { return (const grpc_gcp_Identity* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
-UPB_INLINE upb_StringView* grpc_gcp_ServerHandshakeParameters_mutable_record_protocols(grpc_gcp_ServerHandshakeParameters *msg, size_t *len) {
+UPB_INLINE upb_StringView* grpc_gcp_ServerHandshakeParameters_mutable_record_protocols(grpc_gcp_ServerHandshakeParameters* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE upb_StringView* grpc_gcp_ServerHandshakeParameters_resize_record_protocols(grpc_gcp_ServerHandshakeParameters *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* grpc_gcp_ServerHandshakeParameters_resize_record_protocols(grpc_gcp_ServerHandshakeParameters* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool grpc_gcp_ServerHandshakeParameters_add_record_protocols(grpc_gcp_ServerHandshakeParameters *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool grpc_gcp_ServerHandshakeParameters_add_record_protocols(grpc_gcp_ServerHandshakeParameters* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE grpc_gcp_Identity** grpc_gcp_ServerHandshakeParameters_mutable_local_identities(grpc_gcp_ServerHandshakeParameters *msg, size_t *len) {
+UPB_INLINE grpc_gcp_Identity** grpc_gcp_ServerHandshakeParameters_mutable_local_identities(grpc_gcp_ServerHandshakeParameters* msg, size_t* len) {
return (grpc_gcp_Identity**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE grpc_gcp_Identity** grpc_gcp_ServerHandshakeParameters_resize_local_identities(grpc_gcp_ServerHandshakeParameters *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE grpc_gcp_Identity** grpc_gcp_ServerHandshakeParameters_resize_local_identities(grpc_gcp_ServerHandshakeParameters* msg, size_t len, upb_Arena* arena) {
return (grpc_gcp_Identity**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct grpc_gcp_Identity* grpc_gcp_ServerHandshakeParameters_add_local_identities(grpc_gcp_ServerHandshakeParameters *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_Identity* grpc_gcp_ServerHandshakeParameters_add_local_identities(grpc_gcp_ServerHandshakeParameters* msg, upb_Arena* arena) {
struct grpc_gcp_Identity* sub = (struct grpc_gcp_Identity*)_upb_Message_New(&grpc_gcp_Identity_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -439,58 +549,104 @@ UPB_INLINE grpc_gcp_StartServerHandshakeReq* grpc_gcp_StartServerHandshakeReq_pa
return ret;
}
UPB_INLINE char* grpc_gcp_StartServerHandshakeReq_serialize(const grpc_gcp_StartServerHandshakeReq* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_StartServerHandshakeReq_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_StartServerHandshakeReq_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_gcp_StartServerHandshakeReq_serialize_ex(const grpc_gcp_StartServerHandshakeReq* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_StartServerHandshakeReq_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_StartServerHandshakeReq_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_gcp_StartServerHandshakeReq_clear_application_protocols(const grpc_gcp_StartServerHandshakeReq* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 8));
+}
+UPB_INLINE upb_StringView const* grpc_gcp_StartServerHandshakeReq_application_protocols(const grpc_gcp_StartServerHandshakeReq* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 8), len);
+}
+UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_has_handshake_parameters(const grpc_gcp_StartServerHandshakeReq* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE void grpc_gcp_StartServerHandshakeReq_clear_handshake_parameters(const grpc_gcp_StartServerHandshakeReq* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE size_t grpc_gcp_StartServerHandshakeReq_handshake_parameters_size(const grpc_gcp_StartServerHandshakeReq* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_handshake_parameters_get(const grpc_gcp_StartServerHandshakeReq* msg, int32_t key, grpc_gcp_ServerHandshakeParameters** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(12, 16), &key, sizeof(key), val, sizeof(*val));
+}
+UPB_INLINE const grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry* grpc_gcp_StartServerHandshakeReq_handshake_parameters_next(const grpc_gcp_StartServerHandshakeReq* msg, size_t* iter) {
+ return (const grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry*)_upb_msg_map_next(msg, UPB_SIZE(12, 16), iter);
+}
+UPB_INLINE void grpc_gcp_StartServerHandshakeReq_clear_in_bytes(const grpc_gcp_StartServerHandshakeReq* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
-UPB_INLINE upb_StringView const* grpc_gcp_StartServerHandshakeReq_application_protocols(const grpc_gcp_StartServerHandshakeReq *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(28, 48), len); }
-UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_has_handshake_parameters(const grpc_gcp_StartServerHandshakeReq *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 56)); }
-UPB_INLINE size_t grpc_gcp_StartServerHandshakeReq_handshake_parameters_size(const grpc_gcp_StartServerHandshakeReq *msg) {return _upb_msg_map_size(msg, UPB_SIZE(32, 56)); }
-UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_handshake_parameters_get(const grpc_gcp_StartServerHandshakeReq *msg, int32_t key, grpc_gcp_ServerHandshakeParameters* *val) { return _upb_msg_map_get(msg, UPB_SIZE(32, 56), &key, sizeof(key), val, sizeof(*val)); }
-UPB_INLINE const grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry* grpc_gcp_StartServerHandshakeReq_handshake_parameters_next(const grpc_gcp_StartServerHandshakeReq *msg, size_t* iter) { return (const grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry*)_upb_msg_map_next(msg, UPB_SIZE(32, 56), iter); }
UPB_INLINE upb_StringView grpc_gcp_StartServerHandshakeReq_in_bytes(const grpc_gcp_StartServerHandshakeReq* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+}
+UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_has_local_endpoint(const grpc_gcp_StartServerHandshakeReq* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void grpc_gcp_StartServerHandshakeReq_clear_local_endpoint(const grpc_gcp_StartServerHandshakeReq* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
}
-UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_has_local_endpoint(const grpc_gcp_StartServerHandshakeReq *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const grpc_gcp_Endpoint* grpc_gcp_StartServerHandshakeReq_local_endpoint(const grpc_gcp_StartServerHandshakeReq* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const grpc_gcp_Endpoint*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const grpc_gcp_Endpoint*);
+}
+UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_has_remote_endpoint(const grpc_gcp_StartServerHandshakeReq* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void grpc_gcp_StartServerHandshakeReq_clear_remote_endpoint(const grpc_gcp_StartServerHandshakeReq* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const upb_Message*) = NULL;
}
-UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_has_remote_endpoint(const grpc_gcp_StartServerHandshakeReq *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const grpc_gcp_Endpoint* grpc_gcp_StartServerHandshakeReq_remote_endpoint(const grpc_gcp_StartServerHandshakeReq* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const grpc_gcp_Endpoint*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const grpc_gcp_Endpoint*);
+}
+UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_has_rpc_versions(const grpc_gcp_StartServerHandshakeReq* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void grpc_gcp_StartServerHandshakeReq_clear_rpc_versions(const grpc_gcp_StartServerHandshakeReq* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_has_rpc_versions(const grpc_gcp_StartServerHandshakeReq *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct grpc_gcp_RpcProtocolVersions* grpc_gcp_StartServerHandshakeReq_rpc_versions(const grpc_gcp_StartServerHandshakeReq* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct grpc_gcp_RpcProtocolVersions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const struct grpc_gcp_RpcProtocolVersions*);
+}
+UPB_INLINE void grpc_gcp_StartServerHandshakeReq_clear_max_frame_size(const grpc_gcp_StartServerHandshakeReq* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = 0;
}
UPB_INLINE uint32_t grpc_gcp_StartServerHandshakeReq_max_frame_size(const grpc_gcp_StartServerHandshakeReq* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
}
-UPB_INLINE upb_StringView* grpc_gcp_StartServerHandshakeReq_mutable_application_protocols(grpc_gcp_StartServerHandshakeReq *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 48), len);
+UPB_INLINE upb_StringView* grpc_gcp_StartServerHandshakeReq_mutable_application_protocols(grpc_gcp_StartServerHandshakeReq* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 8), len);
}
-UPB_INLINE upb_StringView* grpc_gcp_StartServerHandshakeReq_resize_application_protocols(grpc_gcp_StartServerHandshakeReq *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 48), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* grpc_gcp_StartServerHandshakeReq_resize_application_protocols(grpc_gcp_StartServerHandshakeReq* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 8), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_add_application_protocols(grpc_gcp_StartServerHandshakeReq *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 48), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_add_application_protocols(grpc_gcp_StartServerHandshakeReq* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 8), UPB_SIZE(3, 4), &val, arena);
+}
+UPB_INLINE void grpc_gcp_StartServerHandshakeReq_handshake_parameters_clear(grpc_gcp_StartServerHandshakeReq* msg) { _upb_msg_map_clear(msg, UPB_SIZE(12, 16)); }
+UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_handshake_parameters_set(grpc_gcp_StartServerHandshakeReq* msg, int32_t key, grpc_gcp_ServerHandshakeParameters* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(12, 16), &key, sizeof(key), &val, sizeof(val), a);
+}
+UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_handshake_parameters_delete(grpc_gcp_StartServerHandshakeReq* msg, int32_t key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(12, 16), &key, sizeof(key));
+}
+UPB_INLINE grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry* grpc_gcp_StartServerHandshakeReq_handshake_parameters_nextmutable(grpc_gcp_StartServerHandshakeReq* msg, size_t* iter) {
+ return (grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry*)_upb_msg_map_next(msg, UPB_SIZE(12, 16), iter);
}
-UPB_INLINE void grpc_gcp_StartServerHandshakeReq_handshake_parameters_clear(grpc_gcp_StartServerHandshakeReq *msg) { _upb_msg_map_clear(msg, UPB_SIZE(32, 56)); }
-UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_handshake_parameters_set(grpc_gcp_StartServerHandshakeReq *msg, int32_t key, grpc_gcp_ServerHandshakeParameters* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(32, 56), &key, sizeof(key), &val, sizeof(val), a); }
-UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_handshake_parameters_delete(grpc_gcp_StartServerHandshakeReq *msg, int32_t key) { return _upb_msg_map_delete(msg, UPB_SIZE(32, 56), &key, sizeof(key)); }
-UPB_INLINE grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry* grpc_gcp_StartServerHandshakeReq_handshake_parameters_nextmutable(grpc_gcp_StartServerHandshakeReq *msg, size_t* iter) { return (grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry*)_upb_msg_map_next(msg, UPB_SIZE(32, 56), iter); }
UPB_INLINE void grpc_gcp_StartServerHandshakeReq_set_in_bytes(grpc_gcp_StartServerHandshakeReq *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
}
UPB_INLINE void grpc_gcp_StartServerHandshakeReq_set_local_endpoint(grpc_gcp_StartServerHandshakeReq *msg, grpc_gcp_Endpoint* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 24), grpc_gcp_Endpoint*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), grpc_gcp_Endpoint*) = value;
}
-UPB_INLINE struct grpc_gcp_Endpoint* grpc_gcp_StartServerHandshakeReq_mutable_local_endpoint(grpc_gcp_StartServerHandshakeReq *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_Endpoint* grpc_gcp_StartServerHandshakeReq_mutable_local_endpoint(grpc_gcp_StartServerHandshakeReq* msg, upb_Arena* arena) {
struct grpc_gcp_Endpoint* sub = (struct grpc_gcp_Endpoint*)grpc_gcp_StartServerHandshakeReq_local_endpoint(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_Endpoint*)_upb_Message_New(&grpc_gcp_Endpoint_msginit, arena);
@@ -501,9 +657,9 @@ UPB_INLINE struct grpc_gcp_Endpoint* grpc_gcp_StartServerHandshakeReq_mutable_lo
}
UPB_INLINE void grpc_gcp_StartServerHandshakeReq_set_remote_endpoint(grpc_gcp_StartServerHandshakeReq *msg, grpc_gcp_Endpoint* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(20, 32), grpc_gcp_Endpoint*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), grpc_gcp_Endpoint*) = value;
}
-UPB_INLINE struct grpc_gcp_Endpoint* grpc_gcp_StartServerHandshakeReq_mutable_remote_endpoint(grpc_gcp_StartServerHandshakeReq *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_Endpoint* grpc_gcp_StartServerHandshakeReq_mutable_remote_endpoint(grpc_gcp_StartServerHandshakeReq* msg, upb_Arena* arena) {
struct grpc_gcp_Endpoint* sub = (struct grpc_gcp_Endpoint*)grpc_gcp_StartServerHandshakeReq_remote_endpoint(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_Endpoint*)_upb_Message_New(&grpc_gcp_Endpoint_msginit, arena);
@@ -514,9 +670,9 @@ UPB_INLINE struct grpc_gcp_Endpoint* grpc_gcp_StartServerHandshakeReq_mutable_re
}
UPB_INLINE void grpc_gcp_StartServerHandshakeReq_set_rpc_versions(grpc_gcp_StartServerHandshakeReq *msg, struct grpc_gcp_RpcProtocolVersions* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct grpc_gcp_RpcProtocolVersions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), struct grpc_gcp_RpcProtocolVersions*) = value;
}
-UPB_INLINE struct grpc_gcp_RpcProtocolVersions* grpc_gcp_StartServerHandshakeReq_mutable_rpc_versions(grpc_gcp_StartServerHandshakeReq *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_RpcProtocolVersions* grpc_gcp_StartServerHandshakeReq_mutable_rpc_versions(grpc_gcp_StartServerHandshakeReq* msg, upb_Arena* arena) {
struct grpc_gcp_RpcProtocolVersions* sub = (struct grpc_gcp_RpcProtocolVersions*)grpc_gcp_StartServerHandshakeReq_rpc_versions(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_RpcProtocolVersions*)_upb_Message_New(&grpc_gcp_RpcProtocolVersions_msginit, arena);
@@ -531,13 +687,15 @@ UPB_INLINE void grpc_gcp_StartServerHandshakeReq_set_max_frame_size(grpc_gcp_Sta
/* grpc.gcp.StartServerHandshakeReq.HandshakeParametersEntry */
-UPB_INLINE int32_t grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry_key(const grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry *msg) {
+UPB_INLINE int32_t grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry_key(const grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry* msg) {
int32_t ret;
_upb_msg_map_key(msg, &ret, sizeof(ret));
return ret;
}
-UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry_has_value(const grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const grpc_gcp_ServerHandshakeParameters* grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry_value(const grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry *msg) {
+UPB_INLINE bool grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry_has_value(const grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const grpc_gcp_ServerHandshakeParameters* grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry_value(const grpc_gcp_StartServerHandshakeReq_HandshakeParametersEntry* msg) {
grpc_gcp_ServerHandshakeParameters* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -572,11 +730,18 @@ UPB_INLINE grpc_gcp_NextHandshakeMessageReq* grpc_gcp_NextHandshakeMessageReq_pa
return ret;
}
UPB_INLINE char* grpc_gcp_NextHandshakeMessageReq_serialize(const grpc_gcp_NextHandshakeMessageReq* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_NextHandshakeMessageReq_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_NextHandshakeMessageReq_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_gcp_NextHandshakeMessageReq_serialize_ex(const grpc_gcp_NextHandshakeMessageReq* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_NextHandshakeMessageReq_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_NextHandshakeMessageReq_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_gcp_NextHandshakeMessageReq_clear_in_bytes(const grpc_gcp_NextHandshakeMessageReq* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView grpc_gcp_NextHandshakeMessageReq_in_bytes(const grpc_gcp_NextHandshakeMessageReq* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -611,11 +776,15 @@ UPB_INLINE grpc_gcp_HandshakerReq* grpc_gcp_HandshakerReq_parse_ex(const char* b
return ret;
}
UPB_INLINE char* grpc_gcp_HandshakerReq_serialize(const grpc_gcp_HandshakerReq* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_HandshakerReq_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_HandshakerReq_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_gcp_HandshakerReq_serialize_ex(const grpc_gcp_HandshakerReq* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_HandshakerReq_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_HandshakerReq_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
grpc_gcp_HandshakerReq_req_oneof_client_start = 1,
@@ -623,19 +792,41 @@ typedef enum {
grpc_gcp_HandshakerReq_req_oneof_next = 3,
grpc_gcp_HandshakerReq_req_oneof_NOT_SET = 0
} grpc_gcp_HandshakerReq_req_oneof_oneofcases;
-UPB_INLINE grpc_gcp_HandshakerReq_req_oneof_oneofcases grpc_gcp_HandshakerReq_req_oneof_case(const grpc_gcp_HandshakerReq* msg) { return (grpc_gcp_HandshakerReq_req_oneof_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool grpc_gcp_HandshakerReq_has_client_start(const grpc_gcp_HandshakerReq *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const grpc_gcp_StartClientHandshakeReq* grpc_gcp_HandshakerReq_client_start(const grpc_gcp_HandshakerReq *msg) { return UPB_READ_ONEOF(msg, const grpc_gcp_StartClientHandshakeReq*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool grpc_gcp_HandshakerReq_has_server_start(const grpc_gcp_HandshakerReq *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const grpc_gcp_StartServerHandshakeReq* grpc_gcp_HandshakerReq_server_start(const grpc_gcp_HandshakerReq *msg) { return UPB_READ_ONEOF(msg, const grpc_gcp_StartServerHandshakeReq*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool grpc_gcp_HandshakerReq_has_next(const grpc_gcp_HandshakerReq *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const grpc_gcp_NextHandshakeMessageReq* grpc_gcp_HandshakerReq_next(const grpc_gcp_HandshakerReq *msg) { return UPB_READ_ONEOF(msg, const grpc_gcp_NextHandshakeMessageReq*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
+UPB_INLINE grpc_gcp_HandshakerReq_req_oneof_oneofcases grpc_gcp_HandshakerReq_req_oneof_case(const grpc_gcp_HandshakerReq* msg) {
+ return (grpc_gcp_HandshakerReq_req_oneof_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool grpc_gcp_HandshakerReq_has_client_start(const grpc_gcp_HandshakerReq* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void grpc_gcp_HandshakerReq_clear_client_start(const grpc_gcp_HandshakerReq* msg) {
+ UPB_WRITE_ONEOF(msg, grpc_gcp_StartClientHandshakeReq*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), grpc_gcp_HandshakerReq_req_oneof_NOT_SET);
+}
+UPB_INLINE const grpc_gcp_StartClientHandshakeReq* grpc_gcp_HandshakerReq_client_start(const grpc_gcp_HandshakerReq* msg) {
+ return UPB_READ_ONEOF(msg, const grpc_gcp_StartClientHandshakeReq*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool grpc_gcp_HandshakerReq_has_server_start(const grpc_gcp_HandshakerReq* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void grpc_gcp_HandshakerReq_clear_server_start(const grpc_gcp_HandshakerReq* msg) {
+ UPB_WRITE_ONEOF(msg, grpc_gcp_StartServerHandshakeReq*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), grpc_gcp_HandshakerReq_req_oneof_NOT_SET);
+}
+UPB_INLINE const grpc_gcp_StartServerHandshakeReq* grpc_gcp_HandshakerReq_server_start(const grpc_gcp_HandshakerReq* msg) {
+ return UPB_READ_ONEOF(msg, const grpc_gcp_StartServerHandshakeReq*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool grpc_gcp_HandshakerReq_has_next(const grpc_gcp_HandshakerReq* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void grpc_gcp_HandshakerReq_clear_next(const grpc_gcp_HandshakerReq* msg) {
+ UPB_WRITE_ONEOF(msg, grpc_gcp_NextHandshakeMessageReq*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), grpc_gcp_HandshakerReq_req_oneof_NOT_SET);
+}
+UPB_INLINE const grpc_gcp_NextHandshakeMessageReq* grpc_gcp_HandshakerReq_next(const grpc_gcp_HandshakerReq* msg) {
+ return UPB_READ_ONEOF(msg, const grpc_gcp_NextHandshakeMessageReq*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
UPB_INLINE void grpc_gcp_HandshakerReq_set_client_start(grpc_gcp_HandshakerReq *msg, grpc_gcp_StartClientHandshakeReq* value) {
- UPB_WRITE_ONEOF(msg, grpc_gcp_StartClientHandshakeReq*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, grpc_gcp_StartClientHandshakeReq*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct grpc_gcp_StartClientHandshakeReq* grpc_gcp_HandshakerReq_mutable_client_start(grpc_gcp_HandshakerReq *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_StartClientHandshakeReq* grpc_gcp_HandshakerReq_mutable_client_start(grpc_gcp_HandshakerReq* msg, upb_Arena* arena) {
struct grpc_gcp_StartClientHandshakeReq* sub = (struct grpc_gcp_StartClientHandshakeReq*)grpc_gcp_HandshakerReq_client_start(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_StartClientHandshakeReq*)_upb_Message_New(&grpc_gcp_StartClientHandshakeReq_msginit, arena);
@@ -645,9 +836,9 @@ UPB_INLINE struct grpc_gcp_StartClientHandshakeReq* grpc_gcp_HandshakerReq_mutab
return sub;
}
UPB_INLINE void grpc_gcp_HandshakerReq_set_server_start(grpc_gcp_HandshakerReq *msg, grpc_gcp_StartServerHandshakeReq* value) {
- UPB_WRITE_ONEOF(msg, grpc_gcp_StartServerHandshakeReq*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, grpc_gcp_StartServerHandshakeReq*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct grpc_gcp_StartServerHandshakeReq* grpc_gcp_HandshakerReq_mutable_server_start(grpc_gcp_HandshakerReq *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_StartServerHandshakeReq* grpc_gcp_HandshakerReq_mutable_server_start(grpc_gcp_HandshakerReq* msg, upb_Arena* arena) {
struct grpc_gcp_StartServerHandshakeReq* sub = (struct grpc_gcp_StartServerHandshakeReq*)grpc_gcp_HandshakerReq_server_start(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_StartServerHandshakeReq*)_upb_Message_New(&grpc_gcp_StartServerHandshakeReq_msginit, arena);
@@ -657,9 +848,9 @@ UPB_INLINE struct grpc_gcp_StartServerHandshakeReq* grpc_gcp_HandshakerReq_mutab
return sub;
}
UPB_INLINE void grpc_gcp_HandshakerReq_set_next(grpc_gcp_HandshakerReq *msg, grpc_gcp_NextHandshakeMessageReq* value) {
- UPB_WRITE_ONEOF(msg, grpc_gcp_NextHandshakeMessageReq*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, grpc_gcp_NextHandshakeMessageReq*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct grpc_gcp_NextHandshakeMessageReq* grpc_gcp_HandshakerReq_mutable_next(grpc_gcp_HandshakerReq *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_NextHandshakeMessageReq* grpc_gcp_HandshakerReq_mutable_next(grpc_gcp_HandshakerReq* msg, upb_Arena* arena) {
struct grpc_gcp_NextHandshakeMessageReq* sub = (struct grpc_gcp_NextHandshakeMessageReq*)grpc_gcp_HandshakerReq_next(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_NextHandshakeMessageReq*)_upb_Message_New(&grpc_gcp_NextHandshakeMessageReq_msginit, arena);
@@ -694,54 +885,88 @@ UPB_INLINE grpc_gcp_HandshakerResult* grpc_gcp_HandshakerResult_parse_ex(const c
return ret;
}
UPB_INLINE char* grpc_gcp_HandshakerResult_serialize(const grpc_gcp_HandshakerResult* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_HandshakerResult_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_HandshakerResult_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_gcp_HandshakerResult_serialize_ex(const grpc_gcp_HandshakerResult* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_HandshakerResult_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_HandshakerResult_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_gcp_HandshakerResult_clear_application_protocol(const grpc_gcp_HandshakerResult* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView grpc_gcp_HandshakerResult_application_protocol(const grpc_gcp_HandshakerResult* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE void grpc_gcp_HandshakerResult_clear_record_protocol(const grpc_gcp_HandshakerResult* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView grpc_gcp_HandshakerResult_record_protocol(const grpc_gcp_HandshakerResult* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+}
+UPB_INLINE void grpc_gcp_HandshakerResult_clear_key_data(const grpc_gcp_HandshakerResult* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView grpc_gcp_HandshakerResult_key_data(const grpc_gcp_HandshakerResult* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView);
+}
+UPB_INLINE bool grpc_gcp_HandshakerResult_has_peer_identity(const grpc_gcp_HandshakerResult* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void grpc_gcp_HandshakerResult_clear_peer_identity(const grpc_gcp_HandshakerResult* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const upb_Message*) = NULL;
}
-UPB_INLINE bool grpc_gcp_HandshakerResult_has_peer_identity(const grpc_gcp_HandshakerResult *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const grpc_gcp_Identity* grpc_gcp_HandshakerResult_peer_identity(const grpc_gcp_HandshakerResult* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const grpc_gcp_Identity*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 56), const grpc_gcp_Identity*);
+}
+UPB_INLINE bool grpc_gcp_HandshakerResult_has_local_identity(const grpc_gcp_HandshakerResult* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void grpc_gcp_HandshakerResult_clear_local_identity(const grpc_gcp_HandshakerResult* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const upb_Message*) = NULL;
}
-UPB_INLINE bool grpc_gcp_HandshakerResult_has_local_identity(const grpc_gcp_HandshakerResult *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const grpc_gcp_Identity* grpc_gcp_HandshakerResult_local_identity(const grpc_gcp_HandshakerResult* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const grpc_gcp_Identity*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), const grpc_gcp_Identity*);
+}
+UPB_INLINE void grpc_gcp_HandshakerResult_clear_keep_channel_open(const grpc_gcp_HandshakerResult* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
}
UPB_INLINE bool grpc_gcp_HandshakerResult_keep_channel_open(const grpc_gcp_HandshakerResult* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
+}
+UPB_INLINE bool grpc_gcp_HandshakerResult_has_peer_rpc_versions(const grpc_gcp_HandshakerResult* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void grpc_gcp_HandshakerResult_clear_peer_rpc_versions(const grpc_gcp_HandshakerResult* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const upb_Message*) = NULL;
}
-UPB_INLINE bool grpc_gcp_HandshakerResult_has_peer_rpc_versions(const grpc_gcp_HandshakerResult *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE const struct grpc_gcp_RpcProtocolVersions* grpc_gcp_HandshakerResult_peer_rpc_versions(const grpc_gcp_HandshakerResult* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(44, 80), const struct grpc_gcp_RpcProtocolVersions*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 72), const struct grpc_gcp_RpcProtocolVersions*);
+}
+UPB_INLINE void grpc_gcp_HandshakerResult_clear_max_frame_size(const grpc_gcp_HandshakerResult* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = 0;
}
UPB_INLINE uint32_t grpc_gcp_HandshakerResult_max_frame_size(const grpc_gcp_HandshakerResult* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
}
UPB_INLINE void grpc_gcp_HandshakerResult_set_application_protocol(grpc_gcp_HandshakerResult *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
}
UPB_INLINE void grpc_gcp_HandshakerResult_set_record_protocol(grpc_gcp_HandshakerResult *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
}
UPB_INLINE void grpc_gcp_HandshakerResult_set_key_data(grpc_gcp_HandshakerResult *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = value;
}
UPB_INLINE void grpc_gcp_HandshakerResult_set_peer_identity(grpc_gcp_HandshakerResult *msg, grpc_gcp_Identity* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(36, 64), grpc_gcp_Identity*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 56), grpc_gcp_Identity*) = value;
}
-UPB_INLINE struct grpc_gcp_Identity* grpc_gcp_HandshakerResult_mutable_peer_identity(grpc_gcp_HandshakerResult *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_Identity* grpc_gcp_HandshakerResult_mutable_peer_identity(grpc_gcp_HandshakerResult* msg, upb_Arena* arena) {
struct grpc_gcp_Identity* sub = (struct grpc_gcp_Identity*)grpc_gcp_HandshakerResult_peer_identity(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_Identity*)_upb_Message_New(&grpc_gcp_Identity_msginit, arena);
@@ -752,9 +977,9 @@ UPB_INLINE struct grpc_gcp_Identity* grpc_gcp_HandshakerResult_mutable_peer_iden
}
UPB_INLINE void grpc_gcp_HandshakerResult_set_local_identity(grpc_gcp_HandshakerResult *msg, grpc_gcp_Identity* value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 72), grpc_gcp_Identity*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), grpc_gcp_Identity*) = value;
}
-UPB_INLINE struct grpc_gcp_Identity* grpc_gcp_HandshakerResult_mutable_local_identity(grpc_gcp_HandshakerResult *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_Identity* grpc_gcp_HandshakerResult_mutable_local_identity(grpc_gcp_HandshakerResult* msg, upb_Arena* arena) {
struct grpc_gcp_Identity* sub = (struct grpc_gcp_Identity*)grpc_gcp_HandshakerResult_local_identity(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_Identity*)_upb_Message_New(&grpc_gcp_Identity_msginit, arena);
@@ -764,13 +989,13 @@ UPB_INLINE struct grpc_gcp_Identity* grpc_gcp_HandshakerResult_mutable_local_ide
return sub;
}
UPB_INLINE void grpc_gcp_HandshakerResult_set_keep_channel_open(grpc_gcp_HandshakerResult *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
UPB_INLINE void grpc_gcp_HandshakerResult_set_peer_rpc_versions(grpc_gcp_HandshakerResult *msg, struct grpc_gcp_RpcProtocolVersions* value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(44, 80), struct grpc_gcp_RpcProtocolVersions*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 72), struct grpc_gcp_RpcProtocolVersions*) = value;
}
-UPB_INLINE struct grpc_gcp_RpcProtocolVersions* grpc_gcp_HandshakerResult_mutable_peer_rpc_versions(grpc_gcp_HandshakerResult *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_RpcProtocolVersions* grpc_gcp_HandshakerResult_mutable_peer_rpc_versions(grpc_gcp_HandshakerResult* msg, upb_Arena* arena) {
struct grpc_gcp_RpcProtocolVersions* sub = (struct grpc_gcp_RpcProtocolVersions*)grpc_gcp_HandshakerResult_peer_rpc_versions(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_RpcProtocolVersions*)_upb_Message_New(&grpc_gcp_RpcProtocolVersions_msginit, arena);
@@ -808,15 +1033,25 @@ UPB_INLINE grpc_gcp_HandshakerStatus* grpc_gcp_HandshakerStatus_parse_ex(const c
return ret;
}
UPB_INLINE char* grpc_gcp_HandshakerStatus_serialize(const grpc_gcp_HandshakerStatus* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_HandshakerStatus_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_HandshakerStatus_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_gcp_HandshakerStatus_serialize_ex(const grpc_gcp_HandshakerStatus* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_HandshakerStatus_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_HandshakerStatus_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_gcp_HandshakerStatus_clear_code(const grpc_gcp_HandshakerStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = 0;
}
UPB_INLINE uint32_t grpc_gcp_HandshakerStatus_code(const grpc_gcp_HandshakerStatus* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t);
}
+UPB_INLINE void grpc_gcp_HandshakerStatus_clear_details(const grpc_gcp_HandshakerStatus* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView grpc_gcp_HandshakerStatus_details(const grpc_gcp_HandshakerStatus* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
@@ -853,23 +1088,43 @@ UPB_INLINE grpc_gcp_HandshakerResp* grpc_gcp_HandshakerResp_parse_ex(const char*
return ret;
}
UPB_INLINE char* grpc_gcp_HandshakerResp_serialize(const grpc_gcp_HandshakerResp* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_HandshakerResp_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_HandshakerResp_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_gcp_HandshakerResp_serialize_ex(const grpc_gcp_HandshakerResp* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_HandshakerResp_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_HandshakerResp_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_gcp_HandshakerResp_clear_out_frames(const grpc_gcp_HandshakerResp* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView grpc_gcp_HandshakerResp_out_frames(const grpc_gcp_HandshakerResp* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
}
+UPB_INLINE void grpc_gcp_HandshakerResp_clear_bytes_consumed(const grpc_gcp_HandshakerResp* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = 0;
+}
UPB_INLINE uint32_t grpc_gcp_HandshakerResp_bytes_consumed(const grpc_gcp_HandshakerResp* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
}
-UPB_INLINE bool grpc_gcp_HandshakerResp_has_result(const grpc_gcp_HandshakerResp *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool grpc_gcp_HandshakerResp_has_result(const grpc_gcp_HandshakerResp* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void grpc_gcp_HandshakerResp_clear_result(const grpc_gcp_HandshakerResp* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const grpc_gcp_HandshakerResult* grpc_gcp_HandshakerResp_result(const grpc_gcp_HandshakerResp* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const grpc_gcp_HandshakerResult*);
}
-UPB_INLINE bool grpc_gcp_HandshakerResp_has_status(const grpc_gcp_HandshakerResp *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool grpc_gcp_HandshakerResp_has_status(const grpc_gcp_HandshakerResp* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void grpc_gcp_HandshakerResp_clear_status(const grpc_gcp_HandshakerResp* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const grpc_gcp_HandshakerStatus* grpc_gcp_HandshakerResp_status(const grpc_gcp_HandshakerResp* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const grpc_gcp_HandshakerStatus*);
}
@@ -884,7 +1139,7 @@ UPB_INLINE void grpc_gcp_HandshakerResp_set_result(grpc_gcp_HandshakerResp *msg,
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(16, 24), grpc_gcp_HandshakerResult*) = value;
}
-UPB_INLINE struct grpc_gcp_HandshakerResult* grpc_gcp_HandshakerResp_mutable_result(grpc_gcp_HandshakerResp *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_HandshakerResult* grpc_gcp_HandshakerResp_mutable_result(grpc_gcp_HandshakerResp* msg, upb_Arena* arena) {
struct grpc_gcp_HandshakerResult* sub = (struct grpc_gcp_HandshakerResult*)grpc_gcp_HandshakerResp_result(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_HandshakerResult*)_upb_Message_New(&grpc_gcp_HandshakerResult_msginit, arena);
@@ -897,7 +1152,7 @@ UPB_INLINE void grpc_gcp_HandshakerResp_set_status(grpc_gcp_HandshakerResp *msg,
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(20, 32), grpc_gcp_HandshakerStatus*) = value;
}
-UPB_INLINE struct grpc_gcp_HandshakerStatus* grpc_gcp_HandshakerResp_mutable_status(grpc_gcp_HandshakerResp *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_HandshakerStatus* grpc_gcp_HandshakerResp_mutable_status(grpc_gcp_HandshakerResp* msg, upb_Arena* arena) {
struct grpc_gcp_HandshakerStatus* sub = (struct grpc_gcp_HandshakerStatus*)grpc_gcp_HandshakerResp_status(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_HandshakerStatus*)_upb_Message_New(&grpc_gcp_HandshakerStatus_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c
index c8e6fdf2ab..c87e955c2d 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c
@@ -12,30 +12,31 @@
#include "upb/port_def.inc"
-static const upb_MiniTable_Sub grpc_gcp_RpcProtocolVersions_submsgs[1] = {
+static const upb_MiniTable_Sub grpc_gcp_RpcProtocolVersions_submsgs[2] = {
+ {.submsg = &grpc_gcp_RpcProtocolVersions_Version_msginit},
{.submsg = &grpc_gcp_RpcProtocolVersions_Version_msginit},
};
static const upb_MiniTable_Field grpc_gcp_RpcProtocolVersions__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_RpcProtocolVersions_msginit = {
&grpc_gcp_RpcProtocolVersions_submsgs[0],
&grpc_gcp_RpcProtocolVersions__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field grpc_gcp_RpcProtocolVersions_Version__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 4), 0, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_gcp_RpcProtocolVersions_Version_msginit = {
NULL,
&grpc_gcp_RpcProtocolVersions_Version__fields[0],
- UPB_SIZE(8, 8), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 8), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h
index e654b95005..b60c940267 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h
@@ -60,17 +60,31 @@ UPB_INLINE grpc_gcp_RpcProtocolVersions* grpc_gcp_RpcProtocolVersions_parse_ex(c
return ret;
}
UPB_INLINE char* grpc_gcp_RpcProtocolVersions_serialize(const grpc_gcp_RpcProtocolVersions* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_RpcProtocolVersions_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_RpcProtocolVersions_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_gcp_RpcProtocolVersions_serialize_ex(const grpc_gcp_RpcProtocolVersions* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_RpcProtocolVersions_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_RpcProtocolVersions_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool grpc_gcp_RpcProtocolVersions_has_max_rpc_version(const grpc_gcp_RpcProtocolVersions* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void grpc_gcp_RpcProtocolVersions_clear_max_rpc_version(const grpc_gcp_RpcProtocolVersions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool grpc_gcp_RpcProtocolVersions_has_max_rpc_version(const grpc_gcp_RpcProtocolVersions *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const grpc_gcp_RpcProtocolVersions_Version* grpc_gcp_RpcProtocolVersions_max_rpc_version(const grpc_gcp_RpcProtocolVersions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const grpc_gcp_RpcProtocolVersions_Version*);
}
-UPB_INLINE bool grpc_gcp_RpcProtocolVersions_has_min_rpc_version(const grpc_gcp_RpcProtocolVersions *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool grpc_gcp_RpcProtocolVersions_has_min_rpc_version(const grpc_gcp_RpcProtocolVersions* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void grpc_gcp_RpcProtocolVersions_clear_min_rpc_version(const grpc_gcp_RpcProtocolVersions* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const grpc_gcp_RpcProtocolVersions_Version* grpc_gcp_RpcProtocolVersions_min_rpc_version(const grpc_gcp_RpcProtocolVersions* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const grpc_gcp_RpcProtocolVersions_Version*);
}
@@ -79,7 +93,7 @@ UPB_INLINE void grpc_gcp_RpcProtocolVersions_set_max_rpc_version(grpc_gcp_RpcPro
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), grpc_gcp_RpcProtocolVersions_Version*) = value;
}
-UPB_INLINE struct grpc_gcp_RpcProtocolVersions_Version* grpc_gcp_RpcProtocolVersions_mutable_max_rpc_version(grpc_gcp_RpcProtocolVersions *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_RpcProtocolVersions_Version* grpc_gcp_RpcProtocolVersions_mutable_max_rpc_version(grpc_gcp_RpcProtocolVersions* msg, upb_Arena* arena) {
struct grpc_gcp_RpcProtocolVersions_Version* sub = (struct grpc_gcp_RpcProtocolVersions_Version*)grpc_gcp_RpcProtocolVersions_max_rpc_version(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_RpcProtocolVersions_Version*)_upb_Message_New(&grpc_gcp_RpcProtocolVersions_Version_msginit, arena);
@@ -92,7 +106,7 @@ UPB_INLINE void grpc_gcp_RpcProtocolVersions_set_min_rpc_version(grpc_gcp_RpcPro
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), grpc_gcp_RpcProtocolVersions_Version*) = value;
}
-UPB_INLINE struct grpc_gcp_RpcProtocolVersions_Version* grpc_gcp_RpcProtocolVersions_mutable_min_rpc_version(grpc_gcp_RpcProtocolVersions *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_gcp_RpcProtocolVersions_Version* grpc_gcp_RpcProtocolVersions_mutable_min_rpc_version(grpc_gcp_RpcProtocolVersions* msg, upb_Arena* arena) {
struct grpc_gcp_RpcProtocolVersions_Version* sub = (struct grpc_gcp_RpcProtocolVersions_Version*)grpc_gcp_RpcProtocolVersions_min_rpc_version(msg);
if (sub == NULL) {
sub = (struct grpc_gcp_RpcProtocolVersions_Version*)_upb_Message_New(&grpc_gcp_RpcProtocolVersions_Version_msginit, arena);
@@ -127,15 +141,25 @@ UPB_INLINE grpc_gcp_RpcProtocolVersions_Version* grpc_gcp_RpcProtocolVersions_Ve
return ret;
}
UPB_INLINE char* grpc_gcp_RpcProtocolVersions_Version_serialize(const grpc_gcp_RpcProtocolVersions_Version* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_RpcProtocolVersions_Version_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_RpcProtocolVersions_Version_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_gcp_RpcProtocolVersions_Version_serialize_ex(const grpc_gcp_RpcProtocolVersions_Version* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_gcp_RpcProtocolVersions_Version_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_gcp_RpcProtocolVersions_Version_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_gcp_RpcProtocolVersions_Version_clear_major(const grpc_gcp_RpcProtocolVersions_Version* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t) = 0;
}
UPB_INLINE uint32_t grpc_gcp_RpcProtocolVersions_Version_major(const grpc_gcp_RpcProtocolVersions_Version* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), uint32_t);
}
+UPB_INLINE void grpc_gcp_RpcProtocolVersions_Version_clear_minor(const grpc_gcp_RpcProtocolVersions_Version* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = 0;
+}
UPB_INLINE uint32_t grpc_gcp_RpcProtocolVersions_Version_minor(const grpc_gcp_RpcProtocolVersions_Version* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c
index c3345f9d97..76ea0a5008 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c
@@ -13,23 +13,23 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field grpc_health_v1_HealthCheckRequest__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_health_v1_HealthCheckRequest_msginit = {
NULL,
&grpc_health_v1_HealthCheckRequest__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field grpc_health_v1_HealthCheckResponse__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_health_v1_HealthCheckResponse_msginit = {
NULL,
&grpc_health_v1_HealthCheckResponse__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h
index 183d22b225..74f2df4458 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h
@@ -61,11 +61,18 @@ UPB_INLINE grpc_health_v1_HealthCheckRequest* grpc_health_v1_HealthCheckRequest_
return ret;
}
UPB_INLINE char* grpc_health_v1_HealthCheckRequest_serialize(const grpc_health_v1_HealthCheckRequest* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_health_v1_HealthCheckRequest_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_health_v1_HealthCheckRequest_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_health_v1_HealthCheckRequest_serialize_ex(const grpc_health_v1_HealthCheckRequest* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_health_v1_HealthCheckRequest_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_health_v1_HealthCheckRequest_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_health_v1_HealthCheckRequest_clear_service(const grpc_health_v1_HealthCheckRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView grpc_health_v1_HealthCheckRequest_service(const grpc_health_v1_HealthCheckRequest* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -100,11 +107,18 @@ UPB_INLINE grpc_health_v1_HealthCheckResponse* grpc_health_v1_HealthCheckRespons
return ret;
}
UPB_INLINE char* grpc_health_v1_HealthCheckResponse_serialize(const grpc_health_v1_HealthCheckResponse* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_health_v1_HealthCheckResponse_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_health_v1_HealthCheckResponse_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_health_v1_HealthCheckResponse_serialize_ex(const grpc_health_v1_HealthCheckResponse* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_health_v1_HealthCheckResponse_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_health_v1_HealthCheckResponse_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_health_v1_HealthCheckResponse_clear_status(const grpc_health_v1_HealthCheckResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
}
UPB_INLINE int32_t grpc_health_v1_HealthCheckResponse_status(const grpc_health_v1_HealthCheckResponse* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c
index f3f966b2a0..591afb886e 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c
@@ -15,40 +15,40 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub grpc_lb_v1_LoadBalanceRequest_submsgs[2] = {
- {.submsg = &grpc_lb_v1_ClientStats_msginit},
{.submsg = &grpc_lb_v1_InitialLoadBalanceRequest_msginit},
+ {.submsg = &grpc_lb_v1_ClientStats_msginit},
};
static const upb_MiniTable_Field grpc_lb_v1_LoadBalanceRequest__fields[2] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_lb_v1_LoadBalanceRequest_msginit = {
&grpc_lb_v1_LoadBalanceRequest_submsgs[0],
&grpc_lb_v1_LoadBalanceRequest__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field grpc_lb_v1_InitialLoadBalanceRequest__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_lb_v1_InitialLoadBalanceRequest_msginit = {
NULL,
&grpc_lb_v1_InitialLoadBalanceRequest__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field grpc_lb_v1_ClientStatsPerToken__fields[2] = {
- {1, UPB_SIZE(8, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_lb_v1_ClientStatsPerToken_msginit = {
NULL,
&grpc_lb_v1_ClientStatsPerToken__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub grpc_lb_v1_ClientStats_submsgs[2] = {
@@ -57,42 +57,42 @@ static const upb_MiniTable_Sub grpc_lb_v1_ClientStats_submsgs[2] = {
};
static const upb_MiniTable_Field grpc_lb_v1_ClientStats__fields[6] = {
- {1, UPB_SIZE(40, 40), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 16), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(24, 24), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(32, 32), 0, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {8, UPB_SIZE(44, 48), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(24, 32), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(32, 40), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(40, 48), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_lb_v1_ClientStats_msginit = {
&grpc_lb_v1_ClientStats_submsgs[0],
&grpc_lb_v1_ClientStats__fields[0],
- UPB_SIZE(48, 56), 6, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(48, 56), 6, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub grpc_lb_v1_LoadBalanceResponse_submsgs[3] = {
- {.submsg = &grpc_lb_v1_FallbackResponse_msginit},
{.submsg = &grpc_lb_v1_InitialLoadBalanceResponse_msginit},
{.submsg = &grpc_lb_v1_ServerList_msginit},
+ {.submsg = &grpc_lb_v1_FallbackResponse_msginit},
};
static const upb_MiniTable_Field grpc_lb_v1_LoadBalanceResponse__fields[3] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_lb_v1_LoadBalanceResponse_msginit = {
&grpc_lb_v1_LoadBalanceResponse_submsgs[0],
&grpc_lb_v1_LoadBalanceResponse__fields[0],
- UPB_SIZE(8, 16), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(8, 16), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
const upb_MiniTable grpc_lb_v1_FallbackResponse_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub grpc_lb_v1_InitialLoadBalanceResponse_submsgs[1] = {
@@ -100,13 +100,13 @@ static const upb_MiniTable_Sub grpc_lb_v1_InitialLoadBalanceResponse_submsgs[1]
};
static const upb_MiniTable_Field grpc_lb_v1_InitialLoadBalanceResponse__fields[1] = {
- {2, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_lb_v1_InitialLoadBalanceResponse_msginit = {
&grpc_lb_v1_InitialLoadBalanceResponse_submsgs[0],
&grpc_lb_v1_InitialLoadBalanceResponse__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Sub grpc_lb_v1_ServerList_submsgs[1] = {
@@ -114,26 +114,26 @@ static const upb_MiniTable_Sub grpc_lb_v1_ServerList_submsgs[1] = {
};
static const upb_MiniTable_Field grpc_lb_v1_ServerList__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_lb_v1_ServerList_msginit = {
&grpc_lb_v1_ServerList_submsgs[0],
&grpc_lb_v1_ServerList__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field grpc_lb_v1_Server__fields[4] = {
- {1, UPB_SIZE(8, 8), 0, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(4, 4), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_lb_v1_Server_msginit = {
NULL,
&grpc_lb_v1_Server__fields[0],
- UPB_SIZE(24, 48), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable *messages_layout[9] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h
index 5bd011915e..01420dfb80 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h
@@ -79,28 +79,47 @@ UPB_INLINE grpc_lb_v1_LoadBalanceRequest* grpc_lb_v1_LoadBalanceRequest_parse_ex
return ret;
}
UPB_INLINE char* grpc_lb_v1_LoadBalanceRequest_serialize(const grpc_lb_v1_LoadBalanceRequest* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_LoadBalanceRequest_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_LoadBalanceRequest_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_lb_v1_LoadBalanceRequest_serialize_ex(const grpc_lb_v1_LoadBalanceRequest* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_LoadBalanceRequest_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_LoadBalanceRequest_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
grpc_lb_v1_LoadBalanceRequest_load_balance_request_type_initial_request = 1,
grpc_lb_v1_LoadBalanceRequest_load_balance_request_type_client_stats = 2,
grpc_lb_v1_LoadBalanceRequest_load_balance_request_type_NOT_SET = 0
} grpc_lb_v1_LoadBalanceRequest_load_balance_request_type_oneofcases;
-UPB_INLINE grpc_lb_v1_LoadBalanceRequest_load_balance_request_type_oneofcases grpc_lb_v1_LoadBalanceRequest_load_balance_request_type_case(const grpc_lb_v1_LoadBalanceRequest* msg) { return (grpc_lb_v1_LoadBalanceRequest_load_balance_request_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool grpc_lb_v1_LoadBalanceRequest_has_initial_request(const grpc_lb_v1_LoadBalanceRequest *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const grpc_lb_v1_InitialLoadBalanceRequest* grpc_lb_v1_LoadBalanceRequest_initial_request(const grpc_lb_v1_LoadBalanceRequest *msg) { return UPB_READ_ONEOF(msg, const grpc_lb_v1_InitialLoadBalanceRequest*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool grpc_lb_v1_LoadBalanceRequest_has_client_stats(const grpc_lb_v1_LoadBalanceRequest *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const grpc_lb_v1_ClientStats* grpc_lb_v1_LoadBalanceRequest_client_stats(const grpc_lb_v1_LoadBalanceRequest *msg) { return UPB_READ_ONEOF(msg, const grpc_lb_v1_ClientStats*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
+UPB_INLINE grpc_lb_v1_LoadBalanceRequest_load_balance_request_type_oneofcases grpc_lb_v1_LoadBalanceRequest_load_balance_request_type_case(const grpc_lb_v1_LoadBalanceRequest* msg) {
+ return (grpc_lb_v1_LoadBalanceRequest_load_balance_request_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool grpc_lb_v1_LoadBalanceRequest_has_initial_request(const grpc_lb_v1_LoadBalanceRequest* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void grpc_lb_v1_LoadBalanceRequest_clear_initial_request(const grpc_lb_v1_LoadBalanceRequest* msg) {
+ UPB_WRITE_ONEOF(msg, grpc_lb_v1_InitialLoadBalanceRequest*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), grpc_lb_v1_LoadBalanceRequest_load_balance_request_type_NOT_SET);
+}
+UPB_INLINE const grpc_lb_v1_InitialLoadBalanceRequest* grpc_lb_v1_LoadBalanceRequest_initial_request(const grpc_lb_v1_LoadBalanceRequest* msg) {
+ return UPB_READ_ONEOF(msg, const grpc_lb_v1_InitialLoadBalanceRequest*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool grpc_lb_v1_LoadBalanceRequest_has_client_stats(const grpc_lb_v1_LoadBalanceRequest* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void grpc_lb_v1_LoadBalanceRequest_clear_client_stats(const grpc_lb_v1_LoadBalanceRequest* msg) {
+ UPB_WRITE_ONEOF(msg, grpc_lb_v1_ClientStats*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), grpc_lb_v1_LoadBalanceRequest_load_balance_request_type_NOT_SET);
+}
+UPB_INLINE const grpc_lb_v1_ClientStats* grpc_lb_v1_LoadBalanceRequest_client_stats(const grpc_lb_v1_LoadBalanceRequest* msg) {
+ return UPB_READ_ONEOF(msg, const grpc_lb_v1_ClientStats*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
UPB_INLINE void grpc_lb_v1_LoadBalanceRequest_set_initial_request(grpc_lb_v1_LoadBalanceRequest *msg, grpc_lb_v1_InitialLoadBalanceRequest* value) {
- UPB_WRITE_ONEOF(msg, grpc_lb_v1_InitialLoadBalanceRequest*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, grpc_lb_v1_InitialLoadBalanceRequest*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct grpc_lb_v1_InitialLoadBalanceRequest* grpc_lb_v1_LoadBalanceRequest_mutable_initial_request(grpc_lb_v1_LoadBalanceRequest *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_lb_v1_InitialLoadBalanceRequest* grpc_lb_v1_LoadBalanceRequest_mutable_initial_request(grpc_lb_v1_LoadBalanceRequest* msg, upb_Arena* arena) {
struct grpc_lb_v1_InitialLoadBalanceRequest* sub = (struct grpc_lb_v1_InitialLoadBalanceRequest*)grpc_lb_v1_LoadBalanceRequest_initial_request(msg);
if (sub == NULL) {
sub = (struct grpc_lb_v1_InitialLoadBalanceRequest*)_upb_Message_New(&grpc_lb_v1_InitialLoadBalanceRequest_msginit, arena);
@@ -110,9 +129,9 @@ UPB_INLINE struct grpc_lb_v1_InitialLoadBalanceRequest* grpc_lb_v1_LoadBalanceRe
return sub;
}
UPB_INLINE void grpc_lb_v1_LoadBalanceRequest_set_client_stats(grpc_lb_v1_LoadBalanceRequest *msg, grpc_lb_v1_ClientStats* value) {
- UPB_WRITE_ONEOF(msg, grpc_lb_v1_ClientStats*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, grpc_lb_v1_ClientStats*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct grpc_lb_v1_ClientStats* grpc_lb_v1_LoadBalanceRequest_mutable_client_stats(grpc_lb_v1_LoadBalanceRequest *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_lb_v1_ClientStats* grpc_lb_v1_LoadBalanceRequest_mutable_client_stats(grpc_lb_v1_LoadBalanceRequest* msg, upb_Arena* arena) {
struct grpc_lb_v1_ClientStats* sub = (struct grpc_lb_v1_ClientStats*)grpc_lb_v1_LoadBalanceRequest_client_stats(msg);
if (sub == NULL) {
sub = (struct grpc_lb_v1_ClientStats*)_upb_Message_New(&grpc_lb_v1_ClientStats_msginit, arena);
@@ -147,11 +166,18 @@ UPB_INLINE grpc_lb_v1_InitialLoadBalanceRequest* grpc_lb_v1_InitialLoadBalanceRe
return ret;
}
UPB_INLINE char* grpc_lb_v1_InitialLoadBalanceRequest_serialize(const grpc_lb_v1_InitialLoadBalanceRequest* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_InitialLoadBalanceRequest_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_InitialLoadBalanceRequest_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_lb_v1_InitialLoadBalanceRequest_serialize_ex(const grpc_lb_v1_InitialLoadBalanceRequest* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_InitialLoadBalanceRequest_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_InitialLoadBalanceRequest_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_lb_v1_InitialLoadBalanceRequest_clear_name(const grpc_lb_v1_InitialLoadBalanceRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView grpc_lb_v1_InitialLoadBalanceRequest_name(const grpc_lb_v1_InitialLoadBalanceRequest* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -186,24 +212,34 @@ UPB_INLINE grpc_lb_v1_ClientStatsPerToken* grpc_lb_v1_ClientStatsPerToken_parse_
return ret;
}
UPB_INLINE char* grpc_lb_v1_ClientStatsPerToken_serialize(const grpc_lb_v1_ClientStatsPerToken* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_ClientStatsPerToken_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_ClientStatsPerToken_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_lb_v1_ClientStatsPerToken_serialize_ex(const grpc_lb_v1_ClientStatsPerToken* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_ClientStatsPerToken_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_ClientStatsPerToken_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_lb_v1_ClientStatsPerToken_clear_load_balance_token(const grpc_lb_v1_ClientStatsPerToken* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView grpc_lb_v1_ClientStatsPerToken_load_balance_token(const grpc_lb_v1_ClientStatsPerToken* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+}
+UPB_INLINE void grpc_lb_v1_ClientStatsPerToken_clear_num_calls(const grpc_lb_v1_ClientStatsPerToken* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), int64_t) = 0;
}
UPB_INLINE int64_t grpc_lb_v1_ClientStatsPerToken_num_calls(const grpc_lb_v1_ClientStatsPerToken* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), int64_t);
}
UPB_INLINE void grpc_lb_v1_ClientStatsPerToken_set_load_balance_token(grpc_lb_v1_ClientStatsPerToken *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
UPB_INLINE void grpc_lb_v1_ClientStatsPerToken_set_num_calls(grpc_lb_v1_ClientStatsPerToken *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), int64_t) = value;
}
/* grpc.lb.v1.ClientStats */
@@ -231,36 +267,64 @@ UPB_INLINE grpc_lb_v1_ClientStats* grpc_lb_v1_ClientStats_parse_ex(const char* b
return ret;
}
UPB_INLINE char* grpc_lb_v1_ClientStats_serialize(const grpc_lb_v1_ClientStats* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_ClientStats_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_ClientStats_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_lb_v1_ClientStats_serialize_ex(const grpc_lb_v1_ClientStats* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_ClientStats_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_ClientStats_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool grpc_lb_v1_ClientStats_has_timestamp(const grpc_lb_v1_ClientStats* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void grpc_lb_v1_ClientStats_clear_timestamp(const grpc_lb_v1_ClientStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool grpc_lb_v1_ClientStats_has_timestamp(const grpc_lb_v1_ClientStats *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Timestamp* grpc_lb_v1_ClientStats_timestamp(const grpc_lb_v1_ClientStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 40), const struct google_protobuf_Timestamp*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Timestamp*);
+}
+UPB_INLINE void grpc_lb_v1_ClientStats_clear_num_calls_started(const grpc_lb_v1_ClientStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t) = 0;
}
UPB_INLINE int64_t grpc_lb_v1_ClientStats_num_calls_started(const grpc_lb_v1_ClientStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t);
+}
+UPB_INLINE void grpc_lb_v1_ClientStats_clear_num_calls_finished(const grpc_lb_v1_ClientStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t) = 0;
}
UPB_INLINE int64_t grpc_lb_v1_ClientStats_num_calls_finished(const grpc_lb_v1_ClientStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t);
+}
+UPB_INLINE void grpc_lb_v1_ClientStats_clear_num_calls_finished_with_client_failed_to_send(const grpc_lb_v1_ClientStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t) = 0;
}
UPB_INLINE int64_t grpc_lb_v1_ClientStats_num_calls_finished_with_client_failed_to_send(const grpc_lb_v1_ClientStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t);
+}
+UPB_INLINE void grpc_lb_v1_ClientStats_clear_num_calls_finished_known_received(const grpc_lb_v1_ClientStats* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), int64_t) = 0;
}
UPB_INLINE int64_t grpc_lb_v1_ClientStats_num_calls_finished_known_received(const grpc_lb_v1_ClientStats* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 48), int64_t);
+}
+UPB_INLINE bool grpc_lb_v1_ClientStats_has_calls_finished_with_drop(const grpc_lb_v1_ClientStats* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void grpc_lb_v1_ClientStats_clear_calls_finished_with_drop(const grpc_lb_v1_ClientStats* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const grpc_lb_v1_ClientStatsPerToken* const* grpc_lb_v1_ClientStats_calls_finished_with_drop(const grpc_lb_v1_ClientStats* msg, size_t* len) {
+ return (const grpc_lb_v1_ClientStatsPerToken* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE bool grpc_lb_v1_ClientStats_has_calls_finished_with_drop(const grpc_lb_v1_ClientStats *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(44, 48)); }
-UPB_INLINE const grpc_lb_v1_ClientStatsPerToken* const* grpc_lb_v1_ClientStats_calls_finished_with_drop(const grpc_lb_v1_ClientStats *msg, size_t *len) { return (const grpc_lb_v1_ClientStatsPerToken* const*)_upb_array_accessor(msg, UPB_SIZE(44, 48), len); }
UPB_INLINE void grpc_lb_v1_ClientStats_set_timestamp(grpc_lb_v1_ClientStats *msg, struct google_protobuf_Timestamp* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 40), struct google_protobuf_Timestamp*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Timestamp*) = value;
}
-UPB_INLINE struct google_protobuf_Timestamp* grpc_lb_v1_ClientStats_mutable_timestamp(grpc_lb_v1_ClientStats *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* grpc_lb_v1_ClientStats_mutable_timestamp(grpc_lb_v1_ClientStats* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)grpc_lb_v1_ClientStats_timestamp(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -270,27 +334,26 @@ UPB_INLINE struct google_protobuf_Timestamp* grpc_lb_v1_ClientStats_mutable_time
return sub;
}
UPB_INLINE void grpc_lb_v1_ClientStats_set_num_calls_started(grpc_lb_v1_ClientStats *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t) = value;
}
UPB_INLINE void grpc_lb_v1_ClientStats_set_num_calls_finished(grpc_lb_v1_ClientStats *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t) = value;
}
UPB_INLINE void grpc_lb_v1_ClientStats_set_num_calls_finished_with_client_failed_to_send(grpc_lb_v1_ClientStats *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t) = value;
}
UPB_INLINE void grpc_lb_v1_ClientStats_set_num_calls_finished_known_received(grpc_lb_v1_ClientStats *msg, int64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(32, 32), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), int64_t) = value;
}
-UPB_INLINE grpc_lb_v1_ClientStatsPerToken** grpc_lb_v1_ClientStats_mutable_calls_finished_with_drop(grpc_lb_v1_ClientStats *msg, size_t *len) {
- return (grpc_lb_v1_ClientStatsPerToken**)_upb_array_mutable_accessor(msg, UPB_SIZE(44, 48), len);
+UPB_INLINE grpc_lb_v1_ClientStatsPerToken** grpc_lb_v1_ClientStats_mutable_calls_finished_with_drop(grpc_lb_v1_ClientStats* msg, size_t* len) {
+ return (grpc_lb_v1_ClientStatsPerToken**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE grpc_lb_v1_ClientStatsPerToken** grpc_lb_v1_ClientStats_resize_calls_finished_with_drop(grpc_lb_v1_ClientStats *msg, size_t len, upb_Arena *arena) {
- return (grpc_lb_v1_ClientStatsPerToken**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(44, 48), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE grpc_lb_v1_ClientStatsPerToken** grpc_lb_v1_ClientStats_resize_calls_finished_with_drop(grpc_lb_v1_ClientStats* msg, size_t len, upb_Arena* arena) {
+ return (grpc_lb_v1_ClientStatsPerToken**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct grpc_lb_v1_ClientStatsPerToken* grpc_lb_v1_ClientStats_add_calls_finished_with_drop(grpc_lb_v1_ClientStats *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_lb_v1_ClientStatsPerToken* grpc_lb_v1_ClientStats_add_calls_finished_with_drop(grpc_lb_v1_ClientStats* msg, upb_Arena* arena) {
struct grpc_lb_v1_ClientStatsPerToken* sub = (struct grpc_lb_v1_ClientStatsPerToken*)_upb_Message_New(&grpc_lb_v1_ClientStatsPerToken_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(44, 48), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -320,11 +383,15 @@ UPB_INLINE grpc_lb_v1_LoadBalanceResponse* grpc_lb_v1_LoadBalanceResponse_parse_
return ret;
}
UPB_INLINE char* grpc_lb_v1_LoadBalanceResponse_serialize(const grpc_lb_v1_LoadBalanceResponse* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_LoadBalanceResponse_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_LoadBalanceResponse_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_lb_v1_LoadBalanceResponse_serialize_ex(const grpc_lb_v1_LoadBalanceResponse* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_LoadBalanceResponse_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_LoadBalanceResponse_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
grpc_lb_v1_LoadBalanceResponse_load_balance_response_type_initial_response = 1,
@@ -332,19 +399,41 @@ typedef enum {
grpc_lb_v1_LoadBalanceResponse_load_balance_response_type_fallback_response = 3,
grpc_lb_v1_LoadBalanceResponse_load_balance_response_type_NOT_SET = 0
} grpc_lb_v1_LoadBalanceResponse_load_balance_response_type_oneofcases;
-UPB_INLINE grpc_lb_v1_LoadBalanceResponse_load_balance_response_type_oneofcases grpc_lb_v1_LoadBalanceResponse_load_balance_response_type_case(const grpc_lb_v1_LoadBalanceResponse* msg) { return (grpc_lb_v1_LoadBalanceResponse_load_balance_response_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool grpc_lb_v1_LoadBalanceResponse_has_initial_response(const grpc_lb_v1_LoadBalanceResponse *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const grpc_lb_v1_InitialLoadBalanceResponse* grpc_lb_v1_LoadBalanceResponse_initial_response(const grpc_lb_v1_LoadBalanceResponse *msg) { return UPB_READ_ONEOF(msg, const grpc_lb_v1_InitialLoadBalanceResponse*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool grpc_lb_v1_LoadBalanceResponse_has_server_list(const grpc_lb_v1_LoadBalanceResponse *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const grpc_lb_v1_ServerList* grpc_lb_v1_LoadBalanceResponse_server_list(const grpc_lb_v1_LoadBalanceResponse *msg) { return UPB_READ_ONEOF(msg, const grpc_lb_v1_ServerList*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool grpc_lb_v1_LoadBalanceResponse_has_fallback_response(const grpc_lb_v1_LoadBalanceResponse *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const grpc_lb_v1_FallbackResponse* grpc_lb_v1_LoadBalanceResponse_fallback_response(const grpc_lb_v1_LoadBalanceResponse *msg) { return UPB_READ_ONEOF(msg, const grpc_lb_v1_FallbackResponse*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
+UPB_INLINE grpc_lb_v1_LoadBalanceResponse_load_balance_response_type_oneofcases grpc_lb_v1_LoadBalanceResponse_load_balance_response_type_case(const grpc_lb_v1_LoadBalanceResponse* msg) {
+ return (grpc_lb_v1_LoadBalanceResponse_load_balance_response_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool grpc_lb_v1_LoadBalanceResponse_has_initial_response(const grpc_lb_v1_LoadBalanceResponse* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void grpc_lb_v1_LoadBalanceResponse_clear_initial_response(const grpc_lb_v1_LoadBalanceResponse* msg) {
+ UPB_WRITE_ONEOF(msg, grpc_lb_v1_InitialLoadBalanceResponse*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), grpc_lb_v1_LoadBalanceResponse_load_balance_response_type_NOT_SET);
+}
+UPB_INLINE const grpc_lb_v1_InitialLoadBalanceResponse* grpc_lb_v1_LoadBalanceResponse_initial_response(const grpc_lb_v1_LoadBalanceResponse* msg) {
+ return UPB_READ_ONEOF(msg, const grpc_lb_v1_InitialLoadBalanceResponse*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool grpc_lb_v1_LoadBalanceResponse_has_server_list(const grpc_lb_v1_LoadBalanceResponse* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void grpc_lb_v1_LoadBalanceResponse_clear_server_list(const grpc_lb_v1_LoadBalanceResponse* msg) {
+ UPB_WRITE_ONEOF(msg, grpc_lb_v1_ServerList*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), grpc_lb_v1_LoadBalanceResponse_load_balance_response_type_NOT_SET);
+}
+UPB_INLINE const grpc_lb_v1_ServerList* grpc_lb_v1_LoadBalanceResponse_server_list(const grpc_lb_v1_LoadBalanceResponse* msg) {
+ return UPB_READ_ONEOF(msg, const grpc_lb_v1_ServerList*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool grpc_lb_v1_LoadBalanceResponse_has_fallback_response(const grpc_lb_v1_LoadBalanceResponse* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void grpc_lb_v1_LoadBalanceResponse_clear_fallback_response(const grpc_lb_v1_LoadBalanceResponse* msg) {
+ UPB_WRITE_ONEOF(msg, grpc_lb_v1_FallbackResponse*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), grpc_lb_v1_LoadBalanceResponse_load_balance_response_type_NOT_SET);
+}
+UPB_INLINE const grpc_lb_v1_FallbackResponse* grpc_lb_v1_LoadBalanceResponse_fallback_response(const grpc_lb_v1_LoadBalanceResponse* msg) {
+ return UPB_READ_ONEOF(msg, const grpc_lb_v1_FallbackResponse*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
UPB_INLINE void grpc_lb_v1_LoadBalanceResponse_set_initial_response(grpc_lb_v1_LoadBalanceResponse *msg, grpc_lb_v1_InitialLoadBalanceResponse* value) {
- UPB_WRITE_ONEOF(msg, grpc_lb_v1_InitialLoadBalanceResponse*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, grpc_lb_v1_InitialLoadBalanceResponse*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct grpc_lb_v1_InitialLoadBalanceResponse* grpc_lb_v1_LoadBalanceResponse_mutable_initial_response(grpc_lb_v1_LoadBalanceResponse *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_lb_v1_InitialLoadBalanceResponse* grpc_lb_v1_LoadBalanceResponse_mutable_initial_response(grpc_lb_v1_LoadBalanceResponse* msg, upb_Arena* arena) {
struct grpc_lb_v1_InitialLoadBalanceResponse* sub = (struct grpc_lb_v1_InitialLoadBalanceResponse*)grpc_lb_v1_LoadBalanceResponse_initial_response(msg);
if (sub == NULL) {
sub = (struct grpc_lb_v1_InitialLoadBalanceResponse*)_upb_Message_New(&grpc_lb_v1_InitialLoadBalanceResponse_msginit, arena);
@@ -354,9 +443,9 @@ UPB_INLINE struct grpc_lb_v1_InitialLoadBalanceResponse* grpc_lb_v1_LoadBalanceR
return sub;
}
UPB_INLINE void grpc_lb_v1_LoadBalanceResponse_set_server_list(grpc_lb_v1_LoadBalanceResponse *msg, grpc_lb_v1_ServerList* value) {
- UPB_WRITE_ONEOF(msg, grpc_lb_v1_ServerList*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, grpc_lb_v1_ServerList*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct grpc_lb_v1_ServerList* grpc_lb_v1_LoadBalanceResponse_mutable_server_list(grpc_lb_v1_LoadBalanceResponse *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_lb_v1_ServerList* grpc_lb_v1_LoadBalanceResponse_mutable_server_list(grpc_lb_v1_LoadBalanceResponse* msg, upb_Arena* arena) {
struct grpc_lb_v1_ServerList* sub = (struct grpc_lb_v1_ServerList*)grpc_lb_v1_LoadBalanceResponse_server_list(msg);
if (sub == NULL) {
sub = (struct grpc_lb_v1_ServerList*)_upb_Message_New(&grpc_lb_v1_ServerList_msginit, arena);
@@ -366,9 +455,9 @@ UPB_INLINE struct grpc_lb_v1_ServerList* grpc_lb_v1_LoadBalanceResponse_mutable_
return sub;
}
UPB_INLINE void grpc_lb_v1_LoadBalanceResponse_set_fallback_response(grpc_lb_v1_LoadBalanceResponse *msg, grpc_lb_v1_FallbackResponse* value) {
- UPB_WRITE_ONEOF(msg, grpc_lb_v1_FallbackResponse*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, grpc_lb_v1_FallbackResponse*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct grpc_lb_v1_FallbackResponse* grpc_lb_v1_LoadBalanceResponse_mutable_fallback_response(grpc_lb_v1_LoadBalanceResponse *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_lb_v1_FallbackResponse* grpc_lb_v1_LoadBalanceResponse_mutable_fallback_response(grpc_lb_v1_LoadBalanceResponse* msg, upb_Arena* arena) {
struct grpc_lb_v1_FallbackResponse* sub = (struct grpc_lb_v1_FallbackResponse*)grpc_lb_v1_LoadBalanceResponse_fallback_response(msg);
if (sub == NULL) {
sub = (struct grpc_lb_v1_FallbackResponse*)_upb_Message_New(&grpc_lb_v1_FallbackResponse_msginit, arena);
@@ -403,11 +492,15 @@ UPB_INLINE grpc_lb_v1_FallbackResponse* grpc_lb_v1_FallbackResponse_parse_ex(con
return ret;
}
UPB_INLINE char* grpc_lb_v1_FallbackResponse_serialize(const grpc_lb_v1_FallbackResponse* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_FallbackResponse_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_FallbackResponse_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_lb_v1_FallbackResponse_serialize_ex(const grpc_lb_v1_FallbackResponse* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_FallbackResponse_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_FallbackResponse_msginit, options, arena, &ptr, len);
+ return ptr;
}
@@ -436,13 +529,22 @@ UPB_INLINE grpc_lb_v1_InitialLoadBalanceResponse* grpc_lb_v1_InitialLoadBalanceR
return ret;
}
UPB_INLINE char* grpc_lb_v1_InitialLoadBalanceResponse_serialize(const grpc_lb_v1_InitialLoadBalanceResponse* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_InitialLoadBalanceResponse_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_InitialLoadBalanceResponse_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_lb_v1_InitialLoadBalanceResponse_serialize_ex(const grpc_lb_v1_InitialLoadBalanceResponse* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_InitialLoadBalanceResponse_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_InitialLoadBalanceResponse_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool grpc_lb_v1_InitialLoadBalanceResponse_has_client_stats_report_interval(const grpc_lb_v1_InitialLoadBalanceResponse* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void grpc_lb_v1_InitialLoadBalanceResponse_clear_client_stats_report_interval(const grpc_lb_v1_InitialLoadBalanceResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool grpc_lb_v1_InitialLoadBalanceResponse_has_client_stats_report_interval(const grpc_lb_v1_InitialLoadBalanceResponse *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct google_protobuf_Duration* grpc_lb_v1_InitialLoadBalanceResponse_client_stats_report_interval(const grpc_lb_v1_InitialLoadBalanceResponse* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
}
@@ -451,7 +553,7 @@ UPB_INLINE void grpc_lb_v1_InitialLoadBalanceResponse_set_client_stats_report_in
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* grpc_lb_v1_InitialLoadBalanceResponse_mutable_client_stats_report_interval(grpc_lb_v1_InitialLoadBalanceResponse *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* grpc_lb_v1_InitialLoadBalanceResponse_mutable_client_stats_report_interval(grpc_lb_v1_InitialLoadBalanceResponse* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)grpc_lb_v1_InitialLoadBalanceResponse_client_stats_report_interval(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -486,25 +588,35 @@ UPB_INLINE grpc_lb_v1_ServerList* grpc_lb_v1_ServerList_parse_ex(const char* buf
return ret;
}
UPB_INLINE char* grpc_lb_v1_ServerList_serialize(const grpc_lb_v1_ServerList* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_ServerList_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_ServerList_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_lb_v1_ServerList_serialize_ex(const grpc_lb_v1_ServerList* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_ServerList_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_ServerList_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool grpc_lb_v1_ServerList_has_servers(const grpc_lb_v1_ServerList* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void grpc_lb_v1_ServerList_clear_servers(const grpc_lb_v1_ServerList* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const grpc_lb_v1_Server* const* grpc_lb_v1_ServerList_servers(const grpc_lb_v1_ServerList* msg, size_t* len) {
+ return (const grpc_lb_v1_Server* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool grpc_lb_v1_ServerList_has_servers(const grpc_lb_v1_ServerList *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const grpc_lb_v1_Server* const* grpc_lb_v1_ServerList_servers(const grpc_lb_v1_ServerList *msg, size_t *len) { return (const grpc_lb_v1_Server* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE grpc_lb_v1_Server** grpc_lb_v1_ServerList_mutable_servers(grpc_lb_v1_ServerList *msg, size_t *len) {
+UPB_INLINE grpc_lb_v1_Server** grpc_lb_v1_ServerList_mutable_servers(grpc_lb_v1_ServerList* msg, size_t* len) {
return (grpc_lb_v1_Server**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE grpc_lb_v1_Server** grpc_lb_v1_ServerList_resize_servers(grpc_lb_v1_ServerList *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE grpc_lb_v1_Server** grpc_lb_v1_ServerList_resize_servers(grpc_lb_v1_ServerList* msg, size_t len, upb_Arena* arena) {
return (grpc_lb_v1_Server**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct grpc_lb_v1_Server* grpc_lb_v1_ServerList_add_servers(grpc_lb_v1_ServerList *msg, upb_Arena *arena) {
+UPB_INLINE struct grpc_lb_v1_Server* grpc_lb_v1_ServerList_add_servers(grpc_lb_v1_ServerList* msg, upb_Arena* arena) {
struct grpc_lb_v1_Server* sub = (struct grpc_lb_v1_Server*)_upb_Message_New(&grpc_lb_v1_Server_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -534,21 +646,37 @@ UPB_INLINE grpc_lb_v1_Server* grpc_lb_v1_Server_parse_ex(const char* buf, size_t
return ret;
}
UPB_INLINE char* grpc_lb_v1_Server_serialize(const grpc_lb_v1_Server* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_Server_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_Server_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_lb_v1_Server_serialize_ex(const grpc_lb_v1_Server* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lb_v1_Server_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lb_v1_Server_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_lb_v1_Server_clear_ip_address(const grpc_lb_v1_Server* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView grpc_lb_v1_Server_ip_address(const grpc_lb_v1_Server* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
}
+UPB_INLINE void grpc_lb_v1_Server_clear_port(const grpc_lb_v1_Server* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
+}
UPB_INLINE int32_t grpc_lb_v1_Server_port(const grpc_lb_v1_Server* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
+UPB_INLINE void grpc_lb_v1_Server_clear_load_balance_token(const grpc_lb_v1_Server* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView grpc_lb_v1_Server_load_balance_token(const grpc_lb_v1_Server* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
}
+UPB_INLINE void grpc_lb_v1_Server_clear_drop(const grpc_lb_v1_Server* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = 0;
+}
UPB_INLINE bool grpc_lb_v1_Server_drop(const grpc_lb_v1_Server* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c
index b176061cd2..bf835ed6a3 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c
@@ -17,38 +17,38 @@ static const upb_MiniTable_Sub grpc_lookup_v1_RouteLookupRequest_submsgs[1] = {
};
static const upb_MiniTable_Field grpc_lookup_v1_RouteLookupRequest__fields[4] = {
- {3, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 40), 0, 0, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_lookup_v1_RouteLookupRequest_msginit = {
&grpc_lookup_v1_RouteLookupRequest_submsgs[0],
&grpc_lookup_v1_RouteLookupRequest__fields[0],
- UPB_SIZE(24, 48), 4, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(24, 48), 4, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable_Field grpc_lookup_v1_RouteLookupRequest_KeyMapEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_lookup_v1_RouteLookupRequest_KeyMapEntry_msginit = {
NULL,
&grpc_lookup_v1_RouteLookupRequest_KeyMapEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field grpc_lookup_v1_RouteLookupResponse__fields[2] = {
- {2, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable grpc_lookup_v1_RouteLookupResponse_msginit = {
NULL,
&grpc_lookup_v1_RouteLookupResponse__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable *messages_layout[3] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h
index 1a6aab7603..81d7a017ad 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h
@@ -63,48 +63,78 @@ UPB_INLINE grpc_lookup_v1_RouteLookupRequest* grpc_lookup_v1_RouteLookupRequest_
return ret;
}
UPB_INLINE char* grpc_lookup_v1_RouteLookupRequest_serialize(const grpc_lookup_v1_RouteLookupRequest* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lookup_v1_RouteLookupRequest_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_RouteLookupRequest_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_lookup_v1_RouteLookupRequest_serialize_ex(const grpc_lookup_v1_RouteLookupRequest* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lookup_v1_RouteLookupRequest_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_RouteLookupRequest_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupRequest_clear_target_type(const grpc_lookup_v1_RouteLookupRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView grpc_lookup_v1_RouteLookupRequest_target_type(const grpc_lookup_v1_RouteLookupRequest* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool grpc_lookup_v1_RouteLookupRequest_has_key_map(const grpc_lookup_v1_RouteLookupRequest *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE size_t grpc_lookup_v1_RouteLookupRequest_key_map_size(const grpc_lookup_v1_RouteLookupRequest *msg) {return _upb_msg_map_size(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE bool grpc_lookup_v1_RouteLookupRequest_key_map_get(const grpc_lookup_v1_RouteLookupRequest *msg, upb_StringView key, upb_StringView *val) { return _upb_msg_map_get(msg, UPB_SIZE(20, 40), &key, 0, val, 0); }
-UPB_INLINE const grpc_lookup_v1_RouteLookupRequest_KeyMapEntry* grpc_lookup_v1_RouteLookupRequest_key_map_next(const grpc_lookup_v1_RouteLookupRequest *msg, size_t* iter) { return (const grpc_lookup_v1_RouteLookupRequest_KeyMapEntry*)_upb_msg_map_next(msg, UPB_SIZE(20, 40), iter); }
+UPB_INLINE bool grpc_lookup_v1_RouteLookupRequest_has_key_map(const grpc_lookup_v1_RouteLookupRequest* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupRequest_clear_key_map(const grpc_lookup_v1_RouteLookupRequest* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE size_t grpc_lookup_v1_RouteLookupRequest_key_map_size(const grpc_lookup_v1_RouteLookupRequest* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE bool grpc_lookup_v1_RouteLookupRequest_key_map_get(const grpc_lookup_v1_RouteLookupRequest* msg, upb_StringView key, upb_StringView* val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(12, 24), &key, 0, val, 0);
+}
+UPB_INLINE const grpc_lookup_v1_RouteLookupRequest_KeyMapEntry* grpc_lookup_v1_RouteLookupRequest_key_map_next(const grpc_lookup_v1_RouteLookupRequest* msg, size_t* iter) {
+ return (const grpc_lookup_v1_RouteLookupRequest_KeyMapEntry*)_upb_msg_map_next(msg, UPB_SIZE(12, 24), iter);
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupRequest_clear_reason(const grpc_lookup_v1_RouteLookupRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
+}
UPB_INLINE int32_t grpc_lookup_v1_RouteLookupRequest_reason(const grpc_lookup_v1_RouteLookupRequest* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
+UPB_INLINE void grpc_lookup_v1_RouteLookupRequest_clear_stale_header_data(const grpc_lookup_v1_RouteLookupRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView grpc_lookup_v1_RouteLookupRequest_stale_header_data(const grpc_lookup_v1_RouteLookupRequest* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView);
}
UPB_INLINE void grpc_lookup_v1_RouteLookupRequest_set_target_type(grpc_lookup_v1_RouteLookupRequest *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
-UPB_INLINE void grpc_lookup_v1_RouteLookupRequest_key_map_clear(grpc_lookup_v1_RouteLookupRequest *msg) { _upb_msg_map_clear(msg, UPB_SIZE(20, 40)); }
-UPB_INLINE bool grpc_lookup_v1_RouteLookupRequest_key_map_set(grpc_lookup_v1_RouteLookupRequest *msg, upb_StringView key, upb_StringView val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(20, 40), &key, 0, &val, 0, a); }
-UPB_INLINE bool grpc_lookup_v1_RouteLookupRequest_key_map_delete(grpc_lookup_v1_RouteLookupRequest *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(20, 40), &key, 0); }
-UPB_INLINE grpc_lookup_v1_RouteLookupRequest_KeyMapEntry* grpc_lookup_v1_RouteLookupRequest_key_map_nextmutable(grpc_lookup_v1_RouteLookupRequest *msg, size_t* iter) { return (grpc_lookup_v1_RouteLookupRequest_KeyMapEntry*)_upb_msg_map_next(msg, UPB_SIZE(20, 40), iter); }
+UPB_INLINE void grpc_lookup_v1_RouteLookupRequest_key_map_clear(grpc_lookup_v1_RouteLookupRequest* msg) { _upb_msg_map_clear(msg, UPB_SIZE(12, 24)); }
+UPB_INLINE bool grpc_lookup_v1_RouteLookupRequest_key_map_set(grpc_lookup_v1_RouteLookupRequest* msg, upb_StringView key, upb_StringView val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(12, 24), &key, 0, &val, 0, a);
+}
+UPB_INLINE bool grpc_lookup_v1_RouteLookupRequest_key_map_delete(grpc_lookup_v1_RouteLookupRequest* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(12, 24), &key, 0);
+}
+UPB_INLINE grpc_lookup_v1_RouteLookupRequest_KeyMapEntry* grpc_lookup_v1_RouteLookupRequest_key_map_nextmutable(grpc_lookup_v1_RouteLookupRequest* msg, size_t* iter) {
+ return (grpc_lookup_v1_RouteLookupRequest_KeyMapEntry*)_upb_msg_map_next(msg, UPB_SIZE(12, 24), iter);
+}
UPB_INLINE void grpc_lookup_v1_RouteLookupRequest_set_reason(grpc_lookup_v1_RouteLookupRequest *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
}
UPB_INLINE void grpc_lookup_v1_RouteLookupRequest_set_stale_header_data(grpc_lookup_v1_RouteLookupRequest *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = value;
}
/* grpc.lookup.v1.RouteLookupRequest.KeyMapEntry */
-UPB_INLINE upb_StringView grpc_lookup_v1_RouteLookupRequest_KeyMapEntry_key(const grpc_lookup_v1_RouteLookupRequest_KeyMapEntry *msg) {
+UPB_INLINE upb_StringView grpc_lookup_v1_RouteLookupRequest_KeyMapEntry_key(const grpc_lookup_v1_RouteLookupRequest_KeyMapEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE upb_StringView grpc_lookup_v1_RouteLookupRequest_KeyMapEntry_value(const grpc_lookup_v1_RouteLookupRequest_KeyMapEntry *msg) {
+UPB_INLINE upb_StringView grpc_lookup_v1_RouteLookupRequest_KeyMapEntry_value(const grpc_lookup_v1_RouteLookupRequest_KeyMapEntry* msg) {
upb_StringView ret;
_upb_msg_map_value(msg, &ret, 0);
return ret;
@@ -139,29 +169,40 @@ UPB_INLINE grpc_lookup_v1_RouteLookupResponse* grpc_lookup_v1_RouteLookupRespons
return ret;
}
UPB_INLINE char* grpc_lookup_v1_RouteLookupResponse_serialize(const grpc_lookup_v1_RouteLookupResponse* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lookup_v1_RouteLookupResponse_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_RouteLookupResponse_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* grpc_lookup_v1_RouteLookupResponse_serialize_ex(const grpc_lookup_v1_RouteLookupResponse* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &grpc_lookup_v1_RouteLookupResponse_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_RouteLookupResponse_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupResponse_clear_header_data(const grpc_lookup_v1_RouteLookupResponse* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView grpc_lookup_v1_RouteLookupResponse_header_data(const grpc_lookup_v1_RouteLookupResponse* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
-UPB_INLINE upb_StringView const* grpc_lookup_v1_RouteLookupResponse_targets(const grpc_lookup_v1_RouteLookupResponse *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
+UPB_INLINE void grpc_lookup_v1_RouteLookupResponse_clear_targets(const grpc_lookup_v1_RouteLookupResponse* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE upb_StringView const* grpc_lookup_v1_RouteLookupResponse_targets(const grpc_lookup_v1_RouteLookupResponse* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
UPB_INLINE void grpc_lookup_v1_RouteLookupResponse_set_header_data(grpc_lookup_v1_RouteLookupResponse *msg, upb_StringView value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
-UPB_INLINE upb_StringView* grpc_lookup_v1_RouteLookupResponse_mutable_targets(grpc_lookup_v1_RouteLookupResponse *msg, size_t *len) {
+UPB_INLINE upb_StringView* grpc_lookup_v1_RouteLookupResponse_mutable_targets(grpc_lookup_v1_RouteLookupResponse* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE upb_StringView* grpc_lookup_v1_RouteLookupResponse_resize_targets(grpc_lookup_v1_RouteLookupResponse *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* grpc_lookup_v1_RouteLookupResponse_resize_targets(grpc_lookup_v1_RouteLookupResponse* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool grpc_lookup_v1_RouteLookupResponse_add_targets(grpc_lookup_v1_RouteLookupResponse *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool grpc_lookup_v1_RouteLookupResponse_add_targets(grpc_lookup_v1_RouteLookupResponse* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(3, 4), &val, arena);
}
extern const upb_MiniTable_File src_proto_grpc_lookup_v1_rls_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c
new file mode 100644
index 0000000000..161f0102a0
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c
@@ -0,0 +1,175 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * src/proto/grpc/lookup/v1/rls_config.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#include <stddef.h>
+#include "upb/msg_internal.h"
+#include "src/proto/grpc/lookup/v1/rls_config.upb.h"
+#include "google/protobuf/duration.upb.h"
+
+#include "upb/port_def.inc"
+
+static const upb_MiniTable_Field grpc_lookup_v1_NameMatcher__fields[3] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable grpc_lookup_v1_NameMatcher_msginit = {
+ NULL,
+ &grpc_lookup_v1_NameMatcher__fields[0],
+ UPB_SIZE(16, 32), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
+};
+
+static const upb_MiniTable_Sub grpc_lookup_v1_GrpcKeyBuilder_submsgs[4] = {
+ {.submsg = &grpc_lookup_v1_GrpcKeyBuilder_Name_msginit},
+ {.submsg = &grpc_lookup_v1_NameMatcher_msginit},
+ {.submsg = &grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_msginit},
+ {.submsg = &grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry_msginit},
+};
+
+static const upb_MiniTable_Field grpc_lookup_v1_GrpcKeyBuilder__fields[4] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 32), UPB_SIZE(0, 0), 3, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable grpc_lookup_v1_GrpcKeyBuilder_msginit = {
+ &grpc_lookup_v1_GrpcKeyBuilder_submsgs[0],
+ &grpc_lookup_v1_GrpcKeyBuilder__fields[0],
+ UPB_SIZE(24, 40), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
+};
+
+static const upb_MiniTable_Field grpc_lookup_v1_GrpcKeyBuilder_Name__fields[2] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable grpc_lookup_v1_GrpcKeyBuilder_Name_msginit = {
+ NULL,
+ &grpc_lookup_v1_GrpcKeyBuilder_Name__fields[0],
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable_Field grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys__fields[3] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_msginit = {
+ NULL,
+ &grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys__fields[0],
+ UPB_SIZE(24, 48), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
+};
+
+static const upb_MiniTable_Field grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry__fields[2] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry_msginit = {
+ NULL,
+ &grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry__fields[0],
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable_Sub grpc_lookup_v1_HttpKeyBuilder_submsgs[3] = {
+ {.submsg = &grpc_lookup_v1_NameMatcher_msginit},
+ {.submsg = &grpc_lookup_v1_NameMatcher_msginit},
+ {.submsg = &grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry_msginit},
+};
+
+static const upb_MiniTable_Field grpc_lookup_v1_HttpKeyBuilder__fields[5] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(16, 32), UPB_SIZE(0, 0), 2, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable grpc_lookup_v1_HttpKeyBuilder_msginit = {
+ &grpc_lookup_v1_HttpKeyBuilder_submsgs[0],
+ &grpc_lookup_v1_HttpKeyBuilder__fields[0],
+ UPB_SIZE(24, 40), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
+};
+
+static const upb_MiniTable_Field grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry__fields[2] = {
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry_msginit = {
+ NULL,
+ &grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry__fields[0],
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable_Sub grpc_lookup_v1_RouteLookupConfig_submsgs[5] = {
+ {.submsg = &grpc_lookup_v1_HttpKeyBuilder_msginit},
+ {.submsg = &grpc_lookup_v1_GrpcKeyBuilder_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+};
+
+static const upb_MiniTable_Field grpc_lookup_v1_RouteLookupConfig__fields[9] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 40), UPB_SIZE(1, 1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(24, 48), UPB_SIZE(2, 2), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 56), UPB_SIZE(3, 3), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(48, 88), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(32, 64), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(36, 72), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable grpc_lookup_v1_RouteLookupConfig_msginit = {
+ &grpc_lookup_v1_RouteLookupConfig_submsgs[0],
+ &grpc_lookup_v1_RouteLookupConfig__fields[0],
+ UPB_SIZE(56, 96), 9, kUpb_ExtMode_NonExtendable, 9, 255, 0,
+};
+
+static const upb_MiniTable_Sub grpc_lookup_v1_RouteLookupClusterSpecifier_submsgs[1] = {
+ {.submsg = &grpc_lookup_v1_RouteLookupConfig_msginit},
+};
+
+static const upb_MiniTable_Field grpc_lookup_v1_RouteLookupClusterSpecifier__fields[1] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable grpc_lookup_v1_RouteLookupClusterSpecifier_msginit = {
+ &grpc_lookup_v1_RouteLookupClusterSpecifier_submsgs[0],
+ &grpc_lookup_v1_RouteLookupClusterSpecifier__fields[0],
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
+};
+
+static const upb_MiniTable *messages_layout[9] = {
+ &grpc_lookup_v1_NameMatcher_msginit,
+ &grpc_lookup_v1_GrpcKeyBuilder_msginit,
+ &grpc_lookup_v1_GrpcKeyBuilder_Name_msginit,
+ &grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_msginit,
+ &grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry_msginit,
+ &grpc_lookup_v1_HttpKeyBuilder_msginit,
+ &grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry_msginit,
+ &grpc_lookup_v1_RouteLookupConfig_msginit,
+ &grpc_lookup_v1_RouteLookupClusterSpecifier_msginit,
+};
+
+const upb_MiniTable_File src_proto_grpc_lookup_v1_rls_config_proto_upb_file_layout = {
+ messages_layout,
+ NULL,
+ NULL,
+ 9,
+ 0,
+ 0,
+};
+
+#include "upb/port_undef.inc"
+
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h
new file mode 100644
index 0000000000..bbb5cd85a7
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h
@@ -0,0 +1,792 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * src/proto/grpc/lookup/v1/rls_config.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#ifndef SRC_PROTO_GRPC_LOOKUP_V1_RLS_CONFIG_PROTO_UPB_H_
+#define SRC_PROTO_GRPC_LOOKUP_V1_RLS_CONFIG_PROTO_UPB_H_
+
+#include "upb/msg_internal.h"
+#include "upb/decode.h"
+#include "upb/decode_fast.h"
+#include "upb/encode.h"
+
+#include "upb/port_def.inc"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct grpc_lookup_v1_NameMatcher;
+struct grpc_lookup_v1_GrpcKeyBuilder;
+struct grpc_lookup_v1_GrpcKeyBuilder_Name;
+struct grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys;
+struct grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry;
+struct grpc_lookup_v1_HttpKeyBuilder;
+struct grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry;
+struct grpc_lookup_v1_RouteLookupConfig;
+struct grpc_lookup_v1_RouteLookupClusterSpecifier;
+typedef struct grpc_lookup_v1_NameMatcher grpc_lookup_v1_NameMatcher;
+typedef struct grpc_lookup_v1_GrpcKeyBuilder grpc_lookup_v1_GrpcKeyBuilder;
+typedef struct grpc_lookup_v1_GrpcKeyBuilder_Name grpc_lookup_v1_GrpcKeyBuilder_Name;
+typedef struct grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys;
+typedef struct grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry;
+typedef struct grpc_lookup_v1_HttpKeyBuilder grpc_lookup_v1_HttpKeyBuilder;
+typedef struct grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry;
+typedef struct grpc_lookup_v1_RouteLookupConfig grpc_lookup_v1_RouteLookupConfig;
+typedef struct grpc_lookup_v1_RouteLookupClusterSpecifier grpc_lookup_v1_RouteLookupClusterSpecifier;
+extern const upb_MiniTable grpc_lookup_v1_NameMatcher_msginit;
+extern const upb_MiniTable grpc_lookup_v1_GrpcKeyBuilder_msginit;
+extern const upb_MiniTable grpc_lookup_v1_GrpcKeyBuilder_Name_msginit;
+extern const upb_MiniTable grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_msginit;
+extern const upb_MiniTable grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry_msginit;
+extern const upb_MiniTable grpc_lookup_v1_HttpKeyBuilder_msginit;
+extern const upb_MiniTable grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry_msginit;
+extern const upb_MiniTable grpc_lookup_v1_RouteLookupConfig_msginit;
+extern const upb_MiniTable grpc_lookup_v1_RouteLookupClusterSpecifier_msginit;
+struct google_protobuf_Duration;
+extern const upb_MiniTable google_protobuf_Duration_msginit;
+
+
+
+/* grpc.lookup.v1.NameMatcher */
+
+UPB_INLINE grpc_lookup_v1_NameMatcher* grpc_lookup_v1_NameMatcher_new(upb_Arena* arena) {
+ return (grpc_lookup_v1_NameMatcher*)_upb_Message_New(&grpc_lookup_v1_NameMatcher_msginit, arena);
+}
+UPB_INLINE grpc_lookup_v1_NameMatcher* grpc_lookup_v1_NameMatcher_parse(const char* buf, size_t size, upb_Arena* arena) {
+ grpc_lookup_v1_NameMatcher* ret = grpc_lookup_v1_NameMatcher_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &grpc_lookup_v1_NameMatcher_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE grpc_lookup_v1_NameMatcher* grpc_lookup_v1_NameMatcher_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ grpc_lookup_v1_NameMatcher* ret = grpc_lookup_v1_NameMatcher_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &grpc_lookup_v1_NameMatcher_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* grpc_lookup_v1_NameMatcher_serialize(const grpc_lookup_v1_NameMatcher* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_NameMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* grpc_lookup_v1_NameMatcher_serialize_ex(const grpc_lookup_v1_NameMatcher* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_NameMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_lookup_v1_NameMatcher_clear_key(const grpc_lookup_v1_NameMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView grpc_lookup_v1_NameMatcher_key(const grpc_lookup_v1_NameMatcher* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+}
+UPB_INLINE void grpc_lookup_v1_NameMatcher_clear_names(const grpc_lookup_v1_NameMatcher* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE upb_StringView const* grpc_lookup_v1_NameMatcher_names(const grpc_lookup_v1_NameMatcher* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE void grpc_lookup_v1_NameMatcher_clear_required_match(const grpc_lookup_v1_NameMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
+}
+UPB_INLINE bool grpc_lookup_v1_NameMatcher_required_match(const grpc_lookup_v1_NameMatcher* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
+}
+
+UPB_INLINE void grpc_lookup_v1_NameMatcher_set_key(grpc_lookup_v1_NameMatcher *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+}
+UPB_INLINE upb_StringView* grpc_lookup_v1_NameMatcher_mutable_names(grpc_lookup_v1_NameMatcher* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE upb_StringView* grpc_lookup_v1_NameMatcher_resize_names(grpc_lookup_v1_NameMatcher* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(3, 4), arena);
+}
+UPB_INLINE bool grpc_lookup_v1_NameMatcher_add_names(grpc_lookup_v1_NameMatcher* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(3, 4), &val, arena);
+}
+UPB_INLINE void grpc_lookup_v1_NameMatcher_set_required_match(grpc_lookup_v1_NameMatcher *msg, bool value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = value;
+}
+
+/* grpc.lookup.v1.GrpcKeyBuilder */
+
+UPB_INLINE grpc_lookup_v1_GrpcKeyBuilder* grpc_lookup_v1_GrpcKeyBuilder_new(upb_Arena* arena) {
+ return (grpc_lookup_v1_GrpcKeyBuilder*)_upb_Message_New(&grpc_lookup_v1_GrpcKeyBuilder_msginit, arena);
+}
+UPB_INLINE grpc_lookup_v1_GrpcKeyBuilder* grpc_lookup_v1_GrpcKeyBuilder_parse(const char* buf, size_t size, upb_Arena* arena) {
+ grpc_lookup_v1_GrpcKeyBuilder* ret = grpc_lookup_v1_GrpcKeyBuilder_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &grpc_lookup_v1_GrpcKeyBuilder_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE grpc_lookup_v1_GrpcKeyBuilder* grpc_lookup_v1_GrpcKeyBuilder_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ grpc_lookup_v1_GrpcKeyBuilder* ret = grpc_lookup_v1_GrpcKeyBuilder_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &grpc_lookup_v1_GrpcKeyBuilder_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* grpc_lookup_v1_GrpcKeyBuilder_serialize(const grpc_lookup_v1_GrpcKeyBuilder* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_GrpcKeyBuilder_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* grpc_lookup_v1_GrpcKeyBuilder_serialize_ex(const grpc_lookup_v1_GrpcKeyBuilder* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_GrpcKeyBuilder_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool grpc_lookup_v1_GrpcKeyBuilder_has_names(const grpc_lookup_v1_GrpcKeyBuilder* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_clear_names(const grpc_lookup_v1_GrpcKeyBuilder* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const grpc_lookup_v1_GrpcKeyBuilder_Name* const* grpc_lookup_v1_GrpcKeyBuilder_names(const grpc_lookup_v1_GrpcKeyBuilder* msg, size_t* len) {
+ return (const grpc_lookup_v1_GrpcKeyBuilder_Name* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool grpc_lookup_v1_GrpcKeyBuilder_has_headers(const grpc_lookup_v1_GrpcKeyBuilder* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_clear_headers(const grpc_lookup_v1_GrpcKeyBuilder* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const grpc_lookup_v1_NameMatcher* const* grpc_lookup_v1_GrpcKeyBuilder_headers(const grpc_lookup_v1_GrpcKeyBuilder* msg, size_t* len) {
+ return (const grpc_lookup_v1_NameMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool grpc_lookup_v1_GrpcKeyBuilder_has_extra_keys(const grpc_lookup_v1_GrpcKeyBuilder* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_clear_extra_keys(const grpc_lookup_v1_GrpcKeyBuilder* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
+UPB_INLINE const grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* grpc_lookup_v1_GrpcKeyBuilder_extra_keys(const grpc_lookup_v1_GrpcKeyBuilder* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys*);
+}
+UPB_INLINE bool grpc_lookup_v1_GrpcKeyBuilder_has_constant_keys(const grpc_lookup_v1_GrpcKeyBuilder* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_clear_constant_keys(const grpc_lookup_v1_GrpcKeyBuilder* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE size_t grpc_lookup_v1_GrpcKeyBuilder_constant_keys_size(const grpc_lookup_v1_GrpcKeyBuilder* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE bool grpc_lookup_v1_GrpcKeyBuilder_constant_keys_get(const grpc_lookup_v1_GrpcKeyBuilder* msg, upb_StringView key, upb_StringView* val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(16, 32), &key, 0, val, 0);
+}
+UPB_INLINE const grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry* grpc_lookup_v1_GrpcKeyBuilder_constant_keys_next(const grpc_lookup_v1_GrpcKeyBuilder* msg, size_t* iter) {
+ return (const grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry*)_upb_msg_map_next(msg, UPB_SIZE(16, 32), iter);
+}
+
+UPB_INLINE grpc_lookup_v1_GrpcKeyBuilder_Name** grpc_lookup_v1_GrpcKeyBuilder_mutable_names(grpc_lookup_v1_GrpcKeyBuilder* msg, size_t* len) {
+ return (grpc_lookup_v1_GrpcKeyBuilder_Name**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE grpc_lookup_v1_GrpcKeyBuilder_Name** grpc_lookup_v1_GrpcKeyBuilder_resize_names(grpc_lookup_v1_GrpcKeyBuilder* msg, size_t len, upb_Arena* arena) {
+ return (grpc_lookup_v1_GrpcKeyBuilder_Name**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct grpc_lookup_v1_GrpcKeyBuilder_Name* grpc_lookup_v1_GrpcKeyBuilder_add_names(grpc_lookup_v1_GrpcKeyBuilder* msg, upb_Arena* arena) {
+ struct grpc_lookup_v1_GrpcKeyBuilder_Name* sub = (struct grpc_lookup_v1_GrpcKeyBuilder_Name*)_upb_Message_New(&grpc_lookup_v1_GrpcKeyBuilder_Name_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE grpc_lookup_v1_NameMatcher** grpc_lookup_v1_GrpcKeyBuilder_mutable_headers(grpc_lookup_v1_GrpcKeyBuilder* msg, size_t* len) {
+ return (grpc_lookup_v1_NameMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE grpc_lookup_v1_NameMatcher** grpc_lookup_v1_GrpcKeyBuilder_resize_headers(grpc_lookup_v1_GrpcKeyBuilder* msg, size_t len, upb_Arena* arena) {
+ return (grpc_lookup_v1_NameMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct grpc_lookup_v1_NameMatcher* grpc_lookup_v1_GrpcKeyBuilder_add_headers(grpc_lookup_v1_GrpcKeyBuilder* msg, upb_Arena* arena) {
+ struct grpc_lookup_v1_NameMatcher* sub = (struct grpc_lookup_v1_NameMatcher*)_upb_Message_New(&grpc_lookup_v1_NameMatcher_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_set_extra_keys(grpc_lookup_v1_GrpcKeyBuilder *msg, grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys*) = value;
+}
+UPB_INLINE struct grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* grpc_lookup_v1_GrpcKeyBuilder_mutable_extra_keys(grpc_lookup_v1_GrpcKeyBuilder* msg, upb_Arena* arena) {
+ struct grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* sub = (struct grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys*)grpc_lookup_v1_GrpcKeyBuilder_extra_keys(msg);
+ if (sub == NULL) {
+ sub = (struct grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys*)_upb_Message_New(&grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_msginit, arena);
+ if (!sub) return NULL;
+ grpc_lookup_v1_GrpcKeyBuilder_set_extra_keys(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_constant_keys_clear(grpc_lookup_v1_GrpcKeyBuilder* msg) { _upb_msg_map_clear(msg, UPB_SIZE(16, 32)); }
+UPB_INLINE bool grpc_lookup_v1_GrpcKeyBuilder_constant_keys_set(grpc_lookup_v1_GrpcKeyBuilder* msg, upb_StringView key, upb_StringView val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(16, 32), &key, 0, &val, 0, a);
+}
+UPB_INLINE bool grpc_lookup_v1_GrpcKeyBuilder_constant_keys_delete(grpc_lookup_v1_GrpcKeyBuilder* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(16, 32), &key, 0);
+}
+UPB_INLINE grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry* grpc_lookup_v1_GrpcKeyBuilder_constant_keys_nextmutable(grpc_lookup_v1_GrpcKeyBuilder* msg, size_t* iter) {
+ return (grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry*)_upb_msg_map_next(msg, UPB_SIZE(16, 32), iter);
+}
+
+/* grpc.lookup.v1.GrpcKeyBuilder.Name */
+
+UPB_INLINE grpc_lookup_v1_GrpcKeyBuilder_Name* grpc_lookup_v1_GrpcKeyBuilder_Name_new(upb_Arena* arena) {
+ return (grpc_lookup_v1_GrpcKeyBuilder_Name*)_upb_Message_New(&grpc_lookup_v1_GrpcKeyBuilder_Name_msginit, arena);
+}
+UPB_INLINE grpc_lookup_v1_GrpcKeyBuilder_Name* grpc_lookup_v1_GrpcKeyBuilder_Name_parse(const char* buf, size_t size, upb_Arena* arena) {
+ grpc_lookup_v1_GrpcKeyBuilder_Name* ret = grpc_lookup_v1_GrpcKeyBuilder_Name_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &grpc_lookup_v1_GrpcKeyBuilder_Name_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE grpc_lookup_v1_GrpcKeyBuilder_Name* grpc_lookup_v1_GrpcKeyBuilder_Name_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ grpc_lookup_v1_GrpcKeyBuilder_Name* ret = grpc_lookup_v1_GrpcKeyBuilder_Name_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &grpc_lookup_v1_GrpcKeyBuilder_Name_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* grpc_lookup_v1_GrpcKeyBuilder_Name_serialize(const grpc_lookup_v1_GrpcKeyBuilder_Name* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_GrpcKeyBuilder_Name_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* grpc_lookup_v1_GrpcKeyBuilder_Name_serialize_ex(const grpc_lookup_v1_GrpcKeyBuilder_Name* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_GrpcKeyBuilder_Name_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_Name_clear_service(const grpc_lookup_v1_GrpcKeyBuilder_Name* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView grpc_lookup_v1_GrpcKeyBuilder_Name_service(const grpc_lookup_v1_GrpcKeyBuilder_Name* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+}
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_Name_clear_method(const grpc_lookup_v1_GrpcKeyBuilder_Name* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView grpc_lookup_v1_GrpcKeyBuilder_Name_method(const grpc_lookup_v1_GrpcKeyBuilder_Name* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
+}
+
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_Name_set_service(grpc_lookup_v1_GrpcKeyBuilder_Name *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+}
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_Name_set_method(grpc_lookup_v1_GrpcKeyBuilder_Name *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
+}
+
+/* grpc.lookup.v1.GrpcKeyBuilder.ExtraKeys */
+
+UPB_INLINE grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_new(upb_Arena* arena) {
+ return (grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys*)_upb_Message_New(&grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_msginit, arena);
+}
+UPB_INLINE grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_parse(const char* buf, size_t size, upb_Arena* arena) {
+ grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* ret = grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* ret = grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_serialize(const grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_serialize_ex(const grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_clear_host(const grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_host(const grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+}
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_clear_service(const grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_service(const grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
+}
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_clear_method(const grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_method(const grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView);
+}
+
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_set_host(grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+}
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_set_service(grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
+}
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_set_method(grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), upb_StringView) = value;
+}
+
+/* grpc.lookup.v1.GrpcKeyBuilder.ConstantKeysEntry */
+
+UPB_INLINE upb_StringView grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry_key(const grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry* msg) {
+ upb_StringView ret;
+ _upb_msg_map_key(msg, &ret, 0);
+ return ret;
+}
+UPB_INLINE upb_StringView grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry_value(const grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry* msg) {
+ upb_StringView ret;
+ _upb_msg_map_value(msg, &ret, 0);
+ return ret;
+}
+
+UPB_INLINE void grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry_set_value(grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry *msg, upb_StringView value) {
+ _upb_msg_map_set_value(msg, &value, 0);
+}
+
+/* grpc.lookup.v1.HttpKeyBuilder */
+
+UPB_INLINE grpc_lookup_v1_HttpKeyBuilder* grpc_lookup_v1_HttpKeyBuilder_new(upb_Arena* arena) {
+ return (grpc_lookup_v1_HttpKeyBuilder*)_upb_Message_New(&grpc_lookup_v1_HttpKeyBuilder_msginit, arena);
+}
+UPB_INLINE grpc_lookup_v1_HttpKeyBuilder* grpc_lookup_v1_HttpKeyBuilder_parse(const char* buf, size_t size, upb_Arena* arena) {
+ grpc_lookup_v1_HttpKeyBuilder* ret = grpc_lookup_v1_HttpKeyBuilder_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &grpc_lookup_v1_HttpKeyBuilder_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE grpc_lookup_v1_HttpKeyBuilder* grpc_lookup_v1_HttpKeyBuilder_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ grpc_lookup_v1_HttpKeyBuilder* ret = grpc_lookup_v1_HttpKeyBuilder_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &grpc_lookup_v1_HttpKeyBuilder_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* grpc_lookup_v1_HttpKeyBuilder_serialize(const grpc_lookup_v1_HttpKeyBuilder* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_HttpKeyBuilder_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* grpc_lookup_v1_HttpKeyBuilder_serialize_ex(const grpc_lookup_v1_HttpKeyBuilder* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_HttpKeyBuilder_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void grpc_lookup_v1_HttpKeyBuilder_clear_host_patterns(const grpc_lookup_v1_HttpKeyBuilder* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE upb_StringView const* grpc_lookup_v1_HttpKeyBuilder_host_patterns(const grpc_lookup_v1_HttpKeyBuilder* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE void grpc_lookup_v1_HttpKeyBuilder_clear_path_patterns(const grpc_lookup_v1_HttpKeyBuilder* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE upb_StringView const* grpc_lookup_v1_HttpKeyBuilder_path_patterns(const grpc_lookup_v1_HttpKeyBuilder* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool grpc_lookup_v1_HttpKeyBuilder_has_query_parameters(const grpc_lookup_v1_HttpKeyBuilder* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void grpc_lookup_v1_HttpKeyBuilder_clear_query_parameters(const grpc_lookup_v1_HttpKeyBuilder* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const grpc_lookup_v1_NameMatcher* const* grpc_lookup_v1_HttpKeyBuilder_query_parameters(const grpc_lookup_v1_HttpKeyBuilder* msg, size_t* len) {
+ return (const grpc_lookup_v1_NameMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool grpc_lookup_v1_HttpKeyBuilder_has_headers(const grpc_lookup_v1_HttpKeyBuilder* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE void grpc_lookup_v1_HttpKeyBuilder_clear_headers(const grpc_lookup_v1_HttpKeyBuilder* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 24));
+}
+UPB_INLINE const grpc_lookup_v1_NameMatcher* const* grpc_lookup_v1_HttpKeyBuilder_headers(const grpc_lookup_v1_HttpKeyBuilder* msg, size_t* len) {
+ return (const grpc_lookup_v1_NameMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE bool grpc_lookup_v1_HttpKeyBuilder_has_constant_keys(const grpc_lookup_v1_HttpKeyBuilder* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE void grpc_lookup_v1_HttpKeyBuilder_clear_constant_keys(const grpc_lookup_v1_HttpKeyBuilder* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE size_t grpc_lookup_v1_HttpKeyBuilder_constant_keys_size(const grpc_lookup_v1_HttpKeyBuilder* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(16, 32));
+}
+UPB_INLINE bool grpc_lookup_v1_HttpKeyBuilder_constant_keys_get(const grpc_lookup_v1_HttpKeyBuilder* msg, upb_StringView key, upb_StringView* val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(16, 32), &key, 0, val, 0);
+}
+UPB_INLINE const grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry* grpc_lookup_v1_HttpKeyBuilder_constant_keys_next(const grpc_lookup_v1_HttpKeyBuilder* msg, size_t* iter) {
+ return (const grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry*)_upb_msg_map_next(msg, UPB_SIZE(16, 32), iter);
+}
+
+UPB_INLINE upb_StringView* grpc_lookup_v1_HttpKeyBuilder_mutable_host_patterns(grpc_lookup_v1_HttpKeyBuilder* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
+}
+UPB_INLINE upb_StringView* grpc_lookup_v1_HttpKeyBuilder_resize_host_patterns(grpc_lookup_v1_HttpKeyBuilder* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(3, 4), arena);
+}
+UPB_INLINE bool grpc_lookup_v1_HttpKeyBuilder_add_host_patterns(grpc_lookup_v1_HttpKeyBuilder* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(3, 4), &val, arena);
+}
+UPB_INLINE upb_StringView* grpc_lookup_v1_HttpKeyBuilder_mutable_path_patterns(grpc_lookup_v1_HttpKeyBuilder* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE upb_StringView* grpc_lookup_v1_HttpKeyBuilder_resize_path_patterns(grpc_lookup_v1_HttpKeyBuilder* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(3, 4), arena);
+}
+UPB_INLINE bool grpc_lookup_v1_HttpKeyBuilder_add_path_patterns(grpc_lookup_v1_HttpKeyBuilder* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(3, 4), &val, arena);
+}
+UPB_INLINE grpc_lookup_v1_NameMatcher** grpc_lookup_v1_HttpKeyBuilder_mutable_query_parameters(grpc_lookup_v1_HttpKeyBuilder* msg, size_t* len) {
+ return (grpc_lookup_v1_NameMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE grpc_lookup_v1_NameMatcher** grpc_lookup_v1_HttpKeyBuilder_resize_query_parameters(grpc_lookup_v1_HttpKeyBuilder* msg, size_t len, upb_Arena* arena) {
+ return (grpc_lookup_v1_NameMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct grpc_lookup_v1_NameMatcher* grpc_lookup_v1_HttpKeyBuilder_add_query_parameters(grpc_lookup_v1_HttpKeyBuilder* msg, upb_Arena* arena) {
+ struct grpc_lookup_v1_NameMatcher* sub = (struct grpc_lookup_v1_NameMatcher*)_upb_Message_New(&grpc_lookup_v1_NameMatcher_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE grpc_lookup_v1_NameMatcher** grpc_lookup_v1_HttpKeyBuilder_mutable_headers(grpc_lookup_v1_HttpKeyBuilder* msg, size_t* len) {
+ return (grpc_lookup_v1_NameMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 24), len);
+}
+UPB_INLINE grpc_lookup_v1_NameMatcher** grpc_lookup_v1_HttpKeyBuilder_resize_headers(grpc_lookup_v1_HttpKeyBuilder* msg, size_t len, upb_Arena* arena) {
+ return (grpc_lookup_v1_NameMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 24), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct grpc_lookup_v1_NameMatcher* grpc_lookup_v1_HttpKeyBuilder_add_headers(grpc_lookup_v1_HttpKeyBuilder* msg, upb_Arena* arena) {
+ struct grpc_lookup_v1_NameMatcher* sub = (struct grpc_lookup_v1_NameMatcher*)_upb_Message_New(&grpc_lookup_v1_NameMatcher_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 24), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE void grpc_lookup_v1_HttpKeyBuilder_constant_keys_clear(grpc_lookup_v1_HttpKeyBuilder* msg) { _upb_msg_map_clear(msg, UPB_SIZE(16, 32)); }
+UPB_INLINE bool grpc_lookup_v1_HttpKeyBuilder_constant_keys_set(grpc_lookup_v1_HttpKeyBuilder* msg, upb_StringView key, upb_StringView val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(16, 32), &key, 0, &val, 0, a);
+}
+UPB_INLINE bool grpc_lookup_v1_HttpKeyBuilder_constant_keys_delete(grpc_lookup_v1_HttpKeyBuilder* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(16, 32), &key, 0);
+}
+UPB_INLINE grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry* grpc_lookup_v1_HttpKeyBuilder_constant_keys_nextmutable(grpc_lookup_v1_HttpKeyBuilder* msg, size_t* iter) {
+ return (grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry*)_upb_msg_map_next(msg, UPB_SIZE(16, 32), iter);
+}
+
+/* grpc.lookup.v1.HttpKeyBuilder.ConstantKeysEntry */
+
+UPB_INLINE upb_StringView grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry_key(const grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry* msg) {
+ upb_StringView ret;
+ _upb_msg_map_key(msg, &ret, 0);
+ return ret;
+}
+UPB_INLINE upb_StringView grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry_value(const grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry* msg) {
+ upb_StringView ret;
+ _upb_msg_map_value(msg, &ret, 0);
+ return ret;
+}
+
+UPB_INLINE void grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry_set_value(grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry *msg, upb_StringView value) {
+ _upb_msg_map_set_value(msg, &value, 0);
+}
+
+/* grpc.lookup.v1.RouteLookupConfig */
+
+UPB_INLINE grpc_lookup_v1_RouteLookupConfig* grpc_lookup_v1_RouteLookupConfig_new(upb_Arena* arena) {
+ return (grpc_lookup_v1_RouteLookupConfig*)_upb_Message_New(&grpc_lookup_v1_RouteLookupConfig_msginit, arena);
+}
+UPB_INLINE grpc_lookup_v1_RouteLookupConfig* grpc_lookup_v1_RouteLookupConfig_parse(const char* buf, size_t size, upb_Arena* arena) {
+ grpc_lookup_v1_RouteLookupConfig* ret = grpc_lookup_v1_RouteLookupConfig_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &grpc_lookup_v1_RouteLookupConfig_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE grpc_lookup_v1_RouteLookupConfig* grpc_lookup_v1_RouteLookupConfig_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ grpc_lookup_v1_RouteLookupConfig* ret = grpc_lookup_v1_RouteLookupConfig_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &grpc_lookup_v1_RouteLookupConfig_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* grpc_lookup_v1_RouteLookupConfig_serialize(const grpc_lookup_v1_RouteLookupConfig* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_RouteLookupConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* grpc_lookup_v1_RouteLookupConfig_serialize_ex(const grpc_lookup_v1_RouteLookupConfig* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_RouteLookupConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool grpc_lookup_v1_RouteLookupConfig_has_http_keybuilders(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_clear_http_keybuilders(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE const grpc_lookup_v1_HttpKeyBuilder* const* grpc_lookup_v1_RouteLookupConfig_http_keybuilders(const grpc_lookup_v1_RouteLookupConfig* msg, size_t* len) {
+ return (const grpc_lookup_v1_HttpKeyBuilder* const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE bool grpc_lookup_v1_RouteLookupConfig_has_grpc_keybuilders(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_clear_grpc_keybuilders(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const grpc_lookup_v1_GrpcKeyBuilder* const* grpc_lookup_v1_RouteLookupConfig_grpc_keybuilders(const grpc_lookup_v1_RouteLookupConfig* msg, size_t* len) {
+ return (const grpc_lookup_v1_GrpcKeyBuilder* const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_clear_lookup_service(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView grpc_lookup_v1_RouteLookupConfig_lookup_service(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+}
+UPB_INLINE bool grpc_lookup_v1_RouteLookupConfig_has_lookup_service_timeout(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_clear_lookup_service_timeout(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Duration* grpc_lookup_v1_RouteLookupConfig_lookup_service_timeout(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool grpc_lookup_v1_RouteLookupConfig_has_max_age(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_clear_max_age(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Duration* grpc_lookup_v1_RouteLookupConfig_max_age(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 48), const struct google_protobuf_Duration*);
+}
+UPB_INLINE bool grpc_lookup_v1_RouteLookupConfig_has_stale_age(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_clear_stale_age(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Duration* grpc_lookup_v1_RouteLookupConfig_stale_age(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct google_protobuf_Duration*);
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_clear_cache_size_bytes(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 88), int64_t) = 0;
+}
+UPB_INLINE int64_t grpc_lookup_v1_RouteLookupConfig_cache_size_bytes(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 88), int64_t);
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_clear_valid_targets(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 64));
+}
+UPB_INLINE upb_StringView const* grpc_lookup_v1_RouteLookupConfig_valid_targets(const grpc_lookup_v1_RouteLookupConfig* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(32, 64), len);
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_clear_default_target(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
+UPB_INLINE upb_StringView grpc_lookup_v1_RouteLookupConfig_default_target(const grpc_lookup_v1_RouteLookupConfig* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 72), upb_StringView);
+}
+
+UPB_INLINE grpc_lookup_v1_HttpKeyBuilder** grpc_lookup_v1_RouteLookupConfig_mutable_http_keybuilders(grpc_lookup_v1_RouteLookupConfig* msg, size_t* len) {
+ return (grpc_lookup_v1_HttpKeyBuilder**)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE grpc_lookup_v1_HttpKeyBuilder** grpc_lookup_v1_RouteLookupConfig_resize_http_keybuilders(grpc_lookup_v1_RouteLookupConfig* msg, size_t len, upb_Arena* arena) {
+ return (grpc_lookup_v1_HttpKeyBuilder**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct grpc_lookup_v1_HttpKeyBuilder* grpc_lookup_v1_RouteLookupConfig_add_http_keybuilders(grpc_lookup_v1_RouteLookupConfig* msg, upb_Arena* arena) {
+ struct grpc_lookup_v1_HttpKeyBuilder* sub = (struct grpc_lookup_v1_HttpKeyBuilder*)_upb_Message_New(&grpc_lookup_v1_HttpKeyBuilder_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE grpc_lookup_v1_GrpcKeyBuilder** grpc_lookup_v1_RouteLookupConfig_mutable_grpc_keybuilders(grpc_lookup_v1_RouteLookupConfig* msg, size_t* len) {
+ return (grpc_lookup_v1_GrpcKeyBuilder**)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE grpc_lookup_v1_GrpcKeyBuilder** grpc_lookup_v1_RouteLookupConfig_resize_grpc_keybuilders(grpc_lookup_v1_RouteLookupConfig* msg, size_t len, upb_Arena* arena) {
+ return (grpc_lookup_v1_GrpcKeyBuilder**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(2, 3), arena);
+}
+UPB_INLINE struct grpc_lookup_v1_GrpcKeyBuilder* grpc_lookup_v1_RouteLookupConfig_add_grpc_keybuilders(grpc_lookup_v1_RouteLookupConfig* msg, upb_Arena* arena) {
+ struct grpc_lookup_v1_GrpcKeyBuilder* sub = (struct grpc_lookup_v1_GrpcKeyBuilder*)_upb_Message_New(&grpc_lookup_v1_GrpcKeyBuilder_msginit, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(2, 3), &sub, arena);
+ if (!ok) return NULL;
+ return sub;
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_set_lookup_service(grpc_lookup_v1_RouteLookupConfig *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_set_lookup_service_timeout(grpc_lookup_v1_RouteLookupConfig *msg, struct google_protobuf_Duration* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct google_protobuf_Duration*) = value;
+}
+UPB_INLINE struct google_protobuf_Duration* grpc_lookup_v1_RouteLookupConfig_mutable_lookup_service_timeout(grpc_lookup_v1_RouteLookupConfig* msg, upb_Arena* arena) {
+ struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)grpc_lookup_v1_RouteLookupConfig_lookup_service_timeout(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
+ if (!sub) return NULL;
+ grpc_lookup_v1_RouteLookupConfig_set_lookup_service_timeout(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_set_max_age(grpc_lookup_v1_RouteLookupConfig *msg, struct google_protobuf_Duration* value) {
+ _upb_sethas(msg, 2);
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 48), struct google_protobuf_Duration*) = value;
+}
+UPB_INLINE struct google_protobuf_Duration* grpc_lookup_v1_RouteLookupConfig_mutable_max_age(grpc_lookup_v1_RouteLookupConfig* msg, upb_Arena* arena) {
+ struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)grpc_lookup_v1_RouteLookupConfig_max_age(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
+ if (!sub) return NULL;
+ grpc_lookup_v1_RouteLookupConfig_set_max_age(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_set_stale_age(grpc_lookup_v1_RouteLookupConfig *msg, struct google_protobuf_Duration* value) {
+ _upb_sethas(msg, 3);
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct google_protobuf_Duration*) = value;
+}
+UPB_INLINE struct google_protobuf_Duration* grpc_lookup_v1_RouteLookupConfig_mutable_stale_age(grpc_lookup_v1_RouteLookupConfig* msg, upb_Arena* arena) {
+ struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)grpc_lookup_v1_RouteLookupConfig_stale_age(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
+ if (!sub) return NULL;
+ grpc_lookup_v1_RouteLookupConfig_set_stale_age(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_set_cache_size_bytes(grpc_lookup_v1_RouteLookupConfig *msg, int64_t value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 88), int64_t) = value;
+}
+UPB_INLINE upb_StringView* grpc_lookup_v1_RouteLookupConfig_mutable_valid_targets(grpc_lookup_v1_RouteLookupConfig* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 64), len);
+}
+UPB_INLINE upb_StringView* grpc_lookup_v1_RouteLookupConfig_resize_valid_targets(grpc_lookup_v1_RouteLookupConfig* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 64), len, UPB_SIZE(3, 4), arena);
+}
+UPB_INLINE bool grpc_lookup_v1_RouteLookupConfig_add_valid_targets(grpc_lookup_v1_RouteLookupConfig* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 64), UPB_SIZE(3, 4), &val, arena);
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupConfig_set_default_target(grpc_lookup_v1_RouteLookupConfig *msg, upb_StringView value) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 72), upb_StringView) = value;
+}
+
+/* grpc.lookup.v1.RouteLookupClusterSpecifier */
+
+UPB_INLINE grpc_lookup_v1_RouteLookupClusterSpecifier* grpc_lookup_v1_RouteLookupClusterSpecifier_new(upb_Arena* arena) {
+ return (grpc_lookup_v1_RouteLookupClusterSpecifier*)_upb_Message_New(&grpc_lookup_v1_RouteLookupClusterSpecifier_msginit, arena);
+}
+UPB_INLINE grpc_lookup_v1_RouteLookupClusterSpecifier* grpc_lookup_v1_RouteLookupClusterSpecifier_parse(const char* buf, size_t size, upb_Arena* arena) {
+ grpc_lookup_v1_RouteLookupClusterSpecifier* ret = grpc_lookup_v1_RouteLookupClusterSpecifier_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &grpc_lookup_v1_RouteLookupClusterSpecifier_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE grpc_lookup_v1_RouteLookupClusterSpecifier* grpc_lookup_v1_RouteLookupClusterSpecifier_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ grpc_lookup_v1_RouteLookupClusterSpecifier* ret = grpc_lookup_v1_RouteLookupClusterSpecifier_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &grpc_lookup_v1_RouteLookupClusterSpecifier_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* grpc_lookup_v1_RouteLookupClusterSpecifier_serialize(const grpc_lookup_v1_RouteLookupClusterSpecifier* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_RouteLookupClusterSpecifier_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* grpc_lookup_v1_RouteLookupClusterSpecifier_serialize_ex(const grpc_lookup_v1_RouteLookupClusterSpecifier* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &grpc_lookup_v1_RouteLookupClusterSpecifier_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool grpc_lookup_v1_RouteLookupClusterSpecifier_has_route_lookup_config(const grpc_lookup_v1_RouteLookupClusterSpecifier* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void grpc_lookup_v1_RouteLookupClusterSpecifier_clear_route_lookup_config(const grpc_lookup_v1_RouteLookupClusterSpecifier* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
+UPB_INLINE const grpc_lookup_v1_RouteLookupConfig* grpc_lookup_v1_RouteLookupClusterSpecifier_route_lookup_config(const grpc_lookup_v1_RouteLookupClusterSpecifier* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const grpc_lookup_v1_RouteLookupConfig*);
+}
+
+UPB_INLINE void grpc_lookup_v1_RouteLookupClusterSpecifier_set_route_lookup_config(grpc_lookup_v1_RouteLookupClusterSpecifier *msg, grpc_lookup_v1_RouteLookupConfig* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), grpc_lookup_v1_RouteLookupConfig*) = value;
+}
+UPB_INLINE struct grpc_lookup_v1_RouteLookupConfig* grpc_lookup_v1_RouteLookupClusterSpecifier_mutable_route_lookup_config(grpc_lookup_v1_RouteLookupClusterSpecifier* msg, upb_Arena* arena) {
+ struct grpc_lookup_v1_RouteLookupConfig* sub = (struct grpc_lookup_v1_RouteLookupConfig*)grpc_lookup_v1_RouteLookupClusterSpecifier_route_lookup_config(msg);
+ if (sub == NULL) {
+ sub = (struct grpc_lookup_v1_RouteLookupConfig*)_upb_Message_New(&grpc_lookup_v1_RouteLookupConfig_msginit, arena);
+ if (!sub) return NULL;
+ grpc_lookup_v1_RouteLookupClusterSpecifier_set_route_lookup_config(msg, sub);
+ }
+ return sub;
+}
+
+extern const upb_MiniTable_File src_proto_grpc_lookup_v1_rls_config_proto_upb_file_layout;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* SRC_PROTO_GRPC_LOOKUP_V1_RLS_CONFIG_PROTO_UPB_H_ */
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c
index 9534b6fc77..85a0578e03 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c
@@ -14,34 +14,34 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field udpa_annotations_MigrateAnnotation__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable udpa_annotations_MigrateAnnotation_msginit = {
NULL,
&udpa_annotations_MigrateAnnotation__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field udpa_annotations_FieldMigrateAnnotation__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable udpa_annotations_FieldMigrateAnnotation_msginit = {
NULL,
&udpa_annotations_FieldMigrateAnnotation__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field udpa_annotations_FileMigrateAnnotation__fields[1] = {
- {2, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable udpa_annotations_FileMigrateAnnotation_msginit = {
NULL,
&udpa_annotations_FileMigrateAnnotation__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable *messages_layout[3] = {
@@ -59,33 +59,33 @@ extern const upb_MiniTable udpa_annotations_FieldMigrateAnnotation_msginit;
extern const upb_MiniTable udpa_annotations_FileMigrateAnnotation_msginit;
extern const upb_MiniTable udpa_annotations_MigrateAnnotation_msginit;
const upb_MiniTable_Extension udpa_annotations_message_migrate_ext = {
- {171962766, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_MessageOptions_msginit,
- {.submsg = &udpa_annotations_MigrateAnnotation_msginit},
+ {171962766, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_MessageOptions_msginit,
+ {.submsg = &udpa_annotations_MigrateAnnotation_msginit},
};
const upb_MiniTable_Extension udpa_annotations_field_migrate_ext = {
- {171962766, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_FieldOptions_msginit,
- {.submsg = &udpa_annotations_FieldMigrateAnnotation_msginit},
+ {171962766, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_FieldOptions_msginit,
+ {.submsg = &udpa_annotations_FieldMigrateAnnotation_msginit},
};
const upb_MiniTable_Extension udpa_annotations_enum_migrate_ext = {
- {171962766, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_EnumOptions_msginit,
- {.submsg = &udpa_annotations_MigrateAnnotation_msginit},
+ {171962766, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_EnumOptions_msginit,
+ {.submsg = &udpa_annotations_MigrateAnnotation_msginit},
};
const upb_MiniTable_Extension udpa_annotations_enum_value_migrate_ext = {
- {171962766, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_EnumValueOptions_msginit,
- {.submsg = &udpa_annotations_MigrateAnnotation_msginit},
+ {171962766, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_EnumValueOptions_msginit,
+ {.submsg = &udpa_annotations_MigrateAnnotation_msginit},
};
const upb_MiniTable_Extension udpa_annotations_file_migrate_ext = {
- {171962766, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_FileOptions_msginit,
- {.submsg = &udpa_annotations_FileMigrateAnnotation_msginit},
+ {171962766, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_FileOptions_msginit,
+ {.submsg = &udpa_annotations_FileMigrateAnnotation_msginit},
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h
index 059773bd8b..1aa1bdbffe 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h
@@ -72,11 +72,18 @@ UPB_INLINE udpa_annotations_MigrateAnnotation* udpa_annotations_MigrateAnnotatio
return ret;
}
UPB_INLINE char* udpa_annotations_MigrateAnnotation_serialize(const udpa_annotations_MigrateAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &udpa_annotations_MigrateAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &udpa_annotations_MigrateAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* udpa_annotations_MigrateAnnotation_serialize_ex(const udpa_annotations_MigrateAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &udpa_annotations_MigrateAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &udpa_annotations_MigrateAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void udpa_annotations_MigrateAnnotation_clear_rename(const udpa_annotations_MigrateAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView udpa_annotations_MigrateAnnotation_rename(const udpa_annotations_MigrateAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -111,15 +118,25 @@ UPB_INLINE udpa_annotations_FieldMigrateAnnotation* udpa_annotations_FieldMigrat
return ret;
}
UPB_INLINE char* udpa_annotations_FieldMigrateAnnotation_serialize(const udpa_annotations_FieldMigrateAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &udpa_annotations_FieldMigrateAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &udpa_annotations_FieldMigrateAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* udpa_annotations_FieldMigrateAnnotation_serialize_ex(const udpa_annotations_FieldMigrateAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &udpa_annotations_FieldMigrateAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &udpa_annotations_FieldMigrateAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void udpa_annotations_FieldMigrateAnnotation_clear_rename(const udpa_annotations_FieldMigrateAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView udpa_annotations_FieldMigrateAnnotation_rename(const udpa_annotations_FieldMigrateAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void udpa_annotations_FieldMigrateAnnotation_clear_oneof_promotion(const udpa_annotations_FieldMigrateAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView udpa_annotations_FieldMigrateAnnotation_oneof_promotion(const udpa_annotations_FieldMigrateAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
@@ -156,11 +173,18 @@ UPB_INLINE udpa_annotations_FileMigrateAnnotation* udpa_annotations_FileMigrateA
return ret;
}
UPB_INLINE char* udpa_annotations_FileMigrateAnnotation_serialize(const udpa_annotations_FileMigrateAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &udpa_annotations_FileMigrateAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &udpa_annotations_FileMigrateAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* udpa_annotations_FileMigrateAnnotation_serialize_ex(const udpa_annotations_FileMigrateAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &udpa_annotations_FileMigrateAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &udpa_annotations_FileMigrateAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void udpa_annotations_FileMigrateAnnotation_clear_move_to_package(const udpa_annotations_FileMigrateAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView udpa_annotations_FileMigrateAnnotation_move_to_package(const udpa_annotations_FileMigrateAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -170,16 +194,91 @@ UPB_INLINE void udpa_annotations_FileMigrateAnnotation_set_move_to_package(udpa_
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
-UPB_INLINE bool udpa_annotations_has_message_migrate(const struct google_protobuf_MessageOptions *msg) { return _upb_Message_Getext(msg, &udpa_annotations_message_migrate_ext) != NULL; }
-UPB_INLINE const udpa_annotations_MigrateAnnotation* udpa_annotations_message_migrate(const struct google_protobuf_MessageOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &udpa_annotations_message_migrate_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_MigrateAnnotation*); }
-UPB_INLINE bool udpa_annotations_has_field_migrate(const struct google_protobuf_FieldOptions *msg) { return _upb_Message_Getext(msg, &udpa_annotations_field_migrate_ext) != NULL; }
-UPB_INLINE const udpa_annotations_FieldMigrateAnnotation* udpa_annotations_field_migrate(const struct google_protobuf_FieldOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &udpa_annotations_field_migrate_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_FieldMigrateAnnotation*); }
-UPB_INLINE bool udpa_annotations_has_enum_migrate(const struct google_protobuf_EnumOptions *msg) { return _upb_Message_Getext(msg, &udpa_annotations_enum_migrate_ext) != NULL; }
-UPB_INLINE const udpa_annotations_MigrateAnnotation* udpa_annotations_enum_migrate(const struct google_protobuf_EnumOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &udpa_annotations_enum_migrate_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_MigrateAnnotation*); }
-UPB_INLINE bool udpa_annotations_has_enum_value_migrate(const struct google_protobuf_EnumValueOptions *msg) { return _upb_Message_Getext(msg, &udpa_annotations_enum_value_migrate_ext) != NULL; }
-UPB_INLINE const udpa_annotations_MigrateAnnotation* udpa_annotations_enum_value_migrate(const struct google_protobuf_EnumValueOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &udpa_annotations_enum_value_migrate_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_MigrateAnnotation*); }
-UPB_INLINE bool udpa_annotations_has_file_migrate(const struct google_protobuf_FileOptions *msg) { return _upb_Message_Getext(msg, &udpa_annotations_file_migrate_ext) != NULL; }
-UPB_INLINE const udpa_annotations_FileMigrateAnnotation* udpa_annotations_file_migrate(const struct google_protobuf_FileOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &udpa_annotations_file_migrate_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_FileMigrateAnnotation*); }
+UPB_INLINE bool udpa_annotations_has_message_migrate(const struct google_protobuf_MessageOptions* msg) {
+ return _upb_Message_Getext(msg, &udpa_annotations_message_migrate_ext) != NULL;
+}
+UPB_INLINE void udpa_annotations_clear_message_migrate(struct google_protobuf_MessageOptions* msg) {
+ _upb_Message_Clearext(msg, &udpa_annotations_message_migrate_ext);
+}
+UPB_INLINE const udpa_annotations_MigrateAnnotation* udpa_annotations_message_migrate(const struct google_protobuf_MessageOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &udpa_annotations_message_migrate_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_MigrateAnnotation*);
+}
+UPB_INLINE void udpa_annotations_set_message_migrate(struct google_protobuf_MessageOptions* msg, const udpa_annotations_MigrateAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &udpa_annotations_message_migrate_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const udpa_annotations_MigrateAnnotation*) = ext;
+}
+UPB_INLINE bool udpa_annotations_has_field_migrate(const struct google_protobuf_FieldOptions* msg) {
+ return _upb_Message_Getext(msg, &udpa_annotations_field_migrate_ext) != NULL;
+}
+UPB_INLINE void udpa_annotations_clear_field_migrate(struct google_protobuf_FieldOptions* msg) {
+ _upb_Message_Clearext(msg, &udpa_annotations_field_migrate_ext);
+}
+UPB_INLINE const udpa_annotations_FieldMigrateAnnotation* udpa_annotations_field_migrate(const struct google_protobuf_FieldOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &udpa_annotations_field_migrate_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_FieldMigrateAnnotation*);
+}
+UPB_INLINE void udpa_annotations_set_field_migrate(struct google_protobuf_FieldOptions* msg, const udpa_annotations_FieldMigrateAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &udpa_annotations_field_migrate_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const udpa_annotations_FieldMigrateAnnotation*) = ext;
+}
+UPB_INLINE bool udpa_annotations_has_enum_migrate(const struct google_protobuf_EnumOptions* msg) {
+ return _upb_Message_Getext(msg, &udpa_annotations_enum_migrate_ext) != NULL;
+}
+UPB_INLINE void udpa_annotations_clear_enum_migrate(struct google_protobuf_EnumOptions* msg) {
+ _upb_Message_Clearext(msg, &udpa_annotations_enum_migrate_ext);
+}
+UPB_INLINE const udpa_annotations_MigrateAnnotation* udpa_annotations_enum_migrate(const struct google_protobuf_EnumOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &udpa_annotations_enum_migrate_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_MigrateAnnotation*);
+}
+UPB_INLINE void udpa_annotations_set_enum_migrate(struct google_protobuf_EnumOptions* msg, const udpa_annotations_MigrateAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &udpa_annotations_enum_migrate_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const udpa_annotations_MigrateAnnotation*) = ext;
+}
+UPB_INLINE bool udpa_annotations_has_enum_value_migrate(const struct google_protobuf_EnumValueOptions* msg) {
+ return _upb_Message_Getext(msg, &udpa_annotations_enum_value_migrate_ext) != NULL;
+}
+UPB_INLINE void udpa_annotations_clear_enum_value_migrate(struct google_protobuf_EnumValueOptions* msg) {
+ _upb_Message_Clearext(msg, &udpa_annotations_enum_value_migrate_ext);
+}
+UPB_INLINE const udpa_annotations_MigrateAnnotation* udpa_annotations_enum_value_migrate(const struct google_protobuf_EnumValueOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &udpa_annotations_enum_value_migrate_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_MigrateAnnotation*);
+}
+UPB_INLINE void udpa_annotations_set_enum_value_migrate(struct google_protobuf_EnumValueOptions* msg, const udpa_annotations_MigrateAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &udpa_annotations_enum_value_migrate_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const udpa_annotations_MigrateAnnotation*) = ext;
+}
+UPB_INLINE bool udpa_annotations_has_file_migrate(const struct google_protobuf_FileOptions* msg) {
+ return _upb_Message_Getext(msg, &udpa_annotations_file_migrate_ext) != NULL;
+}
+UPB_INLINE void udpa_annotations_clear_file_migrate(struct google_protobuf_FileOptions* msg) {
+ _upb_Message_Clearext(msg, &udpa_annotations_file_migrate_ext);
+}
+UPB_INLINE const udpa_annotations_FileMigrateAnnotation* udpa_annotations_file_migrate(const struct google_protobuf_FileOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &udpa_annotations_file_migrate_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_FileMigrateAnnotation*);
+}
+UPB_INLINE void udpa_annotations_set_file_migrate(struct google_protobuf_FileOptions* msg, const udpa_annotations_FileMigrateAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &udpa_annotations_file_migrate_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const udpa_annotations_FileMigrateAnnotation*) = ext;
+}
extern const upb_MiniTable_File udpa_annotations_migrate_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/security.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/security.upb.c
index 358f692688..c806515213 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/security.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/security.upb.c
@@ -15,14 +15,14 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field udpa_annotations_FieldSecurityAnnotation__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable udpa_annotations_FieldSecurityAnnotation_msginit = {
NULL,
&udpa_annotations_FieldSecurityAnnotation__fields[0],
- UPB_SIZE(8, 8), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 8), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
@@ -32,9 +32,9 @@ static const upb_MiniTable *messages_layout[1] = {
extern const upb_MiniTable google_protobuf_FieldOptions_msginit;
extern const upb_MiniTable udpa_annotations_FieldSecurityAnnotation_msginit;
const upb_MiniTable_Extension udpa_annotations_security_ext = {
- {11122993, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_FieldOptions_msginit,
- {.submsg = &udpa_annotations_FieldSecurityAnnotation_msginit},
+ {11122993, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_FieldOptions_msginit,
+ {.submsg = &udpa_annotations_FieldSecurityAnnotation_msginit},
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/security.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/security.upb.h
index 32f9326849..9ada3c0a7a 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/security.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/security.upb.h
@@ -54,15 +54,25 @@ UPB_INLINE udpa_annotations_FieldSecurityAnnotation* udpa_annotations_FieldSecur
return ret;
}
UPB_INLINE char* udpa_annotations_FieldSecurityAnnotation_serialize(const udpa_annotations_FieldSecurityAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &udpa_annotations_FieldSecurityAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &udpa_annotations_FieldSecurityAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* udpa_annotations_FieldSecurityAnnotation_serialize_ex(const udpa_annotations_FieldSecurityAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &udpa_annotations_FieldSecurityAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &udpa_annotations_FieldSecurityAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void udpa_annotations_FieldSecurityAnnotation_clear_configure_for_untrusted_downstream(const udpa_annotations_FieldSecurityAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool udpa_annotations_FieldSecurityAnnotation_configure_for_untrusted_downstream(const udpa_annotations_FieldSecurityAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
+UPB_INLINE void udpa_annotations_FieldSecurityAnnotation_clear_configure_for_untrusted_upstream(const udpa_annotations_FieldSecurityAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool udpa_annotations_FieldSecurityAnnotation_configure_for_untrusted_upstream(const udpa_annotations_FieldSecurityAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
@@ -74,8 +84,23 @@ UPB_INLINE void udpa_annotations_FieldSecurityAnnotation_set_configure_for_untru
*UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
-UPB_INLINE bool udpa_annotations_has_security(const struct google_protobuf_FieldOptions *msg) { return _upb_Message_Getext(msg, &udpa_annotations_security_ext) != NULL; }
-UPB_INLINE const udpa_annotations_FieldSecurityAnnotation* udpa_annotations_security(const struct google_protobuf_FieldOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &udpa_annotations_security_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_FieldSecurityAnnotation*); }
+UPB_INLINE bool udpa_annotations_has_security(const struct google_protobuf_FieldOptions* msg) {
+ return _upb_Message_Getext(msg, &udpa_annotations_security_ext) != NULL;
+}
+UPB_INLINE void udpa_annotations_clear_security(struct google_protobuf_FieldOptions* msg) {
+ _upb_Message_Clearext(msg, &udpa_annotations_security_ext);
+}
+UPB_INLINE const udpa_annotations_FieldSecurityAnnotation* udpa_annotations_security(const struct google_protobuf_FieldOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &udpa_annotations_security_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_FieldSecurityAnnotation*);
+}
+UPB_INLINE void udpa_annotations_set_security(struct google_protobuf_FieldOptions* msg, const udpa_annotations_FieldSecurityAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &udpa_annotations_security_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const udpa_annotations_FieldSecurityAnnotation*) = ext;
+}
extern const upb_MiniTable_File udpa_annotations_security_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c
index 29d4bf0a41..146c5e6fa8 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c
@@ -15,9 +15,9 @@
extern const upb_MiniTable google_protobuf_FieldOptions_msginit;
const upb_MiniTable_Extension udpa_annotations_sensitive_ext = {
- {76569463, 0, 0, 0, 8, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- &google_protobuf_FieldOptions_msginit,
- {.submsg = NULL},
+ {76569463, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ &google_protobuf_FieldOptions_msginit,
+ {.submsg = NULL},
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h
index abbddde80c..187013e64a 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h
@@ -25,8 +25,16 @@ struct google_protobuf_FieldOptions;
extern const upb_MiniTable google_protobuf_FieldOptions_msginit;
-UPB_INLINE bool udpa_annotations_has_sensitive(const struct google_protobuf_FieldOptions *msg) { return _upb_Message_Getext(msg, &udpa_annotations_sensitive_ext) != NULL; }
-UPB_INLINE bool udpa_annotations_sensitive(const struct google_protobuf_FieldOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &udpa_annotations_sensitive_ext); return ext ? *UPB_PTR_AT(&ext->data, 0, bool) : false; }
+UPB_INLINE bool udpa_annotations_has_sensitive(const struct google_protobuf_FieldOptions* msg) {
+ return _upb_Message_Getext(msg, &udpa_annotations_sensitive_ext) != NULL;
+}
+UPB_INLINE void udpa_annotations_clear_sensitive(struct google_protobuf_FieldOptions* msg) {
+ _upb_Message_Clearext(msg, &udpa_annotations_sensitive_ext);
+}
+UPB_INLINE bool udpa_annotations_sensitive(const struct google_protobuf_FieldOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &udpa_annotations_sensitive_ext);
+ return ext ? *UPB_PTR_AT(&ext->data, 0, bool) : false;
+}
extern const upb_MiniTable_File udpa_annotations_sensitive_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/status.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/status.upb.c
index 9c2a40606b..d09e49dd7f 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/status.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/status.upb.c
@@ -14,14 +14,14 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field udpa_annotations_StatusAnnotation__fields[2] = {
- {1, UPB_SIZE(4, 4), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable udpa_annotations_StatusAnnotation_msginit = {
NULL,
&udpa_annotations_StatusAnnotation__fields[0],
- UPB_SIZE(8, 8), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 8), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
@@ -31,9 +31,9 @@ static const upb_MiniTable *messages_layout[1] = {
extern const upb_MiniTable google_protobuf_FileOptions_msginit;
extern const upb_MiniTable udpa_annotations_StatusAnnotation_msginit;
const upb_MiniTable_Extension udpa_annotations_file_status_ext = {
- {222707719, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_FileOptions_msginit,
- {.submsg = &udpa_annotations_StatusAnnotation_msginit},
+ {222707719, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_FileOptions_msginit,
+ {.submsg = &udpa_annotations_StatusAnnotation_msginit},
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/status.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/status.upb.h
index 76917d4ab7..8e4eeed192 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/status.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/status.upb.h
@@ -61,28 +61,53 @@ UPB_INLINE udpa_annotations_StatusAnnotation* udpa_annotations_StatusAnnotation_
return ret;
}
UPB_INLINE char* udpa_annotations_StatusAnnotation_serialize(const udpa_annotations_StatusAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &udpa_annotations_StatusAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &udpa_annotations_StatusAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* udpa_annotations_StatusAnnotation_serialize_ex(const udpa_annotations_StatusAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &udpa_annotations_StatusAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &udpa_annotations_StatusAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void udpa_annotations_StatusAnnotation_clear_work_in_progress(const udpa_annotations_StatusAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool udpa_annotations_StatusAnnotation_work_in_progress(const udpa_annotations_StatusAnnotation* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
+}
+UPB_INLINE void udpa_annotations_StatusAnnotation_clear_package_version_status(const udpa_annotations_StatusAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t udpa_annotations_StatusAnnotation_package_version_status(const udpa_annotations_StatusAnnotation* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
UPB_INLINE void udpa_annotations_StatusAnnotation_set_work_in_progress(udpa_annotations_StatusAnnotation *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = value;
}
UPB_INLINE void udpa_annotations_StatusAnnotation_set_package_version_status(udpa_annotations_StatusAnnotation *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
-UPB_INLINE bool udpa_annotations_has_file_status(const struct google_protobuf_FileOptions *msg) { return _upb_Message_Getext(msg, &udpa_annotations_file_status_ext) != NULL; }
-UPB_INLINE const udpa_annotations_StatusAnnotation* udpa_annotations_file_status(const struct google_protobuf_FileOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &udpa_annotations_file_status_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_StatusAnnotation*); }
+UPB_INLINE bool udpa_annotations_has_file_status(const struct google_protobuf_FileOptions* msg) {
+ return _upb_Message_Getext(msg, &udpa_annotations_file_status_ext) != NULL;
+}
+UPB_INLINE void udpa_annotations_clear_file_status(struct google_protobuf_FileOptions* msg) {
+ _upb_Message_Clearext(msg, &udpa_annotations_file_status_ext);
+}
+UPB_INLINE const udpa_annotations_StatusAnnotation* udpa_annotations_file_status(const struct google_protobuf_FileOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &udpa_annotations_file_status_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_StatusAnnotation*);
+}
+UPB_INLINE void udpa_annotations_set_file_status(struct google_protobuf_FileOptions* msg, const udpa_annotations_StatusAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &udpa_annotations_file_status_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const udpa_annotations_StatusAnnotation*) = ext;
+}
extern const upb_MiniTable_File udpa_annotations_status_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c
index 35eacfb1db..a0db4c0980 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c
@@ -14,13 +14,13 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field udpa_annotations_VersioningAnnotation__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable udpa_annotations_VersioningAnnotation_msginit = {
NULL,
&udpa_annotations_VersioningAnnotation__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
@@ -30,9 +30,9 @@ static const upb_MiniTable *messages_layout[1] = {
extern const upb_MiniTable google_protobuf_MessageOptions_msginit;
extern const upb_MiniTable udpa_annotations_VersioningAnnotation_msginit;
const upb_MiniTable_Extension udpa_annotations_versioning_ext = {
- {7881811, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_MessageOptions_msginit,
- {.submsg = &udpa_annotations_VersioningAnnotation_msginit},
+ {7881811, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_MessageOptions_msginit,
+ {.submsg = &udpa_annotations_VersioningAnnotation_msginit},
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h
index 565bf1baa2..ad96fcd758 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h
@@ -54,11 +54,18 @@ UPB_INLINE udpa_annotations_VersioningAnnotation* udpa_annotations_VersioningAnn
return ret;
}
UPB_INLINE char* udpa_annotations_VersioningAnnotation_serialize(const udpa_annotations_VersioningAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &udpa_annotations_VersioningAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &udpa_annotations_VersioningAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* udpa_annotations_VersioningAnnotation_serialize_ex(const udpa_annotations_VersioningAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &udpa_annotations_VersioningAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &udpa_annotations_VersioningAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void udpa_annotations_VersioningAnnotation_clear_previous_message_type(const udpa_annotations_VersioningAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView udpa_annotations_VersioningAnnotation_previous_message_type(const udpa_annotations_VersioningAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -68,8 +75,23 @@ UPB_INLINE void udpa_annotations_VersioningAnnotation_set_previous_message_type(
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
-UPB_INLINE bool udpa_annotations_has_versioning(const struct google_protobuf_MessageOptions *msg) { return _upb_Message_Getext(msg, &udpa_annotations_versioning_ext) != NULL; }
-UPB_INLINE const udpa_annotations_VersioningAnnotation* udpa_annotations_versioning(const struct google_protobuf_MessageOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &udpa_annotations_versioning_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_VersioningAnnotation*); }
+UPB_INLINE bool udpa_annotations_has_versioning(const struct google_protobuf_MessageOptions* msg) {
+ return _upb_Message_Getext(msg, &udpa_annotations_versioning_ext) != NULL;
+}
+UPB_INLINE void udpa_annotations_clear_versioning(struct google_protobuf_MessageOptions* msg) {
+ _upb_Message_Clearext(msg, &udpa_annotations_versioning_ext);
+}
+UPB_INLINE const udpa_annotations_VersioningAnnotation* udpa_annotations_versioning(const struct google_protobuf_MessageOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &udpa_annotations_versioning_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const udpa_annotations_VersioningAnnotation*);
+}
+UPB_INLINE void udpa_annotations_set_versioning(struct google_protobuf_MessageOptions* msg, const udpa_annotations_VersioningAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &udpa_annotations_versioning_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const udpa_annotations_VersioningAnnotation*) = ext;
+}
extern const upb_MiniTable_File udpa_annotations_versioning_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/validate/validate.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/validate/validate.upb.c
index c25d5df018..9dc0a42392 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/validate/validate.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/validate/validate.upb.c
@@ -16,273 +16,273 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub validate_FieldRules_submsgs[22] = {
- {.submsg = &validate_AnyRules_msginit},
- {.submsg = &validate_BoolRules_msginit},
- {.submsg = &validate_BytesRules_msginit},
- {.submsg = &validate_DoubleRules_msginit},
- {.submsg = &validate_DurationRules_msginit},
- {.submsg = &validate_EnumRules_msginit},
- {.submsg = &validate_Fixed32Rules_msginit},
- {.submsg = &validate_Fixed64Rules_msginit},
{.submsg = &validate_FloatRules_msginit},
+ {.submsg = &validate_DoubleRules_msginit},
{.submsg = &validate_Int32Rules_msginit},
{.submsg = &validate_Int64Rules_msginit},
- {.submsg = &validate_MapRules_msginit},
- {.submsg = &validate_MessageRules_msginit},
- {.submsg = &validate_RepeatedRules_msginit},
- {.submsg = &validate_SFixed32Rules_msginit},
- {.submsg = &validate_SFixed64Rules_msginit},
+ {.submsg = &validate_UInt32Rules_msginit},
+ {.submsg = &validate_UInt64Rules_msginit},
{.submsg = &validate_SInt32Rules_msginit},
{.submsg = &validate_SInt64Rules_msginit},
+ {.submsg = &validate_Fixed32Rules_msginit},
+ {.submsg = &validate_Fixed64Rules_msginit},
+ {.submsg = &validate_SFixed32Rules_msginit},
+ {.submsg = &validate_SFixed64Rules_msginit},
+ {.submsg = &validate_BoolRules_msginit},
{.submsg = &validate_StringRules_msginit},
+ {.submsg = &validate_BytesRules_msginit},
+ {.submsg = &validate_EnumRules_msginit},
+ {.submsg = &validate_MessageRules_msginit},
+ {.submsg = &validate_RepeatedRules_msginit},
+ {.submsg = &validate_MapRules_msginit},
+ {.submsg = &validate_AnyRules_msginit},
+ {.submsg = &validate_DurationRules_msginit},
{.submsg = &validate_TimestampRules_msginit},
- {.submsg = &validate_UInt32Rules_msginit},
- {.submsg = &validate_UInt64Rules_msginit},
};
static const upb_MiniTable_Field validate_FieldRules__fields[22] = {
- {1, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 8, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 3, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 9, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 10, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 20, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 21, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 16, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 17, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 6, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 7, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 14, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 15, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {13, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {14, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 18, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {15, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {16, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 5, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {17, UPB_SIZE(4, 8), 1, 12, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {18, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 13, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {19, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 11, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {20, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {21, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 4, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {22, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 19, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 6, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 7, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 8, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 9, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 10, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 11, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 12, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 13, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 14, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {16, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 15, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {17, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 16, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {18, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 17, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {19, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 18, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {20, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 19, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {21, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 20, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {22, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 21, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_FieldRules_msginit = {
&validate_FieldRules_submsgs[0],
&validate_FieldRules__fields[0],
- UPB_SIZE(16, 32), 22, upb_ExtMode_NonExtendable, 22, 255, 0,
+ UPB_SIZE(16, 24), 22, kUpb_ExtMode_NonExtendable, 22, 255, 0,
};
static const upb_MiniTable_Field validate_FloatRules__fields[8] = {
- {1, UPB_SIZE(4, 4), 1, 0, 2, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 2, 0, 2, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 12), 3, 0, 2, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 16), 4, 0, 2, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 20), 5, 0, 2, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(28, 32), 0, 0, 2, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(32, 40), 0, 0, 2, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(24, 24), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(1, 1), kUpb_NoSub, 2, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(2, 2), kUpb_NoSub, 2, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 12), UPB_SIZE(3, 3), kUpb_NoSub, 2, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 16), UPB_SIZE(4, 4), kUpb_NoSub, 2, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 20), UPB_SIZE(5, 5), kUpb_NoSub, 2, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 32), UPB_SIZE(0, 0), kUpb_NoSub, 2, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(32, 40), UPB_SIZE(0, 0), kUpb_NoSub, 2, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(24, 24), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_FloatRules_msginit = {
NULL,
&validate_FloatRules__fields[0],
- UPB_SIZE(40, 48), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(40, 48), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Field validate_DoubleRules__fields[8] = {
- {1, UPB_SIZE(8, 8), 1, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 16), 2, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 24), 3, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 32), 4, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(40, 40), 5, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(52, 56), 0, 0, 1, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(56, 64), 0, 0, 1, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(48, 48), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 24), UPB_SIZE(1, 1), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(24, 32), UPB_SIZE(2, 2), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(32, 40), UPB_SIZE(3, 3), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(40, 48), UPB_SIZE(4, 4), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(48, 56), UPB_SIZE(5, 5), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(1, 1), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_DoubleRules_msginit = {
NULL,
&validate_DoubleRules__fields[0],
- UPB_SIZE(64, 72), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(56, 64), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Field validate_Int32Rules__fields[8] = {
- {1, UPB_SIZE(4, 4), 1, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 2, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 12), 3, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 16), 4, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 20), 5, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(28, 32), 0, 0, 5, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(32, 40), 0, 0, 5, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(24, 24), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(1, 1), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(2, 2), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 12), UPB_SIZE(3, 3), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 16), UPB_SIZE(4, 4), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 20), UPB_SIZE(5, 5), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 32), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(32, 40), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(24, 24), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_Int32Rules_msginit = {
NULL,
&validate_Int32Rules__fields[0],
- UPB_SIZE(40, 48), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(40, 48), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Field validate_Int64Rules__fields[8] = {
- {1, UPB_SIZE(8, 8), 1, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 16), 2, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 24), 3, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 32), 4, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(40, 40), 5, 0, 3, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(52, 56), 0, 0, 3, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(56, 64), 0, 0, 3, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(48, 48), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 24), UPB_SIZE(1, 1), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(24, 32), UPB_SIZE(2, 2), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(32, 40), UPB_SIZE(3, 3), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(40, 48), UPB_SIZE(4, 4), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(48, 56), UPB_SIZE(5, 5), kUpb_NoSub, 3, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 3, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(1, 1), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_Int64Rules_msginit = {
NULL,
&validate_Int64Rules__fields[0],
- UPB_SIZE(64, 72), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(56, 64), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Field validate_UInt32Rules__fields[8] = {
- {1, UPB_SIZE(4, 4), 1, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 2, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 12), 3, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 16), 4, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 20), 5, 0, 13, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(28, 32), 0, 0, 13, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(32, 40), 0, 0, 13, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(24, 24), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(1, 1), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(2, 2), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 12), UPB_SIZE(3, 3), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 16), UPB_SIZE(4, 4), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 20), UPB_SIZE(5, 5), kUpb_NoSub, 13, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 32), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(32, 40), UPB_SIZE(0, 0), kUpb_NoSub, 13, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(24, 24), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_UInt32Rules_msginit = {
NULL,
&validate_UInt32Rules__fields[0],
- UPB_SIZE(40, 48), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(40, 48), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Field validate_UInt64Rules__fields[8] = {
- {1, UPB_SIZE(8, 8), 1, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 16), 2, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 24), 3, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 32), 4, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(40, 40), 5, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(52, 56), 0, 0, 4, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(56, 64), 0, 0, 4, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(48, 48), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 24), UPB_SIZE(1, 1), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(24, 32), UPB_SIZE(2, 2), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(32, 40), UPB_SIZE(3, 3), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(40, 48), UPB_SIZE(4, 4), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(48, 56), UPB_SIZE(5, 5), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(1, 1), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_UInt64Rules_msginit = {
NULL,
&validate_UInt64Rules__fields[0],
- UPB_SIZE(64, 72), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(56, 64), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Field validate_SInt32Rules__fields[8] = {
- {1, UPB_SIZE(4, 4), 1, 0, 17, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 2, 0, 17, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 12), 3, 0, 17, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 16), 4, 0, 17, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 20), 5, 0, 17, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(28, 32), 0, 0, 17, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(32, 40), 0, 0, 17, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(24, 24), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(1, 1), kUpb_NoSub, 17, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(2, 2), kUpb_NoSub, 17, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 12), UPB_SIZE(3, 3), kUpb_NoSub, 17, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 16), UPB_SIZE(4, 4), kUpb_NoSub, 17, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 20), UPB_SIZE(5, 5), kUpb_NoSub, 17, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 32), UPB_SIZE(0, 0), kUpb_NoSub, 17, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(32, 40), UPB_SIZE(0, 0), kUpb_NoSub, 17, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(24, 24), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_SInt32Rules_msginit = {
NULL,
&validate_SInt32Rules__fields[0],
- UPB_SIZE(40, 48), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(40, 48), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Field validate_SInt64Rules__fields[8] = {
- {1, UPB_SIZE(8, 8), 1, 0, 18, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 16), 2, 0, 18, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 24), 3, 0, 18, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 32), 4, 0, 18, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(40, 40), 5, 0, 18, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(52, 56), 0, 0, 18, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(56, 64), 0, 0, 18, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(48, 48), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 24), UPB_SIZE(1, 1), kUpb_NoSub, 18, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(24, 32), UPB_SIZE(2, 2), kUpb_NoSub, 18, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(32, 40), UPB_SIZE(3, 3), kUpb_NoSub, 18, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(40, 48), UPB_SIZE(4, 4), kUpb_NoSub, 18, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(48, 56), UPB_SIZE(5, 5), kUpb_NoSub, 18, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 18, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 18, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(1, 1), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_SInt64Rules_msginit = {
NULL,
&validate_SInt64Rules__fields[0],
- UPB_SIZE(64, 72), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(56, 64), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Field validate_Fixed32Rules__fields[8] = {
- {1, UPB_SIZE(4, 4), 1, 0, 7, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 2, 0, 7, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 12), 3, 0, 7, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 16), 4, 0, 7, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 20), 5, 0, 7, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(28, 32), 0, 0, 7, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(32, 40), 0, 0, 7, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(24, 24), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(1, 1), kUpb_NoSub, 7, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(2, 2), kUpb_NoSub, 7, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 12), UPB_SIZE(3, 3), kUpb_NoSub, 7, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 16), UPB_SIZE(4, 4), kUpb_NoSub, 7, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 20), UPB_SIZE(5, 5), kUpb_NoSub, 7, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 32), UPB_SIZE(0, 0), kUpb_NoSub, 7, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(32, 40), UPB_SIZE(0, 0), kUpb_NoSub, 7, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(24, 24), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_Fixed32Rules_msginit = {
NULL,
&validate_Fixed32Rules__fields[0],
- UPB_SIZE(40, 48), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(40, 48), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Field validate_Fixed64Rules__fields[8] = {
- {1, UPB_SIZE(8, 8), 1, 0, 6, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 16), 2, 0, 6, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 24), 3, 0, 6, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 32), 4, 0, 6, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(40, 40), 5, 0, 6, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(52, 56), 0, 0, 6, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(56, 64), 0, 0, 6, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(48, 48), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 24), UPB_SIZE(1, 1), kUpb_NoSub, 6, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(24, 32), UPB_SIZE(2, 2), kUpb_NoSub, 6, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(32, 40), UPB_SIZE(3, 3), kUpb_NoSub, 6, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(40, 48), UPB_SIZE(4, 4), kUpb_NoSub, 6, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(48, 56), UPB_SIZE(5, 5), kUpb_NoSub, 6, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 6, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 6, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(1, 1), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_Fixed64Rules_msginit = {
NULL,
&validate_Fixed64Rules__fields[0],
- UPB_SIZE(64, 72), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(56, 64), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Field validate_SFixed32Rules__fields[8] = {
- {1, UPB_SIZE(4, 4), 1, 0, 15, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 2, 0, 15, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 12), 3, 0, 15, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 16), 4, 0, 15, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 20), 5, 0, 15, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(28, 32), 0, 0, 15, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(32, 40), 0, 0, 15, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(24, 24), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(1, 1), kUpb_NoSub, 15, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(2, 2), kUpb_NoSub, 15, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 12), UPB_SIZE(3, 3), kUpb_NoSub, 15, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 16), UPB_SIZE(4, 4), kUpb_NoSub, 15, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 20), UPB_SIZE(5, 5), kUpb_NoSub, 15, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(28, 32), UPB_SIZE(0, 0), kUpb_NoSub, 15, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(32, 40), UPB_SIZE(0, 0), kUpb_NoSub, 15, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(24, 24), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_SFixed32Rules_msginit = {
NULL,
&validate_SFixed32Rules__fields[0],
- UPB_SIZE(40, 48), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(40, 48), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Field validate_SFixed64Rules__fields[8] = {
- {1, UPB_SIZE(8, 8), 1, 0, 16, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 16), 2, 0, 16, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 24), 3, 0, 16, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(32, 32), 4, 0, 16, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(40, 40), 5, 0, 16, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(52, 56), 0, 0, 16, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(56, 64), 0, 0, 16, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(48, 48), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 24), UPB_SIZE(1, 1), kUpb_NoSub, 16, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(24, 32), UPB_SIZE(2, 2), kUpb_NoSub, 16, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(32, 40), UPB_SIZE(3, 3), kUpb_NoSub, 16, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(40, 48), UPB_SIZE(4, 4), kUpb_NoSub, 16, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(48, 56), UPB_SIZE(5, 5), kUpb_NoSub, 16, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 16, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 16, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(1, 1), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_SFixed64Rules_msginit = {
NULL,
&validate_SFixed64Rules__fields[0],
- UPB_SIZE(64, 72), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(56, 64), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
static const upb_MiniTable_Field validate_BoolRules__fields[1] = {
- {1, UPB_SIZE(1, 1), 1, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(1, 1), UPB_SIZE(1, 1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_BoolRules_msginit = {
NULL,
&validate_BoolRules__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub validate_StringRules_submsgs[1] = {
@@ -290,85 +290,85 @@ static const upb_MiniTable_Sub validate_StringRules_submsgs[1] = {
};
static const upb_MiniTable_Field validate_StringRules__fields[26] = {
- {1, UPB_SIZE(60, 64), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 2, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 16), 3, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 24), 4, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {5, UPB_SIZE(32, 32), 5, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {6, UPB_SIZE(68, 80), 6, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {7, UPB_SIZE(76, 96), 7, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {8, UPB_SIZE(84, 112), 8, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {9, UPB_SIZE(92, 128), 9, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {10, UPB_SIZE(108, 160), 0, 0, 12, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {11, UPB_SIZE(112, 168), 0, 0, 12, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {12, UPB_SIZE(116, 176), UPB_SIZE(-121, -181), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {13, UPB_SIZE(116, 176), UPB_SIZE(-121, -181), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {14, UPB_SIZE(116, 176), UPB_SIZE(-121, -181), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {15, UPB_SIZE(116, 176), UPB_SIZE(-121, -181), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {16, UPB_SIZE(116, 176), UPB_SIZE(-121, -181), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {17, UPB_SIZE(116, 176), UPB_SIZE(-121, -181), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {18, UPB_SIZE(116, 176), UPB_SIZE(-121, -181), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {19, UPB_SIZE(40, 40), 10, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {20, UPB_SIZE(48, 48), 11, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {21, UPB_SIZE(116, 176), UPB_SIZE(-121, -181), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {22, UPB_SIZE(116, 176), UPB_SIZE(-121, -181), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {23, UPB_SIZE(100, 144), 12, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {24, UPB_SIZE(116, 176), UPB_SIZE(-121, -181), 0, 14, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {25, UPB_SIZE(56, 56), 13, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {26, UPB_SIZE(57, 57), 14, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 16), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(72, 128), UPB_SIZE(2, 2), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(80, 136), UPB_SIZE(3, 3), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(88, 144), UPB_SIZE(4, 4), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(96, 152), UPB_SIZE(5, 5), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 32), UPB_SIZE(6, 6), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(32, 48), UPB_SIZE(7, 7), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(40, 64), UPB_SIZE(8, 8), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(48, 80), UPB_SIZE(9, 9), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(56, 96), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(60, 104), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(12, 12), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(12, 12), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(12, 12), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {15, UPB_SIZE(12, 12), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {16, UPB_SIZE(12, 12), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {17, UPB_SIZE(12, 12), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {18, UPB_SIZE(12, 12), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {19, UPB_SIZE(104, 160), UPB_SIZE(10, 10), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {20, UPB_SIZE(112, 168), UPB_SIZE(11, 11), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {21, UPB_SIZE(12, 12), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {22, UPB_SIZE(12, 12), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {23, UPB_SIZE(64, 112), UPB_SIZE(12, 12), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {24, UPB_SIZE(12, 12), UPB_SIZE(-5, -5), 0, 14, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {25, UPB_SIZE(8, 8), UPB_SIZE(13, 13), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {26, UPB_SIZE(9, 9), UPB_SIZE(14, 14), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_StringRules_msginit = {
&validate_StringRules_submsgs[0],
&validate_StringRules__fields[0],
- UPB_SIZE(128, 192), 26, upb_ExtMode_NonExtendable, 26, 255, 0,
+ UPB_SIZE(120, 176), 26, kUpb_ExtMode_NonExtendable, 26, 255, 0,
};
static const upb_MiniTable_Field validate_BytesRules__fields[14] = {
- {1, UPB_SIZE(36, 40), 1, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 2, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 16), 3, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(44, 56), 4, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(52, 72), 5, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {6, UPB_SIZE(60, 88), 6, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {7, UPB_SIZE(68, 104), 7, 0, 12, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {8, UPB_SIZE(76, 120), 0, 0, 12, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {9, UPB_SIZE(80, 128), 0, 0, 12, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {10, UPB_SIZE(84, 136), UPB_SIZE(-89, -141), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {11, UPB_SIZE(84, 136), UPB_SIZE(-89, -141), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {12, UPB_SIZE(84, 136), UPB_SIZE(-89, -141), 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {13, UPB_SIZE(24, 24), 8, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {14, UPB_SIZE(32, 32), 9, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 16), UPB_SIZE(1, 1), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(64, 112), UPB_SIZE(2, 2), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(72, 120), UPB_SIZE(3, 3), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(20, 32), UPB_SIZE(4, 4), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(28, 48), UPB_SIZE(5, 5), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(36, 64), UPB_SIZE(6, 6), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(44, 80), UPB_SIZE(7, 7), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(52, 96), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(56, 104), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {10, UPB_SIZE(2, 2), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {11, UPB_SIZE(2, 2), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {12, UPB_SIZE(2, 2), UPB_SIZE(-5, -5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {13, UPB_SIZE(80, 128), UPB_SIZE(8, 8), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {14, UPB_SIZE(8, 8), UPB_SIZE(9, 9), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_BytesRules_msginit = {
NULL,
&validate_BytesRules__fields[0],
- UPB_SIZE(96, 144), 14, upb_ExtMode_NonExtendable, 14, 255, 0,
+ UPB_SIZE(88, 136), 14, kUpb_ExtMode_NonExtendable, 14, 255, 0,
};
static const upb_MiniTable_Field validate_EnumRules__fields[4] = {
- {1, UPB_SIZE(4, 4), 1, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 2, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 16), 0, 0, 5, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 24), 0, 0, 5, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 4), UPB_SIZE(1, 1), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(2, 2), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_EnumRules_msginit = {
NULL,
&validate_EnumRules__fields[0],
- UPB_SIZE(24, 32), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(24, 32), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Field validate_MessageRules__fields[2] = {
- {1, UPB_SIZE(1, 1), 1, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(2, 2), 2, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(1, 1), UPB_SIZE(1, 1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(2, 2), UPB_SIZE(2, 2), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_MessageRules_msginit = {
NULL,
&validate_MessageRules__fields[0],
- UPB_SIZE(8, 8), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 8), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub validate_RepeatedRules_submsgs[1] = {
@@ -376,92 +376,103 @@ static const upb_MiniTable_Sub validate_RepeatedRules_submsgs[1] = {
};
static const upb_MiniTable_Field validate_RepeatedRules__fields[5] = {
- {1, UPB_SIZE(8, 8), 1, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 16), 2, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 24), 3, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(28, 32), 4, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(25, 25), 5, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 16), UPB_SIZE(1, 1), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(2, 2), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(1, 1), UPB_SIZE(3, 3), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(4, 4), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(2, 2), UPB_SIZE(5, 5), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_RepeatedRules_msginit = {
&validate_RepeatedRules_submsgs[0],
&validate_RepeatedRules__fields[0],
- UPB_SIZE(32, 40), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(24, 32), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
-static const upb_MiniTable_Sub validate_MapRules_submsgs[1] = {
+static const upb_MiniTable_Sub validate_MapRules_submsgs[2] = {
+ {.submsg = &validate_FieldRules_msginit},
{.submsg = &validate_FieldRules_msginit},
};
static const upb_MiniTable_Field validate_MapRules__fields[6] = {
- {1, UPB_SIZE(8, 8), 1, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(16, 16), 2, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(24, 24), 3, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(28, 32), 4, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(32, 40), 5, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(25, 25), 6, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(16, 24), UPB_SIZE(1, 1), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(24, 32), UPB_SIZE(2, 2), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(1, 1), UPB_SIZE(3, 3), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(4, 4), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(8, 16), UPB_SIZE(5, 5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(2, 2), UPB_SIZE(6, 6), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_MapRules_msginit = {
&validate_MapRules_submsgs[0],
&validate_MapRules__fields[0],
- UPB_SIZE(40, 48), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(32, 40), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable_Field validate_AnyRules__fields[3] = {
- {1, UPB_SIZE(1, 1), 1, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 12, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), 0, 0, 12, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(1, 1), UPB_SIZE(1, 1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_AnyRules_msginit = {
NULL,
&validate_AnyRules__fields[0],
- UPB_SIZE(16, 24), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
-static const upb_MiniTable_Sub validate_DurationRules_submsgs[1] = {
+static const upb_MiniTable_Sub validate_DurationRules_submsgs[7] = {
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
{.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field validate_DurationRules__fields[8] = {
- {1, UPB_SIZE(1, 1), 1, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), 3, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(12, 24), 4, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(16, 32), 5, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(20, 40), 6, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(24, 48), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {8, UPB_SIZE(28, 56), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(1, 1), UPB_SIZE(1, 1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(2, 2), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 16), UPB_SIZE(3, 3), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 24), UPB_SIZE(4, 4), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(16, 32), UPB_SIZE(5, 5), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(20, 40), UPB_SIZE(6, 6), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(24, 48), UPB_SIZE(0, 0), 5, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(28, 56), UPB_SIZE(0, 0), 6, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_DurationRules_msginit = {
&validate_DurationRules_submsgs[0],
&validate_DurationRules__fields[0],
- UPB_SIZE(32, 64), 8, upb_ExtMode_NonExtendable, 8, 255, 0,
+ UPB_SIZE(32, 64), 8, kUpb_ExtMode_NonExtendable, 8, 255, 0,
};
-static const upb_MiniTable_Sub validate_TimestampRules_submsgs[2] = {
- {.submsg = &google_protobuf_Duration_msginit},
+static const upb_MiniTable_Sub validate_TimestampRules_submsgs[6] = {
+ {.submsg = &google_protobuf_Timestamp_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
{.submsg = &google_protobuf_Timestamp_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
+ {.submsg = &google_protobuf_Timestamp_msginit},
+ {.submsg = &google_protobuf_Duration_msginit},
};
static const upb_MiniTable_Field validate_TimestampRules__fields[9] = {
- {1, UPB_SIZE(2, 2), 1, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 16), 3, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(16, 24), 4, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(20, 32), 5, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(24, 40), 6, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {7, UPB_SIZE(3, 3), 7, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {8, UPB_SIZE(4, 4), 8, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {9, UPB_SIZE(28, 48), 9, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(2, 2), UPB_SIZE(1, 1), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(2, 2), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(3, 3), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(16, 24), UPB_SIZE(4, 4), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(20, 32), UPB_SIZE(5, 5), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(24, 40), UPB_SIZE(6, 6), 4, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(3, 3), UPB_SIZE(7, 7), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {8, UPB_SIZE(4, 4), UPB_SIZE(8, 8), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {9, UPB_SIZE(28, 48), UPB_SIZE(9, 9), 5, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable validate_TimestampRules_msginit = {
&validate_TimestampRules_submsgs[0],
&validate_TimestampRules__fields[0],
- UPB_SIZE(32, 56), 9, upb_ExtMode_NonExtendable, 9, 255, 0,
+ UPB_SIZE(32, 56), 9, kUpb_ExtMode_NonExtendable, 9, 255, 0,
};
static const upb_MiniTable *messages_layout[23] = {
@@ -495,27 +506,27 @@ extern const upb_MiniTable google_protobuf_MessageOptions_msginit;
extern const upb_MiniTable google_protobuf_OneofOptions_msginit;
extern const upb_MiniTable validate_FieldRules_msginit;
const upb_MiniTable_Extension validate_disabled_ext = {
- {1071, 0, 0, 0, 8, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- &google_protobuf_MessageOptions_msginit,
- {.submsg = NULL},
+ {1071, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ &google_protobuf_MessageOptions_msginit,
+ {.submsg = NULL},
};
const upb_MiniTable_Extension validate_ignored_ext = {
- {1072, 0, 0, 0, 8, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- &google_protobuf_MessageOptions_msginit,
- {.submsg = NULL},
+ {1072, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ &google_protobuf_MessageOptions_msginit,
+ {.submsg = NULL},
};
const upb_MiniTable_Extension validate_required_ext = {
- {1071, 0, 0, 0, 8, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- &google_protobuf_OneofOptions_msginit,
- {.submsg = NULL},
+ {1071, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ &google_protobuf_OneofOptions_msginit,
+ {.submsg = NULL},
};
const upb_MiniTable_Extension validate_rules_ext = {
- {1071, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_FieldOptions_msginit,
- {.submsg = &validate_FieldRules_msginit},
+ {1071, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_FieldOptions_msginit,
+ {.submsg = &validate_FieldRules_msginit},
};
@@ -527,9 +538,9 @@ static const upb_MiniTable_Extension *extensions_layout[4] = {
};
const upb_MiniTable_Enum validate_KnownRegex_enuminit = {
- NULL,
- 0x7ULL,
- 0,
+ NULL,
+ 0x7ULL,
+ 0,
};
static const upb_MiniTable_Enum *enums_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/validate/validate.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/validate/validate.upb.h
index 4cdf1cba11..b78ce98bcc 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/validate/validate.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/validate/validate.upb.h
@@ -138,11 +138,15 @@ UPB_INLINE validate_FieldRules* validate_FieldRules_parse_ex(const char* buf, si
return ret;
}
UPB_INLINE char* validate_FieldRules_serialize(const validate_FieldRules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_FieldRules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_FieldRules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_FieldRules_serialize_ex(const validate_FieldRules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_FieldRules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_FieldRules_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
validate_FieldRules_type_float = 1,
@@ -168,59 +172,212 @@ typedef enum {
validate_FieldRules_type_timestamp = 22,
validate_FieldRules_type_NOT_SET = 0
} validate_FieldRules_type_oneofcases;
-UPB_INLINE validate_FieldRules_type_oneofcases validate_FieldRules_type_case(const validate_FieldRules* msg) { return (validate_FieldRules_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool validate_FieldRules_has_float(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 1; }
-UPB_INLINE const validate_FloatRules* validate_FieldRules_float(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_FloatRules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 1, NULL); }
-UPB_INLINE bool validate_FieldRules_has_double(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE const validate_DoubleRules* validate_FieldRules_double(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_DoubleRules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 2, NULL); }
-UPB_INLINE bool validate_FieldRules_has_int32(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const validate_Int32Rules* validate_FieldRules_int32(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_Int32Rules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
-UPB_INLINE bool validate_FieldRules_has_int64(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 4; }
-UPB_INLINE const validate_Int64Rules* validate_FieldRules_int64(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_Int64Rules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 4, NULL); }
-UPB_INLINE bool validate_FieldRules_has_uint32(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 5; }
-UPB_INLINE const validate_UInt32Rules* validate_FieldRules_uint32(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_UInt32Rules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 5, NULL); }
-UPB_INLINE bool validate_FieldRules_has_uint64(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 6; }
-UPB_INLINE const validate_UInt64Rules* validate_FieldRules_uint64(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_UInt64Rules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 6, NULL); }
-UPB_INLINE bool validate_FieldRules_has_sint32(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 7; }
-UPB_INLINE const validate_SInt32Rules* validate_FieldRules_sint32(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_SInt32Rules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 7, NULL); }
-UPB_INLINE bool validate_FieldRules_has_sint64(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 8; }
-UPB_INLINE const validate_SInt64Rules* validate_FieldRules_sint64(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_SInt64Rules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 8, NULL); }
-UPB_INLINE bool validate_FieldRules_has_fixed32(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 9; }
-UPB_INLINE const validate_Fixed32Rules* validate_FieldRules_fixed32(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_Fixed32Rules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 9, NULL); }
-UPB_INLINE bool validate_FieldRules_has_fixed64(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 10; }
-UPB_INLINE const validate_Fixed64Rules* validate_FieldRules_fixed64(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_Fixed64Rules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 10, NULL); }
-UPB_INLINE bool validate_FieldRules_has_sfixed32(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 11; }
-UPB_INLINE const validate_SFixed32Rules* validate_FieldRules_sfixed32(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_SFixed32Rules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 11, NULL); }
-UPB_INLINE bool validate_FieldRules_has_sfixed64(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 12; }
-UPB_INLINE const validate_SFixed64Rules* validate_FieldRules_sfixed64(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_SFixed64Rules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 12, NULL); }
-UPB_INLINE bool validate_FieldRules_has_bool(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 13; }
-UPB_INLINE const validate_BoolRules* validate_FieldRules_bool(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_BoolRules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 13, NULL); }
-UPB_INLINE bool validate_FieldRules_has_string(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 14; }
-UPB_INLINE const validate_StringRules* validate_FieldRules_string(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_StringRules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 14, NULL); }
-UPB_INLINE bool validate_FieldRules_has_bytes(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 15; }
-UPB_INLINE const validate_BytesRules* validate_FieldRules_bytes(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_BytesRules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 15, NULL); }
-UPB_INLINE bool validate_FieldRules_has_enum(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 16; }
-UPB_INLINE const validate_EnumRules* validate_FieldRules_enum(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_EnumRules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 16, NULL); }
-UPB_INLINE bool validate_FieldRules_has_message(const validate_FieldRules *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE validate_FieldRules_type_oneofcases validate_FieldRules_type_case(const validate_FieldRules* msg) {
+ return (validate_FieldRules_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool validate_FieldRules_has_float(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 1;
+}
+UPB_INLINE void validate_FieldRules_clear_float(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_FloatRules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_FloatRules* validate_FieldRules_float(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_FloatRules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 1, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_double(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void validate_FieldRules_clear_double(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_DoubleRules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_DoubleRules* validate_FieldRules_double(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_DoubleRules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_int32(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void validate_FieldRules_clear_int32(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_Int32Rules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_Int32Rules* validate_FieldRules_int32(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_Int32Rules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 3, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_int64(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 4;
+}
+UPB_INLINE void validate_FieldRules_clear_int64(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_Int64Rules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_Int64Rules* validate_FieldRules_int64(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_Int64Rules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 4, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_uint32(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void validate_FieldRules_clear_uint32(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_UInt32Rules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_UInt32Rules* validate_FieldRules_uint32(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_UInt32Rules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 5, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_uint64(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 6;
+}
+UPB_INLINE void validate_FieldRules_clear_uint64(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_UInt64Rules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_UInt64Rules* validate_FieldRules_uint64(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_UInt64Rules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 6, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_sint32(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 7;
+}
+UPB_INLINE void validate_FieldRules_clear_sint32(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_SInt32Rules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_SInt32Rules* validate_FieldRules_sint32(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_SInt32Rules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 7, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_sint64(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 8;
+}
+UPB_INLINE void validate_FieldRules_clear_sint64(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_SInt64Rules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_SInt64Rules* validate_FieldRules_sint64(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_SInt64Rules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 8, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_fixed32(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 9;
+}
+UPB_INLINE void validate_FieldRules_clear_fixed32(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_Fixed32Rules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_Fixed32Rules* validate_FieldRules_fixed32(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_Fixed32Rules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 9, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_fixed64(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 10;
+}
+UPB_INLINE void validate_FieldRules_clear_fixed64(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_Fixed64Rules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_Fixed64Rules* validate_FieldRules_fixed64(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_Fixed64Rules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 10, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_sfixed32(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 11;
+}
+UPB_INLINE void validate_FieldRules_clear_sfixed32(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_SFixed32Rules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_SFixed32Rules* validate_FieldRules_sfixed32(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_SFixed32Rules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 11, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_sfixed64(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 12;
+}
+UPB_INLINE void validate_FieldRules_clear_sfixed64(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_SFixed64Rules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_SFixed64Rules* validate_FieldRules_sfixed64(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_SFixed64Rules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 12, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_bool(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 13;
+}
+UPB_INLINE void validate_FieldRules_clear_bool(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_BoolRules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_BoolRules* validate_FieldRules_bool(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_BoolRules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 13, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_string(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 14;
+}
+UPB_INLINE void validate_FieldRules_clear_string(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_StringRules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_StringRules* validate_FieldRules_string(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_StringRules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 14, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_bytes(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 15;
+}
+UPB_INLINE void validate_FieldRules_clear_bytes(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_BytesRules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_BytesRules* validate_FieldRules_bytes(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_BytesRules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 15, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_enum(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 16;
+}
+UPB_INLINE void validate_FieldRules_clear_enum(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_EnumRules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_EnumRules* validate_FieldRules_enum(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_EnumRules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 16, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_message(const validate_FieldRules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_FieldRules_clear_message(const validate_FieldRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const validate_MessageRules* validate_FieldRules_message(const validate_FieldRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const validate_MessageRules*);
-}
-UPB_INLINE bool validate_FieldRules_has_repeated(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 18; }
-UPB_INLINE const validate_RepeatedRules* validate_FieldRules_repeated(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_RepeatedRules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 18, NULL); }
-UPB_INLINE bool validate_FieldRules_has_map(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 19; }
-UPB_INLINE const validate_MapRules* validate_FieldRules_map(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_MapRules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 19, NULL); }
-UPB_INLINE bool validate_FieldRules_has_any(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 20; }
-UPB_INLINE const validate_AnyRules* validate_FieldRules_any(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_AnyRules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 20, NULL); }
-UPB_INLINE bool validate_FieldRules_has_duration(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 21; }
-UPB_INLINE const validate_DurationRules* validate_FieldRules_duration(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_DurationRules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 21, NULL); }
-UPB_INLINE bool validate_FieldRules_has_timestamp(const validate_FieldRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 22; }
-UPB_INLINE const validate_TimestampRules* validate_FieldRules_timestamp(const validate_FieldRules *msg) { return UPB_READ_ONEOF(msg, const validate_TimestampRules*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 22, NULL); }
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const validate_MessageRules*);
+}
+UPB_INLINE bool validate_FieldRules_has_repeated(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 18;
+}
+UPB_INLINE void validate_FieldRules_clear_repeated(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_RepeatedRules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_RepeatedRules* validate_FieldRules_repeated(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_RepeatedRules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 18, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_map(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 19;
+}
+UPB_INLINE void validate_FieldRules_clear_map(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_MapRules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_MapRules* validate_FieldRules_map(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_MapRules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 19, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_any(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 20;
+}
+UPB_INLINE void validate_FieldRules_clear_any(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_AnyRules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_AnyRules* validate_FieldRules_any(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_AnyRules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 20, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_duration(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 21;
+}
+UPB_INLINE void validate_FieldRules_clear_duration(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_DurationRules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_DurationRules* validate_FieldRules_duration(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_DurationRules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 21, NULL);
+}
+UPB_INLINE bool validate_FieldRules_has_timestamp(const validate_FieldRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 22;
+}
+UPB_INLINE void validate_FieldRules_clear_timestamp(const validate_FieldRules* msg) {
+ UPB_WRITE_ONEOF(msg, validate_TimestampRules*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), validate_FieldRules_type_NOT_SET);
+}
+UPB_INLINE const validate_TimestampRules* validate_FieldRules_timestamp(const validate_FieldRules* msg) {
+ return UPB_READ_ONEOF(msg, const validate_TimestampRules*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 22, NULL);
+}
UPB_INLINE void validate_FieldRules_set_float(validate_FieldRules *msg, validate_FloatRules* value) {
- UPB_WRITE_ONEOF(msg, validate_FloatRules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 1);
+ UPB_WRITE_ONEOF(msg, validate_FloatRules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 1);
}
-UPB_INLINE struct validate_FloatRules* validate_FieldRules_mutable_float(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_FloatRules* validate_FieldRules_mutable_float(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_FloatRules* sub = (struct validate_FloatRules*)validate_FieldRules_float(msg);
if (sub == NULL) {
sub = (struct validate_FloatRules*)_upb_Message_New(&validate_FloatRules_msginit, arena);
@@ -230,9 +387,9 @@ UPB_INLINE struct validate_FloatRules* validate_FieldRules_mutable_float(validat
return sub;
}
UPB_INLINE void validate_FieldRules_set_double(validate_FieldRules *msg, validate_DoubleRules* value) {
- UPB_WRITE_ONEOF(msg, validate_DoubleRules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, validate_DoubleRules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct validate_DoubleRules* validate_FieldRules_mutable_double(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_DoubleRules* validate_FieldRules_mutable_double(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_DoubleRules* sub = (struct validate_DoubleRules*)validate_FieldRules_double(msg);
if (sub == NULL) {
sub = (struct validate_DoubleRules*)_upb_Message_New(&validate_DoubleRules_msginit, arena);
@@ -242,9 +399,9 @@ UPB_INLINE struct validate_DoubleRules* validate_FieldRules_mutable_double(valid
return sub;
}
UPB_INLINE void validate_FieldRules_set_int32(validate_FieldRules *msg, validate_Int32Rules* value) {
- UPB_WRITE_ONEOF(msg, validate_Int32Rules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, validate_Int32Rules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct validate_Int32Rules* validate_FieldRules_mutable_int32(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_Int32Rules* validate_FieldRules_mutable_int32(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_Int32Rules* sub = (struct validate_Int32Rules*)validate_FieldRules_int32(msg);
if (sub == NULL) {
sub = (struct validate_Int32Rules*)_upb_Message_New(&validate_Int32Rules_msginit, arena);
@@ -254,9 +411,9 @@ UPB_INLINE struct validate_Int32Rules* validate_FieldRules_mutable_int32(validat
return sub;
}
UPB_INLINE void validate_FieldRules_set_int64(validate_FieldRules *msg, validate_Int64Rules* value) {
- UPB_WRITE_ONEOF(msg, validate_Int64Rules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 4);
+ UPB_WRITE_ONEOF(msg, validate_Int64Rules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 4);
}
-UPB_INLINE struct validate_Int64Rules* validate_FieldRules_mutable_int64(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_Int64Rules* validate_FieldRules_mutable_int64(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_Int64Rules* sub = (struct validate_Int64Rules*)validate_FieldRules_int64(msg);
if (sub == NULL) {
sub = (struct validate_Int64Rules*)_upb_Message_New(&validate_Int64Rules_msginit, arena);
@@ -266,9 +423,9 @@ UPB_INLINE struct validate_Int64Rules* validate_FieldRules_mutable_int64(validat
return sub;
}
UPB_INLINE void validate_FieldRules_set_uint32(validate_FieldRules *msg, validate_UInt32Rules* value) {
- UPB_WRITE_ONEOF(msg, validate_UInt32Rules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 5);
+ UPB_WRITE_ONEOF(msg, validate_UInt32Rules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 5);
}
-UPB_INLINE struct validate_UInt32Rules* validate_FieldRules_mutable_uint32(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_UInt32Rules* validate_FieldRules_mutable_uint32(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_UInt32Rules* sub = (struct validate_UInt32Rules*)validate_FieldRules_uint32(msg);
if (sub == NULL) {
sub = (struct validate_UInt32Rules*)_upb_Message_New(&validate_UInt32Rules_msginit, arena);
@@ -278,9 +435,9 @@ UPB_INLINE struct validate_UInt32Rules* validate_FieldRules_mutable_uint32(valid
return sub;
}
UPB_INLINE void validate_FieldRules_set_uint64(validate_FieldRules *msg, validate_UInt64Rules* value) {
- UPB_WRITE_ONEOF(msg, validate_UInt64Rules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 6);
+ UPB_WRITE_ONEOF(msg, validate_UInt64Rules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 6);
}
-UPB_INLINE struct validate_UInt64Rules* validate_FieldRules_mutable_uint64(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_UInt64Rules* validate_FieldRules_mutable_uint64(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_UInt64Rules* sub = (struct validate_UInt64Rules*)validate_FieldRules_uint64(msg);
if (sub == NULL) {
sub = (struct validate_UInt64Rules*)_upb_Message_New(&validate_UInt64Rules_msginit, arena);
@@ -290,9 +447,9 @@ UPB_INLINE struct validate_UInt64Rules* validate_FieldRules_mutable_uint64(valid
return sub;
}
UPB_INLINE void validate_FieldRules_set_sint32(validate_FieldRules *msg, validate_SInt32Rules* value) {
- UPB_WRITE_ONEOF(msg, validate_SInt32Rules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 7);
+ UPB_WRITE_ONEOF(msg, validate_SInt32Rules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 7);
}
-UPB_INLINE struct validate_SInt32Rules* validate_FieldRules_mutable_sint32(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_SInt32Rules* validate_FieldRules_mutable_sint32(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_SInt32Rules* sub = (struct validate_SInt32Rules*)validate_FieldRules_sint32(msg);
if (sub == NULL) {
sub = (struct validate_SInt32Rules*)_upb_Message_New(&validate_SInt32Rules_msginit, arena);
@@ -302,9 +459,9 @@ UPB_INLINE struct validate_SInt32Rules* validate_FieldRules_mutable_sint32(valid
return sub;
}
UPB_INLINE void validate_FieldRules_set_sint64(validate_FieldRules *msg, validate_SInt64Rules* value) {
- UPB_WRITE_ONEOF(msg, validate_SInt64Rules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 8);
+ UPB_WRITE_ONEOF(msg, validate_SInt64Rules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 8);
}
-UPB_INLINE struct validate_SInt64Rules* validate_FieldRules_mutable_sint64(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_SInt64Rules* validate_FieldRules_mutable_sint64(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_SInt64Rules* sub = (struct validate_SInt64Rules*)validate_FieldRules_sint64(msg);
if (sub == NULL) {
sub = (struct validate_SInt64Rules*)_upb_Message_New(&validate_SInt64Rules_msginit, arena);
@@ -314,9 +471,9 @@ UPB_INLINE struct validate_SInt64Rules* validate_FieldRules_mutable_sint64(valid
return sub;
}
UPB_INLINE void validate_FieldRules_set_fixed32(validate_FieldRules *msg, validate_Fixed32Rules* value) {
- UPB_WRITE_ONEOF(msg, validate_Fixed32Rules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 9);
+ UPB_WRITE_ONEOF(msg, validate_Fixed32Rules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 9);
}
-UPB_INLINE struct validate_Fixed32Rules* validate_FieldRules_mutable_fixed32(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_Fixed32Rules* validate_FieldRules_mutable_fixed32(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_Fixed32Rules* sub = (struct validate_Fixed32Rules*)validate_FieldRules_fixed32(msg);
if (sub == NULL) {
sub = (struct validate_Fixed32Rules*)_upb_Message_New(&validate_Fixed32Rules_msginit, arena);
@@ -326,9 +483,9 @@ UPB_INLINE struct validate_Fixed32Rules* validate_FieldRules_mutable_fixed32(val
return sub;
}
UPB_INLINE void validate_FieldRules_set_fixed64(validate_FieldRules *msg, validate_Fixed64Rules* value) {
- UPB_WRITE_ONEOF(msg, validate_Fixed64Rules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 10);
+ UPB_WRITE_ONEOF(msg, validate_Fixed64Rules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 10);
}
-UPB_INLINE struct validate_Fixed64Rules* validate_FieldRules_mutable_fixed64(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_Fixed64Rules* validate_FieldRules_mutable_fixed64(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_Fixed64Rules* sub = (struct validate_Fixed64Rules*)validate_FieldRules_fixed64(msg);
if (sub == NULL) {
sub = (struct validate_Fixed64Rules*)_upb_Message_New(&validate_Fixed64Rules_msginit, arena);
@@ -338,9 +495,9 @@ UPB_INLINE struct validate_Fixed64Rules* validate_FieldRules_mutable_fixed64(val
return sub;
}
UPB_INLINE void validate_FieldRules_set_sfixed32(validate_FieldRules *msg, validate_SFixed32Rules* value) {
- UPB_WRITE_ONEOF(msg, validate_SFixed32Rules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 11);
+ UPB_WRITE_ONEOF(msg, validate_SFixed32Rules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 11);
}
-UPB_INLINE struct validate_SFixed32Rules* validate_FieldRules_mutable_sfixed32(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_SFixed32Rules* validate_FieldRules_mutable_sfixed32(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_SFixed32Rules* sub = (struct validate_SFixed32Rules*)validate_FieldRules_sfixed32(msg);
if (sub == NULL) {
sub = (struct validate_SFixed32Rules*)_upb_Message_New(&validate_SFixed32Rules_msginit, arena);
@@ -350,9 +507,9 @@ UPB_INLINE struct validate_SFixed32Rules* validate_FieldRules_mutable_sfixed32(v
return sub;
}
UPB_INLINE void validate_FieldRules_set_sfixed64(validate_FieldRules *msg, validate_SFixed64Rules* value) {
- UPB_WRITE_ONEOF(msg, validate_SFixed64Rules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 12);
+ UPB_WRITE_ONEOF(msg, validate_SFixed64Rules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 12);
}
-UPB_INLINE struct validate_SFixed64Rules* validate_FieldRules_mutable_sfixed64(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_SFixed64Rules* validate_FieldRules_mutable_sfixed64(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_SFixed64Rules* sub = (struct validate_SFixed64Rules*)validate_FieldRules_sfixed64(msg);
if (sub == NULL) {
sub = (struct validate_SFixed64Rules*)_upb_Message_New(&validate_SFixed64Rules_msginit, arena);
@@ -362,9 +519,9 @@ UPB_INLINE struct validate_SFixed64Rules* validate_FieldRules_mutable_sfixed64(v
return sub;
}
UPB_INLINE void validate_FieldRules_set_bool(validate_FieldRules *msg, validate_BoolRules* value) {
- UPB_WRITE_ONEOF(msg, validate_BoolRules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 13);
+ UPB_WRITE_ONEOF(msg, validate_BoolRules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 13);
}
-UPB_INLINE struct validate_BoolRules* validate_FieldRules_mutable_bool(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_BoolRules* validate_FieldRules_mutable_bool(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_BoolRules* sub = (struct validate_BoolRules*)validate_FieldRules_bool(msg);
if (sub == NULL) {
sub = (struct validate_BoolRules*)_upb_Message_New(&validate_BoolRules_msginit, arena);
@@ -374,9 +531,9 @@ UPB_INLINE struct validate_BoolRules* validate_FieldRules_mutable_bool(validate_
return sub;
}
UPB_INLINE void validate_FieldRules_set_string(validate_FieldRules *msg, validate_StringRules* value) {
- UPB_WRITE_ONEOF(msg, validate_StringRules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 14);
+ UPB_WRITE_ONEOF(msg, validate_StringRules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 14);
}
-UPB_INLINE struct validate_StringRules* validate_FieldRules_mutable_string(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_StringRules* validate_FieldRules_mutable_string(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_StringRules* sub = (struct validate_StringRules*)validate_FieldRules_string(msg);
if (sub == NULL) {
sub = (struct validate_StringRules*)_upb_Message_New(&validate_StringRules_msginit, arena);
@@ -386,9 +543,9 @@ UPB_INLINE struct validate_StringRules* validate_FieldRules_mutable_string(valid
return sub;
}
UPB_INLINE void validate_FieldRules_set_bytes(validate_FieldRules *msg, validate_BytesRules* value) {
- UPB_WRITE_ONEOF(msg, validate_BytesRules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 15);
+ UPB_WRITE_ONEOF(msg, validate_BytesRules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 15);
}
-UPB_INLINE struct validate_BytesRules* validate_FieldRules_mutable_bytes(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_BytesRules* validate_FieldRules_mutable_bytes(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_BytesRules* sub = (struct validate_BytesRules*)validate_FieldRules_bytes(msg);
if (sub == NULL) {
sub = (struct validate_BytesRules*)_upb_Message_New(&validate_BytesRules_msginit, arena);
@@ -398,9 +555,9 @@ UPB_INLINE struct validate_BytesRules* validate_FieldRules_mutable_bytes(validat
return sub;
}
UPB_INLINE void validate_FieldRules_set_enum(validate_FieldRules *msg, validate_EnumRules* value) {
- UPB_WRITE_ONEOF(msg, validate_EnumRules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 16);
+ UPB_WRITE_ONEOF(msg, validate_EnumRules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 16);
}
-UPB_INLINE struct validate_EnumRules* validate_FieldRules_mutable_enum(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_EnumRules* validate_FieldRules_mutable_enum(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_EnumRules* sub = (struct validate_EnumRules*)validate_FieldRules_enum(msg);
if (sub == NULL) {
sub = (struct validate_EnumRules*)_upb_Message_New(&validate_EnumRules_msginit, arena);
@@ -411,9 +568,9 @@ UPB_INLINE struct validate_EnumRules* validate_FieldRules_mutable_enum(validate_
}
UPB_INLINE void validate_FieldRules_set_message(validate_FieldRules *msg, validate_MessageRules* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), validate_MessageRules*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), validate_MessageRules*) = value;
}
-UPB_INLINE struct validate_MessageRules* validate_FieldRules_mutable_message(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_MessageRules* validate_FieldRules_mutable_message(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_MessageRules* sub = (struct validate_MessageRules*)validate_FieldRules_message(msg);
if (sub == NULL) {
sub = (struct validate_MessageRules*)_upb_Message_New(&validate_MessageRules_msginit, arena);
@@ -423,9 +580,9 @@ UPB_INLINE struct validate_MessageRules* validate_FieldRules_mutable_message(val
return sub;
}
UPB_INLINE void validate_FieldRules_set_repeated(validate_FieldRules *msg, validate_RepeatedRules* value) {
- UPB_WRITE_ONEOF(msg, validate_RepeatedRules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 18);
+ UPB_WRITE_ONEOF(msg, validate_RepeatedRules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 18);
}
-UPB_INLINE struct validate_RepeatedRules* validate_FieldRules_mutable_repeated(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_RepeatedRules* validate_FieldRules_mutable_repeated(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_RepeatedRules* sub = (struct validate_RepeatedRules*)validate_FieldRules_repeated(msg);
if (sub == NULL) {
sub = (struct validate_RepeatedRules*)_upb_Message_New(&validate_RepeatedRules_msginit, arena);
@@ -435,9 +592,9 @@ UPB_INLINE struct validate_RepeatedRules* validate_FieldRules_mutable_repeated(v
return sub;
}
UPB_INLINE void validate_FieldRules_set_map(validate_FieldRules *msg, validate_MapRules* value) {
- UPB_WRITE_ONEOF(msg, validate_MapRules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 19);
+ UPB_WRITE_ONEOF(msg, validate_MapRules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 19);
}
-UPB_INLINE struct validate_MapRules* validate_FieldRules_mutable_map(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_MapRules* validate_FieldRules_mutable_map(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_MapRules* sub = (struct validate_MapRules*)validate_FieldRules_map(msg);
if (sub == NULL) {
sub = (struct validate_MapRules*)_upb_Message_New(&validate_MapRules_msginit, arena);
@@ -447,9 +604,9 @@ UPB_INLINE struct validate_MapRules* validate_FieldRules_mutable_map(validate_Fi
return sub;
}
UPB_INLINE void validate_FieldRules_set_any(validate_FieldRules *msg, validate_AnyRules* value) {
- UPB_WRITE_ONEOF(msg, validate_AnyRules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 20);
+ UPB_WRITE_ONEOF(msg, validate_AnyRules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 20);
}
-UPB_INLINE struct validate_AnyRules* validate_FieldRules_mutable_any(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_AnyRules* validate_FieldRules_mutable_any(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_AnyRules* sub = (struct validate_AnyRules*)validate_FieldRules_any(msg);
if (sub == NULL) {
sub = (struct validate_AnyRules*)_upb_Message_New(&validate_AnyRules_msginit, arena);
@@ -459,9 +616,9 @@ UPB_INLINE struct validate_AnyRules* validate_FieldRules_mutable_any(validate_Fi
return sub;
}
UPB_INLINE void validate_FieldRules_set_duration(validate_FieldRules *msg, validate_DurationRules* value) {
- UPB_WRITE_ONEOF(msg, validate_DurationRules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 21);
+ UPB_WRITE_ONEOF(msg, validate_DurationRules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 21);
}
-UPB_INLINE struct validate_DurationRules* validate_FieldRules_mutable_duration(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_DurationRules* validate_FieldRules_mutable_duration(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_DurationRules* sub = (struct validate_DurationRules*)validate_FieldRules_duration(msg);
if (sub == NULL) {
sub = (struct validate_DurationRules*)_upb_Message_New(&validate_DurationRules_msginit, arena);
@@ -471,9 +628,9 @@ UPB_INLINE struct validate_DurationRules* validate_FieldRules_mutable_duration(v
return sub;
}
UPB_INLINE void validate_FieldRules_set_timestamp(validate_FieldRules *msg, validate_TimestampRules* value) {
- UPB_WRITE_ONEOF(msg, validate_TimestampRules*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 22);
+ UPB_WRITE_ONEOF(msg, validate_TimestampRules*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 22);
}
-UPB_INLINE struct validate_TimestampRules* validate_FieldRules_mutable_timestamp(validate_FieldRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_TimestampRules* validate_FieldRules_mutable_timestamp(validate_FieldRules* msg, upb_Arena* arena) {
struct validate_TimestampRules* sub = (struct validate_TimestampRules*)validate_FieldRules_timestamp(msg);
if (sub == NULL) {
sub = (struct validate_TimestampRules*)_upb_Message_New(&validate_TimestampRules_msginit, arena);
@@ -508,35 +665,85 @@ UPB_INLINE validate_FloatRules* validate_FloatRules_parse_ex(const char* buf, si
return ret;
}
UPB_INLINE char* validate_FloatRules_serialize(const validate_FloatRules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_FloatRules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_FloatRules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_FloatRules_serialize_ex(const validate_FloatRules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_FloatRules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_FloatRules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_FloatRules_has_const(const validate_FloatRules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_FloatRules_clear_const(const validate_FloatRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), float) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_FloatRules_has_const(const validate_FloatRules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE float validate_FloatRules_const(const validate_FloatRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), float);
}
-UPB_INLINE bool validate_FloatRules_has_lt(const validate_FloatRules *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool validate_FloatRules_has_lt(const validate_FloatRules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_FloatRules_clear_lt(const validate_FloatRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), float) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE float validate_FloatRules_lt(const validate_FloatRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), float);
}
-UPB_INLINE bool validate_FloatRules_has_lte(const validate_FloatRules *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool validate_FloatRules_has_lte(const validate_FloatRules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_FloatRules_clear_lte(const validate_FloatRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), float) = 0;
+ _upb_clearhas(msg, 3);
+}
UPB_INLINE float validate_FloatRules_lte(const validate_FloatRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), float);
}
-UPB_INLINE bool validate_FloatRules_has_gt(const validate_FloatRules *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool validate_FloatRules_has_gt(const validate_FloatRules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_FloatRules_clear_gt(const validate_FloatRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), float) = 0;
+ _upb_clearhas(msg, 4);
+}
UPB_INLINE float validate_FloatRules_gt(const validate_FloatRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), float);
}
-UPB_INLINE bool validate_FloatRules_has_gte(const validate_FloatRules *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool validate_FloatRules_has_gte(const validate_FloatRules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_FloatRules_clear_gte(const validate_FloatRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), float) = 0;
+ _upb_clearhas(msg, 5);
+}
UPB_INLINE float validate_FloatRules_gte(const validate_FloatRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 20), float);
}
-UPB_INLINE float const* validate_FloatRules_in(const validate_FloatRules *msg, size_t *len) { return (float const*)_upb_array_accessor(msg, UPB_SIZE(28, 32), len); }
-UPB_INLINE float const* validate_FloatRules_not_in(const validate_FloatRules *msg, size_t *len) { return (float const*)_upb_array_accessor(msg, UPB_SIZE(32, 40), len); }
-UPB_INLINE bool validate_FloatRules_has_ignore_empty(const validate_FloatRules *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE void validate_FloatRules_clear_in(const validate_FloatRules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 32));
+}
+UPB_INLINE float const* validate_FloatRules_in(const validate_FloatRules* msg, size_t* len) {
+ return (float const*)_upb_array_accessor(msg, UPB_SIZE(28, 32), len);
+}
+UPB_INLINE void validate_FloatRules_clear_not_in(const validate_FloatRules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 40));
+}
+UPB_INLINE float const* validate_FloatRules_not_in(const validate_FloatRules* msg, size_t* len) {
+ return (float const*)_upb_array_accessor(msg, UPB_SIZE(32, 40), len);
+}
+UPB_INLINE bool validate_FloatRules_has_ignore_empty(const validate_FloatRules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_FloatRules_clear_ignore_empty(const validate_FloatRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool) = 0;
+ _upb_clearhas(msg, 6);
+}
UPB_INLINE bool validate_FloatRules_ignore_empty(const validate_FloatRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool);
}
@@ -561,25 +768,23 @@ UPB_INLINE void validate_FloatRules_set_gte(validate_FloatRules *msg, float valu
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(20, 20), float) = value;
}
-UPB_INLINE float* validate_FloatRules_mutable_in(validate_FloatRules *msg, size_t *len) {
+UPB_INLINE float* validate_FloatRules_mutable_in(validate_FloatRules* msg, size_t* len) {
return (float*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 32), len);
}
-UPB_INLINE float* validate_FloatRules_resize_in(validate_FloatRules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE float* validate_FloatRules_resize_in(validate_FloatRules* msg, size_t len, upb_Arena* arena) {
return (float*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 32), len, 2, arena);
}
-UPB_INLINE bool validate_FloatRules_add_in(validate_FloatRules *msg, float val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 32), 2, &val,
- arena);
+UPB_INLINE bool validate_FloatRules_add_in(validate_FloatRules* msg, float val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 32), 2, &val, arena);
}
-UPB_INLINE float* validate_FloatRules_mutable_not_in(validate_FloatRules *msg, size_t *len) {
+UPB_INLINE float* validate_FloatRules_mutable_not_in(validate_FloatRules* msg, size_t* len) {
return (float*)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 40), len);
}
-UPB_INLINE float* validate_FloatRules_resize_not_in(validate_FloatRules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE float* validate_FloatRules_resize_not_in(validate_FloatRules* msg, size_t len, upb_Arena* arena) {
return (float*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 40), len, 2, arena);
}
-UPB_INLINE bool validate_FloatRules_add_not_in(validate_FloatRules *msg, float val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 40), 2, &val,
- arena);
+UPB_INLINE bool validate_FloatRules_add_not_in(validate_FloatRules* msg, float val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 40), 2, &val, arena);
}
UPB_INLINE void validate_FloatRules_set_ignore_empty(validate_FloatRules *msg, bool value) {
_upb_sethas(msg, 6);
@@ -611,82 +816,130 @@ UPB_INLINE validate_DoubleRules* validate_DoubleRules_parse_ex(const char* buf,
return ret;
}
UPB_INLINE char* validate_DoubleRules_serialize(const validate_DoubleRules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_DoubleRules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_DoubleRules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_DoubleRules_serialize_ex(const validate_DoubleRules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_DoubleRules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_DoubleRules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_DoubleRules_has_const(const validate_DoubleRules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_DoubleRules_clear_const(const validate_DoubleRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), double) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_DoubleRules_has_const(const validate_DoubleRules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE double validate_DoubleRules_const(const validate_DoubleRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), double);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), double);
+}
+UPB_INLINE bool validate_DoubleRules_has_lt(const validate_DoubleRules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_DoubleRules_clear_lt(const validate_DoubleRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), double) = 0;
+ _upb_clearhas(msg, 2);
}
-UPB_INLINE bool validate_DoubleRules_has_lt(const validate_DoubleRules *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE double validate_DoubleRules_lt(const validate_DoubleRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), double);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), double);
+}
+UPB_INLINE bool validate_DoubleRules_has_lte(const validate_DoubleRules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_DoubleRules_clear_lte(const validate_DoubleRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), double) = 0;
+ _upb_clearhas(msg, 3);
}
-UPB_INLINE bool validate_DoubleRules_has_lte(const validate_DoubleRules *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE double validate_DoubleRules_lte(const validate_DoubleRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), double);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 40), double);
+}
+UPB_INLINE bool validate_DoubleRules_has_gt(const validate_DoubleRules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_DoubleRules_clear_gt(const validate_DoubleRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), double) = 0;
+ _upb_clearhas(msg, 4);
}
-UPB_INLINE bool validate_DoubleRules_has_gt(const validate_DoubleRules *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE double validate_DoubleRules_gt(const validate_DoubleRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), double);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 48), double);
+}
+UPB_INLINE bool validate_DoubleRules_has_gte(const validate_DoubleRules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_DoubleRules_clear_gte(const validate_DoubleRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 56), double) = 0;
+ _upb_clearhas(msg, 5);
}
-UPB_INLINE bool validate_DoubleRules_has_gte(const validate_DoubleRules *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE double validate_DoubleRules_gte(const validate_DoubleRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 40), double);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 56), double);
+}
+UPB_INLINE void validate_DoubleRules_clear_in(const validate_DoubleRules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE double const* validate_DoubleRules_in(const validate_DoubleRules* msg, size_t* len) {
+ return (double const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE void validate_DoubleRules_clear_not_in(const validate_DoubleRules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE double const* validate_DoubleRules_not_in(const validate_DoubleRules* msg, size_t* len) {
+ return (double const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool validate_DoubleRules_has_ignore_empty(const validate_DoubleRules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_DoubleRules_clear_ignore_empty(const validate_DoubleRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 6);
}
-UPB_INLINE double const* validate_DoubleRules_in(const validate_DoubleRules *msg, size_t *len) { return (double const*)_upb_array_accessor(msg, UPB_SIZE(52, 56), len); }
-UPB_INLINE double const* validate_DoubleRules_not_in(const validate_DoubleRules *msg, size_t *len) { return (double const*)_upb_array_accessor(msg, UPB_SIZE(56, 64), len); }
-UPB_INLINE bool validate_DoubleRules_has_ignore_empty(const validate_DoubleRules *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE bool validate_DoubleRules_ignore_empty(const validate_DoubleRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
UPB_INLINE void validate_DoubleRules_set_const(validate_DoubleRules *msg, double value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), double) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), double) = value;
}
UPB_INLINE void validate_DoubleRules_set_lt(validate_DoubleRules *msg, double value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), double) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), double) = value;
}
UPB_INLINE void validate_DoubleRules_set_lte(validate_DoubleRules *msg, double value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), double) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), double) = value;
}
UPB_INLINE void validate_DoubleRules_set_gt(validate_DoubleRules *msg, double value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 32), double) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), double) = value;
}
UPB_INLINE void validate_DoubleRules_set_gte(validate_DoubleRules *msg, double value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 40), double) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 56), double) = value;
}
-UPB_INLINE double* validate_DoubleRules_mutable_in(validate_DoubleRules *msg, size_t *len) {
- return (double*)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 56), len);
+UPB_INLINE double* validate_DoubleRules_mutable_in(validate_DoubleRules* msg, size_t* len) {
+ return (double*)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE double* validate_DoubleRules_resize_in(validate_DoubleRules *msg, size_t len, upb_Arena *arena) {
- return (double*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 56), len, 3, arena);
+UPB_INLINE double* validate_DoubleRules_resize_in(validate_DoubleRules* msg, size_t len, upb_Arena* arena) {
+ return (double*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, 3, arena);
}
-UPB_INLINE bool validate_DoubleRules_add_in(validate_DoubleRules *msg, double val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(52, 56), 3, &val,
- arena);
+UPB_INLINE bool validate_DoubleRules_add_in(validate_DoubleRules* msg, double val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), 3, &val, arena);
}
-UPB_INLINE double* validate_DoubleRules_mutable_not_in(validate_DoubleRules *msg, size_t *len) {
- return (double*)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 64), len);
+UPB_INLINE double* validate_DoubleRules_mutable_not_in(validate_DoubleRules* msg, size_t* len) {
+ return (double*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE double* validate_DoubleRules_resize_not_in(validate_DoubleRules *msg, size_t len, upb_Arena *arena) {
- return (double*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 64), len, 3, arena);
+UPB_INLINE double* validate_DoubleRules_resize_not_in(validate_DoubleRules* msg, size_t len, upb_Arena* arena) {
+ return (double*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, 3, arena);
}
-UPB_INLINE bool validate_DoubleRules_add_not_in(validate_DoubleRules *msg, double val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(56, 64), 3, &val,
- arena);
+UPB_INLINE bool validate_DoubleRules_add_not_in(validate_DoubleRules* msg, double val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), 3, &val, arena);
}
UPB_INLINE void validate_DoubleRules_set_ignore_empty(validate_DoubleRules *msg, bool value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
/* validate.Int32Rules */
@@ -714,35 +967,85 @@ UPB_INLINE validate_Int32Rules* validate_Int32Rules_parse_ex(const char* buf, si
return ret;
}
UPB_INLINE char* validate_Int32Rules_serialize(const validate_Int32Rules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_Int32Rules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_Int32Rules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_Int32Rules_serialize_ex(const validate_Int32Rules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_Int32Rules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_Int32Rules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_Int32Rules_has_const(const validate_Int32Rules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_Int32Rules_clear_const(const validate_Int32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_Int32Rules_has_const(const validate_Int32Rules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE int32_t validate_Int32Rules_const(const validate_Int32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool validate_Int32Rules_has_lt(const validate_Int32Rules *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool validate_Int32Rules_has_lt(const validate_Int32Rules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_Int32Rules_clear_lt(const validate_Int32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE int32_t validate_Int32Rules_lt(const validate_Int32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
-UPB_INLINE bool validate_Int32Rules_has_lte(const validate_Int32Rules *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool validate_Int32Rules_has_lte(const validate_Int32Rules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_Int32Rules_clear_lte(const validate_Int32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = 0;
+ _upb_clearhas(msg, 3);
+}
UPB_INLINE int32_t validate_Int32Rules_lte(const validate_Int32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t);
}
-UPB_INLINE bool validate_Int32Rules_has_gt(const validate_Int32Rules *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool validate_Int32Rules_has_gt(const validate_Int32Rules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_Int32Rules_clear_gt(const validate_Int32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t) = 0;
+ _upb_clearhas(msg, 4);
+}
UPB_INLINE int32_t validate_Int32Rules_gt(const validate_Int32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t);
}
-UPB_INLINE bool validate_Int32Rules_has_gte(const validate_Int32Rules *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool validate_Int32Rules_has_gte(const validate_Int32Rules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_Int32Rules_clear_gte(const validate_Int32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), int32_t) = 0;
+ _upb_clearhas(msg, 5);
+}
UPB_INLINE int32_t validate_Int32Rules_gte(const validate_Int32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 20), int32_t);
}
-UPB_INLINE int32_t const* validate_Int32Rules_in(const validate_Int32Rules *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(28, 32), len); }
-UPB_INLINE int32_t const* validate_Int32Rules_not_in(const validate_Int32Rules *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(32, 40), len); }
-UPB_INLINE bool validate_Int32Rules_has_ignore_empty(const validate_Int32Rules *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE void validate_Int32Rules_clear_in(const validate_Int32Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 32));
+}
+UPB_INLINE int32_t const* validate_Int32Rules_in(const validate_Int32Rules* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(28, 32), len);
+}
+UPB_INLINE void validate_Int32Rules_clear_not_in(const validate_Int32Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 40));
+}
+UPB_INLINE int32_t const* validate_Int32Rules_not_in(const validate_Int32Rules* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(32, 40), len);
+}
+UPB_INLINE bool validate_Int32Rules_has_ignore_empty(const validate_Int32Rules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_Int32Rules_clear_ignore_empty(const validate_Int32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool) = 0;
+ _upb_clearhas(msg, 6);
+}
UPB_INLINE bool validate_Int32Rules_ignore_empty(const validate_Int32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool);
}
@@ -767,25 +1070,23 @@ UPB_INLINE void validate_Int32Rules_set_gte(validate_Int32Rules *msg, int32_t va
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(20, 20), int32_t) = value;
}
-UPB_INLINE int32_t* validate_Int32Rules_mutable_in(validate_Int32Rules *msg, size_t *len) {
+UPB_INLINE int32_t* validate_Int32Rules_mutable_in(validate_Int32Rules* msg, size_t* len) {
return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 32), len);
}
-UPB_INLINE int32_t* validate_Int32Rules_resize_in(validate_Int32Rules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE int32_t* validate_Int32Rules_resize_in(validate_Int32Rules* msg, size_t len, upb_Arena* arena) {
return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 32), len, 2, arena);
}
-UPB_INLINE bool validate_Int32Rules_add_in(validate_Int32Rules *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 32), 2, &val,
- arena);
+UPB_INLINE bool validate_Int32Rules_add_in(validate_Int32Rules* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 32), 2, &val, arena);
}
-UPB_INLINE int32_t* validate_Int32Rules_mutable_not_in(validate_Int32Rules *msg, size_t *len) {
+UPB_INLINE int32_t* validate_Int32Rules_mutable_not_in(validate_Int32Rules* msg, size_t* len) {
return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 40), len);
}
-UPB_INLINE int32_t* validate_Int32Rules_resize_not_in(validate_Int32Rules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE int32_t* validate_Int32Rules_resize_not_in(validate_Int32Rules* msg, size_t len, upb_Arena* arena) {
return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 40), len, 2, arena);
}
-UPB_INLINE bool validate_Int32Rules_add_not_in(validate_Int32Rules *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 40), 2, &val,
- arena);
+UPB_INLINE bool validate_Int32Rules_add_not_in(validate_Int32Rules* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 40), 2, &val, arena);
}
UPB_INLINE void validate_Int32Rules_set_ignore_empty(validate_Int32Rules *msg, bool value) {
_upb_sethas(msg, 6);
@@ -817,82 +1118,130 @@ UPB_INLINE validate_Int64Rules* validate_Int64Rules_parse_ex(const char* buf, si
return ret;
}
UPB_INLINE char* validate_Int64Rules_serialize(const validate_Int64Rules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_Int64Rules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_Int64Rules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_Int64Rules_serialize_ex(const validate_Int64Rules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_Int64Rules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_Int64Rules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_Int64Rules_has_const(const validate_Int64Rules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_Int64Rules_clear_const(const validate_Int64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_Int64Rules_has_const(const validate_Int64Rules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE int64_t validate_Int64Rules_const(const validate_Int64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t);
+}
+UPB_INLINE bool validate_Int64Rules_has_lt(const validate_Int64Rules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_Int64Rules_clear_lt(const validate_Int64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t) = 0;
+ _upb_clearhas(msg, 2);
}
-UPB_INLINE bool validate_Int64Rules_has_lt(const validate_Int64Rules *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE int64_t validate_Int64Rules_lt(const validate_Int64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t);
+}
+UPB_INLINE bool validate_Int64Rules_has_lte(const validate_Int64Rules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_Int64Rules_clear_lte(const validate_Int64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t) = 0;
+ _upb_clearhas(msg, 3);
}
-UPB_INLINE bool validate_Int64Rules_has_lte(const validate_Int64Rules *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE int64_t validate_Int64Rules_lte(const validate_Int64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t);
+}
+UPB_INLINE bool validate_Int64Rules_has_gt(const validate_Int64Rules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_Int64Rules_clear_gt(const validate_Int64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), int64_t) = 0;
+ _upb_clearhas(msg, 4);
}
-UPB_INLINE bool validate_Int64Rules_has_gt(const validate_Int64Rules *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE int64_t validate_Int64Rules_gt(const validate_Int64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 48), int64_t);
+}
+UPB_INLINE bool validate_Int64Rules_has_gte(const validate_Int64Rules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_Int64Rules_clear_gte(const validate_Int64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 56), int64_t) = 0;
+ _upb_clearhas(msg, 5);
}
-UPB_INLINE bool validate_Int64Rules_has_gte(const validate_Int64Rules *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE int64_t validate_Int64Rules_gte(const validate_Int64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 40), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 56), int64_t);
+}
+UPB_INLINE void validate_Int64Rules_clear_in(const validate_Int64Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE int64_t const* validate_Int64Rules_in(const validate_Int64Rules* msg, size_t* len) {
+ return (int64_t const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE void validate_Int64Rules_clear_not_in(const validate_Int64Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE int64_t const* validate_Int64Rules_not_in(const validate_Int64Rules* msg, size_t* len) {
+ return (int64_t const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool validate_Int64Rules_has_ignore_empty(const validate_Int64Rules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_Int64Rules_clear_ignore_empty(const validate_Int64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 6);
}
-UPB_INLINE int64_t const* validate_Int64Rules_in(const validate_Int64Rules *msg, size_t *len) { return (int64_t const*)_upb_array_accessor(msg, UPB_SIZE(52, 56), len); }
-UPB_INLINE int64_t const* validate_Int64Rules_not_in(const validate_Int64Rules *msg, size_t *len) { return (int64_t const*)_upb_array_accessor(msg, UPB_SIZE(56, 64), len); }
-UPB_INLINE bool validate_Int64Rules_has_ignore_empty(const validate_Int64Rules *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE bool validate_Int64Rules_ignore_empty(const validate_Int64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
UPB_INLINE void validate_Int64Rules_set_const(validate_Int64Rules *msg, int64_t value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t) = value;
}
UPB_INLINE void validate_Int64Rules_set_lt(validate_Int64Rules *msg, int64_t value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t) = value;
}
UPB_INLINE void validate_Int64Rules_set_lte(validate_Int64Rules *msg, int64_t value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t) = value;
}
UPB_INLINE void validate_Int64Rules_set_gt(validate_Int64Rules *msg, int64_t value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 32), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), int64_t) = value;
}
UPB_INLINE void validate_Int64Rules_set_gte(validate_Int64Rules *msg, int64_t value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 40), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 56), int64_t) = value;
}
-UPB_INLINE int64_t* validate_Int64Rules_mutable_in(validate_Int64Rules *msg, size_t *len) {
- return (int64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 56), len);
+UPB_INLINE int64_t* validate_Int64Rules_mutable_in(validate_Int64Rules* msg, size_t* len) {
+ return (int64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE int64_t* validate_Int64Rules_resize_in(validate_Int64Rules *msg, size_t len, upb_Arena *arena) {
- return (int64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 56), len, 3, arena);
+UPB_INLINE int64_t* validate_Int64Rules_resize_in(validate_Int64Rules* msg, size_t len, upb_Arena* arena) {
+ return (int64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, 3, arena);
}
-UPB_INLINE bool validate_Int64Rules_add_in(validate_Int64Rules *msg, int64_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(52, 56), 3, &val,
- arena);
+UPB_INLINE bool validate_Int64Rules_add_in(validate_Int64Rules* msg, int64_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), 3, &val, arena);
}
-UPB_INLINE int64_t* validate_Int64Rules_mutable_not_in(validate_Int64Rules *msg, size_t *len) {
- return (int64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 64), len);
+UPB_INLINE int64_t* validate_Int64Rules_mutable_not_in(validate_Int64Rules* msg, size_t* len) {
+ return (int64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE int64_t* validate_Int64Rules_resize_not_in(validate_Int64Rules *msg, size_t len, upb_Arena *arena) {
- return (int64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 64), len, 3, arena);
+UPB_INLINE int64_t* validate_Int64Rules_resize_not_in(validate_Int64Rules* msg, size_t len, upb_Arena* arena) {
+ return (int64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, 3, arena);
}
-UPB_INLINE bool validate_Int64Rules_add_not_in(validate_Int64Rules *msg, int64_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(56, 64), 3, &val,
- arena);
+UPB_INLINE bool validate_Int64Rules_add_not_in(validate_Int64Rules* msg, int64_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), 3, &val, arena);
}
UPB_INLINE void validate_Int64Rules_set_ignore_empty(validate_Int64Rules *msg, bool value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
/* validate.UInt32Rules */
@@ -920,35 +1269,85 @@ UPB_INLINE validate_UInt32Rules* validate_UInt32Rules_parse_ex(const char* buf,
return ret;
}
UPB_INLINE char* validate_UInt32Rules_serialize(const validate_UInt32Rules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_UInt32Rules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_UInt32Rules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_UInt32Rules_serialize_ex(const validate_UInt32Rules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_UInt32Rules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_UInt32Rules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_UInt32Rules_has_const(const validate_UInt32Rules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_UInt32Rules_clear_const(const validate_UInt32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_UInt32Rules_has_const(const validate_UInt32Rules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE uint32_t validate_UInt32Rules_const(const validate_UInt32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
}
-UPB_INLINE bool validate_UInt32Rules_has_lt(const validate_UInt32Rules *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool validate_UInt32Rules_has_lt(const validate_UInt32Rules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_UInt32Rules_clear_lt(const validate_UInt32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint32_t) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE uint32_t validate_UInt32Rules_lt(const validate_UInt32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint32_t);
}
-UPB_INLINE bool validate_UInt32Rules_has_lte(const validate_UInt32Rules *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool validate_UInt32Rules_has_lte(const validate_UInt32Rules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_UInt32Rules_clear_lte(const validate_UInt32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), uint32_t) = 0;
+ _upb_clearhas(msg, 3);
+}
UPB_INLINE uint32_t validate_UInt32Rules_lte(const validate_UInt32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), uint32_t);
}
-UPB_INLINE bool validate_UInt32Rules_has_gt(const validate_UInt32Rules *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool validate_UInt32Rules_has_gt(const validate_UInt32Rules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_UInt32Rules_clear_gt(const validate_UInt32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint32_t) = 0;
+ _upb_clearhas(msg, 4);
+}
UPB_INLINE uint32_t validate_UInt32Rules_gt(const validate_UInt32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint32_t);
}
-UPB_INLINE bool validate_UInt32Rules_has_gte(const validate_UInt32Rules *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool validate_UInt32Rules_has_gte(const validate_UInt32Rules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_UInt32Rules_clear_gte(const validate_UInt32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), uint32_t) = 0;
+ _upb_clearhas(msg, 5);
+}
UPB_INLINE uint32_t validate_UInt32Rules_gte(const validate_UInt32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 20), uint32_t);
}
-UPB_INLINE uint32_t const* validate_UInt32Rules_in(const validate_UInt32Rules *msg, size_t *len) { return (uint32_t const*)_upb_array_accessor(msg, UPB_SIZE(28, 32), len); }
-UPB_INLINE uint32_t const* validate_UInt32Rules_not_in(const validate_UInt32Rules *msg, size_t *len) { return (uint32_t const*)_upb_array_accessor(msg, UPB_SIZE(32, 40), len); }
-UPB_INLINE bool validate_UInt32Rules_has_ignore_empty(const validate_UInt32Rules *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE void validate_UInt32Rules_clear_in(const validate_UInt32Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 32));
+}
+UPB_INLINE uint32_t const* validate_UInt32Rules_in(const validate_UInt32Rules* msg, size_t* len) {
+ return (uint32_t const*)_upb_array_accessor(msg, UPB_SIZE(28, 32), len);
+}
+UPB_INLINE void validate_UInt32Rules_clear_not_in(const validate_UInt32Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 40));
+}
+UPB_INLINE uint32_t const* validate_UInt32Rules_not_in(const validate_UInt32Rules* msg, size_t* len) {
+ return (uint32_t const*)_upb_array_accessor(msg, UPB_SIZE(32, 40), len);
+}
+UPB_INLINE bool validate_UInt32Rules_has_ignore_empty(const validate_UInt32Rules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_UInt32Rules_clear_ignore_empty(const validate_UInt32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool) = 0;
+ _upb_clearhas(msg, 6);
+}
UPB_INLINE bool validate_UInt32Rules_ignore_empty(const validate_UInt32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool);
}
@@ -973,25 +1372,23 @@ UPB_INLINE void validate_UInt32Rules_set_gte(validate_UInt32Rules *msg, uint32_t
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(20, 20), uint32_t) = value;
}
-UPB_INLINE uint32_t* validate_UInt32Rules_mutable_in(validate_UInt32Rules *msg, size_t *len) {
+UPB_INLINE uint32_t* validate_UInt32Rules_mutable_in(validate_UInt32Rules* msg, size_t* len) {
return (uint32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 32), len);
}
-UPB_INLINE uint32_t* validate_UInt32Rules_resize_in(validate_UInt32Rules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE uint32_t* validate_UInt32Rules_resize_in(validate_UInt32Rules* msg, size_t len, upb_Arena* arena) {
return (uint32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 32), len, 2, arena);
}
-UPB_INLINE bool validate_UInt32Rules_add_in(validate_UInt32Rules *msg, uint32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 32), 2, &val,
- arena);
+UPB_INLINE bool validate_UInt32Rules_add_in(validate_UInt32Rules* msg, uint32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 32), 2, &val, arena);
}
-UPB_INLINE uint32_t* validate_UInt32Rules_mutable_not_in(validate_UInt32Rules *msg, size_t *len) {
+UPB_INLINE uint32_t* validate_UInt32Rules_mutable_not_in(validate_UInt32Rules* msg, size_t* len) {
return (uint32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 40), len);
}
-UPB_INLINE uint32_t* validate_UInt32Rules_resize_not_in(validate_UInt32Rules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE uint32_t* validate_UInt32Rules_resize_not_in(validate_UInt32Rules* msg, size_t len, upb_Arena* arena) {
return (uint32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 40), len, 2, arena);
}
-UPB_INLINE bool validate_UInt32Rules_add_not_in(validate_UInt32Rules *msg, uint32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 40), 2, &val,
- arena);
+UPB_INLINE bool validate_UInt32Rules_add_not_in(validate_UInt32Rules* msg, uint32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 40), 2, &val, arena);
}
UPB_INLINE void validate_UInt32Rules_set_ignore_empty(validate_UInt32Rules *msg, bool value) {
_upb_sethas(msg, 6);
@@ -1023,82 +1420,130 @@ UPB_INLINE validate_UInt64Rules* validate_UInt64Rules_parse_ex(const char* buf,
return ret;
}
UPB_INLINE char* validate_UInt64Rules_serialize(const validate_UInt64Rules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_UInt64Rules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_UInt64Rules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_UInt64Rules_serialize_ex(const validate_UInt64Rules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_UInt64Rules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_UInt64Rules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_UInt64Rules_has_const(const validate_UInt64Rules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_UInt64Rules_clear_const(const validate_UInt64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_UInt64Rules_has_const(const validate_UInt64Rules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE uint64_t validate_UInt64Rules_const(const validate_UInt64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t);
+}
+UPB_INLINE bool validate_UInt64Rules_has_lt(const validate_UInt64Rules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_UInt64Rules_clear_lt(const validate_UInt64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t) = 0;
+ _upb_clearhas(msg, 2);
}
-UPB_INLINE bool validate_UInt64Rules_has_lt(const validate_UInt64Rules *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE uint64_t validate_UInt64Rules_lt(const validate_UInt64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t);
+}
+UPB_INLINE bool validate_UInt64Rules_has_lte(const validate_UInt64Rules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_UInt64Rules_clear_lte(const validate_UInt64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), uint64_t) = 0;
+ _upb_clearhas(msg, 3);
}
-UPB_INLINE bool validate_UInt64Rules_has_lte(const validate_UInt64Rules *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE uint64_t validate_UInt64Rules_lte(const validate_UInt64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 40), uint64_t);
+}
+UPB_INLINE bool validate_UInt64Rules_has_gt(const validate_UInt64Rules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_UInt64Rules_clear_gt(const validate_UInt64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), uint64_t) = 0;
+ _upb_clearhas(msg, 4);
}
-UPB_INLINE bool validate_UInt64Rules_has_gt(const validate_UInt64Rules *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE uint64_t validate_UInt64Rules_gt(const validate_UInt64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 48), uint64_t);
+}
+UPB_INLINE bool validate_UInt64Rules_has_gte(const validate_UInt64Rules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_UInt64Rules_clear_gte(const validate_UInt64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 56), uint64_t) = 0;
+ _upb_clearhas(msg, 5);
}
-UPB_INLINE bool validate_UInt64Rules_has_gte(const validate_UInt64Rules *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE uint64_t validate_UInt64Rules_gte(const validate_UInt64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 40), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 56), uint64_t);
+}
+UPB_INLINE void validate_UInt64Rules_clear_in(const validate_UInt64Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE uint64_t const* validate_UInt64Rules_in(const validate_UInt64Rules* msg, size_t* len) {
+ return (uint64_t const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE void validate_UInt64Rules_clear_not_in(const validate_UInt64Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE uint64_t const* validate_UInt64Rules_not_in(const validate_UInt64Rules* msg, size_t* len) {
+ return (uint64_t const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool validate_UInt64Rules_has_ignore_empty(const validate_UInt64Rules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_UInt64Rules_clear_ignore_empty(const validate_UInt64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 6);
}
-UPB_INLINE uint64_t const* validate_UInt64Rules_in(const validate_UInt64Rules *msg, size_t *len) { return (uint64_t const*)_upb_array_accessor(msg, UPB_SIZE(52, 56), len); }
-UPB_INLINE uint64_t const* validate_UInt64Rules_not_in(const validate_UInt64Rules *msg, size_t *len) { return (uint64_t const*)_upb_array_accessor(msg, UPB_SIZE(56, 64), len); }
-UPB_INLINE bool validate_UInt64Rules_has_ignore_empty(const validate_UInt64Rules *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE bool validate_UInt64Rules_ignore_empty(const validate_UInt64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
UPB_INLINE void validate_UInt64Rules_set_const(validate_UInt64Rules *msg, uint64_t value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t) = value;
}
UPB_INLINE void validate_UInt64Rules_set_lt(validate_UInt64Rules *msg, uint64_t value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t) = value;
}
UPB_INLINE void validate_UInt64Rules_set_lte(validate_UInt64Rules *msg, uint64_t value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), uint64_t) = value;
}
UPB_INLINE void validate_UInt64Rules_set_gt(validate_UInt64Rules *msg, uint64_t value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 32), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), uint64_t) = value;
}
UPB_INLINE void validate_UInt64Rules_set_gte(validate_UInt64Rules *msg, uint64_t value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 40), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 56), uint64_t) = value;
}
-UPB_INLINE uint64_t* validate_UInt64Rules_mutable_in(validate_UInt64Rules *msg, size_t *len) {
- return (uint64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 56), len);
+UPB_INLINE uint64_t* validate_UInt64Rules_mutable_in(validate_UInt64Rules* msg, size_t* len) {
+ return (uint64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE uint64_t* validate_UInt64Rules_resize_in(validate_UInt64Rules *msg, size_t len, upb_Arena *arena) {
- return (uint64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 56), len, 3, arena);
+UPB_INLINE uint64_t* validate_UInt64Rules_resize_in(validate_UInt64Rules* msg, size_t len, upb_Arena* arena) {
+ return (uint64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, 3, arena);
}
-UPB_INLINE bool validate_UInt64Rules_add_in(validate_UInt64Rules *msg, uint64_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(52, 56), 3, &val,
- arena);
+UPB_INLINE bool validate_UInt64Rules_add_in(validate_UInt64Rules* msg, uint64_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), 3, &val, arena);
}
-UPB_INLINE uint64_t* validate_UInt64Rules_mutable_not_in(validate_UInt64Rules *msg, size_t *len) {
- return (uint64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 64), len);
+UPB_INLINE uint64_t* validate_UInt64Rules_mutable_not_in(validate_UInt64Rules* msg, size_t* len) {
+ return (uint64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE uint64_t* validate_UInt64Rules_resize_not_in(validate_UInt64Rules *msg, size_t len, upb_Arena *arena) {
- return (uint64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 64), len, 3, arena);
+UPB_INLINE uint64_t* validate_UInt64Rules_resize_not_in(validate_UInt64Rules* msg, size_t len, upb_Arena* arena) {
+ return (uint64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, 3, arena);
}
-UPB_INLINE bool validate_UInt64Rules_add_not_in(validate_UInt64Rules *msg, uint64_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(56, 64), 3, &val,
- arena);
+UPB_INLINE bool validate_UInt64Rules_add_not_in(validate_UInt64Rules* msg, uint64_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), 3, &val, arena);
}
UPB_INLINE void validate_UInt64Rules_set_ignore_empty(validate_UInt64Rules *msg, bool value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
/* validate.SInt32Rules */
@@ -1126,35 +1571,85 @@ UPB_INLINE validate_SInt32Rules* validate_SInt32Rules_parse_ex(const char* buf,
return ret;
}
UPB_INLINE char* validate_SInt32Rules_serialize(const validate_SInt32Rules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_SInt32Rules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_SInt32Rules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_SInt32Rules_serialize_ex(const validate_SInt32Rules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_SInt32Rules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_SInt32Rules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_SInt32Rules_has_const(const validate_SInt32Rules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_SInt32Rules_clear_const(const validate_SInt32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_SInt32Rules_has_const(const validate_SInt32Rules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE int32_t validate_SInt32Rules_const(const validate_SInt32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool validate_SInt32Rules_has_lt(const validate_SInt32Rules *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool validate_SInt32Rules_has_lt(const validate_SInt32Rules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_SInt32Rules_clear_lt(const validate_SInt32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE int32_t validate_SInt32Rules_lt(const validate_SInt32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
-UPB_INLINE bool validate_SInt32Rules_has_lte(const validate_SInt32Rules *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool validate_SInt32Rules_has_lte(const validate_SInt32Rules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_SInt32Rules_clear_lte(const validate_SInt32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = 0;
+ _upb_clearhas(msg, 3);
+}
UPB_INLINE int32_t validate_SInt32Rules_lte(const validate_SInt32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t);
}
-UPB_INLINE bool validate_SInt32Rules_has_gt(const validate_SInt32Rules *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool validate_SInt32Rules_has_gt(const validate_SInt32Rules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_SInt32Rules_clear_gt(const validate_SInt32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t) = 0;
+ _upb_clearhas(msg, 4);
+}
UPB_INLINE int32_t validate_SInt32Rules_gt(const validate_SInt32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t);
}
-UPB_INLINE bool validate_SInt32Rules_has_gte(const validate_SInt32Rules *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool validate_SInt32Rules_has_gte(const validate_SInt32Rules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_SInt32Rules_clear_gte(const validate_SInt32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), int32_t) = 0;
+ _upb_clearhas(msg, 5);
+}
UPB_INLINE int32_t validate_SInt32Rules_gte(const validate_SInt32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 20), int32_t);
}
-UPB_INLINE int32_t const* validate_SInt32Rules_in(const validate_SInt32Rules *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(28, 32), len); }
-UPB_INLINE int32_t const* validate_SInt32Rules_not_in(const validate_SInt32Rules *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(32, 40), len); }
-UPB_INLINE bool validate_SInt32Rules_has_ignore_empty(const validate_SInt32Rules *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE void validate_SInt32Rules_clear_in(const validate_SInt32Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 32));
+}
+UPB_INLINE int32_t const* validate_SInt32Rules_in(const validate_SInt32Rules* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(28, 32), len);
+}
+UPB_INLINE void validate_SInt32Rules_clear_not_in(const validate_SInt32Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 40));
+}
+UPB_INLINE int32_t const* validate_SInt32Rules_not_in(const validate_SInt32Rules* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(32, 40), len);
+}
+UPB_INLINE bool validate_SInt32Rules_has_ignore_empty(const validate_SInt32Rules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_SInt32Rules_clear_ignore_empty(const validate_SInt32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool) = 0;
+ _upb_clearhas(msg, 6);
+}
UPB_INLINE bool validate_SInt32Rules_ignore_empty(const validate_SInt32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool);
}
@@ -1179,25 +1674,23 @@ UPB_INLINE void validate_SInt32Rules_set_gte(validate_SInt32Rules *msg, int32_t
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(20, 20), int32_t) = value;
}
-UPB_INLINE int32_t* validate_SInt32Rules_mutable_in(validate_SInt32Rules *msg, size_t *len) {
+UPB_INLINE int32_t* validate_SInt32Rules_mutable_in(validate_SInt32Rules* msg, size_t* len) {
return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 32), len);
}
-UPB_INLINE int32_t* validate_SInt32Rules_resize_in(validate_SInt32Rules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE int32_t* validate_SInt32Rules_resize_in(validate_SInt32Rules* msg, size_t len, upb_Arena* arena) {
return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 32), len, 2, arena);
}
-UPB_INLINE bool validate_SInt32Rules_add_in(validate_SInt32Rules *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 32), 2, &val,
- arena);
+UPB_INLINE bool validate_SInt32Rules_add_in(validate_SInt32Rules* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 32), 2, &val, arena);
}
-UPB_INLINE int32_t* validate_SInt32Rules_mutable_not_in(validate_SInt32Rules *msg, size_t *len) {
+UPB_INLINE int32_t* validate_SInt32Rules_mutable_not_in(validate_SInt32Rules* msg, size_t* len) {
return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 40), len);
}
-UPB_INLINE int32_t* validate_SInt32Rules_resize_not_in(validate_SInt32Rules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE int32_t* validate_SInt32Rules_resize_not_in(validate_SInt32Rules* msg, size_t len, upb_Arena* arena) {
return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 40), len, 2, arena);
}
-UPB_INLINE bool validate_SInt32Rules_add_not_in(validate_SInt32Rules *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 40), 2, &val,
- arena);
+UPB_INLINE bool validate_SInt32Rules_add_not_in(validate_SInt32Rules* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 40), 2, &val, arena);
}
UPB_INLINE void validate_SInt32Rules_set_ignore_empty(validate_SInt32Rules *msg, bool value) {
_upb_sethas(msg, 6);
@@ -1229,82 +1722,130 @@ UPB_INLINE validate_SInt64Rules* validate_SInt64Rules_parse_ex(const char* buf,
return ret;
}
UPB_INLINE char* validate_SInt64Rules_serialize(const validate_SInt64Rules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_SInt64Rules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_SInt64Rules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_SInt64Rules_serialize_ex(const validate_SInt64Rules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_SInt64Rules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_SInt64Rules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_SInt64Rules_has_const(const validate_SInt64Rules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_SInt64Rules_clear_const(const validate_SInt64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_SInt64Rules_has_const(const validate_SInt64Rules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE int64_t validate_SInt64Rules_const(const validate_SInt64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t);
+}
+UPB_INLINE bool validate_SInt64Rules_has_lt(const validate_SInt64Rules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_SInt64Rules_clear_lt(const validate_SInt64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t) = 0;
+ _upb_clearhas(msg, 2);
}
-UPB_INLINE bool validate_SInt64Rules_has_lt(const validate_SInt64Rules *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE int64_t validate_SInt64Rules_lt(const validate_SInt64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t);
+}
+UPB_INLINE bool validate_SInt64Rules_has_lte(const validate_SInt64Rules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_SInt64Rules_clear_lte(const validate_SInt64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t) = 0;
+ _upb_clearhas(msg, 3);
}
-UPB_INLINE bool validate_SInt64Rules_has_lte(const validate_SInt64Rules *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE int64_t validate_SInt64Rules_lte(const validate_SInt64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t);
+}
+UPB_INLINE bool validate_SInt64Rules_has_gt(const validate_SInt64Rules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_SInt64Rules_clear_gt(const validate_SInt64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), int64_t) = 0;
+ _upb_clearhas(msg, 4);
}
-UPB_INLINE bool validate_SInt64Rules_has_gt(const validate_SInt64Rules *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE int64_t validate_SInt64Rules_gt(const validate_SInt64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 48), int64_t);
+}
+UPB_INLINE bool validate_SInt64Rules_has_gte(const validate_SInt64Rules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_SInt64Rules_clear_gte(const validate_SInt64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 56), int64_t) = 0;
+ _upb_clearhas(msg, 5);
}
-UPB_INLINE bool validate_SInt64Rules_has_gte(const validate_SInt64Rules *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE int64_t validate_SInt64Rules_gte(const validate_SInt64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 40), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 56), int64_t);
+}
+UPB_INLINE void validate_SInt64Rules_clear_in(const validate_SInt64Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE int64_t const* validate_SInt64Rules_in(const validate_SInt64Rules* msg, size_t* len) {
+ return (int64_t const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE void validate_SInt64Rules_clear_not_in(const validate_SInt64Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE int64_t const* validate_SInt64Rules_not_in(const validate_SInt64Rules* msg, size_t* len) {
+ return (int64_t const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool validate_SInt64Rules_has_ignore_empty(const validate_SInt64Rules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_SInt64Rules_clear_ignore_empty(const validate_SInt64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 6);
}
-UPB_INLINE int64_t const* validate_SInt64Rules_in(const validate_SInt64Rules *msg, size_t *len) { return (int64_t const*)_upb_array_accessor(msg, UPB_SIZE(52, 56), len); }
-UPB_INLINE int64_t const* validate_SInt64Rules_not_in(const validate_SInt64Rules *msg, size_t *len) { return (int64_t const*)_upb_array_accessor(msg, UPB_SIZE(56, 64), len); }
-UPB_INLINE bool validate_SInt64Rules_has_ignore_empty(const validate_SInt64Rules *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE bool validate_SInt64Rules_ignore_empty(const validate_SInt64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
UPB_INLINE void validate_SInt64Rules_set_const(validate_SInt64Rules *msg, int64_t value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t) = value;
}
UPB_INLINE void validate_SInt64Rules_set_lt(validate_SInt64Rules *msg, int64_t value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t) = value;
}
UPB_INLINE void validate_SInt64Rules_set_lte(validate_SInt64Rules *msg, int64_t value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t) = value;
}
UPB_INLINE void validate_SInt64Rules_set_gt(validate_SInt64Rules *msg, int64_t value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 32), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), int64_t) = value;
}
UPB_INLINE void validate_SInt64Rules_set_gte(validate_SInt64Rules *msg, int64_t value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 40), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 56), int64_t) = value;
}
-UPB_INLINE int64_t* validate_SInt64Rules_mutable_in(validate_SInt64Rules *msg, size_t *len) {
- return (int64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 56), len);
+UPB_INLINE int64_t* validate_SInt64Rules_mutable_in(validate_SInt64Rules* msg, size_t* len) {
+ return (int64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE int64_t* validate_SInt64Rules_resize_in(validate_SInt64Rules *msg, size_t len, upb_Arena *arena) {
- return (int64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 56), len, 3, arena);
+UPB_INLINE int64_t* validate_SInt64Rules_resize_in(validate_SInt64Rules* msg, size_t len, upb_Arena* arena) {
+ return (int64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, 3, arena);
}
-UPB_INLINE bool validate_SInt64Rules_add_in(validate_SInt64Rules *msg, int64_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(52, 56), 3, &val,
- arena);
+UPB_INLINE bool validate_SInt64Rules_add_in(validate_SInt64Rules* msg, int64_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), 3, &val, arena);
}
-UPB_INLINE int64_t* validate_SInt64Rules_mutable_not_in(validate_SInt64Rules *msg, size_t *len) {
- return (int64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 64), len);
+UPB_INLINE int64_t* validate_SInt64Rules_mutable_not_in(validate_SInt64Rules* msg, size_t* len) {
+ return (int64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE int64_t* validate_SInt64Rules_resize_not_in(validate_SInt64Rules *msg, size_t len, upb_Arena *arena) {
- return (int64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 64), len, 3, arena);
+UPB_INLINE int64_t* validate_SInt64Rules_resize_not_in(validate_SInt64Rules* msg, size_t len, upb_Arena* arena) {
+ return (int64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, 3, arena);
}
-UPB_INLINE bool validate_SInt64Rules_add_not_in(validate_SInt64Rules *msg, int64_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(56, 64), 3, &val,
- arena);
+UPB_INLINE bool validate_SInt64Rules_add_not_in(validate_SInt64Rules* msg, int64_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), 3, &val, arena);
}
UPB_INLINE void validate_SInt64Rules_set_ignore_empty(validate_SInt64Rules *msg, bool value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
/* validate.Fixed32Rules */
@@ -1332,35 +1873,85 @@ UPB_INLINE validate_Fixed32Rules* validate_Fixed32Rules_parse_ex(const char* buf
return ret;
}
UPB_INLINE char* validate_Fixed32Rules_serialize(const validate_Fixed32Rules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_Fixed32Rules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_Fixed32Rules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_Fixed32Rules_serialize_ex(const validate_Fixed32Rules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_Fixed32Rules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_Fixed32Rules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_Fixed32Rules_has_const(const validate_Fixed32Rules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_Fixed32Rules_clear_const(const validate_Fixed32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_Fixed32Rules_has_const(const validate_Fixed32Rules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE uint32_t validate_Fixed32Rules_const(const validate_Fixed32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), uint32_t);
}
-UPB_INLINE bool validate_Fixed32Rules_has_lt(const validate_Fixed32Rules *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool validate_Fixed32Rules_has_lt(const validate_Fixed32Rules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_Fixed32Rules_clear_lt(const validate_Fixed32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint32_t) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE uint32_t validate_Fixed32Rules_lt(const validate_Fixed32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint32_t);
}
-UPB_INLINE bool validate_Fixed32Rules_has_lte(const validate_Fixed32Rules *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool validate_Fixed32Rules_has_lte(const validate_Fixed32Rules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_Fixed32Rules_clear_lte(const validate_Fixed32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), uint32_t) = 0;
+ _upb_clearhas(msg, 3);
+}
UPB_INLINE uint32_t validate_Fixed32Rules_lte(const validate_Fixed32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), uint32_t);
}
-UPB_INLINE bool validate_Fixed32Rules_has_gt(const validate_Fixed32Rules *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool validate_Fixed32Rules_has_gt(const validate_Fixed32Rules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_Fixed32Rules_clear_gt(const validate_Fixed32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint32_t) = 0;
+ _upb_clearhas(msg, 4);
+}
UPB_INLINE uint32_t validate_Fixed32Rules_gt(const validate_Fixed32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint32_t);
}
-UPB_INLINE bool validate_Fixed32Rules_has_gte(const validate_Fixed32Rules *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool validate_Fixed32Rules_has_gte(const validate_Fixed32Rules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_Fixed32Rules_clear_gte(const validate_Fixed32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), uint32_t) = 0;
+ _upb_clearhas(msg, 5);
+}
UPB_INLINE uint32_t validate_Fixed32Rules_gte(const validate_Fixed32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 20), uint32_t);
}
-UPB_INLINE uint32_t const* validate_Fixed32Rules_in(const validate_Fixed32Rules *msg, size_t *len) { return (uint32_t const*)_upb_array_accessor(msg, UPB_SIZE(28, 32), len); }
-UPB_INLINE uint32_t const* validate_Fixed32Rules_not_in(const validate_Fixed32Rules *msg, size_t *len) { return (uint32_t const*)_upb_array_accessor(msg, UPB_SIZE(32, 40), len); }
-UPB_INLINE bool validate_Fixed32Rules_has_ignore_empty(const validate_Fixed32Rules *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE void validate_Fixed32Rules_clear_in(const validate_Fixed32Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 32));
+}
+UPB_INLINE uint32_t const* validate_Fixed32Rules_in(const validate_Fixed32Rules* msg, size_t* len) {
+ return (uint32_t const*)_upb_array_accessor(msg, UPB_SIZE(28, 32), len);
+}
+UPB_INLINE void validate_Fixed32Rules_clear_not_in(const validate_Fixed32Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 40));
+}
+UPB_INLINE uint32_t const* validate_Fixed32Rules_not_in(const validate_Fixed32Rules* msg, size_t* len) {
+ return (uint32_t const*)_upb_array_accessor(msg, UPB_SIZE(32, 40), len);
+}
+UPB_INLINE bool validate_Fixed32Rules_has_ignore_empty(const validate_Fixed32Rules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_Fixed32Rules_clear_ignore_empty(const validate_Fixed32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool) = 0;
+ _upb_clearhas(msg, 6);
+}
UPB_INLINE bool validate_Fixed32Rules_ignore_empty(const validate_Fixed32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool);
}
@@ -1385,25 +1976,23 @@ UPB_INLINE void validate_Fixed32Rules_set_gte(validate_Fixed32Rules *msg, uint32
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(20, 20), uint32_t) = value;
}
-UPB_INLINE uint32_t* validate_Fixed32Rules_mutable_in(validate_Fixed32Rules *msg, size_t *len) {
+UPB_INLINE uint32_t* validate_Fixed32Rules_mutable_in(validate_Fixed32Rules* msg, size_t* len) {
return (uint32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 32), len);
}
-UPB_INLINE uint32_t* validate_Fixed32Rules_resize_in(validate_Fixed32Rules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE uint32_t* validate_Fixed32Rules_resize_in(validate_Fixed32Rules* msg, size_t len, upb_Arena* arena) {
return (uint32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 32), len, 2, arena);
}
-UPB_INLINE bool validate_Fixed32Rules_add_in(validate_Fixed32Rules *msg, uint32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 32), 2, &val,
- arena);
+UPB_INLINE bool validate_Fixed32Rules_add_in(validate_Fixed32Rules* msg, uint32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 32), 2, &val, arena);
}
-UPB_INLINE uint32_t* validate_Fixed32Rules_mutable_not_in(validate_Fixed32Rules *msg, size_t *len) {
+UPB_INLINE uint32_t* validate_Fixed32Rules_mutable_not_in(validate_Fixed32Rules* msg, size_t* len) {
return (uint32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 40), len);
}
-UPB_INLINE uint32_t* validate_Fixed32Rules_resize_not_in(validate_Fixed32Rules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE uint32_t* validate_Fixed32Rules_resize_not_in(validate_Fixed32Rules* msg, size_t len, upb_Arena* arena) {
return (uint32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 40), len, 2, arena);
}
-UPB_INLINE bool validate_Fixed32Rules_add_not_in(validate_Fixed32Rules *msg, uint32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 40), 2, &val,
- arena);
+UPB_INLINE bool validate_Fixed32Rules_add_not_in(validate_Fixed32Rules* msg, uint32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 40), 2, &val, arena);
}
UPB_INLINE void validate_Fixed32Rules_set_ignore_empty(validate_Fixed32Rules *msg, bool value) {
_upb_sethas(msg, 6);
@@ -1435,82 +2024,130 @@ UPB_INLINE validate_Fixed64Rules* validate_Fixed64Rules_parse_ex(const char* buf
return ret;
}
UPB_INLINE char* validate_Fixed64Rules_serialize(const validate_Fixed64Rules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_Fixed64Rules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_Fixed64Rules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_Fixed64Rules_serialize_ex(const validate_Fixed64Rules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_Fixed64Rules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_Fixed64Rules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_Fixed64Rules_has_const(const validate_Fixed64Rules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_Fixed64Rules_clear_const(const validate_Fixed64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_Fixed64Rules_has_const(const validate_Fixed64Rules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE uint64_t validate_Fixed64Rules_const(const validate_Fixed64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t);
+}
+UPB_INLINE bool validate_Fixed64Rules_has_lt(const validate_Fixed64Rules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_Fixed64Rules_clear_lt(const validate_Fixed64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t) = 0;
+ _upb_clearhas(msg, 2);
}
-UPB_INLINE bool validate_Fixed64Rules_has_lt(const validate_Fixed64Rules *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE uint64_t validate_Fixed64Rules_lt(const validate_Fixed64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t);
+}
+UPB_INLINE bool validate_Fixed64Rules_has_lte(const validate_Fixed64Rules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_Fixed64Rules_clear_lte(const validate_Fixed64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), uint64_t) = 0;
+ _upb_clearhas(msg, 3);
}
-UPB_INLINE bool validate_Fixed64Rules_has_lte(const validate_Fixed64Rules *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE uint64_t validate_Fixed64Rules_lte(const validate_Fixed64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 40), uint64_t);
+}
+UPB_INLINE bool validate_Fixed64Rules_has_gt(const validate_Fixed64Rules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_Fixed64Rules_clear_gt(const validate_Fixed64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), uint64_t) = 0;
+ _upb_clearhas(msg, 4);
}
-UPB_INLINE bool validate_Fixed64Rules_has_gt(const validate_Fixed64Rules *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE uint64_t validate_Fixed64Rules_gt(const validate_Fixed64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 48), uint64_t);
+}
+UPB_INLINE bool validate_Fixed64Rules_has_gte(const validate_Fixed64Rules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_Fixed64Rules_clear_gte(const validate_Fixed64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 56), uint64_t) = 0;
+ _upb_clearhas(msg, 5);
}
-UPB_INLINE bool validate_Fixed64Rules_has_gte(const validate_Fixed64Rules *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE uint64_t validate_Fixed64Rules_gte(const validate_Fixed64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 40), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 56), uint64_t);
+}
+UPB_INLINE void validate_Fixed64Rules_clear_in(const validate_Fixed64Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE uint64_t const* validate_Fixed64Rules_in(const validate_Fixed64Rules* msg, size_t* len) {
+ return (uint64_t const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE void validate_Fixed64Rules_clear_not_in(const validate_Fixed64Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE uint64_t const* validate_Fixed64Rules_not_in(const validate_Fixed64Rules* msg, size_t* len) {
+ return (uint64_t const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool validate_Fixed64Rules_has_ignore_empty(const validate_Fixed64Rules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_Fixed64Rules_clear_ignore_empty(const validate_Fixed64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 6);
}
-UPB_INLINE uint64_t const* validate_Fixed64Rules_in(const validate_Fixed64Rules *msg, size_t *len) { return (uint64_t const*)_upb_array_accessor(msg, UPB_SIZE(52, 56), len); }
-UPB_INLINE uint64_t const* validate_Fixed64Rules_not_in(const validate_Fixed64Rules *msg, size_t *len) { return (uint64_t const*)_upb_array_accessor(msg, UPB_SIZE(56, 64), len); }
-UPB_INLINE bool validate_Fixed64Rules_has_ignore_empty(const validate_Fixed64Rules *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE bool validate_Fixed64Rules_ignore_empty(const validate_Fixed64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
UPB_INLINE void validate_Fixed64Rules_set_const(validate_Fixed64Rules *msg, uint64_t value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t) = value;
}
UPB_INLINE void validate_Fixed64Rules_set_lt(validate_Fixed64Rules *msg, uint64_t value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t) = value;
}
UPB_INLINE void validate_Fixed64Rules_set_lte(validate_Fixed64Rules *msg, uint64_t value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), uint64_t) = value;
}
UPB_INLINE void validate_Fixed64Rules_set_gt(validate_Fixed64Rules *msg, uint64_t value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 32), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), uint64_t) = value;
}
UPB_INLINE void validate_Fixed64Rules_set_gte(validate_Fixed64Rules *msg, uint64_t value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 40), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 56), uint64_t) = value;
}
-UPB_INLINE uint64_t* validate_Fixed64Rules_mutable_in(validate_Fixed64Rules *msg, size_t *len) {
- return (uint64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 56), len);
+UPB_INLINE uint64_t* validate_Fixed64Rules_mutable_in(validate_Fixed64Rules* msg, size_t* len) {
+ return (uint64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE uint64_t* validate_Fixed64Rules_resize_in(validate_Fixed64Rules *msg, size_t len, upb_Arena *arena) {
- return (uint64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 56), len, 3, arena);
+UPB_INLINE uint64_t* validate_Fixed64Rules_resize_in(validate_Fixed64Rules* msg, size_t len, upb_Arena* arena) {
+ return (uint64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, 3, arena);
}
-UPB_INLINE bool validate_Fixed64Rules_add_in(validate_Fixed64Rules *msg, uint64_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(52, 56), 3, &val,
- arena);
+UPB_INLINE bool validate_Fixed64Rules_add_in(validate_Fixed64Rules* msg, uint64_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), 3, &val, arena);
}
-UPB_INLINE uint64_t* validate_Fixed64Rules_mutable_not_in(validate_Fixed64Rules *msg, size_t *len) {
- return (uint64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 64), len);
+UPB_INLINE uint64_t* validate_Fixed64Rules_mutable_not_in(validate_Fixed64Rules* msg, size_t* len) {
+ return (uint64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE uint64_t* validate_Fixed64Rules_resize_not_in(validate_Fixed64Rules *msg, size_t len, upb_Arena *arena) {
- return (uint64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 64), len, 3, arena);
+UPB_INLINE uint64_t* validate_Fixed64Rules_resize_not_in(validate_Fixed64Rules* msg, size_t len, upb_Arena* arena) {
+ return (uint64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, 3, arena);
}
-UPB_INLINE bool validate_Fixed64Rules_add_not_in(validate_Fixed64Rules *msg, uint64_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(56, 64), 3, &val,
- arena);
+UPB_INLINE bool validate_Fixed64Rules_add_not_in(validate_Fixed64Rules* msg, uint64_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), 3, &val, arena);
}
UPB_INLINE void validate_Fixed64Rules_set_ignore_empty(validate_Fixed64Rules *msg, bool value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
/* validate.SFixed32Rules */
@@ -1538,35 +2175,85 @@ UPB_INLINE validate_SFixed32Rules* validate_SFixed32Rules_parse_ex(const char* b
return ret;
}
UPB_INLINE char* validate_SFixed32Rules_serialize(const validate_SFixed32Rules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_SFixed32Rules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_SFixed32Rules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_SFixed32Rules_serialize_ex(const validate_SFixed32Rules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_SFixed32Rules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_SFixed32Rules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_SFixed32Rules_has_const(const validate_SFixed32Rules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_SFixed32Rules_clear_const(const validate_SFixed32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_SFixed32Rules_has_const(const validate_SFixed32Rules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE int32_t validate_SFixed32Rules_const(const validate_SFixed32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool validate_SFixed32Rules_has_lt(const validate_SFixed32Rules *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool validate_SFixed32Rules_has_lt(const validate_SFixed32Rules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_SFixed32Rules_clear_lt(const validate_SFixed32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE int32_t validate_SFixed32Rules_lt(const validate_SFixed32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int32_t);
}
-UPB_INLINE bool validate_SFixed32Rules_has_lte(const validate_SFixed32Rules *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool validate_SFixed32Rules_has_lte(const validate_SFixed32Rules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_SFixed32Rules_clear_lte(const validate_SFixed32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t) = 0;
+ _upb_clearhas(msg, 3);
+}
UPB_INLINE int32_t validate_SFixed32Rules_lte(const validate_SFixed32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 12), int32_t);
}
-UPB_INLINE bool validate_SFixed32Rules_has_gt(const validate_SFixed32Rules *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool validate_SFixed32Rules_has_gt(const validate_SFixed32Rules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_SFixed32Rules_clear_gt(const validate_SFixed32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t) = 0;
+ _upb_clearhas(msg, 4);
+}
UPB_INLINE int32_t validate_SFixed32Rules_gt(const validate_SFixed32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int32_t);
}
-UPB_INLINE bool validate_SFixed32Rules_has_gte(const validate_SFixed32Rules *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool validate_SFixed32Rules_has_gte(const validate_SFixed32Rules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_SFixed32Rules_clear_gte(const validate_SFixed32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 20), int32_t) = 0;
+ _upb_clearhas(msg, 5);
+}
UPB_INLINE int32_t validate_SFixed32Rules_gte(const validate_SFixed32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 20), int32_t);
}
-UPB_INLINE int32_t const* validate_SFixed32Rules_in(const validate_SFixed32Rules *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(28, 32), len); }
-UPB_INLINE int32_t const* validate_SFixed32Rules_not_in(const validate_SFixed32Rules *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(32, 40), len); }
-UPB_INLINE bool validate_SFixed32Rules_has_ignore_empty(const validate_SFixed32Rules *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE void validate_SFixed32Rules_clear_in(const validate_SFixed32Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 32));
+}
+UPB_INLINE int32_t const* validate_SFixed32Rules_in(const validate_SFixed32Rules* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(28, 32), len);
+}
+UPB_INLINE void validate_SFixed32Rules_clear_not_in(const validate_SFixed32Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 40));
+}
+UPB_INLINE int32_t const* validate_SFixed32Rules_not_in(const validate_SFixed32Rules* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(32, 40), len);
+}
+UPB_INLINE bool validate_SFixed32Rules_has_ignore_empty(const validate_SFixed32Rules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_SFixed32Rules_clear_ignore_empty(const validate_SFixed32Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool) = 0;
+ _upb_clearhas(msg, 6);
+}
UPB_INLINE bool validate_SFixed32Rules_ignore_empty(const validate_SFixed32Rules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool);
}
@@ -1591,25 +2278,23 @@ UPB_INLINE void validate_SFixed32Rules_set_gte(validate_SFixed32Rules *msg, int3
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(20, 20), int32_t) = value;
}
-UPB_INLINE int32_t* validate_SFixed32Rules_mutable_in(validate_SFixed32Rules *msg, size_t *len) {
+UPB_INLINE int32_t* validate_SFixed32Rules_mutable_in(validate_SFixed32Rules* msg, size_t* len) {
return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 32), len);
}
-UPB_INLINE int32_t* validate_SFixed32Rules_resize_in(validate_SFixed32Rules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE int32_t* validate_SFixed32Rules_resize_in(validate_SFixed32Rules* msg, size_t len, upb_Arena* arena) {
return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 32), len, 2, arena);
}
-UPB_INLINE bool validate_SFixed32Rules_add_in(validate_SFixed32Rules *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 32), 2, &val,
- arena);
+UPB_INLINE bool validate_SFixed32Rules_add_in(validate_SFixed32Rules* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 32), 2, &val, arena);
}
-UPB_INLINE int32_t* validate_SFixed32Rules_mutable_not_in(validate_SFixed32Rules *msg, size_t *len) {
+UPB_INLINE int32_t* validate_SFixed32Rules_mutable_not_in(validate_SFixed32Rules* msg, size_t* len) {
return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 40), len);
}
-UPB_INLINE int32_t* validate_SFixed32Rules_resize_not_in(validate_SFixed32Rules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE int32_t* validate_SFixed32Rules_resize_not_in(validate_SFixed32Rules* msg, size_t len, upb_Arena* arena) {
return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 40), len, 2, arena);
}
-UPB_INLINE bool validate_SFixed32Rules_add_not_in(validate_SFixed32Rules *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 40), 2, &val,
- arena);
+UPB_INLINE bool validate_SFixed32Rules_add_not_in(validate_SFixed32Rules* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 40), 2, &val, arena);
}
UPB_INLINE void validate_SFixed32Rules_set_ignore_empty(validate_SFixed32Rules *msg, bool value) {
_upb_sethas(msg, 6);
@@ -1641,82 +2326,130 @@ UPB_INLINE validate_SFixed64Rules* validate_SFixed64Rules_parse_ex(const char* b
return ret;
}
UPB_INLINE char* validate_SFixed64Rules_serialize(const validate_SFixed64Rules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_SFixed64Rules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_SFixed64Rules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_SFixed64Rules_serialize_ex(const validate_SFixed64Rules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_SFixed64Rules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_SFixed64Rules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_SFixed64Rules_has_const(const validate_SFixed64Rules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_SFixed64Rules_clear_const(const validate_SFixed64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_SFixed64Rules_has_const(const validate_SFixed64Rules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE int64_t validate_SFixed64Rules_const(const validate_SFixed64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t);
+}
+UPB_INLINE bool validate_SFixed64Rules_has_lt(const validate_SFixed64Rules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_SFixed64Rules_clear_lt(const validate_SFixed64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t) = 0;
+ _upb_clearhas(msg, 2);
}
-UPB_INLINE bool validate_SFixed64Rules_has_lt(const validate_SFixed64Rules *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE int64_t validate_SFixed64Rules_lt(const validate_SFixed64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t);
+}
+UPB_INLINE bool validate_SFixed64Rules_has_lte(const validate_SFixed64Rules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_SFixed64Rules_clear_lte(const validate_SFixed64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t) = 0;
+ _upb_clearhas(msg, 3);
}
-UPB_INLINE bool validate_SFixed64Rules_has_lte(const validate_SFixed64Rules *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE int64_t validate_SFixed64Rules_lte(const validate_SFixed64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t);
+}
+UPB_INLINE bool validate_SFixed64Rules_has_gt(const validate_SFixed64Rules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_SFixed64Rules_clear_gt(const validate_SFixed64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), int64_t) = 0;
+ _upb_clearhas(msg, 4);
}
-UPB_INLINE bool validate_SFixed64Rules_has_gt(const validate_SFixed64Rules *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE int64_t validate_SFixed64Rules_gt(const validate_SFixed64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 48), int64_t);
+}
+UPB_INLINE bool validate_SFixed64Rules_has_gte(const validate_SFixed64Rules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_SFixed64Rules_clear_gte(const validate_SFixed64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 56), int64_t) = 0;
+ _upb_clearhas(msg, 5);
}
-UPB_INLINE bool validate_SFixed64Rules_has_gte(const validate_SFixed64Rules *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE int64_t validate_SFixed64Rules_gte(const validate_SFixed64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 40), int64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 56), int64_t);
+}
+UPB_INLINE void validate_SFixed64Rules_clear_in(const validate_SFixed64Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE int64_t const* validate_SFixed64Rules_in(const validate_SFixed64Rules* msg, size_t* len) {
+ return (int64_t const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE void validate_SFixed64Rules_clear_not_in(const validate_SFixed64Rules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE int64_t const* validate_SFixed64Rules_not_in(const validate_SFixed64Rules* msg, size_t* len) {
+ return (int64_t const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE bool validate_SFixed64Rules_has_ignore_empty(const validate_SFixed64Rules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_SFixed64Rules_clear_ignore_empty(const validate_SFixed64Rules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 6);
}
-UPB_INLINE int64_t const* validate_SFixed64Rules_in(const validate_SFixed64Rules *msg, size_t *len) { return (int64_t const*)_upb_array_accessor(msg, UPB_SIZE(52, 56), len); }
-UPB_INLINE int64_t const* validate_SFixed64Rules_not_in(const validate_SFixed64Rules *msg, size_t *len) { return (int64_t const*)_upb_array_accessor(msg, UPB_SIZE(56, 64), len); }
-UPB_INLINE bool validate_SFixed64Rules_has_ignore_empty(const validate_SFixed64Rules *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE bool validate_SFixed64Rules_ignore_empty(const validate_SFixed64Rules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
UPB_INLINE void validate_SFixed64Rules_set_const(validate_SFixed64Rules *msg, int64_t value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), int64_t) = value;
}
UPB_INLINE void validate_SFixed64Rules_set_lt(validate_SFixed64Rules *msg, int64_t value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), int64_t) = value;
}
UPB_INLINE void validate_SFixed64Rules_set_lte(validate_SFixed64Rules *msg, int64_t value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 40), int64_t) = value;
}
UPB_INLINE void validate_SFixed64Rules_set_gt(validate_SFixed64Rules *msg, int64_t value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 32), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 48), int64_t) = value;
}
UPB_INLINE void validate_SFixed64Rules_set_gte(validate_SFixed64Rules *msg, int64_t value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 40), int64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 56), int64_t) = value;
}
-UPB_INLINE int64_t* validate_SFixed64Rules_mutable_in(validate_SFixed64Rules *msg, size_t *len) {
- return (int64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 56), len);
+UPB_INLINE int64_t* validate_SFixed64Rules_mutable_in(validate_SFixed64Rules* msg, size_t* len) {
+ return (int64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE int64_t* validate_SFixed64Rules_resize_in(validate_SFixed64Rules *msg, size_t len, upb_Arena *arena) {
- return (int64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 56), len, 3, arena);
+UPB_INLINE int64_t* validate_SFixed64Rules_resize_in(validate_SFixed64Rules* msg, size_t len, upb_Arena* arena) {
+ return (int64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, 3, arena);
}
-UPB_INLINE bool validate_SFixed64Rules_add_in(validate_SFixed64Rules *msg, int64_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(52, 56), 3, &val,
- arena);
+UPB_INLINE bool validate_SFixed64Rules_add_in(validate_SFixed64Rules* msg, int64_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), 3, &val, arena);
}
-UPB_INLINE int64_t* validate_SFixed64Rules_mutable_not_in(validate_SFixed64Rules *msg, size_t *len) {
- return (int64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 64), len);
+UPB_INLINE int64_t* validate_SFixed64Rules_mutable_not_in(validate_SFixed64Rules* msg, size_t* len) {
+ return (int64_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE int64_t* validate_SFixed64Rules_resize_not_in(validate_SFixed64Rules *msg, size_t len, upb_Arena *arena) {
- return (int64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 64), len, 3, arena);
+UPB_INLINE int64_t* validate_SFixed64Rules_resize_not_in(validate_SFixed64Rules* msg, size_t len, upb_Arena* arena) {
+ return (int64_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, 3, arena);
}
-UPB_INLINE bool validate_SFixed64Rules_add_not_in(validate_SFixed64Rules *msg, int64_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(56, 64), 3, &val,
- arena);
+UPB_INLINE bool validate_SFixed64Rules_add_not_in(validate_SFixed64Rules* msg, int64_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), 3, &val, arena);
}
UPB_INLINE void validate_SFixed64Rules_set_ignore_empty(validate_SFixed64Rules *msg, bool value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 48), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
/* validate.BoolRules */
@@ -1744,13 +2477,23 @@ UPB_INLINE validate_BoolRules* validate_BoolRules_parse_ex(const char* buf, size
return ret;
}
UPB_INLINE char* validate_BoolRules_serialize(const validate_BoolRules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_BoolRules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_BoolRules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_BoolRules_serialize_ex(const validate_BoolRules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_BoolRules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_BoolRules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_BoolRules_has_const(const validate_BoolRules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_BoolRules_clear_const(const validate_BoolRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_BoolRules_has_const(const validate_BoolRules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE bool validate_BoolRules_const(const validate_BoolRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
@@ -1785,11 +2528,15 @@ UPB_INLINE validate_StringRules* validate_StringRules_parse_ex(const char* buf,
return ret;
}
UPB_INLINE char* validate_StringRules_serialize(const validate_StringRules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_StringRules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_StringRules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_StringRules_serialize_ex(const validate_StringRules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_StringRules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_StringRules_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
validate_StringRules_well_known_email = 12,
@@ -1804,192 +2551,355 @@ typedef enum {
validate_StringRules_well_known_well_known_regex = 24,
validate_StringRules_well_known_NOT_SET = 0
} validate_StringRules_well_known_oneofcases;
-UPB_INLINE validate_StringRules_well_known_oneofcases validate_StringRules_well_known_case(const validate_StringRules* msg) { return (validate_StringRules_well_known_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(120, 180), int32_t); }
-
-UPB_INLINE bool validate_StringRules_has_const(const validate_StringRules *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE validate_StringRules_well_known_oneofcases validate_StringRules_well_known_case(const validate_StringRules* msg) {
+ return (validate_StringRules_well_known_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool validate_StringRules_has_const(const validate_StringRules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_StringRules_clear_const(const validate_StringRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
+}
UPB_INLINE upb_StringView validate_StringRules_const(const validate_StringRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(60, 64), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView);
+}
+UPB_INLINE bool validate_StringRules_has_min_len(const validate_StringRules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_StringRules_clear_min_len(const validate_StringRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 128), uint64_t) = 0;
+ _upb_clearhas(msg, 2);
}
-UPB_INLINE bool validate_StringRules_has_min_len(const validate_StringRules *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE uint64_t validate_StringRules_min_len(const validate_StringRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(72, 128), uint64_t);
+}
+UPB_INLINE bool validate_StringRules_has_max_len(const validate_StringRules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_StringRules_clear_max_len(const validate_StringRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 136), uint64_t) = 0;
+ _upb_clearhas(msg, 3);
}
-UPB_INLINE bool validate_StringRules_has_max_len(const validate_StringRules *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE uint64_t validate_StringRules_max_len(const validate_StringRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(80, 136), uint64_t);
+}
+UPB_INLINE bool validate_StringRules_has_min_bytes(const validate_StringRules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_StringRules_clear_min_bytes(const validate_StringRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(88, 144), uint64_t) = 0;
+ _upb_clearhas(msg, 4);
}
-UPB_INLINE bool validate_StringRules_has_min_bytes(const validate_StringRules *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE uint64_t validate_StringRules_min_bytes(const validate_StringRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(88, 144), uint64_t);
+}
+UPB_INLINE bool validate_StringRules_has_max_bytes(const validate_StringRules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_StringRules_clear_max_bytes(const validate_StringRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(96, 152), uint64_t) = 0;
+ _upb_clearhas(msg, 5);
}
-UPB_INLINE bool validate_StringRules_has_max_bytes(const validate_StringRules *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE uint64_t validate_StringRules_max_bytes(const validate_StringRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(96, 152), uint64_t);
+}
+UPB_INLINE bool validate_StringRules_has_pattern(const validate_StringRules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_StringRules_clear_pattern(const validate_StringRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 6);
}
-UPB_INLINE bool validate_StringRules_has_pattern(const validate_StringRules *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE upb_StringView validate_StringRules_pattern(const validate_StringRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(68, 80), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), upb_StringView);
+}
+UPB_INLINE bool validate_StringRules_has_prefix(const validate_StringRules* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void validate_StringRules_clear_prefix(const validate_StringRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 7);
}
-UPB_INLINE bool validate_StringRules_has_prefix(const validate_StringRules *msg) { return _upb_hasbit(msg, 7); }
UPB_INLINE upb_StringView validate_StringRules_prefix(const validate_StringRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(76, 96), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(32, 48), upb_StringView);
+}
+UPB_INLINE bool validate_StringRules_has_suffix(const validate_StringRules* msg) {
+ return _upb_hasbit(msg, 8);
+}
+UPB_INLINE void validate_StringRules_clear_suffix(const validate_StringRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 64), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 8);
}
-UPB_INLINE bool validate_StringRules_has_suffix(const validate_StringRules *msg) { return _upb_hasbit(msg, 8); }
UPB_INLINE upb_StringView validate_StringRules_suffix(const validate_StringRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(84, 112), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(40, 64), upb_StringView);
+}
+UPB_INLINE bool validate_StringRules_has_contains(const validate_StringRules* msg) {
+ return _upb_hasbit(msg, 9);
+}
+UPB_INLINE void validate_StringRules_clear_contains(const validate_StringRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 80), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 9);
}
-UPB_INLINE bool validate_StringRules_has_contains(const validate_StringRules *msg) { return _upb_hasbit(msg, 9); }
UPB_INLINE upb_StringView validate_StringRules_contains(const validate_StringRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(92, 128), upb_StringView);
-}
-UPB_INLINE upb_StringView const* validate_StringRules_in(const validate_StringRules *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(108, 160), len); }
-UPB_INLINE upb_StringView const* validate_StringRules_not_in(const validate_StringRules *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(112, 168), len); }
-UPB_INLINE bool validate_StringRules_has_email(const validate_StringRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(120, 180)) == 12; }
-UPB_INLINE bool validate_StringRules_email(const validate_StringRules *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(116, 176), UPB_SIZE(120, 180), 12, false); }
-UPB_INLINE bool validate_StringRules_has_hostname(const validate_StringRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(120, 180)) == 13; }
-UPB_INLINE bool validate_StringRules_hostname(const validate_StringRules *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(116, 176), UPB_SIZE(120, 180), 13, false); }
-UPB_INLINE bool validate_StringRules_has_ip(const validate_StringRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(120, 180)) == 14; }
-UPB_INLINE bool validate_StringRules_ip(const validate_StringRules *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(116, 176), UPB_SIZE(120, 180), 14, false); }
-UPB_INLINE bool validate_StringRules_has_ipv4(const validate_StringRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(120, 180)) == 15; }
-UPB_INLINE bool validate_StringRules_ipv4(const validate_StringRules *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(116, 176), UPB_SIZE(120, 180), 15, false); }
-UPB_INLINE bool validate_StringRules_has_ipv6(const validate_StringRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(120, 180)) == 16; }
-UPB_INLINE bool validate_StringRules_ipv6(const validate_StringRules *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(116, 176), UPB_SIZE(120, 180), 16, false); }
-UPB_INLINE bool validate_StringRules_has_uri(const validate_StringRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(120, 180)) == 17; }
-UPB_INLINE bool validate_StringRules_uri(const validate_StringRules *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(116, 176), UPB_SIZE(120, 180), 17, false); }
-UPB_INLINE bool validate_StringRules_has_uri_ref(const validate_StringRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(120, 180)) == 18; }
-UPB_INLINE bool validate_StringRules_uri_ref(const validate_StringRules *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(116, 176), UPB_SIZE(120, 180), 18, false); }
-UPB_INLINE bool validate_StringRules_has_len(const validate_StringRules *msg) { return _upb_hasbit(msg, 10); }
+ return *UPB_PTR_AT(msg, UPB_SIZE(48, 80), upb_StringView);
+}
+UPB_INLINE void validate_StringRules_clear_in(const validate_StringRules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(56, 96));
+}
+UPB_INLINE upb_StringView const* validate_StringRules_in(const validate_StringRules* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(56, 96), len);
+}
+UPB_INLINE void validate_StringRules_clear_not_in(const validate_StringRules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(60, 104));
+}
+UPB_INLINE upb_StringView const* validate_StringRules_not_in(const validate_StringRules* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(60, 104), len);
+}
+UPB_INLINE bool validate_StringRules_has_email(const validate_StringRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 12;
+}
+UPB_INLINE void validate_StringRules_clear_email(const validate_StringRules* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), 0, UPB_SIZE(4, 4), validate_StringRules_well_known_NOT_SET);
+}
+UPB_INLINE bool validate_StringRules_email(const validate_StringRules* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(12, 12), UPB_SIZE(4, 4), 12, false);
+}
+UPB_INLINE bool validate_StringRules_has_hostname(const validate_StringRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 13;
+}
+UPB_INLINE void validate_StringRules_clear_hostname(const validate_StringRules* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), 0, UPB_SIZE(4, 4), validate_StringRules_well_known_NOT_SET);
+}
+UPB_INLINE bool validate_StringRules_hostname(const validate_StringRules* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(12, 12), UPB_SIZE(4, 4), 13, false);
+}
+UPB_INLINE bool validate_StringRules_has_ip(const validate_StringRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 14;
+}
+UPB_INLINE void validate_StringRules_clear_ip(const validate_StringRules* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), 0, UPB_SIZE(4, 4), validate_StringRules_well_known_NOT_SET);
+}
+UPB_INLINE bool validate_StringRules_ip(const validate_StringRules* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(12, 12), UPB_SIZE(4, 4), 14, false);
+}
+UPB_INLINE bool validate_StringRules_has_ipv4(const validate_StringRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 15;
+}
+UPB_INLINE void validate_StringRules_clear_ipv4(const validate_StringRules* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), 0, UPB_SIZE(4, 4), validate_StringRules_well_known_NOT_SET);
+}
+UPB_INLINE bool validate_StringRules_ipv4(const validate_StringRules* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(12, 12), UPB_SIZE(4, 4), 15, false);
+}
+UPB_INLINE bool validate_StringRules_has_ipv6(const validate_StringRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 16;
+}
+UPB_INLINE void validate_StringRules_clear_ipv6(const validate_StringRules* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), 0, UPB_SIZE(4, 4), validate_StringRules_well_known_NOT_SET);
+}
+UPB_INLINE bool validate_StringRules_ipv6(const validate_StringRules* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(12, 12), UPB_SIZE(4, 4), 16, false);
+}
+UPB_INLINE bool validate_StringRules_has_uri(const validate_StringRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 17;
+}
+UPB_INLINE void validate_StringRules_clear_uri(const validate_StringRules* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), 0, UPB_SIZE(4, 4), validate_StringRules_well_known_NOT_SET);
+}
+UPB_INLINE bool validate_StringRules_uri(const validate_StringRules* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(12, 12), UPB_SIZE(4, 4), 17, false);
+}
+UPB_INLINE bool validate_StringRules_has_uri_ref(const validate_StringRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 18;
+}
+UPB_INLINE void validate_StringRules_clear_uri_ref(const validate_StringRules* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), 0, UPB_SIZE(4, 4), validate_StringRules_well_known_NOT_SET);
+}
+UPB_INLINE bool validate_StringRules_uri_ref(const validate_StringRules* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(12, 12), UPB_SIZE(4, 4), 18, false);
+}
+UPB_INLINE bool validate_StringRules_has_len(const validate_StringRules* msg) {
+ return _upb_hasbit(msg, 10);
+}
+UPB_INLINE void validate_StringRules_clear_len(const validate_StringRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(104, 160), uint64_t) = 0;
+ _upb_clearhas(msg, 10);
+}
UPB_INLINE uint64_t validate_StringRules_len(const validate_StringRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(40, 40), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(104, 160), uint64_t);
+}
+UPB_INLINE bool validate_StringRules_has_len_bytes(const validate_StringRules* msg) {
+ return _upb_hasbit(msg, 11);
+}
+UPB_INLINE void validate_StringRules_clear_len_bytes(const validate_StringRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(112, 168), uint64_t) = 0;
+ _upb_clearhas(msg, 11);
}
-UPB_INLINE bool validate_StringRules_has_len_bytes(const validate_StringRules *msg) { return _upb_hasbit(msg, 11); }
UPB_INLINE uint64_t validate_StringRules_len_bytes(const validate_StringRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(48, 48), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(112, 168), uint64_t);
+}
+UPB_INLINE bool validate_StringRules_has_address(const validate_StringRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 21;
+}
+UPB_INLINE void validate_StringRules_clear_address(const validate_StringRules* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), 0, UPB_SIZE(4, 4), validate_StringRules_well_known_NOT_SET);
+}
+UPB_INLINE bool validate_StringRules_address(const validate_StringRules* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(12, 12), UPB_SIZE(4, 4), 21, false);
+}
+UPB_INLINE bool validate_StringRules_has_uuid(const validate_StringRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 22;
+}
+UPB_INLINE void validate_StringRules_clear_uuid(const validate_StringRules* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), 0, UPB_SIZE(4, 4), validate_StringRules_well_known_NOT_SET);
+}
+UPB_INLINE bool validate_StringRules_uuid(const validate_StringRules* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(12, 12), UPB_SIZE(4, 4), 22, false);
+}
+UPB_INLINE bool validate_StringRules_has_not_contains(const validate_StringRules* msg) {
+ return _upb_hasbit(msg, 12);
+}
+UPB_INLINE void validate_StringRules_clear_not_contains(const validate_StringRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 112), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 12);
}
-UPB_INLINE bool validate_StringRules_has_address(const validate_StringRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(120, 180)) == 21; }
-UPB_INLINE bool validate_StringRules_address(const validate_StringRules *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(116, 176), UPB_SIZE(120, 180), 21, false); }
-UPB_INLINE bool validate_StringRules_has_uuid(const validate_StringRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(120, 180)) == 22; }
-UPB_INLINE bool validate_StringRules_uuid(const validate_StringRules *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(116, 176), UPB_SIZE(120, 180), 22, false); }
-UPB_INLINE bool validate_StringRules_has_not_contains(const validate_StringRules *msg) { return _upb_hasbit(msg, 12); }
UPB_INLINE upb_StringView validate_StringRules_not_contains(const validate_StringRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(100, 144), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(64, 112), upb_StringView);
+}
+UPB_INLINE bool validate_StringRules_has_well_known_regex(const validate_StringRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 24;
+}
+UPB_INLINE void validate_StringRules_clear_well_known_regex(const validate_StringRules* msg) {
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(12, 12), 0, UPB_SIZE(4, 4), validate_StringRules_well_known_NOT_SET);
+}
+UPB_INLINE int32_t validate_StringRules_well_known_regex(const validate_StringRules* msg) {
+ return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(12, 12), UPB_SIZE(4, 4), 24, 0);
+}
+UPB_INLINE bool validate_StringRules_has_strict(const validate_StringRules* msg) {
+ return _upb_hasbit(msg, 13);
+}
+UPB_INLINE void validate_StringRules_clear_strict(const validate_StringRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
+ _upb_clearhas(msg, 13);
}
-UPB_INLINE bool validate_StringRules_has_well_known_regex(const validate_StringRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(120, 180)) == 24; }
-UPB_INLINE int32_t validate_StringRules_well_known_regex(const validate_StringRules *msg) { return UPB_READ_ONEOF(msg, int32_t, UPB_SIZE(116, 176), UPB_SIZE(120, 180), 24, 0); }
-UPB_INLINE bool validate_StringRules_has_strict(const validate_StringRules *msg) { return _upb_hasbit(msg, 13); }
UPB_INLINE bool validate_StringRules_strict(const validate_StringRules* msg) {
- return validate_StringRules_has_strict(msg) ? *UPB_PTR_AT(msg, UPB_SIZE(56, 56), bool) : true;
+ return validate_StringRules_has_strict(msg) ? *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) : true;
+}
+UPB_INLINE bool validate_StringRules_has_ignore_empty(const validate_StringRules* msg) {
+ return _upb_hasbit(msg, 14);
+}
+UPB_INLINE void validate_StringRules_clear_ignore_empty(const validate_StringRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool) = 0;
+ _upb_clearhas(msg, 14);
}
-UPB_INLINE bool validate_StringRules_has_ignore_empty(const validate_StringRules *msg) { return _upb_hasbit(msg, 14); }
UPB_INLINE bool validate_StringRules_ignore_empty(const validate_StringRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(57, 57), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool);
}
UPB_INLINE void validate_StringRules_set_const(validate_StringRules *msg, upb_StringView value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(60, 64), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 16), upb_StringView) = value;
}
UPB_INLINE void validate_StringRules_set_min_len(validate_StringRules *msg, uint64_t value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 128), uint64_t) = value;
}
UPB_INLINE void validate_StringRules_set_max_len(validate_StringRules *msg, uint64_t value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 136), uint64_t) = value;
}
UPB_INLINE void validate_StringRules_set_min_bytes(validate_StringRules *msg, uint64_t value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(88, 144), uint64_t) = value;
}
UPB_INLINE void validate_StringRules_set_max_bytes(validate_StringRules *msg, uint64_t value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 32), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(96, 152), uint64_t) = value;
}
UPB_INLINE void validate_StringRules_set_pattern(validate_StringRules *msg, upb_StringView value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(68, 80), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), upb_StringView) = value;
}
UPB_INLINE void validate_StringRules_set_prefix(validate_StringRules *msg, upb_StringView value) {
_upb_sethas(msg, 7);
- *UPB_PTR_AT(msg, UPB_SIZE(76, 96), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(32, 48), upb_StringView) = value;
}
UPB_INLINE void validate_StringRules_set_suffix(validate_StringRules *msg, upb_StringView value) {
_upb_sethas(msg, 8);
- *UPB_PTR_AT(msg, UPB_SIZE(84, 112), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(40, 64), upb_StringView) = value;
}
UPB_INLINE void validate_StringRules_set_contains(validate_StringRules *msg, upb_StringView value) {
_upb_sethas(msg, 9);
- *UPB_PTR_AT(msg, UPB_SIZE(92, 128), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(48, 80), upb_StringView) = value;
}
-UPB_INLINE upb_StringView* validate_StringRules_mutable_in(validate_StringRules *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(108, 160), len);
+UPB_INLINE upb_StringView* validate_StringRules_mutable_in(validate_StringRules* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 96), len);
}
-UPB_INLINE upb_StringView* validate_StringRules_resize_in(validate_StringRules *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(108, 160), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* validate_StringRules_resize_in(validate_StringRules* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 96), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool validate_StringRules_add_in(validate_StringRules *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(108, 160), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool validate_StringRules_add_in(validate_StringRules* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(56, 96), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE upb_StringView* validate_StringRules_mutable_not_in(validate_StringRules *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(112, 168), len);
+UPB_INLINE upb_StringView* validate_StringRules_mutable_not_in(validate_StringRules* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(60, 104), len);
}
-UPB_INLINE upb_StringView* validate_StringRules_resize_not_in(validate_StringRules *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(112, 168), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* validate_StringRules_resize_not_in(validate_StringRules* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(60, 104), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool validate_StringRules_add_not_in(validate_StringRules *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(112, 168), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool validate_StringRules_add_not_in(validate_StringRules* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(60, 104), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void validate_StringRules_set_email(validate_StringRules *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(116, 176), value, UPB_SIZE(120, 180), 12);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), value, UPB_SIZE(4, 4), 12);
}
UPB_INLINE void validate_StringRules_set_hostname(validate_StringRules *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(116, 176), value, UPB_SIZE(120, 180), 13);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), value, UPB_SIZE(4, 4), 13);
}
UPB_INLINE void validate_StringRules_set_ip(validate_StringRules *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(116, 176), value, UPB_SIZE(120, 180), 14);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), value, UPB_SIZE(4, 4), 14);
}
UPB_INLINE void validate_StringRules_set_ipv4(validate_StringRules *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(116, 176), value, UPB_SIZE(120, 180), 15);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), value, UPB_SIZE(4, 4), 15);
}
UPB_INLINE void validate_StringRules_set_ipv6(validate_StringRules *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(116, 176), value, UPB_SIZE(120, 180), 16);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), value, UPB_SIZE(4, 4), 16);
}
UPB_INLINE void validate_StringRules_set_uri(validate_StringRules *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(116, 176), value, UPB_SIZE(120, 180), 17);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), value, UPB_SIZE(4, 4), 17);
}
UPB_INLINE void validate_StringRules_set_uri_ref(validate_StringRules *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(116, 176), value, UPB_SIZE(120, 180), 18);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), value, UPB_SIZE(4, 4), 18);
}
UPB_INLINE void validate_StringRules_set_len(validate_StringRules *msg, uint64_t value) {
_upb_sethas(msg, 10);
- *UPB_PTR_AT(msg, UPB_SIZE(40, 40), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(104, 160), uint64_t) = value;
}
UPB_INLINE void validate_StringRules_set_len_bytes(validate_StringRules *msg, uint64_t value) {
_upb_sethas(msg, 11);
- *UPB_PTR_AT(msg, UPB_SIZE(48, 48), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(112, 168), uint64_t) = value;
}
UPB_INLINE void validate_StringRules_set_address(validate_StringRules *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(116, 176), value, UPB_SIZE(120, 180), 21);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), value, UPB_SIZE(4, 4), 21);
}
UPB_INLINE void validate_StringRules_set_uuid(validate_StringRules *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(116, 176), value, UPB_SIZE(120, 180), 22);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(12, 12), value, UPB_SIZE(4, 4), 22);
}
UPB_INLINE void validate_StringRules_set_not_contains(validate_StringRules *msg, upb_StringView value) {
_upb_sethas(msg, 12);
- *UPB_PTR_AT(msg, UPB_SIZE(100, 144), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 112), upb_StringView) = value;
}
UPB_INLINE void validate_StringRules_set_well_known_regex(validate_StringRules *msg, int32_t value) {
- UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(116, 176), value, UPB_SIZE(120, 180), 24);
+ UPB_WRITE_ONEOF(msg, int32_t, UPB_SIZE(12, 12), value, UPB_SIZE(4, 4), 24);
}
UPB_INLINE void validate_StringRules_set_strict(validate_StringRules *msg, bool value) {
_upb_sethas(msg, 13);
- *UPB_PTR_AT(msg, UPB_SIZE(56, 56), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
}
UPB_INLINE void validate_StringRules_set_ignore_empty(validate_StringRules *msg, bool value) {
_upb_sethas(msg, 14);
- *UPB_PTR_AT(msg, UPB_SIZE(57, 57), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(9, 9), bool) = value;
}
/* validate.BytesRules */
@@ -2017,11 +2927,15 @@ UPB_INLINE validate_BytesRules* validate_BytesRules_parse_ex(const char* buf, si
return ret;
}
UPB_INLINE char* validate_BytesRules_serialize(const validate_BytesRules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_BytesRules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_BytesRules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_BytesRules_serialize_ex(const validate_BytesRules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_BytesRules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_BytesRules_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
validate_BytesRules_well_known_ip = 10,
@@ -2029,117 +2943,201 @@ typedef enum {
validate_BytesRules_well_known_ipv6 = 12,
validate_BytesRules_well_known_NOT_SET = 0
} validate_BytesRules_well_known_oneofcases;
-UPB_INLINE validate_BytesRules_well_known_oneofcases validate_BytesRules_well_known_case(const validate_BytesRules* msg) { return (validate_BytesRules_well_known_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(88, 140), int32_t); }
-
-UPB_INLINE bool validate_BytesRules_has_const(const validate_BytesRules *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE validate_BytesRules_well_known_oneofcases validate_BytesRules_well_known_case(const validate_BytesRules* msg) {
+ return (validate_BytesRules_well_known_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool validate_BytesRules_has_const(const validate_BytesRules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_BytesRules_clear_const(const validate_BytesRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 1);
+}
UPB_INLINE upb_StringView validate_BytesRules_const(const validate_BytesRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(36, 40), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView);
+}
+UPB_INLINE bool validate_BytesRules_has_min_len(const validate_BytesRules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_BytesRules_clear_min_len(const validate_BytesRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 112), uint64_t) = 0;
+ _upb_clearhas(msg, 2);
}
-UPB_INLINE bool validate_BytesRules_has_min_len(const validate_BytesRules *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE uint64_t validate_BytesRules_min_len(const validate_BytesRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(64, 112), uint64_t);
+}
+UPB_INLINE bool validate_BytesRules_has_max_len(const validate_BytesRules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_BytesRules_clear_max_len(const validate_BytesRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 120), uint64_t) = 0;
+ _upb_clearhas(msg, 3);
}
-UPB_INLINE bool validate_BytesRules_has_max_len(const validate_BytesRules *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE uint64_t validate_BytesRules_max_len(const validate_BytesRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(72, 120), uint64_t);
+}
+UPB_INLINE bool validate_BytesRules_has_pattern(const validate_BytesRules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_BytesRules_clear_pattern(const validate_BytesRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 4);
}
-UPB_INLINE bool validate_BytesRules_has_pattern(const validate_BytesRules *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE upb_StringView validate_BytesRules_pattern(const validate_BytesRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(44, 56), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView);
+}
+UPB_INLINE bool validate_BytesRules_has_prefix(const validate_BytesRules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_BytesRules_clear_prefix(const validate_BytesRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 5);
}
-UPB_INLINE bool validate_BytesRules_has_prefix(const validate_BytesRules *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE upb_StringView validate_BytesRules_prefix(const validate_BytesRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(52, 72), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView);
+}
+UPB_INLINE bool validate_BytesRules_has_suffix(const validate_BytesRules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_BytesRules_clear_suffix(const validate_BytesRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 6);
}
-UPB_INLINE bool validate_BytesRules_has_suffix(const validate_BytesRules *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE upb_StringView validate_BytesRules_suffix(const validate_BytesRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(60, 88), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(36, 64), upb_StringView);
+}
+UPB_INLINE bool validate_BytesRules_has_contains(const validate_BytesRules* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void validate_BytesRules_clear_contains(const validate_BytesRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 80), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+ _upb_clearhas(msg, 7);
}
-UPB_INLINE bool validate_BytesRules_has_contains(const validate_BytesRules *msg) { return _upb_hasbit(msg, 7); }
UPB_INLINE upb_StringView validate_BytesRules_contains(const validate_BytesRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(68, 104), upb_StringView);
-}
-UPB_INLINE upb_StringView const* validate_BytesRules_in(const validate_BytesRules *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(76, 120), len); }
-UPB_INLINE upb_StringView const* validate_BytesRules_not_in(const validate_BytesRules *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(80, 128), len); }
-UPB_INLINE bool validate_BytesRules_has_ip(const validate_BytesRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(88, 140)) == 10; }
-UPB_INLINE bool validate_BytesRules_ip(const validate_BytesRules *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(84, 136), UPB_SIZE(88, 140), 10, false); }
-UPB_INLINE bool validate_BytesRules_has_ipv4(const validate_BytesRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(88, 140)) == 11; }
-UPB_INLINE bool validate_BytesRules_ipv4(const validate_BytesRules *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(84, 136), UPB_SIZE(88, 140), 11, false); }
-UPB_INLINE bool validate_BytesRules_has_ipv6(const validate_BytesRules *msg) { return _upb_getoneofcase(msg, UPB_SIZE(88, 140)) == 12; }
-UPB_INLINE bool validate_BytesRules_ipv6(const validate_BytesRules *msg) { return UPB_READ_ONEOF(msg, bool, UPB_SIZE(84, 136), UPB_SIZE(88, 140), 12, false); }
-UPB_INLINE bool validate_BytesRules_has_len(const validate_BytesRules *msg) { return _upb_hasbit(msg, 8); }
+ return *UPB_PTR_AT(msg, UPB_SIZE(44, 80), upb_StringView);
+}
+UPB_INLINE void validate_BytesRules_clear_in(const validate_BytesRules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(52, 96));
+}
+UPB_INLINE upb_StringView const* validate_BytesRules_in(const validate_BytesRules* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(52, 96), len);
+}
+UPB_INLINE void validate_BytesRules_clear_not_in(const validate_BytesRules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(56, 104));
+}
+UPB_INLINE upb_StringView const* validate_BytesRules_not_in(const validate_BytesRules* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(56, 104), len);
+}
+UPB_INLINE bool validate_BytesRules_has_ip(const validate_BytesRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 10;
+}
+UPB_INLINE void validate_BytesRules_clear_ip(const validate_BytesRules* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(2, 2), 0, UPB_SIZE(4, 4), validate_BytesRules_well_known_NOT_SET);
+}
+UPB_INLINE bool validate_BytesRules_ip(const validate_BytesRules* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(2, 2), UPB_SIZE(4, 4), 10, false);
+}
+UPB_INLINE bool validate_BytesRules_has_ipv4(const validate_BytesRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 11;
+}
+UPB_INLINE void validate_BytesRules_clear_ipv4(const validate_BytesRules* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(2, 2), 0, UPB_SIZE(4, 4), validate_BytesRules_well_known_NOT_SET);
+}
+UPB_INLINE bool validate_BytesRules_ipv4(const validate_BytesRules* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(2, 2), UPB_SIZE(4, 4), 11, false);
+}
+UPB_INLINE bool validate_BytesRules_has_ipv6(const validate_BytesRules* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 12;
+}
+UPB_INLINE void validate_BytesRules_clear_ipv6(const validate_BytesRules* msg) {
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(2, 2), 0, UPB_SIZE(4, 4), validate_BytesRules_well_known_NOT_SET);
+}
+UPB_INLINE bool validate_BytesRules_ipv6(const validate_BytesRules* msg) {
+ return UPB_READ_ONEOF(msg, bool, UPB_SIZE(2, 2), UPB_SIZE(4, 4), 12, false);
+}
+UPB_INLINE bool validate_BytesRules_has_len(const validate_BytesRules* msg) {
+ return _upb_hasbit(msg, 8);
+}
+UPB_INLINE void validate_BytesRules_clear_len(const validate_BytesRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 128), uint64_t) = 0;
+ _upb_clearhas(msg, 8);
+}
UPB_INLINE uint64_t validate_BytesRules_len(const validate_BytesRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(80, 128), uint64_t);
+}
+UPB_INLINE bool validate_BytesRules_has_ignore_empty(const validate_BytesRules* msg) {
+ return _upb_hasbit(msg, 9);
+}
+UPB_INLINE void validate_BytesRules_clear_ignore_empty(const validate_BytesRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
+ _upb_clearhas(msg, 9);
}
-UPB_INLINE bool validate_BytesRules_has_ignore_empty(const validate_BytesRules *msg) { return _upb_hasbit(msg, 9); }
UPB_INLINE bool validate_BytesRules_ignore_empty(const validate_BytesRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 32), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
}
UPB_INLINE void validate_BytesRules_set_const(validate_BytesRules *msg, upb_StringView value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(36, 40), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), upb_StringView) = value;
}
UPB_INLINE void validate_BytesRules_set_min_len(validate_BytesRules *msg, uint64_t value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(64, 112), uint64_t) = value;
}
UPB_INLINE void validate_BytesRules_set_max_len(validate_BytesRules *msg, uint64_t value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(72, 120), uint64_t) = value;
}
UPB_INLINE void validate_BytesRules_set_pattern(validate_BytesRules *msg, upb_StringView value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(44, 56), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), upb_StringView) = value;
}
UPB_INLINE void validate_BytesRules_set_prefix(validate_BytesRules *msg, upb_StringView value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(52, 72), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), upb_StringView) = value;
}
UPB_INLINE void validate_BytesRules_set_suffix(validate_BytesRules *msg, upb_StringView value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(60, 88), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(36, 64), upb_StringView) = value;
}
UPB_INLINE void validate_BytesRules_set_contains(validate_BytesRules *msg, upb_StringView value) {
_upb_sethas(msg, 7);
- *UPB_PTR_AT(msg, UPB_SIZE(68, 104), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(44, 80), upb_StringView) = value;
}
-UPB_INLINE upb_StringView* validate_BytesRules_mutable_in(validate_BytesRules *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(76, 120), len);
+UPB_INLINE upb_StringView* validate_BytesRules_mutable_in(validate_BytesRules* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(52, 96), len);
}
-UPB_INLINE upb_StringView* validate_BytesRules_resize_in(validate_BytesRules *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(76, 120), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* validate_BytesRules_resize_in(validate_BytesRules* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(52, 96), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool validate_BytesRules_add_in(validate_BytesRules *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(76, 120), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool validate_BytesRules_add_in(validate_BytesRules* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(52, 96), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE upb_StringView* validate_BytesRules_mutable_not_in(validate_BytesRules *msg, size_t *len) {
- return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(80, 128), len);
+UPB_INLINE upb_StringView* validate_BytesRules_mutable_not_in(validate_BytesRules* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(56, 104), len);
}
-UPB_INLINE upb_StringView* validate_BytesRules_resize_not_in(validate_BytesRules *msg, size_t len, upb_Arena *arena) {
- return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(80, 128), len, UPB_SIZE(3, 4), arena);
+UPB_INLINE upb_StringView* validate_BytesRules_resize_not_in(validate_BytesRules* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(56, 104), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool validate_BytesRules_add_not_in(validate_BytesRules *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(80, 128), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool validate_BytesRules_add_not_in(validate_BytesRules* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(56, 104), UPB_SIZE(3, 4), &val, arena);
}
UPB_INLINE void validate_BytesRules_set_ip(validate_BytesRules *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(84, 136), value, UPB_SIZE(88, 140), 10);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(2, 2), value, UPB_SIZE(4, 4), 10);
}
UPB_INLINE void validate_BytesRules_set_ipv4(validate_BytesRules *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(84, 136), value, UPB_SIZE(88, 140), 11);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(2, 2), value, UPB_SIZE(4, 4), 11);
}
UPB_INLINE void validate_BytesRules_set_ipv6(validate_BytesRules *msg, bool value) {
- UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(84, 136), value, UPB_SIZE(88, 140), 12);
+ UPB_WRITE_ONEOF(msg, bool, UPB_SIZE(2, 2), value, UPB_SIZE(4, 4), 12);
}
UPB_INLINE void validate_BytesRules_set_len(validate_BytesRules *msg, uint64_t value) {
_upb_sethas(msg, 8);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(80, 128), uint64_t) = value;
}
UPB_INLINE void validate_BytesRules_set_ignore_empty(validate_BytesRules *msg, bool value) {
_upb_sethas(msg, 9);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 32), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
}
/* validate.EnumRules */
@@ -2167,22 +3165,48 @@ UPB_INLINE validate_EnumRules* validate_EnumRules_parse_ex(const char* buf, size
return ret;
}
UPB_INLINE char* validate_EnumRules_serialize(const validate_EnumRules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_EnumRules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_EnumRules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_EnumRules_serialize_ex(const validate_EnumRules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_EnumRules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_EnumRules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_EnumRules_has_const(const validate_EnumRules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_EnumRules_clear_const(const validate_EnumRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_EnumRules_has_const(const validate_EnumRules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE int32_t validate_EnumRules_const(const validate_EnumRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
-UPB_INLINE bool validate_EnumRules_has_defined_only(const validate_EnumRules *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool validate_EnumRules_has_defined_only(const validate_EnumRules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_EnumRules_clear_defined_only(const validate_EnumRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE bool validate_EnumRules_defined_only(const validate_EnumRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool);
}
-UPB_INLINE int32_t const* validate_EnumRules_in(const validate_EnumRules *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len); }
-UPB_INLINE int32_t const* validate_EnumRules_not_in(const validate_EnumRules *msg, size_t *len) { return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(16, 24), len); }
+UPB_INLINE void validate_EnumRules_clear_in(const validate_EnumRules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(12, 16));
+}
+UPB_INLINE int32_t const* validate_EnumRules_in(const validate_EnumRules* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(12, 16), len);
+}
+UPB_INLINE void validate_EnumRules_clear_not_in(const validate_EnumRules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(16, 24));
+}
+UPB_INLINE int32_t const* validate_EnumRules_not_in(const validate_EnumRules* msg, size_t* len) {
+ return (int32_t const*)_upb_array_accessor(msg, UPB_SIZE(16, 24), len);
+}
UPB_INLINE void validate_EnumRules_set_const(validate_EnumRules *msg, int32_t value) {
_upb_sethas(msg, 1);
@@ -2192,25 +3216,23 @@ UPB_INLINE void validate_EnumRules_set_defined_only(validate_EnumRules *msg, boo
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), bool) = value;
}
-UPB_INLINE int32_t* validate_EnumRules_mutable_in(validate_EnumRules *msg, size_t *len) {
+UPB_INLINE int32_t* validate_EnumRules_mutable_in(validate_EnumRules* msg, size_t* len) {
return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(12, 16), len);
}
-UPB_INLINE int32_t* validate_EnumRules_resize_in(validate_EnumRules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE int32_t* validate_EnumRules_resize_in(validate_EnumRules* msg, size_t len, upb_Arena* arena) {
return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(12, 16), len, 2, arena);
}
-UPB_INLINE bool validate_EnumRules_add_in(validate_EnumRules *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 16), 2, &val,
- arena);
+UPB_INLINE bool validate_EnumRules_add_in(validate_EnumRules* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(12, 16), 2, &val, arena);
}
-UPB_INLINE int32_t* validate_EnumRules_mutable_not_in(validate_EnumRules *msg, size_t *len) {
+UPB_INLINE int32_t* validate_EnumRules_mutable_not_in(validate_EnumRules* msg, size_t* len) {
return (int32_t*)_upb_array_mutable_accessor(msg, UPB_SIZE(16, 24), len);
}
-UPB_INLINE int32_t* validate_EnumRules_resize_not_in(validate_EnumRules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE int32_t* validate_EnumRules_resize_not_in(validate_EnumRules* msg, size_t len, upb_Arena* arena) {
return (int32_t*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(16, 24), len, 2, arena);
}
-UPB_INLINE bool validate_EnumRules_add_not_in(validate_EnumRules *msg, int32_t val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 24), 2, &val,
- arena);
+UPB_INLINE bool validate_EnumRules_add_not_in(validate_EnumRules* msg, int32_t val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(16, 24), 2, &val, arena);
}
/* validate.MessageRules */
@@ -2238,17 +3260,33 @@ UPB_INLINE validate_MessageRules* validate_MessageRules_parse_ex(const char* buf
return ret;
}
UPB_INLINE char* validate_MessageRules_serialize(const validate_MessageRules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_MessageRules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_MessageRules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_MessageRules_serialize_ex(const validate_MessageRules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_MessageRules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_MessageRules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_MessageRules_has_skip(const validate_MessageRules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_MessageRules_clear_skip(const validate_MessageRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_MessageRules_has_skip(const validate_MessageRules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE bool validate_MessageRules_skip(const validate_MessageRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE bool validate_MessageRules_has_required(const validate_MessageRules *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool validate_MessageRules_has_required(const validate_MessageRules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_MessageRules_clear_required(const validate_MessageRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
+ _upb_clearhas(msg, 2);
+}
UPB_INLINE bool validate_MessageRules_required(const validate_MessageRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
}
@@ -2287,50 +3325,83 @@ UPB_INLINE validate_RepeatedRules* validate_RepeatedRules_parse_ex(const char* b
return ret;
}
UPB_INLINE char* validate_RepeatedRules_serialize(const validate_RepeatedRules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_RepeatedRules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_RepeatedRules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_RepeatedRules_serialize_ex(const validate_RepeatedRules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_RepeatedRules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_RepeatedRules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_RepeatedRules_has_min_items(const validate_RepeatedRules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_RepeatedRules_clear_min_items(const validate_RepeatedRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_RepeatedRules_has_min_items(const validate_RepeatedRules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE uint64_t validate_RepeatedRules_min_items(const validate_RepeatedRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t);
+}
+UPB_INLINE bool validate_RepeatedRules_has_max_items(const validate_RepeatedRules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_RepeatedRules_clear_max_items(const validate_RepeatedRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t) = 0;
+ _upb_clearhas(msg, 2);
}
-UPB_INLINE bool validate_RepeatedRules_has_max_items(const validate_RepeatedRules *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE uint64_t validate_RepeatedRules_max_items(const validate_RepeatedRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t);
+}
+UPB_INLINE bool validate_RepeatedRules_has_unique(const validate_RepeatedRules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_RepeatedRules_clear_unique(const validate_RepeatedRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 3);
}
-UPB_INLINE bool validate_RepeatedRules_has_unique(const validate_RepeatedRules *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE bool validate_RepeatedRules_unique(const validate_RepeatedRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
+}
+UPB_INLINE bool validate_RepeatedRules_has_items(const validate_RepeatedRules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_RepeatedRules_clear_items(const validate_RepeatedRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool validate_RepeatedRules_has_items(const validate_RepeatedRules *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const validate_FieldRules* validate_RepeatedRules_items(const validate_RepeatedRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 32), const validate_FieldRules*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const validate_FieldRules*);
+}
+UPB_INLINE bool validate_RepeatedRules_has_ignore_empty(const validate_RepeatedRules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_RepeatedRules_clear_ignore_empty(const validate_RepeatedRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
+ _upb_clearhas(msg, 5);
}
-UPB_INLINE bool validate_RepeatedRules_has_ignore_empty(const validate_RepeatedRules *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE bool validate_RepeatedRules_ignore_empty(const validate_RepeatedRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(25, 25), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
}
UPB_INLINE void validate_RepeatedRules_set_min_items(validate_RepeatedRules *msg, uint64_t value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), uint64_t) = value;
}
UPB_INLINE void validate_RepeatedRules_set_max_items(validate_RepeatedRules *msg, uint64_t value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t) = value;
}
UPB_INLINE void validate_RepeatedRules_set_unique(validate_RepeatedRules *msg, bool value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
UPB_INLINE void validate_RepeatedRules_set_items(validate_RepeatedRules *msg, validate_FieldRules* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 32), validate_FieldRules*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), validate_FieldRules*) = value;
}
-UPB_INLINE struct validate_FieldRules* validate_RepeatedRules_mutable_items(validate_RepeatedRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_FieldRules* validate_RepeatedRules_mutable_items(validate_RepeatedRules* msg, upb_Arena* arena) {
struct validate_FieldRules* sub = (struct validate_FieldRules*)validate_RepeatedRules_items(msg);
if (sub == NULL) {
sub = (struct validate_FieldRules*)_upb_Message_New(&validate_FieldRules_msginit, arena);
@@ -2341,7 +3412,7 @@ UPB_INLINE struct validate_FieldRules* validate_RepeatedRules_mutable_items(vali
}
UPB_INLINE void validate_RepeatedRules_set_ignore_empty(validate_RepeatedRules *msg, bool value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(25, 25), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = value;
}
/* validate.MapRules */
@@ -2369,54 +3440,92 @@ UPB_INLINE validate_MapRules* validate_MapRules_parse_ex(const char* buf, size_t
return ret;
}
UPB_INLINE char* validate_MapRules_serialize(const validate_MapRules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_MapRules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_MapRules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_MapRules_serialize_ex(const validate_MapRules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_MapRules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_MapRules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_MapRules_has_min_pairs(const validate_MapRules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_MapRules_clear_min_pairs(const validate_MapRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_MapRules_has_min_pairs(const validate_MapRules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE uint64_t validate_MapRules_min_pairs(const validate_MapRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t);
+}
+UPB_INLINE bool validate_MapRules_has_max_pairs(const validate_MapRules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_MapRules_clear_max_pairs(const validate_MapRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t) = 0;
+ _upb_clearhas(msg, 2);
}
-UPB_INLINE bool validate_MapRules_has_max_pairs(const validate_MapRules *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE uint64_t validate_MapRules_max_pairs(const validate_MapRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t);
+}
+UPB_INLINE bool validate_MapRules_has_no_sparse(const validate_MapRules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_MapRules_clear_no_sparse(const validate_MapRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 3);
}
-UPB_INLINE bool validate_MapRules_has_no_sparse(const validate_MapRules *msg) { return _upb_hasbit(msg, 3); }
UPB_INLINE bool validate_MapRules_no_sparse(const validate_MapRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
+}
+UPB_INLINE bool validate_MapRules_has_keys(const validate_MapRules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_MapRules_clear_keys(const validate_MapRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool validate_MapRules_has_keys(const validate_MapRules *msg) { return _upb_hasbit(msg, 4); }
UPB_INLINE const validate_FieldRules* validate_MapRules_keys(const validate_MapRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(28, 32), const validate_FieldRules*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const validate_FieldRules*);
+}
+UPB_INLINE bool validate_MapRules_has_values(const validate_MapRules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_MapRules_clear_values(const validate_MapRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
}
-UPB_INLINE bool validate_MapRules_has_values(const validate_MapRules *msg) { return _upb_hasbit(msg, 5); }
UPB_INLINE const validate_FieldRules* validate_MapRules_values(const validate_MapRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(32, 40), const validate_FieldRules*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const validate_FieldRules*);
+}
+UPB_INLINE bool validate_MapRules_has_ignore_empty(const validate_MapRules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_MapRules_clear_ignore_empty(const validate_MapRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
+ _upb_clearhas(msg, 6);
}
-UPB_INLINE bool validate_MapRules_has_ignore_empty(const validate_MapRules *msg) { return _upb_hasbit(msg, 6); }
UPB_INLINE bool validate_MapRules_ignore_empty(const validate_MapRules* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(25, 25), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
}
UPB_INLINE void validate_MapRules_set_min_pairs(validate_MapRules *msg, uint64_t value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), uint64_t) = value;
}
UPB_INLINE void validate_MapRules_set_max_pairs(validate_MapRules *msg, uint64_t value) {
_upb_sethas(msg, 2);
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t) = value;
}
UPB_INLINE void validate_MapRules_set_no_sparse(validate_MapRules *msg, bool value) {
_upb_sethas(msg, 3);
- *UPB_PTR_AT(msg, UPB_SIZE(24, 24), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
UPB_INLINE void validate_MapRules_set_keys(validate_MapRules *msg, validate_FieldRules* value) {
_upb_sethas(msg, 4);
- *UPB_PTR_AT(msg, UPB_SIZE(28, 32), validate_FieldRules*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), validate_FieldRules*) = value;
}
-UPB_INLINE struct validate_FieldRules* validate_MapRules_mutable_keys(validate_MapRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_FieldRules* validate_MapRules_mutable_keys(validate_MapRules* msg, upb_Arena* arena) {
struct validate_FieldRules* sub = (struct validate_FieldRules*)validate_MapRules_keys(msg);
if (sub == NULL) {
sub = (struct validate_FieldRules*)_upb_Message_New(&validate_FieldRules_msginit, arena);
@@ -2427,9 +3536,9 @@ UPB_INLINE struct validate_FieldRules* validate_MapRules_mutable_keys(validate_M
}
UPB_INLINE void validate_MapRules_set_values(validate_MapRules *msg, validate_FieldRules* value) {
_upb_sethas(msg, 5);
- *UPB_PTR_AT(msg, UPB_SIZE(32, 40), validate_FieldRules*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), validate_FieldRules*) = value;
}
-UPB_INLINE struct validate_FieldRules* validate_MapRules_mutable_values(validate_MapRules *msg, upb_Arena *arena) {
+UPB_INLINE struct validate_FieldRules* validate_MapRules_mutable_values(validate_MapRules* msg, upb_Arena* arena) {
struct validate_FieldRules* sub = (struct validate_FieldRules*)validate_MapRules_values(msg);
if (sub == NULL) {
sub = (struct validate_FieldRules*)_upb_Message_New(&validate_FieldRules_msginit, arena);
@@ -2440,7 +3549,7 @@ UPB_INLINE struct validate_FieldRules* validate_MapRules_mutable_values(validate
}
UPB_INLINE void validate_MapRules_set_ignore_empty(validate_MapRules *msg, bool value) {
_upb_sethas(msg, 6);
- *UPB_PTR_AT(msg, UPB_SIZE(25, 25), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = value;
}
/* validate.AnyRules */
@@ -2468,42 +3577,60 @@ UPB_INLINE validate_AnyRules* validate_AnyRules_parse_ex(const char* buf, size_t
return ret;
}
UPB_INLINE char* validate_AnyRules_serialize(const validate_AnyRules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_AnyRules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_AnyRules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_AnyRules_serialize_ex(const validate_AnyRules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_AnyRules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_AnyRules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_AnyRules_has_required(const validate_AnyRules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_AnyRules_clear_required(const validate_AnyRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_AnyRules_has_required(const validate_AnyRules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE bool validate_AnyRules_required(const validate_AnyRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE upb_StringView const* validate_AnyRules_in(const validate_AnyRules *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len); }
-UPB_INLINE upb_StringView const* validate_AnyRules_not_in(const validate_AnyRules *msg, size_t *len) { return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len); }
+UPB_INLINE void validate_AnyRules_clear_in(const validate_AnyRules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE upb_StringView const* validate_AnyRules_in(const validate_AnyRules* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(4, 8), len);
+}
+UPB_INLINE void validate_AnyRules_clear_not_in(const validate_AnyRules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE upb_StringView const* validate_AnyRules_not_in(const validate_AnyRules* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
UPB_INLINE void validate_AnyRules_set_required(validate_AnyRules *msg, bool value) {
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
-UPB_INLINE upb_StringView* validate_AnyRules_mutable_in(validate_AnyRules *msg, size_t *len) {
+UPB_INLINE upb_StringView* validate_AnyRules_mutable_in(validate_AnyRules* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(4, 8), len);
}
-UPB_INLINE upb_StringView* validate_AnyRules_resize_in(validate_AnyRules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* validate_AnyRules_resize_in(validate_AnyRules* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(4, 8), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool validate_AnyRules_add_in(validate_AnyRules *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool validate_AnyRules_add_in(validate_AnyRules* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(4, 8), UPB_SIZE(3, 4), &val, arena);
}
-UPB_INLINE upb_StringView* validate_AnyRules_mutable_not_in(validate_AnyRules *msg, size_t *len) {
+UPB_INLINE upb_StringView* validate_AnyRules_mutable_not_in(validate_AnyRules* msg, size_t* len) {
return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
}
-UPB_INLINE upb_StringView* validate_AnyRules_resize_not_in(validate_AnyRules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE upb_StringView* validate_AnyRules_resize_not_in(validate_AnyRules* msg, size_t len, upb_Arena* arena) {
return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(3, 4), arena);
}
-UPB_INLINE bool validate_AnyRules_add_not_in(validate_AnyRules *msg, upb_StringView val, upb_Arena *arena) {
- return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(3, 4), &val,
- arena);
+UPB_INLINE bool validate_AnyRules_add_not_in(validate_AnyRules* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(3, 4), &val, arena);
}
/* validate.DurationRules */
@@ -2531,40 +3658,89 @@ UPB_INLINE validate_DurationRules* validate_DurationRules_parse_ex(const char* b
return ret;
}
UPB_INLINE char* validate_DurationRules_serialize(const validate_DurationRules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_DurationRules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_DurationRules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_DurationRules_serialize_ex(const validate_DurationRules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_DurationRules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_DurationRules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_DurationRules_has_required(const validate_DurationRules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_DurationRules_clear_required(const validate_DurationRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_DurationRules_has_required(const validate_DurationRules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE bool validate_DurationRules_required(const validate_DurationRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
-UPB_INLINE bool validate_DurationRules_has_const(const validate_DurationRules *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool validate_DurationRules_has_const(const validate_DurationRules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_DurationRules_clear_const(const validate_DurationRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* validate_DurationRules_const(const validate_DurationRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool validate_DurationRules_has_lt(const validate_DurationRules *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool validate_DurationRules_has_lt(const validate_DurationRules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_DurationRules_clear_lt(const validate_DurationRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* validate_DurationRules_lt(const validate_DurationRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool validate_DurationRules_has_lte(const validate_DurationRules *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool validate_DurationRules_has_lte(const validate_DurationRules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_DurationRules_clear_lte(const validate_DurationRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* validate_DurationRules_lte(const validate_DurationRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool validate_DurationRules_has_gt(const validate_DurationRules *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool validate_DurationRules_has_gt(const validate_DurationRules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_DurationRules_clear_gt(const validate_DurationRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* validate_DurationRules_gt(const validate_DurationRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool validate_DurationRules_has_gte(const validate_DurationRules *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE bool validate_DurationRules_has_gte(const validate_DurationRules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_DurationRules_clear_gte(const validate_DurationRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* validate_DurationRules_gte(const validate_DurationRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct google_protobuf_Duration*);
}
-UPB_INLINE bool validate_DurationRules_has_in(const validate_DurationRules *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48)); }
-UPB_INLINE const struct google_protobuf_Duration* const* validate_DurationRules_in(const validate_DurationRules *msg, size_t *len) { return (const struct google_protobuf_Duration* const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len); }
-UPB_INLINE bool validate_DurationRules_has_not_in(const validate_DurationRules *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 56)); }
-UPB_INLINE const struct google_protobuf_Duration* const* validate_DurationRules_not_in(const validate_DurationRules *msg, size_t *len) { return (const struct google_protobuf_Duration* const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len); }
+UPB_INLINE bool validate_DurationRules_has_in(const validate_DurationRules* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE void validate_DurationRules_clear_in(const validate_DurationRules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(24, 48));
+}
+UPB_INLINE const struct google_protobuf_Duration* const* validate_DurationRules_in(const validate_DurationRules* msg, size_t* len) {
+ return (const struct google_protobuf_Duration* const*)_upb_array_accessor(msg, UPB_SIZE(24, 48), len);
+}
+UPB_INLINE bool validate_DurationRules_has_not_in(const validate_DurationRules* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE void validate_DurationRules_clear_not_in(const validate_DurationRules* msg) {
+ _upb_array_detach(msg, UPB_SIZE(28, 56));
+}
+UPB_INLINE const struct google_protobuf_Duration* const* validate_DurationRules_not_in(const validate_DurationRules* msg, size_t* len) {
+ return (const struct google_protobuf_Duration* const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len);
+}
UPB_INLINE void validate_DurationRules_set_required(validate_DurationRules *msg, bool value) {
_upb_sethas(msg, 1);
@@ -2574,7 +3750,7 @@ UPB_INLINE void validate_DurationRules_set_const(validate_DurationRules *msg, st
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_mutable_const(validate_DurationRules *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_mutable_const(validate_DurationRules* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)validate_DurationRules_const(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -2587,7 +3763,7 @@ UPB_INLINE void validate_DurationRules_set_lt(validate_DurationRules *msg, struc
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_mutable_lt(validate_DurationRules *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_mutable_lt(validate_DurationRules* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)validate_DurationRules_lt(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -2600,7 +3776,7 @@ UPB_INLINE void validate_DurationRules_set_lte(validate_DurationRules *msg, stru
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_mutable_lte(validate_DurationRules *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_mutable_lte(validate_DurationRules* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)validate_DurationRules_lte(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -2613,7 +3789,7 @@ UPB_INLINE void validate_DurationRules_set_gt(validate_DurationRules *msg, struc
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_mutable_gt(validate_DurationRules *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_mutable_gt(validate_DurationRules* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)validate_DurationRules_gt(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -2626,7 +3802,7 @@ UPB_INLINE void validate_DurationRules_set_gte(validate_DurationRules *msg, stru
_upb_sethas(msg, 6);
*UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_mutable_gte(validate_DurationRules *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_mutable_gte(validate_DurationRules* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)validate_DurationRules_gte(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -2635,29 +3811,27 @@ UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_mutable_gte(v
}
return sub;
}
-UPB_INLINE struct google_protobuf_Duration** validate_DurationRules_mutable_in(validate_DurationRules *msg, size_t *len) {
+UPB_INLINE struct google_protobuf_Duration** validate_DurationRules_mutable_in(validate_DurationRules* msg, size_t* len) {
return (struct google_protobuf_Duration**)_upb_array_mutable_accessor(msg, UPB_SIZE(24, 48), len);
}
-UPB_INLINE struct google_protobuf_Duration** validate_DurationRules_resize_in(validate_DurationRules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration** validate_DurationRules_resize_in(validate_DurationRules* msg, size_t len, upb_Arena* arena) {
return (struct google_protobuf_Duration**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(24, 48), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_add_in(validate_DurationRules *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_add_in(validate_DurationRules* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(24, 48), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(24, 48), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
-UPB_INLINE struct google_protobuf_Duration** validate_DurationRules_mutable_not_in(validate_DurationRules *msg, size_t *len) {
+UPB_INLINE struct google_protobuf_Duration** validate_DurationRules_mutable_not_in(validate_DurationRules* msg, size_t* len) {
return (struct google_protobuf_Duration**)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
}
-UPB_INLINE struct google_protobuf_Duration** validate_DurationRules_resize_not_in(validate_DurationRules *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration** validate_DurationRules_resize_not_in(validate_DurationRules* msg, size_t len, upb_Arena* arena) {
return (struct google_protobuf_Duration**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_add_not_in(validate_DurationRules *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* validate_DurationRules_add_not_in(validate_DurationRules* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(28, 56), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(28, 56), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -2687,45 +3861,97 @@ UPB_INLINE validate_TimestampRules* validate_TimestampRules_parse_ex(const char*
return ret;
}
UPB_INLINE char* validate_TimestampRules_serialize(const validate_TimestampRules* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_TimestampRules_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_TimestampRules_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* validate_TimestampRules_serialize_ex(const validate_TimestampRules* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &validate_TimestampRules_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &validate_TimestampRules_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool validate_TimestampRules_has_required(const validate_TimestampRules* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void validate_TimestampRules_clear_required(const validate_TimestampRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool) = 0;
+ _upb_clearhas(msg, 1);
}
-UPB_INLINE bool validate_TimestampRules_has_required(const validate_TimestampRules *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE bool validate_TimestampRules_required(const validate_TimestampRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(2, 2), bool);
}
-UPB_INLINE bool validate_TimestampRules_has_const(const validate_TimestampRules *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool validate_TimestampRules_has_const(const validate_TimestampRules* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void validate_TimestampRules_clear_const(const validate_TimestampRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Timestamp* validate_TimestampRules_const(const validate_TimestampRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct google_protobuf_Timestamp*);
}
-UPB_INLINE bool validate_TimestampRules_has_lt(const validate_TimestampRules *msg) { return _upb_hasbit(msg, 3); }
+UPB_INLINE bool validate_TimestampRules_has_lt(const validate_TimestampRules* msg) {
+ return _upb_hasbit(msg, 3);
+}
+UPB_INLINE void validate_TimestampRules_clear_lt(const validate_TimestampRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Timestamp* validate_TimestampRules_lt(const validate_TimestampRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 16), const struct google_protobuf_Timestamp*);
}
-UPB_INLINE bool validate_TimestampRules_has_lte(const validate_TimestampRules *msg) { return _upb_hasbit(msg, 4); }
+UPB_INLINE bool validate_TimestampRules_has_lte(const validate_TimestampRules* msg) {
+ return _upb_hasbit(msg, 4);
+}
+UPB_INLINE void validate_TimestampRules_clear_lte(const validate_TimestampRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Timestamp* validate_TimestampRules_lte(const validate_TimestampRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), const struct google_protobuf_Timestamp*);
}
-UPB_INLINE bool validate_TimestampRules_has_gt(const validate_TimestampRules *msg) { return _upb_hasbit(msg, 5); }
+UPB_INLINE bool validate_TimestampRules_has_gt(const validate_TimestampRules* msg) {
+ return _upb_hasbit(msg, 5);
+}
+UPB_INLINE void validate_TimestampRules_clear_gt(const validate_TimestampRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Timestamp* validate_TimestampRules_gt(const validate_TimestampRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 32), const struct google_protobuf_Timestamp*);
}
-UPB_INLINE bool validate_TimestampRules_has_gte(const validate_TimestampRules *msg) { return _upb_hasbit(msg, 6); }
+UPB_INLINE bool validate_TimestampRules_has_gte(const validate_TimestampRules* msg) {
+ return _upb_hasbit(msg, 6);
+}
+UPB_INLINE void validate_TimestampRules_clear_gte(const validate_TimestampRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Timestamp* validate_TimestampRules_gte(const validate_TimestampRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), const struct google_protobuf_Timestamp*);
}
-UPB_INLINE bool validate_TimestampRules_has_lt_now(const validate_TimestampRules *msg) { return _upb_hasbit(msg, 7); }
+UPB_INLINE bool validate_TimestampRules_has_lt_now(const validate_TimestampRules* msg) {
+ return _upb_hasbit(msg, 7);
+}
+UPB_INLINE void validate_TimestampRules_clear_lt_now(const validate_TimestampRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool) = 0;
+ _upb_clearhas(msg, 7);
+}
UPB_INLINE bool validate_TimestampRules_lt_now(const validate_TimestampRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(3, 3), bool);
}
-UPB_INLINE bool validate_TimestampRules_has_gt_now(const validate_TimestampRules *msg) { return _upb_hasbit(msg, 8); }
+UPB_INLINE bool validate_TimestampRules_has_gt_now(const validate_TimestampRules* msg) {
+ return _upb_hasbit(msg, 8);
+}
+UPB_INLINE void validate_TimestampRules_clear_gt_now(const validate_TimestampRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = 0;
+ _upb_clearhas(msg, 8);
+}
UPB_INLINE bool validate_TimestampRules_gt_now(const validate_TimestampRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
}
-UPB_INLINE bool validate_TimestampRules_has_within(const validate_TimestampRules *msg) { return _upb_hasbit(msg, 9); }
+UPB_INLINE bool validate_TimestampRules_has_within(const validate_TimestampRules* msg) {
+ return _upb_hasbit(msg, 9);
+}
+UPB_INLINE void validate_TimestampRules_clear_within(const validate_TimestampRules* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Duration* validate_TimestampRules_within(const validate_TimestampRules* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(28, 48), const struct google_protobuf_Duration*);
}
@@ -2738,7 +3964,7 @@ UPB_INLINE void validate_TimestampRules_set_const(validate_TimestampRules *msg,
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct google_protobuf_Timestamp*) = value;
}
-UPB_INLINE struct google_protobuf_Timestamp* validate_TimestampRules_mutable_const(validate_TimestampRules *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* validate_TimestampRules_mutable_const(validate_TimestampRules* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)validate_TimestampRules_const(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -2751,7 +3977,7 @@ UPB_INLINE void validate_TimestampRules_set_lt(validate_TimestampRules *msg, str
_upb_sethas(msg, 3);
*UPB_PTR_AT(msg, UPB_SIZE(12, 16), struct google_protobuf_Timestamp*) = value;
}
-UPB_INLINE struct google_protobuf_Timestamp* validate_TimestampRules_mutable_lt(validate_TimestampRules *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* validate_TimestampRules_mutable_lt(validate_TimestampRules* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)validate_TimestampRules_lt(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -2764,7 +3990,7 @@ UPB_INLINE void validate_TimestampRules_set_lte(validate_TimestampRules *msg, st
_upb_sethas(msg, 4);
*UPB_PTR_AT(msg, UPB_SIZE(16, 24), struct google_protobuf_Timestamp*) = value;
}
-UPB_INLINE struct google_protobuf_Timestamp* validate_TimestampRules_mutable_lte(validate_TimestampRules *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* validate_TimestampRules_mutable_lte(validate_TimestampRules* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)validate_TimestampRules_lte(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -2777,7 +4003,7 @@ UPB_INLINE void validate_TimestampRules_set_gt(validate_TimestampRules *msg, str
_upb_sethas(msg, 5);
*UPB_PTR_AT(msg, UPB_SIZE(20, 32), struct google_protobuf_Timestamp*) = value;
}
-UPB_INLINE struct google_protobuf_Timestamp* validate_TimestampRules_mutable_gt(validate_TimestampRules *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* validate_TimestampRules_mutable_gt(validate_TimestampRules* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)validate_TimestampRules_gt(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -2790,7 +4016,7 @@ UPB_INLINE void validate_TimestampRules_set_gte(validate_TimestampRules *msg, st
_upb_sethas(msg, 6);
*UPB_PTR_AT(msg, UPB_SIZE(24, 40), struct google_protobuf_Timestamp*) = value;
}
-UPB_INLINE struct google_protobuf_Timestamp* validate_TimestampRules_mutable_gte(validate_TimestampRules *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Timestamp* validate_TimestampRules_mutable_gte(validate_TimestampRules* msg, upb_Arena* arena) {
struct google_protobuf_Timestamp* sub = (struct google_protobuf_Timestamp*)validate_TimestampRules_gte(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Timestamp*)_upb_Message_New(&google_protobuf_Timestamp_msginit, arena);
@@ -2811,7 +4037,7 @@ UPB_INLINE void validate_TimestampRules_set_within(validate_TimestampRules *msg,
_upb_sethas(msg, 9);
*UPB_PTR_AT(msg, UPB_SIZE(28, 48), struct google_protobuf_Duration*) = value;
}
-UPB_INLINE struct google_protobuf_Duration* validate_TimestampRules_mutable_within(validate_TimestampRules *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Duration* validate_TimestampRules_mutable_within(validate_TimestampRules* msg, upb_Arena* arena) {
struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)validate_TimestampRules_within(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
@@ -2821,14 +4047,53 @@ UPB_INLINE struct google_protobuf_Duration* validate_TimestampRules_mutable_with
return sub;
}
-UPB_INLINE bool validate_has_disabled(const struct google_protobuf_MessageOptions *msg) { return _upb_Message_Getext(msg, &validate_disabled_ext) != NULL; }
-UPB_INLINE bool validate_disabled(const struct google_protobuf_MessageOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &validate_disabled_ext); return ext ? *UPB_PTR_AT(&ext->data, 0, bool) : false; }
-UPB_INLINE bool validate_has_ignored(const struct google_protobuf_MessageOptions *msg) { return _upb_Message_Getext(msg, &validate_ignored_ext) != NULL; }
-UPB_INLINE bool validate_ignored(const struct google_protobuf_MessageOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &validate_ignored_ext); return ext ? *UPB_PTR_AT(&ext->data, 0, bool) : false; }
-UPB_INLINE bool validate_has_required(const struct google_protobuf_OneofOptions *msg) { return _upb_Message_Getext(msg, &validate_required_ext) != NULL; }
-UPB_INLINE bool validate_required(const struct google_protobuf_OneofOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &validate_required_ext); return ext ? *UPB_PTR_AT(&ext->data, 0, bool) : false; }
-UPB_INLINE bool validate_has_rules(const struct google_protobuf_FieldOptions *msg) { return _upb_Message_Getext(msg, &validate_rules_ext) != NULL; }
-UPB_INLINE const validate_FieldRules* validate_rules(const struct google_protobuf_FieldOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &validate_rules_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const validate_FieldRules*); }
+UPB_INLINE bool validate_has_disabled(const struct google_protobuf_MessageOptions* msg) {
+ return _upb_Message_Getext(msg, &validate_disabled_ext) != NULL;
+}
+UPB_INLINE void validate_clear_disabled(struct google_protobuf_MessageOptions* msg) {
+ _upb_Message_Clearext(msg, &validate_disabled_ext);
+}
+UPB_INLINE bool validate_disabled(const struct google_protobuf_MessageOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &validate_disabled_ext);
+ return ext ? *UPB_PTR_AT(&ext->data, 0, bool) : false;
+}
+UPB_INLINE bool validate_has_ignored(const struct google_protobuf_MessageOptions* msg) {
+ return _upb_Message_Getext(msg, &validate_ignored_ext) != NULL;
+}
+UPB_INLINE void validate_clear_ignored(struct google_protobuf_MessageOptions* msg) {
+ _upb_Message_Clearext(msg, &validate_ignored_ext);
+}
+UPB_INLINE bool validate_ignored(const struct google_protobuf_MessageOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &validate_ignored_ext);
+ return ext ? *UPB_PTR_AT(&ext->data, 0, bool) : false;
+}
+UPB_INLINE bool validate_has_required(const struct google_protobuf_OneofOptions* msg) {
+ return _upb_Message_Getext(msg, &validate_required_ext) != NULL;
+}
+UPB_INLINE void validate_clear_required(struct google_protobuf_OneofOptions* msg) {
+ _upb_Message_Clearext(msg, &validate_required_ext);
+}
+UPB_INLINE bool validate_required(const struct google_protobuf_OneofOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &validate_required_ext);
+ return ext ? *UPB_PTR_AT(&ext->data, 0, bool) : false;
+}
+UPB_INLINE bool validate_has_rules(const struct google_protobuf_FieldOptions* msg) {
+ return _upb_Message_Getext(msg, &validate_rules_ext) != NULL;
+}
+UPB_INLINE void validate_clear_rules(struct google_protobuf_FieldOptions* msg) {
+ _upb_Message_Clearext(msg, &validate_rules_ext);
+}
+UPB_INLINE const validate_FieldRules* validate_rules(const struct google_protobuf_FieldOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &validate_rules_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const validate_FieldRules*);
+}
+UPB_INLINE void validate_set_rules(struct google_protobuf_FieldOptions* msg, const validate_FieldRules* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &validate_rules_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const validate_FieldRules*) = ext;
+}
extern const upb_MiniTable_File validate_validate_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c
index 3ae09be8c7..cdc3dcf3c6 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c
@@ -14,34 +14,34 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field xds_annotations_v3_MigrateAnnotation__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_annotations_v3_MigrateAnnotation_msginit = {
NULL,
&xds_annotations_v3_MigrateAnnotation__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field xds_annotations_v3_FieldMigrateAnnotation__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_annotations_v3_FieldMigrateAnnotation_msginit = {
NULL,
&xds_annotations_v3_FieldMigrateAnnotation__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field xds_annotations_v3_FileMigrateAnnotation__fields[1] = {
- {2, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {2, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_annotations_v3_FileMigrateAnnotation_msginit = {
NULL,
&xds_annotations_v3_FileMigrateAnnotation__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable *messages_layout[3] = {
@@ -59,33 +59,33 @@ extern const upb_MiniTable xds_annotations_v3_FieldMigrateAnnotation_msginit;
extern const upb_MiniTable xds_annotations_v3_FileMigrateAnnotation_msginit;
extern const upb_MiniTable xds_annotations_v3_MigrateAnnotation_msginit;
const upb_MiniTable_Extension xds_annotations_v3_message_migrate_ext = {
- {112948430, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_MessageOptions_msginit,
- {.submsg = &xds_annotations_v3_MigrateAnnotation_msginit},
+ {112948430, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_MessageOptions_msginit,
+ {.submsg = &xds_annotations_v3_MigrateAnnotation_msginit},
};
const upb_MiniTable_Extension xds_annotations_v3_field_migrate_ext = {
- {112948430, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_FieldOptions_msginit,
- {.submsg = &xds_annotations_v3_FieldMigrateAnnotation_msginit},
+ {112948430, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_FieldOptions_msginit,
+ {.submsg = &xds_annotations_v3_FieldMigrateAnnotation_msginit},
};
const upb_MiniTable_Extension xds_annotations_v3_enum_migrate_ext = {
- {112948430, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_EnumOptions_msginit,
- {.submsg = &xds_annotations_v3_MigrateAnnotation_msginit},
+ {112948430, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_EnumOptions_msginit,
+ {.submsg = &xds_annotations_v3_MigrateAnnotation_msginit},
};
const upb_MiniTable_Extension xds_annotations_v3_enum_value_migrate_ext = {
- {112948430, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_EnumValueOptions_msginit,
- {.submsg = &xds_annotations_v3_MigrateAnnotation_msginit},
+ {112948430, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_EnumValueOptions_msginit,
+ {.submsg = &xds_annotations_v3_MigrateAnnotation_msginit},
};
const upb_MiniTable_Extension xds_annotations_v3_file_migrate_ext = {
- {112948430, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_FileOptions_msginit,
- {.submsg = &xds_annotations_v3_FileMigrateAnnotation_msginit},
+ {112948430, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_FileOptions_msginit,
+ {.submsg = &xds_annotations_v3_FileMigrateAnnotation_msginit},
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h
index 910aa285db..0ad7b304ad 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h
@@ -72,11 +72,18 @@ UPB_INLINE xds_annotations_v3_MigrateAnnotation* xds_annotations_v3_MigrateAnnot
return ret;
}
UPB_INLINE char* xds_annotations_v3_MigrateAnnotation_serialize(const xds_annotations_v3_MigrateAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_MigrateAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_MigrateAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_annotations_v3_MigrateAnnotation_serialize_ex(const xds_annotations_v3_MigrateAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_MigrateAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_MigrateAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_annotations_v3_MigrateAnnotation_clear_rename(const xds_annotations_v3_MigrateAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView xds_annotations_v3_MigrateAnnotation_rename(const xds_annotations_v3_MigrateAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -111,15 +118,25 @@ UPB_INLINE xds_annotations_v3_FieldMigrateAnnotation* xds_annotations_v3_FieldMi
return ret;
}
UPB_INLINE char* xds_annotations_v3_FieldMigrateAnnotation_serialize(const xds_annotations_v3_FieldMigrateAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_FieldMigrateAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_FieldMigrateAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_annotations_v3_FieldMigrateAnnotation_serialize_ex(const xds_annotations_v3_FieldMigrateAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_FieldMigrateAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_FieldMigrateAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_annotations_v3_FieldMigrateAnnotation_clear_rename(const xds_annotations_v3_FieldMigrateAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView xds_annotations_v3_FieldMigrateAnnotation_rename(const xds_annotations_v3_FieldMigrateAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
}
+UPB_INLINE void xds_annotations_v3_FieldMigrateAnnotation_clear_oneof_promotion(const xds_annotations_v3_FieldMigrateAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView xds_annotations_v3_FieldMigrateAnnotation_oneof_promotion(const xds_annotations_v3_FieldMigrateAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
}
@@ -156,11 +173,18 @@ UPB_INLINE xds_annotations_v3_FileMigrateAnnotation* xds_annotations_v3_FileMigr
return ret;
}
UPB_INLINE char* xds_annotations_v3_FileMigrateAnnotation_serialize(const xds_annotations_v3_FileMigrateAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_FileMigrateAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_FileMigrateAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_annotations_v3_FileMigrateAnnotation_serialize_ex(const xds_annotations_v3_FileMigrateAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_FileMigrateAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_FileMigrateAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_annotations_v3_FileMigrateAnnotation_clear_move_to_package(const xds_annotations_v3_FileMigrateAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView xds_annotations_v3_FileMigrateAnnotation_move_to_package(const xds_annotations_v3_FileMigrateAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -170,16 +194,91 @@ UPB_INLINE void xds_annotations_v3_FileMigrateAnnotation_set_move_to_package(xds
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
-UPB_INLINE bool xds_annotations_v3_has_message_migrate(const struct google_protobuf_MessageOptions *msg) { return _upb_Message_Getext(msg, &xds_annotations_v3_message_migrate_ext) != NULL; }
-UPB_INLINE const xds_annotations_v3_MigrateAnnotation* xds_annotations_v3_message_migrate(const struct google_protobuf_MessageOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &xds_annotations_v3_message_migrate_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_MigrateAnnotation*); }
-UPB_INLINE bool xds_annotations_v3_has_field_migrate(const struct google_protobuf_FieldOptions *msg) { return _upb_Message_Getext(msg, &xds_annotations_v3_field_migrate_ext) != NULL; }
-UPB_INLINE const xds_annotations_v3_FieldMigrateAnnotation* xds_annotations_v3_field_migrate(const struct google_protobuf_FieldOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &xds_annotations_v3_field_migrate_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_FieldMigrateAnnotation*); }
-UPB_INLINE bool xds_annotations_v3_has_enum_migrate(const struct google_protobuf_EnumOptions *msg) { return _upb_Message_Getext(msg, &xds_annotations_v3_enum_migrate_ext) != NULL; }
-UPB_INLINE const xds_annotations_v3_MigrateAnnotation* xds_annotations_v3_enum_migrate(const struct google_protobuf_EnumOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &xds_annotations_v3_enum_migrate_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_MigrateAnnotation*); }
-UPB_INLINE bool xds_annotations_v3_has_enum_value_migrate(const struct google_protobuf_EnumValueOptions *msg) { return _upb_Message_Getext(msg, &xds_annotations_v3_enum_value_migrate_ext) != NULL; }
-UPB_INLINE const xds_annotations_v3_MigrateAnnotation* xds_annotations_v3_enum_value_migrate(const struct google_protobuf_EnumValueOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &xds_annotations_v3_enum_value_migrate_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_MigrateAnnotation*); }
-UPB_INLINE bool xds_annotations_v3_has_file_migrate(const struct google_protobuf_FileOptions *msg) { return _upb_Message_Getext(msg, &xds_annotations_v3_file_migrate_ext) != NULL; }
-UPB_INLINE const xds_annotations_v3_FileMigrateAnnotation* xds_annotations_v3_file_migrate(const struct google_protobuf_FileOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &xds_annotations_v3_file_migrate_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_FileMigrateAnnotation*); }
+UPB_INLINE bool xds_annotations_v3_has_message_migrate(const struct google_protobuf_MessageOptions* msg) {
+ return _upb_Message_Getext(msg, &xds_annotations_v3_message_migrate_ext) != NULL;
+}
+UPB_INLINE void xds_annotations_v3_clear_message_migrate(struct google_protobuf_MessageOptions* msg) {
+ _upb_Message_Clearext(msg, &xds_annotations_v3_message_migrate_ext);
+}
+UPB_INLINE const xds_annotations_v3_MigrateAnnotation* xds_annotations_v3_message_migrate(const struct google_protobuf_MessageOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &xds_annotations_v3_message_migrate_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_MigrateAnnotation*);
+}
+UPB_INLINE void xds_annotations_v3_set_message_migrate(struct google_protobuf_MessageOptions* msg, const xds_annotations_v3_MigrateAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &xds_annotations_v3_message_migrate_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const xds_annotations_v3_MigrateAnnotation*) = ext;
+}
+UPB_INLINE bool xds_annotations_v3_has_field_migrate(const struct google_protobuf_FieldOptions* msg) {
+ return _upb_Message_Getext(msg, &xds_annotations_v3_field_migrate_ext) != NULL;
+}
+UPB_INLINE void xds_annotations_v3_clear_field_migrate(struct google_protobuf_FieldOptions* msg) {
+ _upb_Message_Clearext(msg, &xds_annotations_v3_field_migrate_ext);
+}
+UPB_INLINE const xds_annotations_v3_FieldMigrateAnnotation* xds_annotations_v3_field_migrate(const struct google_protobuf_FieldOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &xds_annotations_v3_field_migrate_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_FieldMigrateAnnotation*);
+}
+UPB_INLINE void xds_annotations_v3_set_field_migrate(struct google_protobuf_FieldOptions* msg, const xds_annotations_v3_FieldMigrateAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &xds_annotations_v3_field_migrate_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const xds_annotations_v3_FieldMigrateAnnotation*) = ext;
+}
+UPB_INLINE bool xds_annotations_v3_has_enum_migrate(const struct google_protobuf_EnumOptions* msg) {
+ return _upb_Message_Getext(msg, &xds_annotations_v3_enum_migrate_ext) != NULL;
+}
+UPB_INLINE void xds_annotations_v3_clear_enum_migrate(struct google_protobuf_EnumOptions* msg) {
+ _upb_Message_Clearext(msg, &xds_annotations_v3_enum_migrate_ext);
+}
+UPB_INLINE const xds_annotations_v3_MigrateAnnotation* xds_annotations_v3_enum_migrate(const struct google_protobuf_EnumOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &xds_annotations_v3_enum_migrate_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_MigrateAnnotation*);
+}
+UPB_INLINE void xds_annotations_v3_set_enum_migrate(struct google_protobuf_EnumOptions* msg, const xds_annotations_v3_MigrateAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &xds_annotations_v3_enum_migrate_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const xds_annotations_v3_MigrateAnnotation*) = ext;
+}
+UPB_INLINE bool xds_annotations_v3_has_enum_value_migrate(const struct google_protobuf_EnumValueOptions* msg) {
+ return _upb_Message_Getext(msg, &xds_annotations_v3_enum_value_migrate_ext) != NULL;
+}
+UPB_INLINE void xds_annotations_v3_clear_enum_value_migrate(struct google_protobuf_EnumValueOptions* msg) {
+ _upb_Message_Clearext(msg, &xds_annotations_v3_enum_value_migrate_ext);
+}
+UPB_INLINE const xds_annotations_v3_MigrateAnnotation* xds_annotations_v3_enum_value_migrate(const struct google_protobuf_EnumValueOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &xds_annotations_v3_enum_value_migrate_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_MigrateAnnotation*);
+}
+UPB_INLINE void xds_annotations_v3_set_enum_value_migrate(struct google_protobuf_EnumValueOptions* msg, const xds_annotations_v3_MigrateAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &xds_annotations_v3_enum_value_migrate_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const xds_annotations_v3_MigrateAnnotation*) = ext;
+}
+UPB_INLINE bool xds_annotations_v3_has_file_migrate(const struct google_protobuf_FileOptions* msg) {
+ return _upb_Message_Getext(msg, &xds_annotations_v3_file_migrate_ext) != NULL;
+}
+UPB_INLINE void xds_annotations_v3_clear_file_migrate(struct google_protobuf_FileOptions* msg) {
+ _upb_Message_Clearext(msg, &xds_annotations_v3_file_migrate_ext);
+}
+UPB_INLINE const xds_annotations_v3_FileMigrateAnnotation* xds_annotations_v3_file_migrate(const struct google_protobuf_FileOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &xds_annotations_v3_file_migrate_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_FileMigrateAnnotation*);
+}
+UPB_INLINE void xds_annotations_v3_set_file_migrate(struct google_protobuf_FileOptions* msg, const xds_annotations_v3_FileMigrateAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &xds_annotations_v3_file_migrate_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const xds_annotations_v3_FileMigrateAnnotation*) = ext;
+}
extern const upb_MiniTable_File xds_annotations_v3_migrate_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c
index c46c9bf183..3ffb371b3d 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c
@@ -15,14 +15,14 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field xds_annotations_v3_FieldSecurityAnnotation__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(1, 1), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(1, 1), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_annotations_v3_FieldSecurityAnnotation_msginit = {
NULL,
&xds_annotations_v3_FieldSecurityAnnotation__fields[0],
- UPB_SIZE(8, 8), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 8), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
@@ -32,9 +32,9 @@ static const upb_MiniTable *messages_layout[1] = {
extern const upb_MiniTable google_protobuf_FieldOptions_msginit;
extern const upb_MiniTable xds_annotations_v3_FieldSecurityAnnotation_msginit;
const upb_MiniTable_Extension xds_annotations_v3_security_ext = {
- {99044135, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_FieldOptions_msginit,
- {.submsg = &xds_annotations_v3_FieldSecurityAnnotation_msginit},
+ {99044135, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_FieldOptions_msginit,
+ {.submsg = &xds_annotations_v3_FieldSecurityAnnotation_msginit},
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h
index 48e9f3d644..80046ff5cc 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h
@@ -54,15 +54,25 @@ UPB_INLINE xds_annotations_v3_FieldSecurityAnnotation* xds_annotations_v3_FieldS
return ret;
}
UPB_INLINE char* xds_annotations_v3_FieldSecurityAnnotation_serialize(const xds_annotations_v3_FieldSecurityAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_FieldSecurityAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_FieldSecurityAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_annotations_v3_FieldSecurityAnnotation_serialize_ex(const xds_annotations_v3_FieldSecurityAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_FieldSecurityAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_FieldSecurityAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_annotations_v3_FieldSecurityAnnotation_clear_configure_for_untrusted_downstream(const xds_annotations_v3_FieldSecurityAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool xds_annotations_v3_FieldSecurityAnnotation_configure_for_untrusted_downstream(const xds_annotations_v3_FieldSecurityAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
+UPB_INLINE void xds_annotations_v3_FieldSecurityAnnotation_clear_configure_for_untrusted_upstream(const xds_annotations_v3_FieldSecurityAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = 0;
+}
UPB_INLINE bool xds_annotations_v3_FieldSecurityAnnotation_configure_for_untrusted_upstream(const xds_annotations_v3_FieldSecurityAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool);
}
@@ -74,8 +84,23 @@ UPB_INLINE void xds_annotations_v3_FieldSecurityAnnotation_set_configure_for_unt
*UPB_PTR_AT(msg, UPB_SIZE(1, 1), bool) = value;
}
-UPB_INLINE bool xds_annotations_v3_has_security(const struct google_protobuf_FieldOptions *msg) { return _upb_Message_Getext(msg, &xds_annotations_v3_security_ext) != NULL; }
-UPB_INLINE const xds_annotations_v3_FieldSecurityAnnotation* xds_annotations_v3_security(const struct google_protobuf_FieldOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &xds_annotations_v3_security_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_FieldSecurityAnnotation*); }
+UPB_INLINE bool xds_annotations_v3_has_security(const struct google_protobuf_FieldOptions* msg) {
+ return _upb_Message_Getext(msg, &xds_annotations_v3_security_ext) != NULL;
+}
+UPB_INLINE void xds_annotations_v3_clear_security(struct google_protobuf_FieldOptions* msg) {
+ _upb_Message_Clearext(msg, &xds_annotations_v3_security_ext);
+}
+UPB_INLINE const xds_annotations_v3_FieldSecurityAnnotation* xds_annotations_v3_security(const struct google_protobuf_FieldOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &xds_annotations_v3_security_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_FieldSecurityAnnotation*);
+}
+UPB_INLINE void xds_annotations_v3_set_security(struct google_protobuf_FieldOptions* msg, const xds_annotations_v3_FieldSecurityAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &xds_annotations_v3_security_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const xds_annotations_v3_FieldSecurityAnnotation*) = ext;
+}
extern const upb_MiniTable_File xds_annotations_v3_security_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c
index e47fc4651d..792bbd4fbf 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c
@@ -15,9 +15,9 @@
extern const upb_MiniTable google_protobuf_FieldOptions_msginit;
const upb_MiniTable_Extension xds_annotations_v3_sensitive_ext = {
- {61008053, 0, 0, 0, 8, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- &google_protobuf_FieldOptions_msginit,
- {.submsg = NULL},
+ {61008053, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ &google_protobuf_FieldOptions_msginit,
+ {.submsg = NULL},
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h
index fcfd51d368..696ee5eb89 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h
@@ -25,8 +25,16 @@ struct google_protobuf_FieldOptions;
extern const upb_MiniTable google_protobuf_FieldOptions_msginit;
-UPB_INLINE bool xds_annotations_v3_has_sensitive(const struct google_protobuf_FieldOptions *msg) { return _upb_Message_Getext(msg, &xds_annotations_v3_sensitive_ext) != NULL; }
-UPB_INLINE bool xds_annotations_v3_sensitive(const struct google_protobuf_FieldOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &xds_annotations_v3_sensitive_ext); return ext ? *UPB_PTR_AT(&ext->data, 0, bool) : false; }
+UPB_INLINE bool xds_annotations_v3_has_sensitive(const struct google_protobuf_FieldOptions* msg) {
+ return _upb_Message_Getext(msg, &xds_annotations_v3_sensitive_ext) != NULL;
+}
+UPB_INLINE void xds_annotations_v3_clear_sensitive(struct google_protobuf_FieldOptions* msg) {
+ _upb_Message_Clearext(msg, &xds_annotations_v3_sensitive_ext);
+}
+UPB_INLINE bool xds_annotations_v3_sensitive(const struct google_protobuf_FieldOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &xds_annotations_v3_sensitive_ext);
+ return ext ? *UPB_PTR_AT(&ext->data, 0, bool) : false;
+}
extern const upb_MiniTable_File xds_annotations_v3_sensitive_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c
index b8cbe480ad..fea67a994c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c
@@ -14,44 +14,44 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field xds_annotations_v3_FileStatusAnnotation__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_annotations_v3_FileStatusAnnotation_msginit = {
NULL,
&xds_annotations_v3_FileStatusAnnotation__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field xds_annotations_v3_MessageStatusAnnotation__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_annotations_v3_MessageStatusAnnotation_msginit = {
NULL,
&xds_annotations_v3_MessageStatusAnnotation__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field xds_annotations_v3_FieldStatusAnnotation__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_annotations_v3_FieldStatusAnnotation_msginit = {
NULL,
&xds_annotations_v3_FieldStatusAnnotation__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field xds_annotations_v3_StatusAnnotation__fields[2] = {
- {1, UPB_SIZE(4, 4), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_annotations_v3_StatusAnnotation_msginit = {
NULL,
&xds_annotations_v3_StatusAnnotation__fields[0],
- UPB_SIZE(8, 8), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 8), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[4] = {
@@ -68,21 +68,21 @@ extern const upb_MiniTable xds_annotations_v3_FieldStatusAnnotation_msginit;
extern const upb_MiniTable xds_annotations_v3_FileStatusAnnotation_msginit;
extern const upb_MiniTable xds_annotations_v3_MessageStatusAnnotation_msginit;
const upb_MiniTable_Extension xds_annotations_v3_file_status_ext = {
- {226829418, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_FileOptions_msginit,
- {.submsg = &xds_annotations_v3_FileStatusAnnotation_msginit},
+ {226829418, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_FileOptions_msginit,
+ {.submsg = &xds_annotations_v3_FileStatusAnnotation_msginit},
};
const upb_MiniTable_Extension xds_annotations_v3_message_status_ext = {
- {226829418, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_MessageOptions_msginit,
- {.submsg = &xds_annotations_v3_MessageStatusAnnotation_msginit},
+ {226829418, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_MessageOptions_msginit,
+ {.submsg = &xds_annotations_v3_MessageStatusAnnotation_msginit},
};
const upb_MiniTable_Extension xds_annotations_v3_field_status_ext = {
- {226829418, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_FieldOptions_msginit,
- {.submsg = &xds_annotations_v3_FieldStatusAnnotation_msginit},
+ {226829418, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_FieldOptions_msginit,
+ {.submsg = &xds_annotations_v3_FieldStatusAnnotation_msginit},
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h
index 2e80bc719a..42d2584e93 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h
@@ -76,11 +76,18 @@ UPB_INLINE xds_annotations_v3_FileStatusAnnotation* xds_annotations_v3_FileStatu
return ret;
}
UPB_INLINE char* xds_annotations_v3_FileStatusAnnotation_serialize(const xds_annotations_v3_FileStatusAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_FileStatusAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_FileStatusAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_annotations_v3_FileStatusAnnotation_serialize_ex(const xds_annotations_v3_FileStatusAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_FileStatusAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_FileStatusAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_annotations_v3_FileStatusAnnotation_clear_work_in_progress(const xds_annotations_v3_FileStatusAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool xds_annotations_v3_FileStatusAnnotation_work_in_progress(const xds_annotations_v3_FileStatusAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
@@ -115,11 +122,18 @@ UPB_INLINE xds_annotations_v3_MessageStatusAnnotation* xds_annotations_v3_Messag
return ret;
}
UPB_INLINE char* xds_annotations_v3_MessageStatusAnnotation_serialize(const xds_annotations_v3_MessageStatusAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_MessageStatusAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_MessageStatusAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_annotations_v3_MessageStatusAnnotation_serialize_ex(const xds_annotations_v3_MessageStatusAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_MessageStatusAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_MessageStatusAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_annotations_v3_MessageStatusAnnotation_clear_work_in_progress(const xds_annotations_v3_MessageStatusAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool xds_annotations_v3_MessageStatusAnnotation_work_in_progress(const xds_annotations_v3_MessageStatusAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
@@ -154,11 +168,18 @@ UPB_INLINE xds_annotations_v3_FieldStatusAnnotation* xds_annotations_v3_FieldSta
return ret;
}
UPB_INLINE char* xds_annotations_v3_FieldStatusAnnotation_serialize(const xds_annotations_v3_FieldStatusAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_FieldStatusAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_FieldStatusAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_annotations_v3_FieldStatusAnnotation_serialize_ex(const xds_annotations_v3_FieldStatusAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_FieldStatusAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_FieldStatusAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_annotations_v3_FieldStatusAnnotation_clear_work_in_progress(const xds_annotations_v3_FieldStatusAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool xds_annotations_v3_FieldStatusAnnotation_work_in_progress(const xds_annotations_v3_FieldStatusAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
@@ -193,32 +214,87 @@ UPB_INLINE xds_annotations_v3_StatusAnnotation* xds_annotations_v3_StatusAnnotat
return ret;
}
UPB_INLINE char* xds_annotations_v3_StatusAnnotation_serialize(const xds_annotations_v3_StatusAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_StatusAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_StatusAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_annotations_v3_StatusAnnotation_serialize_ex(const xds_annotations_v3_StatusAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_StatusAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_StatusAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_annotations_v3_StatusAnnotation_clear_work_in_progress(const xds_annotations_v3_StatusAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
}
UPB_INLINE bool xds_annotations_v3_StatusAnnotation_work_in_progress(const xds_annotations_v3_StatusAnnotation* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool);
+ return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
+}
+UPB_INLINE void xds_annotations_v3_StatusAnnotation_clear_package_version_status(const xds_annotations_v3_StatusAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = 0;
}
UPB_INLINE int32_t xds_annotations_v3_StatusAnnotation_package_version_status(const xds_annotations_v3_StatusAnnotation* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
}
UPB_INLINE void xds_annotations_v3_StatusAnnotation_set_work_in_progress(xds_annotations_v3_StatusAnnotation *msg, bool value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 4), bool) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = value;
}
UPB_INLINE void xds_annotations_v3_StatusAnnotation_set_package_version_status(xds_annotations_v3_StatusAnnotation *msg, int32_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t) = value;
}
-UPB_INLINE bool xds_annotations_v3_has_file_status(const struct google_protobuf_FileOptions *msg) { return _upb_Message_Getext(msg, &xds_annotations_v3_file_status_ext) != NULL; }
-UPB_INLINE const xds_annotations_v3_FileStatusAnnotation* xds_annotations_v3_file_status(const struct google_protobuf_FileOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &xds_annotations_v3_file_status_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_FileStatusAnnotation*); }
-UPB_INLINE bool xds_annotations_v3_has_message_status(const struct google_protobuf_MessageOptions *msg) { return _upb_Message_Getext(msg, &xds_annotations_v3_message_status_ext) != NULL; }
-UPB_INLINE const xds_annotations_v3_MessageStatusAnnotation* xds_annotations_v3_message_status(const struct google_protobuf_MessageOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &xds_annotations_v3_message_status_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_MessageStatusAnnotation*); }
-UPB_INLINE bool xds_annotations_v3_has_field_status(const struct google_protobuf_FieldOptions *msg) { return _upb_Message_Getext(msg, &xds_annotations_v3_field_status_ext) != NULL; }
-UPB_INLINE const xds_annotations_v3_FieldStatusAnnotation* xds_annotations_v3_field_status(const struct google_protobuf_FieldOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &xds_annotations_v3_field_status_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_FieldStatusAnnotation*); }
+UPB_INLINE bool xds_annotations_v3_has_file_status(const struct google_protobuf_FileOptions* msg) {
+ return _upb_Message_Getext(msg, &xds_annotations_v3_file_status_ext) != NULL;
+}
+UPB_INLINE void xds_annotations_v3_clear_file_status(struct google_protobuf_FileOptions* msg) {
+ _upb_Message_Clearext(msg, &xds_annotations_v3_file_status_ext);
+}
+UPB_INLINE const xds_annotations_v3_FileStatusAnnotation* xds_annotations_v3_file_status(const struct google_protobuf_FileOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &xds_annotations_v3_file_status_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_FileStatusAnnotation*);
+}
+UPB_INLINE void xds_annotations_v3_set_file_status(struct google_protobuf_FileOptions* msg, const xds_annotations_v3_FileStatusAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &xds_annotations_v3_file_status_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const xds_annotations_v3_FileStatusAnnotation*) = ext;
+}
+UPB_INLINE bool xds_annotations_v3_has_message_status(const struct google_protobuf_MessageOptions* msg) {
+ return _upb_Message_Getext(msg, &xds_annotations_v3_message_status_ext) != NULL;
+}
+UPB_INLINE void xds_annotations_v3_clear_message_status(struct google_protobuf_MessageOptions* msg) {
+ _upb_Message_Clearext(msg, &xds_annotations_v3_message_status_ext);
+}
+UPB_INLINE const xds_annotations_v3_MessageStatusAnnotation* xds_annotations_v3_message_status(const struct google_protobuf_MessageOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &xds_annotations_v3_message_status_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_MessageStatusAnnotation*);
+}
+UPB_INLINE void xds_annotations_v3_set_message_status(struct google_protobuf_MessageOptions* msg, const xds_annotations_v3_MessageStatusAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &xds_annotations_v3_message_status_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const xds_annotations_v3_MessageStatusAnnotation*) = ext;
+}
+UPB_INLINE bool xds_annotations_v3_has_field_status(const struct google_protobuf_FieldOptions* msg) {
+ return _upb_Message_Getext(msg, &xds_annotations_v3_field_status_ext) != NULL;
+}
+UPB_INLINE void xds_annotations_v3_clear_field_status(struct google_protobuf_FieldOptions* msg) {
+ _upb_Message_Clearext(msg, &xds_annotations_v3_field_status_ext);
+}
+UPB_INLINE const xds_annotations_v3_FieldStatusAnnotation* xds_annotations_v3_field_status(const struct google_protobuf_FieldOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &xds_annotations_v3_field_status_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_FieldStatusAnnotation*);
+}
+UPB_INLINE void xds_annotations_v3_set_field_status(struct google_protobuf_FieldOptions* msg, const xds_annotations_v3_FieldStatusAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &xds_annotations_v3_field_status_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const xds_annotations_v3_FieldStatusAnnotation*) = ext;
+}
extern const upb_MiniTable_File xds_annotations_v3_status_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c
index 2164ded99c..d347b400a3 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c
@@ -14,13 +14,13 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field xds_annotations_v3_VersioningAnnotation__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_annotations_v3_VersioningAnnotation_msginit = {
NULL,
&xds_annotations_v3_VersioningAnnotation__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
@@ -30,9 +30,9 @@ static const upb_MiniTable *messages_layout[1] = {
extern const upb_MiniTable google_protobuf_MessageOptions_msginit;
extern const upb_MiniTable xds_annotations_v3_VersioningAnnotation_msginit;
const upb_MiniTable_Extension xds_annotations_v3_versioning_ext = {
- {92389011, 0, 0, 0, 11, kUpb_FieldMode_Scalar | upb_LabelFlags_IsExtension | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- &google_protobuf_MessageOptions_msginit,
- {.submsg = &xds_annotations_v3_VersioningAnnotation_msginit},
+ {92389011, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | kUpb_LabelFlags_IsExtension | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ &google_protobuf_MessageOptions_msginit,
+ {.submsg = &xds_annotations_v3_VersioningAnnotation_msginit},
};
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h
index afd4a5b8ec..b8d1c25b51 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h
@@ -54,11 +54,18 @@ UPB_INLINE xds_annotations_v3_VersioningAnnotation* xds_annotations_v3_Versionin
return ret;
}
UPB_INLINE char* xds_annotations_v3_VersioningAnnotation_serialize(const xds_annotations_v3_VersioningAnnotation* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_VersioningAnnotation_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_VersioningAnnotation_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_annotations_v3_VersioningAnnotation_serialize_ex(const xds_annotations_v3_VersioningAnnotation* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_annotations_v3_VersioningAnnotation_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_annotations_v3_VersioningAnnotation_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_annotations_v3_VersioningAnnotation_clear_previous_message_type(const xds_annotations_v3_VersioningAnnotation* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView xds_annotations_v3_VersioningAnnotation_previous_message_type(const xds_annotations_v3_VersioningAnnotation* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
@@ -68,8 +75,23 @@ UPB_INLINE void xds_annotations_v3_VersioningAnnotation_set_previous_message_typ
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
}
-UPB_INLINE bool xds_annotations_v3_has_versioning(const struct google_protobuf_MessageOptions *msg) { return _upb_Message_Getext(msg, &xds_annotations_v3_versioning_ext) != NULL; }
-UPB_INLINE const xds_annotations_v3_VersioningAnnotation* xds_annotations_v3_versioning(const struct google_protobuf_MessageOptions *msg) { const upb_Message_Extension *ext = _upb_Message_Getext(msg, &xds_annotations_v3_versioning_ext); UPB_ASSERT(ext); return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_VersioningAnnotation*); }
+UPB_INLINE bool xds_annotations_v3_has_versioning(const struct google_protobuf_MessageOptions* msg) {
+ return _upb_Message_Getext(msg, &xds_annotations_v3_versioning_ext) != NULL;
+}
+UPB_INLINE void xds_annotations_v3_clear_versioning(struct google_protobuf_MessageOptions* msg) {
+ _upb_Message_Clearext(msg, &xds_annotations_v3_versioning_ext);
+}
+UPB_INLINE const xds_annotations_v3_VersioningAnnotation* xds_annotations_v3_versioning(const struct google_protobuf_MessageOptions* msg) {
+ const upb_Message_Extension* ext = _upb_Message_Getext(msg, &xds_annotations_v3_versioning_ext);
+ UPB_ASSERT(ext);
+ return *UPB_PTR_AT(&ext->data, 0, const xds_annotations_v3_VersioningAnnotation*);
+}
+UPB_INLINE void xds_annotations_v3_set_versioning(struct google_protobuf_MessageOptions* msg, const xds_annotations_v3_VersioningAnnotation* ext, upb_Arena* arena) {
+ const upb_Message_Extension* msg_ext =
+ _upb_Message_GetOrCreateExtension(msg, &xds_annotations_v3_versioning_ext, arena);
+ UPB_ASSERT(msg_ext);
+ *UPB_PTR_AT(&msg_ext->data, 0, const xds_annotations_v3_VersioningAnnotation*) = ext;
+}
extern const upb_MiniTable_File xds_annotations_v3_versioning_proto_upb_file_layout;
#ifdef __cplusplus
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/authority.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/authority.upb.c
index 71a0e3d715..9b028c0b67 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/authority.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/authority.upb.c
@@ -15,13 +15,13 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Field xds_core_v3_Authority__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_core_v3_Authority_msginit = {
NULL,
&xds_core_v3_Authority__fields[0],
- UPB_SIZE(8, 16), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 16), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/authority.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/authority.upb.h
index 91823f24ce..fb13422e2e 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/authority.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/authority.upb.h
@@ -51,11 +51,18 @@ UPB_INLINE xds_core_v3_Authority* xds_core_v3_Authority_parse_ex(const char* buf
return ret;
}
UPB_INLINE char* xds_core_v3_Authority_serialize(const xds_core_v3_Authority* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_Authority_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_Authority_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_core_v3_Authority_serialize_ex(const xds_core_v3_Authority* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_Authority_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_Authority_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_core_v3_Authority_clear_name(const xds_core_v3_Authority* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView xds_core_v3_Authority_name(const xds_core_v3_Authority* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c
index 2aefffdaaf..8d7f42ff34 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c
@@ -17,19 +17,19 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub xds_core_v3_CollectionEntry_submsgs[2] = {
- {.submsg = &xds_core_v3_CollectionEntry_InlineEntry_msginit},
{.submsg = &xds_core_v3_ResourceLocator_msginit},
+ {.submsg = &xds_core_v3_CollectionEntry_InlineEntry_msginit},
};
static const upb_MiniTable_Field xds_core_v3_CollectionEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_core_v3_CollectionEntry_msginit = {
&xds_core_v3_CollectionEntry_submsgs[0],
&xds_core_v3_CollectionEntry__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub xds_core_v3_CollectionEntry_InlineEntry_submsgs[1] = {
@@ -37,15 +37,15 @@ static const upb_MiniTable_Sub xds_core_v3_CollectionEntry_InlineEntry_submsgs[1
};
static const upb_MiniTable_Field xds_core_v3_CollectionEntry_InlineEntry__fields[3] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 40), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 40), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_core_v3_CollectionEntry_InlineEntry_msginit = {
&xds_core_v3_CollectionEntry_InlineEntry_submsgs[0],
&xds_core_v3_CollectionEntry_InlineEntry__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 48), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h
index 899e326dc4..11826a18ec 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h
@@ -58,28 +58,47 @@ UPB_INLINE xds_core_v3_CollectionEntry* xds_core_v3_CollectionEntry_parse_ex(con
return ret;
}
UPB_INLINE char* xds_core_v3_CollectionEntry_serialize(const xds_core_v3_CollectionEntry* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_CollectionEntry_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_CollectionEntry_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_core_v3_CollectionEntry_serialize_ex(const xds_core_v3_CollectionEntry* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_CollectionEntry_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_CollectionEntry_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
xds_core_v3_CollectionEntry_resource_specifier_locator = 1,
xds_core_v3_CollectionEntry_resource_specifier_inline_entry = 2,
xds_core_v3_CollectionEntry_resource_specifier_NOT_SET = 0
} xds_core_v3_CollectionEntry_resource_specifier_oneofcases;
-UPB_INLINE xds_core_v3_CollectionEntry_resource_specifier_oneofcases xds_core_v3_CollectionEntry_resource_specifier_case(const xds_core_v3_CollectionEntry* msg) { return (xds_core_v3_CollectionEntry_resource_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool xds_core_v3_CollectionEntry_has_locator(const xds_core_v3_CollectionEntry *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const struct xds_core_v3_ResourceLocator* xds_core_v3_CollectionEntry_locator(const xds_core_v3_CollectionEntry *msg) { return UPB_READ_ONEOF(msg, const struct xds_core_v3_ResourceLocator*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool xds_core_v3_CollectionEntry_has_inline_entry(const xds_core_v3_CollectionEntry *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const xds_core_v3_CollectionEntry_InlineEntry* xds_core_v3_CollectionEntry_inline_entry(const xds_core_v3_CollectionEntry *msg) { return UPB_READ_ONEOF(msg, const xds_core_v3_CollectionEntry_InlineEntry*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
+UPB_INLINE xds_core_v3_CollectionEntry_resource_specifier_oneofcases xds_core_v3_CollectionEntry_resource_specifier_case(const xds_core_v3_CollectionEntry* msg) {
+ return (xds_core_v3_CollectionEntry_resource_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool xds_core_v3_CollectionEntry_has_locator(const xds_core_v3_CollectionEntry* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void xds_core_v3_CollectionEntry_clear_locator(const xds_core_v3_CollectionEntry* msg) {
+ UPB_WRITE_ONEOF(msg, struct xds_core_v3_ResourceLocator*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), xds_core_v3_CollectionEntry_resource_specifier_NOT_SET);
+}
+UPB_INLINE const struct xds_core_v3_ResourceLocator* xds_core_v3_CollectionEntry_locator(const xds_core_v3_CollectionEntry* msg) {
+ return UPB_READ_ONEOF(msg, const struct xds_core_v3_ResourceLocator*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool xds_core_v3_CollectionEntry_has_inline_entry(const xds_core_v3_CollectionEntry* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void xds_core_v3_CollectionEntry_clear_inline_entry(const xds_core_v3_CollectionEntry* msg) {
+ UPB_WRITE_ONEOF(msg, xds_core_v3_CollectionEntry_InlineEntry*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), xds_core_v3_CollectionEntry_resource_specifier_NOT_SET);
+}
+UPB_INLINE const xds_core_v3_CollectionEntry_InlineEntry* xds_core_v3_CollectionEntry_inline_entry(const xds_core_v3_CollectionEntry* msg) {
+ return UPB_READ_ONEOF(msg, const xds_core_v3_CollectionEntry_InlineEntry*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
UPB_INLINE void xds_core_v3_CollectionEntry_set_locator(xds_core_v3_CollectionEntry *msg, struct xds_core_v3_ResourceLocator* value) {
- UPB_WRITE_ONEOF(msg, struct xds_core_v3_ResourceLocator*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, struct xds_core_v3_ResourceLocator*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct xds_core_v3_ResourceLocator* xds_core_v3_CollectionEntry_mutable_locator(xds_core_v3_CollectionEntry *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_ResourceLocator* xds_core_v3_CollectionEntry_mutable_locator(xds_core_v3_CollectionEntry* msg, upb_Arena* arena) {
struct xds_core_v3_ResourceLocator* sub = (struct xds_core_v3_ResourceLocator*)xds_core_v3_CollectionEntry_locator(msg);
if (sub == NULL) {
sub = (struct xds_core_v3_ResourceLocator*)_upb_Message_New(&xds_core_v3_ResourceLocator_msginit, arena);
@@ -89,9 +108,9 @@ UPB_INLINE struct xds_core_v3_ResourceLocator* xds_core_v3_CollectionEntry_mutab
return sub;
}
UPB_INLINE void xds_core_v3_CollectionEntry_set_inline_entry(xds_core_v3_CollectionEntry *msg, xds_core_v3_CollectionEntry_InlineEntry* value) {
- UPB_WRITE_ONEOF(msg, xds_core_v3_CollectionEntry_InlineEntry*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, xds_core_v3_CollectionEntry_InlineEntry*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct xds_core_v3_CollectionEntry_InlineEntry* xds_core_v3_CollectionEntry_mutable_inline_entry(xds_core_v3_CollectionEntry *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_CollectionEntry_InlineEntry* xds_core_v3_CollectionEntry_mutable_inline_entry(xds_core_v3_CollectionEntry* msg, upb_Arena* arena) {
struct xds_core_v3_CollectionEntry_InlineEntry* sub = (struct xds_core_v3_CollectionEntry_InlineEntry*)xds_core_v3_CollectionEntry_inline_entry(msg);
if (sub == NULL) {
sub = (struct xds_core_v3_CollectionEntry_InlineEntry*)_upb_Message_New(&xds_core_v3_CollectionEntry_InlineEntry_msginit, arena);
@@ -126,19 +145,34 @@ UPB_INLINE xds_core_v3_CollectionEntry_InlineEntry* xds_core_v3_CollectionEntry_
return ret;
}
UPB_INLINE char* xds_core_v3_CollectionEntry_InlineEntry_serialize(const xds_core_v3_CollectionEntry_InlineEntry* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_CollectionEntry_InlineEntry_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_CollectionEntry_InlineEntry_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_core_v3_CollectionEntry_InlineEntry_serialize_ex(const xds_core_v3_CollectionEntry_InlineEntry* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_CollectionEntry_InlineEntry_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_CollectionEntry_InlineEntry_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_core_v3_CollectionEntry_InlineEntry_clear_name(const xds_core_v3_CollectionEntry_InlineEntry* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView xds_core_v3_CollectionEntry_InlineEntry_name(const xds_core_v3_CollectionEntry_InlineEntry* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
+UPB_INLINE void xds_core_v3_CollectionEntry_InlineEntry_clear_version(const xds_core_v3_CollectionEntry_InlineEntry* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView xds_core_v3_CollectionEntry_InlineEntry_version(const xds_core_v3_CollectionEntry_InlineEntry* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
-UPB_INLINE bool xds_core_v3_CollectionEntry_InlineEntry_has_resource(const xds_core_v3_CollectionEntry_InlineEntry *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool xds_core_v3_CollectionEntry_InlineEntry_has_resource(const xds_core_v3_CollectionEntry_InlineEntry* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void xds_core_v3_CollectionEntry_InlineEntry_clear_resource(const xds_core_v3_CollectionEntry_InlineEntry* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Any* xds_core_v3_CollectionEntry_InlineEntry_resource(const xds_core_v3_CollectionEntry_InlineEntry* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), const struct google_protobuf_Any*);
}
@@ -153,7 +187,7 @@ UPB_INLINE void xds_core_v3_CollectionEntry_InlineEntry_set_resource(xds_core_v3
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(20, 40), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* xds_core_v3_CollectionEntry_InlineEntry_mutable_resource(xds_core_v3_CollectionEntry_InlineEntry *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* xds_core_v3_CollectionEntry_InlineEntry_mutable_resource(xds_core_v3_CollectionEntry_InlineEntry* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)xds_core_v3_CollectionEntry_InlineEntry_resource(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c
index a432522120..495138875d 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c
@@ -18,24 +18,24 @@ static const upb_MiniTable_Sub xds_core_v3_ContextParams_submsgs[1] = {
};
static const upb_MiniTable_Field xds_core_v3_ContextParams__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_core_v3_ContextParams_msginit = {
&xds_core_v3_ContextParams_submsgs[0],
&xds_core_v3_ContextParams__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Field xds_core_v3_ContextParams_ParamsEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_core_v3_ContextParams_ParamsEntry_msginit = {
NULL,
&xds_core_v3_ContextParams_ParamsEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h
index 571159b07f..a83b9b3704 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h
@@ -54,30 +54,51 @@ UPB_INLINE xds_core_v3_ContextParams* xds_core_v3_ContextParams_parse_ex(const c
return ret;
}
UPB_INLINE char* xds_core_v3_ContextParams_serialize(const xds_core_v3_ContextParams* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_ContextParams_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_ContextParams_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_core_v3_ContextParams_serialize_ex(const xds_core_v3_ContextParams* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_ContextParams_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_ContextParams_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool xds_core_v3_ContextParams_has_params(const xds_core_v3_ContextParams* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void xds_core_v3_ContextParams_clear_params(const xds_core_v3_ContextParams* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE size_t xds_core_v3_ContextParams_params_size(const xds_core_v3_ContextParams* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE bool xds_core_v3_ContextParams_params_get(const xds_core_v3_ContextParams* msg, upb_StringView key, upb_StringView* val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(0, 0), &key, 0, val, 0);
+}
+UPB_INLINE const xds_core_v3_ContextParams_ParamsEntry* xds_core_v3_ContextParams_params_next(const xds_core_v3_ContextParams* msg, size_t* iter) {
+ return (const xds_core_v3_ContextParams_ParamsEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter);
}
-UPB_INLINE bool xds_core_v3_ContextParams_has_params(const xds_core_v3_ContextParams *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE size_t xds_core_v3_ContextParams_params_size(const xds_core_v3_ContextParams *msg) {return _upb_msg_map_size(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE bool xds_core_v3_ContextParams_params_get(const xds_core_v3_ContextParams *msg, upb_StringView key, upb_StringView *val) { return _upb_msg_map_get(msg, UPB_SIZE(0, 0), &key, 0, val, 0); }
-UPB_INLINE const xds_core_v3_ContextParams_ParamsEntry* xds_core_v3_ContextParams_params_next(const xds_core_v3_ContextParams *msg, size_t* iter) { return (const xds_core_v3_ContextParams_ParamsEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter); }
-UPB_INLINE void xds_core_v3_ContextParams_params_clear(xds_core_v3_ContextParams *msg) { _upb_msg_map_clear(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE bool xds_core_v3_ContextParams_params_set(xds_core_v3_ContextParams *msg, upb_StringView key, upb_StringView val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(0, 0), &key, 0, &val, 0, a); }
-UPB_INLINE bool xds_core_v3_ContextParams_params_delete(xds_core_v3_ContextParams *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(0, 0), &key, 0); }
-UPB_INLINE xds_core_v3_ContextParams_ParamsEntry* xds_core_v3_ContextParams_params_nextmutable(xds_core_v3_ContextParams *msg, size_t* iter) { return (xds_core_v3_ContextParams_ParamsEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter); }
+UPB_INLINE void xds_core_v3_ContextParams_params_clear(xds_core_v3_ContextParams* msg) { _upb_msg_map_clear(msg, UPB_SIZE(0, 0)); }
+UPB_INLINE bool xds_core_v3_ContextParams_params_set(xds_core_v3_ContextParams* msg, upb_StringView key, upb_StringView val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(0, 0), &key, 0, &val, 0, a);
+}
+UPB_INLINE bool xds_core_v3_ContextParams_params_delete(xds_core_v3_ContextParams* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(0, 0), &key, 0);
+}
+UPB_INLINE xds_core_v3_ContextParams_ParamsEntry* xds_core_v3_ContextParams_params_nextmutable(xds_core_v3_ContextParams* msg, size_t* iter) {
+ return (xds_core_v3_ContextParams_ParamsEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter);
+}
/* xds.core.v3.ContextParams.ParamsEntry */
-UPB_INLINE upb_StringView xds_core_v3_ContextParams_ParamsEntry_key(const xds_core_v3_ContextParams_ParamsEntry *msg) {
+UPB_INLINE upb_StringView xds_core_v3_ContextParams_ParamsEntry_key(const xds_core_v3_ContextParams_ParamsEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE upb_StringView xds_core_v3_ContextParams_ParamsEntry_value(const xds_core_v3_ContextParams_ParamsEntry *msg) {
+UPB_INLINE upb_StringView xds_core_v3_ContextParams_ParamsEntry_value(const xds_core_v3_ContextParams_ParamsEntry* msg) {
upb_StringView ret;
_upb_msg_map_value(msg, &ret, 0);
return ret;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/extension.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/extension.upb.c
index 4ca56944ce..550d2066dd 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/extension.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/extension.upb.c
@@ -19,14 +19,14 @@ static const upb_MiniTable_Sub xds_core_v3_TypedExtensionConfig_submsgs[1] = {
};
static const upb_MiniTable_Field xds_core_v3_TypedExtensionConfig__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_core_v3_TypedExtensionConfig_msginit = {
&xds_core_v3_TypedExtensionConfig_submsgs[0],
&xds_core_v3_TypedExtensionConfig__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/extension.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/extension.upb.h
index 68bb53f758..b7fb888d95 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/extension.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/extension.upb.h
@@ -53,16 +53,28 @@ UPB_INLINE xds_core_v3_TypedExtensionConfig* xds_core_v3_TypedExtensionConfig_pa
return ret;
}
UPB_INLINE char* xds_core_v3_TypedExtensionConfig_serialize(const xds_core_v3_TypedExtensionConfig* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_TypedExtensionConfig_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_TypedExtensionConfig_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_core_v3_TypedExtensionConfig_serialize_ex(const xds_core_v3_TypedExtensionConfig* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_TypedExtensionConfig_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_TypedExtensionConfig_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_core_v3_TypedExtensionConfig_clear_name(const xds_core_v3_TypedExtensionConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView xds_core_v3_TypedExtensionConfig_name(const xds_core_v3_TypedExtensionConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool xds_core_v3_TypedExtensionConfig_has_typed_config(const xds_core_v3_TypedExtensionConfig *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool xds_core_v3_TypedExtensionConfig_has_typed_config(const xds_core_v3_TypedExtensionConfig* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void xds_core_v3_TypedExtensionConfig_clear_typed_config(const xds_core_v3_TypedExtensionConfig* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Any* xds_core_v3_TypedExtensionConfig_typed_config(const xds_core_v3_TypedExtensionConfig* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Any*);
}
@@ -74,7 +86,7 @@ UPB_INLINE void xds_core_v3_TypedExtensionConfig_set_typed_config(xds_core_v3_Ty
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* xds_core_v3_TypedExtensionConfig_mutable_typed_config(xds_core_v3_TypedExtensionConfig *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* xds_core_v3_TypedExtensionConfig_mutable_typed_config(xds_core_v3_TypedExtensionConfig* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)xds_core_v3_TypedExtensionConfig_typed_config(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource.upb.c
index 74a21d31b8..e91f025858 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource.upb.c
@@ -16,20 +16,20 @@
#include "upb/port_def.inc"
static const upb_MiniTable_Sub xds_core_v3_Resource_submsgs[2] = {
- {.submsg = &google_protobuf_Any_msginit},
{.submsg = &xds_core_v3_ResourceName_msginit},
+ {.submsg = &google_protobuf_Any_msginit},
};
static const upb_MiniTable_Field xds_core_v3_Resource__fields[3] = {
- {1, UPB_SIZE(12, 24), 1, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 32), 2, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 32), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_core_v3_Resource_msginit = {
&xds_core_v3_Resource_submsgs[0],
&xds_core_v3_Resource__fields[0],
- UPB_SIZE(24, 48), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(24, 40), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource.upb.h
index 5145a6592e..8dc3fad379 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource.upb.h
@@ -55,29 +55,46 @@ UPB_INLINE xds_core_v3_Resource* xds_core_v3_Resource_parse_ex(const char* buf,
return ret;
}
UPB_INLINE char* xds_core_v3_Resource_serialize(const xds_core_v3_Resource* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_Resource_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_Resource_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_core_v3_Resource_serialize_ex(const xds_core_v3_Resource* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_Resource_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_Resource_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool xds_core_v3_Resource_has_name(const xds_core_v3_Resource* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void xds_core_v3_Resource_clear_name(const xds_core_v3_Resource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool xds_core_v3_Resource_has_name(const xds_core_v3_Resource *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const struct xds_core_v3_ResourceName* xds_core_v3_Resource_name(const xds_core_v3_Resource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct xds_core_v3_ResourceName*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct xds_core_v3_ResourceName*);
+}
+UPB_INLINE void xds_core_v3_Resource_clear_version(const xds_core_v3_Resource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView xds_core_v3_Resource_version(const xds_core_v3_Resource* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView);
+}
+UPB_INLINE bool xds_core_v3_Resource_has_resource(const xds_core_v3_Resource* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void xds_core_v3_Resource_clear_resource(const xds_core_v3_Resource* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const upb_Message*) = NULL;
}
-UPB_INLINE bool xds_core_v3_Resource_has_resource(const xds_core_v3_Resource *msg) { return _upb_hasbit(msg, 2); }
UPB_INLINE const struct google_protobuf_Any* xds_core_v3_Resource_resource(const xds_core_v3_Resource* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(16, 32), const struct google_protobuf_Any*);
}
UPB_INLINE void xds_core_v3_Resource_set_name(xds_core_v3_Resource *msg, struct xds_core_v3_ResourceName* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct xds_core_v3_ResourceName*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct xds_core_v3_ResourceName*) = value;
}
-UPB_INLINE struct xds_core_v3_ResourceName* xds_core_v3_Resource_mutable_name(xds_core_v3_Resource *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_ResourceName* xds_core_v3_Resource_mutable_name(xds_core_v3_Resource* msg, upb_Arena* arena) {
struct xds_core_v3_ResourceName* sub = (struct xds_core_v3_ResourceName*)xds_core_v3_Resource_name(msg);
if (sub == NULL) {
sub = (struct xds_core_v3_ResourceName*)_upb_Message_New(&xds_core_v3_ResourceName_msginit, arena);
@@ -87,13 +104,13 @@ UPB_INLINE struct xds_core_v3_ResourceName* xds_core_v3_Resource_mutable_name(xd
return sub;
}
UPB_INLINE void xds_core_v3_Resource_set_version(xds_core_v3_Resource *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), upb_StringView) = value;
}
UPB_INLINE void xds_core_v3_Resource_set_resource(xds_core_v3_Resource *msg, struct google_protobuf_Any* value) {
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(16, 32), struct google_protobuf_Any*) = value;
}
-UPB_INLINE struct google_protobuf_Any* xds_core_v3_Resource_mutable_resource(xds_core_v3_Resource *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Any* xds_core_v3_Resource_mutable_resource(xds_core_v3_Resource* msg, upb_Arena* arena) {
struct google_protobuf_Any* sub = (struct google_protobuf_Any*)xds_core_v3_Resource_resource(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Any*)_upb_Message_New(&google_protobuf_Any_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c
index 89b12c37ee..6dd053694c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c
@@ -21,18 +21,18 @@ static const upb_MiniTable_Sub xds_core_v3_ResourceLocator_submsgs[2] = {
};
static const upb_MiniTable_Field xds_core_v3_ResourceLocator__fields[6] = {
- {1, UPB_SIZE(0, 0), 0, 0, 5, kUpb_FieldMode_Scalar | (upb_FieldRep_4Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(20, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(32, 64), UPB_SIZE(-37, -73), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(28, 56), 0, 1, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(24, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(36, 64), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(32, 56), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_core_v3_ResourceLocator_msginit = {
&xds_core_v3_ResourceLocator_submsgs[0],
&xds_core_v3_ResourceLocator__fields[0],
- UPB_SIZE(40, 80), 6, upb_ExtMode_NonExtendable, 6, 255, 0,
+ UPB_SIZE(40, 72), 6, kUpb_ExtMode_NonExtendable, 6, 255, 0,
};
static const upb_MiniTable_Sub xds_core_v3_ResourceLocator_Directive_submsgs[1] = {
@@ -40,14 +40,14 @@ static const upb_MiniTable_Sub xds_core_v3_ResourceLocator_Directive_submsgs[1]
};
static const upb_MiniTable_Field xds_core_v3_ResourceLocator_Directive__fields[2] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-9, -17), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_core_v3_ResourceLocator_Directive_msginit = {
&xds_core_v3_ResourceLocator_Directive_submsgs[0],
&xds_core_v3_ResourceLocator_Directive__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h
index af8bb8fd7d..12be688fd8 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h
@@ -62,51 +62,82 @@ UPB_INLINE xds_core_v3_ResourceLocator* xds_core_v3_ResourceLocator_parse_ex(con
return ret;
}
UPB_INLINE char* xds_core_v3_ResourceLocator_serialize(const xds_core_v3_ResourceLocator* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_ResourceLocator_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_ResourceLocator_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_core_v3_ResourceLocator_serialize_ex(const xds_core_v3_ResourceLocator* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_ResourceLocator_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_ResourceLocator_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
xds_core_v3_ResourceLocator_context_param_specifier_exact_context = 5,
xds_core_v3_ResourceLocator_context_param_specifier_NOT_SET = 0
} xds_core_v3_ResourceLocator_context_param_specifier_oneofcases;
-UPB_INLINE xds_core_v3_ResourceLocator_context_param_specifier_oneofcases xds_core_v3_ResourceLocator_context_param_specifier_case(const xds_core_v3_ResourceLocator* msg) { return (xds_core_v3_ResourceLocator_context_param_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(36, 72), int32_t); }
-
+UPB_INLINE xds_core_v3_ResourceLocator_context_param_specifier_oneofcases xds_core_v3_ResourceLocator_context_param_specifier_case(const xds_core_v3_ResourceLocator* msg) {
+ return (xds_core_v3_ResourceLocator_context_param_specifier_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE void xds_core_v3_ResourceLocator_clear_scheme(const xds_core_v3_ResourceLocator* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = 0;
+}
UPB_INLINE int32_t xds_core_v3_ResourceLocator_scheme(const xds_core_v3_ResourceLocator* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
}
+UPB_INLINE void xds_core_v3_ResourceLocator_clear_id(const xds_core_v3_ResourceLocator* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView xds_core_v3_ResourceLocator_id(const xds_core_v3_ResourceLocator* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView);
+}
+UPB_INLINE void xds_core_v3_ResourceLocator_clear_authority(const xds_core_v3_ResourceLocator* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView xds_core_v3_ResourceLocator_authority(const xds_core_v3_ResourceLocator* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView);
+}
+UPB_INLINE void xds_core_v3_ResourceLocator_clear_resource_type(const xds_core_v3_ResourceLocator* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView xds_core_v3_ResourceLocator_resource_type(const xds_core_v3_ResourceLocator* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView);
+}
+UPB_INLINE bool xds_core_v3_ResourceLocator_has_exact_context(const xds_core_v3_ResourceLocator* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void xds_core_v3_ResourceLocator_clear_exact_context(const xds_core_v3_ResourceLocator* msg) {
+ UPB_WRITE_ONEOF(msg, struct xds_core_v3_ContextParams*, UPB_SIZE(36, 64), 0, UPB_SIZE(4, 4), xds_core_v3_ResourceLocator_context_param_specifier_NOT_SET);
+}
+UPB_INLINE const struct xds_core_v3_ContextParams* xds_core_v3_ResourceLocator_exact_context(const xds_core_v3_ResourceLocator* msg) {
+ return UPB_READ_ONEOF(msg, const struct xds_core_v3_ContextParams*, UPB_SIZE(36, 64), UPB_SIZE(4, 4), 5, NULL);
+}
+UPB_INLINE bool xds_core_v3_ResourceLocator_has_directives(const xds_core_v3_ResourceLocator* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(32, 56));
+}
+UPB_INLINE void xds_core_v3_ResourceLocator_clear_directives(const xds_core_v3_ResourceLocator* msg) {
+ _upb_array_detach(msg, UPB_SIZE(32, 56));
+}
+UPB_INLINE const xds_core_v3_ResourceLocator_Directive* const* xds_core_v3_ResourceLocator_directives(const xds_core_v3_ResourceLocator* msg, size_t* len) {
+ return (const xds_core_v3_ResourceLocator_Directive* const*)_upb_array_accessor(msg, UPB_SIZE(32, 56), len);
}
-UPB_INLINE bool xds_core_v3_ResourceLocator_has_exact_context(const xds_core_v3_ResourceLocator *msg) { return _upb_getoneofcase(msg, UPB_SIZE(36, 72)) == 5; }
-UPB_INLINE const struct xds_core_v3_ContextParams* xds_core_v3_ResourceLocator_exact_context(const xds_core_v3_ResourceLocator *msg) { return UPB_READ_ONEOF(msg, const struct xds_core_v3_ContextParams*, UPB_SIZE(32, 64), UPB_SIZE(36, 72), 5, NULL); }
-UPB_INLINE bool xds_core_v3_ResourceLocator_has_directives(const xds_core_v3_ResourceLocator *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 56)); }
-UPB_INLINE const xds_core_v3_ResourceLocator_Directive* const* xds_core_v3_ResourceLocator_directives(const xds_core_v3_ResourceLocator *msg, size_t *len) { return (const xds_core_v3_ResourceLocator_Directive* const*)_upb_array_accessor(msg, UPB_SIZE(28, 56), len); }
UPB_INLINE void xds_core_v3_ResourceLocator_set_scheme(xds_core_v3_ResourceLocator *msg, int32_t value) {
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t) = value;
}
UPB_INLINE void xds_core_v3_ResourceLocator_set_id(xds_core_v3_ResourceLocator *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), upb_StringView) = value;
}
UPB_INLINE void xds_core_v3_ResourceLocator_set_authority(xds_core_v3_ResourceLocator *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), upb_StringView) = value;
}
UPB_INLINE void xds_core_v3_ResourceLocator_set_resource_type(xds_core_v3_ResourceLocator *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 40), upb_StringView) = value;
}
UPB_INLINE void xds_core_v3_ResourceLocator_set_exact_context(xds_core_v3_ResourceLocator *msg, struct xds_core_v3_ContextParams* value) {
- UPB_WRITE_ONEOF(msg, struct xds_core_v3_ContextParams*, UPB_SIZE(32, 64), value, UPB_SIZE(36, 72), 5);
+ UPB_WRITE_ONEOF(msg, struct xds_core_v3_ContextParams*, UPB_SIZE(36, 64), value, UPB_SIZE(4, 4), 5);
}
-UPB_INLINE struct xds_core_v3_ContextParams* xds_core_v3_ResourceLocator_mutable_exact_context(xds_core_v3_ResourceLocator *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_ContextParams* xds_core_v3_ResourceLocator_mutable_exact_context(xds_core_v3_ResourceLocator* msg, upb_Arena* arena) {
struct xds_core_v3_ContextParams* sub = (struct xds_core_v3_ContextParams*)xds_core_v3_ResourceLocator_exact_context(msg);
if (sub == NULL) {
sub = (struct xds_core_v3_ContextParams*)_upb_Message_New(&xds_core_v3_ContextParams_msginit, arena);
@@ -115,16 +146,15 @@ UPB_INLINE struct xds_core_v3_ContextParams* xds_core_v3_ResourceLocator_mutable
}
return sub;
}
-UPB_INLINE xds_core_v3_ResourceLocator_Directive** xds_core_v3_ResourceLocator_mutable_directives(xds_core_v3_ResourceLocator *msg, size_t *len) {
- return (xds_core_v3_ResourceLocator_Directive**)_upb_array_mutable_accessor(msg, UPB_SIZE(28, 56), len);
+UPB_INLINE xds_core_v3_ResourceLocator_Directive** xds_core_v3_ResourceLocator_mutable_directives(xds_core_v3_ResourceLocator* msg, size_t* len) {
+ return (xds_core_v3_ResourceLocator_Directive**)_upb_array_mutable_accessor(msg, UPB_SIZE(32, 56), len);
}
-UPB_INLINE xds_core_v3_ResourceLocator_Directive** xds_core_v3_ResourceLocator_resize_directives(xds_core_v3_ResourceLocator *msg, size_t len, upb_Arena *arena) {
- return (xds_core_v3_ResourceLocator_Directive**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(28, 56), len, UPB_SIZE(2, 3), arena);
+UPB_INLINE xds_core_v3_ResourceLocator_Directive** xds_core_v3_ResourceLocator_resize_directives(xds_core_v3_ResourceLocator* msg, size_t len, upb_Arena* arena) {
+ return (xds_core_v3_ResourceLocator_Directive**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(32, 56), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct xds_core_v3_ResourceLocator_Directive* xds_core_v3_ResourceLocator_add_directives(xds_core_v3_ResourceLocator *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_ResourceLocator_Directive* xds_core_v3_ResourceLocator_add_directives(xds_core_v3_ResourceLocator* msg, upb_Arena* arena) {
struct xds_core_v3_ResourceLocator_Directive* sub = (struct xds_core_v3_ResourceLocator_Directive*)_upb_Message_New(&xds_core_v3_ResourceLocator_Directive_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(28, 56), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(32, 56), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -154,28 +184,47 @@ UPB_INLINE xds_core_v3_ResourceLocator_Directive* xds_core_v3_ResourceLocator_Di
return ret;
}
UPB_INLINE char* xds_core_v3_ResourceLocator_Directive_serialize(const xds_core_v3_ResourceLocator_Directive* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_ResourceLocator_Directive_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_ResourceLocator_Directive_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_core_v3_ResourceLocator_Directive_serialize_ex(const xds_core_v3_ResourceLocator_Directive* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_ResourceLocator_Directive_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_ResourceLocator_Directive_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
xds_core_v3_ResourceLocator_Directive_directive_alt = 1,
xds_core_v3_ResourceLocator_Directive_directive_entry = 2,
xds_core_v3_ResourceLocator_Directive_directive_NOT_SET = 0
} xds_core_v3_ResourceLocator_Directive_directive_oneofcases;
-UPB_INLINE xds_core_v3_ResourceLocator_Directive_directive_oneofcases xds_core_v3_ResourceLocator_Directive_directive_case(const xds_core_v3_ResourceLocator_Directive* msg) { return (xds_core_v3_ResourceLocator_Directive_directive_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(8, 16), int32_t); }
-
-UPB_INLINE bool xds_core_v3_ResourceLocator_Directive_has_alt(const xds_core_v3_ResourceLocator_Directive *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 1; }
-UPB_INLINE const xds_core_v3_ResourceLocator* xds_core_v3_ResourceLocator_Directive_alt(const xds_core_v3_ResourceLocator_Directive *msg) { return UPB_READ_ONEOF(msg, const xds_core_v3_ResourceLocator*, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 1, NULL); }
-UPB_INLINE bool xds_core_v3_ResourceLocator_Directive_has_entry(const xds_core_v3_ResourceLocator_Directive *msg) { return _upb_getoneofcase(msg, UPB_SIZE(8, 16)) == 2; }
-UPB_INLINE upb_StringView xds_core_v3_ResourceLocator_Directive_entry(const xds_core_v3_ResourceLocator_Directive *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), UPB_SIZE(8, 16), 2, upb_StringView_FromString("")); }
+UPB_INLINE xds_core_v3_ResourceLocator_Directive_directive_oneofcases xds_core_v3_ResourceLocator_Directive_directive_case(const xds_core_v3_ResourceLocator_Directive* msg) {
+ return (xds_core_v3_ResourceLocator_Directive_directive_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool xds_core_v3_ResourceLocator_Directive_has_alt(const xds_core_v3_ResourceLocator_Directive* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void xds_core_v3_ResourceLocator_Directive_clear_alt(const xds_core_v3_ResourceLocator_Directive* msg) {
+ UPB_WRITE_ONEOF(msg, xds_core_v3_ResourceLocator*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), xds_core_v3_ResourceLocator_Directive_directive_NOT_SET);
+}
+UPB_INLINE const xds_core_v3_ResourceLocator* xds_core_v3_ResourceLocator_Directive_alt(const xds_core_v3_ResourceLocator_Directive* msg) {
+ return UPB_READ_ONEOF(msg, const xds_core_v3_ResourceLocator*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool xds_core_v3_ResourceLocator_Directive_has_entry(const xds_core_v3_ResourceLocator_Directive* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void xds_core_v3_ResourceLocator_Directive_clear_entry(const xds_core_v3_ResourceLocator_Directive* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(0, 0), xds_core_v3_ResourceLocator_Directive_directive_NOT_SET);
+}
+UPB_INLINE upb_StringView xds_core_v3_ResourceLocator_Directive_entry(const xds_core_v3_ResourceLocator_Directive* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, upb_StringView_FromString(""));
+}
UPB_INLINE void xds_core_v3_ResourceLocator_Directive_set_alt(xds_core_v3_ResourceLocator_Directive *msg, xds_core_v3_ResourceLocator* value) {
- UPB_WRITE_ONEOF(msg, xds_core_v3_ResourceLocator*, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 1);
+ UPB_WRITE_ONEOF(msg, xds_core_v3_ResourceLocator*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct xds_core_v3_ResourceLocator* xds_core_v3_ResourceLocator_Directive_mutable_alt(xds_core_v3_ResourceLocator_Directive *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_ResourceLocator* xds_core_v3_ResourceLocator_Directive_mutable_alt(xds_core_v3_ResourceLocator_Directive* msg, upb_Arena* arena) {
struct xds_core_v3_ResourceLocator* sub = (struct xds_core_v3_ResourceLocator*)xds_core_v3_ResourceLocator_Directive_alt(msg);
if (sub == NULL) {
sub = (struct xds_core_v3_ResourceLocator*)_upb_Message_New(&xds_core_v3_ResourceLocator_msginit, arena);
@@ -185,7 +234,7 @@ UPB_INLINE struct xds_core_v3_ResourceLocator* xds_core_v3_ResourceLocator_Direc
return sub;
}
UPB_INLINE void xds_core_v3_ResourceLocator_Directive_set_entry(xds_core_v3_ResourceLocator_Directive *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(0, 0), value, UPB_SIZE(8, 16), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
extern const upb_MiniTable_File xds_core_v3_resource_locator_proto_upb_file_layout;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c
index 6b3297ae06..c8f89b2272 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c
@@ -20,16 +20,16 @@ static const upb_MiniTable_Sub xds_core_v3_ResourceName_submsgs[1] = {
};
static const upb_MiniTable_Field xds_core_v3_ResourceName__fields[4] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(20, 40), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {4, UPB_SIZE(28, 56), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(20, 40), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(28, 56), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_core_v3_ResourceName_msginit = {
&xds_core_v3_ResourceName_submsgs[0],
&xds_core_v3_ResourceName__fields[0],
- UPB_SIZE(32, 64), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(32, 64), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h
index e82b5e2920..340567cb4c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h
@@ -53,22 +53,40 @@ UPB_INLINE xds_core_v3_ResourceName* xds_core_v3_ResourceName_parse_ex(const cha
return ret;
}
UPB_INLINE char* xds_core_v3_ResourceName_serialize(const xds_core_v3_ResourceName* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_ResourceName_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_ResourceName_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_core_v3_ResourceName_serialize_ex(const xds_core_v3_ResourceName* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_core_v3_ResourceName_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_core_v3_ResourceName_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_core_v3_ResourceName_clear_id(const xds_core_v3_ResourceName* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView xds_core_v3_ResourceName_id(const xds_core_v3_ResourceName* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
+UPB_INLINE void xds_core_v3_ResourceName_clear_authority(const xds_core_v3_ResourceName* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView xds_core_v3_ResourceName_authority(const xds_core_v3_ResourceName* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), upb_StringView);
}
+UPB_INLINE void xds_core_v3_ResourceName_clear_resource_type(const xds_core_v3_ResourceName* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView xds_core_v3_ResourceName_resource_type(const xds_core_v3_ResourceName* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(20, 40), upb_StringView);
}
-UPB_INLINE bool xds_core_v3_ResourceName_has_context(const xds_core_v3_ResourceName *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool xds_core_v3_ResourceName_has_context(const xds_core_v3_ResourceName* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void xds_core_v3_ResourceName_clear_context(const xds_core_v3_ResourceName* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const upb_Message*) = NULL;
+}
UPB_INLINE const struct xds_core_v3_ContextParams* xds_core_v3_ResourceName_context(const xds_core_v3_ResourceName* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(28, 56), const struct xds_core_v3_ContextParams*);
}
@@ -86,7 +104,7 @@ UPB_INLINE void xds_core_v3_ResourceName_set_context(xds_core_v3_ResourceName *m
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(28, 56), struct xds_core_v3_ContextParams*) = value;
}
-UPB_INLINE struct xds_core_v3_ContextParams* xds_core_v3_ResourceName_mutable_context(xds_core_v3_ResourceName *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_ContextParams* xds_core_v3_ResourceName_mutable_context(xds_core_v3_ResourceName* msg, upb_Arena* arena) {
struct xds_core_v3_ContextParams* sub = (struct xds_core_v3_ContextParams*)xds_core_v3_ResourceName_context(msg);
if (sub == NULL) {
sub = (struct xds_core_v3_ContextParams*)_upb_Message_New(&xds_core_v3_ContextParams_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c
index 0648f26e7b..8607c6219a 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c
@@ -19,39 +19,39 @@ static const upb_MiniTable_Sub xds_data_orca_v3_OrcaLoadReport_submsgs[2] = {
};
static const upb_MiniTable_Field xds_data_orca_v3_OrcaLoadReport__fields[5] = {
- {1, UPB_SIZE(0, 0), 0, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 8), 0, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {3, UPB_SIZE(16, 16), 0, 0, 4, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
- {4, UPB_SIZE(24, 24), 0, 0, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {5, UPB_SIZE(28, 32), 0, 1, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(16, 24), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(24, 32), UPB_SIZE(0, 0), kUpb_NoSub, 4, kUpb_FieldMode_Scalar | (kUpb_FieldRep_8Byte << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_data_orca_v3_OrcaLoadReport_msginit = {
&xds_data_orca_v3_OrcaLoadReport_submsgs[0],
&xds_data_orca_v3_OrcaLoadReport__fields[0],
- UPB_SIZE(32, 40), 5, upb_ExtMode_NonExtendable, 5, 255, 0,
+ UPB_SIZE(32, 40), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
};
static const upb_MiniTable_Field xds_data_orca_v3_OrcaLoadReport_RequestCostEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_data_orca_v3_OrcaLoadReport_RequestCostEntry_msginit = {
NULL,
&xds_data_orca_v3_OrcaLoadReport_RequestCostEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Field xds_data_orca_v3_OrcaLoadReport_UtilizationEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 1, kUpb_FieldMode_Scalar | (upb_FieldRep_8Byte << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 1, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_data_orca_v3_OrcaLoadReport_UtilizationEntry_msginit = {
NULL,
&xds_data_orca_v3_OrcaLoadReport_UtilizationEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[3] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h
index b534b1d82a..7ad025fe4f 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h
@@ -57,56 +57,103 @@ UPB_INLINE xds_data_orca_v3_OrcaLoadReport* xds_data_orca_v3_OrcaLoadReport_pars
return ret;
}
UPB_INLINE char* xds_data_orca_v3_OrcaLoadReport_serialize(const xds_data_orca_v3_OrcaLoadReport* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_data_orca_v3_OrcaLoadReport_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_data_orca_v3_OrcaLoadReport_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_data_orca_v3_OrcaLoadReport_serialize_ex(const xds_data_orca_v3_OrcaLoadReport* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_data_orca_v3_OrcaLoadReport_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_data_orca_v3_OrcaLoadReport_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_clear_cpu_utilization(const xds_data_orca_v3_OrcaLoadReport* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), double) = 0;
}
UPB_INLINE double xds_data_orca_v3_OrcaLoadReport_cpu_utilization(const xds_data_orca_v3_OrcaLoadReport* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), double);
+}
+UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_clear_mem_utilization(const xds_data_orca_v3_OrcaLoadReport* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), double) = 0;
}
UPB_INLINE double xds_data_orca_v3_OrcaLoadReport_mem_utilization(const xds_data_orca_v3_OrcaLoadReport* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), double);
+ return *UPB_PTR_AT(msg, UPB_SIZE(16, 24), double);
+}
+UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_clear_rps(const xds_data_orca_v3_OrcaLoadReport* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t) = 0;
}
UPB_INLINE uint64_t xds_data_orca_v3_OrcaLoadReport_rps(const xds_data_orca_v3_OrcaLoadReport* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t);
+ return *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t);
+}
+UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_has_request_cost(const xds_data_orca_v3_OrcaLoadReport* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_clear_request_cost(const xds_data_orca_v3_OrcaLoadReport* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE size_t xds_data_orca_v3_OrcaLoadReport_request_cost_size(const xds_data_orca_v3_OrcaLoadReport* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_request_cost_get(const xds_data_orca_v3_OrcaLoadReport* msg, upb_StringView key, double* val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(0, 0), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const xds_data_orca_v3_OrcaLoadReport_RequestCostEntry* xds_data_orca_v3_OrcaLoadReport_request_cost_next(const xds_data_orca_v3_OrcaLoadReport* msg, size_t* iter) {
+ return (const xds_data_orca_v3_OrcaLoadReport_RequestCostEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter);
+}
+UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_has_utilization(const xds_data_orca_v3_OrcaLoadReport* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_clear_utilization(const xds_data_orca_v3_OrcaLoadReport* msg) {
+ _upb_array_detach(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE size_t xds_data_orca_v3_OrcaLoadReport_utilization_size(const xds_data_orca_v3_OrcaLoadReport* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(4, 8));
+}
+UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_utilization_get(const xds_data_orca_v3_OrcaLoadReport* msg, upb_StringView key, double* val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(4, 8), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const xds_data_orca_v3_OrcaLoadReport_UtilizationEntry* xds_data_orca_v3_OrcaLoadReport_utilization_next(const xds_data_orca_v3_OrcaLoadReport* msg, size_t* iter) {
+ return (const xds_data_orca_v3_OrcaLoadReport_UtilizationEntry*)_upb_msg_map_next(msg, UPB_SIZE(4, 8), iter);
}
-UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_has_request_cost(const xds_data_orca_v3_OrcaLoadReport *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(24, 24)); }
-UPB_INLINE size_t xds_data_orca_v3_OrcaLoadReport_request_cost_size(const xds_data_orca_v3_OrcaLoadReport *msg) {return _upb_msg_map_size(msg, UPB_SIZE(24, 24)); }
-UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_request_cost_get(const xds_data_orca_v3_OrcaLoadReport *msg, upb_StringView key, double *val) { return _upb_msg_map_get(msg, UPB_SIZE(24, 24), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const xds_data_orca_v3_OrcaLoadReport_RequestCostEntry* xds_data_orca_v3_OrcaLoadReport_request_cost_next(const xds_data_orca_v3_OrcaLoadReport *msg, size_t* iter) { return (const xds_data_orca_v3_OrcaLoadReport_RequestCostEntry*)_upb_msg_map_next(msg, UPB_SIZE(24, 24), iter); }
-UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_has_utilization(const xds_data_orca_v3_OrcaLoadReport *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(28, 32)); }
-UPB_INLINE size_t xds_data_orca_v3_OrcaLoadReport_utilization_size(const xds_data_orca_v3_OrcaLoadReport *msg) {return _upb_msg_map_size(msg, UPB_SIZE(28, 32)); }
-UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_utilization_get(const xds_data_orca_v3_OrcaLoadReport *msg, upb_StringView key, double *val) { return _upb_msg_map_get(msg, UPB_SIZE(28, 32), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const xds_data_orca_v3_OrcaLoadReport_UtilizationEntry* xds_data_orca_v3_OrcaLoadReport_utilization_next(const xds_data_orca_v3_OrcaLoadReport *msg, size_t* iter) { return (const xds_data_orca_v3_OrcaLoadReport_UtilizationEntry*)_upb_msg_map_next(msg, UPB_SIZE(28, 32), iter); }
UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_set_cpu_utilization(xds_data_orca_v3_OrcaLoadReport *msg, double value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), double) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), double) = value;
}
UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_set_mem_utilization(xds_data_orca_v3_OrcaLoadReport *msg, double value) {
- *UPB_PTR_AT(msg, UPB_SIZE(8, 8), double) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(16, 24), double) = value;
}
UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_set_rps(xds_data_orca_v3_OrcaLoadReport *msg, uint64_t value) {
- *UPB_PTR_AT(msg, UPB_SIZE(16, 16), uint64_t) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(24, 32), uint64_t) = value;
+}
+UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_request_cost_clear(xds_data_orca_v3_OrcaLoadReport* msg) { _upb_msg_map_clear(msg, UPB_SIZE(0, 0)); }
+UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_request_cost_set(xds_data_orca_v3_OrcaLoadReport* msg, upb_StringView key, double val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(0, 0), &key, 0, &val, sizeof(val), a);
+}
+UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_request_cost_delete(xds_data_orca_v3_OrcaLoadReport* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(0, 0), &key, 0);
+}
+UPB_INLINE xds_data_orca_v3_OrcaLoadReport_RequestCostEntry* xds_data_orca_v3_OrcaLoadReport_request_cost_nextmutable(xds_data_orca_v3_OrcaLoadReport* msg, size_t* iter) {
+ return (xds_data_orca_v3_OrcaLoadReport_RequestCostEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter);
+}
+UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_utilization_clear(xds_data_orca_v3_OrcaLoadReport* msg) { _upb_msg_map_clear(msg, UPB_SIZE(4, 8)); }
+UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_utilization_set(xds_data_orca_v3_OrcaLoadReport* msg, upb_StringView key, double val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(4, 8), &key, 0, &val, sizeof(val), a);
+}
+UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_utilization_delete(xds_data_orca_v3_OrcaLoadReport* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(4, 8), &key, 0);
+}
+UPB_INLINE xds_data_orca_v3_OrcaLoadReport_UtilizationEntry* xds_data_orca_v3_OrcaLoadReport_utilization_nextmutable(xds_data_orca_v3_OrcaLoadReport* msg, size_t* iter) {
+ return (xds_data_orca_v3_OrcaLoadReport_UtilizationEntry*)_upb_msg_map_next(msg, UPB_SIZE(4, 8), iter);
}
-UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_request_cost_clear(xds_data_orca_v3_OrcaLoadReport *msg) { _upb_msg_map_clear(msg, UPB_SIZE(24, 24)); }
-UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_request_cost_set(xds_data_orca_v3_OrcaLoadReport *msg, upb_StringView key, double val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(24, 24), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_request_cost_delete(xds_data_orca_v3_OrcaLoadReport *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(24, 24), &key, 0); }
-UPB_INLINE xds_data_orca_v3_OrcaLoadReport_RequestCostEntry* xds_data_orca_v3_OrcaLoadReport_request_cost_nextmutable(xds_data_orca_v3_OrcaLoadReport *msg, size_t* iter) { return (xds_data_orca_v3_OrcaLoadReport_RequestCostEntry*)_upb_msg_map_next(msg, UPB_SIZE(24, 24), iter); }
-UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_utilization_clear(xds_data_orca_v3_OrcaLoadReport *msg) { _upb_msg_map_clear(msg, UPB_SIZE(28, 32)); }
-UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_utilization_set(xds_data_orca_v3_OrcaLoadReport *msg, upb_StringView key, double val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(28, 32), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool xds_data_orca_v3_OrcaLoadReport_utilization_delete(xds_data_orca_v3_OrcaLoadReport *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(28, 32), &key, 0); }
-UPB_INLINE xds_data_orca_v3_OrcaLoadReport_UtilizationEntry* xds_data_orca_v3_OrcaLoadReport_utilization_nextmutable(xds_data_orca_v3_OrcaLoadReport *msg, size_t* iter) { return (xds_data_orca_v3_OrcaLoadReport_UtilizationEntry*)_upb_msg_map_next(msg, UPB_SIZE(28, 32), iter); }
/* xds.data.orca.v3.OrcaLoadReport.RequestCostEntry */
-UPB_INLINE upb_StringView xds_data_orca_v3_OrcaLoadReport_RequestCostEntry_key(const xds_data_orca_v3_OrcaLoadReport_RequestCostEntry *msg) {
+UPB_INLINE upb_StringView xds_data_orca_v3_OrcaLoadReport_RequestCostEntry_key(const xds_data_orca_v3_OrcaLoadReport_RequestCostEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE double xds_data_orca_v3_OrcaLoadReport_RequestCostEntry_value(const xds_data_orca_v3_OrcaLoadReport_RequestCostEntry *msg) {
+UPB_INLINE double xds_data_orca_v3_OrcaLoadReport_RequestCostEntry_value(const xds_data_orca_v3_OrcaLoadReport_RequestCostEntry* msg) {
double ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
@@ -118,12 +165,12 @@ UPB_INLINE void xds_data_orca_v3_OrcaLoadReport_RequestCostEntry_set_value(xds_d
/* xds.data.orca.v3.OrcaLoadReport.UtilizationEntry */
-UPB_INLINE upb_StringView xds_data_orca_v3_OrcaLoadReport_UtilizationEntry_key(const xds_data_orca_v3_OrcaLoadReport_UtilizationEntry *msg) {
+UPB_INLINE upb_StringView xds_data_orca_v3_OrcaLoadReport_UtilizationEntry_key(const xds_data_orca_v3_OrcaLoadReport_UtilizationEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE double xds_data_orca_v3_OrcaLoadReport_UtilizationEntry_value(const xds_data_orca_v3_OrcaLoadReport_UtilizationEntry *msg) {
+UPB_INLINE double xds_data_orca_v3_OrcaLoadReport_UtilizationEntry_value(const xds_data_orca_v3_OrcaLoadReport_UtilizationEntry* msg) {
double ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c
new file mode 100644
index 0000000000..09ff4dcd8a
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c
@@ -0,0 +1,47 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * xds/service/orca/v3/orca.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#include <stddef.h>
+#include "upb/msg_internal.h"
+#include "xds/service/orca/v3/orca.upb.h"
+#include "xds/data/orca/v3/orca_load_report.upb.h"
+#include "google/protobuf/duration.upb.h"
+#include "validate/validate.upb.h"
+
+#include "upb/port_def.inc"
+
+static const upb_MiniTable_Sub xds_service_orca_v3_OrcaLoadReportRequest_submsgs[1] = {
+ {.submsg = &google_protobuf_Duration_msginit},
+};
+
+static const upb_MiniTable_Field xds_service_orca_v3_OrcaLoadReportRequest__fields[2] = {
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+};
+
+const upb_MiniTable xds_service_orca_v3_OrcaLoadReportRequest_msginit = {
+ &xds_service_orca_v3_OrcaLoadReportRequest_submsgs[0],
+ &xds_service_orca_v3_OrcaLoadReportRequest__fields[0],
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
+};
+
+static const upb_MiniTable *messages_layout[1] = {
+ &xds_service_orca_v3_OrcaLoadReportRequest_msginit,
+};
+
+const upb_MiniTable_File xds_service_orca_v3_orca_proto_upb_file_layout = {
+ messages_layout,
+ NULL,
+ NULL,
+ 1,
+ 0,
+ 0,
+};
+
+#include "upb/port_undef.inc"
+
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h
new file mode 100644
index 0000000000..a974b62b3c
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h
@@ -0,0 +1,113 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * xds/service/orca/v3/orca.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#ifndef XDS_SERVICE_ORCA_V3_ORCA_PROTO_UPB_H_
+#define XDS_SERVICE_ORCA_V3_ORCA_PROTO_UPB_H_
+
+#include "upb/msg_internal.h"
+#include "upb/decode.h"
+#include "upb/decode_fast.h"
+#include "upb/encode.h"
+
+#include "upb/port_def.inc"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct xds_service_orca_v3_OrcaLoadReportRequest;
+typedef struct xds_service_orca_v3_OrcaLoadReportRequest xds_service_orca_v3_OrcaLoadReportRequest;
+extern const upb_MiniTable xds_service_orca_v3_OrcaLoadReportRequest_msginit;
+struct google_protobuf_Duration;
+extern const upb_MiniTable google_protobuf_Duration_msginit;
+
+
+
+/* xds.service.orca.v3.OrcaLoadReportRequest */
+
+UPB_INLINE xds_service_orca_v3_OrcaLoadReportRequest* xds_service_orca_v3_OrcaLoadReportRequest_new(upb_Arena* arena) {
+ return (xds_service_orca_v3_OrcaLoadReportRequest*)_upb_Message_New(&xds_service_orca_v3_OrcaLoadReportRequest_msginit, arena);
+}
+UPB_INLINE xds_service_orca_v3_OrcaLoadReportRequest* xds_service_orca_v3_OrcaLoadReportRequest_parse(const char* buf, size_t size, upb_Arena* arena) {
+ xds_service_orca_v3_OrcaLoadReportRequest* ret = xds_service_orca_v3_OrcaLoadReportRequest_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &xds_service_orca_v3_OrcaLoadReportRequest_msginit, NULL, 0, arena) != kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE xds_service_orca_v3_OrcaLoadReportRequest* xds_service_orca_v3_OrcaLoadReportRequest_parse_ex(const char* buf, size_t size,
+ const upb_ExtensionRegistry* extreg,
+ int options, upb_Arena* arena) {
+ xds_service_orca_v3_OrcaLoadReportRequest* ret = xds_service_orca_v3_OrcaLoadReportRequest_new(arena);
+ if (!ret) return NULL;
+ if (upb_Decode(buf, size, ret, &xds_service_orca_v3_OrcaLoadReportRequest_msginit, extreg, options, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ return NULL;
+ }
+ return ret;
+}
+UPB_INLINE char* xds_service_orca_v3_OrcaLoadReportRequest_serialize(const xds_service_orca_v3_OrcaLoadReportRequest* msg, upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &xds_service_orca_v3_OrcaLoadReportRequest_msginit, 0, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE char* xds_service_orca_v3_OrcaLoadReportRequest_serialize_ex(const xds_service_orca_v3_OrcaLoadReportRequest* msg, int options,
+ upb_Arena* arena, size_t* len) {
+ char* ptr;
+ (void)upb_Encode(msg, &xds_service_orca_v3_OrcaLoadReportRequest_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool xds_service_orca_v3_OrcaLoadReportRequest_has_report_interval(const xds_service_orca_v3_OrcaLoadReportRequest* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void xds_service_orca_v3_OrcaLoadReportRequest_clear_report_interval(const xds_service_orca_v3_OrcaLoadReportRequest* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
+}
+UPB_INLINE const struct google_protobuf_Duration* xds_service_orca_v3_OrcaLoadReportRequest_report_interval(const xds_service_orca_v3_OrcaLoadReportRequest* msg) {
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct google_protobuf_Duration*);
+}
+UPB_INLINE void xds_service_orca_v3_OrcaLoadReportRequest_clear_request_cost_names(const xds_service_orca_v3_OrcaLoadReportRequest* msg) {
+ _upb_array_detach(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE upb_StringView const* xds_service_orca_v3_OrcaLoadReportRequest_request_cost_names(const xds_service_orca_v3_OrcaLoadReportRequest* msg, size_t* len) {
+ return (upb_StringView const*)_upb_array_accessor(msg, UPB_SIZE(8, 16), len);
+}
+
+UPB_INLINE void xds_service_orca_v3_OrcaLoadReportRequest_set_report_interval(xds_service_orca_v3_OrcaLoadReportRequest *msg, struct google_protobuf_Duration* value) {
+ _upb_sethas(msg, 1);
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct google_protobuf_Duration*) = value;
+}
+UPB_INLINE struct google_protobuf_Duration* xds_service_orca_v3_OrcaLoadReportRequest_mutable_report_interval(xds_service_orca_v3_OrcaLoadReportRequest* msg, upb_Arena* arena) {
+ struct google_protobuf_Duration* sub = (struct google_protobuf_Duration*)xds_service_orca_v3_OrcaLoadReportRequest_report_interval(msg);
+ if (sub == NULL) {
+ sub = (struct google_protobuf_Duration*)_upb_Message_New(&google_protobuf_Duration_msginit, arena);
+ if (!sub) return NULL;
+ xds_service_orca_v3_OrcaLoadReportRequest_set_report_interval(msg, sub);
+ }
+ return sub;
+}
+UPB_INLINE upb_StringView* xds_service_orca_v3_OrcaLoadReportRequest_mutable_request_cost_names(xds_service_orca_v3_OrcaLoadReportRequest* msg, size_t* len) {
+ return (upb_StringView*)_upb_array_mutable_accessor(msg, UPB_SIZE(8, 16), len);
+}
+UPB_INLINE upb_StringView* xds_service_orca_v3_OrcaLoadReportRequest_resize_request_cost_names(xds_service_orca_v3_OrcaLoadReportRequest* msg, size_t len, upb_Arena* arena) {
+ return (upb_StringView*)_upb_Array_Resize_accessor2(msg, UPB_SIZE(8, 16), len, UPB_SIZE(3, 4), arena);
+}
+UPB_INLINE bool xds_service_orca_v3_OrcaLoadReportRequest_add_request_cost_names(xds_service_orca_v3_OrcaLoadReportRequest* msg, upb_StringView val, upb_Arena* arena) {
+ return _upb_Array_Append_accessor2(msg, UPB_SIZE(8, 16), UPB_SIZE(3, 4), &val, arena);
+}
+
+extern const upb_MiniTable_File xds_service_orca_v3_orca_proto_upb_file_layout;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* XDS_SERVICE_ORCA_V3_ORCA_PROTO_UPB_H_ */
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c
index 2b362dc3c3..202d77e5b3 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c
@@ -23,31 +23,31 @@ static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_submsgs[3] = {
};
static const upb_MiniTable_Field xds_type_matcher_v3_Matcher__fields[3] = {
- {1, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), 1, 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_type_matcher_v3_Matcher_msginit = {
&xds_type_matcher_v3_Matcher_submsgs[0],
&xds_type_matcher_v3_Matcher__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_OnMatch_submsgs[2] = {
- {.submsg = &xds_core_v3_TypedExtensionConfig_msginit},
{.submsg = &xds_type_matcher_v3_Matcher_msginit},
+ {.submsg = &xds_core_v3_TypedExtensionConfig_msginit},
};
static const upb_MiniTable_Field xds_type_matcher_v3_Matcher_OnMatch__fields[2] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_type_matcher_v3_Matcher_OnMatch_msginit = {
&xds_type_matcher_v3_Matcher_OnMatch_submsgs[0],
&xds_type_matcher_v3_Matcher_OnMatch__fields[0],
- UPB_SIZE(8, 16), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(8, 16), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherList_submsgs[1] = {
@@ -55,49 +55,51 @@ static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherList_submsgs[1
};
static const upb_MiniTable_Field xds_type_matcher_v3_Matcher_MatcherList__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_type_matcher_v3_Matcher_MatcherList_msginit = {
&xds_type_matcher_v3_Matcher_MatcherList_submsgs[0],
&xds_type_matcher_v3_Matcher_MatcherList__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
-static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherList_Predicate_submsgs[3] = {
- {.submsg = &xds_type_matcher_v3_Matcher_MatcherList_Predicate_msginit},
- {.submsg = &xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit},
+static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherList_Predicate_submsgs[4] = {
{.submsg = &xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_msginit},
+ {.submsg = &xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit},
+ {.submsg = &xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit},
+ {.submsg = &xds_type_matcher_v3_Matcher_MatcherList_Predicate_msginit},
};
static const upb_MiniTable_Field xds_type_matcher_v3_Matcher_MatcherList_Predicate__fields[4] = {
- {1, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 2, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(0, 0), UPB_SIZE(-5, -9), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(4, 8), UPB_SIZE(-1, -1), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_type_matcher_v3_Matcher_MatcherList_Predicate_msginit = {
&xds_type_matcher_v3_Matcher_MatcherList_Predicate_submsgs[0],
&xds_type_matcher_v3_Matcher_MatcherList_Predicate__fields[0],
- UPB_SIZE(8, 16), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(8, 16), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
-static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_submsgs[2] = {
+static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_submsgs[3] = {
{.submsg = &xds_core_v3_TypedExtensionConfig_msginit},
{.submsg = &xds_type_matcher_v3_StringMatcher_msginit},
+ {.submsg = &xds_core_v3_TypedExtensionConfig_msginit},
};
static const upb_MiniTable_Field xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate__fields[3] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_msginit = {
&xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_submsgs[0],
&xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate__fields[0],
- UPB_SIZE(16, 32), 3, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 3, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_submsgs[1] = {
@@ -105,13 +107,13 @@ static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherList_Predicate
};
static const upb_MiniTable_Field xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit = {
&xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_submsgs[0],
&xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_submsgs[2] = {
@@ -120,32 +122,34 @@ static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherList_FieldMatc
};
static const upb_MiniTable_Field xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher__fields[2] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 2, 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_msginit = {
&xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_submsgs[0],
&xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher__fields[0],
- UPB_SIZE(16, 24), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 24), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
-static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherTree_submsgs[2] = {
+static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherTree_submsgs[4] = {
{.submsg = &xds_core_v3_TypedExtensionConfig_msginit},
{.submsg = &xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_msginit},
+ {.submsg = &xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_msginit},
+ {.submsg = &xds_core_v3_TypedExtensionConfig_msginit},
};
static const upb_MiniTable_Field xds_type_matcher_v3_Matcher_MatcherTree__fields[4] = {
- {1, UPB_SIZE(4, 8), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {3, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 1, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {4, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {4, UPB_SIZE(12, 16), UPB_SIZE(-5, -5), 3, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_type_matcher_v3_Matcher_MatcherTree_msginit = {
&xds_type_matcher_v3_Matcher_MatcherTree_submsgs[0],
&xds_type_matcher_v3_Matcher_MatcherTree__fields[0],
- UPB_SIZE(16, 32), 4, upb_ExtMode_NonExtendable, 4, 255, 0,
+ UPB_SIZE(16, 24), 4, kUpb_ExtMode_NonExtendable, 4, 255, 0,
};
static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_submsgs[1] = {
@@ -153,13 +157,13 @@ static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_
};
static const upb_MiniTable_Field xds_type_matcher_v3_Matcher_MatcherTree_MatchMap__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_msginit = {
&xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_submsgs[0],
&xds_type_matcher_v3_Matcher_MatcherTree_MatchMap__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_submsgs[1] = {
@@ -167,14 +171,14 @@ static const upb_MiniTable_Sub xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_
};
static const upb_MiniTable_Field xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry__fields[2] = {
- {1, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(8, 16), 0, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 12, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 16), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_msginit = {
&xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_submsgs[0],
&xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[10] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h
index 89a92b0103..b1d36c0075 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h
@@ -82,32 +82,56 @@ UPB_INLINE xds_type_matcher_v3_Matcher* xds_type_matcher_v3_Matcher_parse_ex(con
return ret;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_serialize(const xds_type_matcher_v3_Matcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_serialize_ex(const xds_type_matcher_v3_Matcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
xds_type_matcher_v3_Matcher_matcher_type_matcher_list = 1,
xds_type_matcher_v3_Matcher_matcher_type_matcher_tree = 2,
xds_type_matcher_v3_Matcher_matcher_type_NOT_SET = 0
} xds_type_matcher_v3_Matcher_matcher_type_oneofcases;
-UPB_INLINE xds_type_matcher_v3_Matcher_matcher_type_oneofcases xds_type_matcher_v3_Matcher_matcher_type_case(const xds_type_matcher_v3_Matcher* msg) { return (xds_type_matcher_v3_Matcher_matcher_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool xds_type_matcher_v3_Matcher_has_matcher_list(const xds_type_matcher_v3_Matcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 1; }
-UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList* xds_type_matcher_v3_Matcher_matcher_list(const xds_type_matcher_v3_Matcher *msg) { return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherList*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 1, NULL); }
-UPB_INLINE bool xds_type_matcher_v3_Matcher_has_matcher_tree(const xds_type_matcher_v3_Matcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherTree* xds_type_matcher_v3_Matcher_matcher_tree(const xds_type_matcher_v3_Matcher *msg) { return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherTree*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 2, NULL); }
-UPB_INLINE bool xds_type_matcher_v3_Matcher_has_on_no_match(const xds_type_matcher_v3_Matcher *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE xds_type_matcher_v3_Matcher_matcher_type_oneofcases xds_type_matcher_v3_Matcher_matcher_type_case(const xds_type_matcher_v3_Matcher* msg) {
+ return (xds_type_matcher_v3_Matcher_matcher_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_has_matcher_list(const xds_type_matcher_v3_Matcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 1;
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_clear_matcher_list(const xds_type_matcher_v3_Matcher* msg) {
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), xds_type_matcher_v3_Matcher_matcher_type_NOT_SET);
+}
+UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList* xds_type_matcher_v3_Matcher_matcher_list(const xds_type_matcher_v3_Matcher* msg) {
+ return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherList*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 1, NULL);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_has_matcher_tree(const xds_type_matcher_v3_Matcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_clear_matcher_tree(const xds_type_matcher_v3_Matcher* msg) {
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherTree*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), xds_type_matcher_v3_Matcher_matcher_type_NOT_SET);
+}
+UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherTree* xds_type_matcher_v3_Matcher_matcher_tree(const xds_type_matcher_v3_Matcher* msg) {
+ return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherTree*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_has_on_no_match(const xds_type_matcher_v3_Matcher* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_clear_on_no_match(const xds_type_matcher_v3_Matcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const xds_type_matcher_v3_Matcher_OnMatch* xds_type_matcher_v3_Matcher_on_no_match(const xds_type_matcher_v3_Matcher* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const xds_type_matcher_v3_Matcher_OnMatch*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const xds_type_matcher_v3_Matcher_OnMatch*);
}
UPB_INLINE void xds_type_matcher_v3_Matcher_set_matcher_list(xds_type_matcher_v3_Matcher *msg, xds_type_matcher_v3_Matcher_MatcherList* value) {
- UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 1);
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 1);
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList* xds_type_matcher_v3_Matcher_mutable_matcher_list(xds_type_matcher_v3_Matcher *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList* xds_type_matcher_v3_Matcher_mutable_matcher_list(xds_type_matcher_v3_Matcher* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher_MatcherList* sub = (struct xds_type_matcher_v3_Matcher_MatcherList*)xds_type_matcher_v3_Matcher_matcher_list(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_Matcher_MatcherList*)_upb_Message_New(&xds_type_matcher_v3_Matcher_MatcherList_msginit, arena);
@@ -117,9 +141,9 @@ UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList* xds_type_matcher_v3_M
return sub;
}
UPB_INLINE void xds_type_matcher_v3_Matcher_set_matcher_tree(xds_type_matcher_v3_Matcher *msg, xds_type_matcher_v3_Matcher_MatcherTree* value) {
- UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherTree*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherTree*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherTree* xds_type_matcher_v3_Matcher_mutable_matcher_tree(xds_type_matcher_v3_Matcher *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherTree* xds_type_matcher_v3_Matcher_mutable_matcher_tree(xds_type_matcher_v3_Matcher* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher_MatcherTree* sub = (struct xds_type_matcher_v3_Matcher_MatcherTree*)xds_type_matcher_v3_Matcher_matcher_tree(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_Matcher_MatcherTree*)_upb_Message_New(&xds_type_matcher_v3_Matcher_MatcherTree_msginit, arena);
@@ -130,9 +154,9 @@ UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherTree* xds_type_matcher_v3_M
}
UPB_INLINE void xds_type_matcher_v3_Matcher_set_on_no_match(xds_type_matcher_v3_Matcher *msg, xds_type_matcher_v3_Matcher_OnMatch* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), xds_type_matcher_v3_Matcher_OnMatch*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), xds_type_matcher_v3_Matcher_OnMatch*) = value;
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher_OnMatch* xds_type_matcher_v3_Matcher_mutable_on_no_match(xds_type_matcher_v3_Matcher *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher_OnMatch* xds_type_matcher_v3_Matcher_mutable_on_no_match(xds_type_matcher_v3_Matcher* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher_OnMatch* sub = (struct xds_type_matcher_v3_Matcher_OnMatch*)xds_type_matcher_v3_Matcher_on_no_match(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_Matcher_OnMatch*)_upb_Message_New(&xds_type_matcher_v3_Matcher_OnMatch_msginit, arena);
@@ -167,28 +191,47 @@ UPB_INLINE xds_type_matcher_v3_Matcher_OnMatch* xds_type_matcher_v3_Matcher_OnMa
return ret;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_OnMatch_serialize(const xds_type_matcher_v3_Matcher_OnMatch* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_OnMatch_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_OnMatch_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_OnMatch_serialize_ex(const xds_type_matcher_v3_Matcher_OnMatch* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_OnMatch_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_OnMatch_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
xds_type_matcher_v3_Matcher_OnMatch_on_match_matcher = 1,
xds_type_matcher_v3_Matcher_OnMatch_on_match_action = 2,
xds_type_matcher_v3_Matcher_OnMatch_on_match_NOT_SET = 0
} xds_type_matcher_v3_Matcher_OnMatch_on_match_oneofcases;
-UPB_INLINE xds_type_matcher_v3_Matcher_OnMatch_on_match_oneofcases xds_type_matcher_v3_Matcher_OnMatch_on_match_case(const xds_type_matcher_v3_Matcher_OnMatch* msg) { return (xds_type_matcher_v3_Matcher_OnMatch_on_match_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool xds_type_matcher_v3_Matcher_OnMatch_has_matcher(const xds_type_matcher_v3_Matcher_OnMatch *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const xds_type_matcher_v3_Matcher* xds_type_matcher_v3_Matcher_OnMatch_matcher(const xds_type_matcher_v3_Matcher_OnMatch *msg) { return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool xds_type_matcher_v3_Matcher_OnMatch_has_action(const xds_type_matcher_v3_Matcher_OnMatch *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_OnMatch_action(const xds_type_matcher_v3_Matcher_OnMatch *msg) { return UPB_READ_ONEOF(msg, const struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
+UPB_INLINE xds_type_matcher_v3_Matcher_OnMatch_on_match_oneofcases xds_type_matcher_v3_Matcher_OnMatch_on_match_case(const xds_type_matcher_v3_Matcher_OnMatch* msg) {
+ return (xds_type_matcher_v3_Matcher_OnMatch_on_match_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_OnMatch_has_matcher(const xds_type_matcher_v3_Matcher_OnMatch* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_OnMatch_clear_matcher(const xds_type_matcher_v3_Matcher_OnMatch* msg) {
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), xds_type_matcher_v3_Matcher_OnMatch_on_match_NOT_SET);
+}
+UPB_INLINE const xds_type_matcher_v3_Matcher* xds_type_matcher_v3_Matcher_OnMatch_matcher(const xds_type_matcher_v3_Matcher_OnMatch* msg) {
+ return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_OnMatch_has_action(const xds_type_matcher_v3_Matcher_OnMatch* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_OnMatch_clear_action(const xds_type_matcher_v3_Matcher_OnMatch* msg) {
+ UPB_WRITE_ONEOF(msg, struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), xds_type_matcher_v3_Matcher_OnMatch_on_match_NOT_SET);
+}
+UPB_INLINE const struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_OnMatch_action(const xds_type_matcher_v3_Matcher_OnMatch* msg) {
+ return UPB_READ_ONEOF(msg, const struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
UPB_INLINE void xds_type_matcher_v3_Matcher_OnMatch_set_matcher(xds_type_matcher_v3_Matcher_OnMatch *msg, xds_type_matcher_v3_Matcher* value) {
- UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher* xds_type_matcher_v3_Matcher_OnMatch_mutable_matcher(xds_type_matcher_v3_Matcher_OnMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher* xds_type_matcher_v3_Matcher_OnMatch_mutable_matcher(xds_type_matcher_v3_Matcher_OnMatch* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher* sub = (struct xds_type_matcher_v3_Matcher*)xds_type_matcher_v3_Matcher_OnMatch_matcher(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_Matcher*)_upb_Message_New(&xds_type_matcher_v3_Matcher_msginit, arena);
@@ -198,9 +241,9 @@ UPB_INLINE struct xds_type_matcher_v3_Matcher* xds_type_matcher_v3_Matcher_OnMat
return sub;
}
UPB_INLINE void xds_type_matcher_v3_Matcher_OnMatch_set_action(xds_type_matcher_v3_Matcher_OnMatch *msg, struct xds_core_v3_TypedExtensionConfig* value) {
- UPB_WRITE_ONEOF(msg, struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_OnMatch_mutable_action(xds_type_matcher_v3_Matcher_OnMatch *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_OnMatch_mutable_action(xds_type_matcher_v3_Matcher_OnMatch* msg, upb_Arena* arena) {
struct xds_core_v3_TypedExtensionConfig* sub = (struct xds_core_v3_TypedExtensionConfig*)xds_type_matcher_v3_Matcher_OnMatch_action(msg);
if (sub == NULL) {
sub = (struct xds_core_v3_TypedExtensionConfig*)_upb_Message_New(&xds_core_v3_TypedExtensionConfig_msginit, arena);
@@ -235,25 +278,35 @@ UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList* xds_type_matcher_v3_Matcher_
return ret;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_MatcherList_serialize(const xds_type_matcher_v3_Matcher_MatcherList* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_MatcherList_serialize_ex(const xds_type_matcher_v3_Matcher_MatcherList* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_has_matchers(const xds_type_matcher_v3_Matcher_MatcherList* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_clear_matchers(const xds_type_matcher_v3_Matcher_MatcherList* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* const* xds_type_matcher_v3_Matcher_MatcherList_matchers(const xds_type_matcher_v3_Matcher_MatcherList* msg, size_t* len) {
+ return (const xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_has_matchers(const xds_type_matcher_v3_Matcher_MatcherList *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* const* xds_type_matcher_v3_Matcher_MatcherList_matchers(const xds_type_matcher_v3_Matcher_MatcherList *msg, size_t *len) { return (const xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher** xds_type_matcher_v3_Matcher_MatcherList_mutable_matchers(xds_type_matcher_v3_Matcher_MatcherList *msg, size_t *len) {
+UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher** xds_type_matcher_v3_Matcher_MatcherList_mutable_matchers(xds_type_matcher_v3_Matcher_MatcherList* msg, size_t* len) {
return (xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher** xds_type_matcher_v3_Matcher_MatcherList_resize_matchers(xds_type_matcher_v3_Matcher_MatcherList *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher** xds_type_matcher_v3_Matcher_MatcherList_resize_matchers(xds_type_matcher_v3_Matcher_MatcherList* msg, size_t len, upb_Arena* arena) {
return (xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* xds_type_matcher_v3_Matcher_MatcherList_add_matchers(xds_type_matcher_v3_Matcher_MatcherList *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* xds_type_matcher_v3_Matcher_MatcherList_add_matchers(xds_type_matcher_v3_Matcher_MatcherList* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* sub = (struct xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher*)_upb_Message_New(&xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -283,11 +336,15 @@ UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_Predicate* xds_type_matcher_v
return ret;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_MatcherList_Predicate_serialize(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_Predicate_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_Predicate_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_MatcherList_Predicate_serialize_ex(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_Predicate_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_Predicate_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
xds_type_matcher_v3_Matcher_MatcherList_Predicate_match_type_single_predicate = 1,
@@ -296,21 +353,50 @@ typedef enum {
xds_type_matcher_v3_Matcher_MatcherList_Predicate_match_type_not_matcher = 4,
xds_type_matcher_v3_Matcher_MatcherList_Predicate_match_type_NOT_SET = 0
} xds_type_matcher_v3_Matcher_MatcherList_Predicate_match_type_oneofcases;
-UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_Predicate_match_type_oneofcases xds_type_matcher_v3_Matcher_MatcherList_Predicate_match_type_case(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg) { return (xds_type_matcher_v3_Matcher_MatcherList_Predicate_match_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 8), int32_t); }
-
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_has_single_predicate(const xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 1; }
-UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* xds_type_matcher_v3_Matcher_MatcherList_Predicate_single_predicate(const xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg) { return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 1, NULL); }
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_has_or_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 2; }
-UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* xds_type_matcher_v3_Matcher_MatcherList_Predicate_or_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg) { return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 2, NULL); }
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_has_and_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 3; }
-UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* xds_type_matcher_v3_Matcher_MatcherList_Predicate_and_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg) { return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 3, NULL); }
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_has_not_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(4, 8)) == 4; }
-UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList_Predicate* xds_type_matcher_v3_Matcher_MatcherList_Predicate_not_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg) { return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherList_Predicate*, UPB_SIZE(0, 0), UPB_SIZE(4, 8), 4, NULL); }
+UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_Predicate_match_type_oneofcases xds_type_matcher_v3_Matcher_MatcherList_Predicate_match_type_case(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return (xds_type_matcher_v3_Matcher_MatcherList_Predicate_match_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_has_single_predicate(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_clear_single_predicate(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), xds_type_matcher_v3_Matcher_MatcherList_Predicate_match_type_NOT_SET);
+}
+UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* xds_type_matcher_v3_Matcher_MatcherList_Predicate_single_predicate(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_has_or_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 2;
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_clear_or_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), xds_type_matcher_v3_Matcher_MatcherList_Predicate_match_type_NOT_SET);
+}
+UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* xds_type_matcher_v3_Matcher_MatcherList_Predicate_or_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 2, NULL);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_has_and_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 3;
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_clear_and_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), xds_type_matcher_v3_Matcher_MatcherList_Predicate_match_type_NOT_SET);
+}
+UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* xds_type_matcher_v3_Matcher_MatcherList_Predicate_and_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 3, NULL);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_has_not_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 4;
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_clear_not_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate*, UPB_SIZE(4, 8), 0, UPB_SIZE(0, 0), xds_type_matcher_v3_Matcher_MatcherList_Predicate_match_type_NOT_SET);
+}
+UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList_Predicate* xds_type_matcher_v3_Matcher_MatcherList_Predicate_not_matcher(const xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg) {
+ return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherList_Predicate*, UPB_SIZE(4, 8), UPB_SIZE(0, 0), 4, NULL);
+}
UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_set_single_predicate(xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* value) {
- UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 1);
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* xds_type_matcher_v3_Matcher_MatcherList_Predicate_mutable_single_predicate(xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* xds_type_matcher_v3_Matcher_MatcherList_Predicate_mutable_single_predicate(xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* sub = (struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate*)xds_type_matcher_v3_Matcher_MatcherList_Predicate_single_predicate(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate*)_upb_Message_New(&xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_msginit, arena);
@@ -320,9 +406,9 @@ UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredic
return sub;
}
UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_set_or_matcher(xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* value) {
- UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 2);
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 2);
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* xds_type_matcher_v3_Matcher_MatcherList_Predicate_mutable_or_matcher(xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* xds_type_matcher_v3_Matcher_MatcherList_Predicate_mutable_or_matcher(xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* sub = (struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*)xds_type_matcher_v3_Matcher_MatcherList_Predicate_or_matcher(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*)_upb_Message_New(&xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit, arena);
@@ -332,9 +418,9 @@ UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateLis
return sub;
}
UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_set_and_matcher(xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* value) {
- UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 3);
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 3);
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* xds_type_matcher_v3_Matcher_MatcherList_Predicate_mutable_and_matcher(xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* xds_type_matcher_v3_Matcher_MatcherList_Predicate_mutable_and_matcher(xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* sub = (struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*)xds_type_matcher_v3_Matcher_MatcherList_Predicate_and_matcher(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList*)_upb_Message_New(&xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit, arena);
@@ -344,9 +430,9 @@ UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateLis
return sub;
}
UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_set_not_matcher(xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate* value) {
- UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate*, UPB_SIZE(0, 0), value, UPB_SIZE(4, 8), 4);
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherList_Predicate*, UPB_SIZE(4, 8), value, UPB_SIZE(0, 0), 4);
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate* xds_type_matcher_v3_Matcher_MatcherList_Predicate_mutable_not_matcher(xds_type_matcher_v3_Matcher_MatcherList_Predicate *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate* xds_type_matcher_v3_Matcher_MatcherList_Predicate_mutable_not_matcher(xds_type_matcher_v3_Matcher_MatcherList_Predicate* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher_MatcherList_Predicate* sub = (struct xds_type_matcher_v3_Matcher_MatcherList_Predicate*)xds_type_matcher_v3_Matcher_MatcherList_Predicate_not_matcher(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_Matcher_MatcherList_Predicate*)_upb_Message_New(&xds_type_matcher_v3_Matcher_MatcherList_Predicate_msginit, arena);
@@ -381,33 +467,57 @@ UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* xd
return ret;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_serialize(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_serialize_ex(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_value_match = 2,
xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_custom_match = 3,
xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_NOT_SET = 0
} xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_oneofcases;
-UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_oneofcases xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_case(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) { return (xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_has_input(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_oneofcases xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_case(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ return (xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_has_input(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_clear_input(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_input(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct xds_core_v3_TypedExtensionConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct xds_core_v3_TypedExtensionConfig*);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_has_value_match(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_clear_value_match(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ UPB_WRITE_ONEOF(msg, struct xds_type_matcher_v3_StringMatcher*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_NOT_SET);
+}
+UPB_INLINE const struct xds_type_matcher_v3_StringMatcher* xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_value_match(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ return UPB_READ_ONEOF(msg, const struct xds_type_matcher_v3_StringMatcher*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_has_custom_match(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_clear_custom_match(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ UPB_WRITE_ONEOF(msg, struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_matcher_NOT_SET);
+}
+UPB_INLINE const struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_custom_match(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg) {
+ return UPB_READ_ONEOF(msg, const struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 3, NULL);
}
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_has_value_match(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE const struct xds_type_matcher_v3_StringMatcher* xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_value_match(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg) { return UPB_READ_ONEOF(msg, const struct xds_type_matcher_v3_StringMatcher*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 2, NULL); }
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_has_custom_match(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_custom_match(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg) { return UPB_READ_ONEOF(msg, const struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_set_input(xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg, struct xds_core_v3_TypedExtensionConfig* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct xds_core_v3_TypedExtensionConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct xds_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_mutable_input(xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_mutable_input(xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg, upb_Arena* arena) {
struct xds_core_v3_TypedExtensionConfig* sub = (struct xds_core_v3_TypedExtensionConfig*)xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_input(msg);
if (sub == NULL) {
sub = (struct xds_core_v3_TypedExtensionConfig*)_upb_Message_New(&xds_core_v3_TypedExtensionConfig_msginit, arena);
@@ -417,9 +527,9 @@ UPB_INLINE struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_
return sub;
}
UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_set_value_match(xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg, struct xds_type_matcher_v3_StringMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct xds_type_matcher_v3_StringMatcher*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, struct xds_type_matcher_v3_StringMatcher*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct xds_type_matcher_v3_StringMatcher* xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_mutable_value_match(xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_StringMatcher* xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_mutable_value_match(xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_StringMatcher* sub = (struct xds_type_matcher_v3_StringMatcher*)xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_value_match(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_StringMatcher*)_upb_Message_New(&xds_type_matcher_v3_StringMatcher_msginit, arena);
@@ -429,9 +539,9 @@ UPB_INLINE struct xds_type_matcher_v3_StringMatcher* xds_type_matcher_v3_Matcher
return sub;
}
UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_set_custom_match(xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg, struct xds_core_v3_TypedExtensionConfig* value) {
- UPB_WRITE_ONEOF(msg, struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_mutable_custom_match(xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_mutable_custom_match(xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate* msg, upb_Arena* arena) {
struct xds_core_v3_TypedExtensionConfig* sub = (struct xds_core_v3_TypedExtensionConfig*)xds_type_matcher_v3_Matcher_MatcherList_Predicate_SinglePredicate_custom_match(msg);
if (sub == NULL) {
sub = (struct xds_core_v3_TypedExtensionConfig*)_upb_Message_New(&xds_core_v3_TypedExtensionConfig_msginit, arena);
@@ -466,25 +576,35 @@ UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* xds_
return ret;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_serialize(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_serialize_ex(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_has_predicate(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_clear_predicate(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList_Predicate* const* xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_predicate(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg, size_t* len) {
+ return (const xds_type_matcher_v3_Matcher_MatcherList_Predicate* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_has_predicate(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList_Predicate* const* xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_predicate(const xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList *msg, size_t *len) { return (const xds_type_matcher_v3_Matcher_MatcherList_Predicate* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_Predicate** xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_mutable_predicate(xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList *msg, size_t *len) {
+UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_Predicate** xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_mutable_predicate(xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg, size_t* len) {
return (xds_type_matcher_v3_Matcher_MatcherList_Predicate**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_Predicate** xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_resize_predicate(xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_Predicate** xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_resize_predicate(xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg, size_t len, upb_Arena* arena) {
return (xds_type_matcher_v3_Matcher_MatcherList_Predicate**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate* xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_add_predicate(xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate* xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList_add_predicate(xds_type_matcher_v3_Matcher_MatcherList_Predicate_PredicateList* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher_MatcherList_Predicate* sub = (struct xds_type_matcher_v3_Matcher_MatcherList_Predicate*)_upb_Message_New(&xds_type_matcher_v3_Matcher_MatcherList_Predicate_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
@@ -514,17 +634,31 @@ UPB_INLINE xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* xds_type_matche
return ret;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_serialize(const xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_serialize_ex(const xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_has_predicate(const xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_clear_predicate(const xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const upb_Message*) = NULL;
}
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_has_predicate(const xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher *msg) { return _upb_hasbit(msg, 1); }
UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherList_Predicate* xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_predicate(const xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const xds_type_matcher_v3_Matcher_MatcherList_Predicate*);
}
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_has_on_match(const xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher *msg) { return _upb_hasbit(msg, 2); }
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_has_on_match(const xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* msg) {
+ return _upb_hasbit(msg, 2);
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_clear_on_match(const xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const upb_Message*) = NULL;
+}
UPB_INLINE const xds_type_matcher_v3_Matcher_OnMatch* xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_on_match(const xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(8, 16), const xds_type_matcher_v3_Matcher_OnMatch*);
}
@@ -533,7 +667,7 @@ UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_set_predica
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(4, 8), xds_type_matcher_v3_Matcher_MatcherList_Predicate*) = value;
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate* xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_mutable_predicate(xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherList_Predicate* xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_mutable_predicate(xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher_MatcherList_Predicate* sub = (struct xds_type_matcher_v3_Matcher_MatcherList_Predicate*)xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_predicate(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_Matcher_MatcherList_Predicate*)_upb_Message_New(&xds_type_matcher_v3_Matcher_MatcherList_Predicate_msginit, arena);
@@ -546,7 +680,7 @@ UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_set_on_matc
_upb_sethas(msg, 2);
*UPB_PTR_AT(msg, UPB_SIZE(8, 16), xds_type_matcher_v3_Matcher_OnMatch*) = value;
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher_OnMatch* xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_mutable_on_match(xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher_OnMatch* xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_mutable_on_match(xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher_OnMatch* sub = (struct xds_type_matcher_v3_Matcher_OnMatch*)xds_type_matcher_v3_Matcher_MatcherList_FieldMatcher_on_match(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_Matcher_OnMatch*)_upb_Message_New(&xds_type_matcher_v3_Matcher_OnMatch_msginit, arena);
@@ -581,11 +715,15 @@ UPB_INLINE xds_type_matcher_v3_Matcher_MatcherTree* xds_type_matcher_v3_Matcher_
return ret;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_MatcherTree_serialize(const xds_type_matcher_v3_Matcher_MatcherTree* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherTree_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherTree_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_MatcherTree_serialize_ex(const xds_type_matcher_v3_Matcher_MatcherTree* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherTree_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherTree_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
xds_type_matcher_v3_Matcher_MatcherTree_tree_type_exact_match_map = 2,
@@ -593,24 +731,51 @@ typedef enum {
xds_type_matcher_v3_Matcher_MatcherTree_tree_type_custom_match = 4,
xds_type_matcher_v3_Matcher_MatcherTree_tree_type_NOT_SET = 0
} xds_type_matcher_v3_Matcher_MatcherTree_tree_type_oneofcases;
-UPB_INLINE xds_type_matcher_v3_Matcher_MatcherTree_tree_type_oneofcases xds_type_matcher_v3_Matcher_MatcherTree_tree_type_case(const xds_type_matcher_v3_Matcher_MatcherTree* msg) { return (xds_type_matcher_v3_Matcher_MatcherTree_tree_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_has_input(const xds_type_matcher_v3_Matcher_MatcherTree *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE xds_type_matcher_v3_Matcher_MatcherTree_tree_type_oneofcases xds_type_matcher_v3_Matcher_MatcherTree_tree_type_case(const xds_type_matcher_v3_Matcher_MatcherTree* msg) {
+ return (xds_type_matcher_v3_Matcher_MatcherTree_tree_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_has_input(const xds_type_matcher_v3_Matcher_MatcherTree* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherTree_clear_input(const xds_type_matcher_v3_Matcher_MatcherTree* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const upb_Message*) = NULL;
+}
UPB_INLINE const struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_MatcherTree_input(const xds_type_matcher_v3_Matcher_MatcherTree* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), const struct xds_core_v3_TypedExtensionConfig*);
+ return *UPB_PTR_AT(msg, UPB_SIZE(8, 8), const struct xds_core_v3_TypedExtensionConfig*);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_has_exact_match_map(const xds_type_matcher_v3_Matcher_MatcherTree* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherTree_clear_exact_match_map(const xds_type_matcher_v3_Matcher_MatcherTree* msg) {
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), xds_type_matcher_v3_Matcher_MatcherTree_tree_type_NOT_SET);
+}
+UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* xds_type_matcher_v3_Matcher_MatcherTree_exact_match_map(const xds_type_matcher_v3_Matcher_MatcherTree* msg) {
+ return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 2, NULL);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_has_prefix_match_map(const xds_type_matcher_v3_Matcher_MatcherTree* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherTree_clear_prefix_match_map(const xds_type_matcher_v3_Matcher_MatcherTree* msg) {
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), xds_type_matcher_v3_Matcher_MatcherTree_tree_type_NOT_SET);
+}
+UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* xds_type_matcher_v3_Matcher_MatcherTree_prefix_match_map(const xds_type_matcher_v3_Matcher_MatcherTree* msg) {
+ return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 3, NULL);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_has_custom_match(const xds_type_matcher_v3_Matcher_MatcherTree* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 4;
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherTree_clear_custom_match(const xds_type_matcher_v3_Matcher_MatcherTree* msg) {
+ UPB_WRITE_ONEOF(msg, struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 16), 0, UPB_SIZE(4, 4), xds_type_matcher_v3_Matcher_MatcherTree_tree_type_NOT_SET);
+}
+UPB_INLINE const struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_MatcherTree_custom_match(const xds_type_matcher_v3_Matcher_MatcherTree* msg) {
+ return UPB_READ_ONEOF(msg, const struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 16), UPB_SIZE(4, 4), 4, NULL);
}
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_has_exact_match_map(const xds_type_matcher_v3_Matcher_MatcherTree *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* xds_type_matcher_v3_Matcher_MatcherTree_exact_match_map(const xds_type_matcher_v3_Matcher_MatcherTree *msg) { return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 2, NULL); }
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_has_prefix_match_map(const xds_type_matcher_v3_Matcher_MatcherTree *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* xds_type_matcher_v3_Matcher_MatcherTree_prefix_match_map(const xds_type_matcher_v3_Matcher_MatcherTree *msg) { return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 3, NULL); }
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_has_custom_match(const xds_type_matcher_v3_Matcher_MatcherTree *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 4; }
-UPB_INLINE const struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_MatcherTree_custom_match(const xds_type_matcher_v3_Matcher_MatcherTree *msg) { return UPB_READ_ONEOF(msg, const struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 4, NULL); }
UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherTree_set_input(xds_type_matcher_v3_Matcher_MatcherTree *msg, struct xds_core_v3_TypedExtensionConfig* value) {
_upb_sethas(msg, 1);
- *UPB_PTR_AT(msg, UPB_SIZE(4, 8), struct xds_core_v3_TypedExtensionConfig*) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(8, 8), struct xds_core_v3_TypedExtensionConfig*) = value;
}
-UPB_INLINE struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_MatcherTree_mutable_input(xds_type_matcher_v3_Matcher_MatcherTree *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_MatcherTree_mutable_input(xds_type_matcher_v3_Matcher_MatcherTree* msg, upb_Arena* arena) {
struct xds_core_v3_TypedExtensionConfig* sub = (struct xds_core_v3_TypedExtensionConfig*)xds_type_matcher_v3_Matcher_MatcherTree_input(msg);
if (sub == NULL) {
sub = (struct xds_core_v3_TypedExtensionConfig*)_upb_Message_New(&xds_core_v3_TypedExtensionConfig_msginit, arena);
@@ -620,9 +785,9 @@ UPB_INLINE struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_
return sub;
}
UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherTree_set_exact_match_map(xds_type_matcher_v3_Matcher_MatcherTree *msg, xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* value) {
- UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 2);
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* xds_type_matcher_v3_Matcher_MatcherTree_mutable_exact_match_map(xds_type_matcher_v3_Matcher_MatcherTree *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* xds_type_matcher_v3_Matcher_MatcherTree_mutable_exact_match_map(xds_type_matcher_v3_Matcher_MatcherTree* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* sub = (struct xds_type_matcher_v3_Matcher_MatcherTree_MatchMap*)xds_type_matcher_v3_Matcher_MatcherTree_exact_match_map(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_Matcher_MatcherTree_MatchMap*)_upb_Message_New(&xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_msginit, arena);
@@ -632,9 +797,9 @@ UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* xds_type_mat
return sub;
}
UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherTree_set_prefix_match_map(xds_type_matcher_v3_Matcher_MatcherTree *msg, xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* value) {
- UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_Matcher_MatcherTree_MatchMap*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 3);
}
-UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* xds_type_matcher_v3_Matcher_MatcherTree_mutable_prefix_match_map(xds_type_matcher_v3_Matcher_MatcherTree *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* xds_type_matcher_v3_Matcher_MatcherTree_mutable_prefix_match_map(xds_type_matcher_v3_Matcher_MatcherTree* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* sub = (struct xds_type_matcher_v3_Matcher_MatcherTree_MatchMap*)xds_type_matcher_v3_Matcher_MatcherTree_prefix_match_map(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_Matcher_MatcherTree_MatchMap*)_upb_Message_New(&xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_msginit, arena);
@@ -644,9 +809,9 @@ UPB_INLINE struct xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* xds_type_mat
return sub;
}
UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherTree_set_custom_match(xds_type_matcher_v3_Matcher_MatcherTree *msg, struct xds_core_v3_TypedExtensionConfig* value) {
- UPB_WRITE_ONEOF(msg, struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 4);
+ UPB_WRITE_ONEOF(msg, struct xds_core_v3_TypedExtensionConfig*, UPB_SIZE(12, 16), value, UPB_SIZE(4, 4), 4);
}
-UPB_INLINE struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_MatcherTree_mutable_custom_match(xds_type_matcher_v3_Matcher_MatcherTree *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_core_v3_TypedExtensionConfig* xds_type_matcher_v3_Matcher_MatcherTree_mutable_custom_match(xds_type_matcher_v3_Matcher_MatcherTree* msg, upb_Arena* arena) {
struct xds_core_v3_TypedExtensionConfig* sub = (struct xds_core_v3_TypedExtensionConfig*)xds_type_matcher_v3_Matcher_MatcherTree_custom_match(msg);
if (sub == NULL) {
sub = (struct xds_core_v3_TypedExtensionConfig*)_upb_Message_New(&xds_core_v3_TypedExtensionConfig_msginit, arena);
@@ -681,31 +846,54 @@ UPB_INLINE xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* xds_type_matcher_v3
return ret;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_serialize(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_serialize_ex(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_has_map(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_clear_map(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE size_t xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_map_size(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* msg) {
+ return _upb_msg_map_size(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_map_get(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* msg, upb_StringView key, xds_type_matcher_v3_Matcher_OnMatch** val) {
+ return _upb_msg_map_get(msg, UPB_SIZE(0, 0), &key, 0, val, sizeof(*val));
+}
+UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry* xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_map_next(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* msg, size_t* iter) {
+ return (const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter);
}
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_has_map(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE size_t xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_map_size(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap *msg) {return _upb_msg_map_size(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_map_get(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap *msg, upb_StringView key, xds_type_matcher_v3_Matcher_OnMatch* *val) { return _upb_msg_map_get(msg, UPB_SIZE(0, 0), &key, 0, val, sizeof(*val)); }
-UPB_INLINE const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry* xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_map_next(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap *msg, size_t* iter) { return (const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter); }
-UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_map_clear(xds_type_matcher_v3_Matcher_MatcherTree_MatchMap *msg) { _upb_msg_map_clear(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_map_set(xds_type_matcher_v3_Matcher_MatcherTree_MatchMap *msg, upb_StringView key, xds_type_matcher_v3_Matcher_OnMatch* val, upb_Arena *a) { return _upb_msg_map_set(msg, UPB_SIZE(0, 0), &key, 0, &val, sizeof(val), a); }
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_map_delete(xds_type_matcher_v3_Matcher_MatcherTree_MatchMap *msg, upb_StringView key) { return _upb_msg_map_delete(msg, UPB_SIZE(0, 0), &key, 0); }
-UPB_INLINE xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry* xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_map_nextmutable(xds_type_matcher_v3_Matcher_MatcherTree_MatchMap *msg, size_t* iter) { return (xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter); }
+UPB_INLINE void xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_map_clear(xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* msg) { _upb_msg_map_clear(msg, UPB_SIZE(0, 0)); }
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_map_set(xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* msg, upb_StringView key, xds_type_matcher_v3_Matcher_OnMatch* val, upb_Arena* a) {
+ return _upb_msg_map_set(msg, UPB_SIZE(0, 0), &key, 0, &val, sizeof(val), a);
+}
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_map_delete(xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* msg, upb_StringView key) {
+ return _upb_msg_map_delete(msg, UPB_SIZE(0, 0), &key, 0);
+}
+UPB_INLINE xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry* xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_map_nextmutable(xds_type_matcher_v3_Matcher_MatcherTree_MatchMap* msg, size_t* iter) {
+ return (xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry*)_upb_msg_map_next(msg, UPB_SIZE(0, 0), iter);
+}
/* xds.type.matcher.v3.Matcher.MatcherTree.MatchMap.MapEntry */
-UPB_INLINE upb_StringView xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_key(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry *msg) {
+UPB_INLINE upb_StringView xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_key(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry* msg) {
upb_StringView ret;
_upb_msg_map_key(msg, &ret, 0);
return ret;
}
-UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_has_value(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16)); }
-UPB_INLINE const xds_type_matcher_v3_Matcher_OnMatch* xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_value(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry *msg) {
+UPB_INLINE bool xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_has_value(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(8, 16));
+}
+UPB_INLINE const xds_type_matcher_v3_Matcher_OnMatch* xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry_value(const xds_type_matcher_v3_Matcher_MatcherTree_MatchMap_MapEntry* msg) {
xds_type_matcher_v3_Matcher_OnMatch* ret;
_upb_msg_map_value(msg, &ret, sizeof(ret));
return ret;
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c
index 14263a09c9..b56ea5e987 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c
@@ -18,20 +18,20 @@ static const upb_MiniTable_Sub xds_type_matcher_v3_RegexMatcher_submsgs[1] = {
};
static const upb_MiniTable_Field xds_type_matcher_v3_RegexMatcher__fields[2] = {
- {1, UPB_SIZE(8, 16), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {2, UPB_SIZE(0, 0), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(12, 24), UPB_SIZE(-1, -1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_type_matcher_v3_RegexMatcher_msginit = {
&xds_type_matcher_v3_RegexMatcher_submsgs[0],
&xds_type_matcher_v3_RegexMatcher__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
const upb_MiniTable xds_type_matcher_v3_RegexMatcher_GoogleRE2_msginit = {
NULL,
NULL,
- UPB_SIZE(0, 0), 0, upb_ExtMode_NonExtendable, 0, 255, 0,
+ UPB_SIZE(0, 0), 0, kUpb_ExtMode_NonExtendable, 0, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h
index aa31eed209..e467859867 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h
@@ -54,28 +54,43 @@ UPB_INLINE xds_type_matcher_v3_RegexMatcher* xds_type_matcher_v3_RegexMatcher_pa
return ret;
}
UPB_INLINE char* xds_type_matcher_v3_RegexMatcher_serialize(const xds_type_matcher_v3_RegexMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_RegexMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_RegexMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_type_matcher_v3_RegexMatcher_serialize_ex(const xds_type_matcher_v3_RegexMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_RegexMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_RegexMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
xds_type_matcher_v3_RegexMatcher_engine_type_google_re2 = 1,
xds_type_matcher_v3_RegexMatcher_engine_type_NOT_SET = 0
} xds_type_matcher_v3_RegexMatcher_engine_type_oneofcases;
-UPB_INLINE xds_type_matcher_v3_RegexMatcher_engine_type_oneofcases xds_type_matcher_v3_RegexMatcher_engine_type_case(const xds_type_matcher_v3_RegexMatcher* msg) { return (xds_type_matcher_v3_RegexMatcher_engine_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool xds_type_matcher_v3_RegexMatcher_has_google_re2(const xds_type_matcher_v3_RegexMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 1; }
-UPB_INLINE const xds_type_matcher_v3_RegexMatcher_GoogleRE2* xds_type_matcher_v3_RegexMatcher_google_re2(const xds_type_matcher_v3_RegexMatcher *msg) { return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_RegexMatcher_GoogleRE2*, UPB_SIZE(8, 16), UPB_SIZE(12, 24), 1, NULL); }
+UPB_INLINE xds_type_matcher_v3_RegexMatcher_engine_type_oneofcases xds_type_matcher_v3_RegexMatcher_engine_type_case(const xds_type_matcher_v3_RegexMatcher* msg) {
+ return (xds_type_matcher_v3_RegexMatcher_engine_type_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(0, 0), int32_t);
+}
+UPB_INLINE bool xds_type_matcher_v3_RegexMatcher_has_google_re2(const xds_type_matcher_v3_RegexMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(0, 0)) == 1;
+}
+UPB_INLINE void xds_type_matcher_v3_RegexMatcher_clear_google_re2(const xds_type_matcher_v3_RegexMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_RegexMatcher_GoogleRE2*, UPB_SIZE(12, 24), 0, UPB_SIZE(0, 0), xds_type_matcher_v3_RegexMatcher_engine_type_NOT_SET);
+}
+UPB_INLINE const xds_type_matcher_v3_RegexMatcher_GoogleRE2* xds_type_matcher_v3_RegexMatcher_google_re2(const xds_type_matcher_v3_RegexMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const xds_type_matcher_v3_RegexMatcher_GoogleRE2*, UPB_SIZE(12, 24), UPB_SIZE(0, 0), 1, NULL);
+}
+UPB_INLINE void xds_type_matcher_v3_RegexMatcher_clear_regex(const xds_type_matcher_v3_RegexMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
+}
UPB_INLINE upb_StringView xds_type_matcher_v3_RegexMatcher_regex(const xds_type_matcher_v3_RegexMatcher* msg) {
- return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView);
+ return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
UPB_INLINE void xds_type_matcher_v3_RegexMatcher_set_google_re2(xds_type_matcher_v3_RegexMatcher *msg, xds_type_matcher_v3_RegexMatcher_GoogleRE2* value) {
- UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_RegexMatcher_GoogleRE2*, UPB_SIZE(8, 16), value, UPB_SIZE(12, 24), 1);
+ UPB_WRITE_ONEOF(msg, xds_type_matcher_v3_RegexMatcher_GoogleRE2*, UPB_SIZE(12, 24), value, UPB_SIZE(0, 0), 1);
}
-UPB_INLINE struct xds_type_matcher_v3_RegexMatcher_GoogleRE2* xds_type_matcher_v3_RegexMatcher_mutable_google_re2(xds_type_matcher_v3_RegexMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_RegexMatcher_GoogleRE2* xds_type_matcher_v3_RegexMatcher_mutable_google_re2(xds_type_matcher_v3_RegexMatcher* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_RegexMatcher_GoogleRE2* sub = (struct xds_type_matcher_v3_RegexMatcher_GoogleRE2*)xds_type_matcher_v3_RegexMatcher_google_re2(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_RegexMatcher_GoogleRE2*)_upb_Message_New(&xds_type_matcher_v3_RegexMatcher_GoogleRE2_msginit, arena);
@@ -85,7 +100,7 @@ UPB_INLINE struct xds_type_matcher_v3_RegexMatcher_GoogleRE2* xds_type_matcher_v
return sub;
}
UPB_INLINE void xds_type_matcher_v3_RegexMatcher_set_regex(xds_type_matcher_v3_RegexMatcher *msg, upb_StringView value) {
- *UPB_PTR_AT(msg, UPB_SIZE(0, 0), upb_StringView) = value;
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = value;
}
/* xds.type.matcher.v3.RegexMatcher.GoogleRE2 */
@@ -113,11 +128,15 @@ UPB_INLINE xds_type_matcher_v3_RegexMatcher_GoogleRE2* xds_type_matcher_v3_Regex
return ret;
}
UPB_INLINE char* xds_type_matcher_v3_RegexMatcher_GoogleRE2_serialize(const xds_type_matcher_v3_RegexMatcher_GoogleRE2* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_RegexMatcher_GoogleRE2_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_RegexMatcher_GoogleRE2_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_type_matcher_v3_RegexMatcher_GoogleRE2_serialize_ex(const xds_type_matcher_v3_RegexMatcher_GoogleRE2* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_RegexMatcher_GoogleRE2_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_RegexMatcher_GoogleRE2_msginit, options, arena, &ptr, len);
+ return ptr;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c
index ec3c77b232..c4e683f7fb 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c
@@ -19,18 +19,18 @@ static const upb_MiniTable_Sub xds_type_matcher_v3_StringMatcher_submsgs[1] = {
};
static const upb_MiniTable_Field xds_type_matcher_v3_StringMatcher__fields[6] = {
- {1, UPB_SIZE(4, 8), UPB_SIZE(-13, -25), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(4, 8), UPB_SIZE(-13, -25), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {3, UPB_SIZE(4, 8), UPB_SIZE(-13, -25), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {5, UPB_SIZE(4, 8), UPB_SIZE(-13, -25), 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
- {6, UPB_SIZE(0, 0), 0, 0, 8, kUpb_FieldMode_Scalar | (upb_FieldRep_1Byte << upb_FieldRep_Shift)},
- {7, UPB_SIZE(4, 8), UPB_SIZE(-13, -25), 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {3, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {5, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
+ {6, UPB_SIZE(0, 0), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
+ {7, UPB_SIZE(8, 8), UPB_SIZE(-5, -5), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_type_matcher_v3_StringMatcher_msginit = {
&xds_type_matcher_v3_StringMatcher_submsgs[0],
&xds_type_matcher_v3_StringMatcher__fields[0],
- UPB_SIZE(16, 32), 6, upb_ExtMode_NonExtendable, 3, 255, 0,
+ UPB_SIZE(16, 24), 6, kUpb_ExtMode_NonExtendable, 3, 255, 0,
};
static const upb_MiniTable_Sub xds_type_matcher_v3_ListStringMatcher_submsgs[1] = {
@@ -38,13 +38,13 @@ static const upb_MiniTable_Sub xds_type_matcher_v3_ListStringMatcher_submsgs[1]
};
static const upb_MiniTable_Field xds_type_matcher_v3_ListStringMatcher__fields[1] = {
- {1, UPB_SIZE(0, 0), 0, 0, 11, kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(0, 0), UPB_SIZE(0, 0), 0, 11, kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_type_matcher_v3_ListStringMatcher_msginit = {
&xds_type_matcher_v3_ListStringMatcher_submsgs[0],
&xds_type_matcher_v3_ListStringMatcher__fields[0],
- UPB_SIZE(8, 8), 1, upb_ExtMode_NonExtendable, 1, 255, 0,
+ UPB_SIZE(8, 8), 1, kUpb_ExtMode_NonExtendable, 1, 255, 0,
};
static const upb_MiniTable *messages_layout[2] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h
index 12be3ea30f..1211783a8f 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h
@@ -56,11 +56,15 @@ UPB_INLINE xds_type_matcher_v3_StringMatcher* xds_type_matcher_v3_StringMatcher_
return ret;
}
UPB_INLINE char* xds_type_matcher_v3_StringMatcher_serialize(const xds_type_matcher_v3_StringMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_StringMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_StringMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_type_matcher_v3_StringMatcher_serialize_ex(const xds_type_matcher_v3_StringMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_StringMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_StringMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
}
typedef enum {
xds_type_matcher_v3_StringMatcher_match_pattern_exact = 1,
@@ -70,35 +74,74 @@ typedef enum {
xds_type_matcher_v3_StringMatcher_match_pattern_contains = 7,
xds_type_matcher_v3_StringMatcher_match_pattern_NOT_SET = 0
} xds_type_matcher_v3_StringMatcher_match_pattern_oneofcases;
-UPB_INLINE xds_type_matcher_v3_StringMatcher_match_pattern_oneofcases xds_type_matcher_v3_StringMatcher_match_pattern_case(const xds_type_matcher_v3_StringMatcher* msg) { return (xds_type_matcher_v3_StringMatcher_match_pattern_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(12, 24), int32_t); }
-
-UPB_INLINE bool xds_type_matcher_v3_StringMatcher_has_exact(const xds_type_matcher_v3_StringMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 1; }
-UPB_INLINE upb_StringView xds_type_matcher_v3_StringMatcher_exact(const xds_type_matcher_v3_StringMatcher *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(12, 24), 1, upb_StringView_FromString("")); }
-UPB_INLINE bool xds_type_matcher_v3_StringMatcher_has_prefix(const xds_type_matcher_v3_StringMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 2; }
-UPB_INLINE upb_StringView xds_type_matcher_v3_StringMatcher_prefix(const xds_type_matcher_v3_StringMatcher *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(12, 24), 2, upb_StringView_FromString("")); }
-UPB_INLINE bool xds_type_matcher_v3_StringMatcher_has_suffix(const xds_type_matcher_v3_StringMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 3; }
-UPB_INLINE upb_StringView xds_type_matcher_v3_StringMatcher_suffix(const xds_type_matcher_v3_StringMatcher *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(12, 24), 3, upb_StringView_FromString("")); }
-UPB_INLINE bool xds_type_matcher_v3_StringMatcher_has_safe_regex(const xds_type_matcher_v3_StringMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 5; }
-UPB_INLINE const struct xds_type_matcher_v3_RegexMatcher* xds_type_matcher_v3_StringMatcher_safe_regex(const xds_type_matcher_v3_StringMatcher *msg) { return UPB_READ_ONEOF(msg, const struct xds_type_matcher_v3_RegexMatcher*, UPB_SIZE(4, 8), UPB_SIZE(12, 24), 5, NULL); }
+UPB_INLINE xds_type_matcher_v3_StringMatcher_match_pattern_oneofcases xds_type_matcher_v3_StringMatcher_match_pattern_case(const xds_type_matcher_v3_StringMatcher* msg) {
+ return (xds_type_matcher_v3_StringMatcher_match_pattern_oneofcases)*UPB_PTR_AT(msg, UPB_SIZE(4, 4), int32_t);
+}
+UPB_INLINE bool xds_type_matcher_v3_StringMatcher_has_exact(const xds_type_matcher_v3_StringMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 1;
+}
+UPB_INLINE void xds_type_matcher_v3_StringMatcher_clear_exact(const xds_type_matcher_v3_StringMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), xds_type_matcher_v3_StringMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE upb_StringView xds_type_matcher_v3_StringMatcher_exact(const xds_type_matcher_v3_StringMatcher* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 1, upb_StringView_FromString(""));
+}
+UPB_INLINE bool xds_type_matcher_v3_StringMatcher_has_prefix(const xds_type_matcher_v3_StringMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 2;
+}
+UPB_INLINE void xds_type_matcher_v3_StringMatcher_clear_prefix(const xds_type_matcher_v3_StringMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), xds_type_matcher_v3_StringMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE upb_StringView xds_type_matcher_v3_StringMatcher_prefix(const xds_type_matcher_v3_StringMatcher* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 2, upb_StringView_FromString(""));
+}
+UPB_INLINE bool xds_type_matcher_v3_StringMatcher_has_suffix(const xds_type_matcher_v3_StringMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 3;
+}
+UPB_INLINE void xds_type_matcher_v3_StringMatcher_clear_suffix(const xds_type_matcher_v3_StringMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), xds_type_matcher_v3_StringMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE upb_StringView xds_type_matcher_v3_StringMatcher_suffix(const xds_type_matcher_v3_StringMatcher* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 3, upb_StringView_FromString(""));
+}
+UPB_INLINE bool xds_type_matcher_v3_StringMatcher_has_safe_regex(const xds_type_matcher_v3_StringMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 5;
+}
+UPB_INLINE void xds_type_matcher_v3_StringMatcher_clear_safe_regex(const xds_type_matcher_v3_StringMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, struct xds_type_matcher_v3_RegexMatcher*, UPB_SIZE(8, 8), 0, UPB_SIZE(4, 4), xds_type_matcher_v3_StringMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE const struct xds_type_matcher_v3_RegexMatcher* xds_type_matcher_v3_StringMatcher_safe_regex(const xds_type_matcher_v3_StringMatcher* msg) {
+ return UPB_READ_ONEOF(msg, const struct xds_type_matcher_v3_RegexMatcher*, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 5, NULL);
+}
+UPB_INLINE void xds_type_matcher_v3_StringMatcher_clear_ignore_case(const xds_type_matcher_v3_StringMatcher* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = 0;
+}
UPB_INLINE bool xds_type_matcher_v3_StringMatcher_ignore_case(const xds_type_matcher_v3_StringMatcher* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool);
}
-UPB_INLINE bool xds_type_matcher_v3_StringMatcher_has_contains(const xds_type_matcher_v3_StringMatcher *msg) { return _upb_getoneofcase(msg, UPB_SIZE(12, 24)) == 7; }
-UPB_INLINE upb_StringView xds_type_matcher_v3_StringMatcher_contains(const xds_type_matcher_v3_StringMatcher *msg) { return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), UPB_SIZE(12, 24), 7, upb_StringView_FromString("")); }
+UPB_INLINE bool xds_type_matcher_v3_StringMatcher_has_contains(const xds_type_matcher_v3_StringMatcher* msg) {
+ return _upb_getoneofcase(msg, UPB_SIZE(4, 4)) == 7;
+}
+UPB_INLINE void xds_type_matcher_v3_StringMatcher_clear_contains(const xds_type_matcher_v3_StringMatcher* msg) {
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), upb_StringView_FromDataAndSize(NULL, 0), UPB_SIZE(4, 4), xds_type_matcher_v3_StringMatcher_match_pattern_NOT_SET);
+}
+UPB_INLINE upb_StringView xds_type_matcher_v3_StringMatcher_contains(const xds_type_matcher_v3_StringMatcher* msg) {
+ return UPB_READ_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), UPB_SIZE(4, 4), 7, upb_StringView_FromString(""));
+}
UPB_INLINE void xds_type_matcher_v3_StringMatcher_set_exact(xds_type_matcher_v3_StringMatcher *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(12, 24), 1);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 1);
}
UPB_INLINE void xds_type_matcher_v3_StringMatcher_set_prefix(xds_type_matcher_v3_StringMatcher *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(12, 24), 2);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 2);
}
UPB_INLINE void xds_type_matcher_v3_StringMatcher_set_suffix(xds_type_matcher_v3_StringMatcher *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(12, 24), 3);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 3);
}
UPB_INLINE void xds_type_matcher_v3_StringMatcher_set_safe_regex(xds_type_matcher_v3_StringMatcher *msg, struct xds_type_matcher_v3_RegexMatcher* value) {
- UPB_WRITE_ONEOF(msg, struct xds_type_matcher_v3_RegexMatcher*, UPB_SIZE(4, 8), value, UPB_SIZE(12, 24), 5);
+ UPB_WRITE_ONEOF(msg, struct xds_type_matcher_v3_RegexMatcher*, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 5);
}
-UPB_INLINE struct xds_type_matcher_v3_RegexMatcher* xds_type_matcher_v3_StringMatcher_mutable_safe_regex(xds_type_matcher_v3_StringMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_RegexMatcher* xds_type_matcher_v3_StringMatcher_mutable_safe_regex(xds_type_matcher_v3_StringMatcher* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_RegexMatcher* sub = (struct xds_type_matcher_v3_RegexMatcher*)xds_type_matcher_v3_StringMatcher_safe_regex(msg);
if (sub == NULL) {
sub = (struct xds_type_matcher_v3_RegexMatcher*)_upb_Message_New(&xds_type_matcher_v3_RegexMatcher_msginit, arena);
@@ -111,7 +154,7 @@ UPB_INLINE void xds_type_matcher_v3_StringMatcher_set_ignore_case(xds_type_match
*UPB_PTR_AT(msg, UPB_SIZE(0, 0), bool) = value;
}
UPB_INLINE void xds_type_matcher_v3_StringMatcher_set_contains(xds_type_matcher_v3_StringMatcher *msg, upb_StringView value) {
- UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(4, 8), value, UPB_SIZE(12, 24), 7);
+ UPB_WRITE_ONEOF(msg, upb_StringView, UPB_SIZE(8, 8), value, UPB_SIZE(4, 4), 7);
}
/* xds.type.matcher.v3.ListStringMatcher */
@@ -139,25 +182,35 @@ UPB_INLINE xds_type_matcher_v3_ListStringMatcher* xds_type_matcher_v3_ListString
return ret;
}
UPB_INLINE char* xds_type_matcher_v3_ListStringMatcher_serialize(const xds_type_matcher_v3_ListStringMatcher* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_ListStringMatcher_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_ListStringMatcher_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_type_matcher_v3_ListStringMatcher_serialize_ex(const xds_type_matcher_v3_ListStringMatcher* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_matcher_v3_ListStringMatcher_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_matcher_v3_ListStringMatcher_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE bool xds_type_matcher_v3_ListStringMatcher_has_patterns(const xds_type_matcher_v3_ListStringMatcher* msg) {
+ return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE void xds_type_matcher_v3_ListStringMatcher_clear_patterns(const xds_type_matcher_v3_ListStringMatcher* msg) {
+ _upb_array_detach(msg, UPB_SIZE(0, 0));
+}
+UPB_INLINE const xds_type_matcher_v3_StringMatcher* const* xds_type_matcher_v3_ListStringMatcher_patterns(const xds_type_matcher_v3_ListStringMatcher* msg, size_t* len) {
+ return (const xds_type_matcher_v3_StringMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE bool xds_type_matcher_v3_ListStringMatcher_has_patterns(const xds_type_matcher_v3_ListStringMatcher *msg) { return _upb_has_submsg_nohasbit(msg, UPB_SIZE(0, 0)); }
-UPB_INLINE const xds_type_matcher_v3_StringMatcher* const* xds_type_matcher_v3_ListStringMatcher_patterns(const xds_type_matcher_v3_ListStringMatcher *msg, size_t *len) { return (const xds_type_matcher_v3_StringMatcher* const*)_upb_array_accessor(msg, UPB_SIZE(0, 0), len); }
-UPB_INLINE xds_type_matcher_v3_StringMatcher** xds_type_matcher_v3_ListStringMatcher_mutable_patterns(xds_type_matcher_v3_ListStringMatcher *msg, size_t *len) {
+UPB_INLINE xds_type_matcher_v3_StringMatcher** xds_type_matcher_v3_ListStringMatcher_mutable_patterns(xds_type_matcher_v3_ListStringMatcher* msg, size_t* len) {
return (xds_type_matcher_v3_StringMatcher**)_upb_array_mutable_accessor(msg, UPB_SIZE(0, 0), len);
}
-UPB_INLINE xds_type_matcher_v3_StringMatcher** xds_type_matcher_v3_ListStringMatcher_resize_patterns(xds_type_matcher_v3_ListStringMatcher *msg, size_t len, upb_Arena *arena) {
+UPB_INLINE xds_type_matcher_v3_StringMatcher** xds_type_matcher_v3_ListStringMatcher_resize_patterns(xds_type_matcher_v3_ListStringMatcher* msg, size_t len, upb_Arena* arena) {
return (xds_type_matcher_v3_StringMatcher**)_upb_Array_Resize_accessor2(msg, UPB_SIZE(0, 0), len, UPB_SIZE(2, 3), arena);
}
-UPB_INLINE struct xds_type_matcher_v3_StringMatcher* xds_type_matcher_v3_ListStringMatcher_add_patterns(xds_type_matcher_v3_ListStringMatcher *msg, upb_Arena *arena) {
+UPB_INLINE struct xds_type_matcher_v3_StringMatcher* xds_type_matcher_v3_ListStringMatcher_add_patterns(xds_type_matcher_v3_ListStringMatcher* msg, upb_Arena* arena) {
struct xds_type_matcher_v3_StringMatcher* sub = (struct xds_type_matcher_v3_StringMatcher*)_upb_Message_New(&xds_type_matcher_v3_StringMatcher_msginit, arena);
- bool ok = _upb_Array_Append_accessor2(
- msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
+ bool ok = _upb_Array_Append_accessor2(msg, UPB_SIZE(0, 0), UPB_SIZE(2, 3), &sub, arena);
if (!ok) return NULL;
return sub;
}
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c
index 625b9e092b..d41cdd429c 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c
@@ -19,14 +19,14 @@ static const upb_MiniTable_Sub xds_type_v3_TypedStruct_submsgs[1] = {
};
static const upb_MiniTable_Field xds_type_v3_TypedStruct__fields[2] = {
- {1, UPB_SIZE(4, 8), 0, 0, 9, kUpb_FieldMode_Scalar | (upb_FieldRep_StringView << upb_FieldRep_Shift)},
- {2, UPB_SIZE(12, 24), 1, 0, 11, kUpb_FieldMode_Scalar | (upb_FieldRep_Pointer << upb_FieldRep_Shift)},
+ {1, UPB_SIZE(4, 8), UPB_SIZE(0, 0), kUpb_NoSub, 9, kUpb_FieldMode_Scalar | (kUpb_FieldRep_StringView << kUpb_FieldRep_Shift)},
+ {2, UPB_SIZE(12, 24), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
};
const upb_MiniTable xds_type_v3_TypedStruct_msginit = {
&xds_type_v3_TypedStruct_submsgs[0],
&xds_type_v3_TypedStruct__fields[0],
- UPB_SIZE(16, 32), 2, upb_ExtMode_NonExtendable, 2, 255, 0,
+ UPB_SIZE(16, 32), 2, kUpb_ExtMode_NonExtendable, 2, 255, 0,
};
static const upb_MiniTable *messages_layout[1] = {
diff --git a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h
index 6279de15bd..51500aa50b 100644
--- a/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h
+++ b/contrib/libs/grpc/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h
@@ -53,16 +53,28 @@ UPB_INLINE xds_type_v3_TypedStruct* xds_type_v3_TypedStruct_parse_ex(const char*
return ret;
}
UPB_INLINE char* xds_type_v3_TypedStruct_serialize(const xds_type_v3_TypedStruct* msg, upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_v3_TypedStruct_msginit, 0, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_v3_TypedStruct_msginit, 0, arena, &ptr, len);
+ return ptr;
}
UPB_INLINE char* xds_type_v3_TypedStruct_serialize_ex(const xds_type_v3_TypedStruct* msg, int options,
upb_Arena* arena, size_t* len) {
- return upb_Encode(msg, &xds_type_v3_TypedStruct_msginit, options, arena, len);
+ char* ptr;
+ (void)upb_Encode(msg, &xds_type_v3_TypedStruct_msginit, options, arena, &ptr, len);
+ return ptr;
+}
+UPB_INLINE void xds_type_v3_TypedStruct_clear_type_url(const xds_type_v3_TypedStruct* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView) = upb_StringView_FromDataAndSize(NULL, 0);
}
UPB_INLINE upb_StringView xds_type_v3_TypedStruct_type_url(const xds_type_v3_TypedStruct* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(4, 8), upb_StringView);
}
-UPB_INLINE bool xds_type_v3_TypedStruct_has_value(const xds_type_v3_TypedStruct *msg) { return _upb_hasbit(msg, 1); }
+UPB_INLINE bool xds_type_v3_TypedStruct_has_value(const xds_type_v3_TypedStruct* msg) {
+ return _upb_hasbit(msg, 1);
+}
+UPB_INLINE void xds_type_v3_TypedStruct_clear_value(const xds_type_v3_TypedStruct* msg) {
+ *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const upb_Message*) = NULL;
+}
UPB_INLINE const struct google_protobuf_Struct* xds_type_v3_TypedStruct_value(const xds_type_v3_TypedStruct* msg) {
return *UPB_PTR_AT(msg, UPB_SIZE(12, 24), const struct google_protobuf_Struct*);
}
@@ -74,7 +86,7 @@ UPB_INLINE void xds_type_v3_TypedStruct_set_value(xds_type_v3_TypedStruct *msg,
_upb_sethas(msg, 1);
*UPB_PTR_AT(msg, UPB_SIZE(12, 24), struct google_protobuf_Struct*) = value;
}
-UPB_INLINE struct google_protobuf_Struct* xds_type_v3_TypedStruct_mutable_value(xds_type_v3_TypedStruct *msg, upb_Arena *arena) {
+UPB_INLINE struct google_protobuf_Struct* xds_type_v3_TypedStruct_mutable_value(xds_type_v3_TypedStruct* msg, upb_Arena* arena) {
struct google_protobuf_Struct* sub = (struct google_protobuf_Struct*)xds_type_v3_TypedStruct_value(msg);
if (sub == NULL) {
sub = (struct google_protobuf_Struct*)_upb_Message_New(&google_protobuf_Struct_msginit, arena);
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c
index e44d929d2d..49d8e417eb 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c
@@ -10,289 +10,82 @@
#include "envoy/admin/v3/config_dump.upbdefs.h"
#include "envoy/admin/v3/config_dump.upb.h"
+extern _upb_DefPool_Init envoy_admin_v3_config_dump_shared_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_bootstrap_v3_bootstrap_proto_upbdefinit;
extern _upb_DefPool_Init google_protobuf_any_proto_upbdefinit;
extern _upb_DefPool_Init google_protobuf_timestamp_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
-static const char descriptor[6865] = {'\n', ' ', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'd', 'm', 'i', 'n', '/', 'v', '3', '/', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'd',
+static const char descriptor[1648] = {'\n', ' ', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'd', 'm', 'i', 'n', '/', 'v', '3', '/', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'd',
'u', 'm', 'p', '.', 'p', 'r', 'o', 't', 'o', '\022', '\016', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3',
-'\032', ')', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '/',
-'v', '3', '/', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'p', 'r', 'o', 't', 'o', '\032', '\031', 'g', 'o', 'o', 'g', 'l',
-'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'a', 'n', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'g', 'o', 'o',
-'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', '.', 'p', 'r',
-'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a',
-'t', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o',
-'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\"', 'c', '\n', '\n', 'C', 'o',
-'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\022', '.', '\n', '\007', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\001', ' ', '\003', '(', '\013',
-'2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\007', 'c',
-'o', 'n', 'f', 'i', 'g', 's', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i',
-'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\"', '\225', '\002', '\n', '\022',
-'U', 'p', 'd', 'a', 't', 'e', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e', '\022', 'G', '\n', '\024', 'f', 'a', 'i',
-'l', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024',
-'.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\023', 'f', 'a', 'i',
-'l', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\022', 'J', '\n', '\023', 'l', 'a', 's', 't', '_',
-'u', 'p', 'd', 'a', 't', 'e', '_', 'a', 't', 't', 'e', 'm', 'p', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o',
-'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\021',
-'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'A', 't', 't', 'e', 'm', 'p', 't', '\022', '\030', '\n', '\007', 'd', 'e', 't', 'a',
-'i', 'l', 's', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\007', 'd', 'e', 't', 'a', 'i', 'l', 's', '\022', '!', '\n', '\014', 'v', 'e', 'r',
-'s', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I',
-'n', 'f', 'o', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v',
-'2', 'a', 'l', 'p', 'h', 'a', '.', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e',
-'\"', '\310', '\001', '\n', '\023', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\022',
-'B', '\n', '\t', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '\030', '\001', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'B', 'o', 'o',
-'t', 's', 't', 'r', 'a', 'p', 'R', '\t', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '\022', '=', '\n', '\014', 'l', 'a', 's', 't',
-'_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
-'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p',
-'d', 'a', 't', 'e', 'd', ':', '.', '\232', '\305', '\210', '\036', ')', '\n', '\'', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n',
-'.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', 'C', 'o', 'n', 'f', 'i', 'g', 'D',
-'u', 'm', 'p', '\"', '\363', '\t', '\n', '\023', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u',
-'m', 'p', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\001', ' ', '\001', '(', '\t', 'R',
-'\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', ']', '\n', '\020', 's', 't', 'a', 't', 'i', 'c', '_', 'l', 'i',
-'s', 't', 'e', 'n', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm',
-'i', 'n', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p',
-'.', 'S', 't', 'a', 't', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'R', '\017', 's', 't', 'a', 't', 'i', 'c', 'L', 'i',
-'s', 't', 'e', 'n', 'e', 'r', 's', '\022', '`', '\n', '\021', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'l', 'i', 's', 't', 'e', 'n',
-'e', 'r', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '3', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v',
-'3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n',
-'a', 'm', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'R', '\020', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'L', 'i', 's', 't',
-'e', 'n', 'e', 'r', 's', '\032', '\300', '\001', '\n', '\016', 'S', 't', 'a', 't', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '\022',
-'0', '\n', '\010', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l',
-'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\010', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '\022',
-'=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g',
-'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R',
-'\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', ':', '=', '\232', '\305', '\210', '\036', '8', '\n', '6', 'e', 'n', 'v', 'o',
-'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's',
-'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'S', 't', 'a', 't', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r',
-'\032', '\357', '\001', '\n', '\024', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'S', 't', 'a', 't', 'e',
-'\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 'v',
-'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', '0', '\n', '\010', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '\030', '\002', ' ',
-'\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y',
-'R', '\010', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e',
-'d', '\030', '\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
-'.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', ':', 'C',
-'\232', '\305', '\210', '\036', '>', '\n', '<', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h',
-'a', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n',
-'a', 'm', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'S', 't', 'a', 't', 'e', '\032', '\222', '\004', '\n', '\017', 'D', 'y', 'n',
-'a', 'm', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(',
-'\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '[', '\n', '\014', 'a', 'c', 't', 'i', 'v', 'e', '_', 's', 't', 'a', 't', 'e', '\030', '\002',
-' ', '\001', '(', '\013', '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'L', 'i', 's',
-'t', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'L',
-'i', 's', 't', 'e', 'n', 'e', 'r', 'S', 't', 'a', 't', 'e', 'R', '\013', 'a', 'c', 't', 'i', 'v', 'e', 'S', 't', 'a', 't', 'e',
-'\022', ']', '\n', '\r', 'w', 'a', 'r', 'm', 'i', 'n', 'g', '_', 's', 't', 'a', 't', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '8',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's',
-'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e',
-'r', 'S', 't', 'a', 't', 'e', 'R', '\014', 'w', 'a', 'r', 'm', 'i', 'n', 'g', 'S', 't', 'a', 't', 'e', '\022', '_', '\n', '\016', 'd',
-'r', 'a', 'i', 'n', 'i', 'n', 'g', '_', 's', 't', 'a', 't', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '8', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f',
-'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'S', 't', 'a',
-'t', 'e', 'R', '\r', 'd', 'r', 'a', 'i', 'n', 'i', 'n', 'g', 'S', 't', 'a', 't', 'e', '\022', 'C', '\n', '\013', 'e', 'r', 'r', 'o',
-'r', '_', 's', 't', 'a', 't', 'e', '\030', '\005', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm',
-'i', 'n', '.', 'v', '3', '.', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e', 'R',
-'\n', 'e', 'r', 'r', 'o', 'r', 'S', 't', 'a', 't', 'e', '\022', 'I', '\n', '\r', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', 't', 'a',
-'t', 'u', 's', '\030', '\006', ' ', '\001', '(', '\016', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v',
-'3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'S', 't', 'a', 't', 'u', 's', 'R', '\014', 'c',
-'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', ':', '>', '\232', '\305', '\210', '\036', '9', '\n', '7', 'e', 'n', 'v', 'o', 'y',
-'.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C',
-'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r',
-':', '.', '\232', '\305', '\210', '\036', ')', '\n', '\'', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l',
-'p', 'h', 'a', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\"', '\312',
-'\007', '\n', '\022', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\022', '!', '\n', '\014',
-'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i',
-'o', 'n', 'I', 'n', 'f', 'o', '\022', 'Y', '\n', '\017', 's', 't', 'a', 't', 'i', 'c', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', 's',
-'\030', '\002', ' ', '\003', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'C',
-'l', 'u', 's', 't', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'S', 't', 'a', 't', 'i', 'c', 'C',
-'l', 'u', 's', 't', 'e', 'r', 'R', '\016', 's', 't', 'a', 't', 'i', 'c', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', '\022', 'i', '\n',
-'\027', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'a', 'c', 't', 'i', 'v', 'e', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\030',
-'\003', ' ', '\003', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'C', 'l',
-'u', 's', 't', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'C',
-'l', 'u', 's', 't', 'e', 'r', 'R', '\025', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'A', 'c', 't', 'i', 'v', 'e', 'C', 'l', 'u', 's',
-'t', 'e', 'r', 's', '\022', 'k', '\n', '\030', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'w', 'a', 'r', 'm', 'i', 'n', 'g', '_', 'c',
-'l', 'u', 's', 't', 'e', 'r', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm',
-'i', 'n', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.',
-'D', 'y', 'n', 'a', 'm', 'i', 'c', 'C', 'l', 'u', 's', 't', 'e', 'r', 'R', '\026', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'W', 'a',
-'r', 'm', 'i', 'n', 'g', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', '\032', '\273', '\001', '\n', '\r', 'S', 't', 'a', 't', 'i', 'c', 'C',
-'l', 'u', 's', 't', 'e', 'r', '\022', '.', '\n', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024',
-'.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\007', 'c', 'l', 'u',
-'s', 't', 'e', 'r', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\002', ' ', '\001', '(',
-'\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's',
-'t', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', ':', ';', '\232', '\305', '\210', '\036', '6', '\n',
-'4', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'C', 'l', 'u', 's',
-'t', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'S', 't', 'a', 't', 'i', 'c', 'C', 'l', 'u', 's',
-'t', 'e', 'r', '\032', '\360', '\002', '\n', '\016', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'C', 'l', 'u', 's', 't', 'e', 'r', '\022', '!', '\n',
-'\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's',
-'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', '.', '\n', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2',
-'\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\007', 'c', 'l',
-'u', 's', 't', 'e', 'r', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001',
-'(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e',
-'s', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', '\022', 'C', '\n', '\013', 'e', 'r', 'r',
-'o', 'r', '_', 's', 't', 'a', 't', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd',
-'m', 'i', 'n', '.', 'v', '3', '.', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e',
-'R', '\n', 'e', 'r', 'r', 'o', 'r', 'S', 't', 'a', 't', 'e', '\022', 'I', '\n', '\r', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', 't',
-'a', 't', 'u', 's', '\030', '\005', ' ', '\001', '(', '\016', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.',
-'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'S', 't', 'a', 't', 'u', 's', 'R', '\014',
-'c', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', ':', '<', '\232', '\305', '\210', '\036', '7', '\n', '5', 'e', 'n', 'v', 'o',
-'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', 'C',
-'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'C', 'l', 'u', 's', 't', 'e', 'r', ':',
-'-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p',
-'h', 'a', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\"', '\335', '\006', '\n',
-'\020', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\022', 'd', '\n', '\024', 's', 't', 'a', 't',
-'i', 'c', '_', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '2', '.',
-'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f',
-'i', 'g', 'D', 'u', 'm', 'p', '.', 'S', 't', 'a', 't', 'i', 'c', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'R',
-'\022', 's', 't', 'a', 't', 'i', 'c', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022', 'g', '\n', '\025', 'd', 'y',
-'n', 'a', 'm', 'i', 'c', '_', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\003', ' ', '\003', '(', '\013',
-'2', '3', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 's', 'C',
-'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n',
-'f', 'i', 'g', 'R', '\023', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\032',
-'\312', '\001', '\n', '\021', 'S', 't', 'a', 't', 'i', 'c', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '7', '\n', '\014',
-'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\013', 'r', 'o', 'u', 't', 'e', 'C', 'o', 'n',
-'f', 'i', 'g', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013',
+'\032', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'd', 'm', 'i', 'n', '/', 'v', '3', '/', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'd',
+'u', 'm', 'p', '_', 's', 'h', 'a', 'r', 'e', 'd', '.', 'p', 'r', 'o', 't', 'o', '\032', ')', 'e', 'n', 'v', 'o', 'y', '/', 'c',
+'o', 'n', 'f', 'i', 'g', '/', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '/', 'v', '3', '/', 'b', 'o', 'o', 't', 's', 't',
+'r', 'a', 'p', '.', 'p', 'r', 'o', 't', 'o', '\032', '\031', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u',
+'f', '/', 'a', 'n', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o',
+'b', 'u', 'f', '/', 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a',
+'/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o',
+'\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o',
+'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\"', 'c', '\n', '\n', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\022',
+'.', '\n', '\007', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e',
+'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\007', 'c', 'o', 'n', 'f', 'i', 'g', 's', ':', '%', '\232',
+'\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a',
+'.', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\"', '\310', '\001', '\n', '\023', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p',
+'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\022', 'B', '\n', '\t', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '\030', '\001',
+' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's',
+'t', 'r', 'a', 'p', '.', 'v', '3', '.', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', 'R', '\t', 'b', 'o', 'o', 't', 's', 't',
+'r', 'a', 'p', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013',
'2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't',
-'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', ':', '=', '\232', '\305', '\210', '\036', '8', '\n', '6',
-'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'R', 'o', 'u', 't', 'e',
-'s', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'S', 't', 'a', 't', 'i', 'c', 'R', 'o', 'u', 't', 'e', 'C', 'o',
-'n', 'f', 'i', 'g', '\032', '\377', '\002', '\n', '\022', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f',
-'i', 'g', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\001', ' ', '\001', '(', '\t', 'R',
-'\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', '7', '\n', '\014', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n',
-'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b',
-'u', 'f', '.', 'A', 'n', 'y', 'R', '\013', 'r', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '=', '\n', '\014', 'l', 'a',
-'s', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e',
-'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't',
-'U', 'p', 'd', 'a', 't', 'e', 'd', '\022', 'C', '\n', '\013', 'e', 'r', 'r', 'o', 'r', '_', 's', 't', 'a', 't', 'e', '\030', '\004', ' ',
-'\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'U', 'p', 'd', 'a',
-'t', 'e', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e', 'R', '\n', 'e', 'r', 'r', 'o', 'r', 'S', 't', 'a', 't',
-'e', '\022', 'I', '\n', '\r', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', 't', 'a', 't', 'u', 's', '\030', '\005', ' ', '\001', '(', '\016', '2',
-'$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'R', 'e',
-'s', 'o', 'u', 'r', 'c', 'e', 'S', 't', 'a', 't', 'u', 's', 'R', '\014', 'c', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u',
-'s', ':', '>', '\232', '\305', '\210', '\036', '9', '\n', '7', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a',
-'l', 'p', 'h', 'a', '.', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n',
-'a', 'm', 'i', 'c', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', ':', '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e',
-'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'R', 'o', 'u', 't', 'e', 's',
-'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\"', '\214', '\010', '\n', '\026', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't',
-'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\022', '~', '\n', '\033', 'i', 'n', 'l', 'i', 'n', 'e', '_', 's', 'c',
-'o', 'p', 'e', 'd', '_', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\001', ' ', '\003', '(', '\013', '2',
-'?', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o',
-'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'I', 'n', 'l', 'i', 'n', 'e', 'S', 'c', 'o', 'p',
-'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', 'R', '\030', 'i', 'n', 'l', 'i', 'n', 'e', 'S', 'c', 'o',
-'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022', '\201', '\001', '\n', '\034', 'd', 'y', 'n', 'a', 'm',
-'i', 'c', '_', 's', 'c', 'o', 'p', 'e', 'd', '_', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\002',
-' ', '\003', '(', '\013', '2', '@', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'S', 'c', 'o',
-'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm',
-'i', 'c', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', 'R', '\031', 'd', 'y', 'n',
-'a', 'm', 'i', 'c', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\032', '\201', '\002',
-'\n', '\030', 'I', 'n', 'l', 'i', 'n', 'e', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g',
-'s', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'F', '\n', '\024',
-'s', 'c', 'o', 'p', 'e', 'd', '_', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\002', ' ', '\003', '(',
-'\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\022',
-'s', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022', '=', '\n', '\014', 'l', 'a', 's',
-'t', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.',
-'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U',
-'p', 'd', 'a', 't', 'e', 'd', ':', 'J', '\232', '\305', '\210', '\036', 'E', '\n', 'C', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i',
-'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n',
-'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'I', 'n', 'l', 'i', 'n', 'e', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e',
-'C', 'o', 'n', 'f', 'i', 'g', 's', '\032', '\266', '\003', '\n', '\031', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'S', 'c', 'o', 'p', 'e', 'd',
-'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(',
-'\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\002',
-' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', 'F', '\n', '\024', 's', 'c', 'o', 'p',
-'e', 'd', '_', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\024', '.',
-'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\022', 's', 'c', 'o', 'p',
-'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p',
-'d', 'a', 't', 'e', 'd', '\030', '\004', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
-'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't',
-'e', 'd', '\022', 'C', '\n', '\013', 'e', 'r', 'r', 'o', 'r', '_', 's', 't', 'a', 't', 'e', '\030', '\005', ' ', '\001', '(', '\013', '2', '\"',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'a', 'i',
-'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e', 'R', '\n', 'e', 'r', 'r', 'o', 'r', 'S', 't', 'a', 't', 'e', '\022', 'I', '\n', '\r',
-'c', 'l', 'i', 'e', 'n', 't', '_', 's', 't', 'a', 't', 'u', 's', '\030', '\006', ' ', '\001', '(', '\016', '2', '$', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'R', 'e', 's', 'o', 'u', 'r', 'c',
-'e', 'S', 't', 'a', 't', 'u', 's', 'R', '\014', 'c', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', ':', 'K', '\232', '\305',
-'\210', '\036', 'F', '\n', 'D', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.',
-'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y',
-'n', 'a', 'm', 'i', 'c', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', ':', '1',
-'\232', '\305', '\210', '\036', ',', '\n', '*', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h',
-'a', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\"',
-'\267', '\007', '\n', '\021', 'S', 'e', 'c', 'r', 'e', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\022', 'U', '\n', '\016',
-'s', 't', 'a', 't', 'i', 'c', '_', 's', 'e', 'c', 'r', 'e', 't', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '.', '.', 'e', 'n',
-'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'S', 'e', 'c', 'r', 'e', 't', 's', 'C', 'o', 'n', 'f', 'i',
-'g', 'D', 'u', 'm', 'p', '.', 'S', 't', 'a', 't', 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', 'R', '\r', 's', 't', 'a', 't', 'i',
-'c', 'S', 'e', 'c', 'r', 'e', 't', 's', '\022', 'e', '\n', '\026', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'a', 'c', 't', 'i', 'v',
-'e', '_', 's', 'e', 'c', 'r', 'e', 't', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a',
-'d', 'm', 'i', 'n', '.', 'v', '3', '.', 'S', 'e', 'c', 'r', 'e', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p',
-'.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', 'R', '\024', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'A', 'c',
-'t', 'i', 'v', 'e', 'S', 'e', 'c', 'r', 'e', 't', 's', '\022', 'g', '\n', '\027', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'w', 'a',
-'r', 'm', 'i', 'n', 'g', '_', 's', 'e', 'c', 'r', 'e', 't', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '/', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'S', 'e', 'c', 'r', 'e', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g',
-'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', 'R', '\025', 'd', 'y', 'n', 'a', 'm',
-'i', 'c', 'W', 'a', 'r', 'm', 'i', 'n', 'g', 'S', 'e', 'c', 'r', 'e', 't', 's', '\032', '\377', '\002', '\n', '\r', 'D', 'y', 'n', 'a',
-'m', 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004',
-'n', 'a', 'm', 'e', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\002', ' ', '\001', '(',
-'\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p',
-'d', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
-'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't',
-'e', 'd', '\022', ',', '\n', '\006', 's', 'e', 'c', 'r', 'e', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\006', 's', 'e', 'c', 'r', 'e', 't', '\022', 'C',
-'\n', '\013', 'e', 'r', 'r', 'o', 'r', '_', 's', 't', 'a', 't', 'e', '\030', '\005', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'a', 'i', 'l', 'u', 'r', 'e',
-'S', 't', 'a', 't', 'e', 'R', '\n', 'e', 'r', 'r', 'o', 'r', 'S', 't', 'a', 't', 'e', '\022', 'I', '\n', '\r', 'c', 'l', 'i', 'e',
-'n', 't', '_', 's', 't', 'a', 't', 'u', 's', '\030', '\006', ' ', '\001', '(', '\016', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a',
-'d', 'm', 'i', 'n', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'S', 't', 'a',
-'t', 'u', 's', 'R', '\014', 'c', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', ':', ':', '\232', '\305', '\210', '\036', '5', '\n',
-'3', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'S', 'e', 'c', 'r',
-'e', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'S', 'e', 'c', 'r',
-'e', 't', '\032', '\312', '\001', '\n', '\014', 'S', 't', 'a', 't', 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', '\022', '\022', '\n', '\004', 'n', 'a',
-'m', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p',
-'d', 'a', 't', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
-'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't',
-'e', 'd', '\022', ',', '\n', '\006', 's', 'e', 'c', 'r', 'e', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\006', 's', 'e', 'c', 'r', 'e', 't', ':', '9',
-'\232', '\305', '\210', '\036', '4', '\n', '2', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h',
-'a', '.', 'S', 'e', 'c', 'r', 'e', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'S', 't', 'a', 't', 'i',
-'c', 'S', 'e', 'c', 'r', 'e', 't', ':', ',', '\232', '\305', '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm',
+'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', ':', '.', '\232', '\305', '\210', '\036', ')', '\n', '\'',
+'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'B', 'o', 'o', 't', 's',
+'t', 'r', 'a', 'p', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\"', '\267', '\007', '\n', '\021', 'S', 'e', 'c', 'r', 'e', 't',
+'s', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\022', 'U', '\n', '\016', 's', 't', 'a', 't', 'i', 'c', '_', 's', 'e', 'c',
+'r', 'e', 't', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.',
+'v', '3', '.', 'S', 'e', 'c', 'r', 'e', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'S', 't', 'a', 't',
+'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', 'R', '\r', 's', 't', 'a', 't', 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', 's', '\022', 'e',
+'\n', '\026', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'a', 'c', 't', 'i', 'v', 'e', '_', 's', 'e', 'c', 'r', 'e', 't', 's', '\030',
+'\002', ' ', '\003', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'S', 'e',
+'c', 'r', 'e', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'S', 'e',
+'c', 'r', 'e', 't', 'R', '\024', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'A', 'c', 't', 'i', 'v', 'e', 'S', 'e', 'c', 'r', 'e', 't',
+'s', '\022', 'g', '\n', '\027', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'w', 'a', 'r', 'm', 'i', 'n', 'g', '_', 's', 'e', 'c', 'r',
+'e', 't', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v',
+'3', '.', 'S', 'e', 'c', 'r', 'e', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm',
+'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', 'R', '\025', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'W', 'a', 'r', 'm', 'i', 'n', 'g', 'S',
+'e', 'c', 'r', 'e', 't', 's', '\032', '\377', '\002', '\n', '\r', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', '\022',
+'\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '!', '\n', '\014', 'v', 'e',
+'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n',
+'I', 'n', 'f', 'o', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(',
+'\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's',
+'t', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', '\022', ',', '\n', '\006', 's', 'e', 'c', 'r',
+'e', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
+'f', '.', 'A', 'n', 'y', 'R', '\006', 's', 'e', 'c', 'r', 'e', 't', '\022', 'C', '\n', '\013', 'e', 'r', 'r', 'o', 'r', '_', 's', 't',
+'a', 't', 'e', '\030', '\005', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v',
+'3', '.', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e', 'R', '\n', 'e', 'r', 'r',
+'o', 'r', 'S', 't', 'a', 't', 'e', '\022', 'I', '\n', '\r', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', 't', 'a', 't', 'u', 's', '\030',
+'\006', ' ', '\001', '(', '\016', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'C', 'l',
+'i', 'e', 'n', 't', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'S', 't', 'a', 't', 'u', 's', 'R', '\014', 'c', 'l', 'i', 'e', 'n',
+'t', 'S', 't', 'a', 't', 'u', 's', ':', ':', '\232', '\305', '\210', '\036', '5', '\n', '3', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm',
'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'S', 'e', 'c', 'r', 'e', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D',
-'u', 'm', 'p', '\"', '\336', '\005', '\n', '\023', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u',
-'m', 'p', '\022', 'p', '\n', '\027', 's', 't', 'a', 't', 'i', 'c', '_', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '_', 'c', 'o', 'n',
-'f', 'i', 'g', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.',
-'v', '3', '.', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'S', 't',
-'a', 't', 'i', 'c', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\025', 's', 't', 'a', 't', 'i',
-'c', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022', 's', '\n', '\030', 'd', 'y', 'n', 'a', 'm',
-'i', 'c', '_', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\003', ' ', '\003', '(', '\013',
-'2', '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'E', 'n', 'd', 'p', 'o', 'i', 'n',
-'t', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'E', 'n', 'd', 'p', 'o',
-'i', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\026', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'E', 'n', 'd', 'p', 'o', 'i', 'n',
-'t', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\032', '\224', '\001', '\n', '\024', 'S', 't', 'a', 't', 'i', 'c', 'E', 'n', 'd', 'p', 'o', 'i',
-'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '=', '\n', '\017', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '_', 'c', 'o', 'n', 'f',
-'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
-'f', '.', 'A', 'n', 'y', 'R', '\016', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '=', '\n', '\014',
-'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a',
-'s', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', '\032', '\310', '\002', '\n', '\025', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'E', 'n', 'd', 'p',
-'o', 'i', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f',
-'o', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', '=', '\n', '\017', 'e',
-'n', 'd', 'p', 'o', 'i', 'n', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o',
-'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\016', 'e', 'n', 'd', 'p', 'o', 'i',
-'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030',
-'\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T',
-'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', '\022', 'C', '\n', '\013',
-'e', 'r', 'r', 'o', 'r', '_', 's', 't', 'a', 't', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y',
-'.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 'S', 't',
-'a', 't', 'e', 'R', '\n', 'e', 'r', 'r', 'o', 'r', 'S', 't', 'a', 't', 'e', '\022', 'I', '\n', '\r', 'c', 'l', 'i', 'e', 'n', 't',
-'_', 's', 't', 'a', 't', 'u', 's', '\030', '\005', ' ', '\001', '(', '\016', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm',
-'i', 'n', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'S', 't', 'a', 't', 'u',
-'s', 'R', '\014', 'c', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', '*', ']', '\n', '\024', 'C', 'l', 'i', 'e', 'n', 't',
-'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'S', 't', 'a', 't', 'u', 's', '\022', '\013', '\n', '\007', 'U', 'N', 'K', 'N', 'O', 'W', 'N',
-'\020', '\000', '\022', '\r', '\n', '\t', 'R', 'E', 'Q', 'U', 'E', 'S', 'T', 'E', 'D', '\020', '\001', '\022', '\022', '\n', '\016', 'D', 'O', 'E', 'S',
-'_', 'N', 'O', 'T', '_', 'E', 'X', 'I', 'S', 'T', '\020', '\002', '\022', '\t', '\n', '\005', 'A', 'C', 'K', 'E', 'D', '\020', '\003', '\022', '\n',
-'\n', '\006', 'N', 'A', 'C', 'K', 'E', 'D', '\020', '\004', 'B', 'x', '\n', '\034', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o',
-'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', 'B', '\017', 'C', 'o', 'n', 'f', 'i', 'g',
-'D', 'u', 'm', 'p', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '=', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e',
-'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n',
-'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'd', 'm', 'i', 'n', '/', 'v', '3', ';', 'a', 'd', 'm', 'i', 'n', 'v', '3', '\272',
-'\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', '\032', '\312', '\001', '\n', '\014', 'S', 't', 'a',
+'t', 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004',
+'n', 'a', 'm', 'e', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\002', ' ', '\001', '(',
+'\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's',
+'t', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', '\022', ',', '\n', '\006', 's', 'e', 'c', 'r',
+'e', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
+'f', '.', 'A', 'n', 'y', 'R', '\006', 's', 'e', 'c', 'r', 'e', 't', ':', '9', '\232', '\305', '\210', '\036', '4', '\n', '2', 'e', 'n', 'v',
+'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'S', 'e', 'c', 'r', 'e', 't', 's', 'C',
+'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'S', 't', 'a', 't', 'i', 'c', 'S', 'e', 'c', 'r', 'e', 't', ':', ',', '\232',
+'\305', '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a',
+'.', 'S', 'e', 'c', 'r', 'e', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', 'B', 'x', '\n', '\034', 'i', 'o', '.',
+'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3',
+'B', '\017', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '=', 'g', 'i', 't', 'h',
+'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't',
+'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'd', 'm', 'i', 'n', '/', 'v', '3', ';',
+'a', 'd', 'm', 'i', 'n', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
-static _upb_DefPool_Init *deps[6] = {
+static _upb_DefPool_Init *deps[7] = {
+ &envoy_admin_v3_config_dump_shared_proto_upbdefinit,
&envoy_config_bootstrap_v3_bootstrap_proto_upbdefinit,
&google_protobuf_any_proto_upbdefinit,
&google_protobuf_timestamp_proto_upbdefinit,
@@ -305,5 +98,5 @@ _upb_DefPool_Init envoy_admin_v3_config_dump_proto_upbdefinit = {
deps,
&envoy_admin_v3_config_dump_proto_upb_file_layout,
"envoy/admin/v3/config_dump.proto",
- UPB_STRINGVIEW_INIT(descriptor, 6865)
+ UPB_STRINGVIEW_INIT(descriptor, 1648)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h
index 48e15c88dc..c06712d999 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h
@@ -26,81 +26,11 @@ UPB_INLINE const upb_MessageDef *envoy_admin_v3_ConfigDump_getmsgdef(upb_DefPool
return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ConfigDump");
}
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_UpdateFailureState_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.UpdateFailureState");
-}
-
UPB_INLINE const upb_MessageDef *envoy_admin_v3_BootstrapConfigDump_getmsgdef(upb_DefPool *s) {
_upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.BootstrapConfigDump");
}
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_ListenersConfigDump_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ListenersConfigDump");
-}
-
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_ListenersConfigDump_StaticListener_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ListenersConfigDump.StaticListener");
-}
-
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_ListenersConfigDump_DynamicListenerState_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ListenersConfigDump.DynamicListenerState");
-}
-
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_ListenersConfigDump_DynamicListener_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ListenersConfigDump.DynamicListener");
-}
-
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_ClustersConfigDump_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ClustersConfigDump");
-}
-
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_ClustersConfigDump_StaticCluster_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ClustersConfigDump.StaticCluster");
-}
-
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_ClustersConfigDump_DynamicCluster_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ClustersConfigDump.DynamicCluster");
-}
-
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_RoutesConfigDump_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.RoutesConfigDump");
-}
-
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.RoutesConfigDump.StaticRouteConfig");
-}
-
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.RoutesConfigDump.DynamicRouteConfig");
-}
-
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_ScopedRoutesConfigDump_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ScopedRoutesConfigDump");
-}
-
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ScopedRoutesConfigDump.InlineScopedRouteConfigs");
-}
-
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ScopedRoutesConfigDump.DynamicScopedRouteConfigs");
-}
-
UPB_INLINE const upb_MessageDef *envoy_admin_v3_SecretsConfigDump_getmsgdef(upb_DefPool *s) {
_upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.SecretsConfigDump");
@@ -116,21 +46,6 @@ UPB_INLINE const upb_MessageDef *envoy_admin_v3_SecretsConfigDump_StaticSecret_g
return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.SecretsConfigDump.StaticSecret");
}
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_EndpointsConfigDump_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.EndpointsConfigDump");
-}
-
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.EndpointsConfigDump.StaticEndpointConfig");
-}
-
-UPB_INLINE const upb_MessageDef *envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.EndpointsConfigDump.DynamicEndpointConfig");
-}
-
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c
new file mode 100644
index 0000000000..184b48221c
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c
@@ -0,0 +1,256 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/admin/v3/config_dump_shared.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#include "upb/def.h"
+#include "envoy/admin/v3/config_dump_shared.upbdefs.h"
+#include "envoy/admin/v3/config_dump_shared.upb.h"
+
+extern _upb_DefPool_Init google_protobuf_any_proto_upbdefinit;
+extern _upb_DefPool_Init google_protobuf_timestamp_proto_upbdefinit;
+extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
+extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
+static const char descriptor[5577] = {'\n', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'd', 'm', 'i', 'n', '/', 'v', '3', '/', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'd',
+'u', 'm', 'p', '_', 's', 'h', 'a', 'r', 'e', 'd', '.', 'p', 'r', 'o', 't', 'o', '\022', '\016', 'e', 'n', 'v', 'o', 'y', '.', 'a',
+'d', 'm', 'i', 'n', '.', 'v', '3', '\032', '\031', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/',
+'a', 'n', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u',
+'f', '/', 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a',
+'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!',
+'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i',
+'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\"', '\225', '\002', '\n', '\022', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'a', 'i', 'l', 'u', 'r',
+'e', 'S', 't', 'a', 't', 'e', '\022', 'G', '\n', '\024', 'f', 'a', 'i', 'l', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', 'u', 'r',
+'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
+'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\023', 'f', 'a', 'i', 'l', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a',
+'t', 'i', 'o', 'n', '\022', 'J', '\n', '\023', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', '_', 'a', 't', 't', 'e', 'm',
+'p', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
+'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\021', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'A', 't',
+'t', 'e', 'm', 'p', 't', '\022', '\030', '\n', '\007', 'd', 'e', 't', 'a', 'i', 'l', 's', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\007', 'd',
+'e', 't', 'a', 'i', 'l', 's', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\004', ' ',
+'\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&',
+'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'U', 'p', 'd', 'a', 't',
+'e', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e', '\"', '\363', '\t', '\n', '\023', 'L', 'i', 's', 't', 'e', 'n', 'e',
+'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i',
+'n', 'f', 'o', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', ']', '\n',
+'\020', 's', 't', 'a', 't', 'i', 'c', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '2',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's',
+'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'S', 't', 'a', 't', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r',
+'R', '\017', 's', 't', 'a', 't', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', '\022', '`', '\n', '\021', 'd', 'y', 'n', 'a',
+'m', 'i', 'c', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '3', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f',
+'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'R', '\020', 'd',
+'y', 'n', 'a', 'm', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', '\032', '\300', '\001', '\n', '\016', 'S', 't', 'a', 't', 'i',
+'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '\022', '0', '\n', '\010', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '\030', '\001', ' ', '\001',
+'(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R',
+'\010', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd',
+'\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
+'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', ':', '=', '\232',
+'\305', '\210', '\036', '8', '\n', '6', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a',
+'.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'S', 't', 'a', 't',
+'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '\032', '\357', '\001', '\n', '\024', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'L', 'i', 's',
+'t', 'e', 'n', 'e', 'r', 'S', 't', 'a', 't', 'e', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f',
+'o', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', '0', '\n', '\010', 'l',
+'i', 's', 't', 'e', 'n', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
+'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\010', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '\022', '=', '\n', '\014', 'l',
+'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l',
+'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's',
+'t', 'U', 'p', 'd', 'a', 't', 'e', 'd', ':', 'C', '\232', '\305', '\210', '\036', '>', '\n', '<', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd',
+'m', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f',
+'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'S', 't', 'a',
+'t', 'e', '\032', '\222', '\004', '\n', '\017', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '\022', '\022', '\n',
+'\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '[', '\n', '\014', 'a', 'c', 't', 'i',
+'v', 'e', '_', 's', 't', 'a', 't', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd',
+'m', 'i', 'n', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm',
+'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'S', 't', 'a', 't', 'e', 'R', '\013', 'a',
+'c', 't', 'i', 'v', 'e', 'S', 't', 'a', 't', 'e', '\022', ']', '\n', '\r', 'w', 'a', 'r', 'm', 'i', 'n', 'g', '_', 's', 't', 'a',
+'t', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3',
+'.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a',
+'m', 'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'S', 't', 'a', 't', 'e', 'R', '\014', 'w', 'a', 'r', 'm', 'i', 'n', 'g',
+'S', 't', 'a', 't', 'e', '\022', '_', '\n', '\016', 'd', 'r', 'a', 'i', 'n', 'i', 'n', 'g', '_', 's', 't', 'a', 't', 'e', '\030', '\004',
+' ', '\001', '(', '\013', '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'L', 'i', 's',
+'t', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'L',
+'i', 's', 't', 'e', 'n', 'e', 'r', 'S', 't', 'a', 't', 'e', 'R', '\r', 'd', 'r', 'a', 'i', 'n', 'i', 'n', 'g', 'S', 't', 'a',
+'t', 'e', '\022', 'C', '\n', '\013', 'e', 'r', 'r', 'o', 'r', '_', 's', 't', 'a', 't', 'e', '\030', '\005', ' ', '\001', '(', '\013', '2', '\"',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'a', 'i',
+'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e', 'R', '\n', 'e', 'r', 'r', 'o', 'r', 'S', 't', 'a', 't', 'e', '\022', 'I', '\n', '\r',
+'c', 'l', 'i', 'e', 'n', 't', '_', 's', 't', 'a', 't', 'u', 's', '\030', '\006', ' ', '\001', '(', '\016', '2', '$', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'R', 'e', 's', 'o', 'u', 'r', 'c',
+'e', 'S', 't', 'a', 't', 'u', 's', 'R', '\014', 'c', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', ':', '>', '\232', '\305',
+'\210', '\036', '9', '\n', '7', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.',
+'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm',
+'i', 'c', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', ':', '.', '\232', '\305', '\210', '\036', ')', '\n', '\'', 'e', 'n', 'v', 'o', 'y', '.',
+'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C', 'o',
+'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\"', '\312', '\007', '\n', '\022', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', 'C', 'o', 'n', 'f',
+'i', 'g', 'D', 'u', 'm', 'p', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\001', ' ',
+'\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', 'Y', '\n', '\017', 's', 't', 'a', 't', 'i',
+'c', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u',
+'m', 'p', '.', 'S', 't', 'a', 't', 'i', 'c', 'C', 'l', 'u', 's', 't', 'e', 'r', 'R', '\016', 's', 't', 'a', 't', 'i', 'c', 'C',
+'l', 'u', 's', 't', 'e', 'r', 's', '\022', 'i', '\n', '\027', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'a', 'c', 't', 'i', 'v', 'e',
+'_', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a',
+'d', 'm', 'i', 'n', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm',
+'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'C', 'l', 'u', 's', 't', 'e', 'r', 'R', '\025', 'd', 'y', 'n', 'a', 'm', 'i', 'c',
+'A', 'c', 't', 'i', 'v', 'e', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', '\022', 'k', '\n', '\030', 'd', 'y', 'n', 'a', 'm', 'i', 'c',
+'_', 'w', 'a', 'r', 'm', 'i', 'n', 'g', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '1',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', 'C',
+'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'C', 'l', 'u', 's', 't', 'e', 'r', 'R',
+'\026', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'W', 'a', 'r', 'm', 'i', 'n', 'g', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', '\032', '\273',
+'\001', '\n', '\r', 'S', 't', 'a', 't', 'i', 'c', 'C', 'l', 'u', 's', 't', 'e', 'r', '\022', '.', '\n', '\007', 'c', 'l', 'u', 's', 't',
+'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
+'f', '.', 'A', 'n', 'y', 'R', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p',
+'d', 'a', 't', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
+'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't',
+'e', 'd', ':', ';', '\232', '\305', '\210', '\036', '6', '\n', '4', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2',
+'a', 'l', 'p', 'h', 'a', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.',
+'S', 't', 'a', 't', 'i', 'c', 'C', 'l', 'u', 's', 't', 'e', 'r', '\032', '\360', '\002', '\n', '\016', 'D', 'y', 'n', 'a', 'm', 'i', 'c',
+'C', 'l', 'u', 's', 't', 'e', 'r', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\001',
+' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', '.', '\n', '\007', 'c', 'l', 'u', 's',
+'t', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b',
+'u', 'f', '.', 'A', 'n', 'y', 'R', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u',
+'p', 'd', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o',
+'t', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a',
+'t', 'e', 'd', '\022', 'C', '\n', '\013', 'e', 'r', 'r', 'o', 'r', '_', 's', 't', 'a', 't', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2',
+'\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'a',
+'i', 'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e', 'R', '\n', 'e', 'r', 'r', 'o', 'r', 'S', 't', 'a', 't', 'e', '\022', 'I', '\n',
+'\r', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', 't', 'a', 't', 'u', 's', '\030', '\005', ' ', '\001', '(', '\016', '2', '$', '.', 'e', 'n',
+'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'R', 'e', 's', 'o', 'u', 'r',
+'c', 'e', 'S', 't', 'a', 't', 'u', 's', 'R', '\014', 'c', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', ':', '<', '\232',
+'\305', '\210', '\036', '7', '\n', '5', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a',
+'.', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm',
+'i', 'c', 'C', 'l', 'u', 's', 't', 'e', 'r', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'a',
+'d', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', 'C', 'o', 'n', 'f',
+'i', 'g', 'D', 'u', 'm', 'p', '\"', '\335', '\006', '\n', '\020', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u',
+'m', 'p', '\022', 'd', '\n', '\024', 's', 't', 'a', 't', 'i', 'c', '_', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g',
+'s', '\030', '\002', ' ', '\003', '(', '\013', '2', '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.',
+'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'S', 't', 'a', 't', 'i', 'c', 'R', 'o',
+'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\022', 's', 't', 'a', 't', 'i', 'c', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n',
+'f', 'i', 'g', 's', '\022', 'g', '\n', '\025', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n',
+'f', 'i', 'g', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '3', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.',
+'v', '3', '.', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm',
+'i', 'c', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\023', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'R', 'o', 'u',
+'t', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\032', '\312', '\001', '\n', '\021', 'S', 't', 'a', 't', 'i', 'c', 'R', 'o', 'u', 't', 'e',
+'C', 'o', 'n', 'f', 'i', 'g', '\022', '7', '\n', '\014', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ',
+'\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y',
+'R', '\013', 'r', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd',
+'a', 't', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
+'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e',
+'d', ':', '=', '\232', '\305', '\210', '\036', '8', '\n', '6', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a',
+'l', 'p', 'h', 'a', '.', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'S', 't', 'a',
+'t', 'i', 'c', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\377', '\002', '\n', '\022', 'D', 'y', 'n', 'a', 'm', 'i',
+'c', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i',
+'n', 'f', 'o', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', '7', '\n',
+'\014', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o',
+'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\013', 'r', 'o', 'u', 't', 'e', 'C', 'o',
+'n', 'f', 'i', 'g', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(',
+'\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's',
+'t', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', '\022', 'C', '\n', '\013', 'e', 'r', 'r', 'o',
+'r', '_', 's', 't', 'a', 't', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm',
+'i', 'n', '.', 'v', '3', '.', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e', 'R',
+'\n', 'e', 'r', 'r', 'o', 'r', 'S', 't', 'a', 't', 'e', '\022', 'I', '\n', '\r', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', 't', 'a',
+'t', 'u', 's', '\030', '\005', ' ', '\001', '(', '\016', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v',
+'3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'S', 't', 'a', 't', 'u', 's', 'R', '\014', 'c',
+'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', ':', '>', '\232', '\305', '\210', '\036', '9', '\n', '7', 'e', 'n', 'v', 'o', 'y',
+'.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f',
+'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g',
+':', '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l',
+'p', 'h', 'a', '.', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\"', '\214', '\010', '\n', '\026',
+'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\022', '~', '\n',
+'\033', 'i', 'n', 'l', 'i', 'n', 'e', '_', 's', 'c', 'o', 'p', 'e', 'd', '_', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f',
+'i', 'g', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '?', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v',
+'3', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.',
+'I', 'n', 'l', 'i', 'n', 'e', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', 'R',
+'\030', 'i', 'n', 'l', 'i', 'n', 'e', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's',
+'\022', '\201', '\001', '\n', '\034', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 's', 'c', 'o', 'p', 'e', 'd', '_', 'r', 'o', 'u', 't', 'e',
+'_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '@', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd',
+'m', 'i', 'n', '.', 'v', '3', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g',
+'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o',
+'n', 'f', 'i', 'g', 's', 'R', '\031', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e',
+'C', 'o', 'n', 'f', 'i', 'g', 's', '\032', '\201', '\002', '\n', '\030', 'I', 'n', 'l', 'i', 'n', 'e', 'S', 'c', 'o', 'p', 'e', 'd', 'R',
+'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t',
+'R', '\004', 'n', 'a', 'm', 'e', '\022', 'F', '\n', '\024', 's', 'c', 'o', 'p', 'e', 'd', '_', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o',
+'n', 'f', 'i', 'g', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
+'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\022', 's', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f',
+'i', 'g', 's', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\013',
+'2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't',
+'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', ':', 'J', '\232', '\305', '\210', '\036', 'E', '\n', 'C',
+'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'S', 'c', 'o', 'p', 'e',
+'d', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'I', 'n', 'l', 'i', 'n', 'e', 'S',
+'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\032', '\266', '\003', '\n', '\031', 'D', 'y', 'n',
+'a', 'm', 'i', 'c', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022', '\022', '\n',
+'\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's',
+'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n',
+'f', 'o', '\022', 'F', '\n', '\024', 's', 'c', 'o', 'p', 'e', 'd', '_', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g',
+'s', '\030', '\003', ' ', '\003', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
+'.', 'A', 'n', 'y', 'R', '\022', 's', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022',
+'=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\004', ' ', '\001', '(', '\013', '2', '\032', '.', 'g',
+'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R',
+'\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', '\022', 'C', '\n', '\013', 'e', 'r', 'r', 'o', 'r', '_', 's', 't', 'a',
+'t', 'e', '\030', '\005', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3',
+'.', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e', 'R', '\n', 'e', 'r', 'r', 'o',
+'r', 'S', 't', 'a', 't', 'e', '\022', 'I', '\n', '\r', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', 't', 'a', 't', 'u', 's', '\030', '\006',
+' ', '\001', '(', '\016', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'C', 'l', 'i',
+'e', 'n', 't', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'S', 't', 'a', 't', 'u', 's', 'R', '\014', 'c', 'l', 'i', 'e', 'n', 't',
+'S', 't', 'a', 't', 'u', 's', ':', 'K', '\232', '\305', '\210', '\036', 'F', '\n', 'D', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i',
+'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n',
+'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't',
+'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', ':', '1', '\232', '\305', '\210', '\036', ',', '\n', '*', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd',
+'m', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', 'C',
+'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\"', '\336', '\005', '\n', '\023', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 's', 'C', 'o',
+'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '\022', 'p', '\n', '\027', 's', 't', 'a', 't', 'i', 'c', '_', 'e', 'n', 'd', 'p', 'o', 'i',
+'n', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D',
+'u', 'm', 'p', '.', 'S', 't', 'a', 't', 'i', 'c', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'R',
+'\025', 's', 't', 'a', 't', 'i', 'c', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022', 's', '\n',
+'\030', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's',
+'\030', '\003', ' ', '\003', '(', '\013', '2', '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'E',
+'n', 'd', 'p', 'o', 'i', 'n', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i',
+'c', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\026', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'E',
+'n', 'd', 'p', 'o', 'i', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\032', '\224', '\001', '\n', '\024', 'S', 't', 'a', 't', 'i', 'c',
+'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '=', '\n', '\017', 'e', 'n', 'd', 'p', 'o', 'i', 'n',
+'t', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
+'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\016', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'C', 'o', 'n', 'f',
+'i', 'g', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2',
+'\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a',
+'m', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', '\032', '\310', '\002', '\n', '\025', 'D', 'y', 'n', 'a', 'm',
+'i', 'c', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i',
+'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f',
+'o', '\022', '=', '\n', '\017', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(',
+'\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\016',
+'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p',
+'d', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
+'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't',
+'e', 'd', '\022', 'C', '\n', '\013', 'e', 'r', 'r', 'o', 'r', '_', 's', 't', 'a', 't', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\"',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'a', 'i',
+'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e', 'R', '\n', 'e', 'r', 'r', 'o', 'r', 'S', 't', 'a', 't', 'e', '\022', 'I', '\n', '\r',
+'c', 'l', 'i', 'e', 'n', 't', '_', 's', 't', 'a', 't', 'u', 's', '\030', '\005', ' ', '\001', '(', '\016', '2', '$', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'R', 'e', 's', 'o', 'u', 'r', 'c',
+'e', 'S', 't', 'a', 't', 'u', 's', 'R', '\014', 'c', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', '*', ']', '\n', '\024',
+'C', 'l', 'i', 'e', 'n', 't', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'S', 't', 'a', 't', 'u', 's', '\022', '\013', '\n', '\007', 'U',
+'N', 'K', 'N', 'O', 'W', 'N', '\020', '\000', '\022', '\r', '\n', '\t', 'R', 'E', 'Q', 'U', 'E', 'S', 'T', 'E', 'D', '\020', '\001', '\022', '\022',
+'\n', '\016', 'D', 'O', 'E', 'S', '_', 'N', 'O', 'T', '_', 'E', 'X', 'I', 'S', 'T', '\020', '\002', '\022', '\t', '\n', '\005', 'A', 'C', 'K',
+'E', 'D', '\020', '\003', '\022', '\n', '\n', '\006', 'N', 'A', 'C', 'K', 'E', 'D', '\020', '\004', 'B', '~', '\n', '\034', 'i', 'o', '.', 'e', 'n',
+'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', 'B', '\025',
+'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', 'S', 'h', 'a', 'r', 'e', 'd', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '=',
+'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-',
+'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'd', 'm', 'i', 'n',
+'/', 'v', '3', ';', 'a', 'd', 'm', 'i', 'n', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't',
+'o', '3',
+};
+
+static _upb_DefPool_Init *deps[5] = {
+ &google_protobuf_any_proto_upbdefinit,
+ &google_protobuf_timestamp_proto_upbdefinit,
+ &udpa_annotations_status_proto_upbdefinit,
+ &udpa_annotations_versioning_proto_upbdefinit,
+ NULL
+};
+
+_upb_DefPool_Init envoy_admin_v3_config_dump_shared_proto_upbdefinit = {
+ deps,
+ &envoy_admin_v3_config_dump_shared_proto_upb_file_layout,
+ "envoy/admin/v3/config_dump_shared.proto",
+ UPB_STRINGVIEW_INIT(descriptor, 5577)
+};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h
new file mode 100644
index 0000000000..bfb4ea7420
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h
@@ -0,0 +1,115 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/admin/v3/config_dump_shared.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#ifndef ENVOY_ADMIN_V3_CONFIG_DUMP_SHARED_PROTO_UPBDEFS_H_
+#define ENVOY_ADMIN_V3_CONFIG_DUMP_SHARED_PROTO_UPBDEFS_H_
+
+#include "upb/def.h"
+#include "upb/port_def.inc"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "upb/def.h"
+
+#include "upb/port_def.inc"
+
+extern _upb_DefPool_Init envoy_admin_v3_config_dump_shared_proto_upbdefinit;
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_UpdateFailureState_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.UpdateFailureState");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_ListenersConfigDump_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ListenersConfigDump");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_ListenersConfigDump_StaticListener_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ListenersConfigDump.StaticListener");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_ListenersConfigDump_DynamicListenerState_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ListenersConfigDump.DynamicListenerState");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_ListenersConfigDump_DynamicListener_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ListenersConfigDump.DynamicListener");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_ClustersConfigDump_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ClustersConfigDump");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_ClustersConfigDump_StaticCluster_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ClustersConfigDump.StaticCluster");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_ClustersConfigDump_DynamicCluster_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ClustersConfigDump.DynamicCluster");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_RoutesConfigDump_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.RoutesConfigDump");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_RoutesConfigDump_StaticRouteConfig_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.RoutesConfigDump.StaticRouteConfig");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_RoutesConfigDump_DynamicRouteConfig_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.RoutesConfigDump.DynamicRouteConfig");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_ScopedRoutesConfigDump_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ScopedRoutesConfigDump");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_ScopedRoutesConfigDump_InlineScopedRouteConfigs_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ScopedRoutesConfigDump.InlineScopedRouteConfigs");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_ScopedRoutesConfigDump_DynamicScopedRouteConfigs_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.ScopedRoutesConfigDump.DynamicScopedRouteConfigs");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_EndpointsConfigDump_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.EndpointsConfigDump");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_EndpointsConfigDump_StaticEndpointConfig_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.EndpointsConfigDump.StaticEndpointConfig");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_admin_v3_EndpointsConfigDump_DynamicEndpointConfig_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_admin_v3_config_dump_shared_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.admin.v3.EndpointsConfigDump.DynamicEndpointConfig");
+}
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* ENVOY_ADMIN_V3_CONFIG_DUMP_SHARED_PROTO_UPBDEFS_H_ */
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c
index 0e18d59391..7e60b4f4df 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c
@@ -13,7 +13,7 @@
extern _upb_DefPool_Init envoy_config_core_v3_address_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
-static const char descriptor[557] = {'\n', '\036', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'd', 'm', 'i', 'n', '/', 'v', '3', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r',
+static const char descriptor[650] = {'\n', '\036', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'd', 'm', 'i', 'n', '/', 'v', '3', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r',
's', '.', 'p', 'r', 'o', 't', 'o', '\022', '\016', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '\032', '\"',
'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'a', 'd', 'd', 'r',
'e', 's', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o',
@@ -24,18 +24,21 @@ static const char descriptor[557] = {'\n', '\036', 'e', 'n', 'v', 'o', 'y', '/',
'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'S', 't', 'a', 't', 'u', 's', 'R', '\020', 'l',
'i', 's', 't', 'e', 'n', 'e', 'r', 'S', 't', 'a', 't', 'u', 's', 'e', 's', ':', '$', '\232', '\305', '\210', '\036', '\037', '\n', '\035', 'e',
'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'L', 'i', 's', 't', 'e', 'n',
-'e', 'r', 's', '\"', '\223', '\001', '\n', '\016', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'S', 't', 'a', 't', 'u', 's', '\022', '\022', '\n',
+'e', 'r', 's', '\"', '\360', '\001', '\n', '\016', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'S', 't', 'a', 't', 'u', 's', '\022', '\022', '\n',
'\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'B', '\n', '\r', 'l', 'o', 'c', 'a',
'l', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', 'e', 's', 's', 'R', '\014', 'l', 'o',
-'c', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.',
-'a', 'd', 'm', 'i', 'n', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'S', 't', 'a',
-'t', 'u', 's', 'B', 'w', '\n', '\034', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', 'B', '\016', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'P', 'r', 'o', 't',
-'o', 'P', '\001', 'Z', '=', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x',
-'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/',
-'a', 'd', 'm', 'i', 'n', '/', 'v', '3', ';', 'a', 'd', 'm', 'i', 'n', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b',
-'\006', 'p', 'r', 'o', 't', 'o', '3',
+'c', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', '\022', '[', '\n', '\032', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', '_',
+'l', 'o', 'c', 'a', 'l', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\035', '.', 'e',
+'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', 'e',
+'s', 's', 'R', '\030', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 'L', 'o', 'c', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's',
+'s', 'e', 's', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v',
+'2', 'a', 'l', 'p', 'h', 'a', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'S', 't', 'a', 't', 'u', 's', 'B', 'w', '\n', '\034',
+'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n',
+'.', 'v', '3', 'B', '\016', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '=', 'g', 'i',
+'t', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o',
+'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'd', 'm', 'i', 'n', '/', 'v',
+'3', ';', 'a', 'd', 'm', 'i', 'n', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[4] = {
@@ -49,5 +52,5 @@ _upb_DefPool_Init envoy_admin_v3_listeners_proto_upbdefinit = {
deps,
&envoy_admin_v3_listeners_proto_upb_file_layout,
"envoy/admin/v3/listeners.proto",
- UPB_STRINGVIEW_INIT(descriptor, 557)
+ UPB_STRINGVIEW_INIT(descriptor, 650)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c
index a2b3b34259..9a454fbe1f 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c
@@ -19,7 +19,7 @@ extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[4481] = {'\n', ')', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '/',
+static const char descriptor[4491] = {'\n', ')', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '/',
'v', '3', '/', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'p', 'r', 'o', 't', 'o', '\022', '\031', 'e', 'n', 'v', 'o', 'y',
'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '\032', '\037', 'e', 'n', 'v',
'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.', 'p', 'r',
@@ -89,116 +89,116 @@ static const char descriptor[4481] = {'\n', ')', 'e', 'n', 'v', 'o', 'y', '/', '
'\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a',
'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'F', 'i', 'l', 't',
'e', 'r', 'B', '\027', '\n', '\020', 'f', 'i', 'l', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370',
-'B', '\001', '\"', '\357', '\001', '\n', '\020', 'C', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '\022', 'H',
+'B', '\001', '\"', '\371', '\001', '\n', '\020', 'C', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '\022', 'H',
'\n', '\002', 'o', 'p', '\030', '\001', ' ', '\001', '(', '\016', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
'.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'C', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', 'F',
-'i', 'l', 't', 'e', 'r', '.', 'O', 'p', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\002', 'o', 'p', '\022', '9', '\n',
+'i', 'l', 't', 'e', 'r', '.', 'O', 'p', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\002', 'o', 'p', '\022', 'C', '\n',
'\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
-'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'U', 'I', 'n', 't', '3', '2', 'R',
-'\005', 'v', 'a', 'l', 'u', 'e', '\"', '\034', '\n', '\002', 'O', 'p', '\022', '\006', '\n', '\002', 'E', 'Q', '\020', '\000', '\022', '\006', '\n', '\002', 'G',
-'E', '\020', '\001', '\022', '\006', '\n', '\002', 'L', 'E', '\020', '\002', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y',
-'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.',
-'v', '2', '.', 'C', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '\"', '\243', '\001', '\n', '\020', 'S',
-'t', 'a', 't', 'u', 's', 'C', 'o', 'd', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\022', 'U', '\n', '\n', 'c', 'o', 'm', 'p', 'a', 'r',
-'i', 's', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
-'.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'C', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', 'F',
-'i', 'l', 't', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\n', 'c', 'o', 'm', 'p', 'a', 'r', 'i', 's',
-'o', 'n', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f',
-'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'S', 't', 'a', 't', 'u', 's',
-'C', 'o', 'd', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\"', '\237', '\001', '\n', '\016', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'F', 'i',
-'l', 't', 'e', 'r', '\022', 'U', '\n', '\n', 'c', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2',
-'+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.',
-'v', '3', '.', 'C', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212',
-'\001', '\002', '\020', '\001', 'R', '\n', 'c', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', ':', '6', '\232', '\305', '\210', '\036', '1', '\n', '/',
+'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'U', 'I', 'n', 't', '3', '2', 'B',
+'\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\005', 'v', 'a', 'l', 'u', 'e', '\"', '\034', '\n', '\002', 'O', 'p', '\022', '\006', '\n',
+'\002', 'E', 'Q', '\020', '\000', '\022', '\006', '\n', '\002', 'G', 'E', '\020', '\001', '\022', '\006', '\n', '\002', 'L', 'E', '\020', '\002', ':', '8', '\232', '\305',
+'\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.',
+'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'C', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', 'F', 'i',
+'l', 't', 'e', 'r', '\"', '\243', '\001', '\n', '\020', 'S', 't', 'a', 't', 'u', 's', 'C', 'o', 'd', 'e', 'F', 'i', 'l', 't', 'e', 'r',
+'\022', 'U', '\n', '\n', 'c', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '+', '.', 'e', 'n',
+'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'C',
+'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001',
+'R', '\n', 'c', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g',
+'.', 'v', '2', '.', 'S', 't', 'a', 't', 'u', 's', 'C', 'o', 'd', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\"', '\237', '\001', '\n', '\016',
+'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '\022', 'U', '\n', '\n', 'c', 'o', 'm', 'p', 'a', 'r', 'i',
+'s', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
+'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'C', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o', 'n', 'F', 'i',
+'l', 't', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\n', 'c', 'o', 'm', 'p', 'a', 'r', 'i', 's', 'o',
+'n', ':', '6', '\232', '\305', '\210', '\036', '1', '\n', '/', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i',
+'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o',
+'n', 'F', 'i', 'l', 't', 'e', 'r', '\"', 'T', '\n', '\024', 'N', 'o', 't', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k',
+'F', 'i', 'l', 't', 'e', 'r', ':', '<', '\232', '\305', '\210', '\036', '7', '\n', '5', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
+'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'N', 'o',
+'t', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'F', 'i', 'l', 't', 'e', 'r', '\"', 'J', '\n', '\017', 'T', 'r', 'a',
+'c', 'e', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g',
+'.', 'v', '2', '.', 'T', 'r', 'a', 'c', 'e', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\"', '\371', '\001', '\n', '\r', 'R',
+'u', 'n', 't', 'i', 'm', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\022', '(', '\n', '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k',
+'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', 'r', 'u', 'n', 't', 'i', 'm',
+'e', 'K', 'e', 'y', '\022', 'I', '\n', '\017', 'p', 'e', 'r', 'c', 'e', 'n', 't', '_', 's', 'a', 'm', 'p', 'l', 'e', 'd', '\030', '\002',
+' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'F', 'r', 'a', 'c',
+'t', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\016', 'p', 'e', 'r', 'c', 'e', 'n', 't', 'S', 'a', 'm',
+'p', 'l', 'e', 'd', '\022', '<', '\n', '\032', 'u', 's', 'e', '_', 'i', 'n', 'd', 'e', 'p', 'e', 'n', 'd', 'e', 'n', 't', '_', 'r',
+'a', 'n', 'd', 'o', 'm', 'n', 'e', 's', 's', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\030', 'u', 's', 'e', 'I', 'n', 'd', 'e', 'p',
+'e', 'n', 'd', 'e', 'n', 't', 'R', 'a', 'n', 'd', 'o', 'm', 'n', 'e', 's', 's', ':', '5', '\232', '\305', '\210', '\036', '0', '\n', '.',
'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's',
-'s', 'l', 'o', 'g', '.', 'v', '2', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '\"', 'T', '\n',
-'\024', 'N', 'o', 't', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'F', 'i', 'l', 't', 'e', 'r', ':', '<', '\232', '\305',
-'\210', '\036', '7', '\n', '5', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.',
-'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'N', 'o', 't', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e',
-'c', 'k', 'F', 'i', 'l', 't', 'e', 'r', '\"', 'J', '\n', '\017', 'T', 'r', 'a', 'c', 'e', 'a', 'b', 'l', 'e', 'F', 'i', 'l', 't',
-'e', 'r', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f',
-'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'T', 'r', 'a', 'c', 'e', 'a',
-'b', 'l', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\"', '\371', '\001', '\n', '\r', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'i', 'l', 't',
-'e', 'r', '\022', '(', '\n', '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007',
-'\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', '\022', 'I', '\n', '\017', 'p', 'e',
-'r', 'c', 'e', 'n', 't', '_', 's', 'a', 'm', 'p', 'l', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v',
-'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c',
-'e', 'n', 't', 'R', '\016', 'p', 'e', 'r', 'c', 'e', 'n', 't', 'S', 'a', 'm', 'p', 'l', 'e', 'd', '\022', '<', '\n', '\032', 'u', 's',
-'e', '_', 'i', 'n', 'd', 'e', 'p', 'e', 'n', 'd', 'e', 'n', 't', '_', 'r', 'a', 'n', 'd', 'o', 'm', 'n', 'e', 's', 's', '\030',
-'\003', ' ', '\001', '(', '\010', 'R', '\030', 'u', 's', 'e', 'I', 'n', 'd', 'e', 'p', 'e', 'n', 'd', 'e', 'n', 't', 'R', 'a', 'n', 'd',
-'o', 'm', 'n', 'e', 's', 's', ':', '5', '\232', '\305', '\210', '\036', '0', '\n', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
-'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'R', 'u',
-'n', 't', 'i', 'm', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\"', '\216', '\001', '\n', '\t', 'A', 'n', 'd', 'F', 'i', 'l', 't', 'e', 'r',
-'\022', 'N', '\n', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y',
-'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'A', 'c', 'c', 'e',
-'s', 's', 'L', 'o', 'g', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\002', 'R', '\007', 'f', 'i',
-'l', 't', 'e', 'r', 's', ':', '1', '\232', '\305', '\210', '\036', ',', '\n', '*', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'A', 'n', 'd',
-'F', 'i', 'l', 't', 'e', 'r', '\"', '\214', '\001', '\n', '\010', 'O', 'r', 'F', 'i', 'l', 't', 'e', 'r', '\022', 'N', '\n', '\007', 'f', 'i',
-'l', 't', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'F',
-'i', 'l', 't', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\002', 'R', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', ':',
-'0', '\232', '\305', '\210', '\036', '+', '\n', ')', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't',
-'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'O', 'r', 'F', 'i', 'l', 't', 'e', 'r', '\"',
-'\214', '\001', '\n', '\014', 'H', 'e', 'a', 'd', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', '\022', 'F', '\n', '\006', 'h', 'e', 'a', 'd', 'e',
-'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o',
-'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005',
-'\212', '\001', '\002', '\020', '\001', 'R', '\006', 'h', 'e', 'a', 'd', 'e', 'r', ':', '4', '\232', '\305', '\210', '\036', '/', '\n', '-', 'e', 'n', 'v',
-'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o',
-'g', '.', 'v', '2', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', '\"', '\352', '\001', '\n', '\022', 'R', 'e', 's',
-'p', 'o', 'n', 's', 'e', 'F', 'l', 'a', 'g', 'F', 'i', 'l', 't', 'e', 'r', '\022', '\227', '\001', '\n', '\005', 'f', 'l', 'a', 'g', 's',
-'\030', '\001', ' ', '\003', '(', '\t', 'B', '\200', '\001', '\372', 'B', '}', '\222', '\001', 'z', '\"', 'x', 'r', 'v', 'R', '\002', 'L', 'H', 'R', '\002',
-'U', 'H', 'R', '\002', 'U', 'T', 'R', '\002', 'L', 'R', 'R', '\002', 'U', 'R', 'R', '\002', 'U', 'F', 'R', '\002', 'U', 'C', 'R', '\002', 'U',
-'O', 'R', '\002', 'N', 'R', 'R', '\002', 'D', 'I', 'R', '\002', 'F', 'I', 'R', '\002', 'R', 'L', 'R', '\004', 'U', 'A', 'E', 'X', 'R', '\004',
-'R', 'L', 'S', 'E', 'R', '\002', 'D', 'C', 'R', '\003', 'U', 'R', 'X', 'R', '\002', 'S', 'I', 'R', '\002', 'I', 'H', 'R', '\003', 'D', 'P',
-'E', 'R', '\005', 'U', 'M', 'S', 'D', 'R', 'R', '\004', 'R', 'F', 'C', 'F', 'R', '\004', 'N', 'F', 'C', 'F', 'R', '\002', 'D', 'T', 'R',
-'\003', 'U', 'P', 'E', 'R', '\002', 'N', 'C', 'R', '\002', 'O', 'M', 'R', '\005', 'f', 'l', 'a', 'g', 's', ':', ':', '\232', '\305', '\210', '\036',
-'5', '\n', '3', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c',
-'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'F', 'l', 'a', 'g', 'F', 'i',
-'l', 't', 'e', 'r', '\"', '\200', '\004', '\n', '\020', 'G', 'r', 'p', 'c', 'S', 't', 'a', 't', 'u', 's', 'F', 'i', 'l', 't', 'e', 'r',
-'\022', ']', '\n', '\010', 's', 't', 'a', 't', 'u', 's', 'e', 's', '\030', '\001', ' ', '\003', '(', '\016', '2', '2', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'G', 'r', 'p',
-'c', 'S', 't', 'a', 't', 'u', 's', 'F', 'i', 'l', 't', 'e', 'r', '.', 'S', 't', 'a', 't', 'u', 's', 'B', '\r', '\372', 'B', '\n',
-'\222', '\001', '\007', '\"', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\010', 's', 't', 'a', 't', 'u', 's', 'e', 's', '\022', '\030', '\n', '\007', 'e',
-'x', 'c', 'l', 'u', 'd', 'e', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\007', 'e', 'x', 'c', 'l', 'u', 'd', 'e', '\"', '\270', '\002', '\n',
-'\006', 'S', 't', 'a', 't', 'u', 's', '\022', '\006', '\n', '\002', 'O', 'K', '\020', '\000', '\022', '\014', '\n', '\010', 'C', 'A', 'N', 'C', 'E', 'L',
-'E', 'D', '\020', '\001', '\022', '\013', '\n', '\007', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\002', '\022', '\024', '\n', '\020', 'I', 'N', 'V', 'A',
-'L', 'I', 'D', '_', 'A', 'R', 'G', 'U', 'M', 'E', 'N', 'T', '\020', '\003', '\022', '\025', '\n', '\021', 'D', 'E', 'A', 'D', 'L', 'I', 'N',
-'E', '_', 'E', 'X', 'C', 'E', 'E', 'D', 'E', 'D', '\020', '\004', '\022', '\r', '\n', '\t', 'N', 'O', 'T', '_', 'F', 'O', 'U', 'N', 'D',
-'\020', '\005', '\022', '\022', '\n', '\016', 'A', 'L', 'R', 'E', 'A', 'D', 'Y', '_', 'E', 'X', 'I', 'S', 'T', 'S', '\020', '\006', '\022', '\025', '\n',
-'\021', 'P', 'E', 'R', 'M', 'I', 'S', 'S', 'I', 'O', 'N', '_', 'D', 'E', 'N', 'I', 'E', 'D', '\020', '\007', '\022', '\026', '\n', '\022', 'R',
-'E', 'S', 'O', 'U', 'R', 'C', 'E', '_', 'E', 'X', 'H', 'A', 'U', 'S', 'T', 'E', 'D', '\020', '\010', '\022', '\027', '\n', '\023', 'F', 'A',
-'I', 'L', 'E', 'D', '_', 'P', 'R', 'E', 'C', 'O', 'N', 'D', 'I', 'T', 'I', 'O', 'N', '\020', '\t', '\022', '\013', '\n', '\007', 'A', 'B',
-'O', 'R', 'T', 'E', 'D', '\020', '\n', '\022', '\020', '\n', '\014', 'O', 'U', 'T', '_', 'O', 'F', '_', 'R', 'A', 'N', 'G', 'E', '\020', '\013',
-'\022', '\021', '\n', '\r', 'U', 'N', 'I', 'M', 'P', 'L', 'E', 'M', 'E', 'N', 'T', 'E', 'D', '\020', '\014', '\022', '\014', '\n', '\010', 'I', 'N',
-'T', 'E', 'R', 'N', 'A', 'L', '\020', '\r', '\022', '\017', '\n', '\013', 'U', 'N', 'A', 'V', 'A', 'I', 'L', 'A', 'B', 'L', 'E', '\020', '\016',
-'\022', '\r', '\n', '\t', 'D', 'A', 'T', 'A', '_', 'L', 'O', 'S', 'S', '\020', '\017', '\022', '\023', '\n', '\017', 'U', 'N', 'A', 'U', 'T', 'H',
-'E', 'N', 'T', 'I', 'C', 'A', 'T', 'E', 'D', '\020', '\020', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y',
-'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.',
-'v', '2', '.', 'G', 'r', 'p', 'c', 'S', 't', 'a', 't', 'u', 's', 'F', 'i', 'l', 't', 'e', 'r', '\"', '\332', '\001', '\n', '\016', 'M',
-'e', 't', 'a', 'd', 'a', 't', 'a', 'F', 'i', 'l', 't', 'e', 'r', '\022', '@', '\n', '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030',
-'\001', ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e',
-'r', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\007', 'm', 'a', 't',
-'c', 'h', 'e', 'r', '\022', 'N', '\n', '\026', 'm', 'a', 't', 'c', 'h', '_', 'i', 'f', '_', 'k', 'e', 'y', '_', 'n', 'o', 't', '_',
-'f', 'o', 'u', 'n', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
-'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\022', 'm', 'a', 't', 'c', 'h', 'I', 'f', 'K', 'e',
-'y', 'N', 'o', 't', 'F', 'o', 'u', 'n', 'd', ':', '6', '\232', '\305', '\210', '\036', '1', '\n', '/', 'e', 'n', 'v', 'o', 'y', '.', 'c',
+'s', 'l', 'o', 'g', '.', 'v', '2', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'i', 'l', 't', 'e', 'r', '\"', '\216', '\001', '\n',
+'\t', 'A', 'n', 'd', 'F', 'i', 'l', 't', 'e', 'r', '\022', 'N', '\n', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', '\030', '\001', ' ', '\003',
+'(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l',
+'o', 'g', '.', 'v', '3', '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\010', '\372', 'B',
+'\005', '\222', '\001', '\002', '\010', '\002', 'R', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', ':', '1', '\232', '\305', '\210', '\036', ',', '\n', '*', 'e',
+'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's',
+'l', 'o', 'g', '.', 'v', '2', '.', 'A', 'n', 'd', 'F', 'i', 'l', 't', 'e', 'r', '\"', '\214', '\001', '\n', '\010', 'O', 'r', 'F', 'i',
+'l', 't', 'e', 'r', '\022', 'N', '\n', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '*', '.', 'e',
+'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.',
+'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\002',
+'R', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', ':', '0', '\232', '\305', '\210', '\036', '+', '\n', ')', 'e', 'n', 'v', 'o', 'y', '.', 'c',
'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2',
-'.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'F', 'i', 'l', 't', 'e', 'r', '\"', '\266', '\001', '\n', '\017', 'E', 'x', 't', 'e', 'n',
-'s', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R',
-'\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001',
-'(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H',
-'\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n',
-'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l',
-'o', 'g', '.', 'v', '2', '.', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\r', '\n', '\013',
-'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g',
-'B', '\221', '\001', '\n', '\'', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.',
-'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', 'B', '\016', 'A', 'c', 'c', 'e',
-'s', 's', 'l', 'o', 'g', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'L', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/',
-'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a',
-'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g',
-'/', 'v', '3', ';', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006',
-'p', 'r', 'o', 't', 'o', '3',
+'.', 'O', 'r', 'F', 'i', 'l', 't', 'e', 'r', '\"', '\214', '\001', '\n', '\014', 'H', 'e', 'a', 'd', 'e', 'r', 'F', 'i', 'l', 't', 'e',
+'r', '\022', 'F', '\n', '\006', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y',
+'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a',
+'t', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\006', 'h', 'e', 'a', 'd', 'e', 'r', ':', '4',
+'\232', '\305', '\210', '\036', '/', '\n', '-', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e',
+'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'F', 'i', 'l', 't',
+'e', 'r', '\"', '\352', '\001', '\n', '\022', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'F', 'l', 'a', 'g', 'F', 'i', 'l', 't', 'e', 'r',
+'\022', '\227', '\001', '\n', '\005', 'f', 'l', 'a', 'g', 's', '\030', '\001', ' ', '\003', '(', '\t', 'B', '\200', '\001', '\372', 'B', '}', '\222', '\001', 'z',
+'\"', 'x', 'r', 'v', 'R', '\002', 'L', 'H', 'R', '\002', 'U', 'H', 'R', '\002', 'U', 'T', 'R', '\002', 'L', 'R', 'R', '\002', 'U', 'R', 'R',
+'\002', 'U', 'F', 'R', '\002', 'U', 'C', 'R', '\002', 'U', 'O', 'R', '\002', 'N', 'R', 'R', '\002', 'D', 'I', 'R', '\002', 'F', 'I', 'R', '\002',
+'R', 'L', 'R', '\004', 'U', 'A', 'E', 'X', 'R', '\004', 'R', 'L', 'S', 'E', 'R', '\002', 'D', 'C', 'R', '\003', 'U', 'R', 'X', 'R', '\002',
+'S', 'I', 'R', '\002', 'I', 'H', 'R', '\003', 'D', 'P', 'E', 'R', '\005', 'U', 'M', 'S', 'D', 'R', 'R', '\004', 'R', 'F', 'C', 'F', 'R',
+'\004', 'N', 'F', 'C', 'F', 'R', '\002', 'D', 'T', 'R', '\003', 'U', 'P', 'E', 'R', '\002', 'N', 'C', 'R', '\002', 'O', 'M', 'R', '\005', 'f',
+'l', 'a', 'g', 's', ':', ':', '\232', '\305', '\210', '\036', '5', '\n', '3', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'R', 'e', 's', 'p',
+'o', 'n', 's', 'e', 'F', 'l', 'a', 'g', 'F', 'i', 'l', 't', 'e', 'r', '\"', '\200', '\004', '\n', '\020', 'G', 'r', 'p', 'c', 'S', 't',
+'a', 't', 'u', 's', 'F', 'i', 'l', 't', 'e', 'r', '\022', ']', '\n', '\010', 's', 't', 'a', 't', 'u', 's', 'e', 's', '\030', '\001', ' ',
+'\003', '(', '\016', '2', '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's',
+'l', 'o', 'g', '.', 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 't', 'a', 't', 'u', 's', 'F', 'i', 'l', 't', 'e', 'r', '.', 'S',
+'t', 'a', 't', 'u', 's', 'B', '\r', '\372', 'B', '\n', '\222', '\001', '\007', '\"', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\010', 's', 't', 'a',
+'t', 'u', 's', 'e', 's', '\022', '\030', '\n', '\007', 'e', 'x', 'c', 'l', 'u', 'd', 'e', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\007', 'e',
+'x', 'c', 'l', 'u', 'd', 'e', '\"', '\270', '\002', '\n', '\006', 'S', 't', 'a', 't', 'u', 's', '\022', '\006', '\n', '\002', 'O', 'K', '\020', '\000',
+'\022', '\014', '\n', '\010', 'C', 'A', 'N', 'C', 'E', 'L', 'E', 'D', '\020', '\001', '\022', '\013', '\n', '\007', 'U', 'N', 'K', 'N', 'O', 'W', 'N',
+'\020', '\002', '\022', '\024', '\n', '\020', 'I', 'N', 'V', 'A', 'L', 'I', 'D', '_', 'A', 'R', 'G', 'U', 'M', 'E', 'N', 'T', '\020', '\003', '\022',
+'\025', '\n', '\021', 'D', 'E', 'A', 'D', 'L', 'I', 'N', 'E', '_', 'E', 'X', 'C', 'E', 'E', 'D', 'E', 'D', '\020', '\004', '\022', '\r', '\n',
+'\t', 'N', 'O', 'T', '_', 'F', 'O', 'U', 'N', 'D', '\020', '\005', '\022', '\022', '\n', '\016', 'A', 'L', 'R', 'E', 'A', 'D', 'Y', '_', 'E',
+'X', 'I', 'S', 'T', 'S', '\020', '\006', '\022', '\025', '\n', '\021', 'P', 'E', 'R', 'M', 'I', 'S', 'S', 'I', 'O', 'N', '_', 'D', 'E', 'N',
+'I', 'E', 'D', '\020', '\007', '\022', '\026', '\n', '\022', 'R', 'E', 'S', 'O', 'U', 'R', 'C', 'E', '_', 'E', 'X', 'H', 'A', 'U', 'S', 'T',
+'E', 'D', '\020', '\010', '\022', '\027', '\n', '\023', 'F', 'A', 'I', 'L', 'E', 'D', '_', 'P', 'R', 'E', 'C', 'O', 'N', 'D', 'I', 'T', 'I',
+'O', 'N', '\020', '\t', '\022', '\013', '\n', '\007', 'A', 'B', 'O', 'R', 'T', 'E', 'D', '\020', '\n', '\022', '\020', '\n', '\014', 'O', 'U', 'T', '_',
+'O', 'F', '_', 'R', 'A', 'N', 'G', 'E', '\020', '\013', '\022', '\021', '\n', '\r', 'U', 'N', 'I', 'M', 'P', 'L', 'E', 'M', 'E', 'N', 'T',
+'E', 'D', '\020', '\014', '\022', '\014', '\n', '\010', 'I', 'N', 'T', 'E', 'R', 'N', 'A', 'L', '\020', '\r', '\022', '\017', '\n', '\013', 'U', 'N', 'A',
+'V', 'A', 'I', 'L', 'A', 'B', 'L', 'E', '\020', '\016', '\022', '\r', '\n', '\t', 'D', 'A', 'T', 'A', '_', 'L', 'O', 'S', 'S', '\020', '\017',
+'\022', '\023', '\n', '\017', 'U', 'N', 'A', 'U', 'T', 'H', 'E', 'N', 'T', 'I', 'C', 'A', 'T', 'E', 'D', '\020', '\020', ':', '8', '\232', '\305',
+'\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.',
+'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'G', 'r', 'p', 'c', 'S', 't', 'a', 't', 'u', 's', 'F', 'i',
+'l', 't', 'e', 'r', '\"', '\332', '\001', '\n', '\016', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'F', 'i', 'l', 't', 'e', 'r', '\022', '@',
+'\n', '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 't',
+'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'M', 'a',
+'t', 'c', 'h', 'e', 'r', 'R', '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'N', '\n', '\026', 'm', 'a', 't', 'c', 'h', '_', 'i',
+'f', '_', 'k', 'e', 'y', '_', 'n', 'o', 't', '_', 'f', 'o', 'u', 'n', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g',
+'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R',
+'\022', 'm', 'a', 't', 'c', 'h', 'I', 'f', 'K', 'e', 'y', 'N', 'o', 't', 'F', 'o', 'u', 'n', 'd', ':', '6', '\232', '\305', '\210', '\036',
+'1', '\n', '/', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'a', 'c',
+'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'F', 'i', 'l', 't', 'e', 'r',
+'\"', '\266', '\001', '\n', '\017', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'F', 'i', 'l', 't', 'e', 'r', '\022', '\022', '\n', '\004', 'n',
+'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_',
+'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o',
+'t', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', ':',
+'7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't',
+'e', 'r', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '2', '.', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n',
+'F', 'i', 'l', 't', 'e', 'r', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\002',
+'\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', 'B', '\221', '\001', '\n', '\'', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r',
+'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o',
+'g', '.', 'v', '3', 'B', '\016', 'A', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'L', 'g',
+'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c',
+'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g',
+'/', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '/', 'v', '3', ';', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', 'v', '3',
+'\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[10] = {
@@ -218,5 +218,5 @@ _upb_DefPool_Init envoy_config_accesslog_v3_accesslog_proto_upbdefinit = {
deps,
&envoy_config_accesslog_v3_accesslog_proto_upb_file_layout,
"envoy/config/accesslog/v3/accesslog.proto",
- UPB_STRINGVIEW_INIT(descriptor, 4481)
+ UPB_STRINGVIEW_INIT(descriptor, 4491)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c
index 11df2bf243..f2c1151555 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c
@@ -34,7 +34,7 @@ extern _upb_DefPool_Init udpa_annotations_security_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[8017] = {'\n', ')', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '/',
+static const char descriptor[8111] = {'\n', ')', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '/',
'v', '3', '/', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'p', 'r', 'o', 't', 'o', '\022', '\031', 'e', 'n', 'v', 'o', 'y',
'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '\032', ')', 'e', 'n', 'v',
'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '/', 'v', '3', '/', 'a', 'c',
@@ -72,7 +72,7 @@ static const char descriptor[8017] = {'\n', ')', 'e', 'n', 'v', 'o', 'y', '/', '
'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't',
'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i',
'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l',
-'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\336', '\031', '\n', '\t', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p',
+'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\274', '\032', '\n', '\t', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p',
'\022', '.', '\n', '\004', 'n', 'o', 'd', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'n', 'o', 'd', 'e', '\022', '.',
'\n', '\023', 'n', 'o', 'd', 'e', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '_', 'p', 'a', 'r', 'a', 'm', 's', '\030', '\032', ' ', '\003',
@@ -168,193 +168,197 @@ static const char descriptor[8017] = {'\n', ')', 'e', 'n', 'v', 'o', 'y', '/', '
'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'C', 'u', 's', 't', 'o', 'm', 'I', 'n', 'l', 'i', 'n', 'e', 'H', 'e',
'a', 'd', 'e', 'r', 'R', '\r', 'i', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', '3', '\n', '\026', 'p', 'e',
'r', 'f', '_', 't', 'r', 'a', 'c', 'i', 'n', 'g', '_', 'f', 'i', 'l', 'e', '_', 'p', 'a', 't', 'h', '\030', '!', ' ', '\001', '(',
-'\t', 'R', '\023', 'p', 'e', 'r', 'f', 'T', 'r', 'a', 'c', 'i', 'n', 'g', 'F', 'i', 'l', 'e', 'P', 'a', 't', 'h', '\032', '\232', '\002',
-'\n', '\017', 'S', 't', 'a', 't', 'i', 'c', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\022', '@', '\n', '\t', 'l', 'i', 's', 't',
-'e', 'n', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'R', '\t', 'l',
-'i', 's', 't', 'e', 'n', 'e', 'r', 's', '\022', '<', '\n', '\010', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(',
-'\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.',
-'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'R', '\010', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\022', 'K', '\n', '\007', 's',
-'e', 'c', 'r', 'e', 't', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e',
-'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.',
-'t', 'l', 's', '.', 'v', '3', '.', 'S', 'e', 'c', 'r', 'e', 't', 'R', '\007', 's', 'e', 'c', 'r', 'e', 't', 's', ':', ':', '\232',
-'\305', '\210', '\036', '5', '\n', '3', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't',
-'r', 'a', 'p', '.', 'v', '2', '.', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'S', 't', 'a', 't', 'i', 'c', 'R', 'e',
-'s', 'o', 'u', 'r', 'c', 'e', 's', '\032', '\211', '\003', '\n', '\020', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'R', 'e', 's', 'o', 'u', 'r',
-'c', 'e', 's', '\022', 'A', '\n', '\n', 'l', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\"',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n',
-'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 'l', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '2', '\n', '\025', 'l',
-'d', 's', '_', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '_', 'l', 'o', 'c', 'a', 't', 'o', 'r', '\030', '\005', ' ', '\001', '(',
-'\t', 'R', '\023', 'l', 'd', 's', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', 'L', 'o', 'c', 'a', 't', 'o', 'r', '\022', 'A', '\n',
-'\n', 'c', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y',
+'\t', 'R', '\023', 'p', 'e', 'r', 'f', 'T', 'r', 'a', 'c', 'i', 'n', 'g', 'F', 'i', 'l', 'e', 'P', 'a', 't', 'h', '\022', '\\', '\n',
+'\024', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'r', 'e', 'g', 'e', 'x', '_', 'e', 'n', 'g', 'i', 'n', 'e', '\030', '\"', ' ', '\001',
+'(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3',
+'.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\022', 'd', 'e',
+'f', 'a', 'u', 'l', 't', 'R', 'e', 'g', 'e', 'x', 'E', 'n', 'g', 'i', 'n', 'e', '\032', '\232', '\002', '\n', '\017', 'S', 't', 'a', 't',
+'i', 'c', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\022', '@', '\n', '\t', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', '\030',
+'\001', ' ', '\003', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't',
+'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'R', '\t', 'l', 'i', 's', 't', 'e', 'n', 'e',
+'r', 's', '\022', '<', '\n', '\010', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', ' ', '.', 'e', 'n',
+'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u',
+'s', 't', 'e', 'r', 'R', '\010', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\022', 'K', '\n', '\007', 's', 'e', 'c', 'r', 'e', 't', 's',
+'\030', '\003', ' ', '\003', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's',
+'.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3',
+'.', 'S', 'e', 'c', 'r', 'e', 't', 'R', '\007', 's', 'e', 'c', 'r', 'e', 't', 's', ':', ':', '\232', '\305', '\210', '\036', '5', '\n', '3',
+'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2',
+'.', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'S', 't', 'a', 't', 'i', 'c', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e',
+'s', '\032', '\211', '\003', '\n', '\020', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\022', 'A', '\n',
+'\n', 'l', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y',
'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u',
-'r', 'c', 'e', 'R', '\t', 'c', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '2', '\n', '\025', 'c', 'd', 's', '_', 'r', 'e', 's',
-'o', 'u', 'r', 'c', 'e', 's', '_', 'l', 'o', 'c', 'a', 't', 'o', 'r', '\030', '\006', ' ', '\001', '(', '\t', 'R', '\023', 'c', 'd', 's',
-'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', 'L', 'o', 'c', 'a', 't', 'o', 'r', '\022', 'D', '\n', '\n', 'a', 'd', 's', '_', 'c',
-'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'p', 'i', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e',
-'R', '\t', 'a', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', ':', ';', '\232', '\305', '\210', '\036', '6', '\n', '4', 'e', 'n', 'v', 'o', 'y',
-'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'B', 'o', 'o', 't',
-'s', 't', 'r', 'a', 'p', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', 'J', '\004', '\010',
-'\004', '\020', '\005', '\032', '{', '\n', '!', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e',
-'r', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', 's', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ',
-'\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '@', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '*',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p',
-'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':',
-'\002', '8', '\001', ':', '*', '\232', '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
-'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', 'B', '\r', '\n',
-'\013', 's', 't', 'a', 't', 's', '_', 'f', 'l', 'u', 's', 'h', 'J', '\004', '\010', '\n', '\020', '\013', 'J', '\004', '\010', '\013', '\020', '\014', 'R',
-'\007', 'r', 'u', 'n', 't', 'i', 'm', 'e', '\"', '\211', '\003', '\n', '\005', 'A', 'd', 'm', 'i', 'n', '\022', 'C', '\n', '\n', 'a', 'c', 'c',
-'e', 's', 's', '_', 'l', 'o', 'g', '\030', '\005', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
-'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o',
-'g', 'R', '\t', 'a', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', '\022', '3', '\n', '\017', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', 'o',
-'g', '_', 'p', 'a', 't', 'h', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0',
-'R', '\r', 'a', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'P', 'a', 't', 'h', '\022', '!', '\n', '\014', 'p', 'r', 'o', 'f', 'i', 'l',
-'e', '_', 'p', 'a', 't', 'h', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\013', 'p', 'r', 'o', 'f', 'i', 'l', 'e', 'P', 'a', 't', 'h',
-'\022', '7', '\n', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', 'y',
-'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', 'e', 's', 's', 'R', '\007',
-'a', 'd', 'd', 'r', 'e', 's', 's', '\022', 'I', '\n', '\016', 's', 'o', 'c', 'k', 'e', 't', '_', 'o', 'p', 't', 'i', 'o', 'n', 's',
-'\030', '\004', ' ', '\003', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r',
-'e', '.', 'v', '3', '.', 'S', 'o', 'c', 'k', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\r', 's', 'o', 'c', 'k', 'e', 't',
-'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '7', '\n', '\030', 'i', 'g', 'n', 'o', 'r', 'e', '_', 'g', 'l', 'o', 'b', 'a', 'l', '_',
-'c', 'o', 'n', 'n', '_', 'l', 'i', 'm', 'i', 't', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\025', 'i', 'g', 'n', 'o', 'r', 'e', 'G',
-'l', 'o', 'b', 'a', 'l', 'C', 'o', 'n', 'n', 'L', 'i', 'm', 'i', 't', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n',
-'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'A',
-'d', 'm', 'i', 'n', '\"', '\313', '\004', '\n', '\016', 'C', 'l', 'u', 's', 't', 'e', 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\022', ',',
-'\n', '\022', 'l', 'o', 'c', 'a', 'l', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(',
-'\t', 'R', '\020', 'l', 'o', 'c', 'a', 'l', 'C', 'l', 'u', 's', 't', 'e', 'r', 'N', 'a', 'm', 'e', '\022', 'g', '\n', '\021', 'o', 'u',
-'t', 'l', 'i', 'e', 'r', '_', 'd', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', ':', '.', 'e',
-'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.',
-'C', 'l', 'u', 's', 't', 'e', 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'O', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't',
-'e', 'c', 't', 'i', 'o', 'n', 'R', '\020', 'o', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', '\022',
-'R', '\n', '\024', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'b', 'i', 'n', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003',
-' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
-'v', '3', '.', 'B', 'i', 'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\022', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 'B', 'i',
-'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'Q', '\n', '\021', 'l', 'o', 'a', 'd', '_', 's', 't', 'a', 't', 's', '_', 'c', 'o',
-'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
-'.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'p', 'i', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R',
-'\017', 'l', 'o', 'a', 'd', 'S', 't', 'a', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\311', '\001', '\n', '\020', 'O', 'u', 't', 'l',
-'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', '\022', '$', '\n', '\016', 'e', 'v', 'e', 'n', 't', '_', 'l', 'o', 'g',
-'_', 'p', 'a', 't', 'h', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\014', 'e', 'v', 'e', 'n', 't', 'L', 'o', 'g', 'P', 'a', 't', 'h',
-'\022', 'M', '\n', '\r', 'e', 'v', 'e', 'n', 't', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '(',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'E', 'v', 'e',
-'n', 't', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\014', 'e', 'v', 'e', 'n', 't', 'S', 'e', 'r',
-'v', 'i', 'c', 'e', ':', '@', '\232', '\305', '\210', '\036', ';', '\n', '9', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
-'.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'M', 'a', 'n', 'a',
-'g', 'e', 'r', '.', 'O', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', ':', '/', '\232', '\305', '\210',
-'\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a',
-'p', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\"', '\260', '\001', '\n', '\t', 'W',
-'a', 't', 'c', 'h', 'd', 'o', 'g', 's', '\022', 'U', '\n', '\024', 'm', 'a', 'i', 'n', '_', 't', 'h', 'r', 'e', 'a', 'd', '_', 'w',
-'a', 't', 'c', 'h', 'd', 'o', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
-'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g',
-'R', '\022', 'm', 'a', 'i', 'n', 'T', 'h', 'r', 'e', 'a', 'd', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\022', 'L', '\n', '\017', 'w',
-'o', 'r', 'k', 'e', 'r', '_', 'w', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n',
-'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'W',
-'a', 't', 'c', 'h', 'd', 'o', 'g', 'R', '\016', 'w', 'o', 'r', 'k', 'e', 'r', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\"', '\272',
-'\006', '\n', '\010', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\022', 'L', '\n', '\007', 'a', 'c', 't', 'i', 'o', 'n', 's', '\030', '\007', ' ',
-'\003', '(', '\013', '2', '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't',
-'r', 'a', 'p', '.', 'v', '3', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 'A',
-'c', 't', 'i', 'o', 'n', 'R', '\007', 'a', 'c', 't', 'i', 'o', 'n', 's', '\022', '<', '\n', '\014', 'm', 'i', 's', 's', '_', 't', 'i',
-'m', 'e', 'o', 'u', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
-'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\013', 'm', 'i', 's', 's', 'T', 'i', 'm', 'e', 'o', 'u',
-'t', '\022', 'D', '\n', '\020', 'm', 'e', 'g', 'a', 'm', 'i', 's', 's', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\002', ' ', '\001',
-'(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a',
-'t', 'i', 'o', 'n', 'R', '\017', 'm', 'e', 'g', 'a', 'm', 'i', 's', 's', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', '<', '\n', '\014',
-'k', 'i', 'l', 'l', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\013', 'k', 'i', 'l',
-'l', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'Z', '\n', '\027', 'm', 'a', 'x', '_', 'k', 'i', 'l', 'l', '_', 't', 'i', 'm', 'e',
-'o', 'u', 't', '_', 'j', 'i', 't', 't', 'e', 'r', '\030', '\006', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e',
-'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001',
-'\002', '2', '\000', 'R', '\024', 'm', 'a', 'x', 'K', 'i', 'l', 'l', 'T', 'i', 'm', 'e', 'o', 'u', 't', 'J', 'i', 't', 't', 'e', 'r',
-'\022', 'F', '\n', '\021', 'm', 'u', 'l', 't', 'i', 'k', 'i', 'l', 'l', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\004', ' ', '\001',
-'(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a',
-'t', 'i', 'o', 'n', 'R', '\020', 'm', 'u', 'l', 't', 'i', 'k', 'i', 'l', 'l', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'G', '\n',
-'\023', 'm', 'u', 'l', 't', 'i', 'k', 'i', 'l', 'l', '_', 't', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', '\030', '\005', ' ', '\001', '(',
-'\013', '2', '\026', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't',
-'R', '\022', 'm', 'u', 'l', 't', 'i', 'k', 'i', 'l', 'l', 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', '\032', '\205', '\002', '\n', '\016',
-'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 'A', 'c', 't', 'i', 'o', 'n', '\022', 'B', '\n', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\030',
-'\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e',
-'.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R',
-'\006', 'c', 'o', 'n', 'f', 'i', 'g', '\022', '`', '\n', '\005', 'e', 'v', 'e', 'n', 't', '\030', '\002', ' ', '\001', '(', '\016', '2', '@', '.',
+'r', 'c', 'e', 'R', '\t', 'l', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '2', '\n', '\025', 'l', 'd', 's', '_', 'r', 'e', 's',
+'o', 'u', 'r', 'c', 'e', 's', '_', 'l', 'o', 'c', 'a', 't', 'o', 'r', '\030', '\005', ' ', '\001', '(', '\t', 'R', '\023', 'l', 'd', 's',
+'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', 'L', 'o', 'c', 'a', 't', 'o', 'r', '\022', 'A', '\n', '\n', 'c', 'd', 's', '_', 'c',
+'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
+'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 'c',
+'d', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '2', '\n', '\025', 'c', 'd', 's', '_', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's',
+'_', 'l', 'o', 'c', 'a', 't', 'o', 'r', '\030', '\006', ' ', '\001', '(', '\t', 'R', '\023', 'c', 'd', 's', 'R', 'e', 's', 'o', 'u', 'r',
+'c', 'e', 's', 'L', 'o', 'c', 'a', 't', 'o', 'r', '\022', 'D', '\n', '\n', 'a', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030',
+'\003', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e',
+'.', 'v', '3', '.', 'A', 'p', 'i', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 'a', 'd', 's', 'C',
+'o', 'n', 'f', 'i', 'g', ':', ';', '\232', '\305', '\210', '\036', '6', '\n', '4', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
+'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.',
+'D', 'y', 'n', 'a', 'm', 'i', 'c', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', 'J', '\004', '\010', '\004', '\020', '\005', '\032', '{', '\n',
+'!', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', 't', 'a',
+'n', 'c', 'e', 's', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k',
+'e', 'y', '\022', '@', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y',
+'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e',
+'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', ':', '*', '\232',
+'\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't',
+'r', 'a', 'p', '.', 'v', '2', '.', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', 'B', '\r', '\n', '\013', 's', 't', 'a', 't', 's',
+'_', 'f', 'l', 'u', 's', 'h', 'J', '\004', '\010', '\n', '\020', '\013', 'J', '\004', '\010', '\013', '\020', '\014', 'R', '\007', 'r', 'u', 'n', 't', 'i',
+'m', 'e', '\"', '\211', '\003', '\n', '\005', 'A', 'd', 'm', 'i', 'n', '\022', 'C', '\n', '\n', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', 'o',
+'g', '\030', '\005', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c',
+'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'R', '\t', 'a', 'c', 'c',
+'e', 's', 's', 'L', 'o', 'g', '\022', '3', '\n', '\017', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', 'o', 'g', '_', 'p', 'a', 't', 'h',
+'\030', '\001', ' ', '\001', '(', '\t', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\r', 'a', 'c', 'c', 'e',
+'s', 's', 'L', 'o', 'g', 'P', 'a', 't', 'h', '\022', '!', '\n', '\014', 'p', 'r', 'o', 'f', 'i', 'l', 'e', '_', 'p', 'a', 't', 'h',
+'\030', '\002', ' ', '\001', '(', '\t', 'R', '\013', 'p', 'r', 'o', 'f', 'i', 'l', 'e', 'P', 'a', 't', 'h', '\022', '7', '\n', '\007', 'a', 'd',
+'d', 'r', 'e', 's', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
+'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', 'e', 's', 's', 'R', '\007', 'a', 'd', 'd', 'r', 'e', 's',
+'s', '\022', 'I', '\n', '\016', 's', 'o', 'c', 'k', 'e', 't', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\004', ' ', '\003', '(', '\013',
+'2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'S',
+'o', 'c', 'k', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\r', 's', 'o', 'c', 'k', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n',
+'s', '\022', '7', '\n', '\030', 'i', 'g', 'n', 'o', 'r', 'e', '_', 'g', 'l', 'o', 'b', 'a', 'l', '_', 'c', 'o', 'n', 'n', '_', 'l',
+'i', 'm', 'i', 't', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\025', 'i', 'g', 'n', 'o', 'r', 'e', 'G', 'l', 'o', 'b', 'a', 'l', 'C',
+'o', 'n', 'n', 'L', 'i', 'm', 'i', 't', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
+'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'A', 'd', 'm', 'i', 'n', '\"', '\313',
+'\004', '\n', '\016', 'C', 'l', 'u', 's', 't', 'e', 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\022', ',', '\n', '\022', 'l', 'o', 'c', 'a',
+'l', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\020', 'l', 'o', 'c',
+'a', 'l', 'C', 'l', 'u', 's', 't', 'e', 'r', 'N', 'a', 'm', 'e', '\022', 'g', '\n', '\021', 'o', 'u', 't', 'l', 'i', 'e', 'r', '_',
+'d', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
+'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e',
+'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'O', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n',
+'R', '\020', 'o', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', '\022', 'R', '\n', '\024', 'u', 'p', 's',
+'t', 'r', 'e', 'a', 'm', '_', 'b', 'i', 'n', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', ' ',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'B', 'i', 'n',
+'d', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\022', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', 'B', 'i', 'n', 'd', 'C', 'o', 'n', 'f',
+'i', 'g', '\022', 'Q', '\n', '\021', 'l', 'o', 'a', 'd', '_', 's', 't', 'a', 't', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\004',
+' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
+'v', '3', '.', 'A', 'p', 'i', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\017', 'l', 'o', 'a', 'd', 'S',
+'t', 'a', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\311', '\001', '\n', '\020', 'O', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't',
+'e', 'c', 't', 'i', 'o', 'n', '\022', '$', '\n', '\016', 'e', 'v', 'e', 'n', 't', '_', 'l', 'o', 'g', '_', 'p', 'a', 't', 'h', '\030',
+'\001', ' ', '\001', '(', '\t', 'R', '\014', 'e', 'v', 'e', 'n', 't', 'L', 'o', 'g', 'P', 'a', 't', 'h', '\022', 'M', '\n', '\r', 'e', 'v',
+'e', 'n', 't', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '(', '.', 'e', 'n', 'v', 'o', 'y',
+'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'E', 'v', 'e', 'n', 't', 'S', 'e', 'r', 'v',
+'i', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\014', 'e', 'v', 'e', 'n', 't', 'S', 'e', 'r', 'v', 'i', 'c', 'e', ':', '@',
+'\232', '\305', '\210', '\036', ';', '\n', '9', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's',
+'t', 'r', 'a', 'p', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'O', 'u',
+'t', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n',
+'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'C',
+'l', 'u', 's', 't', 'e', 'r', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\"', '\260', '\001', '\n', '\t', 'W', 'a', 't', 'c', 'h', 'd', 'o',
+'g', 's', '\022', 'U', '\n', '\024', 'm', 'a', 'i', 'n', '_', 't', 'h', 'r', 'e', 'a', 'd', '_', 'w', 'a', 't', 'c', 'h', 'd', 'o',
+'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o',
+'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 'R', '\022', 'm', 'a', 'i', 'n',
+'T', 'h', 'r', 'e', 'a', 'd', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\022', 'L', '\n', '\017', 'w', 'o', 'r', 'k', 'e', 'r', '_',
+'w', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
+'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o',
+'g', 'R', '\016', 'w', 'o', 'r', 'k', 'e', 'r', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\"', '\272', '\006', '\n', '\010', 'W', 'a', 't',
+'c', 'h', 'd', 'o', 'g', '\022', 'L', '\n', '\007', 'a', 'c', 't', 'i', 'o', 'n', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', '2', '.',
'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3',
-'.', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 'A', 'c', 't', 'i', 'o', 'n', '.',
-'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 'E', 'v', 'e', 'n', 't', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\005',
-'e', 'v', 'e', 'n', 't', '\"', 'M', '\n', '\r', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 'E', 'v', 'e', 'n', 't', '\022', '\013', '\n',
-'\007', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\000', '\022', '\010', '\n', '\004', 'K', 'I', 'L', 'L', '\020', '\001', '\022', '\r', '\n', '\t', 'M',
-'U', 'L', 'T', 'I', 'K', 'I', 'L', 'L', '\020', '\002', '\022', '\014', '\n', '\010', 'M', 'E', 'G', 'A', 'M', 'I', 'S', 'S', '\020', '\003', '\022',
-'\010', '\n', '\004', 'M', 'I', 'S', 'S', '\020', '\004', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'c',
-'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'W', 'a', 't', 'c', 'h', 'd',
-'o', 'g', '\"', 'Q', '\n', '\013', 'F', 'a', 't', 'a', 'l', 'A', 'c', 't', 'i', 'o', 'n', '\022', 'B', '\n', '\006', 'c', 'o', 'n', 'f',
-'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c',
-'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f',
-'i', 'g', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\"', '\334', '\001', '\n', '\007', 'R', 'u', 'n', 't', 'i', 'm', 'e', '\022', '!', '\n',
-'\014', 's', 'y', 'm', 'l', 'i', 'n', 'k', '_', 'r', 'o', 'o', 't', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 's', 'y', 'm', 'l',
-'i', 'n', 'k', 'R', 'o', 'o', 't', '\022', '\"', '\n', '\014', 's', 'u', 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\030', '\002',
-' ', '\001', '(', '\t', 'R', '\014', 's', 'u', 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\022', '3', '\n', '\025', 'o', 'v', 'e',
-'r', 'r', 'i', 'd', 'e', '_', 's', 'u', 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\030', '\003', ' ', '\001', '(', '\t', 'R',
-'\024', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'S', 'u', 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\022', '+', '\n', '\004',
-'b', 'a', 's', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
-'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't', 'R', '\004', 'b', 'a', 's', 'e', ':', '(', '\232', '\305', '\210', '\036', '#', '\n', '!',
-'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2',
-'.', 'R', 'u', 'n', 't', 'i', 'm', 'e', '\"', '\333', '\006', '\n', '\014', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r',
-'\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004',
-'n', 'a', 'm', 'e', '\022', '<', '\n', '\014', 's', 't', 'a', 't', 'i', 'c', '_', 'l', 'a', 'y', 'e', 'r', '\030', '\002', ' ', '\001', '(',
-'\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c',
-'t', 'H', '\000', 'R', '\013', 's', 't', 'a', 't', 'i', 'c', 'L', 'a', 'y', 'e', 'r', '\022', 'R', '\n', '\n', 'd', 'i', 's', 'k', '_',
-'l', 'a', 'y', 'e', 'r', '\030', '\003', ' ', '\001', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y',
-'e', 'r', '.', 'D', 'i', 's', 'k', 'L', 'a', 'y', 'e', 'r', 'H', '\000', 'R', '\t', 'd', 'i', 's', 'k', 'L', 'a', 'y', 'e', 'r',
-'\022', 'U', '\n', '\013', 'a', 'd', 'm', 'i', 'n', '_', 'l', 'a', 'y', 'e', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '2', '.', 'e',
-'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.',
-'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', '.', 'A', 'd', 'm', 'i', 'n', 'L', 'a', 'y', 'e', 'r', 'H', '\000',
-'R', '\n', 'a', 'd', 'm', 'i', 'n', 'L', 'a', 'y', 'e', 'r', '\022', 'R', '\n', '\n', 'r', 't', 'd', 's', '_', 'l', 'a', 'y', 'e',
-'r', '\030', '\005', ' ', '\001', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o',
-'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', '.', 'R',
-'t', 'd', 's', 'L', 'a', 'y', 'e', 'r', 'H', '\000', 'R', '\t', 'r', 't', 'd', 's', 'L', 'a', 'y', 'e', 'r', '\032', '\301', '\001', '\n',
-'\t', 'D', 'i', 's', 'k', 'L', 'a', 'y', 'e', 'r', '\022', '!', '\n', '\014', 's', 'y', 'm', 'l', 'i', 'n', 'k', '_', 'r', 'o', 'o',
-'t', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 's', 'y', 'm', 'l', 'i', 'n', 'k', 'R', 'o', 'o', 't', '\022', '\"', '\n', '\014', 's',
-'u', 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\014', 's', 'u', 'b', 'd', 'i', 'r',
-'e', 'c', 't', 'o', 'r', 'y', '\022', '4', '\n', '\026', 'a', 'p', 'p', 'e', 'n', 'd', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '_',
-'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\024', 'a', 'p', 'p', 'e', 'n', 'd', 'S', 'e', 'r', 'v',
-'i', 'c', 'e', 'C', 'l', 'u', 's', 't', 'e', 'r', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.',
+'.', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 'A', 'c', 't', 'i', 'o', 'n', 'R',
+'\007', 'a', 'c', 't', 'i', 'o', 'n', 's', '\022', '<', '\n', '\014', 'm', 'i', 's', 's', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030',
+'\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D',
+'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\013', 'm', 'i', 's', 's', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'D', '\n', '\020', 'm',
+'e', 'g', 'a', 'm', 'i', 's', 's', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g',
+'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\017',
+'m', 'e', 'g', 'a', 'm', 'i', 's', 's', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', '<', '\n', '\014', 'k', 'i', 'l', 'l', '_', 't',
+'i', 'm', 'e', 'o', 'u', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o',
+'t', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\013', 'k', 'i', 'l', 'l', 'T', 'i', 'm', 'e', 'o',
+'u', 't', '\022', 'Z', '\n', '\027', 'm', 'a', 'x', '_', 'k', 'i', 'l', 'l', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '_', 'j', 'i',
+'t', 't', 'e', 'r', '\030', '\006', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
+'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '2', '\000', 'R', '\024', 'm',
+'a', 'x', 'K', 'i', 'l', 'l', 'T', 'i', 'm', 'e', 'o', 'u', 't', 'J', 'i', 't', 't', 'e', 'r', '\022', 'F', '\n', '\021', 'm', 'u',
+'l', 't', 'i', 'k', 'i', 'l', 'l', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\031', '.', 'g',
+'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\020',
+'m', 'u', 'l', 't', 'i', 'k', 'i', 'l', 'l', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'G', '\n', '\023', 'm', 'u', 'l', 't', 'i',
+'k', 'i', 'l', 'l', '_', 't', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', '\030', '\005', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n',
+'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\022', 'm', 'u', 'l', 't',
+'i', 'k', 'i', 'l', 'l', 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', '\032', '\205', '\002', '\n', '\016', 'W', 'a', 't', 'c', 'h', 'd',
+'o', 'g', 'A', 'c', 't', 'i', 'o', 'n', '\022', 'B', '\n', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2',
+'*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y',
+'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\006', 'c', 'o', 'n', 'f', 'i',
+'g', '\022', '`', '\n', '\005', 'e', 'v', 'e', 'n', 't', '\030', '\002', ' ', '\001', '(', '\016', '2', '@', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'W', 'a', 't', 'c', 'h',
+'d', 'o', 'g', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 'A', 'c', 't', 'i', 'o', 'n', '.', 'W', 'a', 't', 'c', 'h', 'd',
+'o', 'g', 'E', 'v', 'e', 'n', 't', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\005', 'e', 'v', 'e', 'n', 't', '\"',
+'M', '\n', '\r', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', 'E', 'v', 'e', 'n', 't', '\022', '\013', '\n', '\007', 'U', 'N', 'K', 'N', 'O',
+'W', 'N', '\020', '\000', '\022', '\010', '\n', '\004', 'K', 'I', 'L', 'L', '\020', '\001', '\022', '\r', '\n', '\t', 'M', 'U', 'L', 'T', 'I', 'K', 'I',
+'L', 'L', '\020', '\002', '\022', '\014', '\n', '\010', 'M', 'E', 'G', 'A', 'M', 'I', 'S', 'S', '\020', '\003', '\022', '\010', '\n', '\004', 'M', 'I', 'S',
+'S', '\020', '\004', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
+'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'W', 'a', 't', 'c', 'h', 'd', 'o', 'g', '\"', 'Q', '\n', '\013',
+'F', 'a', 't', 'a', 'l', 'A', 'c', 't', 'i', 'o', 'n', '\022', 'B', '\n', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001',
+'(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3',
+'.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\006', 'c', 'o',
+'n', 'f', 'i', 'g', '\"', '\334', '\001', '\n', '\007', 'R', 'u', 'n', 't', 'i', 'm', 'e', '\022', '!', '\n', '\014', 's', 'y', 'm', 'l', 'i',
+'n', 'k', '_', 'r', 'o', 'o', 't', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 's', 'y', 'm', 'l', 'i', 'n', 'k', 'R', 'o', 'o',
+'t', '\022', '\"', '\n', '\014', 's', 'u', 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\014',
+'s', 'u', 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\022', '3', '\n', '\025', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '_',
+'s', 'u', 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\024', 'o', 'v', 'e', 'r', 'r',
+'i', 'd', 'e', 'S', 'u', 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\022', '+', '\n', '\004', 'b', 'a', 's', 'e', '\030', '\004',
+' ', '\001', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 't',
+'r', 'u', 'c', 't', 'R', '\004', 'b', 'a', 's', 'e', ':', '(', '\232', '\305', '\210', '\036', '#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.',
'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'R', 'u', 'n', 't', 'i',
-'m', 'e', 'L', 'a', 'y', 'e', 'r', '.', 'D', 'i', 's', 'k', 'L', 'a', 'y', 'e', 'r', '\032', 'F', '\n', '\n', 'A', 'd', 'm', 'i',
-'n', 'L', 'a', 'y', 'e', 'r', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
-'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a',
-'y', 'e', 'r', '.', 'A', 'd', 'm', 'i', 'n', 'L', 'a', 'y', 'e', 'r', '\032', '\235', '\001', '\n', '\t', 'R', 't', 'd', 's', 'L', 'a',
-'y', 'e', 'r', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'C',
-'\n', '\013', 'r', 't', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S',
-'o', 'u', 'r', 'c', 'e', 'R', '\n', 'r', 't', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', ':', '7', '\232', '\305', '\210', '\036', '2', '\n',
-'0', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v',
-'2', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', '.', 'R', 't', 'd', 's', 'L', 'a', 'y', 'e', 'r', ':',
-'-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't',
-'s', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', 'B', '\026', '\n', '\017',
-'l', 'a', 'y', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', '\202', '\001', '\n', '\016',
-'L', 'a', 'y', 'e', 'r', 'e', 'd', 'R', 'u', 'n', 't', 'i', 'm', 'e', '\022', '?', '\n', '\006', 'l', 'a', 'y', 'e', 'r', 's', '\030',
-'\001', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't',
-'s', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', 'R', '\006', 'l', 'a',
-'y', 'e', 'r', 's', ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
-'.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'L', 'a', 'y', 'e', 'r', 'e', 'd', 'R', 'u', 'n', 't',
-'i', 'm', 'e', '\"', '\261', '\002', '\n', '\022', 'C', 'u', 's', 't', 'o', 'm', 'I', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e',
-'r', '\022', ';', '\n', '\022', 'i', 'n', 'l', 'i', 'n', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001',
-' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\020', 'i', 'n', 'l', 'i',
-'n', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 'N', 'a', 'm', 'e', '\022', 'v', '\n', '\022', 'i', 'n', 'l', 'i', 'n', 'e', '_', 'h', 'e',
-'a', 'd', 'e', 'r', '_', 't', 'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\016', '2', '>', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
-'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'C', 'u', 's', 't', 'o', 'm',
-'I', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e', 'r', '.', 'I', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e', 'r',
-'T', 'y', 'p', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\020', 'i', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a',
-'d', 'e', 'r', 'T', 'y', 'p', 'e', '\"', 'f', '\n', '\020', 'I', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'y',
-'p', 'e', '\022', '\022', '\n', '\016', 'R', 'E', 'Q', 'U', 'E', 'S', 'T', '_', 'H', 'E', 'A', 'D', 'E', 'R', '\020', '\000', '\022', '\023', '\n',
-'\017', 'R', 'E', 'Q', 'U', 'E', 'S', 'T', '_', 'T', 'R', 'A', 'I', 'L', 'E', 'R', '\020', '\001', '\022', '\023', '\n', '\017', 'R', 'E', 'S',
-'P', 'O', 'N', 'S', 'E', '_', 'H', 'E', 'A', 'D', 'E', 'R', '\020', '\002', '\022', '\024', '\n', '\020', 'R', 'E', 'S', 'P', 'O', 'N', 'S',
-'E', '_', 'T', 'R', 'A', 'I', 'L', 'E', 'R', '\020', '\003', 'B', '\221', '\001', '\n', '\'', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p',
-'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r',
-'a', 'p', '.', 'v', '3', 'B', '\016', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'L',
-'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-',
-'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i',
-'g', '/', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '/', 'v', '3', ';', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', 'v',
-'3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'m', 'e', '\"', '\333', '\006', '\n', '\014', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', '\022', '\033', '\n', '\004', 'n', 'a',
+'m', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '<',
+'\n', '\014', 's', 't', 'a', 't', 'i', 'c', '_', 'l', 'a', 'y', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\027', '.', 'g', 'o',
+'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't', 'H', '\000', 'R', '\013', 's',
+'t', 'a', 't', 'i', 'c', 'L', 'a', 'y', 'e', 'r', '\022', 'R', '\n', '\n', 'd', 'i', 's', 'k', '_', 'l', 'a', 'y', 'e', 'r', '\030',
+'\003', ' ', '\001', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't',
+'s', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', '.', 'D', 'i', 's',
+'k', 'L', 'a', 'y', 'e', 'r', 'H', '\000', 'R', '\t', 'd', 'i', 's', 'k', 'L', 'a', 'y', 'e', 'r', '\022', 'U', '\n', '\013', 'a', 'd',
+'m', 'i', 'n', '_', 'l', 'a', 'y', 'e', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
+'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm',
+'e', 'L', 'a', 'y', 'e', 'r', '.', 'A', 'd', 'm', 'i', 'n', 'L', 'a', 'y', 'e', 'r', 'H', '\000', 'R', '\n', 'a', 'd', 'm', 'i',
+'n', 'L', 'a', 'y', 'e', 'r', '\022', 'R', '\n', '\n', 'r', 't', 'd', 's', '_', 'l', 'a', 'y', 'e', 'r', '\030', '\005', ' ', '\001', '(',
+'\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a',
+'p', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', '.', 'R', 't', 'd', 's', 'L', 'a', 'y',
+'e', 'r', 'H', '\000', 'R', '\t', 'r', 't', 'd', 's', 'L', 'a', 'y', 'e', 'r', '\032', '\301', '\001', '\n', '\t', 'D', 'i', 's', 'k', 'L',
+'a', 'y', 'e', 'r', '\022', '!', '\n', '\014', 's', 'y', 'm', 'l', 'i', 'n', 'k', '_', 'r', 'o', 'o', 't', '\030', '\001', ' ', '\001', '(',
+'\t', 'R', '\013', 's', 'y', 'm', 'l', 'i', 'n', 'k', 'R', 'o', 'o', 't', '\022', '\"', '\n', '\014', 's', 'u', 'b', 'd', 'i', 'r', 'e',
+'c', 't', 'o', 'r', 'y', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\014', 's', 'u', 'b', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y',
+'\022', '4', '\n', '\026', 'a', 'p', 'p', 'e', 'n', 'd', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '_', 'c', 'l', 'u', 's', 't', 'e',
+'r', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\024', 'a', 'p', 'p', 'e', 'n', 'd', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'C', 'l', 'u',
+'s', 't', 'e', 'r', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e',
+'r', '.', 'D', 'i', 's', 'k', 'L', 'a', 'y', 'e', 'r', '\032', 'F', '\n', '\n', 'A', 'd', 'm', 'i', 'n', 'L', 'a', 'y', 'e', 'r',
+':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o',
+'t', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', '.', 'A', 'd',
+'m', 'i', 'n', 'L', 'a', 'y', 'e', 'r', '\032', '\235', '\001', '\n', '\t', 'R', 't', 'd', 's', 'L', 'a', 'y', 'e', 'r', '\022', '\022', '\n',
+'\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'C', '\n', '\013', 'r', 't', 'd', 's',
+'_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
+'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'R',
+'\n', 'r', 't', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y',
+'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '2', '.', 'R', 'u', 'n', 't',
+'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', '.', 'R', 't', 'd', 's', 'L', 'a', 'y', 'e', 'r', ':', '-', '\232', '\305', '\210', '\036', '(',
+'\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.',
+'v', '2', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', 'B', '\026', '\n', '\017', 'l', 'a', 'y', 'e', 'r', '_',
+'s', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', '\202', '\001', '\n', '\016', 'L', 'a', 'y', 'e', 'r', 'e',
+'d', 'R', 'u', 'n', 't', 'i', 'm', 'e', '\022', '?', '\n', '\006', 'l', 'a', 'y', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2',
+'\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.',
+'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'L', 'a', 'y', 'e', 'r', 'R', '\006', 'l', 'a', 'y', 'e', 'r', 's', ':', '/',
+'\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's',
+'t', 'r', 'a', 'p', '.', 'v', '2', '.', 'L', 'a', 'y', 'e', 'r', 'e', 'd', 'R', 'u', 'n', 't', 'i', 'm', 'e', '\"', '\261', '\002',
+'\n', '\022', 'C', 'u', 's', 't', 'o', 'm', 'I', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e', 'r', '\022', ';', '\n', '\022', 'i',
+'n', 'l', 'i', 'n', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\r',
+'\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\020', 'i', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', 'd',
+'e', 'r', 'N', 'a', 'm', 'e', '\022', 'v', '\n', '\022', 'i', 'n', 'l', 'i', 'n', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 't',
+'y', 'p', 'e', '\030', '\002', ' ', '\001', '(', '\016', '2', '>', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
+'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', '.', 'C', 'u', 's', 't', 'o', 'm', 'I', 'n', 'l', 'i', 'n', 'e',
+'H', 'e', 'a', 'd', 'e', 'r', '.', 'I', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'y', 'p', 'e', 'B', '\010',
+'\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\020', 'i', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'y', 'p',
+'e', '\"', 'f', '\n', '\020', 'I', 'n', 'l', 'i', 'n', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'y', 'p', 'e', '\022', '\022', '\n', '\016',
+'R', 'E', 'Q', 'U', 'E', 'S', 'T', '_', 'H', 'E', 'A', 'D', 'E', 'R', '\020', '\000', '\022', '\023', '\n', '\017', 'R', 'E', 'Q', 'U', 'E',
+'S', 'T', '_', 'T', 'R', 'A', 'I', 'L', 'E', 'R', '\020', '\001', '\022', '\023', '\n', '\017', 'R', 'E', 'S', 'P', 'O', 'N', 'S', 'E', '_',
+'H', 'E', 'A', 'D', 'E', 'R', '\020', '\002', '\022', '\024', '\n', '\020', 'R', 'E', 'S', 'P', 'O', 'N', 'S', 'E', '_', 'T', 'R', 'A', 'I',
+'L', 'E', 'R', '\020', '\003', 'B', '\221', '\001', '\n', '\'', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e',
+'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', '.', 'v', '3', 'B',
+'\016', 'B', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'L', 'g', 'i', 't', 'h', 'u', 'b',
+'.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o',
+'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'b', 'o', 'o', 't',
+'s', 't', 'r', 'a', 'p', '/', 'v', '3', ';', 'b', 'o', 'o', 't', 's', 't', 'r', 'a', 'p', 'v', '3', '\272', '\200', '\310', '\321', '\006',
+'\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[25] = {
@@ -389,5 +393,5 @@ _upb_DefPool_Init envoy_config_bootstrap_v3_bootstrap_proto_upbdefinit = {
deps,
&envoy_config_bootstrap_v3_bootstrap_proto_upb_file_layout,
"envoy/config/bootstrap/v3/bootstrap.proto",
- UPB_STRINGVIEW_INIT(descriptor, 8017)
+ UPB_STRINGVIEW_INIT(descriptor, 8111)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c
index ad4017127c..0390b67c47 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c
@@ -16,7 +16,7 @@ extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[1439] = {'\n', '-', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'l', 'u', 's', 't', 'e', 'r', '/', 'v', '3',
+static const char descriptor[1540] = {'\n', '-', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'l', 'u', 's', 't', 'e', 'r', '/', 'v', '3',
'/', 'c', 'i', 'r', 'c', 'u', 'i', 't', '_', 'b', 'r', 'e', 'a', 'k', 'e', 'r', '.', 'p', 'r', 'o', 't', 'o', '\022', '\027', 'e',
'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '\032', '\037', 'e',
'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.',
@@ -26,54 +26,58 @@ static const char descriptor[1439] = {'\n', '-', 'e', 'n', 'v', 'o', 'y', '/', '
'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u',
'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n',
'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't',
-'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\200', '\010', '\n', '\017', 'C', 'i', 'r', 'c', 'u', 'i', 't', 'B', 'r', 'e', 'a', 'k', 'e',
+'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\345', '\010', '\n', '\017', 'C', 'i', 'r', 'c', 'u', 'i', 't', 'B', 'r', 'e', 'a', 'k', 'e',
'r', 's', '\022', 'S', '\n', '\n', 't', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '3', '.',
'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C',
'i', 'r', 'c', 'u', 'i', 't', 'B', 'r', 'e', 'a', 'k', 'e', 'r', 's', '.', 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', 's',
-'R', '\n', 't', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', 's', '\032', '\352', '\006', '\n', '\n', 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l',
-'d', 's', '\022', 'K', '\n', '\010', 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\030', '\001', ' ', '\001', '(', '\016', '2', '%', '.', 'e', 'n',
-'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'i', 'n',
-'g', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\010', 'p', 'r', 'i', 'o',
-'r', 'i', 't', 'y', '\022', 'E', '\n', '\017', 'm', 'a', 'x', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', '\030', '\002',
-' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I',
-'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 'm', 'a', 'x', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 's',
-'\022', 'N', '\n', '\024', 'm', 'a', 'x', '_', 'p', 'e', 'n', 'd', 'i', 'n', 'g', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', 's', '\030',
-'\003', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U',
-'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\022', 'm', 'a', 'x', 'P', 'e', 'n', 'd', 'i', 'n', 'g', 'R', 'e', 'q',
-'u', 'e', 's', 't', 's', '\022', '?', '\n', '\014', 'm', 'a', 'x', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', 's', '\030', '\004', ' ', '\001',
-'(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't',
-'3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\013', 'm', 'a', 'x', 'R', 'e', 'q', 'u', 'e', 's', 't', 's', '\022', '=', '\n', '\013', 'm',
-'a', 'x', '_', 'r', 'e', 't', 'r', 'i', 'e', 's', '\030', '\005', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e',
-'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\n', 'm', 'a',
-'x', 'R', 'e', 't', 'r', 'i', 'e', 's', '\022', 'b', '\n', '\014', 'r', 'e', 't', 'r', 'y', '_', 'b', 'u', 'd', 'g', 'e', 't', '\030',
-'\010', ' ', '\001', '(', '\013', '2', '?', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's',
-'t', 'e', 'r', '.', 'v', '3', '.', 'C', 'i', 'r', 'c', 'u', 'i', 't', 'B', 'r', 'e', 'a', 'k', 'e', 'r', 's', '.', 'T', 'h',
-'r', 'e', 's', 'h', 'o', 'l', 'd', 's', '.', 'R', 'e', 't', 'r', 'y', 'B', 'u', 'd', 'g', 'e', 't', 'R', '\013', 'r', 'e', 't',
-'r', 'y', 'B', 'u', 'd', 'g', 'e', 't', '\022', '\'', '\n', '\017', 't', 'r', 'a', 'c', 'k', '_', 'r', 'e', 'm', 'a', 'i', 'n', 'i',
-'n', 'g', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\016', 't', 'r', 'a', 'c', 'k', 'R', 'e', 'm', 'a', 'i', 'n', 'i', 'n', 'g', '\022',
-'N', '\n', '\024', 'm', 'a', 'x', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'p', 'o', 'o', 'l', 's', '\030', '\007',
-' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I',
-'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\022', 'm', 'a', 'x', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'P',
-'o', 'o', 'l', 's', '\032', '\342', '\001', '\n', '\013', 'R', 'e', 't', 'r', 'y', 'B', 'u', 'd', 'g', 'e', 't', '\022', '=', '\n', '\016', 'b',
-'u', 'd', 'g', 'e', 't', '_', 'p', 'e', 'r', 'c', 'e', 'n', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', 'v',
-'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\r', 'b', 'u', 'd', 'g', 'e',
-'t', 'P', 'e', 'r', 'c', 'e', 'n', 't', '\022', 'P', '\n', '\025', 'm', 'i', 'n', '_', 'r', 'e', 't', 'r', 'y', '_', 'c', 'o', 'n',
-'c', 'u', 'r', 'r', 'e', 'n', 'c', 'y', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
-'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\023', 'm', 'i', 'n', 'R',
-'e', 't', 'r', 'y', 'C', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 'c', 'y', ':', 'B', '\232', '\305', '\210', '\036', '=', '\n', ';', 'e',
+'R', '\n', 't', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', 's', '\022', 'c', '\n', '\023', 'p', 'e', 'r', '_', 'h', 'o', 's', 't', '_',
+'t', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '3', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'i', 'r', 'c', 'u', 'i', 't',
+'B', 'r', 'e', 'a', 'k', 'e', 'r', 's', '.', 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', 's', 'R', '\021', 'p', 'e', 'r', 'H',
+'o', 's', 't', 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', 's', '\032', '\352', '\006', '\n', '\n', 'T', 'h', 'r', 'e', 's', 'h', 'o',
+'l', 'd', 's', '\022', 'K', '\n', '\010', 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\030', '\001', ' ', '\001', '(', '\016', '2', '%', '.', 'e',
+'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'i',
+'n', 'g', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\010', 'p', 'r', 'i',
+'o', 'r', 'i', 't', 'y', '\022', 'E', '\n', '\017', 'm', 'a', 'x', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', '\030',
+'\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U',
+'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 'm', 'a', 'x', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n',
+'s', '\022', 'N', '\n', '\024', 'm', 'a', 'x', '_', 'p', 'e', 'n', 'd', 'i', 'n', 'g', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', 's',
+'\030', '\003', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
+'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\022', 'm', 'a', 'x', 'P', 'e', 'n', 'd', 'i', 'n', 'g', 'R', 'e',
+'q', 'u', 'e', 's', 't', 's', '\022', '?', '\n', '\014', 'm', 'a', 'x', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', 's', '\030', '\004', ' ',
+'\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n',
+'t', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\013', 'm', 'a', 'x', 'R', 'e', 'q', 'u', 'e', 's', 't', 's', '\022', '=', '\n', '\013',
+'m', 'a', 'x', '_', 'r', 'e', 't', 'r', 'i', 'e', 's', '\030', '\005', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l',
+'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\n', 'm',
+'a', 'x', 'R', 'e', 't', 'r', 'i', 'e', 's', '\022', 'b', '\n', '\014', 'r', 'e', 't', 'r', 'y', '_', 'b', 'u', 'd', 'g', 'e', 't',
+'\030', '\010', ' ', '\001', '(', '\013', '2', '?', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u',
+'s', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'i', 'r', 'c', 'u', 'i', 't', 'B', 'r', 'e', 'a', 'k', 'e', 'r', 's', '.', 'T',
+'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', 's', '.', 'R', 'e', 't', 'r', 'y', 'B', 'u', 'd', 'g', 'e', 't', 'R', '\013', 'r', 'e',
+'t', 'r', 'y', 'B', 'u', 'd', 'g', 'e', 't', '\022', '\'', '\n', '\017', 't', 'r', 'a', 'c', 'k', '_', 'r', 'e', 'm', 'a', 'i', 'n',
+'i', 'n', 'g', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\016', 't', 'r', 'a', 'c', 'k', 'R', 'e', 'm', 'a', 'i', 'n', 'i', 'n', 'g',
+'\022', 'N', '\n', '\024', 'm', 'a', 'x', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'p', 'o', 'o', 'l', 's', '\030',
+'\007', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U',
+'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\022', 'm', 'a', 'x', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n',
+'P', 'o', 'o', 'l', 's', '\032', '\342', '\001', '\n', '\013', 'R', 'e', 't', 'r', 'y', 'B', 'u', 'd', 'g', 'e', 't', '\022', '=', '\n', '\016',
+'b', 'u', 'd', 'g', 'e', 't', '_', 'p', 'e', 'r', 'c', 'e', 'n', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n',
+'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\r', 'b', 'u', 'd', 'g',
+'e', 't', 'P', 'e', 'r', 'c', 'e', 'n', 't', '\022', 'P', '\n', '\025', 'm', 'i', 'n', '_', 'r', 'e', 't', 'r', 'y', '_', 'c', 'o',
+'n', 'c', 'u', 'r', 'r', 'e', 'n', 'c', 'y', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.',
+'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\023', 'm', 'i', 'n',
+'R', 'e', 't', 'r', 'y', 'C', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 'c', 'y', ':', 'B', '\232', '\305', '\210', '\036', '=', '\n', ';',
+'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'i', 'r', 'c',
+'u', 'i', 't', 'B', 'r', 'e', 'a', 'k', 'e', 'r', 's', '.', 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', 's', '.', 'R', 'e',
+'t', 'r', 'y', 'B', 'u', 'd', 'g', 'e', 't', ':', '6', '\232', '\305', '\210', '\036', '1', '\n', '/', 'e', 'n', 'v', 'o', 'y', '.', 'a',
+'p', 'i', '.', 'v', '2', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'i', 'r', 'c', 'u', 'i', 't', 'B', 'r', 'e', 'a',
+'k', 'e', 'r', 's', '.', 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', 's', ':', '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e',
'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'i', 'r', 'c', 'u',
-'i', 't', 'B', 'r', 'e', 'a', 'k', 'e', 'r', 's', '.', 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', 's', '.', 'R', 'e', 't',
-'r', 'y', 'B', 'u', 'd', 'g', 'e', 't', ':', '6', '\232', '\305', '\210', '\036', '1', '\n', '/', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p',
-'i', '.', 'v', '2', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'i', 'r', 'c', 'u', 'i', 't', 'B', 'r', 'e', 'a', 'k',
-'e', 'r', 's', '.', 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', 's', ':', '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e', 'n',
-'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'i', 'r', 'c', 'u', 'i',
-'t', 'B', 'r', 'e', 'a', 'k', 'e', 'r', 's', 'B', '\220', '\001', '\n', '%', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o',
-'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v',
-'3', 'B', '\023', 'C', 'i', 'r', 'c', 'u', 'i', 't', 'B', 'r', 'e', 'a', 'k', 'e', 'r', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z',
-'H', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o',
-'-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f',
-'i', 'g', '/', 'c', 'l', 'u', 's', 't', 'e', 'r', '/', 'v', '3', ';', 'c', 'l', 'u', 's', 't', 'e', 'r', 'v', '3', '\272', '\200',
-'\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'i', 't', 'B', 'r', 'e', 'a', 'k', 'e', 'r', 's', 'B', '\220', '\001', '\n', '%', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r',
+'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.',
+'v', '3', 'B', '\023', 'C', 'i', 'r', 'c', 'u', 'i', 't', 'B', 'r', 'e', 'a', 'k', 'e', 'r', 'P', 'r', 'o', 't', 'o', 'P', '\001',
+'Z', 'H', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g',
+'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n',
+'f', 'i', 'g', '/', 'c', 'l', 'u', 's', 't', 'e', 'r', '/', 'v', '3', ';', 'c', 'l', 'u', 's', 't', 'e', 'r', 'v', '3', '\272',
+'\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[7] = {
@@ -90,5 +94,5 @@ _upb_DefPool_Init envoy_config_cluster_v3_circuit_breaker_proto_upbdefinit = {
deps,
&envoy_config_cluster_v3_circuit_breaker_proto_upb_file_layout,
"envoy/config/cluster/v3/circuit_breaker.proto",
- UPB_STRINGVIEW_INIT(descriptor, 1439)
+ UPB_STRINGVIEW_INIT(descriptor, 1540)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c
index 78e82c5124..ffff66a9c0 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c
@@ -33,7 +33,7 @@ extern _upb_DefPool_Init udpa_annotations_security_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[11908] = {'\n', '%', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'l', 'u', 's', 't', 'e', 'r', '/', 'v', '3',
+static const char descriptor[12212] = {'\n', '%', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'l', 'u', 's', 't', 'e', 'r', '/', 'v', '3',
'/', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'p', 'r', 'o', 't', 'o', '\022', '\027', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '\032', '-', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n',
'f', 'i', 'g', '/', 'c', 'l', 'u', 's', 't', 'e', 'r', '/', 'v', '3', '/', 'c', 'i', 'r', 'c', 'u', 'i', 't', '_', 'b', 'r',
@@ -71,7 +71,7 @@ static const char descriptor[11908] = {'\n', '%', 'e', 'n', 'v', 'o', 'y', '/',
'e', '.', 'p', 'r', 'o', 't', 'o', '\"', 'K', '\n', '\021', 'C', 'l', 'u', 's', 't', 'e', 'r', 'C', 'o', 'l', 'l', 'e', 'c', 't',
'i', 'o', 'n', '\022', '6', '\n', '\007', 'e', 'n', 't', 'r', 'i', 'e', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'x', 'd',
's', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', 'E', 'n', 't', 'r', 'y',
-'R', '\007', 'e', 'n', 't', 'r', 'i', 'e', 's', '\"', '\302', 'N', '\n', '\007', 'C', 'l', 'u', 's', 't', 'e', 'r', '\022', 'o', '\n', '\030',
+'R', '\007', 'e', 'n', 't', 'r', 'i', 'e', 's', '\"', '\214', 'P', '\n', '\007', 'C', 'l', 'u', 's', 't', 'e', 'r', '\022', 'o', '\n', '\030',
't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', '_', 'm', 'a', 't', 'c', 'h', 'e', 's', '\030',
'+', ' ', '\003', '(', '\013', '2', '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's',
't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'T', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S',
@@ -322,194 +322,206 @@ static const char descriptor[11908] = {'\n', '%', 'e', 'n', 'v', 'o', 'y', '/',
'N', 'O', '_', 'F', 'A', 'L', 'L', 'B', 'A', 'C', 'K', '\020', '\000', '\022', '\020', '\n', '\014', 'A', 'N', 'Y', '_', 'E', 'N', 'D', 'P',
'O', 'I', 'N', 'T', '\020', '\001', '\022', '\022', '\n', '\016', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '_', 'S', 'U', 'B', 'S', 'E', 'T', '\020',
'\002', ':', '*', '\232', '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l',
-'u', 's', 't', 'e', 'r', '.', 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\235', '\001', '\n', '\017',
+'u', 's', 't', 'e', 'r', '.', 'L', 'b', 'S', 'u', 'b', 's', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\343', '\001', '\n', '\017',
'S', 'l', 'o', 'w', 'S', 't', 'a', 'r', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'E', '\n', '\021', 's', 'l', 'o', 'w', '_', 's',
't', 'a', 'r', 't', '_', 'w', 'i', 'n', 'd', 'o', 'w', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l',
'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\017', 's', 'l', 'o', 'w',
'S', 't', 'a', 'r', 't', 'W', 'i', 'n', 'd', 'o', 'w', '\022', 'C', '\n', '\n', 'a', 'g', 'g', 'r', 'e', 's', 's', 'i', 'o', 'n',
'\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r',
'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'D', 'o', 'u', 'b', 'l', 'e', 'R', '\n', 'a', 'g', 'g', 'r', 'e',
-'s', 's', 'i', 'o', 'n', '\032', 'r', '\n', '\022', 'R', 'o', 'u', 'n', 'd', 'R', 'o', 'b', 'i', 'n', 'L', 'b', 'C', 'o', 'n', 'f',
-'i', 'g', '\022', '\\', '\n', '\021', 's', 'l', 'o', 'w', '_', 's', 't', 'a', 'r', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001',
-' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't',
-'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'S', 'l', 'o', 'w', 'S', 't', 'a', 'r', 't', 'C', 'o',
-'n', 'f', 'i', 'g', 'R', '\017', 's', 'l', 'o', 'w', 'S', 't', 'a', 'r', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\305', '\002', '\n',
-'\024', 'L', 'e', 'a', 's', 't', 'R', 'e', 'q', 'u', 'e', 's', 't', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'H', '\n', '\014',
-'c', 'h', 'o', 'i', 'c', 'e', '_', 'c', 'o', 'u', 'n', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007',
-'\372', 'B', '\004', '*', '\002', '(', '\002', 'R', '\013', 'c', 'h', 'o', 'i', 'c', 'e', 'C', 'o', 'u', 'n', 't', '\022', 'S', '\n', '\023', 'a',
-'c', 't', 'i', 'v', 'e', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'b', 'i', 'a', 's', '\030', '\002', ' ', '\001', '(', '\013', '2',
-'#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u',
-'n', 't', 'i', 'm', 'e', 'D', 'o', 'u', 'b', 'l', 'e', 'R', '\021', 'a', 'c', 't', 'i', 'v', 'e', 'R', 'e', 'q', 'u', 'e', 's',
-'t', 'B', 'i', 'a', 's', '\022', '\\', '\n', '\021', 's', 'l', 'o', 'w', '_', 's', 't', 'a', 'r', 't', '_', 'c', 'o', 'n', 'f', 'i',
-'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l',
-'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'S', 'l', 'o', 'w', 'S', 't', 'a', 'r',
-'t', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\017', 's', 'l', 'o', 'w', 'S', 't', 'a', 'r', 't', 'C', 'o', 'n', 'f', 'i', 'g', ':',
-'0', '\232', '\305', '\210', '\036', '+', '\n', ')', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's',
-'t', 'e', 'r', '.', 'L', 'e', 'a', 's', 't', 'R', 'e', 'q', 'u', 'e', 's', 't', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\032',
-'\221', '\003', '\n', '\020', 'R', 'i', 'n', 'g', 'H', 'a', 's', 'h', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'T', '\n', '\021', 'm',
-'i', 'n', 'i', 'm', 'u', 'm', '_', 'r', 'i', 'n', 'g', '_', 's', 'i', 'z', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.',
-'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', 'l',
-'u', 'e', 'B', '\n', '\372', 'B', '\007', '2', '\005', '\030', '\200', '\200', '\200', '\004', 'R', '\017', 'm', 'i', 'n', 'i', 'm', 'u', 'm', 'R', 'i',
-'n', 'g', 'S', 'i', 'z', 'e', '\022', 'm', '\n', '\r', 'h', 'a', 's', 'h', '_', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\030', '\003',
-' ', '\001', '(', '\016', '2', '>', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't',
-'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'R', 'i', 'n', 'g', 'H', 'a', 's', 'h', 'L', 'b', 'C',
-'o', 'n', 'f', 'i', 'g', '.', 'H', 'a', 's', 'h', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', '\001',
-'\002', '\020', '\001', 'R', '\014', 'h', 'a', 's', 'h', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\022', 'T', '\n', '\021', 'm', 'a', 'x', 'i',
-'m', 'u', 'm', '_', 'r', 'i', 'n', 'g', '_', 's', 'i', 'z', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o',
-'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', 'e', 'B',
-'\n', '\372', 'B', '\007', '2', '\005', '\030', '\200', '\200', '\200', '\004', 'R', '\017', 'm', 'a', 'x', 'i', 'm', 'u', 'm', 'R', 'i', 'n', 'g', 'S',
-'i', 'z', 'e', '\"', '.', '\n', '\014', 'H', 'a', 's', 'h', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\022', '\013', '\n', '\007', 'X', 'X',
-'_', 'H', 'A', 'S', 'H', '\020', '\000', '\022', '\021', '\n', '\r', 'M', 'U', 'R', 'M', 'U', 'R', '_', 'H', 'A', 'S', 'H', '_', '2', '\020',
-'\001', ':', ',', '\232', '\305', '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l',
-'u', 's', 't', 'e', 'r', '.', 'R', 'i', 'n', 'g', 'H', 'a', 's', 'h', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'J', '\004', '\010',
-'\002', '\020', '\003', '\032', 'Y', '\n', '\016', 'M', 'a', 'g', 'l', 'e', 'v', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'G', '\n', '\n',
-'t', 'a', 'b', 'l', 'e', '_', 's', 'i', 'z', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e',
-'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', 'e', 'B', '\n', '\372', 'B',
-'\007', '2', '\005', '\030', '\313', '\226', '\261', '\002', 'R', '\t', 't', 'a', 'b', 'l', 'e', 'S', 'i', 'z', 'e', '\032', 'n', '\n', '\023', 'O', 'r',
-'i', 'g', 'i', 'n', 'a', 'l', 'D', 's', 't', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '&', '\n', '\017', 'u', 's', 'e', '_',
-'h', 't', 't', 'p', '_', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\r', 'u', 's', 'e', 'H', 't', 't',
-'p', 'H', 'e', 'a', 'd', 'e', 'r', ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i',
-'.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'O', 'r', 'i', 'g', 'i', 'n', 'a', 'l', 'D', 's', 't', 'L', 'b',
-'C', 'o', 'n', 'f', 'i', 'g', '\032', '\374', '\n', '\n', '\016', 'C', 'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g',
-'\022', 'N', '\n', '\027', 'h', 'e', 'a', 'l', 't', 'h', 'y', '_', 'p', 'a', 'n', 'i', 'c', '_', 't', 'h', 'r', 'e', 's', 'h', 'o',
-'l', 'd', '\030', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.',
-'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\025', 'h', 'e', 'a', 'l', 't', 'h', 'y', 'P', 'a', 'n', 'i', 'c', 'T', 'h', 'r', 'e',
-'s', 'h', 'o', 'l', 'd', '\022', 't', '\n', '\024', 'z', 'o', 'n', 'e', '_', 'a', 'w', 'a', 'r', 'e', '_', 'l', 'b', '_', 'c', 'o',
-'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', 'A', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
-'.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o',
-'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'Z', 'o', 'n', 'e', 'A', 'w', 'a', 'r', 'e', 'L', 'b', 'C', 'o', 'n', 'f',
-'i', 'g', 'H', '\000', 'R', '\021', 'z', 'o', 'n', 'e', 'A', 'w', 'a', 'r', 'e', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\211',
-'\001', '\n', '\033', 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', '_', 'w', 'e', 'i', 'g', 'h', 't', 'e', 'd', '_', 'l', 'b', '_', 'c',
-'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', 'H', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm',
-'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'L', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', 'h', 't',
-'e', 'd', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\030', 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'W', 'e', 'i',
-'g', 'h', 't', 'e', 'd', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'I', '\n', '\023', 'u', 'p', 'd', 'a', 't', 'e', '_', 'm',
-'e', 'r', 'g', 'e', '_', 'w', 'i', 'n', 'd', 'o', 'w', '\030', '\004', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l',
-'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\021', 'u', 'p', 'd', 'a',
-'t', 'e', 'M', 'e', 'r', 'g', 'e', 'W', 'i', 'n', 'd', 'o', 'w', '\022', 'C', '\n', '\037', 'i', 'g', 'n', 'o', 'r', 'e', '_', 'n',
-'e', 'w', '_', 'h', 'o', 's', 't', 's', '_', 'u', 'n', 't', 'i', 'l', '_', 'f', 'i', 'r', 's', 't', '_', 'h', 'c', '\030', '\005',
-' ', '\001', '(', '\010', 'R', '\032', 'i', 'g', 'n', 'o', 'r', 'e', 'N', 'e', 'w', 'H', 'o', 's', 't', 's', 'U', 'n', 't', 'i', 'l',
-'F', 'i', 'r', 's', 't', 'H', 'c', '\022', 'M', '\n', '$', 'c', 'l', 'o', 's', 'e', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i',
-'o', 'n', 's', '_', 'o', 'n', '_', 'h', 'o', 's', 't', '_', 's', 'e', 't', '_', 'c', 'h', 'a', 'n', 'g', 'e', '\030', '\006', ' ',
-'\001', '(', '\010', 'R', '\037', 'c', 'l', 'o', 's', 'e', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', 'O', 'n', 'H', 'o',
-'s', 't', 'S', 'e', 't', 'C', 'h', 'a', 'n', 'g', 'e', '\022', '\212', '\001', '\n', '\034', 'c', 'o', 'n', 's', 'i', 's', 't', 'e', 'n',
-'t', '_', 'h', 'a', 's', 'h', 'i', 'n', 'g', '_', 'l', 'b', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\007', ' ', '\001', '(', '\013',
-'2', 'I', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v',
-'3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.',
-'C', 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't', 'H', 'a', 's', 'h', 'i', 'n', 'g', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g',
-'R', '\031', 'c', 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't', 'H', 'a', 's', 'h', 'i', 'n', 'g', 'L', 'b', 'C', 'o', 'n', 'f',
-'i', 'g', '\032', '\215', '\002', '\n', '\021', 'Z', 'o', 'n', 'e', 'A', 'w', 'a', 'r', 'e', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022',
-'?', '\n', '\017', 'r', 'o', 'u', 't', 'i', 'n', 'g', '_', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\030', '\001', ' ', '\001', '(', '\013', '2',
-'\026', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\016',
-'r', 'o', 'u', 't', 'i', 'n', 'g', 'E', 'n', 'a', 'b', 'l', 'e', 'd', '\022', 'F', '\n', '\020', 'm', 'i', 'n', '_', 'c', 'l', 'u',
-'s', 't', 'e', 'r', '_', 's', 'i', 'z', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.',
-'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 'm', 'i', 'n',
-'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 'i', 'z', 'e', '\022', '1', '\n', '\025', 'f', 'a', 'i', 'l', '_', 't', 'r', 'a', 'f', 'f',
-'i', 'c', '_', 'o', 'n', '_', 'p', 'a', 'n', 'i', 'c', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\022', 'f', 'a', 'i', 'l', 'T', 'r',
-'a', 'f', 'f', 'i', 'c', 'O', 'n', 'P', 'a', 'n', 'i', 'c', ':', '<', '\232', '\305', '\210', '\036', '7', '\n', '5', 'e', 'n', 'v', 'o',
-'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'L', 'b',
-'C', 'o', 'n', 'f', 'i', 'g', '.', 'Z', 'o', 'n', 'e', 'A', 'w', 'a', 'r', 'e', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\032',
-'_', '\n', '\030', 'L', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'L', 'b', 'C', 'o', 'n', 'f',
-'i', 'g', ':', 'C', '\232', '\305', '\210', '\036', '>', '\n', '<', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C',
-'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'L', 'o', 'c',
-'a', 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\361', '\001', '\n',
-'\031', 'C', 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't', 'H', 'a', 's', 'h', 'i', 'n', 'g', 'L', 'b', 'C', 'o', 'n', 'f', 'i',
-'g', '\022', '7', '\n', '\030', 'u', 's', 'e', '_', 'h', 'o', 's', 't', 'n', 'a', 'm', 'e', '_', 'f', 'o', 'r', '_', 'h', 'a', 's',
-'h', 'i', 'n', 'g', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\025', 'u', 's', 'e', 'H', 'o', 's', 't', 'n', 'a', 'm', 'e', 'F', 'o',
-'r', 'H', 'a', 's', 'h', 'i', 'n', 'g', '\022', 'U', '\n', '\023', 'h', 'a', 's', 'h', '_', 'b', 'a', 'l', 'a', 'n', 'c', 'e', '_',
-'f', 'a', 'c', 't', 'o', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o',
-'t', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(',
-'d', 'R', '\021', 'h', 'a', 's', 'h', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'F', 'a', 'c', 't', 'o', 'r', ':', 'D', '\232', '\305', '\210',
-'\036', '?', '\n', '=', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.',
-'C', 'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'C', 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't',
-'H', 'a', 's', 'h', 'i', 'n', 'g', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', ':', '*', '\232', '\305', '\210', '\036', '%', '\n', '#', 'e',
-'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o',
-'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\033', '\n', '\031', 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', '_', 'c', 'o', 'n',
-'f', 'i', 'g', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\032', '\322', '\001', '\n', '\013', 'R', 'e', 'f', 'r', 'e', 's', 'h',
-'R', 'a', 't', 'e', '\022', 'N', '\n', '\r', 'b', 'a', 's', 'e', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\001', ' ', '\001',
-'(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a',
-'t', 'i', 'o', 'n', 'B', '\016', '\372', 'B', '\013', '\252', '\001', '\010', '\010', '\001', '*', '\004', '\020', '\300', '\204', '=', 'R', '\014', 'b', 'a', 's',
-'e', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', 'J', '\n', '\014', 'm', 'a', 'x', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l',
-'\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
-'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\014', '\372', 'B', '\t', '\252', '\001', '\006', '*', '\004', '\020', '\300', '\204', '=', 'R', '\013', 'm',
-'a', 'x', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', ':', '\'', '\232', '\305', '\210', '\036', '\"', '\n', ' ', 'e', 'n', 'v', 'o', 'y', '.',
-'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'R', 'e', 'f', 'r', 'e', 's', 'h', 'R', 'a', 't',
-'e', '\032', '\203', '\002', '\n', '\020', 'P', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'x', '\n',
-'\035', 'p', 'e', 'r', '_', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'p', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', '_',
-'r', 'a', 't', 'i', 'o', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
-'o', 'b', 'u', 'f', '.', 'D', 'o', 'u', 'b', 'l', 'e', 'V', 'a', 'l', 'u', 'e', 'B', '\027', '\372', 'B', '\024', '\022', '\022', '\031', '\000',
-'\000', '\000', '\000', '\000', '\000', '\010', '@', ')', '\000', '\000', '\000', '\000', '\000', '\000', '\360', '?', 'R', '\032', 'p', 'e', 'r', 'U', 'p', 's', 't',
-'r', 'e', 'a', 'm', 'P', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'R', 'a', 't', 'i', 'o', '\022', 'u', '\n', '\033', 'p', 'r',
-'e', 'd', 'i', 'c', 't', 'i', 'v', 'e', '_', 'p', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', '_', 'r', 'a', 't', 'i', 'o',
-'\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
-'D', 'o', 'u', 'b', 'l', 'e', 'V', 'a', 'l', 'u', 'e', 'B', '\027', '\372', 'B', '\024', '\022', '\022', '\031', '\000', '\000', '\000', '\000', '\000', '\000',
-'\010', '@', ')', '\000', '\000', '\000', '\000', '\000', '\000', '\360', '?', 'R', '\031', 'p', 'r', 'e', 'd', 'i', 'c', 't', 'i', 'v', 'e', 'P', 'r',
-'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'R', 'a', 't', 'i', 'o', '\032', 'f', '\n', '\"', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't',
-'e', 'n', 's', 'i', 'o', 'n', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'E', 'n', 't', 'r',
-'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '*', '\n', '\005', 'v', 'a',
-'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b',
-'u', 'f', '.', 'A', 'n', 'y', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', '\"', 'W', '\n', '\r', 'D', 'i', 's', 'c',
-'o', 'v', 'e', 'r', 'y', 'T', 'y', 'p', 'e', '\022', '\n', '\n', '\006', 'S', 'T', 'A', 'T', 'I', 'C', '\020', '\000', '\022', '\016', '\n', '\n',
-'S', 'T', 'R', 'I', 'C', 'T', '_', 'D', 'N', 'S', '\020', '\001', '\022', '\017', '\n', '\013', 'L', 'O', 'G', 'I', 'C', 'A', 'L', '_', 'D',
-'N', 'S', '\020', '\002', '\022', '\007', '\n', '\003', 'E', 'D', 'S', '\020', '\003', '\022', '\020', '\n', '\014', 'O', 'R', 'I', 'G', 'I', 'N', 'A', 'L',
-'_', 'D', 'S', 'T', '\020', '\004', '\"', '\244', '\001', '\n', '\010', 'L', 'b', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\017', '\n', '\013', 'R', 'O',
-'U', 'N', 'D', '_', 'R', 'O', 'B', 'I', 'N', '\020', '\000', '\022', '\021', '\n', '\r', 'L', 'E', 'A', 'S', 'T', '_', 'R', 'E', 'Q', 'U',
-'E', 'S', 'T', '\020', '\001', '\022', '\r', '\n', '\t', 'R', 'I', 'N', 'G', '_', 'H', 'A', 'S', 'H', '\020', '\002', '\022', '\n', '\n', '\006', 'R',
-'A', 'N', 'D', 'O', 'M', '\020', '\003', '\022', '\n', '\n', '\006', 'M', 'A', 'G', 'L', 'E', 'V', '\020', '\005', '\022', '\024', '\n', '\020', 'C', 'L',
-'U', 'S', 'T', 'E', 'R', '_', 'P', 'R', 'O', 'V', 'I', 'D', 'E', 'D', '\020', '\006', '\022', ' ', '\n', '\034', 'L', 'O', 'A', 'D', '_',
-'B', 'A', 'L', 'A', 'N', 'C', 'I', 'N', 'G', '_', 'P', 'O', 'L', 'I', 'C', 'Y', '_', 'C', 'O', 'N', 'F', 'I', 'G', '\020', '\007',
-'\"', '\004', '\010', '\004', '\020', '\004', '*', '\017', 'O', 'R', 'I', 'G', 'I', 'N', 'A', 'L', '_', 'D', 'S', 'T', '_', 'L', 'B', '\"', 'P',
-'\n', '\017', 'D', 'n', 's', 'L', 'o', 'o', 'k', 'u', 'p', 'F', 'a', 'm', 'i', 'l', 'y', '\022', '\010', '\n', '\004', 'A', 'U', 'T', 'O',
-'\020', '\000', '\022', '\013', '\n', '\007', 'V', '4', '_', 'O', 'N', 'L', 'Y', '\020', '\001', '\022', '\013', '\n', '\007', 'V', '6', '_', 'O', 'N', 'L',
-'Y', '\020', '\002', '\022', '\020', '\n', '\014', 'V', '4', '_', 'P', 'R', 'E', 'F', 'E', 'R', 'R', 'E', 'D', '\020', '\003', '\022', '\007', '\n', '\003',
-'A', 'L', 'L', '\020', '\004', '\"', 'T', '\n', '\030', 'C', 'l', 'u', 's', 't', 'e', 'r', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'S',
-'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', '\022', '\033', '\n', '\027', 'U', 'S', 'E', '_', 'C', 'O', 'N', 'F', 'I', 'G', 'U', 'R', 'E',
-'D', '_', 'P', 'R', 'O', 'T', 'O', 'C', 'O', 'L', '\020', '\000', '\022', '\033', '\n', '\027', 'U', 'S', 'E', '_', 'D', 'O', 'W', 'N', 'S',
-'T', 'R', 'E', 'A', 'M', '_', 'P', 'R', 'O', 'T', 'O', 'C', 'O', 'L', '\020', '\001', ':', '\033', '\232', '\305', '\210', '\036', '\026', '\n', '\024',
-'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'B', '\030', '\n', '\026', 'c',
-'l', 'u', 's', 't', 'e', 'r', '_', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '_', 't', 'y', 'p', 'e', 'B', '\013', '\n', '\t',
-'l', 'b', '_', 'c', 'o', 'n', 'f', 'i', 'g', 'J', '\004', '\010', '\014', '\020', '\r', 'J', '\004', '\010', '\017', '\020', '\020', 'J', '\004', '\010', '\007',
-'\020', '\010', 'J', '\004', '\010', '\013', '\020', '\014', 'J', '\004', '\010', '#', '\020', '$', 'R', '\005', 'h', 'o', 's', 't', 's', 'R', '\013', 't', 'l',
-'s', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', 'R', '\032', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '_', 'p', 'r', 'o', 't',
-'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\332', '\002', '\n', '\023', 'L', 'o', 'a', 'd', 'B', 'a', 'l', 'a',
-'n', 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'O', '\n', '\010', 'p', 'o', 'l', 'i', 'c', 'i', 'e', 's', '\030', '\001',
-' ', '\003', '(', '\013', '2', '3', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't',
-'e', 'r', '.', 'v', '3', '.', 'L', 'o', 'a', 'd', 'B', 'a', 'l', 'a', 'n', 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i', 'c', 'y',
-'.', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\010', 'p', 'o', 'l', 'i', 'c', 'i', 'e', 's', '\032', '\310', '\001', '\n', '\006', 'P', 'o', 'l',
-'i', 'c', 'y', '\022', '`', '\n', '\026', 't', 'y', 'p', 'e', 'd', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '_', 'c', 'o',
-'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
-'.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o',
-'n', 'f', 'i', 'g', 'R', '\024', 't', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i',
-'g', ':', '.', '\232', '\305', '\210', '\036', ')', '\n', '\'', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'L', 'o',
-'a', 'd', 'B', 'a', 'l', 'a', 'n', 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'P', 'o', 'l', 'i', 'c', 'y', 'J',
-'\004', '\010', '\002', '\020', '\003', 'J', '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', '\003', '\020', '\004', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g',
-'R', '\004', 'n', 'a', 'm', 'e', 'R', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', ':', '\'', '\232', '\305', '\210',
-'\036', '\"', '\n', ' ', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'L', 'o', 'a', 'd', 'B', 'a', 'l', 'a',
-'n', 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i', 'c', 'y', '\"', '\202', '\001', '\n', '\022', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'B',
-'i', 'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'D', '\n', '\016', 's', 'o', 'u', 'r', 'c', 'e', '_', 'a', 'd', 'd', 'r', 'e',
-'s', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c',
-'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', 'e', 's', 's', 'R', '\r', 's', 'o', 'u', 'r', 'c', 'e', 'A', 'd', 'd',
-'r', 'e', 's', 's', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2',
-'.', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'B', 'i', 'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\"', '\223', '\001', '\n', '\031', 'U',
-'p', 's', 't', 'r', 'e', 'a', 'm', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022',
-'G', '\n', '\r', 't', 'c', 'p', '_', 'k', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\"', '.',
-'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'c', 'p', 'K',
-'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', 'R', '\014', 't', 'c', 'p', 'K', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', ':', '-', '\232',
-'\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'U', 'p', 's', 't', 'r', 'e',
-'a', 'm', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', 'n', 's', '\"', 'r', '\n', '\021', 'T', 'r',
-'a', 'c', 'k', 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 't', 'a', 't', 's', '\022', '\'', '\n', '\017', 't', 'i', 'm', 'e', 'o', 'u',
-'t', '_', 'b', 'u', 'd', 'g', 'e', 't', 's', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\016', 't', 'i', 'm', 'e', 'o', 'u', 't', 'B',
-'u', 'd', 'g', 'e', 't', 's', '\022', '4', '\n', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'r', 'e', 's', 'p', 'o', 'n', 's',
-'e', '_', 's', 'i', 'z', 'e', 's', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\024', 'r', 'e', 'q', 'u', 'e', 's', 't', 'R', 'e', 's',
-'p', 'o', 'n', 's', 'e', 'S', 'i', 'z', 'e', 's', 'B', '\211', '\001', '\n', '%', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r',
-'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.',
-'v', '3', 'B', '\014', 'C', 'l', 'u', 's', 't', 'e', 'r', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'H', 'g', 'i', 't', 'h', 'u',
-'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r',
-'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'l', 'u',
-'s', 't', 'e', 'r', '/', 'v', '3', ';', 'c', 'l', 'u', 's', 't', 'e', 'r', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002',
-'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'s', 's', 'i', 'o', 'n', '\022', 'D', '\n', '\022', 'm', 'i', 'n', '_', 'w', 'e', 'i', 'g', 'h', 't', '_', 'p', 'e', 'r', 'c', 'e',
+'n', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.',
+'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\020', 'm', 'i', 'n', 'W', 'e', 'i', 'g', 'h', 't', 'P', 'e', 'r', 'c', 'e', 'n', 't',
+'\032', 'r', '\n', '\022', 'R', 'o', 'u', 'n', 'd', 'R', 'o', 'b', 'i', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\\', '\n',
+'\021', 's', 'l', 'o', 'w', '_', 's', 't', 'a', 'r', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2',
+'0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3',
+'.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'S', 'l', 'o', 'w', 'S', 't', 'a', 'r', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'R',
+'\017', 's', 'l', 'o', 'w', 'S', 't', 'a', 'r', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\305', '\002', '\n', '\024', 'L', 'e', 'a', 's',
+'t', 'R', 'e', 'q', 'u', 'e', 's', 't', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'H', '\n', '\014', 'c', 'h', 'o', 'i', 'c',
+'e', '_', 'c', 'o', 'u', 'n', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
+'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002',
+'(', '\002', 'R', '\013', 'c', 'h', 'o', 'i', 'c', 'e', 'C', 'o', 'u', 'n', 't', '\022', 'S', '\n', '\023', 'a', 'c', 't', 'i', 'v', 'e',
+'_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'b', 'i', 'a', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e',
+'D', 'o', 'u', 'b', 'l', 'e', 'R', '\021', 'a', 'c', 't', 'i', 'v', 'e', 'R', 'e', 'q', 'u', 'e', 's', 't', 'B', 'i', 'a', 's',
+'\022', '\\', '\n', '\021', 's', 'l', 'o', 'w', '_', 's', 't', 'a', 'r', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001',
+'(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r',
+'.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'S', 'l', 'o', 'w', 'S', 't', 'a', 'r', 't', 'C', 'o', 'n', 'f',
+'i', 'g', 'R', '\017', 's', 'l', 'o', 'w', 'S', 't', 'a', 'r', 't', 'C', 'o', 'n', 'f', 'i', 'g', ':', '0', '\232', '\305', '\210', '\036',
+'+', '\n', ')', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'L',
+'e', 'a', 's', 't', 'R', 'e', 'q', 'u', 'e', 's', 't', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\221', '\003', '\n', '\020', 'R',
+'i', 'n', 'g', 'H', 'a', 's', 'h', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'T', '\n', '\021', 'm', 'i', 'n', 'i', 'm', 'u',
+'m', '_', 'r', 'i', 'n', 'g', '_', 's', 'i', 'z', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l',
+'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', 'e', 'B', '\n', '\372',
+'B', '\007', '2', '\005', '\030', '\200', '\200', '\200', '\004', 'R', '\017', 'm', 'i', 'n', 'i', 'm', 'u', 'm', 'R', 'i', 'n', 'g', 'S', 'i', 'z',
+'e', '\022', 'm', '\n', '\r', 'h', 'a', 's', 'h', '_', 'f', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\016', '2',
+'>', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3',
+'.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'R', 'i', 'n', 'g', 'H', 'a', 's', 'h', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g',
+'.', 'H', 'a', 's', 'h', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\014',
+'h', 'a', 's', 'h', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\022', 'T', '\n', '\021', 'm', 'a', 'x', 'i', 'm', 'u', 'm', '_', 'r',
+'i', 'n', 'g', '_', 's', 'i', 'z', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
+'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', 'e', 'B', '\n', '\372', 'B', '\007', '2',
+'\005', '\030', '\200', '\200', '\200', '\004', 'R', '\017', 'm', 'a', 'x', 'i', 'm', 'u', 'm', 'R', 'i', 'n', 'g', 'S', 'i', 'z', 'e', '\"', '.',
+'\n', '\014', 'H', 'a', 's', 'h', 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', '\022', '\013', '\n', '\007', 'X', 'X', '_', 'H', 'A', 'S', 'H',
+'\020', '\000', '\022', '\021', '\n', '\r', 'M', 'U', 'R', 'M', 'U', 'R', '_', 'H', 'A', 'S', 'H', '_', '2', '\020', '\001', ':', ',', '\232', '\305',
+'\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r',
+'.', 'R', 'i', 'n', 'g', 'H', 'a', 's', 'h', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'J', '\004', '\010', '\002', '\020', '\003', '\032', 'Y',
+'\n', '\016', 'M', 'a', 'g', 'l', 'e', 'v', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'G', '\n', '\n', 't', 'a', 'b', 'l', 'e',
+'_', 's', 'i', 'z', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
+'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', 'e', 'B', '\n', '\372', 'B', '\007', '2', '\005', '\030', '\313',
+'\226', '\261', '\002', 'R', '\t', 't', 'a', 'b', 'l', 'e', 'S', 'i', 'z', 'e', '\032', '\230', '\001', '\n', '\023', 'O', 'r', 'i', 'g', 'i', 'n',
+'a', 'l', 'D', 's', 't', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '&', '\n', '\017', 'u', 's', 'e', '_', 'h', 't', 't', 'p',
+'_', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\r', 'u', 's', 'e', 'H', 't', 't', 'p', 'H', 'e', 'a',
+'d', 'e', 'r', '\022', '(', '\n', '\020', 'h', 't', 't', 'p', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\002',
+' ', '\001', '(', '\t', 'R', '\016', 'h', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 'N', 'a', 'm', 'e', ':', '/', '\232', '\305', '\210',
+'\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.',
+'O', 'r', 'i', 'g', 'i', 'n', 'a', 'l', 'D', 's', 't', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\325', '\013', '\n', '\016', 'C',
+'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'N', '\n', '\027', 'h', 'e', 'a', 'l', 't', 'h', 'y', '_',
+'p', 'a', 'n', 'i', 'c', '_', 't', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', '\030', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'e',
+'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\025', 'h', 'e', 'a',
+'l', 't', 'h', 'y', 'P', 'a', 'n', 'i', 'c', 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', '\022', 't', '\n', '\024', 'z', 'o', 'n',
+'e', '_', 'a', 'w', 'a', 'r', 'e', '_', 'l', 'b', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', 'A',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.',
+'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'Z', 'o',
+'n', 'e', 'A', 'w', 'a', 'r', 'e', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\021', 'z', 'o', 'n', 'e', 'A', 'w',
+'a', 'r', 'e', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\211', '\001', '\n', '\033', 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', '_',
+'w', 'e', 'i', 'g', 'h', 't', 'e', 'd', '_', 'l', 'b', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2',
+'H', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3',
+'.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'L',
+'o', 'c', 'a', 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000',
+'R', '\030', 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'L', 'b', 'C', 'o', 'n', 'f', 'i',
+'g', '\022', 'I', '\n', '\023', 'u', 'p', 'd', 'a', 't', 'e', '_', 'm', 'e', 'r', 'g', 'e', '_', 'w', 'i', 'n', 'd', 'o', 'w', '\030',
+'\004', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D',
+'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\021', 'u', 'p', 'd', 'a', 't', 'e', 'M', 'e', 'r', 'g', 'e', 'W', 'i', 'n', 'd', 'o',
+'w', '\022', 'C', '\n', '\037', 'i', 'g', 'n', 'o', 'r', 'e', '_', 'n', 'e', 'w', '_', 'h', 'o', 's', 't', 's', '_', 'u', 'n', 't',
+'i', 'l', '_', 'f', 'i', 'r', 's', 't', '_', 'h', 'c', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\032', 'i', 'g', 'n', 'o', 'r', 'e',
+'N', 'e', 'w', 'H', 'o', 's', 't', 's', 'U', 'n', 't', 'i', 'l', 'F', 'i', 'r', 's', 't', 'H', 'c', '\022', 'M', '\n', '$', 'c',
+'l', 'o', 's', 'e', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', '_', 'o', 'n', '_', 'h', 'o', 's', 't', '_',
+'s', 'e', 't', '_', 'c', 'h', 'a', 'n', 'g', 'e', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\037', 'c', 'l', 'o', 's', 'e', 'C', 'o',
+'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 's', 'O', 'n', 'H', 'o', 's', 't', 'S', 'e', 't', 'C', 'h', 'a', 'n', 'g', 'e', '\022',
+'\212', '\001', '\n', '\034', 'c', 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't', '_', 'h', 'a', 's', 'h', 'i', 'n', 'g', '_', 'l', 'b',
+'_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\007', ' ', '\001', '(', '\013', '2', 'I', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
+'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o',
+'m', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'C', 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't', 'H', 'a',
+'s', 'h', 'i', 'n', 'g', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\031', 'c', 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't',
+'H', 'a', 's', 'h', 'i', 'n', 'g', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'W', '\n', '\024', 'o', 'v', 'e', 'r', 'r', 'i',
+'d', 'e', '_', 'h', 'o', 's', 't', '_', 's', 't', 'a', 't', 'u', 's', '\030', '\010', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n',
+'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h',
+'S', 't', 'a', 't', 'u', 's', 'S', 'e', 't', 'R', '\022', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'H', 'o', 's', 't', 'S', 't',
+'a', 't', 'u', 's', '\032', '\215', '\002', '\n', '\021', 'Z', 'o', 'n', 'e', 'A', 'w', 'a', 'r', 'e', 'L', 'b', 'C', 'o', 'n', 'f', 'i',
+'g', '\022', '?', '\n', '\017', 'r', 'o', 'u', 't', 'i', 'n', 'g', '_', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\030', '\001', ' ', '\001', '(',
+'\013', '2', '\026', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't',
+'R', '\016', 'r', 'o', 'u', 't', 'i', 'n', 'g', 'E', 'n', 'a', 'b', 'l', 'e', 'd', '\022', 'F', '\n', '\020', 'm', 'i', 'n', '_', 'c',
+'l', 'u', 's', 't', 'e', 'r', '_', 's', 'i', 'z', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l',
+'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '6', '4', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 'm',
+'i', 'n', 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 'i', 'z', 'e', '\022', '1', '\n', '\025', 'f', 'a', 'i', 'l', '_', 't', 'r', 'a',
+'f', 'f', 'i', 'c', '_', 'o', 'n', '_', 'p', 'a', 'n', 'i', 'c', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\022', 'f', 'a', 'i', 'l',
+'T', 'r', 'a', 'f', 'f', 'i', 'c', 'O', 'n', 'P', 'a', 'n', 'i', 'c', ':', '<', '\232', '\305', '\210', '\036', '7', '\n', '5', 'e', 'n',
+'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o', 'n',
+'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'Z', 'o', 'n', 'e', 'A', 'w', 'a', 'r', 'e', 'L', 'b', 'C', 'o', 'n', 'f', 'i',
+'g', '\032', '_', '\n', '\030', 'L', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'L', 'b', 'C', 'o',
+'n', 'f', 'i', 'g', ':', 'C', '\232', '\305', '\210', '\036', '>', '\n', '<', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2',
+'.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'L',
+'o', 'c', 'a', 'l', 'i', 't', 'y', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\361',
+'\001', '\n', '\031', 'C', 'o', 'n', 's', 'i', 's', 't', 'e', 'n', 't', 'H', 'a', 's', 'h', 'i', 'n', 'g', 'L', 'b', 'C', 'o', 'n',
+'f', 'i', 'g', '\022', '7', '\n', '\030', 'u', 's', 'e', '_', 'h', 'o', 's', 't', 'n', 'a', 'm', 'e', '_', 'f', 'o', 'r', '_', 'h',
+'a', 's', 'h', 'i', 'n', 'g', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\025', 'u', 's', 'e', 'H', 'o', 's', 't', 'n', 'a', 'm', 'e',
+'F', 'o', 'r', 'H', 'a', 's', 'h', 'i', 'n', 'g', '\022', 'U', '\n', '\023', 'h', 'a', 's', 'h', '_', 'b', 'a', 'l', 'a', 'n', 'c',
+'e', '_', 'f', 'a', 'c', 't', 'o', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
+'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*',
+'\002', '(', 'd', 'R', '\021', 'h', 'a', 's', 'h', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'F', 'a', 'c', 't', 'o', 'r', ':', 'D', '\232',
+'\305', '\210', '\036', '?', '\n', '=', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e',
+'r', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'C', 'o', 'n', 's', 'i', 's', 't', 'e',
+'n', 't', 'H', 'a', 's', 'h', 'i', 'n', 'g', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', ':', '*', '\232', '\305', '\210', '\036', '%', '\n',
+'#', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'o', 'm',
+'m', 'o', 'n', 'L', 'b', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\033', '\n', '\031', 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', '_', 'c',
+'o', 'n', 'f', 'i', 'g', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\032', '\322', '\001', '\n', '\013', 'R', 'e', 'f', 'r', 'e',
+'s', 'h', 'R', 'a', 't', 'e', '\022', 'N', '\n', '\r', 'b', 'a', 's', 'e', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\001',
+' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u',
+'r', 'a', 't', 'i', 'o', 'n', 'B', '\016', '\372', 'B', '\013', '\252', '\001', '\010', '\010', '\001', '*', '\004', '\020', '\300', '\204', '=', 'R', '\014', 'b',
+'a', 's', 'e', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', 'J', '\n', '\014', 'm', 'a', 'x', '_', 'i', 'n', 't', 'e', 'r', 'v',
+'a', 'l', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
+'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\014', '\372', 'B', '\t', '\252', '\001', '\006', '*', '\004', '\020', '\300', '\204', '=', 'R',
+'\013', 'm', 'a', 'x', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', ':', '\'', '\232', '\305', '\210', '\036', '\"', '\n', ' ', 'e', 'n', 'v', 'o',
+'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'R', 'e', 'f', 'r', 'e', 's', 'h', 'R',
+'a', 't', 'e', '\032', '\203', '\002', '\n', '\020', 'P', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'P', 'o', 'l', 'i', 'c', 'y', '\022',
+'x', '\n', '\035', 'p', 'e', 'r', '_', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'p', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c',
+'t', '_', 'r', 'a', 't', 'i', 'o', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
+'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'o', 'u', 'b', 'l', 'e', 'V', 'a', 'l', 'u', 'e', 'B', '\027', '\372', 'B', '\024', '\022', '\022',
+'\031', '\000', '\000', '\000', '\000', '\000', '\000', '\010', '@', ')', '\000', '\000', '\000', '\000', '\000', '\000', '\360', '?', 'R', '\032', 'p', 'e', 'r', 'U', 'p',
+'s', 't', 'r', 'e', 'a', 'm', 'P', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'R', 'a', 't', 'i', 'o', '\022', 'u', '\n', '\033',
+'p', 'r', 'e', 'd', 'i', 'c', 't', 'i', 'v', 'e', '_', 'p', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', '_', 'r', 'a', 't',
+'i', 'o', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
+'f', '.', 'D', 'o', 'u', 'b', 'l', 'e', 'V', 'a', 'l', 'u', 'e', 'B', '\027', '\372', 'B', '\024', '\022', '\022', '\031', '\000', '\000', '\000', '\000',
+'\000', '\000', '\010', '@', ')', '\000', '\000', '\000', '\000', '\000', '\000', '\360', '?', 'R', '\031', 'p', 'r', 'e', 'd', 'i', 'c', 't', 'i', 'v', 'e',
+'P', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'R', 'a', 't', 'i', 'o', '\032', 'f', '\n', '\"', 'T', 'y', 'p', 'e', 'd', 'E',
+'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'E', 'n',
+'t', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '*', '\n', '\005',
+'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
+'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', '\"', 'W', '\n', '\r', 'D', 'i',
+'s', 'c', 'o', 'v', 'e', 'r', 'y', 'T', 'y', 'p', 'e', '\022', '\n', '\n', '\006', 'S', 'T', 'A', 'T', 'I', 'C', '\020', '\000', '\022', '\016',
+'\n', '\n', 'S', 'T', 'R', 'I', 'C', 'T', '_', 'D', 'N', 'S', '\020', '\001', '\022', '\017', '\n', '\013', 'L', 'O', 'G', 'I', 'C', 'A', 'L',
+'_', 'D', 'N', 'S', '\020', '\002', '\022', '\007', '\n', '\003', 'E', 'D', 'S', '\020', '\003', '\022', '\020', '\n', '\014', 'O', 'R', 'I', 'G', 'I', 'N',
+'A', 'L', '_', 'D', 'S', 'T', '\020', '\004', '\"', '\244', '\001', '\n', '\010', 'L', 'b', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\017', '\n', '\013',
+'R', 'O', 'U', 'N', 'D', '_', 'R', 'O', 'B', 'I', 'N', '\020', '\000', '\022', '\021', '\n', '\r', 'L', 'E', 'A', 'S', 'T', '_', 'R', 'E',
+'Q', 'U', 'E', 'S', 'T', '\020', '\001', '\022', '\r', '\n', '\t', 'R', 'I', 'N', 'G', '_', 'H', 'A', 'S', 'H', '\020', '\002', '\022', '\n', '\n',
+'\006', 'R', 'A', 'N', 'D', 'O', 'M', '\020', '\003', '\022', '\n', '\n', '\006', 'M', 'A', 'G', 'L', 'E', 'V', '\020', '\005', '\022', '\024', '\n', '\020',
+'C', 'L', 'U', 'S', 'T', 'E', 'R', '_', 'P', 'R', 'O', 'V', 'I', 'D', 'E', 'D', '\020', '\006', '\022', ' ', '\n', '\034', 'L', 'O', 'A',
+'D', '_', 'B', 'A', 'L', 'A', 'N', 'C', 'I', 'N', 'G', '_', 'P', 'O', 'L', 'I', 'C', 'Y', '_', 'C', 'O', 'N', 'F', 'I', 'G',
+'\020', '\007', '\"', '\004', '\010', '\004', '\020', '\004', '*', '\017', 'O', 'R', 'I', 'G', 'I', 'N', 'A', 'L', '_', 'D', 'S', 'T', '_', 'L', 'B',
+'\"', 'P', '\n', '\017', 'D', 'n', 's', 'L', 'o', 'o', 'k', 'u', 'p', 'F', 'a', 'm', 'i', 'l', 'y', '\022', '\010', '\n', '\004', 'A', 'U',
+'T', 'O', '\020', '\000', '\022', '\013', '\n', '\007', 'V', '4', '_', 'O', 'N', 'L', 'Y', '\020', '\001', '\022', '\013', '\n', '\007', 'V', '6', '_', 'O',
+'N', 'L', 'Y', '\020', '\002', '\022', '\020', '\n', '\014', 'V', '4', '_', 'P', 'R', 'E', 'F', 'E', 'R', 'R', 'E', 'D', '\020', '\003', '\022', '\007',
+'\n', '\003', 'A', 'L', 'L', '\020', '\004', '\"', 'T', '\n', '\030', 'C', 'l', 'u', 's', 't', 'e', 'r', 'P', 'r', 'o', 't', 'o', 'c', 'o',
+'l', 'S', 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', '\022', '\033', '\n', '\027', 'U', 'S', 'E', '_', 'C', 'O', 'N', 'F', 'I', 'G', 'U',
+'R', 'E', 'D', '_', 'P', 'R', 'O', 'T', 'O', 'C', 'O', 'L', '\020', '\000', '\022', '\033', '\n', '\027', 'U', 'S', 'E', '_', 'D', 'O', 'W',
+'N', 'S', 'T', 'R', 'E', 'A', 'M', '_', 'P', 'R', 'O', 'T', 'O', 'C', 'O', 'L', '\020', '\001', ':', '\033', '\232', '\305', '\210', '\036', '\026',
+'\n', '\024', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'B', '\030', '\n',
+'\026', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '_', 't', 'y', 'p', 'e', 'B', '\013',
+'\n', '\t', 'l', 'b', '_', 'c', 'o', 'n', 'f', 'i', 'g', 'J', '\004', '\010', '\014', '\020', '\r', 'J', '\004', '\010', '\017', '\020', '\020', 'J', '\004',
+'\010', '\007', '\020', '\010', 'J', '\004', '\010', '\013', '\020', '\014', 'J', '\004', '\010', '#', '\020', '$', 'R', '\005', 'h', 'o', 's', 't', 's', 'R', '\013',
+'t', 'l', 's', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', 'R', '\032', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '_', 'p', 'r',
+'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\"', '\332', '\002', '\n', '\023', 'L', 'o', 'a', 'd', 'B', 'a',
+'l', 'a', 'n', 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'O', '\n', '\010', 'p', 'o', 'l', 'i', 'c', 'i', 'e', 's',
+'\030', '\001', ' ', '\003', '(', '\013', '2', '3', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u',
+'s', 't', 'e', 'r', '.', 'v', '3', '.', 'L', 'o', 'a', 'd', 'B', 'a', 'l', 'a', 'n', 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i',
+'c', 'y', '.', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\010', 'p', 'o', 'l', 'i', 'c', 'i', 'e', 's', '\032', '\310', '\001', '\n', '\006', 'P',
+'o', 'l', 'i', 'c', 'y', '\022', '`', '\n', '\026', 't', 'y', 'p', 'e', 'd', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '_',
+'c', 'o', 'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
+'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n',
+'C', 'o', 'n', 'f', 'i', 'g', 'R', '\024', 't', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n',
+'f', 'i', 'g', ':', '.', '\232', '\305', '\210', '\036', ')', '\n', '\'', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.',
+'L', 'o', 'a', 'd', 'B', 'a', 'l', 'a', 'n', 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'P', 'o', 'l', 'i', 'c',
+'y', 'J', '\004', '\010', '\002', '\020', '\003', 'J', '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', '\003', '\020', '\004', 'R', '\006', 'c', 'o', 'n', 'f',
+'i', 'g', 'R', '\004', 'n', 'a', 'm', 'e', 'R', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', ':', '\'', '\232',
+'\305', '\210', '\036', '\"', '\n', ' ', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'L', 'o', 'a', 'd', 'B', 'a',
+'l', 'a', 'n', 'c', 'i', 'n', 'g', 'P', 'o', 'l', 'i', 'c', 'y', '\"', '\202', '\001', '\n', '\022', 'U', 'p', 's', 't', 'r', 'e', 'a',
+'m', 'B', 'i', 'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'D', '\n', '\016', 's', 'o', 'u', 'r', 'c', 'e', '_', 'a', 'd', 'd',
+'r', 'e', 's', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', 'e', 's', 's', 'R', '\r', 's', 'o', 'u', 'r', 'c', 'e', 'A',
+'d', 'd', 'r', 'e', 's', 's', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.',
+'v', '2', '.', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'B', 'i', 'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\"', '\371', '\001', '\n',
+'\031', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', 'n',
+'s', '\022', 'G', '\n', '\r', 't', 'c', 'p', '_', 'k', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2',
+'\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'c',
+'p', 'K', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', 'R', '\014', 't', 'c', 'p', 'K', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', '\022',
+'d', '\n', '0', 's', 'e', 't', '_', 'l', 'o', 'c', 'a', 'l', '_', 'i', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'e', '_', 'n', 'a',
+'m', 'e', '_', 'o', 'n', '_', 'u', 'p', 's', 't', 'r', 'e', 'a', 'm', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n',
+'s', '\030', '\002', ' ', '\001', '(', '\010', 'R', '*', 's', 'e', 't', 'L', 'o', 'c', 'a', 'l', 'I', 'n', 't', 'e', 'r', 'f', 'a', 'c',
+'e', 'N', 'a', 'm', 'e', 'O', 'n', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n',
+'s', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'U', 'p',
+'s', 't', 'r', 'e', 'a', 'm', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', 'n', 's', '\"', 'r',
+'\n', '\021', 'T', 'r', 'a', 'c', 'k', 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 't', 'a', 't', 's', '\022', '\'', '\n', '\017', 't', 'i',
+'m', 'e', 'o', 'u', 't', '_', 'b', 'u', 'd', 'g', 'e', 't', 's', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\016', 't', 'i', 'm', 'e',
+'o', 'u', 't', 'B', 'u', 'd', 'g', 'e', 't', 's', '\022', '4', '\n', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'r', 'e', 's',
+'p', 'o', 'n', 's', 'e', '_', 's', 'i', 'z', 'e', 's', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\024', 'r', 'e', 'q', 'u', 'e', 's',
+'t', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'S', 'i', 'z', 'e', 's', 'B', '\211', '\001', '\n', '%', 'i', 'o', '.', 'e', 'n', 'v',
+'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's',
+'t', 'e', 'r', '.', 'v', '3', 'B', '\014', 'C', 'l', 'u', 's', 't', 'e', 'r', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'H', 'g',
+'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c',
+'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g',
+'/', 'c', 'l', 'u', 's', 't', 'e', 'r', '/', 'v', '3', ';', 'c', 'l', 'u', 's', 't', 'e', 'r', 'v', '3', '\272', '\200', '\310', '\321',
+'\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[24] = {
@@ -543,5 +555,5 @@ _upb_DefPool_Init envoy_config_cluster_v3_cluster_proto_upbdefinit = {
deps,
&envoy_config_cluster_v3_cluster_proto_upb_file_layout,
"envoy/config/cluster/v3/cluster.proto",
- UPB_STRINGVIEW_INIT(descriptor, 11908)
+ UPB_STRINGVIEW_INIT(descriptor, 12212)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c
index 1b58abb602..59be333786 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c
@@ -15,7 +15,7 @@ extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[2498] = {'\n', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'l', 'u', 's', 't', 'e', 'r', '/', 'v', '3',
+static const char descriptor[2582] = {'\n', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'l', 'u', 's', 't', 'e', 'r', '/', 'v', '3',
'/', 'o', 'u', 't', 'l', 'i', 'e', 'r', '_', 'd', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\022',
'\027', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', '\032',
'\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n',
@@ -24,7 +24,7 @@ static const char descriptor[2498] = {'\n', '/', 'e', 'n', 'v', 'o', 'y', '/', '
'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a',
'/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p',
'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p',
-'r', 'o', 't', 'o', '\"', '\275', '\020', '\n', '\020', 'O', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n',
+'r', 'o', 't', 'o', '\"', '\221', '\021', '\n', '\020', 'O', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n',
'\022', 'E', '\n', '\017', 'c', 'o', 'n', 's', 'e', 'c', 'u', 't', 'i', 'v', 'e', '_', '5', 'x', 'x', '\030', '\001', ' ', '\001', '(', '\013',
'2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2',
'V', 'a', 'l', 'u', 'e', 'R', '\016', 'c', 'o', 'n', 's', 'e', 'c', 'u', 't', 'i', 'v', 'e', '5', 'x', 'x', '\022', '?', '\n', '\010',
@@ -106,15 +106,19 @@ static const char descriptor[2498] = {'\n', '/', 'e', 'n', 'v', 'o', 'y', '/', '
'e', 'R', 'e', 'q', 'u', 'e', 's', 't', 'V', 'o', 'l', 'u', 'm', 'e', '\022', 'O', '\n', '\021', 'm', 'a', 'x', '_', 'e', 'j', 'e',
'c', 't', 'i', 'o', 'n', '_', 't', 'i', 'm', 'e', '\030', '\025', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e',
'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001',
-'\002', '*', '\000', 'R', '\017', 'm', 'a', 'x', 'E', 'j', 'e', 'c', 't', 'i', 'o', 'n', 'T', 'i', 'm', 'e', ':', ',', '\232', '\305', '\210',
-'\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.',
-'O', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', 'B', '\222', '\001', '\n', '%', 'i', 'o', '.', 'e',
-'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l',
-'u', 's', 't', 'e', 'r', '.', 'v', '3', 'B', '\025', 'O', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o',
-'n', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'H', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o',
-'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e',
-'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'l', 'u', 's', 't', 'e', 'r', '/', 'v', '3', ';', 'c', 'l',
-'u', 's', 't', 'e', 'r', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'\002', '*', '\000', 'R', '\017', 'm', 'a', 'x', 'E', 'j', 'e', 'c', 't', 'i', 'o', 'n', 'T', 'i', 'm', 'e', '\022', 'R', '\n', '\030', 'm',
+'a', 'x', '_', 'e', 'j', 'e', 'c', 't', 'i', 'o', 'n', '_', 't', 'i', 'm', 'e', '_', 'j', 'i', 't', 't', 'e', 'r', '\030', '\026',
+' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u',
+'r', 'a', 't', 'i', 'o', 'n', 'R', '\025', 'm', 'a', 'x', 'E', 'j', 'e', 'c', 't', 'i', 'o', 'n', 'T', 'i', 'm', 'e', 'J', 'i',
+'t', 't', 'e', 'r', ':', ',', '\232', '\305', '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2',
+'.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'O', 'u', 't', 'l', 'i', 'e', 'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n',
+'B', '\222', '\001', '\n', '%', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'l', 'u', 's', 't', 'e', 'r', '.', 'v', '3', 'B', '\025', 'O', 'u', 't', 'l', 'i', 'e',
+'r', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'H', 'g', 'i', 't', 'h', 'u', 'b',
+'.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o',
+'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'l', 'u', 's',
+'t', 'e', 'r', '/', 'v', '3', ';', 'c', 'l', 'u', 's', 't', 'e', 'r', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b',
+'\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[6] = {
@@ -130,5 +134,5 @@ _upb_DefPool_Init envoy_config_cluster_v3_outlier_detection_proto_upbdefinit = {
deps,
&envoy_config_cluster_v3_outlier_detection_proto_upb_file_layout,
"envoy/config/cluster/v3/outlier_detection.proto",
- UPB_STRINGVIEW_INIT(descriptor, 2498)
+ UPB_STRINGVIEW_INIT(descriptor, 2582)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c
index 284422005e..3f01792129 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c
@@ -24,7 +24,7 @@ extern _upb_DefPool_Init udpa_annotations_migrate_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[5358] = {'\n', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a',
+static const char descriptor[5442] = {'\n', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a',
's', 'e', '.', 'p', 'r', 'o', 't', 'o', '\022', '\024', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o',
'r', 'e', '.', 'v', '3', '\032', '\"', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/',
'v', '3', '/', 'a', 'd', 'd', 'r', 'e', 's', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\"', 'e', 'n', 'v', 'o', 'y', '/', 'c',
@@ -56,189 +56,192 @@ static const char descriptor[5358] = {'\n', '\037', 'e', 'n', 'v', 'o', 'y', '/'
'2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't',
'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.',
'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'B', 'u', 'i', 'l', 'd', 'V', 'e', 'r', 's', 'i', 'o', 'n', '\"',
-'\342', '\001', '\n', '\t', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001',
+'\214', '\002', '\n', '\t', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001',
'(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '\032', '\n', '\010', 'c', 'a', 't', 'e', 'g', 'o', 'r', 'y', '\030', '\002', ' ', '\001', '(',
-'\t', 'R', '\010', 'c', 'a', 't', 'e', 'g', 'o', 'r', 'y', '\022', '\'', '\n', '\017', 't', 'y', 'p', 'e', '_', 'd', 'e', 's', 'c', 'r',
-'i', 'p', 't', 'o', 'r', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\016', 't', 'y', 'p', 'e', 'D', 'e', 's', 'c', 'r', 'i', 'p', 't',
-'o', 'r', '\022', '<', '\n', '\007', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\004', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'B', 'u', 'i', 'l', 'd', 'V', 'e',
-'r', 's', 'i', 'o', 'n', 'R', '\007', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\022', '\032', '\n', '\010', 'd', 'i', 's', 'a', 'b', 'l', 'e',
-'d', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\010', 'd', 'i', 's', 'a', 'b', 'l', 'e', 'd', ':', '\"', '\232', '\305', '\210', '\036', '\035', '\n',
-'\033', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'E', 'x', 't', 'e', 'n', 's',
-'i', 'o', 'n', '\"', '\262', '\006', '\n', '\004', 'N', 'o', 'd', 'e', '\022', '\016', '\n', '\002', 'i', 'd', '\030', '\001', ' ', '\001', '(', '\t', 'R',
-'\002', 'i', 'd', '\022', '\030', '\n', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\007', 'c', 'l', 'u',
-'s', 't', 'e', 'r', '\022', '3', '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\003', ' ', '\001', '(', '\013', '2', '\027', '.',
-'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't', 'R', '\010', 'm',
-'e', 't', 'a', 'd', 'a', 't', 'a', '\022', '`', '\n', '\022', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'p', 'a', 'r', 'a', 'm', 'e',
-'t', 'e', 'r', 's', '\030', '\014', ' ', '\003', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
-'.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'N', 'o', 'd', 'e', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'P', 'a', 'r', 'a',
-'m', 'e', 't', 'e', 'r', 's', 'E', 'n', 't', 'r', 'y', 'R', '\021', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'P', 'a', 'r', 'a', 'm',
-'e', 't', 'e', 'r', 's', '\022', ':', '\n', '\010', 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', '\030', '\004', ' ', '\001', '(', '\013', '2', '\036',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'L', 'o', 'c',
-'a', 'l', 'i', 't', 'y', 'R', '\010', 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', '\022', '&', '\n', '\017', 'u', 's', 'e', 'r', '_', 'a',
-'g', 'e', 'n', 't', '_', 'n', 'a', 'm', 'e', '\030', '\006', ' ', '\001', '(', '\t', 'R', '\r', 'u', 's', 'e', 'r', 'A', 'g', 'e', 'n',
-'t', 'N', 'a', 'm', 'e', '\022', '.', '\n', '\022', 'u', 's', 'e', 'r', '_', 'a', 'g', 'e', 'n', 't', '_', 'v', 'e', 'r', 's', 'i',
-'o', 'n', '\030', '\007', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\020', 'u', 's', 'e', 'r', 'A', 'g', 'e', 'n', 't', 'V', 'e', 'r', 's',
-'i', 'o', 'n', '\022', ']', '\n', '\030', 'u', 's', 'e', 'r', '_', 'a', 'g', 'e', 'n', 't', '_', 'b', 'u', 'i', 'l', 'd', '_', 'v',
-'e', 'r', 's', 'i', 'o', 'n', '\030', '\010', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
-'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'B', 'u', 'i', 'l', 'd', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'H', '\000',
-'R', '\025', 'u', 's', 'e', 'r', 'A', 'g', 'e', 'n', 't', 'B', 'u', 'i', 'l', 'd', 'V', 'e', 'r', 's', 'i', 'o', 'n', '\022', '?',
-'\n', '\n', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o',
-'n', 'R', '\n', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '\022', '\'', '\n', '\017', 'c', 'l', 'i', 'e', 'n', 't', '_', 'f',
-'e', 'a', 't', 'u', 'r', 'e', 's', '\030', '\n', ' ', '\003', '(', '\t', 'R', '\016', 'c', 'l', 'i', 'e', 'n', 't', 'F', 'e', 'a', 't',
-'u', 'r', 'e', 's', '\022', '[', '\n', '\023', 'l', 'i', 's', 't', 'e', 'n', 'i', 'n', 'g', '_', 'a', 'd', 'd', 'r', 'e', 's', 's',
-'e', 's', '\030', '\013', ' ', '\003', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c',
-'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', 'e', 's', 's', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3',
-'.', '0', 'R', '\022', 'l', 'i', 's', 't', 'e', 'n', 'i', 'n', 'g', 'A', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', '\032', '`', '\n',
-'\026', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', 'E', 'n', 't', 'r', 'y', '\022', '\020',
-'\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '0', '\n', '\005', 'v', 'a', 'l', 'u', 'e',
-'\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'x', 'd', 's', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 't',
-'e', 'x', 't', 'P', 'a', 'r', 'a', 'm', 's', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', ':', '\035', '\232', '\305', '\210',
-'\036', '\030', '\n', '\026', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'N', 'o', 'd',
-'e', 'B', '\031', '\n', '\027', 'u', 's', 'e', 'r', '_', 'a', 'g', 'e', 'n', 't', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 't',
-'y', 'p', 'e', 'J', '\004', '\010', '\005', '\020', '\006', 'R', '\r', 'b', 'u', 'i', 'l', 'd', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\"',
-'\261', '\003', '\n', '\010', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', '[', '\n', '\017', 'f', 'i', 'l', 't', 'e', 'r', '_', 'm', 'e',
-'t', 'a', 'd', 'a', 't', 'a', '\030', '\001', ' ', '\003', '(', '\013', '2', '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
-'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '.', 'F', 'i', 'l', 't', 'e',
-'r', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'E', 'n', 't', 'r', 'y', 'R', '\016', 'f', 'i', 'l', 't', 'e', 'r', 'M', 'e', 't',
-'a', 'd', 'a', 't', 'a', '\022', 'k', '\n', '\025', 't', 'y', 'p', 'e', 'd', '_', 'f', 'i', 'l', 't', 'e', 'r', '_', 'm', 'e', 't',
-'a', 'd', 'a', 't', 'a', '\030', '\002', ' ', '\003', '(', '\013', '2', '7', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '.', 'T', 'y', 'p', 'e', 'd', 'F',
-'i', 'l', 't', 'e', 'r', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'E', 'n', 't', 'r', 'y', 'R', '\023', 't', 'y', 'p', 'e', 'd',
-'F', 'i', 'l', 't', 'e', 'r', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '\032', 'Z', '\n', '\023', 'F', 'i', 'l', 't', 'e', 'r', 'M',
-'e', 't', 'a', 'd', 'a', 't', 'a', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t',
-'R', '\003', 'k', 'e', 'y', '\022', '-', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\027', '.', 'g', 'o',
-'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't', 'R', '\005', 'v', 'a', 'l',
-'u', 'e', ':', '\002', '8', '\001', '\032', '\\', '\n', '\030', 'T', 'y', 'p', 'e', 'd', 'F', 'i', 'l', 't', 'e', 'r', 'M', 'e', 't', 'a',
-'d', 'a', 't', 'a', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k',
-'e', 'y', '\022', '*', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l',
-'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001',
-':', '!', '\232', '\305', '\210', '\036', '\034', '\n', '\032', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r',
-'e', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '\"', '\206', '\001', '\n', '\r', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'U', 'I', 'n',
-'t', '3', '2', '\022', '#', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(',
-'\r', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', '(', '\n', '\013', 'r', 'u', 'n', 't', 'i', 'm',
-'e', '_', 'k', 'e', 'y', '\030', '\003', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', 'r', 'u', 'n',
+'\t', 'R', '\010', 'c', 'a', 't', 'e', 'g', 'o', 'r', 'y', '\022', '4', '\n', '\017', 't', 'y', 'p', 'e', '_', 'd', 'e', 's', 'c', 'r',
+'i', 'p', 't', 'o', 'r', '\030', '\003', ' ', '\001', '(', '\t', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R',
+'\016', 't', 'y', 'p', 'e', 'D', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '\022', '<', '\n', '\007', 'v', 'e', 'r', 's', 'i', 'o',
+'n', '\030', '\004', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o',
+'r', 'e', '.', 'v', '3', '.', 'B', 'u', 'i', 'l', 'd', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'R', '\007', 'v', 'e', 'r', 's', 'i',
+'o', 'n', '\022', '\032', '\n', '\010', 'd', 'i', 's', 'a', 'b', 'l', 'e', 'd', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\010', 'd', 'i', 's',
+'a', 'b', 'l', 'e', 'd', '\022', '\033', '\n', '\t', 't', 'y', 'p', 'e', '_', 'u', 'r', 'l', 's', '\030', '\006', ' ', '\003', '(', '\t', 'R',
+'\010', 't', 'y', 'p', 'e', 'U', 'r', 'l', 's', ':', '\"', '\232', '\305', '\210', '\036', '\035', '\n', '\033', 'e', 'n', 'v', 'o', 'y', '.', 'a',
+'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\"', '\262', '\006', '\n', '\004',
+'N', 'o', 'd', 'e', '\022', '\016', '\n', '\002', 'i', 'd', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\002', 'i', 'd', '\022', '\030', '\n', '\007', 'c',
+'l', 'u', 's', 't', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\022', '3', '\n', '\010',
+'m', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\003', ' ', '\001', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
+'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022',
+'`', '\n', '\022', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\030', '\014', ' ', '\003',
+'(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3',
+'.', 'N', 'o', 'd', 'e', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', 'E', 'n',
+'t', 'r', 'y', 'R', '\021', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\022', ':', '\n',
+'\010', 'l', 'o', 'c', 'a', 'l', 'i', 't', 'y', '\030', '\004', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
+'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'L', 'o', 'c', 'a', 'l', 'i', 't', 'y', 'R', '\010', 'l',
+'o', 'c', 'a', 'l', 'i', 't', 'y', '\022', '&', '\n', '\017', 'u', 's', 'e', 'r', '_', 'a', 'g', 'e', 'n', 't', '_', 'n', 'a', 'm',
+'e', '\030', '\006', ' ', '\001', '(', '\t', 'R', '\r', 'u', 's', 'e', 'r', 'A', 'g', 'e', 'n', 't', 'N', 'a', 'm', 'e', '\022', '.', '\n',
+'\022', 'u', 's', 'e', 'r', '_', 'a', 'g', 'e', 'n', 't', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\t',
+'H', '\000', 'R', '\020', 'u', 's', 'e', 'r', 'A', 'g', 'e', 'n', 't', 'V', 'e', 'r', 's', 'i', 'o', 'n', '\022', ']', '\n', '\030', 'u',
+'s', 'e', 'r', '_', 'a', 'g', 'e', 'n', 't', '_', 'b', 'u', 'i', 'l', 'd', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\010',
+' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
+'v', '3', '.', 'B', 'u', 'i', 'l', 'd', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'H', '\000', 'R', '\025', 'u', 's', 'e', 'r', 'A', 'g',
+'e', 'n', 't', 'B', 'u', 'i', 'l', 'd', 'V', 'e', 'r', 's', 'i', 'o', 'n', '\022', '?', '\n', '\n', 'e', 'x', 't', 'e', 'n', 's',
+'i', 'o', 'n', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'R', '\n', 'e', 'x', 't', 'e', 'n',
+'s', 'i', 'o', 'n', 's', '\022', '\'', '\n', '\017', 'c', 'l', 'i', 'e', 'n', 't', '_', 'f', 'e', 'a', 't', 'u', 'r', 'e', 's', '\030',
+'\n', ' ', '\003', '(', '\t', 'R', '\016', 'c', 'l', 'i', 'e', 'n', 't', 'F', 'e', 'a', 't', 'u', 'r', 'e', 's', '\022', '[', '\n', '\023',
+'l', 'i', 's', 't', 'e', 'n', 'i', 'n', 'g', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', '\030', '\013', ' ', '\003', '(', '\013',
+'2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A',
+'d', 'd', 'r', 'e', 's', 's', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\022', 'l', 'i', 's', 't',
+'e', 'n', 'i', 'n', 'g', 'A', 'd', 'd', 'r', 'e', 's', 's', 'e', 's', '\032', '`', '\n', '\026', 'D', 'y', 'n', 'a', 'm', 'i', 'c',
+'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ',
+'\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '0', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032',
+'.', 'x', 'd', 's', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 't', 'e', 'x', 't', 'P', 'a', 'r', 'a', 'm',
+'s', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', ':', '\035', '\232', '\305', '\210', '\036', '\030', '\n', '\026', 'e', 'n', 'v', 'o',
+'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'N', 'o', 'd', 'e', 'B', '\031', '\n', '\027', 'u', 's', 'e',
+'r', '_', 'a', 'g', 'e', 'n', 't', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\005', '\020',
+'\006', 'R', '\r', 'b', 'u', 'i', 'l', 'd', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\"', '\261', '\003', '\n', '\010', 'M', 'e', 't', 'a',
+'d', 'a', 't', 'a', '\022', '[', '\n', '\017', 'f', 'i', 'l', 't', 'e', 'r', '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\001',
+' ', '\003', '(', '\013', '2', '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
+'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '.', 'F', 'i', 'l', 't', 'e', 'r', 'M', 'e', 't', 'a', 'd', 'a', 't',
+'a', 'E', 'n', 't', 'r', 'y', 'R', '\016', 'f', 'i', 'l', 't', 'e', 'r', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', 'k', '\n',
+'\025', 't', 'y', 'p', 'e', 'd', '_', 'f', 'i', 'l', 't', 'e', 'r', '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\002', ' ',
+'\003', '(', '\013', '2', '7', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v',
+'3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '.', 'T', 'y', 'p', 'e', 'd', 'F', 'i', 'l', 't', 'e', 'r', 'M', 'e', 't',
+'a', 'd', 'a', 't', 'a', 'E', 'n', 't', 'r', 'y', 'R', '\023', 't', 'y', 'p', 'e', 'd', 'F', 'i', 'l', 't', 'e', 'r', 'M', 'e',
+'t', 'a', 'd', 'a', 't', 'a', '\032', 'Z', '\n', '\023', 'F', 'i', 'l', 't', 'e', 'r', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'E',
+'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '-', '\n',
+'\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o',
+'t', 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', '\032', '\\',
+'\n', '\030', 'T', 'y', 'p', 'e', 'd', 'F', 'i', 'l', 't', 'e', 'r', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'E', 'n', 't', 'r',
+'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '*', '\n', '\005', 'v', 'a',
+'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b',
+'u', 'f', '.', 'A', 'n', 'y', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', ':', '!', '\232', '\305', '\210', '\036', '\034', '\n',
+'\032', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'M', 'e', 't', 'a', 'd', 'a',
+'t', 'a', '\"', '\206', '\001', '\n', '\r', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'U', 'I', 'n', 't', '3', '2', '\022', '#', '\n', '\r', 'd',
+'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\r', 'R', '\014', 'd', 'e', 'f', 'a', 'u',
+'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', '(', '\n', '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '\030', '\003', ' ',
+'\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', ':',
+'&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e',
+'.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'U', 'I', 'n', 't', '3', '2', '\"', 'w', '\n', '\016', 'R', 'u', 'n', 't', 'i', 'm', 'e',
+'P', 'e', 'r', 'c', 'e', 'n', 't', '\022', ';', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030',
+'\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r',
+'c', 'e', 'n', 't', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', '(', '\n', '\013', 'r', 'u', 'n',
+'t', 'i', 'm', 'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n',
+'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', '\"', '\206', '\001', '\n', '\r', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'D', 'o', 'u',
+'b', 'l', 'e', '\022', '#', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(',
+'\001', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', '(', '\n', '\013', 'r', 'u', 'n', 't', 'i', 'm',
+'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', 'r', 'u', 'n',
't', 'i', 'm', 'e', 'K', 'e', 'y', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i',
-'.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'U', 'I', 'n', 't', '3', '2', '\"', 'w', '\n',
-'\016', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'P', 'e', 'r', 'c', 'e', 'n', 't', '\022', ';', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l',
-'t', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p',
-'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u',
-'e', '\022', '(', '\n', '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372',
-'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', '\"', '\206', '\001', '\n', '\r', 'R', 'u',
-'n', 't', 'i', 'm', 'e', 'D', 'o', 'u', 'b', 'l', 'e', '\022', '#', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a',
-'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', '\001', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', '(',
-'\n', '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r',
-'\002', '\020', '\001', 'R', '\n', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e',
-'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'D',
-'o', 'u', 'b', 'l', 'e', '\"', '\266', '\001', '\n', '\022', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'e', 'a', 't', 'u', 'r', 'e', 'F',
-'l', 'a', 'g', '\022', 'I', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(',
-'\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V',
-'a', 'l', 'u', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a',
-'l', 'u', 'e', '\022', '(', '\n', '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'B',
-'\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', ':', '+', '\232', '\305', '\210',
-'\036', '&', '\n', '$', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'R', 'u', 'n',
-'t', 'i', 'm', 'e', 'F', 'e', 'a', 't', 'u', 'r', 'e', 'F', 'l', 'a', 'g', '\"', 'A', '\n', '\016', 'Q', 'u', 'e', 'r', 'y', 'P',
-'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '\022', '\031', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B',
-'\004', 'r', '\002', '\020', '\001', 'R', '\003', 'k', 'e', 'y', '\022', '\024', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\t',
-'R', '\005', 'v', 'a', 'l', 'u', 'e', '\"', '\177', '\n', '\013', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', '\022', '#', '\n',
-'\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\021', '\372', 'B', '\016', 'r', '\014', '\020', '\001', '(', '\200', '\200', '\001', '\300', '\001',
-'\001', '\310', '\001', '\000', 'R', '\003', 'k', 'e', 'y', '\022', '%', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'B',
-'\017', '\372', 'B', '\014', 'r', '\n', '(', '\200', '\200', '\001', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '$',
-'\232', '\305', '\210', '\036', '\037', '\n', '\035', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.',
-'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', '\"', '\211', '\003', '\n', '\021', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l',
-'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', '\022', 'C', '\n', '\006', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2',
-'!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e',
-'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\006', 'h', 'e', 'a', 'd',
-'e', 'r', '\022', '2', '\n', '\006', 'a', 'p', 'p', 'e', 'n', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\006', 'a', 'p',
-'p', 'e', 'n', 'd', '\022', 'i', '\n', '\r', 'a', 'p', 'p', 'e', 'n', 'd', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001',
-'(', '\016', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3',
-'.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', '.', 'H', 'e', 'a', 'd', 'e', 'r',
-'A', 'p', 'p', 'e', 'n', 'd', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\014', 'a',
-'p', 'p', 'e', 'n', 'd', 'A', 'c', 't', 'i', 'o', 'n', '\"', 'd', '\n', '\022', 'H', 'e', 'a', 'd', 'e', 'r', 'A', 'p', 'p', 'e',
-'n', 'd', 'A', 'c', 't', 'i', 'o', 'n', '\022', '\033', '\n', '\027', 'A', 'P', 'P', 'E', 'N', 'D', '_', 'I', 'F', '_', 'E', 'X', 'I',
-'S', 'T', 'S', '_', 'O', 'R', '_', 'A', 'D', 'D', '\020', '\000', '\022', '\021', '\n', '\r', 'A', 'D', 'D', '_', 'I', 'F', '_', 'A', 'B',
-'S', 'E', 'N', 'T', '\020', '\001', '\022', '\036', '\n', '\032', 'O', 'V', 'E', 'R', 'W', 'R', 'I', 'T', 'E', '_', 'I', 'F', '_', 'E', 'X',
-'I', 'S', 'T', 'S', '_', 'O', 'R', '_', 'A', 'D', 'D', '\020', '\002', ':', '*', '\232', '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v',
-'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u',
-'e', 'O', 'p', 't', 'i', 'o', 'n', '\"', 'l', '\n', '\t', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 'p', '\022', ';', '\n', '\007', 'h',
-'e', 'a', 'd', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
-'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'R', '\007', 'h',
-'e', 'a', 'd', 'e', 'r', 's', ':', '\"', '\232', '\305', '\210', '\036', '\035', '\n', '\033', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.',
-'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 'p', '\"', '/', '\n', '\020', 'W', 'a', 't', 'c',
-'h', 'e', 'd', 'D', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\022', '\033', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\001', ' ', '\001', '(',
-'\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'p', 'a', 't', 'h', '\"', '\364', '\001', '\n', '\n', 'D', 'a', 't', 'a',
-'S', 'o', 'u', 'r', 'c', 'e', '\022', '%', '\n', '\010', 'f', 'i', 'l', 'e', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B',
-'\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'H', '\000', 'R', '\010', 'f', 'i', 'l', 'e', 'n', 'a', 'm', 'e', '\022', '#', '\n', '\014', 'i',
-'n', 'l', 'i', 'n', 'e', '_', 'b', 'y', 't', 'e', 's', '\030', '\002', ' ', '\001', '(', '\014', 'H', '\000', 'R', '\013', 'i', 'n', 'l', 'i',
-'n', 'e', 'B', 'y', 't', 'e', 's', '\022', '%', '\n', '\r', 'i', 'n', 'l', 'i', 'n', 'e', '_', 's', 't', 'r', 'i', 'n', 'g', '\030',
-'\003', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\014', 'i', 'n', 'l', 'i', 'n', 'e', 'S', 't', 'r', 'i', 'n', 'g', '\022', '<', '\n', '\024',
-'e', 'n', 'v', 'i', 'r', 'o', 'n', 'm', 'e', 'n', 't', '_', 'v', 'a', 'r', 'i', 'a', 'b', 'l', 'e', '\030', '\004', ' ', '\001', '(',
-'\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'H', '\000', 'R', '\023', 'e', 'n', 'v', 'i', 'r', 'o', 'n', 'm', 'e', 'n', 't',
-'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', ':', '#', '\232', '\305', '\210', '\036', '\036', '\n', '\034', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p',
-'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\020', '\n', '\t', 's',
-'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', '\324', '\001', '\n', '\013', 'R', 'e', 't', 'r', 'y', 'P', 'o',
-'l', 'i', 'c', 'y', '\022', 'K', '\n', '\016', 'r', 'e', 't', 'r', 'y', '_', 'b', 'a', 'c', 'k', '_', 'o', 'f', 'f', '\030', '\001', ' ',
-'\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v',
-'3', '.', 'B', 'a', 'c', 'k', 'o', 'f', 'f', 'S', 't', 'r', 'a', 't', 'e', 'g', 'y', 'R', '\014', 'r', 'e', 't', 'r', 'y', 'B',
-'a', 'c', 'k', 'O', 'f', 'f', '\022', 'R', '\n', '\013', 'n', 'u', 'm', '_', 'r', 'e', 't', 'r', 'i', 'e', 's', '\030', '\002', ' ', '\001',
-'(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't',
-'3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\023', '\362', '\230', '\376', '\217', '\005', '\r', '\n', '\013', 'm', 'a', 'x', '_', 'r', 'e', 't', 'r',
-'i', 'e', 's', 'R', '\n', 'n', 'u', 'm', 'R', 'e', 't', 'r', 'i', 'e', 's', ':', '$', '\232', '\305', '\210', '\036', '\037', '\n', '\035', 'e',
-'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l',
-'i', 'c', 'y', '\"', '\350', '\001', '\n', '\020', 'R', 'e', 'm', 'o', 't', 'e', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', '\022',
-'B', '\n', '\010', 'h', 't', 't', 'p', '_', 'u', 'r', 'i', '\030', '\001', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', 'y',
-'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'U', 'r', 'i', 'B', '\010',
-'\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\007', 'h', 't', 't', 'p', 'U', 'r', 'i', '\022', '\037', '\n', '\006', 's', 'h', 'a', '2',
-'5', '6', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\006', 's', 'h', 'a', '2', '5', '6',
-'\022', 'D', '\n', '\014', 'r', 'e', 't', 'r', 'y', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\003', ' ', '\001', '(', '\013', '2', '!', '.',
-'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r',
-'y', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\013', 'r', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', ':', ')', '\232', '\305', '\210',
-'\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'R', 'e', 'm',
-'o', 't', 'e', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', '\"', '\311', '\001', '\n', '\017', 'A', 's', 'y', 'n', 'c', 'D', 'a',
-'t', 'a', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '8', '\n', '\005', 'l', 'o', 'c', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', ' ',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'a', 't',
-'a', 'S', 'o', 'u', 'r', 'c', 'e', 'H', '\000', 'R', '\005', 'l', 'o', 'c', 'a', 'l', '\022', '@', '\n', '\006', 'r', 'e', 'm', 'o', 't',
-'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o',
-'r', 'e', '.', 'v', '3', '.', 'R', 'e', 'm', 'o', 't', 'e', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'H', '\000', 'R',
-'\006', 'r', 'e', 'm', 'o', 't', 'e', ':', '(', '\232', '\305', '\210', '\036', '#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i',
-'.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'A', 's', 'y', 'n', 'c', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'B',
-'\020', '\n', '\t', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', '\260', '\001', '\n', '\017', 'T', 'r', 'a',
-'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(',
-'\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd',
-'_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
-'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g',
-':', '(', '\232', '\305', '\210', '\036', '#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r',
-'e', '.', 'T', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f',
-'i', 'g', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\"', '\277', '\001', '\n',
-'\030', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't',
-'\022', 'O', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', ' ',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l',
-'P', 'e', 'r', 'c', 'e', 'n', 't', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l',
-'t', 'V', 'a', 'l', 'u', 'e', '\022', '\037', '\n', '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001',
-'(', '\t', 'R', '\n', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', ':', '1', '\232', '\305', '\210', '\036', ',', '\n', '*', 'e', 'n',
-'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r',
-'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', '\"', 'U', '\n', '\014', 'C', 'o', 'n', 't', 'r', 'o',
-'l', 'P', 'l', 'a', 'n', 'e', '\022', '\036', '\n', '\n', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', '\030', '\001', ' ', '\001', '(',
-'\t', 'R', '\n', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v',
-'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'C', 'o', 'n', 't', 'r', 'o', 'l', 'P', 'l', 'a',
-'n', 'e', '*', '(', '\n', '\017', 'R', 'o', 'u', 't', 'i', 'n', 'g', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', '\013', '\n', '\007',
-'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\000', '\022', '\010', '\n', '\004', 'H', 'I', 'G', 'H', '\020', '\001', '*', '\211', '\001', '\n', '\r', 'R',
-'e', 'q', 'u', 'e', 's', 't', 'M', 'e', 't', 'h', 'o', 'd', '\022', '\026', '\n', '\022', 'M', 'E', 'T', 'H', 'O', 'D', '_', 'U', 'N',
-'S', 'P', 'E', 'C', 'I', 'F', 'I', 'E', 'D', '\020', '\000', '\022', '\007', '\n', '\003', 'G', 'E', 'T', '\020', '\001', '\022', '\010', '\n', '\004', 'H',
-'E', 'A', 'D', '\020', '\002', '\022', '\010', '\n', '\004', 'P', 'O', 'S', 'T', '\020', '\003', '\022', '\007', '\n', '\003', 'P', 'U', 'T', '\020', '\004', '\022',
-'\n', '\n', '\006', 'D', 'E', 'L', 'E', 'T', 'E', '\020', '\005', '\022', '\013', '\n', '\007', 'C', 'O', 'N', 'N', 'E', 'C', 'T', '\020', '\006', '\022',
-'\013', '\n', '\007', 'O', 'P', 'T', 'I', 'O', 'N', 'S', '\020', '\007', '\022', '\t', '\n', '\005', 'T', 'R', 'A', 'C', 'E', '\020', '\010', '\022', '\t',
-'\n', '\005', 'P', 'A', 'T', 'C', 'H', '\020', '\t', '*', '>', '\n', '\020', 'T', 'r', 'a', 'f', 'f', 'i', 'c', 'D', 'i', 'r', 'e', 'c',
-'t', 'i', 'o', 'n', '\022', '\017', '\n', '\013', 'U', 'N', 'S', 'P', 'E', 'C', 'I', 'F', 'I', 'E', 'D', '\020', '\000', '\022', '\013', '\n', '\007',
-'I', 'N', 'B', 'O', 'U', 'N', 'D', '\020', '\001', '\022', '\014', '\n', '\010', 'O', 'U', 'T', 'B', 'O', 'U', 'N', 'D', '\020', '\002', 'B', '}',
-'\n', '\"', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
-'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\t', 'B', 'a', 's', 'e', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z',
-'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o',
-'-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f',
-'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', 'o', 'r', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002',
-'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'D', 'o', 'u', 'b', 'l', 'e', '\"', '\266', '\001',
+'\n', '\022', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'e', 'a', 't', 'u', 'r', 'e', 'F', 'l', 'a', 'g', '\022', 'I', '\n', '\r', 'd',
+'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g',
+'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'B', '\010', '\372', 'B',
+'\005', '\212', '\001', '\002', '\020', '\001', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', '(', '\n', '\013', 'r',
+'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001',
+'R', '\n', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', ':', '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e', 'n', 'v', 'o',
+'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'e', 'a', 't',
+'u', 'r', 'e', 'F', 'l', 'a', 'g', '\"', 'A', '\n', '\016', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r',
+'\022', '\031', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\003', 'k',
+'e', 'y', '\022', '\024', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\005', 'v', 'a', 'l', 'u', 'e', '\"',
+'\177', '\n', '\013', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', '\022', '#', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001',
+'(', '\t', 'B', '\021', '\372', 'B', '\016', 'r', '\014', '\020', '\001', '(', '\200', '\200', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\003', 'k', 'e',
+'y', '\022', '%', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\017', '\372', 'B', '\014', 'r', '\n', '(', '\200',
+'\200', '\001', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '$', '\232', '\305', '\210', '\036', '\037', '\n', '\035', 'e',
+'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a',
+'l', 'u', 'e', '\"', '\263', '\003', '\n', '\021', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n',
+'\022', 'C', '\n', '\006', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u',
+'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\006', 'h', 'e', 'a', 'd', 'e', 'r', '\022', '2', '\n', '\006', 'a', 'p',
+'p', 'e', 'n', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
+'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\006', 'a', 'p', 'p', 'e', 'n', 'd', '\022', 'i', '\n', '\r',
+'a', 'p', 'p', 'e', 'n', 'd', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\016', '2', ':', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V',
+'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'A', 'p', 'p', 'e', 'n', 'd', 'A', 'c',
+'t', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\014', 'a', 'p', 'p', 'e', 'n', 'd', 'A', 'c', 't',
+'i', 'o', 'n', '\022', '(', '\n', '\020', 'k', 'e', 'e', 'p', '_', 'e', 'm', 'p', 't', 'y', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\004',
+' ', '\001', '(', '\010', 'R', '\016', 'k', 'e', 'e', 'p', 'E', 'm', 'p', 't', 'y', 'V', 'a', 'l', 'u', 'e', '\"', 'd', '\n', '\022', 'H',
+'e', 'a', 'd', 'e', 'r', 'A', 'p', 'p', 'e', 'n', 'd', 'A', 'c', 't', 'i', 'o', 'n', '\022', '\033', '\n', '\027', 'A', 'P', 'P', 'E',
+'N', 'D', '_', 'I', 'F', '_', 'E', 'X', 'I', 'S', 'T', 'S', '_', 'O', 'R', '_', 'A', 'D', 'D', '\020', '\000', '\022', '\021', '\n', '\r',
+'A', 'D', 'D', '_', 'I', 'F', '_', 'A', 'B', 'S', 'E', 'N', 'T', '\020', '\001', '\022', '\036', '\n', '\032', 'O', 'V', 'E', 'R', 'W', 'R',
+'I', 'T', 'E', '_', 'I', 'F', '_', 'E', 'X', 'I', 'S', 'T', 'S', '_', 'O', 'R', '_', 'A', 'D', 'D', '\020', '\002', ':', '*', '\232',
+'\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H',
+'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', '\"', 'l', '\n', '\t', 'H', 'e', 'a', 'd', 'e',
+'r', 'M', 'a', 'p', '\022', ';', '\n', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '!', '.', 'e',
+'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e',
+'r', 'V', 'a', 'l', 'u', 'e', 'R', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', ':', '\"', '\232', '\305', '\210', '\036', '\035', '\n', '\033', 'e',
+'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a',
+'p', '\"', '/', '\n', '\020', 'W', 'a', 't', 'c', 'h', 'e', 'd', 'D', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\022', '\033', '\n', '\004',
+'p', 'a', 't', 'h', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'p', 'a', 't', 'h',
+'\"', '\364', '\001', '\n', '\n', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '%', '\n', '\010', 'f', 'i', 'l', 'e', 'n', 'a',
+'m', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'H', '\000', 'R', '\010', 'f', 'i', 'l', 'e',
+'n', 'a', 'm', 'e', '\022', '#', '\n', '\014', 'i', 'n', 'l', 'i', 'n', 'e', '_', 'b', 'y', 't', 'e', 's', '\030', '\002', ' ', '\001', '(',
+'\014', 'H', '\000', 'R', '\013', 'i', 'n', 'l', 'i', 'n', 'e', 'B', 'y', 't', 'e', 's', '\022', '%', '\n', '\r', 'i', 'n', 'l', 'i', 'n',
+'e', '_', 's', 't', 'r', 'i', 'n', 'g', '\030', '\003', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\014', 'i', 'n', 'l', 'i', 'n', 'e', 'S',
+'t', 'r', 'i', 'n', 'g', '\022', '<', '\n', '\024', 'e', 'n', 'v', 'i', 'r', 'o', 'n', 'm', 'e', 'n', 't', '_', 'v', 'a', 'r', 'i',
+'a', 'b', 'l', 'e', '\030', '\004', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'H', '\000', 'R', '\023', 'e', 'n',
+'v', 'i', 'r', 'o', 'n', 'm', 'e', 'n', 't', 'V', 'a', 'r', 'i', 'a', 'b', 'l', 'e', ':', '#', '\232', '\305', '\210', '\036', '\036', '\n',
+'\034', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'D', 'a', 't', 'a', 'S', 'o',
+'u', 'r', 'c', 'e', 'B', '\020', '\n', '\t', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', '\324', '\001',
+'\n', '\013', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'K', '\n', '\016', 'r', 'e', 't', 'r', 'y', '_', 'b', 'a',
+'c', 'k', '_', 'o', 'f', 'f', '\030', '\001', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
+'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'B', 'a', 'c', 'k', 'o', 'f', 'f', 'S', 't', 'r', 'a', 't', 'e', 'g',
+'y', 'R', '\014', 'r', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', '\022', 'R', '\n', '\013', 'n', 'u', 'm', '_', 'r', 'e',
+'t', 'r', 'i', 'e', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
+'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\023', '\362', '\230', '\376', '\217', '\005', '\r', '\n',
+'\013', 'm', 'a', 'x', '_', 'r', 'e', 't', 'r', 'i', 'e', 's', 'R', '\n', 'n', 'u', 'm', 'R', 'e', 't', 'r', 'i', 'e', 's', ':',
+'$', '\232', '\305', '\210', '\036', '\037', '\n', '\035', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e',
+'.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '\"', '\350', '\001', '\n', '\020', 'R', 'e', 'm', 'o', 't', 'e', 'D', 'a',
+'t', 'a', 'S', 'o', 'u', 'r', 'c', 'e', '\022', 'B', '\n', '\010', 'h', 't', 't', 'p', '_', 'u', 'r', 'i', '\030', '\001', ' ', '\001', '(',
+'\013', '2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.',
+'H', 't', 't', 'p', 'U', 'r', 'i', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\007', 'h', 't', 't', 'p', 'U', 'r',
+'i', '\022', '\037', '\n', '\006', 's', 'h', 'a', '2', '5', '6', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020',
+'\001', 'R', '\006', 's', 'h', 'a', '2', '5', '6', '\022', 'D', '\n', '\014', 'r', 'e', 't', 'r', 'y', '_', 'p', 'o', 'l', 'i', 'c', 'y',
+'\030', '\003', ' ', '\001', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r',
+'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\013', 'r', 'e', 't', 'r', 'y', 'P', 'o',
+'l', 'i', 'c', 'y', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2',
+'.', 'c', 'o', 'r', 'e', '.', 'R', 'e', 'm', 'o', 't', 'e', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', '\"', '\311', '\001',
+'\n', '\017', 'A', 's', 'y', 'n', 'c', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '8', '\n', '\005', 'l', 'o', 'c', 'a',
+'l', '\030', '\001', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o',
+'r', 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'H', '\000', 'R', '\005', 'l', 'o', 'c', 'a', 'l',
+'\022', '@', '\n', '\006', 'r', 'e', 'm', 'o', 't', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'e', 'm', 'o', 't', 'e', 'D', 'a', 't', 'a',
+'S', 'o', 'u', 'r', 'c', 'e', 'H', '\000', 'R', '\006', 'r', 'e', 'm', 'o', 't', 'e', ':', '(', '\232', '\305', '\210', '\036', '#', '\n', '!',
+'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'A', 's', 'y', 'n', 'c', 'D', 'a',
+'t', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\020', '\n', '\t', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B',
+'\001', '\"', '\260', '\001', '\n', '\017', 'T', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', '\022', '\033', '\n', '\004',
+'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e',
+'\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.',
+'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y',
+'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', ':', '(', '\232', '\305', '\210', '\036', '#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'a',
+'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'T', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e',
+'t', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c',
+'o', 'n', 'f', 'i', 'g', '\"', '\277', '\001', '\n', '\030', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n',
+'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', '\022', 'O', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u',
+'e', '\030', '\001', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'F',
+'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020',
+'\001', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', '\037', '\n', '\013', 'r', 'u', 'n', 't', 'i', 'm',
+'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', ':', '1',
+'\232', '\305', '\210', '\036', ',', '\n', '*', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.',
+'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', '\"',
+'U', '\n', '\014', 'C', 'o', 'n', 't', 'r', 'o', 'l', 'P', 'l', 'a', 'n', 'e', '\022', '\036', '\n', '\n', 'i', 'd', 'e', 'n', 't', 'i',
+'f', 'i', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\n', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', ':', '%', '\232',
+'\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'C',
+'o', 'n', 't', 'r', 'o', 'l', 'P', 'l', 'a', 'n', 'e', '*', '(', '\n', '\017', 'R', 'o', 'u', 't', 'i', 'n', 'g', 'P', 'r', 'i',
+'o', 'r', 'i', 't', 'y', '\022', '\013', '\n', '\007', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\000', '\022', '\010', '\n', '\004', 'H', 'I', 'G',
+'H', '\020', '\001', '*', '\211', '\001', '\n', '\r', 'R', 'e', 'q', 'u', 'e', 's', 't', 'M', 'e', 't', 'h', 'o', 'd', '\022', '\026', '\n', '\022',
+'M', 'E', 'T', 'H', 'O', 'D', '_', 'U', 'N', 'S', 'P', 'E', 'C', 'I', 'F', 'I', 'E', 'D', '\020', '\000', '\022', '\007', '\n', '\003', 'G',
+'E', 'T', '\020', '\001', '\022', '\010', '\n', '\004', 'H', 'E', 'A', 'D', '\020', '\002', '\022', '\010', '\n', '\004', 'P', 'O', 'S', 'T', '\020', '\003', '\022',
+'\007', '\n', '\003', 'P', 'U', 'T', '\020', '\004', '\022', '\n', '\n', '\006', 'D', 'E', 'L', 'E', 'T', 'E', '\020', '\005', '\022', '\013', '\n', '\007', 'C',
+'O', 'N', 'N', 'E', 'C', 'T', '\020', '\006', '\022', '\013', '\n', '\007', 'O', 'P', 'T', 'I', 'O', 'N', 'S', '\020', '\007', '\022', '\t', '\n', '\005',
+'T', 'R', 'A', 'C', 'E', '\020', '\010', '\022', '\t', '\n', '\005', 'P', 'A', 'T', 'C', 'H', '\020', '\t', '*', '>', '\n', '\020', 'T', 'r', 'a',
+'f', 'f', 'i', 'c', 'D', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\022', '\017', '\n', '\013', 'U', 'N', 'S', 'P', 'E', 'C', 'I', 'F',
+'I', 'E', 'D', '\020', '\000', '\022', '\013', '\n', '\007', 'I', 'N', 'B', 'O', 'U', 'N', 'D', '\020', '\001', '\022', '\014', '\n', '\010', 'O', 'U', 'T',
+'B', 'O', 'U', 'N', 'D', '\020', '\002', 'B', '}', '\n', '\"', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.',
+'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\t', 'B', 'a', 's',
+'e', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o',
+'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e',
+'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', 'o', 'r', 'e', 'v',
+'3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[15] = {
@@ -263,5 +266,5 @@ _upb_DefPool_Init envoy_config_core_v3_base_proto_upbdefinit = {
deps,
&envoy_config_core_v3_base_proto_upb_file_layout,
"envoy/config/core/v3/base.proto",
- UPB_STRINGVIEW_INIT(descriptor, 5358)
+ UPB_STRINGVIEW_INIT(descriptor, 5442)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c
index 008064bf2a..cf5de8ff35 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c
@@ -10,7 +10,10 @@
#include "envoy/config/core/v3/config_source.upbdefs.h"
#include "envoy/config/core/v3/config_source.upb.h"
+extern _upb_DefPool_Init envoy_config_core_v3_base_proto_upbdefinit;
+extern _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_core_v3_grpc_service_proto_upbdefinit;
+extern _upb_DefPool_Init google_protobuf_any_proto_upbdefinit;
extern _upb_DefPool_Init google_protobuf_duration_proto_upbdefinit;
extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit;
extern _upb_DefPool_Init xds_core_v3_authority_proto_upbdefinit;
@@ -18,103 +21,135 @@ extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[2325] = {'\n', '(', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'c', 'o',
+static const char descriptor[3037] = {'\n', '(', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'c', 'o',
'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '.', 'p', 'r', 'o', 't', 'o', '\022', '\024', 'e', 'n', 'v', 'o', 'y', '.',
-'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '\032', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n',
-'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'g', 'r', 'p', 'c', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.',
-'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'd', 'u',
-'r', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't',
-'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\033', 'x', 'd', 's', '/',
-'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'a', 'u', 't', 'h', 'o', 'r', 'i', 't', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '#',
-'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'd', 'e', 'p', 'r', 'e', 'c', 'a',
-'t', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i',
-'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n',
-'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't',
-'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't',
-'o', '\"', '\233', '\006', '\n', '\017', 'A', 'p', 'i', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\022', 'R', '\n', '\010',
-'a', 'p', 'i', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
-'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'p', 'i', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u',
-'r', 'c', 'e', '.', 'A', 'p', 'i', 'T', 'y', 'p', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\007', 'a', 'p',
-'i', 'T', 'y', 'p', 'e', '\022', '^', '\n', '\025', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 'a', 'p', 'i', '_', 'v', 'e',
-'r', 's', 'i', 'o', 'n', '\030', '\010', ' ', '\001', '(', '\016', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'p', 'i', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005',
-'\202', '\001', '\002', '\020', '\001', 'R', '\023', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'A', 'p', 'i', 'V', 'e', 'r', 's', 'i', 'o',
-'n', '\022', '#', '\n', '\r', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'n', 'a', 'm', 'e', 's', '\030', '\002', ' ', '\003', '(', '\t', 'R',
-'\014', 'c', 'l', 'u', 's', 't', 'e', 'r', 'N', 'a', 'm', 'e', 's', '\022', 'F', '\n', '\r', 'g', 'r', 'p', 'c', '_', 's', 'e', 'r',
-'v', 'i', 'c', 'e', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'R', '\014', 'g', 'r',
-'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 's', '\022', '>', '\n', '\r', 'r', 'e', 'f', 'r', 'e', 's', 'h', '_', 'd', 'e', 'l',
-'a', 'y', '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
-'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\014', 'r', 'e', 'f', 'r', 'e', 's', 'h', 'D', 'e', 'l', 'a', 'y', '\022',
-'L', '\n', '\017', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\005', ' ', '\001', '(', '\013', '2',
-'\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o',
-'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\016', 'r', 'e', 'q', 'u', 'e', 's', 't', 'T', 'i', 'm', 'e', 'o',
-'u', 't', '\022', 'W', '\n', '\023', 'r', 'a', 't', 'e', '_', 'l', 'i', 'm', 'i', 't', '_', 's', 'e', 't', 't', 'i', 'n', 'g', 's',
-'\030', '\006', ' ', '\001', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r',
-'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', 'R', '\021', 'r',
-'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', '\022', 'A', '\n', '\036', 's', 'e', 't', '_', 'n',
-'o', 'd', 'e', '_', 'o', 'n', '_', 'f', 'i', 'r', 's', 't', '_', 'm', 'e', 's', 's', 'a', 'g', 'e', '_', 'o', 'n', 'l', 'y',
-'\030', '\007', ' ', '\001', '(', '\010', 'R', '\031', 's', 'e', 't', 'N', 'o', 'd', 'e', 'O', 'n', 'F', 'i', 'r', 's', 't', 'M', 'e', 's',
-'s', 'a', 'g', 'e', 'O', 'n', 'l', 'y', '\"', '\222', '\001', '\n', '\007', 'A', 'p', 'i', 'T', 'y', 'p', 'e', '\022', '3', '\n', '%', 'D',
-'E', 'P', 'R', 'E', 'C', 'A', 'T', 'E', 'D', '_', 'A', 'N', 'D', '_', 'U', 'N', 'A', 'V', 'A', 'I', 'L', 'A', 'B', 'L', 'E',
-'_', 'D', 'O', '_', 'N', 'O', 'T', '_', 'U', 'S', 'E', '\020', '\000', '\032', '\010', '\010', '\001', '\250', '\367', '\264', '\213', '\002', '\001', '\022', '\010',
-'\n', '\004', 'R', 'E', 'S', 'T', '\020', '\001', '\022', '\010', '\n', '\004', 'G', 'R', 'P', 'C', '\020', '\002', '\022', '\016', '\n', '\n', 'D', 'E', 'L',
-'T', 'A', '_', 'G', 'R', 'P', 'C', '\020', '\003', '\022', '\023', '\n', '\017', 'A', 'G', 'G', 'R', 'E', 'G', 'A', 'T', 'E', 'D', '_', 'G',
-'R', 'P', 'C', '\020', '\005', '\022', '\031', '\n', '\025', 'A', 'G', 'G', 'R', 'E', 'G', 'A', 'T', 'E', 'D', '_', 'D', 'E', 'L', 'T', 'A',
-'_', 'G', 'R', 'P', 'C', '\020', '\006', ':', '(', '\232', '\305', '\210', '\036', '#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i',
-'.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'A', 'p', 'i', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\"',
-'I', '\n', '\026', 'A', 'g', 'g', 'r', 'e', 'g', 'a', 't', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e',
-':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r',
-'e', '.', 'A', 'g', 'g', 'r', 'e', 'g', 'a', 't', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\"',
-'\235', '\001', '\n', '\020', 'S', 'e', 'l', 'f', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '^', '\n', '\025', 't',
-'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 'a', 'p', 'i', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(',
-'\016', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.',
-'A', 'p', 'i', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\023', 't', 'r', 'a',
-'n', 's', 'p', 'o', 'r', 't', 'A', 'p', 'i', 'V', 'e', 'r', 's', 'i', 'o', 'n', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"',
-'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'S', 'e', 'l', 'f', 'C', 'o', 'n',
-'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\"', '\307', '\001', '\n', '\021', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 'S', 'e',
-'t', 't', 'i', 'n', 'g', 's', '\022', ';', '\n', '\n', 'm', 'a', 'x', '_', 't', 'o', 'k', 'e', 'n', 's', '\030', '\001', ' ', '\001', '(',
-'\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3',
-'2', 'V', 'a', 'l', 'u', 'e', 'R', '\t', 'm', 'a', 'x', 'T', 'o', 'k', 'e', 'n', 's', '\022', 'I', '\n', '\t', 'f', 'i', 'l', 'l',
-'_', 'r', 'a', 't', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
-'o', 'b', 'u', 'f', '.', 'D', 'o', 'u', 'b', 'l', 'e', 'V', 'a', 'l', 'u', 'e', 'B', '\016', '\372', 'B', '\013', '\022', '\t', '!', '\000',
-'\000', '\000', '\000', '\000', '\000', '\000', '\000', 'R', '\010', 'f', 'i', 'l', 'l', 'R', 'a', 't', 'e', ':', '*', '\232', '\305', '\210', '\036', '%', '\n',
-'#', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i',
-'m', 'i', 't', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', '\"', '\247', '\004', '\n', '\014', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u',
-'r', 'c', 'e', '\022', '8', '\n', '\013', 'a', 'u', 't', 'h', 'o', 'r', 'i', 't', 'i', 'e', 's', '\030', '\007', ' ', '\003', '(', '\013', '2',
-'\026', '.', 'x', 'd', 's', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'u', 't', 'h', 'o', 'r', 'i', 't', 'y', 'R', '\013',
-'a', 'u', 't', 'h', 'o', 'r', 'i', 't', 'i', 'e', 's', '\022', '\024', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\001', ' ', '\001', '(', '\t',
-'H', '\000', 'R', '\004', 'p', 'a', 't', 'h', '\022', 'S', '\n', '\021', 'a', 'p', 'i', '_', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o',
-'u', 'r', 'c', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
-'.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'p', 'i', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'H',
-'\000', 'R', '\017', 'a', 'p', 'i', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '@', '\n', '\003', 'a', 'd', 's',
-'\030', '\003', ' ', '\001', '(', '\013', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r',
-'e', '.', 'v', '3', '.', 'A', 'g', 'g', 'r', 'e', 'g', 'a', 't', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r',
-'c', 'e', 'H', '\000', 'R', '\003', 'a', 'd', 's', '\022', '<', '\n', '\004', 's', 'e', 'l', 'f', '\030', '\005', ' ', '\001', '(', '\013', '2', '&',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'S', 'e', 'l',
-'f', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'H', '\000', 'R', '\004', 's', 'e', 'l', 'f', '\022', 'M', '\n', '\025',
-'i', 'n', 'i', 't', 'i', 'a', 'l', '_', 'f', 'e', 't', 'c', 'h', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\004', ' ', '\001',
-'(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a',
-'t', 'i', 'o', 'n', 'R', '\023', 'i', 'n', 'i', 't', 'i', 'a', 'l', 'F', 'e', 't', 'c', 'h', 'T', 'i', 'm', 'e', 'o', 'u', 't',
-'\022', '\\', '\n', '\024', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'a', 'p', 'i', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030',
-'\006', ' ', '\001', '(', '\016', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e',
-'.', 'v', '3', '.', 'A', 'p', 'i', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R',
-'\022', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'A', 'p', 'i', 'V', 'e', 'r', 's', 'i', 'o', 'n', ':', '%', '\232', '\305', '\210', '\036',
-' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'C', 'o', 'n', 'f',
-'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\036', '\n', '\027', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e',
-'_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '*', '@', '\n', '\n', 'A', 'p', 'i', 'V', 'e', 'r',
-'s', 'i', 'o', 'n', '\022', '\025', '\n', '\004', 'A', 'U', 'T', 'O', '\020', '\000', '\032', '\013', '\010', '\001', '\212', '\364', '\233', '\263', '\005', '\003', '3',
-'.', '0', '\022', '\023', '\n', '\002', 'V', '2', '\020', '\001', '\032', '\013', '\010', '\001', '\212', '\364', '\233', '\263', '\005', '\003', '3', '.', '0', '\022', '\006',
-'\n', '\002', 'V', '3', '\020', '\002', 'B', '\205', '\001', '\n', '\"', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.',
-'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\021', 'C', 'o', 'n',
-'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', '.',
-'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l',
-'-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/',
-'v', '3', ';', 'c', 'o', 'r', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '\032', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n',
+'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '$', 'e',
+'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'e', 'x', 't', 'e', 'n',
+'s', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/',
+'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'g', 'r', 'p', 'c', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'p', 'r', 'o', 't',
+'o', '\032', '\031', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'a', 'n', 'y', '.', 'p', 'r',
+'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'd', 'u', 'r', 'a',
+'t', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b',
+'u', 'f', '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\033', 'x', 'd', 's', '/', 'c', 'o',
+'r', 'e', '/', 'v', '3', '/', 'a', 'u', 't', 'h', 'o', 'r', 'i', 't', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n',
+'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'i',
+'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n',
+'s', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o',
+'t', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032',
+'\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"',
+'\364', '\006', '\n', '\017', 'A', 'p', 'i', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\022', 'R', '\n', '\010', 'a', 'p',
+'i', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
+'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'p', 'i', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c',
+'e', '.', 'A', 'p', 'i', 'T', 'y', 'p', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\007', 'a', 'p', 'i', 'T',
+'y', 'p', 'e', '\022', '^', '\n', '\025', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 'a', 'p', 'i', '_', 'v', 'e', 'r', 's',
+'i', 'o', 'n', '\030', '\010', ' ', '\001', '(', '\016', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
+'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'p', 'i', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', '\001',
+'\002', '\020', '\001', 'R', '\023', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'A', 'p', 'i', 'V', 'e', 'r', 's', 'i', 'o', 'n', '\022',
+'#', '\n', '\r', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'n', 'a', 'm', 'e', 's', '\030', '\002', ' ', '\003', '(', '\t', 'R', '\014', 'c',
+'l', 'u', 's', 't', 'e', 'r', 'N', 'a', 'm', 'e', 's', '\022', 'F', '\n', '\r', 'g', 'r', 'p', 'c', '_', 's', 'e', 'r', 'v', 'i',
+'c', 'e', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
+'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'R', '\014', 'g', 'r', 'p', 'c',
+'S', 'e', 'r', 'v', 'i', 'c', 'e', 's', '\022', '>', '\n', '\r', 'r', 'e', 'f', 'r', 'e', 's', 'h', '_', 'd', 'e', 'l', 'a', 'y',
+'\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
+'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\014', 'r', 'e', 'f', 'r', 'e', 's', 'h', 'D', 'e', 'l', 'a', 'y', '\022', 'L', '\n',
+'\017', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\005', ' ', '\001', '(', '\013', '2', '\031', '.',
+'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B',
+'\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\016', 'r', 'e', 'q', 'u', 'e', 's', 't', 'T', 'i', 'm', 'e', 'o', 'u', 't',
+'\022', 'W', '\n', '\023', 'r', 'a', 't', 'e', '_', 'l', 'i', 'm', 'i', 't', '_', 's', 'e', 't', 't', 'i', 'n', 'g', 's', '\030', '\006',
+' ', '\001', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
+'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', 'R', '\021', 'r', 'a', 't',
+'e', 'L', 'i', 'm', 'i', 't', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', '\022', 'A', '\n', '\036', 's', 'e', 't', '_', 'n', 'o', 'd',
+'e', '_', 'o', 'n', '_', 'f', 'i', 'r', 's', 't', '_', 'm', 'e', 's', 's', 'a', 'g', 'e', '_', 'o', 'n', 'l', 'y', '\030', '\007',
+' ', '\001', '(', '\010', 'R', '\031', 's', 'e', 't', 'N', 'o', 'd', 'e', 'O', 'n', 'F', 'i', 'r', 's', 't', 'M', 'e', 's', 's', 'a',
+'g', 'e', 'O', 'n', 'l', 'y', '\022', 'W', '\n', '\021', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'o',
+'r', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c',
+'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f',
+'i', 'g', 'R', '\020', 'c', 'o', 'n', 'f', 'i', 'g', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'o', 'r', 's', '\"', '\222', '\001', '\n', '\007',
+'A', 'p', 'i', 'T', 'y', 'p', 'e', '\022', '3', '\n', '%', 'D', 'E', 'P', 'R', 'E', 'C', 'A', 'T', 'E', 'D', '_', 'A', 'N', 'D',
+'_', 'U', 'N', 'A', 'V', 'A', 'I', 'L', 'A', 'B', 'L', 'E', '_', 'D', 'O', '_', 'N', 'O', 'T', '_', 'U', 'S', 'E', '\020', '\000',
+'\032', '\010', '\010', '\001', '\250', '\367', '\264', '\213', '\002', '\001', '\022', '\010', '\n', '\004', 'R', 'E', 'S', 'T', '\020', '\001', '\022', '\010', '\n', '\004', 'G',
+'R', 'P', 'C', '\020', '\002', '\022', '\016', '\n', '\n', 'D', 'E', 'L', 'T', 'A', '_', 'G', 'R', 'P', 'C', '\020', '\003', '\022', '\023', '\n', '\017',
+'A', 'G', 'G', 'R', 'E', 'G', 'A', 'T', 'E', 'D', '_', 'G', 'R', 'P', 'C', '\020', '\005', '\022', '\031', '\n', '\025', 'A', 'G', 'G', 'R',
+'E', 'G', 'A', 'T', 'E', 'D', '_', 'D', 'E', 'L', 'T', 'A', '_', 'G', 'R', 'P', 'C', '\020', '\006', ':', '(', '\232', '\305', '\210', '\036',
+'#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'A', 'p', 'i', 'C',
+'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\"', 'I', '\n', '\026', 'A', 'g', 'g', 'r', 'e', 'g', 'a', 't', 'e', 'd',
+'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', 'o',
+'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'A', 'g', 'g', 'r', 'e', 'g', 'a', 't', 'e', 'd', 'C',
+'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\"', '\235', '\001', '\n', '\020', 'S', 'e', 'l', 'f', 'C', 'o', 'n', 'f', 'i',
+'g', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '^', '\n', '\025', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 'a', 'p', 'i', '_',
+'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\016', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
+'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'p', 'i', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'B', '\010', '\372',
+'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\023', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'A', 'p', 'i', 'V', 'e', 'r', 's',
+'i', 'o', 'n', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.',
+'c', 'o', 'r', 'e', '.', 'S', 'e', 'l', 'f', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\"', '\307', '\001', '\n',
+'\021', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', '\022', ';', '\n', '\n', 'm', 'a', 'x',
+'_', 't', 'o', 'k', 'e', 'n', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
+'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\t', 'm', 'a', 'x', 'T', 'o',
+'k', 'e', 'n', 's', '\022', 'I', '\n', '\t', 'f', 'i', 'l', 'l', '_', 'r', 'a', 't', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034',
+'.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'o', 'u', 'b', 'l', 'e', 'V', 'a',
+'l', 'u', 'e', 'B', '\016', '\372', 'B', '\013', '\022', '\t', '!', '\000', '\000', '\000', '\000', '\000', '\000', '\000', '\000', 'R', '\010', 'f', 'i', 'l', 'l',
+'R', 'a', 't', 'e', ':', '*', '\232', '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2',
+'.', 'c', 'o', 'r', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', '\"', '\204',
+'\001', '\n', '\020', 'P', 'a', 't', 'h', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '\033', '\n', '\004', 'p', 'a',
+'t', 'h', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'p', 'a', 't', 'h', '\022', 'S',
+'\n', '\021', 'w', 'a', 't', 'c', 'h', 'e', 'd', '_', 'd', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\030', '\002', ' ', '\001', '(', '\013',
+'2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'W',
+'a', 't', 'c', 'h', 'e', 'd', 'D', 'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', 'R', '\020', 'w', 'a', 't', 'c', 'h', 'e', 'd', 'D',
+'i', 'r', 'e', 'c', 't', 'o', 'r', 'y', '\"', '\214', '\005', '\n', '\014', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e',
+'\022', '8', '\n', '\013', 'a', 'u', 't', 'h', 'o', 'r', 'i', 't', 'i', 'e', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', '\026', '.', 'x',
+'d', 's', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'u', 't', 'h', 'o', 'r', 'i', 't', 'y', 'R', '\013', 'a', 'u', 't',
+'h', 'o', 'r', 'i', 't', 'i', 'e', 's', '\022', '!', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\013', '\030',
+'\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\004', 'p', 'a', 't', 'h', '\022', 'V', '\n', '\022', 'p', 'a', 't',
+'h', '_', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '\030', '\010', ' ', '\001', '(', '\013', '2', '&', '.', 'e',
+'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'P', 'a', 't', 'h', 'C',
+'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'H', '\000', 'R', '\020', 'p', 'a', 't', 'h', 'C', 'o', 'n', 'f', 'i', 'g',
+'S', 'o', 'u', 'r', 'c', 'e', '\022', 'S', '\n', '\021', 'a', 'p', 'i', '_', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r',
+'c', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c',
+'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'p', 'i', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'H', '\000', 'R',
+'\017', 'a', 'p', 'i', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '@', '\n', '\003', 'a', 'd', 's', '\030', '\003',
+' ', '\001', '(', '\013', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
+'v', '3', '.', 'A', 'g', 'g', 'r', 'e', 'g', 'a', 't', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e',
+'H', '\000', 'R', '\003', 'a', 'd', 's', '\022', '<', '\n', '\004', 's', 'e', 'l', 'f', '\030', '\005', ' ', '\001', '(', '\013', '2', '&', '.', 'e',
+'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'S', 'e', 'l', 'f', 'C',
+'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'H', '\000', 'R', '\004', 's', 'e', 'l', 'f', '\022', 'M', '\n', '\025', 'i', 'n',
+'i', 't', 'i', 'a', 'l', '_', 'f', 'e', 't', 'c', 'h', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\004', ' ', '\001', '(', '\013',
+'2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i',
+'o', 'n', 'R', '\023', 'i', 'n', 'i', 't', 'i', 'a', 'l', 'F', 'e', 't', 'c', 'h', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', '\\',
+'\n', '\024', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'a', 'p', 'i', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\006', ' ',
+'\001', '(', '\016', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v',
+'3', '.', 'A', 'p', 'i', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\022', 'r',
+'e', 's', 'o', 'u', 'r', 'c', 'e', 'A', 'p', 'i', 'V', 'e', 'r', 's', 'i', 'o', 'n', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n',
+'\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'C', 'o', 'n', 'f', 'i', 'g',
+'S', 'o', 'u', 'r', 'c', 'e', 'B', '\036', '\n', '\027', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '_', 's',
+'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', '\236', '\002', '\n', '\025', 'E', 'x', 't', 'e', 'n', 's', 'i',
+'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\022', 'Q', '\n', '\r', 'c', 'o', 'n', 'f', 'i', 'g', '_',
+'s', 'o', 'u', 'r', 'c', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
+'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\010',
+'\372', 'B', '\005', '\242', '\001', '\002', '\010', '\001', 'R', '\014', 'c', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\022', ';', '\n',
+'\016', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g',
+'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\r', 'd', 'e', 'f', 'a', 'u',
+'l', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'N', '\n', '$', 'a', 'p', 'p', 'l', 'y', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't',
+'_', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'w', 'i', 't', 'h', 'o', 'u', 't', '_', 'w', 'a', 'r', 'm', 'i', 'n', 'g', '\030', '\003',
+' ', '\001', '(', '\010', 'R', ' ', 'a', 'p', 'p', 'l', 'y', 'D', 'e', 'f', 'a', 'u', 'l', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'W',
+'i', 't', 'h', 'o', 'u', 't', 'W', 'a', 'r', 'm', 'i', 'n', 'g', '\022', '%', '\n', '\t', 't', 'y', 'p', 'e', '_', 'u', 'r', 'l',
+'s', '\030', '\004', ' ', '\003', '(', '\t', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 't', 'y', 'p', 'e', 'U', 'r',
+'l', 's', '*', '@', '\n', '\n', 'A', 'p', 'i', 'V', 'e', 'r', 's', 'i', 'o', 'n', '\022', '\025', '\n', '\004', 'A', 'U', 'T', 'O', '\020',
+'\000', '\032', '\013', '\010', '\001', '\212', '\364', '\233', '\263', '\005', '\003', '3', '.', '0', '\022', '\023', '\n', '\002', 'V', '2', '\020', '\001', '\032', '\013', '\010',
+'\001', '\212', '\364', '\233', '\263', '\005', '\003', '3', '.', '0', '\022', '\006', '\n', '\002', 'V', '3', '\020', '\002', 'B', '\205', '\001', '\n', '\"', 'i', 'o',
+'.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
+'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\021', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'P', 'r', 'o', 't',
+'o', 'P', '\001', 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x',
+'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/',
+'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', 'o', 'r', 'e', 'v', '3', '\272', '\200', '\310', '\321',
+'\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
-static _upb_DefPool_Init *deps[9] = {
+static _upb_DefPool_Init *deps[12] = {
+ &envoy_config_core_v3_base_proto_upbdefinit,
+ &envoy_config_core_v3_extension_proto_upbdefinit,
&envoy_config_core_v3_grpc_service_proto_upbdefinit,
+ &google_protobuf_any_proto_upbdefinit,
&google_protobuf_duration_proto_upbdefinit,
&google_protobuf_wrappers_proto_upbdefinit,
&xds_core_v3_authority_proto_upbdefinit,
@@ -129,5 +164,5 @@ _upb_DefPool_Init envoy_config_core_v3_config_source_proto_upbdefinit = {
deps,
&envoy_config_core_v3_config_source_proto_upb_file_layout,
"envoy/config/core/v3/config_source.proto",
- UPB_STRINGVIEW_INIT(descriptor, 2325)
+ UPB_STRINGVIEW_INIT(descriptor, 3037)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h
index 3da251c421..146944939e 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h
@@ -41,11 +41,21 @@ UPB_INLINE const upb_MessageDef *envoy_config_core_v3_RateLimitSettings_getmsgde
return upb_DefPool_FindMessageByName(s, "envoy.config.core.v3.RateLimitSettings");
}
+UPB_INLINE const upb_MessageDef *envoy_config_core_v3_PathConfigSource_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_config_core_v3_config_source_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.config.core.v3.PathConfigSource");
+}
+
UPB_INLINE const upb_MessageDef *envoy_config_core_v3_ConfigSource_getmsgdef(upb_DefPool *s) {
_upb_DefPool_LoadDefInit(s, &envoy_config_core_v3_config_source_proto_upbdefinit);
return upb_DefPool_FindMessageByName(s, "envoy.config.core.v3.ConfigSource");
}
+UPB_INLINE const upb_MessageDef *envoy_config_core_v3_ExtensionConfigSource_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_config_core_v3_config_source_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.config.core.v3.ExtensionConfigSource");
+}
+
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c
index 0b11d37ef0..b602a97cf9 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c
@@ -10,44 +10,29 @@
#include "envoy/config/core/v3/extension.upbdefs.h"
#include "envoy/config/core/v3/extension.upb.h"
-extern _upb_DefPool_Init envoy_config_core_v3_config_source_proto_upbdefinit;
extern _upb_DefPool_Init google_protobuf_any_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[735] = {'\n', '$', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'e', 'x',
+static const char descriptor[404] = {'\n', '$', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'e', 'x',
't', 'e', 'n', 's', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\022', '\024', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
-'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '\032', '(', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/',
-'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '.', 'p', 'r', 'o',
-'t', 'o', '\032', '\031', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'a', 'n', 'y', '.', 'p',
-'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't',
-'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i',
-'d', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', 'v', '\n', '\024', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's',
-'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007',
-'\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'A', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o',
-'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
-'b', 'u', 'f', '.', 'A', 'n', 'y', 'B', '\010', '\372', 'B', '\005', '\242', '\001', '\002', '\010', '\001', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C',
-'o', 'n', 'f', 'i', 'g', '\"', '\236', '\002', '\n', '\025', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g',
-'S', 'o', 'u', 'r', 'c', 'e', '\022', 'Q', '\n', '\r', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '\030', '\001',
-' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
-'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\010', '\372', 'B', '\005', '\242', '\001', '\002', '\010', '\001',
-'R', '\014', 'c', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', '\022', ';', '\n', '\016', 'd', 'e', 'f', 'a', 'u', 'l', 't',
-'_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
-'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'C', 'o', 'n', 'f', 'i', 'g',
-'\022', 'N', '\n', '$', 'a', 'p', 'p', 'l', 'y', '_', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '_',
-'w', 'i', 't', 'h', 'o', 'u', 't', '_', 'w', 'a', 'r', 'm', 'i', 'n', 'g', '\030', '\003', ' ', '\001', '(', '\010', 'R', ' ', 'a', 'p',
-'p', 'l', 'y', 'D', 'e', 'f', 'a', 'u', 'l', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'W', 'i', 't', 'h', 'o', 'u', 't', 'W', 'a',
-'r', 'm', 'i', 'n', 'g', '\022', '%', '\n', '\t', 't', 'y', 'p', 'e', '_', 'u', 'r', 'l', 's', '\030', '\004', ' ', '\003', '(', '\t', 'B',
-'\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 't', 'y', 'p', 'e', 'U', 'r', 'l', 's', 'B', '\202', '\001', '\n', '\"', 'i',
-'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
-'.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\016', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'P', 'r', 'o', 't', 'o', 'P',
-'\001', 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/',
-'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o',
-'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', 'o', 'r', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002',
-'\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '\032', '\031', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b',
+'u', 'f', '/', 'a', 'n', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a',
+'t', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd',
+'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', 'v', '\n', '\024', 'T', 'y', 'p',
+'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e',
+'\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'A', '\n', '\014',
+'t', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g',
+'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'B', '\010', '\372', 'B', '\005', '\242', '\001', '\002', '\010', '\001',
+'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\202', '\001', '\n', '\"', 'i', 'o', '.', 'e', 'n', 'v', 'o',
+'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
+'v', '3', 'B', '\016', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', 't',
+'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n',
+'t', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c',
+'o', 'r', 'e', '/', 'v', '3', ';', 'c', 'o', 'r', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r',
+'o', 't', 'o', '3',
};
-static _upb_DefPool_Init *deps[5] = {
- &envoy_config_core_v3_config_source_proto_upbdefinit,
+static _upb_DefPool_Init *deps[4] = {
&google_protobuf_any_proto_upbdefinit,
&udpa_annotations_status_proto_upbdefinit,
&validate_validate_proto_upbdefinit,
@@ -58,5 +43,5 @@ _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit = {
deps,
&envoy_config_core_v3_extension_proto_upb_file_layout,
"envoy/config/core/v3/extension.proto",
- UPB_STRINGVIEW_INIT(descriptor, 735)
+ UPB_STRINGVIEW_INIT(descriptor, 404)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h
index ea41f98cbe..b13c47cb42 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h
@@ -26,11 +26,6 @@ UPB_INLINE const upb_MessageDef *envoy_config_core_v3_TypedExtensionConfig_getms
return upb_DefPool_FindMessageByName(s, "envoy.config.core.v3.TypedExtensionConfig");
}
-UPB_INLINE const upb_MessageDef *envoy_config_core_v3_ExtensionConfigSource_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_config_core_v3_extension_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.config.core.v3.ExtensionConfigSource");
-}
-
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c
index 0bfb72f118..b8a59d8c30 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c
@@ -22,7 +22,7 @@ extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[4290] = {'\n', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'h', 'e',
+static const char descriptor[4483] = {'\n', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'h', 'e',
'a', 'l', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '.', 'p', 'r', 'o', 't', 'o', '\022', '\024', 'e', 'n', 'v', 'o', 'y', '.', 'c',
'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '\032', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f',
'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '/', 'e', 'n',
@@ -39,161 +39,169 @@ static const char descriptor[4290] = {'\n', '\'', 'e', 'n', 'v', 'o', 'y', '/',
'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's',
't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't',
'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a',
-'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\220', '\034', '\n',
-'\013', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '\022', '?', '\n', '\007', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\001',
+'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '`', '\n', '\017',
+'H', 'e', 'a', 'l', 't', 'h', 'S', 't', 'a', 't', 'u', 's', 'S', 'e', 't', '\022', 'M', '\n', '\010', 's', 't', 'a', 't', 'u', 's',
+'e', 's', '\030', '\001', ' ', '\003', '(', '\016', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c',
+'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'S', 't', 'a', 't', 'u', 's', 'B', '\r', '\372', 'B', '\n', '\222',
+'\001', '\007', '\"', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\010', 's', 't', 'a', 't', 'u', 's', 'e', 's', '\"', '\357', '\034', '\n', '\013', 'H',
+'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '\022', '?', '\n', '\007', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\001', ' ', '\001',
+'(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a',
+'t', 'i', 'o', 'n', 'B', '\n', '\372', 'B', '\007', '\252', '\001', '\004', '\010', '\001', '*', '\000', 'R', '\007', 't', 'i', 'm', 'e', 'o', 'u', 't',
+'\022', 'A', '\n', '\010', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g',
+'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\n', '\372', 'B', '\007',
+'\252', '\001', '\004', '\010', '\001', '*', '\000', 'R', '\010', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', '@', '\n', '\016', 'i', 'n', 'i', 't',
+'i', 'a', 'l', '_', 'j', 'i', 't', 't', 'e', 'r', '\030', '\024', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e',
+'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\r', 'i', 'n', 'i', 't', 'i',
+'a', 'l', 'J', 'i', 't', 't', 'e', 'r', '\022', 'B', '\n', '\017', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '_', 'j', 'i', 't', 't',
+'e', 'r', '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
+'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\016', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', 'J', 'i', 't', 't', 'e',
+'r', '\022', '6', '\n', '\027', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '_', 'j', 'i', 't', 't', 'e', 'r', '_', 'p', 'e', 'r', 'c',
+'e', 'n', 't', '\030', '\022', ' ', '\001', '(', '\r', 'R', '\025', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', 'J', 'i', 't', 't', 'e', 'r',
+'P', 'e', 'r', 'c', 'e', 'n', 't', '\022', 'W', '\n', '\023', 'u', 'n', 'h', 'e', 'a', 'l', 't', 'h', 'y', '_', 't', 'h', 'r', 'e',
+'s', 'h', 'o', 'l', 'd', '\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
+'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020',
+'\001', 'R', '\022', 'u', 'n', 'h', 'e', 'a', 'l', 't', 'h', 'y', 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', '\022', 'S', '\n', '\021',
+'h', 'e', 'a', 'l', 't', 'h', 'y', '_', 't', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', '\030', '\005', ' ', '\001', '(', '\013', '2', '\034',
+'.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a',
+'l', 'u', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\020', 'h', 'e', 'a', 'l', 't', 'h', 'y', 'T', 'h', 'r',
+'e', 's', 'h', 'o', 'l', 'd', '\022', '7', '\n', '\010', 'a', 'l', 't', '_', 'p', 'o', 'r', 't', '\030', '\006', ' ', '\001', '(', '\013', '2',
+'\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V',
+'a', 'l', 'u', 'e', 'R', '\007', 'a', 'l', 't', 'P', 'o', 'r', 't', '\022', 'E', '\n', '\020', 'r', 'e', 'u', 's', 'e', '_', 'c', 'o',
+'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
+'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\017', 'r', 'e', 'u', 's', 'e', 'C',
+'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '\022', '_', '\n', '\021', 'h', 't', 't', 'p', '_', 'h', 'e', 'a', 'l', 't', 'h', '_',
+'c', 'h', 'e', 'c', 'k', '\030', '\010', ' ', '\001', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
+'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'H', 't', 't',
+'p', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'H', '\000', 'R', '\017', 'h', 't', 't', 'p', 'H', 'e', 'a', 'l', 't',
+'h', 'C', 'h', 'e', 'c', 'k', '\022', '\\', '\n', '\020', 't', 'c', 'p', '_', 'h', 'e', 'a', 'l', 't', 'h', '_', 'c', 'h', 'e', 'c',
+'k', '\030', '\t', ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o',
+'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'T', 'c', 'p', 'H', 'e', 'a', 'l',
+'t', 'h', 'C', 'h', 'e', 'c', 'k', 'H', '\000', 'R', '\016', 't', 'c', 'p', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k',
+'\022', '_', '\n', '\021', 'g', 'r', 'p', 'c', '_', 'h', 'e', 'a', 'l', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '\030', '\013', ' ', '\001',
+'(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3',
+'.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'G', 'r', 'p', 'c', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h',
+'e', 'c', 'k', 'H', '\000', 'R', '\017', 'g', 'r', 'p', 'c', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '\022', 'e', '\n',
+'\023', 'c', 'u', 's', 't', 'o', 'm', '_', 'h', 'e', 'a', 'l', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '\030', '\r', ' ', '\001', '(',
+'\013', '2', '3', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.',
+'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'C', 'u', 's', 't', 'o', 'm', 'H', 'e', 'a', 'l', 't', 'h', 'C',
+'h', 'e', 'c', 'k', 'H', '\000', 'R', '\021', 'c', 'u', 's', 't', 'o', 'm', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k',
+'\022', 'S', '\n', '\023', 'n', 'o', '_', 't', 'r', 'a', 'f', 'f', 'i', 'c', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\014',
' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u',
-'r', 'a', 't', 'i', 'o', 'n', 'B', '\n', '\372', 'B', '\007', '\252', '\001', '\004', '\010', '\001', '*', '\000', 'R', '\007', 't', 'i', 'm', 'e', 'o',
-'u', 't', '\022', 'A', '\n', '\010', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o',
-'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\n', '\372',
-'B', '\007', '\252', '\001', '\004', '\010', '\001', '*', '\000', 'R', '\010', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', '@', '\n', '\016', 'i', 'n',
-'i', 't', 'i', 'a', 'l', '_', 'j', 'i', 't', 't', 'e', 'r', '\030', '\024', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\r', 'i', 'n', 'i',
-'t', 'i', 'a', 'l', 'J', 'i', 't', 't', 'e', 'r', '\022', 'B', '\n', '\017', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '_', 'j', 'i',
-'t', 't', 'e', 'r', '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
-'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\016', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', 'J', 'i', 't',
-'t', 'e', 'r', '\022', '6', '\n', '\027', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '_', 'j', 'i', 't', 't', 'e', 'r', '_', 'p', 'e',
-'r', 'c', 'e', 'n', 't', '\030', '\022', ' ', '\001', '(', '\r', 'R', '\025', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', 'J', 'i', 't', 't',
-'e', 'r', 'P', 'e', 'r', 'c', 'e', 'n', 't', '\022', 'W', '\n', '\023', 'u', 'n', 'h', 'e', 'a', 'l', 't', 'h', 'y', '_', 't', 'h',
-'r', 'e', 's', 'h', 'o', 'l', 'd', '\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
-'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001',
-'\002', '\020', '\001', 'R', '\022', 'u', 'n', 'h', 'e', 'a', 'l', 't', 'h', 'y', 'T', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', '\022', 'S',
-'\n', '\021', 'h', 'e', 'a', 'l', 't', 'h', 'y', '_', 't', 'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', '\030', '\005', ' ', '\001', '(', '\013',
-'2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2',
-'V', 'a', 'l', 'u', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\020', 'h', 'e', 'a', 'l', 't', 'h', 'y', 'T',
-'h', 'r', 'e', 's', 'h', 'o', 'l', 'd', '\022', '7', '\n', '\010', 'a', 'l', 't', '_', 'p', 'o', 'r', 't', '\030', '\006', ' ', '\001', '(',
-'\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3',
-'2', 'V', 'a', 'l', 'u', 'e', 'R', '\007', 'a', 'l', 't', 'P', 'o', 'r', 't', '\022', 'E', '\n', '\020', 'r', 'e', 'u', 's', 'e', '_',
-'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e',
-'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\017', 'r', 'e', 'u', 's',
-'e', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '\022', '_', '\n', '\021', 'h', 't', 't', 'p', '_', 'h', 'e', 'a', 'l', 't',
-'h', '_', 'c', 'h', 'e', 'c', 'k', '\030', '\010', ' ', '\001', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
-'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'H',
-'t', 't', 'p', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'H', '\000', 'R', '\017', 'h', 't', 't', 'p', 'H', 'e', 'a',
-'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '\022', '\\', '\n', '\020', 't', 'c', 'p', '_', 'h', 'e', 'a', 'l', 't', 'h', '_', 'c', 'h',
-'e', 'c', 'k', '\030', '\t', ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
-'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'T', 'c', 'p', 'H', 'e',
-'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'H', '\000', 'R', '\016', 't', 'c', 'p', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e',
-'c', 'k', '\022', '_', '\n', '\021', 'g', 'r', 'p', 'c', '_', 'h', 'e', 'a', 'l', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '\030', '\013',
-' ', '\001', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
-'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'G', 'r', 'p', 'c', 'H', 'e', 'a', 'l', 't', 'h',
-'C', 'h', 'e', 'c', 'k', 'H', '\000', 'R', '\017', 'g', 'r', 'p', 'c', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '\022',
-'e', '\n', '\023', 'c', 'u', 's', 't', 'o', 'm', '_', 'h', 'e', 'a', 'l', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '\030', '\r', ' ',
-'\001', '(', '\013', '2', '3', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v',
-'3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'C', 'u', 's', 't', 'o', 'm', 'H', 'e', 'a', 'l', 't',
-'h', 'C', 'h', 'e', 'c', 'k', 'H', '\000', 'R', '\021', 'c', 'u', 's', 't', 'o', 'm', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e',
-'c', 'k', '\022', 'S', '\n', '\023', 'n', 'o', '_', 't', 'r', 'a', 'f', 'f', 'i', 'c', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l',
-'\030', '\014', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
-'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\021', 'n', 'o', 'T', 'r', 'a',
-'f', 'f', 'i', 'c', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', 'b', '\n', '\033', 'n', 'o', '_', 't', 'r', 'a', 'f', 'f', 'i',
-'c', '_', 'h', 'e', 'a', 'l', 't', 'h', 'y', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\030', ' ', '\001', '(', '\013', '2',
-'\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o',
-'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\030', 'n', 'o', 'T', 'r', 'a', 'f', 'f', 'i', 'c', 'H', 'e', 'a',
-'l', 't', 'h', 'y', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', 'R', '\n', '\022', 'u', 'n', 'h', 'e', 'a', 'l', 't', 'h', 'y',
-'_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\016', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.',
-'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002',
-'*', '\000', 'R', '\021', 'u', 'n', 'h', 'e', 'a', 'l', 't', 'h', 'y', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', '[', '\n', '\027',
-'u', 'n', 'h', 'e', 'a', 'l', 't', 'h', 'y', '_', 'e', 'd', 'g', 'e', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\017',
-' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u',
-'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\025', 'u', 'n', 'h', 'e', 'a', 'l', 't',
-'h', 'y', 'E', 'd', 'g', 'e', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', 'W', '\n', '\025', 'h', 'e', 'a', 'l', 't', 'h', 'y',
-'_', 'e', 'd', 'g', 'e', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\020', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o',
-'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372',
-'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\023', 'h', 'e', 'a', 'l', 't', 'h', 'y', 'E', 'd', 'g', 'e', 'I', 'n', 't', 'e', 'r',
-'v', 'a', 'l', '\022', '$', '\n', '\016', 'e', 'v', 'e', 'n', 't', '_', 'l', 'o', 'g', '_', 'p', 'a', 't', 'h', '\030', '\021', ' ', '\001',
-'(', '\t', 'R', '\014', 'e', 'v', 'e', 'n', 't', 'L', 'o', 'g', 'P', 'a', 't', 'h', '\022', 'M', '\n', '\r', 'e', 'v', 'e', 'n', 't',
-'_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\026', ' ', '\001', '(', '\013', '2', '(', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
-'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'E', 'v', 'e', 'n', 't', 'S', 'e', 'r', 'v', 'i', 'c', 'e',
-'C', 'o', 'n', 'f', 'i', 'g', 'R', '\014', 'e', 'v', 'e', 'n', 't', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '\022', 'F', '\n', ' ', 'a',
-'l', 'w', 'a', 'y', 's', '_', 'l', 'o', 'g', '_', 'h', 'e', 'a', 'l', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '_', 'f', 'a',
-'i', 'l', 'u', 'r', 'e', 's', '\030', '\023', ' ', '\001', '(', '\010', 'R', '\034', 'a', 'l', 'w', 'a', 'y', 's', 'L', 'o', 'g', 'H', 'e',
-'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 's', '\022', 'M', '\n', '\013', 't', 'l', 's', '_',
-'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\025', ' ', '\001', '(', '\013', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
-'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'T',
-'l', 's', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\n', 't', 'l', 's', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '^', '\n', '\037',
-'t', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', '_', 'm', 'a', 't', 'c', 'h', '_', 'c', 'r',
-'i', 't', 'e', 'r', 'i', 'a', '\030', '\027', ' ', '\001', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o',
-'t', 'o', 'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't', 'R', '\034', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o',
-'c', 'k', 'e', 't', 'M', 'a', 't', 'c', 'h', 'C', 'r', 'i', 't', 'e', 'r', 'i', 'a', '\032', '\200', '\001', '\n', '\007', 'P', 'a', 'y',
-'l', 'o', 'a', 'd', '\022', '\035', '\n', '\004', 't', 'e', 'x', 't', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002',
-'\020', '\001', 'H', '\000', 'R', '\004', 't', 'e', 'x', 't', '\022', '\030', '\n', '\006', 'b', 'i', 'n', 'a', 'r', 'y', '\030', '\002', ' ', '\001', '(',
-'\014', 'H', '\000', 'R', '\006', 'b', 'i', 'n', 'a', 'r', 'y', ':', ',', '\232', '\305', '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y',
-'.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.',
-'P', 'a', 'y', 'l', 'o', 'a', 'd', 'B', '\016', '\n', '\007', 'p', 'a', 'y', 'l', 'o', 'a', 'd', '\022', '\003', '\370', 'B', '\001', '\032', '\252',
-'\006', '\n', '\017', 'H', 't', 't', 'p', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '\022', '\037', '\n', '\004', 'h', 'o', 's',
-'t', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\004', 'h', 'o', 's',
-'t', '\022', '!', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300',
-'\001', '\002', '\310', '\001', '\000', 'R', '\004', 'p', 'a', 't', 'h', '\022', '=', '\n', '\004', 's', 'e', 'n', 'd', '\030', '\003', ' ', '\001', '(', '\013',
-'2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H',
-'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'P', 'a', 'y', 'l', 'o', 'a', 'd', 'R', '\004', 's', 'e', 'n', 'd', '\022',
-'C', '\n', '\007', 'r', 'e', 'c', 'e', 'i', 'v', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.',
-'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c',
-'k', '.', 'P', 'a', 'y', 'l', 'o', 'a', 'd', 'R', '\007', 'r', 'e', 'c', 'e', 'i', 'v', 'e', '\022', 'g', '\n', '\026', 'r', 'e', 'q',
-'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\006', ' ', '\003', '(', '\013',
-'2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H',
-'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020',
-'\350', '\007', 'R', '\023', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', '\022', 'K',
-'\n', '\031', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'r', 'e', 'm', 'o',
-'v', 'e', '\030', '\010', ' ', '\003', '(', '\t', 'B', '\020', '\372', 'B', '\r', '\222', '\001', '\n', '\"', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001',
-'\000', 'R', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', 'v', 'e',
-'\022', 'F', '\n', '\021', 'e', 'x', 'p', 'e', 'c', 't', 'e', 'd', '_', 's', 't', 'a', 't', 'u', 's', 'e', 's', '\030', '\t', ' ', '\003',
-'(', '\013', '2', '\031', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'I', 'n', 't', '6', '4', 'R',
-'a', 'n', 'g', 'e', 'R', '\020', 'e', 'x', 'p', 'e', 'c', 't', 'e', 'd', 'S', 't', 'a', 't', 'u', 's', 'e', 's', '\022', 'H', '\n',
-'\022', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', '_', 's', 't', 'a', 't', 'u', 's', 'e', 's', '\030', '\014', ' ', '\003', '(', '\013',
+'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\021', 'n', 'o', 'T', 'r', 'a', 'f', 'f',
+'i', 'c', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', 'b', '\n', '\033', 'n', 'o', '_', 't', 'r', 'a', 'f', 'f', 'i', 'c', '_',
+'h', 'e', 'a', 'l', 't', 'h', 'y', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\030', ' ', '\001', '(', '\013', '2', '\031', '.',
+'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B',
+'\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\030', 'n', 'o', 'T', 'r', 'a', 'f', 'f', 'i', 'c', 'H', 'e', 'a', 'l', 't',
+'h', 'y', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', 'R', '\n', '\022', 'u', 'n', 'h', 'e', 'a', 'l', 't', 'h', 'y', '_', 'i',
+'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\016', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
+'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000',
+'R', '\021', 'u', 'n', 'h', 'e', 'a', 'l', 't', 'h', 'y', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', '[', '\n', '\027', 'u', 'n',
+'h', 'e', 'a', 'l', 't', 'h', 'y', '_', 'e', 'd', 'g', 'e', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\017', ' ', '\001',
+'(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a',
+'t', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\025', 'u', 'n', 'h', 'e', 'a', 'l', 't', 'h', 'y',
+'E', 'd', 'g', 'e', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', 'W', '\n', '\025', 'h', 'e', 'a', 'l', 't', 'h', 'y', '_', 'e',
+'d', 'g', 'e', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\020', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g',
+'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005',
+'\252', '\001', '\002', '*', '\000', 'R', '\023', 'h', 'e', 'a', 'l', 't', 'h', 'y', 'E', 'd', 'g', 'e', 'I', 'n', 't', 'e', 'r', 'v', 'a',
+'l', '\022', '$', '\n', '\016', 'e', 'v', 'e', 'n', 't', '_', 'l', 'o', 'g', '_', 'p', 'a', 't', 'h', '\030', '\021', ' ', '\001', '(', '\t',
+'R', '\014', 'e', 'v', 'e', 'n', 't', 'L', 'o', 'g', 'P', 'a', 't', 'h', '\022', 'M', '\n', '\r', 'e', 'v', 'e', 'n', 't', '_', 's',
+'e', 'r', 'v', 'i', 'c', 'e', '\030', '\026', ' ', '\001', '(', '\013', '2', '(', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
+'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'E', 'v', 'e', 'n', 't', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'C', 'o',
+'n', 'f', 'i', 'g', 'R', '\014', 'e', 'v', 'e', 'n', 't', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '\022', 'F', '\n', ' ', 'a', 'l', 'w',
+'a', 'y', 's', '_', 'l', 'o', 'g', '_', 'h', 'e', 'a', 'l', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', '_', 'f', 'a', 'i', 'l',
+'u', 'r', 'e', 's', '\030', '\023', ' ', '\001', '(', '\010', 'R', '\034', 'a', 'l', 'w', 'a', 'y', 's', 'L', 'o', 'g', 'H', 'e', 'a', 'l',
+'t', 'h', 'C', 'h', 'e', 'c', 'k', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 's', '\022', 'M', '\n', '\013', 't', 'l', 's', '_', 'o', 'p',
+'t', 'i', 'o', 'n', 's', '\030', '\025', ' ', '\001', '(', '\013', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
+'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'T', 'l', 's',
+'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\n', 't', 'l', 's', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '^', '\n', '\037', 't', 'r',
+'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', '_', 'm', 'a', 't', 'c', 'h', '_', 'c', 'r', 'i', 't',
+'e', 'r', 'i', 'a', '\030', '\027', ' ', '\001', '(', '\013', '2', '\027', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
+'b', 'u', 'f', '.', 'S', 't', 'r', 'u', 'c', 't', 'R', '\034', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k',
+'e', 't', 'M', 'a', 't', 'c', 'h', 'C', 'r', 'i', 't', 'e', 'r', 'i', 'a', '\032', '\200', '\001', '\n', '\007', 'P', 'a', 'y', 'l', 'o',
+'a', 'd', '\022', '\035', '\n', '\004', 't', 'e', 'x', 't', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001',
+'H', '\000', 'R', '\004', 't', 'e', 'x', 't', '\022', '\030', '\n', '\006', 'b', 'i', 'n', 'a', 'r', 'y', '\030', '\002', ' ', '\001', '(', '\014', 'H',
+'\000', 'R', '\006', 'b', 'i', 'n', 'a', 'r', 'y', ':', ',', '\232', '\305', '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a',
+'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'P', 'a',
+'y', 'l', 'o', 'a', 'd', 'B', '\016', '\n', '\007', 'p', 'a', 'y', 'l', 'o', 'a', 'd', '\022', '\003', '\370', 'B', '\001', '\032', '\252', '\006', '\n',
+'\017', 'H', 't', 't', 'p', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '\022', '\037', '\n', '\004', 'h', 'o', 's', 't', '\030',
+'\001', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\004', 'h', 'o', 's', 't', '\022',
+'!', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\002',
+'\310', '\001', '\000', 'R', '\004', 'p', 'a', 't', 'h', '\022', '=', '\n', '\004', 's', 'e', 'n', 'd', '\030', '\003', ' ', '\001', '(', '\013', '2', ')',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a',
+'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'P', 'a', 'y', 'l', 'o', 'a', 'd', 'R', '\004', 's', 'e', 'n', 'd', '\022', 'C', '\n',
+'\007', 'r', 'e', 'c', 'e', 'i', 'v', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
+'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.',
+'P', 'a', 'y', 'l', 'o', 'a', 'd', 'R', '\007', 'r', 'e', 'c', 'e', 'i', 'v', 'e', '\022', 'g', '\n', '\026', 'r', 'e', 'q', 'u', 'e',
+'s', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\006', ' ', '\003', '(', '\013', '2', '\'',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a',
+'d', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020', '\350', '\007',
+'R', '\023', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', '\022', 'K', '\n', '\031',
+'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'r', 'e', 'm', 'o', 'v', 'e',
+'\030', '\010', ' ', '\003', '(', '\t', 'B', '\020', '\372', 'B', '\r', '\222', '\001', '\n', '\"', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'R',
+'\026', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', 'v', 'e', '\022', 'F',
+'\n', '\021', 'e', 'x', 'p', 'e', 'c', 't', 'e', 'd', '_', 's', 't', 'a', 't', 'u', 's', 'e', 's', '\030', '\t', ' ', '\003', '(', '\013',
'2', '\031', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'I', 'n', 't', '6', '4', 'R', 'a', 'n',
-'g', 'e', 'R', '\021', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 't', 'a', 't', 'u', 's', 'e', 's', '\022', 'T', '\n', '\021',
-'c', 'o', 'd', 'e', 'c', '_', 'c', 'l', 'i', 'e', 'n', 't', '_', 't', 'y', 'p', 'e', '\030', '\n', ' ', '\001', '(', '\016', '2', '\036',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'C', 'o', 'd', 'e', 'c', 'C', 'l', 'i', 'e', 'n',
-'t', 'T', 'y', 'p', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\017', 'c', 'o', 'd', 'e', 'c', 'C', 'l', 'i',
-'e', 'n', 't', 'T', 'y', 'p', 'e', '\022', 'V', '\n', '\024', 's', 'e', 'r', 'v', 'i', 'c', 'e', '_', 'n', 'a', 'm', 'e', '_', 'm',
-'a', 't', 'c', 'h', 'e', 'r', '\030', '\013', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e',
-'.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r',
-'R', '\022', 's', 'e', 'r', 'v', 'i', 'c', 'e', 'N', 'a', 'm', 'e', 'M', 'a', 't', 'c', 'h', 'e', 'r', ':', '4', '\232', '\305', '\210',
-'\036', '/', '\n', '-', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a',
-'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'H', 't', 't', 'p', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'J',
-'\004', '\010', '\005', '\020', '\006', 'J', '\004', '\010', '\007', '\020', '\010', 'R', '\014', 's', 'e', 'r', 'v', 'i', 'c', 'e', '_', 'n', 'a', 'm', 'e',
-'R', '\t', 'u', 's', 'e', '_', 'h', 't', 't', 'p', '2', '\032', '\311', '\001', '\n', '\016', 'T', 'c', 'p', 'H', 'e', 'a', 'l', 't', 'h',
-'C', 'h', 'e', 'c', 'k', '\022', '=', '\n', '\004', 's', 'e', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C',
-'h', 'e', 'c', 'k', '.', 'P', 'a', 'y', 'l', 'o', 'a', 'd', 'R', '\004', 's', 'e', 'n', 'd', '\022', 'C', '\n', '\007', 'r', 'e', 'c',
-'e', 'i', 'v', 'e', '\030', '\002', ' ', '\003', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
-'.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'P', 'a', 'y', 'l',
-'o', 'a', 'd', 'R', '\007', 'r', 'e', 'c', 'e', 'i', 'v', 'e', ':', '3', '\232', '\305', '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', 'o',
-'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k',
-'.', 'T', 'c', 'p', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '\032', '[', '\n', '\020', 'R', 'e', 'd', 'i', 's', 'H',
-'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003',
-'k', 'e', 'y', ':', '5', '\232', '\305', '\210', '\036', '0', '\n', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.',
-'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'R', 'e', 'd', 'i', 's', 'H', 'e', 'a',
-'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '\032', '\225', '\001', '\n', '\017', 'G', 'r', 'p', 'c', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h',
-'e', 'c', 'k', '\022', '!', '\n', '\014', 's', 'e', 'r', 'v', 'i', 'c', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t',
-'R', '\013', 's', 'e', 'r', 'v', 'i', 'c', 'e', 'N', 'a', 'm', 'e', '\022', ')', '\n', '\t', 'a', 'u', 't', 'h', 'o', 'r', 'i', 't',
-'y', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\t', 'a', 'u', 't',
-'h', 'o', 'r', 'i', 't', 'y', ':', '4', '\232', '\305', '\210', '\036', '/', '\n', '-', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.',
-'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'G', 'r', 'p', 'c', 'H',
-'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '\032', '\300', '\001', '\n', '\021', 'C', 'u', 's', 't', 'o', 'm', 'H', 'e', 'a', 'l',
-'t', 'h', 'C', 'h', 'e', 'c', 'k', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B',
-'\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f',
-'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
-'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', ':', '6', '\232', '\305', '\210',
-'\036', '1', '\n', '/', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a',
-'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'C', 'u', 's', 't', 'o', 'm', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c',
-'k', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c',
-'o', 'n', 'f', 'i', 'g', '\032', 'd', '\n', '\n', 'T', 'l', 's', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '%', '\n', '\016', 'a', 'l',
-'p', 'n', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', '\030', '\001', ' ', '\003', '(', '\t', 'R', '\r', 'a', 'l', 'p', 'n', 'P',
-'r', 'o', 't', 'o', 'c', 'o', 'l', 's', ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p',
-'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'T', 'l', 's',
-'O', 'p', 't', 'i', 'o', 'n', 's', ':', '$', '\232', '\305', '\210', '\036', '\037', '\n', '\035', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i',
-'.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'B', '\025', '\n', '\016', 'h',
-'e', 'a', 'l', 't', 'h', '_', 'c', 'h', 'e', 'c', 'k', 'e', 'r', '\022', '\003', '\370', 'B', '\001', 'J', '\004', '\010', '\n', '\020', '\013', '*',
-'`', '\n', '\014', 'H', 'e', 'a', 'l', 't', 'h', 'S', 't', 'a', 't', 'u', 's', '\022', '\013', '\n', '\007', 'U', 'N', 'K', 'N', 'O', 'W',
-'N', '\020', '\000', '\022', '\013', '\n', '\007', 'H', 'E', 'A', 'L', 'T', 'H', 'Y', '\020', '\001', '\022', '\r', '\n', '\t', 'U', 'N', 'H', 'E', 'A',
-'L', 'T', 'H', 'Y', '\020', '\002', '\022', '\014', '\n', '\010', 'D', 'R', 'A', 'I', 'N', 'I', 'N', 'G', '\020', '\003', '\022', '\013', '\n', '\007', 'T',
-'I', 'M', 'E', 'O', 'U', 'T', '\020', '\004', '\022', '\014', '\n', '\010', 'D', 'E', 'G', 'R', 'A', 'D', 'E', 'D', '\020', '\005', 'B', '\204', '\001',
-'\n', '\"', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
-'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\020', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'P',
-'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p',
-'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v',
-'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', 'o', 'r', 'e', 'v', '3', '\272',
-'\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'g', 'e', 'R', '\020', 'e', 'x', 'p', 'e', 'c', 't', 'e', 'd', 'S', 't', 'a', 't', 'u', 's', 'e', 's', '\022', 'H', '\n', '\022', 'r',
+'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', '_', 's', 't', 'a', 't', 'u', 's', 'e', 's', '\030', '\014', ' ', '\003', '(', '\013', '2', '\031',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'I', 'n', 't', '6', '4', 'R', 'a', 'n', 'g', 'e',
+'R', '\021', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 't', 'a', 't', 'u', 's', 'e', 's', '\022', 'T', '\n', '\021', 'c', 'o',
+'d', 'e', 'c', '_', 'c', 'l', 'i', 'e', 'n', 't', '_', 't', 'y', 'p', 'e', '\030', '\n', ' ', '\001', '(', '\016', '2', '\036', '.', 'e',
+'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'C', 'o', 'd', 'e', 'c', 'C', 'l', 'i', 'e', 'n', 't', 'T',
+'y', 'p', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\017', 'c', 'o', 'd', 'e', 'c', 'C', 'l', 'i', 'e', 'n',
+'t', 'T', 'y', 'p', 'e', '\022', 'V', '\n', '\024', 's', 'e', 'r', 'v', 'i', 'c', 'e', '_', 'n', 'a', 'm', 'e', '_', 'm', 'a', 't',
+'c', 'h', 'e', 'r', '\030', '\013', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm',
+'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\022',
+'s', 'e', 'r', 'v', 'i', 'c', 'e', 'N', 'a', 'm', 'e', 'M', 'a', 't', 'c', 'h', 'e', 'r', ':', '4', '\232', '\305', '\210', '\036', '/',
+'\n', '-', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'l', 't',
+'h', 'C', 'h', 'e', 'c', 'k', '.', 'H', 't', 't', 'p', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'J', '\004', '\010',
+'\005', '\020', '\006', 'J', '\004', '\010', '\007', '\020', '\010', 'R', '\014', 's', 'e', 'r', 'v', 'i', 'c', 'e', '_', 'n', 'a', 'm', 'e', 'R', '\t',
+'u', 's', 'e', '_', 'h', 't', 't', 'p', '2', '\032', '\311', '\001', '\n', '\016', 'T', 'c', 'p', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h',
+'e', 'c', 'k', '\022', '=', '\n', '\004', 's', 'e', 'n', 'd', '\030', '\001', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y',
+'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e',
+'c', 'k', '.', 'P', 'a', 'y', 'l', 'o', 'a', 'd', 'R', '\004', 's', 'e', 'n', 'd', '\022', 'C', '\n', '\007', 'r', 'e', 'c', 'e', 'i',
+'v', 'e', '\030', '\002', ' ', '\003', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c',
+'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'P', 'a', 'y', 'l', 'o', 'a',
+'d', 'R', '\007', 'r', 'e', 'c', 'e', 'i', 'v', 'e', ':', '3', '\232', '\305', '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', 'o', 'y', '.',
+'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'T',
+'c', 'p', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '\032', '[', '\n', '\020', 'R', 'e', 'd', 'i', 's', 'H', 'e', 'a',
+'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e',
+'y', ':', '5', '\232', '\305', '\210', '\036', '0', '\n', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o',
+'r', 'e', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'R', 'e', 'd', 'i', 's', 'H', 'e', 'a', 'l', 't',
+'h', 'C', 'h', 'e', 'c', 'k', '\032', '\364', '\001', '\n', '\017', 'G', 'r', 'p', 'c', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c',
+'k', '\022', '!', '\n', '\014', 's', 'e', 'r', 'v', 'i', 'c', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013',
+'s', 'e', 'r', 'v', 'i', 'c', 'e', 'N', 'a', 'm', 'e', '\022', ')', '\n', '\t', 'a', 'u', 't', 'h', 'o', 'r', 'i', 't', 'y', '\030',
+'\002', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\t', 'a', 'u', 't', 'h', 'o',
+'r', 'i', 't', 'y', '\022', ']', '\n', '\020', 'i', 'n', 'i', 't', 'i', 'a', 'l', '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030',
+'\003', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e',
+'.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B',
+'\006', '\222', '\001', '\003', '\020', '\350', '\007', 'R', '\017', 'i', 'n', 'i', 't', 'i', 'a', 'l', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', ':',
+'4', '\232', '\305', '\210', '\036', '/', '\n', '-', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e',
+'.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'G', 'r', 'p', 'c', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h',
+'e', 'c', 'k', '\032', '\300', '\001', '\n', '\021', 'C', 'u', 's', 't', 'o', 'm', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k',
+'\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004',
+'n', 'a', 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(',
+'\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000',
+'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', ':', '6', '\232', '\305', '\210', '\036', '1', '\n', '/', 'e', 'n', 'v',
+'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c',
+'k', '.', 'C', 'u', 's', 't', 'o', 'm', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'B', '\r', '\n', '\013', 'c', 'o',
+'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\032', 'd',
+'\n', '\n', 'T', 'l', 's', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '%', '\n', '\016', 'a', 'l', 'p', 'n', '_', 'p', 'r', 'o', 't',
+'o', 'c', 'o', 'l', 's', '\030', '\001', ' ', '\003', '(', '\t', 'R', '\r', 'a', 'l', 'p', 'n', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l',
+'s', ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o',
+'r', 'e', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', '.', 'T', 'l', 's', 'O', 'p', 't', 'i', 'o', 'n', 's',
+':', '$', '\232', '\305', '\210', '\036', '\037', '\n', '\035', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r',
+'e', '.', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'B', '\025', '\n', '\016', 'h', 'e', 'a', 'l', 't', 'h', '_', 'c',
+'h', 'e', 'c', 'k', 'e', 'r', '\022', '\003', '\370', 'B', '\001', 'J', '\004', '\010', '\n', '\020', '\013', '*', '`', '\n', '\014', 'H', 'e', 'a', 'l',
+'t', 'h', 'S', 't', 'a', 't', 'u', 's', '\022', '\013', '\n', '\007', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\000', '\022', '\013', '\n', '\007',
+'H', 'E', 'A', 'L', 'T', 'H', 'Y', '\020', '\001', '\022', '\r', '\n', '\t', 'U', 'N', 'H', 'E', 'A', 'L', 'T', 'H', 'Y', '\020', '\002', '\022',
+'\014', '\n', '\010', 'D', 'R', 'A', 'I', 'N', 'I', 'N', 'G', '\020', '\003', '\022', '\013', '\n', '\007', 'T', 'I', 'M', 'E', 'O', 'U', 'T', '\020',
+'\004', '\022', '\014', '\n', '\010', 'D', 'E', 'G', 'R', 'A', 'D', 'E', 'D', '\020', '\005', 'B', '\204', '\001', '\n', '\"', 'i', 'o', '.', 'e', 'n',
+'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r',
+'e', '.', 'v', '3', 'B', '\020', 'H', 'e', 'a', 'l', 't', 'h', 'C', 'h', 'e', 'c', 'k', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z',
+'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o',
+'-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f',
+'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', 'o', 'r', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002',
+'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[13] = {
@@ -216,5 +224,5 @@ _upb_DefPool_Init envoy_config_core_v3_health_check_proto_upbdefinit = {
deps,
&envoy_config_core_v3_health_check_proto_upb_file_layout,
"envoy/config/core/v3/health_check.proto",
- UPB_STRINGVIEW_INIT(descriptor, 4290)
+ UPB_STRINGVIEW_INIT(descriptor, 4483)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h
index 9d6a6d21ba..1ddc0a52de 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h
@@ -21,6 +21,11 @@ extern "C" {
extern _upb_DefPool_Init envoy_config_core_v3_health_check_proto_upbdefinit;
+UPB_INLINE const upb_MessageDef *envoy_config_core_v3_HealthStatusSet_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_config_core_v3_health_check_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.config.core.v3.HealthStatusSet");
+}
+
UPB_INLINE const upb_MessageDef *envoy_config_core_v3_HealthCheck_getmsgdef(upb_DefPool *s) {
_upb_DefPool_LoadDefInit(s, &envoy_config_core_v3_health_check_proto_upbdefinit);
return upb_DefPool_FindMessageByName(s, "envoy.config.core.v3.HealthCheck");
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c
index 43374eaa34..fc15f87b88 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c
@@ -19,7 +19,7 @@ extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[6385] = {'\n', '#', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'p', 'r',
+static const char descriptor[6442] = {'\n', '#', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'p', 'r',
'o', 't', 'o', 'c', 'o', 'l', '.', 'p', 'r', 'o', 't', 'o', '\022', '\024', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '\032', '$', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c',
'o', 'r', 'e', '/', 'v', '3', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\033', 'e',
@@ -121,7 +121,7 @@ static const char descriptor[6385] = {'\n', '#', 'e', 'n', 'v', 'o', 'y', '/', '
'R', 'E', 'J', 'E', 'C', 'T', '_', 'R', 'E', 'Q', 'U', 'E', 'S', 'T', '\020', '\001', '\022', '\017', '\n', '\013', 'D', 'R', 'O', 'P', '_',
'H', 'E', 'A', 'D', 'E', 'R', '\020', '\002', ':', ',', '\232', '\305', '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p',
'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't',
-'i', 'o', 'n', 's', '\"', '\316', '\007', '\n', '\024', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't',
+'i', 'o', 'n', 's', '\"', '\207', '\010', '\n', '\024', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't',
'i', 'o', 'n', 's', '\022', 'H', '\n', '\022', 'a', 'l', 'l', 'o', 'w', '_', 'a', 'b', 's', 'o', 'l', 'u', 't', 'e', '_', 'u', 'r',
'l', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
'.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\020', 'a', 'l', 'l', 'o', 'w', 'A', 'b', 's', 'o', 'l', 'u', 't', 'e',
@@ -141,140 +141,142 @@ static const char descriptor[6385] = {'\n', '#', 'e', 'n', 'v', 'o', 'y', '/', '
'l', 'i', 'd', '_', 'h', 't', 't', 'p', '_', 'm', 'e', 's', 's', 'a', 'g', 'e', '\030', '\007', ' ', '\001', '(', '\013', '2', '\032', '.',
'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e',
'R', '\'', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'S', 't', 'r', 'e', 'a', 'm', 'E', 'r', 'r', 'o', 'r', 'O', 'n', 'I', 'n',
-'v', 'a', 'l', 'i', 'd', 'H', 't', 't', 'p', 'M', 'e', 's', 's', 'a', 'g', 'e', '\032', '\237', '\003', '\n', '\017', 'H', 'e', 'a', 'd',
-'e', 'r', 'K', 'e', 'y', 'F', 'o', 'r', 'm', 'a', 't', '\022', 'x', '\n', '\021', 'p', 'r', 'o', 'p', 'e', 'r', '_', 'c', 'a', 's',
-'e', '_', 'w', 'o', 'r', 'd', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', 'J', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
-'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l',
-'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'K', 'e', 'y', 'F', 'o', 'r', 'm', 'a', 't', '.', 'P',
-'r', 'o', 'p', 'e', 'r', 'C', 'a', 's', 'e', 'W', 'o', 'r', 'd', 's', 'H', '\000', 'R', '\017', 'p', 'r', 'o', 'p', 'e', 'r', 'C',
-'a', 's', 'e', 'W', 'o', 'r', 'd', 's', '\022', '[', '\n', '\022', 's', 't', 'a', 't', 'e', 'f', 'u', 'l', '_', 'f', 'o', 'r', 'm',
-'a', 't', 't', 'e', 'r', '\030', '\010', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C',
-'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\021', 's', 't', 'a', 't', 'e', 'f', 'u', 'l', 'F', 'o', 'r', 'm', 'a', 't', 't', 'e',
-'r', '\032', '`', '\n', '\017', 'P', 'r', 'o', 'p', 'e', 'r', 'C', 'a', 's', 'e', 'W', 'o', 'r', 'd', 's', ':', 'M', '\232', '\305', '\210',
-'\036', 'H', '\n', 'F', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 't', 't',
-'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'K',
-'e', 'y', 'F', 'o', 'r', 'm', 'a', 't', '.', 'P', 'r', 'o', 'p', 'e', 'r', 'C', 'a', 's', 'e', 'W', 'o', 'r', 'd', 's', ':',
-'=', '\232', '\305', '\210', '\036', '8', '\n', '6', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e',
-'.', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'H', 'e', 'a',
-'d', 'e', 'r', 'K', 'e', 'y', 'F', 'o', 'r', 'm', 'a', 't', 'B', '\024', '\n', '\r', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'f', 'o',
-'r', 'm', 'a', 't', '\022', '\003', '\370', 'B', '\001', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'a',
-'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O',
-'p', 't', 'i', 'o', 'n', 's', '\"', '\301', '\002', '\n', '\021', 'K', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', 'S', 'e', 't', 't', 'i',
-'n', 'g', 's', '\022', 'C', '\n', '\010', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'g',
-'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\014',
-'\372', 'B', '\t', '\252', '\001', '\006', '2', '\004', '\020', '\300', '\204', '=', 'R', '\010', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022', 'C', '\n',
-'\007', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
-'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\016', '\372', 'B', '\013', '\252', '\001', '\010', '\010',
-'\001', '2', '\004', '\020', '\300', '\204', '=', 'R', '\007', 't', 'i', 'm', 'e', 'o', 'u', 't', '\022', '?', '\n', '\017', 'i', 'n', 't', 'e', 'r',
-'v', 'a', 'l', '_', 'j', 'i', 't', 't', 'e', 'r', '\030', '\003', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', 'v', 'o', 'y', '.',
-'t', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\016', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l',
-'J', 'i', 't', 't', 'e', 'r', '\022', 'a', '\n', '\030', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'i', 'd', 'l', 'e',
-'_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\004', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.',
-'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\014', '\372', 'B', '\t', '\252', '\001', '\006',
-'2', '\004', '\020', '\300', '\204', '=', 'R', '\026', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'I', 'd', 'l', 'e', 'I', 'n', 't',
-'e', 'r', 'v', 'a', 'l', '\"', '\201', '\016', '\n', '\024', 'H', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p',
-'t', 'i', 'o', 'n', 's', '\022', 'F', '\n', '\020', 'h', 'p', 'a', 'c', 'k', '_', 't', 'a', 'b', 'l', 'e', '_', 's', 'i', 'z', 'e',
-'\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
-'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 'h', 'p', 'a', 'c', 'k', 'T', 'a', 'b', 'l', 'e', 'S', 'i',
-'z', 'e', '\022', 'a', '\n', '\026', 'm', 'a', 'x', '_', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 't', '_', 's', 't', 'r', 'e',
-'a', 'm', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b',
-'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\r', '\372', 'B', '\n', '*', '\010', '\030', '\377', '\377', '\377',
-'\377', '\007', '(', '\001', 'R', '\024', 'm', 'a', 'x', 'C', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n', 't', 'S', 't', 'r', 'e', 'a', 'm',
-'s', '\022', 'j', '\n', '\032', 'i', 'n', 'i', 't', 'i', 'a', 'l', '_', 's', 't', 'r', 'e', 'a', 'm', '_', 'w', 'i', 'n', 'd', 'o',
-'w', '_', 's', 'i', 'z', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o',
-'t', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\017', '\372', 'B', '\014', '*', '\n', '\030',
-'\377', '\377', '\377', '\377', '\007', '(', '\377', '\377', '\003', 'R', '\027', 'i', 'n', 'i', 't', 'i', 'a', 'l', 'S', 't', 'r', 'e', 'a', 'm', 'W',
-'i', 'n', 'd', 'o', 'w', 'S', 'i', 'z', 'e', '\022', 'r', '\n', '\036', 'i', 'n', 'i', 't', 'i', 'a', 'l', '_', 'c', 'o', 'n', 'n',
-'e', 'c', 't', 'i', 'o', 'n', '_', 'w', 'i', 'n', 'd', 'o', 'w', '_', 's', 'i', 'z', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2',
-'\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V',
-'a', 'l', 'u', 'e', 'B', '\017', '\372', 'B', '\014', '*', '\n', '\030', '\377', '\377', '\377', '\377', '\007', '(', '\377', '\377', '\003', 'R', '\033', 'i', 'n',
-'i', 't', 'i', 'a', 'l', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'W', 'i', 'n', 'd', 'o', 'w', 'S', 'i', 'z', 'e',
-'\022', '#', '\n', '\r', 'a', 'l', 'l', 'o', 'w', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\014',
-'a', 'l', 'l', 'o', 'w', 'C', 'o', 'n', 'n', 'e', 'c', 't', '\022', '%', '\n', '\016', 'a', 'l', 'l', 'o', 'w', '_', 'm', 'e', 't',
-'a', 'd', 'a', 't', 'a', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\r', 'a', 'l', 'l', 'o', 'w', 'M', 'e', 't', 'a', 'd', 'a', 't',
-'a', '\022', 'U', '\n', '\023', 'm', 'a', 'x', '_', 'o', 'u', 't', 'b', 'o', 'u', 'n', 'd', '_', 'f', 'r', 'a', 'm', 'e', 's', '\030',
-'\007', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U',
-'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', 'R', '\021', 'm', 'a', 'x', 'O',
-'u', 't', 'b', 'o', 'u', 'n', 'd', 'F', 'r', 'a', 'm', 'e', 's', '\022', 'd', '\n', '\033', 'm', 'a', 'x', '_', 'o', 'u', 't', 'b',
-'o', 'u', 'n', 'd', '_', 'c', 'o', 'n', 't', 'r', 'o', 'l', '_', 'f', 'r', 'a', 'm', 'e', 's', '\030', '\010', ' ', '\001', '(', '\013',
-'2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2',
-'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', 'R', '\030', 'm', 'a', 'x', 'O', 'u', 't', 'b', 'o', 'u',
-'n', 'd', 'C', 'o', 'n', 't', 'r', 'o', 'l', 'F', 'r', 'a', 'm', 'e', 's', '\022', '\204', '\001', '\n', '1', 'm', 'a', 'x', '_', 'c',
-'o', 'n', 's', 'e', 'c', 'u', 't', 'i', 'v', 'e', '_', 'i', 'n', 'b', 'o', 'u', 'n', 'd', '_', 'f', 'r', 'a', 'm', 'e', 's',
-'_', 'w', 'i', 't', 'h', '_', 'e', 'm', 'p', 't', 'y', '_', 'p', 'a', 'y', 'l', 'o', 'a', 'd', '\030', '\t', ' ', '\001', '(', '\013',
-'2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2',
-'V', 'a', 'l', 'u', 'e', 'R', '+', 'm', 'a', 'x', 'C', 'o', 'n', 's', 'e', 'c', 'u', 't', 'i', 'v', 'e', 'I', 'n', 'b', 'o',
-'u', 'n', 'd', 'F', 'r', 'a', 'm', 'e', 's', 'W', 'i', 't', 'h', 'E', 'm', 'p', 't', 'y', 'P', 'a', 'y', 'l', 'o', 'a', 'd',
-'\022', 'o', '\n', '&', 'm', 'a', 'x', '_', 'i', 'n', 'b', 'o', 'u', 'n', 'd', '_', 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '_',
-'f', 'r', 'a', 'm', 'e', 's', '_', 'p', 'e', 'r', '_', 's', 't', 'r', 'e', 'a', 'm', '\030', '\n', ' ', '\001', '(', '\013', '2', '\034',
-'.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a',
-'l', 'u', 'e', 'R', '!', 'm', 'a', 'x', 'I', 'n', 'b', 'o', 'u', 'n', 'd', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', 'F', 'r',
-'a', 'm', 'e', 's', 'P', 'e', 'r', 'S', 't', 'r', 'e', 'a', 'm', '\022', '\221', '\001', '\n', '4', 'm', 'a', 'x', '_', 'i', 'n', 'b',
-'o', 'u', 'n', 'd', '_', 'w', 'i', 'n', 'd', 'o', 'w', '_', 'u', 'p', 'd', 'a', 't', 'e', '_', 'f', 'r', 'a', 'm', 'e', 's',
-'_', 'p', 'e', 'r', '_', 'd', 'a', 't', 'a', '_', 'f', 'r', 'a', 'm', 'e', '_', 's', 'e', 'n', 't', '\030', '\013', ' ', '\001', '(',
-'\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3',
-'2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', 'R', ',', 'm', 'a', 'x', 'I', 'n', 'b', 'o', 'u',
-'n', 'd', 'W', 'i', 'n', 'd', 'o', 'w', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'r', 'a', 'm', 'e', 's', 'P', 'e', 'r', 'D', 'a',
-'t', 'a', 'F', 'r', 'a', 'm', 'e', 'S', 'e', 'n', 't', '\022', '^', '\n', '&', 's', 't', 'r', 'e', 'a', 'm', '_', 'e', 'r', 'r',
-'o', 'r', '_', 'o', 'n', '_', 'i', 'n', 'v', 'a', 'l', 'i', 'd', '_', 'h', 't', 't', 'p', '_', 'm', 'e', 's', 's', 'a', 'g',
-'i', 'n', 'g', '\030', '\014', ' ', '\001', '(', '\010', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '!', 's',
-'t', 'r', 'e', 'a', 'm', 'E', 'r', 'r', 'o', 'r', 'O', 'n', 'I', 'n', 'v', 'a', 'l', 'i', 'd', 'H', 't', 't', 'p', 'M', 'e',
-'s', 's', 'a', 'g', 'i', 'n', 'g', '\022', 'z', '\n', '-', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '_', 's', 't', 'r', 'e', 'a',
-'m', '_', 'e', 'r', 'r', 'o', 'r', '_', 'o', 'n', '_', 'i', 'n', 'v', 'a', 'l', 'i', 'd', '_', 'h', 't', 't', 'p', '_', 'm',
-'e', 's', 's', 'a', 'g', 'e', '\030', '\016', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o',
-'t', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\'', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e',
-'S', 't', 'r', 'e', 'a', 'm', 'E', 'r', 'r', 'o', 'r', 'O', 'n', 'I', 'n', 'v', 'a', 'l', 'i', 'd', 'H', 't', 't', 'p', 'M',
-'e', 's', 's', 'a', 'g', 'e', '\022', 'z', '\n', '\032', 'c', 'u', 's', 't', 'o', 'm', '_', 's', 'e', 't', 't', 'i', 'n', 'g', 's',
-'_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\030', '\r', ' ', '\003', '(', '\013', '2', '<', '.', 'e', 'n', 'v', 'o', 'y',
-'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '2', 'P', 'r', 'o', 't',
-'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', 'P', 'a', 'r', 'a', 'm',
-'e', 't', 'e', 'r', 'R', '\030', 'c', 'u', 's', 't', 'o', 'm', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', 'P', 'a', 'r', 'a', 'm',
-'e', 't', 'e', 'r', 's', '\022', 'Z', '\n', '\024', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'k', 'e', 'e', 'p', 'a',
-'l', 'i', 'v', 'e', '\030', '\017', ' ', '\001', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
-'.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'K', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', 'S', 'e', 't', 't', 'i', 'n', 'g',
-'s', 'R', '\023', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'K', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', '\032', '\345', '\001',
-'\n', '\021', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '\022', 'Q', '\n', '\n', 'i', 'd',
-'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
-'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\023', '\372', 'B', '\010', '*',
-'\006', '\030', '\377', '\377', '\003', '(', '\000', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\n', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i',
-'e', 'r', '\022', '<', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l',
-'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\010', '\372',
-'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '?', '\232', '\305', '\210', '\036', ':', '\n', '8', 'e', 'n',
-'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 't', 't', 'p', '2', 'P', 'r', 'o', 't',
-'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', 'P', 'a', 'r', 'a', 'm',
-'e', 't', 'e', 'r', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2',
-'.', 'c', 'o', 'r', 'e', '.', 'H', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n',
-'s', '\"', '\245', '\001', '\n', '\023', 'G', 'r', 'p', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's',
-'\022', '`', '\n', '\026', 'h', 't', 't', 'p', '2', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n',
-'s', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o',
-'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n',
-'s', 'R', '\024', 'h', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', ':', ',',
-'\232', '\305', '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.',
-'G', 'r', 'p', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\"', '\261', '\002', '\n', '\024', 'H',
-'t', 't', 'p', '3', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', ']', '\n', '\025', 'q', 'u',
-'i', 'c', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\001', ' ', '\001', '(', '\013',
-'2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'Q',
-'u', 'i', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\023', 'q', 'u', 'i', 'c', 'P',
-'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'z', '\n', '-', 'o', 'v', 'e', 'r', 'r', 'i', 'd',
+'v', 'a', 'l', 'i', 'd', 'H', 't', 't', 'p', 'M', 'e', 's', 's', 'a', 'g', 'e', '\022', '7', '\n', '\030', 's', 'e', 'n', 'd', '_',
+'f', 'u', 'l', 'l', 'y', '_', 'q', 'u', 'a', 'l', 'i', 'f', 'i', 'e', 'd', '_', 'u', 'r', 'l', '\030', '\010', ' ', '\001', '(', '\010',
+'R', '\025', 's', 'e', 'n', 'd', 'F', 'u', 'l', 'l', 'y', 'Q', 'u', 'a', 'l', 'i', 'f', 'i', 'e', 'd', 'U', 'r', 'l', '\032', '\237',
+'\003', '\n', '\017', 'H', 'e', 'a', 'd', 'e', 'r', 'K', 'e', 'y', 'F', 'o', 'r', 'm', 'a', 't', '\022', 'x', '\n', '\021', 'p', 'r', 'o',
+'p', 'e', 'r', '_', 'c', 'a', 's', 'e', '_', 'w', 'o', 'r', 'd', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', 'J', '.', 'e', 'n',
+'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '1', 'P',
+'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'K', 'e', 'y', 'F',
+'o', 'r', 'm', 'a', 't', '.', 'P', 'r', 'o', 'p', 'e', 'r', 'C', 'a', 's', 'e', 'W', 'o', 'r', 'd', 's', 'H', '\000', 'R', '\017',
+'p', 'r', 'o', 'p', 'e', 'r', 'C', 'a', 's', 'e', 'W', 'o', 'r', 'd', 's', '\022', '[', '\n', '\022', 's', 't', 'a', 't', 'e', 'f',
+'u', 'l', '_', 'f', 'o', 'r', 'm', 'a', 't', 't', 'e', 'r', '\030', '\010', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't',
+'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\021', 's', 't', 'a', 't', 'e', 'f', 'u', 'l', 'F',
+'o', 'r', 'm', 'a', 't', 't', 'e', 'r', '\032', '`', '\n', '\017', 'P', 'r', 'o', 'p', 'e', 'r', 'C', 'a', 's', 'e', 'W', 'o', 'r',
+'d', 's', ':', 'M', '\232', '\305', '\210', '\036', 'H', '\n', 'F', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c',
+'o', 'r', 'e', '.', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.',
+'H', 'e', 'a', 'd', 'e', 'r', 'K', 'e', 'y', 'F', 'o', 'r', 'm', 'a', 't', '.', 'P', 'r', 'o', 'p', 'e', 'r', 'C', 'a', 's',
+'e', 'W', 'o', 'r', 'd', 's', ':', '=', '\232', '\305', '\210', '\036', '8', '\n', '6', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.',
+'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i',
+'o', 'n', 's', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'K', 'e', 'y', 'F', 'o', 'r', 'm', 'a', 't', 'B', '\024', '\n', '\r', 'h', 'e',
+'a', 'd', 'e', 'r', '_', 'f', 'o', 'r', 'm', 'a', 't', '\022', '\003', '\370', 'B', '\001', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&',
+'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 't', 't', 'p', '1', 'P', 'r',
+'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\"', '\301', '\002', '\n', '\021', 'K', 'e', 'e', 'p', 'a', 'l', 'i',
+'v', 'e', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', '\022', 'C', '\n', '\010', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\001', ' ',
+'\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r',
+'a', 't', 'i', 'o', 'n', 'B', '\014', '\372', 'B', '\t', '\252', '\001', '\006', '2', '\004', '\020', '\300', '\204', '=', 'R', '\010', 'i', 'n', 't', 'e',
+'r', 'v', 'a', 'l', '\022', 'C', '\n', '\007', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g',
+'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\016',
+'\372', 'B', '\013', '\252', '\001', '\010', '\010', '\001', '2', '\004', '\020', '\300', '\204', '=', 'R', '\007', 't', 'i', 'm', 'e', 'o', 'u', 't', '\022', '?',
+'\n', '\017', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '_', 'j', 'i', 't', 't', 'e', 'r', '\030', '\003', ' ', '\001', '(', '\013', '2', '\026',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\016', 'i',
+'n', 't', 'e', 'r', 'v', 'a', 'l', 'J', 'i', 't', 't', 'e', 'r', '\022', 'a', '\n', '\030', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i',
+'o', 'n', '_', 'i', 'd', 'l', 'e', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\004', ' ', '\001', '(', '\013', '2', '\031', '.',
+'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B',
+'\014', '\372', 'B', '\t', '\252', '\001', '\006', '2', '\004', '\020', '\300', '\204', '=', 'R', '\026', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n',
+'I', 'd', 'l', 'e', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\"', '\201', '\016', '\n', '\024', 'H', 't', 't', 'p', '2', 'P', 'r', 'o',
+'t', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'F', '\n', '\020', 'h', 'p', 'a', 'c', 'k', '_', 't', 'a', 'b',
+'l', 'e', '_', 's', 'i', 'z', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
+'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 'h', 'p', 'a', 'c', 'k',
+'T', 'a', 'b', 'l', 'e', 'S', 'i', 'z', 'e', '\022', 'a', '\n', '\026', 'm', 'a', 'x', '_', 'c', 'o', 'n', 'c', 'u', 'r', 'r', 'e',
+'n', 't', '_', 's', 't', 'r', 'e', 'a', 'm', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e',
+'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\r', '\372', 'B',
+'\n', '*', '\010', '\030', '\377', '\377', '\377', '\377', '\007', '(', '\001', 'R', '\024', 'm', 'a', 'x', 'C', 'o', 'n', 'c', 'u', 'r', 'r', 'e', 'n',
+'t', 'S', 't', 'r', 'e', 'a', 'm', 's', '\022', 'j', '\n', '\032', 'i', 'n', 'i', 't', 'i', 'a', 'l', '_', 's', 't', 'r', 'e', 'a',
+'m', '_', 'w', 'i', 'n', 'd', 'o', 'w', '_', 's', 'i', 'z', 'e', '\030', '\003', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o',
+'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B',
+'\017', '\372', 'B', '\014', '*', '\n', '\030', '\377', '\377', '\377', '\377', '\007', '(', '\377', '\377', '\003', 'R', '\027', 'i', 'n', 'i', 't', 'i', 'a', 'l',
+'S', 't', 'r', 'e', 'a', 'm', 'W', 'i', 'n', 'd', 'o', 'w', 'S', 'i', 'z', 'e', '\022', 'r', '\n', '\036', 'i', 'n', 'i', 't', 'i',
+'a', 'l', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'w', 'i', 'n', 'd', 'o', 'w', '_', 's', 'i', 'z', 'e',
+'\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
+'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\017', '\372', 'B', '\014', '*', '\n', '\030', '\377', '\377', '\377', '\377', '\007', '(',
+'\377', '\377', '\003', 'R', '\033', 'i', 'n', 'i', 't', 'i', 'a', 'l', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'W', 'i', 'n',
+'d', 'o', 'w', 'S', 'i', 'z', 'e', '\022', '#', '\n', '\r', 'a', 'l', 'l', 'o', 'w', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', '\030',
+'\005', ' ', '\001', '(', '\010', 'R', '\014', 'a', 'l', 'l', 'o', 'w', 'C', 'o', 'n', 'n', 'e', 'c', 't', '\022', '%', '\n', '\016', 'a', 'l',
+'l', 'o', 'w', '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\r', 'a', 'l', 'l', 'o', 'w',
+'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', 'U', '\n', '\023', 'm', 'a', 'x', '_', 'o', 'u', 't', 'b', 'o', 'u', 'n', 'd', '_',
+'f', 'r', 'a', 'm', 'e', 's', '\030', '\007', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o',
+'t', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(',
+'\001', 'R', '\021', 'm', 'a', 'x', 'O', 'u', 't', 'b', 'o', 'u', 'n', 'd', 'F', 'r', 'a', 'm', 'e', 's', '\022', 'd', '\n', '\033', 'm',
+'a', 'x', '_', 'o', 'u', 't', 'b', 'o', 'u', 'n', 'd', '_', 'c', 'o', 'n', 't', 'r', 'o', 'l', '_', 'f', 'r', 'a', 'm', 'e',
+'s', '\030', '\010', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
+'.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', 'R', '\030', 'm', 'a',
+'x', 'O', 'u', 't', 'b', 'o', 'u', 'n', 'd', 'C', 'o', 'n', 't', 'r', 'o', 'l', 'F', 'r', 'a', 'm', 'e', 's', '\022', '\204', '\001',
+'\n', '1', 'm', 'a', 'x', '_', 'c', 'o', 'n', 's', 'e', 'c', 'u', 't', 'i', 'v', 'e', '_', 'i', 'n', 'b', 'o', 'u', 'n', 'd',
+'_', 'f', 'r', 'a', 'm', 'e', 's', '_', 'w', 'i', 't', 'h', '_', 'e', 'm', 'p', 't', 'y', '_', 'p', 'a', 'y', 'l', 'o', 'a',
+'d', '\030', '\t', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
+'.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '+', 'm', 'a', 'x', 'C', 'o', 'n', 's', 'e', 'c', 'u', 't',
+'i', 'v', 'e', 'I', 'n', 'b', 'o', 'u', 'n', 'd', 'F', 'r', 'a', 'm', 'e', 's', 'W', 'i', 't', 'h', 'E', 'm', 'p', 't', 'y',
+'P', 'a', 'y', 'l', 'o', 'a', 'd', '\022', 'o', '\n', '&', 'm', 'a', 'x', '_', 'i', 'n', 'b', 'o', 'u', 'n', 'd', '_', 'p', 'r',
+'i', 'o', 'r', 'i', 't', 'y', '_', 'f', 'r', 'a', 'm', 'e', 's', '_', 'p', 'e', 'r', '_', 's', 't', 'r', 'e', 'a', 'm', '\030',
+'\n', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U',
+'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '!', 'm', 'a', 'x', 'I', 'n', 'b', 'o', 'u', 'n', 'd', 'P', 'r', 'i',
+'o', 'r', 'i', 't', 'y', 'F', 'r', 'a', 'm', 'e', 's', 'P', 'e', 'r', 'S', 't', 'r', 'e', 'a', 'm', '\022', '\221', '\001', '\n', '4',
+'m', 'a', 'x', '_', 'i', 'n', 'b', 'o', 'u', 'n', 'd', '_', 'w', 'i', 'n', 'd', 'o', 'w', '_', 'u', 'p', 'd', 'a', 't', 'e',
+'_', 'f', 'r', 'a', 'm', 'e', 's', '_', 'p', 'e', 'r', '_', 'd', 'a', 't', 'a', '_', 'f', 'r', 'a', 'm', 'e', '_', 's', 'e',
+'n', 't', '\030', '\013', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
+'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', 'R', ',', 'm',
+'a', 'x', 'I', 'n', 'b', 'o', 'u', 'n', 'd', 'W', 'i', 'n', 'd', 'o', 'w', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'r', 'a', 'm',
+'e', 's', 'P', 'e', 'r', 'D', 'a', 't', 'a', 'F', 'r', 'a', 'm', 'e', 'S', 'e', 'n', 't', '\022', '^', '\n', '&', 's', 't', 'r',
+'e', 'a', 'm', '_', 'e', 'r', 'r', 'o', 'r', '_', 'o', 'n', '_', 'i', 'n', 'v', 'a', 'l', 'i', 'd', '_', 'h', 't', 't', 'p',
+'_', 'm', 'e', 's', 's', 'a', 'g', 'i', 'n', 'g', '\030', '\014', ' ', '\001', '(', '\010', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004',
+'\003', '3', '.', '0', 'R', '!', 's', 't', 'r', 'e', 'a', 'm', 'E', 'r', 'r', 'o', 'r', 'O', 'n', 'I', 'n', 'v', 'a', 'l', 'i',
+'d', 'H', 't', 't', 'p', 'M', 'e', 's', 's', 'a', 'g', 'i', 'n', 'g', '\022', 'z', '\n', '-', 'o', 'v', 'e', 'r', 'r', 'i', 'd',
'e', '_', 's', 't', 'r', 'e', 'a', 'm', '_', 'e', 'r', 'r', 'o', 'r', '_', 'o', 'n', '_', 'i', 'n', 'v', 'a', 'l', 'i', 'd',
-'_', 'h', 't', 't', 'p', '_', 'm', 'e', 's', 's', 'a', 'g', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o',
+'_', 'h', 't', 't', 'p', '_', 'm', 'e', 's', 's', 'a', 'g', 'e', '\030', '\016', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o',
'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\'', 'o',
'v', 'e', 'r', 'r', 'i', 'd', 'e', 'S', 't', 'r', 'e', 'a', 'm', 'E', 'r', 'r', 'o', 'r', 'O', 'n', 'I', 'n', 'v', 'a', 'l',
-'i', 'd', 'H', 't', 't', 'p', 'M', 'e', 's', 's', 'a', 'g', 'e', '\022', '>', '\n', '\026', 'a', 'l', 'l', 'o', 'w', '_', 'e', 'x',
-'t', 'e', 'n', 'd', 'e', 'd', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', '\030', '\005', ' ', '\001', '(', '\010', 'B', '\010', '\322', '\306', '\244',
-'\341', '\006', '\002', '\010', '\001', 'R', '\024', 'a', 'l', 'l', 'o', 'w', 'E', 'x', 't', 'e', 'n', 'd', 'e', 'd', 'C', 'o', 'n', 'n', 'e',
-'c', 't', '\"', 't', '\n', '\032', 'S', 'c', 'h', 'e', 'm', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o',
-'r', 'm', 'a', 't', 'i', 'o', 'n', '\022', 'D', '\n', '\023', 's', 'c', 'h', 'e', 'm', 'e', '_', 't', 'o', '_', 'o', 'v', 'e', 'r',
-'w', 'r', 'i', 't', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\022', '\372', 'B', '\017', 'r', '\r', 'R', '\004', 'h', 't', 't', 'p', 'R',
-'\005', 'h', 't', 't', 'p', 's', 'H', '\000', 'R', '\021', 's', 'c', 'h', 'e', 'm', 'e', 'T', 'o', 'O', 'v', 'e', 'r', 'w', 'r', 'i',
-'t', 'e', 'B', '\020', '\n', '\016', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', 'B', '\201', '\001', '\n', '\"',
-'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\r', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'P', 'r', 'o', 't', 'o', 'P',
-'\001', 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/',
-'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o',
-'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', 'o', 'r', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002',
-'\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'i', 'd', 'H', 't', 't', 'p', 'M', 'e', 's', 's', 'a', 'g', 'e', '\022', 'z', '\n', '\032', 'c', 'u', 's', 't', 'o', 'm', '_', 's',
+'e', 't', 't', 'i', 'n', 'g', 's', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\030', '\r', ' ', '\003', '(', '\013', '2',
+'<', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't',
+'t', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'S', 'e', 't', 't', 'i', 'n',
+'g', 's', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'R', '\030', 'c', 'u', 's', 't', 'o', 'm', 'S', 'e', 't', 't', 'i', 'n',
+'g', 's', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\022', 'Z', '\n', '\024', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o',
+'n', '_', 'k', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e', '\030', '\017', ' ', '\001', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y',
+'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'K', 'e', 'e', 'p', 'a', 'l', 'i', 'v', 'e',
+'S', 'e', 't', 't', 'i', 'n', 'g', 's', 'R', '\023', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'K', 'e', 'e', 'p', 'a',
+'l', 'i', 'v', 'e', '\032', '\345', '\001', '\n', '\021', 'S', 'e', 't', 't', 'i', 'n', 'g', 's', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e',
+'r', '\022', 'Q', '\n', '\n', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g',
+'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u',
+'e', 'B', '\023', '\372', 'B', '\010', '*', '\006', '\030', '\377', '\377', '\003', '(', '\000', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\n', 'i',
+'d', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', '\022', '<', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2',
+'\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V',
+'a', 'l', 'u', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '?', '\232', '\305',
+'\210', '\036', ':', '\n', '8', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 't',
+'t', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'S', 'e', 't', 't', 'i', 'n',
+'g', 's', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y',
+'.', 'a', 'p', 'i', '.', 'v', '2', '.', 'c', 'o', 'r', 'e', '.', 'H', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o',
+'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\"', '\245', '\001', '\n', '\023', 'G', 'r', 'p', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l',
+'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '`', '\n', '\026', 'h', 't', 't', 'p', '2', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l',
+'_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
+'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o',
+'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\024', 'h', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p',
+'t', 'i', 'o', 'n', 's', ':', ',', '\232', '\305', '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v',
+'2', '.', 'c', 'o', 'r', 'e', '.', 'G', 'r', 'p', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n',
+'s', '\"', '\261', '\002', '\n', '\024', 'H', 't', 't', 'p', '3', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n',
+'s', '\022', ']', '\n', '\025', 'q', 'u', 'i', 'c', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n',
+'s', '\030', '\001', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o',
+'r', 'e', '.', 'v', '3', '.', 'Q', 'u', 'i', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's',
+'R', '\023', 'q', 'u', 'i', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'z', '\n', '-',
+'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '_', 's', 't', 'r', 'e', 'a', 'm', '_', 'e', 'r', 'r', 'o', 'r', '_', 'o', 'n', '_',
+'i', 'n', 'v', 'a', 'l', 'i', 'd', '_', 'h', 't', 't', 'p', '_', 'm', 'e', 's', 's', 'a', 'g', 'e', '\030', '\002', ' ', '\001', '(',
+'\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V',
+'a', 'l', 'u', 'e', 'R', '\'', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'S', 't', 'r', 'e', 'a', 'm', 'E', 'r', 'r', 'o', 'r',
+'O', 'n', 'I', 'n', 'v', 'a', 'l', 'i', 'd', 'H', 't', 't', 'p', 'M', 'e', 's', 's', 'a', 'g', 'e', '\022', '>', '\n', '\026', 'a',
+'l', 'l', 'o', 'w', '_', 'e', 'x', 't', 'e', 'n', 'd', 'e', 'd', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', '\030', '\005', ' ', '\001',
+'(', '\010', 'B', '\010', '\322', '\306', '\244', '\341', '\006', '\002', '\010', '\001', 'R', '\024', 'a', 'l', 'l', 'o', 'w', 'E', 'x', 't', 'e', 'n', 'd',
+'e', 'd', 'C', 'o', 'n', 'n', 'e', 'c', 't', '\"', 't', '\n', '\032', 'S', 'c', 'h', 'e', 'm', 'e', 'H', 'e', 'a', 'd', 'e', 'r',
+'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\022', 'D', '\n', '\023', 's', 'c', 'h', 'e', 'm', 'e', '_',
+'t', 'o', '_', 'o', 'v', 'e', 'r', 'w', 'r', 'i', 't', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\022', '\372', 'B', '\017', 'r', '\r',
+'R', '\004', 'h', 't', 't', 'p', 'R', '\005', 'h', 't', 't', 'p', 's', 'H', '\000', 'R', '\021', 's', 'c', 'h', 'e', 'm', 'e', 'T', 'o',
+'O', 'v', 'e', 'r', 'w', 'r', 'i', 't', 'e', 'B', '\020', '\n', '\016', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i',
+'o', 'n', 'B', '\201', '\001', '\n', '\"', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\r', 'P', 'r', 'o', 't', 'o', 'c', 'o',
+'l', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o',
+'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e',
+'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', 'o', 'r', 'e', 'v',
+'3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[10] = {
@@ -294,5 +296,5 @@ _upb_DefPool_Init envoy_config_core_v3_protocol_proto_upbdefinit = {
deps,
&envoy_config_core_v3_protocol_proto_upb_file_layout,
"envoy/config/core/v3/protocol.proto",
- UPB_STRINGVIEW_INIT(descriptor, 6385)
+ UPB_STRINGVIEW_INIT(descriptor, 6442)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c
index 4b16bc0261..c8ecf4aa51 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c
@@ -16,7 +16,7 @@ extern _upb_DefPool_Init google_protobuf_struct_proto_upbdefinit;
extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[826] = {'\n', '5', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 's', 'u',
+static const char descriptor[839] = {'\n', '5', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 's', 'u',
'b', 's', 't', 'i', 't', 'u', 't', 'i', 'o', 'n', '_', 'f', 'o', 'r', 'm', 'a', 't', '_', 's', 't', 'r', 'i', 'n', 'g', '.',
'p', 'r', 'o', 't', 'o', '\022', '\024', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
'v', '3', '\032', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/',
@@ -26,7 +26,7 @@ static const char descriptor[826] = {'\n', '5', 'e', 'n', 'v', 'o', 'y', '/', 'c
'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'd', 'e',
'p', 'r', 'e', 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n',
'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a',
-'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\214', '\003', '\n',
+'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\231', '\003', '\n',
'\030', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'i', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'S', 't', 'r', 'i', 'n', 'g',
'\022', '.', '\n', '\013', 't', 'e', 'x', 't', '_', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\013', '\030', '\001',
'\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\n', 't', 'e', 'x', 't', 'F', 'o', 'r', 'm', 'a', 't', '\022', 'D',
@@ -37,19 +37,19 @@ static const char descriptor[826] = {'\n', '5', 'e', 'n', 'v', 'o', 'y', '/', 'c
'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S',
'o', 'u', 'r', 'c', 'e', 'H', '\000', 'R', '\020', 't', 'e', 'x', 't', 'F', 'o', 'r', 'm', 'a', 't', 'S', 'o', 'u', 'r', 'c', 'e',
'\022', '*', '\n', '\021', 'o', 'm', 'i', 't', '_', 'e', 'm', 'p', 't', 'y', '_', 'v', 'a', 'l', 'u', 'e', 's', '\030', '\003', ' ', '\001',
-'(', '\010', 'R', '\017', 'o', 'm', 'i', 't', 'E', 'm', 'p', 't', 'y', 'V', 'a', 'l', 'u', 'e', 's', '\022', '!', '\n', '\014', 'c', 'o',
-'n', 't', 'e', 'n', 't', '_', 't', 'y', 'p', 'e', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\013', 'c', 'o', 'n', 't', 'e', 'n', 't',
-'T', 'y', 'p', 'e', '\022', 'J', '\n', '\n', 'f', 'o', 'r', 'm', 'a', 't', 't', 'e', 'r', 's', '\030', '\006', ' ', '\003', '(', '\013', '2',
-'*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y',
-'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\n', 'f', 'o', 'r', 'm', 'a',
-'t', 't', 'e', 'r', 's', 'B', '\r', '\n', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\022', '\003', '\370', 'B', '\001', 'B', '\221', '\001', '\n', '\"',
-'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\035', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'i', 'o', 'n', 'F', 'o',
-'r', 'm', 'a', 't', 'S', 't', 'r', 'i', 'n', 'g', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b',
-'.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o',
-'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e',
-'/', 'v', '3', ';', 'c', 'o', 'r', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o',
-'3',
+'(', '\010', 'R', '\017', 'o', 'm', 'i', 't', 'E', 'm', 'p', 't', 'y', 'V', 'a', 'l', 'u', 'e', 's', '\022', '.', '\n', '\014', 'c', 'o',
+'n', 't', 'e', 'n', 't', '_', 't', 'y', 'p', 'e', '\030', '\004', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001',
+'\002', '\310', '\001', '\000', 'R', '\013', 'c', 'o', 'n', 't', 'e', 'n', 't', 'T', 'y', 'p', 'e', '\022', 'J', '\n', '\n', 'f', 'o', 'r', 'm',
+'a', 't', 't', 'e', 'r', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
+'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n',
+'C', 'o', 'n', 'f', 'i', 'g', 'R', '\n', 'f', 'o', 'r', 'm', 'a', 't', 't', 'e', 'r', 's', 'B', '\r', '\n', '\006', 'f', 'o', 'r',
+'m', 'a', 't', '\022', '\003', '\370', 'B', '\001', 'B', '\221', '\001', '\n', '\"', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x',
+'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', 'B', '\035', 'S',
+'u', 'b', 's', 't', 'i', 't', 'u', 't', 'i', 'o', 'n', 'F', 'o', 'r', 'm', 'a', 't', 'S', 't', 'r', 'i', 'n', 'g', 'P', 'r',
+'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r',
+'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o',
+'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', ';', 'c', 'o', 'r', 'e', 'v', '3', '\272', '\200',
+'\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[7] = {
@@ -66,5 +66,5 @@ _upb_DefPool_Init envoy_config_core_v3_substitution_format_string_proto_upbdefin
deps,
&envoy_config_core_v3_substitution_format_string_proto_upb_file_layout,
"envoy/config/core/v3/substitution_format_string.proto",
- UPB_STRINGVIEW_INIT(descriptor, 826)
+ UPB_STRINGVIEW_INIT(descriptor, 839)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c
index 306f8cd848..c127a071c2 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c
@@ -13,174 +13,197 @@
extern _upb_DefPool_Init envoy_config_accesslog_v3_accesslog_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_core_v3_address_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_core_v3_base_proto_upbdefinit;
+extern _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_core_v3_socket_option_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_listener_v3_api_listener_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_listener_v3_listener_components_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_listener_v3_udp_listener_config_proto_upbdefinit;
extern _upb_DefPool_Init google_protobuf_duration_proto_upbdefinit;
extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit;
+extern _upb_DefPool_Init xds_annotations_v3_status_proto_upbdefinit;
extern _upb_DefPool_Init xds_core_v3_collection_entry_proto_upbdefinit;
+extern _upb_DefPool_Init xds_type_matcher_v3_matcher_proto_upbdefinit;
extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_security_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[3552] = {'\n', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v',
+static const char descriptor[3997] = {'\n', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v',
'3', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'p', 'r', 'o', 't', 'o', '\022', '\030', 'e', 'n', 'v', 'o', 'y', '.', 'c',
'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '\032', ')', 'e', 'n', 'v', 'o', 'y', '/',
'c', 'o', 'n', 'f', 'i', 'g', '/', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '/', 'v', '3', '/', 'a', 'c', 'c', 'e', 's',
's', 'l', 'o', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\"', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/',
'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'a', 'd', 'd', 'r', 'e', 's', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'e', 'n',
'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.', 'p',
-'r', 'o', 't', 'o', '\032', '(', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v',
-'3', '/', 's', 'o', 'c', 'k', 'e', 't', '_', 'o', 'p', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '+', 'e', 'n',
-'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', '/', 'a', 'p',
-'i', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'p', 'r', 'o', 't', 'o', '\032', '2', 'e', 'n', 'v', 'o', 'y', '/', 'c',
-'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', '/', 'l', 'i', 's', 't', 'e', 'n', 'e',
-'r', '_', 'c', 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '2', 'e', 'n', 'v', 'o', 'y',
-'/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', '/', 'u', 'd', 'p', '_', 'l',
-'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o',
-'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o',
-'t', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', 'p',
-'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\"', 'x', 'd', 's', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'c', 'o',
-'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', '_', 'e', 'n', 't', 'r', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v',
-'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'i', 'o',
-'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's',
-'/', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n',
-'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd',
-'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g',
-'.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e',
-'.', 'p', 'r', 'o', 't', 'o', '\"', 'L', '\n', '\022', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'l', 'l', 'e', 'c', 't',
-'i', 'o', 'n', '\022', '6', '\n', '\007', 'e', 'n', 't', 'r', 'i', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\034', '.', 'x', 'd',
-'s', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', 'E', 'n', 't', 'r', 'y',
-'R', '\007', 'e', 'n', 't', 'r', 'i', 'e', 's', '\"', '\200', '\025', '\n', '\010', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '\022', '\022', '\n',
-'\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'A', '\n', '\007', 'a', 'd', 'd', 'r',
-'e', 's', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
-'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', 'e', 's', 's', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001',
-'R', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', '\022', '\037', '\n', '\013', 's', 't', 'a', 't', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030',
-'\034', ' ', '\001', '(', '\t', 'R', '\n', 's', 't', 'a', 't', 'P', 'r', 'e', 'f', 'i', 'x', '\022', 'J', '\n', '\r', 'f', 'i', 'l', 't',
-'e', 'r', '_', 'c', 'h', 'a', 'i', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
-'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'F', 'i', 'l', 't', 'e', 'r', 'C',
-'h', 'a', 'i', 'n', 'R', '\014', 'f', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 's', '\022', 'D', '\n', '\020', 'u', 's', 'e',
-'_', 'o', 'r', 'i', 'g', 'i', 'n', 'a', 'l', '_', 'd', 's', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o',
-'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 'u',
-'s', 'e', 'O', 'r', 'i', 'g', 'i', 'n', 'a', 'l', 'D', 's', 't', '\022', 'W', '\n', '\024', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_',
-'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'h', 'a', 'i', 'n', '\030', '\031', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'F', 'i', 'l', 't',
-'e', 'r', 'C', 'h', 'a', 'i', 'n', 'R', '\022', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a',
-'i', 'n', '\022', 'o', '\n', '!', 'p', 'e', 'r', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'b', 'u', 'f', 'f',
-'e', 'r', '_', 'l', 'i', 'm', 'i', 't', '_', 'b', 'y', 't', 'e', 's', '\030', '\005', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o',
-'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e',
-'B', '\007', '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\035', 'p', 'e', 'r', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B',
-'u', 'f', 'f', 'e', 'r', 'L', 'i', 'm', 'i', 't', 'B', 'y', 't', 'e', 's', '\022', ':', '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a',
-'t', 'a', '\030', '\006', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c',
-'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a',
-'\022', 'a', '\n', '\r', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '_', 'v', '1', '\030', '\007', ' ', '\001', '(', '\013', '2', '/',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3',
-'.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'D', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', 'V', '1', 'B', '\013', '\030',
-'\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\014', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', 'V', '1', '\022',
-'K', '\n', '\n', 'd', 'r', 'a', 'i', 'n', '_', 't', 'y', 'p', 'e', '\030', '\010', ' ', '\001', '(', '\016', '2', ',', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's',
-'t', 'e', 'n', 'e', 'r', '.', 'D', 'r', 'a', 'i', 'n', 'T', 'y', 'p', 'e', 'R', '\t', 'd', 'r', 'a', 'i', 'n', 'T', 'y', 'p',
-'e', '\022', 'S', '\n', '\020', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'f', 'i', 'l', 't', 'e', 'r', 's', '\030', '\t', ' ', '\003',
-'(', '\013', '2', '(', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e',
-'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'R', '\017', 'l', 'i', 's', 't',
-'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 's', '\022', 'S', '\n', '\030', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'f',
-'i', 'l', 't', 'e', 'r', 's', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\017', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o',
-'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\026', 'l',
-'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 's', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'N', '\n', '$',
-'c', 'o', 'n', 't', 'i', 'n', 'u', 'e', '_', 'o', 'n', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'f', 'i', 'l', 't',
-'e', 'r', 's', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\021', ' ', '\001', '(', '\010', 'R', ' ', 'c', 'o', 'n', 't', 'i', 'n',
-'u', 'e', 'O', 'n', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 's', 'T', 'i', 'm', 'e', 'o', 'u',
-'t', '\022', '<', '\n', '\013', 't', 'r', 'a', 'n', 's', 'p', 'a', 'r', 'e', 'n', 't', '\030', '\n', ' ', '\001', '(', '\013', '2', '\032', '.',
-'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e',
-'R', '\013', 't', 'r', 'a', 'n', 's', 'p', 'a', 'r', 'e', 'n', 't', '\022', '6', '\n', '\010', 'f', 'r', 'e', 'e', 'b', 'i', 'n', 'd',
-'\030', '\013', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
-'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\010', 'f', 'r', 'e', 'e', 'b', 'i', 'n', 'd', '\022', 'I', '\n', '\016', 's', 'o',
-'c', 'k', 'e', 't', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\r', ' ', '\003', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'S', 'o', 'c', 'k', 'e', 't', 'O', 'p',
-'t', 'i', 'o', 'n', 'R', '\r', 's', 'o', 'c', 'k', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'X', '\n', '\032', 't', 'c',
-'p', '_', 'f', 'a', 's', 't', '_', 'o', 'p', 'e', 'n', '_', 'q', 'u', 'e', 'u', 'e', '_', 'l', 'e', 'n', 'g', 't', 'h', '\030',
-'\014', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U',
-'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\026', 't', 'c', 'p', 'F', 'a', 's', 't', 'O', 'p', 'e', 'n', 'Q', 'u',
-'e', 'u', 'e', 'L', 'e', 'n', 'g', 't', 'h', '\022', 'S', '\n', '\021', 't', 'r', 'a', 'f', 'f', 'i', 'c', '_', 'd', 'i', 'r', 'e',
-'c', 't', 'i', 'o', 'n', '\030', '\020', ' ', '\001', '(', '\016', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'r', 'a', 'f', 'f', 'i', 'c', 'D', 'i', 'r', 'e', 'c', 't', 'i', 'o',
-'n', 'R', '\020', 't', 'r', 'a', 'f', 'f', 'i', 'c', 'D', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\022', '[', '\n', '\023', 'u', 'd',
-'p', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\022', ' ', '\001', '(', '\013', '2', '+',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3',
-'.', 'U', 'd', 'p', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\021', 'u', 'd', 'p', 'L', 'i',
-'s', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'H', '\n', '\014', 'a', 'p', 'i', '_', 'l', 'i', 's', 't', 'e',
-'n', 'e', 'r', '\030', '\023', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
-'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'A', 'p', 'i', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'R', '\013',
-'a', 'p', 'i', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '\022', 'v', '\n', '\031', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n',
-'_', 'b', 'a', 'l', 'a', 'n', 'c', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\024', ' ', '\001', '(', '\013', '2', ':', '.', 'e',
-'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L',
-'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e',
-'C', 'o', 'n', 'f', 'i', 'g', 'R', '\027', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e',
-'C', 'o', 'n', 'f', 'i', 'g', '\022', '*', '\n', '\n', 'r', 'e', 'u', 's', 'e', '_', 'p', 'o', 'r', 't', '\030', '\025', ' ', '\001', '(',
-'\010', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\t', 'r', 'e', 'u', 's', 'e', 'P', 'o', 'r', 't',
-'\022', 'F', '\n', '\021', 'e', 'n', 'a', 'b', 'l', 'e', '_', 'r', 'e', 'u', 's', 'e', '_', 'p', 'o', 'r', 't', '\030', '\035', ' ', '\001',
-'(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l',
-'V', 'a', 'l', 'u', 'e', 'R', '\017', 'e', 'n', 'a', 'b', 'l', 'e', 'R', 'e', 'u', 's', 'e', 'P', 'o', 'r', 't', '\022', 'C', '\n',
-'\n', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', 'o', 'g', '\030', '\026', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y',
-'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'A', 'c', 'c', 'e',
-'s', 's', 'L', 'o', 'g', 'R', '\t', 'a', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', '\022', 'F', '\n', '\020', 't', 'c', 'p', '_', 'b',
-'a', 'c', 'k', 'l', 'o', 'g', '_', 's', 'i', 'z', 'e', '\030', '\030', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l',
-'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 't',
-'c', 'p', 'B', 'a', 'c', 'k', 'l', 'o', 'g', 'S', 'i', 'z', 'e', '\022', '<', '\n', '\014', 'b', 'i', 'n', 'd', '_', 't', 'o', '_',
-'p', 'o', 'r', 't', '\030', '\032', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
-'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\n', 'b', 'i', 'n', 'd', 'T', 'o', 'P', 'o', 'r', 't',
-'\022', 'h', '\n', '\021', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '\030', '\033', ' ', '\001',
-'(', '\013', '2', '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e',
-'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'L', 'i', 's',
-'t', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\020', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'L', 'i',
-'s', 't', 'e', 'n', 'e', 'r', '\022', '!', '\n', '\014', 'e', 'n', 'a', 'b', 'l', 'e', '_', 'm', 'p', 't', 'c', 'p', '\030', '\036', ' ',
-'\001', '(', '\010', 'R', '\013', 'e', 'n', 'a', 'b', 'l', 'e', 'M', 'p', 't', 'c', 'p', '\022', '7', '\n', '\030', 'i', 'g', 'n', 'o', 'r',
-'e', '_', 'g', 'l', 'o', 'b', 'a', 'l', '_', 'c', 'o', 'n', 'n', '_', 'l', 'i', 'm', 'i', 't', '\030', '\037', ' ', '\001', '(', '\010',
-'R', '\025', 'i', 'g', 'n', 'o', 'r', 'e', 'G', 'l', 'o', 'b', 'a', 'l', 'C', 'o', 'n', 'n', 'L', 'i', 'm', 'i', 't', '\032', 'w',
-'\n', '\014', 'D', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', 'V', '1', '\022', '<', '\n', '\014', 'b', 'i', 'n', 'd', '_', 't', 'o',
-'_', 'p', 'o', 'r', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
-'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\n', 'b', 'i', 'n', 'd', 'T', 'o', 'P', 'o', 'r',
-'t', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'L', 'i',
-'s', 't', 'e', 'n', 'e', 'r', '.', 'D', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', 'V', '1', '\032', '\247', '\002', '\n', '\027', 'C',
-'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'n', '\n',
-'\r', 'e', 'x', 'a', 'c', 't', '_', 'b', 'a', 'l', 'a', 'n', 'c', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', 'G', '.', 'e', 'n',
-'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i',
-'s', 't', 'e', 'n', 'e', 'r', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'C',
-'o', 'n', 'f', 'i', 'g', '.', 'E', 'x', 'a', 'c', 't', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'H', '\000', 'R', '\014', 'e', 'x', 'a',
-'c', 't', 'B', 'a', 'l', 'a', 'n', 'c', 'e', '\032', 'Q', '\n', '\014', 'E', 'x', 'a', 'c', 't', 'B', 'a', 'l', 'a', 'n', 'c', 'e',
-':', 'A', '\232', '\305', '\210', '\036', '<', '\n', ':', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'L', 'i', 's',
-'t', 'e', 'n', 'e', 'r', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'C', 'o',
-'n', 'f', 'i', 'g', '.', 'E', 'x', 'a', 'c', 't', 'B', 'a', 'l', 'a', 'n', 'c', 'e', ':', '4', '\232', '\305', '\210', '\036', '/', '\n',
-'-', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'C', 'o',
-'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\023', '\n', '\014',
-'b', 'a', 'l', 'a', 'n', 'c', 'e', '_', 't', 'y', 'p', 'e', '\022', '\003', '\370', 'B', '\001', '\032', '\030', '\n', '\026', 'I', 'n', 't', 'e',
-'r', 'n', 'a', 'l', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\"', ')', '\n', '\t', 'D', 'r', 'a',
-'i', 'n', 'T', 'y', 'p', 'e', '\022', '\013', '\n', '\007', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\000', '\022', '\017', '\n', '\013', 'M', 'O',
-'D', 'I', 'F', 'Y', '_', 'O', 'N', 'L', 'Y', '\020', '\001', ':', '\034', '\232', '\305', '\210', '\036', '\027', '\n', '\025', 'e', 'n', 'v', 'o', 'y',
-'.', 'a', 'p', 'i', '.', 'v', '2', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'B', '\024', '\n', '\022', 'l', 'i', 's', 't', 'e',
-'n', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', '\016', '\020', '\017', 'J', '\004', '\010', '\027', '\020', '\030',
-'B', '\215', '\001', '\n', '&', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.',
-'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', 'B', '\r', 'L', 'i', 's', 't', 'e',
-'n', 'e', 'r', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'J', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n',
-'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e',
-'/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3',
-';', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't',
-'o', '3',
+'r', 'o', 't', 'o', '\032', '$', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v',
+'3', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '(', 'e', 'n', 'v', 'o', 'y', '/',
+'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 's', 'o', 'c', 'k', 'e', 't', '_', 'o', 'p', 't',
+'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '+', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l',
+'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', '/', 'a', 'p', 'i', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'p',
+'r', 'o', 't', 'o', '\032', '2', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n',
+'e', 'r', '/', 'v', '3', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'c', 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's',
+'.', 'p', 'r', 'o', 't', 'o', '\032', '2', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't',
+'e', 'n', 'e', 'r', '/', 'v', '3', '/', 'u', 'd', 'p', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'c', 'o', 'n', 'f',
+'i', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
+'/', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p',
+'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'x',
+'d', 's', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', '3', '/', 's', 't', 'a', 't', 'u', 's', '.',
+'p', 'r', 'o', 't', 'o', '\032', '\"', 'x', 'd', 's', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'c', 'o', 'l', 'l', 'e', 'c',
+'t', 'i', 'o', 'n', '_', 'e', 'n', 't', 'r', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'x', 'd', 's', '/', 't', 'y', 'p',
+'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'p', 'r', 'o', 't',
+'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'd', 'e', 'p', 'r',
+'e', 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't',
+'a', 't', 'i', 'o', 'n', 's', '/', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd',
+'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o',
+'t', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's',
+'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a',
+'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', 'L', '\n', '\021', 'A', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a',
+'l', 'A', 'd', 'd', 'r', 'e', 's', 's', '\022', '7', '\n', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', '\001', ' ', '\001', '(', '\013',
+'2', '\035', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A',
+'d', 'd', 'r', 'e', 's', 's', 'R', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', '\"', 'L', '\n', '\022', 'L', 'i', 's', 't', 'e', 'n',
+'e', 'r', 'C', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', '\022', '6', '\n', '\007', 'e', 'n', 't', 'r', 'i', 'e', 's', '\030', '\001',
+' ', '\003', '(', '\013', '2', '\034', '.', 'x', 'd', 's', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'l', 'l', 'e', 'c',
+'t', 'i', 'o', 'n', 'E', 'n', 't', 'r', 'y', 'R', '\007', 'e', 'n', 't', 'r', 'i', 'e', 's', '\"', '\205', '\027', '\n', '\010', 'L', 'i',
+'s', 't', 'e', 'n', 'e', 'r', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm',
+'e', '\022', '7', '\n', '\007', 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\035', '.', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'A', 'd', 'd', 'r', 'e', 's', 's', 'R',
+'\007', 'a', 'd', 'd', 'r', 'e', 's', 's', '\022', '^', '\n', '\024', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', '_', 'a', 'd',
+'d', 'r', 'e', 's', 's', 'e', 's', '\030', '!', ' ', '\003', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
+'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'A', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a',
+'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 'R', '\023', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e',
+'s', 's', 'e', 's', '\022', '\037', '\n', '\013', 's', 't', 'a', 't', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\034', ' ', '\001', '(', '\t',
+'R', '\n', 's', 't', 'a', 't', 'P', 'r', 'e', 'f', 'i', 'x', '\022', 'J', '\n', '\r', 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'h',
+'a', 'i', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'R',
+'\014', 'f', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 's', '\022', 'X', '\n', '\024', 'f', 'i', 'l', 't', 'e', 'r', '_', 'c',
+'h', 'a', 'i', 'n', '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', ' ', ' ', '\001', '(', '\013', '2', '\034', '.', 'x', 'd', 's', '.',
+'t', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010',
+'\322', '\306', '\244', '\341', '\006', '\002', '\010', '\001', 'R', '\022', 'f', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c',
+'h', 'e', 'r', '\022', 'D', '\n', '\020', 'u', 's', 'e', '_', 'o', 'r', 'i', 'g', 'i', 'n', 'a', 'l', '_', 'd', 's', 't', '\030', '\004',
+' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o',
+'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 'u', 's', 'e', 'O', 'r', 'i', 'g', 'i', 'n', 'a', 'l', 'D', 's', 't', '\022', 'W',
+'\n', '\024', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'h', 'a', 'i', 'n', '\030', '\031', ' ',
+'\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n',
+'e', 'r', '.', 'v', '3', '.', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'R', '\022', 'd', 'e', 'f', 'a', 'u', 'l',
+'t', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', '\022', 'o', '\n', '!', 'p', 'e', 'r', '_', 'c', 'o', 'n', 'n', 'e',
+'c', 't', 'i', 'o', 'n', '_', 'b', 'u', 'f', 'f', 'e', 'r', '_', 'l', 'i', 'm', 'i', 't', '_', 'b', 'y', 't', 'e', 's', '\030',
+'\005', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U',
+'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\035', 'p', 'e', 'r', 'C',
+'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'u', 'f', 'f', 'e', 'r', 'L', 'i', 'm', 'i', 't', 'B', 'y', 't', 'e', 's',
+'\022', ':', '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\006', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a',
+'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', 'a', '\n', '\r', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '_',
+'v', '1', '\030', '\007', ' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l',
+'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'D', 'e', 'p', 'r', 'e',
+'c', 'a', 't', 'e', 'd', 'V', '1', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\014', 'd', 'e', 'p',
+'r', 'e', 'c', 'a', 't', 'e', 'd', 'V', '1', '\022', 'K', '\n', '\n', 'd', 'r', 'a', 'i', 'n', '_', 't', 'y', 'p', 'e', '\030', '\010',
+' ', '\001', '(', '\016', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e',
+'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'D', 'r', 'a', 'i', 'n', 'T', 'y', 'p', 'e',
+'R', '\t', 'd', 'r', 'a', 'i', 'n', 'T', 'y', 'p', 'e', '\022', 'S', '\n', '\020', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'f',
+'i', 'l', 't', 'e', 'r', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '(', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
+'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i',
+'l', 't', 'e', 'r', 'R', '\017', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 's', '\022', 'S', '\n', '\030',
+'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'f', 'i', 'l', 't', 'e', 'r', 's', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030',
+'\017', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D',
+'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\026', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 's', 'T',
+'i', 'm', 'e', 'o', 'u', 't', '\022', 'N', '\n', '$', 'c', 'o', 'n', 't', 'i', 'n', 'u', 'e', '_', 'o', 'n', '_', 'l', 'i', 's',
+'t', 'e', 'n', 'e', 'r', '_', 'f', 'i', 'l', 't', 'e', 'r', 's', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\021', ' ', '\001',
+'(', '\010', 'R', ' ', 'c', 'o', 'n', 't', 'i', 'n', 'u', 'e', 'O', 'n', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l',
+'t', 'e', 'r', 's', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', '<', '\n', '\013', 't', 'r', 'a', 'n', 's', 'p', 'a', 'r', 'e', 'n',
+'t', '\030', '\n', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
+'.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\013', 't', 'r', 'a', 'n', 's', 'p', 'a', 'r', 'e', 'n', 't', '\022', '6',
+'\n', '\010', 'f', 'r', 'e', 'e', 'b', 'i', 'n', 'd', '\030', '\013', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e',
+'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\010', 'f', 'r', 'e', 'e',
+'b', 'i', 'n', 'd', '\022', 'I', '\n', '\016', 's', 'o', 'c', 'k', 'e', 't', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\r', ' ',
+'\003', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v',
+'3', '.', 'S', 'o', 'c', 'k', 'e', 't', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\r', 's', 'o', 'c', 'k', 'e', 't', 'O', 'p', 't',
+'i', 'o', 'n', 's', '\022', 'X', '\n', '\032', 't', 'c', 'p', '_', 'f', 'a', 's', 't', '_', 'o', 'p', 'e', 'n', '_', 'q', 'u', 'e',
+'u', 'e', '_', 'l', 'e', 'n', 'g', 't', 'h', '\030', '\014', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.',
+'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\026', 't', 'c', 'p',
+'F', 'a', 's', 't', 'O', 'p', 'e', 'n', 'Q', 'u', 'e', 'u', 'e', 'L', 'e', 'n', 'g', 't', 'h', '\022', 'S', '\n', '\021', 't', 'r',
+'a', 'f', 'f', 'i', 'c', '_', 'd', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', '\030', '\020', ' ', '\001', '(', '\016', '2', '&', '.', 'e',
+'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'r', 'a', 'f', 'f',
+'i', 'c', 'D', 'i', 'r', 'e', 'c', 't', 'i', 'o', 'n', 'R', '\020', 't', 'r', 'a', 'f', 'f', 'i', 'c', 'D', 'i', 'r', 'e', 'c',
+'t', 'i', 'o', 'n', '\022', '[', '\n', '\023', 'u', 'd', 'p', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'c', 'o', 'n', 'f',
+'i', 'g', '\030', '\022', ' ', '\001', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l',
+'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'U', 'd', 'p', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n',
+'f', 'i', 'g', 'R', '\021', 'u', 'd', 'p', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'H', '\n',
+'\014', 'a', 'p', 'i', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '\030', '\023', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'A', 'p', 'i',
+'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'R', '\013', 'a', 'p', 'i', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '\022', 'v', '\n', '\031',
+'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'b', 'a', 'l', 'a', 'n', 'c', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g',
+'\030', '\024', ' ', '\001', '(', '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's',
+'t', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't',
+'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\027', 'c', 'o', 'n', 'n', 'e', 'c', 't',
+'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '*', '\n', '\n', 'r', 'e', 'u', 's', 'e',
+'_', 'p', 'o', 'r', 't', '\030', '\025', ' ', '\001', '(', '\010', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R',
+'\t', 'r', 'e', 'u', 's', 'e', 'P', 'o', 'r', 't', '\022', 'F', '\n', '\021', 'e', 'n', 'a', 'b', 'l', 'e', '_', 'r', 'e', 'u', 's',
+'e', '_', 'p', 'o', 'r', 't', '\030', '\035', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o',
+'t', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\017', 'e', 'n', 'a', 'b', 'l', 'e', 'R', 'e',
+'u', 's', 'e', 'P', 'o', 'r', 't', '\022', 'C', '\n', '\n', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', 'o', 'g', '\030', '\026', ' ', '\003',
+'(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l',
+'o', 'g', '.', 'v', '3', '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'R', '\t', 'a', 'c', 'c', 'e', 's', 's', 'L', 'o',
+'g', '\022', 'F', '\n', '\020', 't', 'c', 'p', '_', 'b', 'a', 'c', 'k', 'l', 'o', 'g', '_', 's', 'i', 'z', 'e', '\030', '\030', ' ', '\001',
+'(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't',
+'3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 't', 'c', 'p', 'B', 'a', 'c', 'k', 'l', 'o', 'g', 'S', 'i', 'z', 'e', '\022', '<',
+'\n', '\014', 'b', 'i', 'n', 'd', '_', 't', 'o', '_', 'p', 'o', 'r', 't', '\030', '\032', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o',
+'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\n',
+'b', 'i', 'n', 'd', 'T', 'o', 'P', 'o', 'r', 't', '\022', 'h', '\n', '\021', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', '_', 'l', 'i',
+'s', 't', 'e', 'n', 'e', 'r', '\030', '\033', ' ', '\001', '(', '\013', '2', '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
+'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'I',
+'n', 't', 'e', 'r', 'n', 'a', 'l', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\020',
+'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '\022', '!', '\n', '\014', 'e', 'n', 'a', 'b', 'l',
+'e', '_', 'm', 'p', 't', 'c', 'p', '\030', '\036', ' ', '\001', '(', '\010', 'R', '\013', 'e', 'n', 'a', 'b', 'l', 'e', 'M', 'p', 't', 'c',
+'p', '\022', '7', '\n', '\030', 'i', 'g', 'n', 'o', 'r', 'e', '_', 'g', 'l', 'o', 'b', 'a', 'l', '_', 'c', 'o', 'n', 'n', '_', 'l',
+'i', 'm', 'i', 't', '\030', '\037', ' ', '\001', '(', '\010', 'R', '\025', 'i', 'g', 'n', 'o', 'r', 'e', 'G', 'l', 'o', 'b', 'a', 'l', 'C',
+'o', 'n', 'n', 'L', 'i', 'm', 'i', 't', '\032', 'w', '\n', '\014', 'D', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', 'V', '1', '\022',
+'<', '\n', '\014', 'b', 'i', 'n', 'd', '_', 't', 'o', '_', 'p', 'o', 'r', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'g',
+'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R',
+'\n', 'b', 'i', 'n', 'd', 'T', 'o', 'P', 'o', 'r', 't', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y',
+'.', 'a', 'p', 'i', '.', 'v', '2', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'D', 'e', 'p', 'r', 'e', 'c', 'a', 't',
+'e', 'd', 'V', '1', '\032', '\374', '\002', '\n', '\027', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c',
+'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'n', '\n', '\r', 'e', 'x', 'a', 'c', 't', '_', 'b', 'a', 'l', 'a', 'n', 'c', 'e', '\030',
+'\001', ' ', '\001', '(', '\013', '2', 'G', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't',
+'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i',
+'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'E', 'x', 'a', 'c', 't', 'B', 'a', 'l', 'a',
+'n', 'c', 'e', 'H', '\000', 'R', '\014', 'e', 'x', 'a', 'c', 't', 'B', 'a', 'l', 'a', 'n', 'c', 'e', '\022', 'S', '\n', '\016', 'e', 'x',
+'t', 'e', 'n', 'd', '_', 'b', 'a', 'l', 'a', 'n', 'c', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't',
+'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\r', 'e', 'x', 't', 'e', 'n', 'd', 'B', 'a', 'l',
+'a', 'n', 'c', 'e', '\032', 'Q', '\n', '\014', 'E', 'x', 'a', 'c', 't', 'B', 'a', 'l', 'a', 'n', 'c', 'e', ':', 'A', '\232', '\305', '\210',
+'\036', '<', '\n', ':', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r',
+'.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '.',
+'E', 'x', 'a', 'c', 't', 'B', 'a', 'l', 'a', 'n', 'c', 'e', ':', '4', '\232', '\305', '\210', '\036', '/', '\n', '-', 'e', 'n', 'v', 'o',
+'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't',
+'i', 'o', 'n', 'B', 'a', 'l', 'a', 'n', 'c', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\023', '\n', '\014', 'b', 'a', 'l', 'a', 'n',
+'c', 'e', '_', 't', 'y', 'p', 'e', '\022', '\003', '\370', 'B', '\001', '\032', '\030', '\n', '\026', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'L',
+'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\"', ')', '\n', '\t', 'D', 'r', 'a', 'i', 'n', 'T', 'y', 'p',
+'e', '\022', '\013', '\n', '\007', 'D', 'E', 'F', 'A', 'U', 'L', 'T', '\020', '\000', '\022', '\017', '\n', '\013', 'M', 'O', 'D', 'I', 'F', 'Y', '_',
+'O', 'N', 'L', 'Y', '\020', '\001', ':', '\034', '\232', '\305', '\210', '\036', '\027', '\n', '\025', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.',
+'v', '2', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'B', '\024', '\n', '\022', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 's',
+'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', '\016', '\020', '\017', 'J', '\004', '\010', '\027', '\020', '\030', 'B', '\215', '\001', '\n', '&',
+'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
+'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', 'B', '\r', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'P', 'r',
+'o', 't', 'o', 'P', '\001', 'Z', 'J', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r',
+'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o',
+'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', ';', 'l', 'i', 's', 't',
+'e', 'n', 'e', 'r', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
-static _upb_DefPool_Init *deps[16] = {
+static _upb_DefPool_Init *deps[19] = {
&envoy_config_accesslog_v3_accesslog_proto_upbdefinit,
&envoy_config_core_v3_address_proto_upbdefinit,
&envoy_config_core_v3_base_proto_upbdefinit,
+ &envoy_config_core_v3_extension_proto_upbdefinit,
&envoy_config_core_v3_socket_option_proto_upbdefinit,
&envoy_config_listener_v3_api_listener_proto_upbdefinit,
&envoy_config_listener_v3_listener_components_proto_upbdefinit,
&envoy_config_listener_v3_udp_listener_config_proto_upbdefinit,
&google_protobuf_duration_proto_upbdefinit,
&google_protobuf_wrappers_proto_upbdefinit,
+ &xds_annotations_v3_status_proto_upbdefinit,
&xds_core_v3_collection_entry_proto_upbdefinit,
+ &xds_type_matcher_v3_matcher_proto_upbdefinit,
&envoy_annotations_deprecation_proto_upbdefinit,
&udpa_annotations_security_proto_upbdefinit,
&udpa_annotations_status_proto_upbdefinit,
@@ -193,5 +216,5 @@ _upb_DefPool_Init envoy_config_listener_v3_listener_proto_upbdefinit = {
deps,
&envoy_config_listener_v3_listener_proto_upb_file_layout,
"envoy/config/listener/v3/listener.proto",
- UPB_STRINGVIEW_INIT(descriptor, 3552)
+ UPB_STRINGVIEW_INIT(descriptor, 3997)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h
index 3ca9dedff9..4174b8e3ef 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h
@@ -21,6 +21,11 @@ extern "C" {
extern _upb_DefPool_Init envoy_config_listener_v3_listener_proto_upbdefinit;
+UPB_INLINE const upb_MessageDef *envoy_config_listener_v3_AdditionalAddress_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_config_listener_v3_listener_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.config.listener.v3.AdditionalAddress");
+}
+
UPB_INLINE const upb_MessageDef *envoy_config_listener_v3_ListenerCollection_getmsgdef(upb_DefPool *s) {
_upb_DefPool_LoadDefInit(s, &envoy_config_listener_v3_listener_proto_upbdefinit);
return upb_DefPool_FindMessageByName(s, "envoy.config.listener.v3.ListenerCollection");
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c
index 2a1f1c52e1..85bb66c712 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c
@@ -12,7 +12,7 @@
extern _upb_DefPool_Init envoy_config_core_v3_address_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_core_v3_base_proto_upbdefinit;
-extern _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit;
+extern _upb_DefPool_Init envoy_config_core_v3_config_source_proto_upbdefinit;
extern _upb_DefPool_Init envoy_type_v3_range_proto_upbdefinit;
extern _upb_DefPool_Init google_protobuf_any_proto_upbdefinit;
extern _upb_DefPool_Init google_protobuf_duration_proto_upbdefinit;
@@ -21,153 +21,156 @@ extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[3503] = {'\n', '2', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v',
+static const char descriptor[3597] = {'\n', '2', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v',
'3', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'c', 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', '.', 'p', 'r', 'o',
't', 'o', '\022', '\030', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r',
'.', 'v', '3', '\032', '\"', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3',
'/', 'a', 'd', 'd', 'r', 'e', 's', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n',
-'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '$', 'e',
-'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'e', 'x', 't', 'e', 'n',
-'s', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\031', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'v', '3',
-'/', 'r', 'a', 'n', 'g', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\031', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't',
-'o', 'b', 'u', 'f', '/', 'a', 'n', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r',
-'o', 't', 'o', 'b', 'u', 'f', '/', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o',
-'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r',
-'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'd', 'e',
-'p', 'r', 'e', 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n',
-'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd',
-'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g',
-'.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e',
-'.', 'p', 'r', 'o', 't', 'o', '\"', '\202', '\002', '\n', '\006', 'F', 'i', 'l', 't', 'e', 'r', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e',
-'\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\014',
-'t', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C',
-'o', 'n', 'f', 'i', 'g', '\022', 'X', '\n', '\020', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y',
-'\030', '\005', ' ', '\001', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r',
-'e', '.', 'v', '3', '.', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c',
-'e', 'H', '\000', 'R', '\017', 'c', 'o', 'n', 'f', 'i', 'g', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', ':', '#', '\232', '\305', '\210',
-'\036', '\036', '\n', '\034', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r',
-'.', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010',
-'\003', '\020', '\004', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\"', '\352', '\006', '\n', '\020', 'F', 'i', 'l',
-'t', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', '\022', 'T', '\n', '\020', 'd', 'e', 's', 't', 'i', 'n', 'a', 't',
-'i', 'o', 'n', '_', 'p', 'o', 'r', 't', '\030', '\010', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
-'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\013', '\372', 'B', '\010', '*',
-'\006', '\030', '\377', '\377', '\003', '(', '\001', 'R', '\017', 'd', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', 'P', 'o', 'r', 't', '\022',
-'D', '\n', '\r', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'r', 'a', 'n', 'g', 'e', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\037', '.',
-'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'i', 'd', 'r',
-'R', 'a', 'n', 'g', 'e', 'R', '\014', 'p', 'r', 'e', 'f', 'i', 'x', 'R', 'a', 'n', 'g', 'e', 's', '\022', '%', '\n', '\016', 'a', 'd',
-'d', 'r', 'e', 's', 's', '_', 's', 'u', 'f', 'f', 'i', 'x', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\r', 'a', 'd', 'd', 'r', 'e',
-'s', 's', 'S', 'u', 'f', 'f', 'i', 'x', '\022', ';', '\n', '\n', 's', 'u', 'f', 'f', 'i', 'x', '_', 'l', 'e', 'n', '\030', '\005', ' ',
-'\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n',
-'t', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\t', 's', 'u', 'f', 'f', 'i', 'x', 'L', 'e', 'n', '\022', '^', '\n', '\033', 'd', 'i',
-'r', 'e', 'c', 't', '_', 's', 'o', 'u', 'r', 'c', 'e', '_', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'r', 'a', 'n', 'g', 'e', 's',
-'\030', '\r', ' ', '\003', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r',
-'e', '.', 'v', '3', '.', 'C', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', 'R', '\030', 'd', 'i', 'r', 'e', 'c', 't', 'S', 'o', 'u',
-'r', 'c', 'e', 'P', 'r', 'e', 'f', 'i', 'x', 'R', 'a', 'n', 'g', 'e', 's', '\022', 'j', '\n', '\013', 's', 'o', 'u', 'r', 'c', 'e',
-'_', 't', 'y', 'p', 'e', '\030', '\014', ' ', '\001', '(', '\016', '2', '?', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n',
-'M', 'a', 't', 'c', 'h', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'S', 'o', 'u', 'r', 'c', 'e', 'T', 'y', 'p',
-'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\n', 's', 'o', 'u', 'r', 'c', 'e', 'T', 'y', 'p', 'e', '\022', 'Q',
-'\n', '\024', 's', 'o', 'u', 'r', 'c', 'e', '_', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'r', 'a', 'n', 'g', 'e', 's', '\030', '\006', ' ',
-'\003', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v',
-'3', '.', 'C', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', 'R', '\022', 's', 'o', 'u', 'r', 'c', 'e', 'P', 'r', 'e', 'f', 'i', 'x',
-'R', 'a', 'n', 'g', 'e', 's', '\022', '3', '\n', '\014', 's', 'o', 'u', 'r', 'c', 'e', '_', 'p', 'o', 'r', 't', 's', '\030', '\007', ' ',
-'\003', '(', '\r', 'B', '\020', '\372', 'B', '\r', '\222', '\001', '\n', '\"', '\010', '*', '\006', '\030', '\377', '\377', '\003', '(', '\001', 'R', '\013', 's', 'o',
-'u', 'r', 'c', 'e', 'P', 'o', 'r', 't', 's', '\022', '!', '\n', '\014', 's', 'e', 'r', 'v', 'e', 'r', '_', 'n', 'a', 'm', 'e', 's',
-'\030', '\013', ' ', '\003', '(', '\t', 'R', '\013', 's', 'e', 'r', 'v', 'e', 'r', 'N', 'a', 'm', 'e', 's', '\022', '-', '\n', '\022', 't', 'r',
-'a', 'n', 's', 'p', 'o', 'r', 't', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '\030', '\t', ' ', '\001', '(', '\t', 'R', '\021', 't',
-'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', '\022', '3', '\n', '\025', 'a', 'p', 'p', 'l', 'i',
-'c', 'a', 't', 'i', 'o', 'n', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', '\030', '\n', ' ', '\003', '(', '\t', 'R', '\024', 'a',
-'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', '\"', 'F', '\n', '\024', 'C', 'o',
-'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'S', 'o', 'u', 'r', 'c', 'e', 'T', 'y', 'p', 'e', '\022', '\007', '\n', '\003', 'A', 'N', 'Y',
-'\020', '\000', '\022', '\027', '\n', '\023', 'S', 'A', 'M', 'E', '_', 'I', 'P', '_', 'O', 'R', '_', 'L', 'O', 'O', 'P', 'B', 'A', 'C', 'K',
-'\020', '\001', '\022', '\014', '\n', '\010', 'E', 'X', 'T', 'E', 'R', 'N', 'A', 'L', '\020', '\002', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&',
-'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'F', 'i', 'l',
-'t', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', 'J', '\004', '\010', '\001', '\020', '\002', '\"', '\211', '\006', '\n', '\013', 'F',
-'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', '\022', 'X', '\n', '\022', 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'h', 'a', 'i',
-'n', '_', 'm', 'a', 't', 'c', 'h', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
-'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a',
-'i', 'n', 'M', 'a', 't', 'c', 'h', 'R', '\020', 'f', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h',
-'\022', ':', '\n', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y',
+'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '(', 'e',
+'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'c', 'o', 'n', 'f', 'i',
+'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\031', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p',
+'e', '/', 'v', '3', '/', 'r', 'a', 'n', 'g', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\031', 'g', 'o', 'o', 'g', 'l', 'e', '/',
+'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'a', 'n', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l',
+'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o',
+'\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r',
+'s', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n',
+'s', '/', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a',
+'/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o',
+'\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o',
+'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i',
+'d', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\202', '\002', '\n', '\006', 'F', 'i', 'l', 't', 'e', 'r', '\022', '\033', '\n', '\004',
+'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e',
+'\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', '\024', '.',
+'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y',
+'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'X', '\n', '\020', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'd', 'i', 's', 'c', 'o',
+'v', 'e', 'r', 'y', '\030', '\005', ' ', '\001', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'S',
+'o', 'u', 'r', 'c', 'e', 'H', '\000', 'R', '\017', 'c', 'o', 'n', 'f', 'i', 'g', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', ':',
+'#', '\232', '\305', '\210', '\036', '\036', '\n', '\034', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'l', 'i', 's', 't',
+'e', 'n', 'e', 'r', '.', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p',
+'e', 'J', '\004', '\010', '\003', '\020', '\004', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\"', '\352', '\006', '\n',
+'\020', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', '\022', 'T', '\n', '\020', 'd', 'e', 's', 't',
+'i', 'n', 'a', 't', 'i', 'o', 'n', '_', 'p', 'o', 'r', 't', '\030', '\010', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g',
+'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\013',
+'\372', 'B', '\010', '*', '\006', '\030', '\377', '\377', '\003', '(', '\001', 'R', '\017', 'd', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', 'P',
+'o', 'r', 't', '\022', 'D', '\n', '\r', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'r', 'a', 'n', 'g', 'e', 's', '\030', '\003', ' ', '\003', '(',
+'\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.',
+'C', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', 'R', '\014', 'p', 'r', 'e', 'f', 'i', 'x', 'R', 'a', 'n', 'g', 'e', 's', '\022', '%',
+'\n', '\016', 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 's', 'u', 'f', 'f', 'i', 'x', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\r', 'a',
+'d', 'd', 'r', 'e', 's', 's', 'S', 'u', 'f', 'f', 'i', 'x', '\022', ';', '\n', '\n', 's', 'u', 'f', 'f', 'i', 'x', '_', 'l', 'e',
+'n', '\030', '\005', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
+'.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\t', 's', 'u', 'f', 'f', 'i', 'x', 'L', 'e', 'n', '\022', '^',
+'\n', '\033', 'd', 'i', 'r', 'e', 'c', 't', '_', 's', 'o', 'u', 'r', 'c', 'e', '_', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'r', 'a',
+'n', 'g', 'e', 's', '\030', '\r', ' ', '\003', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', 'R', '\030', 'd', 'i', 'r', 'e', 'c',
+'t', 'S', 'o', 'u', 'r', 'c', 'e', 'P', 'r', 'e', 'f', 'i', 'x', 'R', 'a', 'n', 'g', 'e', 's', '\022', 'j', '\n', '\013', 's', 'o',
+'u', 'r', 'c', 'e', '_', 't', 'y', 'p', 'e', '\030', '\014', ' ', '\001', '(', '\016', '2', '?', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
+'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'F', 'i', 'l', 't', 'e', 'r', 'C',
+'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'S', 'o', 'u', 'r', 'c',
+'e', 'T', 'y', 'p', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\n', 's', 'o', 'u', 'r', 'c', 'e', 'T', 'y',
+'p', 'e', '\022', 'Q', '\n', '\024', 's', 'o', 'u', 'r', 'c', 'e', '_', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'r', 'a', 'n', 'g', 'e',
+'s', '\030', '\006', ' ', '\003', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o',
+'r', 'e', '.', 'v', '3', '.', 'C', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', 'R', '\022', 's', 'o', 'u', 'r', 'c', 'e', 'P', 'r',
+'e', 'f', 'i', 'x', 'R', 'a', 'n', 'g', 'e', 's', '\022', '3', '\n', '\014', 's', 'o', 'u', 'r', 'c', 'e', '_', 'p', 'o', 'r', 't',
+'s', '\030', '\007', ' ', '\003', '(', '\r', 'B', '\020', '\372', 'B', '\r', '\222', '\001', '\n', '\"', '\010', '*', '\006', '\030', '\377', '\377', '\003', '(', '\001',
+'R', '\013', 's', 'o', 'u', 'r', 'c', 'e', 'P', 'o', 'r', 't', 's', '\022', '!', '\n', '\014', 's', 'e', 'r', 'v', 'e', 'r', '_', 'n',
+'a', 'm', 'e', 's', '\030', '\013', ' ', '\003', '(', '\t', 'R', '\013', 's', 'e', 'r', 'v', 'e', 'r', 'N', 'a', 'm', 'e', 's', '\022', '-',
+'\n', '\022', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '\030', '\t', ' ', '\001', '(',
+'\t', 'R', '\021', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', '\022', '3', '\n', '\025', 'a',
+'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', '\030', '\n', ' ', '\003', '(',
+'\t', 'R', '\024', 'a', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', '\"', 'F',
+'\n', '\024', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'S', 'o', 'u', 'r', 'c', 'e', 'T', 'y', 'p', 'e', '\022', '\007', '\n',
+'\003', 'A', 'N', 'Y', '\020', '\000', '\022', '\027', '\n', '\023', 'S', 'A', 'M', 'E', '_', 'I', 'P', '_', 'O', 'R', '_', 'L', 'O', 'O', 'P',
+'B', 'A', 'C', 'K', '\020', '\001', '\022', '\014', '\n', '\010', 'E', 'X', 'T', 'E', 'R', 'N', 'A', 'L', '\020', '\002', ':', '-', '\232', '\305', '\210',
+'\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r',
+'.', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', 'J', '\004', '\010', '\001', '\020', '\002', '\"', '\211',
+'\006', '\n', '\013', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', '\022', 'X', '\n', '\022', 'f', 'i', 'l', 't', 'e', 'r', '_',
+'c', 'h', 'a', 'i', 'n', '_', 'm', 'a', 't', 'c', 'h', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y',
'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'F', 'i', 'l', 't', 'e',
-'r', 'R', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', '\022', 'O', '\n', '\017', 'u', 's', 'e', '_', 'p', 'r', 'o', 'x', 'y', '_', 'p',
-'r', 'o', 't', 'o', '\030', '\004', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
-'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.',
-'0', 'R', '\r', 'u', 's', 'e', 'P', 'r', 'o', 'x', 'y', 'P', 'r', 'o', 't', 'o', '\022', ':', '\n', '\010', 'm', 'e', 't', 'a', 'd',
-'a', 't', 'a', '\030', '\005', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
-'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't',
-'a', '\022', 'P', '\n', '\020', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', '\030', '\006', ' ', '\001',
-'(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3',
-'.', 'T', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', 'R', '\017', 't', 'r', 'a', 'n', 's', 'p', 'o',
-'r', 't', 'S', 'o', 'c', 'k', 'e', 't', '\022', 'b', '\n', ' ', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c',
-'k', 'e', 't', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\t', ' ', '\001', '(', '\013',
-'2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i',
-'o', 'n', 'R', '\035', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', 'C', 'o', 'n', 'n', 'e', 'c',
-'t', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\007', ' ', '\001', '(', '\t', 'R', '\004', 'n',
-'a', 'm', 'e', '\022', 's', '\n', '\027', 'o', 'n', '_', 'd', 'e', 'm', 'a', 'n', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', 'u', 'r',
-'a', 't', 'i', 'o', 'n', '\030', '\010', ' ', '\001', '(', '\013', '2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n',
-'.', 'O', 'n', 'D', 'e', 'm', 'a', 'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\025', 'o',
-'n', 'D', 'e', 'm', 'a', 'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\032', '[', '\n', '\025', 'O',
-'n', 'D', 'e', 'm', 'a', 'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\022', 'B', '\n', '\017', 'r',
-'e', 'b', 'u', 'i', 'l', 'd', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o',
-'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\016', 'r',
-'e', 'b', 'u', 'i', 'l', 'd', 'T', 'i', 'm', 'e', 'o', 'u', 't', ':', '(', '\232', '\305', '\210', '\036', '#', '\n', '!', 'e', 'n', 'v',
-'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'F', 'i', 'l', 't', 'e', 'r',
-'C', 'h', 'a', 'i', 'n', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\013', 't', 'l', 's', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\"',
-'\302', '\005', '\n', '!', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a',
-'t', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', 'a', '\n', '\010', 'o', 'r', '_', 'm', 'a', 't', 'c', 'h', '\030',
-'\001', ' ', '\001', '(', '\013', '2', 'D', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't',
-'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a',
-'i', 'n', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'M', 'a', 't', 'c', 'h', 'S', 'e', 't',
-'H', '\000', 'R', '\007', 'o', 'r', 'M', 'a', 't', 'c', 'h', '\022', 'c', '\n', '\t', 'a', 'n', 'd', '_', 'm', 'a', 't', 'c', 'h', '\030',
-'\002', ' ', '\001', '(', '\013', '2', 'D', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't',
-'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a',
-'i', 'n', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'M', 'a', 't', 'c', 'h', 'S', 'e', 't',
-'H', '\000', 'R', '\010', 'a', 'n', 'd', 'M', 'a', 't', 'c', 'h', '\022', 'Z', '\n', '\t', 'n', 'o', 't', '_', 'm', 'a', 't', 'c', 'h',
-'\030', '\003', ' ', '\001', '(', '\013', '2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's',
-'t', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h',
-'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'H', '\000', 'R', '\010', 'n', 'o', 't', 'M',
-'a', 't', 'c', 'h', '\022', '&', '\n', '\t', 'a', 'n', 'y', '_', 'm', 'a', 't', 'c', 'h', '\030', '\004', ' ', '\001', '(', '\010', 'B', '\007',
-'\372', 'B', '\004', 'j', '\002', '\010', '\001', 'H', '\000', 'R', '\010', 'a', 'n', 'y', 'M', 'a', 't', 'c', 'h', '\022', 'Q', '\n', '\026', 'd', 'e',
-'s', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', '_', 'p', 'o', 'r', 't', '_', 'r', 'a', 'n', 'g', 'e', '\030', '\005', ' ', '\001', '(',
-'\013', '2', '\031', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'I', 'n', 't', '3', '2', 'R', 'a',
-'n', 'g', 'e', 'H', '\000', 'R', '\024', 'd', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', 'P', 'o', 'r', 't', 'R', 'a', 'n',
-'g', 'e', '\032', '\260', '\001', '\n', '\010', 'M', 'a', 't', 'c', 'h', 'S', 'e', 't', '\022', '[', '\n', '\005', 'r', 'u', 'l', 'e', 's', '\030',
-'\001', ' ', '\003', '(', '\013', '2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't',
-'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a',
-'i', 'n', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010',
-'\002', 'R', '\005', 'r', 'u', 'l', 'e', 's', ':', 'G', '\232', '\305', '\210', '\036', 'B', '\n', '@', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p',
-'i', '.', 'v', '2', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l',
-'t', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'M', 'a',
-'t', 'c', 'h', 'S', 'e', 't', ':', '>', '\232', '\305', '\210', '\036', '9', '\n', '7', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.',
-'v', '2', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e',
-'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'B', '\013', '\n', '\004', 'r',
-'u', 'l', 'e', '\022', '\003', '\370', 'B', '\001', '\"', '\230', '\002', '\n', '\016', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't',
-'e', 'r', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001',
-'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ',
-'\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y',
-'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'd', '\n', '\017', 'f', 'i', 'l', 't', 'e', 'r',
-'_', 'd', 'i', 's', 'a', 'b', 'l', 'e', 'd', '\030', '\004', ' ', '\001', '(', '\013', '2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
-'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e',
+'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', 'R', '\020', 'f', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'M',
+'a', 't', 'c', 'h', '\022', ':', '\n', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', ' ', '.', 'e',
+'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'F',
+'i', 'l', 't', 'e', 'r', 'R', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', '\022', 'O', '\n', '\017', 'u', 's', 'e', '_', 'p', 'r', 'o',
+'x', 'y', '_', 'p', 'r', 'o', 't', 'o', '\030', '\004', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
+'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330',
+'\004', '\003', '3', '.', '0', 'R', '\r', 'u', 's', 'e', 'P', 'r', 'o', 'x', 'y', 'P', 'r', 'o', 't', 'o', '\022', ':', '\n', '\010', 'm',
+'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\005', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
+'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'R', '\010', 'm', 'e', 't',
+'a', 'd', 'a', 't', 'a', '\022', 'P', '\n', '\020', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't',
+'\030', '\006', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r',
+'e', '.', 'v', '3', '.', 'T', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', 'R', '\017', 't', 'r', 'a',
+'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', '\022', 'b', '\n', ' ', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't',
+'_', 's', 'o', 'c', 'k', 'e', 't', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\t',
+' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u',
+'r', 'a', 't', 'i', 'o', 'n', 'R', '\035', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', 'S', 'o', 'c', 'k', 'e', 't', 'C', 'o',
+'n', 'n', 'e', 'c', 't', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\007', ' ', '\001', '(',
+'\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 's', '\n', '\027', 'o', 'n', '_', 'd', 'e', 'm', 'a', 'n', 'd', '_', 'c', 'o', 'n', 'f',
+'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\030', '\010', ' ', '\001', '(', '\013', '2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
+'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'F', 'i', 'l', 't', 'e', 'r', 'C',
+'h', 'a', 'i', 'n', '.', 'O', 'n', 'D', 'e', 'm', 'a', 'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o',
+'n', 'R', '\025', 'o', 'n', 'D', 'e', 'm', 'a', 'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\032',
+'[', '\n', '\025', 'O', 'n', 'D', 'e', 'm', 'a', 'n', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\022',
+'B', '\n', '\017', 'r', 'e', 'b', 'u', 'i', 'l', 'd', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\001', ' ', '\001', '(', '\013', '2',
+'\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o',
+'n', 'R', '\016', 'r', 'e', 'b', 'u', 'i', 'l', 'd', 'T', 'i', 'm', 'e', 'o', 'u', 't', ':', '(', '\232', '\305', '\210', '\036', '#', '\n',
+'!', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'F', 'i',
+'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\013', 't', 'l', 's', '_', 'c', 'o', 'n', 't',
+'e', 'x', 't', '\"', '\302', '\005', '\n', '!', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a',
+'i', 'n', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', 'a', '\n', '\010', 'o', 'r', '_', 'm', 'a',
+'t', 'c', 'h', '\030', '\001', ' ', '\001', '(', '\013', '2', 'D', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
+'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e',
+'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'M', 'a', 't', 'c',
+'h', 'S', 'e', 't', 'H', '\000', 'R', '\007', 'o', 'r', 'M', 'a', 't', 'c', 'h', '\022', 'c', '\n', '\t', 'a', 'n', 'd', '_', 'm', 'a',
+'t', 'c', 'h', '\030', '\002', ' ', '\001', '(', '\013', '2', 'D', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
+'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e',
+'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'M', 'a', 't', 'c',
+'h', 'S', 'e', 't', 'H', '\000', 'R', '\010', 'a', 'n', 'd', 'M', 'a', 't', 'c', 'h', '\022', 'Z', '\n', '\t', 'n', 'o', 't', '_', 'm',
+'a', 't', 'c', 'h', '\030', '\003', ' ', '\001', '(', '\013', '2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't',
+'e', 'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'H', '\000', 'R', '\010',
+'n', 'o', 't', 'M', 'a', 't', 'c', 'h', '\022', '&', '\n', '\t', 'a', 'n', 'y', '_', 'm', 'a', 't', 'c', 'h', '\030', '\004', ' ', '\001',
+'(', '\010', 'B', '\007', '\372', 'B', '\004', 'j', '\002', '\010', '\001', 'H', '\000', 'R', '\010', 'a', 'n', 'y', 'M', 'a', 't', 'c', 'h', '\022', 'Q',
+'\n', '\026', 'd', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', '_', 'p', 'o', 'r', 't', '_', 'r', 'a', 'n', 'g', 'e', '\030',
+'\005', ' ', '\001', '(', '\013', '2', '\031', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'I', 'n', 't',
+'3', '2', 'R', 'a', 'n', 'g', 'e', 'H', '\000', 'R', '\024', 'd', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', 'P', 'o', 'r',
+'t', 'R', 'a', 'n', 'g', 'e', '\032', '\260', '\001', '\n', '\010', 'M', 'a', 't', 'c', 'h', 'S', 'e', 't', '\022', '[', '\n', '\005', 'r', 'u',
+'l', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
+'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e',
+'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'B', '\010', '\372', 'B', '\005',
+'\222', '\001', '\002', '\010', '\002', 'R', '\005', 'r', 'u', 'l', 'e', 's', ':', 'G', '\232', '\305', '\210', '\036', 'B', '\n', '@', 'e', 'n', 'v', 'o',
+'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'L', 'i', 's', 't', 'e', 'n', 'e',
'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't',
-'e', 'R', '\016', 'f', 'i', 'l', 't', 'e', 'r', 'D', 'i', 's', 'a', 'b', 'l', 'e', 'd', ':', '+', '\232', '\305', '\210', '\036', '&', '\n',
-'$', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'L', 'i',
-'s', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y',
-'p', 'e', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', 'B', '\227', '\001', '\n', '&', 'i', 'o', '.', 'e',
-'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i',
-'s', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', 'B', '\027', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'm', 'p', 'o', 'n',
-'e', 'n', 't', 's', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'J', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e',
-'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n',
-'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v',
-'3', ';', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o',
-'t', 'o', '3',
+'e', '.', 'M', 'a', 't', 'c', 'h', 'S', 'e', 't', ':', '>', '\232', '\305', '\210', '\036', '9', '\n', '7', 'e', 'n', 'v', 'o', 'y', '.',
+'a', 'p', 'i', '.', 'v', '2', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F',
+'i', 'l', 't', 'e', 'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'B',
+'\013', '\n', '\004', 'r', 'u', 'l', 'e', '\022', '\003', '\370', 'B', '\001', '\"', '\362', '\002', '\n', '\016', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r',
+'F', 'i', 'l', 't', 'e', 'r', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004',
+'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i',
+'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
+'.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'X', '\n', '\020', 'c', 'o',
+'n', 'f', 'i', 'g', '_', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '\030', '\005', ' ', '\001', '(', '\013', '2', '+', '.', 'e', 'n',
+'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'E', 'x', 't', 'e', 'n', 's',
+'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'H', '\000', 'R', '\017', 'c', 'o', 'n', 'f', 'i', 'g',
+'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '\022', 'd', '\n', '\017', 'f', 'i', 'l', 't', 'e', 'r', '_', 'd', 'i', 's', 'a', 'b',
+'l', 'e', 'd', '\030', '\004', ' ', '\001', '(', '\013', '2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
+'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'F', 'i', 'l', 't', 'e',
+'r', 'C', 'h', 'a', 'i', 'n', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'R', '\016', 'f', 'i', 'l',
+'t', 'e', 'r', 'D', 'i', 's', 'a', 'b', 'l', 'e', 'd', ':', '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e', 'n', 'v', 'o', 'y',
+'.', 'a', 'p', 'i', '.', 'v', '2', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r',
+'F', 'i', 'l', 't', 'e', 'r', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\002',
+'\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', 'B', '\227', '\001', '\n', '&', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r',
+'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r',
+'.', 'v', '3', 'B', '\027', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', 'P', 'r',
+'o', 't', 'o', 'P', '\001', 'Z', 'J', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r',
+'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o',
+'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', ';', 'l', 'i', 's', 't',
+'e', 'n', 'e', 'r', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[12] = {
&envoy_config_core_v3_address_proto_upbdefinit,
&envoy_config_core_v3_base_proto_upbdefinit,
- &envoy_config_core_v3_extension_proto_upbdefinit,
+ &envoy_config_core_v3_config_source_proto_upbdefinit,
&envoy_type_v3_range_proto_upbdefinit,
&google_protobuf_any_proto_upbdefinit,
&google_protobuf_duration_proto_upbdefinit,
@@ -183,5 +186,5 @@ _upb_DefPool_Init envoy_config_listener_v3_listener_components_proto_upbdefinit
deps,
&envoy_config_listener_v3_listener_components_proto_upb_file_layout,
"envoy/config/listener/v3/listener_components.proto",
- UPB_STRINGVIEW_INIT(descriptor, 3503)
+ UPB_STRINGVIEW_INIT(descriptor, 3597)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c
index 8aa005268d..32b5682c31 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c
@@ -10,44 +10,52 @@
#include "envoy/config/listener/v3/udp_listener_config.upbdefs.h"
#include "envoy/config/listener/v3/udp_listener_config.upb.h"
+extern _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_core_v3_udp_socket_config_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_listener_v3_quic_config_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
-static const char descriptor[769] = {'\n', '2', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v',
+static const char descriptor[921] = {'\n', '2', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v',
'3', '/', 'u', 'd', 'p', '_', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'p', 'r', 'o',
't', 'o', '\022', '\030', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r',
-'.', 'v', '3', '\032', ',', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3',
-'/', 'u', 'd', 'p', '_', 's', 'o', 'c', 'k', 'e', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032',
-'*', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3',
-'/', 'q', 'u', 'i', 'c', '_', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/',
-'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032',
-'!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n',
-'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\"', '\234', '\002', '\n', '\021', 'U', 'd', 'p', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r',
-'C', 'o', 'n', 'f', 'i', 'g', '\022', '_', '\n', '\030', 'd', 'o', 'w', 'n', 's', 't', 'r', 'e', 'a', 'm', '_', 's', 'o', 'c', 'k',
-'e', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\005', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
-'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'U', 'd', 'p', 'S', 'o', 'c', 'k', 'e', 't', 'C', 'o',
-'n', 'f', 'i', 'g', 'R', '\026', 'd', 'o', 'w', 'n', 's', 't', 'r', 'e', 'a', 'm', 'S', 'o', 'c', 'k', 'e', 't', 'C', 'o', 'n',
-'f', 'i', 'g', '\022', 'P', '\n', '\014', 'q', 'u', 'i', 'c', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\007', ' ', '\001', '(', '\013',
-'2', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.',
-'v', '3', '.', 'Q', 'u', 'i', 'c', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\013', 'q',
-'u', 'i', 'c', 'O', 'p', 't', 'i', 'o', 'n', 's', ':', '.', '\232', '\305', '\210', '\036', ')', '\n', '\'', 'e', 'n', 'v', 'o', 'y', '.',
-'a', 'p', 'i', '.', 'v', '2', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'U', 'd', 'p', 'L', 'i', 's', 't', 'e', 'n',
-'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'J', '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', '\002', '\020', '\003', 'J', '\004', '\010', '\003', '\020',
-'\004', 'J', '\004', '\010', '\004', '\020', '\005', 'J', '\004', '\010', '\006', '\020', '\007', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\"', 'U', '\n', '\032',
-'A', 'c', 't', 'i', 'v', 'e', 'R', 'a', 'w', 'U', 'd', 'p', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i',
-'g', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'l', 'i',
-'s', 't', 'e', 'n', 'e', 'r', '.', 'A', 'c', 't', 'i', 'v', 'e', 'R', 'a', 'w', 'U', 'd', 'p', 'L', 'i', 's', 't', 'e', 'n',
-'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\226', '\001', '\n', '&', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x',
-'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v',
-'3', 'B', '\026', 'U', 'd', 'p', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'P', 'r', 'o', 't', 'o',
-'P', '\001', 'Z', 'J', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y',
-'/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c',
-'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', ';', 'l', 'i', 's', 't', 'e', 'n', 'e',
-'r', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'.', 'v', '3', '\032', '$', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3',
+'/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', ',', 'e', 'n', 'v', 'o', 'y', '/', 'c',
+'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'u', 'd', 'p', '_', 's', 'o', 'c', 'k', 'e', 't', '_',
+'c', 'o', 'n', 'f', 'i', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '*', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i',
+'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', '/', 'q', 'u', 'i', 'c', '_', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/',
+'s', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a',
+'t', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\"', '\216', '\003',
+'\n', '\021', 'U', 'd', 'p', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '_', '\n', '\030', 'd', 'o',
+'w', 'n', 's', 't', 'r', 'e', 'a', 'm', '_', 's', 'o', 'c', 'k', 'e', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\005', ' ',
+'\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v',
+'3', '.', 'U', 'd', 'p', 'S', 'o', 'c', 'k', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\026', 'd', 'o', 'w', 'n', 's', 't',
+'r', 'e', 'a', 'm', 'S', 'o', 'c', 'k', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'P', '\n', '\014', 'q', 'u', 'i', 'c', '_',
+'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\007', ' ', '\001', '(', '\013', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
+'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'v', '3', '.', 'Q', 'u', 'i', 'c', 'P', 'r', 'o', 't', 'o',
+'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\013', 'q', 'u', 'i', 'c', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'p',
+'\n', '\037', 'u', 'd', 'p', '_', 'p', 'a', 'c', 'k', 'e', 't', '_', 'p', 'a', 'c', 'k', 'e', 't', '_', 'w', 'r', 'i', 't', 'e',
+'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\010', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
+'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i',
+'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\033', 'u', 'd', 'p', 'P', 'a', 'c', 'k', 'e', 't', 'P', 'a', 'c', 'k', 'e', 't',
+'W', 'r', 'i', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', ':', '.', '\232', '\305', '\210', '\036', ')', '\n', '\'', 'e', 'n', 'v', 'o',
+'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'U', 'd', 'p', 'L', 'i', 's', 't',
+'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'J', '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', '\002', '\020', '\003', 'J', '\004', '\010',
+'\003', '\020', '\004', 'J', '\004', '\010', '\004', '\020', '\005', 'J', '\004', '\010', '\006', '\020', '\007', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\"', 'U',
+'\n', '\032', 'A', 'c', 't', 'i', 'v', 'e', 'R', 'a', 'w', 'U', 'd', 'p', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n',
+'f', 'i', 'g', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.',
+'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '.', 'A', 'c', 't', 'i', 'v', 'e', 'R', 'a', 'w', 'U', 'd', 'p', 'L', 'i', 's', 't',
+'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\226', '\001', '\n', '&', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r',
+'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r',
+'.', 'v', '3', 'B', '\026', 'U', 'd', 'p', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'P', 'r', 'o',
+'t', 'o', 'P', '\001', 'Z', 'J', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o',
+'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y',
+'/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '/', 'v', '3', ';', 'l', 'i', 's', 't', 'e',
+'n', 'e', 'r', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
-static _upb_DefPool_Init *deps[5] = {
+static _upb_DefPool_Init *deps[6] = {
+ &envoy_config_core_v3_extension_proto_upbdefinit,
&envoy_config_core_v3_udp_socket_config_proto_upbdefinit,
&envoy_config_listener_v3_quic_config_proto_upbdefinit,
&udpa_annotations_status_proto_upbdefinit,
@@ -59,5 +67,5 @@ _upb_DefPool_Init envoy_config_listener_v3_udp_listener_config_proto_upbdefinit
deps,
&envoy_config_listener_v3_udp_listener_config_proto_upb_file_layout,
"envoy/config/listener/v3/udp_listener_config.proto",
- UPB_STRINGVIEW_INIT(descriptor, 769)
+ UPB_STRINGVIEW_INIT(descriptor, 921)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c
index 32084af5b2..6b7d0bb814 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c
@@ -24,7 +24,7 @@ extern _upb_DefPool_Init udpa_annotations_migrate_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[3446] = {'\n', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'b', 'a', 'c', '/', 'v', '3', '/', 'r', 'b',
+static const char descriptor[3544] = {'\n', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'b', 'a', 'c', '/', 'v', '3', '/', 'r', 'b',
'a', 'c', '.', 'p', 'r', 'o', 't', 'o', '\022', '\024', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b',
'a', 'c', '.', 'v', '3', '\032', '\"', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/',
'v', '3', '/', 'a', 'd', 'd', 'r', 'e', 's', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '$', 'e', 'n', 'v', 'o', 'y', '/', 'c',
@@ -156,12 +156,16 @@ static const char descriptor[3446] = {'\n', '\037', 'e', 'n', 'v', 'o', 'y', '/'
'r', 'i', 'n', 'c', 'i', 'p', 'a', 'l', '.', 'A', 'u', 't', 'h', 'e', 'n', 't', 'i', 'c', 'a', 't', 'e', 'd', 'J', '\004', '\010',
'\001', '\020', '\002', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
'r', 'b', 'a', 'c', '.', 'v', '2', '.', 'P', 'r', 'i', 'n', 'c', 'i', 'p', 'a', 'l', 'B', '\021', '\n', '\n', 'i', 'd', 'e', 'n',
-'t', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', 'B', '}', '\n', '\"', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r',
-'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', 'B',
-'\t', 'R', 'b', 'a', 'c', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/',
-'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a',
-'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'b', 'a', 'c', '/', 'v', '3', ';', 'r',
-'b', 'a', 'c', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'t', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\"', '`', '\n', '\006', 'A', 'c', 't', 'i', 'o', 'n', '\022', '\033', '\n', '\004',
+'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e',
+'\022', '9', '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\016', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'R', 'B', 'A', 'C', '.', 'A', 'c', 't', 'i', 'o',
+'n', 'R', '\006', 'a', 'c', 't', 'i', 'o', 'n', 'B', '}', '\n', '\"', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x',
+'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', 'B', '\t', 'R',
+'b', 'a', 'c', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'B', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n',
+'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e',
+'/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'b', 'a', 'c', '/', 'v', '3', ';', 'r', 'b', 'a',
+'c', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[15] = {
@@ -186,5 +190,5 @@ _upb_DefPool_Init envoy_config_rbac_v3_rbac_proto_upbdefinit = {
deps,
&envoy_config_rbac_v3_rbac_proto_upb_file_layout,
"envoy/config/rbac/v3/rbac.proto",
- UPB_STRINGVIEW_INIT(descriptor, 3446)
+ UPB_STRINGVIEW_INIT(descriptor, 3544)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h
index 12c81ea6c4..53a846ebc8 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h
@@ -61,6 +61,11 @@ UPB_INLINE const upb_MessageDef *envoy_config_rbac_v3_Principal_Authenticated_ge
return upb_DefPool_FindMessageByName(s, "envoy.config.rbac.v3.Principal.Authenticated");
}
+UPB_INLINE const upb_MessageDef *envoy_config_rbac_v3_Action_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_config_rbac_v3_rbac_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.config.rbac.v3.Action");
+}
+
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c
index 79e27d1a0b..e4271b7edc 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c
@@ -12,87 +12,90 @@
extern _upb_DefPool_Init envoy_config_core_v3_base_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_core_v3_config_source_proto_upbdefinit;
-extern _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_route_v3_route_components_proto_upbdefinit;
extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[1705] = {'\n', '!', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't', 'e', '/', 'v', '3', '/', 'r',
+static const char descriptor[1828] = {'\n', '!', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't', 'e', '/', 'v', '3', '/', 'r',
'o', 'u', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\022', '\025', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
'r', 'o', 'u', 't', 'e', '.', 'v', '3', '\032', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o',
'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '(', 'e', 'n', 'v', 'o', 'y', '/', 'c',
'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r',
-'c', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '$', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o',
-'r', 'e', '/', 'v', '3', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', ',', 'e', 'n',
-'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't', 'e', '/', 'v', '3', '/', 'r', 'o', 'u', 't', 'e',
-'_', 'c', 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e',
-'/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032',
-'\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.',
-'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v',
-'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e',
-'/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\355', '\007', '\n', '\022', 'R', 'o', 'u', 't', 'e',
-'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001',
-'(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'G', '\n', '\r', 'v', 'i', 'r', 't', 'u', 'a', 'l', '_', 'h', 'o', 's', 't', 's',
-'\030', '\002', ' ', '\003', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u',
-'t', 'e', '.', 'v', '3', '.', 'V', 'i', 'r', 't', 'u', 'a', 'l', 'H', 'o', 's', 't', 'R', '\014', 'v', 'i', 'r', 't', 'u', 'a',
-'l', 'H', 'o', 's', 't', 's', '\022', '/', '\n', '\004', 'v', 'h', 'd', 's', '\030', '\t', ' ', '\001', '(', '\013', '2', '\033', '.', 'e', 'n',
-'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'V', 'h', 'd', 's', 'R',
-'\004', 'v', 'h', 'd', 's', '\022', 'D', '\n', '\025', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', '_', 'o', 'n', 'l', 'y', '_', 'h', 'e',
-'a', 'd', 'e', 'r', 's', '\030', '\003', ' ', '\003', '(', '\t', 'B', '\020', '\372', 'B', '\r', '\222', '\001', '\n', '\"', '\010', 'r', '\006', '\300', '\001',
-'\001', '\310', '\001', '\000', 'R', '\023', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'O', 'n', 'l', 'y', 'H', 'e', 'a', 'd', 'e', 'r', 's',
-'\022', 'i', '\n', '\027', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a',
-'d', 'd', '\030', '\004', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c',
-'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B',
-'\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020', '\350', '\007', 'R', '\024', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e',
-'r', 's', 'T', 'o', 'A', 'd', 'd', '\022', 'M', '\n', '\032', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e',
-'r', 's', '_', 't', 'o', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\005', ' ', '\003', '(', '\t', 'B', '\020', '\372', 'B', '\r', '\222', '\001',
-'\n', '\"', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\027', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd',
-'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', 'v', 'e', '\022', 'g', '\n', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e',
-'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\006', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a',
-'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020', '\350', '\007', 'R', '\023', 'r', 'e', 'q',
-'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', '\022', 'K', '\n', '\031', 'r', 'e', 'q', 'u', 'e',
-'s', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\010', ' ', '\003', '(',
-'\t', 'B', '\020', '\372', 'B', '\r', '\222', '\001', '\n', '\"', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\026', 'r', 'e', 'q', 'u',
-'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', 'v', 'e', '\022', 'L', '\n', '#', 'm', 'o', 's',
-'t', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'c', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'm', 'u', 't', 'a', 't', 'i', 'o',
-'n', 's', '_', 'w', 'i', 'n', 's', '\030', '\n', ' ', '\001', '(', '\010', 'R', '\037', 'm', 'o', 's', 't', 'S', 'p', 'e', 'c', 'i', 'f',
-'i', 'c', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'u', 't', 'a', 't', 'i', 'o', 'n', 's', 'W', 'i', 'n', 's', '\022', 'G', '\n', '\021',
-'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\030', '\007', ' ', '\001', '(', '\013', '2', '\032',
-'.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u',
-'e', 'R', '\020', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', '\022', 'i', '\n', '#', 'm', 'a',
-'x', '_', 'd', 'i', 'r', 'e', 'c', 't', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'b', 'o', 'd', 'y', '_', 's', 'i',
-'z', 'e', '_', 'b', 'y', 't', 'e', 's', '\030', '\013', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
-'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\036', 'm', 'a', 'x', 'D',
-'i', 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'B', 'o', 'd', 'y', 'S', 'i', 'z', 'e', 'B', 'y', 't', 'e',
-'s', '\022', 'i', '\n', '\031', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '_', 'p', 'l',
-'u', 'g', 'i', 'n', 's', '\030', '\014', ' ', '\003', '(', '\013', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', 'i',
-'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', 'R', '\027', 'c', 'l', 'u', 's', 't', 'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', 'i', 'e',
-'r', 'P', 'l', 'u', 'g', 'i', 'n', 's', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p',
-'i', '.', 'v', '2', '.', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\"', 'b',
-'\n', '\026', 'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', '\022',
-'H', '\n', '\t', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't',
-'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\t', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\"', 's',
-'\n', '\004', 'V', 'h', 'd', 's', '\022', 'Q', '\n', '\r', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '\030', '\001',
-' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
-'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001',
-'R', '\014', 'c', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', ':', '\030', '\232', '\305', '\210', '\036', '\023', '\n', '\021', 'e', 'n',
-'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'V', 'h', 'd', 's', 'B', '\201', '\001', '\n', '#', 'i', 'o', '.', 'e', 'n',
-'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u',
-'t', 'e', '.', 'v', '3', 'B', '\n', 'R', 'o', 'u', 't', 'e', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'D', 'g', 'i', 't', 'h',
-'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't',
-'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o',
-'u', 't', 'e', '/', 'v', '3', ';', 'r', 'o', 'u', 't', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p',
-'r', 'o', 't', 'o', '3',
+'c', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', ',', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o',
+'u', 't', 'e', '/', 'v', '3', '/', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', '.', 'p',
+'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a',
+'p', 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't',
+'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a',
+'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o',
+'t', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o',
+'t', 'o', '\"', '\362', '\t', '\n', '\022', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n',
+'\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'G', '\n', '\r', 'v',
+'i', 'r', 't', 'u', 'a', 'l', '_', 'h', 'o', 's', 't', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'V', 'i', 'r', 't', 'u', 'a', 'l',
+'H', 'o', 's', 't', 'R', '\014', 'v', 'i', 'r', 't', 'u', 'a', 'l', 'H', 'o', 's', 't', 's', '\022', '/', '\n', '\004', 'v', 'h', 'd',
+'s', '\030', '\t', ' ', '\001', '(', '\013', '2', '\033', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o',
+'u', 't', 'e', '.', 'v', '3', '.', 'V', 'h', 'd', 's', 'R', '\004', 'v', 'h', 'd', 's', '\022', 'D', '\n', '\025', 'i', 'n', 't', 'e',
+'r', 'n', 'a', 'l', '_', 'o', 'n', 'l', 'y', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\003', ' ', '\003', '(', '\t', 'B', '\020',
+'\372', 'B', '\r', '\222', '\001', '\n', '\"', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\023', 'i', 'n', 't', 'e', 'r', 'n', 'a',
+'l', 'O', 'n', 'l', 'y', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', 'i', '\n', '\027', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_',
+'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\004', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n',
+'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r',
+'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020', '\350', '\007', 'R', '\024', 'r',
+'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', '\022', 'M', '\n', '\032', 'r', 'e',
+'s', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\030',
+'\005', ' ', '\003', '(', '\t', 'B', '\020', '\372', 'B', '\r', '\222', '\001', '\n', '\"', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\027',
+'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', 'v', 'e', '\022', 'g',
+'\n', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030',
+'\006', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e',
+'.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B',
+'\006', '\222', '\001', '\003', '\020', '\350', '\007', 'R', '\023', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o',
+'A', 'd', 'd', '\022', 'K', '\n', '\031', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o',
+'_', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\010', ' ', '\003', '(', '\t', 'B', '\020', '\372', 'B', '\r', '\222', '\001', '\n', '\"', '\010', 'r', '\006',
+'\300', '\001', '\001', '\310', '\001', '\000', 'R', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R',
+'e', 'm', 'o', 'v', 'e', '\022', 'L', '\n', '#', 'm', 'o', 's', 't', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'c', '_', 'h', 'e',
+'a', 'd', 'e', 'r', '_', 'm', 'u', 't', 'a', 't', 'i', 'o', 'n', 's', '_', 'w', 'i', 'n', 's', '\030', '\n', ' ', '\001', '(', '\010',
+'R', '\037', 'm', 'o', 's', 't', 'S', 'p', 'e', 'c', 'i', 'f', 'i', 'c', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'u', 't', 'a', 't',
+'i', 'o', 'n', 's', 'W', 'i', 'n', 's', '\022', 'G', '\n', '\021', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '_', 'c', 'l', 'u', 's',
+'t', 'e', 'r', 's', '\030', '\007', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
+'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\020', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', 'C', 'l',
+'u', 's', 't', 'e', 'r', 's', '\022', 'i', '\n', '#', 'm', 'a', 'x', '_', 'd', 'i', 'r', 'e', 'c', 't', '_', 'r', 'e', 's', 'p',
+'o', 'n', 's', 'e', '_', 'b', 'o', 'd', 'y', '_', 's', 'i', 'z', 'e', '_', 'b', 'y', 't', 'e', 's', '\030', '\013', ' ', '\001', '(',
+'\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3',
+'2', 'V', 'a', 'l', 'u', 'e', 'R', '\036', 'm', 'a', 'x', 'D', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e',
+'B', 'o', 'd', 'y', 'S', 'i', 'z', 'e', 'B', 'y', 't', 'e', 's', '\022', 'i', '\n', '\031', 'c', 'l', 'u', 's', 't', 'e', 'r', '_',
+'s', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '_', 'p', 'l', 'u', 'g', 'i', 'n', 's', '\030', '\014', ' ', '\003', '(', '\013', '2', '-',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'C', 'l',
+'u', 's', 't', 'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', 'R', '\027', 'c', 'l', 'u',
+'s', 't', 'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', 's', '\022', 'n', '\n', '\027', 'r',
+'e', 'q', 'u', 'e', 's', 't', '_', 'm', 'i', 'r', 'r', 'o', 'r', '_', 'p', 'o', 'l', 'i', 'c', 'i', 'e', 's', '\030', '\r', ' ',
+'\003', '(', '\013', '2', '6', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.',
+'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'R', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r',
+'r', 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\025', 'r', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', 'r', 'P',
+'o', 'l', 'i', 'c', 'i', 'e', 's', '\022', '>', '\n', '\034', 'i', 'g', 'n', 'o', 'r', 'e', '_', 'p', 'o', 'r', 't', '_', 'i', 'n',
+'_', 'h', 'o', 's', 't', '_', 'm', 'a', 't', 'c', 'h', 'i', 'n', 'g', '\030', '\016', ' ', '\001', '(', '\010', 'R', '\030', 'i', 'g', 'n',
+'o', 'r', 'e', 'P', 'o', 'r', 't', 'I', 'n', 'H', 'o', 's', 't', 'M', 'a', 't', 'c', 'h', 'i', 'n', 'g', '\022', 'S', '\n', '\'',
+'i', 'g', 'n', 'o', 'r', 'e', '_', 'p', 'a', 't', 'h', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '_', 'i', 'n',
+'_', 'p', 'a', 't', 'h', '_', 'm', 'a', 't', 'c', 'h', 'i', 'n', 'g', '\030', '\017', ' ', '\001', '(', '\010', 'R', '\"', 'i', 'g', 'n',
+'o', 'r', 'e', 'P', 'a', 't', 'h', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', 'I', 'n', 'P', 'a', 't', 'h', 'M', 'a',
+'t', 'c', 'h', 'i', 'n', 'g', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.',
+'v', '2', '.', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\"', 's', '\n', '\004',
+'V', 'h', 'd', 's', '\022', 'Q', '\n', '\r', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '\030', '\001', ' ', '\001',
+'(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3',
+'.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\014',
+'c', 'o', 'n', 'f', 'i', 'g', 'S', 'o', 'u', 'r', 'c', 'e', ':', '\030', '\232', '\305', '\210', '\036', '\023', '\n', '\021', 'e', 'n', 'v', 'o',
+'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'V', 'h', 'd', 's', 'B', '\201', '\001', '\n', '#', 'i', 'o', '.', 'e', 'n', 'v', 'o',
+'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e',
+'.', 'v', '3', 'B', '\n', 'R', 'o', 'u', 't', 'e', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'D', 'g', 'i', 't', 'h', 'u', 'b',
+'.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o',
+'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't',
+'e', '/', 'v', '3', ';', 'r', 'o', 'u', 't', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o',
+'t', 'o', '3',
};
-static _upb_DefPool_Init *deps[9] = {
+static _upb_DefPool_Init *deps[8] = {
&envoy_config_core_v3_base_proto_upbdefinit,
&envoy_config_core_v3_config_source_proto_upbdefinit,
- &envoy_config_core_v3_extension_proto_upbdefinit,
&envoy_config_route_v3_route_components_proto_upbdefinit,
&google_protobuf_wrappers_proto_upbdefinit,
&udpa_annotations_status_proto_upbdefinit,
@@ -105,5 +108,5 @@ _upb_DefPool_Init envoy_config_route_v3_route_proto_upbdefinit = {
deps,
&envoy_config_route_v3_route_proto_upb_file_layout,
"envoy/config/route/v3/route.proto",
- UPB_STRINGVIEW_INIT(descriptor, 1705)
+ UPB_STRINGVIEW_INIT(descriptor, 1828)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h
index 7b5c39a6df..12879669e7 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h
@@ -26,11 +26,6 @@ UPB_INLINE const upb_MessageDef *envoy_config_route_v3_RouteConfiguration_getmsg
return upb_DefPool_FindMessageByName(s, "envoy.config.route.v3.RouteConfiguration");
}
-UPB_INLINE const upb_MessageDef *envoy_config_route_v3_ClusterSpecifierPlugin_getmsgdef(upb_DefPool *s) {
- _upb_DefPool_LoadDefInit(s, &envoy_config_route_v3_route_proto_upbdefinit);
- return upb_DefPool_FindMessageByName(s, "envoy.config.route.v3.ClusterSpecifierPlugin");
-}
-
UPB_INLINE const upb_MessageDef *envoy_config_route_v3_Vhds_getmsgdef(upb_DefPool *s) {
_upb_DefPool_LoadDefInit(s, &envoy_config_route_v3_route_proto_upbdefinit);
return upb_DefPool_FindMessageByName(s, "envoy.config.route.v3.Vhds");
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c
index ab441336fe..5758c4bcc1 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c
@@ -30,7 +30,7 @@ extern _upb_DefPool_Init udpa_annotations_migrate_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[20579] = {'\n', ',', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't', 'e', '/', 'v', '3', '/', 'r',
+static const char descriptor[21874] = {'\n', ',', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't', 'e', '/', 'v', '3', '/', 'r',
'o', 'u', 't', 'e', '_', 'c', 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', '.', 'p', 'r', 'o', 't', 'o', '\022', '\025', 'e', 'n',
'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '\032', '\037', 'e', 'n', 'v', 'o',
'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.', 'p', 'r', 'o',
@@ -59,7 +59,7 @@ static const char descriptor[20579] = {'\n', ',', 'e', 'n', 'v', 'o', 'y', '/',
'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's',
't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't',
'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a',
-'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\226', '\r', '\n',
+'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\206', '\016', '\n',
'\013', 'V', 'i', 'r', 't', 'u', 'a', 'l', 'H', 'o', 's', 't', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(',
'\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', ',', '\n', '\007', 'd', 'o', 'm', 'a', 'i',
'n', 's', '\030', '\002', ' ', '\003', '(', '\t', 'B', '\022', '\372', 'B', '\017', '\222', '\001', '\014', '\010', '\001', '\"', '\010', 'r', '\006', '\300', '\001', '\002',
@@ -118,742 +118,793 @@ static const char descriptor[20579] = {'\n', ',', 'e', 'n', 'v', 'o', 'y', '/',
's', 't', '_', 'b', 'u', 'f', 'f', 'e', 'r', '_', 'l', 'i', 'm', 'i', 't', '_', 'b', 'y', 't', 'e', 's', '\030', '\022', ' ', '\001',
'(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't',
'3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\032', 'p', 'e', 'r', 'R', 'e', 'q', 'u', 'e', 's', 't', 'B', 'u', 'f', 'f', 'e', 'r',
-'L', 'i', 'm', 'i', 't', 'B', 'y', 't', 'e', 's', '\032', ']', '\n', '\031', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l',
-'t', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001',
-'(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '*', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.',
-'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\005', 'v', 'a', 'l', 'u',
-'e', ':', '\002', '8', '\001', '\"', ':', '\n', '\022', 'T', 'l', 's', 'R', 'e', 'q', 'u', 'i', 'r', 'e', 'm', 'e', 'n', 't', 'T', 'y',
-'p', 'e', '\022', '\010', '\n', '\004', 'N', 'O', 'N', 'E', '\020', '\000', '\022', '\021', '\n', '\r', 'E', 'X', 'T', 'E', 'R', 'N', 'A', 'L', '_',
-'O', 'N', 'L', 'Y', '\020', '\001', '\022', '\007', '\n', '\003', 'A', 'L', 'L', '\020', '\002', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e',
-'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'V', 'i', 'r', 't', 'u', 'a', 'l',
-'H', 'o', 's', 't', 'J', '\004', '\010', '\t', '\020', '\n', 'J', '\004', '\010', '\014', '\020', '\r', 'R', '\021', 'p', 'e', 'r', '_', 'f', 'i', 'l',
-'t', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\"', 'd', '\n', '\014', 'F', 'i', 'l', 't', 'e', 'r', 'A', 'c', 't', 'i', 'o',
-'n', '\022', ',', '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l',
-'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\006', 'a', 'c', 't', 'i', 'o', 'n', ':', '&', '\232',
-'\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.',
-'F', 'i', 'l', 't', 'e', 'r', 'A', 'c', 't', 'i', 'o', 'n', '\"', '\216', '\013', '\n', '\005', 'R', 'o', 'u', 't', 'e', '\022', '\022', '\n',
-'\004', 'n', 'a', 'm', 'e', '\030', '\016', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'A', '\n', '\005', 'm', 'a', 't', 'c',
-'h', '\030', '\001', ' ', '\001', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o',
-'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002',
-'\020', '\001', 'R', '\005', 'm', 'a', 't', 'c', 'h', '\022', ':', '\n', '\005', 'r', 'o', 'u', 't', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2',
-'\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R',
-'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\005', 'r', 'o', 'u', 't', 'e', '\022', 'C', '\n', '\010', 'r', 'e',
-'d', 'i', 'r', 'e', 'c', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
-'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', 'o',
-'n', 'H', '\000', 'R', '\010', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\022', 'V', '\n', '\017', 'd', 'i', 'r', 'e', 'c', 't', '_', 'r',
-'e', 's', 'p', 'o', 'n', 's', 'e', '\030', '\007', ' ', '\001', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
-'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'D', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n',
-'s', 'e', 'A', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\016', 'd', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's',
-'e', '\022', 'J', '\n', '\r', 'f', 'i', 'l', 't', 'e', 'r', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\021', ' ', '\001', '(', '\013', '2',
-'#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'F',
-'i', 'l', 't', 'e', 'r', 'A', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\014', 'f', 'i', 'l', 't', 'e', 'r', 'A', 'c', 't', 'i',
-'o', 'n', '\022', '`', '\n', '\025', 'n', 'o', 'n', '_', 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'i', 'n', 'g', '_', 'a', 'c', 't', 'i',
-'o', 'n', '\030', '\022', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r',
-'o', 'u', 't', 'e', '.', 'v', '3', '.', 'N', 'o', 'n', 'F', 'o', 'r', 'w', 'a', 'r', 'd', 'i', 'n', 'g', 'A', 'c', 't', 'i',
-'o', 'n', 'H', '\000', 'R', '\023', 'n', 'o', 'n', 'F', 'o', 'r', 'w', 'a', 'r', 'd', 'i', 'n', 'g', 'A', 'c', 't', 'i', 'o', 'n',
-'\022', ':', '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\004', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a',
-'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', '>', '\n', '\t', 'd', 'e', 'c', 'o', 'r', 'a', 't', 'o', 'r', '\030', '\005',
-' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e',
-'.', 'v', '3', '.', 'D', 'e', 'c', 'o', 'r', 'a', 't', 'o', 'r', 'R', '\t', 'd', 'e', 'c', 'o', 'r', 'a', 't', 'o', 'r', '\022',
-'m', '\n', '\027', 't', 'y', 'p', 'e', 'd', '_', 'p', 'e', 'r', '_', 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i',
-'g', '\030', '\r', ' ', '\003', '(', '\013', '2', '6', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o',
-'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', '.', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', 't',
-'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', 't', 'r', 'y', 'R', '\024', 't', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i',
-'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'g', '\n', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a',
-'d', 'e', 'r', 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\t', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y',
-'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l',
-'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020', '\350', '\007', 'R', '\023', 'r', 'e', 'q', 'u',
-'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', '\022', 'M', '\n', '\031', 'r', 'e', 'q', 'u', 'e', 's',
-'t', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\014', ' ', '\003', '(', '\t',
-'B', '\022', '\372', 'B', '\017', '\222', '\001', '\014', '\"', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\026', 'r', 'e', 'q',
-'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', 'v', 'e', '\022', 'i', '\n', '\027', 'r', 'e',
-'s', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\n', ' ', '\003',
+'L', 'i', 'm', 'i', 't', 'B', 'y', 't', 'e', 's', '\022', 'n', '\n', '\027', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'm', 'i', 'r',
+'r', 'o', 'r', '_', 'p', 'o', 'l', 'i', 'c', 'i', 'e', 's', '\030', '\026', ' ', '\003', '(', '\013', '2', '6', '.', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c',
+'t', 'i', 'o', 'n', '.', 'R', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'y', 'R',
+'\025', 'r', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'i', 'e', 's', '\032', ']', '\n',
+'\031', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', 't', 'r',
+'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '*', '\n', '\005', 'v', 'a',
+'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b',
+'u', 'f', '.', 'A', 'n', 'y', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', '\"', ':', '\n', '\022', 'T', 'l', 's', 'R',
+'e', 'q', 'u', 'i', 'r', 'e', 'm', 'e', 'n', 't', 'T', 'y', 'p', 'e', '\022', '\010', '\n', '\004', 'N', 'O', 'N', 'E', '\020', '\000', '\022',
+'\021', '\n', '\r', 'E', 'X', 'T', 'E', 'R', 'N', 'A', 'L', '_', 'O', 'N', 'L', 'Y', '\020', '\001', '\022', '\007', '\n', '\003', 'A', 'L', 'L',
+'\020', '\002', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r',
+'o', 'u', 't', 'e', '.', 'V', 'i', 'r', 't', 'u', 'a', 'l', 'H', 'o', 's', 't', 'J', '\004', '\010', '\t', '\020', '\n', 'J', '\004', '\010',
+'\014', '\020', '\r', 'R', '\021', 'p', 'e', 'r', '_', 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\"', 'd', '\n',
+'\014', 'F', 'i', 'l', 't', 'e', 'r', 'A', 'c', 't', 'i', 'o', 'n', '\022', ',', '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\001',
+' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n',
+'y', 'R', '\006', 'a', 'c', 't', 'i', 'o', 'n', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', 'y', '.', 'a',
+'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'F', 'i', 'l', 't', 'e', 'r', 'A', 'c', 't', 'i', 'o', 'n', '\"',
+'\257', '\013', '\n', '\005', 'R', 'o', 'u', 't', 'e', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\016', ' ', '\001', '(', '\t', 'R', '\004',
+'n', 'a', 'm', 'e', '\022', 'A', '\n', '\005', 'm', 'a', 't', 'c', 'h', '\030', '\001', ' ', '\001', '(', '\013', '2', '!', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'M',
+'a', 't', 'c', 'h', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\005', 'm', 'a', 't', 'c', 'h', '\022', ':', '\n', '\005',
+'r', 'o', 'u', 't', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
+'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R',
+'\005', 'r', 'o', 'u', 't', 'e', '\022', 'C', '\n', '\010', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', '\003', ' ', '\001', '(', '\013', '2',
+'%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R',
+'e', 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\010', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't',
+'\022', 'V', '\n', '\017', 'd', 'i', 'r', 'e', 'c', 't', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '\030', '\007', ' ', '\001', '(', '\013',
+'2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.',
+'D', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'A', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\016', 'd',
+'i', 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', '\022', 'J', '\n', '\r', 'f', 'i', 'l', 't', 'e', 'r', '_', 'a',
+'c', 't', 'i', 'o', 'n', '\030', '\021', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
+'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'F', 'i', 'l', 't', 'e', 'r', 'A', 'c', 't', 'i', 'o', 'n', 'H', '\000',
+'R', '\014', 'f', 'i', 'l', 't', 'e', 'r', 'A', 'c', 't', 'i', 'o', 'n', '\022', '`', '\n', '\025', 'n', 'o', 'n', '_', 'f', 'o', 'r',
+'w', 'a', 'r', 'd', 'i', 'n', 'g', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\022', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n',
+'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'N', 'o', 'n', 'F', 'o',
+'r', 'w', 'a', 'r', 'd', 'i', 'n', 'g', 'A', 'c', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\023', 'n', 'o', 'n', 'F', 'o', 'r', 'w',
+'a', 'r', 'd', 'i', 'n', 'g', 'A', 'c', 't', 'i', 'o', 'n', '\022', ':', '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030',
+'\004', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e',
+'.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', '>', '\n',
+'\t', 'd', 'e', 'c', 'o', 'r', 'a', 't', 'o', 'r', '\030', '\005', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'D', 'e', 'c', 'o', 'r', 'a', 't', 'o', 'r',
+'R', '\t', 'd', 'e', 'c', 'o', 'r', 'a', 't', 'o', 'r', '\022', 'm', '\n', '\027', 't', 'y', 'p', 'e', 'd', '_', 'p', 'e', 'r', '_',
+'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\r', ' ', '\003', '(', '\013', '2', '6', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', '.',
+'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', 't', 'r', 'y',
+'R', '\024', 't', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'g', '\n',
+'\026', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\t',
+' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
+'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006',
+'\222', '\001', '\003', '\020', '\350', '\007', 'R', '\023', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A',
+'d', 'd', '\022', 'M', '\n', '\031', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_',
+'r', 'e', 'm', 'o', 'v', 'e', '\030', '\014', ' ', '\003', '(', '\t', 'B', '\022', '\372', 'B', '\017', '\222', '\001', '\014', '\"', '\n', 'r', '\010', '\020',
+'\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o',
+'R', 'e', 'm', 'o', 'v', 'e', '\022', 'i', '\n', '\027', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r',
+'s', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\n', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
+'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O',
+'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020', '\350', '\007', 'R', '\024', 'r', 'e', 's', 'p', 'o', 'n', 's',
+'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', '\022', 'O', '\n', '\032', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e',
+'_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\013', ' ', '\003', '(', '\t', 'B',
+'\022', '\372', 'B', '\017', '\222', '\001', '\014', '\"', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\027', 'r', 'e', 's', 'p',
+'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', 'v', 'e', '\022', '8', '\n', '\007', 't', 'r',
+'a', 'c', 'i', 'n', 'g', '\030', '\017', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
+'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'T', 'r', 'a', 'c', 'i', 'n', 'g', 'R', '\007', 't', 'r', 'a', 'c', 'i',
+'n', 'g', '\022', '`', '\n', '\036', 'p', 'e', 'r', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'b', 'u', 'f', 'f', 'e', 'r', '_',
+'l', 'i', 'm', 'i', 't', '_', 'b', 'y', 't', 'e', 's', '\030', '\020', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l',
+'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\032', 'p',
+'e', 'r', 'R', 'e', 'q', 'u', 'e', 's', 't', 'B', 'u', 'f', 'f', 'e', 'r', 'L', 'i', 'm', 'i', 't', 'B', 'y', 't', 'e', 's',
+'\022', '\037', '\n', '\013', 's', 't', 'a', 't', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\023', ' ', '\001', '(', '\t', 'R', '\n', 's', 't',
+'a', 't', 'P', 'r', 'e', 'f', 'i', 'x', '\032', ']', '\n', '\031', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', 't', 'e',
+'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t',
+'R', '\003', 'k', 'e', 'y', '\022', '*', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o',
+'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':',
+'\002', '8', '\001', ':', '\037', '\232', '\305', '\210', '\036', '\032', '\n', '\030', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.',
+'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'B', '\r', '\n', '\006', 'a', 'c', 't', 'i', 'o', 'n', '\022', '\003', '\370', 'B',
+'\001', 'J', '\004', '\010', '\006', '\020', '\007', 'J', '\004', '\010', '\010', '\020', '\t', 'R', '\021', 'p', 'e', 'r', '_', 'f', 'i', 'l', 't', 'e', 'r',
+'_', 'c', 'o', 'n', 'f', 'i', 'g', '\"', '\346', '\n', '\n', '\017', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't',
+'e', 'r', '\022', 'Z', '\n', '\010', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '4', '.', 'e', 'n',
+'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'W', 'e', 'i', 'g', 'h',
+'t', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'W', 'e', 'i', 'g', 'h', 't', 'B',
+'\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\022', '?', '\n', '\014', 't', 'o',
+'t', 'a', 'l', '_', 'w', 'e', 'i', 'g', 'h', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e',
+'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\013', 't', 'o',
+'t', 'a', 'l', 'W', 'e', 'i', 'g', 'h', 't', '\022', ',', '\n', '\022', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '_',
+'p', 'r', 'e', 'f', 'i', 'x', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\020', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', 'P',
+'r', 'e', 'f', 'i', 'x', '\022', '.', '\n', '\013', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\004', ' ', '\001', '(',
+'\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'H', '\000', 'R', '\n', 'h', 'e', 'a', 'd', 'e', 'r', 'N',
+'a', 'm', 'e', '\032', '\222', '\010', '\n', '\r', 'C', 'l', 'u', 's', 't', 'e', 'r', 'W', 'e', 'i', 'g', 'h', 't', '\022', '-', '\n', '\004',
+'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\031', '\362', '\230', '\376', '\217', '\005', '\023', '\022', '\021', 'c', 'l', 'u', 's', 't',
+'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'K', '\n', '\016', 'c', 'l', 'u',
+'s', 't', 'e', 'r', '_', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\014', ' ', '\001', '(', '\t', 'B', '$', '\372', 'B', '\010', 'r', '\006', '\300',
+'\001', '\001', '\310', '\001', '\000', '\362', '\230', '\376', '\217', '\005', '\023', '\022', '\021', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c',
+'i', 'f', 'i', 'e', 'r', 'R', '\r', 'c', 'l', 'u', 's', 't', 'e', 'r', 'H', 'e', 'a', 'd', 'e', 'r', '\022', '4', '\n', '\006', 'w',
+'e', 'i', 'g', 'h', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
+'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\006', 'w', 'e', 'i', 'g', 'h', 't', '\022',
+'E', '\n', '\016', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '_', 'm', 'a', 't', 'c', 'h', '\030', '\003', ' ', '\001', '(', '\013', '2', '\036',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't',
+'a', 'd', 'a', 't', 'a', 'R', '\r', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', 'M', 'a', 't', 'c', 'h', '\022', 'g', '\n', '\026', 'r',
+'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\004', ' ', '\003',
'(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3',
'.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001',
-'\003', '\020', '\350', '\007', 'R', '\024', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd',
-'d', '\022', 'O', '\n', '\032', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_',
-'r', 'e', 'm', 'o', 'v', 'e', '\030', '\013', ' ', '\003', '(', '\t', 'B', '\022', '\372', 'B', '\017', '\222', '\001', '\014', '\"', '\n', 'r', '\010', '\020',
-'\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\027', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T',
-'o', 'R', 'e', 'm', 'o', 'v', 'e', '\022', '8', '\n', '\007', 't', 'r', 'a', 'c', 'i', 'n', 'g', '\030', '\017', ' ', '\001', '(', '\013', '2',
-'\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'T',
-'r', 'a', 'c', 'i', 'n', 'g', 'R', '\007', 't', 'r', 'a', 'c', 'i', 'n', 'g', '\022', '`', '\n', '\036', 'p', 'e', 'r', '_', 'r', 'e',
-'q', 'u', 'e', 's', 't', '_', 'b', 'u', 'f', 'f', 'e', 'r', '_', 'l', 'i', 'm', 'i', 't', '_', 'b', 'y', 't', 'e', 's', '\030',
-'\020', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U',
-'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\032', 'p', 'e', 'r', 'R', 'e', 'q', 'u', 'e', 's', 't', 'B', 'u', 'f',
-'f', 'e', 'r', 'L', 'i', 'm', 'i', 't', 'B', 'y', 't', 'e', 's', '\032', ']', '\n', '\031', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r',
-'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030',
-'\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '*', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013',
-'2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\005', 'v',
-'a', 'l', 'u', 'e', ':', '\002', '8', '\001', ':', '\037', '\232', '\305', '\210', '\036', '\032', '\n', '\030', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p',
-'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'B', '\r', '\n', '\006', 'a', 'c', 't', 'i', 'o',
-'n', '\022', '\003', '\370', 'B', '\001', 'J', '\004', '\010', '\006', '\020', '\007', 'J', '\004', '\010', '\010', '\020', '\t', 'R', '\021', 'p', 'e', 'r', '_', 'f',
-'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\"', '\245', '\n', '\n', '\017', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd',
-'C', 'l', 'u', 's', 't', 'e', 'r', '\022', 'Z', '\n', '\010', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013',
-'2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.',
-'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'W', 'e',
-'i', 'g', 'h', 't', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\022',
-'H', '\n', '\014', 't', 'o', 't', 'a', 'l', '_', 'w', 'e', 'i', 'g', 'h', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\034', '.', 'g',
-'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u',
-'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', 'R', '\013', 't', 'o', 't', 'a', 'l', 'W', 'e', 'i', 'g', 'h', 't', '\022', ',',
-'\n', '\022', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\002', ' ', '\001', '(',
-'\t', 'R', '\020', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'K', 'e', 'y', 'P', 'r', 'e', 'f', 'i', 'x', '\032', '\222', '\010', '\n', '\r', 'C',
-'l', 'u', 's', 't', 'e', 'r', 'W', 'e', 'i', 'g', 'h', 't', '\022', '-', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(',
-'\t', 'B', '\031', '\362', '\230', '\376', '\217', '\005', '\023', '\022', '\021', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f',
-'i', 'e', 'r', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'K', '\n', '\016', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'h', 'e', 'a', 'd',
-'e', 'r', '\030', '\014', ' ', '\001', '(', '\t', 'B', '$', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', '\362', '\230', '\376', '\217',
-'\005', '\023', '\022', '\021', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', '\r', 'c', 'l',
-'u', 's', 't', 'e', 'r', 'H', 'e', 'a', 'd', 'e', 'r', '\022', '4', '\n', '\006', 'w', 'e', 'i', 'g', 'h', 't', '\030', '\002', ' ', '\001',
-'(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't',
-'3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\006', 'w', 'e', 'i', 'g', 'h', 't', '\022', 'E', '\n', '\016', 'm', 'e', 't', 'a', 'd', 'a',
-'t', 'a', '_', 'm', 'a', 't', 'c', 'h', '\030', '\003', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
-'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'R', '\r', 'm', 'e',
-'t', 'a', 'd', 'a', 't', 'a', 'M', 'a', 't', 'c', 'h', '\022', 'g', '\n', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e',
-'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\004', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a',
-'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020', '\350', '\007', 'R', '\023', 'r', 'e', 'q',
-'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', '\022', 'K', '\n', '\031', 'r', 'e', 'q', 'u', 'e',
-'s', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\t', ' ', '\003', '(',
-'\t', 'B', '\020', '\372', 'B', '\r', '\222', '\001', '\n', '\"', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\026', 'r', 'e', 'q', 'u',
-'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', 'v', 'e', '\022', 'i', '\n', '\027', 'r', 'e', 's',
-'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'a', 'd', 'd', '\030', '\005', ' ', '\003', '(',
-'\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.',
-'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003',
-'\020', '\350', '\007', 'R', '\024', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd',
-'\022', 'M', '\n', '\032', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'r',
-'e', 'm', 'o', 'v', 'e', '\030', '\006', ' ', '\003', '(', '\t', 'B', '\020', '\372', 'B', '\r', '\222', '\001', '\n', '\"', '\010', 'r', '\006', '\300', '\001',
-'\001', '\310', '\001', '\000', 'R', '\027', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e',
-'m', 'o', 'v', 'e', '\022', '\205', '\001', '\n', '\027', 't', 'y', 'p', 'e', 'd', '_', 'p', 'e', 'r', '_', 'f', 'i', 'l', 't', 'e', 'r',
-'_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\n', ' ', '\003', '(', '\013', '2', 'N', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
-'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', 's',
-'t', 'e', 'r', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'W', 'e', 'i', 'g', 'h', 't', '.', 'T', 'y', 'p', 'e', 'd', 'P', 'e',
-'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', 't', 'r', 'y', 'R', '\024', 't', 'y', 'p', 'e', 'd',
-'P', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '?', '\n', '\024', 'h', 'o', 's', 't', '_', 'r',
-'e', 'w', 'r', 'i', 't', 'e', '_', 'l', 'i', 't', 'e', 'r', 'a', 'l', '\030', '\013', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010',
-'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'H', '\000', 'R', '\022', 'h', 'o', 's', 't', 'R', 'e', 'w', 'r', 'i', 't', 'e', 'L', 'i',
-'t', 'e', 'r', 'a', 'l', '\032', ']', '\n', '\031', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o',
-'n', 'f', 'i', 'g', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k',
-'e', 'y', '\022', '*', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l',
-'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\005', 'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001',
-':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u',
-'t', 'e', '.', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'l', 'u', 's', 't', 'e',
-'r', 'W', 'e', 'i', 'g', 'h', 't', 'B', '\030', '\n', '\026', 'h', 'o', 's', 't', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 's',
-'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', '\007', '\020', '\010', 'J', '\004', '\010', '\010', '\020', '\t', 'R', '\021', 'p', 'e', 'r',
-'_', 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n',
-'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd',
-'C', 'l', 'u', 's', 't', 'e', 'r', '\"', '\236', '\t', '\n', '\n', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', '\022', '\030', '\n',
-'\006', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\001', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\006', 'p', 'r', 'e', 'f', 'i', 'x', '\022', '\024',
-'\n', '\004', 'p', 'a', 't', 'h', '\030', '\002', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\004', 'p', 'a', 't', 'h', '\022', 'N', '\n', '\n', 's',
-'a', 'f', 'e', '_', 'r', 'e', 'g', 'e', 'x', '\030', '\n', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 't',
-'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h',
-'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'H', '\000', 'R', '\t', 's', 'a', 'f', 'e', 'R', 'e', 'g', 'e', 'x',
-'\022', '[', '\n', '\017', 'c', 'o', 'n', 'n', 'e', 'c', 't', '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\014', ' ', '\001', '(', '\013',
-'2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.',
-'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'M', 'a', 't', 'c', 'h', 'e', 'r',
-'H', '\000', 'R', '\016', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'A', '\n', '\016', 'c', 'a', 's',
-'e', '_', 's', 'e', 'n', 's', 'i', 't', 'i', 'v', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l',
-'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\r', 'c', 'a', 's',
-'e', 'S', 'e', 'n', 's', 'i', 't', 'i', 'v', 'e', '\022', 'Y', '\n', '\020', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'f', 'r', 'a',
-'c', 't', 'i', 'o', 'n', '\030', '\t', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n',
-'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\017', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o',
-'n', '\022', '>', '\n', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M',
-'a', 't', 'c', 'h', 'e', 'r', 'R', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\022', 'W', '\n', '\020', 'q', 'u', 'e', 'r', 'y', '_',
-'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.',
-'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a',
-'m', 'e', 't', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\017', 'q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e',
-'t', 'e', 'r', 's', '\022', 'K', '\n', '\004', 'g', 'r', 'p', 'c', '\030', '\010', ' ', '\001', '(', '\013', '2', '7', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'M', 'a',
-'t', 'c', 'h', '.', 'G', 'r', 'p', 'c', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', 'i', 'o', 'n', 's',
-'R', '\004', 'g', 'r', 'p', 'c', '\022', 'Y', '\n', '\013', 't', 'l', 's', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\013', ' ', '\001',
-'(', '\013', '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v',
-'3', '.', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', '.', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', 'M', 'a',
-'t', 'c', 'h', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\n', 't', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', 'Q', '\n',
-'\020', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\r', ' ', '\003', '(', '\013', '2', '&',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'e',
-'t', 'a', 'd', 'a', 't', 'a', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\017', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't',
-'a', 'd', 'a', 't', 'a', '\032', 'S', '\n', '\025', 'G', 'r', 'p', 'c', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', 'O', 'p',
-'t', 'i', 'o', 'n', 's', ':', ':', '\232', '\305', '\210', '\036', '5', '\n', '3', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v',
-'2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', '.', 'G', 'r', 'p', 'c', 'R', 'o',
-'u', 't', 'e', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', 'i', 'o', 'n', 's', '\032', '\311', '\001', '\n', '\026', 'T', 'l', 's', 'C', 'o',
-'n', 't', 'e', 'x', 't', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '8', '\n', '\t', 'p', 'r', 'e', 's',
-'e', 'n', 't', 'e', 'd', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
-'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\t', 'p', 'r', 'e', 's', 'e', 'n', 't', 'e', 'd',
-'\022', '8', '\n', '\t', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o',
-'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\t', 'v',
-'a', 'l', 'i', 'd', 'a', 't', 'e', 'd', ':', ';', '\232', '\305', '\210', '\036', '6', '\n', '4', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p',
-'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', '.', 'T', 'l', 's',
-'C', 'o', 'n', 't', 'e', 'x', 't', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', 'i', 'o', 'n', 's', '\032', '\020', '\n', '\016', 'C', 'o',
-'n', 'n', 'e', 'c', 't', 'M', 'a', 't', 'c', 'h', 'e', 'r', ':', '$', '\232', '\305', '\210', '\036', '\037', '\n', '\035', 'e', 'n', 'v', 'o',
-'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h',
-'B', '\025', '\n', '\016', 'p', 'a', 't', 'h', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', 'J', '\004',
-'\010', '\005', '\020', '\006', 'J', '\004', '\010', '\003', '\020', '\004', 'R', '\005', 'r', 'e', 'g', 'e', 'x', '\"', '\350', '\004', '\n', '\n', 'C', 'o', 'r',
-'s', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '_', '\n', '\031', 'a', 'l', 'l', 'o', 'w', '_', 'o', 'r', 'i', 'g', 'i', 'n', '_', 's',
-'t', 'r', 'i', 'n', 'g', '_', 'm', 'a', 't', 'c', 'h', '\030', '\013', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y',
-'.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a',
-'t', 'c', 'h', 'e', 'r', 'R', '\026', 'a', 'l', 'l', 'o', 'w', 'O', 'r', 'i', 'g', 'i', 'n', 'S', 't', 'r', 'i', 'n', 'g', 'M',
-'a', 't', 'c', 'h', '\022', '#', '\n', '\r', 'a', 'l', 'l', 'o', 'w', '_', 'm', 'e', 't', 'h', 'o', 'd', 's', '\030', '\002', ' ', '\001',
-'(', '\t', 'R', '\014', 'a', 'l', 'l', 'o', 'w', 'M', 'e', 't', 'h', 'o', 'd', 's', '\022', '#', '\n', '\r', 'a', 'l', 'l', 'o', 'w',
-'_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\014', 'a', 'l', 'l', 'o', 'w', 'H', 'e', 'a', 'd',
-'e', 'r', 's', '\022', '%', '\n', '\016', 'e', 'x', 'p', 'o', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\004', ' ', '\001',
-'(', '\t', 'R', '\r', 'e', 'x', 'p', 'o', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', '\027', '\n', '\007', 'm', 'a', 'x', '_',
-'a', 'g', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'R', '\006', 'm', 'a', 'x', 'A', 'g', 'e', '\022', 'G', '\n', '\021', 'a', 'l', 'l', 'o',
-'w', '_', 'c', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '\030', '\006', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o',
-'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\020', 'a',
-'l', 'l', 'o', 'w', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '\022', 'W', '\n', '\016', 'f', 'i', 'l', 't', 'e', 'r',
-'_', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\030', '\t', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
-'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't',
-'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'H', '\000', 'R', '\r', 'f', 'i', 'l', 't', 'e', 'r', 'E', 'n', 'a',
-'b', 'l', 'e', 'd', '\022', 'U', '\n', '\016', 's', 'h', 'a', 'd', 'o', 'w', '_', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\030', '\n', ' ',
-'\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v',
-'3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n',
-'t', 'R', '\r', 's', 'h', 'a', 'd', 'o', 'w', 'E', 'n', 'a', 'b', 'l', 'e', 'd', ':', '$', '\232', '\305', '\210', '\036', '\037', '\n', '\035',
-'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'C', 'o', 'r', 's', 'P', 'o',
-'l', 'i', 'c', 'y', 'B', '\023', '\n', '\021', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r',
-'J', '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', '\010', '\020', '\t', 'J', '\004', '\010', '\007', '\020', '\010', 'R', '\014', 'a', 'l', 'l', 'o', 'w',
-'_', 'o', 'r', 'i', 'g', 'i', 'n', 'R', '\022', 'a', 'l', 'l', 'o', 'w', '_', 'o', 'r', 'i', 'g', 'i', 'n', '_', 'r', 'e', 'g',
-'e', 'x', 'R', '\007', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\"', '\351', '\'', '\n', '\013', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i',
-'o', 'n', '\022', '#', '\n', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r',
-'\002', '\020', '\001', 'H', '\000', 'R', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\022', '6', '\n', '\016', 'c', 'l', 'u', 's', 't', 'e', 'r',
-'_', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001',
-'\310', '\001', '\000', 'H', '\000', 'R', '\r', 'c', 'l', 'u', 's', 't', 'e', 'r', 'H', 'e', 'a', 'd', 'e', 'r', '\022', 'U', '\n', '\021', 'w',
-'e', 'i', 'g', 'h', 't', 'e', 'd', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '&', '.',
+'\003', '\020', '\350', '\007', 'R', '\023', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd',
+'\022', 'K', '\n', '\031', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o', '_', 'r', 'e',
+'m', 'o', 'v', 'e', '\030', '\t', ' ', '\003', '(', '\t', 'B', '\020', '\372', 'B', '\r', '\222', '\001', '\n', '\"', '\010', 'r', '\006', '\300', '\001', '\001',
+'\310', '\001', '\000', 'R', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o',
+'v', 'e', '\022', 'i', '\n', '\027', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'o',
+'_', 'a', 'd', 'd', '\030', '\005', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o',
+'n', 'B', '\t', '\372', 'B', '\006', '\222', '\001', '\003', '\020', '\350', '\007', 'R', '\024', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a',
+'d', 'e', 'r', 's', 'T', 'o', 'A', 'd', 'd', '\022', 'M', '\n', '\032', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a',
+'d', 'e', 'r', 's', '_', 't', 'o', '_', 'r', 'e', 'm', 'o', 'v', 'e', '\030', '\006', ' ', '\003', '(', '\t', 'B', '\020', '\372', 'B', '\r',
+'\222', '\001', '\n', '\"', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\027', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e',
+'a', 'd', 'e', 'r', 's', 'T', 'o', 'R', 'e', 'm', 'o', 'v', 'e', '\022', '\205', '\001', '\n', '\027', 't', 'y', 'p', 'e', 'd', '_', 'p',
+'e', 'r', '_', 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\n', ' ', '\003', '(', '\013', '2', 'N', '.',
'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'W', 'e', 'i',
-'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', 'H', '\000', 'R', '\020', 'w', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'C',
-'l', 'u', 's', 't', 'e', 'r', 's', '\022', ':', '\n', '\030', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f',
-'i', 'e', 'r', '_', 'p', 'l', 'u', 'g', 'i', 'n', '\030', '%', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\026', 'c', 'l', 'u', 's', 't',
-'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', '\022', '\216', '\001', '\n', '\037', 'c', 'l', 'u',
-'s', 't', 'e', 'r', '_', 'n', 'o', 't', '_', 'f', 'o', 'u', 'n', 'd', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'c',
-'o', 'd', 'e', '\030', '\024', ' ', '\001', '(', '\016', '2', '>', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
-'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'C', 'l', 'u', 's',
-'t', 'e', 'r', 'N', 'o', 't', 'F', 'o', 'u', 'n', 'd', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', 'B', '\010',
-'\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\033', 'c', 'l', 'u', 's', 't', 'e', 'r', 'N', 'o', 't', 'F', 'o', 'u', 'n', 'd',
-'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', '\022', 'E', '\n', '\016', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '_',
-'m', 'a', 't', 'c', 'h', '\030', '\004', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'R', '\r', 'm', 'e', 't', 'a', 'd',
-'a', 't', 'a', 'M', 'a', 't', 'c', 'h', '\022', '2', '\n', '\016', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'r', 'e', 'w', 'r', 'i', 't',
-'e', '\030', '\005', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\r', 'p', 'r', 'e',
-'f', 'i', 'x', 'R', 'e', 'w', 'r', 'i', 't', 'e', '\022', 'S', '\n', '\r', 'r', 'e', 'g', 'e', 'x', '_', 'r', 'e', 'w', 'r', 'i',
-'t', 'e', '\030', ' ', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't',
-'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'A', 'n', 'd', 'S', 'u', 'b', 's',
-'t', 'i', 't', 'u', 't', 'e', 'R', '\014', 'r', 'e', 'g', 'e', 'x', 'R', 'e', 'w', 'r', 'i', 't', 'e', '\022', '?', '\n', '\024', 'h',
-'o', 's', 't', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 'l', 'i', 't', 'e', 'r', 'a', 'l', '\030', '\006', ' ', '\001', '(', '\t',
-'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'H', '\001', 'R', '\022', 'h', 'o', 's', 't', 'R', 'e', 'w', 'r',
-'i', 't', 'e', 'L', 'i', 't', 'e', 'r', 'a', 'l', '\022', 'H', '\n', '\021', 'a', 'u', 't', 'o', '_', 'h', 'o', 's', 't', '_', 'r',
-'e', 'w', 'r', 'i', 't', 'e', '\030', '\007', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o',
-'t', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'H', '\001', 'R', '\017', 'a', 'u', 't', 'o', 'H', 'o',
-'s', 't', 'R', 'e', 'w', 'r', 'i', 't', 'e', '\022', '=', '\n', '\023', 'h', 'o', 's', 't', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e',
-'_', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\035', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001',
-'\000', 'H', '\001', 'R', '\021', 'h', 'o', 's', 't', 'R', 'e', 'w', 'r', 'i', 't', 'e', 'H', 'e', 'a', 'd', 'e', 'r', '\022', 'g', '\n',
-'\027', 'h', 'o', 's', 't', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 'p', 'a', 't', 'h', '_', 'r', 'e', 'g', 'e', 'x', '\030',
-'#', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e',
-'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'A', 'n', 'd', 'S', 'u', 'b', 's', 't', 'i', 't',
-'u', 't', 'e', 'H', '\001', 'R', '\024', 'h', 'o', 's', 't', 'R', 'e', 'w', 'r', 'i', 't', 'e', 'P', 'a', 't', 'h', 'R', 'e', 'g',
-'e', 'x', '\022', '5', '\n', '\027', 'a', 'p', 'p', 'e', 'n', 'd', '_', 'x', '_', 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'e', 'd', '_',
-'h', 'o', 's', 't', '\030', '&', ' ', '\001', '(', '\010', 'R', '\024', 'a', 'p', 'p', 'e', 'n', 'd', 'X', 'F', 'o', 'r', 'w', 'a', 'r',
-'d', 'e', 'd', 'H', 'o', 's', 't', '\022', '3', '\n', '\007', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\010', ' ', '\001', '(', '\013', '2',
-'\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o',
-'n', 'R', '\007', 't', 'i', 'm', 'e', 'o', 'u', 't', '\022', '<', '\n', '\014', 'i', 'd', 'l', 'e', '_', 't', 'i', 'm', 'e', 'o', 'u',
-'t', '\030', '\030', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
-'.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\013', 'i', 'd', 'l', 'e', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'E', '\n',
-'\014', 'r', 'e', 't', 'r', 'y', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\t', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P',
-'o', 'l', 'i', 'c', 'y', 'R', '\013', 'r', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'O', '\n', '\031', 'r', 'e', 't',
-'r', 'y', '_', 'p', 'o', 'l', 'i', 'c', 'y', '_', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '!', ' ',
-'\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y',
-'R', '\026', 'r', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', 'T', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022',
-'n', '\n', '\027', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'm', 'i', 'r', 'r', 'o', 'r', '_', 'p', 'o', 'l', 'i', 'c', 'i', 'e',
-'s', '\030', '\036', ' ', '\003', '(', '\013', '2', '6', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o',
-'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'R', 'e', 'q', 'u', 'e', 's',
-'t', 'M', 'i', 'r', 'r', 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\025', 'r', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r',
-'r', 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'i', 'e', 's', '\022', 'K', '\n', '\010', 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\030', '\013',
-' ', '\001', '(', '\016', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
-'v', '3', '.', 'R', 'o', 'u', 't', 'i', 'n', 'g', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', 'B', '\010', '\372', 'B', '\005', '\202', '\001',
-'\002', '\020', '\001', 'R', '\010', 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', 'A', '\n', '\013', 'r', 'a', 't', 'e', '_', 'l', 'i', 'm',
-'i', 't', 's', '\030', '\r', ' ', '\003', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
-'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 'R', '\n', 'r', 'a', 't', 'e', 'L',
-'i', 'm', 'i', 't', 's', '\022', '\\', '\n', '\026', 'i', 'n', 'c', 'l', 'u', 'd', 'e', '_', 'v', 'h', '_', 'r', 'a', 't', 'e', '_',
-'l', 'i', 'm', 'i', 't', 's', '\030', '\016', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o',
-'t', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003',
-'3', '.', '0', 'R', '\023', 'i', 'n', 'c', 'l', 'u', 'd', 'e', 'V', 'h', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 's', '\022',
-'N', '\n', '\013', 'h', 'a', 's', 'h', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\017', ' ', '\003', '(', '\013', '2', '-', '.', 'e', 'n',
-'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e',
-'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\n', 'h', 'a', 's', 'h', 'P', 'o',
-'l', 'i', 'c', 'y', '\022', '5', '\n', '\004', 'c', 'o', 'r', 's', '\030', '\021', ' ', '\001', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'C', 'o', 'r', 's', 'P', 'o', 'l',
-'i', 'c', 'y', 'R', '\004', 'c', 'o', 'r', 's', '\022', 'P', '\n', '\020', 'm', 'a', 'x', '_', 'g', 'r', 'p', 'c', '_', 't', 'i', 'm',
-'e', 'o', 'u', 't', '\030', '\027', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
-'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0',
-'R', '\016', 'm', 'a', 'x', 'G', 'r', 'p', 'c', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'V', '\n', '\023', 'g', 'r', 'p', 'c', '_',
-'t', 'i', 'm', 'e', 'o', 'u', 't', '_', 'o', 'f', 'f', 's', 'e', 't', '\030', '\034', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o',
+'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'W', 'e', 'i', 'g', 'h',
+'t', '.', 'T', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', 't',
+'r', 'y', 'R', '\024', 't', 'y', 'p', 'e', 'd', 'P', 'e', 'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022',
+'?', '\n', '\024', 'h', 'o', 's', 't', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 'l', 'i', 't', 'e', 'r', 'a', 'l', '\030', '\013',
+' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'H', '\000', 'R', '\022', 'h', 'o', 's', 't',
+'R', 'e', 'w', 'r', 'i', 't', 'e', 'L', 'i', 't', 'e', 'r', 'a', 'l', '\032', ']', '\n', '\031', 'T', 'y', 'p', 'e', 'd', 'P', 'e',
+'r', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y',
+'\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '*', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(',
+'\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\005',
+'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'a',
+'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't',
+'e', 'r', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'W', 'e', 'i', 'g', 'h', 't', 'B', '\030', '\n', '\026', 'h', 'o', 's', 't', '_',
+'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', '\007', '\020', '\010', 'J', '\004',
+'\010', '\010', '\020', '\t', 'R', '\021', 'p', 'e', 'r', '_', 'f', 'i', 'l', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', ':', ')',
+'\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e',
+'.', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', 'B', '\030', '\n', '\026', 'r', 'a', 'n', 'd', 'o',
+'m', '_', 'v', 'a', 'l', 'u', 'e', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\"', '\215', '\001', '\n', '\026', 'C', 'l', 'u',
+'s', 't', 'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', '\022', 'R', '\n', '\t', 'e', 'x',
+'t', 'e', 'n', 's', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
+'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o',
+'n', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\t', 'e', 'x', 't', 'e', 'n', 's',
+'i', 'o', 'n', '\022', '\037', '\n', '\013', 'i', 's', '_', 'o', 'p', 't', 'i', 'o', 'n', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\010', 'R',
+'\n', 'i', 's', 'O', 'p', 't', 'i', 'o', 'n', 'a', 'l', '\"', '\241', '\n', '\n', '\n', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c',
+'h', '\022', '\030', '\n', '\006', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\001', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\006', 'p', 'r', 'e', 'f',
+'i', 'x', '\022', '\024', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\002', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\004', 'p', 'a', 't', 'h', '\022',
+'N', '\n', '\n', 's', 'a', 'f', 'e', '_', 'r', 'e', 'g', 'e', 'x', '\030', '\n', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v',
+'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M',
+'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'H', '\000', 'R', '\t', 's', 'a', 'f', 'e', 'R',
+'e', 'g', 'e', 'x', '\022', '[', '\n', '\017', 'c', 'o', 'n', 'n', 'e', 'c', 't', '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\014',
+' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e',
+'.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'M', 'a', 't',
+'c', 'h', 'e', 'r', 'H', '\000', 'R', '\016', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'K', '\n',
+'\025', 'p', 'a', 't', 'h', '_', 's', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'd', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\016', ' ',
+'\001', '(', '\t', 'B', '\025', '\372', 'B', '\022', 'r', '\020', '2', '\016', '^', '[', '^', '?', '#', ']', '+', '[', '^', '?', '#', '/', ']',
+'$', 'H', '\000', 'R', '\023', 'p', 'a', 't', 'h', 'S', 'e', 'p', 'a', 'r', 'a', 't', 'e', 'd', 'P', 'r', 'e', 'f', 'i', 'x', '\022',
+'4', '\n', '\r', 'p', 'a', 't', 'h', '_', 't', 'e', 'm', 'p', 'l', 'a', 't', 'e', '\030', '\017', ' ', '\001', '(', '\t', 'B', '\r', '\372',
+'B', '\n', 'r', '\010', '\020', '\001', '\030', '\200', '\002', '\320', '\001', '\001', 'H', '\000', 'R', '\014', 'p', 'a', 't', 'h', 'T', 'e', 'm', 'p', 'l',
+'a', 't', 'e', '\022', 'A', '\n', '\016', 'c', 'a', 's', 'e', '_', 's', 'e', 'n', 's', 'i', 't', 'i', 'v', 'e', '\030', '\004', ' ', '\001',
+'(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l',
+'V', 'a', 'l', 'u', 'e', 'R', '\r', 'c', 'a', 's', 'e', 'S', 'e', 'n', 's', 'i', 't', 'i', 'v', 'e', '\022', 'Y', '\n', '\020', 'r',
+'u', 'n', 't', 'i', 'm', 'e', '_', 'f', 'r', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\t', ' ', '\001', '(', '\013', '2', '.', '.', 'e',
+'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i',
+'m', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\017', 'r', 'u', 'n', 't',
+'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', '\022', '>', '\n', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\006', ' ',
+'\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.',
+'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's',
+'\022', 'W', '\n', '\020', 'q', 'u', 'e', 'r', 'y', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\030', '\007', ' ', '\003', '(',
+'\013', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3',
+'.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\017', 'q',
+'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\022', 'K', '\n', '\004', 'g', 'r', 'p', 'c', '\030', '\010', ' ',
+'\001', '(', '\013', '2', '7', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.',
+'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', '.', 'G', 'r', 'p', 'c', 'R', 'o', 'u', 't', 'e', 'M', 'a',
+'t', 'c', 'h', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\004', 'g', 'r', 'p', 'c', '\022', 'Y', '\n', '\013', 't', 'l', 's', '_', 'c',
+'o', 'n', 't', 'e', 'x', 't', '\030', '\013', ' ', '\001', '(', '\013', '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
+'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', '.', 'T', 'l',
+'s', 'C', 'o', 'n', 't', 'e', 'x', 't', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\n', 't', 'l', 's',
+'C', 'o', 'n', 't', 'e', 'x', 't', '\022', 'Q', '\n', '\020', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'm', 'e', 't', 'a', 'd', 'a',
+'t', 'a', '\030', '\r', ' ', '\003', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't',
+'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\017',
+'d', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '\032', 'S', '\n', '\025', 'G', 'r', 'p', 'c', 'R', 'o',
+'u', 't', 'e', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', 'i', 'o', 'n', 's', ':', ':', '\232', '\305', '\210', '\036', '5', '\n', '3', 'e',
+'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'M', 'a',
+'t', 'c', 'h', '.', 'G', 'r', 'p', 'c', 'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', 'i', 'o', 'n', 's',
+'\032', '\311', '\001', '\n', '\026', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't', 'i', 'o',
+'n', 's', '\022', '8', '\n', '\t', 'p', 'r', 'e', 's', 'e', 'n', 't', 'e', 'd', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'g',
+'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R',
+'\t', 'p', 'r', 'e', 's', 'e', 'n', 't', 'e', 'd', '\022', '8', '\n', '\t', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', 'd', '\030', '\002',
+' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o',
+'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\t', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', 'd', ':', ';', '\232', '\305', '\210', '\036', '6',
+'\n', '4', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't',
+'e', 'M', 'a', 't', 'c', 'h', '.', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', 'M', 'a', 't', 'c', 'h', 'O', 'p', 't',
+'i', 'o', 'n', 's', '\032', '\020', '\n', '\016', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'M', 'a', 't', 'c', 'h', 'e', 'r', ':', '$', '\232',
+'\305', '\210', '\036', '\037', '\n', '\035', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.',
+'R', 'o', 'u', 't', 'e', 'M', 'a', 't', 'c', 'h', 'B', '\025', '\n', '\016', 'p', 'a', 't', 'h', '_', 's', 'p', 'e', 'c', 'i', 'f',
+'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', 'J', '\004', '\010', '\005', '\020', '\006', 'J', '\004', '\010', '\003', '\020', '\004', 'R', '\005', 'r', 'e', 'g',
+'e', 'x', '\"', '\350', '\004', '\n', '\n', 'C', 'o', 'r', 's', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '_', '\n', '\031', 'a', 'l', 'l', 'o',
+'w', '_', 'o', 'r', 'i', 'g', 'i', 'n', '_', 's', 't', 'r', 'i', 'n', 'g', '_', 'm', 'a', 't', 'c', 'h', '\030', '\013', ' ', '\003',
+'(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v',
+'3', '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\026', 'a', 'l', 'l', 'o', 'w', 'O', 'r', 'i',
+'g', 'i', 'n', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', '\022', '#', '\n', '\r', 'a', 'l', 'l', 'o', 'w', '_', 'm',
+'e', 't', 'h', 'o', 'd', 's', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\014', 'a', 'l', 'l', 'o', 'w', 'M', 'e', 't', 'h', 'o', 'd',
+'s', '\022', '#', '\n', '\r', 'a', 'l', 'l', 'o', 'w', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\003', ' ', '\001', '(', '\t', 'R',
+'\014', 'a', 'l', 'l', 'o', 'w', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', '%', '\n', '\016', 'e', 'x', 'p', 'o', 's', 'e', '_', 'h',
+'e', 'a', 'd', 'e', 'r', 's', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\r', 'e', 'x', 'p', 'o', 's', 'e', 'H', 'e', 'a', 'd', 'e',
+'r', 's', '\022', '\027', '\n', '\007', 'm', 'a', 'x', '_', 'a', 'g', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'R', '\006', 'm', 'a', 'x', 'A',
+'g', 'e', '\022', 'G', '\n', '\021', 'a', 'l', 'l', 'o', 'w', '_', 'c', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's', '\030', '\006',
+' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o',
+'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\020', 'a', 'l', 'l', 'o', 'w', 'C', 'r', 'e', 'd', 'e', 'n', 't', 'i', 'a', 'l', 's',
+'\022', 'W', '\n', '\016', 'f', 'i', 'l', 't', 'e', 'r', '_', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\030', '\t', ' ', '\001', '(', '\013', '2',
+'.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u',
+'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'H', '\000', 'R',
+'\r', 'f', 'i', 'l', 't', 'e', 'r', 'E', 'n', 'a', 'b', 'l', 'e', 'd', '\022', 'U', '\n', '\016', 's', 'h', 'a', 'd', 'o', 'w', '_',
+'e', 'n', 'a', 'b', 'l', 'e', 'd', '\030', '\n', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
+'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i',
+'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\r', 's', 'h', 'a', 'd', 'o', 'w', 'E', 'n', 'a', 'b', 'l', 'e',
+'d', ':', '$', '\232', '\305', '\210', '\036', '\037', '\n', '\035', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o',
+'u', 't', 'e', '.', 'C', 'o', 'r', 's', 'P', 'o', 'l', 'i', 'c', 'y', 'B', '\023', '\n', '\021', 'e', 'n', 'a', 'b', 'l', 'e', 'd',
+'_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', '\010', '\020', '\t', 'J', '\004', '\010',
+'\007', '\020', '\010', 'R', '\014', 'a', 'l', 'l', 'o', 'w', '_', 'o', 'r', 'i', 'g', 'i', 'n', 'R', '\022', 'a', 'l', 'l', 'o', 'w', '_',
+'o', 'r', 'i', 'g', 'i', 'n', '_', 'r', 'e', 'g', 'e', 'x', 'R', '\007', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\"', '\366', '*', '\n',
+'\013', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '\022', '#', '\n', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\001',
+' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'H', '\000', 'R', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\022',
+'6', '\n', '\016', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\r',
+'\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'H', '\000', 'R', '\r', 'c', 'l', 'u', 's', 't', 'e', 'r', 'H',
+'e', 'a', 'd', 'e', 'r', '\022', 'U', '\n', '\021', 'w', 'e', 'i', 'g', 'h', 't', 'e', 'd', '_', 'c', 'l', 'u', 's', 't', 'e', 'r',
+'s', '\030', '\003', ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o',
+'u', 't', 'e', '.', 'v', '3', '.', 'W', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', 'H', '\000', 'R',
+'\020', 'w', 'e', 'i', 'g', 'h', 't', 'e', 'd', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', '\022', ':', '\n', '\030', 'c', 'l', 'u', 's',
+'t', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '_', 'p', 'l', 'u', 'g', 'i', 'n', '\030', '%', ' ', '\001', '(',
+'\t', 'H', '\000', 'R', '\026', 'c', 'l', 'u', 's', 't', 'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'P', 'l', 'u', 'g',
+'i', 'n', '\022', 'v', '\n', '\037', 'i', 'n', 'l', 'i', 'n', 'e', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c',
+'i', 'f', 'i', 'e', 'r', '_', 'p', 'l', 'u', 'g', 'i', 'n', '\030', '\'', ' ', '\001', '(', '\013', '2', '-', '.', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r',
+'S', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', 'H', '\000', 'R', '\034', 'i', 'n', 'l', 'i', 'n', 'e',
+'C', 'l', 'u', 's', 't', 'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', '\022', '\216', '\001',
+'\n', '\037', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'n', 'o', 't', '_', 'f', 'o', 'u', 'n', 'd', '_', 'r', 'e', 's', 'p', 'o',
+'n', 's', 'e', '_', 'c', 'o', 'd', 'e', '\030', '\024', ' ', '\001', '(', '\016', '2', '>', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
+'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n',
+'.', 'C', 'l', 'u', 's', 't', 'e', 'r', 'N', 'o', 't', 'F', 'o', 'u', 'n', 'd', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C',
+'o', 'd', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\033', 'c', 'l', 'u', 's', 't', 'e', 'r', 'N', 'o', 't',
+'F', 'o', 'u', 'n', 'd', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', '\022', 'E', '\n', '\016', 'm', 'e', 't', 'a',
+'d', 'a', 't', 'a', '_', 'm', 'a', 't', 'c', 'h', '\030', '\004', ' ', '\001', '(', '\013', '2', '\036', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'R', '\r',
+'m', 'e', 't', 'a', 'd', 'a', 't', 'a', 'M', 'a', 't', 'c', 'h', '\022', '2', '\n', '\016', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'r',
+'e', 'w', 'r', 'i', 't', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000',
+'R', '\r', 'p', 'r', 'e', 'f', 'i', 'x', 'R', 'e', 'w', 'r', 'i', 't', 'e', '\022', 'S', '\n', '\r', 'r', 'e', 'g', 'e', 'x', '_',
+'r', 'e', 'w', 'r', 'i', 't', 'e', '\030', ' ', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p',
+'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'A', 'n',
+'d', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'e', 'R', '\014', 'r', 'e', 'g', 'e', 'x', 'R', 'e', 'w', 'r', 'i', 't', 'e',
+'\022', 'A', '\n', '\025', 'p', 'a', 't', 'h', '_', 't', 'e', 'm', 'p', 'l', 'a', 't', 'e', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e',
+'\030', ')', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\030', '\200', '\002', '\320', '\001', '\001', 'R', '\023', 'p', 'a',
+'t', 'h', 'T', 'e', 'm', 'p', 'l', 'a', 't', 'e', 'R', 'e', 'w', 'r', 'i', 't', 'e', '\022', '?', '\n', '\024', 'h', 'o', 's', 't',
+'_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 'l', 'i', 't', 'e', 'r', 'a', 'l', '\030', '\006', ' ', '\001', '(', '\t', 'B', '\013', '\372',
+'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'H', '\001', 'R', '\022', 'h', 'o', 's', 't', 'R', 'e', 'w', 'r', 'i', 't', 'e',
+'L', 'i', 't', 'e', 'r', 'a', 'l', '\022', 'H', '\n', '\021', 'a', 'u', 't', 'o', '_', 'h', 'o', 's', 't', '_', 'r', 'e', 'w', 'r',
+'i', 't', 'e', '\030', '\007', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b',
+'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'H', '\001', 'R', '\017', 'a', 'u', 't', 'o', 'H', 'o', 's', 't', 'R',
+'e', 'w', 'r', 'i', 't', 'e', '\022', '=', '\n', '\023', 'h', 'o', 's', 't', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 'h', 'e',
+'a', 'd', 'e', 'r', '\030', '\035', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000', 'H', '\001',
+'R', '\021', 'h', 'o', 's', 't', 'R', 'e', 'w', 'r', 'i', 't', 'e', 'H', 'e', 'a', 'd', 'e', 'r', '\022', 'g', '\n', '\027', 'h', 'o',
+'s', 't', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 'p', 'a', 't', 'h', '_', 'r', 'e', 'g', 'e', 'x', '\030', '#', ' ', '\001',
+'(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v',
+'3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'A', 'n', 'd', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'e',
+'H', '\001', 'R', '\024', 'h', 'o', 's', 't', 'R', 'e', 'w', 'r', 'i', 't', 'e', 'P', 'a', 't', 'h', 'R', 'e', 'g', 'e', 'x', '\022',
+'5', '\n', '\027', 'a', 'p', 'p', 'e', 'n', 'd', '_', 'x', '_', 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'e', 'd', '_', 'h', 'o', 's',
+'t', '\030', '&', ' ', '\001', '(', '\010', 'R', '\024', 'a', 'p', 'p', 'e', 'n', 'd', 'X', 'F', 'o', 'r', 'w', 'a', 'r', 'd', 'e', 'd',
+'H', 'o', 's', 't', '\022', '3', '\n', '\007', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\010', ' ', '\001', '(', '\013', '2', '\031', '.', 'g',
+'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\007',
+'t', 'i', 'm', 'e', 'o', 'u', 't', '\022', '<', '\n', '\014', 'i', 'd', 'l', 'e', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\030',
+' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u',
+'r', 'a', 't', 'i', 'o', 'n', 'R', '\013', 'i', 'd', 'l', 'e', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'V', '\n', '\021', 'e', 'a',
+'r', 'l', 'y', '_', 'd', 'a', 't', 'a', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '(', ' ', '\001', '(', '\013', '2', '*', '.', 'e',
+'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd',
+'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\017', 'e', 'a', 'r', 'l', 'y', 'D', 'a', 't',
+'a', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'E', '\n', '\014', 'r', 'e', 't', 'r', 'y', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\t',
+' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e',
+'.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\013', 'r', 'e', 't', 'r', 'y', 'P', 'o', 'l',
+'i', 'c', 'y', '\022', 'O', '\n', '\031', 'r', 'e', 't', 'r', 'y', '_', 'p', 'o', 'l', 'i', 'c', 'y', '_', 't', 'y', 'p', 'e', 'd',
+'_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '!', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
+'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\026', 'r', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', 'T', 'y',
+'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'n', '\n', '\027', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'm', 'i', 'r', 'r',
+'o', 'r', '_', 'p', 'o', 'l', 'i', 'c', 'i', 'e', 's', '\030', '\036', ' ', '\003', '(', '\013', '2', '6', '.', 'e', 'n', 'v', 'o', 'y',
+'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't',
+'i', 'o', 'n', '.', 'R', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\025',
+'r', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'i', 'e', 's', '\022', 'K', '\n', '\010',
+'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\030', '\013', ' ', '\001', '(', '\016', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
+'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'i', 'n', 'g', 'P', 'r', 'i', 'o', 'r',
+'i', 't', 'y', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\010', 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', 'A',
+'\n', '\013', 'r', 'a', 't', 'e', '_', 'l', 'i', 'm', 'i', 't', 's', '\030', '\r', ' ', '\003', '(', '\013', '2', ' ', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i',
+'m', 'i', 't', 'R', '\n', 'r', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 's', '\022', '\\', '\n', '\026', 'i', 'n', 'c', 'l', 'u', 'd',
+'e', '_', 'v', 'h', '_', 'r', 'a', 't', 'e', '_', 'l', 'i', 'm', 'i', 't', 's', '\030', '\016', ' ', '\001', '(', '\013', '2', '\032', '.',
+'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e',
+'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\023', 'i', 'n', 'c', 'l', 'u', 'd', 'e', 'V', 'h', 'R',
+'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 's', '\022', 'N', '\n', '\013', 'h', 'a', 's', 'h', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030',
+'\017', ' ', '\003', '(', '\013', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't',
+'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i',
+'c', 'y', 'R', '\n', 'h', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '5', '\n', '\004', 'c', 'o', 'r', 's', '\030', '\021', ' ',
+'\001', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.',
+'v', '3', '.', 'C', 'o', 'r', 's', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\004', 'c', 'o', 'r', 's', '\022', 'P', '\n', '\020', 'm', 'a',
+'x', '_', 'g', 'r', 'p', 'c', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\027', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o',
'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\013', '\030',
-'\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\021', 'g', 'r', 'p', 'c', 'T', 'i', 'm', 'e', 'o', 'u', 't', 'O', 'f',
-'f', 's', 'e', 't', '\022', 'Y', '\n', '\017', 'u', 'p', 'g', 'r', 'a', 'd', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\031',
-' ', '\003', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e',
-'.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o',
-'n', 'f', 'i', 'g', 'R', '\016', 'u', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022', 'g', '\n', '\030', 'i',
-'n', 't', 'e', 'r', 'n', 'a', 'l', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\"',
-' ', '\001', '(', '\013', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e',
-'.', 'v', '3', '.', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'P', 'o', 'l', 'i', 'c',
-'y', 'R', '\026', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'P', 'o', 'l', 'i', 'c', 'y',
-'\022', '\200', '\001', '\n', '\030', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '_', 'a', 'c',
-'t', 'i', 'o', 'n', '\030', '\032', ' ', '\001', '(', '\016', '2', '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
-'.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'I', 'n', 't',
-'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\013', '\030', '\001', '\222', '\307',
-'\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\026', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't',
-'A', 'c', 't', 'i', 'o', 'n', '\022', '_', '\n', '\026', 'm', 'a', 'x', '_', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', '_', 'r', 'e',
-'d', 'i', 'r', 'e', 'c', 't', 's', '\030', '\037', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
-'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206',
-'\330', '\004', '\003', '3', '.', '0', 'R', '\024', 'm', 'a', 'x', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e',
-'c', 't', 's', '\022', 'E', '\n', '\014', 'h', 'e', 'd', 'g', 'e', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\033', ' ', '\001', '(', '\013',
-'2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.',
-'H', 'e', 'd', 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\013', 'h', 'e', 'd', 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\022',
-'d', '\n', '\023', 'm', 'a', 'x', '_', 's', 't', 'r', 'e', 'a', 'm', '_', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\030', '$', ' ',
-'\001', '(', '\013', '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.',
-'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'M', 'a', 'x', 'S', 't', 'r', 'e', 'a', 'm', 'D',
-'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\021', 'm', 'a', 'x', 'S', 't', 'r', 'e', 'a', 'm', 'D', 'u', 'r', 'a', 't', 'i', 'o',
-'n', '\032', '\242', '\002', '\n', '\023', 'R', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'y',
-'\022', '!', '\n', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020',
-'\001', 'R', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\022', 'Y', '\n', '\020', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'f', 'r', 'a',
-'c', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n',
-'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\017', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o',
-'n', '\022', '?', '\n', '\r', 't', 'r', 'a', 'c', 'e', '_', 's', 'a', 'm', 'p', 'l', 'e', 'd', '\030', '\004', ' ', '\001', '(', '\013', '2',
-'\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l',
-'u', 'e', 'R', '\014', 't', 'r', 'a', 'c', 'e', 'S', 'a', 'm', 'p', 'l', 'e', 'd', ':', '9', '\232', '\305', '\210', '\036', '4', '\n', '2',
-'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A',
-'c', 't', 'i', 'o', 'n', '.', 'R', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'y',
-'J', '\004', '\010', '\002', '\020', '\003', 'R', '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '\032', '\226', '\n', '\n', '\n', 'H',
-'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'N', '\n', '\006', 'h', 'e', 'a', 'd', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013',
-'2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.',
-'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'H', 'e',
-'a', 'd', 'e', 'r', 'H', '\000', 'R', '\006', 'h', 'e', 'a', 'd', 'e', 'r', '\022', 'N', '\n', '\006', 'c', 'o', 'o', 'k', 'i', 'e', '\030',
-'\002', ' ', '\001', '(', '\013', '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't',
+'\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\016', 'm', 'a', 'x', 'G', 'r', 'p', 'c', 'T', 'i', 'm', 'e', 'o', 'u',
+'t', '\022', 'V', '\n', '\023', 'g', 'r', 'p', 'c', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '_', 'o', 'f', 'f', 's', 'e', 't', '\030',
+'\034', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D',
+'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\021', 'g', 'r', 'p',
+'c', 'T', 'i', 'm', 'e', 'o', 'u', 't', 'O', 'f', 'f', 's', 'e', 't', '\022', 'Y', '\n', '\017', 'u', 'p', 'g', 'r', 'a', 'd', 'e',
+'_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\031', ' ', '\003', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
+'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n',
+'.', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\016', 'u', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o',
+'n', 'f', 'i', 'g', 's', '\022', 'g', '\n', '\030', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c',
+'t', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\"', ' ', '\001', '(', '\013', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
+'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd',
+'i', 'r', 'e', 'c', 't', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\026', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i',
+'r', 'e', 'c', 't', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\200', '\001', '\n', '\030', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', '_', 'r',
+'e', 'd', 'i', 'r', 'e', 'c', 't', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\032', ' ', '\001', '(', '\016', '2', '9', '.', 'e', 'n',
+'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e',
+'A', 'c', 't', 'i', 'o', 'n', '.', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c',
+'t', 'i', 'o', 'n', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\026', 'i', 'n', 't', 'e', 'r', 'n',
+'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', '\022', '_', '\n', '\026', 'm', 'a', 'x', '_', 'i',
+'n', 't', 'e', 'r', 'n', 'a', 'l', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', 's', '\030', '\037', ' ', '\001', '(', '\013', '2', '\034',
+'.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a',
+'l', 'u', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\024', 'm', 'a', 'x', 'I', 'n', 't', 'e',
+'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 's', '\022', 'E', '\n', '\014', 'h', 'e', 'd', 'g', 'e', '_', 'p', 'o',
+'l', 'i', 'c', 'y', '\030', '\033', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'd', 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', 'R', '\013', 'h', 'e',
+'d', 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'd', '\n', '\023', 'm', 'a', 'x', '_', 's', 't', 'r', 'e', 'a', 'm', '_', 'd',
+'u', 'r', 'a', 't', 'i', 'o', 'n', '\030', '$', ' ', '\001', '(', '\013', '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
+'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.',
+'M', 'a', 'x', 'S', 't', 'r', 'e', 'a', 'm', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\021', 'm', 'a', 'x', 'S', 't', 'r',
+'e', 'a', 'm', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\032', '\201', '\003', '\n', '\023', 'R', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i',
+'r', 'r', 'o', 'r', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '3', '\n', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\001', ' ', '\001',
+'(', '\t', 'B', '\031', '\362', '\230', '\376', '\217', '\005', '\023', '\022', '\021', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i',
+'f', 'i', 'e', 'r', 'R', '\007', 'c', 'l', 'u', 's', 't', 'e', 'r', '\022', 'K', '\n', '\016', 'c', 'l', 'u', 's', 't', 'e', 'r', '_',
+'h', 'e', 'a', 'd', 'e', 'r', '\030', '\005', ' ', '\001', '(', '\t', 'B', '$', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\001', '\310', '\001', '\000',
+'\362', '\230', '\376', '\217', '\005', '\023', '\022', '\021', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r',
+'R', '\r', 'c', 'l', 'u', 's', 't', 'e', 'r', 'H', 'e', 'a', 'd', 'e', 'r', '\022', 'Y', '\n', '\020', 'r', 'u', 'n', 't', 'i', 'm',
+'e', '_', 'f', 'r', 'a', 'c', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a',
+'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\017', 'r', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r',
+'a', 'c', 't', 'i', 'o', 'n', '\022', '?', '\n', '\r', 't', 'r', 'a', 'c', 'e', '_', 's', 'a', 'm', 'p', 'l', 'e', 'd', '\030', '\004',
+' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o',
+'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\014', 't', 'r', 'a', 'c', 'e', 'S', 'a', 'm', 'p', 'l', 'e', 'd', ':', '9', '\232', '\305',
+'\210', '\036', '4', '\n', '2', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R',
+'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'R', 'e', 'q', 'u', 'e', 's', 't', 'M', 'i', 'r', 'r', 'o', 'r', 'P',
+'o', 'l', 'i', 'c', 'y', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\013', 'r', 'u', 'n', 't', 'i', 'm', 'e', '_', 'k', 'e', 'y', '\032',
+'\226', '\n', '\n', '\n', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'N', '\n', '\006', 'h', 'e', 'a', 'd', 'e', 'r', '\030',
+'\001', ' ', '\001', '(', '\013', '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't',
'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i',
-'c', 'y', '.', 'C', 'o', 'o', 'k', 'i', 'e', 'H', '\000', 'R', '\006', 'c', 'o', 'o', 'k', 'i', 'e', '\022', 'y', '\n', '\025', 'c', 'o',
-'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\030', '\003', ' ', '\001', '(', '\013',
-'2', 'B', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.',
-'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'C', 'o',
-'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', 'H', '\000', 'R', '\024', 'c', 'o', 'n',
-'n', 'e', 'c', 't', 'i', 'o', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\022', 'g', '\n', '\017', 'q', 'u', 'e', 'r',
-'y', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '\030', '\005', ' ', '\001', '(', '\013', '2', '<', '.', 'e', 'n', 'v', 'o', 'y',
-'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't',
-'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm',
-'e', 't', 'e', 'r', 'H', '\000', 'R', '\016', 'q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '\022', '^', '\n',
-'\014', 'f', 'i', 'l', 't', 'e', 'r', '_', 's', 't', 'a', 't', 'e', '\030', '\006', ' ', '\001', '(', '\013', '2', '9', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A',
-'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'F', 'i', 'l', 't', 'e', 'r', 'S', 't',
-'a', 't', 'e', 'H', '\000', 'R', '\013', 'f', 'i', 'l', 't', 'e', 'r', 'S', 't', 'a', 't', 'e', '\022', '\032', '\n', '\010', 't', 'e', 'r',
-'m', 'i', 'n', 'a', 'l', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\010', 't', 'e', 'r', 'm', 'i', 'n', 'a', 'l', '\032', '\306', '\001', '\n',
-'\006', 'H', 'e', 'a', 'd', 'e', 'r', '\022', '.', '\n', '\013', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ',
-'\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\n', 'h', 'e', 'a', 'd', 'e',
-'r', 'N', 'a', 'm', 'e', '\022', 'S', '\n', '\r', 'r', 'e', 'g', 'e', 'x', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '\030', '\002', ' ',
-'\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.',
-'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'A', 'n', 'd', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't',
-'e', 'R', '\014', 'r', 'e', 'g', 'e', 'x', 'R', 'e', 'w', 'r', 'i', 't', 'e', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e',
-'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c',
-'t', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'H', 'e', 'a', 'd', 'e', 'r', '\032', '\237', '\001',
-'\n', '\006', 'C', 'o', 'o', 'k', 'i', 'e', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372',
-'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '+', '\n', '\003', 't', 't', 'l', '\030', '\002', ' ', '\001', '(', '\013',
-'2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i',
-'o', 'n', 'R', '\003', 't', 't', 'l', '\022', '\022', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\004', 'p', 'a',
-'t', 'h', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r',
-'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i',
-'c', 'y', '.', 'C', 'o', 'o', 'k', 'i', 'e', '\032', 'z', '\n', '\024', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'P', 'r',
-'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\022', '\033', '\n', '\t', 's', 'o', 'u', 'r', 'c', 'e', '_', 'i', 'p', '\030', '\001', ' ', '\001',
-'(', '\010', 'R', '\010', 's', 'o', 'u', 'r', 'c', 'e', 'I', 'p', ':', 'E', '\232', '\305', '\210', '\036', '@', '\n', '>', 'e', 'n', 'v', 'o',
-'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o',
-'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'P', 'r',
-'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\032', 'n', '\n', '\016', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e',
-'r', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R',
-'\004', 'n', 'a', 'm', 'e', ':', '?', '\232', '\305', '\210', '\036', ':', '\n', '8', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v',
-'2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P',
-'o', 'l', 'i', 'c', 'y', '.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '\032', 'f', '\n', '\013', 'F',
-'i', 'l', 't', 'e', 'r', 'S', 't', 'a', 't', 'e', '\022', '\031', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007',
-'\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\003', 'k', 'e', 'y', ':', '<', '\232', '\305', '\210', '\036', '7', '\n', '5', 'e', 'n', 'v', 'o',
+'c', 'y', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'H', '\000', 'R', '\006', 'h', 'e', 'a', 'd', 'e', 'r', '\022', 'N', '\n', '\006', 'c', 'o',
+'o', 'k', 'i', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's',
+'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'C', 'o', 'o', 'k', 'i', 'e', 'H', '\000', 'R', '\006', 'c', 'o', 'o', 'k', 'i', 'e', '\022',
+'y', '\n', '\025', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\030',
+'\003', ' ', '\001', '(', '\013', '2', 'B', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't',
+'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i',
+'c', 'y', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', 'H', '\000',
+'R', '\024', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\022', 'g', '\n',
+'\017', 'q', 'u', 'e', 'r', 'y', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '\030', '\005', ' ', '\001', '(', '\013', '2', '<', '.',
+'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u',
+'t', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'Q', 'u', 'e', 'r', 'y',
+'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'H', '\000', 'R', '\016', 'q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't',
+'e', 'r', '\022', '^', '\n', '\014', 'f', 'i', 'l', 't', 'e', 'r', '_', 's', 't', 'a', 't', 'e', '\030', '\006', ' ', '\001', '(', '\013', '2',
+'9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R',
+'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'F', 'i', 'l',
+'t', 'e', 'r', 'S', 't', 'a', 't', 'e', 'H', '\000', 'R', '\013', 'f', 'i', 'l', 't', 'e', 'r', 'S', 't', 'a', 't', 'e', '\022', '\032',
+'\n', '\010', 't', 'e', 'r', 'm', 'i', 'n', 'a', 'l', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\010', 't', 'e', 'r', 'm', 'i', 'n', 'a',
+'l', '\032', '\306', '\001', '\n', '\006', 'H', 'e', 'a', 'd', 'e', 'r', '\022', '.', '\n', '\013', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'n', 'a',
+'m', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\n',
+'h', 'e', 'a', 'd', 'e', 'r', 'N', 'a', 'm', 'e', '\022', 'S', '\n', '\r', 'r', 'e', 'g', 'e', 'x', '_', 'r', 'e', 'w', 'r', 'i',
+'t', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't',
+'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'A', 'n', 'd', 'S', 'u', 'b', 's',
+'t', 'i', 't', 'u', 't', 'e', 'R', '\014', 'r', 'e', 'g', 'e', 'x', 'R', 'e', 'w', 'r', 'i', 't', 'e', ':', '7', '\232', '\305', '\210',
+'\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o',
+'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'H', 'e', 'a', 'd',
+'e', 'r', '\032', '\237', '\001', '\n', '\006', 'C', 'o', 'o', 'k', 'i', 'e', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001',
+'(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '+', '\n', '\003', 't', 't', 'l', '\030',
+'\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D',
+'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\003', 't', 't', 'l', '\022', '\022', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\003', ' ', '\001', '(',
+'\t', 'R', '\004', 'p', 'a', 't', 'h', ':', '7', '\232', '\305', '\210', '\036', '2', '\n', '0', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i',
+'.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's',
+'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'C', 'o', 'o', 'k', 'i', 'e', '\032', 'z', '\n', '\024', 'C', 'o', 'n', 'n', 'e', 'c', 't',
+'i', 'o', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\022', '\033', '\n', '\t', 's', 'o', 'u', 'r', 'c', 'e', '_', 'i',
+'p', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\010', 's', 'o', 'u', 'r', 'c', 'e', 'I', 'p', ':', 'E', '\232', '\305', '\210', '\036', '@', '\n',
+'>', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e',
+'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'C', 'o', 'n', 'n', 'e', 'c', 't',
+'i', 'o', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '\032', 'n', '\n', '\016', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r',
+'a', 'm', 'e', 't', 'e', 'r', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004',
+'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', ':', '?', '\232', '\305', '\210', '\036', ':', '\n', '8', 'e', 'n', 'v', 'o', 'y', '.',
+'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.',
+'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r',
+'\032', 'f', '\n', '\013', 'F', 'i', 'l', 't', 'e', 'r', 'S', 't', 'a', 't', 'e', '\022', '\031', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ',
+'\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\003', 'k', 'e', 'y', ':', '<', '\232', '\305', '\210', '\036', '7', '\n',
+'5', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e',
+'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'F', 'i', 'l', 't', 'e', 'r', 'S',
+'t', 'a', 't', 'e', ':', '0', '\232', '\305', '\210', '\036', '+', '\n', ')', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2',
+'.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o',
+'l', 'i', 'c', 'y', 'B', '\027', '\n', '\020', 'p', 'o', 'l', 'i', 'c', 'y', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022',
+'\003', '\370', 'B', '\001', '\032', '\243', '\003', '\n', '\r', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '0', '\n',
+'\014', 'u', 'p', 'g', 'r', 'a', 'd', 'e', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r',
+'\010', '\020', '\001', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\013', 'u', 'p', 'g', 'r', 'a', 'd', 'e', 'T', 'y', 'p', 'e', '\022', '4', '\n',
+'\007', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
+'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\007', 'e', 'n', 'a', 'b', 'l', 'e',
+'d', '\022', 'e', '\n', '\016', 'c', 'o', 'n', 'n', 'e', 'c', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013',
+'2', '>', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.',
+'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g',
+'.', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\r', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'C', 'o',
+'n', 'f', 'i', 'g', '\032', '\215', '\001', '\n', '\r', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', ']', '\n',
+'\025', 'p', 'r', 'o', 'x', 'y', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ',
+'\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v',
+'3', '.', 'P', 'r', 'o', 'x', 'y', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\023', 'p', 'r',
+'o', 'x', 'y', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\035', '\n', '\n', 'a', 'l', 'l', 'o',
+'w', '_', 'p', 'o', 's', 't', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\t', 'a', 'l', 'l', 'o', 'w', 'P', 'o', 's', 't', ':', '3',
+'\232', '\305', '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e',
+'.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i',
+'g', '\032', '\210', '\002', '\n', '\021', 'M', 'a', 'x', 'S', 't', 'r', 'e', 'a', 'm', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\022', 'I',
+'\n', '\023', 'm', 'a', 'x', '_', 's', 't', 'r', 'e', 'a', 'm', '_', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001',
+'(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a',
+'t', 'i', 'o', 'n', 'R', '\021', 'm', 'a', 'x', 'S', 't', 'r', 'e', 'a', 'm', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\022', 'P',
+'\n', '\027', 'g', 'r', 'p', 'c', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'm', 'a', 'x',
+'\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
+'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\024', 'g', 'r', 'p', 'c', 'T', 'i', 'm', 'e', 'o', 'u', 't', 'H', 'e', 'a', 'd',
+'e', 'r', 'M', 'a', 'x', '\022', 'V', '\n', '\032', 'g', 'r', 'p', 'c', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '_', 'h', 'e', 'a',
+'d', 'e', 'r', '_', 'o', 'f', 'f', 's', 'e', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e',
+'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\027', 'g', 'r', 'p', 'c', 'T',
+'i', 'm', 'e', 'o', 'u', 't', 'H', 'e', 'a', 'd', 'e', 'r', 'O', 'f', 'f', 's', 'e', 't', '\"', '`', '\n', '\033', 'C', 'l', 'u',
+'s', 't', 'e', 'r', 'N', 'o', 't', 'F', 'o', 'u', 'n', 'd', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', '\022',
+'\027', '\n', '\023', 'S', 'E', 'R', 'V', 'I', 'C', 'E', '_', 'U', 'N', 'A', 'V', 'A', 'I', 'L', 'A', 'B', 'L', 'E', '\020', '\000', '\022',
+'\r', '\n', '\t', 'N', 'O', 'T', '_', 'F', 'O', 'U', 'N', 'D', '\020', '\001', '\022', '\031', '\n', '\025', 'I', 'N', 'T', 'E', 'R', 'N', 'A',
+'L', '_', 'S', 'E', 'R', 'V', 'E', 'R', '_', 'E', 'R', 'R', 'O', 'R', '\020', '\002', '\"', '^', '\n', '\026', 'I', 'n', 't', 'e', 'r',
+'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', '\022', '\"', '\n', '\036', 'P', 'A', 'S', 'S',
+'_', 'T', 'H', 'R', 'O', 'U', 'G', 'H', '_', 'I', 'N', 'T', 'E', 'R', 'N', 'A', 'L', '_', 'R', 'E', 'D', 'I', 'R', 'E', 'C',
+'T', '\020', '\000', '\022', '\034', '\n', '\030', 'H', 'A', 'N', 'D', 'L', 'E', '_', 'I', 'N', 'T', 'E', 'R', 'N', 'A', 'L', '_', 'R', 'E',
+'D', 'I', 'R', 'E', 'C', 'T', '\020', '\001', '\032', '\002', '\030', '\001', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o',
'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o',
-'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'F', 'i', 'l', 't', 'e', 'r', 'S', 't', 'a', 't', 'e', ':',
-'0', '\232', '\305', '\210', '\036', '+', '\n', ')', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't',
-'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'a', 's', 'h', 'P', 'o', 'l', 'i', 'c', 'y', 'B',
-'\027', '\n', '\020', 'p', 'o', 'l', 'i', 'c', 'y', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\032',
-'\243', '\003', '\n', '\r', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '0', '\n', '\014', 'u', 'p', 'g', 'r',
-'a', 'd', 'e', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001',
-'\002', '\310', '\001', '\000', 'R', '\013', 'u', 'p', 'g', 'r', 'a', 'd', 'e', 'T', 'y', 'p', 'e', '\022', '4', '\n', '\007', 'e', 'n', 'a', 'b',
-'l', 'e', 'd', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b',
-'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\007', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\022', 'e', '\n', '\016',
-'c', 'o', 'n', 'n', 'e', 'c', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '>', '.', 'e', 'n',
-'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e',
-'A', 'c', 't', 'i', 'o', 'n', '.', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'C', 'o', 'n', 'n',
-'e', 'c', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\r', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\032',
-'\215', '\001', '\n', '\r', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', ']', '\n', '\025', 'p', 'r', 'o', 'x',
-'y', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', ')',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'P', 'r', 'o',
-'x', 'y', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\023', 'p', 'r', 'o', 'x', 'y', 'P', 'r',
-'o', 't', 'o', 'c', 'o', 'l', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\035', '\n', '\n', 'a', 'l', 'l', 'o', 'w', '_', 'p', 'o', 's',
-'t', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\t', 'a', 'l', 'l', 'o', 'w', 'P', 'o', 's', 't', ':', '3', '\232', '\305', '\210', '\036', '.',
-'\n', ',', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't',
-'e', 'A', 'c', 't', 'i', 'o', 'n', '.', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\210', '\002', '\n',
-'\021', 'M', 'a', 'x', 'S', 't', 'r', 'e', 'a', 'm', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\022', 'I', '\n', '\023', 'm', 'a', 'x',
-'_', 's', 't', 'r', 'e', 'a', 'm', '_', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.',
-'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R',
-'\021', 'm', 'a', 'x', 'S', 't', 'r', 'e', 'a', 'm', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', '\022', 'P', '\n', '\027', 'g', 'r', 'p',
-'c', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'm', 'a', 'x', '\030', '\002', ' ', '\001', '(',
-'\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't',
-'i', 'o', 'n', 'R', '\024', 'g', 'r', 'p', 'c', 'T', 'i', 'm', 'e', 'o', 'u', 't', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 'x',
-'\022', 'V', '\n', '\032', 'g', 'r', 'p', 'c', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'o',
-'f', 'f', 's', 'e', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
-'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\027', 'g', 'r', 'p', 'c', 'T', 'i', 'm', 'e', 'o', 'u',
-'t', 'H', 'e', 'a', 'd', 'e', 'r', 'O', 'f', 'f', 's', 'e', 't', '\"', 'E', '\n', '\033', 'C', 'l', 'u', 's', 't', 'e', 'r', 'N',
-'o', 't', 'F', 'o', 'u', 'n', 'd', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', '\022', '\027', '\n', '\023', 'S', 'E',
-'R', 'V', 'I', 'C', 'E', '_', 'U', 'N', 'A', 'V', 'A', 'I', 'L', 'A', 'B', 'L', 'E', '\020', '\000', '\022', '\r', '\n', '\t', 'N', 'O',
-'T', '_', 'F', 'O', 'U', 'N', 'D', '\020', '\001', '\"', '^', '\n', '\026', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i',
-'r', 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', '\022', '\"', '\n', '\036', 'P', 'A', 'S', 'S', '_', 'T', 'H', 'R', 'O', 'U', 'G',
-'H', '_', 'I', 'N', 'T', 'E', 'R', 'N', 'A', 'L', '_', 'R', 'E', 'D', 'I', 'R', 'E', 'C', 'T', '\020', '\000', '\022', '\034', '\n', '\030',
-'H', 'A', 'N', 'D', 'L', 'E', '_', 'I', 'N', 'T', 'E', 'R', 'N', 'A', 'L', '_', 'R', 'E', 'D', 'I', 'R', 'E', 'C', 'T', '\020',
-'\001', '\032', '\002', '\030', '\001', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v',
-'2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'o', 'u', 't', 'e', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\030', '\n', '\021', 'c', 'l',
-'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', 'B', '\030', '\n', '\026', 'h',
-'o', 's', 't', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', '\014',
-'\020', '\r', 'J', '\004', '\010', '\022', '\020', '\023', 'J', '\004', '\010', '\023', '\020', '\024', 'J', '\004', '\010', '\020', '\020', '\021', 'J', '\004', '\010', '\026', '\020',
-'\027', 'J', '\004', '\010', '\025', '\020', '\026', 'J', '\004', '\010', '\n', '\020', '\013', 'R', '\025', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'm', 'i',
-'r', 'r', 'o', 'r', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\"', '\277', '\020', '\n', '\013', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i',
-'c', 'y', '\022', '\031', '\n', '\010', 'r', 'e', 't', 'r', 'y', '_', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'r', 'e', 't',
-'r', 'y', 'O', 'n', '\022', 'R', '\n', '\013', 'n', 'u', 'm', '_', 'r', 'e', 't', 'r', 'i', 'e', 's', '\030', '\002', ' ', '\001', '(', '\013',
-'2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2',
-'V', 'a', 'l', 'u', 'e', 'B', '\023', '\362', '\230', '\376', '\217', '\005', '\r', '\n', '\013', 'm', 'a', 'x', '_', 'r', 'e', 't', 'r', 'i', 'e',
-'s', 'R', '\n', 'n', 'u', 'm', 'R', 'e', 't', 'r', 'i', 'e', 's', '\022', 'A', '\n', '\017', 'p', 'e', 'r', '_', 't', 'r', 'y', '_',
-'t', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
-'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\r', 'p', 'e', 'r', 'T', 'r', 'y', 'T', 'i',
-'m', 'e', 'o', 'u', 't', '\022', 'J', '\n', '\024', 'p', 'e', 'r', '_', 't', 'r', 'y', '_', 'i', 'd', 'l', 'e', '_', 't', 'i', 'm',
-'e', 'o', 'u', 't', '\030', '\r', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
-'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\021', 'p', 'e', 'r', 'T', 'r', 'y', 'I', 'd', 'l', 'e', 'T',
-'i', 'm', 'e', 'o', 'u', 't', '\022', 'W', '\n', '\016', 'r', 'e', 't', 'r', 'y', '_', 'p', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\030',
-'\004', ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't',
-'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'P', 'r', 'i',
-'o', 'r', 'i', 't', 'y', 'R', '\r', 'r', 'e', 't', 'r', 'y', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', 'g', '\n', '\024', 'r',
-'e', 't', 'r', 'y', '_', 'h', 'o', 's', 't', '_', 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\030', '\005', ' ', '\003', '(', '\013',
-'2', '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.',
-'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'H', 'o', 's', 't', 'P', 'r', 'e', 'd',
-'i', 'c', 'a', 't', 'e', 'R', '\022', 'r', 'e', 't', 'r', 'y', 'H', 'o', 's', 't', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e',
-'\022', 'd', '\n', '\030', 'r', 'e', 't', 'r', 'y', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '_', 'p', 'r', 'e', 'd', 'i', 'c', 'a',
-'t', 'e', 's', '\030', '\014', ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
-'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n',
-'f', 'i', 'g', 'R', '\026', 'r', 'e', 't', 'r', 'y', 'O', 'p', 't', 'i', 'o', 'n', 's', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't',
-'e', 's', '\022', 'H', '\n', '!', 'h', 'o', 's', 't', '_', 's', 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', '_', 'r', 'e', 't', 'r',
-'y', '_', 'm', 'a', 'x', '_', 'a', 't', 't', 'e', 'm', 'p', 't', 's', '\030', '\006', ' ', '\001', '(', '\003', 'R', '\035', 'h', 'o', 's',
-'t', 'S', 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', 'R', 'e', 't', 'r', 'y', 'M', 'a', 'x', 'A', 't', 't', 'e', 'm', 'p', 't',
-'s', '\022', '4', '\n', '\026', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', '_', 's', 't', 'a', 't', 'u', 's', '_', 'c', 'o', 'd',
-'e', 's', '\030', '\007', ' ', '\003', '(', '\r', 'R', '\024', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', 'S', 't', 'a', 't', 'u', 's',
-'C', 'o', 'd', 'e', 's', '\022', 'U', '\n', '\016', 'r', 'e', 't', 'r', 'y', '_', 'b', 'a', 'c', 'k', '_', 'o', 'f', 'f', '\030', '\010',
-' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e',
-'.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k',
-'O', 'f', 'f', 'R', '\014', 'r', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', '\022', 'x', '\n', '\033', 'r', 'a', 't', 'e',
-'_', 'l', 'i', 'm', 'i', 't', 'e', 'd', '_', 'r', 'e', 't', 'r', 'y', '_', 'b', 'a', 'c', 'k', '_', 'o', 'f', 'f', '\030', '\013',
-' ', '\001', '(', '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e',
-'.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't',
-'e', 'd', 'R', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', 'R', '\027', 'r', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't',
-'e', 'd', 'R', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', '\022', 'Q', '\n', '\021', 'r', 'e', 't', 'r', 'i', 'a', 'b',
-'l', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.',
-'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't',
-'c', 'h', 'e', 'r', 'R', '\020', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', '`', '\n',
-'\031', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r',
-'s', '\030', '\n', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o',
-'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\027', 'r', 'e', 't',
-'r', 'i', 'a', 'b', 'l', 'e', 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\032', '\271', '\001', '\n', '\r',
-'R', 'e', 't', 'r', 'y', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001',
+'n', 'B', '\030', '\n', '\021', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370',
+'B', '\001', 'B', '\030', '\n', '\026', 'h', 'o', 's', 't', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 's', 'p', 'e', 'c', 'i', 'f',
+'i', 'e', 'r', 'J', '\004', '\010', '\014', '\020', '\r', 'J', '\004', '\010', '\022', '\020', '\023', 'J', '\004', '\010', '\023', '\020', '\024', 'J', '\004', '\010', '\020',
+'\020', '\021', 'J', '\004', '\010', '\026', '\020', '\027', 'J', '\004', '\010', '\025', '\020', '\026', 'J', '\004', '\010', '\n', '\020', '\013', 'R', '\025', 'r', 'e', 'q',
+'u', 'e', 's', 't', '_', 'm', 'i', 'r', 'r', 'o', 'r', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\"', '\277', '\020', '\n', '\013', 'R', 'e',
+'t', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\031', '\n', '\010', 'r', 'e', 't', 'r', 'y', '_', 'o', 'n', '\030', '\001', ' ', '\001',
+'(', '\t', 'R', '\007', 'r', 'e', 't', 'r', 'y', 'O', 'n', '\022', 'R', '\n', '\013', 'n', 'u', 'm', '_', 'r', 'e', 't', 'r', 'i', 'e',
+'s', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
+'.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\023', '\362', '\230', '\376', '\217', '\005', '\r', '\n', '\013', 'm', 'a', 'x',
+'_', 'r', 'e', 't', 'r', 'i', 'e', 's', 'R', '\n', 'n', 'u', 'm', 'R', 'e', 't', 'r', 'i', 'e', 's', '\022', 'A', '\n', '\017', 'p',
+'e', 'r', '_', 't', 'r', 'y', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o',
+'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\r', 'p',
+'e', 'r', 'T', 'r', 'y', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'J', '\n', '\024', 'p', 'e', 'r', '_', 't', 'r', 'y', '_', 'i',
+'d', 'l', 'e', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\r', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l',
+'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\021', 'p', 'e', 'r', 'T',
+'r', 'y', 'I', 'd', 'l', 'e', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'W', '\n', '\016', 'r', 'e', 't', 'r', 'y', '_', 'p', 'r',
+'i', 'o', 'r', 'i', 't', 'y', '\030', '\004', ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
+'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R',
+'e', 't', 'r', 'y', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', 'R', '\r', 'r', 'e', 't', 'r', 'y', 'P', 'r', 'i', 'o', 'r', 'i',
+'t', 'y', '\022', 'g', '\n', '\024', 'r', 'e', 't', 'r', 'y', '_', 'h', 'o', 's', 't', '_', 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't',
+'e', '\030', '\005', ' ', '\003', '(', '\013', '2', '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o',
+'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'H',
+'o', 's', 't', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'R', '\022', 'r', 'e', 't', 'r', 'y', 'H', 'o', 's', 't', 'P', 'r',
+'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', 'd', '\n', '\030', 'r', 'e', 't', 'r', 'y', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '_',
+'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 's', '\030', '\014', ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n',
+'s', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\026', 'r', 'e', 't', 'r', 'y', 'O', 'p', 't', 'i', 'o', 'n', 's', 'P',
+'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 's', '\022', 'H', '\n', '!', 'h', 'o', 's', 't', '_', 's', 'e', 'l', 'e', 'c', 't', 'i',
+'o', 'n', '_', 'r', 'e', 't', 'r', 'y', '_', 'm', 'a', 'x', '_', 'a', 't', 't', 'e', 'm', 'p', 't', 's', '\030', '\006', ' ', '\001',
+'(', '\003', 'R', '\035', 'h', 'o', 's', 't', 'S', 'e', 'l', 'e', 'c', 't', 'i', 'o', 'n', 'R', 'e', 't', 'r', 'y', 'M', 'a', 'x',
+'A', 't', 't', 'e', 'm', 'p', 't', 's', '\022', '4', '\n', '\026', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', '_', 's', 't', 'a',
+'t', 'u', 's', '_', 'c', 'o', 'd', 'e', 's', '\030', '\007', ' ', '\003', '(', '\r', 'R', '\024', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l',
+'e', 'S', 't', 'a', 't', 'u', 's', 'C', 'o', 'd', 'e', 's', '\022', 'U', '\n', '\016', 'r', 'e', 't', 'r', 'y', '_', 'b', 'a', 'c',
+'k', '_', 'o', 'f', 'f', '\030', '\010', ' ', '\001', '(', '\013', '2', '/', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
+'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e',
+'t', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', 'R', '\014', 'r', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', '\022',
+'x', '\n', '\033', 'r', 'a', 't', 'e', '_', 'l', 'i', 'm', 'i', 't', 'e', 'd', '_', 'r', 'e', 't', 'r', 'y', '_', 'b', 'a', 'c',
+'k', '_', 'o', 'f', 'f', '\030', '\013', ' ', '\001', '(', '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
+'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'a',
+'t', 'e', 'L', 'i', 'm', 'i', 't', 'e', 'd', 'R', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', 'R', '\027', 'r', 'a',
+'t', 'e', 'L', 'i', 'm', 'i', 't', 'e', 'd', 'R', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', '\022', 'Q', '\n', '\021',
+'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\t', ' ', '\003', '(', '\013', '2', '$',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e',
+'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\020', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', 'H', 'e', 'a',
+'d', 'e', 'r', 's', '\022', '`', '\n', '\031', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', '_', 'r', 'e', 'q', 'u', 'e', 's', 't',
+'_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\n', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
+'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h',
+'e', 'r', 'R', '\027', 'r', 'e', 't', 'r', 'i', 'a', 'b', 'l', 'e', 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e',
+'r', 's', '\032', '\271', '\001', '\n', '\r', 'R', 'e', 't', 'r', 'y', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', '\022', '\033', '\n', '\004', 'n',
+'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022',
+'9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'g',
+'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p',
+'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', ':', '3', '\232', '\305', '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p',
+'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e',
+'t', 'r', 'y', 'P', 'r', 'i', 'o', 'r', 'i', 't', 'y', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p',
+'e', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\032', '\303', '\001', '\n', '\022', 'R', 'e', 't', 'r', 'y',
+'H', 'o', 's', 't', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001',
'(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e',
'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i',
-'g', ':', '3', '\232', '\305', '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o',
-'u', 't', 'e', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'P', 'r', 'i', 'o',
-'r', 'i', 't', 'y', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\002', '\020', '\003',
-'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\032', '\303', '\001', '\n', '\022', 'R', 'e', 't', 'r', 'y', 'H', 'o', 's', 't', 'P', 'r', 'e',
-'d', 'i', 'c', 'a', 't', 'e', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004',
-'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '9', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i',
-'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
-'.', 'A', 'n', 'y', 'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', ':', '8', '\232', '\305', '\210', '\036',
-'3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'e', 't',
-'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'H', 'o', 's', 't', 'P', 'r', 'e', 'd', 'i', 'c', 'a',
-'t', 'e', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\006',
-'c', 'o', 'n', 'f', 'i', 'g', '\032', '\326', '\001', '\n', '\014', 'R', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', '\022', 'J',
-'\n', '\r', 'b', 'a', 's', 'e', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\001', ' ', '\001', '(', '\013', '2', '\031', '.', 'g',
-'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\n',
-'\372', 'B', '\007', '\252', '\001', '\004', '\010', '\001', '*', '\000', 'R', '\014', 'b', 'a', 's', 'e', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\022',
-'F', '\n', '\014', 'm', 'a', 'x', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g',
-'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\010',
-'\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\013', 'm', 'a', 'x', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', ':', '2', '\232', '\305',
-'\210', '\036', '-', '\n', '+', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R',
-'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', '\032', '\210',
-'\001', '\n', '\013', 'R', 'e', 's', 'e', 't', 'H', 'e', 'a', 'd', 'e', 'r', '\022', '!', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ',
-'\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\004', 'n', 'a', 'm', 'e', '\022',
-'V', '\n', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\002', ' ', '\001', '(', '\016', '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
-'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c',
-'y', '.', 'R', 'e', 's', 'e', 't', 'H', 'e', 'a', 'd', 'e', 'r', 'F', 'o', 'r', 'm', 'a', 't', 'B', '\010', '\372', 'B', '\005', '\202',
-'\001', '\002', '\020', '\001', 'R', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\032', '\300', '\001', '\n', '\027', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i',
-'t', 'e', 'd', 'R', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', '\022', ']', '\n', '\r', 'r', 'e', 's', 'e', 't', '_',
-'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
-'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.',
-'R', 'e', 's', 'e', 't', 'H', 'e', 'a', 'd', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\014', 'r', 'e',
-'s', 'e', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', 'F', '\n', '\014', 'm', 'a', 'x', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a',
-'l', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
-'.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\013', 'm', 'a', 'x', 'I',
-'n', 't', 'e', 'r', 'v', 'a', 'l', '\"', '4', '\n', '\021', 'R', 'e', 's', 'e', 't', 'H', 'e', 'a', 'd', 'e', 'r', 'F', 'o', 'r',
-'m', 'a', 't', '\022', '\013', '\n', '\007', 'S', 'E', 'C', 'O', 'N', 'D', 'S', '\020', '\000', '\022', '\022', '\n', '\016', 'U', 'N', 'I', 'X', '_',
-'T', 'I', 'M', 'E', 'S', 'T', 'A', 'M', 'P', '\020', '\001', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y',
-'.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y',
-'\"', '\234', '\002', '\n', '\013', 'H', 'e', 'd', 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'P', '\n', '\020', 'i', 'n', 'i', 't', 'i',
-'a', 'l', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l',
-'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372',
-'B', '\004', '*', '\002', '(', '\001', 'R', '\017', 'i', 'n', 'i', 't', 'i', 'a', 'l', 'R', 'e', 'q', 'u', 'e', 's', 't', 's', '\022', '\\',
-'\n', '\031', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'c', 'h', 'a', 'n',
-'c', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.',
-'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\027', 'a', 'd', 'd', 'i', 't', 'i',
-'o', 'n', 'a', 'l', 'R', 'e', 'q', 'u', 'e', 's', 't', 'C', 'h', 'a', 'n', 'c', 'e', '\022', '6', '\n', '\030', 'h', 'e', 'd', 'g',
-'e', '_', 'o', 'n', '_', 'p', 'e', 'r', '_', 't', 'r', 'y', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\003', ' ', '\001', '(',
-'\010', 'R', '\024', 'h', 'e', 'd', 'g', 'e', 'O', 'n', 'P', 'e', 'r', 'T', 'r', 'y', 'T', 'i', 'm', 'e', 'o', 'u', 't', ':', '%',
-'\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e',
-'.', 'H', 'e', 'd', 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\"', '\341', '\005', '\n', '\016', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't',
-'A', 'c', 't', 'i', 'o', 'n', '\022', '\'', '\n', '\016', 'h', 't', 't', 'p', 's', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030',
-'\004', ' ', '\001', '(', '\010', 'H', '\000', 'R', '\r', 'h', 't', 't', 'p', 's', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\022', ')', '\n',
-'\017', 's', 'c', 'h', 'e', 'm', 'e', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', '\007', ' ', '\001', '(', '\t', 'H', '\000', 'R',
-'\016', 's', 'c', 'h', 'e', 'm', 'e', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\022', '0', '\n', '\r', 'h', 'o', 's', 't', '_', 'r',
-'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001',
-'\000', 'R', '\014', 'h', 'o', 's', 't', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\022', '#', '\n', '\r', 'p', 'o', 'r', 't', '_', 'r',
-'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', '\010', ' ', '\001', '(', '\r', 'R', '\014', 'p', 'o', 'r', 't', 'R', 'e', 'd', 'i', 'r', 'e',
-'c', 't', '\022', '2', '\n', '\r', 'p', 'a', 't', 'h', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', '\002', ' ', '\001', '(', '\t',
-'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'H', '\001', 'R', '\014', 'p', 'a', 't', 'h', 'R', 'e', 'd', 'i',
-'r', 'e', 'c', 't', '\022', '4', '\n', '\016', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '\030', '\005', ' ',
-'\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'H', '\001', 'R', '\r', 'p', 'r', 'e', 'f', 'i',
-'x', 'R', 'e', 'w', 'r', 'i', 't', 'e', '\022', 'U', '\n', '\r', 'r', 'e', 'g', 'e', 'x', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e',
-'\030', '\t', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h',
-'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'A', 'n', 'd', 'S', 'u', 'b', 's', 't', 'i',
-'t', 'u', 't', 'e', 'H', '\001', 'R', '\014', 'r', 'e', 'g', 'e', 'x', 'R', 'e', 'w', 'r', 'i', 't', 'e', '\022', 'i', '\n', '\r', 'r',
-'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'c', 'o', 'd', 'e', '\030', '\003', ' ', '\001', '(', '\016', '2', ':', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 'd', 'i', 'r', 'e', 'c',
-'t', 'A', 'c', 't', 'i', 'o', 'n', '.', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C',
-'o', 'd', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\014', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C', 'o',
-'d', 'e', '\022', '\037', '\n', '\013', 's', 't', 'r', 'i', 'p', '_', 'q', 'u', 'e', 'r', 'y', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\n',
-'s', 't', 'r', 'i', 'p', 'Q', 'u', 'e', 'r', 'y', '\"', 'w', '\n', '\024', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's',
-'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', '\022', '\025', '\n', '\021', 'M', 'O', 'V', 'E', 'D', '_', 'P', 'E', 'R', 'M', 'A', 'N',
-'E', 'N', 'T', 'L', 'Y', '\020', '\000', '\022', '\t', '\n', '\005', 'F', 'O', 'U', 'N', 'D', '\020', '\001', '\022', '\r', '\n', '\t', 'S', 'E', 'E',
-'_', 'O', 'T', 'H', 'E', 'R', '\020', '\002', '\022', '\026', '\n', '\022', 'T', 'E', 'M', 'P', 'O', 'R', 'A', 'R', 'Y', '_', 'R', 'E', 'D',
-'I', 'R', 'E', 'C', 'T', '\020', '\003', '\022', '\026', '\n', '\022', 'P', 'E', 'R', 'M', 'A', 'N', 'E', 'N', 'T', '_', 'R', 'E', 'D', 'I',
-'R', 'E', 'C', 'T', '\020', '\004', ':', '(', '\232', '\305', '\210', '\036', '#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.',
-'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\032',
-'\n', '\030', 's', 'c', 'h', 'e', 'm', 'e', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e',
-'r', 'B', '\030', '\n', '\026', 'p', 'a', 't', 'h', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i',
-'e', 'r', '\"', '\241', '\001', '\n', '\024', 'D', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'A', 'c', 't', 'i',
-'o', 'n', '\022', '#', '\n', '\006', 's', 't', 'a', 't', 'u', 's', '\030', '\001', ' ', '\001', '(', '\r', 'B', '\013', '\372', 'B', '\010', '*', '\006',
-'\020', '\330', '\004', '(', '\310', '\001', 'R', '\006', 's', 't', 'a', 't', 'u', 's', '\022', '4', '\n', '\004', 'b', 'o', 'd', 'y', '\030', '\002', ' ',
-'\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v',
-'3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\004', 'b', 'o', 'd', 'y', ':', '.', '\232', '\305', '\210', '\036', ')',
-'\n', '\'', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'D', 'i', 'r', 'e',
-'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'A', 'c', 't', 'i', 'o', 'n', '\"', '\025', '\n', '\023', 'N', 'o', 'n', 'F', 'o',
-'r', 'w', 'a', 'r', 'd', 'i', 'n', 'g', 'A', 'c', 't', 'i', 'o', 'n', '\"', '\221', '\001', '\n', '\t', 'D', 'e', 'c', 'o', 'r', 'a',
-'t', 'o', 'r', '\022', '%', '\n', '\t', 'o', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372',
-'B', '\004', 'r', '\002', '\020', '\001', 'R', '\t', 'o', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', '\022', '8', '\n', '\t', 'p', 'r', 'o', 'p',
-'a', 'g', 'a', 't', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
-'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\t', 'p', 'r', 'o', 'p', 'a', 'g', 'a', 't', 'e',
-':', '#', '\232', '\305', '\210', '\036', '\036', '\n', '\034', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u',
-'t', 'e', '.', 'D', 'e', 'c', 'o', 'r', 'a', 't', 'o', 'r', '\"', '\322', '\002', '\n', '\007', 'T', 'r', 'a', 'c', 'i', 'n', 'g', '\022',
-'I', '\n', '\017', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2',
-' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a',
-'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\016', 'c', 'l', 'i', 'e', 'n', 't', 'S', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\022',
-'I', '\n', '\017', 'r', 'a', 'n', 'd', 'o', 'm', '_', 's', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2',
-' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a',
-'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\016', 'r', 'a', 'n', 'd', 'o', 'm', 'S', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\022',
-'K', '\n', '\020', 'o', 'v', 'e', 'r', 'a', 'l', 'l', '_', 's', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\030', '\003', ' ', '\001', '(', '\013',
-'2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n',
-'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\017', 'o', 'v', 'e', 'r', 'a', 'l', 'l', 'S', 'a', 'm', 'p', 'l', 'i', 'n',
-'g', '\022', 'A', '\n', '\013', 'c', 'u', 's', 't', 'o', 'm', '_', 't', 'a', 'g', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', ' ', '.',
-'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 't', 'r', 'a', 'c', 'i', 'n', 'g', '.', 'v', '3', '.', 'C', 'u', 's',
-'t', 'o', 'm', 'T', 'a', 'g', 'R', '\n', 'c', 'u', 's', 't', 'o', 'm', 'T', 'a', 'g', 's', ':', '!', '\232', '\305', '\210', '\036', '\034',
-'\n', '\032', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'T', 'r', 'a', 'c',
-'i', 'n', 'g', '\"', '\264', '\001', '\n', '\016', 'V', 'i', 'r', 't', 'u', 'a', 'l', 'C', 'l', 'u', 's', 't', 'e', 'r', '\022', '>', '\n',
-'\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
-'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h',
-'e', 'r', 'R', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t',
-'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', ':', '(', '\232', '\305', '\210', '\036', '#', '\n', '!', 'e',
-'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'V', 'i', 'r', 't', 'u', 'a', 'l',
-'C', 'l', 'u', 's', 't', 'e', 'r', 'J', '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', '\003', '\020', '\004', 'R', '\007', 'p', 'a', 't', 't',
-'e', 'r', 'n', 'R', '\006', 'm', 'e', 't', 'h', 'o', 'd', '\"', '\252', '\026', '\n', '\t', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't',
-'\022', ';', '\n', '\005', 's', 't', 'a', 'g', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.',
-'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004',
-'*', '\002', '\030', '\n', 'R', '\005', 's', 't', 'a', 'g', 'e', '\022', '\037', '\n', '\013', 'd', 'i', 's', 'a', 'b', 'l', 'e', '_', 'k', 'e',
-'y', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 'd', 'i', 's', 'a', 'b', 'l', 'e', 'K', 'e', 'y', '\022', 'K', '\n', '\007', 'a', 'c',
-'t', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
+'g', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o',
+'u', 't', 'e', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'H', 'o', 's', 't',
+'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'B', '\r', '\n', '\013', 'c', 'o', 'n', 'f', 'i', 'g', '_', 't', 'y', 'p', 'e', 'J',
+'\004', '\010', '\002', '\020', '\003', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\032', '\326', '\001', '\n', '\014', 'R', 'e', 't', 'r', 'y', 'B', 'a',
+'c', 'k', 'O', 'f', 'f', '\022', 'J', '\n', '\r', 'b', 'a', 's', 'e', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\001', ' ',
+'\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r',
+'a', 't', 'i', 'o', 'n', 'B', '\n', '\372', 'B', '\007', '\252', '\001', '\004', '\010', '\001', '*', '\000', 'R', '\014', 'b', 'a', 's', 'e', 'I', 'n',
+'t', 'e', 'r', 'v', 'a', 'l', '\022', 'F', '\n', '\014', 'm', 'a', 'x', '_', 'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\002', ' ',
+'\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r',
+'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '*', '\000', 'R', '\013', 'm', 'a', 'x', 'I', 'n', 't', 'e', 'r',
+'v', 'a', 'l', ':', '2', '\232', '\305', '\210', '\036', '-', '\n', '+', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.',
+'r', 'o', 'u', 't', 'e', '.', 'R', 'e', 't', 'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e', 't', 'r', 'y', 'B', 'a',
+'c', 'k', 'O', 'f', 'f', '\032', '\210', '\001', '\n', '\013', 'R', 'e', 's', 'e', 't', 'H', 'e', 'a', 'd', 'e', 'r', '\022', '!', '\n', '\004',
+'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000',
+'R', '\004', 'n', 'a', 'm', 'e', '\022', 'V', '\n', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\002', ' ', '\001', '(', '\016', '2', '4', '.',
+'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 't',
+'r', 'y', 'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e', 's', 'e', 't', 'H', 'e', 'a', 'd', 'e', 'r', 'F', 'o', 'r', 'm', 'a',
+'t', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\032', '\300', '\001', '\n', '\027', 'R',
+'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 'e', 'd', 'R', 'e', 't', 'r', 'y', 'B', 'a', 'c', 'k', 'O', 'f', 'f', '\022', ']', '\n',
+'\r', 'r', 'e', 's', 'e', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '.', '.', 'e', 'n',
+'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'e', 't', 'r', 'y',
+'P', 'o', 'l', 'i', 'c', 'y', '.', 'R', 'e', 's', 'e', 't', 'H', 'e', 'a', 'd', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001',
+'\002', '\010', '\001', 'R', '\014', 'r', 'e', 's', 'e', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', 'F', '\n', '\014', 'm', 'a', 'x', '_',
+'i', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
+'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\252', '\001', '\002', '*',
+'\000', 'R', '\013', 'm', 'a', 'x', 'I', 'n', 't', 'e', 'r', 'v', 'a', 'l', '\"', '4', '\n', '\021', 'R', 'e', 's', 'e', 't', 'H', 'e',
+'a', 'd', 'e', 'r', 'F', 'o', 'r', 'm', 'a', 't', '\022', '\013', '\n', '\007', 'S', 'E', 'C', 'O', 'N', 'D', 'S', '\020', '\000', '\022', '\022',
+'\n', '\016', 'U', 'N', 'I', 'X', '_', 'T', 'I', 'M', 'E', 'S', 'T', 'A', 'M', 'P', '\020', '\001', ':', '%', '\232', '\305', '\210', '\036', ' ',
+'\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'e', 't', 'r',
+'y', 'P', 'o', 'l', 'i', 'c', 'y', '\"', '\234', '\002', '\n', '\013', 'H', 'e', 'd', 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'P',
+'\n', '\020', 'i', 'n', 'i', 't', 'i', 'a', 'l', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', 's', '\030', '\001', ' ', '\001', '(', '\013', '2',
+'\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V',
+'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '(', '\001', 'R', '\017', 'i', 'n', 'i', 't', 'i', 'a', 'l', 'R', 'e', 'q',
+'u', 'e', 's', 't', 's', '\022', '\\', '\n', '\031', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', '_', 'r', 'e', 'q', 'u', 'e',
+'s', 't', '_', 'c', 'h', 'a', 'n', 'c', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't',
+'y', 'p', 'e', '.', 'v', '3', '.', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R',
+'\027', 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 'R', 'e', 'q', 'u', 'e', 's', 't', 'C', 'h', 'a', 'n', 'c', 'e', '\022',
+'6', '\n', '\030', 'h', 'e', 'd', 'g', 'e', '_', 'o', 'n', '_', 'p', 'e', 'r', '_', 't', 'r', 'y', '_', 't', 'i', 'm', 'e', 'o',
+'u', 't', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\024', 'h', 'e', 'd', 'g', 'e', 'O', 'n', 'P', 'e', 'r', 'T', 'r', 'y', 'T', 'i',
+'m', 'e', 'o', 'u', 't', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v',
+'2', '.', 'r', 'o', 'u', 't', 'e', '.', 'H', 'e', 'd', 'g', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\"', '\341', '\005', '\n', '\016', 'R',
+'e', 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', '\022', '\'', '\n', '\016', 'h', 't', 't', 'p', 's', '_', 'r', 'e',
+'d', 'i', 'r', 'e', 'c', 't', '\030', '\004', ' ', '\001', '(', '\010', 'H', '\000', 'R', '\r', 'h', 't', 't', 'p', 's', 'R', 'e', 'd', 'i',
+'r', 'e', 'c', 't', '\022', ')', '\n', '\017', 's', 'c', 'h', 'e', 'm', 'e', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', '\007',
+' ', '\001', '(', '\t', 'H', '\000', 'R', '\016', 's', 'c', 'h', 'e', 'm', 'e', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\022', '0', '\n',
+'\r', 'h', 'o', 's', 't', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010',
+'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\014', 'h', 'o', 's', 't', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\022', '#', '\n',
+'\r', 'p', 'o', 'r', 't', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', '\010', ' ', '\001', '(', '\r', 'R', '\014', 'p', 'o', 'r',
+'t', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\022', '2', '\n', '\r', 'p', 'a', 't', 'h', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c',
+'t', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'H', '\001', 'R', '\014', 'p',
+'a', 't', 'h', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\022', '4', '\n', '\016', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'r', 'e', 'w',
+'r', 'i', 't', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'H', '\001',
+'R', '\r', 'p', 'r', 'e', 'f', 'i', 'x', 'R', 'e', 'w', 'r', 'i', 't', 'e', '\022', 'U', '\n', '\r', 'r', 'e', 'g', 'e', 'x', '_',
+'r', 'e', 'w', 'r', 'i', 't', 'e', '\030', '\t', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p',
+'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'A', 'n',
+'d', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'e', 'H', '\001', 'R', '\014', 'r', 'e', 'g', 'e', 'x', 'R', 'e', 'w', 'r', 'i',
+'t', 'e', '\022', 'i', '\n', '\r', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'c', 'o', 'd', 'e', '\030', '\003', ' ', '\001', '(', '\016',
+'2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.',
+'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'A', 'c', 't', 'i', 'o', 'n', '.', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'R', 'e',
+'s', 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\014', 'r', 'e', 's',
+'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', '\022', '\037', '\n', '\013', 's', 't', 'r', 'i', 'p', '_', 'q', 'u', 'e', 'r', 'y', '\030',
+'\006', ' ', '\001', '(', '\010', 'R', '\n', 's', 't', 'r', 'i', 'p', 'Q', 'u', 'e', 'r', 'y', '\"', 'w', '\n', '\024', 'R', 'e', 'd', 'i',
+'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', '\022', '\025', '\n', '\021', 'M', 'O', 'V', 'E', 'D',
+'_', 'P', 'E', 'R', 'M', 'A', 'N', 'E', 'N', 'T', 'L', 'Y', '\020', '\000', '\022', '\t', '\n', '\005', 'F', 'O', 'U', 'N', 'D', '\020', '\001',
+'\022', '\r', '\n', '\t', 'S', 'E', 'E', '_', 'O', 'T', 'H', 'E', 'R', '\020', '\002', '\022', '\026', '\n', '\022', 'T', 'E', 'M', 'P', 'O', 'R',
+'A', 'R', 'Y', '_', 'R', 'E', 'D', 'I', 'R', 'E', 'C', 'T', '\020', '\003', '\022', '\026', '\n', '\022', 'P', 'E', 'R', 'M', 'A', 'N', 'E',
+'N', 'T', '_', 'R', 'E', 'D', 'I', 'R', 'E', 'C', 'T', '\020', '\004', ':', '(', '\232', '\305', '\210', '\036', '#', '\n', '!', 'e', 'n', 'v',
+'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'A',
+'c', 't', 'i', 'o', 'n', 'B', '\032', '\n', '\030', 's', 'c', 'h', 'e', 'm', 'e', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_', 's',
+'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'B', '\030', '\n', '\026', 'p', 'a', 't', 'h', '_', 'r', 'e', 'w', 'r', 'i', 't', 'e', '_',
+'s', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\"', '\241', '\001', '\n', '\024', 'D', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o',
+'n', 's', 'e', 'A', 'c', 't', 'i', 'o', 'n', '\022', '#', '\n', '\006', 's', 't', 'a', 't', 'u', 's', '\030', '\001', ' ', '\001', '(', '\r',
+'B', '\013', '\372', 'B', '\010', '*', '\006', '\020', '\330', '\004', '(', '\310', '\001', 'R', '\006', 's', 't', 'a', 't', 'u', 's', '\022', '4', '\n', '\004',
+'b', 'o', 'd', 'y', '\030', '\002', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c', 'e', 'R', '\004', 'b', 'o', 'd', 'y',
+':', '.', '\232', '\305', '\210', '\036', ')', '\n', '\'', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u',
+'t', 'e', '.', 'D', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'A', 'c', 't', 'i', 'o', 'n', '\"', '\025',
+'\n', '\023', 'N', 'o', 'n', 'F', 'o', 'r', 'w', 'a', 'r', 'd', 'i', 'n', 'g', 'A', 'c', 't', 'i', 'o', 'n', '\"', '\221', '\001', '\n',
+'\t', 'D', 'e', 'c', 'o', 'r', 'a', 't', 'o', 'r', '\022', '%', '\n', '\t', 'o', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', '\030', '\001',
+' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\t', 'o', 'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', '\022',
+'8', '\n', '\t', 'p', 'r', 'o', 'p', 'a', 'g', 'a', 't', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g',
+'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\t', 'p', 'r',
+'o', 'p', 'a', 'g', 'a', 't', 'e', ':', '#', '\232', '\305', '\210', '\036', '\036', '\n', '\034', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i',
+'.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'D', 'e', 'c', 'o', 'r', 'a', 't', 'o', 'r', '\"', '\322', '\002', '\n', '\007', 'T',
+'r', 'a', 'c', 'i', 'n', 'g', '\022', 'I', '\n', '\017', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', 'a', 'm', 'p', 'l', 'i', 'n', 'g',
+'\030', '\001', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'F', 'r',
+'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\016', 'c', 'l', 'i', 'e', 'n', 't', 'S', 'a',
+'m', 'p', 'l', 'i', 'n', 'g', '\022', 'I', '\n', '\017', 'r', 'a', 'n', 'd', 'o', 'm', '_', 's', 'a', 'm', 'p', 'l', 'i', 'n', 'g',
+'\030', '\002', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'F', 'r',
+'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\016', 'r', 'a', 'n', 'd', 'o', 'm', 'S', 'a',
+'m', 'p', 'l', 'i', 'n', 'g', '\022', 'K', '\n', '\020', 'o', 'v', 'e', 'r', 'a', 'l', 'l', '_', 's', 'a', 'm', 'p', 'l', 'i', 'n',
+'g', '\030', '\003', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'F',
+'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\017', 'o', 'v', 'e', 'r', 'a', 'l', 'l',
+'S', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\022', 'A', '\n', '\013', 'c', 'u', 's', 't', 'o', 'm', '_', 't', 'a', 'g', 's', '\030', '\004',
+' ', '\003', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 't', 'r', 'a', 'c', 'i', 'n', 'g',
+'.', 'v', '3', '.', 'C', 'u', 's', 't', 'o', 'm', 'T', 'a', 'g', 'R', '\n', 'c', 'u', 's', 't', 'o', 'm', 'T', 'a', 'g', 's',
+':', '!', '\232', '\305', '\210', '\036', '\034', '\n', '\032', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u',
+'t', 'e', '.', 'T', 'r', 'a', 'c', 'i', 'n', 'g', '\"', '\264', '\001', '\n', '\016', 'V', 'i', 'r', 't', 'u', 'a', 'l', 'C', 'l', 'u',
+'s', 't', 'e', 'r', '\022', '>', '\n', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '$', '.', 'e',
+'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd',
+'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\022', '\033', '\n', '\004', 'n', 'a', 'm',
+'e', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', ':', '(', '\232',
+'\305', '\210', '\036', '#', '\n', '!', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.',
+'V', 'i', 'r', 't', 'u', 'a', 'l', 'C', 'l', 'u', 's', 't', 'e', 'r', 'J', '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', '\003', '\020',
+'\004', 'R', '\007', 'p', 'a', 't', 't', 'e', 'r', 'n', 'R', '\006', 'm', 'e', 't', 'h', 'o', 'd', '\"', '\205', '\031', '\n', '\t', 'R', 'a',
+'t', 'e', 'L', 'i', 'm', 'i', 't', '\022', ';', '\n', '\005', 's', 't', 'a', 'g', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.',
+'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l',
+'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '\030', '\n', 'R', '\005', 's', 't', 'a', 'g', 'e', '\022', '\037', '\n', '\013', 'd', 'i', 's',
+'a', 'b', 'l', 'e', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 'd', 'i', 's', 'a', 'b', 'l', 'e', 'K', 'e',
+'y', '\022', 'K', '\n', '\007', 'a', 'c', 't', 'i', 'o', 'n', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm',
+'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\007', 'a', 'c', 't', 'i',
+'o', 'n', 's', '\022', '?', '\n', '\005', 'l', 'i', 'm', 'i', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm',
+'i', 't', '.', 'O', 'v', 'e', 'r', 'r', 'i', 'd', 'e', 'R', '\005', 'l', 'i', 'm', 'i', 't', '\032', '\361', '\024', '\n', '\006', 'A', 'c',
+'t', 'i', 'o', 'n', '\022', '^', '\n', '\016', 's', 'o', 'u', 'r', 'c', 'e', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\001', ' ',
+'\001', '(', '\013', '2', '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.',
+'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'S', 'o', 'u', 'r', 'c',
+'e', 'C', 'l', 'u', 's', 't', 'e', 'r', 'H', '\000', 'R', '\r', 's', 'o', 'u', 'r', 'c', 'e', 'C', 'l', 'u', 's', 't', 'e', 'r',
+'\022', 'm', '\n', '\023', 'd', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\002',
+' ', '\001', '(', '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e',
+'.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'D', 'e', 's', 't',
+'i', 'n', 'a', 't', 'i', 'o', 'n', 'C', 'l', 'u', 's', 't', 'e', 'r', 'H', '\000', 'R', '\022', 'd', 'e', 's', 't', 'i', 'n', 'a',
+'t', 'i', 'o', 'n', 'C', 'l', 'u', 's', 't', 'e', 'r', '\022', 'a', '\n', '\017', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e',
+'a', 'd', 'e', 'r', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '6', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i',
-'o', 'n', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\007', 'a', 'c', 't', 'i', 'o', 'n', 's', '\022', '?', '\n', '\005',
-'l', 'i', 'm', 'i', 't', '\030', '\004', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'O', 'v', 'e', 'r',
-'r', 'i', 'd', 'e', 'R', '\005', 'l', 'i', 'm', 'i', 't', '\032', '\226', '\022', '\n', '\006', 'A', 'c', 't', 'i', 'o', 'n', '\022', '^', '\n',
-'\016', 's', 'o', 'u', 'r', 'c', 'e', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\001', ' ', '\001', '(', '\013', '2', '5', '.', 'e',
+'o', 'n', '.', 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'H', '\000', 'R', '\016', 'r', 'e', 'q', 'u',
+'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', '^', '\n', '\016', 'r', 'e', 'm', 'o', 't', 'e', '_', 'a', 'd', 'd', 'r',
+'e', 's', 's', '\030', '\004', ' ', '\001', '(', '\013', '2', '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
+'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n',
+'.', 'R', 'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', 'H', '\000', 'R', '\r', 'r', 'e', 'm', 'o', 't', 'e', 'A',
+'d', 'd', 'r', 'e', 's', 's', '\022', 'U', '\n', '\013', 'g', 'e', 'n', 'e', 'r', 'i', 'c', '_', 'k', 'e', 'y', '\030', '\005', ' ', '\001',
+'(', '\013', '2', '2', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v',
+'3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'G', 'e', 'n', 'e', 'r', 'i',
+'c', 'K', 'e', 'y', 'H', '\000', 'R', '\n', 'g', 'e', 'n', 'e', 'r', 'i', 'c', 'K', 'e', 'y', '\022', 'h', '\n', '\022', 'h', 'e', 'a',
+'d', 'e', 'r', '_', 'v', 'a', 'l', 'u', 'e', '_', 'm', 'a', 't', 'c', 'h', '\030', '\006', ' ', '\001', '(', '\013', '2', '8', '.', 'e',
'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e',
-'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'l', 'u', 's', 't', 'e',
-'r', 'H', '\000', 'R', '\r', 's', 'o', 'u', 'r', 'c', 'e', 'C', 'l', 'u', 's', 't', 'e', 'r', '\022', 'm', '\n', '\023', 'd', 'e', 's',
-'t', 'i', 'n', 'a', 't', 'i', 'o', 'n', '_', 'c', 'l', 'u', 's', 't', 'e', 'r', '\030', '\002', ' ', '\001', '(', '\013', '2', ':', '.',
-'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't',
-'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'D', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n',
-'C', 'l', 'u', 's', 't', 'e', 'r', 'H', '\000', 'R', '\022', 'd', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', 'C', 'l', 'u',
-'s', 't', 'e', 'r', '\022', 'a', '\n', '\017', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\003',
-' ', '\001', '(', '\013', '2', '6', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e',
-'.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'R', 'e', 'q', 'u',
-'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'H', '\000', 'R', '\016', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd',
-'e', 'r', 's', '\022', '^', '\n', '\016', 'r', 'e', 'm', 'o', 't', 'e', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', '\004', ' ', '\001',
-'(', '\013', '2', '5', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v',
-'3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'R', 'e', 'm', 'o', 't', 'e',
-'A', 'd', 'd', 'r', 'e', 's', 's', 'H', '\000', 'R', '\r', 'r', 'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', '\022',
-'U', '\n', '\013', 'g', 'e', 'n', 'e', 'r', 'i', 'c', '_', 'k', 'e', 'y', '\030', '\005', ' ', '\001', '(', '\013', '2', '2', '.', 'e', 'n',
-'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L',
-'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'K', 'e', 'y', 'H', '\000', 'R',
-'\n', 'g', 'e', 'n', 'e', 'r', 'i', 'c', 'K', 'e', 'y', '\022', 'h', '\n', '\022', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'v', 'a', 'l',
-'u', 'e', '_', 'm', 'a', 't', 'c', 'h', '\030', '\006', ' ', '\001', '(', '\013', '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
-'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A',
-'c', 't', 'i', 'o', 'n', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R',
-'\020', 'h', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'M', 'a', 't', 'c', 'h', '\022', 'w', '\n', '\020', 'd', 'y', 'n', 'a',
-'m', 'i', 'c', '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\007', ' ', '\001', '(', '\013', '2', '7', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm',
-'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', 'D', 'a', 't', 'a',
-'B', '\021', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', '\270', '\356', '\362', '\322', '\005', '\001', 'H', '\000', 'R', '\017', 'd', 'y',
-'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', 'N', '\n', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a',
-'\030', '\010', ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u',
-'t', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'M', 'e',
-'t', 'a', 'D', 'a', 't', 'a', 'H', '\000', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', 'J', '\n', '\t', 'e', 'x', 't',
-'e', 'n', 's', 'i', 'o', 'n', '\030', '\t', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
-'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n',
-'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\t', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\032', 'I', '\n', '\r', 'S', 'o',
-'u', 'r', 'c', 'e', 'C', 'l', 'u', 's', 't', 'e', 'r', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y',
-'.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A',
-'c', 't', 'i', 'o', 'n', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'l', 'u', 's', 't', 'e', 'r', '\032', 'S', '\n', '\022', 'D', 'e',
-'s', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', 'C', 'l', 'u', 's', 't', 'e', 'r', ':', '=', '\232', '\305', '\210', '\036', '8', '\n', '6',
-'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i',
-'m', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'D', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', 'C', 'l', 'u',
-'s', 't', 'e', 'r', '\032', '\321', '\001', '\n', '\016', 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', '.',
-'\n', '\013', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r',
-'\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\n', 'h', 'e', 'a', 'd', 'e', 'r', 'N', 'a', 'm', 'e', '\022', '.', '\n', '\016',
-'d', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004',
-'r', '\002', '\020', '\001', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', 'y', '\022', '$', '\n', '\016', 's', 'k',
-'i', 'p', '_', 'i', 'f', '_', 'a', 'b', 's', 'e', 'n', 't', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\014', 's', 'k', 'i', 'p', 'I',
-'f', 'A', 'b', 's', 'e', 'n', 't', ':', '9', '\232', '\305', '\210', '\036', '4', '\n', '2', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i',
-'.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o',
-'n', '.', 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\032', 'I', '\n', '\r', 'R', 'e', 'm', 'o', 't',
-'e', 'A', 'd', 'd', 'r', 'e', 's', 's', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p',
+'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'M',
+'a', 't', 'c', 'h', 'H', '\000', 'R', '\020', 'h', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'M', 'a', 't', 'c', 'h', '\022',
+'w', '\n', '\020', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\007', ' ', '\001', '(', '\013',
+'2', '7', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.',
+'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'M',
+'e', 't', 'a', 'D', 'a', 't', 'a', 'B', '\021', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', '\270', '\356', '\362', '\322', '\005',
+'\001', 'H', '\000', 'R', '\017', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '\022', 'N', '\n', '\010', 'm',
+'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\010', ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n',
+'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c',
+'t', 'i', 'o', 'n', '.', 'M', 'e', 't', 'a', 'D', 'a', 't', 'a', 'H', '\000', 'R', '\010', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a',
+'\022', 'J', '\n', '\t', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\030', '\t', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x',
+'t', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', '\t', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o',
+'n', '\022', 'q', '\n', '\025', 'm', 'a', 's', 'k', 'e', 'd', '_', 'r', 'e', 'm', 'o', 't', 'e', '_', 'a', 'd', 'd', 'r', 'e', 's',
+'s', '\030', '\n', ' ', '\001', '(', '\013', '2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o',
+'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'M',
+'a', 's', 'k', 'e', 'd', 'R', 'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', 'H', '\000', 'R', '\023', 'm', 'a', 's',
+'k', 'e', 'd', 'R', 'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', '\032', 'I', '\n', '\r', 'S', 'o', 'u', 'r', 'c',
+'e', 'C', 'l', 'u', 's', 't', 'e', 'r', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p',
'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i',
-'o', 'n', '.', 'R', 'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', '\032', '\236', '\001', '\n', '\n', 'G', 'e', 'n', 'e',
-'r', 'i', 'c', 'K', 'e', 'y', '\022', '2', '\n', '\020', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'v', 'a', 'l', 'u',
-'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\017', 'd', 'e', 's', 'c', 'r', 'i', 'p',
-'t', 'o', 'r', 'V', 'a', 'l', 'u', 'e', '\022', '%', '\n', '\016', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', 'e',
-'y', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', 'y', ':', '5', '\232',
-'\305', '\210', '\036', '0', '\n', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.',
-'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'K',
-'e', 'y', '\032', '\214', '\002', '\n', '\020', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'M', 'a', 't', 'c', 'h', '\022', '2',
-'\n', '\020', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B',
-'\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\017', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'V', 'a', 'l', 'u', 'e',
-'\022', '=', '\n', '\014', 'e', 'x', 'p', 'e', 'c', 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.',
-'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e',
-'R', '\013', 'e', 'x', 'p', 'e', 'c', 't', 'M', 'a', 't', 'c', 'h', '\022', 'H', '\n', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030',
-'\003', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't',
-'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\222', '\001',
-'\002', '\010', '\001', 'R', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', ':', ';', '\232', '\305', '\210', '\036', '6', '\n', '4', 'e', 'n', 'v', 'o',
+'o', 'n', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'l', 'u', 's', 't', 'e', 'r', '\032', 'S', '\n', '\022', 'D', 'e', 's', 't', 'i',
+'n', 'a', 't', 'i', 'o', 'n', 'C', 'l', 'u', 's', 't', 'e', 'r', ':', '=', '\232', '\305', '\210', '\036', '8', '\n', '6', 'e', 'n', 'v',
+'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't',
+'.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'D', 'e', 's', 't', 'i', 'n', 'a', 't', 'i', 'o', 'n', 'C', 'l', 'u', 's', 't', 'e',
+'r', '\032', '\321', '\001', '\n', '\016', 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\022', '.', '\n', '\013', 'h',
+'e', 'a', 'd', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001',
+'\300', '\001', '\001', '\310', '\001', '\000', 'R', '\n', 'h', 'e', 'a', 'd', 'e', 'r', 'N', 'a', 'm', 'e', '\022', '.', '\n', '\016', 'd', 'e', 's',
+'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020',
+'\001', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', 'y', '\022', '$', '\n', '\016', 's', 'k', 'i', 'p', '_',
+'i', 'f', '_', 'a', 'b', 's', 'e', 'n', 't', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\014', 's', 'k', 'i', 'p', 'I', 'f', 'A', 'b',
+'s', 'e', 'n', 't', ':', '9', '\232', '\305', '\210', '\036', '4', '\n', '2', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2',
+'.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'R',
+'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', '\032', 'I', '\n', '\r', 'R', 'e', 'm', 'o', 't', 'e', 'A', 'd',
+'d', 'r', 'e', 's', 's', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v',
+'2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.',
+'R', 'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', '\032', '\276', '\001', '\n', '\023', 'M', 'a', 's', 'k', 'e', 'd', 'R',
+'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', '\022', 'R', '\n', '\022', 'v', '4', '_', 'p', 'r', 'e', 'f', 'i', 'x',
+'_', 'm', 'a', 's', 'k', '_', 'l', 'e', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.',
+'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004',
+'*', '\002', '\030', ' ', 'R', '\017', 'v', '4', 'P', 'r', 'e', 'f', 'i', 'x', 'M', 'a', 's', 'k', 'L', 'e', 'n', '\022', 'S', '\n', '\022',
+'v', '6', '_', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'm', 'a', 's', 'k', '_', 'l', 'e', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2',
+'\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V',
+'a', 'l', 'u', 'e', 'B', '\010', '\372', 'B', '\005', '*', '\003', '\030', '\200', '\001', 'R', '\017', 'v', '6', 'P', 'r', 'e', 'f', 'i', 'x', 'M',
+'a', 's', 'k', 'L', 'e', 'n', '\032', '\236', '\001', '\n', '\n', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'K', 'e', 'y', '\022', '2', '\n', '\020',
+'d', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372',
+'B', '\004', 'r', '\002', '\020', '\001', 'R', '\017', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'V', 'a', 'l', 'u', 'e', '\022', '%',
+'\n', '\016', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\r', 'd',
+'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', 'y', ':', '5', '\232', '\305', '\210', '\036', '0', '\n', '.', 'e', 'n', 'v', 'o',
'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.',
-'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'M', 'a', 't', 'c', 'h', '\032', '\270',
-'\001', '\n', '\017', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', 'D', 'a', 't', 'a', '\022', '.', '\n', '\016', 'd', 'e', 's',
-'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020',
-'\001', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', 'y', '\022', 'P', '\n', '\014', 'm', 'e', 't', 'a', 'd',
-'a', 't', 'a', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p',
-'e', '.', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'K', 'e', 'y',
-'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\013', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', 'K', 'e', 'y', '\022', '#',
-'\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\014', 'd', 'e',
-'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\032', '\264', '\002', '\n', '\010', 'M', 'e', 't', 'a', 'D', 'a', 't', 'a', '\022', '.',
-'\n', '\016', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372',
-'B', '\004', 'r', '\002', '\020', '\001', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', 'y', '\022', 'P', '\n', '\014',
-'m', 'e', 't', 'a', 'd', 'a', 't', 'a', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o',
-'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a',
-'t', 'a', 'K', 'e', 'y', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\013', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a',
-'K', 'e', 'y', '\022', '#', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\003', ' ', '\001', '(',
-'\t', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', 'Y', '\n', '\006', 's', 'o', 'u', 'r', 'c', 'e',
-'\030', '\004', ' ', '\001', '(', '\016', '2', '7', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u',
-'t', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'M', 'e',
-'t', 'a', 'D', 'a', 't', 'a', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\006',
-'s', 'o', 'u', 'r', 'c', 'e', '\"', '&', '\n', '\006', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '\013', '\n', '\007', 'D', 'Y', 'N', 'A', 'M',
-'I', 'C', '\020', '\000', '\022', '\017', '\n', '\013', 'R', 'O', 'U', 'T', 'E', '_', 'E', 'N', 'T', 'R', 'Y', '\020', '\001', ':', '*', '\232', '\305',
-'\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R',
-'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\027', '\n', '\020', 'a', 'c', 't', 'i', 'o', 'n',
-'_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\032', '\362', '\001', '\n', '\010', 'O', 'v', 'e', 'r', 'r',
-'i', 'd', 'e', '\022', 'f', '\n', '\020', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '\030', '\001',
-' ', '\001', '(', '\013', '2', '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e',
-'.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'O', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '.', 'D', 'y',
-'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'H', '\000', 'R', '\017', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'M',
-'e', 't', 'a', 'd', 'a', 't', 'a', '\032', 'c', '\n', '\017', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', 'd', 'a', 't',
-'a', '\022', 'P', '\n', '\014', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '_', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\013', '2', '#',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '.', 'v', '3', '.', 'M',
-'e', 't', 'a', 'd', 'a', 't', 'a', 'K', 'e', 'y', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\013', 'm', 'e', 't',
-'a', 'd', 'a', 't', 'a', 'K', 'e', 'y', 'B', '\031', '\n', '\022', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '_', 's', 'p', 'e', 'c',
-'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', ':', '#', '\232', '\305', '\210', '\036', '\036', '\n', '\034', 'e', 'n', 'v', 'o', 'y', '.',
-'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '\"', '\244', '\005',
-'\n', '\r', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', '!', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001',
-' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\004', 'n', 'a', 'm', 'e',
-'\022', '.', '\n', '\013', 'e', 'x', 'a', 'c', 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\004', ' ', '\001', '(', '\t', 'B', '\013', '\030', '\001',
-'\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\n', 'e', 'x', 'a', 'c', 't', 'M', 'a', 't', 'c', 'h', '\022', '\\',
-'\n', '\020', 's', 'a', 'f', 'e', '_', 'r', 'e', 'g', 'e', 'x', '_', 'm', 'a', 't', 'c', 'h', '\030', '\013', ' ', '\001', '(', '\013', '2',
-'#', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'R',
-'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H',
-'\000', 'R', '\016', 's', 'a', 'f', 'e', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', '\022', '<', '\n', '\013', 'r', 'a', 'n', 'g',
-'e', '_', 'm', 'a', 't', 'c', 'h', '\030', '\006', ' ', '\001', '(', '\013', '2', '\031', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p',
-'e', '.', 'v', '3', '.', 'I', 'n', 't', '6', '4', 'R', 'a', 'n', 'g', 'e', 'H', '\000', 'R', '\n', 'r', 'a', 'n', 'g', 'e', 'M',
-'a', 't', 'c', 'h', '\022', '%', '\n', '\r', 'p', 'r', 'e', 's', 'e', 'n', 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\007', ' ', '\001',
-'(', '\010', 'H', '\000', 'R', '\014', 'p', 'r', 'e', 's', 'e', 'n', 't', 'M', 'a', 't', 'c', 'h', '\022', '7', '\n', '\014', 'p', 'r', 'e',
-'f', 'i', 'x', '_', 'm', 'a', 't', 'c', 'h', '\030', '\t', ' ', '\001', '(', '\t', 'B', '\022', '\030', '\001', '\372', 'B', '\004', 'r', '\002', '\020',
-'\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\013', 'p', 'r', 'e', 'f', 'i', 'x', 'M', 'a', 't', 'c', 'h',
-'\022', '7', '\n', '\014', 's', 'u', 'f', 'f', 'i', 'x', '_', 'm', 'a', 't', 'c', 'h', '\030', '\n', ' ', '\001', '(', '\t', 'B', '\022', '\030',
-'\001', '\372', 'B', '\004', 'r', '\002', '\020', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\013', 's', 'u', 'f', 'f',
-'i', 'x', 'M', 'a', 't', 'c', 'h', '\022', ';', '\n', '\016', 'c', 'o', 'n', 't', 'a', 'i', 'n', 's', '_', 'm', 'a', 't', 'c', 'h',
-'\030', '\014', ' ', '\001', '(', '\t', 'B', '\022', '\030', '\001', '\372', 'B', '\004', 'r', '\002', '\020', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.',
-'0', 'H', '\000', 'R', '\r', 'c', 'o', 'n', 't', 'a', 'i', 'n', 's', 'M', 'a', 't', 'c', 'h', '\022', 'I', '\n', '\014', 's', 't', 'r',
-'i', 'n', 'g', '_', 'm', 'a', 't', 'c', 'h', '\030', '\r', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 't',
-'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c',
-'h', 'e', 'r', 'H', '\000', 'R', '\013', 's', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', '\022', '!', '\n', '\014', 'i', 'n', 'v',
-'e', 'r', 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\010', ' ', '\001', '(', '\010', 'R', '\013', 'i', 'n', 'v', 'e', 'r', 't', 'M', 'a',
-'t', 'c', 'h', ':', '\'', '\232', '\305', '\210', '\036', '\"', '\n', ' ', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.',
-'r', 'o', 'u', 't', 'e', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\030', '\n', '\026', 'h', 'e',
-'a', 'd', 'e', 'r', '_', 'm', 'a', 't', 'c', 'h', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', '\002', '\020',
-'\003', 'J', '\004', '\010', '\003', '\020', '\004', 'J', '\004', '\010', '\005', '\020', '\006', 'R', '\013', 'r', 'e', 'g', 'e', 'x', '_', 'm', 'a', 't', 'c',
-'h', '\"', '\241', '\002', '\n', '\025', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'M', 'a', 't', 'c', 'h',
-'e', 'r', '\022', '\036', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\n', '\372', 'B', '\007', 'r', '\005', '\020', '\001',
-'(', '\200', '\010', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'S', '\n', '\014', 's', 't', 'r', 'i', 'n', 'g', '_', 'm', 'a', 't', 'c', 'h',
-'\030', '\005', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h',
-'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212',
-'\001', '\002', '\020', '\001', 'H', '\000', 'R', '\013', 's', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', '\022', '%', '\n', '\r', 'p', 'r',
-'e', 's', 'e', 'n', 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\006', ' ', '\001', '(', '\010', 'H', '\000', 'R', '\014', 'p', 'r', 'e', 's',
-'e', 'n', 't', 'M', 'a', 't', 'c', 'h', ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p',
-'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r',
-'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '!', '\n', '\037', 'q', 'u', 'e', 'r', 'y', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e',
-'r', '_', 'm', 'a', 't', 'c', 'h', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', '\003', '\020', '\004', 'J', '\004',
-'\010', '\004', '\020', '\005', 'R', '\005', 'v', 'a', 'l', 'u', 'e', 'R', '\005', 'r', 'e', 'g', 'e', 'x', '\"', '\271', '\002', '\n', '\026', 'I', 'n',
-'t', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'R', '\n', '\026', 'm',
-'a', 'x', '_', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', 's', '\030', '\001', ' ', '\001',
-'(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't',
-'3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\024', 'm', 'a', 'x', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r',
-'e', 'c', 't', 's', '\022', '@', '\n', '\027', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e',
-'_', 'c', 'o', 'd', 'e', 's', '\030', '\002', ' ', '\003', '(', '\r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\020', '\005', 'R', '\025', 'r',
-'e', 'd', 'i', 'r', 'e', 'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', 's', '\022', 'J', '\n', '\n', 'p',
-'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
-'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's',
-'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\n', 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 's', '\022', '=', '\n', '\033',
-'a', 'l', 'l', 'o', 'w', '_', 'c', 'r', 'o', 's', 's', '_', 's', 'c', 'h', 'e', 'm', 'e', '_', 'r', 'e', 'd', 'i', 'r', 'e',
-'c', 't', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\030', 'a', 'l', 'l', 'o', 'w', 'C', 'r', 'o', 's', 's', 'S', 'c', 'h', 'e', 'm',
-'e', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\"', ']', '\n', '\014', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g',
-'\022', ',', '\n', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e',
-'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\022', '\037', '\n', '\013',
-'i', 's', '_', 'o', 'p', 't', 'i', 'o', 'n', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', 'i', 's', 'O', 'p', 't', 'i',
-'o', 'n', 'a', 'l', 'B', '\213', '\001', '\n', '#', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n',
-'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', 'B', '\024', 'R', 'o', 'u', 't',
-'e', 'C', 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'D', 'g', 'i', 't', 'h', 'u',
-'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r',
-'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u',
-'t', 'e', '/', 'v', '3', ';', 'r', 'o', 'u', 't', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r',
-'o', 't', 'o', '3',
+'A', 'c', 't', 'i', 'o', 'n', '.', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'K', 'e', 'y', '\032', '\263', '\002', '\n', '\020', 'H', 'e', 'a',
+'d', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'M', 'a', 't', 'c', 'h', '\022', '%', '\n', '\016', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't',
+'o', 'r', '_', 'k', 'e', 'y', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K',
+'e', 'y', '\022', '2', '\n', '\020', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\001', ' ',
+'\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\017', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'V',
+'a', 'l', 'u', 'e', '\022', '=', '\n', '\014', 'e', 'x', 'p', 'e', 'c', 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\002', ' ', '\001', '(',
+'\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V',
+'a', 'l', 'u', 'e', 'R', '\013', 'e', 'x', 'p', 'e', 'c', 't', 'M', 'a', 't', 'c', 'h', '\022', 'H', '\n', '\007', 'h', 'e', 'a', 'd',
+'e', 'r', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
+'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372',
+'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', ':', ';', '\232', '\305', '\210', '\036', '6', '\n', '4',
+'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i',
+'m', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'u', 'e', 'M', 'a', 't',
+'c', 'h', '\032', '\270', '\001', '\n', '\017', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', 'D', 'a', 't', 'a', '\022', '.', '\n',
+'\016', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B',
+'\004', 'r', '\002', '\020', '\001', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', 'y', '\022', 'P', '\n', '\014', 'm',
+'e', 't', 'a', 'd', 'a', 't', 'a', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y',
+'.', 't', 'y', 'p', 'e', '.', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '.', 'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't',
+'a', 'K', 'e', 'y', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\013', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', 'K',
+'e', 'y', '\022', '#', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\003', ' ', '\001', '(', '\t',
+'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\032', '\264', '\002', '\n', '\010', 'M', 'e', 't', 'a', 'D', 'a',
+'t', 'a', '\022', '.', '\n', '\016', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', '_', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(',
+'\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\r', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'K', 'e', 'y',
+'\022', 'P', '\n', '\014', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '_', 'k', 'e', 'y', '\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.',
+'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '.', 'v', '3', '.', 'M', 'e',
+'t', 'a', 'd', 'a', 't', 'a', 'K', 'e', 'y', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\013', 'm', 'e', 't', 'a',
+'d', 'a', 't', 'a', 'K', 'e', 'y', '\022', '#', '\n', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030',
+'\003', ' ', '\001', '(', '\t', 'R', '\014', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'u', 'e', '\022', 'Y', '\n', '\006', 's', 'o',
+'u', 'r', 'c', 'e', '\030', '\004', ' ', '\001', '(', '\016', '2', '7', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o',
+'n', '.', 'M', 'e', 't', 'a', 'D', 'a', 't', 'a', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002',
+'\020', '\001', 'R', '\006', 's', 'o', 'u', 'r', 'c', 'e', '\"', '&', '\n', '\006', 'S', 'o', 'u', 'r', 'c', 'e', '\022', '\013', '\n', '\007', 'D',
+'Y', 'N', 'A', 'M', 'I', 'C', '\020', '\000', '\022', '\017', '\n', '\013', 'R', 'O', 'U', 'T', 'E', '_', 'E', 'N', 'T', 'R', 'Y', '\020', '\001',
+':', '*', '\232', '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u',
+'t', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'A', 'c', 't', 'i', 'o', 'n', 'B', '\027', '\n', '\020', 'a', 'c',
+'t', 'i', 'o', 'n', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', '\032', '\362', '\001', '\n', '\010', 'O',
+'v', 'e', 'r', 'r', 'i', 'd', 'e', '\022', 'f', '\n', '\020', 'd', 'y', 'n', 'a', 'm', 'i', 'c', '_', 'm', 'e', 't', 'a', 'd', 'a',
+'t', 'a', '\030', '\001', ' ', '\001', '(', '\013', '2', '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r',
+'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', '.', 'O', 'v', 'e', 'r', 'r', 'i', 'd',
+'e', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'H', '\000', 'R', '\017', 'd', 'y', 'n', 'a',
+'m', 'i', 'c', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', '\032', 'c', '\n', '\017', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'M', 'e', 't',
+'a', 'd', 'a', 't', 'a', '\022', 'P', '\n', '\014', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '_', 'k', 'e', 'y', '\030', '\001', ' ', '\001',
+'(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', '.',
+'v', '3', '.', 'M', 'e', 't', 'a', 'd', 'a', 't', 'a', 'K', 'e', 'y', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R',
+'\013', 'm', 'e', 't', 'a', 'd', 'a', 't', 'a', 'K', 'e', 'y', 'B', '\031', '\n', '\022', 'o', 'v', 'e', 'r', 'r', 'i', 'd', 'e', '_',
+'s', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', '\003', '\370', 'B', '\001', ':', '#', '\232', '\305', '\210', '\036', '\036', '\n', '\034', 'e', 'n',
+'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i',
+'t', '\"', '\346', '\005', '\n', '\r', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', '!', '\n', '\004', 'n', 'a',
+'m', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\r', '\372', 'B', '\n', 'r', '\010', '\020', '\001', '\300', '\001', '\001', '\310', '\001', '\000', 'R', '\004',
+'n', 'a', 'm', 'e', '\022', '.', '\n', '\013', 'e', 'x', 'a', 'c', 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\004', ' ', '\001', '(', '\t',
+'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\n', 'e', 'x', 'a', 'c', 't', 'M', 'a', 't',
+'c', 'h', '\022', '\\', '\n', '\020', 's', 'a', 'f', 'e', '_', 'r', 'e', 'g', 'e', 'x', '_', 'm', 'a', 't', 'c', 'h', '\030', '\013', ' ',
+'\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.',
+'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003',
+'3', '.', '0', 'H', '\000', 'R', '\016', 's', 'a', 'f', 'e', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', '\022', '<', '\n', '\013',
+'r', 'a', 'n', 'g', 'e', '_', 'm', 'a', 't', 'c', 'h', '\030', '\006', ' ', '\001', '(', '\013', '2', '\031', '.', 'e', 'n', 'v', 'o', 'y',
+'.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'I', 'n', 't', '6', '4', 'R', 'a', 'n', 'g', 'e', 'H', '\000', 'R', '\n', 'r', 'a',
+'n', 'g', 'e', 'M', 'a', 't', 'c', 'h', '\022', '%', '\n', '\r', 'p', 'r', 'e', 's', 'e', 'n', 't', '_', 'm', 'a', 't', 'c', 'h',
+'\030', '\007', ' ', '\001', '(', '\010', 'H', '\000', 'R', '\014', 'p', 'r', 'e', 's', 'e', 'n', 't', 'M', 'a', 't', 'c', 'h', '\022', '7', '\n',
+'\014', 'p', 'r', 'e', 'f', 'i', 'x', '_', 'm', 'a', 't', 'c', 'h', '\030', '\t', ' ', '\001', '(', '\t', 'B', '\022', '\030', '\001', '\372', 'B',
+'\004', 'r', '\002', '\020', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\013', 'p', 'r', 'e', 'f', 'i', 'x', 'M',
+'a', 't', 'c', 'h', '\022', '7', '\n', '\014', 's', 'u', 'f', 'f', 'i', 'x', '_', 'm', 'a', 't', 'c', 'h', '\030', '\n', ' ', '\001', '(',
+'\t', 'B', '\022', '\030', '\001', '\372', 'B', '\004', 'r', '\002', '\020', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\013',
+'s', 'u', 'f', 'f', 'i', 'x', 'M', 'a', 't', 'c', 'h', '\022', ';', '\n', '\016', 'c', 'o', 'n', 't', 'a', 'i', 'n', 's', '_', 'm',
+'a', 't', 'c', 'h', '\030', '\014', ' ', '\001', '(', '\t', 'B', '\022', '\030', '\001', '\372', 'B', '\004', 'r', '\002', '\020', '\001', '\222', '\307', '\206', '\330',
+'\004', '\003', '3', '.', '0', 'H', '\000', 'R', '\r', 'c', 'o', 'n', 't', 'a', 'i', 'n', 's', 'M', 'a', 't', 'c', 'h', '\022', 'I', '\n',
+'\014', 's', 't', 'r', 'i', 'n', 'g', '_', 'm', 'a', 't', 'c', 'h', '\030', '\r', ' ', '\001', '(', '\013', '2', '$', '.', 'e', 'n', 'v',
+'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'S', 't', 'r', 'i', 'n', 'g',
+'M', 'a', 't', 'c', 'h', 'e', 'r', 'H', '\000', 'R', '\013', 's', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', '\022', '!', '\n',
+'\014', 'i', 'n', 'v', 'e', 'r', 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\010', ' ', '\001', '(', '\010', 'R', '\013', 'i', 'n', 'v', 'e',
+'r', 't', 'M', 'a', 't', 'c', 'h', '\022', '@', '\n', '\035', 't', 'r', 'e', 'a', 't', '_', 'm', 'i', 's', 's', 'i', 'n', 'g', '_',
+'h', 'e', 'a', 'd', 'e', 'r', '_', 'a', 's', '_', 'e', 'm', 'p', 't', 'y', '\030', '\016', ' ', '\001', '(', '\010', 'R', '\031', 't', 'r',
+'e', 'a', 't', 'M', 'i', 's', 's', 'i', 'n', 'g', 'H', 'e', 'a', 'd', 'e', 'r', 'A', 's', 'E', 'm', 'p', 't', 'y', ':', '\'',
+'\232', '\305', '\210', '\036', '\"', '\n', ' ', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'r', 'o', 'u', 't', 'e',
+'.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\030', '\n', '\026', 'h', 'e', 'a', 'd', 'e', 'r', '_',
+'m', 'a', 't', 'c', 'h', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', '\002', '\020', '\003', 'J', '\004', '\010', '\003',
+'\020', '\004', 'J', '\004', '\010', '\005', '\020', '\006', 'R', '\013', 'r', 'e', 'g', 'e', 'x', '_', 'm', 'a', 't', 'c', 'h', '\"', '\241', '\002', '\n',
+'\025', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', '\036', '\n',
+'\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\n', '\372', 'B', '\007', 'r', '\005', '\020', '\001', '(', '\200', '\010', 'R', '\004',
+'n', 'a', 'm', 'e', '\022', 'S', '\n', '\014', 's', 't', 'r', 'i', 'n', 'g', '_', 'm', 'a', 't', 'c', 'h', '\030', '\005', ' ', '\001', '(',
+'\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3',
+'.', 'S', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'H',
+'\000', 'R', '\013', 's', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', '\022', '%', '\n', '\r', 'p', 'r', 'e', 's', 'e', 'n', 't',
+'_', 'm', 'a', 't', 'c', 'h', '\030', '\006', ' ', '\001', '(', '\010', 'H', '\000', 'R', '\014', 'p', 'r', 'e', 's', 'e', 'n', 't', 'M', 'a',
+'t', 'c', 'h', ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.',
+'r', 'o', 'u', 't', 'e', '.', 'Q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'M', 'a', 't', 'c', 'h',
+'e', 'r', 'B', '!', '\n', '\037', 'q', 'u', 'e', 'r', 'y', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '_', 'm', 'a', 't',
+'c', 'h', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'J', '\004', '\010', '\003', '\020', '\004', 'J', '\004', '\010', '\004', '\020', '\005', 'R',
+'\005', 'v', 'a', 'l', 'u', 'e', 'R', '\005', 'r', 'e', 'g', 'e', 'x', '\"', '\271', '\002', '\n', '\026', 'I', 'n', 't', 'e', 'r', 'n', 'a',
+'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 'P', 'o', 'l', 'i', 'c', 'y', '\022', 'R', '\n', '\026', 'm', 'a', 'x', '_', 'i', 'n',
+'t', 'e', 'r', 'n', 'a', 'l', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.',
+'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l',
+'u', 'e', 'R', '\024', 'm', 'a', 'x', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'd', 'i', 'r', 'e', 'c', 't', 's', '\022',
+'@', '\n', '\027', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'c', 'o', 'd', 'e',
+'s', '\030', '\002', ' ', '\003', '(', '\r', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\020', '\005', 'R', '\025', 'r', 'e', 'd', 'i', 'r', 'e',
+'c', 't', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'C', 'o', 'd', 'e', 's', '\022', 'J', '\n', '\n', 'p', 'r', 'e', 'd', 'i', 'c',
+'a', 't', 'e', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o',
+'n', 'f', 'i', 'g', 'R', '\n', 'p', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 's', '\022', '=', '\n', '\033', 'a', 'l', 'l', 'o', 'w',
+'_', 'c', 'r', 'o', 's', 's', '_', 's', 'c', 'h', 'e', 'm', 'e', '_', 'r', 'e', 'd', 'i', 'r', 'e', 'c', 't', '\030', '\004', ' ',
+'\001', '(', '\010', 'R', '\030', 'a', 'l', 'l', 'o', 'w', 'C', 'r', 'o', 's', 's', 'S', 'c', 'h', 'e', 'm', 'e', 'R', 'e', 'd', 'i',
+'r', 'e', 'c', 't', '\"', ']', '\n', '\014', 'F', 'i', 'l', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', ',', '\n', '\006', 'c',
+'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
+'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\022', '\037', '\n', '\013', 'i', 's', '_', 'o', 'p',
+'t', 'i', 'o', 'n', 'a', 'l', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', 'i', 's', 'O', 'p', 't', 'i', 'o', 'n', 'a', 'l', 'B',
+'\213', '\001', '\n', '#', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
+'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', 'B', '\024', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'm', 'p',
+'o', 'n', 'e', 'n', 't', 's', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'D', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm',
+'/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l',
+'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't', 'e', '/', 'v', '3',
+';', 'r', 'o', 'u', 't', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[21] = {
@@ -884,5 +935,5 @@ _upb_DefPool_Init envoy_config_route_v3_route_components_proto_upbdefinit = {
deps,
&envoy_config_route_v3_route_components_proto_upb_file_layout,
"envoy/config/route/v3/route_components.proto",
- UPB_STRINGVIEW_INIT(descriptor, 20579)
+ UPB_STRINGVIEW_INIT(descriptor, 21874)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h
index a7ae82d8f8..b05c192bf1 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h
@@ -61,6 +61,11 @@ UPB_INLINE const upb_MessageDef *envoy_config_route_v3_WeightedCluster_ClusterWe
return upb_DefPool_FindMessageByName(s, "envoy.config.route.v3.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry");
}
+UPB_INLINE const upb_MessageDef *envoy_config_route_v3_ClusterSpecifierPlugin_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_config_route_v3_route_components_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.config.route.v3.ClusterSpecifierPlugin");
+}
+
UPB_INLINE const upb_MessageDef *envoy_config_route_v3_RouteMatch_getmsgdef(upb_DefPool *s) {
_upb_DefPool_LoadDefInit(s, &envoy_config_route_v3_route_components_proto_upbdefinit);
return upb_DefPool_FindMessageByName(s, "envoy.config.route.v3.RouteMatch");
@@ -236,6 +241,11 @@ UPB_INLINE const upb_MessageDef *envoy_config_route_v3_RateLimit_Action_RemoteAd
return upb_DefPool_FindMessageByName(s, "envoy.config.route.v3.RateLimit.Action.RemoteAddress");
}
+UPB_INLINE const upb_MessageDef *envoy_config_route_v3_RateLimit_Action_MaskedRemoteAddress_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_config_route_v3_route_components_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.config.route.v3.RateLimit.Action.MaskedRemoteAddress");
+}
+
UPB_INLINE const upb_MessageDef *envoy_config_route_v3_RateLimit_Action_GenericKey_getmsgdef(upb_DefPool *s) {
_upb_DefPool_LoadDefInit(s, &envoy_config_route_v3_route_components_proto_upbdefinit);
return upb_DefPool_FindMessageByName(s, "envoy.config.route.v3.RateLimit.Action.GenericKey");
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c
index 3405635fc4..2f1eed02b5 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c
@@ -14,12 +14,13 @@ extern _upb_DefPool_Init envoy_config_common_matcher_v3_matcher_proto_upbdefinit
extern _upb_DefPool_Init envoy_config_core_v3_base_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_core_v3_grpc_service_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_route_v3_route_components_proto_upbdefinit;
+extern _upb_DefPool_Init google_protobuf_duration_proto_upbdefinit;
extern _upb_DefPool_Init google_protobuf_wrappers_proto_upbdefinit;
extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[3646] = {'\n', ' ', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'a', 'p', '/', 'v', '3', '/', 'c', 'o', 'm',
+static const char descriptor[3873] = {'\n', ' ', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'a', 'p', '/', 'v', '3', '/', 'c', 'o', 'm',
'm', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\022', '\023', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't',
'a', 'p', '.', 'v', '3', '\032', ',', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'm', 'm', 'o',
'n', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'p', 'r', 'o', 't',
@@ -28,150 +29,160 @@ static const char descriptor[3646] = {'\n', ' ', 'e', 'n', 'v', 'o', 'y', '/', '
'o', 'r', 'e', '/', 'v', '3', '/', 'g', 'r', 'p', 'c', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'p', 'r', 'o', 't', 'o',
'\032', ',', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't', 'e', '/', 'v', '3', '/', 'r',
'o', 'u', 't', 'e', '_', 'c', 'o', 'm', 'p', 'o', 'n', 'e', 'n', 't', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o',
-'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r',
-'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'd', 'e',
-'p', 'r', 'e', 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n',
-'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd',
-'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g',
-'.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e',
-'.', 'p', 'r', 'o', 't', 'o', '\"', '\365', '\002', '\n', '\t', 'T', 'a', 'p', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'S', '\n', '\014', 'm',
-'a', 't', 'c', 'h', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y',
-'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i',
-'c', 'a', 't', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\013', 'm', 'a', 't', 'c', 'h', 'C',
-'o', 'n', 'f', 'i', 'g', '\022', 'D', '\n', '\005', 'm', 'a', 't', 'c', 'h', '\030', '\004', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n',
-'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r',
-'.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'R', '\005', 'm', 'a', 't', 'c', 'h',
-'\022', 'P', '\n', '\r', 'o', 'u', 't', 'p', 'u', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '!',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'O', 'u', 't', 'p',
-'u', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\014', 'o', 'u', 't', 'p', 'u',
-'t', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'O', '\n', '\013', 't', 'a', 'p', '_', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\030', '\003', ' ',
-'\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v',
-'3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'e', 'r', 'c', 'e', 'n',
-'t', 'R', '\n', 't', 'a', 'p', 'E', 'n', 'a', 'b', 'l', 'e', 'd', ':', '*', '\232', '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v',
-'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'T', 'a',
-'p', 'C', 'o', 'n', 'f', 'i', 'g', '\"', '\346', '\010', '\n', '\016', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't',
-'e', '\022', 'I', '\n', '\010', 'o', 'r', '_', 'm', 'a', 't', 'c', 'h', '\030', '\001', ' ', '\001', '(', '\013', '2', ',', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e',
-'d', 'i', 'c', 'a', 't', 'e', '.', 'M', 'a', 't', 'c', 'h', 'S', 'e', 't', 'H', '\000', 'R', '\007', 'o', 'r', 'M', 'a', 't', 'c',
-'h', '\022', 'K', '\n', '\t', 'a', 'n', 'd', '_', 'm', 'a', 't', 'c', 'h', '\030', '\002', ' ', '\001', '(', '\013', '2', ',', '.', 'e', 'n',
-'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'P', 'r',
-'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'M', 'a', 't', 'c', 'h', 'S', 'e', 't', 'H', '\000', 'R', '\010', 'a', 'n', 'd', 'M', 'a',
-'t', 'c', 'h', '\022', 'B', '\n', '\t', 'n', 'o', 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\003', ' ', '\001', '(', '\013', '2', '#', '.',
-'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h',
-'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'H', '\000', 'R', '\010', 'n', 'o', 't', 'M', 'a', 't', 'c', 'h', '\022', '&', '\n', '\t',
-'a', 'n', 'y', '_', 'm', 'a', 't', 'c', 'h', '\030', '\004', ' ', '\001', '(', '\010', 'B', '\007', '\372', 'B', '\004', 'j', '\002', '\010', '\001', 'H',
-'\000', 'R', '\010', 'a', 'n', 'y', 'M', 'a', 't', 'c', 'h', '\022', 'd', '\n', '\032', 'h', 't', 't', 'p', '_', 'r', 'e', 'q', 'u', 'e',
-'s', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 'm', 'a', 't', 'c', 'h', '\030', '\005', ' ', '\001', '(', '\013', '2', '%', '.',
-'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'H',
-'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\027', 'h', 't', 't', 'p', 'R', 'e', 'q', 'u', 'e', 's',
-'t', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', '\022', 'f', '\n', '\033', 'h', 't', 't', 'p', '_', 'r', 'e', 'q',
-'u', 'e', 's', 't', '_', 't', 'r', 'a', 'i', 'l', 'e', 'r', 's', '_', 'm', 'a', 't', 'c', 'h', '\030', '\006', ' ', '\001', '(', '\013',
-'2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'H', 't',
-'t', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\030', 'h', 't', 't', 'p', 'R', 'e', 'q',
-'u', 'e', 's', 't', 'T', 'r', 'a', 'i', 'l', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', '\022', 'f', '\n', '\033', 'h', 't', 't', 'p',
-'_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 'm', 'a', 't', 'c', 'h', '\030', '\007',
+'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r',
+'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p',
+'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't',
+'i', 'o', 'n', 's', '/', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u',
+'d', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r',
+'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r',
+'s', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v',
+'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\365', '\002', '\n', '\t', 'T', 'a', 'p', 'C', 'o', 'n', 'f',
+'i', 'g', '\022', 'S', '\n', '\014', 'm', 'a', 't', 'c', 'h', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2',
+'#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'M', 'a', 't',
+'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R',
+'\013', 'm', 'a', 't', 'c', 'h', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'D', '\n', '\005', 'm', 'a', 't', 'c', 'h', '\030', '\004', ' ', '\001',
+'(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'm', 'm', 'o', 'n', '.',
+'m', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e',
+'R', '\005', 'm', 'a', 't', 'c', 'h', '\022', 'P', '\n', '\r', 'o', 'u', 't', 'p', 'u', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030',
+'\002', ' ', '\001', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.',
+'v', '3', '.', 'O', 'u', 't', 'p', 'u', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001',
+'R', '\014', 'o', 'u', 't', 'p', 'u', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'O', '\n', '\013', 't', 'a', 'p', '_', 'e', 'n', 'a',
+'b', 'l', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\013', '2', '.', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
+'.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'R', 'u', 'n', 't', 'i', 'm', 'e', 'F', 'r', 'a', 'c', 't', 'i', 'o', 'n', 'a',
+'l', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\n', 't', 'a', 'p', 'E', 'n', 'a', 'b', 'l', 'e', 'd', ':', '*', '\232', '\305', '\210',
+'\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2', 'a',
+'l', 'p', 'h', 'a', '.', 'T', 'a', 'p', 'C', 'o', 'n', 'f', 'i', 'g', '\"', '\346', '\010', '\n', '\016', 'M', 'a', 't', 'c', 'h', 'P',
+'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '\022', 'I', '\n', '\010', 'o', 'r', '_', 'm', 'a', 't', 'c', 'h', '\030', '\001', ' ', '\001', '(',
+'\013', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'M',
+'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'M', 'a', 't', 'c', 'h', 'S', 'e', 't', 'H', '\000', 'R',
+'\007', 'o', 'r', 'M', 'a', 't', 'c', 'h', '\022', 'K', '\n', '\t', 'a', 'n', 'd', '_', 'm', 'a', 't', 'c', 'h', '\030', '\002', ' ', '\001',
+'(', '\013', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.',
+'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'M', 'a', 't', 'c', 'h', 'S', 'e', 't', 'H', '\000',
+'R', '\010', 'a', 'n', 'd', 'M', 'a', 't', 'c', 'h', '\022', 'B', '\n', '\t', 'n', 'o', 't', '_', 'm', 'a', 't', 'c', 'h', '\030', '\003',
+' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v',
+'3', '.', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'H', '\000', 'R', '\010', 'n', 'o', 't', 'M', 'a',
+'t', 'c', 'h', '\022', '&', '\n', '\t', 'a', 'n', 'y', '_', 'm', 'a', 't', 'c', 'h', '\030', '\004', ' ', '\001', '(', '\010', 'B', '\007', '\372',
+'B', '\004', 'j', '\002', '\010', '\001', 'H', '\000', 'R', '\010', 'a', 'n', 'y', 'M', 'a', 't', 'c', 'h', '\022', 'd', '\n', '\032', 'h', 't', 't',
+'p', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 'm', 'a', 't', 'c', 'h', '\030', '\005',
' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v',
-'3', '.', 'H', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\030', 'h', 't', 't',
-'p', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', '\022', 'h', '\n', '\034',
-'h', 't', 't', 'p', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 't', 'r', 'a', 'i', 'l', 'e', 'r', 's', '_', 'm', 'a',
-'t', 'c', 'h', '\030', '\010', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
-'t', 'a', 'p', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', 'H', '\000',
-'R', '\031', 'h', 't', 't', 'p', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'T', 'r', 'a', 'i', 'l', 'e', 'r', 's', 'M', 'a', 't',
-'c', 'h', '\022', 'q', '\n', '\037', 'h', 't', 't', 'p', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'g', 'e', 'n', 'e', 'r', 'i',
-'c', '_', 'b', 'o', 'd', 'y', '_', 'm', 'a', 't', 'c', 'h', '\030', '\t', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'G', 'e', 'n', 'e', 'r',
-'i', 'c', 'B', 'o', 'd', 'y', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\033', 'h', 't', 't', 'p', 'R', 'e', 'q', 'u', 'e', 's',
-'t', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', 'M', 'a', 't', 'c', 'h', '\022', 's', '\n', ' ', 'h', 't', 't', 'p',
-'_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'g', 'e', 'n', 'e', 'r', 'i', 'c', '_', 'b', 'o', 'd', 'y', '_', 'm', 'a',
-'t', 'c', 'h', '\030', '\n', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
-'t', 'a', 'p', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', 'M', 'a', 't',
-'c', 'h', 'H', '\000', 'R', '\034', 'h', 't', 't', 'p', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'G', 'e', 'n', 'e', 'r', 'i', 'c',
-'B', 'o', 'd', 'y', 'M', 'a', 't', 'c', 'h', '\032', '\211', '\001', '\n', '\010', 'M', 'a', 't', 'c', 'h', 'S', 'e', 't', '\022', 'C', '\n',
-'\005', 'r', 'u', 'l', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
-'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'B',
-'\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\002', 'R', '\005', 'r', 'u', 'l', 'e', 's', ':', '8', '\232', '\305', '\210', '\036', '3', '\n', '1',
-'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a',
-'.', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'M', 'a', 't', 'c', 'h', 'S', 'e', 't', ':',
-'/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p',
-'.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', 'B', '\013',
-'\n', '\004', 'r', 'u', 'l', 'e', '\022', '\003', '\370', 'B', '\001', '\"', '\205', '\001', '\n', '\020', 'H', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e',
-'r', 's', 'M', 'a', 't', 'c', 'h', '\022', '>', '\n', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2',
-'$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'H',
-'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', ':', '1', '\232', '\305',
-'\210', '\036', ',', '\n', '*', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2',
-'a', 'l', 'p', 'h', 'a', '.', 'H', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', '\"', '\226', '\002',
-'\n', '\024', 'H', 't', 't', 'p', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', 'M', 'a', 't', 'c', 'h', '\022', '\037', '\n',
-'\013', 'b', 'y', 't', 'e', 's', '_', 'l', 'i', 'm', 'i', 't', '\030', '\001', ' ', '\001', '(', '\r', 'R', '\n', 'b', 'y', 't', 'e', 's',
-'L', 'i', 'm', 'i', 't', '\022', '`', '\n', '\010', 'p', 'a', 't', 't', 'e', 'r', 'n', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', ':',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'H', 't', 't', 'p',
-'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', 'M', 'a', 't', 'c', 'h', '.', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'T',
-'e', 'x', 't', 'M', 'a', 't', 'c', 'h', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001', 'R', '\010', 'p', 'a', 't', 't', 'e',
-'r', 'n', 's', '\032', '{', '\n', '\020', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'T', 'e', 'x', 't', 'M', 'a', 't', 'c', 'h', '\022', ',',
-'\n', '\014', 's', 't', 'r', 'i', 'n', 'g', '_', 'm', 'a', 't', 'c', 'h', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004',
-'r', '\002', '\020', '\001', 'H', '\000', 'R', '\013', 's', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c', 'h', '\022', ',', '\n', '\014', 'b', 'i',
-'n', 'a', 'r', 'y', '_', 'm', 'a', 't', 'c', 'h', '\030', '\002', ' ', '\001', '(', '\014', 'B', '\007', '\372', 'B', '\004', 'z', '\002', '\020', '\001',
-'H', '\000', 'R', '\013', 'b', 'i', 'n', 'a', 'r', 'y', 'M', 'a', 't', 'c', 'h', 'B', '\013', '\n', '\004', 'r', 'u', 'l', 'e', '\022', '\003',
-'\370', 'B', '\001', '\"', '\300', '\002', '\n', '\014', 'O', 'u', 't', 'p', 'u', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'A', '\n', '\005', 's',
-'i', 'n', 'k', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g',
-'.', 't', 'a', 'p', '.', 'v', '3', '.', 'O', 'u', 't', 'p', 'u', 't', 'S', 'i', 'n', 'k', 'B', '\n', '\372', 'B', '\007', '\222', '\001',
-'\004', '\010', '\001', '\020', '\001', 'R', '\005', 's', 'i', 'n', 'k', 's', '\022', 'O', '\n', '\025', 'm', 'a', 'x', '_', 'b', 'u', 'f', 'f', 'e',
-'r', 'e', 'd', '_', 'r', 'x', '_', 'b', 'y', 't', 'e', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\022',
-'m', 'a', 'x', 'B', 'u', 'f', 'f', 'e', 'r', 'e', 'd', 'R', 'x', 'B', 'y', 't', 'e', 's', '\022', 'O', '\n', '\025', 'm', 'a', 'x',
-'_', 'b', 'u', 'f', 'f', 'e', 'r', 'e', 'd', '_', 't', 'x', '_', 'b', 'y', 't', 'e', 's', '\030', '\003', ' ', '\001', '(', '\013', '2',
-'\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V',
-'a', 'l', 'u', 'e', 'R', '\022', 'm', 'a', 'x', 'B', 'u', 'f', 'f', 'e', 'r', 'e', 'd', 'T', 'x', 'B', 'y', 't', 'e', 's', '\022',
-'\034', '\n', '\t', 's', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\t', 's', 't', 'r', 'e', 'a',
-'m', 'i', 'n', 'g', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c',
-'e', '.', 't', 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'O', 'u', 't', 'p', 'u', 't', 'C', 'o', 'n', 'f', 'i',
-'g', '\"', '\212', '\004', '\n', '\n', 'O', 'u', 't', 'p', 'u', 't', 'S', 'i', 'n', 'k', '\022', 'H', '\n', '\006', 'f', 'o', 'r', 'm', 'a',
-'t', '\030', '\001', ' ', '\001', '(', '\016', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a',
-'p', '.', 'v', '3', '.', 'O', 'u', 't', 'p', 'u', 't', 'S', 'i', 'n', 'k', '.', 'F', 'o', 'r', 'm', 'a', 't', 'B', '\010', '\372',
-'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\022', 'R', '\n', '\017', 's', 't', 'r', 'e', 'a', 'm',
-'i', 'n', 'g', '_', 'a', 'd', 'm', 'i', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '\'', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
-'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'S', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'A', 'd', 'm',
-'i', 'n', 'S', 'i', 'n', 'k', 'H', '\000', 'R', '\016', 's', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'A', 'd', 'm', 'i', 'n', '\022',
-'G', '\n', '\014', 'f', 'i', 'l', 'e', '_', 'p', 'e', 'r', '_', 't', 'a', 'p', '\030', '\003', ' ', '\001', '(', '\013', '2', '#', '.', 'e',
-'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'F', 'i', 'l', 'e', 'P', 'e',
-'r', 'T', 'a', 'p', 'S', 'i', 'n', 'k', 'H', '\000', 'R', '\n', 'f', 'i', 'l', 'e', 'P', 'e', 'r', 'T', 'a', 'p', '\022', 'O', '\n',
-'\016', 's', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', '_', 'g', 'r', 'p', 'c', '\030', '\004', ' ', '\001', '(', '\013', '2', '&', '.', 'e',
-'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'S', 't', 'r', 'e', 'a', 'm',
-'i', 'n', 'g', 'G', 'r', 'p', 'c', 'S', 'i', 'n', 'k', 'H', '\000', 'R', '\r', 's', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'G',
-'r', 'p', 'c', '\"', '~', '\n', '\006', 'F', 'o', 'r', 'm', 'a', 't', '\022', '\026', '\n', '\022', 'J', 'S', 'O', 'N', '_', 'B', 'O', 'D',
-'Y', '_', 'A', 'S', '_', 'B', 'Y', 'T', 'E', 'S', '\020', '\000', '\022', '\027', '\n', '\023', 'J', 'S', 'O', 'N', '_', 'B', 'O', 'D', 'Y',
-'_', 'A', 'S', '_', 'S', 'T', 'R', 'I', 'N', 'G', '\020', '\001', '\022', '\020', '\n', '\014', 'P', 'R', 'O', 'T', 'O', '_', 'B', 'I', 'N',
-'A', 'R', 'Y', '\020', '\002', '\022', '!', '\n', '\035', 'P', 'R', 'O', 'T', 'O', '_', 'B', 'I', 'N', 'A', 'R', 'Y', '_', 'L', 'E', 'N',
-'G', 'T', 'H', '_', 'D', 'E', 'L', 'I', 'M', 'I', 'T', 'E', 'D', '\020', '\003', '\022', '\016', '\n', '\n', 'P', 'R', 'O', 'T', 'O', '_',
-'T', 'E', 'X', 'T', '\020', '\004', ':', '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v',
-'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'O', 'u', 't', 'p', 'u', 't', 'S', 'i', 'n',
-'k', 'B', '\027', '\n', '\020', 'o', 'u', 't', 'p', 'u', 't', '_', 's', 'i', 'n', 'k', '_', 't', 'y', 'p', 'e', '\022', '\003', '\370', 'B',
-'\001', '\"', 'I', '\n', '\022', 'S', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'A', 'd', 'm', 'i', 'n', 'S', 'i', 'n', 'k', ':', '3',
-'\232', '\305', '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.',
-'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'S', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'A', 'd', 'm', 'i', 'n', 'S', 'i', 'n',
-'k', '\"', 'k', '\n', '\016', 'F', 'i', 'l', 'e', 'P', 'e', 'r', 'T', 'a', 'p', 'S', 'i', 'n', 'k', '\022', '(', '\n', '\013', 'p', 'a',
-'t', 'h', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R',
-'\n', 'p', 'a', 't', 'h', 'P', 'r', 'e', 'f', 'i', 'x', ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y',
-'.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'F', 'i', 'l', 'e',
-'P', 'e', 'r', 'T', 'a', 'p', 'S', 'i', 'n', 'k', '\"', '\256', '\001', '\n', '\021', 'S', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'G',
-'r', 'p', 'c', 'S', 'i', 'n', 'k', '\022', '\025', '\n', '\006', 't', 'a', 'p', '_', 'i', 'd', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\005',
-'t', 'a', 'p', 'I', 'd', '\022', 'N', '\n', '\014', 'g', 'r', 'p', 'c', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\002', ' ', '\001',
-'(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3',
-'.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\013', 'g',
-'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', ':', '2', '\232', '\305', '\210', '\036', '-', '\n', '+', 'e', 'n', 'v', 'o', 'y', '.',
-'s', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'S', 't', 'r', 'e', 'a',
-'m', 'i', 'n', 'g', 'G', 'r', 'p', 'c', 'S', 'i', 'n', 'k', 'B', '|', '\n', '!', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p',
-'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', 'B',
-'\013', 'C', 'o', 'm', 'm', 'o', 'n', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '@', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o',
-'m', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p',
-'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'a', 'p', '/', 'v', '3', ';',
-'t', 'a', 'p', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'3', '.', 'H', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\027', 'h', 't', 't',
+'p', 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', '\022', 'f', '\n', '\033', 'h',
+'t', 't', 'p', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 't', 'r', 'a', 'i', 'l', 'e', 'r', 's', '_', 'm', 'a', 't', 'c',
+'h', '\030', '\006', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a',
+'p', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\030',
+'h', 't', 't', 'p', 'R', 'e', 'q', 'u', 'e', 's', 't', 'T', 'r', 'a', 'i', 'l', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', '\022',
+'f', '\n', '\033', 'h', 't', 't', 'p', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_',
+'m', 'a', 't', 'c', 'h', '\030', '\007', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
+'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h',
+'H', '\000', 'R', '\030', 'h', 't', 't', 'p', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a',
+'t', 'c', 'h', '\022', 'h', '\n', '\034', 'h', 't', 't', 'p', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 't', 'r', 'a', 'i',
+'l', 'e', 'r', 's', '_', 'm', 'a', 't', 'c', 'h', '\030', '\010', ' ', '\001', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's',
+'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\031', 'h', 't', 't', 'p', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'T', 'r', 'a', 'i',
+'l', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', '\022', 'q', '\n', '\037', 'h', 't', 't', 'p', '_', 'r', 'e', 'q', 'u', 'e', 's', 't',
+'_', 'g', 'e', 'n', 'e', 'r', 'i', 'c', '_', 'b', 'o', 'd', 'y', '_', 'm', 'a', 't', 'c', 'h', '\030', '\t', ' ', '\001', '(', '\013',
+'2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'H', 't',
+'t', 'p', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\033', 'h', 't', 't',
+'p', 'R', 'e', 'q', 'u', 'e', 's', 't', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', 'M', 'a', 't', 'c', 'h', '\022',
+'s', '\n', ' ', 'h', 't', 't', 'p', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'g', 'e', 'n', 'e', 'r', 'i', 'c', '_',
+'b', 'o', 'd', 'y', '_', 'm', 'a', 't', 'c', 'h', '\030', '\n', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'G', 'e', 'n', 'e', 'r', 'i', 'c',
+'B', 'o', 'd', 'y', 'M', 'a', 't', 'c', 'h', 'H', '\000', 'R', '\034', 'h', 't', 't', 'p', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e',
+'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', 'M', 'a', 't', 'c', 'h', '\032', '\211', '\001', '\n', '\010', 'M', 'a', 't', 'c',
+'h', 'S', 'e', 't', '\022', 'C', '\n', '\005', 'r', 'u', 'l', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '#', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e',
+'d', 'i', 'c', 'a', 't', 'e', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\002', 'R', '\005', 'r', 'u', 'l', 'e', 's', ':', '8',
+'\232', '\305', '\210', '\036', '3', '\n', '1', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.',
+'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd', 'i', 'c', 'a', 't', 'e', '.', 'M', 'a',
+'t', 'c', 'h', 'S', 'e', 't', ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v',
+'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'M', 'a', 't', 'c', 'h', 'P', 'r', 'e', 'd',
+'i', 'c', 'a', 't', 'e', 'B', '\013', '\n', '\004', 'r', 'u', 'l', 'e', '\022', '\003', '\370', 'B', '\001', '\"', '\205', '\001', '\n', '\020', 'H', 't',
+'t', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M', 'a', 't', 'c', 'h', '\022', '>', '\n', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's',
+'\030', '\001', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u',
+'t', 'e', '.', 'v', '3', '.', 'H', 'e', 'a', 'd', 'e', 'r', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\007', 'h', 'e', 'a', 'd',
+'e', 'r', 's', ':', '1', '\232', '\305', '\210', '\036', ',', '\n', '*', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e',
+'.', 't', 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'H', 't', 't', 'p', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'M',
+'a', 't', 'c', 'h', '\"', '\226', '\002', '\n', '\024', 'H', 't', 't', 'p', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', 'M',
+'a', 't', 'c', 'h', '\022', '\037', '\n', '\013', 'b', 'y', 't', 'e', 's', '_', 'l', 'i', 'm', 'i', 't', '\030', '\001', ' ', '\001', '(', '\r',
+'R', '\n', 'b', 'y', 't', 'e', 's', 'L', 'i', 'm', 'i', 't', '\022', '`', '\n', '\010', 'p', 'a', 't', 't', 'e', 'r', 'n', 's', '\030',
+'\002', ' ', '\003', '(', '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.',
+'v', '3', '.', 'H', 't', 't', 'p', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'B', 'o', 'd', 'y', 'M', 'a', 't', 'c', 'h', '.', 'G',
+'e', 'n', 'e', 'r', 'i', 'c', 'T', 'e', 'x', 't', 'M', 'a', 't', 'c', 'h', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\010', '\001',
+'R', '\010', 'p', 'a', 't', 't', 'e', 'r', 'n', 's', '\032', '{', '\n', '\020', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'T', 'e', 'x', 't',
+'M', 'a', 't', 'c', 'h', '\022', ',', '\n', '\014', 's', 't', 'r', 'i', 'n', 'g', '_', 'm', 'a', 't', 'c', 'h', '\030', '\001', ' ', '\001',
+'(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'H', '\000', 'R', '\013', 's', 't', 'r', 'i', 'n', 'g', 'M', 'a', 't', 'c',
+'h', '\022', ',', '\n', '\014', 'b', 'i', 'n', 'a', 'r', 'y', '_', 'm', 'a', 't', 'c', 'h', '\030', '\002', ' ', '\001', '(', '\014', 'B', '\007',
+'\372', 'B', '\004', 'z', '\002', '\020', '\001', 'H', '\000', 'R', '\013', 'b', 'i', 'n', 'a', 'r', 'y', 'M', 'a', 't', 'c', 'h', 'B', '\013', '\n',
+'\004', 'r', 'u', 'l', 'e', '\022', '\003', '\370', 'B', '\001', '\"', '\300', '\002', '\n', '\014', 'O', 'u', 't', 'p', 'u', 't', 'C', 'o', 'n', 'f',
+'i', 'g', '\022', 'A', '\n', '\005', 's', 'i', 'n', 'k', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y',
+'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'O', 'u', 't', 'p', 'u', 't', 'S', 'i', 'n', 'k',
+'B', '\n', '\372', 'B', '\007', '\222', '\001', '\004', '\010', '\001', '\020', '\001', 'R', '\005', 's', 'i', 'n', 'k', 's', '\022', 'O', '\n', '\025', 'm', 'a',
+'x', '_', 'b', 'u', 'f', 'f', 'e', 'r', 'e', 'd', '_', 'r', 'x', '_', 'b', 'y', 't', 'e', 's', '\030', '\002', ' ', '\001', '(', '\013',
+'2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2',
+'V', 'a', 'l', 'u', 'e', 'R', '\022', 'm', 'a', 'x', 'B', 'u', 'f', 'f', 'e', 'r', 'e', 'd', 'R', 'x', 'B', 'y', 't', 'e', 's',
+'\022', 'O', '\n', '\025', 'm', 'a', 'x', '_', 'b', 'u', 'f', 'f', 'e', 'r', 'e', 'd', '_', 't', 'x', '_', 'b', 'y', 't', 'e', 's',
+'\030', '\003', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
+'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\022', 'm', 'a', 'x', 'B', 'u', 'f', 'f', 'e', 'r', 'e', 'd', 'T',
+'x', 'B', 'y', 't', 'e', 's', '\022', '\034', '\n', '\t', 's', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', '\030', '\004', ' ', '\001', '(', '\010',
+'R', '\t', 's', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y',
+'.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'O', 'u', 't', 'p',
+'u', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\"', '\333', '\004', '\n', '\n', 'O', 'u', 't', 'p', 'u', 't', 'S', 'i', 'n', 'k', '\022', 'H',
+'\n', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\030', '\001', ' ', '\001', '(', '\016', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
+'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'O', 'u', 't', 'p', 'u', 't', 'S', 'i', 'n', 'k', '.', 'F', 'o',
+'r', 'm', 'a', 't', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\006', 'f', 'o', 'r', 'm', 'a', 't', '\022', 'R', '\n',
+'\017', 's', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', '_', 'a', 'd', 'm', 'i', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '\'', '.',
+'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3', '.', 'S', 't', 'r', 'e', 'a',
+'m', 'i', 'n', 'g', 'A', 'd', 'm', 'i', 'n', 'S', 'i', 'n', 'k', 'H', '\000', 'R', '\016', 's', 't', 'r', 'e', 'a', 'm', 'i', 'n',
+'g', 'A', 'd', 'm', 'i', 'n', '\022', 'G', '\n', '\014', 'f', 'i', 'l', 'e', '_', 'p', 'e', 'r', '_', 't', 'a', 'p', '\030', '\003', ' ',
+'\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3',
+'.', 'F', 'i', 'l', 'e', 'P', 'e', 'r', 'T', 'a', 'p', 'S', 'i', 'n', 'k', 'H', '\000', 'R', '\n', 'f', 'i', 'l', 'e', 'P', 'e',
+'r', 'T', 'a', 'p', '\022', 'O', '\n', '\016', 's', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', '_', 'g', 'r', 'p', 'c', '\030', '\004', ' ',
+'\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v', '3',
+'.', 'S', 't', 'r', 'e', 'a', 'm', 'i', 'n', 'g', 'G', 'r', 'p', 'c', 'S', 'i', 'n', 'k', 'H', '\000', 'R', '\r', 's', 't', 'r',
+'e', 'a', 'm', 'i', 'n', 'g', 'G', 'r', 'p', 'c', '\022', 'O', '\n', '\016', 'b', 'u', 'f', 'f', 'e', 'r', 'e', 'd', '_', 'a', 'd',
+'m', 'i', 'n', '\030', '\005', ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
+'t', 'a', 'p', '.', 'v', '3', '.', 'B', 'u', 'f', 'f', 'e', 'r', 'e', 'd', 'A', 'd', 'm', 'i', 'n', 'S', 'i', 'n', 'k', 'H',
+'\000', 'R', '\r', 'b', 'u', 'f', 'f', 'e', 'r', 'e', 'd', 'A', 'd', 'm', 'i', 'n', '\"', '~', '\n', '\006', 'F', 'o', 'r', 'm', 'a',
+'t', '\022', '\026', '\n', '\022', 'J', 'S', 'O', 'N', '_', 'B', 'O', 'D', 'Y', '_', 'A', 'S', '_', 'B', 'Y', 'T', 'E', 'S', '\020', '\000',
+'\022', '\027', '\n', '\023', 'J', 'S', 'O', 'N', '_', 'B', 'O', 'D', 'Y', '_', 'A', 'S', '_', 'S', 'T', 'R', 'I', 'N', 'G', '\020', '\001',
+'\022', '\020', '\n', '\014', 'P', 'R', 'O', 'T', 'O', '_', 'B', 'I', 'N', 'A', 'R', 'Y', '\020', '\002', '\022', '!', '\n', '\035', 'P', 'R', 'O',
+'T', 'O', '_', 'B', 'I', 'N', 'A', 'R', 'Y', '_', 'L', 'E', 'N', 'G', 'T', 'H', '_', 'D', 'E', 'L', 'I', 'M', 'I', 'T', 'E',
+'D', '\020', '\003', '\022', '\016', '\n', '\n', 'P', 'R', 'O', 'T', 'O', '_', 'T', 'E', 'X', 'T', '\020', '\004', ':', '+', '\232', '\305', '\210', '\036',
+'&', '\n', '$', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2', 'a', 'l',
+'p', 'h', 'a', '.', 'O', 'u', 't', 'p', 'u', 't', 'S', 'i', 'n', 'k', 'B', '\027', '\n', '\020', 'o', 'u', 't', 'p', 'u', 't', '_',
+'s', 'i', 'n', 'k', '_', 't', 'y', 'p', 'e', '\022', '\003', '\370', 'B', '\001', '\"', 'I', '\n', '\022', 'S', 't', 'r', 'e', 'a', 'm', 'i',
+'n', 'g', 'A', 'd', 'm', 'i', 'n', 'S', 'i', 'n', 'k', ':', '3', '\232', '\305', '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', 'o', 'y',
+'.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'S', 't', 'r', 'e',
+'a', 'm', 'i', 'n', 'g', 'A', 'd', 'm', 'i', 'n', 'S', 'i', 'n', 'k', '\"', 'p', '\n', '\021', 'B', 'u', 'f', 'f', 'e', 'r', 'e',
+'d', 'A', 'd', 'm', 'i', 'n', 'S', 'i', 'n', 'k', '\022', '&', '\n', '\n', 'm', 'a', 'x', '_', 't', 'r', 'a', 'c', 'e', 's', '\030',
+'\001', ' ', '\001', '(', '\004', 'B', '\007', '\372', 'B', '\004', '2', '\002', ' ', '\000', 'R', '\t', 'm', 'a', 'x', 'T', 'r', 'a', 'c', 'e', 's',
+'\022', '3', '\n', '\007', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l',
+'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\007', 't', 'i', 'm', 'e',
+'o', 'u', 't', '\"', 'k', '\n', '\016', 'F', 'i', 'l', 'e', 'P', 'e', 'r', 'T', 'a', 'p', 'S', 'i', 'n', 'k', '\022', '(', '\n', '\013',
+'p', 'a', 't', 'h', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020',
+'\001', 'R', '\n', 'p', 'a', 't', 'h', 'P', 'r', 'e', 'f', 'i', 'x', ':', '/', '\232', '\305', '\210', '\036', '*', '\n', '(', 'e', 'n', 'v',
+'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'F', 'i',
+'l', 'e', 'P', 'e', 'r', 'T', 'a', 'p', 'S', 'i', 'n', 'k', '\"', '\256', '\001', '\n', '\021', 'S', 't', 'r', 'e', 'a', 'm', 'i', 'n',
+'g', 'G', 'r', 'p', 'c', 'S', 'i', 'n', 'k', '\022', '\025', '\n', '\006', 't', 'a', 'p', '_', 'i', 'd', '\030', '\001', ' ', '\001', '(', '\t',
+'R', '\005', 't', 'a', 'p', 'I', 'd', '\022', 'N', '\n', '\014', 'g', 'r', 'p', 'c', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\002',
+' ', '\001', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
+'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R',
+'\013', 'g', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', ':', '2', '\232', '\305', '\210', '\036', '-', '\n', '+', 'e', 'n', 'v', 'o',
+'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 't', 'a', 'p', '.', 'v', '2', 'a', 'l', 'p', 'h', 'a', '.', 'S', 't', 'r',
+'e', 'a', 'm', 'i', 'n', 'g', 'G', 'r', 'p', 'c', 'S', 'i', 'n', 'k', 'B', '|', '\n', '!', 'i', 'o', '.', 'e', 'n', 'v', 'o',
+'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'a', 'p', '.', 'v',
+'3', 'B', '\013', 'C', 'o', 'm', 'm', 'o', 'n', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', '@', 'g', 'i', 't', 'h', 'u', 'b', '.',
+'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l',
+'-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'a', 'p', '/', 'v',
+'3', ';', 't', 'a', 'p', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
-static _upb_DefPool_Init *deps[10] = {
+static _upb_DefPool_Init *deps[11] = {
&envoy_config_common_matcher_v3_matcher_proto_upbdefinit,
&envoy_config_core_v3_base_proto_upbdefinit,
&envoy_config_core_v3_grpc_service_proto_upbdefinit,
&envoy_config_route_v3_route_components_proto_upbdefinit,
+ &google_protobuf_duration_proto_upbdefinit,
&google_protobuf_wrappers_proto_upbdefinit,
&envoy_annotations_deprecation_proto_upbdefinit,
&udpa_annotations_status_proto_upbdefinit,
@@ -184,5 +195,5 @@ _upb_DefPool_Init envoy_config_tap_v3_common_proto_upbdefinit = {
deps,
&envoy_config_tap_v3_common_proto_upb_file_layout,
"envoy/config/tap/v3/common.proto",
- UPB_STRINGVIEW_INIT(descriptor, 3646)
+ UPB_STRINGVIEW_INIT(descriptor, 3873)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h
index 209a99e268..1d974d011b 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h
@@ -66,6 +66,11 @@ UPB_INLINE const upb_MessageDef *envoy_config_tap_v3_StreamingAdminSink_getmsgde
return upb_DefPool_FindMessageByName(s, "envoy.config.tap.v3.StreamingAdminSink");
}
+UPB_INLINE const upb_MessageDef *envoy_config_tap_v3_BufferedAdminSink_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_config_tap_v3_common_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.config.tap.v3.BufferedAdminSink");
+}
+
UPB_INLINE const upb_MessageDef *envoy_config_tap_v3_FilePerTapSink_getmsgdef(upb_DefPool *s) {
_upb_DefPool_LoadDefInit(s, &envoy_config_tap_v3_common_proto_upbdefinit);
return upb_DefPool_FindMessageByName(s, "envoy.config.tap.v3.FilePerTapSink");
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c
new file mode 100644
index 0000000000..9c784a9618
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c
@@ -0,0 +1,47 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/config/trace/v3/opentelemetry.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#include "upb/def.h"
+#include "envoy/config/trace/v3/opentelemetry.upbdefs.h"
+#include "envoy/config/trace/v3/opentelemetry.upb.h"
+
+extern _upb_DefPool_Init envoy_config_core_v3_grpc_service_proto_upbdefinit;
+extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
+extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
+static const char descriptor[414] = {'\n', ')', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3', '/', 'o',
+'p', 'e', 'n', 't', 'e', 'l', 'e', 'm', 'e', 't', 'r', 'y', '.', 'p', 'r', 'o', 't', 'o', '\022', '\025', 'e', 'n', 'v', 'o', 'y',
+'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'r', 'a', 'c', 'e', '.', 'v', '3', '\032', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'c',
+'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'g', 'r', 'p', 'c', '_', 's', 'e', 'r', 'v', 'i', 'c',
+'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's',
+'/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v',
+'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', 'e', '\n', '\023', 'O', 'p', 'e', 'n', 'T', 'e', 'l', 'e',
+'m', 'e', 't', 'r', 'y', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'N', '\n', '\014', 'g', 'r', 'p', 'c', '_', 's', 'e', 'r', 'v', 'i',
+'c', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '!', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c',
+'o', 'r', 'e', '.', 'v', '3', '.', 'G', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'B', '\010', '\372', 'B', '\005', '\212', '\001',
+'\002', '\020', '\001', 'R', '\013', 'g', 'r', 'p', 'c', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'B', '\211', '\001', '\n', '#', 'i', 'o', '.', 'e',
+'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'r',
+'a', 'c', 'e', '.', 'v', '3', 'B', '\022', 'O', 'p', 'e', 'n', 't', 'e', 'l', 'e', 'm', 'e', 't', 'r', 'y', 'P', 'r', 'o', 't',
+'o', 'P', '\001', 'Z', 'D', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x',
+'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/',
+'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3', ';', 't', 'r', 'a', 'c', 'e', 'v', '3', '\272', '\200',
+'\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+};
+
+static _upb_DefPool_Init *deps[4] = {
+ &envoy_config_core_v3_grpc_service_proto_upbdefinit,
+ &udpa_annotations_status_proto_upbdefinit,
+ &validate_validate_proto_upbdefinit,
+ NULL
+};
+
+_upb_DefPool_Init envoy_config_trace_v3_opentelemetry_proto_upbdefinit = {
+ deps,
+ &envoy_config_trace_v3_opentelemetry_proto_upb_file_layout,
+ "envoy/config/trace/v3/opentelemetry.proto",
+ UPB_STRINGVIEW_INIT(descriptor, 414)
+};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h
new file mode 100644
index 0000000000..74f9e4c7c1
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h
@@ -0,0 +1,35 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/config/trace/v3/opentelemetry.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#ifndef ENVOY_CONFIG_TRACE_V3_OPENTELEMETRY_PROTO_UPBDEFS_H_
+#define ENVOY_CONFIG_TRACE_V3_OPENTELEMETRY_PROTO_UPBDEFS_H_
+
+#include "upb/def.h"
+#include "upb/port_def.inc"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "upb/def.h"
+
+#include "upb/port_def.inc"
+
+extern _upb_DefPool_Init envoy_config_trace_v3_opentelemetry_proto_upbdefinit;
+
+UPB_INLINE const upb_MessageDef *envoy_config_trace_v3_OpenTelemetryConfig_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_config_trace_v3_opentelemetry_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.config.trace.v3.OpenTelemetryConfig");
+}
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* ENVOY_CONFIG_TRACE_V3_OPENTELEMETRY_PROTO_UPBDEFS_H_ */
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c
index 60cfbd8743..9cebfdee99 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c
@@ -15,9 +15,10 @@ extern _upb_DefPool_Init envoy_config_trace_v3_dynamic_ot_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_trace_v3_http_tracer_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_trace_v3_lightstep_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_trace_v3_opencensus_proto_upbdefinit;
+extern _upb_DefPool_Init envoy_config_trace_v3_opentelemetry_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_trace_v3_service_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_trace_v3_zipkin_proto_upbdefinit;
-static const char descriptor[473] = {'\n', '!', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3', '/', 't',
+static const char descriptor[518] = {'\n', '!', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3', '/', 't',
'r', 'a', 'c', 'e', '.', 'p', 'r', 'o', 't', 'o', '\022', '\025', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.',
't', 'r', 'a', 'c', 'e', '.', 'v', '3', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r',
'a', 'c', 'e', '/', 'v', '3', '/', 'd', 'a', 't', 'a', 'd', 'o', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '&', 'e', 'n', 'v',
@@ -27,23 +28,26 @@ static const char descriptor[473] = {'\n', '!', 'e', 'n', 'v', 'o', 'y', '/', 'c
'o', '\032', '%', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3', '/',
'l', 'i', 'g', 'h', 't', 's', 't', 'e', 'p', '.', 'p', 'r', 'o', 't', 'o', '\032', '&', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o',
'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3', '/', 'o', 'p', 'e', 'n', 'c', 'e', 'n', 's', 'u', 's', '.',
-'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e',
-'/', 'v', '3', '/', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\"', 'e', 'n', 'v', 'o', 'y', '/',
-'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3', '/', 'z', 'i', 'p', 'k', 'i', 'n', '.', 'p', 'r',
-'o', 't', 'o', 'B', 'y', '\n', '#', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 't', 'r', 'a', 'c', 'e', '.', 'v', '3', 'B', '\n', 'T', 'r', 'a', 'c', 'e', 'P',
-'r', 'o', 't', 'o', 'P', '\001', 'Z', 'D', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p',
-'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v',
-'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3', ';', 't', 'r', 'a', 'c', 'e', 'v',
-'3', 'P', '\000', 'P', '\001', 'P', '\002', 'P', '\003', 'P', '\004', 'P', '\005', 'P', '\006', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'p', 'r', 'o', 't', 'o', '\032', ')', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e',
+'/', 'v', '3', '/', 'o', 'p', 'e', 'n', 't', 'e', 'l', 'e', 'm', 'e', 't', 'r', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '#',
+'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3', '/', 's', 'e', 'r',
+'v', 'i', 'c', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\"', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/',
+'t', 'r', 'a', 'c', 'e', '/', 'v', '3', '/', 'z', 'i', 'p', 'k', 'i', 'n', '.', 'p', 'r', 'o', 't', 'o', 'B', 'y', '\n', '#',
+'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
+'g', '.', 't', 'r', 'a', 'c', 'e', '.', 'v', '3', 'B', '\n', 'T', 'r', 'a', 'c', 'e', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z',
+'D', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o',
+'-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f',
+'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3', ';', 't', 'r', 'a', 'c', 'e', 'v', '3', 'P', '\000', 'P', '\001', 'P', '\002',
+'P', '\003', 'P', '\004', 'P', '\005', 'P', '\006', 'P', '\007', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
-static _upb_DefPool_Init *deps[8] = {
+static _upb_DefPool_Init *deps[9] = {
&envoy_config_trace_v3_datadog_proto_upbdefinit,
&envoy_config_trace_v3_dynamic_ot_proto_upbdefinit,
&envoy_config_trace_v3_http_tracer_proto_upbdefinit,
&envoy_config_trace_v3_lightstep_proto_upbdefinit,
&envoy_config_trace_v3_opencensus_proto_upbdefinit,
+ &envoy_config_trace_v3_opentelemetry_proto_upbdefinit,
&envoy_config_trace_v3_service_proto_upbdefinit,
&envoy_config_trace_v3_zipkin_proto_upbdefinit,
NULL
@@ -53,5 +57,5 @@ _upb_DefPool_Init envoy_config_trace_v3_trace_proto_upbdefinit = {
deps,
&envoy_config_trace_v3_trace_proto_upb_file_layout,
"envoy/config/trace/v3/trace.proto",
- UPB_STRINGVIEW_INIT(descriptor, 473)
+ UPB_STRINGVIEW_INIT(descriptor, 518)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c
index 97a37efd34..8a94a4d740 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c
@@ -11,41 +11,62 @@
#include "envoy/extensions/filters/http/rbac/v3/rbac.upb.h"
extern _upb_DefPool_Init envoy_config_rbac_v3_rbac_proto_upbdefinit;
+extern _upb_DefPool_Init xds_annotations_v3_status_proto_upbdefinit;
+extern _upb_DefPool_Init xds_type_matcher_v3_matcher_proto_upbdefinit;
+extern _upb_DefPool_Init udpa_annotations_migrate_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
-static const char descriptor[725] = {'\n', '0', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 'f', 'i', 'l', 't', 'e', 'r',
+static const char descriptor[1080] = {'\n', '0', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 'f', 'i', 'l', 't', 'e', 'r',
's', '/', 'h', 't', 't', 'p', '/', 'r', 'b', 'a', 'c', '/', 'v', '3', '/', 'r', 'b', 'a', 'c', '.', 'p', 'r', 'o', 't', 'o',
'\022', '%', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r',
's', '.', 'h', 't', 't', 'p', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '\032', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n',
-'f', 'i', 'g', '/', 'r', 'b', 'a', 'c', '/', 'v', '3', '/', 'r', 'b', 'a', 'c', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u',
+'f', 'i', 'g', '/', 'r', 'b', 'a', 'c', '/', 'v', '3', '/', 'r', 'b', 'a', 'c', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'x',
+'d', 's', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', '3', '/', 's', 't', 'a', 't', 'u', 's', '.',
+'p', 'r', 'o', 't', 'o', '\032', '!', 'x', 'd', 's', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v',
+'3', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n',
+'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'm', 'i', 'g', 'r', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u',
'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r',
'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r',
-'s', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\"', '\336', '\001', '\n', '\004', 'R', 'B', 'A', 'C', '\022', '0', '\n',
+'s', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\"', '\335', '\003', '\n', '\004', 'R', 'B', 'A', 'C', '\022', 'I', '\n',
'\005', 'r', 'u', 'l', 'e', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
-'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'R', 'B', 'A', 'C', 'R', '\005', 'r', 'u', 'l', 'e', 's', '\022', '=', '\n',
-'\014', 's', 'h', 'a', 'd', 'o', 'w', '_', 'r', 'u', 'l', 'e', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'R', 'B', 'A', 'C', 'R', '\013', 's',
-'h', 'a', 'd', 'o', 'w', 'R', 'u', 'l', 'e', 's', '\022', '7', '\n', '\030', 's', 'h', 'a', 'd', 'o', 'w', '_', 'r', 'u', 'l', 'e',
-'s', '_', 's', 't', 'a', 't', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\025', 's', 'h', 'a', 'd',
-'o', 'w', 'R', 'u', 'l', 'e', 's', 'S', 't', 'a', 't', 'P', 'r', 'e', 'f', 'i', 'x', ':', ',', '\232', '\305', '\210', '\036', '\'', '\n',
-'%', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'h', 't', 't', 'p',
-'.', 'r', 'b', 'a', 'c', '.', 'v', '2', '.', 'R', 'B', 'A', 'C', '\"', '\213', '\001', '\n', '\014', 'R', 'B', 'A', 'C', 'P', 'e', 'r',
-'R', 'o', 'u', 't', 'e', '\022', '?', '\n', '\004', 'r', 'b', 'a', 'c', '\030', '\002', ' ', '\001', '(', '\013', '2', '+', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'h', 't', 't',
-'p', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'R', 'B', 'A', 'C', 'R', '\004', 'r', 'b', 'a', 'c', ':', '4', '\232', '\305', '\210',
-'\036', '/', '\n', '-', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'h',
-'t', 't', 'p', '.', 'r', 'b', 'a', 'c', '.', 'v', '2', '.', 'R', 'B', 'A', 'C', 'P', 'e', 'r', 'R', 'o', 'u', 't', 'e', 'J',
-'\004', '\010', '\001', '\020', '\002', 'B', '\237', '\001', '\n', '3', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e',
-'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'h',
-'t', 't', 'p', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', 'B', '\t', 'R', 'b', 'a', 'c', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z',
-'S', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o',
-'-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e',
-'n', 's', 'i', 'o', 'n', 's', '/', 'f', 'i', 'l', 't', 'e', 'r', 's', '/', 'h', 't', 't', 'p', '/', 'r', 'b', 'a', 'c', '/',
-'v', '3', ';', 'r', 'b', 'a', 'c', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'i', 'g', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'R', 'B', 'A', 'C', 'B', '\027', '\362', '\230', '\376', '\217', '\005', '\021', '\022', '\017',
+'r', 'u', 'l', 'e', 's', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', '\005', 'r', 'u', 'l', 'e', 's', '\022', 'W', '\n',
+'\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e',
+'.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\037', '\362', '\230', '\376', '\217',
+'\005', '\021', '\022', '\017', 'r', 'u', 'l', 'e', 's', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\322', '\306', '\244', '\341', '\006', '\002',
+'\010', '\001', 'R', '\007', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\022', ']', '\n', '\014', 's', 'h', 'a', 'd', 'o', 'w', '_', 'r', 'u', 'l',
+'e', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r',
+'b', 'a', 'c', '.', 'v', '3', '.', 'R', 'B', 'A', 'C', 'B', '\036', '\362', '\230', '\376', '\217', '\005', '\030', '\022', '\026', 's', 'h', 'a', 'd',
+'o', 'w', '_', 'r', 'u', 'l', 'e', 's', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', 'R', '\013', 's', 'h', 'a', 'd', 'o',
+'w', 'R', 'u', 'l', 'e', 's', '\022', 'k', '\n', '\016', 's', 'h', 'a', 'd', 'o', 'w', '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', '\030',
+'\005', ' ', '\001', '(', '\013', '2', '\034', '.', 'x', 'd', 's', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.',
+'v', '3', '.', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '&', '\362', '\230', '\376', '\217', '\005', '\030', '\022', '\026', 's', 'h', 'a', 'd', 'o',
+'w', '_', 'r', 'u', 'l', 'e', 's', '_', 's', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\322', '\306', '\244', '\341', '\006', '\002', '\010', '\001',
+'R', '\r', 's', 'h', 'a', 'd', 'o', 'w', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', '7', '\n', '\030', 's', 'h', 'a', 'd', 'o', 'w',
+'_', 'r', 'u', 'l', 'e', 's', '_', 's', 't', 'a', 't', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\003', ' ', '\001', '(', '\t', 'R',
+'\025', 's', 'h', 'a', 'd', 'o', 'w', 'R', 'u', 'l', 'e', 's', 'S', 't', 'a', 't', 'P', 'r', 'e', 'f', 'i', 'x', ':', ',', '\232',
+'\305', '\210', '\036', '\'', '\n', '%', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r',
+'.', 'h', 't', 't', 'p', '.', 'r', 'b', 'a', 'c', '.', 'v', '2', '.', 'R', 'B', 'A', 'C', '\"', '\213', '\001', '\n', '\014', 'R', 'B',
+'A', 'C', 'P', 'e', 'r', 'R', 'o', 'u', 't', 'e', '\022', '?', '\n', '\004', 'r', 'b', 'a', 'c', '\030', '\002', ' ', '\001', '(', '\013', '2',
+'+', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r',
+'s', '.', 'h', 't', 't', 'p', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', '.', 'R', 'B', 'A', 'C', 'R', '\004', 'r', 'b', 'a', 'c',
+':', '4', '\232', '\305', '\210', '\036', '/', '\n', '-', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l',
+'t', 'e', 'r', '.', 'h', 't', 't', 'p', '.', 'r', 'b', 'a', 'c', '.', 'v', '2', '.', 'R', 'B', 'A', 'C', 'P', 'e', 'r', 'R',
+'o', 'u', 't', 'e', 'J', '\004', '\010', '\001', '\020', '\002', 'B', '\237', '\001', '\n', '3', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r',
+'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't',
+'e', 'r', 's', '.', 'h', 't', 't', 'p', '.', 'r', 'b', 'a', 'c', '.', 'v', '3', 'B', '\t', 'R', 'b', 'a', 'c', 'P', 'r', 'o',
+'t', 'o', 'P', '\001', 'Z', 'S', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o',
+'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y',
+'/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 'f', 'i', 'l', 't', 'e', 'r', 's', '/', 'h', 't', 't', 'p', '/',
+'r', 'b', 'a', 'c', '/', 'v', '3', ';', 'r', 'b', 'a', 'c', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p',
+'r', 'o', 't', 'o', '3',
};
-static _upb_DefPool_Init *deps[4] = {
+static _upb_DefPool_Init *deps[7] = {
&envoy_config_rbac_v3_rbac_proto_upbdefinit,
+ &xds_annotations_v3_status_proto_upbdefinit,
+ &xds_type_matcher_v3_matcher_proto_upbdefinit,
+ &udpa_annotations_migrate_proto_upbdefinit,
&udpa_annotations_status_proto_upbdefinit,
&udpa_annotations_versioning_proto_upbdefinit,
NULL
@@ -55,5 +76,5 @@ _upb_DefPool_Init envoy_extensions_filters_http_rbac_v3_rbac_proto_upbdefinit =
deps,
&envoy_extensions_filters_http_rbac_v3_rbac_proto_upb_file_layout,
"envoy/extensions/filters/http/rbac/v3/rbac.proto",
- UPB_STRINGVIEW_INIT(descriptor, 725)
+ UPB_STRINGVIEW_INIT(descriptor, 1080)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c
index f63b31345f..f4aa8d7dc9 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c
@@ -11,6 +11,7 @@
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h"
extern _upb_DefPool_Init envoy_config_accesslog_v3_accesslog_proto_upbdefinit;
+extern _upb_DefPool_Init envoy_config_core_v3_address_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_core_v3_base_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_core_v3_config_source_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit;
@@ -30,221 +31,233 @@ extern _upb_DefPool_Init udpa_annotations_security_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[11656] = {'\n', 'Y', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 'f', 'i', 'l', 't', 'e', 'r',
+static const char descriptor[12381] = {'\n', 'Y', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 'f', 'i', 'l', 't', 'e', 'r',
's', '/', 'n', 'e', 't', 'w', 'o', 'r', 'k', '/', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n',
'_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '/', 'v', '3', '/', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i',
'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'p', 'r', 'o', 't', 'o', '\022', ';', 'e', 'n', 'v', 'o', 'y', '.', 'e',
'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k',
'.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.',
'v', '3', '\032', ')', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o',
-'g', '/', 'v', '3', '/', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'e', 'n', 'v',
-'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.', 'p', 'r',
-'o', 't', 'o', '\032', '(', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3',
-'/', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '$', 'e', 'n', 'v',
-'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'e', 'x', 't', 'e', 'n', 's', 'i',
-'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o',
-'r', 'e', '/', 'v', '3', '/', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '.', 'p', 'r', 'o', 't', 'o', '\032', '5', 'e', 'n', 'v',
-'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 's', 'u', 'b', 's', 't', 'i', 't',
-'u', 't', 'i', 'o', 'n', '_', 'f', 'o', 'r', 'm', 'a', 't', '_', 's', 't', 'r', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o',
-'\032', '!', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't', 'e', '/', 'v', '3', '/', 'r',
-'o', 'u', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '(', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/',
-'r', 'o', 'u', 't', 'e', '/', 'v', '3', '/', 's', 'c', 'o', 'p', 'e', 'd', '_', 'r', 'o', 'u', 't', 'e', '.', 'p', 'r', 'o',
-'t', 'o', '\032', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3',
-'/', 'h', 't', 't', 'p', '_', 't', 'r', 'a', 'c', 'e', 'r', '.', 'p', 'r', 'o', 't', 'o', '\032', ',', 'e', 'n', 'v', 'o', 'y',
-'/', 't', 'y', 'p', 'e', '/', 'h', 't', 't', 'p', '/', 'v', '3', '/', 'p', 'a', 't', 'h', '_', 't', 'r', 'a', 'n', 's', 'f',
-'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '&', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p',
-'e', '/', 't', 'r', 'a', 'c', 'i', 'n', 'g', '/', 'v', '3', '/', 'c', 'u', 's', 't', 'o', 'm', '_', 't', 'a', 'g', '.', 'p',
-'r', 'o', 't', 'o', '\032', '\033', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'v', '3', '/', 'p', 'e', 'r', 'c', 'e',
-'n', 't', '.', 'p', 'r', 'o', 't', 'o', '\032', '\031', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
-'/', 'a', 'n', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b',
-'u', 'f', '/', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e',
-'/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032',
-'\036', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'm', 'i', 'g', 'r', 'a', 't', 'e',
-'.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/',
-'s', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o',
-'t', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p',
-'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.',
-'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.',
-'p', 'r', 'o', 't', 'o', '\"', '\223', '4', '\n', '\025', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M',
-'a', 'n', 'a', 'g', 'e', 'r', '\022', '\205', '\001', '\n', '\n', 'c', 'o', 'd', 'e', 'c', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001',
-'(', '\016', '2', '\\', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l',
-'t', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't',
-'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c',
-'t', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'C', 'o', 'd', 'e', 'c', 'T', 'y', 'p', 'e', 'B', '\010', '\372', 'B',
-'\005', '\202', '\001', '\002', '\020', '\001', 'R', '\t', 'c', 'o', 'd', 'e', 'c', 'T', 'y', 'p', 'e', '\022', '(', '\n', '\013', 's', 't', 'a', 't',
-'_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', 's',
-'t', 'a', 't', 'P', 'r', 'e', 'f', 'i', 'x', '\022', 'T', '\n', '\003', 'r', 'd', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '@', '.',
+'g', '/', 'v', '3', '/', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\"', 'e', 'n', 'v',
+'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'a', 'd', 'd', 'r', 'e', 's', 's',
+'.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e',
+'/', 'v', '3', '/', 'b', 'a', 's', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '(', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n',
+'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 'o', 'u', 'r', 'c', 'e',
+'.', 'p', 'r', 'o', 't', 'o', '\032', '$', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e',
+'/', 'v', '3', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o',
+'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l',
+'.', 'p', 'r', 'o', 't', 'o', '\032', '5', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e',
+'/', 'v', '3', '/', 's', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'i', 'o', 'n', '_', 'f', 'o', 'r', 'm', 'a', 't', '_', 's',
+'t', 'r', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g',
+'/', 'r', 'o', 'u', 't', 'e', '/', 'v', '3', '/', 'r', 'o', 'u', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '(', 'e', 'n',
+'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'r', 'o', 'u', 't', 'e', '/', 'v', '3', '/', 's', 'c', 'o', 'p', 'e',
+'d', '_', 'r', 'o', 'u', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f',
+'i', 'g', '/', 't', 'r', 'a', 'c', 'e', '/', 'v', '3', '/', 'h', 't', 't', 'p', '_', 't', 'r', 'a', 'c', 'e', 'r', '.', 'p',
+'r', 'o', 't', 'o', '\032', ',', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'h', 't', 't', 'p', '/', 'v', '3', '/',
+'p', 'a', 't', 'h', '_', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o',
+'\032', '&', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 't', 'r', 'a', 'c', 'i', 'n', 'g', '/', 'v', '3', '/', 'c',
+'u', 's', 't', 'o', 'm', '_', 't', 'a', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\033', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y',
+'p', 'e', '/', 'v', '3', '/', 'p', 'e', 'r', 'c', 'e', 'n', 't', '.', 'p', 'r', 'o', 't', 'o', '\032', '\031', 'g', 'o', 'o', 'g',
+'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'a', 'n', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o',
+'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r',
+'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p',
+'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i',
+'o', 'n', 's', '/', 'm', 'i', 'g', 'r', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'u', 'd', 'p', 'a', '/', 'a',
+'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'p', 'r', 'o', 't', 'o',
+'\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's',
+'.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/',
+'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't',
+'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\304', '9', '\n', '\025', 'H', 't', 't', 'p',
+'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '\022', '\205', '\001', '\n', '\n', 'c', 'o', 'd',
+'e', 'c', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', '\\', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't',
+'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h',
+'t', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3',
+'.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'C', 'o',
+'d', 'e', 'c', 'T', 'y', 'p', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\t', 'c', 'o', 'd', 'e', 'c', 'T',
+'y', 'p', 'e', '\022', '(', '\n', '\013', 's', 't', 'a', 't', '_', 'p', 'r', 'e', 'f', 'i', 'x', '\030', '\002', ' ', '\001', '(', '\t', 'B',
+'\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\n', 's', 't', 'a', 't', 'P', 'r', 'e', 'f', 'i', 'x', '\022', 'T', '\n', '\003', 'r',
+'d', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '@', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o',
+'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c',
+'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'R', 'd', 's', 'H',
+'\000', 'R', '\003', 'r', 'd', 's', '\022', 'N', '\n', '\014', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\004', ' ',
+'\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.',
+'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\013',
+'r', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'p', '\n', '\r', 's', 'c', 'o', 'p', 'e', 'd', '_', 'r', 'o', 'u',
+'t', 'e', 's', '\030', '\037', ' ', '\001', '(', '\013', '2', 'I', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i',
+'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_',
+'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'S', 'c', 'o',
+'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', 'H', '\000', 'R', '\014', 's', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's',
+'\022', 'j', '\n', '\014', 'h', 't', 't', 'p', '_', 'f', 'i', 'l', 't', 'e', 'r', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', 'G', '.',
'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.',
'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm',
-'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'R', 'd', 's', 'H', '\000', 'R', '\003', 'r', 'd', 's', '\022', 'N', '\n', '\014', 'r',
-'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y',
-'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'r', 'o', 'u', 't', 'e', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n',
-'f', 'i', 'g', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'H', '\000', 'R', '\013', 'r', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g',
-'\022', 'p', '\n', '\r', 's', 'c', 'o', 'p', 'e', 'd', '_', 'r', 'o', 'u', 't', 'e', 's', '\030', '\037', ' ', '\001', '(', '\013', '2', 'I',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's',
-'.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_',
-'m', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', 'H', '\000',
-'R', '\014', 's', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', '\022', 'j', '\n', '\014', 'h', 't', 't', 'p', '_', 'f', 'i',
-'l', 't', 'e', 'r', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', 'G', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n',
+'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'F', 'i', 'l', 't', 'e', 'r', 'R', '\013', 'h', 't', 't',
+'p', 'F', 'i', 'l', 't', 'e', 'r', 's', '\022', '@', '\n', '\016', 'a', 'd', 'd', '_', 'u', 's', 'e', 'r', '_', 'a', 'g', 'e', 'n',
+'t', '\030', '\006', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
+'.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\014', 'a', 'd', 'd', 'U', 's', 'e', 'r', 'A', 'g', 'e', 'n', 't', '\022',
+'t', '\n', '\007', 't', 'r', 'a', 'c', 'i', 'n', 'g', '\030', '\007', ' ', '\001', '(', '\013', '2', 'Z', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r',
+'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r',
+'.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r',
+'.', 'T', 'r', 'a', 'c', 'i', 'n', 'g', 'R', '\007', 't', 'r', 'a', 'c', 'i', 'n', 'g', '\022', 's', '\n', '\034', 'c', 'o', 'm', 'm',
+'o', 'n', '_', 'h', 't', 't', 'p', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030',
+'#', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e',
+'.', 'v', '3', '.', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'B', '\007',
+'\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\031', 'c', 'o', 'm', 'm', 'o', 'n', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c',
+'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '^', '\n', '\025', 'h', 't', 't', 'p', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o',
+'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\010', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c',
+'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c',
+'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\023', 'h', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p',
+'t', 'i', 'o', 'n', 's', '\022', 'i', '\n', '\026', 'h', 't', 't', 'p', '2', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o',
+'p', 't', 'i', 'o', 'n', 's', '\030', '\t', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
+'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O',
+'p', 't', 'i', 'o', 'n', 's', 'B', '\007', '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\024', 'h', 't', 't', 'p', '2', 'P', 'r', 'o',
+'t', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '`', '\n', '\026', 'h', 't', 't', 'p', '3', '_', 'p', 'r', 'o',
+'t', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', ',', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '3', 'P', 'r',
+'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\024', 'h', 't', 't', 'p', '3', 'P', 'r', 'o', 't', 'o',
+'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', ',', '\n', '\013', 's', 'e', 'r', 'v', 'e', 'r', '_', 'n', 'a', 'm', 'e',
+'\030', '\n', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\n', 's', 'e', 'r', 'v',
+'e', 'r', 'N', 'a', 'm', 'e', '\022', '\271', '\001', '\n', '\034', 's', 'e', 'r', 'v', 'e', 'r', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_',
+'t', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\030', '\"', ' ', '\001', '(', '\016', '2', 'm', '.', 'e', 'n',
+'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e',
+'t', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n',
+'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n',
+'a', 'g', 'e', 'r', '.', 'S', 'e', 'r', 'v', 'e', 'r', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r',
+'m', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\032', 's', 'e', 'r', 'v', 'e', 'r', 'H',
+'e', 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\022', 'r', '\n', '\034', 's', 'c',
+'h', 'e', 'm', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o',
+'n', '\030', '0', ' ', '\001', '(', '\013', '2', '0', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o',
+'r', 'e', '.', 'v', '3', '.', 'S', 'c', 'h', 'e', 'm', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o',
+'r', 'm', 'a', 't', 'i', 'o', 'n', 'R', '\032', 's', 'c', 'h', 'e', 'm', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n',
+'s', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\022', ']', '\n', '\026', 'm', 'a', 'x', '_', 'r', 'e', 'q', 'u', 'e', 's', 't',
+'_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 'k', 'b', '\030', '\035', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l',
+'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\n', '\372',
+'B', '\007', '*', '\005', '\030', '\200', '@', ' ', '\000', 'R', '\023', 'm', 'a', 'x', 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd',
+'e', 'r', 's', 'K', 'b', '\022', 'R', '\n', '\023', 's', 't', 'r', 'e', 'a', 'm', '_', 'i', 'd', 'l', 'e', '_', 't', 'i', 'm', 'e',
+'o', 'u', 't', '\030', '\030', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b',
+'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\007', '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\021', 's', 't', 'r',
+'e', 'a', 'm', 'I', 'd', 'l', 'e', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'K', '\n', '\017', 'r', 'e', 'q', 'u', 'e', 's', 't',
+'_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\034', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
+'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\007', '\212', '\223', '\267', '*', '\002', '\010', '\001',
+'R', '\016', 'r', 'e', 'q', 'u', 'e', 's', 't', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'b', '\n', '\027', 'r', 'e', 'q', 'u', 'e',
+'s', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', ')', ' ', '\001', '(', '\013', '2',
+'\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o',
+'n', 'B', '\017', '\372', 'B', '\005', '\252', '\001', '\002', '2', '\000', '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\025', 'r', 'e', 'q', 'u', 'e',
+'s', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', '>', '\n', '\r', 'd', 'r', 'a', 'i', 'n',
+'_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\014', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
+'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\014', 'd', 'r', 'a', 'i', 'n', 'T', 'i',
+'m', 'e', 'o', 'u', 't', '\022', 'M', '\n', '\025', 'd', 'e', 'l', 'a', 'y', 'e', 'd', '_', 'c', 'l', 'o', 's', 'e', '_', 't', 'i',
+'m', 'e', 'o', 'u', 't', '\030', '\032', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
+'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\023', 'd', 'e', 'l', 'a', 'y', 'e', 'd', 'C', 'l', 'o',
+'s', 'e', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'C', '\n', '\n', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', 'o', 'g', '\030', '\r',
+' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's',
+'s', 'l', 'o', 'g', '.', 'v', '3', '.', 'A', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', 'R', '\t', 'a', 'c', 'c', 'e', 's', 's',
+'L', 'o', 'g', '\022', 'Q', '\n', '\022', 'u', 's', 'e', '_', 'r', 'e', 'm', 'o', 't', 'e', '_', 'a', 'd', 'd', 'r', 'e', 's', 's',
+'\030', '\016', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
+'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'B', '\007', '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\020', 'u', 's', 'e', 'R', 'e',
+'m', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', '\022', '/', '\n', '\024', 'x', 'f', 'f', '_', 'n', 'u', 'm', '_', 't', 'r',
+'u', 's', 't', 'e', 'd', '_', 'h', 'o', 'p', 's', '\030', '\023', ' ', '\001', '(', '\r', 'R', '\021', 'x', 'f', 'f', 'N', 'u', 'm', 'T',
+'r', 'u', 's', 't', 'e', 'd', 'H', 'o', 'p', 's', '\022', 's', '\n', ' ', 'o', 'r', 'i', 'g', 'i', 'n', 'a', 'l', '_', 'i', 'p',
+'_', 'd', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '\030', '.', ' ', '\003',
+'(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3',
+'.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\035', 'o', 'r',
+'i', 'g', 'i', 'n', 'a', 'l', 'I', 'p', 'D', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o',
+'n', 's', '\022', '\240', '\001', '\n', '\027', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 'c',
+'o', 'n', 'f', 'i', 'g', '\030', '\031', ' ', '\001', '(', '\013', '2', 'h', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n',
's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't',
'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H',
-'t', 't', 'p', 'F', 'i', 'l', 't', 'e', 'r', 'R', '\013', 'h', 't', 't', 'p', 'F', 'i', 'l', 't', 'e', 'r', 's', '\022', '@', '\n',
-'\016', 'a', 'd', 'd', '_', 'u', 's', 'e', 'r', '_', 'a', 'g', 'e', 'n', 't', '\030', '\006', ' ', '\001', '(', '\013', '2', '\032', '.', 'g',
-'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R',
-'\014', 'a', 'd', 'd', 'U', 's', 'e', 'r', 'A', 'g', 'e', 'n', 't', '\022', 't', '\n', '\007', 't', 'r', 'a', 'c', 'i', 'n', 'g', '\030',
-'\007', ' ', '\001', '(', '\013', '2', 'Z', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.',
-'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n',
-'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n',
-'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'T', 'r', 'a', 'c', 'i', 'n', 'g', 'R', '\007', 't',
-'r', 'a', 'c', 'i', 'n', 'g', '\022', 's', '\n', '\034', 'c', 'o', 'm', 'm', 'o', 'n', '_', 'h', 't', 't', 'p', '_', 'p', 'r', 'o',
-'t', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '#', ' ', '\001', '(', '\013', '2', ')', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'P', 'r', 'o',
-'t', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'B', '\007', '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\031', 'c', 'o',
-'m', 'm', 'o', 'n', 'H', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '^',
-'\n', '\025', 'h', 't', 't', 'p', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\010',
-' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.',
-'v', '3', '.', 'H', 't', 't', 'p', '1', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\023',
-'h', 't', 't', 'p', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'i', '\n', '\026', 'h', 't',
-'t', 'p', '2', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '\t', ' ', '\001', '(',
-'\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.',
-'H', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', 'B', '\007', '\212', '\223', '\267',
-'*', '\002', '\010', '\001', 'R', '\024', 'h', 't', 't', 'p', '2', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n',
-'s', '\022', '`', '\n', '\026', 'h', 't', 't', 'p', '3', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', '_', 'o', 'p', 't', 'i', 'o',
-'n', 's', '\030', ',', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c',
-'o', 'r', 'e', '.', 'v', '3', '.', 'H', 't', 't', 'p', '3', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o',
-'n', 's', 'R', '\024', 'h', 't', 't', 'p', '3', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022',
-',', '\n', '\013', 's', 'e', 'r', 'v', 'e', 'r', '_', 'n', 'a', 'm', 'e', '\030', '\n', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010',
-'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\n', 's', 'e', 'r', 'v', 'e', 'r', 'N', 'a', 'm', 'e', '\022', '\271', '\001', '\n', '\034',
-'s', 'e', 'r', 'v', 'e', 'r', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't',
-'i', 'o', 'n', '\030', '\"', ' ', '\001', '(', '\016', '2', 'm', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i',
-'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_',
-'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't',
-'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'S', 'e', 'r', 'v', 'e', 'r',
-'H', 'e', 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', 'B', '\010', '\372', 'B', '\005',
-'\202', '\001', '\002', '\020', '\001', 'R', '\032', 's', 'e', 'r', 'v', 'e', 'r', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f',
-'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\022', 'r', '\n', '\034', 's', 'c', 'h', 'e', 'm', 'e', '_', 'h', 'e', 'a', 'd', 'e', 'r',
-'_', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\030', '0', ' ', '\001', '(', '\013', '2', '0', '.', 'e',
-'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'S', 'c', 'h', 'e', 'm',
-'e', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', 'R', '\032', 's', 'c',
-'h', 'e', 'm', 'e', 'H', 'e', 'a', 'd', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\022',
-']', '\n', '\026', 'm', 'a', 'x', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_', 'k', 'b',
-'\030', '\035', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
-'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\n', '\372', 'B', '\007', '*', '\005', '\030', '\200', '@', ' ', '\000', 'R', '\023',
-'m', 'a', 'x', 'R', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'K', 'b', '\022', 'R', '\n', '\023', 's', 't',
-'r', 'e', 'a', 'm', '_', 'i', 'd', 'l', 'e', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\030', ' ', '\001', '(', '\013', '2', '\031',
-'.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n',
-'B', '\007', '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\021', 's', 't', 'r', 'e', 'a', 'm', 'I', 'd', 'l', 'e', 'T', 'i', 'm', 'e',
-'o', 'u', 't', '\022', 'K', '\n', '\017', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\034', ' ',
-'\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r',
-'a', 't', 'i', 'o', 'n', 'B', '\007', '\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\016', 'r', 'e', 'q', 'u', 'e', 's', 't', 'T', 'i',
-'m', 'e', 'o', 'u', 't', '\022', 'b', '\n', '\027', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e', 'a', 'd', 'e', 'r', 's', '_',
-'t', 'i', 'm', 'e', 'o', 'u', 't', '\030', ')', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
-'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\017', '\372', 'B', '\005', '\252', '\001', '\002', '2', '\000',
-'\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\025', 'r', 'e', 'q', 'u', 'e', 's', 't', 'H', 'e', 'a', 'd', 'e', 'r', 's', 'T', 'i',
-'m', 'e', 'o', 'u', 't', '\022', '>', '\n', '\r', 'd', 'r', 'a', 'i', 'n', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\014', ' ',
-'\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r',
-'a', 't', 'i', 'o', 'n', 'R', '\014', 'd', 'r', 'a', 'i', 'n', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'M', '\n', '\025', 'd', 'e',
-'l', 'a', 'y', 'e', 'd', '_', 'c', 'l', 'o', 's', 'e', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\032', ' ', '\001', '(', '\013',
-'2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i',
-'o', 'n', 'R', '\023', 'd', 'e', 'l', 'a', 'y', 'e', 'd', 'C', 'l', 'o', 's', 'e', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', 'C',
-'\n', '\n', 'a', 'c', 'c', 'e', 's', 's', '_', 'l', 'o', 'g', '\030', '\r', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v', 'o',
-'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'a', 'c', 'c', 'e', 's', 's', 'l', 'o', 'g', '.', 'v', '3', '.', 'A', 'c', 'c',
-'e', 's', 's', 'L', 'o', 'g', 'R', '\t', 'a', 'c', 'c', 'e', 's', 's', 'L', 'o', 'g', '\022', 'Q', '\n', '\022', 'u', 's', 'e', '_',
-'r', 'e', 'm', 'o', 't', 'e', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '\030', '\016', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o',
-'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'B', '\007',
-'\212', '\223', '\267', '*', '\002', '\010', '\001', 'R', '\020', 'u', 's', 'e', 'R', 'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's',
-'\022', '/', '\n', '\024', 'x', 'f', 'f', '_', 'n', 'u', 'm', '_', 't', 'r', 'u', 's', 't', 'e', 'd', '_', 'h', 'o', 'p', 's', '\030',
-'\023', ' ', '\001', '(', '\r', 'R', '\021', 'x', 'f', 'f', 'N', 'u', 'm', 'T', 'r', 'u', 's', 't', 'e', 'd', 'H', 'o', 'p', 's', '\022',
-'s', '\n', ' ', 'o', 'r', 'i', 'g', 'i', 'n', 'a', 'l', '_', 'i', 'p', '_', 'd', 'e', 't', 'e', 'c', 't', 'i', 'o', 'n', '_',
-'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '\030', '.', ' ', '\003', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.',
-'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n',
-'s', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\035', 'o', 'r', 'i', 'g', 'i', 'n', 'a', 'l', 'I', 'p', 'D', 'e', 't',
-'e', 'c', 't', 'i', 'o', 'n', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '\022', '\240', '\001', '\n', '\027', 'i', 'n', 't', 'e',
-'r', 'n', 'a', 'l', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\031', ' ', '\001', '(', '\013',
-'2', 'h', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e',
+'t', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'I', 'n', 't', 'e',
+'r', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\025', 'i', 'n', 't', 'e', 'r', 'n',
+'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '&', '\n', '\017', 's', 'k', 'i', 'p', '_', 'x',
+'f', 'f', '_', 'a', 'p', 'p', 'e', 'n', 'd', '\030', '\025', ' ', '\001', '(', '\010', 'R', '\r', 's', 'k', 'i', 'p', 'X', 'f', 'f', 'A',
+'p', 'p', 'e', 'n', 'd', '\022', '\035', '\n', '\003', 'v', 'i', 'a', '\030', '\026', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006',
+'\300', '\001', '\002', '\310', '\001', '\000', 'R', '\003', 'v', 'i', 'a', '\022', 'J', '\n', '\023', 'g', 'e', 'n', 'e', 'r', 'a', 't', 'e', '_', 'r',
+'e', 'q', 'u', 'e', 's', 't', '_', 'i', 'd', '\030', '\017', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.',
+'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\021', 'g', 'e', 'n', 'e', 'r',
+'a', 't', 'e', 'R', 'e', 'q', 'u', 'e', 's', 't', 'I', 'd', '\022', '?', '\n', '\034', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e', '_',
+'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'i', 'd', '\030', ' ', ' ', '\001', '(', '\010',
+'R', '\031', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e', 'E', 'x', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'q', 'u', 'e', 's', 't',
+'I', 'd', '\022', 'G', '\n', '!', 'a', 'l', 'w', 'a', 'y', 's', '_', 's', 'e', 't', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_',
+'i', 'd', '_', 'i', 'n', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '\030', '%', ' ', '\001', '(', '\010', 'R', '\034', 'a', 'l', 'w',
+'a', 'y', 's', 'S', 'e', 't', 'R', 'e', 'q', 'u', 'e', 's', 't', 'I', 'd', 'I', 'n', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e',
+'\022', '\264', '\001', '\n', '\033', 'f', 'o', 'r', 'w', 'a', 'r', 'd', '_', 'c', 'l', 'i', 'e', 'n', 't', '_', 'c', 'e', 'r', 't', '_',
+'d', 'e', 't', 'a', 'i', 'l', 's', '\030', '\020', ' ', '\001', '(', '\016', '2', 'k', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't',
+'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h',
+'t', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3',
+'.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'F', 'o',
+'r', 'w', 'a', 'r', 'd', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', 'l', 's', 'B', '\010', '\372',
+'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\030', 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r',
+'t', 'D', 'e', 't', 'a', 'i', 'l', 's', '\022', '\264', '\001', '\n', '\037', 's', 'e', 't', '_', 'c', 'u', 'r', 'r', 'e', 'n', 't', '_',
+'c', 'l', 'i', 'e', 'n', 't', '_', 'c', 'e', 'r', 't', '_', 'd', 'e', 't', 'a', 'i', 'l', 's', '\030', '\021', ' ', '\001', '(', '\013',
+'2', 'n', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e',
'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o',
'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i',
-'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's',
-'C', 'o', 'n', 'f', 'i', 'g', 'R', '\025', 'i', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 'C', 'o',
-'n', 'f', 'i', 'g', '\022', '&', '\n', '\017', 's', 'k', 'i', 'p', '_', 'x', 'f', 'f', '_', 'a', 'p', 'p', 'e', 'n', 'd', '\030', '\025',
-' ', '\001', '(', '\010', 'R', '\r', 's', 'k', 'i', 'p', 'X', 'f', 'f', 'A', 'p', 'p', 'e', 'n', 'd', '\022', '\035', '\n', '\003', 'v', 'i',
-'a', '\030', '\026', ' ', '\001', '(', '\t', 'B', '\013', '\372', 'B', '\010', 'r', '\006', '\300', '\001', '\002', '\310', '\001', '\000', 'R', '\003', 'v', 'i', 'a',
-'\022', 'J', '\n', '\023', 'g', 'e', 'n', 'e', 'r', 'a', 't', 'e', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'i', 'd', '\030', '\017',
+'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'S', 'e', 't', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'C', 'l', 'i', 'e', 'n',
+'t', 'C', 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', 'l', 's', 'R', '\033', 's', 'e', 't', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'C',
+'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', 'l', 's', '\022', ',', '\n', '\022', 'p', 'r', 'o', 'x', 'y',
+'_', '1', '0', '0', '_', 'c', 'o', 'n', 't', 'i', 'n', 'u', 'e', '\030', '\022', ' ', '\001', '(', '\010', 'R', '\020', 'p', 'r', 'o', 'x',
+'y', '1', '0', '0', 'C', 'o', 'n', 't', 'i', 'n', 'u', 'e', '\022', 'e', '\n', '1', 'r', 'e', 'p', 'r', 'e', 's', 'e', 'n', 't',
+'_', 'i', 'p', 'v', '4', '_', 'r', 'e', 'm', 'o', 't', 'e', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 'a', 's', '_', 'i',
+'p', 'v', '4', '_', 'm', 'a', 'p', 'p', 'e', 'd', '_', 'i', 'p', 'v', '6', '\030', '\024', ' ', '\001', '(', '\010', 'R', '*', 'r', 'e',
+'p', 'r', 'e', 's', 'e', 'n', 't', 'I', 'p', 'v', '4', 'R', 'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', 'A',
+'s', 'I', 'p', 'v', '4', 'M', 'a', 'p', 'p', 'e', 'd', 'I', 'p', 'v', '6', '\022', '\211', '\001', '\n', '\017', 'u', 'p', 'g', 'r', 'a',
+'d', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\027', ' ', '\003', '(', '\013', '2', '`', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r',
+'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r',
+'.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r',
+'.', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\016', 'u', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o',
+'n', 'f', 'i', 'g', 's', '\022', 'A', '\n', '\016', 'n', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'e', '_', 'p', 'a', 't', 'h', '\030', '\036',
' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o',
-'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\021', 'g', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'R', 'e', 'q', 'u', 'e', 's', 't', 'I',
-'d', '\022', '?', '\n', '\034', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e', '_', 'e', 'x', 't', 'e', 'r', 'n', 'a', 'l', '_', 'r', 'e',
-'q', 'u', 'e', 's', 't', '_', 'i', 'd', '\030', ' ', ' ', '\001', '(', '\010', 'R', '\031', 'p', 'r', 'e', 's', 'e', 'r', 'v', 'e', 'E',
-'x', 't', 'e', 'r', 'n', 'a', 'l', 'R', 'e', 'q', 'u', 'e', 's', 't', 'I', 'd', '\022', 'G', '\n', '!', 'a', 'l', 'w', 'a', 'y',
-'s', '_', 's', 'e', 't', '_', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'i', 'd', '_', 'i', 'n', '_', 'r', 'e', 's', 'p', 'o',
-'n', 's', 'e', '\030', '%', ' ', '\001', '(', '\010', 'R', '\034', 'a', 'l', 'w', 'a', 'y', 's', 'S', 'e', 't', 'R', 'e', 'q', 'u', 'e',
-'s', 't', 'I', 'd', 'I', 'n', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', '\022', '\264', '\001', '\n', '\033', 'f', 'o', 'r', 'w', 'a', 'r',
-'d', '_', 'c', 'l', 'i', 'e', 'n', 't', '_', 'c', 'e', 'r', 't', '_', 'd', 'e', 't', 'a', 'i', 'l', 's', '\030', '\020', ' ', '\001',
-'(', '\016', '2', 'k', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l',
+'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\r', 'n', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'e', 'P', 'a', 't', 'h', '\022', '#', '\n',
+'\r', 'm', 'e', 'r', 'g', 'e', '_', 's', 'l', 'a', 's', 'h', 'e', 's', '\030', '!', ' ', '\001', '(', '\010', 'R', '\014', 'm', 'e', 'r',
+'g', 'e', 'S', 'l', 'a', 's', 'h', 'e', 's', '\022', '\267', '\001', '\n', ' ', 'p', 'a', 't', 'h', '_', 'w', 'i', 't', 'h', '_', 'e',
+'s', 'c', 'a', 'p', 'e', 'd', '_', 's', 'l', 'a', 's', 'h', 'e', 's', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '-', ' ', '\001',
+'(', '\016', '2', 'o', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l',
't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't',
'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c',
-'t', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'F', 'o', 'r', 'w', 'a', 'r', 'd', 'C', 'l', 'i', 'e', 'n', 't',
-'C', 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', 'l', 's', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\030', 'f', 'o',
-'r', 'w', 'a', 'r', 'd', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', 'l', 's', '\022', '\264', '\001',
-'\n', '\037', 's', 'e', 't', '_', 'c', 'u', 'r', 'r', 'e', 'n', 't', '_', 'c', 'l', 'i', 'e', 'n', 't', '_', 'c', 'e', 'r', 't',
-'_', 'd', 'e', 't', 'a', 'i', 'l', 's', '\030', '\021', ' ', '\001', '(', '\013', '2', 'n', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x',
-'t', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.',
-'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v',
-'3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'S',
-'e', 't', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', 'l',
-'s', 'R', '\033', 's', 'e', 't', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', 'e',
-'t', 'a', 'i', 'l', 's', '\022', ',', '\n', '\022', 'p', 'r', 'o', 'x', 'y', '_', '1', '0', '0', '_', 'c', 'o', 'n', 't', 'i', 'n',
-'u', 'e', '\030', '\022', ' ', '\001', '(', '\010', 'R', '\020', 'p', 'r', 'o', 'x', 'y', '1', '0', '0', 'C', 'o', 'n', 't', 'i', 'n', 'u',
-'e', '\022', 'e', '\n', '1', 'r', 'e', 'p', 'r', 'e', 's', 'e', 'n', 't', '_', 'i', 'p', 'v', '4', '_', 'r', 'e', 'm', 'o', 't',
-'e', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 'a', 's', '_', 'i', 'p', 'v', '4', '_', 'm', 'a', 'p', 'p', 'e', 'd', '_',
-'i', 'p', 'v', '6', '\030', '\024', ' ', '\001', '(', '\010', 'R', '*', 'r', 'e', 'p', 'r', 'e', 's', 'e', 'n', 't', 'I', 'p', 'v', '4',
-'R', 'e', 'm', 'o', 't', 'e', 'A', 'd', 'd', 'r', 'e', 's', 's', 'A', 's', 'I', 'p', 'v', '4', 'M', 'a', 'p', 'p', 'e', 'd',
-'I', 'p', 'v', '6', '\022', '\211', '\001', '\n', '\017', 'u', 'p', 'g', 'r', 'a', 'd', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030',
-'\027', ' ', '\003', '(', '\013', '2', '`', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.',
+'t', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'P', 'a', 't', 'h', 'W', 'i', 't', 'h', 'E', 's', 'c', 'a', 'p',
+'e', 'd', 'S', 'l', 'a', 's', 'h', 'e', 's', 'A', 'c', 't', 'i', 'o', 'n', 'R', '\034', 'p', 'a', 't', 'h', 'W', 'i', 't', 'h',
+'E', 's', 'c', 'a', 'p', 'e', 'd', 'S', 'l', 'a', 's', 'h', 'e', 's', 'A', 'c', 't', 'i', 'o', 'n', '\022', '\201', '\001', '\n', '\024',
+'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'i', 'd', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\030', '$', ' ', '\001', '(',
+'\013', '2', 'O', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't',
+'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i',
+'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'q', 'u', 'e', 's', 't', 'I', 'D', 'E', 'x',
+'t', 'e', 'n', 's', 'i', 'o', 'n', 'R', '\022', 'r', 'e', 'q', 'u', 'e', 's', 't', 'I', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i',
+'o', 'n', '\022', '{', '\n', '\022', 'l', 'o', 'c', 'a', 'l', '_', 'r', 'e', 'p', 'l', 'y', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030',
+'&', ' ', '\001', '(', '\013', '2', 'M', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.',
'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n',
-'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n',
-'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n',
-'f', 'i', 'g', 'R', '\016', 'u', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022', 'A', '\n', '\016', 'n', 'o',
-'r', 'm', 'a', 'l', 'i', 'z', 'e', '_', 'p', 'a', 't', 'h', '\030', '\036', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\r', 'n', 'o',
-'r', 'm', 'a', 'l', 'i', 'z', 'e', 'P', 'a', 't', 'h', '\022', '#', '\n', '\r', 'm', 'e', 'r', 'g', 'e', '_', 's', 'l', 'a', 's',
-'h', 'e', 's', '\030', '!', ' ', '\001', '(', '\010', 'R', '\014', 'm', 'e', 'r', 'g', 'e', 'S', 'l', 'a', 's', 'h', 'e', 's', '\022', '\267',
-'\001', '\n', ' ', 'p', 'a', 't', 'h', '_', 'w', 'i', 't', 'h', '_', 'e', 's', 'c', 'a', 'p', 'e', 'd', '_', 's', 'l', 'a', 's',
-'h', 'e', 's', '_', 'a', 'c', 't', 'i', 'o', 'n', '\030', '-', ' ', '\001', '(', '\016', '2', 'o', '.', 'e', 'n', 'v', 'o', 'y', '.',
-'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r',
-'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r',
-'.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r',
-'.', 'P', 'a', 't', 'h', 'W', 'i', 't', 'h', 'E', 's', 'c', 'a', 'p', 'e', 'd', 'S', 'l', 'a', 's', 'h', 'e', 's', 'A', 'c',
-'t', 'i', 'o', 'n', 'R', '\034', 'p', 'a', 't', 'h', 'W', 'i', 't', 'h', 'E', 's', 'c', 'a', 'p', 'e', 'd', 'S', 'l', 'a', 's',
-'h', 'e', 's', 'A', 'c', 't', 'i', 'o', 'n', '\022', '\201', '\001', '\n', '\024', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'i', 'd', '_',
-'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\030', '$', ' ', '\001', '(', '\013', '2', 'O', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e',
-'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k',
-'.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.',
-'v', '3', '.', 'R', 'e', 'q', 'u', 'e', 's', 't', 'I', 'D', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'R', '\022', 'r', 'e',
-'q', 'u', 'e', 's', 't', 'I', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\022', '{', '\n', '\022', 'l', 'o', 'c', 'a', 'l',
-'_', 'r', 'e', 'p', 'l', 'y', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '&', ' ', '\001', '(', '\013', '2', 'M', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't',
-'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a',
-'g', 'e', 'r', '.', 'v', '3', '.', 'L', 'o', 'c', 'a', 'l', 'R', 'e', 'p', 'l', 'y', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\020',
-'l', 'o', 'c', 'a', 'l', 'R', 'e', 'p', 'l', 'y', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'P', '\n', '\030', 's', 't', 'r', 'i', 'p',
-'_', 'm', 'a', 't', 'c', 'h', 'i', 'n', 'g', '_', 'h', 'o', 's', 't', '_', 'p', 'o', 'r', 't', '\030', '\'', ' ', '\001', '(', '\010',
-'B', '\027', '\362', '\230', '\376', '\217', '\005', '\021', '\022', '\017', 's', 't', 'r', 'i', 'p', '_', 'p', 'o', 'r', 't', '_', 'm', 'o', 'd', 'e',
-'R', '\025', 's', 't', 'r', 'i', 'p', 'M', 'a', 't', 'c', 'h', 'i', 'n', 'g', 'H', 'o', 's', 't', 'P', 'o', 'r', 't', '\022', '/',
-'\n', '\023', 's', 't', 'r', 'i', 'p', '_', 'a', 'n', 'y', '_', 'h', 'o', 's', 't', '_', 'p', 'o', 'r', 't', '\030', '*', ' ', '\001',
-'(', '\010', 'H', '\001', 'R', '\020', 's', 't', 'r', 'i', 'p', 'A', 'n', 'y', 'H', 'o', 's', 't', 'P', 'o', 'r', 't', '\022', 'i', '\n',
-'$', 's', 't', 'r', 'e', 'a', 'm', '_', 'e', 'r', 'r', 'o', 'r', '_', 'o', 'n', '_', 'i', 'n', 'v', 'a', 'l', 'i', 'd', '_',
-'h', 't', 't', 'p', '_', 'm', 'e', 's', 's', 'a', 'g', 'e', '\030', '(', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\037', 's', 't',
-'r', 'e', 'a', 'm', 'E', 'r', 'r', 'o', 'r', 'O', 'n', 'I', 'n', 'v', 'a', 'l', 'i', 'd', 'H', 't', 't', 'p', 'M', 'e', 's',
-'s', 'a', 'g', 'e', '\022', '\251', '\001', '\n', '\032', 'p', 'a', 't', 'h', '_', 'n', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'a', 't', 'i',
-'o', 'n', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '+', ' ', '\001', '(', '\013', '2', 'k', '.', 'e', 'n', 'v', 'o', 'y', '.',
-'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r',
-'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r',
-'.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r',
-'.', 'P', 'a', 't', 'h', 'N', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'a', 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', 'n', 's',
-'R', '\030', 'p', 'a', 't', 'h', 'N', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'a', 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', 'n',
-'s', '\022', '5', '\n', '\027', 's', 't', 'r', 'i', 'p', '_', 't', 'r', 'a', 'i', 'l', 'i', 'n', 'g', '_', 'h', 'o', 's', 't', '_',
-'d', 'o', 't', '\030', '/', ' ', '\001', '(', '\010', 'R', '\024', 's', 't', 'r', 'i', 'p', 'T', 'r', 'a', 'i', 'l', 'i', 'n', 'g', 'H',
-'o', 's', 't', 'D', 'o', 't', '\032', '\366', '\004', '\n', '\007', 'T', 'r', 'a', 'c', 'i', 'n', 'g', '\022', '?', '\n', '\017', 'c', 'l', 'i',
+'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'L', 'o', 'c', 'a', 'l', 'R', 'e',
+'p', 'l', 'y', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\020', 'l', 'o', 'c', 'a', 'l', 'R', 'e', 'p', 'l', 'y', 'C', 'o', 'n', 'f',
+'i', 'g', '\022', 'P', '\n', '\030', 's', 't', 'r', 'i', 'p', '_', 'm', 'a', 't', 'c', 'h', 'i', 'n', 'g', '_', 'h', 'o', 's', 't',
+'_', 'p', 'o', 'r', 't', '\030', '\'', ' ', '\001', '(', '\010', 'B', '\027', '\362', '\230', '\376', '\217', '\005', '\021', '\022', '\017', 's', 't', 'r', 'i',
+'p', '_', 'p', 'o', 'r', 't', '_', 'm', 'o', 'd', 'e', 'R', '\025', 's', 't', 'r', 'i', 'p', 'M', 'a', 't', 'c', 'h', 'i', 'n',
+'g', 'H', 'o', 's', 't', 'P', 'o', 'r', 't', '\022', '/', '\n', '\023', 's', 't', 'r', 'i', 'p', '_', 'a', 'n', 'y', '_', 'h', 'o',
+'s', 't', '_', 'p', 'o', 'r', 't', '\030', '*', ' ', '\001', '(', '\010', 'H', '\001', 'R', '\020', 's', 't', 'r', 'i', 'p', 'A', 'n', 'y',
+'H', 'o', 's', 't', 'P', 'o', 'r', 't', '\022', 'i', '\n', '$', 's', 't', 'r', 'e', 'a', 'm', '_', 'e', 'r', 'r', 'o', 'r', '_',
+'o', 'n', '_', 'i', 'n', 'v', 'a', 'l', 'i', 'd', '_', 'h', 't', 't', 'p', '_', 'm', 'e', 's', 's', 'a', 'g', 'e', '\030', '(',
+' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o',
+'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\037', 's', 't', 'r', 'e', 'a', 'm', 'E', 'r', 'r', 'o', 'r', 'O', 'n', 'I', 'n', 'v',
+'a', 'l', 'i', 'd', 'H', 't', 't', 'p', 'M', 'e', 's', 's', 'a', 'g', 'e', '\022', '\251', '\001', '\n', '\032', 'p', 'a', 't', 'h', '_',
+'n', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'a', 't', 'i', 'o', 'n', '_', 'o', 'p', 't', 'i', 'o', 'n', 's', '\030', '+', ' ', '\001',
+'(', '\013', '2', 'k', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l',
+'t', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't',
+'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c',
+'t', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'P', 'a', 't', 'h', 'N', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'a',
+'t', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', 'n', 's', 'R', '\030', 'p', 'a', 't', 'h', 'N', 'o', 'r', 'm', 'a', 'l', 'i', 'z',
+'a', 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '5', '\n', '\027', 's', 't', 'r', 'i', 'p', '_', 't', 'r', 'a',
+'i', 'l', 'i', 'n', 'g', '_', 'h', 'o', 's', 't', '_', 'd', 'o', 't', '\030', '/', ' ', '\001', '(', '\010', 'R', '\024', 's', 't', 'r',
+'i', 'p', 'T', 'r', 'a', 'i', 'l', 'i', 'n', 'g', 'H', 'o', 's', 't', 'D', 'o', 't', '\022', '\224', '\001', '\n', '\023', 'p', 'r', 'o',
+'x', 'y', '_', 's', 't', 'a', 't', 'u', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '1', ' ', '\001', '(', '\013', '2', 'd', '.',
+'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.',
+'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm',
+'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M',
+'a', 'n', 'a', 'g', 'e', 'r', '.', 'P', 'r', 'o', 'x', 'y', 'S', 't', 'a', 't', 'u', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'R',
+'\021', 'p', 'r', 'o', 'x', 'y', 'S', 't', 'a', 't', 'u', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'o', '\n', '\036', 't', 'y', 'p',
+'e', 'd', '_', 'h', 'e', 'a', 'd', 'e', 'r', '_', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 'f',
+'i', 'g', '\030', '2', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c',
+'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f',
+'i', 'g', 'R', '\033', 't', 'y', 'p', 'e', 'd', 'H', 'e', 'a', 'd', 'e', 'r', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n',
+'C', 'o', 'n', 'f', 'i', 'g', '\032', '\366', '\004', '\n', '\007', 'T', 'r', 'a', 'c', 'i', 'n', 'g', '\022', '?', '\n', '\017', 'c', 'l', 'i',
'e', 'n', 't', '_', 's', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\026', '.', 'e', 'n', 'v', 'o',
'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'P', 'e', 'r', 'c', 'e', 'n', 't', 'R', '\016', 'c', 'l', 'i', 'e', 'n', 't',
'S', 'a', 'm', 'p', 'l', 'i', 'n', 'g', '\022', '?', '\n', '\017', 'r', 'a', 'n', 'd', 'o', 'm', '_', 's', 'a', 'm', 'p', 'l', 'i',
@@ -269,47 +282,64 @@ static const char descriptor[11656] = {'\n', 'Y', 'e', 'n', 'v', 'o', 'y', '/',
'e', 'r', '.', 'v', '2', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g',
'e', 'r', '.', 'T', 'r', 'a', 'c', 'i', 'n', 'g', 'J', '\004', '\010', '\001', '\020', '\002', 'J', '\004', '\010', '\002', '\020', '\003', 'R', '\016', 'o',
'p', 'e', 'r', 'a', 't', 'i', 'o', 'n', '_', 'n', 'a', 'm', 'e', 'R', '\030', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'h', 'e',
-'a', 'd', 'e', 'r', 's', '_', 'f', 'o', 'r', '_', 't', 'a', 'g', 's', '\032', '\245', '\001', '\n', '\025', 'I', 'n', 't', 'e', 'r', 'n',
+'a', 'd', 'e', 'r', 's', '_', 'f', 'o', 'r', '_', 't', 'a', 'g', 's', '\032', '\347', '\001', '\n', '\025', 'I', 'n', 't', 'e', 'r', 'n',
'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '!', '\n', '\014', 'u', 'n', 'i', 'x', '_', 's',
'o', 'c', 'k', 'e', 't', 's', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\013', 'u', 'n', 'i', 'x', 'S', 'o', 'c', 'k', 'e', 't', 's',
-':', 'i', '\232', '\305', '\210', '\036', 'd', '\n', 'b', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l',
-'t', 'e', 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i',
-'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't',
-'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's',
-'s', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\230', '\002', '\n', '\033', 'S', 'e', 't', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'C', 'l', 'i',
-'e', 'n', 't', 'C', 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', 'l', 's', '\022', '4', '\n', '\007', 's', 'u', 'b', 'j', 'e', 'c', 't',
-'\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
-'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\007', 's', 'u', 'b', 'j', 'e', 'c', 't', '\022', '\022', '\n', '\004', 'c', 'e', 'r',
-'t', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\004', 'c', 'e', 'r', 't', '\022', '\024', '\n', '\005', 'c', 'h', 'a', 'i', 'n', '\030', '\006', ' ',
-'\001', '(', '\010', 'R', '\005', 'c', 'h', 'a', 'i', 'n', '\022', '\020', '\n', '\003', 'd', 'n', 's', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\003',
-'d', 'n', 's', '\022', '\020', '\n', '\003', 'u', 'r', 'i', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\003', 'u', 'r', 'i', ':', 'o', '\232', '\305',
-'\210', '\036', 'j', '\n', 'h', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.',
-'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm',
-'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M',
-'a', 'n', 'a', 'g', 'e', 'r', '.', 'S', 'e', 't', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e',
-'r', 't', 'D', 'e', 't', 'a', 'i', 'l', 's', 'J', '\004', '\010', '\002', '\020', '\003', '\032', '\256', '\002', '\n', '\r', 'U', 'p', 'g', 'r', 'a',
-'d', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '!', '\n', '\014', 'u', 'p', 'g', 'r', 'a', 'd', 'e', '_', 't', 'y', 'p', 'e', '\030',
-'\001', ' ', '\001', '(', '\t', 'R', '\013', 'u', 'p', 'g', 'r', 'a', 'd', 'e', 'T', 'y', 'p', 'e', '\022', 'a', '\n', '\007', 'f', 'i', 'l',
-'t', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', 'G', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's',
-'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p',
-'_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't',
-'t', 'p', 'F', 'i', 'l', 't', 'e', 'r', 'R', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', '\022', '4', '\n', '\007', 'e', 'n', 'a', 'b',
-'l', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b',
-'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\007', 'e', 'n', 'a', 'b', 'l', 'e', 'd', ':', 'a', '\232', '\305',
-'\210', '\036', '\\', '\n', 'Z', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.',
-'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm',
-'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M',
-'a', 'n', 'a', 'g', 'e', 'r', '.', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\345', '\001', '\n', '\030',
-'P', 'a', 't', 'h', 'N', 'o', 'r', 'm', 'a', 'l', 'i', 'z', 'a', 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022',
-'c', '\n', '\031', 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'i', 'n', 'g', '_', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't',
-'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'h', 't',
-'t', 'p', '.', 'v', '3', '.', 'P', 'a', 't', 'h', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', 'R',
-'\030', 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'i', 'n', 'g', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n',
-'\022', 'd', '\n', '\032', 'h', 't', 't', 'p', '_', 'f', 'i', 'l', 't', 'e', 'r', '_', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm',
-'a', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.',
-'h', 't', 't', 'p', '.', 'v', '3', '.', 'P', 'a', 't', 'h', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o',
-'n', 'R', '\030', 'h', 't', 't', 'p', 'F', 'i', 'l', 't', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i',
-'o', 'n', '\"', '6', '\n', '\t', 'C', 'o', 'd', 'e', 'c', 'T', 'y', 'p', 'e', '\022', '\010', '\n', '\004', 'A', 'U', 'T', 'O', '\020', '\000',
+'\022', '@', '\n', '\013', 'c', 'i', 'd', 'r', '_', 'r', 'a', 'n', 'g', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\037', '.', 'e',
+'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'i', 'd', 'r', 'R',
+'a', 'n', 'g', 'e', 'R', '\n', 'c', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', 's', ':', 'i', '\232', '\305', '\210', '\036', 'd', '\n', 'b',
+'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', 't', 'w', 'o',
+'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e',
+'r', '.', 'v', '2', '.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e',
+'r', '.', 'I', 'n', 't', 'e', 'r', 'n', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\230',
+'\002', '\n', '\033', 'S', 'e', 't', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', 'e',
+'t', 'a', 'i', 'l', 's', '\022', '4', '\n', '\007', 's', 'u', 'b', 'j', 'e', 'c', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.',
+'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e',
+'R', '\007', 's', 'u', 'b', 'j', 'e', 'c', 't', '\022', '\022', '\n', '\004', 'c', 'e', 'r', 't', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\004',
+'c', 'e', 'r', 't', '\022', '\024', '\n', '\005', 'c', 'h', 'a', 'i', 'n', '\030', '\006', ' ', '\001', '(', '\010', 'R', '\005', 'c', 'h', 'a', 'i',
+'n', '\022', '\020', '\n', '\003', 'd', 'n', 's', '\030', '\004', ' ', '\001', '(', '\010', 'R', '\003', 'd', 'n', 's', '\022', '\020', '\n', '\003', 'u', 'r',
+'i', '\030', '\005', ' ', '\001', '(', '\010', 'R', '\003', 'u', 'r', 'i', ':', 'o', '\232', '\305', '\210', '\036', 'j', '\n', 'h', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h',
+'t', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2',
+'.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'S', 'e',
+'t', 'C', 'u', 'r', 'r', 'e', 'n', 't', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', 'D', 'e', 't', 'a', 'i', 'l', 's',
+'J', '\004', '\010', '\002', '\020', '\003', '\032', '\256', '\002', '\n', '\r', 'U', 'p', 'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022',
+'!', '\n', '\014', 'u', 'p', 'g', 'r', 'a', 'd', 'e', '_', 't', 'y', 'p', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 'u', 'p',
+'g', 'r', 'a', 'd', 'e', 'T', 'y', 'p', 'e', '\022', 'a', '\n', '\007', 'f', 'i', 'l', 't', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(',
+'\013', '2', 'G', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 'f', 'i', 'l', 't',
+'e', 'r', 's', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h', 't', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i',
+'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '3', '.', 'H', 't', 't', 'p', 'F', 'i', 'l', 't', 'e', 'r', 'R',
+'\007', 'f', 'i', 'l', 't', 'e', 'r', 's', '\022', '4', '\n', '\007', 'e', 'n', 'a', 'b', 'l', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\013',
+'2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a',
+'l', 'u', 'e', 'R', '\007', 'e', 'n', 'a', 'b', 'l', 'e', 'd', ':', 'a', '\232', '\305', '\210', '\036', '\\', '\n', 'Z', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'f', 'i', 'l', 't', 'e', 'r', '.', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'h',
+'t', 't', 'p', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', '_', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'v', '2',
+'.', 'H', 't', 't', 'p', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'M', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'U', 'p',
+'g', 'r', 'a', 'd', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\032', '\345', '\001', '\n', '\030', 'P', 'a', 't', 'h', 'N', 'o', 'r', 'm', 'a',
+'l', 'i', 'z', 'a', 't', 'i', 'o', 'n', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'c', '\n', '\031', 'f', 'o', 'r', 'w', 'a', 'r',
+'d', 'i', 'n', 'g', '_', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\013',
+'2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'h', 't', 't', 'p', '.', 'v', '3', '.', 'P', 'a', 't',
+'h', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', 'R', '\030', 'f', 'o', 'r', 'w', 'a', 'r', 'd', 'i',
+'n', 'g', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\022', 'd', '\n', '\032', 'h', 't', 't', 'p', '_',
+'f', 'i', 'l', 't', 'e', 'r', '_', 't', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001',
+'(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'h', 't', 't', 'p', '.', 'v', '3', '.', 'P',
+'a', 't', 'h', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', 'R', '\030', 'h', 't', 't', 'p', 'F', 'i',
+'l', 't', 'e', 'r', 'T', 'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\032', '\344', '\002', '\n', '\021', 'P', 'r',
+'o', 'x', 'y', 'S', 't', 'a', 't', 'u', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '%', '\n', '\016', 'r', 'e', 'm', 'o', 'v', 'e',
+'_', 'd', 'e', 't', 'a', 'i', 'l', 's', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\r', 'r', 'e', 'm', 'o', 'v', 'e', 'D', 'e', 't',
+'a', 'i', 'l', 's', '\022', 'Q', '\n', '%', 'r', 'e', 'm', 'o', 'v', 'e', '_', 'c', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n',
+'_', 't', 'e', 'r', 'm', 'i', 'n', 'a', 't', 'i', 'o', 'n', '_', 'd', 'e', 't', 'a', 'i', 'l', 's', '\030', '\002', ' ', '\001', '(',
+'\010', 'R', '\"', 'r', 'e', 'm', 'o', 'v', 'e', 'C', 'o', 'n', 'n', 'e', 'c', 't', 'i', 'o', 'n', 'T', 'e', 'r', 'm', 'i', 'n',
+'a', 't', 'i', 'o', 'n', 'D', 'e', 't', 'a', 'i', 'l', 's', '\022', '2', '\n', '\025', 'r', 'e', 'm', 'o', 'v', 'e', '_', 'r', 'e',
+'s', 'p', 'o', 'n', 's', 'e', '_', 'f', 'l', 'a', 'g', 's', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\023', 'r', 'e', 'm', 'o', 'v',
+'e', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', 'F', 'l', 'a', 'g', 's', '\022', 'A', '\n', '\035', 's', 'e', 't', '_', 'r', 'e', 'c',
+'o', 'm', 'm', 'e', 'n', 'd', 'e', 'd', '_', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'c', 'o', 'd', 'e', '\030', '\004', ' ',
+'\001', '(', '\010', 'R', '\032', 's', 'e', 't', 'R', 'e', 'c', 'o', 'm', 'm', 'e', 'n', 'd', 'e', 'd', 'R', 'e', 's', 'p', 'o', 'n',
+'s', 'e', 'C', 'o', 'd', 'e', '\022', ' ', '\n', '\013', 'u', 's', 'e', '_', 'n', 'o', 'd', 'e', '_', 'i', 'd', '\030', '\005', ' ', '\001',
+'(', '\010', 'H', '\000', 'R', '\t', 'u', 's', 'e', 'N', 'o', 'd', 'e', 'I', 'd', '\022', '.', '\n', '\022', 'l', 'i', 't', 'e', 'r', 'a',
+'l', '_', 'p', 'r', 'o', 'x', 'y', '_', 'n', 'a', 'm', 'e', '\030', '\006', ' ', '\001', '(', '\t', 'H', '\000', 'R', '\020', 'l', 'i', 't',
+'e', 'r', 'a', 'l', 'P', 'r', 'o', 'x', 'y', 'N', 'a', 'm', 'e', 'B', '\014', '\n', '\n', 'p', 'r', 'o', 'x', 'y', '_', 'n', 'a',
+'m', 'e', '\"', '6', '\n', '\t', 'C', 'o', 'd', 'e', 'c', 'T', 'y', 'p', 'e', '\022', '\010', '\n', '\004', 'A', 'U', 'T', 'O', '\020', '\000',
'\022', '\t', '\n', '\005', 'H', 'T', 'T', 'P', '1', '\020', '\001', '\022', '\t', '\n', '\005', 'H', 'T', 'T', 'P', '2', '\020', '\002', '\022', '\t', '\n',
'\005', 'H', 'T', 'T', 'P', '3', '\020', '\003', '\"', 'S', '\n', '\032', 'S', 'e', 'r', 'v', 'e', 'r', 'H', 'e', 'a', 'd', 'e', 'r', 'T',
'r', 'a', 'n', 's', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'o', 'n', '\022', '\r', '\n', '\t', 'O', 'V', 'E', 'R', 'W', 'R', 'I', 'T',
@@ -499,8 +529,9 @@ static const char descriptor[11656] = {'\n', 'Y', 'e', 'n', 'v', 'o', 'y', '/',
'p', 'r', 'o', 't', 'o', '3',
};
-static _upb_DefPool_Init *deps[21] = {
+static _upb_DefPool_Init *deps[22] = {
&envoy_config_accesslog_v3_accesslog_proto_upbdefinit,
+ &envoy_config_core_v3_address_proto_upbdefinit,
&envoy_config_core_v3_base_proto_upbdefinit,
&envoy_config_core_v3_config_source_proto_upbdefinit,
&envoy_config_core_v3_extension_proto_upbdefinit,
@@ -527,5 +558,5 @@ _upb_DefPool_Init envoy_extensions_filters_network_http_connection_manager_v3_ht
deps,
&envoy_extensions_filters_network_http_connection_manager_v3_http_connection_manager_proto_upb_file_layout,
"envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto",
- UPB_STRINGVIEW_INIT(descriptor, 11656)
+ UPB_STRINGVIEW_INIT(descriptor, 12381)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h
index f1147ab3e8..1d34eb985c 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h
@@ -51,6 +51,11 @@ UPB_INLINE const upb_MessageDef *envoy_extensions_filters_network_http_connectio
return upb_DefPool_FindMessageByName(s, "envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.PathNormalizationOptions");
}
+UPB_INLINE const upb_MessageDef *envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_ProxyStatusConfig_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_extensions_filters_network_http_connection_manager_v3_http_connection_manager_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.ProxyStatusConfig");
+}
+
UPB_INLINE const upb_MessageDef *envoy_extensions_filters_network_http_connection_manager_v3_LocalReplyConfig_getmsgdef(upb_DefPool *s) {
_upb_DefPool_LoadDefInit(s, &envoy_extensions_filters_network_http_connection_manager_v3_http_connection_manager_proto_upbdefinit);
return upb_DefPool_FindMessageByName(s, "envoy.extensions.filters.network.http_connection_manager.v3.LocalReplyConfig");
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c
index 50f4e41bd3..a1da4acf2e 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c
@@ -21,7 +21,7 @@ extern _upb_DefPool_Init udpa_annotations_sensitive_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[4092] = {'\n', '6', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 't', 'r', 'a', 'n', 's', 'p',
+static const char descriptor[4173] = {'\n', '6', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 't', 'r', 'a', 'n', 's', 'p',
'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '/', 't', 'l', 's', '/', 'v', '3', '/', 'c', 'o', 'm', 'm', 'o', 'n',
'.', 'p', 'r', 'o', 't', 'o', '\022', ')', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.',
't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '\032',
@@ -118,7 +118,7 @@ static const char descriptor[4092] = {'\n', '6', 'e', 'n', 'v', 'o', 'y', '/', '
'm', 'a', 't', 'c', 'h', 'e', 'r', '\"', 'P', '\n', '\007', 'S', 'a', 'n', 'T', 'y', 'p', 'e', '\022', '\030', '\n', '\024', 'S', 'A', 'N',
'_', 'T', 'Y', 'P', 'E', '_', 'U', 'N', 'S', 'P', 'E', 'C', 'I', 'F', 'I', 'E', 'D', '\020', '\000', '\022', '\t', '\n', '\005', 'E', 'M',
'A', 'I', 'L', '\020', '\001', '\022', '\007', '\n', '\003', 'D', 'N', 'S', '\020', '\002', '\022', '\007', '\n', '\003', 'U', 'R', 'I', '\020', '\003', '\022', '\016',
-'\n', '\n', 'I', 'P', '_', 'A', 'D', 'D', 'R', 'E', 'S', 'S', '\020', '\004', '\"', '\277', '\013', '\n', '\034', 'C', 'e', 'r', 't', 'i', 'f',
+'\n', '\n', 'I', 'P', '_', 'A', 'D', 'D', 'R', 'E', 'S', 'S', '\020', '\004', '\"', '\220', '\014', '\n', '\034', 'C', 'e', 'r', 't', 'i', 'f',
'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', 'W', '\n',
'\n', 't', 'r', 'u', 's', 't', 'e', 'd', '_', 'c', 'a', '\030', '\001', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y',
'.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'D', 'a', 't', 'a', 'S', 'o', 'u', 'r', 'c',
@@ -170,21 +170,24 @@ static const char descriptor[4092] = {'\n', '6', 'e', 'n', 'v', 'o', 'y', '/', '
'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\025', 'c', 'u', 's', 't', 'o',
'm', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'o', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '8', '\n', '\031', 'o', 'n', 'l', 'y', '_',
'v', 'e', 'r', 'i', 'f', 'y', '_', 'l', 'e', 'a', 'f', '_', 'c', 'e', 'r', 't', '_', 'c', 'r', 'l', '\030', '\016', ' ', '\001', '(',
-'\010', 'R', '\025', 'o', 'n', 'l', 'y', 'V', 'e', 'r', 'i', 'f', 'y', 'L', 'e', 'a', 'f', 'C', 'e', 'r', 't', 'C', 'r', 'l', '\"',
-'F', '\n', '\026', 'T', 'r', 'u', 's', 't', 'C', 'h', 'a', 'i', 'n', 'V', 'e', 'r', 'i', 'f', 'i', 'c', 'a', 't', 'i', 'o', 'n',
-'\022', '\026', '\n', '\022', 'V', 'E', 'R', 'I', 'F', 'Y', '_', 'T', 'R', 'U', 'S', 'T', '_', 'C', 'H', 'A', 'I', 'N', '\020', '\000', '\022',
-'\024', '\n', '\020', 'A', 'C', 'C', 'E', 'P', 'T', '_', 'U', 'N', 'T', 'R', 'U', 'S', 'T', 'E', 'D', '\020', '\001', ':', '5', '\232', '\305',
-'\210', '\036', '0', '\n', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'a', 'u', 't', 'h', '.', 'C', 'e',
-'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x',
-'t', 'J', '\004', '\010', '\004', '\020', '\005', 'J', '\004', '\010', '\005', '\020', '\006', 'R', '\027', 'v', 'e', 'r', 'i', 'f', 'y', '_', 's', 'u', 'b',
-'j', 'e', 'c', 't', '_', 'a', 'l', 't', '_', 'n', 'a', 'm', 'e', 'B', '\250', '\001', '\n', '7', 'i', 'o', '.', 'e', 'n', 'v', 'o',
-'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't',
-'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', 'B', '\013',
-'C', 'o', 'm', 'm', 'o', 'n', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'V', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm',
-'/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l',
-'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 't', 'r', 'a', 'n',
-'s', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '/', 't', 'l', 's', '/', 'v', '3', ';', 't', 'l', 's', 'v',
-'3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'\010', 'R', '\025', 'o', 'n', 'l', 'y', 'V', 'e', 'r', 'i', 'f', 'y', 'L', 'e', 'a', 'f', 'C', 'e', 'r', 't', 'C', 'r', 'l', '\022',
+'O', '\n', '\020', 'm', 'a', 'x', '_', 'v', 'e', 'r', 'i', 'f', 'y', '_', 'd', 'e', 'p', 't', 'h', '\030', '\020', ' ', '\001', '(', '\013',
+'2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2',
+'V', 'a', 'l', 'u', 'e', 'B', '\007', '\372', 'B', '\004', '*', '\002', '\030', 'd', 'R', '\016', 'm', 'a', 'x', 'V', 'e', 'r', 'i', 'f', 'y',
+'D', 'e', 'p', 't', 'h', '\"', 'F', '\n', '\026', 'T', 'r', 'u', 's', 't', 'C', 'h', 'a', 'i', 'n', 'V', 'e', 'r', 'i', 'f', 'i',
+'c', 'a', 't', 'i', 'o', 'n', '\022', '\026', '\n', '\022', 'V', 'E', 'R', 'I', 'F', 'Y', '_', 'T', 'R', 'U', 'S', 'T', '_', 'C', 'H',
+'A', 'I', 'N', '\020', '\000', '\022', '\024', '\n', '\020', 'A', 'C', 'C', 'E', 'P', 'T', '_', 'U', 'N', 'T', 'R', 'U', 'S', 'T', 'E', 'D',
+'\020', '\001', ':', '5', '\232', '\305', '\210', '\036', '0', '\n', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'a',
+'u', 't', 'h', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n',
+'C', 'o', 'n', 't', 'e', 'x', 't', 'J', '\004', '\010', '\004', '\020', '\005', 'J', '\004', '\010', '\005', '\020', '\006', 'R', '\027', 'v', 'e', 'r', 'i',
+'f', 'y', '_', 's', 'u', 'b', 'j', 'e', 'c', 't', '_', 'a', 'l', 't', '_', 'n', 'a', 'm', 'e', 'B', '\250', '\001', '\n', '7', 'i',
+'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's',
+'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l',
+'s', '.', 'v', '3', 'B', '\013', 'C', 'o', 'm', 'm', 'o', 'n', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'V', 'g', 'i', 't', 'h',
+'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't',
+'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n',
+'s', '/', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '/', 't', 'l', 's', '/', 'v',
+'3', ';', 't', 'l', 's', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[12] = {
@@ -206,5 +209,5 @@ _upb_DefPool_Init envoy_extensions_transport_sockets_tls_v3_common_proto_upbdefi
deps,
&envoy_extensions_transport_sockets_tls_v3_common_proto_upb_file_layout,
"envoy/extensions/transport_sockets/tls/v3/common.proto",
- UPB_STRINGVIEW_INIT(descriptor, 4092)
+ UPB_STRINGVIEW_INIT(descriptor, 4173)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c
index 912608fac0..d398493d36 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c
@@ -10,6 +10,7 @@
#include "envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h"
#include "envoy/extensions/transport_sockets/tls/v3/tls.upb.h"
+extern _upb_DefPool_Init envoy_config_core_v3_address_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_core_v3_extension_proto_upbdefinit;
extern _upb_DefPool_Init envoy_extensions_transport_sockets_tls_v3_common_proto_upbdefinit;
extern _upb_DefPool_Init envoy_extensions_transport_sockets_tls_v3_secret_proto_upbdefinit;
@@ -19,207 +20,220 @@ extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[4927] = {'\n', '3', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 't', 'r', 'a', 'n', 's', 'p',
+static const char descriptor[5249] = {'\n', '3', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 't', 'r', 'a', 'n', 's', 'p',
'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '/', 't', 'l', 's', '/', 'v', '3', '/', 't', 'l', 's', '.', 'p', 'r',
'o', 't', 'o', '\022', ')', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a',
-'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '\032', '$', 'e', 'n',
-'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'e', 'x', 't', 'e', 'n', 's',
-'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '6', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o',
-'n', 's', '/', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '/', 't', 'l', 's', '/',
-'v', '3', '/', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '6', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x',
-'t', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't',
-'s', '/', 't', 'l', 's', '/', 'v', '3', '/', 's', 'e', 'c', 'r', 'e', 't', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o',
-'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r',
-'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p',
-'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't',
-'i', 'o', 'n', 's', '/', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u',
-'d', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r',
-'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r',
-'s', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v',
-'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\301', '\002', '\n', '\022', 'U', 'p', 's', 't', 'r', 'e', 'a',
-'m', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', 'i', '\n', '\022', 'c', 'o', 'm', 'm', 'o', 'n', '_', 't', 'l', 's',
-'_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x',
-'t', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't',
-'s', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't',
-'R', '\020', 'c', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', '\032', '\n', '\003', 's', 'n', 'i',
-'\030', '\002', ' ', '\001', '(', '\t', 'B', '\010', '\372', 'B', '\005', 'r', '\003', '(', '\377', '\001', 'R', '\003', 's', 'n', 'i', '\022', '/', '\n', '\023',
-'a', 'l', 'l', 'o', 'w', '_', 'r', 'e', 'n', 'e', 'g', 'o', 't', 'i', 'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\010',
-'R', '\022', 'a', 'l', 'l', 'o', 'w', 'R', 'e', 'n', 'e', 'g', 'o', 't', 'i', 'a', 't', 'i', 'o', 'n', '\022', 'F', '\n', '\020', 'm',
-'a', 'x', '_', 's', 'e', 's', 's', 'i', 'o', 'n', '_', 'k', 'e', 'y', 's', '\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', 'g',
-'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u',
-'e', 'R', '\016', 'm', 'a', 'x', 'S', 'e', 's', 's', 'i', 'o', 'n', 'K', 'e', 'y', 's', ':', '+', '\232', '\305', '\210', '\036', '&', '\n',
-'$', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'a', 'u', 't', 'h', '.', 'U', 'p', 's', 't', 'r', 'e',
-'a', 'm', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '\"', '\352', '\007', '\n', '\024', 'D', 'o', 'w', 'n', 's', 't', 'r', 'e',
-'a', 'm', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', 'i', '\n', '\022', 'c', 'o', 'm', 'm', 'o', 'n', '_', 't', 'l',
-'s', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e',
-'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e',
-'t', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x',
-'t', 'R', '\020', 'c', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', 'X', '\n', '\032', 'r', 'e',
-'q', 'u', 'i', 'r', 'e', '_', 'c', 'l', 'i', 'e', 'n', 't', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '\030',
-'\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B',
-'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\030', 'r', 'e', 'q', 'u', 'i', 'r', 'e', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e',
-'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '\022', ';', '\n', '\013', 'r', 'e', 'q', 'u', 'i', 'r', 'e', '_', 's', 'n', 'i', '\030',
-'\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B',
-'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\n', 'r', 'e', 'q', 'u', 'i', 'r', 'e', 'S', 'n', 'i', '\022', 'q', '\n', '\023', 's',
-'e', 's', 's', 'i', 'o', 'n', '_', 't', 'i', 'c', 'k', 'e', 't', '_', 'k', 'e', 'y', 's', '\030', '\004', ' ', '\001', '(', '\013', '2',
-'?', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p',
-'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'T', 'l', 's', 'S', 'e', 's',
-'s', 'i', 'o', 'n', 'T', 'i', 'c', 'k', 'e', 't', 'K', 'e', 'y', 's', 'H', '\000', 'R', '\021', 's', 'e', 's', 's', 'i', 'o', 'n',
-'T', 'i', 'c', 'k', 'e', 't', 'K', 'e', 'y', 's', '\022', '\215', '\001', '\n', '%', 's', 'e', 's', 's', 'i', 'o', 'n', '_', 't', 'i',
-'c', 'k', 'e', 't', '_', 'k', 'e', 'y', 's', '_', 's', 'd', 's', '_', 's', 'e', 'c', 'r', 'e', 't', '_', 'c', 'o', 'n', 'f',
-'i', 'g', '\030', '\005', ' ', '\001', '(', '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o',
-'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.',
-'v', '3', '.', 'S', 'd', 's', 'S', 'e', 'c', 'r', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', ' ', 's', 'e', 's',
-'s', 'i', 'o', 'n', 'T', 'i', 'c', 'k', 'e', 't', 'K', 'e', 'y', 's', 'S', 'd', 's', 'S', 'e', 'c', 'r', 'e', 't', 'C', 'o',
-'n', 'f', 'i', 'g', '\022', 'Q', '\n', '$', 'd', 'i', 's', 'a', 'b', 'l', 'e', '_', 's', 't', 'a', 't', 'e', 'l', 'e', 's', 's',
-'_', 's', 'e', 's', 's', 'i', 'o', 'n', '_', 'r', 'e', 's', 'u', 'm', 'p', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\010',
-'H', '\000', 'R', '!', 'd', 'i', 's', 'a', 'b', 'l', 'e', 'S', 't', 'a', 't', 'e', 'l', 'e', 's', 's', 'S', 'e', 's', 's', 'i',
-'o', 'n', 'R', 'e', 's', 'u', 'm', 'p', 't', 'i', 'o', 'n', '\022', 'T', '\n', '\017', 's', 'e', 's', 's', 'i', 'o', 'n', '_', 't',
-'i', 'm', 'e', 'o', 'u', 't', '\030', '\006', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o',
-'t', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'B', '\020', '\372', 'B', '\r', '\252', '\001', '\n', '\032', '\006', '\010',
-'\200', '\200', '\200', '\200', '\020', '2', '\000', 'R', '\016', 's', 'e', 's', 's', 'i', 'o', 'n', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', '\210',
-'\001', '\n', '\022', 'o', 'c', 's', 'p', '_', 's', 't', 'a', 'p', 'l', 'e', '_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\010', ' ', '\001',
-'(', '\016', '2', 'P', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a',
-'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'D', 'o', 'w',
-'n', 's', 't', 'r', 'e', 'a', 'm', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'O', 'c', 's', 'p', 'S', 't', 'a',
-'p', 'l', 'e', 'P', 'o', 'l', 'i', 'c', 'y', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\020', 'o', 'c', 's', 'p',
-'S', 't', 'a', 'p', 'l', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\"', 'N', '\n', '\020', 'O', 'c', 's', 'p', 'S', 't', 'a', 'p', 'l',
-'e', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\024', '\n', '\020', 'L', 'E', 'N', 'I', 'E', 'N', 'T', '_', 'S', 'T', 'A', 'P', 'L', 'I',
-'N', 'G', '\020', '\000', '\022', '\023', '\n', '\017', 'S', 'T', 'R', 'I', 'C', 'T', '_', 'S', 'T', 'A', 'P', 'L', 'I', 'N', 'G', '\020', '\001',
-'\022', '\017', '\n', '\013', 'M', 'U', 'S', 'T', '_', 'S', 'T', 'A', 'P', 'L', 'E', '\020', '\002', ':', '-', '\232', '\305', '\210', '\036', '(', '\n',
-'&', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'a', 'u', 't', 'h', '.', 'D', 'o', 'w', 'n', 's', 't',
-'r', 'e', 'a', 'm', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', 'B', '\032', '\n', '\030', 's', 'e', 's', 's', 'i', 'o', 'n',
-'_', 't', 'i', 'c', 'k', 'e', 't', '_', 'k', 'e', 'y', 's', '_', 't', 'y', 'p', 'e', '\"', '\245', '\027', '\n', '\020', 'C', 'o', 'm',
-'m', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', 'W', '\n', '\n', 't', 'l', 's', '_', 'p', 'a', 'r', 'a',
-'m', 's', '\030', '\001', ' ', '\001', '(', '\013', '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o',
-'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.',
-'v', '3', '.', 'T', 'l', 's', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', 'R', '\t', 't', 'l', 's', 'P', 'a', 'r', 'a',
-'m', 's', '\022', 'd', '\n', '\020', 't', 'l', 's', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 's', '\030', '\002', ' ',
-'\003', '(', '\013', '2', '9', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r',
-'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'T', 'l',
-'s', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'R', '\017', 't', 'l', 's', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c',
-'a', 't', 'e', 's', '\022', '\220', '\001', '\n', '\"', 't', 'l', 's', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_',
-'s', 'd', 's', '_', 's', 'e', 'c', 'r', 'e', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\006', ' ', '\003', '(', '\013', '2',
-':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p',
-'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'S', 'd', 's', 'S', 'e', 'c',
-'r', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\020', '\002', 'R', '\036', 't', 'l', 's', 'C',
-'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'S', 'd', 's', 'S', 'e', 'c', 'r', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g',
-'s', '\022', '\227', '\001', '\n', '!', 't', 'l', 's', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'p', 'r', 'o',
-'v', 'i', 'd', 'e', 'r', '_', 'i', 'n', 's', 't', 'a', 'n', 'c', 'e', '\030', '\016', ' ', '\001', '(', '\013', '2', 'L', '.', 'e', 'n',
-'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_',
-'s', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't',
-'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', 'R', '\036',
-'t', 'l', 's', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's',
-'t', 'a', 'n', 'c', 'e', '\022', '\255', '\001', '\n', '$', 't', 'l', 's', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e',
-'_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '\030', '\t', ' ', '\001',
-'(', '\013', '2', 'O', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a',
-'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'o', 'm',
-'m', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e',
-'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '!', 't', 'l',
-'s', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r',
-'o', 'v', 'i', 'd', 'e', 'r', '\022', '\306', '\001', '\n', '-', 't', 'l', 's', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't',
-'e', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '_', 'i', 'n',
-'s', 't', 'a', 'n', 'c', 'e', '\030', '\013', ' ', '\001', '(', '\013', '2', 'W', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e',
-'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.',
-'t', 'l', 's', '.', 'v', '3', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'C',
-'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', 't', 'a', 'n', 'c',
-'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', ')', 't', 'l', 's', 'C', 'e', 'r', 't', 'i', 'f',
-'i', 'c', 'a', 't', 'e', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I',
-'n', 's', 't', 'a', 'n', 'c', 'e', '\022', 'x', '\n', '\022', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n',
-'t', 'e', 'x', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', 'G', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's',
+'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '\032', '\"', 'e', 'n',
+'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'a', 'd', 'd', 'r', 'e', 's',
+'s', '.', 'p', 'r', 'o', 't', 'o', '\032', '$', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r',
+'e', '/', 'v', '3', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '6', 'e', 'n', 'v',
+'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's',
+'o', 'c', 'k', 'e', 't', 's', '/', 't', 'l', 's', '/', 'v', '3', '/', 'c', 'o', 'm', 'm', 'o', 'n', '.', 'p', 'r', 'o', 't',
+'o', '\032', '6', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '/', 't', 'r', 'a', 'n', 's',
+'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '/', 't', 'l', 's', '/', 'v', '3', '/', 's', 'e', 'c', 'r', 'e',
+'t', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/',
+'d', 'u', 'r', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r',
+'o', 't', 'o', 'b', 'u', 'f', '/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n',
+'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'i',
+'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n',
+'s', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o',
+'t', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032',
+'\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"',
+'\301', '\002', '\n', '\022', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', 'i', '\n',
+'\022', 'c', 'o', 'm', 'm', 'o', 'n', '_', 't', 'l', 's', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\001', ' ', '\001', '(', '\013',
+'2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's',
+'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'o', 'm', 'm', 'o',
+'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', 'R', '\020', 'c', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n',
+'t', 'e', 'x', 't', '\022', '\032', '\n', '\003', 's', 'n', 'i', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\010', '\372', 'B', '\005', 'r', '\003', '(',
+'\377', '\001', 'R', '\003', 's', 'n', 'i', '\022', '/', '\n', '\023', 'a', 'l', 'l', 'o', 'w', '_', 'r', 'e', 'n', 'e', 'g', 'o', 't', 'i',
+'a', 't', 'i', 'o', 'n', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\022', 'a', 'l', 'l', 'o', 'w', 'R', 'e', 'n', 'e', 'g', 'o', 't',
+'i', 'a', 't', 'i', 'o', 'n', '\022', 'F', '\n', '\020', 'm', 'a', 'x', '_', 's', 'e', 's', 's', 'i', 'o', 'n', '_', 'k', 'e', 'y',
+'s', '\030', '\004', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
+'.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'R', '\016', 'm', 'a', 'x', 'S', 'e', 's', 's', 'i', 'o', 'n', 'K',
+'e', 'y', 's', ':', '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.',
+'a', 'u', 't', 'h', '.', 'U', 'p', 's', 't', 'r', 'e', 'a', 'm', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '\"', '\352',
+'\007', '\n', '\024', 'D', 'o', 'w', 'n', 's', 't', 'r', 'e', 'a', 'm', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', 'i',
+'\n', '\022', 'c', 'o', 'm', 'm', 'o', 'n', '_', 't', 'l', 's', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\001', ' ', '\001', '(',
+'\013', '2', ';', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n',
+'s', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'o', 'm', 'm',
+'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', 'R', '\020', 'c', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o',
+'n', 't', 'e', 'x', 't', '\022', 'X', '\n', '\032', 'r', 'e', 'q', 'u', 'i', 'r', 'e', '_', 'c', 'l', 'i', 'e', 'n', 't', '_', 'c',
+'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e',
+'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\030', 'r', 'e', 'q', 'u',
+'i', 'r', 'e', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '\022', ';', '\n', '\013', 'r',
+'e', 'q', 'u', 'i', 'r', 'e', '_', 's', 'n', 'i', '\030', '\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e',
+'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'B', 'o', 'o', 'l', 'V', 'a', 'l', 'u', 'e', 'R', '\n', 'r', 'e', 'q', 'u',
+'i', 'r', 'e', 'S', 'n', 'i', '\022', 'q', '\n', '\023', 's', 'e', 's', 's', 'i', 'o', 'n', '_', 't', 'i', 'c', 'k', 'e', 't', '_',
+'k', 'e', 'y', 's', '\030', '\004', ' ', '\001', '(', '\013', '2', '?', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's',
'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l',
-'s', '.', 'v', '3', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o',
-'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'H', '\000', 'R', '\021', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n',
-'t', 'e', 'x', 't', '\022', '\214', '\001', '\n', '$', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e',
-'x', 't', '_', 's', 'd', 's', '_', 's', 'e', 'c', 'r', 'e', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\007', ' ', '\001', '(',
-'\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n',
-'s', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'S', 'd', 's', 'S',
-'e', 'c', 'r', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'H', '\000', 'R', ' ', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n',
-'C', 'o', 'n', 't', 'e', 'x', 't', 'S', 'd', 's', 'S', 'e', 'c', 'r', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\242', '\001',
-'\n', '\033', 'c', 'o', 'm', 'b', 'i', 'n', 'e', 'd', '_', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n',
-'t', 'e', 'x', 't', '\030', '\010', ' ', '\001', '(', '\013', '2', '`', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's',
-'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l',
-'s', '.', 'v', '3', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'C', 'o', 'm',
-'b', 'i', 'n', 'e', 'd', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o',
-'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'H', '\000', 'R', '\031', 'c', 'o', 'm', 'b', 'i', 'n', 'e', 'd', 'V', 'a', 'l', 'i', 'd',
-'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', '\265', '\001', '\n', '\'', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i',
-'o', 'n', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'p', 'r',
-'o', 'v', 'i', 'd', 'e', 'r', '\030', '\n', ' ', '\001', '(', '\013', '2', 'O', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e',
-'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.',
-'t', 'l', 's', '.', 'v', '3', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'C',
-'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'B', '\013', '\030', '\001', '\222', '\307', '\206',
-'\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', '$', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e',
-'x', 't', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '\022', '\316', '\001', '\n',
-'0', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '_', 'c', 'e', 'r', 't', 'i',
+'s', '.', 'v', '3', '.', 'T', 'l', 's', 'S', 'e', 's', 's', 'i', 'o', 'n', 'T', 'i', 'c', 'k', 'e', 't', 'K', 'e', 'y', 's',
+'H', '\000', 'R', '\021', 's', 'e', 's', 's', 'i', 'o', 'n', 'T', 'i', 'c', 'k', 'e', 't', 'K', 'e', 'y', 's', '\022', '\215', '\001', '\n',
+'%', 's', 'e', 's', 's', 'i', 'o', 'n', '_', 't', 'i', 'c', 'k', 'e', 't', '_', 'k', 'e', 'y', 's', '_', 's', 'd', 's', '_',
+'s', 'e', 'c', 'r', 'e', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\005', ' ', '\001', '(', '\013', '2', ':', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's',
+'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'S', 'd', 's', 'S', 'e', 'c', 'r', 'e', 't', 'C', 'o',
+'n', 'f', 'i', 'g', 'H', '\000', 'R', ' ', 's', 'e', 's', 's', 'i', 'o', 'n', 'T', 'i', 'c', 'k', 'e', 't', 'K', 'e', 'y', 's',
+'S', 'd', 's', 'S', 'e', 'c', 'r', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'Q', '\n', '$', 'd', 'i', 's', 'a', 'b', 'l',
+'e', '_', 's', 't', 'a', 't', 'e', 'l', 'e', 's', 's', '_', 's', 'e', 's', 's', 'i', 'o', 'n', '_', 'r', 'e', 's', 'u', 'm',
+'p', 't', 'i', 'o', 'n', '\030', '\007', ' ', '\001', '(', '\010', 'H', '\000', 'R', '!', 'd', 'i', 's', 'a', 'b', 'l', 'e', 'S', 't', 'a',
+'t', 'e', 'l', 'e', 's', 's', 'S', 'e', 's', 's', 'i', 'o', 'n', 'R', 'e', 's', 'u', 'm', 'p', 't', 'i', 'o', 'n', '\022', 'T',
+'\n', '\017', 's', 'e', 's', 's', 'i', 'o', 'n', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\006', ' ', '\001', '(', '\013', '2', '\031',
+'.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n',
+'B', '\020', '\372', 'B', '\r', '\252', '\001', '\n', '\032', '\006', '\010', '\200', '\200', '\200', '\200', '\020', '2', '\000', 'R', '\016', 's', 'e', 's', 's', 'i',
+'o', 'n', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', '\210', '\001', '\n', '\022', 'o', 'c', 's', 'p', '_', 's', 't', 'a', 'p', 'l', 'e',
+'_', 'p', 'o', 'l', 'i', 'c', 'y', '\030', '\010', ' ', '\001', '(', '\016', '2', 'P', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't',
+'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's',
+'.', 't', 'l', 's', '.', 'v', '3', '.', 'D', 'o', 'w', 'n', 's', 't', 'r', 'e', 'a', 'm', 'T', 'l', 's', 'C', 'o', 'n', 't',
+'e', 'x', 't', '.', 'O', 'c', 's', 'p', 'S', 't', 'a', 'p', 'l', 'e', 'P', 'o', 'l', 'i', 'c', 'y', 'B', '\010', '\372', 'B', '\005',
+'\202', '\001', '\002', '\020', '\001', 'R', '\020', 'o', 'c', 's', 'p', 'S', 't', 'a', 'p', 'l', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\"', 'N',
+'\n', '\020', 'O', 'c', 's', 'p', 'S', 't', 'a', 'p', 'l', 'e', 'P', 'o', 'l', 'i', 'c', 'y', '\022', '\024', '\n', '\020', 'L', 'E', 'N',
+'I', 'E', 'N', 'T', '_', 'S', 'T', 'A', 'P', 'L', 'I', 'N', 'G', '\020', '\000', '\022', '\023', '\n', '\017', 'S', 'T', 'R', 'I', 'C', 'T',
+'_', 'S', 'T', 'A', 'P', 'L', 'I', 'N', 'G', '\020', '\001', '\022', '\017', '\n', '\013', 'M', 'U', 'S', 'T', '_', 'S', 'T', 'A', 'P', 'L',
+'E', '\020', '\002', ':', '-', '\232', '\305', '\210', '\036', '(', '\n', '&', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.',
+'a', 'u', 't', 'h', '.', 'D', 'o', 'w', 'n', 's', 't', 'r', 'e', 'a', 'm', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't',
+'B', '\032', '\n', '\030', 's', 'e', 's', 's', 'i', 'o', 'n', '_', 't', 'i', 'c', 'k', 'e', 't', '_', 'k', 'e', 'y', 's', '_', 't',
+'y', 'p', 'e', '\"', '\314', '\001', '\n', '\t', 'T', 'l', 's', 'K', 'e', 'y', 'L', 'o', 'g', '\022', '\033', '\n', '\004', 'p', 'a', 't', 'h',
+'\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\004', 'p', 'a', 't', 'h', '\022', 'O', '\n', '\023',
+'l', 'o', 'c', 'a', 'l', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 'r', 'a', 'n', 'g', 'e', '\030', '\002', ' ', '\003', '(', '\013',
+'2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C',
+'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', 'R', '\021', 'l', 'o', 'c', 'a', 'l', 'A', 'd', 'd', 'r', 'e', 's', 's', 'R', 'a', 'n',
+'g', 'e', '\022', 'Q', '\n', '\024', 'r', 'e', 'm', 'o', 't', 'e', '_', 'a', 'd', 'd', 'r', 'e', 's', 's', '_', 'r', 'a', 'n', 'g',
+'e', '\030', '\003', ' ', '\003', '(', '\013', '2', '\037', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o',
+'r', 'e', '.', 'v', '3', '.', 'C', 'i', 'd', 'r', 'R', 'a', 'n', 'g', 'e', 'R', '\022', 'r', 'e', 'm', 'o', 't', 'e', 'A', 'd',
+'d', 'r', 'e', 's', 's', 'R', 'a', 'n', 'g', 'e', '\"', '\364', '\027', '\n', '\020', 'C', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C',
+'o', 'n', 't', 'e', 'x', 't', '\022', 'W', '\n', '\n', 't', 'l', 's', '_', 'p', 'a', 'r', 'a', 'm', 's', '\030', '\001', ' ', '\001', '(',
+'\013', '2', '8', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n',
+'s', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'T', 'l', 's', 'P',
+'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', 'R', '\t', 't', 'l', 's', 'P', 'a', 'r', 'a', 'm', 's', '\022', 'd', '\n', '\020', 't',
+'l', 's', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '9', '.', 'e',
+'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't',
+'_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'T', 'l', 's', 'C', 'e', 'r', 't', 'i', 'f',
+'i', 'c', 'a', 't', 'e', 'R', '\017', 't', 'l', 's', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 's', '\022', '\220', '\001',
+'\n', '\"', 't', 'l', 's', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 's', 'd', 's', '_', 's', 'e', 'c',
+'r', 'e', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\006', ' ', '\003', '(', '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y',
+'.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c',
+'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'S', 'd', 's', 'S', 'e', 'c', 'r', 'e', 't', 'C', 'o', 'n', 'f',
+'i', 'g', 'B', '\010', '\372', 'B', '\005', '\222', '\001', '\002', '\020', '\002', 'R', '\036', 't', 'l', 's', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c',
+'a', 't', 'e', 'S', 'd', 's', 'S', 'e', 'c', 'r', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\022', '\227', '\001', '\n', '!', 't',
+'l', 's', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '_', 'i',
+'n', 's', 't', 'a', 'n', 'c', 'e', '\030', '\016', ' ', '\001', '(', '\013', '2', 'L', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't',
+'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's',
+'.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd',
+'e', 'r', 'P', 'l', 'u', 'g', 'i', 'n', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', 'R', '\036', 't', 'l', 's', 'C', 'e', 'r', 't',
+'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', '\022', '\255',
+'\001', '\n', '$', 't', 'l', 's', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'c', 'e', 'r', 't', 'i', 'f',
+'i', 'c', 'a', 't', 'e', '_', 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '\030', '\t', ' ', '\001', '(', '\013', '2', 'O', '.', 'e', 'n',
+'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_',
+'s', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C',
+'o', 'n', 't', 'e', 'x', 't', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e',
+'r', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '!', 't', 'l', 's', 'C', 'e', 'r', 't', 'i', 'f',
+'i', 'c', 'a', 't', 'e', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '\022',
+'\306', '\001', '\n', '-', 't', 'l', 's', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'c', 'e', 'r', 't', 'i',
'f', 'i', 'c', 'a', 't', 'e', '_', 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '_', 'i', 'n', 's', 't', 'a', 'n', 'c', 'e', '\030',
-'\014', ' ', '\001', '(', '\013', '2', 'W', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.',
+'\013', ' ', '\001', '(', '\013', '2', 'W', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.',
't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.',
'C', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c',
'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', 'B', '\013', '\030', '\001', '\222', '\307',
-'\206', '\330', '\004', '\003', '3', '.', '0', 'H', '\000', 'R', ',', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't',
-'e', 'x', 't', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's',
-'t', 'a', 'n', 'c', 'e', '\022', '%', '\n', '\016', 'a', 'l', 'p', 'n', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', '\030', '\004',
-' ', '\003', '(', '\t', 'R', '\r', 'a', 'l', 'p', 'n', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', '\022', 'W', '\n', '\021', 'c', 'u',
-'s', 't', 'o', 'm', '_', 'h', 'a', 'n', 'd', 's', 'h', 'a', 'k', 'e', 'r', '\030', '\r', ' ', '\001', '(', '\013', '2', '*', '.', 'e',
-'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd',
-'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\020', 'c', 'u', 's', 't', 'o', 'm', 'H', 'a',
-'n', 'd', 's', 'h', 'a', 'k', 'e', 'r', '\032', '\222', '\001', '\n', '\023', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P',
-'r', 'o', 'v', 'i', 'd', 'e', 'r', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B',
-'\004', 'r', '\002', '\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'O', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f',
-'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c',
-'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f',
-'i', 'g', 'H', '\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\r', '\n', '\006', 'c', 'o', 'n', 'f',
-'i', 'g', '\022', '\003', '\370', 'B', '\001', '\032', 'm', '\n', '\033', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o',
-'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', '\022', '#', '\n', '\r', 'i', 'n', 's', 't', 'a', 'n', 'c', 'e',
-'_', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\014', 'i', 'n', 's', 't', 'a', 'n', 'c', 'e', 'N', 'a', 'm', 'e',
-'\022', ')', '\n', '\020', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(',
-'\t', 'R', '\017', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'N', 'a', 'm', 'e', '\032', '\244', '\006', '\n', '$', 'C', 'o',
-'m', 'b', 'i', 'n', 'e', 'd', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i',
-'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', '\217', '\001', '\n', '\032', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l',
-'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', 'G', '.', 'e',
-'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't',
-'_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a',
-'t', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'B', '\010', '\372', 'B', '\005', '\212',
-'\001', '\002', '\020', '\001', 'R', '\030', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o',
-'n', 't', 'e', 'x', 't', '\022', '\224', '\001', '\n', '$', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't',
-'e', 'x', 't', '_', 's', 'd', 's', '_', 's', 'e', 'c', 'r', 'e', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001',
-'(', '\013', '2', ':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a',
-'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'S', 'd', 's',
-'S', 'e', 'c', 'r', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', ' ', 'v',
-'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'S', 'd', 's', 'S', 'e', 'c', 'r', 'e', 't',
-'C', 'o', 'n', 'f', 'i', 'g', '\022', '\263', '\001', '\n', '\'', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n',
-'t', 'e', 'x', 't', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r',
-'\030', '\003', ' ', '\001', '(', '\013', '2', 'O', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's',
-'.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3',
-'.', 'C', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i',
-'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0',
-'R', '$', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'C', 'e', 'r', 't', 'i', 'f',
-'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '\022', '\314', '\001', '\n', '0', 'v', 'a', 'l', 'i', 'd', 'a', 't',
-'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'p',
-'r', 'o', 'v', 'i', 'd', 'e', 'r', '_', 'i', 'n', 's', 't', 'a', 'n', 'c', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', 'W', '.',
-'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r',
-'t', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'T', 'l',
-'s', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i',
-'d', 'e', 'r', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R',
-',', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'C', 'e', 'r', 't', 'i', 'f', 'i',
-'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', ':', 'N', '\232', '\305', '\210',
-'\036', 'I', '\n', 'G', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'a', 'u', 't', 'h', '.', 'C', 'o', 'm',
-'m', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'd', 'C', 'e', 'r',
-'t', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't',
-':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'a', 'u', 't',
-'h', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', 'B', '\031', '\n', '\027', 'v', 'a', 'l',
-'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\005', '\020',
-'\006', 'B', '\245', '\001', '\n', '7', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y',
-'.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c',
-'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', 'B', '\010', 'T', 'l', 's', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'V',
-'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-',
-'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n',
-'s', 'i', 'o', 'n', 's', '/', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '/', 't',
-'l', 's', '/', 'v', '3', ';', 't', 'l', 's', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't',
-'o', '3',
+'\206', '\330', '\004', '\003', '3', '.', '0', 'R', ')', 't', 'l', 's', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'C', 'e',
+'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e',
+'\022', 'x', '\n', '\022', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\003', ' ',
+'\001', '(', '\013', '2', 'G', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r',
+'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'e',
+'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x',
+'t', 'H', '\000', 'R', '\021', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', '\022', '\214', '\001',
+'\n', '$', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '_', 's', 'd', 's', '_',
+'s', 'e', 'c', 'r', 'e', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\007', ' ', '\001', '(', '\013', '2', ':', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's',
+'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'S', 'd', 's', 'S', 'e', 'c', 'r', 'e', 't', 'C', 'o',
+'n', 'f', 'i', 'g', 'H', '\000', 'R', ' ', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't',
+'S', 'd', 's', 'S', 'e', 'c', 'r', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\242', '\001', '\n', '\033', 'c', 'o', 'm', 'b', 'i',
+'n', 'e', 'd', '_', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\010', ' ',
+'\001', '(', '\013', '2', '`', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r',
+'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'o',
+'m', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'd', 'C', 'e',
+'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x',
+'t', 'H', '\000', 'R', '\031', 'c', 'o', 'm', 'b', 'i', 'n', 'e', 'd', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o',
+'n', 't', 'e', 'x', 't', '\022', '\265', '\001', '\n', '\'', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't',
+'e', 'x', 't', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '\030',
+'\n', ' ', '\001', '(', '\013', '2', 'O', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.',
+'t', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.',
+'C', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c',
+'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H',
+'\000', 'R', '$', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'C', 'e', 'r', 't', 'i',
+'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '\022', '\316', '\001', '\n', '0', 'v', 'a', 'l', 'i', 'd', 'a',
+'t', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_',
+'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '_', 'i', 'n', 's', 't', 'a', 'n', 'c', 'e', '\030', '\014', ' ', '\001', '(', '\013', '2', 'W',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o',
+'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'T',
+'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v',
+'i', 'd', 'e', 'r', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0',
+'H', '\000', 'R', ',', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'C', 'e', 'r', 't',
+'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', '\022', '%',
+'\n', '\016', 'a', 'l', 'p', 'n', '_', 'p', 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', '\030', '\004', ' ', '\003', '(', '\t', 'R', '\r', 'a',
+'l', 'p', 'n', 'P', 'r', 'o', 't', 'o', 'c', 'o', 'l', 's', '\022', 'W', '\n', '\021', 'c', 'u', 's', 't', 'o', 'm', '_', 'h', 'a',
+'n', 'd', 's', 'h', 'a', 'k', 'e', 'r', '\030', '\r', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
+'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i',
+'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\020', 'c', 'u', 's', 't', 'o', 'm', 'H', 'a', 'n', 'd', 's', 'h', 'a', 'k', 'e',
+'r', '\022', 'M', '\n', '\007', 'k', 'e', 'y', '_', 'l', 'o', 'g', '\030', '\017', ' ', '\001', '(', '\013', '2', '4', '.', 'e', 'n', 'v', 'o',
+'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o',
+'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'T', 'l', 's', 'K', 'e', 'y', 'L', 'o', 'g', 'R', '\006', 'k',
+'e', 'y', 'L', 'o', 'g', '\032', '\222', '\001', '\n', '\023', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v',
+'i', 'd', 'e', 'r', '\022', '\033', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002',
+'\020', '\001', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'O', '\n', '\014', 't', 'y', 'p', 'e', 'd', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030',
+'\002', ' ', '\001', '(', '\013', '2', '*', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e',
+'.', 'v', '3', '.', 'T', 'y', 'p', 'e', 'd', 'E', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 'C', 'o', 'n', 'f', 'i', 'g', 'H',
+'\000', 'R', '\013', 't', 'y', 'p', 'e', 'd', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\r', '\n', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\022',
+'\003', '\370', 'B', '\001', '\032', 'm', '\n', '\033', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd',
+'e', 'r', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', '\022', '#', '\n', '\r', 'i', 'n', 's', 't', 'a', 'n', 'c', 'e', '_', 'n', 'a',
+'m', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\014', 'i', 'n', 's', 't', 'a', 'n', 'c', 'e', 'N', 'a', 'm', 'e', '\022', ')', '\n',
+'\020', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\017',
+'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'N', 'a', 'm', 'e', '\032', '\244', '\006', '\n', '$', 'C', 'o', 'm', 'b', 'i',
+'n', 'e', 'd', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C',
+'o', 'n', 't', 'e', 'x', 't', '\022', '\217', '\001', '\n', '\032', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 'v', 'a', 'l', 'i', 'd', 'a',
+'t', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '\030', '\001', ' ', '\001', '(', '\013', '2', 'G', '.', 'e', 'n', 'v', 'o',
+'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o',
+'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'V',
+'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020',
+'\001', 'R', '\030', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e',
+'x', 't', '\022', '\224', '\001', '\n', '$', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e', 'x', 't',
+'_', 's', 'd', 's', '_', 's', 'e', 'c', 'r', 'e', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2',
+':', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p',
+'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'S', 'd', 's', 'S', 'e', 'c',
+'r', 'e', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', ' ', 'v', 'a', 'l', 'i',
+'d', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'S', 'd', 's', 'S', 'e', 'c', 'r', 'e', 't', 'C', 'o', 'n',
+'f', 'i', 'g', '\022', '\263', '\001', '\n', '\'', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e', 'x',
+'t', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'p', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '\030', '\003', ' ',
+'\001', '(', '\013', '2', 'O', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r',
+'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'o',
+'m', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't',
+'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '$', 'v',
+'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a',
+'t', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', '\022', '\314', '\001', '\n', '0', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n',
+'_', 'c', 'o', 'n', 't', 'e', 'x', 't', '_', 'c', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', '_', 'p', 'r', 'o', 'v',
+'i', 'd', 'e', 'r', '_', 'i', 'n', 's', 't', 'a', 'n', 'c', 'e', '\030', '\004', ' ', '\001', '(', '\013', '2', 'W', '.', 'e', 'n', 'v',
+'o', 'y', '.', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's',
+'o', 'c', 'k', 'e', 't', 's', '.', 't', 'l', 's', '.', 'v', '3', '.', 'C', 'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o',
+'n', 't', 'e', 'x', 't', '.', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't', 'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r',
+'I', 'n', 's', 't', 'a', 'n', 'c', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', ',', 'v', 'a',
+'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', 'C', 'e', 'r', 't', 'i', 'f', 'i', 'c', 'a', 't',
+'e', 'P', 'r', 'o', 'v', 'i', 'd', 'e', 'r', 'I', 'n', 's', 't', 'a', 'n', 'c', 'e', ':', 'N', '\232', '\305', '\210', '\036', 'I', '\n',
+'G', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'a', 'u', 't', 'h', '.', 'C', 'o', 'm', 'm', 'o', 'n',
+'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', '.', 'C', 'o', 'm', 'b', 'i', 'n', 'e', 'd', 'C', 'e', 'r', 't', 'i', 'f',
+'i', 'c', 'a', 't', 'e', 'V', 'a', 'l', 'i', 'd', 'a', 't', 'i', 'o', 'n', 'C', 'o', 'n', 't', 'e', 'x', 't', ':', ')', '\232',
+'\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'a', 'u', 't', 'h', '.', 'C',
+'o', 'm', 'm', 'o', 'n', 'T', 'l', 's', 'C', 'o', 'n', 't', 'e', 'x', 't', 'B', '\031', '\n', '\027', 'v', 'a', 'l', 'i', 'd', 'a',
+'t', 'i', 'o', 'n', '_', 'c', 'o', 'n', 't', 'e', 'x', 't', '_', 't', 'y', 'p', 'e', 'J', '\004', '\010', '\005', '\020', '\006', 'B', '\245',
+'\001', '\n', '7', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 'e', 'x',
+'t', 'e', 'n', 's', 'i', 'o', 'n', 's', '.', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't',
+'s', '.', 't', 'l', 's', '.', 'v', '3', 'B', '\010', 'T', 'l', 's', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'V', 'g', 'i', 't',
+'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n',
+'t', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o',
+'n', 's', '/', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '_', 's', 'o', 'c', 'k', 'e', 't', 's', '/', 't', 'l', 's', '/',
+'v', '3', ';', 't', 'l', 's', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
-static _upb_DefPool_Init *deps[10] = {
+static _upb_DefPool_Init *deps[11] = {
+ &envoy_config_core_v3_address_proto_upbdefinit,
&envoy_config_core_v3_extension_proto_upbdefinit,
&envoy_extensions_transport_sockets_tls_v3_common_proto_upbdefinit,
&envoy_extensions_transport_sockets_tls_v3_secret_proto_upbdefinit,
@@ -236,5 +250,5 @@ _upb_DefPool_Init envoy_extensions_transport_sockets_tls_v3_tls_proto_upbdefinit
deps,
&envoy_extensions_transport_sockets_tls_v3_tls_proto_upb_file_layout,
"envoy/extensions/transport_sockets/tls/v3/tls.proto",
- UPB_STRINGVIEW_INIT(descriptor, 4927)
+ UPB_STRINGVIEW_INIT(descriptor, 5249)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h
index 34ca7422e4..5b410820ac 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h
@@ -31,6 +31,11 @@ UPB_INLINE const upb_MessageDef *envoy_extensions_transport_sockets_tls_v3_Downs
return upb_DefPool_FindMessageByName(s, "envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext");
}
+UPB_INLINE const upb_MessageDef *envoy_extensions_transport_sockets_tls_v3_TlsKeyLog_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_extensions_transport_sockets_tls_v3_tls_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.extensions.transport_sockets.tls.v3.TlsKeyLog");
+}
+
UPB_INLINE const upb_MessageDef *envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_getmsgdef(upb_DefPool *s) {
_upb_DefPool_LoadDefInit(s, &envoy_extensions_transport_sockets_tls_v3_tls_proto_upbdefinit);
return upb_DefPool_FindMessageByName(s, "envoy.extensions.transport_sockets.tls.v3.CommonTlsContext");
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c
index 52810bbb3c..3e44174695 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c
@@ -16,7 +16,8 @@ extern _upb_DefPool_Init google_protobuf_duration_proto_upbdefinit;
extern _upb_DefPool_Init google_rpc_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
-static const char descriptor[2286] = {'\n', '*', 'e', 'n', 'v', 'o', 'y', '/', 's', 'e', 'r', 'v', 'i', 'c', 'e', '/', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y',
+extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
+static const char descriptor[3974] = {'\n', '*', 'e', 'n', 'v', 'o', 'y', '/', 's', 'e', 'r', 'v', 'i', 'c', 'e', '/', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y',
'/', 'v', '3', '/', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'p', 'r', 'o', 't', 'o', '\022', '\032', 'e', 'n', 'v', 'o',
'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3', '\032', '\037', 'e',
'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.',
@@ -26,97 +27,165 @@ static const char descriptor[2286] = {'\n', '*', 'e', 'n', 'v', 'o', 'y', '/', '
'c', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o',
't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p',
'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.',
-'p', 'r', 'o', 't', 'o', '\"', '\253', '\002', '\n', '\020', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'R', 'e', 'q', 'u', 'e', 's',
-'t', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013',
-'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', '.', '\n', '\004', 'n', 'o', 'd', 'e', '\030', '\002', ' ', '\001', '(', '\013',
-'2', '\032', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'N',
-'o', 'd', 'e', 'R', '\004', 'n', 'o', 'd', 'e', '\022', '%', '\n', '\016', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'n', 'a', 'm',
-'e', 's', '\030', '\003', ' ', '\003', '(', '\t', 'R', '\r', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'N', 'a', 'm', 'e', 's', '\022', '\031',
-'\n', '\010', 't', 'y', 'p', 'e', '_', 'u', 'r', 'l', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\007', 't', 'y', 'p', 'e', 'U', 'r', 'l',
-'\022', '%', '\n', '\016', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'n', 'o', 'n', 'c', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'R',
-'\r', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'N', 'o', 'n', 'c', 'e', '\022', '5', '\n', '\014', 'e', 'r', 'r', 'o', 'r', '_', 'd',
-'e', 't', 'a', 'i', 'l', '\030', '\006', ' ', '\001', '(', '\013', '2', '\022', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'r', 'p', 'c', '.',
-'S', 't', 'a', 't', 'u', 's', 'R', '\013', 'e', 'r', 'r', 'o', 'r', 'D', 'e', 't', 'a', 'i', 'l', ':', '$', '\232', '\305', '\210', '\036',
-'\037', '\n', '\035', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y',
-'R', 'e', 'q', 'u', 'e', 's', 't', '\"', '\243', '\002', '\n', '\021', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'R', 'e', 's', 'p',
-'o', 'n', 's', 'e', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\001', ' ', '\001', '(',
-'\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', '2', '\n', '\t', 'r', 'e', 's', 'o', 'u', 'r', 'c',
-'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
-'f', '.', 'A', 'n', 'y', 'R', '\t', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\022', '\026', '\n', '\006', 'c', 'a', 'n', 'a', 'r',
-'y', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\006', 'c', 'a', 'n', 'a', 'r', 'y', '\022', '\031', '\n', '\010', 't', 'y', 'p', 'e', '_', 'u',
-'r', 'l', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\007', 't', 'y', 'p', 'e', 'U', 'r', 'l', '\022', '\024', '\n', '\005', 'n', 'o', 'n', 'c',
-'e', '\030', '\005', ' ', '\001', '(', '\t', 'R', '\005', 'n', 'o', 'n', 'c', 'e', '\022', 'G', '\n', '\r', 'c', 'o', 'n', 't', 'r', 'o', 'l',
-'_', 'p', 'l', 'a', 'n', 'e', '\030', '\006', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
-'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 't', 'r', 'o', 'l', 'P', 'l', 'a', 'n', 'e', 'R', '\014',
-'c', 'o', 'n', 't', 'r', 'o', 'l', 'P', 'l', 'a', 'n', 'e', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n', 'v', 'o',
-'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'R', 'e', 's', 'p', 'o', 'n', 's',
-'e', '\"', '\274', '\004', '\n', '\025', 'D', 'e', 'l', 't', 'a', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'R', 'e', 'q', 'u', 'e',
-'s', 't', '\022', '.', '\n', '\004', 'n', 'o', 'd', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'e', 'n', 'v', 'o', 'y', '.',
-'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'n', 'o', 'd', 'e',
-'\022', '\031', '\n', '\010', 't', 'y', 'p', 'e', '_', 'u', 'r', 'l', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\007', 't', 'y', 'p', 'e', 'U',
-'r', 'l', '\022', '8', '\n', '\030', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'n', 'a', 'm', 'e', 's', '_', 's', 'u', 'b', 's',
-'c', 'r', 'i', 'b', 'e', '\030', '\003', ' ', '\003', '(', '\t', 'R', '\026', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'N', 'a', 'm', 'e',
-'s', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'b', 'e', '\022', '<', '\n', '\032', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'n', 'a',
-'m', 'e', 's', '_', 'u', 'n', 's', 'u', 'b', 's', 'c', 'r', 'i', 'b', 'e', '\030', '\004', ' ', '\003', '(', '\t', 'R', '\030', 'r', 'e',
-'s', 'o', 'u', 'r', 'c', 'e', 'N', 'a', 'm', 'e', 's', 'U', 'n', 's', 'u', 'b', 's', 'c', 'r', 'i', 'b', 'e', '\022', '\212', '\001',
-'\n', '\031', 'i', 'n', 'i', 't', 'i', 'a', 'l', '_', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'v', 'e', 'r', 's', 'i', 'o',
-'n', 's', '\030', '\005', ' ', '\003', '(', '\013', '2', 'N', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.',
-'d', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3', '.', 'D', 'e', 'l', 't', 'a', 'D', 'i', 's', 'c', 'o', 'v', 'e',
-'r', 'y', 'R', 'e', 'q', 'u', 'e', 's', 't', '.', 'I', 'n', 'i', 't', 'i', 'a', 'l', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e',
-'V', 'e', 'r', 's', 'i', 'o', 'n', 's', 'E', 'n', 't', 'r', 'y', 'R', '\027', 'i', 'n', 'i', 't', 'i', 'a', 'l', 'R', 'e', 's',
-'o', 'u', 'r', 'c', 'e', 'V', 'e', 'r', 's', 'i', 'o', 'n', 's', '\022', '%', '\n', '\016', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e',
-'_', 'n', 'o', 'n', 'c', 'e', '\030', '\006', ' ', '\001', '(', '\t', 'R', '\r', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'N', 'o', 'n',
-'c', 'e', '\022', '5', '\n', '\014', 'e', 'r', 'r', 'o', 'r', '_', 'd', 'e', 't', 'a', 'i', 'l', '\030', '\007', ' ', '\001', '(', '\013', '2',
-'\022', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'r', 'p', 'c', '.', 'S', 't', 'a', 't', 'u', 's', 'R', '\013', 'e', 'r', 'r', 'o',
-'r', 'D', 'e', 't', 'a', 'i', 'l', '\032', 'J', '\n', '\034', 'I', 'n', 'i', 't', 'i', 'a', 'l', 'R', 'e', 's', 'o', 'u', 'r', 'c',
-'e', 'V', 'e', 'r', 's', 'i', 'o', 'n', 's', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001',
-'(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '\024', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\005', 'v',
-'a', 'l', 'u', 'e', ':', '\002', '8', '\001', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p',
-'i', '.', 'v', '2', '.', 'D', 'e', 'l', 't', 'a', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'R', 'e', 'q', 'u', 'e', 's',
-'t', '\"', '\337', '\002', '\n', '\026', 'D', 'e', 'l', 't', 'a', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'R', 'e', 's', 'p', 'o',
-'n', 's', 'e', '\022', '.', '\n', '\023', 's', 'y', 's', 't', 'e', 'm', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f',
-'o', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\021', 's', 'y', 's', 't', 'e', 'm', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f',
-'o', '\022', 'B', '\n', '\t', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n',
+'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.',
+'p', 'r', 'o', 't', 'o', '\"', '\336', '\001', '\n', '\017', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'L', 'o', 'c', 'a', 't', 'o', 'r',
+'\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'q', '\n', '\022', 'd',
+'y', 'n', 'a', 'm', 'i', 'c', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', 'B',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.',
+'v', '3', '.', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'L', 'o', 'c', 'a', 't', 'o', 'r', '.', 'D', 'y', 'n', 'a', 'm', 'i',
+'c', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', 'E', 'n', 't', 'r', 'y', 'R', '\021', 'd', 'y', 'n', 'a', 'm', 'i', 'c',
+'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\032', 'D', '\n', '\026', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'P', 'a', 'r', 'a',
+'m', 'e', 't', 'e', 'r', 's', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R',
+'\003', 'k', 'e', 'y', '\022', '\024', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\005', 'v', 'a', 'l', 'u',
+'e', ':', '\002', '8', '\001', '\"', '\237', '\001', '\n', '\014', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'N', 'a', 'm', 'e', '\022', '\022', '\n',
+'\004', 'n', 'a', 'm', 'e', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '{', '\n', '\035', 'd', 'y', 'n', 'a',
+'m', 'i', 'c', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', '_', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's',
+'\030', '\002', ' ', '\001', '(', '\013', '2', '7', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd', 'i',
+'s', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'P', 'a', 'r', 'a', 'm', 'e', 't',
+'e', 'r', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', 'R', '\033', 'd', 'y', 'n', 'a', 'm', 'i', 'c', 'P', 'a', 'r',
+'a', 'm', 'e', 't', 'e', 'r', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '\"', '\205', '\003', '\n', '\020', 'D', 'i', 's',
+'c', 'o', 'v', 'e', 'r', 'y', 'R', 'e', 'q', 'u', 'e', 's', 't', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_',
+'i', 'n', 'f', 'o', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', '.',
+'\n', '\004', 'n', 'o', 'd', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f',
+'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'n', 'o', 'd', 'e', '\022', '%', '\n', '\016',
+'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'n', 'a', 'm', 'e', 's', '\030', '\003', ' ', '\003', '(', '\t', 'R', '\r', 'r', 'e', 's',
+'o', 'u', 'r', 'c', 'e', 'N', 'a', 'm', 'e', 's', '\022', 'X', '\n', '\021', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'l', 'o',
+'c', 'a', 't', 'o', 'r', 's', '\030', '\007', ' ', '\003', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v',
+'i', 'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3', '.', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e',
+'L', 'o', 'c', 'a', 't', 'o', 'r', 'R', '\020', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'L', 'o', 'c', 'a', 't', 'o', 'r', 's',
+'\022', '\031', '\n', '\010', 't', 'y', 'p', 'e', '_', 'u', 'r', 'l', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\007', 't', 'y', 'p', 'e', 'U',
+'r', 'l', '\022', '%', '\n', '\016', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_', 'n', 'o', 'n', 'c', 'e', '\030', '\005', ' ', '\001', '(',
+'\t', 'R', '\r', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'N', 'o', 'n', 'c', 'e', '\022', '5', '\n', '\014', 'e', 'r', 'r', 'o', 'r',
+'_', 'd', 'e', 't', 'a', 'i', 'l', '\030', '\006', ' ', '\001', '(', '\013', '2', '\022', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'r', 'p',
+'c', '.', 'S', 't', 'a', 't', 'u', 's', 'R', '\013', 'e', 'r', 'r', 'o', 'r', 'D', 'e', 't', 'a', 'i', 'l', ':', '$', '\232', '\305',
+'\210', '\036', '\037', '\n', '\035', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'D', 'i', 's', 'c', 'o', 'v', 'e',
+'r', 'y', 'R', 'e', 'q', 'u', 'e', 's', 't', '\"', '\243', '\002', '\n', '\021', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'R', 'e',
+'s', 'p', 'o', 'n', 's', 'e', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030', '\001', ' ',
+'\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', '2', '\n', '\t', 'r', 'e', 's', 'o', 'u',
+'r', 'c', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o',
+'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\t', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\022', '\026', '\n', '\006', 'c', 'a', 'n',
+'a', 'r', 'y', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\006', 'c', 'a', 'n', 'a', 'r', 'y', '\022', '\031', '\n', '\010', 't', 'y', 'p', 'e',
+'_', 'u', 'r', 'l', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\007', 't', 'y', 'p', 'e', 'U', 'r', 'l', '\022', '\024', '\n', '\005', 'n', 'o',
+'n', 'c', 'e', '\030', '\005', ' ', '\001', '(', '\t', 'R', '\005', 'n', 'o', 'n', 'c', 'e', '\022', 'G', '\n', '\r', 'c', 'o', 'n', 't', 'r',
+'o', 'l', '_', 'p', 'l', 'a', 'n', 'e', '\030', '\006', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o',
+'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 't', 'r', 'o', 'l', 'P', 'l', 'a', 'n', 'e',
+'R', '\014', 'c', 'o', 'n', 't', 'r', 'o', 'l', 'P', 'l', 'a', 'n', 'e', ':', '%', '\232', '\305', '\210', '\036', ' ', '\n', '\036', 'e', 'n',
+'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'R', 'e', 's', 'p', 'o',
+'n', 's', 'e', '\"', '\232', '\006', '\n', '\025', 'D', 'e', 'l', 't', 'a', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'R', 'e', 'q',
+'u', 'e', 's', 't', '\022', '.', '\n', '\004', 'n', 'o', 'd', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'e', 'n', 'v', 'o',
+'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'n', 'o',
+'d', 'e', '\022', '\031', '\n', '\010', 't', 'y', 'p', 'e', '_', 'u', 'r', 'l', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\007', 't', 'y', 'p',
+'e', 'U', 'r', 'l', '\022', '8', '\n', '\030', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'n', 'a', 'm', 'e', 's', '_', 's', 'u',
+'b', 's', 'c', 'r', 'i', 'b', 'e', '\030', '\003', ' ', '\003', '(', '\t', 'R', '\026', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'N', 'a',
+'m', 'e', 's', 'S', 'u', 'b', 's', 'c', 'r', 'i', 'b', 'e', '\022', '<', '\n', '\032', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_',
+'n', 'a', 'm', 'e', 's', '_', 'u', 'n', 's', 'u', 'b', 's', 'c', 'r', 'i', 'b', 'e', '\030', '\004', ' ', '\003', '(', '\t', 'R', '\030',
+'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'N', 'a', 'm', 'e', 's', 'U', 'n', 's', 'u', 'b', 's', 'c', 'r', 'i', 'b', 'e', '\022',
+'k', '\n', '\033', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'l', 'o', 'c', 'a', 't', 'o', 'r', 's', '_', 's', 'u', 'b', 's',
+'c', 'r', 'i', 'b', 'e', '\030', '\010', ' ', '\003', '(', '\013', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i',
+'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3', '.', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'L',
+'o', 'c', 'a', 't', 'o', 'r', 'R', '\031', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'L', 'o', 'c', 'a', 't', 'o', 'r', 's', 'S',
+'u', 'b', 's', 'c', 'r', 'i', 'b', 'e', '\022', 'o', '\n', '\035', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'l', 'o', 'c', 'a',
+'t', 'o', 'r', 's', '_', 'u', 'n', 's', 'u', 'b', 's', 'c', 'r', 'i', 'b', 'e', '\030', '\t', ' ', '\003', '(', '\013', '2', '+', '.',
+'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v',
+'3', '.', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'L', 'o', 'c', 'a', 't', 'o', 'r', 'R', '\033', 'r', 'e', 's', 'o', 'u', 'r',
+'c', 'e', 'L', 'o', 'c', 'a', 't', 'o', 'r', 's', 'U', 'n', 's', 'u', 'b', 's', 'c', 'r', 'i', 'b', 'e', '\022', '\212', '\001', '\n',
+'\031', 'i', 'n', 'i', 't', 'i', 'a', 'l', '_', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n',
+'s', '\030', '\005', ' ', '\003', '(', '\013', '2', 'N', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd',
+'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3', '.', 'D', 'e', 'l', 't', 'a', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r',
+'y', 'R', 'e', 'q', 'u', 'e', 's', 't', '.', 'I', 'n', 'i', 't', 'i', 'a', 'l', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'V',
+'e', 'r', 's', 'i', 'o', 'n', 's', 'E', 'n', 't', 'r', 'y', 'R', '\027', 'i', 'n', 'i', 't', 'i', 'a', 'l', 'R', 'e', 's', 'o',
+'u', 'r', 'c', 'e', 'V', 'e', 'r', 's', 'i', 'o', 'n', 's', '\022', '%', '\n', '\016', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', '_',
+'n', 'o', 'n', 'c', 'e', '\030', '\006', ' ', '\001', '(', '\t', 'R', '\r', 'r', 'e', 's', 'p', 'o', 'n', 's', 'e', 'N', 'o', 'n', 'c',
+'e', '\022', '5', '\n', '\014', 'e', 'r', 'r', 'o', 'r', '_', 'd', 'e', 't', 'a', 'i', 'l', '\030', '\007', ' ', '\001', '(', '\013', '2', '\022',
+'.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'r', 'p', 'c', '.', 'S', 't', 'a', 't', 'u', 's', 'R', '\013', 'e', 'r', 'r', 'o', 'r',
+'D', 'e', 't', 'a', 'i', 'l', '\032', 'J', '\n', '\034', 'I', 'n', 'i', 't', 'i', 'a', 'l', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e',
+'V', 'e', 'r', 's', 'i', 'o', 'n', 's', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(',
+'\t', 'R', '\003', 'k', 'e', 'y', '\022', '\024', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\005', 'v', 'a',
+'l', 'u', 'e', ':', '\002', '8', '\001', ':', ')', '\232', '\305', '\210', '\036', '$', '\n', '\"', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i',
+'.', 'v', '2', '.', 'D', 'e', 'l', 't', 'a', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'R', 'e', 'q', 'u', 'e', 's', 't',
+'\"', '\277', '\003', '\n', '\026', 'D', 'e', 'l', 't', 'a', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'R', 'e', 's', 'p', 'o', 'n',
+'s', 'e', '\022', '.', '\n', '\023', 's', 'y', 's', 't', 'e', 'm', '_', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o',
+'\030', '\001', ' ', '\001', '(', '\t', 'R', '\021', 's', 'y', 's', 't', 'e', 'm', 'V', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o',
+'\022', 'B', '\n', '\t', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\030', '\002', ' ', '\003', '(', '\013', '2', '$', '.', 'e', 'n', 'v',
+'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3', '.', 'R',
+'e', 's', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\022', '\031', '\n', '\010', 't', 'y', 'p',
+'e', '_', 'u', 'r', 'l', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\007', 't', 'y', 'p', 'e', 'U', 'r', 'l', '\022', '+', '\n', '\021', 'r',
+'e', 'm', 'o', 'v', 'e', 'd', '_', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\030', '\006', ' ', '\003', '(', '\t', 'R', '\020', 'r',
+'e', 'm', 'o', 'v', 'e', 'd', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\022', '^', '\n', '\026', 'r', 'e', 'm', 'o', 'v', 'e',
+'d', '_', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'n', 'a', 'm', 'e', 's', '\030', '\010', ' ', '\003', '(', '\013', '2', '(', '.',
+'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v',
+'3', '.', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'N', 'a', 'm', 'e', 'R', '\024', 'r', 'e', 'm', 'o', 'v', 'e', 'd', 'R', 'e',
+'s', 'o', 'u', 'r', 'c', 'e', 'N', 'a', 'm', 'e', 's', '\022', '\024', '\n', '\005', 'n', 'o', 'n', 'c', 'e', '\030', '\005', ' ', '\001', '(',
+'\t', 'R', '\005', 'n', 'o', 'n', 'c', 'e', '\022', 'G', '\n', '\r', 'c', 'o', 'n', 't', 'r', 'o', 'l', '_', 'p', 'l', 'a', 'n', 'e',
+'\030', '\007', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r',
+'e', '.', 'v', '3', '.', 'C', 'o', 'n', 't', 'r', 'o', 'l', 'P', 'l', 'a', 'n', 'e', 'R', '\014', 'c', 'o', 'n', 't', 'r', 'o',
+'l', 'P', 'l', 'a', 'n', 'e', ':', '*', '\232', '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.',
+'v', '2', '.', 'D', 'e', 'l', 't', 'a', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e',
+'\"', '\222', '\006', '\n', '\033', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'C', 'o', 'n', 's',
+'t', 'r', 'a', 'i', 'n', 't', 's', '\022', 'j', '\n', '\n', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\030', '\001', ' ', '\001',
+'(', '\013', '2', 'H', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v',
+'e', 'r', 'y', '.', 'v', '3', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'C', 'o',
+'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '.', 'S', 'i', 'n', 'g', 'l', 'e', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n',
+'t', 'H', '\000', 'R', '\n', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\022', 'o', '\n', '\016', 'o', 'r', '_', 'c', 'o', 'n',
+'s', 't', 'r', 'a', 'i', 'n', 't', 's', '\030', '\002', ' ', '\001', '(', '\013', '2', 'F', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e',
+'r', 'v', 'i', 'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3', '.', 'D', 'y', 'n', 'a', 'm', 'i',
+'c', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '.', 'C', 'o', 'n',
+'s', 't', 'r', 'a', 'i', 'n', 't', 'L', 'i', 's', 't', 'H', '\000', 'R', '\r', 'o', 'r', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i',
+'n', 't', 's', '\022', 'q', '\n', '\017', 'a', 'n', 'd', '_', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '\030', '\003', ' ',
+'\001', '(', '\013', '2', 'F', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd', 'i', 's', 'c', 'o',
+'v', 'e', 'r', 'y', '.', 'v', '3', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'C',
+'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '.', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 'L', 'i', 's', 't',
+'H', '\000', 'R', '\016', 'a', 'n', 'd', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '\022', 'b', '\n', '\017', 'n', 'o', 't',
+'_', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '\030', '\004', ' ', '\001', '(', '\013', '2', '7', '.', 'e', 'n', 'v', 'o',
+'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3', '.', 'D', 'y',
+'n', 'a', 'm', 'i', 'c', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's',
+'H', '\000', 'R', '\016', 'n', 'o', 't', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', '\032', '\311', '\001', '\n', '\020', 'S', 'i',
+'n', 'g', 'l', 'e', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001',
+'(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '\026', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'H', '\000', 'R',
+'\005', 'v', 'a', 'l', 'u', 'e', '\022', 'i', '\n', '\006', 'e', 'x', 'i', 's', 't', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', 'O', '.',
+'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v',
+'3', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 'C', 'o', 'n', 's', 't', 'r', 'a',
+'i', 'n', 't', 's', '.', 'S', 'i', 'n', 'g', 'l', 'e', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '.', 'E', 'x', 'i',
+'s', 't', 's', 'H', '\000', 'R', '\006', 'e', 'x', 'i', 's', 't', 's', '\032', '\010', '\n', '\006', 'E', 'x', 'i', 's', 't', 's', 'B', '\026',
+'\n', '\017', 'c', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', '_', 't', 'y', 'p', 'e', '\022', '\003', '\370', 'B', '\001', '\032', 'k', '\n',
+'\016', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 'L', 'i', 's', 't', '\022', 'Y', '\n', '\013', 'c', 'o', 'n', 's', 't', 'r',
+'a', 'i', 'n', 't', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '7', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i',
+'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3', '.', 'D', 'y', 'n', 'a', 'm', 'i', 'c', 'P', 'a',
+'r', 'a', 'm', 'e', 't', 'e', 'r', 'C', 'o', 'n', 's', 't', 'r', 'a', 'i', 'n', 't', 's', 'R', '\013', 'c', 'o', 'n', 's', 't',
+'r', 'a', 'i', 'n', 't', 's', 'B', '\006', '\n', '\004', 't', 'y', 'p', 'e', '\"', '\250', '\003', '\n', '\010', 'R', 'e', 's', 'o', 'u', 'r',
+'c', 'e', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', 'M', '\n',
+'\r', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '_', 'n', 'a', 'm', 'e', '\030', '\010', ' ', '\001', '(', '\013', '2', '(', '.', 'e', 'n',
'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3', '.',
-'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'R', '\t', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\022', '\031', '\n', '\010', 't', 'y',
-'p', 'e', '_', 'u', 'r', 'l', '\030', '\004', ' ', '\001', '(', '\t', 'R', '\007', 't', 'y', 'p', 'e', 'U', 'r', 'l', '\022', '+', '\n', '\021',
-'r', 'e', 'm', 'o', 'v', 'e', 'd', '_', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\030', '\006', ' ', '\003', '(', '\t', 'R', '\020',
-'r', 'e', 'm', 'o', 'v', 'e', 'd', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '\022', '\024', '\n', '\005', 'n', 'o', 'n', 'c', 'e',
-'\030', '\005', ' ', '\001', '(', '\t', 'R', '\005', 'n', 'o', 'n', 'c', 'e', '\022', 'G', '\n', '\r', 'c', 'o', 'n', 't', 'r', 'o', 'l', '_',
-'p', 'l', 'a', 'n', 'e', '\030', '\007', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i',
-'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'C', 'o', 'n', 't', 'r', 'o', 'l', 'P', 'l', 'a', 'n', 'e', 'R', '\014', 'c',
-'o', 'n', 't', 'r', 'o', 'l', 'P', 'l', 'a', 'n', 'e', ':', '*', '\232', '\305', '\210', '\036', '%', '\n', '#', 'e', 'n', 'v', 'o', 'y',
-'.', 'a', 'p', 'i', '.', 'v', '2', '.', 'D', 'e', 'l', 't', 'a', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'R', 'e', 's',
-'p', 'o', 'n', 's', 'e', '\"', '\331', '\002', '\n', '\010', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', '\022', '\022', '\n', '\004', 'n', 'a', 'm',
-'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '\030', '\n', '\007', 'a', 'l', 'i', 'a', 's', 'e', 's', '\030',
-'\004', ' ', '\003', '(', '\t', 'R', '\007', 'a', 'l', 'i', 'a', 's', 'e', 's', '\022', '\030', '\n', '\007', 'v', 'e', 'r', 's', 'i', 'o', 'n',
-'\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\022', '0', '\n', '\010', 'r', 'e', 's', 'o', 'u', 'r',
-'c', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
-'f', '.', 'A', 'n', 'y', 'R', '\010', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '\022', '+', '\n', '\003', 't', 't', 'l', '\030', '\006', ' ',
-'\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r',
-'a', 't', 'i', 'o', 'n', 'R', '\003', 't', 't', 'l', '\022', 'V', '\n', '\r', 'c', 'a', 'c', 'h', 'e', '_', 'c', 'o', 'n', 't', 'r',
-'o', 'l', '\030', '\007', ' ', '\001', '(', '\013', '2', '1', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.',
-'d', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3', '.', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', '.', 'C', 'a', 'c',
-'h', 'e', 'C', 'o', 'n', 't', 'r', 'o', 'l', 'R', '\014', 'c', 'a', 'c', 'h', 'e', 'C', 'o', 'n', 't', 'r', 'o', 'l', '\032', '0',
-'\n', '\014', 'C', 'a', 'c', 'h', 'e', 'C', 'o', 'n', 't', 'r', 'o', 'l', '\022', ' ', '\n', '\014', 'd', 'o', '_', 'n', 'o', 't', '_',
-'c', 'a', 'c', 'h', 'e', '\030', '\001', ' ', '\001', '(', '\010', 'R', '\n', 'd', 'o', 'N', 'o', 't', 'C', 'a', 'c', 'h', 'e', ':', '\034',
-'\232', '\305', '\210', '\036', '\027', '\n', '\025', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'p', 'i', '.', 'v', '2', '.', 'R', 'e', 's', 'o', 'u',
-'r', 'c', 'e', 'B', '\223', '\001', '\n', '(', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v',
-'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3', 'B', '\016',
-'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'M', 'g', 'i', 't', 'h', 'u', 'b', '.',
-'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l',
-'-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 's', 'e', 'r', 'v', 'i', 'c', 'e', '/', 'd', 'i', 's', 'c',
-'o', 'v', 'e', 'r', 'y', '/', 'v', '3', ';', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'v', '3', '\272', '\200', '\310', '\321', '\006',
-'\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'N', 'a', 'm', 'e', 'R', '\014', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'N', 'a', 'm',
+'e', '\022', '\030', '\n', '\007', 'a', 'l', 'i', 'a', 's', 'e', 's', '\030', '\004', ' ', '\003', '(', '\t', 'R', '\007', 'a', 'l', 'i', 'a', 's',
+'e', 's', '\022', '\030', '\n', '\007', 'v', 'e', 'r', 's', 'i', 'o', 'n', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 'v', 'e', 'r', 's',
+'i', 'o', 'n', '\022', '0', '\n', '\010', 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\024', '.', 'g',
+'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\010', 'r', 'e', 's', 'o', 'u',
+'r', 'c', 'e', '\022', '+', '\n', '\003', 't', 't', 'l', '\030', '\006', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e',
+'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\003', 't', 't', 'l', '\022', 'V',
+'\n', '\r', 'c', 'a', 'c', 'h', 'e', '_', 'c', 'o', 'n', 't', 'r', 'o', 'l', '\030', '\007', ' ', '\001', '(', '\013', '2', '1', '.', 'e',
+'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3',
+'.', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', '.', 'C', 'a', 'c', 'h', 'e', 'C', 'o', 'n', 't', 'r', 'o', 'l', 'R', '\014', 'c',
+'a', 'c', 'h', 'e', 'C', 'o', 'n', 't', 'r', 'o', 'l', '\032', '0', '\n', '\014', 'C', 'a', 'c', 'h', 'e', 'C', 'o', 'n', 't', 'r',
+'o', 'l', '\022', ' ', '\n', '\014', 'd', 'o', '_', 'n', 'o', 't', '_', 'c', 'a', 'c', 'h', 'e', '\030', '\001', ' ', '\001', '(', '\010', 'R',
+'\n', 'd', 'o', 'N', 'o', 't', 'C', 'a', 'c', 'h', 'e', ':', '\034', '\232', '\305', '\210', '\036', '\027', '\n', '\025', 'e', 'n', 'v', 'o', 'y',
+'.', 'a', 'p', 'i', '.', 'v', '2', '.', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'B', '\223', '\001', '\n', '(', 'i', 'o', '.', 'e',
+'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'd',
+'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'v', '3', 'B', '\016', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'P', 'r', 'o',
+'t', 'o', 'P', '\001', 'Z', 'M', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o',
+'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y',
+'/', 's', 'e', 'r', 'v', 'i', 'c', 'e', '/', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', '/', 'v', '3', ';', 'd', 'i', 's',
+'c', 'o', 'v', 'e', 'r', 'y', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
-static _upb_DefPool_Init *deps[7] = {
+static _upb_DefPool_Init *deps[8] = {
&envoy_config_core_v3_base_proto_upbdefinit,
&google_protobuf_any_proto_upbdefinit,
&google_protobuf_duration_proto_upbdefinit,
&google_rpc_status_proto_upbdefinit,
&udpa_annotations_status_proto_upbdefinit,
&udpa_annotations_versioning_proto_upbdefinit,
+ &validate_validate_proto_upbdefinit,
NULL
};
@@ -124,5 +193,5 @@ _upb_DefPool_Init envoy_service_discovery_v3_discovery_proto_upbdefinit = {
deps,
&envoy_service_discovery_v3_discovery_proto_upb_file_layout,
"envoy/service/discovery/v3/discovery.proto",
- UPB_STRINGVIEW_INIT(descriptor, 2286)
+ UPB_STRINGVIEW_INIT(descriptor, 3974)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h
index 48612592ee..3f2f14139a 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h
@@ -21,6 +21,21 @@ extern "C" {
extern _upb_DefPool_Init envoy_service_discovery_v3_discovery_proto_upbdefinit;
+UPB_INLINE const upb_MessageDef *envoy_service_discovery_v3_ResourceLocator_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_service_discovery_v3_discovery_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.service.discovery.v3.ResourceLocator");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_service_discovery_v3_ResourceLocator_DynamicParametersEntry_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_service_discovery_v3_discovery_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.service.discovery.v3.ResourceLocator.DynamicParametersEntry");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_service_discovery_v3_ResourceName_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_service_discovery_v3_discovery_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.service.discovery.v3.ResourceName");
+}
+
UPB_INLINE const upb_MessageDef *envoy_service_discovery_v3_DiscoveryRequest_getmsgdef(upb_DefPool *s) {
_upb_DefPool_LoadDefInit(s, &envoy_service_discovery_v3_discovery_proto_upbdefinit);
return upb_DefPool_FindMessageByName(s, "envoy.service.discovery.v3.DiscoveryRequest");
@@ -46,6 +61,26 @@ UPB_INLINE const upb_MessageDef *envoy_service_discovery_v3_DeltaDiscoveryRespon
return upb_DefPool_FindMessageByName(s, "envoy.service.discovery.v3.DeltaDiscoveryResponse");
}
+UPB_INLINE const upb_MessageDef *envoy_service_discovery_v3_DynamicParameterConstraints_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_service_discovery_v3_discovery_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.service.discovery.v3.DynamicParameterConstraints");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_service_discovery_v3_discovery_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraint");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_service_discovery_v3_DynamicParameterConstraints_SingleConstraint_Exists_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_service_discovery_v3_discovery_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraint.Exists");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_service_discovery_v3_DynamicParameterConstraints_ConstraintList_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_service_discovery_v3_discovery_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.service.discovery.v3.DynamicParameterConstraints.ConstraintList");
+}
+
UPB_INLINE const upb_MessageDef *envoy_service_discovery_v3_Resource_getmsgdef(upb_DefPool *s) {
_upb_DefPool_LoadDefInit(s, &envoy_service_discovery_v3_discovery_proto_upbdefinit);
return upb_DefPool_FindMessageByName(s, "envoy.service.discovery.v3.Resource");
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c
index f66d83697d..96b6d43101 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c
@@ -10,7 +10,7 @@
#include "envoy/service/status/v3/csds.upbdefs.h"
#include "envoy/service/status/v3/csds.upb.h"
-extern _upb_DefPool_Init envoy_admin_v3_config_dump_proto_upbdefinit;
+extern _upb_DefPool_Init envoy_admin_v3_config_dump_shared_proto_upbdefinit;
extern _upb_DefPool_Init envoy_config_core_v3_base_proto_upbdefinit;
extern _upb_DefPool_Init envoy_type_matcher_v3_node_proto_upbdefinit;
extern _upb_DefPool_Init google_api_annotations_proto_upbdefinit;
@@ -19,121 +19,121 @@ extern _upb_DefPool_Init google_protobuf_timestamp_proto_upbdefinit;
extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
-static const char descriptor[2751] = {'\n', '\"', 'e', 'n', 'v', 'o', 'y', '/', 's', 'e', 'r', 'v', 'i', 'c', 'e', '/', 's', 't', 'a', 't', 'u', 's', '/', 'v', '3',
+static const char descriptor[2758] = {'\n', '\"', 'e', 'n', 'v', 'o', 'y', '/', 's', 'e', 'r', 'v', 'i', 'c', 'e', '/', 's', 't', 'a', 't', 'u', 's', '/', 'v', '3',
'/', 'c', 's', 'd', 's', '.', 'p', 'r', 'o', 't', 'o', '\022', '\027', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c',
-'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '\032', ' ', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'd', 'm', 'i', 'n', '/',
-'v', '3', '/', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'd', 'u', 'm', 'p', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'e', 'n', 'v',
-'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/', 'b', 'a', 's', 'e', '.', 'p', 'r',
-'o', 't', 'o', '\032', ' ', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v',
-'3', '/', 'n', 'o', 'd', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\034', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'a', 'p', 'i', '/',
-'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\031', 'g', 'o', 'o', 'g', 'l', 'e',
-'/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'a', 'n', 'y', '.', 'p', 'r', 'o', 't', 'o', '\032', '\037', 'g', 'o', 'o', 'g',
-'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 't', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', '.', 'p', 'r', 'o',
-'t', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'd', 'e', 'p',
-'r', 'e', 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o',
-'t', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p',
-'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.',
-'p', 'r', 'o', 't', 'o', '\"', '\302', '\001', '\n', '\023', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', 'R', 'e', 'q',
-'u', 'e', 's', 't', '\022', 'G', '\n', '\r', 'n', 'o', 'd', 'e', '_', 'm', 'a', 't', 'c', 'h', 'e', 'r', 's', '\030', '\001', ' ', '\003',
-'(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v',
-'3', '.', 'N', 'o', 'd', 'e', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\014', 'n', 'o', 'd', 'e', 'M', 'a', 't', 'c', 'h', 'e',
-'r', 's', '\022', '.', '\n', '\004', 'n', 'o', 'd', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032', '.', 'e', 'n', 'v', 'o', 'y', '.',
-'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'n', 'o', 'd', 'e',
-':', '2', '\232', '\305', '\210', '\036', '-', '\n', '+', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't',
-'a', 't', 'u', 's', '.', 'v', '2', '.', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', 'R', 'e', 'q', 'u', 'e',
-'s', 't', '\"', '\371', '\004', '\n', '\014', 'P', 'e', 'r', 'X', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '=', '\n', '\006', 's', 't',
-'a', 't', 'u', 's', '\030', '\001', ' ', '\001', '(', '\016', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c',
-'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 't', 'a', 't', 'u', 's', 'R',
-'\006', 's', 't', 'a', 't', 'u', 's', '\022', ']', '\n', '\r', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', 't', 'a', 't', 'u', 's', '\030',
-'\007', ' ', '\001', '(', '\016', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a',
-'t', 'u', 's', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 't', 'a', 't', 'u', 's',
-'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\014', 'c', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't',
-'u', 's', '\022', 'N', '\n', '\017', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\001',
-'(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'L', 'i', 's', 't', 'e',
-'n', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', 'H', '\000', 'R', '\016', 'l', 'i', 's', 't', 'e', 'n', 'e',
-'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'K', '\n', '\016', 'c', 'l', 'u', 's', 't', 'e', 'r', '_', 'c', 'o', 'n', 'f', 'i', 'g',
-'\030', '\003', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'C',
-'l', 'u', 's', 't', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', 'H', '\000', 'R', '\r', 'c', 'l', 'u', 's',
-'t', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'E', '\n', '\014', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g',
-'\030', '\004', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'R',
-'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', 'H', '\000', 'R', '\013', 'r', 'o', 'u', 't', 'e', 'C',
-'o', 'n', 'f', 'i', 'g', '\022', 'X', '\n', '\023', 's', 'c', 'o', 'p', 'e', 'd', '_', 'r', 'o', 'u', 't', 'e', '_', 'c', 'o', 'n',
-'f', 'i', 'g', '\030', '\005', ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v',
-'3', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', 'H',
-'\000', 'R', '\021', 's', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'N', '\n', '\017', 'e',
-'n', 'd', 'p', 'o', 'i', 'n', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\006', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n',
-'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'E', 'n', 'd', 'p', 'o', 'i', 'n', 't', 's', 'C', 'o', 'n',
-'f', 'i', 'g', 'D', 'u', 'm', 'p', 'H', '\000', 'R', '\016', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g',
-':', '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't',
-'a', 't', 'u', 's', '.', 'v', '2', '.', 'P', 'e', 'r', 'X', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\020', '\n', '\016', 'p',
-'e', 'r', '_', 'x', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\"', '\213', '\006', '\n', '\014', 'C', 'l', 'i', 'e', 'n', 't', 'C',
-'o', 'n', 'f', 'i', 'g', '\022', '.', '\n', '\004', 'n', 'o', 'd', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\032', '.', 'e', 'n', 'v',
-'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'N', 'o', 'd', 'e', 'R', '\004', 'n',
-'o', 'd', 'e', '\022', 'Q', '\n', '\n', 'x', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\002', ' ', '\003', '(', '\013', '2', '%',
-'.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.',
-'P', 'e', 'r', 'X', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0',
-'R', '\t', 'x', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'f', '\n', '\023', 'g', 'e', 'n', 'e', 'r', 'i', 'c', '_', 'x', 'd',
-'s', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '6', '.', 'e', 'n', 'v', 'o', 'y', '.', 's',
-'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'o',
-'n', 'f', 'i', 'g', '.', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'X', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\021', 'g', 'e',
-'n', 'e', 'r', 'i', 'c', 'X', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\032', '\342', '\003', '\n', '\020', 'G', 'e', 'n', 'e', 'r',
-'i', 'c', 'X', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\031', '\n', '\010', 't', 'y', 'p', 'e', '_', 'u', 'r', 'l', '\030', '\001',
-' ', '\001', '(', '\t', 'R', '\007', 't', 'y', 'p', 'e', 'U', 'r', 'l', '\022', '\022', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\002', ' ', '\001',
-'(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o', 'n', '_', 'i', 'n', 'f', 'o', '\030',
-'\003', ' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o', '\022', '3', '\n', '\n', 'x', 'd', 's',
-'_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r',
-'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\t', 'x', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '=', '\n', '\014',
-'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\005', ' ', '\001', '(', '\013', '2', '\032', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't', 'a', 'm', 'p', 'R', '\013', 'l', 'a',
-'s', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', '\022', 'J', '\n', '\r', 'c', 'o', 'n', 'f', 'i', 'g', '_', 's', 't', 'a', 't', 'u',
-'s', '\030', '\006', ' ', '\001', '(', '\016', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's',
-'t', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 't', 'a', 't', 'u', 's', 'R', '\014', 'c', 'o',
-'n', 'f', 'i', 'g', 'S', 't', 'a', 't', 'u', 's', '\022', 'I', '\n', '\r', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', 't', 'a', 't',
-'u', 's', '\030', '\007', ' ', '\001', '(', '\016', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3',
-'.', 'C', 'l', 'i', 'e', 'n', 't', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'S', 't', 'a', 't', 'u', 's', 'R', '\014', 'c', 'l',
-'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', '\022', 'C', '\n', '\013', 'e', 'r', 'r', 'o', 'r', '_', 's', 't', 'a', 't', 'e',
-'\030', '\010', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'U',
-'p', 'd', 'a', 't', 'e', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e', 'R', '\n', 'e', 'r', 'r', 'o', 'r', 'S',
-'t', 'a', 't', 'e', '\022', ',', '\n', '\022', 'i', 's', '_', 's', 't', 'a', 't', 'i', 'c', '_', 'r', 'e', 's', 'o', 'u', 'r', 'c',
-'e', '\030', '\t', ' ', '\001', '(', '\010', 'R', '\020', 'i', 's', 'S', 't', 'a', 't', 'i', 'c', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e',
-':', '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't',
-'a', 't', 'u', 's', '.', 'v', '2', '.', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\"', '\212', '\001', '\n', '\024',
-'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', '\022', '=', '\n', '\006', 'c',
-'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\003', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i',
-'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g',
-'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', ':', '3', '\232', '\305', '\210', '\036', '.', '\n', ',', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e',
-'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '2', '.', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a',
-'t', 'u', 's', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', '*', 'K', '\n', '\014', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 't', 'a', 't',
-'u', 's', '\022', '\013', '\n', '\007', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\000', '\022', '\n', '\n', '\006', 'S', 'Y', 'N', 'C', 'E', 'D',
-'\020', '\001', '\022', '\014', '\n', '\010', 'N', 'O', 'T', '_', 'S', 'E', 'N', 'T', '\020', '\002', '\022', '\t', '\n', '\005', 'S', 'T', 'A', 'L', 'E',
-'\020', '\003', '\022', '\t', '\n', '\005', 'E', 'R', 'R', 'O', 'R', '\020', '\004', '*', 'c', '\n', '\022', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'o',
-'n', 'f', 'i', 'g', 'S', 't', 'a', 't', 'u', 's', '\022', '\022', '\n', '\016', 'C', 'L', 'I', 'E', 'N', 'T', '_', 'U', 'N', 'K', 'N',
-'O', 'W', 'N', '\020', '\000', '\022', '\024', '\n', '\020', 'C', 'L', 'I', 'E', 'N', 'T', '_', 'R', 'E', 'Q', 'U', 'E', 'S', 'T', 'E', 'D',
-'\020', '\001', '\022', '\020', '\n', '\014', 'C', 'L', 'I', 'E', 'N', 'T', '_', 'A', 'C', 'K', 'E', 'D', '\020', '\002', '\022', '\021', '\n', '\r', 'C',
-'L', 'I', 'E', 'N', 'T', '_', 'N', 'A', 'C', 'K', 'E', 'D', '\020', '\003', '2', '\270', '\002', '\n', '\034', 'C', 'l', 'i', 'e', 'n', 't',
-'S', 't', 'a', 't', 'u', 's', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '\022', 'w', '\n',
-'\022', 'S', 't', 'r', 'e', 'a', 'm', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', '\022', ',', '.', 'e', 'n', 'v',
-'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C', 'l', 'i', 'e',
-'n', 't', 'S', 't', 'a', 't', 'u', 's', 'R', 'e', 'q', 'u', 'e', 's', 't', '\032', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 's',
-'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't',
-'a', 't', 'u', 's', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', '\"', '\000', '(', '\001', '0', '\001', '\022', '\236', '\001', '\n', '\021', 'F', 'e',
-'t', 'c', 'h', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', '\022', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 's',
-'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't',
-'a', 't', 'u', 's', 'R', 'e', 'q', 'u', 'e', 's', 't', '\032', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i',
-'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's',
-'R', 'e', 's', 'p', 'o', 'n', 's', 'e', '\"', ',', '\202', '\323', '\344', '\223', '\002', '\035', '\"', '\033', '/', 'v', '3', '/', 'd', 'i', 's',
-'c', 'o', 'v', 'e', 'r', 'y', ':', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', 't', 'a', 't', 'u', 's', '\202', '\323', '\344', '\223', '\002',
-'\003', ':', '\001', '*', 'B', '\210', '\001', '\n', '%', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n',
-'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', 'B', '\t', 'C', 's',
-'d', 's', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'G', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v',
-'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/',
-'e', 'n', 'v', 'o', 'y', '/', 's', 'e', 'r', 'v', 'i', 'c', 'e', '/', 's', 't', 'a', 't', 'u', 's', '/', 'v', '3', ';', 's',
-'t', 'a', 't', 'u', 's', 'v', '3', '\210', '\001', '\001', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o',
-'3',
+'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '\032', '\'', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'd', 'm', 'i', 'n', '/',
+'v', '3', '/', 'c', 'o', 'n', 'f', 'i', 'g', '_', 'd', 'u', 'm', 'p', '_', 's', 'h', 'a', 'r', 'e', 'd', '.', 'p', 'r', 'o',
+'t', 'o', '\032', '\037', 'e', 'n', 'v', 'o', 'y', '/', 'c', 'o', 'n', 'f', 'i', 'g', '/', 'c', 'o', 'r', 'e', '/', 'v', '3', '/',
+'b', 'a', 's', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', ' ', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'm', 'a',
+'t', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'n', 'o', 'd', 'e', '.', 'p', 'r', 'o', 't', 'o', '\032', '\034', 'g', 'o', 'o', 'g',
+'l', 'e', '/', 'a', 'p', 'i', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '.', 'p', 'r', 'o', 't', 'o', '\032',
+'\031', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'a', 'n', 'y', '.', 'p', 'r', 'o', 't',
+'o', '\032', '\037', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 't', 'i', 'm', 'e', 's', 't',
+'a', 'm', 'p', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i',
+'o', 'n', 's', '/', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd',
+'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o',
+'t', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', 'e', 'r', 's',
+'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\"', '\302', '\001', '\n', '\023', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't',
+'a', 't', 'u', 's', 'R', 'e', 'q', 'u', 'e', 's', 't', '\022', 'G', '\n', '\r', 'n', 'o', 'd', 'e', '_', 'm', 'a', 't', 'c', 'h',
+'e', 'r', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a',
+'t', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'N', 'o', 'd', 'e', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\014', 'n', 'o', 'd',
+'e', 'M', 'a', 't', 'c', 'h', 'e', 'r', 's', '\022', '.', '\n', '\004', 'n', 'o', 'd', 'e', '\030', '\002', ' ', '\001', '(', '\013', '2', '\032',
+'.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.', 'N', 'o', 'd',
+'e', 'R', '\004', 'n', 'o', 'd', 'e', ':', '2', '\232', '\305', '\210', '\036', '-', '\n', '+', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r',
+'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '2', '.', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't',
+'u', 's', 'R', 'e', 'q', 'u', 'e', 's', 't', '\"', '\371', '\004', '\n', '\014', 'P', 'e', 'r', 'X', 'd', 's', 'C', 'o', 'n', 'f', 'i',
+'g', '\022', '=', '\n', '\006', 's', 't', 'a', 't', 'u', 's', '\030', '\001', ' ', '\001', '(', '\016', '2', '%', '.', 'e', 'n', 'v', 'o', 'y',
+'.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g',
+'S', 't', 'a', 't', 'u', 's', 'R', '\006', 's', 't', 'a', 't', 'u', 's', '\022', ']', '\n', '\r', 'c', 'l', 'i', 'e', 'n', 't', '_',
+'s', 't', 'a', 't', 'u', 's', '\030', '\007', ' ', '\001', '(', '\016', '2', '+', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v',
+'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'o', 'n', 'f', 'i',
+'g', 'S', 't', 'a', 't', 'u', 's', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\014', 'c', 'l', 'i',
+'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', '\022', 'N', '\n', '\017', 'l', 'i', 's', 't', 'e', 'n', 'e', 'r', '_', 'c', 'o', 'n',
+'f', 'i', 'g', '\030', '\002', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v',
+'3', '.', 'L', 'i', 's', 't', 'e', 'n', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', 'H', '\000', 'R', '\016',
+'l', 'i', 's', 't', 'e', 'n', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'K', '\n', '\016', 'c', 'l', 'u', 's', 't', 'e', 'r',
+'_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\003', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm',
+'i', 'n', '.', 'v', '3', '.', 'C', 'l', 'u', 's', 't', 'e', 'r', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', 'H',
+'\000', 'R', '\r', 'c', 'l', 'u', 's', 't', 'e', 'r', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'E', '\n', '\014', 'r', 'o', 'u', 't', 'e',
+'_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', ' ', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm',
+'i', 'n', '.', 'v', '3', '.', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', 'H', '\000', 'R',
+'\013', 'r', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'X', '\n', '\023', 's', 'c', 'o', 'p', 'e', 'd', '_', 'r', 'o',
+'u', 't', 'e', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\005', ' ', '\001', '(', '\013', '2', '&', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'S', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 's', 'C', 'o', 'n', 'f',
+'i', 'g', 'D', 'u', 'm', 'p', 'H', '\000', 'R', '\021', 's', 'c', 'o', 'p', 'e', 'd', 'R', 'o', 'u', 't', 'e', 'C', 'o', 'n', 'f',
+'i', 'g', '\022', 'N', '\n', '\017', 'e', 'n', 'd', 'p', 'o', 'i', 'n', 't', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\006', ' ', '\001',
+'(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm', 'i', 'n', '.', 'v', '3', '.', 'E', 'n', 'd', 'p', 'o',
+'i', 'n', 't', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'D', 'u', 'm', 'p', 'H', '\000', 'R', '\016', 'e', 'n', 'd', 'p', 'o', 'i', 'n',
+'t', 'C', 'o', 'n', 'f', 'i', 'g', ':', '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r',
+'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '2', '.', 'P', 'e', 'r', 'X', 'd', 's', 'C', 'o', 'n', 'f',
+'i', 'g', 'B', '\020', '\n', '\016', 'p', 'e', 'r', '_', 'x', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\"', '\213', '\006', '\n', '\014',
+'C', 'l', 'i', 'e', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '.', '\n', '\004', 'n', 'o', 'd', 'e', '\030', '\001', ' ', '\001', '(',
+'\013', '2', '\032', '.', 'e', 'n', 'v', 'o', 'y', '.', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', 'r', 'e', '.', 'v', '3', '.',
+'N', 'o', 'd', 'e', 'R', '\004', 'n', 'o', 'd', 'e', '\022', 'Q', '\n', '\n', 'x', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030',
+'\002', ' ', '\003', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a',
+'t', 'u', 's', '.', 'v', '3', '.', 'P', 'e', 'r', 'X', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', 'B', '\013', '\030', '\001', '\222', '\307',
+'\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\t', 'x', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', 'f', '\n', '\023', 'g', 'e', 'n',
+'e', 'r', 'i', 'c', '_', 'x', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', 's', '\030', '\003', ' ', '\003', '(', '\013', '2', '6', '.',
+'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C',
+'l', 'i', 'e', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', '.', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'X', 'd', 's', 'C', 'o', 'n',
+'f', 'i', 'g', 'R', '\021', 'g', 'e', 'n', 'e', 'r', 'i', 'c', 'X', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', 's', '\032', '\342', '\003',
+'\n', '\020', 'G', 'e', 'n', 'e', 'r', 'i', 'c', 'X', 'd', 's', 'C', 'o', 'n', 'f', 'i', 'g', '\022', '\031', '\n', '\010', 't', 'y', 'p',
+'e', '_', 'u', 'r', 'l', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\007', 't', 'y', 'p', 'e', 'U', 'r', 'l', '\022', '\022', '\n', '\004', 'n',
+'a', 'm', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', '!', '\n', '\014', 'v', 'e', 'r', 's', 'i', 'o',
+'n', '_', 'i', 'n', 'f', 'o', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\013', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'f', 'o',
+'\022', '3', '\n', '\n', 'x', 'd', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\004', ' ', '\001', '(', '\013', '2', '\024', '.', 'g', 'o',
+'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'A', 'n', 'y', 'R', '\t', 'x', 'd', 's', 'C', 'o', 'n',
+'f', 'i', 'g', '\022', '=', '\n', '\014', 'l', 'a', 's', 't', '_', 'u', 'p', 'd', 'a', 't', 'e', 'd', '\030', '\005', ' ', '\001', '(', '\013',
+'2', '\032', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'T', 'i', 'm', 'e', 's', 't',
+'a', 'm', 'p', 'R', '\013', 'l', 'a', 's', 't', 'U', 'p', 'd', 'a', 't', 'e', 'd', '\022', 'J', '\n', '\r', 'c', 'o', 'n', 'f', 'i',
+'g', '_', 's', 't', 'a', 't', 'u', 's', '\030', '\006', ' ', '\001', '(', '\016', '2', '%', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e',
+'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 't', 'a',
+'t', 'u', 's', 'R', '\014', 'c', 'o', 'n', 'f', 'i', 'g', 'S', 't', 'a', 't', 'u', 's', '\022', 'I', '\n', '\r', 'c', 'l', 'i', 'e',
+'n', 't', '_', 's', 't', 'a', 't', 'u', 's', '\030', '\007', ' ', '\001', '(', '\016', '2', '$', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a',
+'d', 'm', 'i', 'n', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 'S', 't', 'a',
+'t', 'u', 's', 'R', '\014', 'c', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', '\022', 'C', '\n', '\013', 'e', 'r', 'r', 'o',
+'r', '_', 's', 't', 'a', 't', 'e', '\030', '\010', ' ', '\001', '(', '\013', '2', '\"', '.', 'e', 'n', 'v', 'o', 'y', '.', 'a', 'd', 'm',
+'i', 'n', '.', 'v', '3', '.', 'U', 'p', 'd', 'a', 't', 'e', 'F', 'a', 'i', 'l', 'u', 'r', 'e', 'S', 't', 'a', 't', 'e', 'R',
+'\n', 'e', 'r', 'r', 'o', 'r', 'S', 't', 'a', 't', 'e', '\022', ',', '\n', '\022', 'i', 's', '_', 's', 't', 'a', 't', 'i', 'c', '_',
+'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', '\030', '\t', ' ', '\001', '(', '\010', 'R', '\020', 'i', 's', 'S', 't', 'a', 't', 'i', 'c', 'R',
+'e', 's', 'o', 'u', 'r', 'c', 'e', ':', '+', '\232', '\305', '\210', '\036', '&', '\n', '$', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r',
+'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '2', '.', 'C', 'l', 'i', 'e', 'n', 't', 'C', 'o', 'n', 'f',
+'i', 'g', '\"', '\212', '\001', '\n', '\024', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', 'R', 'e', 's', 'p', 'o', 'n',
+'s', 'e', '\022', '=', '\n', '\006', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\003', '(', '\013', '2', '%', '.', 'e', 'n', 'v', 'o',
+'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n',
+'t', 'C', 'o', 'n', 'f', 'i', 'g', 'R', '\006', 'c', 'o', 'n', 'f', 'i', 'g', ':', '3', '\232', '\305', '\210', '\036', '.', '\n', ',', 'e',
+'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '2', '.', 'C', 'l',
+'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', '*', 'K', '\n', '\014', 'C', 'o', 'n',
+'f', 'i', 'g', 'S', 't', 'a', 't', 'u', 's', '\022', '\013', '\n', '\007', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\000', '\022', '\n', '\n',
+'\006', 'S', 'Y', 'N', 'C', 'E', 'D', '\020', '\001', '\022', '\014', '\n', '\010', 'N', 'O', 'T', '_', 'S', 'E', 'N', 'T', '\020', '\002', '\022', '\t',
+'\n', '\005', 'S', 'T', 'A', 'L', 'E', '\020', '\003', '\022', '\t', '\n', '\005', 'E', 'R', 'R', 'O', 'R', '\020', '\004', '*', 'c', '\n', '\022', 'C',
+'l', 'i', 'e', 'n', 't', 'C', 'o', 'n', 'f', 'i', 'g', 'S', 't', 'a', 't', 'u', 's', '\022', '\022', '\n', '\016', 'C', 'L', 'I', 'E',
+'N', 'T', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\000', '\022', '\024', '\n', '\020', 'C', 'L', 'I', 'E', 'N', 'T', '_', 'R', 'E',
+'Q', 'U', 'E', 'S', 'T', 'E', 'D', '\020', '\001', '\022', '\020', '\n', '\014', 'C', 'L', 'I', 'E', 'N', 'T', '_', 'A', 'C', 'K', 'E', 'D',
+'\020', '\002', '\022', '\021', '\n', '\r', 'C', 'L', 'I', 'E', 'N', 'T', '_', 'N', 'A', 'C', 'K', 'E', 'D', '\020', '\003', '2', '\270', '\002', '\n',
+'\034', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', 'D', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', 'S', 'e', 'r',
+'v', 'i', 'c', 'e', '\022', 'w', '\n', '\022', 'S', 't', 'r', 'e', 'a', 'm', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u',
+'s', '\022', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.',
+'v', '3', '.', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', 'R', 'e', 'q', 'u', 'e', 's', 't', '\032', '-', '.',
+'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C',
+'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', '\"', '\000', '(', '\001', '0', '\001',
+'\022', '\236', '\001', '\n', '\021', 'F', 'e', 't', 'c', 'h', 'C', 'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', '\022', ',', '.',
+'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C',
+'l', 'i', 'e', 'n', 't', 'S', 't', 'a', 't', 'u', 's', 'R', 'e', 'q', 'u', 'e', 's', 't', '\032', '-', '.', 'e', 'n', 'v', 'o',
+'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's', '.', 'v', '3', '.', 'C', 'l', 'i', 'e', 'n',
+'t', 'S', 't', 'a', 't', 'u', 's', 'R', 'e', 's', 'p', 'o', 'n', 's', 'e', '\"', ',', '\202', '\323', '\344', '\223', '\002', '\035', '\"', '\033',
+'/', 'v', '3', '/', 'd', 'i', 's', 'c', 'o', 'v', 'e', 'r', 'y', ':', 'c', 'l', 'i', 'e', 'n', 't', '_', 's', 't', 'a', 't',
+'u', 's', '\202', '\323', '\344', '\223', '\002', '\003', ':', '\001', '*', 'B', '\210', '\001', '\n', '%', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p',
+'r', 'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 's', 't', 'a', 't', 'u', 's',
+'.', 'v', '3', 'B', '\t', 'C', 's', 'd', 's', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'G', 'g', 'i', 't', 'h', 'u', 'b', '.',
+'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l',
+'-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 's', 'e', 'r', 'v', 'i', 'c', 'e', '/', 's', 't', 'a', 't',
+'u', 's', '/', 'v', '3', ';', 's', 't', 'a', 't', 'u', 's', 'v', '3', '\210', '\001', '\001', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002',
+'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
};
static _upb_DefPool_Init *deps[10] = {
- &envoy_admin_v3_config_dump_proto_upbdefinit,
+ &envoy_admin_v3_config_dump_shared_proto_upbdefinit,
&envoy_config_core_v3_base_proto_upbdefinit,
&envoy_type_matcher_v3_node_proto_upbdefinit,
&google_api_annotations_proto_upbdefinit,
@@ -149,5 +149,5 @@ _upb_DefPool_Init envoy_service_status_v3_csds_proto_upbdefinit = {
deps,
&envoy_service_status_v3_csds_proto_upb_file_layout,
"envoy/service/status/v3/csds.proto",
- UPB_STRINGVIEW_INIT(descriptor, 2751)
+ UPB_STRINGVIEW_INIT(descriptor, 2758)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c
index 997ed6f076..b5d35be2f6 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c
@@ -15,7 +15,7 @@ extern _upb_DefPool_Init envoy_annotations_deprecation_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
extern _upb_DefPool_Init udpa_annotations_versioning_proto_upbdefinit;
extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
-static const char descriptor[895] = {'\n', '!', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'r',
+static const char descriptor[901] = {'\n', '!', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', '/', 'r',
'e', 'g', 'e', 'x', '.', 'p', 'r', 'o', 't', 'o', '\022', '\025', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a',
't', 'c', 'h', 'e', 'r', '.', 'v', '3', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
'/', 'w', 'r', 'a', 'p', 'p', 'e', 'r', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '#', 'e', 'n', 'v', 'o', 'y', '/', 'a', 'n',
@@ -23,34 +23,35 @@ static const char descriptor[895] = {'\n', '!', 'e', 'n', 'v', 'o', 'y', '/', 't
't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 's', 't', 'a', 't',
'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '!', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n',
's', '/', 'v', 'e', 'r', 's', 'i', 'o', 'n', 'i', 'n', 'g', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd',
-'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\330', '\002', '\n', '\014', 'R', 'e',
-'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'X', '\n', '\n', 'g', 'o', 'o', 'g', 'l', 'e', '_', 'r', 'e', '2', '\030',
+'a', 't', 'e', '/', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\336', '\002', '\n', '\014', 'R', 'e',
+'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'e', 'r', '\022', 'c', '\n', '\n', 'g', 'o', 'o', 'g', 'l', 'e', '_', 'r', 'e', '2', '\030',
'\001', ' ', '\001', '(', '\013', '2', '-', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e',
'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'R',
-'E', '2', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'H', '\000', 'R', '\t', 'g', 'o', 'o', 'g', 'l', 'e', 'R', 'e', '2',
-'\022', '\035', '\n', '\005', 'r', 'e', 'g', 'e', 'x', '\030', '\002', ' ', '\001', '(', '\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R',
-'\005', 'r', 'e', 'g', 'e', 'x', '\032', '\222', '\001', '\n', '\t', 'G', 'o', 'o', 'g', 'l', 'e', 'R', 'E', '2', '\022', 'S', '\n', '\020', 'm',
-'a', 'x', '_', 'p', 'r', 'o', 'g', 'r', 'a', 'm', '_', 's', 'i', 'z', 'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g',
-'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u',
-'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'R', '\016', 'm', 'a', 'x', 'P', 'r', 'o', 'g', 'r', 'a',
-'m', 'S', 'i', 'z', 'e', ':', '0', '\232', '\305', '\210', '\036', '+', '\n', ')', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.',
-'m', 'a', 't', 'c', 'h', 'e', 'r', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'e', 'r', '.', 'G', 'o', 'o', 'g',
-'l', 'e', 'R', 'E', '2', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.',
-'m', 'a', 't', 'c', 'h', 'e', 'r', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\022', '\n', '\013', 'e',
-'n', 'g', 'i', 'n', 'e', '_', 't', 'y', 'p', 'e', '\022', '\003', '\370', 'B', '\001', '\"', '\271', '\001', '\n', '\027', 'R', 'e', 'g', 'e', 'x',
-'M', 'a', 't', 'c', 'h', 'A', 'n', 'd', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'e', '\022', 'G', '\n', '\007', 'p', 'a', 't',
-'t', 'e', 'r', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm',
-'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'B', '\010', '\372',
-'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\007', 'p', 'a', 't', 't', 'e', 'r', 'n', '\022', '\"', '\n', '\014', 's', 'u', 'b', 's', 't',
-'i', 't', 'u', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\014', 's', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'i',
-'o', 'n', ':', '1', '\232', '\305', '\210', '\036', ',', '\n', '*', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't',
-'c', 'h', 'e', 'r', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'A', 'n', 'd', 'S', 'u', 'b', 's', 't', 'i', 't',
-'u', 't', 'e', 'B', '\203', '\001', '\n', '#', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '.', 'e', 'n', 'v',
-'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', 'B', '\n', 'R', 'e', 'g', 'e', 'x',
-'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'F', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y',
-'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n',
-'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3', ';', 'm', 'a', 't', 'c', 'h',
-'e', 'r', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+'E', '2', 'B', '\023', '\030', '\001', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0', 'H', '\000',
+'R', '\t', 'g', 'o', 'o', 'g', 'l', 'e', 'R', 'e', '2', '\022', '\035', '\n', '\005', 'r', 'e', 'g', 'e', 'x', '\030', '\002', ' ', '\001', '(',
+'\t', 'B', '\007', '\372', 'B', '\004', 'r', '\002', '\020', '\001', 'R', '\005', 'r', 'e', 'g', 'e', 'x', '\032', '\222', '\001', '\n', '\t', 'G', 'o', 'o',
+'g', 'l', 'e', 'R', 'E', '2', '\022', 'S', '\n', '\020', 'm', 'a', 'x', '_', 'p', 'r', 'o', 'g', 'r', 'a', 'm', '_', 's', 'i', 'z',
+'e', '\030', '\001', ' ', '\001', '(', '\013', '2', '\034', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
+'.', 'U', 'I', 'n', 't', '3', '2', 'V', 'a', 'l', 'u', 'e', 'B', '\013', '\030', '\001', '\222', '\307', '\206', '\330', '\004', '\003', '3', '.', '0',
+'R', '\016', 'm', 'a', 'x', 'P', 'r', 'o', 'g', 'r', 'a', 'm', 'S', 'i', 'z', 'e', ':', '0', '\232', '\305', '\210', '\036', '+', '\n', ')',
+'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'R', 'e', 'g', 'e', 'x', 'M',
+'a', 't', 'c', 'h', 'e', 'r', '.', 'G', 'o', 'o', 'g', 'l', 'e', 'R', 'E', '2', ':', '&', '\232', '\305', '\210', '\036', '!', '\n', '\037',
+'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'R', 'e', 'g', 'e', 'x', 'M',
+'a', 't', 'c', 'h', 'e', 'r', 'B', '\r', '\n', '\013', 'e', 'n', 'g', 'i', 'n', 'e', '_', 't', 'y', 'p', 'e', '\"', '\271', '\001', '\n',
+'\027', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'A', 'n', 'd', 'S', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'e', '\022',
+'G', '\n', '\007', 'p', 'a', 't', 't', 'e', 'r', 'n', '\030', '\001', ' ', '\001', '(', '\013', '2', '#', '.', 'e', 'n', 'v', 'o', 'y', '.',
+'t', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c',
+'h', 'e', 'r', 'B', '\010', '\372', 'B', '\005', '\212', '\001', '\002', '\020', '\001', 'R', '\007', 'p', 'a', 't', 't', 'e', 'r', 'n', '\022', '\"', '\n',
+'\014', 's', 'u', 'b', 's', 't', 'i', 't', 'u', 't', 'i', 'o', 'n', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\014', 's', 'u', 'b', 's',
+'t', 'i', 't', 'u', 't', 'i', 'o', 'n', ':', '1', '\232', '\305', '\210', '\036', ',', '\n', '*', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y',
+'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'R', 'e', 'g', 'e', 'x', 'M', 'a', 't', 'c', 'h', 'A', 'n', 'd', 'S',
+'u', 'b', 's', 't', 'i', 't', 'u', 't', 'e', 'B', '\203', '\001', '\n', '#', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o',
+'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'm', 'a', 't', 'c', 'h', 'e', 'r', '.', 'v', '3', 'B',
+'\n', 'R', 'e', 'g', 'e', 'x', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', 'F', 'g', 'i', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm',
+'/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r', 'o', 'l', '-', 'p', 'l',
+'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'm', 'a', 't', 'c', 'h', 'e', 'r', '/', 'v', '3',
+';', 'm', 'a', 't', 'c', 'h', 'e', 'r', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', 'b', '\006', 'p', 'r', 'o', 't', 'o',
+'3',
};
static _upb_DefPool_Init *deps[6] = {
@@ -66,5 +67,5 @@ _upb_DefPool_Init envoy_type_matcher_v3_regex_proto_upbdefinit = {
deps,
&envoy_type_matcher_v3_regex_proto_upb_file_layout,
"envoy/type/matcher/v3/regex.proto",
- UPB_STRINGVIEW_INIT(descriptor, 895)
+ UPB_STRINGVIEW_INIT(descriptor, 901)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c
new file mode 100644
index 0000000000..c8000e76c2
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c
@@ -0,0 +1,69 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/type/v3/ratelimit_strategy.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#include "upb/def.h"
+#include "envoy/type/v3/ratelimit_strategy.upbdefs.h"
+#include "envoy/type/v3/ratelimit_strategy.upb.h"
+
+extern _upb_DefPool_Init envoy_type_v3_ratelimit_unit_proto_upbdefinit;
+extern _upb_DefPool_Init envoy_type_v3_token_bucket_proto_upbdefinit;
+extern _upb_DefPool_Init xds_annotations_v3_status_proto_upbdefinit;
+extern _upb_DefPool_Init udpa_annotations_status_proto_upbdefinit;
+extern _upb_DefPool_Init validate_validate_proto_upbdefinit;
+static const char descriptor[853] = {'\n', '&', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'v', '3', '/', 'r', 'a', 't', 'e', 'l', 'i', 'm', 'i', 't',
+'_', 's', 't', 'r', 'a', 't', 'e', 'g', 'y', '.', 'p', 'r', 'o', 't', 'o', '\022', '\r', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y',
+'p', 'e', '.', 'v', '3', '\032', '\"', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'v', '3', '/', 'r', 'a', 't', 'e',
+'l', 'i', 'm', 'i', 't', '_', 'u', 'n', 'i', 't', '.', 'p', 'r', 'o', 't', 'o', '\032', ' ', 'e', 'n', 'v', 'o', 'y', '/', 't',
+'y', 'p', 'e', '/', 'v', '3', '/', 't', 'o', 'k', 'e', 'n', '_', 'b', 'u', 'c', 'k', 'e', 't', '.', 'p', 'r', 'o', 't', 'o',
+'\032', '\037', 'x', 'd', 's', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 's', '/', 'v', '3', '/', 's', 't', 'a', 't',
+'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\035', 'u', 'd', 'p', 'a', '/', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n',
+'s', '/', 's', 't', 'a', 't', 'u', 's', '.', 'p', 'r', 'o', 't', 'o', '\032', '\027', 'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '/',
+'v', 'a', 'l', 'i', 'd', 'a', 't', 'e', '.', 'p', 'r', 'o', 't', 'o', '\"', '\355', '\003', '\n', '\021', 'R', 'a', 't', 'e', 'L', 'i',
+'m', 'i', 't', 'S', 't', 'r', 'a', 't', 'e', 'g', 'y', '\022', '[', '\n', '\014', 'b', 'l', 'a', 'n', 'k', 'e', 't', '_', 'r', 'u',
+'l', 'e', '\030', '\001', ' ', '\001', '(', '\016', '2', ',', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.',
+'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 'S', 't', 'r', 'a', 't', 'e', 'g', 'y', '.', 'B', 'l', 'a', 'n', 'k', 'e', 't',
+'R', 'u', 'l', 'e', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'H', '\000', 'R', '\013', 'b', 'l', 'a', 'n', 'k', 'e', 't',
+'R', 'u', 'l', 'e', '\022', 'k', '\n', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', 's', '_', 'p', 'e', 'r', '_', 't', 'i', 'm', 'e',
+'_', 'u', 'n', 'i', 't', '\030', '\002', ' ', '\001', '(', '\013', '2', '4', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.',
+'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't', 'S', 't', 'r', 'a', 't', 'e', 'g', 'y', '.', 'R', 'e', 'q', 'u',
+'e', 's', 't', 's', 'P', 'e', 'r', 'T', 'i', 'm', 'e', 'U', 'n', 'i', 't', 'H', '\000', 'R', '\023', 'r', 'e', 'q', 'u', 'e', 's',
+'t', 's', 'P', 'e', 'r', 'T', 'i', 'm', 'e', 'U', 'n', 'i', 't', '\022', '?', '\n', '\014', 't', 'o', 'k', 'e', 'n', '_', 'b', 'u',
+'c', 'k', 'e', 't', '\030', '\003', ' ', '\001', '(', '\013', '2', '\032', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v',
+'3', '.', 'T', 'o', 'k', 'e', 'n', 'B', 'u', 'c', 'k', 'e', 't', 'H', '\000', 'R', '\013', 't', 'o', 'k', 'e', 'n', 'B', 'u', 'c',
+'k', 'e', 't', '\032', '\217', '\001', '\n', '\023', 'R', 'e', 'q', 'u', 'e', 's', 't', 's', 'P', 'e', 'r', 'T', 'i', 'm', 'e', 'U', 'n',
+'i', 't', '\022', '3', '\n', '\026', 'r', 'e', 'q', 'u', 'e', 's', 't', 's', '_', 'p', 'e', 'r', '_', 't', 'i', 'm', 'e', '_', 'u',
+'n', 'i', 't', '\030', '\001', ' ', '\001', '(', '\004', 'R', '\023', 'r', 'e', 'q', 'u', 'e', 's', 't', 's', 'P', 'e', 'r', 'T', 'i', 'm',
+'e', 'U', 'n', 'i', 't', '\022', 'C', '\n', '\t', 't', 'i', 'm', 'e', '_', 'u', 'n', 'i', 't', '\030', '\002', ' ', '\001', '(', '\016', '2',
+'\034', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', '.', 'R', 'a', 't', 'e', 'L', 'i', 'm', 'i', 't',
+'U', 'n', 'i', 't', 'B', '\010', '\372', 'B', '\005', '\202', '\001', '\002', '\020', '\001', 'R', '\010', 't', 'i', 'm', 'e', 'U', 'n', 'i', 't', '\"',
+'*', '\n', '\013', 'B', 'l', 'a', 'n', 'k', 'e', 't', 'R', 'u', 'l', 'e', '\022', '\r', '\n', '\t', 'A', 'L', 'L', 'O', 'W', '_', 'A',
+'L', 'L', '\020', '\000', '\022', '\014', '\n', '\010', 'D', 'E', 'N', 'Y', '_', 'A', 'L', 'L', '\020', '\001', 'B', '\017', '\n', '\010', 's', 't', 'r',
+'a', 't', 'e', 'g', 'y', '\022', '\003', '\370', 'B', '\001', 'B', '\204', '\001', '\n', '\033', 'i', 'o', '.', 'e', 'n', 'v', 'o', 'y', 'p', 'r',
+'o', 'x', 'y', '.', 'e', 'n', 'v', 'o', 'y', '.', 't', 'y', 'p', 'e', '.', 'v', '3', 'B', '\026', 'R', 'a', 't', 'e', 'l', 'i',
+'m', 'i', 't', 'S', 't', 'r', 'a', 't', 'e', 'g', 'y', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', ';', 'g', 'i', 't', 'h', 'u',
+'b', '.', 'c', 'o', 'm', '/', 'e', 'n', 'v', 'o', 'y', 'p', 'r', 'o', 'x', 'y', '/', 'g', 'o', '-', 'c', 'o', 'n', 't', 'r',
+'o', 'l', '-', 'p', 'l', 'a', 'n', 'e', '/', 'e', 'n', 'v', 'o', 'y', '/', 't', 'y', 'p', 'e', '/', 'v', '3', ';', 't', 'y',
+'p', 'e', 'v', '3', '\272', '\200', '\310', '\321', '\006', '\002', '\020', '\002', '\322', '\306', '\244', '\341', '\006', '\002', '\010', '\001', 'b', '\006', 'p', 'r', 'o',
+'t', 'o', '3',
+};
+
+static _upb_DefPool_Init *deps[6] = {
+ &envoy_type_v3_ratelimit_unit_proto_upbdefinit,
+ &envoy_type_v3_token_bucket_proto_upbdefinit,
+ &xds_annotations_v3_status_proto_upbdefinit,
+ &udpa_annotations_status_proto_upbdefinit,
+ &validate_validate_proto_upbdefinit,
+ NULL
+};
+
+_upb_DefPool_Init envoy_type_v3_ratelimit_strategy_proto_upbdefinit = {
+ deps,
+ &envoy_type_v3_ratelimit_strategy_proto_upb_file_layout,
+ "envoy/type/v3/ratelimit_strategy.proto",
+ UPB_STRINGVIEW_INIT(descriptor, 853)
+};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h
new file mode 100644
index 0000000000..0ba06e8b30
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h
@@ -0,0 +1,40 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * envoy/type/v3/ratelimit_strategy.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#ifndef ENVOY_TYPE_V3_RATELIMIT_STRATEGY_PROTO_UPBDEFS_H_
+#define ENVOY_TYPE_V3_RATELIMIT_STRATEGY_PROTO_UPBDEFS_H_
+
+#include "upb/def.h"
+#include "upb/port_def.inc"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "upb/def.h"
+
+#include "upb/port_def.inc"
+
+extern _upb_DefPool_Init envoy_type_v3_ratelimit_strategy_proto_upbdefinit;
+
+UPB_INLINE const upb_MessageDef *envoy_type_v3_RateLimitStrategy_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_type_v3_ratelimit_strategy_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.type.v3.RateLimitStrategy");
+}
+
+UPB_INLINE const upb_MessageDef *envoy_type_v3_RateLimitStrategy_RequestsPerTimeUnit_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &envoy_type_v3_ratelimit_strategy_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "envoy.type.v3.RateLimitStrategy.RequestsPerTimeUnit");
+}
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* ENVOY_TYPE_V3_RATELIMIT_STRATEGY_PROTO_UPBDEFS_H_ */
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c
index 4a9e1307ee..67e715936c 100644
--- a/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c
@@ -10,7 +10,7 @@
#include "google/protobuf/descriptor.upbdefs.h"
#include "google/protobuf/descriptor.upb.h"
-static const char descriptor[7619] = {'\n', ' ', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'd', 'e', 's', 'c', 'r', 'i', 'p',
+static const char descriptor[7667] = {'\n', ' ', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 'd', 'e', 's', 'c', 'r', 'i', 'p',
't', 'o', 'r', '.', 'p', 'r', 'o', 't', 'o', '\022', '\017', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u',
'f', '\"', 'M', '\n', '\021', 'F', 'i', 'l', 'e', 'D', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'S', 'e', 't', '\022', '8', '\n',
'\004', 'f', 'i', 'l', 'e', '\030', '\001', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't',
@@ -213,7 +213,7 @@ static const char descriptor[7619] = {'\n', ' ', 'g', 'o', 'o', 'g', 'l', 'e', '
'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e',
't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O',
'p', 't', 'i', 'o', 'n', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', 'J', '\004', '\010', '\004', '\020', '\005', 'J', '\004', '\010',
-'\005', '\020', '\006', 'J', '\004', '\010', '\006', '\020', '\007', 'J', '\004', '\010', '\010', '\020', '\t', 'J', '\004', '\010', '\t', '\020', '\n', '\"', '\342', '\003', '\n',
+'\005', '\020', '\006', 'J', '\004', '\010', '\006', '\020', '\007', 'J', '\004', '\010', '\010', '\020', '\t', 'J', '\004', '\010', '\t', '\020', '\n', '\"', '\222', '\004', '\n',
'\014', 'F', 'i', 'e', 'l', 'd', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'A', '\n', '\005', 'c', 't', 'y', 'p', 'e', '\030', '\001', ' ',
'\001', '(', '\016', '2', '#', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'F', 'i', 'e',
'l', 'd', 'O', 'p', 't', 'i', 'o', 'n', 's', '.', 'C', 'T', 'y', 'p', 'e', ':', '\006', 'S', 'T', 'R', 'I', 'N', 'G', 'R', '\005',
@@ -222,99 +222,101 @@ static const char descriptor[7619] = {'\n', ' ', 'g', 'o', 'o', 'g', 'l', 'e', '
'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'F', 'i', 'e', 'l', 'd', 'O', 'p', 't', 'i', 'o', 'n',
's', '.', 'J', 'S', 'T', 'y', 'p', 'e', ':', '\t', 'J', 'S', '_', 'N', 'O', 'R', 'M', 'A', 'L', 'R', '\006', 'j', 's', 't', 'y',
'p', 'e', '\022', '\031', '\n', '\004', 'l', 'a', 'z', 'y', '\030', '\005', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\004',
-'l', 'a', 'z', 'y', '\022', '%', '\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\010', ':',
-'\005', 'f', 'a', 'l', 's', 'e', 'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', '\031', '\n', '\004', 'w', 'e', 'a',
-'k', '\030', '\n', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\004', 'w', 'e', 'a', 'k', '\022', 'X', '\n', '\024', 'u',
+'l', 'a', 'z', 'y', '\022', '.', '\n', '\017', 'u', 'n', 'v', 'e', 'r', 'i', 'f', 'i', 'e', 'd', '_', 'l', 'a', 'z', 'y', '\030', '\017',
+' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\016', 'u', 'n', 'v', 'e', 'r', 'i', 'f', 'i', 'e', 'd', 'L', 'a',
+'z', 'y', '\022', '%', '\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\010', ':', '\005', 'f',
+'a', 'l', 's', 'e', 'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', '\031', '\n', '\004', 'w', 'e', 'a', 'k', '\030',
+'\n', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\004', 'w', 'e', 'a', 'k', '\022', 'X', '\n', '\024', 'u', 'n', 'i',
+'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2',
+'$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r',
+'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't',
+'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '\"', '/', '\n', '\005', 'C', 'T', 'y', 'p', 'e', '\022', '\n', '\n', '\006', 'S', 'T', 'R', 'I',
+'N', 'G', '\020', '\000', '\022', '\010', '\n', '\004', 'C', 'O', 'R', 'D', '\020', '\001', '\022', '\020', '\n', '\014', 'S', 'T', 'R', 'I', 'N', 'G', '_',
+'P', 'I', 'E', 'C', 'E', '\020', '\002', '\"', '5', '\n', '\006', 'J', 'S', 'T', 'y', 'p', 'e', '\022', '\r', '\n', '\t', 'J', 'S', '_', 'N',
+'O', 'R', 'M', 'A', 'L', '\020', '\000', '\022', '\r', '\n', '\t', 'J', 'S', '_', 'S', 'T', 'R', 'I', 'N', 'G', '\020', '\001', '\022', '\r', '\n',
+'\t', 'J', 'S', '_', 'N', 'U', 'M', 'B', 'E', 'R', '\020', '\002', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', 'J', '\004',
+'\010', '\004', '\020', '\005', '\"', 's', '\n', '\014', 'O', 'n', 'e', 'o', 'f', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'X', '\n', '\024', 'u',
'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(',
'\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't',
'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r',
-'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '\"', '/', '\n', '\005', 'C', 'T', 'y', 'p', 'e', '\022', '\n', '\n', '\006', 'S', 'T',
-'R', 'I', 'N', 'G', '\020', '\000', '\022', '\010', '\n', '\004', 'C', 'O', 'R', 'D', '\020', '\001', '\022', '\020', '\n', '\014', 'S', 'T', 'R', 'I', 'N',
-'G', '_', 'P', 'I', 'E', 'C', 'E', '\020', '\002', '\"', '5', '\n', '\006', 'J', 'S', 'T', 'y', 'p', 'e', '\022', '\r', '\n', '\t', 'J', 'S',
-'_', 'N', 'O', 'R', 'M', 'A', 'L', '\020', '\000', '\022', '\r', '\n', '\t', 'J', 'S', '_', 'S', 'T', 'R', 'I', 'N', 'G', '\020', '\001', '\022',
-'\r', '\n', '\t', 'J', 'S', '_', 'N', 'U', 'M', 'B', 'E', 'R', '\020', '\002', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002',
-'J', '\004', '\010', '\004', '\020', '\005', '\"', 's', '\n', '\014', 'O', 'n', 'e', 'o', 'f', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', 'X', '\n',
-'\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ',
-'\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i',
-'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r',
-'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', '\"', '\300',
-'\001', '\n', '\013', 'E', 'n', 'u', 'm', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '\037', '\n', '\013', 'a', 'l', 'l', 'o', 'w', '_', 'a',
-'l', 'i', 'a', 's', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', 'a', 'l', 'l', 'o', 'w', 'A', 'l', 'i', 'a', 's', '\022', '%', '\n',
-'\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R',
-'\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e',
-'t', 'e', 'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l',
-'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O',
-'p', 't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o',
-'n', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', 'J', '\004', '\010', '\005', '\020', '\006', '\"', '\236', '\001', '\n', '\020', 'E', 'n',
-'u', 'm', 'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '%', '\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a',
-'t', 'e', 'd', '\030', '\001', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a',
-'t', 'e', 'd', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', '_', 'o', 'p', 't', 'i',
-'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b',
-'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\023', 'u',
-'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '*', '\t', '\010', '\350', '\007', '\020', '\200',
-'\200', '\200', '\200', '\002', '\"', '\234', '\001', '\n', '\016', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '%',
-'\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '!', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e',
-'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r',
-'e', 't', 'e', 'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd',
-'O', 'p', 't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i',
-'o', 'n', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', '\"', '\340', '\002', '\n', '\r', 'M', 'e', 't', 'h', 'o', 'd', 'O',
-'p', 't', 'i', 'o', 'n', 's', '\022', '%', '\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '!', ' ', '\001', '(',
-'\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', 'q', '\n', '\021', 'i',
-'d', 'e', 'm', 'p', 'o', 't', 'e', 'n', 'c', 'y', '_', 'l', 'e', 'v', 'e', 'l', '\030', '\"', ' ', '\001', '(', '\016', '2', '/', '.',
-'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'M', 'e', 't', 'h', 'o', 'd', 'O', 'p', 't',
-'i', 'o', 'n', 's', '.', 'I', 'd', 'e', 'm', 'p', 'o', 't', 'e', 'n', 'c', 'y', 'L', 'e', 'v', 'e', 'l', ':', '\023', 'I', 'D',
-'E', 'M', 'P', 'O', 'T', 'E', 'N', 'C', 'Y', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', 'R', '\020', 'i', 'd', 'e', 'm', 'p', 'o',
-'t', 'e', 'n', 'c', 'y', 'L', 'e', 'v', 'e', 'l', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't',
+'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', '\"', '\300', '\001', '\n',
+'\013', 'E', 'n', 'u', 'm', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '\037', '\n', '\013', 'a', 'l', 'l', 'o', 'w', '_', 'a', 'l', 'i',
+'a', 's', '\030', '\002', ' ', '\001', '(', '\010', 'R', '\n', 'a', 'l', 'l', 'o', 'w', 'A', 'l', 'i', 'a', 's', '\022', '%', '\n', '\n', 'd',
+'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '\003', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\n', 'd',
+'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e',
+'d', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.',
+'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't',
+'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '*',
+'\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', 'J', '\004', '\010', '\005', '\020', '\006', '\"', '\236', '\001', '\n', '\020', 'E', 'n', 'u', 'm',
+'V', 'a', 'l', 'u', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '%', '\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e',
+'d', '\030', '\001', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e',
+'d', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', '_', 'o', 'p', 't', 'i', 'o', 'n',
+'\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f',
+'.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i',
+'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200',
+'\200', '\002', '\"', '\234', '\001', '\n', '\016', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'O', 'p', 't', 'i', 'o', 'n', 's', '\022', '%', '\n', '\n',
+'d', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '!', ' ', '\001', '(', '\010', ':', '\005', 'f', 'a', 'l', 's', 'e', 'R', '\n',
+'d', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't',
'e', 'd', '_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e',
'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p',
't', 'i', 'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n',
-'\"', 'P', '\n', '\020', 'I', 'd', 'e', 'm', 'p', 'o', 't', 'e', 'n', 'c', 'y', 'L', 'e', 'v', 'e', 'l', '\022', '\027', '\n', '\023', 'I',
-'D', 'E', 'M', 'P', 'O', 'T', 'E', 'N', 'C', 'Y', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\000', '\022', '\023', '\n', '\017', 'N',
-'O', '_', 'S', 'I', 'D', 'E', '_', 'E', 'F', 'F', 'E', 'C', 'T', 'S', '\020', '\001', '\022', '\016', '\n', '\n', 'I', 'D', 'E', 'M', 'P',
-'O', 'T', 'E', 'N', 'T', '\020', '\002', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', '\"', '\232', '\003', '\n', '\023', 'U', 'n',
-'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '\022', 'A', '\n', '\004', 'n', 'a', 'm', 'e',
-'\030', '\002', ' ', '\003', '(', '\013', '2', '-', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.',
-'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '.', 'N', 'a', 'm', 'e', 'P',
-'a', 'r', 't', 'R', '\004', 'n', 'a', 'm', 'e', '\022', ')', '\n', '\020', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', '_', 'v',
-'a', 'l', 'u', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\017', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', 'V', 'a', 'l',
-'u', 'e', '\022', ',', '\n', '\022', 'p', 'o', 's', 'i', 't', 'i', 'v', 'e', '_', 'i', 'n', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030',
-'\004', ' ', '\001', '(', '\004', 'R', '\020', 'p', 'o', 's', 'i', 't', 'i', 'v', 'e', 'I', 'n', 't', 'V', 'a', 'l', 'u', 'e', '\022', ',',
-'\n', '\022', 'n', 'e', 'g', 'a', 't', 'i', 'v', 'e', '_', 'i', 'n', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\005', ' ', '\001', '(',
-'\003', 'R', '\020', 'n', 'e', 'g', 'a', 't', 'i', 'v', 'e', 'I', 'n', 't', 'V', 'a', 'l', 'u', 'e', '\022', '!', '\n', '\014', 'd', 'o',
-'u', 'b', 'l', 'e', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\006', ' ', '\001', '(', '\001', 'R', '\013', 'd', 'o', 'u', 'b', 'l', 'e', 'V',
-'a', 'l', 'u', 'e', '\022', '!', '\n', '\014', 's', 't', 'r', 'i', 'n', 'g', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\007', ' ', '\001', '(',
-'\014', 'R', '\013', 's', 't', 'r', 'i', 'n', 'g', 'V', 'a', 'l', 'u', 'e', '\022', '\'', '\n', '\017', 'a', 'g', 'g', 'r', 'e', 'g', 'a',
-'t', 'e', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\010', ' ', '\001', '(', '\t', 'R', '\016', 'a', 'g', 'g', 'r', 'e', 'g', 'a', 't', 'e',
-'V', 'a', 'l', 'u', 'e', '\032', 'J', '\n', '\010', 'N', 'a', 'm', 'e', 'P', 'a', 'r', 't', '\022', '\033', '\n', '\t', 'n', 'a', 'm', 'e',
-'_', 'p', 'a', 'r', 't', '\030', '\001', ' ', '\002', '(', '\t', 'R', '\010', 'n', 'a', 'm', 'e', 'P', 'a', 'r', 't', '\022', '!', '\n', '\014',
-'i', 's', '_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\030', '\002', ' ', '\002', '(', '\010', 'R', '\013', 'i', 's', 'E', 'x', 't',
-'e', 'n', 's', 'i', 'o', 'n', '\"', '\247', '\002', '\n', '\016', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'o', 'd', 'e', 'I', 'n', 'f', 'o',
-'\022', 'D', '\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\003', '(', '\013', '2', '(', '.', 'g', 'o', 'o', 'g',
-'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'o', 'd', 'e', 'I', 'n', 'f',
-'o', '.', 'L', 'o', 'c', 'a', 't', 'i', 'o', 'n', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\032', '\316', '\001', '\n', '\010',
-'L', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\022', '\026', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\001', ' ', '\003', '(', '\005', 'B', '\002', '\020',
-'\001', 'R', '\004', 'p', 'a', 't', 'h', '\022', '\026', '\n', '\004', 's', 'p', 'a', 'n', '\030', '\002', ' ', '\003', '(', '\005', 'B', '\002', '\020', '\001',
-'R', '\004', 's', 'p', 'a', 'n', '\022', ')', '\n', '\020', 'l', 'e', 'a', 'd', 'i', 'n', 'g', '_', 'c', 'o', 'm', 'm', 'e', 'n', 't',
-'s', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\017', 'l', 'e', 'a', 'd', 'i', 'n', 'g', 'C', 'o', 'm', 'm', 'e', 'n', 't', 's', '\022',
-'+', '\n', '\021', 't', 'r', 'a', 'i', 'l', 'i', 'n', 'g', '_', 'c', 'o', 'm', 'm', 'e', 'n', 't', 's', '\030', '\004', ' ', '\001', '(',
-'\t', 'R', '\020', 't', 'r', 'a', 'i', 'l', 'i', 'n', 'g', 'C', 'o', 'm', 'm', 'e', 'n', 't', 's', '\022', ':', '\n', '\031', 'l', 'e',
-'a', 'd', 'i', 'n', 'g', '_', 'd', 'e', 't', 'a', 'c', 'h', 'e', 'd', '_', 'c', 'o', 'm', 'm', 'e', 'n', 't', 's', '\030', '\006',
-' ', '\003', '(', '\t', 'R', '\027', 'l', 'e', 'a', 'd', 'i', 'n', 'g', 'D', 'e', 't', 'a', 'c', 'h', 'e', 'd', 'C', 'o', 'm', 'm',
-'e', 'n', 't', 's', '\"', '\321', '\001', '\n', '\021', 'G', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', 'C', 'o', 'd', 'e', 'I', 'n', 'f',
-'o', '\022', 'M', '\n', '\n', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\003', '(', '\013', '2', '-', '.', 'g',
-'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'G', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', 'C',
-'o', 'd', 'e', 'I', 'n', 'f', 'o', '.', 'A', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 'R', '\n', 'a', 'n', 'n', 'o', 't',
-'a', 't', 'i', 'o', 'n', '\032', 'm', '\n', '\n', 'A', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', '\022', '\026', '\n', '\004', 'p', 'a',
-'t', 'h', '\030', '\001', ' ', '\003', '(', '\005', 'B', '\002', '\020', '\001', 'R', '\004', 'p', 'a', 't', 'h', '\022', '\037', '\n', '\013', 's', 'o', 'u',
-'r', 'c', 'e', '_', 'f', 'i', 'l', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 's', 'o', 'u', 'r', 'c', 'e', 'F', 'i', 'l',
-'e', '\022', '\024', '\n', '\005', 'b', 'e', 'g', 'i', 'n', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\005', 'b', 'e', 'g', 'i', 'n', '\022', '\020',
-'\n', '\003', 'e', 'n', 'd', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\003', 'e', 'n', 'd', 'B', '~', '\n', '\023', 'c', 'o', 'm', '.', 'g',
-'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', 'B', '\020', 'D', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o',
-'r', 'P', 'r', 'o', 't', 'o', 's', 'H', '\001', 'Z', '-', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'g', 'o', 'l', 'a', 'n', 'g', '.',
-'o', 'r', 'g', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 't', 'y', 'p', 'e', 's', '/', 'd', 'e', 's', 'c', 'r', 'i',
-'p', 't', 'o', 'r', 'p', 'b', '\370', '\001', '\001', '\242', '\002', '\003', 'G', 'P', 'B', '\252', '\002', '\032', 'G', 'o', 'o', 'g', 'l', 'e', '.',
-'P', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'R', 'e', 'f', 'l', 'e', 'c', 't', 'i', 'o', 'n',
+'*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', '\"', '\340', '\002', '\n', '\r', 'M', 'e', 't', 'h', 'o', 'd', 'O', 'p', 't',
+'i', 'o', 'n', 's', '\022', '%', '\n', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\030', '!', ' ', '\001', '(', '\010', ':',
+'\005', 'f', 'a', 'l', 's', 'e', 'R', '\n', 'd', 'e', 'p', 'r', 'e', 'c', 'a', 't', 'e', 'd', '\022', 'q', '\n', '\021', 'i', 'd', 'e',
+'m', 'p', 'o', 't', 'e', 'n', 'c', 'y', '_', 'l', 'e', 'v', 'e', 'l', '\030', '\"', ' ', '\001', '(', '\016', '2', '/', '.', 'g', 'o',
+'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'M', 'e', 't', 'h', 'o', 'd', 'O', 'p', 't', 'i', 'o',
+'n', 's', '.', 'I', 'd', 'e', 'm', 'p', 'o', 't', 'e', 'n', 'c', 'y', 'L', 'e', 'v', 'e', 'l', ':', '\023', 'I', 'D', 'E', 'M',
+'P', 'O', 'T', 'E', 'N', 'C', 'Y', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', 'R', '\020', 'i', 'd', 'e', 'm', 'p', 'o', 't', 'e',
+'n', 'c', 'y', 'L', 'e', 'v', 'e', 'l', '\022', 'X', '\n', '\024', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd',
+'_', 'o', 'p', 't', 'i', 'o', 'n', '\030', '\347', '\007', ' ', '\003', '(', '\013', '2', '$', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p',
+'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i',
+'o', 'n', 'R', '\023', 'u', 'n', 'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '\"', 'P',
+'\n', '\020', 'I', 'd', 'e', 'm', 'p', 'o', 't', 'e', 'n', 'c', 'y', 'L', 'e', 'v', 'e', 'l', '\022', '\027', '\n', '\023', 'I', 'D', 'E',
+'M', 'P', 'O', 'T', 'E', 'N', 'C', 'Y', '_', 'U', 'N', 'K', 'N', 'O', 'W', 'N', '\020', '\000', '\022', '\023', '\n', '\017', 'N', 'O', '_',
+'S', 'I', 'D', 'E', '_', 'E', 'F', 'F', 'E', 'C', 'T', 'S', '\020', '\001', '\022', '\016', '\n', '\n', 'I', 'D', 'E', 'M', 'P', 'O', 'T',
+'E', 'N', 'T', '\020', '\002', '*', '\t', '\010', '\350', '\007', '\020', '\200', '\200', '\200', '\200', '\002', '\"', '\232', '\003', '\n', '\023', 'U', 'n', 'i', 'n',
+'t', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '\022', 'A', '\n', '\004', 'n', 'a', 'm', 'e', '\030', '\002',
+' ', '\003', '(', '\013', '2', '-', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'U', 'n',
+'i', 'n', 't', 'e', 'r', 'p', 'r', 'e', 't', 'e', 'd', 'O', 'p', 't', 'i', 'o', 'n', '.', 'N', 'a', 'm', 'e', 'P', 'a', 'r',
+'t', 'R', '\004', 'n', 'a', 'm', 'e', '\022', ')', '\n', '\020', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', '_', 'v', 'a', 'l',
+'u', 'e', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\017', 'i', 'd', 'e', 'n', 't', 'i', 'f', 'i', 'e', 'r', 'V', 'a', 'l', 'u', 'e',
+'\022', ',', '\n', '\022', 'p', 'o', 's', 'i', 't', 'i', 'v', 'e', '_', 'i', 'n', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\004', ' ',
+'\001', '(', '\004', 'R', '\020', 'p', 'o', 's', 'i', 't', 'i', 'v', 'e', 'I', 'n', 't', 'V', 'a', 'l', 'u', 'e', '\022', ',', '\n', '\022',
+'n', 'e', 'g', 'a', 't', 'i', 'v', 'e', '_', 'i', 'n', 't', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\005', ' ', '\001', '(', '\003', 'R',
+'\020', 'n', 'e', 'g', 'a', 't', 'i', 'v', 'e', 'I', 'n', 't', 'V', 'a', 'l', 'u', 'e', '\022', '!', '\n', '\014', 'd', 'o', 'u', 'b',
+'l', 'e', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\006', ' ', '\001', '(', '\001', 'R', '\013', 'd', 'o', 'u', 'b', 'l', 'e', 'V', 'a', 'l',
+'u', 'e', '\022', '!', '\n', '\014', 's', 't', 'r', 'i', 'n', 'g', '_', 'v', 'a', 'l', 'u', 'e', '\030', '\007', ' ', '\001', '(', '\014', 'R',
+'\013', 's', 't', 'r', 'i', 'n', 'g', 'V', 'a', 'l', 'u', 'e', '\022', '\'', '\n', '\017', 'a', 'g', 'g', 'r', 'e', 'g', 'a', 't', 'e',
+'_', 'v', 'a', 'l', 'u', 'e', '\030', '\010', ' ', '\001', '(', '\t', 'R', '\016', 'a', 'g', 'g', 'r', 'e', 'g', 'a', 't', 'e', 'V', 'a',
+'l', 'u', 'e', '\032', 'J', '\n', '\010', 'N', 'a', 'm', 'e', 'P', 'a', 'r', 't', '\022', '\033', '\n', '\t', 'n', 'a', 'm', 'e', '_', 'p',
+'a', 'r', 't', '\030', '\001', ' ', '\002', '(', '\t', 'R', '\010', 'n', 'a', 'm', 'e', 'P', 'a', 'r', 't', '\022', '!', '\n', '\014', 'i', 's',
+'_', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '\030', '\002', ' ', '\002', '(', '\010', 'R', '\013', 'i', 's', 'E', 'x', 't', 'e', 'n',
+'s', 'i', 'o', 'n', '\"', '\247', '\002', '\n', '\016', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'o', 'd', 'e', 'I', 'n', 'f', 'o', '\022', 'D',
+'\n', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\003', '(', '\013', '2', '(', '.', 'g', 'o', 'o', 'g', 'l', 'e',
+'.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'S', 'o', 'u', 'r', 'c', 'e', 'C', 'o', 'd', 'e', 'I', 'n', 'f', 'o', '.',
+'L', 'o', 'c', 'a', 't', 'i', 'o', 'n', 'R', '\010', 'l', 'o', 'c', 'a', 't', 'i', 'o', 'n', '\032', '\316', '\001', '\n', '\010', 'L', 'o',
+'c', 'a', 't', 'i', 'o', 'n', '\022', '\026', '\n', '\004', 'p', 'a', 't', 'h', '\030', '\001', ' ', '\003', '(', '\005', 'B', '\002', '\020', '\001', 'R',
+'\004', 'p', 'a', 't', 'h', '\022', '\026', '\n', '\004', 's', 'p', 'a', 'n', '\030', '\002', ' ', '\003', '(', '\005', 'B', '\002', '\020', '\001', 'R', '\004',
+'s', 'p', 'a', 'n', '\022', ')', '\n', '\020', 'l', 'e', 'a', 'd', 'i', 'n', 'g', '_', 'c', 'o', 'm', 'm', 'e', 'n', 't', 's', '\030',
+'\003', ' ', '\001', '(', '\t', 'R', '\017', 'l', 'e', 'a', 'd', 'i', 'n', 'g', 'C', 'o', 'm', 'm', 'e', 'n', 't', 's', '\022', '+', '\n',
+'\021', 't', 'r', 'a', 'i', 'l', 'i', 'n', 'g', '_', 'c', 'o', 'm', 'm', 'e', 'n', 't', 's', '\030', '\004', ' ', '\001', '(', '\t', 'R',
+'\020', 't', 'r', 'a', 'i', 'l', 'i', 'n', 'g', 'C', 'o', 'm', 'm', 'e', 'n', 't', 's', '\022', ':', '\n', '\031', 'l', 'e', 'a', 'd',
+'i', 'n', 'g', '_', 'd', 'e', 't', 'a', 'c', 'h', 'e', 'd', '_', 'c', 'o', 'm', 'm', 'e', 'n', 't', 's', '\030', '\006', ' ', '\003',
+'(', '\t', 'R', '\027', 'l', 'e', 'a', 'd', 'i', 'n', 'g', 'D', 'e', 't', 'a', 'c', 'h', 'e', 'd', 'C', 'o', 'm', 'm', 'e', 'n',
+'t', 's', '\"', '\321', '\001', '\n', '\021', 'G', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', 'C', 'o', 'd', 'e', 'I', 'n', 'f', 'o', '\022',
+'M', '\n', '\n', 'a', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', '\030', '\001', ' ', '\003', '(', '\013', '2', '-', '.', 'g', 'o', 'o',
+'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'G', 'e', 'n', 'e', 'r', 'a', 't', 'e', 'd', 'C', 'o', 'd',
+'e', 'I', 'n', 'f', 'o', '.', 'A', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', 'R', '\n', 'a', 'n', 'n', 'o', 't', 'a', 't',
+'i', 'o', 'n', '\032', 'm', '\n', '\n', 'A', 'n', 'n', 'o', 't', 'a', 't', 'i', 'o', 'n', '\022', '\026', '\n', '\004', 'p', 'a', 't', 'h',
+'\030', '\001', ' ', '\003', '(', '\005', 'B', '\002', '\020', '\001', 'R', '\004', 'p', 'a', 't', 'h', '\022', '\037', '\n', '\013', 's', 'o', 'u', 'r', 'c',
+'e', '_', 'f', 'i', 'l', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\n', 's', 'o', 'u', 'r', 'c', 'e', 'F', 'i', 'l', 'e', '\022',
+'\024', '\n', '\005', 'b', 'e', 'g', 'i', 'n', '\030', '\003', ' ', '\001', '(', '\005', 'R', '\005', 'b', 'e', 'g', 'i', 'n', '\022', '\020', '\n', '\003',
+'e', 'n', 'd', '\030', '\004', ' ', '\001', '(', '\005', 'R', '\003', 'e', 'n', 'd', 'B', '~', '\n', '\023', 'c', 'o', 'm', '.', 'g', 'o', 'o',
+'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', 'B', '\020', 'D', 'e', 's', 'c', 'r', 'i', 'p', 't', 'o', 'r', 'P',
+'r', 'o', 't', 'o', 's', 'H', '\001', 'Z', '-', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'g', 'o', 'l', 'a', 'n', 'g', '.', 'o', 'r',
+'g', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '/', 't', 'y', 'p', 'e', 's', '/', 'd', 'e', 's', 'c', 'r', 'i', 'p', 't',
+'o', 'r', 'p', 'b', '\370', '\001', '\001', '\242', '\002', '\003', 'G', 'P', 'B', '\252', '\002', '\032', 'G', 'o', 'o', 'g', 'l', 'e', '.', 'P', 'r',
+'o', 't', 'o', 'b', 'u', 'f', '.', 'R', 'e', 'f', 'l', 'e', 'c', 't', 'i', 'o', 'n',
};
static _upb_DefPool_Init *deps[1] = {
@@ -325,5 +327,5 @@ _upb_DefPool_Init google_protobuf_descriptor_proto_upbdefinit = {
deps,
&google_protobuf_descriptor_proto_upb_file_layout,
"google/protobuf/descriptor.proto",
- UPB_STRINGVIEW_INIT(descriptor, 7619)
+ UPB_STRINGVIEW_INIT(descriptor, 7667)
};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c b/contrib/libs/grpc/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c
new file mode 100644
index 0000000000..92c529b67d
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c
@@ -0,0 +1,99 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * src/proto/grpc/lookup/v1/rls_config.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#include "upb/def.h"
+#include "src/proto/grpc/lookup/v1/rls_config.upbdefs.h"
+#include "src/proto/grpc/lookup/v1/rls_config.upb.h"
+
+extern _upb_DefPool_Init google_protobuf_duration_proto_upbdefinit;
+static const char descriptor[1816] = {'\n', ')', 's', 'r', 'c', '/', 'p', 'r', 'o', 't', 'o', '/', 'g', 'r', 'p', 'c', '/', 'l', 'o', 'o', 'k', 'u', 'p', '/', 'v',
+'1', '/', 'r', 'l', 's', '_', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'p', 'r', 'o', 't', 'o', '\022', '\016', 'g', 'r', 'p', 'c', '.',
+'l', 'o', 'o', 'k', 'u', 'p', '.', 'v', '1', '\032', '\036', 'g', 'o', 'o', 'g', 'l', 'e', '/', 'p', 'r', 'o', 't', 'o', 'b', 'u',
+'f', '/', 'd', 'u', 'r', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', 't', 'o', '\"', '\\', '\n', '\013', 'N', 'a', 'm', 'e', 'M',
+'a', 't', 'c', 'h', 'e', 'r', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022',
+'\024', '\n', '\005', 'n', 'a', 'm', 'e', 's', '\030', '\002', ' ', '\003', '(', '\t', 'R', '\005', 'n', 'a', 'm', 'e', 's', '\022', '%', '\n', '\016',
+'r', 'e', 'q', 'u', 'i', 'r', 'e', 'd', '_', 'm', 'a', 't', 'c', 'h', '\030', '\003', ' ', '\001', '(', '\010', 'R', '\r', 'r', 'e', 'q',
+'u', 'i', 'r', 'e', 'd', 'M', 'a', 't', 'c', 'h', '\"', '\360', '\003', '\n', '\016', 'G', 'r', 'p', 'c', 'K', 'e', 'y', 'B', 'u', 'i',
+'l', 'd', 'e', 'r', '\022', '9', '\n', '\005', 'n', 'a', 'm', 'e', 's', '\030', '\001', ' ', '\003', '(', '\013', '2', '#', '.', 'g', 'r', 'p',
+'c', '.', 'l', 'o', 'o', 'k', 'u', 'p', '.', 'v', '1', '.', 'G', 'r', 'p', 'c', 'K', 'e', 'y', 'B', 'u', 'i', 'l', 'd', 'e',
+'r', '.', 'N', 'a', 'm', 'e', 'R', '\005', 'n', 'a', 'm', 'e', 's', '\022', 'G', '\n', '\n', 'e', 'x', 't', 'r', 'a', '_', 'k', 'e',
+'y', 's', '\030', '\003', ' ', '\001', '(', '\013', '2', '(', '.', 'g', 'r', 'p', 'c', '.', 'l', 'o', 'o', 'k', 'u', 'p', '.', 'v', '1',
+'.', 'G', 'r', 'p', 'c', 'K', 'e', 'y', 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', 'E', 'x', 't', 'r', 'a', 'K', 'e', 'y', 's',
+'R', '\t', 'e', 'x', 't', 'r', 'a', 'K', 'e', 'y', 's', '\022', '5', '\n', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\002', ' ',
+'\003', '(', '\013', '2', '\033', '.', 'g', 'r', 'p', 'c', '.', 'l', 'o', 'o', 'k', 'u', 'p', '.', 'v', '1', '.', 'N', 'a', 'm', 'e',
+'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\022', 'U', '\n', '\r', 'c', 'o', 'n', 's', 't',
+'a', 'n', 't', '_', 'k', 'e', 'y', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '0', '.', 'g', 'r', 'p', 'c', '.', 'l', 'o', 'o',
+'k', 'u', 'p', '.', 'v', '1', '.', 'G', 'r', 'p', 'c', 'K', 'e', 'y', 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', 'C', 'o', 'n',
+'s', 't', 'a', 'n', 't', 'K', 'e', 'y', 's', 'E', 'n', 't', 'r', 'y', 'R', '\014', 'c', 'o', 'n', 's', 't', 'a', 'n', 't', 'K',
+'e', 'y', 's', '\032', '8', '\n', '\004', 'N', 'a', 'm', 'e', '\022', '\030', '\n', '\007', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\001', ' ',
+'\001', '(', '\t', 'R', '\007', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\022', '\026', '\n', '\006', 'm', 'e', 't', 'h', 'o', 'd', '\030', '\002', ' ',
+'\001', '(', '\t', 'R', '\006', 'm', 'e', 't', 'h', 'o', 'd', '\032', 'Q', '\n', '\t', 'E', 'x', 't', 'r', 'a', 'K', 'e', 'y', 's', '\022',
+'\022', '\n', '\004', 'h', 'o', 's', 't', '\030', '\001', ' ', '\001', '(', '\t', 'R', '\004', 'h', 'o', 's', 't', '\022', '\030', '\n', '\007', 's', 'e',
+'r', 'v', 'i', 'c', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\007', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\022', '\026', '\n', '\006', 'm',
+'e', 't', 'h', 'o', 'd', '\030', '\003', ' ', '\001', '(', '\t', 'R', '\006', 'm', 'e', 't', 'h', 'o', 'd', '\032', '?', '\n', '\021', 'C', 'o',
+'n', 's', 't', 'a', 'n', 't', 'K', 'e', 'y', 's', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ',
+'\001', '(', '\t', 'R', '\003', 'k', 'e', 'y', '\022', '\024', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\005',
+'v', 'a', 'l', 'u', 'e', ':', '\002', '8', '\001', '\"', '\361', '\002', '\n', '\016', 'H', 't', 't', 'p', 'K', 'e', 'y', 'B', 'u', 'i', 'l',
+'d', 'e', 'r', '\022', '#', '\n', '\r', 'h', 'o', 's', 't', '_', 'p', 'a', 't', 't', 'e', 'r', 'n', 's', '\030', '\001', ' ', '\003', '(',
+'\t', 'R', '\014', 'h', 'o', 's', 't', 'P', 'a', 't', 't', 'e', 'r', 'n', 's', '\022', '#', '\n', '\r', 'p', 'a', 't', 'h', '_', 'p',
+'a', 't', 't', 'e', 'r', 'n', 's', '\030', '\002', ' ', '\003', '(', '\t', 'R', '\014', 'p', 'a', 't', 'h', 'P', 'a', 't', 't', 'e', 'r',
+'n', 's', '\022', 'F', '\n', '\020', 'q', 'u', 'e', 'r', 'y', '_', 'p', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\030', '\003', ' ',
+'\003', '(', '\013', '2', '\033', '.', 'g', 'r', 'p', 'c', '.', 'l', 'o', 'o', 'k', 'u', 'p', '.', 'v', '1', '.', 'N', 'a', 'm', 'e',
+'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\017', 'q', 'u', 'e', 'r', 'y', 'P', 'a', 'r', 'a', 'm', 'e', 't', 'e', 'r', 's', '\022',
+'5', '\n', '\007', 'h', 'e', 'a', 'd', 'e', 'r', 's', '\030', '\004', ' ', '\003', '(', '\013', '2', '\033', '.', 'g', 'r', 'p', 'c', '.', 'l',
+'o', 'o', 'k', 'u', 'p', '.', 'v', '1', '.', 'N', 'a', 'm', 'e', 'M', 'a', 't', 'c', 'h', 'e', 'r', 'R', '\007', 'h', 'e', 'a',
+'d', 'e', 'r', 's', '\022', 'U', '\n', '\r', 'c', 'o', 'n', 's', 't', 'a', 'n', 't', '_', 'k', 'e', 'y', 's', '\030', '\005', ' ', '\003',
+'(', '\013', '2', '0', '.', 'g', 'r', 'p', 'c', '.', 'l', 'o', 'o', 'k', 'u', 'p', '.', 'v', '1', '.', 'H', 't', 't', 'p', 'K',
+'e', 'y', 'B', 'u', 'i', 'l', 'd', 'e', 'r', '.', 'C', 'o', 'n', 's', 't', 'a', 'n', 't', 'K', 'e', 'y', 's', 'E', 'n', 't',
+'r', 'y', 'R', '\014', 'c', 'o', 'n', 's', 't', 'a', 'n', 't', 'K', 'e', 'y', 's', '\032', '?', '\n', '\021', 'C', 'o', 'n', 's', 't',
+'a', 'n', 't', 'K', 'e', 'y', 's', 'E', 'n', 't', 'r', 'y', '\022', '\020', '\n', '\003', 'k', 'e', 'y', '\030', '\001', ' ', '\001', '(', '\t',
+'R', '\003', 'k', 'e', 'y', '\022', '\024', '\n', '\005', 'v', 'a', 'l', 'u', 'e', '\030', '\002', ' ', '\001', '(', '\t', 'R', '\005', 'v', 'a', 'l',
+'u', 'e', ':', '\002', '8', '\001', '\"', '\246', '\004', '\n', '\021', 'R', 'o', 'u', 't', 'e', 'L', 'o', 'o', 'k', 'u', 'p', 'C', 'o', 'n',
+'f', 'i', 'g', '\022', 'I', '\n', '\020', 'h', 't', 't', 'p', '_', 'k', 'e', 'y', 'b', 'u', 'i', 'l', 'd', 'e', 'r', 's', '\030', '\001',
+' ', '\003', '(', '\013', '2', '\036', '.', 'g', 'r', 'p', 'c', '.', 'l', 'o', 'o', 'k', 'u', 'p', '.', 'v', '1', '.', 'H', 't', 't',
+'p', 'K', 'e', 'y', 'B', 'u', 'i', 'l', 'd', 'e', 'r', 'R', '\017', 'h', 't', 't', 'p', 'K', 'e', 'y', 'b', 'u', 'i', 'l', 'd',
+'e', 'r', 's', '\022', 'I', '\n', '\020', 'g', 'r', 'p', 'c', '_', 'k', 'e', 'y', 'b', 'u', 'i', 'l', 'd', 'e', 'r', 's', '\030', '\002',
+' ', '\003', '(', '\013', '2', '\036', '.', 'g', 'r', 'p', 'c', '.', 'l', 'o', 'o', 'k', 'u', 'p', '.', 'v', '1', '.', 'G', 'r', 'p',
+'c', 'K', 'e', 'y', 'B', 'u', 'i', 'l', 'd', 'e', 'r', 'R', '\017', 'g', 'r', 'p', 'c', 'K', 'e', 'y', 'b', 'u', 'i', 'l', 'd',
+'e', 'r', 's', '\022', '%', '\n', '\016', 'l', 'o', 'o', 'k', 'u', 'p', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '\030', '\003', ' ', '\001',
+'(', '\t', 'R', '\r', 'l', 'o', 'o', 'k', 'u', 'p', 'S', 'e', 'r', 'v', 'i', 'c', 'e', '\022', 'O', '\n', '\026', 'l', 'o', 'o', 'k',
+'u', 'p', '_', 's', 'e', 'r', 'v', 'i', 'c', 'e', '_', 't', 'i', 'm', 'e', 'o', 'u', 't', '\030', '\004', ' ', '\001', '(', '\013', '2',
+'\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o',
+'n', 'R', '\024', 'l', 'o', 'o', 'k', 'u', 'p', 'S', 'e', 'r', 'v', 'i', 'c', 'e', 'T', 'i', 'm', 'e', 'o', 'u', 't', '\022', '2',
+'\n', '\007', 'm', 'a', 'x', '_', 'a', 'g', 'e', '\030', '\005', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.',
+'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\006', 'm', 'a', 'x', 'A', 'g', 'e',
+'\022', '6', '\n', '\t', 's', 't', 'a', 'l', 'e', '_', 'a', 'g', 'e', '\030', '\006', ' ', '\001', '(', '\013', '2', '\031', '.', 'g', 'o', 'o',
+'g', 'l', 'e', '.', 'p', 'r', 'o', 't', 'o', 'b', 'u', 'f', '.', 'D', 'u', 'r', 'a', 't', 'i', 'o', 'n', 'R', '\010', 's', 't',
+'a', 'l', 'e', 'A', 'g', 'e', '\022', '(', '\n', '\020', 'c', 'a', 'c', 'h', 'e', '_', 's', 'i', 'z', 'e', '_', 'b', 'y', 't', 'e',
+'s', '\030', '\007', ' ', '\001', '(', '\003', 'R', '\016', 'c', 'a', 'c', 'h', 'e', 'S', 'i', 'z', 'e', 'B', 'y', 't', 'e', 's', '\022', '#',
+'\n', '\r', 'v', 'a', 'l', 'i', 'd', '_', 't', 'a', 'r', 'g', 'e', 't', 's', '\030', '\010', ' ', '\003', '(', '\t', 'R', '\014', 'v', 'a',
+'l', 'i', 'd', 'T', 'a', 'r', 'g', 'e', 't', 's', '\022', '%', '\n', '\016', 'd', 'e', 'f', 'a', 'u', 'l', 't', '_', 't', 'a', 'r',
+'g', 'e', 't', '\030', '\t', ' ', '\001', '(', '\t', 'R', '\r', 'd', 'e', 'f', 'a', 'u', 'l', 't', 'T', 'a', 'r', 'g', 'e', 't', 'J',
+'\004', '\010', '\n', '\020', '\013', 'R', '\033', 'r', 'e', 'q', 'u', 'e', 's', 't', '_', 'p', 'r', 'o', 'c', 'e', 's', 's', 'i', 'n', 'g',
+'_', 's', 't', 'r', 'a', 't', 'e', 'g', 'y', '\"', 'p', '\n', '\033', 'R', 'o', 'u', 't', 'e', 'L', 'o', 'o', 'k', 'u', 'p', 'C',
+'l', 'u', 's', 't', 'e', 'r', 'S', 'p', 'e', 'c', 'i', 'f', 'i', 'e', 'r', '\022', 'Q', '\n', '\023', 'r', 'o', 'u', 't', 'e', '_',
+'l', 'o', 'o', 'k', 'u', 'p', '_', 'c', 'o', 'n', 'f', 'i', 'g', '\030', '\001', ' ', '\001', '(', '\013', '2', '!', '.', 'g', 'r', 'p',
+'c', '.', 'l', 'o', 'o', 'k', 'u', 'p', '.', 'v', '1', '.', 'R', 'o', 'u', 't', 'e', 'L', 'o', 'o', 'k', 'u', 'p', 'C', 'o',
+'n', 'f', 'i', 'g', 'R', '\021', 'r', 'o', 'u', 't', 'e', 'L', 'o', 'o', 'k', 'u', 'p', 'C', 'o', 'n', 'f', 'i', 'g', 'B', 'S',
+'\n', '\021', 'i', 'o', '.', 'g', 'r', 'p', 'c', '.', 'l', 'o', 'o', 'k', 'u', 'p', '.', 'v', '1', 'B', '\016', 'R', 'l', 's', 'C',
+'o', 'n', 'f', 'i', 'g', 'P', 'r', 'o', 't', 'o', 'P', '\001', 'Z', ',', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'g', 'o', 'l', 'a',
+'n', 'g', '.', 'o', 'r', 'g', '/', 'g', 'r', 'p', 'c', '/', 'l', 'o', 'o', 'k', 'u', 'p', '/', 'g', 'r', 'p', 'c', '_', 'l',
+'o', 'o', 'k', 'u', 'p', '_', 'v', '1', 'b', '\006', 'p', 'r', 'o', 't', 'o', '3',
+};
+
+static _upb_DefPool_Init *deps[2] = {
+ &google_protobuf_duration_proto_upbdefinit,
+ NULL
+};
+
+_upb_DefPool_Init src_proto_grpc_lookup_v1_rls_config_proto_upbdefinit = {
+ deps,
+ &src_proto_grpc_lookup_v1_rls_config_proto_upb_file_layout,
+ "src/proto/grpc/lookup/v1/rls_config.proto",
+ UPB_STRINGVIEW_INIT(descriptor, 1816)
+};
diff --git a/contrib/libs/grpc/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h b/contrib/libs/grpc/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h
new file mode 100644
index 0000000000..3a7591fa5d
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h
@@ -0,0 +1,75 @@
+/* This file was generated by upbc (the upb compiler) from the input
+ * file:
+ *
+ * src/proto/grpc/lookup/v1/rls_config.proto
+ *
+ * Do not edit -- your changes will be discarded when the file is
+ * regenerated. */
+
+#ifndef SRC_PROTO_GRPC_LOOKUP_V1_RLS_CONFIG_PROTO_UPBDEFS_H_
+#define SRC_PROTO_GRPC_LOOKUP_V1_RLS_CONFIG_PROTO_UPBDEFS_H_
+
+#include "upb/def.h"
+#include "upb/port_def.inc"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "upb/def.h"
+
+#include "upb/port_def.inc"
+
+extern _upb_DefPool_Init src_proto_grpc_lookup_v1_rls_config_proto_upbdefinit;
+
+UPB_INLINE const upb_MessageDef *grpc_lookup_v1_NameMatcher_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &src_proto_grpc_lookup_v1_rls_config_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "grpc.lookup.v1.NameMatcher");
+}
+
+UPB_INLINE const upb_MessageDef *grpc_lookup_v1_GrpcKeyBuilder_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &src_proto_grpc_lookup_v1_rls_config_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "grpc.lookup.v1.GrpcKeyBuilder");
+}
+
+UPB_INLINE const upb_MessageDef *grpc_lookup_v1_GrpcKeyBuilder_Name_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &src_proto_grpc_lookup_v1_rls_config_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "grpc.lookup.v1.GrpcKeyBuilder.Name");
+}
+
+UPB_INLINE const upb_MessageDef *grpc_lookup_v1_GrpcKeyBuilder_ExtraKeys_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &src_proto_grpc_lookup_v1_rls_config_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "grpc.lookup.v1.GrpcKeyBuilder.ExtraKeys");
+}
+
+UPB_INLINE const upb_MessageDef *grpc_lookup_v1_GrpcKeyBuilder_ConstantKeysEntry_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &src_proto_grpc_lookup_v1_rls_config_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "grpc.lookup.v1.GrpcKeyBuilder.ConstantKeysEntry");
+}
+
+UPB_INLINE const upb_MessageDef *grpc_lookup_v1_HttpKeyBuilder_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &src_proto_grpc_lookup_v1_rls_config_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "grpc.lookup.v1.HttpKeyBuilder");
+}
+
+UPB_INLINE const upb_MessageDef *grpc_lookup_v1_HttpKeyBuilder_ConstantKeysEntry_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &src_proto_grpc_lookup_v1_rls_config_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "grpc.lookup.v1.HttpKeyBuilder.ConstantKeysEntry");
+}
+
+UPB_INLINE const upb_MessageDef *grpc_lookup_v1_RouteLookupConfig_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &src_proto_grpc_lookup_v1_rls_config_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "grpc.lookup.v1.RouteLookupConfig");
+}
+
+UPB_INLINE const upb_MessageDef *grpc_lookup_v1_RouteLookupClusterSpecifier_getmsgdef(upb_DefPool *s) {
+ _upb_DefPool_LoadDefInit(s, &src_proto_grpc_lookup_v1_rls_config_proto_upbdefinit);
+ return upb_DefPool_FindMessageByName(s, "grpc.lookup.v1.RouteLookupClusterSpecifier");
+}
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* SRC_PROTO_GRPC_LOOKUP_V1_RLS_CONFIG_PROTO_UPBDEFS_H_ */
diff --git a/contrib/libs/grpc/src/core/ext/xds/certificate_provider_registry.cc b/contrib/libs/grpc/src/core/ext/xds/certificate_provider_registry.cc
deleted file mode 100644
index 16e766b915..0000000000
--- a/contrib/libs/grpc/src/core/ext/xds/certificate_provider_registry.cc
+++ /dev/null
@@ -1,103 +0,0 @@
-//
-//
-// Copyright 2020 gRPC authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-//
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/ext/xds/certificate_provider_registry.h"
-
-#include "y_absl/container/inlined_vector.h"
-
-namespace grpc_core {
-
-namespace {
-
-class RegistryState {
- public:
- void RegisterCertificateProviderFactory(
- std::unique_ptr<CertificateProviderFactory> factory) {
- gpr_log(GPR_DEBUG, "registering certificate provider factory for \"%s\"",
- factory->name());
- for (size_t i = 0; i < factories_.size(); ++i) {
- GPR_ASSERT(strcmp(factories_[i]->name(), factory->name()) != 0);
- }
- factories_.push_back(std::move(factory));
- }
-
- CertificateProviderFactory* LookupCertificateProviderFactory(
- y_absl::string_view name) const {
- for (size_t i = 0; i < factories_.size(); ++i) {
- if (name == factories_[i]->name()) {
- return factories_[i].get();
- }
- }
- return nullptr;
- }
-
- private:
- // We currently support 3 factories without doing additional
- // allocation. This number could be raised if there is a case where
- // more factories are needed and the additional allocations are
- // hurting performance (which is unlikely, since these allocations
- // only occur at gRPC initialization time).
- y_absl::InlinedVector<std::unique_ptr<CertificateProviderFactory>, 3>
- factories_;
-};
-
-RegistryState* g_state = nullptr;
-
-} // namespace
-
-//
-// CertificateProviderRegistry
-//
-
-CertificateProviderFactory*
-CertificateProviderRegistry::LookupCertificateProviderFactory(
- y_absl::string_view name) {
- GPR_ASSERT(g_state != nullptr);
- return g_state->LookupCertificateProviderFactory(name);
-}
-
-void CertificateProviderRegistry::InitRegistry() {
- if (g_state == nullptr) g_state = new RegistryState();
-}
-
-void CertificateProviderRegistry::ShutdownRegistry() {
- delete g_state;
- g_state = nullptr;
-}
-
-void CertificateProviderRegistry::RegisterCertificateProviderFactory(
- std::unique_ptr<CertificateProviderFactory> factory) {
- InitRegistry();
- g_state->RegisterCertificateProviderFactory(std::move(factory));
-}
-
-} // namespace grpc_core
-
-//
-// Plugin registration
-//
-
-void grpc_certificate_provider_registry_init() {
- grpc_core::CertificateProviderRegistry::InitRegistry();
-}
-
-void grpc_certificate_provider_registry_shutdown() {
- grpc_core::CertificateProviderRegistry::ShutdownRegistry();
-}
diff --git a/contrib/libs/grpc/src/core/ext/xds/certificate_provider_registry.h b/contrib/libs/grpc/src/core/ext/xds/certificate_provider_registry.h
deleted file mode 100644
index 10efe809b7..0000000000
--- a/contrib/libs/grpc/src/core/ext/xds/certificate_provider_registry.h
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-//
-// Copyright 2020 gRPC authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-//
-
-#ifndef GRPC_CORE_EXT_XDS_CERTIFICATE_PROVIDER_REGISTRY_H
-#define GRPC_CORE_EXT_XDS_CERTIFICATE_PROVIDER_REGISTRY_H
-
-#include <grpc/support/port_platform.h>
-
-#include <util/generic/string.h>
-#include <util/string/cast.h>
-
-#include "src/core/ext/xds/certificate_provider_factory.h"
-
-namespace grpc_core {
-
-// Global registry for all the certificate provider plugins.
-class CertificateProviderRegistry {
- public:
- // Returns the factory for the plugin keyed by name.
- static CertificateProviderFactory* LookupCertificateProviderFactory(
- y_absl::string_view name);
-
- // The following methods are used to create and populate the
- // CertificateProviderRegistry. NOT THREAD SAFE -- to be used only during
- // global gRPC initialization and shutdown.
-
- // Global initialization of the registry.
- static void InitRegistry();
-
- // Global shutdown of the registry.
- static void ShutdownRegistry();
-
- // Register a provider with the registry. Can only be called after calling
- // InitRegistry(). The key of the factory is extracted from factory
- // parameter with method CertificateProviderFactory::name. If the same key
- // is registered twice, an exception is raised.
- static void RegisterCertificateProviderFactory(
- std::unique_ptr<CertificateProviderFactory> factory);
-};
-
-} // namespace grpc_core
-
-#endif // GRPC_CORE_EXT_XDS_CERTIFICATE_PROVIDER_REGISTRY_H
diff --git a/contrib/libs/grpc/src/core/ext/xds/certificate_provider_store.cc b/contrib/libs/grpc/src/core/ext/xds/certificate_provider_store.cc
index cfa567c786..405d8a08ab 100644
--- a/contrib/libs/grpc/src/core/ext/xds/certificate_provider_store.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/certificate_provider_store.cc
@@ -20,10 +20,80 @@
#include "src/core/ext/xds/certificate_provider_store.h"
-#include "src/core/ext/xds/certificate_provider_registry.h"
+#include "y_absl/strings/str_cat.h"
+
+#include <grpc/support/log.h>
+
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/security/certificate_provider/certificate_provider_registry.h"
namespace grpc_core {
+//
+// CertificateProviderStore::PluginDefinition
+//
+
+const JsonLoaderInterface*
+CertificateProviderStore::PluginDefinition::JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<PluginDefinition>()
+ .Field("plugin_name", &PluginDefinition::plugin_name)
+ .Finish();
+ return loader;
+}
+
+void CertificateProviderStore::PluginDefinition::JsonPostLoad(
+ const Json& json, const JsonArgs&, ValidationErrors* errors) {
+ // Check that plugin is supported.
+ CertificateProviderFactory* factory = nullptr;
+ if (!plugin_name.empty()) {
+ ValidationErrors::ScopedField field(errors, ".plugin_name");
+ factory = CoreConfiguration::Get()
+ .certificate_provider_registry()
+ .LookupCertificateProviderFactory(plugin_name);
+ if (factory == nullptr) {
+ errors->AddError(y_absl::StrCat("Unrecognized plugin name: ", plugin_name));
+ return; // No point checking config.
+ }
+ }
+ // Parse the config field.
+ {
+ ValidationErrors::ScopedField field(errors, ".config");
+ auto it = json.object_value().find("config");
+ // The config field is optional; if not present, we use an empty JSON
+ // object.
+ Json::Object config_json;
+ if (it != json.object_value().end()) {
+ if (it->second.type() != Json::Type::OBJECT) {
+ errors->AddError("is not an object");
+ return; // No point parsing config.
+ } else {
+ config_json = it->second.object_value();
+ }
+ }
+ if (factory == nullptr) return;
+ // Use plugin to validate and parse config.
+ grpc_error_handle parse_error = GRPC_ERROR_NONE;
+ config =
+ factory->CreateCertificateProviderConfig(config_json, &parse_error);
+ if (!GRPC_ERROR_IS_NONE(parse_error)) {
+ errors->AddError(grpc_error_std_string(parse_error));
+ GRPC_ERROR_UNREF(parse_error);
+ }
+ }
+}
+
+//
+// CertificateProviderStore::CertificateProviderWrapper
+//
+
+UniqueTypeName CertificateProviderStore::CertificateProviderWrapper::type()
+ const {
+ static UniqueTypeName::Factory kFactory("Wrapper");
+ return kFactory.Create();
+}
+
// If a certificate provider is created, the CertificateProviderStore
// maintains a raw pointer to the created CertificateProviderWrapper so that
// future calls to `CreateOrGetCertificateProvider()` with the same key result
@@ -58,8 +128,10 @@ CertificateProviderStore::CreateCertificateProviderLocked(
return nullptr;
}
CertificateProviderFactory* factory =
- CertificateProviderRegistry::LookupCertificateProviderFactory(
- plugin_config_it->second.plugin_name);
+ CoreConfiguration::Get()
+ .certificate_provider_registry()
+ .LookupCertificateProviderFactory(
+ plugin_config_it->second.plugin_name);
if (factory == nullptr) {
// This should never happen since an entry is only inserted in the
// plugin_config_map_ if the corresponding factory was found when parsing
diff --git a/contrib/libs/grpc/src/core/ext/xds/certificate_provider_store.h b/contrib/libs/grpc/src/core/ext/xds/certificate_provider_store.h
index e941f9a40a..eee26055b4 100644
--- a/contrib/libs/grpc/src/core/ext/xds/certificate_provider_store.h
+++ b/contrib/libs/grpc/src/core/ext/xds/certificate_provider_store.h
@@ -22,13 +22,27 @@
#include <grpc/support/port_platform.h>
#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include "y_absl/base/thread_annotations.h"
#include "y_absl/strings/string_view.h"
-#include "src/core/ext/xds/certificate_provider_factory.h"
+#include <grpc/grpc_security.h>
+
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/gprpp/validation_errors.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/json/json_args.h"
+#include "src/core/lib/json/json_object_loader.h"
+#include "src/core/lib/security/certificate_provider/certificate_provider_factory.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
namespace grpc_core {
@@ -40,6 +54,10 @@ class CertificateProviderStore
struct PluginDefinition {
TString plugin_name;
RefCountedPtr<CertificateProviderFactory::Config> config;
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs&,
+ ValidationErrors* errors);
};
// Maps plugin instance (opaque) name to plugin defition.
@@ -83,6 +101,15 @@ class CertificateProviderStore
return certificate_provider_->interested_parties();
}
+ int CompareImpl(const grpc_tls_certificate_provider* other) const override {
+ // TODO(yashykt): This should probably delegate to the `Compare` method of
+ // the wrapped certificate_provider_ object.
+ return QsortCompare(
+ static_cast<const grpc_tls_certificate_provider*>(this), other);
+ }
+
+ UniqueTypeName type() const override;
+
y_absl::string_view key() const { return key_; }
private:
diff --git a/contrib/libs/grpc/src/core/ext/xds/file_watcher_certificate_provider_factory.cc b/contrib/libs/grpc/src/core/ext/xds/file_watcher_certificate_provider_factory.cc
index 772b53bf89..5f922ab8db 100644
--- a/contrib/libs/grpc/src/core/ext/xds/file_watcher_certificate_provider_factory.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/file_watcher_certificate_provider_factory.cc
@@ -20,11 +20,21 @@
#include "src/core/ext/xds/file_watcher_certificate_provider_factory.h"
+#include <algorithm>
+#include <memory>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
-#include "src/core/ext/xds/certificate_provider_registry.h"
+#include <grpc/support/log.h>
+#include <grpc/support/time.h>
+
+#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/json/json_util.h"
+#include "src/core/lib/security/certificate_provider/certificate_provider_registry.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
namespace grpc_core {
@@ -134,11 +144,10 @@ FileWatcherCertificateProviderFactory::CreateCertificateProvider(
file_watcher_config->refresh_interval().millis() / GPR_MS_PER_SEC);
}
-void FileWatcherCertificateProviderInit() {
- CertificateProviderRegistry::RegisterCertificateProviderFactory(
+void RegisterFileWatcherCertificateProvider(
+ CoreConfiguration::Builder* builder) {
+ builder->certificate_provider_registry()->RegisterCertificateProviderFactory(
y_absl::make_unique<FileWatcherCertificateProviderFactory>());
}
-void FileWatcherCertificateProviderShutdown() {}
-
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/xds/file_watcher_certificate_provider_factory.h b/contrib/libs/grpc/src/core/ext/xds/file_watcher_certificate_provider_factory.h
index 2a4f49040f..67096d90ae 100644
--- a/contrib/libs/grpc/src/core/ext/xds/file_watcher_certificate_provider_factory.h
+++ b/contrib/libs/grpc/src/core/ext/xds/file_watcher_certificate_provider_factory.h
@@ -21,7 +21,16 @@
#include <grpc/support/port_platform.h>
-#include "src/core/ext/xds/certificate_provider_factory.h"
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include <grpc/grpc_security.h>
+
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/security/certificate_provider/certificate_provider_factory.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/xds/upb_utils.h b/contrib/libs/grpc/src/core/ext/xds/upb_utils.h
index 2f46210754..5f0679bf1b 100644
--- a/contrib/libs/grpc/src/core/ext/xds/upb_utils.h
+++ b/contrib/libs/grpc/src/core/ext/xds/upb_utils.h
@@ -23,32 +23,10 @@
#include <util/string/cast.h>
#include "y_absl/strings/string_view.h"
-#include "upb/text_encode.h"
#include "upb/upb.h"
-#include "upb/upb.hpp"
-
-#include "src/core/ext/xds/certificate_provider_store.h"
-#include "src/core/ext/xds/xds_bootstrap.h"
-#include "src/core/lib/debug/trace.h"
namespace grpc_core {
-class XdsClient;
-
-// TODO(roth): Rethink this. All fields except symtab and arena should come
-// from XdsClient, injected into XdsResourceType::Decode() somehow without
-// passing through XdsApi code, maybe via the AdsResponseParser.
-struct XdsEncodingContext {
- XdsClient* client; // Used only for logging. Unsafe for dereferencing.
- const XdsBootstrap::XdsServer& server;
- TraceFlag* tracer;
- upb_DefPool* symtab;
- upb_Arena* arena;
- bool use_v3;
- const CertificateProviderStore::PluginDefinitionMap*
- certificate_provider_definition_map;
-};
-
// Works for both TString and y_absl::string_view.
template <typename T>
inline upb_StringView StdStringToUpbString(const T& str) {
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_api.cc b/contrib/libs/grpc/src/core/ext/xds/xds_api.cc
index 2ea3ce1569..ed94db3e26 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_api.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_api.cc
@@ -18,13 +18,17 @@
#include "src/core/ext/xds/xds_api.h"
+#include <stdint.h>
+#include <stdlib.h>
+
+#include <algorithm>
#include <set>
#include <util/generic/string.h>
#include <util/string/cast.h>
#include <vector>
#include "y_absl/strings/str_cat.h"
-#include "envoy/admin/v3/config_dump.upb.h"
+#include "y_absl/strings/strip.h"
#include "envoy/config/core/v3/base.upb.h"
#include "envoy/config/endpoint/v3/load_report.upb.h"
#include "envoy/service/discovery/v3/discovery.upb.h"
@@ -32,34 +36,26 @@
#include "envoy/service/load_stats/v3/lrs.upb.h"
#include "envoy/service/load_stats/v3/lrs.upbdefs.h"
#include "envoy/service/status/v3/csds.upb.h"
-#include "envoy/service/status/v3/csds.upbdefs.h"
#include "google/protobuf/any.upb.h"
+#include "google/protobuf/duration.upb.h"
#include "google/protobuf/struct.upb.h"
#include "google/protobuf/timestamp.upb.h"
-#include "google/protobuf/wrappers.upb.h"
#include "google/rpc/status.upb.h"
+#include "upb/def.h"
#include "upb/text_encode.h"
#include "upb/upb.h"
#include "upb/upb.hpp"
-#include <grpc/impl/codegen/log.h>
-#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
+#include <grpc/grpc.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/status.h>
+#include <grpc/support/log.h>
#include "src/core/ext/xds/upb_utils.h"
-#include "src/core/ext/xds/xds_common_types.h"
-#include "src/core/ext/xds/xds_resource_type.h"
-#include "src/core/ext/xds/xds_routing.h"
-#include "src/core/lib/address_utils/parse_address.h"
-#include "src/core/lib/address_utils/sockaddr_utils.h"
-#include "src/core/lib/gpr/env.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/host_port.h"
-#include "src/core/lib/iomgr/error.h"
-#include "src/core/lib/iomgr/sockaddr.h"
-#include "src/core/lib/iomgr/socket_utils.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/uri/uri_parser.h"
+#include "src/core/ext/xds/xds_client.h"
+#include "src/core/lib/json/json.h"
+
+// IWYU pragma: no_include "upb/msg_internal.h"
namespace grpc_core {
@@ -82,14 +78,10 @@ namespace grpc_core {
#endif
XdsApi::XdsApi(XdsClient* client, TraceFlag* tracer,
- const XdsBootstrap::Node* node,
- const CertificateProviderStore::PluginDefinitionMap*
- certificate_provider_definition_map,
- upb::SymbolTable* symtab)
+ const XdsBootstrap::Node* node, upb::SymbolTable* symtab)
: client_(client),
tracer_(tracer),
node_(node),
- certificate_provider_definition_map_(certificate_provider_definition_map),
symtab_(symtab),
build_version_(y_absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING, " ",
grpc_version_string(),
@@ -104,10 +96,18 @@ XdsApi::XdsApi(XdsClient* client, TraceFlag* tracer,
namespace {
-void PopulateMetadataValue(const XdsEncodingContext& context,
+struct XdsApiContext {
+ XdsClient* client;
+ TraceFlag* tracer;
+ upb_DefPool* symtab;
+ upb_Arena* arena;
+ bool use_v3;
+};
+
+void PopulateMetadataValue(const XdsApiContext& context,
google_protobuf_Value* value_pb, const Json& value);
-void PopulateListValue(const XdsEncodingContext& context,
+void PopulateListValue(const XdsApiContext& context,
google_protobuf_ListValue* list_value,
const Json::Array& values) {
for (const auto& value : values) {
@@ -117,7 +117,7 @@ void PopulateListValue(const XdsEncodingContext& context,
}
}
-void PopulateMetadata(const XdsEncodingContext& context,
+void PopulateMetadata(const XdsApiContext& context,
google_protobuf_Struct* metadata_pb,
const Json::Object& metadata) {
for (const auto& p : metadata) {
@@ -128,7 +128,7 @@ void PopulateMetadata(const XdsEncodingContext& context,
}
}
-void PopulateMetadataValue(const XdsEncodingContext& context,
+void PopulateMetadataValue(const XdsApiContext& context,
google_protobuf_Value* value_pb, const Json& value) {
switch (value.type()) {
case Json::Type::JSON_NULL:
@@ -184,7 +184,7 @@ TString EncodeStringField(uint32_t field_number, const TString& str) {
EncodeVarint(str.size()) + str;
}
-void PopulateBuildVersion(const XdsEncodingContext& context,
+void PopulateBuildVersion(const XdsApiContext& context,
envoy_config_core_v3_Node* node_msg,
const TString& build_version) {
TString encoded_build_version = EncodeStringField(5, build_version);
@@ -196,41 +196,40 @@ void PopulateBuildVersion(const XdsEncodingContext& context,
encoded_build_version.size(), context.arena);
}
-void PopulateNode(const XdsEncodingContext& context,
- const XdsBootstrap::Node* node,
+void PopulateNode(const XdsApiContext& context, const XdsBootstrap::Node* node,
const TString& build_version,
const TString& user_agent_name,
const TString& user_agent_version,
envoy_config_core_v3_Node* node_msg) {
if (node != nullptr) {
- if (!node->id.empty()) {
+ if (!node->id().empty()) {
envoy_config_core_v3_Node_set_id(node_msg,
- StdStringToUpbString(node->id));
+ StdStringToUpbString(node->id()));
}
- if (!node->cluster.empty()) {
+ if (!node->cluster().empty()) {
envoy_config_core_v3_Node_set_cluster(
- node_msg, StdStringToUpbString(node->cluster));
+ node_msg, StdStringToUpbString(node->cluster()));
}
- if (!node->metadata.object_value().empty()) {
+ if (!node->metadata().empty()) {
google_protobuf_Struct* metadata =
envoy_config_core_v3_Node_mutable_metadata(node_msg, context.arena);
- PopulateMetadata(context, metadata, node->metadata.object_value());
+ PopulateMetadata(context, metadata, node->metadata());
}
- if (!node->locality_region.empty() || !node->locality_zone.empty() ||
- !node->locality_sub_zone.empty()) {
+ if (!node->locality_region().empty() || !node->locality_zone().empty() ||
+ !node->locality_sub_zone().empty()) {
envoy_config_core_v3_Locality* locality =
envoy_config_core_v3_Node_mutable_locality(node_msg, context.arena);
- if (!node->locality_region.empty()) {
+ if (!node->locality_region().empty()) {
envoy_config_core_v3_Locality_set_region(
- locality, StdStringToUpbString(node->locality_region));
+ locality, StdStringToUpbString(node->locality_region()));
}
- if (!node->locality_zone.empty()) {
+ if (!node->locality_zone().empty()) {
envoy_config_core_v3_Locality_set_zone(
- locality, StdStringToUpbString(node->locality_zone));
+ locality, StdStringToUpbString(node->locality_zone()));
}
- if (!node->locality_sub_zone.empty()) {
+ if (!node->locality_sub_zone().empty()) {
envoy_config_core_v3_Locality_set_sub_zone(
- locality, StdStringToUpbString(node->locality_sub_zone));
+ locality, StdStringToUpbString(node->locality_sub_zone()));
}
}
}
@@ -248,7 +247,7 @@ void PopulateNode(const XdsEncodingContext& context,
}
void MaybeLogDiscoveryRequest(
- const XdsEncodingContext& context,
+ const XdsApiContext& context,
const envoy_service_discovery_v3_DiscoveryRequest* request) {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
@@ -261,30 +260,25 @@ void MaybeLogDiscoveryRequest(
}
}
-grpc_slice SerializeDiscoveryRequest(
- const XdsEncodingContext& context,
+TString SerializeDiscoveryRequest(
+ const XdsApiContext& context,
envoy_service_discovery_v3_DiscoveryRequest* request) {
size_t output_length;
char* output = envoy_service_discovery_v3_DiscoveryRequest_serialize(
request, context.arena, &output_length);
- return grpc_slice_from_copied_buffer(output, output_length);
+ return TString(output, output_length);
}
} // namespace
-grpc_slice XdsApi::CreateAdsRequest(
+TString XdsApi::CreateAdsRequest(
const XdsBootstrap::XdsServer& server, y_absl::string_view type_url,
y_absl::string_view version, y_absl::string_view nonce,
- const std::vector<TString>& resource_names, grpc_error_handle error,
+ const std::vector<TString>& resource_names, y_absl::Status status,
bool populate_node) {
upb::Arena arena;
- const XdsEncodingContext context = {client_,
- server,
- tracer_,
- symtab_->ptr(),
- arena.ptr(),
- server.ShouldUseV3(),
- certificate_provider_definition_map_};
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
+ server.ShouldUseV3()};
// Create a request.
envoy_service_discovery_v3_DiscoveryRequest* request =
envoy_service_discovery_v3_DiscoveryRequest_new(arena.ptr());
@@ -304,7 +298,7 @@ grpc_slice XdsApi::CreateAdsRequest(
}
// Set error_detail if it's a NACK.
TString error_string_storage;
- if (error != GRPC_ERROR_NONE) {
+ if (!status.ok()) {
google_rpc_Status* error_detail =
envoy_service_discovery_v3_DiscoveryRequest_mutable_error_detail(
request, arena.ptr());
@@ -313,12 +307,11 @@ grpc_slice XdsApi::CreateAdsRequest(
// we could attach a status code to the individual errors where we
// generate them in the parsing code, and then use that here.
google_rpc_Status_set_code(error_detail, GRPC_STATUS_INVALID_ARGUMENT);
- // Error description comes from the error that was passed in.
- error_string_storage = grpc_error_std_string(error);
+ // Error description comes from the status that was passed in.
+ error_string_storage = TString(status.message());
upb_StringView error_description =
StdStringToUpbString(error_string_storage);
google_rpc_Status_set_message(error_detail, error_description);
- GRPC_ERROR_UNREF(error);
}
// Populate node.
if (populate_node) {
@@ -327,6 +320,9 @@ grpc_slice XdsApi::CreateAdsRequest(
arena.ptr());
PopulateNode(context, node_, build_version_, user_agent_name_,
user_agent_version_, node_msg);
+ envoy_config_core_v3_Node_add_client_features(
+ node_msg, upb_StringView_FromString("xds.config.resource-in-sotw"),
+ context.arena);
}
// Add resource_names.
for (const TString& resource_name : resource_names) {
@@ -340,7 +336,7 @@ grpc_slice XdsApi::CreateAdsRequest(
namespace {
void MaybeLogDiscoveryResponse(
- const XdsEncodingContext& context,
+ const XdsApiContext& context,
const envoy_service_discovery_v3_DiscoveryResponse* response) {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
@@ -356,21 +352,15 @@ void MaybeLogDiscoveryResponse(
} // namespace
y_absl::Status XdsApi::ParseAdsResponse(const XdsBootstrap::XdsServer& server,
- const grpc_slice& encoded_response,
+ y_absl::string_view encoded_response,
AdsResponseParserInterface* parser) {
upb::Arena arena;
- const XdsEncodingContext context = {client_,
- server,
- tracer_,
- symtab_->ptr(),
- arena.ptr(),
- server.ShouldUseV3(),
- certificate_provider_definition_map_};
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
+ server.ShouldUseV3()};
// Decode the response.
const envoy_service_discovery_v3_DiscoveryResponse* response =
envoy_service_discovery_v3_DiscoveryResponse_parse(
- reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(encoded_response)),
- GRPC_SLICE_LENGTH(encoded_response), arena.ptr());
+ encoded_response.data(), encoded_response.size(), arena.ptr());
// If decoding fails, report a fatal error and return.
if (response == nullptr) {
return y_absl::InvalidArgumentError("Can't decode DiscoveryResponse.");
@@ -400,7 +390,28 @@ y_absl::Status XdsApi::ParseAdsResponse(const XdsBootstrap::XdsServer& server,
"type.googleapis.com/");
y_absl::string_view serialized_resource =
UpbStringToAbsl(google_protobuf_Any_value(resources[i]));
- parser->ParseResource(context, i, type_url, serialized_resource);
+ // Unwrap Resource messages, if so wrapped.
+ y_absl::string_view resource_name;
+ if (type_url == "envoy.api.v2.Resource" ||
+ type_url == "envoy.service.discovery.v3.Resource") {
+ const auto* resource_wrapper = envoy_service_discovery_v3_Resource_parse(
+ serialized_resource.data(), serialized_resource.size(), arena.ptr());
+ if (resource_wrapper == nullptr) {
+ parser->ResourceWrapperParsingFailed(i);
+ continue;
+ }
+ const auto* resource =
+ envoy_service_discovery_v3_Resource_resource(resource_wrapper);
+ type_url = y_absl::StripPrefix(
+ UpbStringToAbsl(google_protobuf_Any_type_url(resource)),
+ "type.googleapis.com/");
+ serialized_resource =
+ UpbStringToAbsl(google_protobuf_Any_value(resource));
+ resource_name = UpbStringToAbsl(
+ envoy_service_discovery_v3_Resource_name(resource_wrapper));
+ }
+ parser->ParseResource(context.arena, i, type_url, resource_name,
+ serialized_resource);
}
return y_absl::OkStatus();
}
@@ -408,7 +419,7 @@ y_absl::Status XdsApi::ParseAdsResponse(const XdsBootstrap::XdsServer& server,
namespace {
void MaybeLogLrsRequest(
- const XdsEncodingContext& context,
+ const XdsApiContext& context,
const envoy_service_load_stats_v3_LoadStatsRequest* request) {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
@@ -421,27 +432,22 @@ void MaybeLogLrsRequest(
}
}
-grpc_slice SerializeLrsRequest(
- const XdsEncodingContext& context,
+TString SerializeLrsRequest(
+ const XdsApiContext& context,
const envoy_service_load_stats_v3_LoadStatsRequest* request) {
size_t output_length;
char* output = envoy_service_load_stats_v3_LoadStatsRequest_serialize(
request, context.arena, &output_length);
- return grpc_slice_from_copied_buffer(output, output_length);
+ return TString(output, output_length);
}
} // namespace
-grpc_slice XdsApi::CreateLrsInitialRequest(
+TString XdsApi::CreateLrsInitialRequest(
const XdsBootstrap::XdsServer& server) {
upb::Arena arena;
- const XdsEncodingContext context = {client_,
- server,
- tracer_,
- symtab_->ptr(),
- arena.ptr(),
- server.ShouldUseV3(),
- certificate_provider_definition_map_};
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
+ server.ShouldUseV3()};
// Create a request.
envoy_service_load_stats_v3_LoadStatsRequest* request =
envoy_service_load_stats_v3_LoadStatsRequest_new(arena.ptr());
@@ -462,7 +468,7 @@ grpc_slice XdsApi::CreateLrsInitialRequest(
namespace {
void LocalityStatsPopulate(
- const XdsEncodingContext& context,
+ const XdsApiContext& context,
envoy_config_endpoint_v3_UpstreamLocalityStats* output,
const XdsLocalityName& locality_name,
const XdsClusterLocalityStats::Snapshot& snapshot) {
@@ -509,19 +515,11 @@ void LocalityStatsPopulate(
} // namespace
-grpc_slice XdsApi::CreateLrsRequest(
+TString XdsApi::CreateLrsRequest(
ClusterLoadReportMap cluster_load_report_map) {
upb::Arena arena;
- // The xDS server info is not actually needed here, so we seed it with an
- // empty value.
- XdsBootstrap::XdsServer empty_server;
- const XdsEncodingContext context = {client_,
- empty_server,
- tracer_,
- symtab_->ptr(),
- arena.ptr(),
- false,
- certificate_provider_definition_map_};
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
+ /*use_v3=*/false};
// Create a request.
envoy_service_load_stats_v3_LoadStatsRequest* request =
envoy_service_load_stats_v3_LoadStatsRequest_new(arena.ptr());
@@ -580,19 +578,18 @@ grpc_slice XdsApi::CreateLrsRequest(
return SerializeLrsRequest(context, request);
}
-grpc_error_handle XdsApi::ParseLrsResponse(const grpc_slice& encoded_response,
- bool* send_all_clusters,
- std::set<TString>* cluster_names,
- Duration* load_reporting_interval) {
+y_absl::Status XdsApi::ParseLrsResponse(y_absl::string_view encoded_response,
+ bool* send_all_clusters,
+ std::set<TString>* cluster_names,
+ Duration* load_reporting_interval) {
upb::Arena arena;
// Decode the response.
const envoy_service_load_stats_v3_LoadStatsResponse* decoded_response =
envoy_service_load_stats_v3_LoadStatsResponse_parse(
- reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(encoded_response)),
- GRPC_SLICE_LENGTH(encoded_response), arena.ptr());
+ encoded_response.data(), encoded_response.size(), arena.ptr());
// Parse the response.
if (decoded_response == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode response.");
+ return y_absl::UnavailableError("Can't decode response.");
}
// Check send_all_clusters.
if (envoy_service_load_stats_v3_LoadStatsResponse_send_all_clusters(
@@ -615,12 +612,12 @@ grpc_error_handle XdsApi::ParseLrsResponse(const grpc_slice& encoded_response,
*load_reporting_interval = Duration::FromSecondsAndNanoseconds(
google_protobuf_Duration_seconds(load_reporting_interval_duration),
google_protobuf_Duration_nanos(load_reporting_interval_duration));
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
namespace {
-google_protobuf_Timestamp* EncodeTimestamp(const XdsEncodingContext& context,
+google_protobuf_Timestamp* EncodeTimestamp(const XdsApiContext& context,
Timestamp value) {
google_protobuf_Timestamp* timestamp =
google_protobuf_Timestamp_new(context.arena);
@@ -640,16 +637,8 @@ TString XdsApi::AssembleClientConfig(
// Fill-in the node information
auto* node = envoy_service_status_v3_ClientConfig_mutable_node(client_config,
arena.ptr());
- // The xDS server info is not actually needed here, so we seed it with an
- // empty value.
- XdsBootstrap::XdsServer empty_server;
- const XdsEncodingContext context = {client_,
- empty_server,
- tracer_,
- symtab_->ptr(),
- arena.ptr(),
- true,
- certificate_provider_definition_map_};
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
+ /*use_v3=*/true};
PopulateNode(context, node_, build_version_, user_agent_name_,
user_agent_version_, node);
// Dump each resource.
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_api.h b/contrib/libs/grpc/src/core/ext/xds/xds_api.h
index f19b874062..97b706842e 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_api.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_api.h
@@ -19,29 +19,32 @@
#include <grpc/support/port_platform.h>
-#include <stdint.h>
+#include <stddef.h>
+#include <map>
#include <set>
-
-#include "envoy/admin/v3/config_dump.upb.h"
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
+#include "envoy/admin/v3/config_dump_shared.upb.h"
+#include "upb/arena.h"
#include "upb/def.hpp"
-#include <grpc/slice.h>
-
-#include "src/core/ext/xds/upb_utils.h"
#include "src/core/ext/xds/xds_bootstrap.h"
#include "src/core/ext/xds/xds_client_stats.h"
-#include "src/core/ext/xds/xds_http_filters.h"
-#include "src/core/lib/channel/status_util.h"
-#include "src/core/lib/matchers/matchers.h"
-#include "src/core/lib/resolver/server_address.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
namespace grpc_core {
class XdsClient;
// TODO(roth): When we have time, split this into multiple pieces:
-// - a common upb-based parsing framework (combine with XdsEncodingContext)
// - ADS request/response handling
// - LRS request/response handling
// - CSDS response generation
@@ -65,9 +68,16 @@ class XdsApi {
virtual y_absl::Status ProcessAdsResponseFields(AdsResponseFields fields) = 0;
// Called to parse each individual resource in the ADS response.
- virtual void ParseResource(const XdsEncodingContext& context, size_t idx,
+ // Note that resource_name is non-empty only when the resource was
+ // wrapped in a Resource wrapper proto.
+ virtual void ParseResource(upb_Arena* arena, size_t idx,
y_absl::string_view type_url,
+ y_absl::string_view resource_name,
y_absl::string_view serialized_resource) = 0;
+
+ // Called when a resource is wrapped in a Resource wrapper proto but
+ // we fail to deserialize the wrapper proto.
+ virtual void ResourceWrapperParsingFailed(size_t idx) = 0;
};
struct ClusterLoadReport {
@@ -138,37 +148,35 @@ class XdsApi {
"");
XdsApi(XdsClient* client, TraceFlag* tracer, const XdsBootstrap::Node* node,
- const CertificateProviderStore::PluginDefinitionMap* map,
upb::SymbolTable* symtab);
// Creates an ADS request.
// Takes ownership of \a error.
- grpc_slice CreateAdsRequest(const XdsBootstrap::XdsServer& server,
- y_absl::string_view type_url,
- y_absl::string_view version,
- y_absl::string_view nonce,
- const std::vector<TString>& resource_names,
- grpc_error_handle error, bool populate_node);
+ TString CreateAdsRequest(const XdsBootstrap::XdsServer& server,
+ y_absl::string_view type_url,
+ y_absl::string_view version,
+ y_absl::string_view nonce,
+ const std::vector<TString>& resource_names,
+ y_absl::Status status, bool populate_node);
// Returns non-OK when failing to deserialize response message.
// Otherwise, all events are reported to the parser.
y_absl::Status ParseAdsResponse(const XdsBootstrap::XdsServer& server,
- const grpc_slice& encoded_response,
+ y_absl::string_view encoded_response,
AdsResponseParserInterface* parser);
// Creates an initial LRS request.
- grpc_slice CreateLrsInitialRequest(const XdsBootstrap::XdsServer& server);
+ TString CreateLrsInitialRequest(const XdsBootstrap::XdsServer& server);
// Creates an LRS request sending a client-side load report.
- grpc_slice CreateLrsRequest(ClusterLoadReportMap cluster_load_report_map);
+ TString CreateLrsRequest(ClusterLoadReportMap cluster_load_report_map);
- // Parses the LRS response and returns \a
- // load_reporting_interval for client-side load reporting. If there is any
- // error, the output config is invalid.
- grpc_error_handle ParseLrsResponse(const grpc_slice& encoded_response,
- bool* send_all_clusters,
- std::set<TString>* cluster_names,
- Duration* load_reporting_interval);
+ // Parses the LRS response and populates send_all_clusters,
+ // cluster_names, and load_reporting_interval.
+ y_absl::Status ParseLrsResponse(y_absl::string_view encoded_response,
+ bool* send_all_clusters,
+ std::set<TString>* cluster_names,
+ Duration* load_reporting_interval);
// Assemble the client config proto message and return the serialized result.
TString AssembleClientConfig(
@@ -178,9 +186,7 @@ class XdsApi {
XdsClient* client_;
TraceFlag* tracer_;
const XdsBootstrap::Node* node_; // Do not own.
- const CertificateProviderStore::PluginDefinitionMap*
- certificate_provider_definition_map_; // Do not own.
- upb::SymbolTable* symtab_; // Do not own.
+ upb::SymbolTable* symtab_; // Do not own.
const TString build_version_;
const TString user_agent_name_;
const TString user_agent_version_;
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap.cc b/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap.cc
index 169bced88e..7b7bf75e8b 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap.cc
@@ -18,553 +18,21 @@
#include "src/core/ext/xds/xds_bootstrap.h"
-#include <errno.h>
-#include <stdlib.h>
+#include "y_absl/types/optional.h"
-#include <vector>
-
-#include "y_absl/strings/str_cat.h"
-#include "y_absl/strings/str_format.h"
-#include "y_absl/strings/str_join.h"
-#include "y_absl/strings/string_view.h"
-
-#include <grpc/grpc_security.h>
-
-#include "src/core/ext/xds/certificate_provider_registry.h"
-#include "src/core/ext/xds/xds_api.h"
-#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/gpr/env.h"
#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/iomgr/load_file.h"
-#include "src/core/lib/json/json_util.h"
-#include "src/core/lib/security/credentials/channel_creds_registry.h"
-#include "src/core/lib/security/credentials/credentials.h"
-#include "src/core/lib/security/credentials/fake/fake_credentials.h"
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/gprpp/env.h"
namespace grpc_core {
-namespace {
-
// TODO(donnadionne): check to see if federation is enabled, this will be
// removed once federation is fully integrated and enabled by default.
bool XdsFederationEnabled() {
- char* value = gpr_getenv("GRPC_EXPERIMENTAL_XDS_FEDERATION");
+ auto value = GetEnv("GRPC_EXPERIMENTAL_XDS_FEDERATION");
+ if (!value.has_value()) return false;
bool parsed_value;
- bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
- gpr_free(value);
+ bool parse_succeeded = gpr_parse_bool_value(value->c_str(), &parsed_value);
return parse_succeeded && parsed_value;
}
-grpc_error_handle ParseChannelCreds(const Json::Object& json, size_t idx,
- XdsBootstrap::XdsServer* server) {
- std::vector<grpc_error_handle> error_list;
- TString type;
- ParseJsonObjectField(json, "type", &type, &error_list);
- const Json::Object* config_ptr = nullptr;
- ParseJsonObjectField(json, "config", &config_ptr, &error_list,
- /*required=*/false);
- // Select the first channel creds type that we support.
- if (server->channel_creds_type.empty() &&
- CoreConfiguration::Get().channel_creds_registry().IsSupported(type)) {
- Json config;
- if (config_ptr != nullptr) config = *config_ptr;
- if (!CoreConfiguration::Get().channel_creds_registry().IsValidConfig(
- type, config)) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "invalid config for channel creds type \"", type, "\"")));
- }
- server->channel_creds_type = std::move(type);
- server->channel_creds_config = std::move(config);
- }
- return GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(
- y_absl::StrCat("errors parsing index ", idx), &error_list);
-}
-
-grpc_error_handle ParseChannelCredsArray(const Json::Array& json,
- XdsBootstrap::XdsServer* server) {
- std::vector<grpc_error_handle> error_list;
- for (size_t i = 0; i < json.size(); ++i) {
- const Json& child = json.at(i);
- if (child.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("array element ", i, " is not an object")));
- } else {
- grpc_error_handle parse_error =
- ParseChannelCreds(child.object_value(), i, server);
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
- }
- }
- if (server->channel_creds_type.empty()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "no known creds type found in \"channel_creds\""));
- }
- return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing \"channel_creds\" array",
- &error_list);
-}
-
-} // namespace
-
-//
-// XdsBootstrap::XdsServer
-//
-
-XdsBootstrap::XdsServer XdsBootstrap::XdsServer::Parse(
- const Json& json, grpc_error_handle* error) {
- std::vector<grpc_error_handle> error_list;
- XdsServer server;
- ParseJsonObjectField(json.object_value(), "server_uri", &server.server_uri,
- &error_list);
- const Json::Array* creds_array = nullptr;
- ParseJsonObjectField(json.object_value(), "channel_creds", &creds_array,
- &error_list);
- if (creds_array != nullptr) {
- grpc_error_handle parse_error =
- ParseChannelCredsArray(*creds_array, &server);
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
- }
- const Json::Array* server_features_array = nullptr;
- ParseJsonObjectField(json.object_value(), "server_features",
- &server_features_array, &error_list, /*required=*/false);
- if (server_features_array != nullptr) {
- for (const Json& feature_json : *server_features_array) {
- if (feature_json.type() == Json::Type::STRING &&
- feature_json.string_value() == "xds_v3") {
- server.server_features.insert(feature_json.string_value());
- }
- }
- }
- *error = GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(
- "errors parsing xds server", &error_list);
- return server;
-}
-
-Json::Object XdsBootstrap::XdsServer::ToJson() const {
- Json::Object channel_creds_json{{"type", channel_creds_type}};
- if (channel_creds_config.type() != Json::Type::JSON_NULL) {
- channel_creds_json["config"] = channel_creds_config;
- }
- Json::Object json{
- {"server_uri", server_uri},
- {"channel_creds", Json::Array{std::move(channel_creds_json)}},
- };
- if (!server_features.empty()) {
- Json::Array server_features_json;
- for (auto& feature : server_features) {
- server_features_json.emplace_back(feature);
- }
- json["server_features"] = std::move(server_features_json);
- }
- return json;
-}
-
-bool XdsBootstrap::XdsServer::ShouldUseV3() const {
- return server_features.find("xds_v3") != server_features.end();
-}
-
-//
-// XdsBootstrap
-//
-
-std::unique_ptr<XdsBootstrap> XdsBootstrap::Create(
- y_absl::string_view json_string, grpc_error_handle* error) {
- Json json = Json::Parse(json_string, error);
- if (*error != GRPC_ERROR_NONE) {
- grpc_error_handle error_out =
- GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
- "Failed to parse bootstrap JSON string", error, 1);
- GRPC_ERROR_UNREF(*error);
- *error = error_out;
- return nullptr;
- }
- return y_absl::make_unique<XdsBootstrap>(std::move(json), error);
-}
-
-XdsBootstrap::XdsBootstrap(Json json, grpc_error_handle* error) {
- if (json.type() != Json::Type::OBJECT) {
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "malformed JSON in bootstrap file");
- return;
- }
- std::vector<grpc_error_handle> error_list;
- auto it = json.mutable_object()->find("xds_servers");
- if (it == json.mutable_object()->end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"xds_servers\" field not present"));
- } else if (it->second.type() != Json::Type::ARRAY) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"xds_servers\" field is not an array"));
- } else {
- grpc_error_handle parse_error = ParseXdsServerList(&it->second, &servers_);
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
- }
- it = json.mutable_object()->find("node");
- if (it != json.mutable_object()->end()) {
- if (it->second.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"node\" field is not an object"));
- } else {
- grpc_error_handle parse_error = ParseNode(&it->second);
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
- }
- }
- if (XdsFederationEnabled()) {
- it = json.mutable_object()->find("authorities");
- if (it != json.mutable_object()->end()) {
- if (it->second.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"authorities\" field is not an object"));
- } else {
- grpc_error_handle parse_error = ParseAuthorities(&it->second);
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
- }
- }
- it = json.mutable_object()->find(
- "client_default_listener_resource_name_template");
- if (it != json.mutable_object()->end()) {
- if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"client_default_listener_resource_name_template\" field is not a "
- "string"));
- } else {
- client_default_listener_resource_name_template_ =
- std::move(*it->second.mutable_string_value());
- }
- }
- }
- it = json.mutable_object()->find("server_listener_resource_name_template");
- if (it != json.mutable_object()->end()) {
- if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"server_listener_resource_name_template\" field is not a string"));
- } else {
- server_listener_resource_name_template_ =
- std::move(*it->second.mutable_string_value());
- }
- }
- it = json.mutable_object()->find("certificate_providers");
- if (it != json.mutable_object()->end()) {
- if (it->second.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"certificate_providers\" field is not an object"));
- } else {
- grpc_error_handle parse_error = ParseCertificateProviders(&it->second);
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
- }
- }
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing xds bootstrap file",
- &error_list);
-}
-
-const XdsBootstrap::Authority* XdsBootstrap::LookupAuthority(
- const TString& name) const {
- auto it = authorities_.find(name);
- if (it != authorities_.end()) {
- return &it->second;
- }
- return nullptr;
-}
-
-bool XdsBootstrap::XdsServerExists(
- const XdsBootstrap::XdsServer& server) const {
- if (server == servers_[0]) return true;
- for (auto& authority : authorities_) {
- for (auto& xds_server : authority.second.xds_servers) {
- if (server == xds_server) return true;
- }
- }
- return false;
-}
-
-grpc_error_handle XdsBootstrap::ParseXdsServerList(
- Json* json, y_absl::InlinedVector<XdsServer, 1>* servers) {
- std::vector<grpc_error_handle> error_list;
- for (size_t i = 0; i < json->mutable_array()->size(); ++i) {
- Json& child = json->mutable_array()->at(i);
- if (child.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("array element ", i, " is not an object")));
- } else {
- grpc_error_handle parse_error;
- servers->emplace_back(XdsServer::Parse(child, &parse_error));
- if (parse_error != GRPC_ERROR_NONE) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("errors parsing index ", i)));
- error_list.push_back(parse_error);
- }
- }
- }
- return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing \"xds_servers\" array",
- &error_list);
-}
-
-grpc_error_handle XdsBootstrap::ParseAuthorities(Json* json) {
- std::vector<grpc_error_handle> error_list;
- for (auto& p : *(json->mutable_object())) {
- if (p.second.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- "field:authorities element error: element is not a object"));
- continue;
- }
- grpc_error_handle parse_error = ParseAuthority(&p.second, p.first);
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
- }
- return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing \"authorities\"",
- &error_list);
-}
-
-grpc_error_handle XdsBootstrap::ParseAuthority(Json* json,
- const TString& name) {
- std::vector<grpc_error_handle> error_list;
- Authority authority;
- auto it =
- json->mutable_object()->find("client_listener_resource_name_template");
- if (it != json->mutable_object()->end()) {
- if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"client_listener_resource_name_template\" field is not a string"));
- } else {
- TString expected_prefix = y_absl::StrCat("xdstp://", name, "/");
- if (!y_absl::StartsWith(it->second.string_value(), expected_prefix)) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("\"client_listener_resource_name_template\" field "
- "must begin with \"",
- expected_prefix, "\"")));
- } else {
- authority.client_listener_resource_name_template =
- std::move(*it->second.mutable_string_value());
- }
- }
- }
- it = json->mutable_object()->find("xds_servers");
- if (it != json->mutable_object()->end()) {
- if (it->second.type() != Json::Type::ARRAY) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"xds_servers\" field is not an array"));
- } else {
- grpc_error_handle parse_error =
- ParseXdsServerList(&it->second, &authority.xds_servers);
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
- }
- }
- if (error_list.empty()) {
- authorities_[name] = std::move(authority);
- }
- return GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(
- y_absl::StrCat("errors parsing authority ", name), &error_list);
-}
-
-grpc_error_handle XdsBootstrap::ParseNode(Json* json) {
- std::vector<grpc_error_handle> error_list;
- node_ = y_absl::make_unique<Node>();
- auto it = json->mutable_object()->find("id");
- if (it != json->mutable_object()->end()) {
- if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("\"id\" field is not a string"));
- } else {
- node_->id = std::move(*it->second.mutable_string_value());
- }
- }
- it = json->mutable_object()->find("cluster");
- if (it != json->mutable_object()->end()) {
- if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"cluster\" field is not a string"));
- } else {
- node_->cluster = std::move(*it->second.mutable_string_value());
- }
- }
- it = json->mutable_object()->find("locality");
- if (it != json->mutable_object()->end()) {
- if (it->second.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"locality\" field is not an object"));
- } else {
- grpc_error_handle parse_error = ParseLocality(&it->second);
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
- }
- }
- it = json->mutable_object()->find("metadata");
- if (it != json->mutable_object()->end()) {
- if (it->second.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"metadata\" field is not an object"));
- } else {
- node_->metadata = std::move(it->second);
- }
- }
- return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing \"node\" object",
- &error_list);
-}
-
-grpc_error_handle XdsBootstrap::ParseLocality(Json* json) {
- std::vector<grpc_error_handle> error_list;
- auto it = json->mutable_object()->find("region");
- if (it != json->mutable_object()->end()) {
- if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"region\" field is not a string"));
- } else {
- node_->locality_region = std::move(*it->second.mutable_string_value());
- }
- }
- it = json->mutable_object()->find("zone");
- if (it != json->mutable_object()->end()) {
- if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"zone\" field is not a string"));
- } else {
- node_->locality_zone = std::move(*it->second.mutable_string_value());
- }
- }
- it = json->mutable_object()->find("sub_zone");
- if (it != json->mutable_object()->end()) {
- if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"sub_zone\" field is not a string"));
- } else {
- node_->locality_sub_zone = std::move(*it->second.mutable_string_value());
- }
- }
- return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing \"locality\" object",
- &error_list);
-}
-
-grpc_error_handle XdsBootstrap::ParseCertificateProviders(Json* json) {
- std::vector<grpc_error_handle> error_list;
- for (auto& certificate_provider : *(json->mutable_object())) {
- if (certificate_provider.second.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "element \"", certificate_provider.first, "\" is not an object")));
- } else {
- grpc_error_handle parse_error = ParseCertificateProvider(
- certificate_provider.first, &certificate_provider.second);
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
- }
- }
- return GRPC_ERROR_CREATE_FROM_VECTOR(
- "errors parsing \"certificate_providers\" object", &error_list);
-}
-
-grpc_error_handle XdsBootstrap::ParseCertificateProvider(
- const TString& instance_name, Json* certificate_provider_json) {
- std::vector<grpc_error_handle> error_list;
- auto it = certificate_provider_json->mutable_object()->find("plugin_name");
- if (it == certificate_provider_json->mutable_object()->end()) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"plugin_name\" field not present"));
- } else if (it->second.type() != Json::Type::STRING) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"plugin_name\" field is not a string"));
- } else {
- TString plugin_name = std::move(*(it->second.mutable_string_value()));
- CertificateProviderFactory* factory =
- CertificateProviderRegistry::LookupCertificateProviderFactory(
- plugin_name);
- if (factory == nullptr) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("Unrecognized plugin name: ", plugin_name)));
- } else {
- RefCountedPtr<CertificateProviderFactory::Config> config;
- it = certificate_provider_json->mutable_object()->find("config");
- if (it != certificate_provider_json->mutable_object()->end()) {
- if (it->second.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "\"config\" field is not an object"));
- } else {
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
- config = factory->CreateCertificateProviderConfig(it->second,
- &parse_error);
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
- }
- } else {
- // "config" is an optional field, so create an empty JSON object.
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
- config = factory->CreateCertificateProviderConfig(Json::Object(),
- &parse_error);
- if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
- }
- certificate_providers_.insert(
- {instance_name, {std::move(plugin_name), std::move(config)}});
- }
- }
- return GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(
- y_absl::StrCat("errors parsing element \"", instance_name, "\""),
- &error_list);
-}
-
-TString XdsBootstrap::ToString() const {
- std::vector<TString> parts;
- if (node_ != nullptr) {
- parts.push_back(y_absl::StrFormat(
- "node={\n"
- " id=\"%s\",\n"
- " cluster=\"%s\",\n"
- " locality={\n"
- " region=\"%s\",\n"
- " zone=\"%s\",\n"
- " sub_zone=\"%s\"\n"
- " },\n"
- " metadata=%s,\n"
- "},\n",
- node_->id, node_->cluster, node_->locality_region, node_->locality_zone,
- node_->locality_sub_zone, node_->metadata.Dump()));
- }
- parts.push_back(
- y_absl::StrFormat("servers=[\n"
- " {\n"
- " uri=\"%s\",\n"
- " creds_type=%s,\n",
- server().server_uri, server().channel_creds_type));
- if (server().channel_creds_config.type() != Json::Type::JSON_NULL) {
- parts.push_back(y_absl::StrFormat(" creds_config=%s,",
- server().channel_creds_config.Dump()));
- }
- if (!server().server_features.empty()) {
- parts.push_back(y_absl::StrCat(" server_features=[",
- y_absl::StrJoin(server().server_features, ", "),
- "],\n"));
- }
- parts.push_back(" }\n],\n");
- if (!client_default_listener_resource_name_template_.empty()) {
- parts.push_back(y_absl::StrFormat(
- "client_default_listener_resource_name_template=\"%s\",\n",
- client_default_listener_resource_name_template_));
- }
- if (!server_listener_resource_name_template_.empty()) {
- parts.push_back(
- y_absl::StrFormat("server_listener_resource_name_template=\"%s\",\n",
- server_listener_resource_name_template_));
- }
- parts.push_back("authorities={\n");
- for (const auto& entry : authorities_) {
- parts.push_back(y_absl::StrFormat(" %s={\n", entry.first));
- parts.push_back(
- y_absl::StrFormat(" client_listener_resource_name_template=\"%s\",\n",
- entry.second.client_listener_resource_name_template));
- parts.push_back(
- y_absl::StrFormat(" servers=[\n"
- " {\n"
- " uri=\"%s\",\n"
- " creds_type=%s,\n",
- entry.second.xds_servers[0].server_uri,
- entry.second.xds_servers[0].channel_creds_type));
- parts.push_back(" },\n");
- }
- parts.push_back("}");
- parts.push_back("certificate_providers={\n");
- for (const auto& entry : certificate_providers_) {
- parts.push_back(
- y_absl::StrFormat(" %s={\n"
- " plugin_name=%s\n"
- " config=%s\n"
- " },\n",
- entry.first, entry.second.plugin_name,
- entry.second.config->ToString()));
- }
- parts.push_back("}");
- return y_absl::StrJoin(parts, "");
-}
-
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap.h b/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap.h
index abccb398b2..90633b75a8 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap.h
@@ -19,124 +19,72 @@
#include <grpc/support/port_platform.h>
-#include <memory>
-#include <set>
#include <util/generic/string.h>
#include <util/string/cast.h>
-#include <vector>
-#include "y_absl/container/inlined_vector.h"
-
-#include <grpc/slice.h>
-
-#include "src/core/ext/xds/certificate_provider_store.h"
-#include "src/core/lib/gprpp/memory.h"
-#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/json/json.h"
-#include "src/core/lib/security/credentials/credentials.h"
namespace grpc_core {
-class XdsClient;
+bool XdsFederationEnabled();
class XdsBootstrap {
public:
- struct Node {
- TString id;
- TString cluster;
- TString locality_region;
- TString locality_zone;
- TString locality_sub_zone;
- Json metadata;
+ class Node {
+ public:
+ virtual ~Node() = default;
+
+ virtual const TString& id() const = 0;
+ virtual const TString& cluster() const = 0;
+ virtual const TString& locality_region() const = 0;
+ virtual const TString& locality_zone() const = 0;
+ virtual const TString& locality_sub_zone() const = 0;
+ virtual const Json::Object& metadata() const = 0;
};
- struct XdsServer {
- TString server_uri;
- TString channel_creds_type;
- Json channel_creds_config;
- std::set<TString> server_features;
+ class XdsServer {
+ public:
+ virtual ~XdsServer() = default;
- static XdsServer Parse(const Json& json, grpc_error_handle* error);
+ virtual const TString& server_uri() const = 0;
+ virtual bool ShouldUseV3() const = 0;
+ virtual bool IgnoreResourceDeletion() const = 0;
- bool operator==(const XdsServer& other) const {
- return (server_uri == other.server_uri &&
- channel_creds_type == other.channel_creds_type &&
- channel_creds_config == other.channel_creds_config &&
- server_features == other.server_features);
- }
+ virtual bool Equals(const XdsServer& other) const = 0;
- bool operator<(const XdsServer& other) const {
- if (server_uri < other.server_uri) return true;
- if (channel_creds_type < other.channel_creds_type) return true;
- if (channel_creds_config.Dump() < other.channel_creds_config.Dump()) {
- return true;
- }
- if (server_features < other.server_features) return true;
- return false;
+ friend bool operator==(const XdsServer& a, const XdsServer& b) {
+ return a.Equals(b);
}
-
- Json::Object ToJson() const;
-
- bool ShouldUseV3() const;
};
- struct Authority {
- TString client_listener_resource_name_template;
- y_absl::InlinedVector<XdsServer, 1> xds_servers;
- };
+ class Authority {
+ public:
+ virtual ~Authority() = default;
- // Creates bootstrap object from json_string.
- // If *error is not GRPC_ERROR_NONE after returning, then there was an
- // error parsing the contents.
- static std::unique_ptr<XdsBootstrap> Create(y_absl::string_view json_string,
- grpc_error_handle* error);
+ virtual const XdsServer* server() const = 0;
+ };
- // Do not instantiate directly -- use Create() above instead.
- XdsBootstrap(Json json, grpc_error_handle* error);
+ virtual ~XdsBootstrap() = default;
- TString ToString() const;
+ virtual TString ToString() const = 0;
// TODO(roth): We currently support only one server. Fix this when we
// add support for fallback for the xds channel.
- const XdsServer& server() const { return servers_[0]; }
- const Node* node() const { return node_.get(); }
- const TString& client_default_listener_resource_name_template() const {
- return client_default_listener_resource_name_template_;
- }
- const TString& server_listener_resource_name_template() const {
- return server_listener_resource_name_template_;
- }
- const std::map<TString, Authority>& authorities() const {
- return authorities_;
- }
- const Authority* LookupAuthority(const TString& name) const;
- const CertificateProviderStore::PluginDefinitionMap& certificate_providers()
- const {
- return certificate_providers_;
- }
- // A util method to check that an xds server exists in this bootstrap file.
- bool XdsServerExists(const XdsServer& server) const;
-
- private:
- grpc_error_handle ParseXdsServerList(
- Json* json, y_absl::InlinedVector<XdsServer, 1>* servers);
- grpc_error_handle ParseAuthorities(Json* json);
- grpc_error_handle ParseAuthority(Json* json, const TString& name);
- grpc_error_handle ParseNode(Json* json);
- grpc_error_handle ParseLocality(Json* json);
- grpc_error_handle ParseCertificateProviders(Json* json);
- grpc_error_handle ParseCertificateProvider(const TString& instance_name,
- Json* certificate_provider_json);
-
- y_absl::InlinedVector<XdsServer, 1> servers_;
- std::unique_ptr<Node> node_;
- TString client_default_listener_resource_name_template_;
- TString server_listener_resource_name_template_;
- std::map<TString, Authority> authorities_;
- CertificateProviderStore::PluginDefinitionMap certificate_providers_;
+ virtual const XdsServer& server() const = 0;
+
+ // Returns the node information, or null if not present in the bootstrap
+ // config.
+ virtual const Node* node() const = 0;
+
+ // Returns a pointer to the specified authority, or null if it does
+ // not exist in this bootstrap config.
+ virtual const Authority* LookupAuthority(const TString& name) const = 0;
+
+ // If the server exists in the bootstrap config, returns a pointer to
+ // the XdsServer instance in the config. Otherwise, returns null.
+ virtual const XdsServer* FindXdsServer(const XdsServer& server) const = 0;
};
} // namespace grpc_core
-#endif /* GRPC_CORE_EXT_XDS_XDS_BOOTSTRAP_H */
+#endif // GRPC_CORE_EXT_XDS_XDS_BOOTSTRAP_H
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap_grpc.cc b/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap_grpc.cc
new file mode 100644
index 0000000000..5e2b18b118
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap_grpc.cc
@@ -0,0 +1,370 @@
+//
+// Copyright 2019 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/xds/xds_bootstrap_grpc.h"
+
+#include <stdlib.h>
+
+#include <algorithm>
+#include <set>
+#include <utility>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/match.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/json/json_object_loader.h"
+#include "src/core/lib/security/certificate_provider/certificate_provider_factory.h"
+#include "src/core/lib/security/credentials/channel_creds_registry.h"
+
+namespace grpc_core {
+
+//
+// GrpcXdsBootstrap::GrpcNode::Locality
+//
+
+const JsonLoaderInterface* GrpcXdsBootstrap::GrpcNode::Locality::JsonLoader(
+ const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<Locality>()
+ .OptionalField("region", &Locality::region)
+ .OptionalField("zone", &Locality::zone)
+ .OptionalField("sub_zone", &Locality::sub_zone)
+ .Finish();
+ return loader;
+}
+
+//
+// GrpcXdsBootstrap::GrpcNode
+//
+
+const JsonLoaderInterface* GrpcXdsBootstrap::GrpcNode::JsonLoader(
+ const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<GrpcNode>()
+ .OptionalField("id", &GrpcNode::id_)
+ .OptionalField("cluster", &GrpcNode::cluster_)
+ .OptionalField("locality", &GrpcNode::locality_)
+ .OptionalField("metadata", &GrpcNode::metadata_)
+ .Finish();
+ return loader;
+}
+
+//
+// GrpcXdsBootstrap::GrpcXdsServer::ChannelCreds
+//
+
+const JsonLoaderInterface*
+GrpcXdsBootstrap::GrpcXdsServer::ChannelCreds::JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<ChannelCreds>()
+ .Field("type", &ChannelCreds::type)
+ .OptionalField("config", &ChannelCreds::config)
+ .Finish();
+ return loader;
+}
+
+//
+// GrpcXdsBootstrap::GrpcXdsServer
+//
+
+namespace {
+
+constexpr y_absl::string_view kServerFeatureXdsV3 = "xds_v3";
+constexpr y_absl::string_view kServerFeatureIgnoreResourceDeletion =
+ "ignore_resource_deletion";
+
+} // namespace
+
+bool GrpcXdsBootstrap::GrpcXdsServer::ShouldUseV3() const {
+ return server_features_.find(TString(kServerFeatureXdsV3)) !=
+ server_features_.end();
+}
+
+bool GrpcXdsBootstrap::GrpcXdsServer::IgnoreResourceDeletion() const {
+ return server_features_.find(TString(
+ kServerFeatureIgnoreResourceDeletion)) != server_features_.end();
+}
+
+bool GrpcXdsBootstrap::GrpcXdsServer::Equals(const XdsServer& other) const {
+ const auto& o = static_cast<const GrpcXdsServer&>(other);
+ return (server_uri_ == o.server_uri_ &&
+ channel_creds_.type == o.channel_creds_.type &&
+ channel_creds_.config == o.channel_creds_.config &&
+ server_features_ == o.server_features_);
+}
+
+const JsonLoaderInterface* GrpcXdsBootstrap::GrpcXdsServer::JsonLoader(
+ const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<GrpcXdsServer>()
+ .Field("server_uri", &GrpcXdsServer::server_uri_)
+ .Finish();
+ return loader;
+}
+
+void GrpcXdsBootstrap::GrpcXdsServer::JsonPostLoad(const Json& json,
+ const JsonArgs& args,
+ ValidationErrors* errors) {
+ // Parse "channel_creds".
+ auto channel_creds_list = LoadJsonObjectField<std::vector<ChannelCreds>>(
+ json.object_value(), args, "channel_creds", errors);
+ if (channel_creds_list.has_value()) {
+ ValidationErrors::ScopedField field(errors, ".channel_creds");
+ for (size_t i = 0; i < channel_creds_list->size(); ++i) {
+ ValidationErrors::ScopedField field(errors, y_absl::StrCat("[", i, "]"));
+ auto& creds = (*channel_creds_list)[i];
+ // Select the first channel creds type that we support.
+ if (channel_creds_.type.empty() &&
+ CoreConfiguration::Get().channel_creds_registry().IsSupported(
+ creds.type)) {
+ if (!CoreConfiguration::Get().channel_creds_registry().IsValidConfig(
+ creds.type, creds.config)) {
+ errors->AddError(y_absl::StrCat(
+ "invalid config for channel creds type \"", creds.type, "\""));
+ continue;
+ }
+ channel_creds_.type = std::move(creds.type);
+ channel_creds_.config = std::move(creds.config);
+ }
+ }
+ if (channel_creds_.type.empty()) {
+ errors->AddError("no known creds type found");
+ }
+ }
+ // Parse "server_features".
+ {
+ ValidationErrors::ScopedField field(errors, ".server_features");
+ auto it = json.object_value().find("server_features");
+ if (it != json.object_value().end()) {
+ if (it->second.type() != Json::Type::ARRAY) {
+ errors->AddError("is not an array");
+ } else {
+ const Json::Array& array = it->second.array_value();
+ for (const Json& feature_json : array) {
+ if (feature_json.type() == Json::Type::STRING &&
+ (feature_json.string_value() == kServerFeatureXdsV3 ||
+ feature_json.string_value() ==
+ kServerFeatureIgnoreResourceDeletion)) {
+ server_features_.insert(feature_json.string_value());
+ }
+ }
+ }
+ }
+ }
+}
+
+Json GrpcXdsBootstrap::GrpcXdsServer::ToJson() const {
+ Json::Object channel_creds_json{{"type", channel_creds_.type}};
+ if (!channel_creds_.config.empty()) {
+ channel_creds_json["config"] = channel_creds_.config;
+ }
+ Json::Object json{
+ {"server_uri", server_uri_},
+ {"channel_creds", Json::Array{std::move(channel_creds_json)}},
+ };
+ if (!server_features_.empty()) {
+ Json::Array server_features_json;
+ for (auto& feature : server_features_) {
+ server_features_json.emplace_back(feature);
+ }
+ json["server_features"] = std::move(server_features_json);
+ }
+ return json;
+}
+
+//
+// GrpcXdsBootstrap::GrpcAuthority
+//
+
+const JsonLoaderInterface* GrpcXdsBootstrap::GrpcAuthority::JsonLoader(
+ const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<GrpcAuthority>()
+ .OptionalField(
+ "client_listener_resource_name_template",
+ &GrpcAuthority::client_listener_resource_name_template_)
+ .OptionalField("xds_servers", &GrpcAuthority::servers_)
+ .Finish();
+ return loader;
+}
+
+//
+// GrpcXdsBootstrap
+//
+
+y_absl::StatusOr<std::unique_ptr<GrpcXdsBootstrap>> GrpcXdsBootstrap::Create(
+ y_absl::string_view json_string) {
+ auto json = Json::Parse(json_string);
+ if (!json.ok()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "Failed to parse bootstrap JSON string: ", json.status().ToString()));
+ }
+ // Validate JSON.
+ class XdsJsonArgs : public JsonArgs {
+ public:
+ bool IsEnabled(y_absl::string_view key) const override {
+ if (key == "federation") return XdsFederationEnabled();
+ return true;
+ }
+ };
+ auto bootstrap = LoadFromJson<GrpcXdsBootstrap>(*json, XdsJsonArgs());
+ if (!bootstrap.ok()) return bootstrap.status();
+ return y_absl::make_unique<GrpcXdsBootstrap>(std::move(*bootstrap));
+}
+
+const JsonLoaderInterface* GrpcXdsBootstrap::JsonLoader(const JsonArgs&) {
+ static const auto* loader =
+ JsonObjectLoader<GrpcXdsBootstrap>()
+ .Field("xds_servers", &GrpcXdsBootstrap::servers_)
+ .OptionalField("node", &GrpcXdsBootstrap::node_)
+ .OptionalField("certificate_providers",
+ &GrpcXdsBootstrap::certificate_providers_)
+ .OptionalField(
+ "server_listener_resource_name_template",
+ &GrpcXdsBootstrap::server_listener_resource_name_template_)
+ .OptionalField("authorities", &GrpcXdsBootstrap::authorities_,
+ "federation")
+ .OptionalField("client_default_listener_resource_name_template",
+ &GrpcXdsBootstrap::
+ client_default_listener_resource_name_template_,
+ "federation")
+ .Finish();
+ return loader;
+}
+
+void GrpcXdsBootstrap::JsonPostLoad(const Json& /*json*/,
+ const JsonArgs& /*args*/,
+ ValidationErrors* errors) {
+ // Verify that each authority has the right prefix in the
+ // client_listener_resource_name_template field.
+ {
+ ValidationErrors::ScopedField field(errors, ".authorities");
+ for (const auto& p : authorities_) {
+ const TString& name = p.first;
+ const GrpcAuthority& authority =
+ static_cast<const GrpcAuthority&>(p.second);
+ ValidationErrors::ScopedField field(
+ errors, y_absl::StrCat("[\"", name,
+ "\"].client_listener_resource_name_template"));
+ TString expected_prefix = y_absl::StrCat("xdstp://", name, "/");
+ if (!authority.client_listener_resource_name_template().empty() &&
+ !y_absl::StartsWith(authority.client_listener_resource_name_template(),
+ expected_prefix)) {
+ errors->AddError(
+ y_absl::StrCat("field must begin with \"", expected_prefix, "\""));
+ }
+ }
+ }
+}
+
+TString GrpcXdsBootstrap::ToString() const {
+ std::vector<TString> parts;
+ if (node_.has_value()) {
+ parts.push_back(
+ y_absl::StrFormat("node={\n"
+ " id=\"%s\",\n"
+ " cluster=\"%s\",\n"
+ " locality={\n"
+ " region=\"%s\",\n"
+ " zone=\"%s\",\n"
+ " sub_zone=\"%s\"\n"
+ " },\n"
+ " metadata=%s,\n"
+ "},\n",
+ node_->id(), node_->cluster(), node_->locality_region(),
+ node_->locality_zone(), node_->locality_sub_zone(),
+ Json{node_->metadata()}.Dump()));
+ }
+ parts.push_back(
+ y_absl::StrFormat("servers=[\n%s\n],\n", servers_[0].ToJson().Dump()));
+ if (!client_default_listener_resource_name_template_.empty()) {
+ parts.push_back(y_absl::StrFormat(
+ "client_default_listener_resource_name_template=\"%s\",\n",
+ client_default_listener_resource_name_template_));
+ }
+ if (!server_listener_resource_name_template_.empty()) {
+ parts.push_back(
+ y_absl::StrFormat("server_listener_resource_name_template=\"%s\",\n",
+ server_listener_resource_name_template_));
+ }
+ parts.push_back("authorities={\n");
+ for (const auto& entry : authorities_) {
+ parts.push_back(y_absl::StrFormat(" %s={\n", entry.first));
+ parts.push_back(
+ y_absl::StrFormat(" client_listener_resource_name_template=\"%s\",\n",
+ entry.second.client_listener_resource_name_template()));
+ if (entry.second.server() != nullptr) {
+ parts.push_back(y_absl::StrFormat(
+ " servers=[\n%s\n],\n",
+ static_cast<const GrpcXdsServer*>(entry.second.server())
+ ->ToJson()
+ .Dump()));
+ }
+ parts.push_back(" },\n");
+ }
+ parts.push_back("}\n");
+ parts.push_back("certificate_providers={\n");
+ for (const auto& entry : certificate_providers_) {
+ parts.push_back(
+ y_absl::StrFormat(" %s={\n"
+ " plugin_name=%s\n"
+ " config=%s\n"
+ " },\n",
+ entry.first, entry.second.plugin_name,
+ entry.second.config->ToString()));
+ }
+ parts.push_back("}");
+ return y_absl::StrJoin(parts, "");
+}
+
+const XdsBootstrap::Authority* GrpcXdsBootstrap::LookupAuthority(
+ const TString& name) const {
+ auto it = authorities_.find(name);
+ if (it != authorities_.end()) {
+ return &it->second;
+ }
+ return nullptr;
+}
+
+const XdsBootstrap::XdsServer* GrpcXdsBootstrap::FindXdsServer(
+ const XdsBootstrap::XdsServer& server) const {
+ if (static_cast<const GrpcXdsServer&>(server) == servers_[0]) {
+ return &servers_[0];
+ }
+ for (auto& p : authorities_) {
+ const auto* authority_server =
+ static_cast<const GrpcXdsServer*>(p.second.server());
+ if (authority_server != nullptr && *authority_server == server) {
+ return authority_server;
+ }
+ }
+ return nullptr;
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap_grpc.h b/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap_grpc.h
new file mode 100644
index 0000000000..37686c0269
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_bootstrap_grpc.h
@@ -0,0 +1,170 @@
+//
+// Copyright 2019 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_EXT_XDS_XDS_BOOTSTRAP_GRPC_H
+#define GRPC_CORE_EXT_XDS_XDS_BOOTSTRAP_GRPC_H
+
+#include <grpc/support/port_platform.h>
+
+#include <map>
+#include <memory>
+#include <set>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include "src/core/ext/xds/certificate_provider_store.h"
+#include "src/core/ext/xds/xds_bootstrap.h"
+#include "src/core/lib/gprpp/validation_errors.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/json/json_args.h"
+#include "src/core/lib/json/json_object_loader.h"
+
+namespace grpc_core {
+
+class GrpcXdsBootstrap : public XdsBootstrap {
+ public:
+ class GrpcNode : public Node {
+ public:
+ const TString& id() const override { return id_; }
+ const TString& cluster() const override { return cluster_; }
+ const TString& locality_region() const override {
+ return locality_.region;
+ }
+ const TString& locality_zone() const override { return locality_.zone; }
+ const TString& locality_sub_zone() const override {
+ return locality_.sub_zone;
+ }
+ const Json::Object& metadata() const override { return metadata_; }
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+
+ private:
+ struct Locality {
+ TString region;
+ TString zone;
+ TString sub_zone;
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ };
+
+ TString id_;
+ TString cluster_;
+ Locality locality_;
+ Json::Object metadata_;
+ };
+
+ class GrpcXdsServer : public XdsServer {
+ public:
+ const TString& server_uri() const override { return server_uri_; }
+
+ bool ShouldUseV3() const override;
+ bool IgnoreResourceDeletion() const override;
+
+ bool Equals(const XdsServer& other) const override;
+
+ const TString& channel_creds_type() const {
+ return channel_creds_.type;
+ }
+ const Json::Object& channel_creds_config() const {
+ return channel_creds_.config;
+ }
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs& args,
+ ValidationErrors* errors);
+
+ Json ToJson() const;
+
+ private:
+ struct ChannelCreds {
+ TString type;
+ Json::Object config;
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ };
+
+ TString server_uri_;
+ ChannelCreds channel_creds_;
+ std::set<TString> server_features_;
+ };
+
+ class GrpcAuthority : public Authority {
+ public:
+ const XdsServer* server() const override {
+ return servers_.empty() ? nullptr : &servers_[0];
+ }
+
+ const TString& client_listener_resource_name_template() const {
+ return client_listener_resource_name_template_;
+ }
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+
+ private:
+ std::vector<GrpcXdsServer> servers_;
+ TString client_listener_resource_name_template_;
+ };
+
+ // Creates bootstrap object from json_string.
+ static y_absl::StatusOr<std::unique_ptr<GrpcXdsBootstrap>> Create(
+ y_absl::string_view json_string);
+
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&);
+ void JsonPostLoad(const Json& json, const JsonArgs& args,
+ ValidationErrors* errors);
+
+ TString ToString() const override;
+
+ const XdsServer& server() const override { return servers_[0]; }
+ const Node* node() const override {
+ return node_.has_value() ? &*node_ : nullptr;
+ }
+ const Authority* LookupAuthority(const TString& name) const override;
+ const XdsServer* FindXdsServer(const XdsServer& server) const override;
+
+ const TString& client_default_listener_resource_name_template() const {
+ return client_default_listener_resource_name_template_;
+ }
+ const TString& server_listener_resource_name_template() const {
+ return server_listener_resource_name_template_;
+ }
+ const CertificateProviderStore::PluginDefinitionMap& certificate_providers()
+ const {
+ return certificate_providers_;
+ }
+
+ // Exposed for testing purposes only.
+ const std::map<TString, GrpcAuthority>& authorities() const {
+ return authorities_;
+ }
+
+ private:
+ std::vector<GrpcXdsServer> servers_;
+ y_absl::optional<GrpcNode> node_;
+ TString client_default_listener_resource_name_template_;
+ TString server_listener_resource_name_template_;
+ std::map<TString, GrpcAuthority> authorities_;
+ CertificateProviderStore::PluginDefinitionMap certificate_providers_;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_XDS_XDS_BOOTSTRAP_GRPC_H
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_certificate_provider.cc b/contrib/libs/grpc/src/core/ext/xds/xds_certificate_provider.cc
index 0219cf0857..ace82aa42d 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_certificate_provider.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_certificate_provider.cc
@@ -20,8 +20,17 @@
#include "src/core/ext/xds/xds_certificate_provider.h"
+#include <utility>
+
#include "y_absl/functional/bind_front.h"
-#include "y_absl/strings/str_cat.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/support/log.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/security/security_connector/ssl_utils.h"
namespace grpc_core {
@@ -51,7 +60,7 @@ class RootCertificatesWatcher
void OnError(grpc_error_handle root_cert_error,
grpc_error_handle identity_cert_error) override {
- if (root_cert_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(root_cert_error)) {
parent_->SetErrorForCert(cert_name_, root_cert_error /* pass the ref */,
y_absl::nullopt);
}
@@ -86,7 +95,7 @@ class IdentityCertificatesWatcher
void OnError(grpc_error_handle root_cert_error,
grpc_error_handle identity_cert_error) override {
- if (identity_cert_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(identity_cert_error)) {
parent_->SetErrorForCert(cert_name_, y_absl::nullopt,
identity_cert_error /* pass the ref */);
}
@@ -263,6 +272,11 @@ XdsCertificateProvider::~XdsCertificateProvider() {
distributor_->SetWatchStatusCallback(nullptr);
}
+UniqueTypeName XdsCertificateProvider::type() const {
+ static UniqueTypeName::Factory kFactory("Xds");
+ return kFactory.Create();
+}
+
bool XdsCertificateProvider::ProvidesRootCerts(const TString& cert_name) {
MutexLock lock(&mu_);
auto it = certificate_state_map_.find(cert_name);
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_certificate_provider.h b/contrib/libs/grpc/src/core/ext/xds/xds_certificate_provider.h
index fea32008db..825a2a4ee1 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_certificate_provider.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_certificate_provider.h
@@ -21,8 +21,24 @@
#include <grpc/support/port_platform.h>
-#include "src/core/ext/xds/xds_api.h"
+#include <map>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
+
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
#include "src/core/lib/matchers/matchers.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
#define GRPC_ARG_XDS_CERTIFICATE_PROVIDER \
@@ -35,10 +51,21 @@ class XdsCertificateProvider : public grpc_tls_certificate_provider {
XdsCertificateProvider();
~XdsCertificateProvider() override;
+ static y_absl::string_view ChannelArgName() {
+ return GRPC_ARG_XDS_CERTIFICATE_PROVIDER;
+ }
+
+ static int ChannelArgsCompare(const XdsCertificateProvider* a,
+ const XdsCertificateProvider* b) {
+ return QsortCompare(a, b);
+ }
+
RefCountedPtr<grpc_tls_certificate_distributor> distributor() const override {
return distributor_;
}
+ UniqueTypeName type() const override;
+
bool ProvidesRootCerts(const TString& cert_name);
void UpdateRootCertNameAndDistributor(
const TString& cert_name, y_absl::string_view root_cert_name,
@@ -124,6 +151,12 @@ class XdsCertificateProvider : public grpc_tls_certificate_provider {
bool require_client_certificate_ = false;
};
+ int CompareImpl(const grpc_tls_certificate_provider* other) const override {
+ // TODO(yashykt): Maybe do something better here.
+ return QsortCompare(static_cast<const grpc_tls_certificate_provider*>(this),
+ other);
+ }
+
void WatchStatusCallback(TString cert_name, bool root_being_watched,
bool identity_being_watched);
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_channel_stack_modifier.cc b/contrib/libs/grpc/src/core/ext/xds/xds_channel_stack_modifier.cc
index 194350ec2c..618e17bdba 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_channel_stack_modifier.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_channel_stack_modifier.cc
@@ -20,8 +20,17 @@
#include "src/core/ext/xds/xds_channel_stack_modifier.h"
+#include <limits.h>
+#include <string.h>
+
+#include <algorithm>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/surface/channel_init.h"
+#include "src/core/lib/surface/channel_stack_type.h"
namespace grpc_core {
namespace {
@@ -53,7 +62,7 @@ bool XdsChannelStackModifier::ModifyChannelStack(ChannelStackBuilder* builder) {
// Insert the filters after the census filter if present.
auto it = builder->mutable_stack()->begin();
while (it != builder->mutable_stack()->end()) {
- const char* filter_name_at_it = it->filter->name;
+ const char* filter_name_at_it = (*it)->name;
if (strcmp("census_server", filter_name_at_it) == 0 ||
strcmp("opencensus_server", filter_name_at_it) == 0) {
break;
@@ -71,8 +80,7 @@ bool XdsChannelStackModifier::ModifyChannelStack(ChannelStackBuilder* builder) {
++it;
}
for (const grpc_channel_filter* filter : filters_) {
- it = builder->mutable_stack()->insert(
- it, ChannelStackBuilder::StackEntry{filter, nullptr});
+ it = builder->mutable_stack()->insert(it, filter);
++it;
}
return true;
@@ -84,6 +92,10 @@ grpc_arg XdsChannelStackModifier::MakeChannelArg() const {
const_cast<XdsChannelStackModifier*>(this), &kChannelArgVtable);
}
+y_absl::string_view XdsChannelStackModifier::ChannelArgName() {
+ return kXdsChannelStackModifierChannelArgName;
+}
+
RefCountedPtr<XdsChannelStackModifier>
XdsChannelStackModifier::GetFromChannelArgs(const grpc_channel_args& args) {
XdsChannelStackModifier* config_selector_provider =
@@ -96,9 +108,8 @@ XdsChannelStackModifier::GetFromChannelArgs(const grpc_channel_args& args) {
void RegisterXdsChannelStackModifier(CoreConfiguration::Builder* builder) {
builder->channel_init()->RegisterStage(
GRPC_SERVER_CHANNEL, INT_MAX, [](ChannelStackBuilder* builder) {
- RefCountedPtr<XdsChannelStackModifier> channel_stack_modifier =
- XdsChannelStackModifier::GetFromChannelArgs(
- *builder->channel_args());
+ auto channel_stack_modifier =
+ builder->channel_args().GetObjectRef<XdsChannelStackModifier>();
if (channel_stack_modifier != nullptr) {
return channel_stack_modifier->ModifyChannelStack(builder);
}
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_channel_stack_modifier.h b/contrib/libs/grpc/src/core/ext/xds/xds_channel_stack_modifier.h
index 0a164c2c41..6e2fcde964 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_channel_stack_modifier.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_channel_stack_modifier.h
@@ -21,11 +21,18 @@
#include <grpc/support/port_platform.h>
+#include <utility>
#include <vector>
-#include "src/core/lib/channel/channel_stack.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
+
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack_builder.h"
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
namespace grpc_core {
@@ -43,6 +50,11 @@ class XdsChannelStackModifier : public RefCounted<XdsChannelStackModifier> {
grpc_arg MakeChannelArg() const;
static RefCountedPtr<XdsChannelStackModifier> GetFromChannelArgs(
const grpc_channel_args& args);
+ static y_absl::string_view ChannelArgName();
+ static int ChannelArgsCompare(const XdsChannelStackModifier* a,
+ const XdsChannelStackModifier* b) {
+ return QsortCompare(a, b);
+ }
private:
std::vector<const grpc_channel_filter*> filters_;
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_client.cc b/contrib/libs/grpc/src/core/ext/xds/xds_client.cc
index ab44dbb870..fc3711a0b6 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_client.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_client.cc
@@ -19,47 +19,34 @@
#include "src/core/ext/xds/xds_client.h"
#include <inttypes.h>
-#include <limits.h>
#include <string.h>
-#include "y_absl/container/inlined_vector.h"
+#include <algorithm>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/strings/match.h"
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/str_split.h"
#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/strip.h"
+#include "y_absl/types/optional.h"
+#include "upb/arena.h"
-#include <grpc/byte_buffer_reader.h>
-#include <grpc/grpc.h>
-#include <grpc/support/alloc.h>
-#include <grpc/support/time.h>
+#include <grpc/event_engine/event_engine.h>
+#include <grpc/support/log.h>
-#include "src/core/ext/filters/client_channel/client_channel.h"
#include "src/core/ext/xds/xds_api.h"
#include "src/core/ext/xds/xds_bootstrap.h"
-#include "src/core/ext/xds/xds_channel_args.h"
#include "src/core/ext/xds/xds_client_stats.h"
-#include "src/core/ext/xds/xds_cluster.h"
-#include "src/core/ext/xds/xds_endpoint.h"
-#include "src/core/ext/xds/xds_http_filters.h"
-#include "src/core/ext/xds/xds_listener.h"
-#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/backoff/backoff.h"
-#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/gpr/env.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/event_engine/default_event_engine.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/iomgr/sockaddr.h"
-#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/security/credentials/channel_creds_registry.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
-#include "src/core/lib/surface/call.h"
-#include "src/core/lib/surface/channel.h"
-#include "src/core/lib/surface/lame_client.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/uri/uri_parser.h"
#define GRPC_XDS_INITIAL_CONNECT_BACKOFF_SECONDS 1
@@ -70,56 +57,12 @@
namespace grpc_core {
+using ::grpc_event_engine::experimental::EventEngine;
+using ::grpc_event_engine::experimental::GetDefaultEventEngine;
+
TraceFlag grpc_xds_client_trace(false, "xds_client");
TraceFlag grpc_xds_client_refcount_trace(false, "xds_client_refcount");
-namespace {
-
-Mutex* g_mu = nullptr;
-
-const grpc_channel_args* g_channel_args Y_ABSL_GUARDED_BY(*g_mu) = nullptr;
-XdsClient* g_xds_client Y_ABSL_GUARDED_BY(*g_mu) = nullptr;
-char* g_fallback_bootstrap_config Y_ABSL_GUARDED_BY(*g_mu) = nullptr;
-
-} // namespace
-
-class XdsClient::Notifier {
- public:
- // Helper template function to invoke `OnError()` on a list of watchers \a
- // watchers_list within \a work_serializer. Works with all 4 resource types.
- template <class T>
- static void ScheduleNotifyWatchersOnErrorInWorkSerializer(
- XdsClient* xds_client, const T& watchers_list, grpc_error_handle error,
- const DebugLocation& location) {
- xds_client->work_serializer_.Schedule(
- [watchers_list, error]()
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&xds_client->work_serializer_) {
- for (const auto& p : watchers_list) {
- p.first->OnError(GRPC_ERROR_REF(error));
- }
- GRPC_ERROR_UNREF(error);
- },
- location);
- }
-
- // Helper template function to invoke `OnResourceDoesNotExist()` on a list of
- // watchers \a watchers_list within \a work_serializer. Works with all 4
- // resource types.
- template <class T>
- static void ScheduleNotifyWatchersOnResourceDoesNotExistInWorkSerializer(
- XdsClient* xds_client, const T& watchers_list,
- const DebugLocation& location) {
- xds_client->work_serializer_.Schedule(
- [watchers_list]()
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&xds_client->work_serializer_) {
- for (const auto& p : watchers_list) {
- p.first->OnResourceDoesNotExist();
- }
- },
- location);
- }
-};
-
//
// Internal class declarations
//
@@ -132,9 +75,12 @@ class XdsClient::ChannelState::RetryableCall
public:
explicit RetryableCall(WeakRefCountedPtr<ChannelState> chand);
- void Orphan() override;
+ // Disable thread-safety analysis because this method is called via
+ // OrphanablePtr<>, but there's no way to pass the lock annotation
+ // through there.
+ void Orphan() override Y_ABSL_NO_THREAD_SAFETY_ANALYSIS;
- void OnCallFinishedLocked();
+ void OnCallFinishedLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
T* calld() const { return calld_.get(); }
ChannelState* chand() const { return chand_.get(); }
@@ -143,9 +89,9 @@ class XdsClient::ChannelState::RetryableCall
private:
void StartNewCallLocked();
- void StartRetryTimerLocked();
- static void OnRetryTimer(void* arg, grpc_error_handle error);
- void OnRetryTimerLocked(grpc_error_handle error);
+ void StartRetryTimerLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
+
+ void OnRetryTimer();
// The wrapped xds call that talks to the xds server. It's instantiated
// every time we start a new call. It's null during call retry backoff.
@@ -155,9 +101,8 @@ class XdsClient::ChannelState::RetryableCall
// Retry state.
BackOff backoff_;
- grpc_timer retry_timer_;
- grpc_closure on_retry_timer_;
- bool retry_timer_callback_pending_ = false;
+ y_absl::optional<EventEngine::TaskHandle> timer_handle_
+ Y_ABSL_GUARDED_BY(&XdsClient::mu_);
bool shutting_down_ = false;
};
@@ -168,7 +113,6 @@ class XdsClient::ChannelState::AdsCallState
public:
// The ctor and dtor should not be used directly.
explicit AdsCallState(RefCountedPtr<RetryableCall<AdsCallState>> parent);
- ~AdsCallState() override;
void Orphan() override;
@@ -177,7 +121,8 @@ class XdsClient::ChannelState::AdsCallState
XdsClient* xds_client() const { return chand()->xds_client(); }
bool seen_response() const { return seen_response_; }
- void SubscribeLocked(const XdsResourceType* type, const XdsResourceName& name)
+ void SubscribeLocked(const XdsResourceType* type, const XdsResourceName& name,
+ bool delay_send)
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
void UnsubscribeLocked(const XdsResourceType* type,
const XdsResourceName& name, bool delay_unsubscription)
@@ -205,110 +150,139 @@ class XdsClient::ChannelState::AdsCallState
y_absl::Status ProcessAdsResponseFields(AdsResponseFields fields) override
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
- void ParseResource(const XdsEncodingContext& context, size_t idx,
- y_absl::string_view type_url,
+ void ParseResource(upb_Arena* arena, size_t idx, y_absl::string_view type_url,
+ y_absl::string_view resource_name,
y_absl::string_view serialized_resource) override
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
+ void ResourceWrapperParsingFailed(size_t idx) override;
+
Result TakeResult() { return std::move(result_); }
private:
XdsClient* xds_client() const { return ads_call_state_->xds_client(); }
AdsCallState* ads_call_state_;
- const Timestamp update_time_ = ExecCtx::Get()->Now();
+ const Timestamp update_time_ = Timestamp::Now();
Result result_;
};
class ResourceTimer : public InternallyRefCounted<ResourceTimer> {
public:
ResourceTimer(const XdsResourceType* type, const XdsResourceName& name)
- : type_(type), name_(name) {
- GRPC_CLOSURE_INIT(&timer_callback_, OnTimer, this,
- grpc_schedule_on_exec_ctx);
- }
+ : type_(type), name_(name) {}
- void Orphan() override {
+ // Disable thread-safety analysis because this method is called via
+ // OrphanablePtr<>, but there's no way to pass the lock annotation
+ // through there.
+ void Orphan() override Y_ABSL_NO_THREAD_SAFETY_ANALYSIS {
MaybeCancelTimer();
Unref(DEBUG_LOCATION, "Orphan");
}
- void MaybeStartTimer(RefCountedPtr<AdsCallState> ads_calld) {
- if (timer_started_) return;
- timer_started_ = true;
+ void MaybeStartTimer(RefCountedPtr<AdsCallState> ads_calld)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
+ if (!timer_start_needed_) return;
+ timer_start_needed_ = false;
+ // Check if we already have a cached version of this resource
+ // (i.e., if this is the initial request for the resource after an
+ // ADS stream restart). If so, we don't start the timer, because
+ // (a) we already have the resource and (b) the server may
+ // optimize by not resending the resource that we already have.
+ auto& authority_state =
+ ads_calld->xds_client()->authority_state_map_[name_.authority];
+ ResourceState& state = authority_state.resource_map[type_][name_.key];
+ if (state.resource != nullptr) return;
+ // Start timer.
ads_calld_ = std::move(ads_calld);
- Ref(DEBUG_LOCATION, "timer").release();
- timer_pending_ = true;
- grpc_timer_init(
- &timer_,
- ExecCtx::Get()->Now() + ads_calld_->xds_client()->request_timeout_,
- &timer_callback_);
+ timer_handle_ = GetDefaultEventEngine()->RunAfter(
+ ads_calld_->xds_client()->request_timeout_,
+ [self = Ref(DEBUG_LOCATION, "timer")]() {
+ ApplicationCallbackExecCtx callback_exec_ctx;
+ ExecCtx exec_ctx;
+ self->OnTimer();
+ });
}
- void MaybeCancelTimer() {
- if (timer_pending_) {
- grpc_timer_cancel(&timer_);
- timer_pending_ = false;
+ void MaybeCancelTimer() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
+ // If the timer hasn't been started yet, make sure we don't start
+ // it later. This can happen if the last watch for an LDS or CDS
+ // resource is cancelled and then restarted, both while an ADS
+ // request for a different resource type is being sent (causing
+ // the unsubscription and then resubscription requests to be
+ // queued), and then we get a response for the LDS or CDS resource.
+ // In that case, we would call MaybeCancelTimer() when we receive the
+ // response and then MaybeStartTimer() when we finally send the new
+ // LDS or CDS request, thus causing the timer to fire when it shouldn't.
+ // For details, see https://github.com/grpc/grpc/issues/29583.
+ // TODO(roth): Find a way to write a test for this case.
+ timer_start_needed_ = false;
+ if (timer_handle_.has_value()) {
+ GetDefaultEventEngine()->Cancel(*timer_handle_);
+ timer_handle_.reset();
}
}
private:
- static void OnTimer(void* arg, grpc_error_handle error) {
- ResourceTimer* self = static_cast<ResourceTimer*>(arg);
+ void OnTimer() {
{
- MutexLock lock(&self->ads_calld_->xds_client()->mu_);
- self->OnTimerLocked(GRPC_ERROR_REF(error));
- }
- self->ads_calld_->xds_client()->work_serializer_.DrainQueue();
- self->ads_calld_.reset();
- self->Unref(DEBUG_LOCATION, "timer");
- }
-
- void OnTimerLocked(grpc_error_handle error)
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
- if (error == GRPC_ERROR_NONE && timer_pending_) {
- timer_pending_ = false;
- grpc_error_handle watcher_error =
- GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrFormat(
- "timeout obtaining resource {type=%s name=%s} from xds server",
- type_->type_url(),
- XdsClient::ConstructFullXdsResourceName(
- name_.authority, type_->type_url(), name_.key)));
- watcher_error = grpc_error_set_int(
- watcher_error, GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
- gpr_log(GPR_INFO, "[xds_client %p] xds server %s: %s",
- ads_calld_->xds_client(),
- ads_calld_->chand()->server_.server_uri.c_str(),
- grpc_error_std_string(watcher_error).c_str());
+ MutexLock lock(&ads_calld_->xds_client()->mu_);
+ if (timer_handle_.has_value()) {
+ timer_handle_.reset();
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_client %p] xds server %s: timeout obtaining resource "
+ "{type=%s name=%s} from xds server",
+ ads_calld_->xds_client(),
+ ads_calld_->chand()->server_.server_uri().c_str(),
+ TString(type_->type_url()).c_str(),
+ XdsClient::ConstructFullXdsResourceName(
+ name_.authority, type_->type_url(), name_.key)
+ .c_str());
+ }
+ auto& authority_state =
+ ads_calld_->xds_client()->authority_state_map_[name_.authority];
+ ResourceState& state = authority_state.resource_map[type_][name_.key];
+ state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
+ ads_calld_->xds_client()->NotifyWatchersOnResourceDoesNotExist(
+ state.watchers);
}
- auto& authority_state =
- ads_calld_->xds_client()->authority_state_map_[name_.authority];
- ResourceState& state = authority_state.resource_map[type_][name_.key];
- state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
- Notifier::ScheduleNotifyWatchersOnErrorInWorkSerializer(
- ads_calld_->xds_client(), state.watchers, watcher_error,
- DEBUG_LOCATION);
}
- GRPC_ERROR_UNREF(error);
+ ads_calld_->xds_client()->work_serializer_.DrainQueue();
+ ads_calld_.reset();
}
const XdsResourceType* type_;
const XdsResourceName name_;
RefCountedPtr<AdsCallState> ads_calld_;
- bool timer_started_ = false;
- bool timer_pending_ = false;
- grpc_timer timer_;
- grpc_closure timer_callback_;
+ bool timer_start_needed_ Y_ABSL_GUARDED_BY(&XdsClient::mu_) = true;
+ y_absl::optional<EventEngine::TaskHandle> timer_handle_
+ Y_ABSL_GUARDED_BY(&XdsClient::mu_);
};
- struct ResourceTypeState {
- ~ResourceTypeState() { GRPC_ERROR_UNREF(error); }
+ class StreamEventHandler
+ : public XdsTransportFactory::XdsTransport::StreamingCall::EventHandler {
+ public:
+ explicit StreamEventHandler(RefCountedPtr<AdsCallState> ads_calld)
+ : ads_calld_(std::move(ads_calld)) {}
+
+ void OnRequestSent(bool ok) override { ads_calld_->OnRequestSent(ok); }
+ void OnRecvMessage(y_absl::string_view payload) override {
+ ads_calld_->OnRecvMessage(payload);
+ }
+ void OnStatusReceived(y_absl::Status status) override {
+ ads_calld_->OnStatusReceived(std::move(status));
+ }
- // Nonce and error for this resource type.
+ private:
+ RefCountedPtr<AdsCallState> ads_calld_;
+ };
+
+ struct ResourceTypeState {
+ // Nonce and status for this resource type.
TString nonce;
- grpc_error_handle error = GRPC_ERROR_NONE;
+ y_absl::Status status;
// Subscribed resources of this type.
std::map<TString /*authority*/,
@@ -319,47 +293,25 @@ class XdsClient::ChannelState::AdsCallState
void SendMessageLocked(const XdsResourceType* type)
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
- static void OnRequestSent(void* arg, grpc_error_handle error);
- void OnRequestSentLocked(grpc_error_handle error)
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
- static void OnResponseReceived(void* arg, grpc_error_handle error);
- bool OnResponseReceivedLocked()
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
- static void OnStatusReceived(void* arg, grpc_error_handle error);
- void OnStatusReceivedLocked(grpc_error_handle error)
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
+ void OnRequestSent(bool ok);
+ void OnRecvMessage(y_absl::string_view payload);
+ void OnStatusReceived(y_absl::Status status);
bool IsCurrentCallOnChannel() const;
// Constructs a list of resource names of a given type for an ADS
// request. Also starts the timer for each resource if needed.
- std::vector<TString> ResourceNamesForRequest(const XdsResourceType* type);
+ std::vector<TString> ResourceNamesForRequest(const XdsResourceType* type)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
// The owning RetryableCall<>.
RefCountedPtr<RetryableCall<AdsCallState>> parent_;
+ OrphanablePtr<XdsTransportFactory::XdsTransport::StreamingCall> call_;
+
bool sent_initial_message_ = false;
bool seen_response_ = false;
-
- // Always non-NULL.
- grpc_call* call_;
-
- // recv_initial_metadata
- grpc_metadata_array initial_metadata_recv_;
-
- // send_message
- grpc_byte_buffer* send_message_payload_ = nullptr;
- grpc_closure on_request_sent_;
-
- // recv_message
- grpc_byte_buffer* recv_message_payload_ = nullptr;
- grpc_closure on_response_received_;
-
- // recv_trailing_metadata
- grpc_metadata_array trailing_metadata_recv_;
- grpc_status_code status_code_;
- grpc_slice status_details_;
- grpc_closure on_status_received_;
+ bool send_message_pending_ Y_ABSL_GUARDED_BY(&XdsClient::mu_) = false;
// Resource types for which requests need to be sent.
std::set<const XdsResourceType*> buffered_requests_;
@@ -374,11 +326,11 @@ class XdsClient::ChannelState::LrsCallState
public:
// The ctor and dtor should not be used directly.
explicit LrsCallState(RefCountedPtr<RetryableCall<LrsCallState>> parent);
- ~LrsCallState() override;
void Orphan() override;
- void MaybeStartReportingLocked();
+ void MaybeStartReportingLocked()
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
RetryableCall<LrsCallState>* parent() { return parent_.get(); }
ChannelState* chand() const { return parent_->chand(); }
@@ -386,30 +338,44 @@ class XdsClient::ChannelState::LrsCallState
bool seen_response() const { return seen_response_; }
private:
+ class StreamEventHandler
+ : public XdsTransportFactory::XdsTransport::StreamingCall::EventHandler {
+ public:
+ explicit StreamEventHandler(RefCountedPtr<LrsCallState> lrs_calld)
+ : lrs_calld_(std::move(lrs_calld)) {}
+
+ void OnRequestSent(bool ok) override { lrs_calld_->OnRequestSent(ok); }
+ void OnRecvMessage(y_absl::string_view payload) override {
+ lrs_calld_->OnRecvMessage(payload);
+ }
+ void OnStatusReceived(y_absl::Status status) override {
+ lrs_calld_->OnStatusReceived(std::move(status));
+ }
+
+ private:
+ RefCountedPtr<LrsCallState> lrs_calld_;
+ };
+
// Reports client-side load stats according to a fixed interval.
class Reporter : public InternallyRefCounted<Reporter> {
public:
Reporter(RefCountedPtr<LrsCallState> parent, Duration report_interval)
: parent_(std::move(parent)), report_interval_(report_interval) {
- GRPC_CLOSURE_INIT(&on_next_report_timer_, OnNextReportTimer, this,
- grpc_schedule_on_exec_ctx);
- GRPC_CLOSURE_INIT(&on_report_done_, OnReportDone, this,
- grpc_schedule_on_exec_ctx);
ScheduleNextReportLocked();
}
- void Orphan() override;
+ // Disable thread-safety analysis because this method is called via
+ // OrphanablePtr<>, but there's no way to pass the lock annotation
+ // through there.
+ void Orphan() override Y_ABSL_NO_THREAD_SAFETY_ANALYSIS;
+
+ void OnReportDoneLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
private:
void ScheduleNextReportLocked()
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
- static void OnNextReportTimer(void* arg, grpc_error_handle error);
- bool OnNextReportTimerLocked(grpc_error_handle error)
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
+ bool OnNextReportTimer();
bool SendReportLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
- static void OnReportDone(void* arg, grpc_error_handle error);
- bool OnReportDoneLocked(grpc_error_handle error)
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
bool IsCurrentReporterOnCall() const {
return this == parent_->reporter_.get();
@@ -422,47 +388,23 @@ class XdsClient::ChannelState::LrsCallState
// The load reporting state.
const Duration report_interval_;
bool last_report_counters_were_zero_ = false;
- bool next_report_timer_callback_pending_ = false;
- grpc_timer next_report_timer_;
- grpc_closure on_next_report_timer_;
- grpc_closure on_report_done_;
+ y_absl::optional<EventEngine::TaskHandle> timer_handle_
+ Y_ABSL_GUARDED_BY(&XdsClient::mu_);
};
- static void OnInitialRequestSent(void* arg, grpc_error_handle error);
- void OnInitialRequestSentLocked()
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
- static void OnResponseReceived(void* arg, grpc_error_handle error);
- bool OnResponseReceivedLocked()
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
- static void OnStatusReceived(void* arg, grpc_error_handle error);
- void OnStatusReceivedLocked(grpc_error_handle error)
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
+ void OnRequestSent(bool ok);
+ void OnRecvMessage(y_absl::string_view payload);
+ void OnStatusReceived(y_absl::Status status);
bool IsCurrentCallOnChannel() const;
// The owning RetryableCall<>.
RefCountedPtr<RetryableCall<LrsCallState>> parent_;
- bool seen_response_ = false;
- // Always non-NULL.
- grpc_call* call_;
+ OrphanablePtr<XdsTransportFactory::XdsTransport::StreamingCall> call_;
- // recv_initial_metadata
- grpc_metadata_array initial_metadata_recv_;
-
- // send_message
- grpc_byte_buffer* send_message_payload_ = nullptr;
- grpc_closure on_initial_request_sent_;
-
- // recv_message
- grpc_byte_buffer* recv_message_payload_ = nullptr;
- grpc_closure on_response_received_;
-
- // recv_trailing_metadata
- grpc_metadata_array trailing_metadata_recv_;
- grpc_status_code status_code_;
- grpc_slice status_details_;
- grpc_closure on_status_received_;
+ bool seen_response_ = false;
+ bool send_message_pending_ Y_ABSL_GUARDED_BY(&XdsClient::mu_) = false;
// Load reporting state.
bool send_all_clusters_ = false;
@@ -472,57 +414,9 @@ class XdsClient::ChannelState::LrsCallState
};
//
-// XdsClient::ChannelState::StateWatcher
-//
-
-class XdsClient::ChannelState::StateWatcher
- : public AsyncConnectivityStateWatcherInterface {
- public:
- explicit StateWatcher(WeakRefCountedPtr<ChannelState> parent)
- : parent_(std::move(parent)) {}
-
- private:
- void OnConnectivityStateChange(grpc_connectivity_state new_state,
- const y_absl::Status& status) override {
- {
- MutexLock lock(&parent_->xds_client_->mu_);
- if (!parent_->shutting_down_ &&
- new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
- // In TRANSIENT_FAILURE. Notify all watchers of error.
- gpr_log(GPR_INFO,
- "[xds_client %p] xds channel for server %s in "
- "state TRANSIENT_FAILURE: %s",
- parent_->xds_client(), parent_->server_.server_uri.c_str(),
- status.ToString().c_str());
- parent_->xds_client_->NotifyOnErrorLocked(
- GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "xds channel in TRANSIENT_FAILURE, connectivity error: ",
- status.ToString())));
- }
- }
- parent_->xds_client()->work_serializer_.DrainQueue();
- }
-
- WeakRefCountedPtr<ChannelState> parent_;
-};
-
-//
// XdsClient::ChannelState
//
-namespace {
-
-grpc_channel* CreateXdsChannel(grpc_channel_args* args,
- const XdsBootstrap::XdsServer& server) {
- RefCountedPtr<grpc_channel_credentials> channel_creds =
- CoreConfiguration::Get().channel_creds_registry().CreateChannelCreds(
- server.channel_creds_type, server.channel_creds_config);
- return grpc_channel_create(server.server_uri.c_str(), channel_creds.get(),
- args);
-}
-
-} // namespace
-
XdsClient::ChannelState::ChannelState(WeakRefCountedPtr<XdsClient> xds_client,
const XdsBootstrap::XdsServer& server)
: DualRefCounted<ChannelState>(
@@ -533,37 +427,45 @@ XdsClient::ChannelState::ChannelState(WeakRefCountedPtr<XdsClient> xds_client,
server_(server) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
gpr_log(GPR_INFO, "[xds_client %p] creating channel to %s",
- xds_client_.get(), server.server_uri.c_str());
- }
- channel_ = CreateXdsChannel(xds_client_->args_, server);
- GPR_ASSERT(channel_ != nullptr);
- StartConnectivityWatchLocked();
+ xds_client_.get(), server.server_uri().c_str());
+ }
+ y_absl::Status status;
+ transport_ = xds_client_->transport_factory_->Create(
+ server,
+ [self = WeakRef(DEBUG_LOCATION, "OnConnectivityFailure")](
+ y_absl::Status status) {
+ self->OnConnectivityFailure(std::move(status));
+ },
+ &status);
+ GPR_ASSERT(transport_ != nullptr);
+ if (!status.ok()) SetChannelStatusLocked(std::move(status));
}
XdsClient::ChannelState::~ChannelState() {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
gpr_log(GPR_INFO, "[xds_client %p] destroying xds channel %p for server %s",
- xds_client(), this, server_.server_uri.c_str());
+ xds_client(), this, server_.server_uri().c_str());
}
- grpc_channel_destroy(channel_);
xds_client_.reset(DEBUG_LOCATION, "ChannelState");
}
// This method should only ever be called when holding the lock, but we can't
// use a Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED annotation, because Orphan() will be
-// called from DualRefCounted::Unref, which cannot have a lock annotation for a
-// lock in this subclass.
+// called from DualRefCounted::Unref, which cannot have a lock annotation for
+// a lock in this subclass.
void XdsClient::ChannelState::Orphan() Y_ABSL_NO_THREAD_SAFETY_ANALYSIS {
shutting_down_ = true;
- CancelConnectivityWatchLocked();
+ transport_.reset();
// At this time, all strong refs are removed, remove from channel map to
- // prevent subsequent subscription from trying to use this ChannelState as it
- // is shutting down.
- xds_client_->xds_server_channel_map_.erase(server_);
+ // prevent subsequent subscription from trying to use this ChannelState as
+ // it is shutting down.
+ xds_client_->xds_server_channel_map_.erase(&server_);
ads_calld_.reset();
lrs_calld_.reset();
}
+void XdsClient::ChannelState::ResetBackoff() { transport_->ResetBackoff(); }
+
XdsClient::ChannelState::AdsCallState* XdsClient::ChannelState::ads_calld()
const {
return ads_calld_->calld();
@@ -574,10 +476,6 @@ XdsClient::ChannelState::LrsCallState* XdsClient::ChannelState::lrs_calld()
return lrs_calld_->calld();
}
-bool XdsClient::ChannelState::HasActiveAdsCall() const {
- return ads_calld_ != nullptr && ads_calld_->calld() != nullptr;
-}
-
void XdsClient::ChannelState::MaybeStartLrsCall() {
if (lrs_calld_ != nullptr) return;
lrs_calld_.reset(new RetryableCall<LrsCallState>(
@@ -585,43 +483,10 @@ void XdsClient::ChannelState::MaybeStartLrsCall() {
}
void XdsClient::ChannelState::StopLrsCallLocked() {
- xds_client_->xds_load_report_server_map_.erase(server_);
+ xds_client_->xds_load_report_server_map_.erase(&server_);
lrs_calld_.reset();
}
-namespace {
-
-bool IsLameChannel(grpc_channel* channel) {
- grpc_channel_element* elem =
- grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
- return elem->filter == &grpc_lame_filter;
-}
-
-} // namespace
-
-void XdsClient::ChannelState::StartConnectivityWatchLocked() {
- if (IsLameChannel(channel_)) {
- xds_client()->NotifyOnErrorLocked(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("xds client has a lame channel"));
- return;
- }
- ClientChannel* client_channel = ClientChannel::GetFromChannel(channel_);
- GPR_ASSERT(client_channel != nullptr);
- watcher_ = new StateWatcher(WeakRef(DEBUG_LOCATION, "ChannelState+watch"));
- client_channel->AddConnectivityWatcher(
- GRPC_CHANNEL_IDLE,
- OrphanablePtr<AsyncConnectivityStateWatcherInterface>(watcher_));
-}
-
-void XdsClient::ChannelState::CancelConnectivityWatchLocked() {
- if (IsLameChannel(channel_)) {
- return;
- }
- ClientChannel* client_channel = ClientChannel::GetFromChannel(channel_);
- GPR_ASSERT(client_channel != nullptr);
- client_channel->RemoveConnectivityWatcher(watcher_);
-}
-
void XdsClient::ChannelState::SubscribeLocked(const XdsResourceType* type,
const XdsResourceName& name) {
if (ads_calld_ == nullptr) {
@@ -637,7 +502,7 @@ void XdsClient::ChannelState::SubscribeLocked(const XdsResourceType* type,
// because when the call is restarted it will resend all necessary requests.
if (ads_calld() == nullptr) return;
// Subscribe to this resource if the ADS call is active.
- ads_calld()->SubscribeLocked(type, name);
+ ads_calld()->SubscribeLocked(type, name, /*delay_send=*/false);
}
void XdsClient::ChannelState::UnsubscribeLocked(const XdsResourceType* type,
@@ -654,6 +519,56 @@ void XdsClient::ChannelState::UnsubscribeLocked(const XdsResourceType* type,
}
}
+void XdsClient::ChannelState::OnConnectivityFailure(y_absl::Status status) {
+ {
+ MutexLock lock(&xds_client_->mu_);
+ SetChannelStatusLocked(std::move(status));
+ }
+ xds_client_->work_serializer_.DrainQueue();
+}
+
+void XdsClient::ChannelState::SetChannelStatusLocked(y_absl::Status status) {
+ if (shutting_down_) return;
+ status = y_absl::Status(status.code(), y_absl::StrCat("xDS channel for server ",
+ server_.server_uri(), ": ",
+ status.message()));
+ gpr_log(GPR_INFO, "[xds_client %p] %s", xds_client(),
+ status.ToString().c_str());
+ // If the node ID is set, append that to the status message that we send to
+ // the watchers, so that it will appear in log messages visible to users.
+ const auto* node = xds_client_->bootstrap_->node();
+ if (node != nullptr) {
+ status = y_absl::Status(
+ status.code(),
+ y_absl::StrCat(status.message(),
+ " (node ID:", xds_client_->bootstrap_->node()->id(), ")"));
+ }
+ // Save status in channel, so that we can immediately generate an
+ // error for any new watchers that may be started.
+ status_ = status;
+ // Find all watchers for this channel.
+ std::set<RefCountedPtr<ResourceWatcherInterface>> watchers;
+ for (const auto& a : xds_client_->authority_state_map_) { // authority
+ if (a.second.channel_state != this) continue;
+ for (const auto& t : a.second.resource_map) { // type
+ for (const auto& r : t.second) { // resource id
+ for (const auto& w : r.second.watchers) { // watchers
+ watchers.insert(w.second);
+ }
+ }
+ }
+ }
+ // Enqueue notification for the watchers.
+ xds_client_->work_serializer_.Schedule(
+ [watchers = std::move(watchers), status = std::move(status)]()
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(xds_client_->work_serializer_) {
+ for (const auto& watcher : watchers) {
+ watcher->OnError(status);
+ }
+ },
+ DEBUG_LOCATION);
+}
+
//
// XdsClient::ChannelState::RetryableCall<>
//
@@ -669,9 +584,6 @@ XdsClient::ChannelState::RetryableCall<T>::RetryableCall(
.set_jitter(GRPC_XDS_RECONNECT_JITTER)
.set_max_backoff(Duration::Seconds(
GRPC_XDS_RECONNECT_MAX_BACKOFF_SECONDS))) {
- // Closure Initialization
- GRPC_CLOSURE_INIT(&on_retry_timer_, OnRetryTimer, this,
- grpc_schedule_on_exec_ctx);
StartNewCallLocked();
}
@@ -679,35 +591,32 @@ template <typename T>
void XdsClient::ChannelState::RetryableCall<T>::Orphan() {
shutting_down_ = true;
calld_.reset();
- if (retry_timer_callback_pending_) grpc_timer_cancel(&retry_timer_);
+ if (timer_handle_.has_value()) {
+ GetDefaultEventEngine()->Cancel(*timer_handle_);
+ timer_handle_.reset();
+ }
this->Unref(DEBUG_LOCATION, "RetryableCall+orphaned");
}
template <typename T>
void XdsClient::ChannelState::RetryableCall<T>::OnCallFinishedLocked() {
- const bool seen_response = calld_->seen_response();
+ // If we saw a response on the current stream, reset backoff.
+ if (calld_->seen_response()) backoff_.Reset();
calld_.reset();
- if (seen_response) {
- // If we lost connection to the xds server, reset backoff and restart the
- // call immediately.
- backoff_.Reset();
- StartNewCallLocked();
- } else {
- // If we failed to connect to the xds server, retry later.
- StartRetryTimerLocked();
- }
+ // Start retry timer.
+ StartRetryTimerLocked();
}
template <typename T>
void XdsClient::ChannelState::RetryableCall<T>::StartNewCallLocked() {
if (shutting_down_) return;
- GPR_ASSERT(chand_->channel_ != nullptr);
+ GPR_ASSERT(chand_->transport_ != nullptr);
GPR_ASSERT(calld_ == nullptr);
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
- gpr_log(
- GPR_INFO,
- "[xds_client %p] xds server %s: start new call from retryable call %p",
- chand()->xds_client(), chand()->server_.server_uri.c_str(), this);
+ gpr_log(GPR_INFO,
+ "[xds_client %p] xds server %s: start new call from retryable "
+ "call %p",
+ chand()->xds_client(), chand()->server_.server_uri().c_str(), this);
}
calld_ = MakeOrphanable<T>(
this->Ref(DEBUG_LOCATION, "RetryableCall+start_new_call"));
@@ -717,45 +626,39 @@ template <typename T>
void XdsClient::ChannelState::RetryableCall<T>::StartRetryTimerLocked() {
if (shutting_down_) return;
const Timestamp next_attempt_time = backoff_.NextAttemptTime();
+ const Duration timeout =
+ std::max(next_attempt_time - Timestamp::Now(), Duration::Zero());
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
- Duration timeout =
- std::max(next_attempt_time - ExecCtx::Get()->Now(), Duration::Zero());
gpr_log(GPR_INFO,
"[xds_client %p] xds server %s: call attempt failed; "
"retry timer will fire in %" PRId64 "ms.",
- chand()->xds_client(), chand()->server_.server_uri.c_str(),
+ chand()->xds_client(), chand()->server_.server_uri().c_str(),
timeout.millis());
}
- this->Ref(DEBUG_LOCATION, "RetryableCall+retry_timer_start").release();
- grpc_timer_init(&retry_timer_, next_attempt_time, &on_retry_timer_);
- retry_timer_callback_pending_ = true;
+ timer_handle_ = GetDefaultEventEngine()->RunAfter(
+ timeout,
+ [self = this->Ref(DEBUG_LOCATION, "RetryableCall+retry_timer_start")]() {
+ ApplicationCallbackExecCtx callback_exec_ctx;
+ ExecCtx exec_ctx;
+ self->OnRetryTimer();
+ });
}
template <typename T>
-void XdsClient::ChannelState::RetryableCall<T>::OnRetryTimer(
- void* arg, grpc_error_handle error) {
- RetryableCall* calld = static_cast<RetryableCall*>(arg);
- {
- MutexLock lock(&calld->chand_->xds_client()->mu_);
- calld->OnRetryTimerLocked(GRPC_ERROR_REF(error));
- }
- calld->Unref(DEBUG_LOCATION, "RetryableCall+retry_timer_done");
-}
-
-template <typename T>
-void XdsClient::ChannelState::RetryableCall<T>::OnRetryTimerLocked(
- grpc_error_handle error) {
- retry_timer_callback_pending_ = false;
- if (!shutting_down_ && error == GRPC_ERROR_NONE) {
+void XdsClient::ChannelState::RetryableCall<T>::OnRetryTimer() {
+ MutexLock lock(&chand_->xds_client()->mu_);
+ if (timer_handle_.has_value()) {
+ timer_handle_.reset();
+ if (shutting_down_) return;
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
gpr_log(GPR_INFO,
"[xds_client %p] xds server %s: retry timer fired (retryable "
"call: %p)",
- chand()->xds_client(), chand()->server_.server_uri.c_str(), this);
+ chand()->xds_client(), chand()->server_.server_uri().c_str(),
+ this);
}
StartNewCallLocked();
}
- GRPC_ERROR_UNREF(error);
}
//
@@ -770,7 +673,7 @@ y_absl::Status XdsClient::ChannelState::AdsCallState::AdsResponseParser::
"[xds_client %p] xds server %s: received ADS response: type_url=%s, "
"version=%s, nonce=%s, num_resources=%" PRIuPTR,
ads_call_state_->xds_client(),
- ads_call_state_->chand()->server_.server_uri.c_str(),
+ ads_call_state_->chand()->server_.server_uri().c_str(),
fields.type_url.c_str(), fields.version.c_str(), fields.nonce.c_str(),
fields.num_resources);
}
@@ -813,40 +716,61 @@ void UpdateResourceMetadataNacked(const TString& version,
} // namespace
void XdsClient::ChannelState::AdsCallState::AdsResponseParser::ParseResource(
- const XdsEncodingContext& context, size_t idx, y_absl::string_view type_url,
- y_absl::string_view serialized_resource) {
+ upb_Arena* arena, size_t idx, y_absl::string_view type_url,
+ y_absl::string_view resource_name, y_absl::string_view serialized_resource) {
+ TString error_prefix = y_absl::StrCat(
+ "resource index ", idx, ": ",
+ resource_name.empty() ? "" : y_absl::StrCat(resource_name, ": "));
// Check the type_url of the resource.
bool is_v2 = false;
if (!result_.type->IsType(type_url, &is_v2)) {
result_.errors.emplace_back(
- y_absl::StrCat("resource index ", idx, ": incorrect resource type ",
- type_url, " (should be ", result_.type_url, ")"));
+ y_absl::StrCat(error_prefix, "incorrect resource type ", type_url,
+ " (should be ", result_.type_url, ")"));
return;
}
// Parse the resource.
- y_absl::StatusOr<XdsResourceType::DecodeResult> result =
+ XdsResourceType::DecodeContext context = {
+ xds_client(), ads_call_state_->chand()->server_, &grpc_xds_client_trace,
+ xds_client()->symtab_.ptr(), arena};
+ XdsResourceType::DecodeResult decode_result =
result_.type->Decode(context, serialized_resource, is_v2);
- if (!result.ok()) {
+ // If we didn't already have the resource name from the Resource
+ // wrapper, try to get it from the decoding result.
+ if (resource_name.empty()) {
+ if (decode_result.name.has_value()) {
+ resource_name = *decode_result.name;
+ error_prefix =
+ y_absl::StrCat("resource index ", idx, ": ", resource_name, ": ");
+ } else {
+ // We don't have any way of determining the resource name, so
+ // there's nothing more we can do here.
+ result_.errors.emplace_back(y_absl::StrCat(
+ error_prefix, decode_result.resource.status().ToString()));
+ return;
+ }
+ }
+ // If decoding failed, make sure we include the error in the NACK.
+ const y_absl::Status& decode_status = decode_result.resource.status();
+ if (!decode_status.ok()) {
result_.errors.emplace_back(
- y_absl::StrCat("resource index ", idx, ": ", result.status().ToString()));
- return;
+ y_absl::StrCat(error_prefix, decode_status.ToString()));
}
// Check the resource name.
- auto resource_name =
- XdsClient::ParseXdsResourceName(result->name, result_.type);
- if (!resource_name.ok()) {
- result_.errors.emplace_back(y_absl::StrCat(
- "resource index ", idx, ": Cannot parse xDS resource name \"",
- result->name, "\""));
+ auto parsed_resource_name =
+ xds_client()->ParseXdsResourceName(resource_name, result_.type);
+ if (!parsed_resource_name.ok()) {
+ result_.errors.emplace_back(
+ y_absl::StrCat(error_prefix, "Cannot parse xDS resource name"));
return;
}
// Cancel resource-does-not-exist timer, if needed.
auto timer_it = ads_call_state_->state_map_.find(result_.type);
if (timer_it != ads_call_state_->state_map_.end()) {
- auto it =
- timer_it->second.subscribed_resources.find(resource_name->authority);
+ auto it = timer_it->second.subscribed_resources.find(
+ parsed_resource_name->authority);
if (it != timer_it->second.subscribed_resources.end()) {
- auto res_it = it->second.find(resource_name->key);
+ auto res_it = it->second.find(parsed_resource_name->key);
if (res_it != it->second.end()) {
res_it->second->MaybeCancelTimer();
}
@@ -854,7 +778,7 @@ void XdsClient::ChannelState::AdsCallState::AdsResponseParser::ParseResource(
}
// Lookup the authority in the cache.
auto authority_it =
- xds_client()->authority_state_map_.find(resource_name->authority);
+ xds_client()->authority_state_map_.find(parsed_resource_name->authority);
if (authority_it == xds_client()->authority_state_map_.end()) {
return; // Skip resource -- we don't have a subscription for it.
}
@@ -866,29 +790,35 @@ void XdsClient::ChannelState::AdsCallState::AdsResponseParser::ParseResource(
}
auto& type_map = type_it->second;
// Found type, so look up resource key.
- auto it = type_map.find(resource_name->key);
+ auto it = type_map.find(parsed_resource_name->key);
if (it == type_map.end()) {
return; // Skip resource -- we don't have a subscription for it.
}
ResourceState& resource_state = it->second;
// If needed, record that we've seen this resource.
if (result_.type->AllResourcesRequiredInSotW()) {
- result_.resources_seen[resource_name->authority].insert(resource_name->key);
+ result_.resources_seen[parsed_resource_name->authority].insert(
+ parsed_resource_name->key);
+ }
+ // If we previously ignored the resource's deletion, log that we're
+ // now re-adding it.
+ if (resource_state.ignored_deletion) {
+ gpr_log(GPR_INFO,
+ "[xds_client %p] xds server %s: server returned new version of "
+ "resource for which we previously ignored a deletion: type %s "
+ "name %s",
+ xds_client(),
+ ads_call_state_->chand()->server_.server_uri().c_str(),
+ TString(type_url).c_str(), TString(resource_name).c_str());
+ resource_state.ignored_deletion = false;
}
// Update resource state based on whether the resource is valid.
- if (!result->resource.ok()) {
- result_.errors.emplace_back(y_absl::StrCat(
- "resource index ", idx, ": ", result->name,
- ": validation error: ", result->resource.status().ToString()));
- Notifier::ScheduleNotifyWatchersOnErrorInWorkSerializer(
- xds_client(), resource_state.watchers,
- grpc_error_set_int(
- GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "invalid resource: ", result->resource.status().ToString())),
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE),
- DEBUG_LOCATION);
- UpdateResourceMetadataNacked(result_.version,
- result->resource.status().ToString(),
+ if (!decode_status.ok()) {
+ xds_client()->NotifyWatchersOnErrorLocked(
+ resource_state.watchers,
+ y_absl::UnavailableError(
+ y_absl::StrCat("invalid resource: ", decode_status.ToString())));
+ UpdateResourceMetadataNacked(result_.version, decode_status.ToString(),
update_time_, &resource_state.meta);
return;
}
@@ -897,16 +827,17 @@ void XdsClient::ChannelState::AdsCallState::AdsResponseParser::ParseResource(
// If it didn't change, ignore it.
if (resource_state.resource != nullptr &&
result_.type->ResourcesEqual(resource_state.resource.get(),
- result->resource->get())) {
+ decode_result.resource->get())) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
gpr_log(GPR_INFO,
"[xds_client %p] %s resource %s identical to current, ignoring.",
- xds_client(), result_.type_url.c_str(), result->name.c_str());
+ xds_client(), result_.type_url.c_str(),
+ TString(resource_name).c_str());
}
return;
}
// Update the resource state.
- resource_state.resource = std::move(*result->resource);
+ resource_state.resource = std::move(*decode_result.resource);
resource_state.meta = CreateResourceMetadataAcked(
TString(serialized_resource), result_.version, update_time_);
// Notify watchers.
@@ -924,6 +855,12 @@ void XdsClient::ChannelState::AdsCallState::AdsResponseParser::ParseResource(
DEBUG_LOCATION);
}
+void XdsClient::ChannelState::AdsCallState::AdsResponseParser::
+ ResourceWrapperParsingFailed(size_t idx) {
+ result_.errors.emplace_back(y_absl::StrCat(
+ "resource index ", idx, ": Can't decode Resource proto wrapper"));
+}
+
//
// XdsClient::ChannelState::AdsCallState
//
@@ -935,51 +872,30 @@ XdsClient::ChannelState::AdsCallState::AdsCallState(
? "AdsCallState"
: nullptr),
parent_(std::move(parent)) {
- // Init the ADS call. Note that the call will progress every time there's
- // activity in xds_client()->interested_parties_, which is comprised of
- // the polling entities from client_channel.
GPR_ASSERT(xds_client() != nullptr);
- // Create a call with the specified method name.
+ // Init the ADS call.
const char* method =
chand()->server_.ShouldUseV3()
? "/envoy.service.discovery.v3.AggregatedDiscoveryService/"
"StreamAggregatedResources"
: "/envoy.service.discovery.v2.AggregatedDiscoveryService/"
"StreamAggregatedResources";
- call_ = grpc_channel_create_pollset_set_call(
- chand()->channel_, nullptr, GRPC_PROPAGATE_DEFAULTS,
- xds_client()->interested_parties_,
- StaticSlice::FromStaticString(method).c_slice(), nullptr,
- Timestamp::InfFuture(), nullptr);
+ call_ = chand()->transport_->CreateStreamingCall(
+ method, y_absl::make_unique<StreamEventHandler>(
+ // Passing the initial ref here. This ref will go away when
+ // the StreamEventHandler is destroyed.
+ RefCountedPtr<AdsCallState>(this)));
GPR_ASSERT(call_ != nullptr);
- // Init data associated with the call.
- grpc_metadata_array_init(&initial_metadata_recv_);
- grpc_metadata_array_init(&trailing_metadata_recv_);
// Start the call.
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
gpr_log(GPR_INFO,
"[xds_client %p] xds server %s: starting ADS call "
"(calld: %p, call: %p)",
- xds_client(), chand()->server_.server_uri.c_str(), this, call_);
- }
- // Create the ops.
- grpc_call_error call_error;
- grpc_op ops[3];
- memset(ops, 0, sizeof(ops));
- // Op: send initial metadata.
- grpc_op* op = ops;
- op->op = GRPC_OP_SEND_INITIAL_METADATA;
- op->data.send_initial_metadata.count = 0;
- op->flags = GRPC_INITIAL_METADATA_WAIT_FOR_READY |
- GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET;
- op->reserved = nullptr;
- op++;
- call_error = grpc_call_start_batch_and_execute(
- call_, ops, static_cast<size_t>(op - ops), nullptr);
- GPR_ASSERT(GRPC_CALL_OK == call_error);
- // Op: send request message.
- GRPC_CLOSURE_INIT(&on_request_sent_, OnRequestSent, this,
- grpc_schedule_on_exec_ctx);
+ xds_client(), chand()->server_.server_uri().c_str(), this,
+ call_.get());
+ }
+ // If this is a reconnect, add any necessary subscriptions from what's
+ // already in the cache.
for (const auto& a : xds_client()->authority_state_map_) {
const TString& authority = a.first;
// Skip authorities that are not using this xDS channel.
@@ -988,129 +904,59 @@ XdsClient::ChannelState::AdsCallState::AdsCallState(
const XdsResourceType* type = t.first;
for (const auto& r : t.second) {
const XdsResourceKey& resource_key = r.first;
- SubscribeLocked(type, {authority, resource_key});
+ SubscribeLocked(type, {authority, resource_key}, /*delay_send=*/true);
}
}
}
- // Op: recv initial metadata.
- op = ops;
- op->op = GRPC_OP_RECV_INITIAL_METADATA;
- op->data.recv_initial_metadata.recv_initial_metadata =
- &initial_metadata_recv_;
- op->flags = 0;
- op->reserved = nullptr;
- op++;
- // Op: recv response.
- op->op = GRPC_OP_RECV_MESSAGE;
- op->data.recv_message.recv_message = &recv_message_payload_;
- op->flags = 0;
- op->reserved = nullptr;
- op++;
- Ref(DEBUG_LOCATION, "ADS+OnResponseReceivedLocked").release();
- GRPC_CLOSURE_INIT(&on_response_received_, OnResponseReceived, this,
- grpc_schedule_on_exec_ctx);
- call_error = grpc_call_start_batch_and_execute(
- call_, ops, static_cast<size_t>(op - ops), &on_response_received_);
- GPR_ASSERT(GRPC_CALL_OK == call_error);
- // Op: recv server status.
- op = ops;
- op->op = GRPC_OP_RECV_STATUS_ON_CLIENT;
- op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv_;
- op->data.recv_status_on_client.status = &status_code_;
- op->data.recv_status_on_client.status_details = &status_details_;
- op->flags = 0;
- op->reserved = nullptr;
- op++;
- // This callback signals the end of the call, so it relies on the initial
- // ref instead of a new ref. When it's invoked, it's the initial ref that is
- // unreffed.
- GRPC_CLOSURE_INIT(&on_status_received_, OnStatusReceived, this,
- grpc_schedule_on_exec_ctx);
- call_error = grpc_call_start_batch_and_execute(
- call_, ops, static_cast<size_t>(op - ops), &on_status_received_);
- GPR_ASSERT(GRPC_CALL_OK == call_error);
-}
-
-XdsClient::ChannelState::AdsCallState::~AdsCallState() {
- grpc_metadata_array_destroy(&initial_metadata_recv_);
- grpc_metadata_array_destroy(&trailing_metadata_recv_);
- grpc_byte_buffer_destroy(send_message_payload_);
- grpc_byte_buffer_destroy(recv_message_payload_);
- grpc_slice_unref_internal(status_details_);
- GPR_ASSERT(call_ != nullptr);
- grpc_call_unref(call_);
+ // Send initial message if we added any subscriptions above.
+ for (const auto& p : state_map_) {
+ SendMessageLocked(p.first);
+ }
}
void XdsClient::ChannelState::AdsCallState::Orphan() {
- GPR_ASSERT(call_ != nullptr);
- // If we are here because xds_client wants to cancel the call,
- // on_status_received_ will complete the cancellation and clean up. Otherwise,
- // we are here because xds_client has to orphan a failed call, then the
- // following cancellation will be a no-op.
- grpc_call_cancel_internal(call_);
state_map_.clear();
- // Note that the initial ref is hold by on_status_received_. So the
- // corresponding unref happens in on_status_received_ instead of here.
+ // Note that the initial ref is held by the StreamEventHandler, which
+ // will be destroyed when call_ is destroyed, which may not happen
+ // here, since there may be other refs held to call_ by internal callbacks.
+ call_.reset();
}
void XdsClient::ChannelState::AdsCallState::SendMessageLocked(
const XdsResourceType* type)
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
// Buffer message sending if an existing message is in flight.
- if (send_message_payload_ != nullptr) {
+ if (send_message_pending_) {
buffered_requests_.insert(type);
return;
}
auto& state = state_map_[type];
- grpc_slice request_payload_slice;
- request_payload_slice = xds_client()->api_.CreateAdsRequest(
+ TString serialized_message = xds_client()->api_.CreateAdsRequest(
chand()->server_,
chand()->server_.ShouldUseV3() ? type->type_url() : type->v2_type_url(),
chand()->resource_type_version_map_[type], state.nonce,
- ResourceNamesForRequest(type), GRPC_ERROR_REF(state.error),
- !sent_initial_message_);
+ ResourceNamesForRequest(type), state.status, !sent_initial_message_);
sent_initial_message_ = true;
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
gpr_log(GPR_INFO,
"[xds_client %p] xds server %s: sending ADS request: type=%s "
"version=%s nonce=%s error=%s",
- xds_client(), chand()->server_.server_uri.c_str(),
+ xds_client(), chand()->server_.server_uri().c_str(),
TString(type->type_url()).c_str(),
chand()->resource_type_version_map_[type].c_str(),
- state.nonce.c_str(), grpc_error_std_string(state.error).c_str());
- }
- GRPC_ERROR_UNREF(state.error);
- state.error = GRPC_ERROR_NONE;
- // Create message payload.
- send_message_payload_ =
- grpc_raw_byte_buffer_create(&request_payload_slice, 1);
- grpc_slice_unref_internal(request_payload_slice);
- // Send the message.
- grpc_op op;
- memset(&op, 0, sizeof(op));
- op.op = GRPC_OP_SEND_MESSAGE;
- op.data.send_message.send_message = send_message_payload_;
- Ref(DEBUG_LOCATION, "ADS+OnRequestSentLocked").release();
- GRPC_CLOSURE_INIT(&on_request_sent_, OnRequestSent, this,
- grpc_schedule_on_exec_ctx);
- grpc_call_error call_error =
- grpc_call_start_batch_and_execute(call_, &op, 1, &on_request_sent_);
- if (GPR_UNLIKELY(call_error != GRPC_CALL_OK)) {
- gpr_log(GPR_ERROR,
- "[xds_client %p] xds server %s: error starting ADS send_message "
- "batch on calld=%p: call_error=%d",
- xds_client(), chand()->server_.server_uri.c_str(), this,
- call_error);
- GPR_ASSERT(GRPC_CALL_OK == call_error);
+ state.nonce.c_str(), state.status.ToString().c_str());
}
+ state.status = y_absl::OkStatus();
+ call_->SendMessage(std::move(serialized_message));
+ send_message_pending_ = true;
}
void XdsClient::ChannelState::AdsCallState::SubscribeLocked(
- const XdsResourceType* type, const XdsResourceName& name) {
+ const XdsResourceType* type, const XdsResourceName& name, bool delay_send) {
auto& state = state_map_[type].subscribed_resources[name.authority][name.key];
if (state == nullptr) {
state = MakeOrphanable<ResourceTimer>(type, name);
- SendMessageLocked(type);
+ if (!delay_send) SendMessageLocked(type);
}
}
@@ -1133,22 +979,10 @@ bool XdsClient::ChannelState::AdsCallState::HasSubscribedResources() const {
return false;
}
-void XdsClient::ChannelState::AdsCallState::OnRequestSent(
- void* arg, grpc_error_handle error) {
- AdsCallState* ads_calld = static_cast<AdsCallState*>(arg);
- {
- MutexLock lock(&ads_calld->xds_client()->mu_);
- ads_calld->OnRequestSentLocked(GRPC_ERROR_REF(error));
- }
- ads_calld->Unref(DEBUG_LOCATION, "ADS+OnRequestSentLocked");
-}
-
-void XdsClient::ChannelState::AdsCallState::OnRequestSentLocked(
- grpc_error_handle error) {
- if (IsCurrentCallOnChannel() && error == GRPC_ERROR_NONE) {
- // Clean up the sent message.
- grpc_byte_buffer_destroy(send_message_payload_);
- send_message_payload_ = nullptr;
+void XdsClient::ChannelState::AdsCallState::OnRequestSent(bool ok) {
+ MutexLock lock(&xds_client()->mu_);
+ send_message_pending_ = false;
+ if (ok && IsCurrentCallOnChannel()) {
// Continue to send another pending message if any.
// TODO(roth): The current code to handle buffered messages has the
// advantage of sending only the most recent list of resource names for
@@ -1164,173 +998,135 @@ void XdsClient::ChannelState::AdsCallState::OnRequestSentLocked(
buffered_requests_.erase(it);
}
}
- GRPC_ERROR_UNREF(error);
}
-void XdsClient::ChannelState::AdsCallState::OnResponseReceived(
- void* arg, grpc_error_handle /* error */) {
- AdsCallState* ads_calld = static_cast<AdsCallState*>(arg);
- bool done;
+void XdsClient::ChannelState::AdsCallState::OnRecvMessage(
+ y_absl::string_view payload) {
{
- MutexLock lock(&ads_calld->xds_client()->mu_);
- done = ads_calld->OnResponseReceivedLocked();
- }
- ads_calld->xds_client()->work_serializer_.DrainQueue();
- if (done) ads_calld->Unref(DEBUG_LOCATION, "ADS+OnResponseReceivedLocked");
-}
-
-bool XdsClient::ChannelState::AdsCallState::OnResponseReceivedLocked() {
- // Empty payload means the call was cancelled.
- if (!IsCurrentCallOnChannel() || recv_message_payload_ == nullptr) {
- return true;
- }
- // Read the response.
- grpc_byte_buffer_reader bbr;
- grpc_byte_buffer_reader_init(&bbr, recv_message_payload_);
- grpc_slice response_slice = grpc_byte_buffer_reader_readall(&bbr);
- grpc_byte_buffer_reader_destroy(&bbr);
- grpc_byte_buffer_destroy(recv_message_payload_);
- recv_message_payload_ = nullptr;
- // Parse and validate the response.
- AdsResponseParser parser(this);
- y_absl::Status status = xds_client()->api_.ParseAdsResponse(
- chand()->server_, response_slice, &parser);
- grpc_slice_unref_internal(response_slice);
- if (!status.ok()) {
- // Ignore unparsable response.
- gpr_log(GPR_ERROR,
- "[xds_client %p] xds server %s: error parsing ADS response (%s) "
- "-- ignoring",
- xds_client(), chand()->server_.server_uri.c_str(),
- status.ToString().c_str());
- } else {
- AdsResponseParser::Result result = parser.TakeResult();
- // Update nonce.
- auto& state = state_map_[result.type];
- state.nonce = result.nonce;
- // If we got an error, set state.error so that we'll NACK the update.
- if (!result.errors.empty()) {
- TString error = y_absl::StrJoin(result.errors, "; ");
- gpr_log(
- GPR_ERROR,
- "[xds_client %p] xds server %s: ADS response invalid for resource "
- "type %s version %s, will NACK: nonce=%s error=%s",
- xds_client(), chand()->server_.server_uri.c_str(),
- result.type_url.c_str(), result.version.c_str(), state.nonce.c_str(),
- error.c_str());
- GRPC_ERROR_UNREF(state.error);
- state.error = grpc_error_set_int(GRPC_ERROR_CREATE_FROM_CPP_STRING(error),
- GRPC_ERROR_INT_GRPC_STATUS,
- GRPC_STATUS_UNAVAILABLE);
- }
- // Delete resources not seen in update if needed.
- if (result.type->AllResourcesRequiredInSotW()) {
- for (auto& a : xds_client()->authority_state_map_) {
- const TString& authority = a.first;
- AuthorityState& authority_state = a.second;
- // Skip authorities that are not using this xDS channel.
- if (authority_state.channel_state != chand()) continue;
- auto seen_authority_it = result.resources_seen.find(authority);
- // Find this resource type.
- auto type_it = authority_state.resource_map.find(result.type);
- if (type_it == authority_state.resource_map.end()) continue;
- // Iterate over resource ids.
- for (auto& r : type_it->second) {
- const XdsResourceKey& resource_key = r.first;
- ResourceState& resource_state = r.second;
- if (seen_authority_it == result.resources_seen.end() ||
- seen_authority_it->second.find(resource_key) ==
- seen_authority_it->second.end()) {
- // If the resource was newly requested but has not yet been
- // received, we don't want to generate an error for the watchers,
- // because this ADS response may be in reaction to an earlier
- // request that did not yet request the new resource, so its absence
- // from the response does not necessarily indicate that the resource
- // does not exist. For that case, we rely on the request timeout
- // instead.
- if (resource_state.resource == nullptr) continue;
- resource_state.resource.reset();
- Notifier::
- ScheduleNotifyWatchersOnResourceDoesNotExistInWorkSerializer(
- xds_client(), resource_state.watchers, DEBUG_LOCATION);
+ MutexLock lock(&xds_client()->mu_);
+ if (!IsCurrentCallOnChannel()) return;
+ // Parse and validate the response.
+ AdsResponseParser parser(this);
+ y_absl::Status status =
+ xds_client()->api_.ParseAdsResponse(chand()->server_, payload, &parser);
+ if (!status.ok()) {
+ // Ignore unparsable response.
+ gpr_log(GPR_ERROR,
+ "[xds_client %p] xds server %s: error parsing ADS response (%s) "
+ "-- ignoring",
+ xds_client(), chand()->server_.server_uri().c_str(),
+ status.ToString().c_str());
+ } else {
+ seen_response_ = true;
+ chand()->status_ = y_absl::OkStatus();
+ AdsResponseParser::Result result = parser.TakeResult();
+ // Update nonce.
+ auto& state = state_map_[result.type];
+ state.nonce = result.nonce;
+ // If we got an error, set state.status so that we'll NACK the update.
+ if (!result.errors.empty()) {
+ state.status = y_absl::UnavailableError(
+ y_absl::StrCat("xDS response validation errors: [",
+ y_absl::StrJoin(result.errors, "; "), "]"));
+ gpr_log(GPR_ERROR,
+ "[xds_client %p] xds server %s: ADS response invalid for "
+ "resource "
+ "type %s version %s, will NACK: nonce=%s status=%s",
+ xds_client(), chand()->server_.server_uri().c_str(),
+ result.type_url.c_str(), result.version.c_str(),
+ state.nonce.c_str(), state.status.ToString().c_str());
+ }
+ // Delete resources not seen in update if needed.
+ if (result.type->AllResourcesRequiredInSotW()) {
+ for (auto& a : xds_client()->authority_state_map_) {
+ const TString& authority = a.first;
+ AuthorityState& authority_state = a.second;
+ // Skip authorities that are not using this xDS channel.
+ if (authority_state.channel_state != chand()) continue;
+ auto seen_authority_it = result.resources_seen.find(authority);
+ // Find this resource type.
+ auto type_it = authority_state.resource_map.find(result.type);
+ if (type_it == authority_state.resource_map.end()) continue;
+ // Iterate over resource ids.
+ for (auto& r : type_it->second) {
+ const XdsResourceKey& resource_key = r.first;
+ ResourceState& resource_state = r.second;
+ if (seen_authority_it == result.resources_seen.end() ||
+ seen_authority_it->second.find(resource_key) ==
+ seen_authority_it->second.end()) {
+ // If the resource was newly requested but has not yet been
+ // received, we don't want to generate an error for the
+ // watchers, because this ADS response may be in reaction to an
+ // earlier request that did not yet request the new resource, so
+ // its absence from the response does not necessarily indicate
+ // that the resource does not exist. For that case, we rely on
+ // the request timeout instead.
+ if (resource_state.resource == nullptr) continue;
+ if (chand()->server_.IgnoreResourceDeletion()) {
+ if (!resource_state.ignored_deletion) {
+ gpr_log(GPR_ERROR,
+ "[xds_client %p] xds server %s: ignoring deletion "
+ "for resource type %s name %s",
+ xds_client(), chand()->server_.server_uri().c_str(),
+ result.type_url.c_str(),
+ XdsClient::ConstructFullXdsResourceName(
+ authority, result.type_url.c_str(), resource_key)
+ .c_str());
+ resource_state.ignored_deletion = true;
+ }
+ } else {
+ resource_state.resource.reset();
+ xds_client()->NotifyWatchersOnResourceDoesNotExist(
+ resource_state.watchers);
+ }
+ }
}
}
}
- }
- // If we had valid resources, update the version.
- if (result.have_valid_resources) {
- seen_response_ = true;
- chand()->resource_type_version_map_[result.type] =
- std::move(result.version);
- // Start load reporting if needed.
- auto& lrs_call = chand()->lrs_calld_;
- if (lrs_call != nullptr) {
- LrsCallState* lrs_calld = lrs_call->calld();
- if (lrs_calld != nullptr) lrs_calld->MaybeStartReportingLocked();
+ // If we had valid resources, update the version.
+ if (result.have_valid_resources) {
+ chand()->resource_type_version_map_[result.type] =
+ std::move(result.version);
+ // Start load reporting if needed.
+ auto& lrs_call = chand()->lrs_calld_;
+ if (lrs_call != nullptr) {
+ LrsCallState* lrs_calld = lrs_call->calld();
+ if (lrs_calld != nullptr) lrs_calld->MaybeStartReportingLocked();
+ }
}
+ // Send ACK or NACK.
+ SendMessageLocked(result.type);
}
- // Send ACK or NACK.
- SendMessageLocked(result.type);
- }
- if (xds_client()->shutting_down_) return true;
- // Keep listening for updates.
- grpc_op op;
- memset(&op, 0, sizeof(op));
- op.op = GRPC_OP_RECV_MESSAGE;
- op.data.recv_message.recv_message = &recv_message_payload_;
- op.flags = 0;
- op.reserved = nullptr;
- GPR_ASSERT(call_ != nullptr);
- // Reuse the "ADS+OnResponseReceivedLocked" ref taken in ctor.
- const grpc_call_error call_error =
- grpc_call_start_batch_and_execute(call_, &op, 1, &on_response_received_);
- GPR_ASSERT(GRPC_CALL_OK == call_error);
- return false;
+ }
+ xds_client()->work_serializer_.DrainQueue();
}
void XdsClient::ChannelState::AdsCallState::OnStatusReceived(
- void* arg, grpc_error_handle error) {
- AdsCallState* ads_calld = static_cast<AdsCallState*>(arg);
+ y_absl::Status status) {
{
- MutexLock lock(&ads_calld->xds_client()->mu_);
- ads_calld->OnStatusReceivedLocked(GRPC_ERROR_REF(error));
- }
- ads_calld->xds_client()->work_serializer_.DrainQueue();
- ads_calld->Unref(DEBUG_LOCATION, "ADS+OnStatusReceivedLocked");
-}
-
-void XdsClient::ChannelState::AdsCallState::OnStatusReceivedLocked(
- grpc_error_handle error) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
- char* status_details = grpc_slice_to_c_string(status_details_);
- gpr_log(GPR_INFO,
- "[xds_client %p] xds server %s: ADS call status received "
- "(chand=%p, ads_calld=%p, call=%p): "
- "status=%d, details='%s', error='%s'",
- xds_client(), chand()->server_.server_uri.c_str(), chand(), this,
- call_, status_code_, status_details,
- grpc_error_std_string(error).c_str());
- gpr_free(status_details);
- }
- // Ignore status from a stale call.
- if (IsCurrentCallOnChannel()) {
- // Try to restart the call.
- parent_->OnCallFinishedLocked();
- // Send error to all watchers.
- xds_client()->NotifyOnErrorLocked(
- GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrFormat(
- "xDS call failed: xDS server: %s, ADS call status code=%d, "
- "details='%s', error='%s'",
- chand()->server_.server_uri, status_code_,
- StringViewFromSlice(status_details_),
- grpc_error_std_string(error))));
+ MutexLock lock(&xds_client()->mu_);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_client %p] xds server %s: ADS call status received "
+ "(chand=%p, ads_calld=%p, call=%p): %s",
+ xds_client(), chand()->server_.server_uri().c_str(), chand(),
+ this, call_.get(), status.ToString().c_str());
+ }
+ // Ignore status from a stale call.
+ if (IsCurrentCallOnChannel()) {
+ // Try to restart the call.
+ parent_->OnCallFinishedLocked();
+ // Send error to all watchers for the channel.
+ chand()->SetChannelStatusLocked(y_absl::UnavailableError(y_absl::StrFormat(
+ "xDS call failed; status: %s", status.ToString().c_str())));
+ }
}
- GRPC_ERROR_UNREF(error);
+ xds_client()->work_serializer_.DrainQueue();
}
bool XdsClient::ChannelState::AdsCallState::IsCurrentCallOnChannel() const {
- // If the retryable ADS call is null (which only happens when the xds channel
- // is shutting down), all the ADS calls are stale.
+ // If the retryable ADS call is null (which only happens when the xds
+ // channel is shutting down), all the ADS calls are stale.
if (chand()->ads_calld_ == nullptr) return false;
return this == chand()->ads_calld_->calld();
}
@@ -1360,38 +1156,30 @@ XdsClient::ChannelState::AdsCallState::ResourceNamesForRequest(
//
void XdsClient::ChannelState::LrsCallState::Reporter::Orphan() {
- if (next_report_timer_callback_pending_) {
- grpc_timer_cancel(&next_report_timer_);
+ if (timer_handle_.has_value() &&
+ GetDefaultEventEngine()->Cancel(*timer_handle_)) {
+ timer_handle_.reset();
+ Unref(DEBUG_LOCATION, "Orphan");
}
}
void XdsClient::ChannelState::LrsCallState::Reporter::
ScheduleNextReportLocked() {
- const Timestamp next_report_time = ExecCtx::Get()->Now() + report_interval_;
- grpc_timer_init(&next_report_timer_, next_report_time,
- &on_next_report_timer_);
- next_report_timer_callback_pending_ = true;
-}
-
-void XdsClient::ChannelState::LrsCallState::Reporter::OnNextReportTimer(
- void* arg, grpc_error_handle error) {
- Reporter* self = static_cast<Reporter*>(arg);
- bool done;
- {
- MutexLock lock(&self->xds_client()->mu_);
- done = self->OnNextReportTimerLocked(GRPC_ERROR_REF(error));
- }
- if (done) self->Unref(DEBUG_LOCATION, "Reporter+timer");
+ timer_handle_ = GetDefaultEventEngine()->RunAfter(report_interval_, [this]() {
+ ApplicationCallbackExecCtx callback_exec_ctx;
+ ExecCtx exec_ctx;
+ if (OnNextReportTimer()) {
+ Unref(DEBUG_LOCATION, "OnNextReportTimer()");
+ }
+ });
}
-bool XdsClient::ChannelState::LrsCallState::Reporter::OnNextReportTimerLocked(
- grpc_error_handle error) {
- next_report_timer_callback_pending_ = false;
- if (error != GRPC_ERROR_NONE || !IsCurrentReporterOnCall()) {
- GRPC_ERROR_UNREF(error);
- return true;
- }
- return SendReportLocked();
+bool XdsClient::ChannelState::LrsCallState::Reporter::OnNextReportTimer() {
+ MutexLock lock(&xds_client()->mu_);
+ timer_handle_.reset();
+ if (!IsCurrentReporterOnCall()) return true;
+ SendReportLocked();
+ return false;
}
namespace {
@@ -1422,7 +1210,7 @@ bool XdsClient::ChannelState::LrsCallState::Reporter::SendReportLocked() {
last_report_counters_were_zero_ = LoadReportCountersAreZero(snapshot);
if (old_val && last_report_counters_were_zero_) {
auto it = xds_client()->xds_load_report_server_map_.find(
- parent_->chand()->server_);
+ &parent_->chand()->server_);
if (it == xds_client()->xds_load_report_server_map_.end() ||
it->second.load_report_map.empty()) {
it->second.channel_state->StopLrsCallLocked();
@@ -1431,65 +1219,34 @@ bool XdsClient::ChannelState::LrsCallState::Reporter::SendReportLocked() {
ScheduleNextReportLocked();
return false;
}
- // Create a request that contains the snapshot.
- grpc_slice request_payload_slice =
+ // Send a request that contains the snapshot.
+ TString serialized_payload =
xds_client()->api_.CreateLrsRequest(std::move(snapshot));
- parent_->send_message_payload_ =
- grpc_raw_byte_buffer_create(&request_payload_slice, 1);
- grpc_slice_unref_internal(request_payload_slice);
- // Send the report.
- grpc_op op;
- memset(&op, 0, sizeof(op));
- op.op = GRPC_OP_SEND_MESSAGE;
- op.data.send_message.send_message = parent_->send_message_payload_;
- grpc_call_error call_error = grpc_call_start_batch_and_execute(
- parent_->call_, &op, 1, &on_report_done_);
- if (GPR_UNLIKELY(call_error != GRPC_CALL_OK)) {
- gpr_log(GPR_ERROR,
- "[xds_client %p] xds server %s: error starting LRS send_message "
- "batch on calld=%p: call_error=%d",
- xds_client(), parent_->chand()->server_.server_uri.c_str(), this,
- call_error);
- GPR_ASSERT(GRPC_CALL_OK == call_error);
- }
+ parent_->call_->SendMessage(std::move(serialized_payload));
+ parent_->send_message_pending_ = true;
return false;
}
-void XdsClient::ChannelState::LrsCallState::Reporter::OnReportDone(
- void* arg, grpc_error_handle error) {
- Reporter* self = static_cast<Reporter*>(arg);
- bool done;
- {
- MutexLock lock(&self->xds_client()->mu_);
- done = self->OnReportDoneLocked(GRPC_ERROR_REF(error));
- }
- if (done) self->Unref(DEBUG_LOCATION, "Reporter+report_done");
-}
-
-bool XdsClient::ChannelState::LrsCallState::Reporter::OnReportDoneLocked(
- grpc_error_handle error) {
- grpc_byte_buffer_destroy(parent_->send_message_payload_);
- parent_->send_message_payload_ = nullptr;
+void XdsClient::ChannelState::LrsCallState::Reporter::OnReportDoneLocked() {
+ // If a reporter starts a send_message op, then the reporting interval
+ // changes and we destroy that reporter and create a new one, and then
+ // the send_message op started by the old reporter finishes, this
+ // method will be called even though it was for a completion started
+ // by the old reporter. In that case, the timer will be pending, so
+ // we just ignore the completion and wait for the timer to fire.
+ if (timer_handle_.has_value()) return;
// If there are no more registered stats to report, cancel the call.
- auto it =
- xds_client()->xds_load_report_server_map_.find(parent_->chand()->server_);
- if (it == xds_client()->xds_load_report_server_map_.end() ||
- it->second.load_report_map.empty()) {
- it->second.channel_state->StopLrsCallLocked();
- GRPC_ERROR_UNREF(error);
- return true;
- }
- if (error != GRPC_ERROR_NONE || !IsCurrentReporterOnCall()) {
- GRPC_ERROR_UNREF(error);
- // If this reporter is no longer the current one on the call, the reason
- // might be that it was orphaned for a new one due to config update.
- if (!IsCurrentReporterOnCall()) {
- parent_->MaybeStartReportingLocked();
+ auto it = xds_client()->xds_load_report_server_map_.find(
+ &parent_->chand()->server_);
+ if (it == xds_client()->xds_load_report_server_map_.end()) return;
+ if (it->second.load_report_map.empty()) {
+ if (it->second.channel_state != nullptr) {
+ it->second.channel_state->StopLrsCallLocked();
}
- return true;
+ return;
}
+ // Otherwise, schedule the next load report.
ScheduleNextReportLocked();
- return false;
}
//
@@ -1507,124 +1264,46 @@ XdsClient::ChannelState::LrsCallState::LrsCallState(
// activity in xds_client()->interested_parties_, which is comprised of
// the polling entities from client_channel.
GPR_ASSERT(xds_client() != nullptr);
- const char* method =
- chand()->server_.ShouldUseV3()
- ? "/envoy.service.load_stats.v3.LoadReportingService/StreamLoadStats"
- : "/envoy.service.load_stats.v2.LoadReportingService/StreamLoadStats";
- call_ = grpc_channel_create_pollset_set_call(
- chand()->channel_, nullptr, GRPC_PROPAGATE_DEFAULTS,
- xds_client()->interested_parties_,
- Slice::FromStaticString(method).c_slice(), nullptr,
- Timestamp::InfFuture(), nullptr);
+ const char* method = chand()->server_.ShouldUseV3()
+ ? "/envoy.service.load_stats.v3."
+ "LoadReportingService/StreamLoadStats"
+ : "/envoy.service.load_stats.v2."
+ "LoadReportingService/StreamLoadStats";
+ call_ = chand()->transport_->CreateStreamingCall(
+ method, y_absl::make_unique<StreamEventHandler>(
+ // Passing the initial ref here. This ref will go away when
+ // the StreamEventHandler is destroyed.
+ RefCountedPtr<LrsCallState>(this)));
GPR_ASSERT(call_ != nullptr);
- // Init the request payload.
- grpc_slice request_payload_slice =
- xds_client()->api_.CreateLrsInitialRequest(chand()->server_);
- send_message_payload_ =
- grpc_raw_byte_buffer_create(&request_payload_slice, 1);
- grpc_slice_unref_internal(request_payload_slice);
- // Init other data associated with the LRS call.
- grpc_metadata_array_init(&initial_metadata_recv_);
- grpc_metadata_array_init(&trailing_metadata_recv_);
// Start the call.
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
- gpr_log(
- GPR_INFO,
- "[xds_client %p] xds server %s: starting LRS call (calld=%p, call=%p)",
- xds_client(), chand()->server_.server_uri.c_str(), this, call_);
- }
- // Create the ops.
- grpc_call_error call_error;
- grpc_op ops[3];
- memset(ops, 0, sizeof(ops));
- // Op: send initial metadata.
- grpc_op* op = ops;
- op->op = GRPC_OP_SEND_INITIAL_METADATA;
- op->data.send_initial_metadata.count = 0;
- op->flags = GRPC_INITIAL_METADATA_WAIT_FOR_READY |
- GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET;
- op->reserved = nullptr;
- op++;
- // Op: send request message.
- GPR_ASSERT(send_message_payload_ != nullptr);
- op->op = GRPC_OP_SEND_MESSAGE;
- op->data.send_message.send_message = send_message_payload_;
- op->flags = 0;
- op->reserved = nullptr;
- op++;
- Ref(DEBUG_LOCATION, "LRS+OnInitialRequestSentLocked").release();
- GRPC_CLOSURE_INIT(&on_initial_request_sent_, OnInitialRequestSent, this,
- grpc_schedule_on_exec_ctx);
- call_error = grpc_call_start_batch_and_execute(
- call_, ops, static_cast<size_t>(op - ops), &on_initial_request_sent_);
- GPR_ASSERT(GRPC_CALL_OK == call_error);
- // Op: recv initial metadata.
- op = ops;
- op->op = GRPC_OP_RECV_INITIAL_METADATA;
- op->data.recv_initial_metadata.recv_initial_metadata =
- &initial_metadata_recv_;
- op->flags = 0;
- op->reserved = nullptr;
- op++;
- // Op: recv response.
- op->op = GRPC_OP_RECV_MESSAGE;
- op->data.recv_message.recv_message = &recv_message_payload_;
- op->flags = 0;
- op->reserved = nullptr;
- op++;
- Ref(DEBUG_LOCATION, "LRS+OnResponseReceivedLocked").release();
- GRPC_CLOSURE_INIT(&on_response_received_, OnResponseReceived, this,
- grpc_schedule_on_exec_ctx);
- call_error = grpc_call_start_batch_and_execute(
- call_, ops, static_cast<size_t>(op - ops), &on_response_received_);
- GPR_ASSERT(GRPC_CALL_OK == call_error);
- // Op: recv server status.
- op = ops;
- op->op = GRPC_OP_RECV_STATUS_ON_CLIENT;
- op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv_;
- op->data.recv_status_on_client.status = &status_code_;
- op->data.recv_status_on_client.status_details = &status_details_;
- op->flags = 0;
- op->reserved = nullptr;
- op++;
- // This callback signals the end of the call, so it relies on the initial
- // ref instead of a new ref. When it's invoked, it's the initial ref that is
- // unreffed.
- GRPC_CLOSURE_INIT(&on_status_received_, OnStatusReceived, this,
- grpc_schedule_on_exec_ctx);
- call_error = grpc_call_start_batch_and_execute(
- call_, ops, static_cast<size_t>(op - ops), &on_status_received_);
- GPR_ASSERT(GRPC_CALL_OK == call_error);
-}
-
-XdsClient::ChannelState::LrsCallState::~LrsCallState() {
- grpc_metadata_array_destroy(&initial_metadata_recv_);
- grpc_metadata_array_destroy(&trailing_metadata_recv_);
- grpc_byte_buffer_destroy(send_message_payload_);
- grpc_byte_buffer_destroy(recv_message_payload_);
- grpc_slice_unref_internal(status_details_);
- GPR_ASSERT(call_ != nullptr);
- grpc_call_unref(call_);
+ gpr_log(GPR_INFO,
+ "[xds_client %p] xds server %s: starting LRS call (calld=%p, "
+ "call=%p)",
+ xds_client(), chand()->server_.server_uri().c_str(), this,
+ call_.get());
+ }
+ // Send the initial request.
+ TString serialized_payload =
+ xds_client()->api_.CreateLrsInitialRequest(chand()->server_);
+ call_->SendMessage(std::move(serialized_payload));
+ send_message_pending_ = true;
}
void XdsClient::ChannelState::LrsCallState::Orphan() {
reporter_.reset();
- GPR_ASSERT(call_ != nullptr);
- // If we are here because xds_client wants to cancel the call,
- // on_status_received_ will complete the cancellation and clean up. Otherwise,
- // we are here because xds_client has to orphan a failed call, then the
- // following cancellation will be a no-op.
- grpc_call_cancel_internal(call_);
- // Note that the initial ref is hold by on_status_received_. So the
- // corresponding unref happens in on_status_received_ instead of here.
+ // Note that the initial ref is held by the StreamEventHandler, which
+ // will be destroyed when call_ is destroyed, which may not happen
+ // here, since there may be other refs held to call_ by internal callbacks.
+ call_.reset();
}
void XdsClient::ChannelState::LrsCallState::MaybeStartReportingLocked() {
// Don't start again if already started.
if (reporter_ != nullptr) return;
- // Don't start if the previous send_message op (of the initial request or the
- // last report of the previous reporter) hasn't completed.
- if (send_message_payload_ != nullptr) return;
+ // Don't start if the previous send_message op (of the initial request or
+ // the last report of the previous reporter) hasn't completed.
+ if (call_ != nullptr && send_message_pending_) return;
// Don't start if no LRS response has arrived.
if (!seen_response()) return;
// Don't start if the ADS call hasn't received any valid response. Note that
@@ -1640,166 +1319,105 @@ void XdsClient::ChannelState::LrsCallState::MaybeStartReportingLocked() {
Ref(DEBUG_LOCATION, "LRS+load_report+start"), load_reporting_interval_);
}
-void XdsClient::ChannelState::LrsCallState::OnInitialRequestSent(
- void* arg, grpc_error_handle /*error*/) {
- LrsCallState* lrs_calld = static_cast<LrsCallState*>(arg);
- {
- MutexLock lock(&lrs_calld->xds_client()->mu_);
- lrs_calld->OnInitialRequestSentLocked();
+void XdsClient::ChannelState::LrsCallState::OnRequestSent(bool /*ok*/) {
+ MutexLock lock(&xds_client()->mu_);
+ send_message_pending_ = false;
+ if (reporter_ != nullptr) {
+ reporter_->OnReportDoneLocked();
+ } else {
+ MaybeStartReportingLocked();
}
- lrs_calld->Unref(DEBUG_LOCATION, "LRS+OnInitialRequestSentLocked");
-}
-
-void XdsClient::ChannelState::LrsCallState::OnInitialRequestSentLocked() {
- // Clear the send_message_payload_.
- grpc_byte_buffer_destroy(send_message_payload_);
- send_message_payload_ = nullptr;
- MaybeStartReportingLocked();
}
-void XdsClient::ChannelState::LrsCallState::OnResponseReceived(
- void* arg, grpc_error_handle /*error*/) {
- LrsCallState* lrs_calld = static_cast<LrsCallState*>(arg);
- bool done;
- {
- MutexLock lock(&lrs_calld->xds_client()->mu_);
- done = lrs_calld->OnResponseReceivedLocked();
- }
- if (done) lrs_calld->Unref(DEBUG_LOCATION, "LRS+OnResponseReceivedLocked");
-}
-
-bool XdsClient::ChannelState::LrsCallState::OnResponseReceivedLocked() {
- // Empty payload means the call was cancelled.
- if (!IsCurrentCallOnChannel() || recv_message_payload_ == nullptr) {
- return true;
- }
- // Read the response.
- grpc_byte_buffer_reader bbr;
- grpc_byte_buffer_reader_init(&bbr, recv_message_payload_);
- grpc_slice response_slice = grpc_byte_buffer_reader_readall(&bbr);
- grpc_byte_buffer_reader_destroy(&bbr);
- grpc_byte_buffer_destroy(recv_message_payload_);
- recv_message_payload_ = nullptr;
- // This anonymous lambda is a hack to avoid the usage of goto.
- [&]() {
- // Parse the response.
- bool send_all_clusters = false;
- std::set<TString> new_cluster_names;
- Duration new_load_reporting_interval;
- grpc_error_handle parse_error = xds_client()->api_.ParseLrsResponse(
- response_slice, &send_all_clusters, &new_cluster_names,
- &new_load_reporting_interval);
- if (parse_error != GRPC_ERROR_NONE) {
- gpr_log(GPR_ERROR,
- "[xds_client %p] xds server %s: LRS response parsing failed: %s",
- xds_client(), chand()->server_.server_uri.c_str(),
- grpc_error_std_string(parse_error).c_str());
- GRPC_ERROR_UNREF(parse_error);
- return;
+void XdsClient::ChannelState::LrsCallState::OnRecvMessage(
+ y_absl::string_view payload) {
+ MutexLock lock(&xds_client()->mu_);
+ // If we're no longer the current call, ignore the result.
+ if (!IsCurrentCallOnChannel()) return;
+ // Parse the response.
+ bool send_all_clusters = false;
+ std::set<TString> new_cluster_names;
+ Duration new_load_reporting_interval;
+ y_absl::Status status = xds_client()->api_.ParseLrsResponse(
+ payload, &send_all_clusters, &new_cluster_names,
+ &new_load_reporting_interval);
+ if (!status.ok()) {
+ gpr_log(GPR_ERROR,
+ "[xds_client %p] xds server %s: LRS response parsing failed: %s",
+ xds_client(), chand()->server_.server_uri().c_str(),
+ status.ToString().c_str());
+ return;
+ }
+ seen_response_ = true;
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(
+ GPR_INFO,
+ "[xds_client %p] xds server %s: LRS response received, %" PRIuPTR
+ " cluster names, send_all_clusters=%d, load_report_interval=%" PRId64
+ "ms",
+ xds_client(), chand()->server_.server_uri().c_str(),
+ new_cluster_names.size(), send_all_clusters,
+ new_load_reporting_interval.millis());
+ size_t i = 0;
+ for (const auto& name : new_cluster_names) {
+ gpr_log(GPR_INFO, "[xds_client %p] cluster_name %" PRIuPTR ": %s",
+ xds_client(), i++, name.c_str());
}
- seen_response_ = true;
+ }
+ if (new_load_reporting_interval <
+ Duration::Milliseconds(GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS)) {
+ new_load_reporting_interval =
+ Duration::Milliseconds(GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS);
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
- gpr_log(
- GPR_INFO,
- "[xds_client %p] xds server %s: LRS response received, %" PRIuPTR
- " cluster names, send_all_clusters=%d, load_report_interval=%" PRId64
- "ms",
- xds_client(), chand()->server_.server_uri.c_str(),
- new_cluster_names.size(), send_all_clusters,
- new_load_reporting_interval.millis());
- size_t i = 0;
- for (const auto& name : new_cluster_names) {
- gpr_log(GPR_INFO, "[xds_client %p] cluster_name %" PRIuPTR ": %s",
- xds_client(), i++, name.c_str());
- }
- }
- if (new_load_reporting_interval <
- Duration::Milliseconds(
- GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS)) {
- new_load_reporting_interval = Duration::Milliseconds(
- GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
- gpr_log(GPR_INFO,
- "[xds_client %p] xds server %s: increased load_report_interval "
- "to minimum value %dms",
- xds_client(), chand()->server_.server_uri.c_str(),
- GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS);
- }
+ gpr_log(GPR_INFO,
+ "[xds_client %p] xds server %s: increased load_report_interval "
+ "to minimum value %dms",
+ xds_client(), chand()->server_.server_uri().c_str(),
+ GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS);
}
- // Ignore identical update.
- if (send_all_clusters == send_all_clusters_ &&
- cluster_names_ == new_cluster_names &&
- load_reporting_interval_ == new_load_reporting_interval) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
- gpr_log(
- GPR_INFO,
- "[xds_client %p] xds server %s: incoming LRS response identical "
- "to current, ignoring.",
- xds_client(), chand()->server_.server_uri.c_str());
- }
- return;
+ }
+ // Ignore identical update.
+ if (send_all_clusters == send_all_clusters_ &&
+ cluster_names_ == new_cluster_names &&
+ load_reporting_interval_ == new_load_reporting_interval) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_client %p] xds server %s: incoming LRS response identical "
+ "to current, ignoring.",
+ xds_client(), chand()->server_.server_uri().c_str());
}
- // Stop current load reporting (if any) to adopt the new config.
- reporter_.reset();
- // Record the new config.
- send_all_clusters_ = send_all_clusters;
- cluster_names_ = std::move(new_cluster_names);
- load_reporting_interval_ = new_load_reporting_interval;
- // Try starting sending load report.
- MaybeStartReportingLocked();
- }();
- grpc_slice_unref_internal(response_slice);
- if (xds_client()->shutting_down_) return true;
- // Keep listening for LRS config updates.
- grpc_op op;
- memset(&op, 0, sizeof(op));
- op.op = GRPC_OP_RECV_MESSAGE;
- op.data.recv_message.recv_message = &recv_message_payload_;
- op.flags = 0;
- op.reserved = nullptr;
- GPR_ASSERT(call_ != nullptr);
- // Reuse the "OnResponseReceivedLocked" ref taken in ctor.
- const grpc_call_error call_error =
- grpc_call_start_batch_and_execute(call_, &op, 1, &on_response_received_);
- GPR_ASSERT(GRPC_CALL_OK == call_error);
- return false;
-}
-
-void XdsClient::ChannelState::LrsCallState::OnStatusReceived(
- void* arg, grpc_error_handle error) {
- LrsCallState* lrs_calld = static_cast<LrsCallState*>(arg);
- {
- MutexLock lock(&lrs_calld->xds_client()->mu_);
- lrs_calld->OnStatusReceivedLocked(GRPC_ERROR_REF(error));
+ return;
}
- lrs_calld->Unref(DEBUG_LOCATION, "LRS+OnStatusReceivedLocked");
+ // Stop current load reporting (if any) to adopt the new config.
+ reporter_.reset();
+ // Record the new config.
+ send_all_clusters_ = send_all_clusters;
+ cluster_names_ = std::move(new_cluster_names);
+ load_reporting_interval_ = new_load_reporting_interval;
+ // Try starting sending load report.
+ MaybeStartReportingLocked();
}
-void XdsClient::ChannelState::LrsCallState::OnStatusReceivedLocked(
- grpc_error_handle error) {
- GPR_ASSERT(call_ != nullptr);
+void XdsClient::ChannelState::LrsCallState::OnStatusReceived(
+ y_absl::Status status) {
+ MutexLock lock(&xds_client()->mu_);
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
- char* status_details = grpc_slice_to_c_string(status_details_);
gpr_log(GPR_INFO,
"[xds_client %p] xds server %s: LRS call status received "
- "(chand=%p, calld=%p, call=%p): "
- "status=%d, details='%s', error='%s'",
- xds_client(), chand()->server_.server_uri.c_str(), chand(), this,
- call_, status_code_, status_details,
- grpc_error_std_string(error).c_str());
- gpr_free(status_details);
+ "(chand=%p, calld=%p, call=%p): %s",
+ xds_client(), chand()->server_.server_uri().c_str(), chand(), this,
+ call_.get(), status.ToString().c_str());
}
// Ignore status from a stale call.
if (IsCurrentCallOnChannel()) {
// Try to restart the call.
parent_->OnCallFinishedLocked();
}
- GRPC_ERROR_UNREF(error);
}
bool XdsClient::ChannelState::LrsCallState::IsCurrentCallOnChannel() const {
- // If the retryable LRS call is null (which only happens when the xds channel
- // is shutting down), all the LRS calls are stale.
+ // If the retryable LRS call is null (which only happens when the xds
+ // channel is shutting down), all the LRS calls are stale.
if (chand()->lrs_calld_ == nullptr) return false;
return this == chand()->lrs_calld_->calld();
}
@@ -1808,85 +1426,57 @@ bool XdsClient::ChannelState::LrsCallState::IsCurrentCallOnChannel() const {
// XdsClient
//
-namespace {
-
-Duration GetRequestTimeout(const grpc_channel_args* args) {
- return Duration::Milliseconds(grpc_channel_args_find_integer(
- args, GRPC_ARG_XDS_RESOURCE_DOES_NOT_EXIST_TIMEOUT_MS,
- {15000, 0, INT_MAX}));
-}
-
-grpc_channel_args* ModifyChannelArgs(const grpc_channel_args* args) {
- y_absl::InlinedVector<grpc_arg, 1> args_to_add = {
- grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_KEEPALIVE_TIME_MS),
- 5 * 60 * GPR_MS_PER_SEC),
- };
- return grpc_channel_args_copy_and_add(args, args_to_add.data(),
- args_to_add.size());
-}
-
-} // namespace
-
XdsClient::XdsClient(std::unique_ptr<XdsBootstrap> bootstrap,
- const grpc_channel_args* args)
+ OrphanablePtr<XdsTransportFactory> transport_factory,
+ Duration resource_request_timeout)
: DualRefCounted<XdsClient>(
GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_refcount_trace) ? "XdsClient"
: nullptr),
bootstrap_(std::move(bootstrap)),
- args_(ModifyChannelArgs(args)),
- request_timeout_(GetRequestTimeout(args)),
- interested_parties_(grpc_pollset_set_create()),
- certificate_provider_store_(MakeOrphanable<CertificateProviderStore>(
- bootstrap_->certificate_providers())),
- api_(this, &grpc_xds_client_trace, bootstrap_->node(),
- &bootstrap_->certificate_providers(), &symtab_) {
+ transport_factory_(std::move(transport_factory)),
+ request_timeout_(resource_request_timeout),
+ xds_federation_enabled_(XdsFederationEnabled()),
+ api_(this, &grpc_xds_client_trace, bootstrap_->node(), &symtab_) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
gpr_log(GPR_INFO, "[xds_client %p] creating xds client", this);
}
- // Calling grpc_init to ensure gRPC does not shut down until the XdsClient is
- // destroyed.
- grpc_init();
+ GPR_ASSERT(bootstrap_ != nullptr);
}
XdsClient::~XdsClient() {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
gpr_log(GPR_INFO, "[xds_client %p] destroying xds client", this);
}
- grpc_channel_args_destroy(args_);
- grpc_pollset_set_destroy(interested_parties_);
- // Calling grpc_shutdown to ensure gRPC does not shut down until the XdsClient
- // is destroyed.
- grpc_shutdown();
}
void XdsClient::Orphan() {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
gpr_log(GPR_INFO, "[xds_client %p] shutting down xds client", this);
}
- {
- MutexLock lock(g_mu);
- if (g_xds_client == this) g_xds_client = nullptr;
- }
- {
- MutexLock lock(&mu_);
- shutting_down_ = true;
- // Clear cache and any remaining watchers that may not have been cancelled.
- authority_state_map_.clear();
- invalid_watchers_.clear();
+ MutexLock lock(&mu_);
+ shutting_down_ = true;
+ // Clear cache and any remaining watchers that may not have been cancelled.
+ authority_state_map_.clear();
+ invalid_watchers_.clear();
+ // We may still be sending lingering queued load report data, so don't
+ // just clear the load reporting map, but we do want to clear the refs
+ // we're holding to the ChannelState objects, to make sure that
+ // everything shuts down properly.
+ for (auto& p : xds_load_report_server_map_) {
+ p.second.channel_state.reset(DEBUG_LOCATION, "XdsClient::Orphan()");
}
}
RefCountedPtr<XdsClient::ChannelState> XdsClient::GetOrCreateChannelStateLocked(
- const XdsBootstrap::XdsServer& server) {
- auto it = xds_server_channel_map_.find(server);
+ const XdsBootstrap::XdsServer& server, const char* reason) {
+ auto it = xds_server_channel_map_.find(&server);
if (it != xds_server_channel_map_.end()) {
- return it->second->Ref(DEBUG_LOCATION, "Authority");
+ return it->second->Ref(DEBUG_LOCATION, reason);
}
// Channel not found, so create a new one.
auto channel_state = MakeRefCounted<ChannelState>(
WeakRef(DEBUG_LOCATION, "ChannelState"), server);
- xds_server_channel_map_[server] = channel_state.get();
+ xds_server_channel_map_[&server] = channel_state.get();
return channel_state;
}
@@ -1895,24 +1485,23 @@ void XdsClient::WatchResource(const XdsResourceType* type,
RefCountedPtr<ResourceWatcherInterface> watcher) {
ResourceWatcherInterface* w = watcher.get();
// Lambda for handling failure cases.
- auto fail = [&](grpc_error_handle error) mutable {
+ auto fail = [&](y_absl::Status status) mutable {
{
MutexLock lock(&mu_);
MaybeRegisterResourceTypeLocked(type);
invalid_watchers_[w] = watcher;
}
work_serializer_.Run(
- // TODO(yashykt): When we move to C++14, capture watcher using
- // std::move()
- [watcher, error]() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
- watcher->OnError(error);
- },
+ [watcher = std::move(watcher), status = std::move(status)]()
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
+ watcher->OnError(status);
+ },
DEBUG_LOCATION);
};
auto resource_name = ParseXdsResourceName(name, type);
if (!resource_name.ok()) {
- fail(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrFormat(
- "Unable to parse resource name for listener %s", name)));
+ fail(y_absl::UnavailableError(
+ y_absl::StrCat("Unable to parse resource name ", name)));
return;
}
// Find server to use.
@@ -1921,14 +1510,12 @@ void XdsClient::WatchResource(const XdsResourceType* type,
if (y_absl::ConsumePrefix(&authority_name, "xdstp:")) {
auto* authority = bootstrap_->LookupAuthority(TString(authority_name));
if (authority == nullptr) {
- fail(GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ fail(y_absl::UnavailableError(
y_absl::StrCat("authority \"", authority_name,
"\" not present in bootstrap config")));
return;
}
- if (!authority->xds_servers.empty()) {
- xds_server = &authority->xds_servers[0];
- }
+ xds_server = authority->server();
}
if (xds_server == nullptr) xds_server = &bootstrap_->server();
{
@@ -1954,12 +1541,60 @@ void XdsClient::WatchResource(const XdsResourceType* type,
delete value;
},
DEBUG_LOCATION);
+ } else if (resource_state.meta.client_status ==
+ XdsApi::ResourceMetadata::DOES_NOT_EXIST) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_client %p] reporting cached does-not-exist for %s", this,
+ TString(name).c_str());
+ }
+ work_serializer_.Schedule(
+ [watcher]() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
+ watcher->OnResourceDoesNotExist();
+ },
+ DEBUG_LOCATION);
+ } else if (resource_state.meta.client_status ==
+ XdsApi::ResourceMetadata::NACKED) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(
+ GPR_INFO,
+ "[xds_client %p] reporting cached validation failure for %s: %s",
+ this, TString(name).c_str(),
+ resource_state.meta.failed_details.c_str());
+ }
+ TString details = resource_state.meta.failed_details;
+ const auto* node = bootstrap_->node();
+ if (node != nullptr) {
+ y_absl::StrAppend(&details, " (node ID:", bootstrap_->node()->id(), ")");
+ }
+ work_serializer_.Schedule(
+ [watcher, details = std::move(details)]()
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
+ watcher->OnError(y_absl::UnavailableError(
+ y_absl::StrCat("invalid resource: ", details)));
+ },
+ DEBUG_LOCATION);
}
// If the authority doesn't yet have a channel, set it, creating it if
// needed.
if (authority_state.channel_state == nullptr) {
authority_state.channel_state =
- GetOrCreateChannelStateLocked(*xds_server);
+ GetOrCreateChannelStateLocked(*xds_server, "start watch");
+ }
+ y_absl::Status channel_status = authority_state.channel_state->status();
+ if (!channel_status.ok()) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO,
+ "[xds_client %p] returning cached channel error for %s: %s",
+ this, TString(name).c_str(),
+ channel_status.ToString().c_str());
+ }
+ work_serializer_.Schedule(
+ [watcher = std::move(watcher), status = std::move(channel_status)]()
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) mutable {
+ watcher->OnError(std::move(status));
+ },
+ DEBUG_LOCATION);
}
authority_state.channel_state->SubscribeLocked(type, *resource_name);
}
@@ -1972,12 +1607,11 @@ void XdsClient::CancelResourceWatch(const XdsResourceType* type,
bool delay_unsubscription) {
auto resource_name = ParseXdsResourceName(name, type);
MutexLock lock(&mu_);
- if (!resource_name.ok()) {
- invalid_watchers_.erase(watcher);
- return;
- }
- if (shutting_down_) return;
+ // We cannot be sure whether the watcher is in invalid_watchers_ or in
+ // authority_state_map_, so we check both, just to be safe.
+ invalid_watchers_.erase(watcher);
// Find authority.
+ if (!resource_name.ok()) return;
auto authority_it = authority_state_map_.find(resource_name->authority);
if (authority_it == authority_state_map_.end()) return;
AuthorityState& authority_state = authority_it->second;
@@ -1993,6 +1627,13 @@ void XdsClient::CancelResourceWatch(const XdsResourceType* type,
resource_state.watchers.erase(watcher);
// Clean up empty map entries, if any.
if (resource_state.watchers.empty()) {
+ if (resource_state.ignored_deletion) {
+ gpr_log(GPR_INFO,
+ "[xds_client %p] unsubscribing from a resource for which we "
+ "previously ignored a deletion: type %s name %s",
+ this, TString(type->type_url()).c_str(),
+ TString(name).c_str());
+ }
authority_state.channel_state->UnsubscribeLocked(type, *resource_name,
delay_unsubscription);
type_map.erase(resource_it);
@@ -2029,8 +1670,9 @@ const XdsResourceType* XdsClient::GetResourceTypeLocked(
y_absl::StatusOr<XdsClient::XdsResourceName> XdsClient::ParseXdsResourceName(
y_absl::string_view name, const XdsResourceType* type) {
// Old-style names use the empty string for authority.
- // authority is prefixed with "old:" to indicate that it's an old-style name.
- if (!y_absl::StartsWith(name, "xdstp:")) {
+ // authority is prefixed with "old:" to indicate that it's an old-style
+ // name.
+ if (!xds_federation_enabled_ || !y_absl::StartsWith(name, "xdstp:")) {
return XdsResourceName{"old:", {TString(name), {}}};
}
// New style name. Parse URI.
@@ -2071,40 +1713,45 @@ TString XdsClient::ConstructFullXdsResourceName(
RefCountedPtr<XdsClusterDropStats> XdsClient::AddClusterDropStats(
const XdsBootstrap::XdsServer& xds_server, y_absl::string_view cluster_name,
y_absl::string_view eds_service_name) {
- if (!bootstrap_->XdsServerExists(xds_server)) return nullptr;
+ const auto* server = bootstrap_->FindXdsServer(xds_server);
+ if (server == nullptr) return nullptr;
auto key =
std::make_pair(TString(cluster_name), TString(eds_service_name));
- MutexLock lock(&mu_);
- // We jump through some hoops here to make sure that the const
- // XdsBootstrap::XdsServer& and y_absl::string_views
- // stored in the XdsClusterDropStats object point to the
- // XdsBootstrap::XdsServer and strings
- // in the load_report_map_ key, so that they have the same lifetime.
- auto server_it =
- xds_load_report_server_map_.emplace(xds_server, LoadReportServer()).first;
- if (server_it->second.channel_state == nullptr) {
- server_it->second.channel_state = GetOrCreateChannelStateLocked(xds_server);
- }
- auto load_report_it = server_it->second.load_report_map
- .emplace(std::move(key), LoadReportState())
- .first;
- LoadReportState& load_report_state = load_report_it->second;
RefCountedPtr<XdsClusterDropStats> cluster_drop_stats;
- if (load_report_state.drop_stats != nullptr) {
- cluster_drop_stats = load_report_state.drop_stats->RefIfNonZero();
- }
- if (cluster_drop_stats == nullptr) {
+ {
+ MutexLock lock(&mu_);
+ // We jump through some hoops here to make sure that the const
+ // XdsBootstrap::XdsServer& and y_absl::string_views
+ // stored in the XdsClusterDropStats object point to the
+ // XdsBootstrap::XdsServer and strings
+ // in the load_report_map_ key, so that they have the same lifetime.
+ auto server_it =
+ xds_load_report_server_map_.emplace(server, LoadReportServer()).first;
+ if (server_it->second.channel_state == nullptr) {
+ server_it->second.channel_state = GetOrCreateChannelStateLocked(
+ *server, "load report map (drop stats)");
+ }
+ auto load_report_it = server_it->second.load_report_map
+ .emplace(std::move(key), LoadReportState())
+ .first;
+ LoadReportState& load_report_state = load_report_it->second;
if (load_report_state.drop_stats != nullptr) {
- load_report_state.deleted_drop_stats +=
- load_report_state.drop_stats->GetSnapshotAndReset();
+ cluster_drop_stats = load_report_state.drop_stats->RefIfNonZero();
+ }
+ if (cluster_drop_stats == nullptr) {
+ if (load_report_state.drop_stats != nullptr) {
+ load_report_state.deleted_drop_stats +=
+ load_report_state.drop_stats->GetSnapshotAndReset();
+ }
+ cluster_drop_stats = MakeRefCounted<XdsClusterDropStats>(
+ Ref(DEBUG_LOCATION, "DropStats"), *server,
+ load_report_it->first.first /*cluster_name*/,
+ load_report_it->first.second /*eds_service_name*/);
+ load_report_state.drop_stats = cluster_drop_stats.get();
}
- cluster_drop_stats = MakeRefCounted<XdsClusterDropStats>(
- Ref(DEBUG_LOCATION, "DropStats"), server_it->first,
- load_report_it->first.first /*cluster_name*/,
- load_report_it->first.second /*eds_service_name*/);
- load_report_state.drop_stats = cluster_drop_stats.get();
+ server_it->second.channel_state->MaybeStartLrsCall();
}
- server_it->second.channel_state->MaybeStartLrsCall();
+ work_serializer_.DrainQueue();
return cluster_drop_stats;
}
@@ -2112,8 +1759,10 @@ void XdsClient::RemoveClusterDropStats(
const XdsBootstrap::XdsServer& xds_server, y_absl::string_view cluster_name,
y_absl::string_view eds_service_name,
XdsClusterDropStats* cluster_drop_stats) {
+ const auto* server = bootstrap_->FindXdsServer(xds_server);
+ if (server == nullptr) return;
MutexLock lock(&mu_);
- auto server_it = xds_load_report_server_map_.find(xds_server);
+ auto server_it = xds_load_report_server_map_.find(server);
if (server_it == xds_load_report_server_map_.end()) return;
auto load_report_it = server_it->second.load_report_map.find(
std::make_pair(TString(cluster_name), TString(eds_service_name)));
@@ -2132,42 +1781,48 @@ RefCountedPtr<XdsClusterLocalityStats> XdsClient::AddClusterLocalityStats(
const XdsBootstrap::XdsServer& xds_server, y_absl::string_view cluster_name,
y_absl::string_view eds_service_name,
RefCountedPtr<XdsLocalityName> locality) {
- if (!bootstrap_->XdsServerExists(xds_server)) return nullptr;
+ const auto* server = bootstrap_->FindXdsServer(xds_server);
+ if (server == nullptr) return nullptr;
auto key =
std::make_pair(TString(cluster_name), TString(eds_service_name));
- MutexLock lock(&mu_);
- // We jump through some hoops here to make sure that the const
- // XdsBootstrap::XdsServer& and y_absl::string_views
- // stored in the XdsClusterDropStats object point to the
- // XdsBootstrap::XdsServer and strings
- // in the load_report_map_ key, so that they have the same lifetime.
- auto server_it =
- xds_load_report_server_map_.emplace(xds_server, LoadReportServer()).first;
- if (server_it->second.channel_state == nullptr) {
- server_it->second.channel_state = GetOrCreateChannelStateLocked(xds_server);
- }
- auto load_report_it = server_it->second.load_report_map
- .emplace(std::move(key), LoadReportState())
- .first;
- LoadReportState& load_report_state = load_report_it->second;
- LoadReportState::LocalityState& locality_state =
- load_report_state.locality_stats[locality];
RefCountedPtr<XdsClusterLocalityStats> cluster_locality_stats;
- if (locality_state.locality_stats != nullptr) {
- cluster_locality_stats = locality_state.locality_stats->RefIfNonZero();
- }
- if (cluster_locality_stats == nullptr) {
+ {
+ MutexLock lock(&mu_);
+ // We jump through some hoops here to make sure that the const
+ // XdsBootstrap::XdsServer& and y_absl::string_views
+ // stored in the XdsClusterDropStats object point to the
+ // XdsBootstrap::XdsServer and strings
+ // in the load_report_map_ key, so that they have the same lifetime.
+ auto server_it =
+ xds_load_report_server_map_.emplace(server, LoadReportServer()).first;
+ if (server_it->second.channel_state == nullptr) {
+ server_it->second.channel_state = GetOrCreateChannelStateLocked(
+ *server, "load report map (locality stats)");
+ }
+ auto load_report_it = server_it->second.load_report_map
+ .emplace(std::move(key), LoadReportState())
+ .first;
+ LoadReportState& load_report_state = load_report_it->second;
+ LoadReportState::LocalityState& locality_state =
+ load_report_state.locality_stats[locality];
if (locality_state.locality_stats != nullptr) {
- locality_state.deleted_locality_stats +=
- locality_state.locality_stats->GetSnapshotAndReset();
+ cluster_locality_stats = locality_state.locality_stats->RefIfNonZero();
+ }
+ if (cluster_locality_stats == nullptr) {
+ if (locality_state.locality_stats != nullptr) {
+ locality_state.deleted_locality_stats +=
+ locality_state.locality_stats->GetSnapshotAndReset();
+ }
+ cluster_locality_stats = MakeRefCounted<XdsClusterLocalityStats>(
+ Ref(DEBUG_LOCATION, "LocalityStats"), *server,
+ load_report_it->first.first /*cluster_name*/,
+ load_report_it->first.second /*eds_service_name*/,
+ std::move(locality));
+ locality_state.locality_stats = cluster_locality_stats.get();
}
- cluster_locality_stats = MakeRefCounted<XdsClusterLocalityStats>(
- Ref(DEBUG_LOCATION, "LocalityStats"), server_it->first,
- load_report_it->first.first /*cluster_name*/,
- load_report_it->first.second /*eds_service_name*/, std::move(locality));
- locality_state.locality_stats = cluster_locality_stats.get();
+ server_it->second.channel_state->MaybeStartLrsCall();
}
- server_it->second.channel_state->MaybeStartLrsCall();
+ work_serializer_.DrainQueue();
return cluster_locality_stats;
}
@@ -2176,8 +1831,10 @@ void XdsClient::RemoveClusterLocalityStats(
y_absl::string_view eds_service_name,
const RefCountedPtr<XdsLocalityName>& locality,
XdsClusterLocalityStats* cluster_locality_stats) {
+ const auto* server = bootstrap_->FindXdsServer(xds_server);
+ if (server == nullptr) return;
MutexLock lock(&mu_);
- auto server_it = xds_load_report_server_map_.find(xds_server);
+ auto server_it = xds_load_report_server_map_.find(server);
if (server_it == xds_load_report_server_map_.end()) return;
auto load_report_it = server_it->second.load_report_map.find(
std::make_pair(TString(cluster_name), TString(eds_service_name)));
@@ -2198,29 +1855,38 @@ void XdsClient::RemoveClusterLocalityStats(
void XdsClient::ResetBackoff() {
MutexLock lock(&mu_);
for (auto& p : xds_server_channel_map_) {
- grpc_channel_reset_connect_backoff(p.second->channel());
+ p.second->ResetBackoff();
}
}
-void XdsClient::NotifyOnErrorLocked(grpc_error_handle error) {
- std::set<RefCountedPtr<ResourceWatcherInterface>> watchers;
- for (const auto& a : authority_state_map_) { // authority
- for (const auto& t : a.second.resource_map) { // type
- for (const auto& r : t.second) { // resource id
- for (const auto& w : r.second.watchers) { // watchers
- watchers.insert(w.second);
- }
- }
- }
+void XdsClient::NotifyWatchersOnErrorLocked(
+ const std::map<ResourceWatcherInterface*,
+ RefCountedPtr<ResourceWatcherInterface>>& watchers,
+ y_absl::Status status) {
+ const auto* node = bootstrap_->node();
+ if (node != nullptr) {
+ status = y_absl::Status(
+ status.code(),
+ y_absl::StrCat(status.message(), " (node ID:", node->id(), ")"));
}
work_serializer_.Schedule(
- // TODO(yashykt): When we move to C++14, capture watchers using
- // std::move()
- [watchers, error]() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer_) {
- for (const auto& watcher : watchers) {
- watcher->OnError(GRPC_ERROR_REF(error));
+ [watchers, status = std::move(status)]()
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
+ for (const auto& p : watchers) {
+ p.first->OnError(status);
+ }
+ },
+ DEBUG_LOCATION);
+}
+
+void XdsClient::NotifyWatchersOnResourceDoesNotExist(
+ const std::map<ResourceWatcherInterface*,
+ RefCountedPtr<ResourceWatcherInterface>>& watchers) {
+ work_serializer_.Schedule(
+ [watchers]() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
+ for (const auto& p : watchers) {
+ p.first->OnResourceDoesNotExist();
}
- GRPC_ERROR_UNREF(error);
},
DEBUG_LOCATION);
}
@@ -2232,7 +1898,7 @@ XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
gpr_log(GPR_INFO, "[xds_client %p] start building load report", this);
}
XdsApi::ClusterLoadReportMap snapshot_map;
- auto server_it = xds_load_report_server_map_.find(xds_server);
+ auto server_it = xds_load_report_server_map_.find(&xds_server);
if (server_it == xds_load_report_server_map_.end()) return snapshot_map;
auto& load_report_map = server_it->second.load_report_map;
for (auto load_report_it = load_report_map.begin();
@@ -2291,7 +1957,7 @@ XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
}
}
// Compute load report interval.
- const Timestamp now = ExecCtx::Get()->Now();
+ const Timestamp now = Timestamp::Now();
snapshot.load_report_interval = now - load_report.last_report_time;
load_report.last_report_time = now;
// Record snapshot.
@@ -2331,190 +1997,4 @@ TString XdsClient::DumpClientConfigBinary() {
return api_.AssembleClientConfig(resource_type_metadata_map);
}
-//
-// accessors for global state
-//
-
-void XdsClientGlobalInit() {
- g_mu = new Mutex;
- XdsHttpFilterRegistry::Init();
-}
-
-// TODO(roth): Find a better way to clear the fallback config that does
-// not require using Y_ABSL_NO_THREAD_SAFETY_ANALYSIS.
-void XdsClientGlobalShutdown() Y_ABSL_NO_THREAD_SAFETY_ANALYSIS {
- gpr_free(g_fallback_bootstrap_config);
- g_fallback_bootstrap_config = nullptr;
- delete g_mu;
- g_mu = nullptr;
- XdsHttpFilterRegistry::Shutdown();
-}
-
-namespace {
-
-TString GetBootstrapContents(const char* fallback_config,
- grpc_error_handle* error) {
- // First, try GRPC_XDS_BOOTSTRAP env var.
- UniquePtr<char> path(gpr_getenv("GRPC_XDS_BOOTSTRAP"));
- if (path != nullptr) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
- gpr_log(GPR_INFO,
- "Got bootstrap file location from GRPC_XDS_BOOTSTRAP "
- "environment variable: %s",
- path.get());
- }
- grpc_slice contents;
- *error =
- grpc_load_file(path.get(), /*add_null_terminator=*/true, &contents);
- if (*error != GRPC_ERROR_NONE) return "";
- TString contents_str(StringViewFromSlice(contents));
- grpc_slice_unref_internal(contents);
- return contents_str;
- }
- // Next, try GRPC_XDS_BOOTSTRAP_CONFIG env var.
- UniquePtr<char> env_config(gpr_getenv("GRPC_XDS_BOOTSTRAP_CONFIG"));
- if (env_config != nullptr) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
- gpr_log(GPR_INFO,
- "Got bootstrap contents from GRPC_XDS_BOOTSTRAP_CONFIG "
- "environment variable");
- }
- return env_config.get();
- }
- // Finally, try fallback config.
- if (fallback_config != nullptr) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
- gpr_log(GPR_INFO, "Got bootstrap contents from fallback config");
- }
- return fallback_config;
- }
- // No bootstrap config found.
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Environment variables GRPC_XDS_BOOTSTRAP or GRPC_XDS_BOOTSTRAP_CONFIG "
- "not defined");
- return "";
-}
-
-} // namespace
-
-RefCountedPtr<XdsClient> XdsClient::GetOrCreate(const grpc_channel_args* args,
- grpc_error_handle* error) {
- RefCountedPtr<XdsClient> xds_client;
- // If getting bootstrap from channel args, create a local XdsClient
- // instance for the channel or server instead of using the global instance.
- const char* bootstrap_config = grpc_channel_args_find_string(
- args, GRPC_ARG_TEST_ONLY_DO_NOT_USE_IN_PROD_XDS_BOOTSTRAP_CONFIG);
- if (bootstrap_config != nullptr) {
- std::unique_ptr<XdsBootstrap> bootstrap =
- XdsBootstrap::Create(bootstrap_config, error);
- if (*error == GRPC_ERROR_NONE) {
- grpc_channel_args* xds_channel_args =
- grpc_channel_args_find_pointer<grpc_channel_args>(
- args,
- GRPC_ARG_TEST_ONLY_DO_NOT_USE_IN_PROD_XDS_CLIENT_CHANNEL_ARGS);
- return MakeRefCounted<XdsClient>(std::move(bootstrap), xds_channel_args);
- }
- return nullptr;
- }
- // Otherwise, use the global instance.
- {
- MutexLock lock(g_mu);
- if (g_xds_client != nullptr) {
- auto xds_client = g_xds_client->RefIfNonZero();
- if (xds_client != nullptr) return xds_client;
- }
- // Find bootstrap contents.
- TString bootstrap_contents =
- GetBootstrapContents(g_fallback_bootstrap_config, error);
- if (*error != GRPC_ERROR_NONE) return nullptr;
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
- gpr_log(GPR_INFO, "xDS bootstrap contents: %s",
- bootstrap_contents.c_str());
- }
- // Parse bootstrap.
- std::unique_ptr<XdsBootstrap> bootstrap =
- XdsBootstrap::Create(bootstrap_contents, error);
- if (*error != GRPC_ERROR_NONE) return nullptr;
- // Instantiate XdsClient.
- xds_client =
- MakeRefCounted<XdsClient>(std::move(bootstrap), g_channel_args);
- g_xds_client = xds_client.get();
- }
- return xds_client;
-}
-
-namespace internal {
-
-void SetXdsChannelArgsForTest(grpc_channel_args* args) {
- MutexLock lock(g_mu);
- g_channel_args = args;
-}
-
-void UnsetGlobalXdsClientForTest() {
- MutexLock lock(g_mu);
- g_xds_client = nullptr;
-}
-
-void SetXdsFallbackBootstrapConfig(const char* config) {
- MutexLock lock(g_mu);
- gpr_free(g_fallback_bootstrap_config);
- g_fallback_bootstrap_config = gpr_strdup(config);
-}
-
-} // namespace internal
-
-//
-// embedding XdsClient in channel args
-//
-
-#define GRPC_ARG_XDS_CLIENT "grpc.internal.xds_client"
-
-namespace {
-
-void* XdsClientArgCopy(void* p) {
- XdsClient* xds_client = static_cast<XdsClient*>(p);
- xds_client->Ref(DEBUG_LOCATION, "channel arg").release();
- return p;
-}
-
-void XdsClientArgDestroy(void* p) {
- XdsClient* xds_client = static_cast<XdsClient*>(p);
- xds_client->Unref(DEBUG_LOCATION, "channel arg");
-}
-
-int XdsClientArgCmp(void* p, void* q) { return QsortCompare(p, q); }
-
-const grpc_arg_pointer_vtable kXdsClientArgVtable = {
- XdsClientArgCopy, XdsClientArgDestroy, XdsClientArgCmp};
-
-} // namespace
-
-grpc_arg XdsClient::MakeChannelArg() const {
- return grpc_channel_arg_pointer_create(const_cast<char*>(GRPC_ARG_XDS_CLIENT),
- const_cast<XdsClient*>(this),
- &kXdsClientArgVtable);
-}
-
-RefCountedPtr<XdsClient> XdsClient::GetFromChannelArgs(
- const grpc_channel_args& args) {
- XdsClient* xds_client =
- grpc_channel_args_find_pointer<XdsClient>(&args, GRPC_ARG_XDS_CLIENT);
- if (xds_client == nullptr) return nullptr;
- return xds_client->Ref(DEBUG_LOCATION, "GetFromChannelArgs");
-}
-
} // namespace grpc_core
-
-// The returned bytes may contain NULL(0), so we can't use c-string.
-grpc_slice grpc_dump_xds_configs() {
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
- grpc_core::ExecCtx exec_ctx;
- grpc_error_handle error = GRPC_ERROR_NONE;
- auto xds_client = grpc_core::XdsClient::GetOrCreate(nullptr, &error);
- if (error != GRPC_ERROR_NONE) {
- // If we isn't using xDS, just return an empty string.
- GRPC_ERROR_UNREF(error);
- return grpc_empty_slice();
- }
- return grpc_slice_from_cpp_string(xds_client->DumpClientConfigBinary());
-}
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_client.h b/contrib/libs/grpc/src/core/ext/xds/xds_client.h
index fe5a7989f2..173780e28e 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_client.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_client.h
@@ -19,24 +19,33 @@
#include <grpc/support/port_platform.h>
+#include <map>
+#include <memory>
#include <set>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
#include <vector>
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/string_view.h"
-#include "y_absl/types/optional.h"
+#include "upb/def.hpp"
#include "src/core/ext/xds/xds_api.h"
#include "src/core/ext/xds/xds_bootstrap.h"
#include "src/core/ext/xds/xds_client_stats.h"
#include "src/core/ext/xds/xds_resource_type.h"
-#include "src/core/lib/channel/channelz.h"
+#include "src/core/ext/xds/xds_transport.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/dual_ref_counted.h"
-#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/iomgr/work_serializer.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/work_serializer.h"
#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
@@ -55,35 +64,25 @@ class XdsClient : public DualRefCounted<XdsClient> {
virtual void OnGenericResourceChanged(
const XdsResourceType::ResourceData* resource)
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
- virtual void OnError(grpc_error_handle error)
+ virtual void OnError(y_absl::Status status)
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
virtual void OnResourceDoesNotExist()
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) = 0;
};
- // Factory function to get or create the global XdsClient instance.
- // If *error is not GRPC_ERROR_NONE upon return, then there was
- // an error initializing the client.
- static RefCountedPtr<XdsClient> GetOrCreate(const grpc_channel_args* args,
- grpc_error_handle* error);
-
- // Most callers should not instantiate directly. Use GetOrCreate() instead.
XdsClient(std::unique_ptr<XdsBootstrap> bootstrap,
- const grpc_channel_args* args);
+ OrphanablePtr<XdsTransportFactory> transport_factory,
+ Duration resource_request_timeout = Duration::Seconds(15));
~XdsClient() override;
const XdsBootstrap& bootstrap() const {
- // bootstrap_ is guaranteed to be non-null since XdsClient::GetOrCreate()
- // would return a null object if bootstrap_ was null.
- return *bootstrap_;
+ return *bootstrap_; // ctor asserts that it is non-null
}
- CertificateProviderStore& certificate_provider_store() {
- return *certificate_provider_store_;
+ XdsTransportFactory* transport_factory() const {
+ return transport_factory_.get();
}
- grpc_pollset_set* interested_parties() const { return interested_parties_; }
-
void Orphan() override;
// Start and cancel watch for a resource.
@@ -145,11 +144,6 @@ class XdsClient : public DualRefCounted<XdsClient> {
// implementation.
TString DumpClientConfigBinary();
- // Helpers for encoding the XdsClient object in channel args.
- grpc_arg MakeChannelArg() const;
- static RefCountedPtr<XdsClient> GetFromChannelArgs(
- const grpc_channel_args& args);
-
private:
struct XdsResourceKey {
TString id;
@@ -183,20 +177,18 @@ class XdsClient : public DualRefCounted<XdsClient> {
void Orphan() override;
- grpc_channel* channel() const { return channel_; }
XdsClient* xds_client() const { return xds_client_.get(); }
AdsCallState* ads_calld() const;
LrsCallState* lrs_calld() const;
+ void ResetBackoff();
+
void MaybeStartLrsCall();
void StopLrsCallLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
- bool HasAdsCall() const;
- bool HasActiveAdsCall() const;
-
- void StartConnectivityWatchLocked()
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
- void CancelConnectivityWatchLocked();
+ // Returns non-OK if there has been an error since the last time the
+ // ADS stream saw a response.
+ const y_absl::Status& status() const { return status_; }
void SubscribeLocked(const XdsResourceType* type,
const XdsResourceName& name)
@@ -207,17 +199,21 @@ class XdsClient : public DualRefCounted<XdsClient> {
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
private:
- class StateWatcher;
+ void OnConnectivityFailure(y_absl::Status status);
+
+ // Enqueues error notifications to watchers. Caller must drain
+ // XdsClient::work_serializer_ after releasing the lock.
+ void SetChannelStatusLocked(y_absl::Status status)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
// The owning xds client.
WeakRefCountedPtr<XdsClient> xds_client_;
- const XdsBootstrap::XdsServer& server_;
+ const XdsBootstrap::XdsServer& server_; // Owned by bootstrap.
+
+ OrphanablePtr<XdsTransportFactory::XdsTransport> transport_;
- // The channel and its status.
- grpc_channel* channel_;
bool shutting_down_ = false;
- StateWatcher* watcher_;
// The retryable XDS calls.
OrphanablePtr<RetryableCall<AdsCallState>> ads_calld_;
@@ -226,6 +222,8 @@ class XdsClient : public DualRefCounted<XdsClient> {
// Stores the most recent accepted resource version for each resource type.
std::map<const XdsResourceType*, TString /*version*/>
resource_type_version_map_;
+
+ y_absl::Status status_;
};
struct ResourceState {
@@ -234,6 +232,7 @@ class XdsClient : public DualRefCounted<XdsClient> {
// The latest data seen for the resource.
std::unique_ptr<XdsResourceType::ResourceData> resource;
XdsApi::ResourceMetadata meta;
+ bool ignored_deletion = false;
};
struct AuthorityState {
@@ -253,7 +252,7 @@ class XdsClient : public DualRefCounted<XdsClient> {
std::map<RefCountedPtr<XdsLocalityName>, LocalityState,
XdsLocalityName::Less>
locality_stats;
- Timestamp last_report_time = ExecCtx::Get()->Now();
+ Timestamp last_report_time = Timestamp::Now();
};
// Load report data.
@@ -266,11 +265,15 @@ class XdsClient : public DualRefCounted<XdsClient> {
LoadReportMap load_report_map;
};
- class Notifier;
-
- // Sends an error notification to all watchers.
- void NotifyOnErrorLocked(grpc_error_handle error)
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
+ // Sends an error notification to a specific set of watchers.
+ void NotifyWatchersOnErrorLocked(
+ const std::map<ResourceWatcherInterface*,
+ RefCountedPtr<ResourceWatcherInterface>>& watchers,
+ y_absl::Status status);
+ // Sends a resource-does-not-exist notification to a specific set of watchers.
+ void NotifyWatchersOnResourceDoesNotExist(
+ const std::map<ResourceWatcherInterface*,
+ RefCountedPtr<ResourceWatcherInterface>>& watchers);
void MaybeRegisterResourceTypeLocked(const XdsResourceType* resource_type)
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
@@ -279,7 +282,7 @@ class XdsClient : public DualRefCounted<XdsClient> {
const XdsResourceType* GetResourceTypeLocked(y_absl::string_view resource_type)
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
- static y_absl::StatusOr<XdsResourceName> ParseXdsResourceName(
+ y_absl::StatusOr<XdsResourceName> ParseXdsResourceName(
y_absl::string_view name, const XdsResourceType* type);
static TString ConstructFullXdsResourceName(
y_absl::string_view authority, y_absl::string_view resource_type,
@@ -290,13 +293,13 @@ class XdsClient : public DualRefCounted<XdsClient> {
const std::set<TString>& clusters) Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
RefCountedPtr<ChannelState> GetOrCreateChannelStateLocked(
- const XdsBootstrap::XdsServer& server) Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
+ const XdsBootstrap::XdsServer& server, const char* reason)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
std::unique_ptr<XdsBootstrap> bootstrap_;
- grpc_channel_args* args_;
+ OrphanablePtr<XdsTransportFactory> transport_factory_;
const Duration request_timeout_;
- grpc_pollset_set* interested_parties_;
- OrphanablePtr<CertificateProviderStore> certificate_provider_store_;
+ const bool xds_federation_enabled_;
XdsApi api_;
WorkSerializer work_serializer_;
@@ -309,14 +312,16 @@ class XdsClient : public DualRefCounted<XdsClient> {
v2_resource_types_ Y_ABSL_GUARDED_BY(mu_);
upb::SymbolTable symtab_ Y_ABSL_GUARDED_BY(mu_);
- // Map of existing xDS server channels.
- std::map<XdsBootstrap::XdsServer, ChannelState*> xds_server_channel_map_
- Y_ABSL_GUARDED_BY(mu_);
+ // Map of existing xDS server channels.
+ // Key is owned by the bootstrap config.
+ std::map<const XdsBootstrap::XdsServer*, ChannelState*>
+ xds_server_channel_map_ Y_ABSL_GUARDED_BY(mu_);
std::map<TString /*authority*/, AuthorityState> authority_state_map_
Y_ABSL_GUARDED_BY(mu_);
- std::map<XdsBootstrap::XdsServer, LoadReportServer>
+ // Key is owned by the bootstrap config.
+ std::map<const XdsBootstrap::XdsServer*, LoadReportServer>
xds_load_report_server_map_ Y_ABSL_GUARDED_BY(mu_);
// Stores started watchers whose resource name was not parsed successfully,
@@ -327,14 +332,6 @@ class XdsClient : public DualRefCounted<XdsClient> {
bool shutting_down_ Y_ABSL_GUARDED_BY(mu_) = false;
};
-namespace internal {
-void SetXdsChannelArgsForTest(grpc_channel_args* args);
-void UnsetGlobalXdsClientForTest();
-// Sets bootstrap config to be used when no env var is set.
-// Does not take ownership of config.
-void SetXdsFallbackBootstrapConfig(const char* config);
-} // namespace internal
-
} // namespace grpc_core
#endif // GRPC_CORE_EXT_XDS_XDS_CLIENT_H
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_client_grpc.cc b/contrib/libs/grpc/src/core/ext/xds/xds_client_grpc.cc
new file mode 100644
index 0000000000..0f66820cb6
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_client_grpc.cc
@@ -0,0 +1,230 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/xds/xds_client_grpc.h"
+
+#include <algorithm>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/grpc.h>
+#include <grpc/slice.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+
+#include "src/core/ext/xds/xds_bootstrap.h"
+#include "src/core/ext/xds/xds_bootstrap_grpc.h"
+#include "src/core/ext/xds/xds_channel_args.h"
+#include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
+#include "src/core/ext/xds/xds_http_filters.h"
+#include "src/core/ext/xds/xds_transport.h"
+#include "src/core/ext/xds/xds_transport_grpc.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/env.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/load_file.h"
+#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
+#include "src/core/lib/transport/error_utils.h"
+
+namespace grpc_core {
+
+//
+// GrpcXdsClient
+//
+
+namespace {
+
+Mutex* g_mu = nullptr;
+const grpc_channel_args* g_channel_args Y_ABSL_GUARDED_BY(*g_mu) = nullptr;
+GrpcXdsClient* g_xds_client Y_ABSL_GUARDED_BY(*g_mu) = nullptr;
+char* g_fallback_bootstrap_config Y_ABSL_GUARDED_BY(*g_mu) = nullptr;
+
+} // namespace
+
+void XdsClientGlobalInit() {
+ g_mu = new Mutex;
+ XdsHttpFilterRegistry::Init();
+ XdsClusterSpecifierPluginRegistry::Init();
+}
+
+// TODO(roth): Find a better way to clear the fallback config that does
+// not require using Y_ABSL_NO_THREAD_SAFETY_ANALYSIS.
+void XdsClientGlobalShutdown() Y_ABSL_NO_THREAD_SAFETY_ANALYSIS {
+ gpr_free(g_fallback_bootstrap_config);
+ g_fallback_bootstrap_config = nullptr;
+ delete g_mu;
+ g_mu = nullptr;
+ XdsHttpFilterRegistry::Shutdown();
+ XdsClusterSpecifierPluginRegistry::Shutdown();
+}
+
+namespace {
+
+y_absl::StatusOr<TString> GetBootstrapContents(const char* fallback_config) {
+ // First, try GRPC_XDS_BOOTSTRAP env var.
+ auto path = GetEnv("GRPC_XDS_BOOTSTRAP");
+ if (path.has_value()) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO,
+ "Got bootstrap file location from GRPC_XDS_BOOTSTRAP "
+ "environment variable: %s",
+ path->c_str());
+ }
+ grpc_slice contents;
+ grpc_error_handle error =
+ grpc_load_file(path->c_str(), /*add_null_terminator=*/true, &contents);
+ if (!GRPC_ERROR_IS_NONE(error)) return grpc_error_to_absl_status(error);
+ TString contents_str(StringViewFromSlice(contents));
+ grpc_slice_unref_internal(contents);
+ return contents_str;
+ }
+ // Next, try GRPC_XDS_BOOTSTRAP_CONFIG env var.
+ auto env_config = GetEnv("GRPC_XDS_BOOTSTRAP_CONFIG");
+ if (env_config.has_value()) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO,
+ "Got bootstrap contents from GRPC_XDS_BOOTSTRAP_CONFIG "
+ "environment variable");
+ }
+ return std::move(*env_config);
+ }
+ // Finally, try fallback config.
+ if (fallback_config != nullptr) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO, "Got bootstrap contents from fallback config");
+ }
+ return fallback_config;
+ }
+ // No bootstrap config found.
+ return y_absl::FailedPreconditionError(
+ "Environment variables GRPC_XDS_BOOTSTRAP or GRPC_XDS_BOOTSTRAP_CONFIG "
+ "not defined");
+}
+
+} // namespace
+
+y_absl::StatusOr<RefCountedPtr<GrpcXdsClient>> GrpcXdsClient::GetOrCreate(
+ const ChannelArgs& args, const char* reason) {
+ // If getting bootstrap from channel args, create a local XdsClient
+ // instance for the channel or server instead of using the global instance.
+ y_absl::optional<y_absl::string_view> bootstrap_config = args.GetString(
+ GRPC_ARG_TEST_ONLY_DO_NOT_USE_IN_PROD_XDS_BOOTSTRAP_CONFIG);
+ if (bootstrap_config.has_value()) {
+ auto bootstrap = GrpcXdsBootstrap::Create(*bootstrap_config);
+ if (!bootstrap.ok()) return bootstrap.status();
+ grpc_channel_args* xds_channel_args = args.GetPointer<grpc_channel_args>(
+ GRPC_ARG_TEST_ONLY_DO_NOT_USE_IN_PROD_XDS_CLIENT_CHANNEL_ARGS);
+ return MakeRefCounted<GrpcXdsClient>(std::move(*bootstrap),
+ ChannelArgs::FromC(xds_channel_args));
+ }
+ // Otherwise, use the global instance.
+ MutexLock lock(g_mu);
+ if (g_xds_client != nullptr) {
+ auto xds_client = g_xds_client->RefIfNonZero(DEBUG_LOCATION, reason);
+ if (xds_client != nullptr) return xds_client;
+ }
+ // Find bootstrap contents.
+ auto bootstrap_contents = GetBootstrapContents(g_fallback_bootstrap_config);
+ if (!bootstrap_contents.ok()) return bootstrap_contents.status();
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
+ gpr_log(GPR_INFO, "xDS bootstrap contents: %s",
+ bootstrap_contents->c_str());
+ }
+ // Parse bootstrap.
+ auto bootstrap = GrpcXdsBootstrap::Create(*bootstrap_contents);
+ if (!bootstrap.ok()) return bootstrap.status();
+ // Instantiate XdsClient.
+ auto xds_client = MakeRefCounted<GrpcXdsClient>(
+ std::move(*bootstrap), ChannelArgs::FromC(g_channel_args));
+ g_xds_client = xds_client.get();
+ return xds_client;
+}
+
+GrpcXdsClient::GrpcXdsClient(std::unique_ptr<GrpcXdsBootstrap> bootstrap,
+ const ChannelArgs& args)
+ : XdsClient(
+ std::move(bootstrap), MakeOrphanable<GrpcXdsTransportFactory>(args),
+ std::max(Duration::Zero(),
+ args.GetDurationFromIntMillis(
+ GRPC_ARG_XDS_RESOURCE_DOES_NOT_EXIST_TIMEOUT_MS)
+ .value_or(Duration::Seconds(15)))),
+ certificate_provider_store_(MakeOrphanable<CertificateProviderStore>(
+ static_cast<const GrpcXdsBootstrap&>(this->bootstrap())
+ .certificate_providers())) {}
+
+GrpcXdsClient::~GrpcXdsClient() {
+ MutexLock lock(g_mu);
+ if (g_xds_client == this) g_xds_client = nullptr;
+}
+
+grpc_pollset_set* GrpcXdsClient::interested_parties() const {
+ return reinterpret_cast<GrpcXdsTransportFactory*>(transport_factory())
+ ->interested_parties();
+}
+
+namespace internal {
+
+void SetXdsChannelArgsForTest(grpc_channel_args* args) {
+ MutexLock lock(g_mu);
+ g_channel_args = args;
+}
+
+void UnsetGlobalXdsClientForTest() {
+ MutexLock lock(g_mu);
+ g_xds_client = nullptr;
+}
+
+void SetXdsFallbackBootstrapConfig(const char* config) {
+ MutexLock lock(g_mu);
+ gpr_free(g_fallback_bootstrap_config);
+ g_fallback_bootstrap_config = gpr_strdup(config);
+}
+
+} // namespace internal
+
+} // namespace grpc_core
+
+// The returned bytes may contain NULL(0), so we can't use c-string.
+grpc_slice grpc_dump_xds_configs(void) {
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
+ grpc_core::ExecCtx exec_ctx;
+ grpc_error_handle error = GRPC_ERROR_NONE;
+ auto xds_client = grpc_core::GrpcXdsClient::GetOrCreate(
+ grpc_core::ChannelArgs(), "grpc_dump_xds_configs()");
+ if (!xds_client.ok()) {
+ // If we aren't using xDS, just return an empty string.
+ return grpc_empty_slice();
+ }
+ return grpc_slice_from_cpp_string((*xds_client)->DumpClientConfigBinary());
+}
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_client_grpc.h b/contrib/libs/grpc/src/core/ext/xds/xds_client_grpc.h
new file mode 100644
index 0000000000..a273fc92b5
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_client_grpc.h
@@ -0,0 +1,79 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_EXT_XDS_XDS_CLIENT_GRPC_H
+#define GRPC_CORE_EXT_XDS_XDS_CLIENT_GRPC_H
+
+#include <grpc/support/port_platform.h>
+
+#include <memory>
+
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
+
+#include "src/core/ext/xds/certificate_provider_store.h"
+#include "src/core/ext/xds/xds_bootstrap_grpc.h"
+#include "src/core/ext/xds/xds_client.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+
+namespace grpc_core {
+
+class GrpcXdsClient : public XdsClient {
+ public:
+ // Factory function to get or create the global XdsClient instance.
+ static y_absl::StatusOr<RefCountedPtr<GrpcXdsClient>> GetOrCreate(
+ const ChannelArgs& args, const char* reason);
+
+ // Do not instantiate directly -- use GetOrCreate() instead.
+ GrpcXdsClient(std::unique_ptr<GrpcXdsBootstrap> bootstrap,
+ const ChannelArgs& args);
+ ~GrpcXdsClient() override;
+
+ // Helpers for encoding the XdsClient object in channel args.
+ static y_absl::string_view ChannelArgName() {
+ return "grpc.internal.xds_client";
+ }
+ static int ChannelArgsCompare(const XdsClient* a, const XdsClient* b) {
+ return QsortCompare(a, b);
+ }
+
+ grpc_pollset_set* interested_parties() const;
+
+ CertificateProviderStore& certificate_provider_store() const {
+ return *certificate_provider_store_;
+ }
+
+ private:
+ OrphanablePtr<CertificateProviderStore> certificate_provider_store_;
+};
+
+namespace internal {
+void SetXdsChannelArgsForTest(grpc_channel_args* args);
+void UnsetGlobalXdsClientForTest();
+// Sets bootstrap config to be used when no env var is set.
+// Does not take ownership of config.
+void SetXdsFallbackBootstrapConfig(const char* config);
+} // namespace internal
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_XDS_XDS_CLIENT_GRPC_H
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_client_stats.cc b/contrib/libs/grpc/src/core/ext/xds/xds_client_stats.cc
index 85a992679c..7a0caded79 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_client_stats.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_client_stats.cc
@@ -20,12 +20,11 @@
#include "src/core/ext/xds/xds_client_stats.h"
-#include <string.h>
-
-#include <grpc/support/atm.h>
-#include <grpc/support/string_util.h>
+#include <grpc/support/log.h>
#include "src/core/ext/xds/xds_client.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
namespace grpc_core {
@@ -54,7 +53,7 @@ XdsClusterDropStats::XdsClusterDropStats(
eds_service_name_(eds_service_name) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
gpr_log(GPR_INFO, "[xds_client %p] created drop stats %p for {%s, %s, %s}",
- xds_client_.get(), this, lrs_server_.server_uri.c_str(),
+ xds_client_.get(), this, lrs_server_.server_uri().c_str(),
TString(cluster_name_).c_str(),
TString(eds_service_name_).c_str());
}
@@ -64,7 +63,7 @@ XdsClusterDropStats::~XdsClusterDropStats() {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
gpr_log(GPR_INFO,
"[xds_client %p] destroying drop stats %p for {%s, %s, %s}",
- xds_client_.get(), this, lrs_server_.server_uri.c_str(),
+ xds_client_.get(), this, lrs_server_.server_uri().c_str(),
TString(cluster_name_).c_str(),
TString(eds_service_name_).c_str());
}
@@ -109,7 +108,7 @@ XdsClusterLocalityStats::XdsClusterLocalityStats(
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
gpr_log(GPR_INFO,
"[xds_client %p] created locality stats %p for {%s, %s, %s, %s}",
- xds_client_.get(), this, lrs_server_.server_uri.c_str(),
+ xds_client_.get(), this, lrs_server_.server_uri().c_str(),
TString(cluster_name_).c_str(),
TString(eds_service_name_).c_str(),
name_->AsHumanReadableString().c_str());
@@ -120,7 +119,7 @@ XdsClusterLocalityStats::~XdsClusterLocalityStats() {
if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
gpr_log(GPR_INFO,
"[xds_client %p] destroying locality stats %p for {%s, %s, %s, %s}",
- xds_client_.get(), this, lrs_server_.server_uri.c_str(),
+ xds_client_.get(), this, lrs_server_.server_uri().c_str(),
TString(cluster_name_).c_str(),
TString(eds_service_name_).c_str(),
name_->AsHumanReadableString().c_str());
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_client_stats.h b/contrib/libs/grpc/src/core/ext/xds/xds_client_stats.h
index ca925efa07..45d322c5c2 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_client_stats.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_client_stats.h
@@ -22,20 +22,21 @@
#include <grpc/support/port_platform.h>
#include <atomic>
+#include <cstdint>
#include <map>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
-#include "y_absl/strings/str_cat.h"
+#include "y_absl/base/thread_annotations.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/string_view.h"
#include "src/core/ext/xds/xds_bootstrap.h"
#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_cluster.cc b/contrib/libs/grpc/src/core/ext/xds/xds_cluster.cc
index c4cb7739bd..04689e34d1 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_cluster.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_cluster.cc
@@ -18,27 +18,41 @@
#include "src/core/ext/xds/xds_cluster.h"
-#include "y_absl/container/inlined_vector.h"
+#include <stddef.h>
+
+#include <utility>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
-#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/strip.h"
#include "envoy/config/cluster/v3/circuit_breaker.upb.h"
#include "envoy/config/cluster/v3/cluster.upb.h"
#include "envoy/config/cluster/v3/cluster.upbdefs.h"
+#include "envoy/config/cluster/v3/outlier_detection.upb.h"
#include "envoy/config/core/v3/address.upb.h"
#include "envoy/config/core/v3/base.upb.h"
#include "envoy/config/core/v3/config_source.upb.h"
#include "envoy/config/endpoint/v3/endpoint.upb.h"
#include "envoy/config/endpoint/v3/endpoint_components.upb.h"
#include "envoy/extensions/clusters/aggregate/v3/cluster.upb.h"
+#include "envoy/extensions/transport_sockets/tls/v3/tls.upb.h"
#include "google/protobuf/any.upb.h"
+#include "google/protobuf/duration.upb.h"
#include "google/protobuf/wrappers.upb.h"
+#include "upb/text_encode.h"
+#include "upb/upb.h"
-#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
-#include "src/core/lib/gpr/env.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/ext/xds/upb_utils.h"
+#include "src/core/ext/xds/xds_common_types.h"
+#include "src/core/ext/xds/xds_resource_type.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/host_port.h"
+#include "src/core/lib/gprpp/time.h"
namespace grpc_core {
@@ -47,32 +61,31 @@ namespace grpc_core {
//
TString XdsClusterResource::ToString() const {
- y_absl::InlinedVector<TString, 8> contents;
+ std::vector<TString> contents;
switch (cluster_type) {
case EDS:
contents.push_back("cluster_type=EDS");
if (!eds_service_name.empty()) {
- contents.push_back(
- y_absl::StrFormat("eds_service_name=%s", eds_service_name));
+ contents.push_back(y_absl::StrCat("eds_service_name=", eds_service_name));
}
break;
case LOGICAL_DNS:
contents.push_back("cluster_type=LOGICAL_DNS");
- contents.push_back(y_absl::StrFormat("dns_hostname=%s", dns_hostname));
+ contents.push_back(y_absl::StrCat("dns_hostname=", dns_hostname));
break;
case AGGREGATE:
contents.push_back("cluster_type=AGGREGATE");
contents.push_back(
- y_absl::StrFormat("prioritized_cluster_names=[%s]",
- y_absl::StrJoin(prioritized_cluster_names, ", ")));
+ y_absl::StrCat("prioritized_cluster_names=[",
+ y_absl::StrJoin(prioritized_cluster_names, ", "), "]"));
}
if (!common_tls_context.Empty()) {
- contents.push_back(y_absl::StrFormat("common_tls_context=%s",
- common_tls_context.ToString()));
+ contents.push_back(
+ y_absl::StrCat("common_tls_context=", common_tls_context.ToString()));
}
if (lrs_load_reporting_server.has_value()) {
- contents.push_back(y_absl::StrFormat("lrs_load_reporting_server_name=%s",
- lrs_load_reporting_server->server_uri));
+ contents.push_back(y_absl::StrCat("lrs_load_reporting_server_name=",
+ lrs_load_reporting_server->server_uri()));
}
contents.push_back(y_absl::StrCat("lb_policy=", lb_policy));
if (lb_policy == "RING_HASH") {
@@ -80,7 +93,7 @@ TString XdsClusterResource::ToString() const {
contents.push_back(y_absl::StrCat("max_ring_size=", max_ring_size));
}
contents.push_back(
- y_absl::StrFormat("max_concurrent_requests=%d", max_concurrent_requests));
+ y_absl::StrCat("max_concurrent_requests=", max_concurrent_requests));
return y_absl::StrCat("{", y_absl::StrJoin(contents, ", "), "}");
}
@@ -90,59 +103,60 @@ TString XdsClusterResource::ToString() const {
namespace {
-grpc_error_handle UpstreamTlsContextParse(
- const XdsEncodingContext& context,
- const envoy_config_core_v3_TransportSocket* transport_socket,
- CommonTlsContext* common_tls_context) {
- // Record Upstream tls context
- y_absl::string_view name = UpbStringToAbsl(
- envoy_config_core_v3_TransportSocket_name(transport_socket));
- if (name != "envoy.transport_sockets.tls") {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("Unrecognized transport socket: ", name));
- }
+y_absl::StatusOr<CommonTlsContext> UpstreamTlsContextParse(
+ const XdsResourceType::DecodeContext& context,
+ const envoy_config_core_v3_TransportSocket* transport_socket) {
auto* typed_config =
envoy_config_core_v3_TransportSocket_typed_config(transport_socket);
- if (typed_config != nullptr) {
- const upb_StringView encoded_upstream_tls_context =
- google_protobuf_Any_value(typed_config);
- auto* upstream_tls_context =
- envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_parse(
- encoded_upstream_tls_context.data,
- encoded_upstream_tls_context.size, context.arena);
- if (upstream_tls_context == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Can't decode upstream tls context.");
- }
- auto* common_tls_context_proto =
- envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_common_tls_context(
- upstream_tls_context);
- if (common_tls_context_proto != nullptr) {
- grpc_error_handle error = CommonTlsContext::Parse(
- context, common_tls_context_proto, common_tls_context);
- if (error != GRPC_ERROR_NONE) {
- return grpc_error_add_child(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Error parsing UpstreamTlsContext"),
- error);
- }
+ if (typed_config == nullptr) {
+ return y_absl::InvalidArgumentError("transport_socket.typed_config not set");
+ }
+ y_absl::string_view type_url = y_absl::StripPrefix(
+ UpbStringToAbsl(google_protobuf_Any_type_url(typed_config)),
+ "type.googleapis.com/");
+ if (type_url !=
+ "envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext") {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("Unrecognized transport socket type: ", type_url));
+ }
+ const upb_StringView encoded_upstream_tls_context =
+ google_protobuf_Any_value(typed_config);
+ auto* upstream_tls_context =
+ envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_parse(
+ encoded_upstream_tls_context.data, encoded_upstream_tls_context.size,
+ context.arena);
+ if (upstream_tls_context == nullptr) {
+ return y_absl::InvalidArgumentError("Can't decode upstream tls context.");
+ }
+ auto* common_tls_context_proto =
+ envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_common_tls_context(
+ upstream_tls_context);
+ CommonTlsContext common_tls_context;
+ if (common_tls_context_proto != nullptr) {
+ auto common_context =
+ CommonTlsContext::Parse(context, common_tls_context_proto);
+ if (!common_context.ok()) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("Error parsing UpstreamTlsContext: ",
+ common_context.status().message()));
}
+ common_tls_context = std::move(*common_context);
}
- if (common_tls_context->certificate_validation_context
+ if (common_tls_context.certificate_validation_context
.ca_certificate_provider_instance.instance_name.empty()) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"UpstreamTlsContext: TLS configuration provided but no "
"ca_certificate_provider_instance found.");
}
- return GRPC_ERROR_NONE;
+ return common_tls_context;
}
-grpc_error_handle CdsLogicalDnsParse(
- const envoy_config_cluster_v3_Cluster* cluster,
- XdsClusterResource* cds_update) {
+y_absl::Status CdsLogicalDnsParse(const envoy_config_cluster_v3_Cluster* cluster,
+ XdsClusterResource* cds_update) {
const auto* load_assignment =
envoy_config_cluster_v3_Cluster_load_assignment(cluster);
if (load_assignment == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"load_assignment not present for LOGICAL_DNS cluster");
}
size_t num_localities;
@@ -150,7 +164,7 @@ grpc_error_handle CdsLogicalDnsParse(
envoy_config_endpoint_v3_ClusterLoadAssignment_endpoints(load_assignment,
&num_localities);
if (num_localities != 1) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ return y_absl::InvalidArgumentError(
y_absl::StrCat("load_assignment for LOGICAL_DNS cluster must have "
"exactly one locality, found ",
num_localities));
@@ -160,7 +174,7 @@ grpc_error_handle CdsLogicalDnsParse(
envoy_config_endpoint_v3_LocalityLbEndpoints_lb_endpoints(localities[0],
&num_endpoints);
if (num_endpoints != 1) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ return y_absl::InvalidArgumentError(
y_absl::StrCat("locality for LOGICAL_DNS cluster must have "
"exactly one endpoint, found ",
num_endpoints));
@@ -168,67 +182,48 @@ grpc_error_handle CdsLogicalDnsParse(
const auto* endpoint =
envoy_config_endpoint_v3_LbEndpoint_endpoint(endpoints[0]);
if (endpoint == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "LbEndpoint endpoint field not set");
+ return y_absl::InvalidArgumentError("LbEndpoint endpoint field not set");
}
const auto* address = envoy_config_endpoint_v3_Endpoint_address(endpoint);
if (address == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Endpoint address field not set");
+ return y_absl::InvalidArgumentError("Endpoint address field not set");
}
const auto* socket_address =
envoy_config_core_v3_Address_socket_address(address);
if (socket_address == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Address socket_address field not set");
+ return y_absl::InvalidArgumentError("Address socket_address field not set");
}
if (envoy_config_core_v3_SocketAddress_resolver_name(socket_address).size !=
0) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"LOGICAL_DNS clusters must NOT have a custom resolver name set");
}
y_absl::string_view address_str = UpbStringToAbsl(
envoy_config_core_v3_SocketAddress_address(socket_address));
if (address_str.empty()) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "SocketAddress address field not set");
+ return y_absl::InvalidArgumentError("SocketAddress address field not set");
}
if (!envoy_config_core_v3_SocketAddress_has_port_value(socket_address)) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "SocketAddress port_value field not set");
+ return y_absl::InvalidArgumentError("SocketAddress port_value field not set");
}
cds_update->dns_hostname = JoinHostPort(
address_str,
envoy_config_core_v3_SocketAddress_port_value(socket_address));
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
-// TODO(donnadionne): Check to see if cluster types aggregate_cluster and
-// logical_dns are enabled, this will be
-// removed once the cluster types are fully integration-tested and enabled by
-// default.
-bool XdsAggregateAndLogicalDnsClusterEnabled() {
- char* value = gpr_getenv(
- "GRPC_XDS_EXPERIMENTAL_ENABLE_AGGREGATE_AND_LOGICAL_DNS_CLUSTER");
- bool parsed_value;
- bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
- gpr_free(value);
- return parse_succeeded && parsed_value;
-}
-
-grpc_error_handle CdsResourceParse(
- const XdsEncodingContext& context,
- const envoy_config_cluster_v3_Cluster* cluster, bool /*is_v2*/,
- XdsClusterResource* cds_update) {
- std::vector<grpc_error_handle> errors;
+y_absl::StatusOr<XdsClusterResource> CdsResourceParse(
+ const XdsResourceType::DecodeContext& context,
+ const envoy_config_cluster_v3_Cluster* cluster, bool /*is_v2*/) {
+ XdsClusterResource cds_update;
+ std::vector<TString> errors;
// Check the cluster_discovery_type.
if (!envoy_config_cluster_v3_Cluster_has_type(cluster) &&
!envoy_config_cluster_v3_Cluster_has_cluster_type(cluster)) {
- errors.push_back(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("DiscoveryType not found."));
+ errors.emplace_back("DiscoveryType not found.");
} else if (envoy_config_cluster_v3_Cluster_type(cluster) ==
envoy_config_cluster_v3_Cluster_EDS) {
- cds_update->cluster_type = XdsClusterResource::ClusterType::EDS;
+ cds_update.cluster_type = XdsClusterResource::ClusterType::EDS;
// Check the EDS config source.
const envoy_config_cluster_v3_Cluster_EdsClusterConfig* eds_cluster_config =
envoy_config_cluster_v3_Cluster_eds_cluster_config(cluster);
@@ -237,64 +232,60 @@ grpc_error_handle CdsResourceParse(
eds_cluster_config);
if (!envoy_config_core_v3_ConfigSource_has_ads(eds_config) &&
!envoy_config_core_v3_ConfigSource_has_self(eds_config)) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "EDS ConfigSource is not ADS or SELF."));
+ errors.emplace_back("EDS ConfigSource is not ADS or SELF.");
}
// Record EDS service_name (if any).
upb_StringView service_name =
envoy_config_cluster_v3_Cluster_EdsClusterConfig_service_name(
eds_cluster_config);
if (service_name.size != 0) {
- cds_update->eds_service_name = UpbStringToStdString(service_name);
+ cds_update.eds_service_name = UpbStringToStdString(service_name);
}
- } else if (!XdsAggregateAndLogicalDnsClusterEnabled()) {
- errors.push_back(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("DiscoveryType is not valid."));
} else if (envoy_config_cluster_v3_Cluster_type(cluster) ==
envoy_config_cluster_v3_Cluster_LOGICAL_DNS) {
- cds_update->cluster_type = XdsClusterResource::ClusterType::LOGICAL_DNS;
- grpc_error_handle error = CdsLogicalDnsParse(cluster, cds_update);
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
+ cds_update.cluster_type = XdsClusterResource::ClusterType::LOGICAL_DNS;
+ y_absl::Status status = CdsLogicalDnsParse(cluster, &cds_update);
+ if (!status.ok()) errors.emplace_back(status.message());
} else {
- if (!envoy_config_cluster_v3_Cluster_has_cluster_type(cluster)) {
- errors.push_back(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("DiscoveryType is not valid."));
+ const auto* custom_cluster_type =
+ envoy_config_cluster_v3_Cluster_cluster_type(cluster);
+ if (custom_cluster_type == nullptr) {
+ errors.push_back("DiscoveryType is not valid.");
} else {
- const envoy_config_cluster_v3_Cluster_CustomClusterType*
- custom_cluster_type =
- envoy_config_cluster_v3_Cluster_cluster_type(cluster);
- upb_StringView type_name =
- envoy_config_cluster_v3_Cluster_CustomClusterType_name(
+ const auto* typed_config =
+ envoy_config_cluster_v3_Cluster_CustomClusterType_typed_config(
custom_cluster_type);
- if (UpbStringToAbsl(type_name) != "envoy.clusters.aggregate") {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "DiscoveryType is not valid."));
+ if (typed_config == nullptr) {
+ errors.push_back("cluster_type.typed_config not set");
} else {
- cds_update->cluster_type = XdsClusterResource::ClusterType::AGGREGATE;
- // Retrieve aggregate clusters.
- const google_protobuf_Any* typed_config =
- envoy_config_cluster_v3_Cluster_CustomClusterType_typed_config(
- custom_cluster_type);
- const upb_StringView aggregate_cluster_config_upb_stringview =
- google_protobuf_Any_value(typed_config);
- const envoy_extensions_clusters_aggregate_v3_ClusterConfig*
- aggregate_cluster_config =
- envoy_extensions_clusters_aggregate_v3_ClusterConfig_parse(
- aggregate_cluster_config_upb_stringview.data,
- aggregate_cluster_config_upb_stringview.size,
- context.arena);
- if (aggregate_cluster_config == nullptr) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Can't parse aggregate cluster."));
+ y_absl::string_view type_url = y_absl::StripPrefix(
+ UpbStringToAbsl(google_protobuf_Any_type_url(typed_config)),
+ "type.googleapis.com/");
+ if (type_url !=
+ "envoy.extensions.clusters.aggregate.v3.ClusterConfig") {
+ errors.push_back(
+ y_absl::StrCat("unknown cluster_type extension: ", type_url));
} else {
- size_t size;
- const upb_StringView* clusters =
- envoy_extensions_clusters_aggregate_v3_ClusterConfig_clusters(
- aggregate_cluster_config, &size);
- for (size_t i = 0; i < size; ++i) {
- const upb_StringView cluster = clusters[i];
- cds_update->prioritized_cluster_names.emplace_back(
- UpbStringToStdString(cluster));
+ cds_update.cluster_type = XdsClusterResource::ClusterType::AGGREGATE;
+ // Retrieve aggregate clusters.
+ const upb_StringView aggregate_cluster_config_upb_stringview =
+ google_protobuf_Any_value(typed_config);
+ const auto* aggregate_cluster_config =
+ envoy_extensions_clusters_aggregate_v3_ClusterConfig_parse(
+ aggregate_cluster_config_upb_stringview.data,
+ aggregate_cluster_config_upb_stringview.size, context.arena);
+ if (aggregate_cluster_config == nullptr) {
+ errors.emplace_back("Can't parse aggregate cluster.");
+ } else {
+ size_t size;
+ const upb_StringView* clusters =
+ envoy_extensions_clusters_aggregate_v3_ClusterConfig_clusters(
+ aggregate_cluster_config, &size);
+ for (size_t i = 0; i < size; ++i) {
+ const upb_StringView cluster = clusters[i];
+ cds_update.prioritized_cluster_names.emplace_back(
+ UpbStringToStdString(cluster));
+ }
}
}
}
@@ -303,10 +294,10 @@ grpc_error_handle CdsResourceParse(
// Check the LB policy.
if (envoy_config_cluster_v3_Cluster_lb_policy(cluster) ==
envoy_config_cluster_v3_Cluster_ROUND_ROBIN) {
- cds_update->lb_policy = "ROUND_ROBIN";
+ cds_update.lb_policy = "ROUND_ROBIN";
} else if (envoy_config_cluster_v3_Cluster_lb_policy(cluster) ==
envoy_config_cluster_v3_Cluster_RING_HASH) {
- cds_update->lb_policy = "RING_HASH";
+ cds_update.lb_policy = "RING_HASH";
// Record ring hash lb config
auto* ring_hash_config =
envoy_config_cluster_v3_Cluster_ring_hash_lb_config(cluster);
@@ -315,51 +306,49 @@ grpc_error_handle CdsResourceParse(
envoy_config_cluster_v3_Cluster_RingHashLbConfig_maximum_ring_size(
ring_hash_config);
if (max_ring_size != nullptr) {
- cds_update->max_ring_size =
+ cds_update.max_ring_size =
google_protobuf_UInt64Value_value(max_ring_size);
- if (cds_update->max_ring_size > 8388608 ||
- cds_update->max_ring_size == 0) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "max_ring_size is not in the range of 1 to 8388608."));
+ if (cds_update.max_ring_size > 8388608 ||
+ cds_update.max_ring_size == 0) {
+ errors.emplace_back(
+ "max_ring_size is not in the range of 1 to 8388608.");
}
}
const google_protobuf_UInt64Value* min_ring_size =
envoy_config_cluster_v3_Cluster_RingHashLbConfig_minimum_ring_size(
ring_hash_config);
if (min_ring_size != nullptr) {
- cds_update->min_ring_size =
+ cds_update.min_ring_size =
google_protobuf_UInt64Value_value(min_ring_size);
- if (cds_update->min_ring_size > 8388608 ||
- cds_update->min_ring_size == 0) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "min_ring_size is not in the range of 1 to 8388608."));
+ if (cds_update.min_ring_size > 8388608 ||
+ cds_update.min_ring_size == 0) {
+ errors.emplace_back(
+ "min_ring_size is not in the range of 1 to 8388608.");
}
- if (cds_update->min_ring_size > cds_update->max_ring_size) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "min_ring_size cannot be greater than max_ring_size."));
+ if (cds_update.min_ring_size > cds_update.max_ring_size) {
+ errors.emplace_back(
+ "min_ring_size cannot be greater than max_ring_size.");
}
}
if (envoy_config_cluster_v3_Cluster_RingHashLbConfig_hash_function(
ring_hash_config) !=
envoy_config_cluster_v3_Cluster_RingHashLbConfig_XX_HASH) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "ring hash lb config has invalid hash function."));
+ errors.emplace_back("ring hash lb config has invalid hash function.");
}
}
} else {
- errors.push_back(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("LB policy is not supported."));
+ errors.emplace_back("LB policy is not supported.");
}
auto* transport_socket =
envoy_config_cluster_v3_Cluster_transport_socket(cluster);
if (transport_socket != nullptr) {
- grpc_error_handle error = UpstreamTlsContextParse(
- context, transport_socket, &cds_update->common_tls_context);
- if (error != GRPC_ERROR_NONE) {
- errors.push_back(
- grpc_error_add_child(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Error parsing security configuration"),
- error));
+ auto common_tls_context =
+ UpstreamTlsContextParse(context, transport_socket);
+ if (!common_tls_context.ok()) {
+ errors.emplace_back(y_absl::StrCat("Error parsing security configuration: ",
+ common_tls_context.status().message()));
+ } else {
+ cds_update.common_tls_context = std::move(*common_tls_context);
}
}
// Record LRS server name (if any).
@@ -367,10 +356,10 @@ grpc_error_handle CdsResourceParse(
envoy_config_cluster_v3_Cluster_lrs_server(cluster);
if (lrs_server != nullptr) {
if (!envoy_config_core_v3_ConfigSource_has_self(lrs_server)) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- ": LRS ConfigSource is not self."));
+ errors.emplace_back("LRS ConfigSource is not self.");
}
- cds_update->lrs_load_reporting_server.emplace(context.server);
+ cds_update.lrs_load_reporting_server.emplace(
+ static_cast<const GrpcXdsBootstrap::GrpcXdsServer&>(context.server));
}
// The Cluster resource encodes the circuit breaking parameters in a list of
// Thresholds messages, where each message specifies the parameters for a
@@ -391,17 +380,125 @@ grpc_error_handle CdsResourceParse(
envoy_config_cluster_v3_CircuitBreakers_Thresholds_max_requests(
threshold);
if (max_requests != nullptr) {
- cds_update->max_concurrent_requests =
+ cds_update.max_concurrent_requests =
google_protobuf_UInt32Value_value(max_requests);
}
break;
}
}
}
- return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing CDS resource", &errors);
+ // As long as outlier detection field is present in the cluster update,
+ // we will end up with a outlier detection in the cluster resource which will
+ // lead to the creation of outlier detection in discovery mechanism. Values
+ // for outlier detection will be based on fields received and
+ // default values.
+ if (XdsOutlierDetectionEnabled() &&
+ envoy_config_cluster_v3_Cluster_has_outlier_detection(cluster)) {
+ OutlierDetectionConfig outlier_detection_update;
+ const envoy_config_cluster_v3_OutlierDetection* outlier_detection =
+ envoy_config_cluster_v3_Cluster_outlier_detection(cluster);
+ const google_protobuf_Duration* duration =
+ envoy_config_cluster_v3_OutlierDetection_interval(outlier_detection);
+ if (duration != nullptr) {
+ outlier_detection_update.interval = ParseDuration(duration);
+ }
+ duration = envoy_config_cluster_v3_OutlierDetection_base_ejection_time(
+ outlier_detection);
+ if (duration != nullptr) {
+ outlier_detection_update.base_ejection_time = ParseDuration(duration);
+ }
+ duration = envoy_config_cluster_v3_OutlierDetection_max_ejection_time(
+ outlier_detection);
+ if (duration != nullptr) {
+ outlier_detection_update.max_ejection_time = ParseDuration(duration);
+ }
+ const google_protobuf_UInt32Value* max_ejection_percent =
+ envoy_config_cluster_v3_OutlierDetection_max_ejection_percent(
+ outlier_detection);
+ if (max_ejection_percent != nullptr) {
+ outlier_detection_update.max_ejection_percent =
+ google_protobuf_UInt32Value_value(max_ejection_percent);
+ }
+ const google_protobuf_UInt32Value* enforcing_success_rate =
+ envoy_config_cluster_v3_OutlierDetection_enforcing_success_rate(
+ outlier_detection);
+ if (enforcing_success_rate != nullptr) {
+ uint32_t enforcement_percentage =
+ google_protobuf_UInt32Value_value(enforcing_success_rate);
+ if (enforcement_percentage != 0) {
+ OutlierDetectionConfig::SuccessRateEjection success_rate_ejection;
+ success_rate_ejection.enforcement_percentage = enforcement_percentage;
+ const google_protobuf_UInt32Value* minimum_hosts =
+ envoy_config_cluster_v3_OutlierDetection_success_rate_minimum_hosts(
+ outlier_detection);
+ if (minimum_hosts != nullptr) {
+ success_rate_ejection.minimum_hosts =
+ google_protobuf_UInt32Value_value(minimum_hosts);
+ }
+ const google_protobuf_UInt32Value* request_volume =
+ envoy_config_cluster_v3_OutlierDetection_success_rate_request_volume(
+ outlier_detection);
+ if (request_volume != nullptr) {
+ success_rate_ejection.request_volume =
+ google_protobuf_UInt32Value_value(request_volume);
+ }
+ const google_protobuf_UInt32Value* stdev_factor =
+ envoy_config_cluster_v3_OutlierDetection_success_rate_stdev_factor(
+ outlier_detection);
+ if (stdev_factor != nullptr) {
+ success_rate_ejection.stdev_factor =
+ google_protobuf_UInt32Value_value(stdev_factor);
+ }
+ outlier_detection_update.success_rate_ejection = success_rate_ejection;
+ }
+ }
+ const google_protobuf_UInt32Value* enforcing_failure_percentage =
+ envoy_config_cluster_v3_OutlierDetection_enforcing_failure_percentage(
+ outlier_detection);
+ if (enforcing_failure_percentage != nullptr) {
+ uint32_t enforcement_percentage =
+ google_protobuf_UInt32Value_value(enforcing_failure_percentage);
+ if (enforcement_percentage != 0) {
+ OutlierDetectionConfig::FailurePercentageEjection
+ failure_percentage_ejection;
+ failure_percentage_ejection.enforcement_percentage =
+ enforcement_percentage;
+ const google_protobuf_UInt32Value* minimum_hosts =
+ envoy_config_cluster_v3_OutlierDetection_failure_percentage_minimum_hosts(
+ outlier_detection);
+ if (minimum_hosts != nullptr) {
+ failure_percentage_ejection.minimum_hosts =
+ google_protobuf_UInt32Value_value(minimum_hosts);
+ }
+ const google_protobuf_UInt32Value* request_volume =
+ envoy_config_cluster_v3_OutlierDetection_failure_percentage_request_volume(
+ outlier_detection);
+ if (request_volume != nullptr) {
+ failure_percentage_ejection.request_volume =
+ google_protobuf_UInt32Value_value(request_volume);
+ }
+ const google_protobuf_UInt32Value* threshold =
+ envoy_config_cluster_v3_OutlierDetection_failure_percentage_threshold(
+ outlier_detection);
+ if (threshold != nullptr) {
+ failure_percentage_ejection.threshold =
+ google_protobuf_UInt32Value_value(threshold);
+ }
+ outlier_detection_update.failure_percentage_ejection =
+ failure_percentage_ejection;
+ }
+ }
+ cds_update.outlier_detection = outlier_detection_update;
+ }
+ // Return result.
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "errors parsing CDS resource: [", y_absl::StrJoin(errors, "; "), "]"));
+ }
+ return cds_update;
}
-void MaybeLogCluster(const XdsEncodingContext& context,
+void MaybeLogCluster(const XdsResourceType::DecodeContext& context,
const envoy_config_cluster_v3_Cluster* cluster) {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
@@ -415,39 +512,40 @@ void MaybeLogCluster(const XdsEncodingContext& context,
} // namespace
-y_absl::StatusOr<XdsResourceType::DecodeResult> XdsClusterResourceType::Decode(
- const XdsEncodingContext& context, y_absl::string_view serialized_resource,
- bool is_v2) const {
+XdsResourceType::DecodeResult XdsClusterResourceType::Decode(
+ const XdsResourceType::DecodeContext& context,
+ y_absl::string_view serialized_resource, bool is_v2) const {
+ DecodeResult result;
// Parse serialized proto.
auto* resource = envoy_config_cluster_v3_Cluster_parse(
serialized_resource.data(), serialized_resource.size(), context.arena);
if (resource == nullptr) {
- return y_absl::InvalidArgumentError("Can't parse Cluster resource.");
+ result.resource =
+ y_absl::InvalidArgumentError("Can't parse Cluster resource.");
+ return result;
}
MaybeLogCluster(context, resource);
// Validate resource.
- DecodeResult result;
result.name =
UpbStringToStdString(envoy_config_cluster_v3_Cluster_name(resource));
- auto cluster_data = y_absl::make_unique<ResourceDataSubclass>();
- grpc_error_handle error =
- CdsResourceParse(context, resource, is_v2, &cluster_data->resource);
- if (error != GRPC_ERROR_NONE) {
- TString error_str = grpc_error_std_string(error);
- GRPC_ERROR_UNREF(error);
+ auto cds_resource = CdsResourceParse(context, resource, is_v2);
+ if (!cds_resource.ok()) {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
gpr_log(GPR_ERROR, "[xds_client %p] invalid Cluster %s: %s",
- context.client, result.name.c_str(), error_str.c_str());
+ context.client, result.name->c_str(),
+ cds_resource.status().ToString().c_str());
}
- result.resource = y_absl::InvalidArgumentError(error_str);
+ result.resource = cds_resource.status();
} else {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
gpr_log(GPR_INFO, "[xds_client %p] parsed Cluster %s: %s", context.client,
- result.name.c_str(), cluster_data->resource.ToString().c_str());
+ result.name->c_str(), cds_resource->ToString().c_str());
}
- result.resource = std::move(cluster_data);
+ auto resource = y_absl::make_unique<ResourceDataSubclass>();
+ resource->resource = std::move(*cds_resource);
+ result.resource = std::move(resource);
}
- return std::move(result);
+ return result;
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_cluster.h b/contrib/libs/grpc/src/core/ext/xds/xds_cluster.h
index b2c76057e6..b1e95ebc03 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_cluster.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_cluster.h
@@ -19,17 +19,26 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
+#include <algorithm>
+#include <memory>
#include <util/generic/string.h>
#include <util/string/cast.h>
#include <vector>
+#include "y_absl/strings/string_view.h"
#include "y_absl/types/optional.h"
#include "envoy/config/cluster/v3/cluster.upbdefs.h"
#include "envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h"
#include "envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h"
+#include "upb/def.h"
-#include "src/core/ext/xds/xds_client.h"
+#include "src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h"
+#include "src/core/ext/xds/xds_bootstrap.h"
+#include "src/core/ext/xds/xds_bootstrap_grpc.h"
#include "src/core/ext/xds/xds_common_types.h"
+#include "src/core/ext/xds/xds_resource_type.h"
#include "src/core/ext/xds/xds_resource_type_impl.h"
namespace grpc_core {
@@ -53,7 +62,7 @@ struct XdsClusterResource {
// The LRS server to use for load reporting.
// If not set, load reporting will be disabled.
- y_absl::optional<XdsBootstrap::XdsServer> lrs_load_reporting_server;
+ y_absl::optional<GrpcXdsBootstrap::GrpcXdsServer> lrs_load_reporting_server;
// The LB policy to use (e.g., "ROUND_ROBIN" or "RING_HASH").
TString lb_policy;
@@ -64,6 +73,8 @@ struct XdsClusterResource {
// cluster.
uint32_t max_concurrent_requests = 1024;
+ y_absl::optional<OutlierDetectionConfig> outlier_detection;
+
bool operator==(const XdsClusterResource& other) const {
return cluster_type == other.cluster_type &&
eds_service_name == other.eds_service_name &&
@@ -74,7 +85,8 @@ struct XdsClusterResource {
lb_policy == other.lb_policy &&
min_ring_size == other.min_ring_size &&
max_ring_size == other.max_ring_size &&
- max_concurrent_requests == other.max_concurrent_requests;
+ max_concurrent_requests == other.max_concurrent_requests &&
+ outlier_detection == other.outlier_detection;
}
TString ToString() const;
@@ -90,9 +102,9 @@ class XdsClusterResourceType
return "envoy.api.v2.Cluster";
}
- y_absl::StatusOr<DecodeResult> Decode(const XdsEncodingContext& context,
- y_absl::string_view serialized_resource,
- bool is_v2) const override;
+ DecodeResult Decode(const XdsResourceType::DecodeContext& context,
+ y_absl::string_view serialized_resource,
+ bool is_v2) const override;
bool AllResourcesRequiredInSotW() const override { return true; }
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_cluster_specifier_plugin.cc b/contrib/libs/grpc/src/core/ext/xds/xds_cluster_specifier_plugin.cc
new file mode 100644
index 0000000000..5acd12555f
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_cluster_specifier_plugin.cc
@@ -0,0 +1,149 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
+
+#include <stddef.h>
+
+#include <algorithm>
+#include <map>
+#include <utility>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/strings/str_cat.h"
+#include "upb/json_encode.h"
+#include "upb/status.h"
+#include "upb/upb.hpp"
+
+#include <grpc/support/log.h>
+
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+#include "src/proto/grpc/lookup/v1/rls_config.upb.h"
+#include "src/proto/grpc/lookup/v1/rls_config.upbdefs.h"
+
+namespace grpc_core {
+
+const char* kXdsRouteLookupClusterSpecifierPluginConfigName =
+ "grpc.lookup.v1.RouteLookupClusterSpecifier";
+
+void XdsRouteLookupClusterSpecifierPlugin::PopulateSymtab(
+ upb_DefPool* symtab) const {
+ grpc_lookup_v1_RouteLookupConfig_getmsgdef(symtab);
+}
+
+y_absl::StatusOr<TString>
+XdsRouteLookupClusterSpecifierPlugin::GenerateLoadBalancingPolicyConfig(
+ upb_StringView serialized_plugin_config, upb_Arena* arena,
+ upb_DefPool* symtab) const {
+ const auto* specifier = grpc_lookup_v1_RouteLookupClusterSpecifier_parse(
+ serialized_plugin_config.data, serialized_plugin_config.size, arena);
+ if (specifier == nullptr) {
+ return y_absl::InvalidArgumentError("Could not parse plugin config");
+ }
+ const auto* plugin_config =
+ grpc_lookup_v1_RouteLookupClusterSpecifier_route_lookup_config(specifier);
+ if (plugin_config == nullptr) {
+ return y_absl::InvalidArgumentError(
+ "Could not get route lookup config from route lookup cluster "
+ "specifier");
+ }
+ upb::Status status;
+ const upb_MessageDef* msg_type =
+ grpc_lookup_v1_RouteLookupConfig_getmsgdef(symtab);
+ size_t json_size = upb_JsonEncode(plugin_config, msg_type, symtab, 0, nullptr,
+ 0, status.ptr());
+ if (json_size == static_cast<size_t>(-1)) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("failed to dump proto to JSON: ",
+ upb_Status_ErrorMessage(status.ptr())));
+ }
+ void* buf = upb_Arena_Malloc(arena, json_size + 1);
+ upb_JsonEncode(plugin_config, msg_type, symtab, 0,
+ reinterpret_cast<char*>(buf), json_size + 1, status.ptr());
+ Json::Object rls_policy;
+ auto json = Json::Parse(reinterpret_cast<char*>(buf));
+ GPR_ASSERT(json.ok());
+ rls_policy["routeLookupConfig"] = std::move(*json);
+ Json::Object cds_policy;
+ cds_policy["cds_experimental"] = Json::Object();
+ Json::Array child_policy;
+ child_policy.emplace_back(std::move(cds_policy));
+ rls_policy["childPolicy"] = std::move(child_policy);
+ rls_policy["childPolicyConfigTargetFieldName"] = "cluster";
+ Json::Object policy;
+ policy["rls_experimental"] = std::move(rls_policy);
+ Json::Array policies;
+ policies.emplace_back(std::move(policy));
+ Json lb_policy_config(std::move(policies));
+ // TODO(roth): If/when we ever add a second plugin, refactor this code
+ // somehow such that we automatically validate the resulting config against
+ // the gRPC LB policy registry instead of requiring each plugin to do that
+ // itself.
+ auto config =
+ CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
+ lb_policy_config);
+ if (!config.ok()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ kXdsRouteLookupClusterSpecifierPluginConfigName,
+ " ClusterSpecifierPlugin returned invalid LB policy config: ",
+ config.status().message()));
+ }
+ return lb_policy_config.Dump();
+}
+
+namespace {
+
+using PluginRegistryMap =
+ std::map<y_absl::string_view, std::unique_ptr<XdsClusterSpecifierPluginImpl>>;
+
+PluginRegistryMap* g_plugin_registry = nullptr;
+
+} // namespace
+
+const XdsClusterSpecifierPluginImpl*
+XdsClusterSpecifierPluginRegistry::GetPluginForType(
+ y_absl::string_view config_proto_type_name) {
+ auto it = g_plugin_registry->find(config_proto_type_name);
+ if (it == g_plugin_registry->end()) return nullptr;
+ return it->second.get();
+}
+
+void XdsClusterSpecifierPluginRegistry::PopulateSymtab(upb_DefPool* symtab) {
+ for (const auto& p : *g_plugin_registry) {
+ p.second->PopulateSymtab(symtab);
+ }
+}
+
+void XdsClusterSpecifierPluginRegistry::RegisterPlugin(
+ std::unique_ptr<XdsClusterSpecifierPluginImpl> plugin,
+ y_absl::string_view config_proto_type_name) {
+ (*g_plugin_registry)[config_proto_type_name] = std::move(plugin);
+}
+
+void XdsClusterSpecifierPluginRegistry::Init() {
+ g_plugin_registry = new PluginRegistryMap;
+ RegisterPlugin(y_absl::make_unique<XdsRouteLookupClusterSpecifierPlugin>(),
+ kXdsRouteLookupClusterSpecifierPluginConfigName);
+}
+
+void XdsClusterSpecifierPluginRegistry::Shutdown() { delete g_plugin_registry; }
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_cluster_specifier_plugin.h b/contrib/libs/grpc/src/core/ext/xds/xds_cluster_specifier_plugin.h
new file mode 100644
index 0000000000..0a42581b39
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_cluster_specifier_plugin.h
@@ -0,0 +1,74 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_EXT_XDS_XDS_CLUSTER_SPECIFIER_PLUGIN_H
+#define GRPC_CORE_EXT_XDS_XDS_CLUSTER_SPECIFIER_PLUGIN_H
+
+#include <grpc/support/port_platform.h>
+
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+#include "upb/arena.h"
+#include "upb/def.h"
+#include "upb/upb.h"
+
+namespace grpc_core {
+
+class XdsClusterSpecifierPluginImpl {
+ public:
+ virtual ~XdsClusterSpecifierPluginImpl() = default;
+
+ // Loads the proto message into the upb symtab.
+ virtual void PopulateSymtab(upb_DefPool* symtab) const = 0;
+
+ // Returns the LB policy config in JSON form.
+ virtual y_absl::StatusOr<TString> GenerateLoadBalancingPolicyConfig(
+ upb_StringView serialized_plugin_config, upb_Arena* arena,
+ upb_DefPool* symtab) const = 0;
+};
+
+class XdsRouteLookupClusterSpecifierPlugin
+ : public XdsClusterSpecifierPluginImpl {
+ void PopulateSymtab(upb_DefPool* symtab) const override;
+
+ y_absl::StatusOr<TString> GenerateLoadBalancingPolicyConfig(
+ upb_StringView serialized_plugin_config, upb_Arena* arena,
+ upb_DefPool* symtab) const override;
+};
+
+class XdsClusterSpecifierPluginRegistry {
+ public:
+ static void RegisterPlugin(
+ std::unique_ptr<XdsClusterSpecifierPluginImpl> plugin,
+ y_absl::string_view config_proto_type_name);
+
+ static void PopulateSymtab(upb_DefPool* symtab);
+
+ static const XdsClusterSpecifierPluginImpl* GetPluginForType(
+ y_absl::string_view config_proto_type_name);
+
+ // Global init and shutdown.
+ static void Init();
+ static void Shutdown();
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_XDS_XDS_CLUSTER_SPECIFIER_PLUGIN_H
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_common_types.cc b/contrib/libs/grpc/src/core/ext/xds/xds_common_types.cc
index 6fb693d10f..f57eccceff 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_common_types.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_common_types.cc
@@ -18,7 +18,13 @@
#include "src/core/ext/xds/xds_common_types.h"
-#include "y_absl/container/inlined_vector.h"
+#include <stddef.h>
+
+#include <algorithm>
+#include <map>
+#include <utility>
+
+#include "y_absl/status/status.h"
#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
@@ -29,8 +35,14 @@
#include "envoy/type/matcher/v3/string.upb.h"
#include "google/protobuf/any.upb.h"
#include "google/protobuf/wrappers.upb.h"
+#include "upb/upb.h"
#include "xds/type/v3/typed_struct.upb.h"
+#include "src/core/ext/xds/certificate_provider_store.h"
+#include "src/core/ext/xds/upb_utils.h"
+#include "src/core/ext/xds/xds_bootstrap_grpc.h"
+#include "src/core/ext/xds/xds_client.h"
+
namespace grpc_core {
//
@@ -56,7 +68,7 @@ bool CommonTlsContext::CertificateValidationContext::Empty() const {
TString CommonTlsContext::CertificateProviderPluginInstance::ToString()
const {
- y_absl::InlinedVector<TString, 2> contents;
+ std::vector<TString> contents;
if (!instance_name.empty()) {
contents.push_back(y_absl::StrFormat("instance_name=%s", instance_name));
}
@@ -76,7 +88,7 @@ bool CommonTlsContext::CertificateProviderPluginInstance::Empty() const {
//
TString CommonTlsContext::ToString() const {
- y_absl::InlinedVector<TString, 2> contents;
+ std::vector<TString> contents;
if (!tls_certificate_provider_instance.Empty()) {
contents.push_back(
y_absl::StrFormat("tls_certificate_provider_instance=%s",
@@ -102,59 +114,63 @@ namespace {
// same CertificateProviderPluginInstance struct since the fields are the same.
// TODO(yashykt): Remove this once we stop supporting the old way of fetching
// certificate provider instances.
-grpc_error_handle CertificateProviderInstanceParse(
- const XdsEncodingContext& context,
+y_absl::StatusOr<CommonTlsContext::CertificateProviderPluginInstance>
+CertificateProviderInstanceParse(
+ const XdsResourceType::DecodeContext& context,
const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*
- certificate_provider_instance_proto,
- CommonTlsContext::CertificateProviderPluginInstance*
- certificate_provider_plugin_instance) {
- *certificate_provider_plugin_instance = {
- UpbStringToStdString(
- envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_instance_name(
- certificate_provider_instance_proto)),
- UpbStringToStdString(
- envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_certificate_name(
- certificate_provider_instance_proto))};
- if (context.certificate_provider_definition_map->find(
- certificate_provider_plugin_instance->instance_name) ==
- context.certificate_provider_definition_map->end()) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ certificate_provider_instance_proto) {
+ CommonTlsContext::CertificateProviderPluginInstance
+ certificate_provider_plugin_instance = {
+ UpbStringToStdString(
+ envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_instance_name(
+ certificate_provider_instance_proto)),
+ UpbStringToStdString(
+ envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_certificate_name(
+ certificate_provider_instance_proto))};
+ const auto& bootstrap =
+ static_cast<const GrpcXdsBootstrap&>(context.client->bootstrap());
+ if (bootstrap.certificate_providers().find(
+ certificate_provider_plugin_instance.instance_name) ==
+ bootstrap.certificate_providers().end()) {
+ return y_absl::InvalidArgumentError(
y_absl::StrCat("Unrecognized certificate provider instance name: ",
- certificate_provider_plugin_instance->instance_name));
+ certificate_provider_plugin_instance.instance_name));
}
- return GRPC_ERROR_NONE;
+ return certificate_provider_plugin_instance;
}
-grpc_error_handle CertificateProviderPluginInstanceParse(
- const XdsEncodingContext& context,
+y_absl::StatusOr<CommonTlsContext::CertificateProviderPluginInstance>
+CertificateProviderPluginInstanceParse(
+ const XdsResourceType::DecodeContext& context,
const envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance*
- certificate_provider_plugin_instance_proto,
- CommonTlsContext::CertificateProviderPluginInstance*
- certificate_provider_plugin_instance) {
- *certificate_provider_plugin_instance = {
- UpbStringToStdString(
- envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_instance_name(
- certificate_provider_plugin_instance_proto)),
- UpbStringToStdString(
- envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_certificate_name(
- certificate_provider_plugin_instance_proto))};
- if (context.certificate_provider_definition_map->find(
- certificate_provider_plugin_instance->instance_name) ==
- context.certificate_provider_definition_map->end()) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ certificate_provider_plugin_instance_proto) {
+ CommonTlsContext::CertificateProviderPluginInstance
+ certificate_provider_plugin_instance = {
+ UpbStringToStdString(
+ envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_instance_name(
+ certificate_provider_plugin_instance_proto)),
+ UpbStringToStdString(
+ envoy_extensions_transport_sockets_tls_v3_CertificateProviderPluginInstance_certificate_name(
+ certificate_provider_plugin_instance_proto))};
+ const auto& bootstrap =
+ static_cast<const GrpcXdsBootstrap&>(context.client->bootstrap());
+ if (bootstrap.certificate_providers().find(
+ certificate_provider_plugin_instance.instance_name) ==
+ bootstrap.certificate_providers().end()) {
+ return y_absl::InvalidArgumentError(
y_absl::StrCat("Unrecognized certificate provider instance name: ",
- certificate_provider_plugin_instance->instance_name));
+ certificate_provider_plugin_instance.instance_name));
}
- return GRPC_ERROR_NONE;
+ return certificate_provider_plugin_instance;
}
-grpc_error_handle CertificateValidationContextParse(
- const XdsEncodingContext& context,
+y_absl::StatusOr<CommonTlsContext::CertificateValidationContext>
+CertificateValidationContextParse(
+ const XdsResourceType::DecodeContext& context,
const envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext*
- certificate_validation_context_proto,
- CommonTlsContext::CertificateValidationContext*
- certificate_validation_context) {
- std::vector<grpc_error_handle> errors;
+ certificate_validation_context_proto) {
+ std::vector<TString> errors;
+ CommonTlsContext::CertificateValidationContext certificate_validation_context;
size_t len = 0;
auto* subject_alt_names_matchers =
envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_match_subject_alt_names(
@@ -191,8 +207,7 @@ grpc_error_handle CertificateValidationContextParse(
matcher = UpbStringToStdString(
envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher));
} else {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Invalid StringMatcher specified"));
+ errors.push_back("Invalid StringMatcher specified");
continue;
}
bool ignore_case = envoy_type_matcher_v3_StringMatcher_ignore_case(
@@ -201,71 +216,75 @@ grpc_error_handle CertificateValidationContextParse(
StringMatcher::Create(type, matcher,
/*case_sensitive=*/!ignore_case);
if (!string_matcher.ok()) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("string matcher: ", string_matcher.status().message())));
+ errors.push_back(
+ y_absl::StrCat("string matcher: ", string_matcher.status().message()));
continue;
}
if (type == StringMatcher::Type::kSafeRegex && ignore_case) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "StringMatcher: ignore_case has no effect for SAFE_REGEX."));
+ errors.push_back(
+ "StringMatcher: ignore_case has no effect for SAFE_REGEX.");
continue;
}
- certificate_validation_context->match_subject_alt_names.push_back(
+ certificate_validation_context.match_subject_alt_names.push_back(
std::move(string_matcher.value()));
}
auto* ca_certificate_provider_instance =
envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_ca_certificate_provider_instance(
certificate_validation_context_proto);
if (ca_certificate_provider_instance != nullptr) {
- grpc_error_handle error = CertificateProviderPluginInstanceParse(
- context, ca_certificate_provider_instance,
- &certificate_validation_context->ca_certificate_provider_instance);
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
+ auto certificate_provider_instance = CertificateProviderPluginInstanceParse(
+ context, ca_certificate_provider_instance);
+ if (!certificate_provider_instance.ok()) {
+ errors.emplace_back(certificate_provider_instance.status().message());
+ } else {
+ certificate_validation_context.ca_certificate_provider_instance =
+ std::move(*certificate_provider_instance);
+ }
}
if (envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_verify_certificate_spki(
certificate_validation_context_proto, nullptr) != nullptr) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "CertificateValidationContext: verify_certificate_spki "
- "unsupported"));
+ errors.push_back(
+ "CertificateValidationContext: verify_certificate_spki unsupported");
}
if (envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_verify_certificate_hash(
certificate_validation_context_proto, nullptr) != nullptr) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "CertificateValidationContext: verify_certificate_hash "
- "unsupported"));
+ errors.push_back(
+ "CertificateValidationContext: verify_certificate_hash unsupported");
}
auto* require_signed_certificate_timestamp =
envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_require_signed_certificate_timestamp(
certificate_validation_context_proto);
if (require_signed_certificate_timestamp != nullptr &&
google_protobuf_BoolValue_value(require_signed_certificate_timestamp)) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ errors.push_back(
"CertificateValidationContext: "
- "require_signed_certificate_timestamp unsupported"));
+ "require_signed_certificate_timestamp unsupported");
}
if (envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_crl(
certificate_validation_context_proto)) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "CertificateValidationContext: crl unsupported"));
+ errors.push_back("CertificateValidationContext: crl unsupported");
}
if (envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_has_custom_validator_config(
certificate_validation_context_proto)) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "CertificateValidationContext: custom_validator_config "
- "unsupported"));
+ errors.push_back(
+ "CertificateValidationContext: custom_validator_config unsupported");
}
- return GRPC_ERROR_CREATE_FROM_VECTOR(
- "Error parsing CertificateValidationContext", &errors);
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("Errors parsing CertificateValidationContext: ",
+ y_absl::StrJoin(errors, "; ")));
+ }
+ return certificate_validation_context;
}
} // namespace
-grpc_error_handle CommonTlsContext::Parse(
- const XdsEncodingContext& context,
+y_absl::StatusOr<CommonTlsContext> CommonTlsContext::Parse(
+ const XdsResourceType::DecodeContext& context,
const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*
- common_tls_context_proto,
- CommonTlsContext* common_tls_context) {
- std::vector<grpc_error_handle> errors;
+ common_tls_context_proto) {
+ std::vector<TString> errors;
+ CommonTlsContext common_tls_context;
// The validation context is derived from the oneof in
// 'validation_context_type'. 'validation_context_sds_secret_config' is not
// supported.
@@ -277,10 +296,14 @@ grpc_error_handle CommonTlsContext::Parse(
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_default_validation_context(
combined_validation_context);
if (default_validation_context != nullptr) {
- grpc_error_handle error = CertificateValidationContextParse(
- context, default_validation_context,
- &common_tls_context->certificate_validation_context);
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
+ auto certificate_validation_context = CertificateValidationContextParse(
+ context, default_validation_context);
+ if (!certificate_validation_context.ok()) {
+ errors.emplace_back(certificate_validation_context.status().message());
+ } else {
+ common_tls_context.certificate_validation_context =
+ std::move(*certificate_validation_context);
+ }
}
// If after parsing default_validation_context,
// common_tls_context->certificate_validation_context.ca_certificate_provider_instance
@@ -292,39 +315,52 @@ grpc_error_handle CommonTlsContext::Parse(
auto* validation_context_certificate_provider_instance =
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_validation_context_certificate_provider_instance(
combined_validation_context);
- if (common_tls_context->certificate_validation_context
+ if (common_tls_context.certificate_validation_context
.ca_certificate_provider_instance.Empty() &&
validation_context_certificate_provider_instance != nullptr) {
- grpc_error_handle error = CertificateProviderInstanceParse(
- context, validation_context_certificate_provider_instance,
- &common_tls_context->certificate_validation_context
- .ca_certificate_provider_instance);
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
+ auto certificate_provider_instance = CertificateProviderInstanceParse(
+ context, validation_context_certificate_provider_instance);
+ if (!certificate_provider_instance.ok()) {
+ errors.emplace_back(certificate_provider_instance.status().message());
+ } else {
+ common_tls_context.certificate_validation_context
+ .ca_certificate_provider_instance =
+ std::move(*certificate_provider_instance);
+ }
}
} else {
auto* validation_context =
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_validation_context(
common_tls_context_proto);
if (validation_context != nullptr) {
- grpc_error_handle error = CertificateValidationContextParse(
- context, validation_context,
- &common_tls_context->certificate_validation_context);
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
+ auto certificate_validation_context =
+ CertificateValidationContextParse(context, validation_context);
+ if (!certificate_validation_context.ok()) {
+ errors.emplace_back(certificate_validation_context.status().message());
+ } else {
+ common_tls_context.certificate_validation_context =
+ std::move(*certificate_validation_context);
+ }
} else if (
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_validation_context_sds_secret_config(
common_tls_context_proto)) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "validation_context_sds_secret_config unsupported"));
+ errors.push_back("validation_context_sds_secret_config unsupported");
}
}
auto* tls_certificate_provider_instance =
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificate_provider_instance(
common_tls_context_proto);
if (tls_certificate_provider_instance != nullptr) {
- grpc_error_handle error = CertificateProviderPluginInstanceParse(
- context, tls_certificate_provider_instance,
- &common_tls_context->tls_certificate_provider_instance);
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
+ auto certificate_provider_plugin_instance =
+ CertificateProviderPluginInstanceParse(
+ context, tls_certificate_provider_instance);
+ if (!certificate_provider_plugin_instance.ok()) {
+ errors.emplace_back(
+ certificate_provider_plugin_instance.status().message());
+ } else {
+ common_tls_context.tls_certificate_provider_instance =
+ std::move(*certificate_provider_plugin_instance);
+ }
} else {
// Fall back onto 'tls_certificate_certificate_provider_instance'. Note that
// this way of fetching identity certificates is deprecated and will be
@@ -334,55 +370,65 @@ grpc_error_handle CommonTlsContext::Parse(
envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificate_certificate_provider_instance(
common_tls_context_proto);
if (tls_certificate_certificate_provider_instance != nullptr) {
- grpc_error_handle error = CertificateProviderInstanceParse(
- context, tls_certificate_certificate_provider_instance,
- &common_tls_context->tls_certificate_provider_instance);
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
+ auto certificate_provider_instance = CertificateProviderInstanceParse(
+ context, tls_certificate_certificate_provider_instance);
+ if (!certificate_provider_instance.ok()) {
+ errors.emplace_back(certificate_provider_instance.status().message());
+ } else {
+ common_tls_context.tls_certificate_provider_instance =
+ std::move(*certificate_provider_instance);
+ }
} else {
if (envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_certificates(
common_tls_context_proto)) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "tls_certificates unsupported"));
+ errors.push_back("tls_certificates unsupported");
}
if (envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_certificate_sds_secret_configs(
common_tls_context_proto)) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "tls_certificate_sds_secret_configs unsupported"));
+ errors.push_back("tls_certificate_sds_secret_configs unsupported");
}
}
}
if (envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_tls_params(
common_tls_context_proto)) {
- errors.push_back(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("tls_params unsupported"));
+ errors.push_back("tls_params unsupported");
}
if (envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_has_custom_handshaker(
common_tls_context_proto)) {
- errors.push_back(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("custom_handshaker unsupported"));
+ errors.push_back("custom_handshaker unsupported");
}
- return GRPC_ERROR_CREATE_FROM_VECTOR("Error parsing CommonTlsContext",
- &errors);
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("Errors parsing CommonTlsContext: [",
+ y_absl::StrJoin(errors, "; "), "]"));
+ }
+ return common_tls_context;
}
-grpc_error_handle ExtractHttpFilterTypeName(const XdsEncodingContext& context,
- const google_protobuf_Any* any,
- y_absl::string_view* filter_type) {
- *filter_type = UpbStringToAbsl(google_protobuf_Any_type_url(any));
- if (*filter_type == "type.googleapis.com/xds.type.v3.TypedStruct" ||
- *filter_type == "type.googleapis.com/udpa.type.v1.TypedStruct") {
+y_absl::StatusOr<ExtractExtensionTypeNameResult> ExtractExtensionTypeName(
+ const XdsResourceType::DecodeContext& context,
+ const google_protobuf_Any* any) {
+ ExtractExtensionTypeNameResult result;
+ result.type = UpbStringToAbsl(google_protobuf_Any_type_url(any));
+ if (result.type == "type.googleapis.com/xds.type.v3.TypedStruct" ||
+ result.type == "type.googleapis.com/udpa.type.v1.TypedStruct") {
upb_StringView any_value = google_protobuf_Any_value(any);
- const auto* typed_struct = xds_type_v3_TypedStruct_parse(
+ result.typed_struct = xds_type_v3_TypedStruct_parse(
any_value.data, any_value.size, context.arena);
- if (typed_struct == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "could not parse TypedStruct from filter config");
+ if (result.typed_struct == nullptr) {
+ return y_absl::InvalidArgumentError(
+ "could not parse TypedStruct from extension");
}
- *filter_type =
- UpbStringToAbsl(xds_type_v3_TypedStruct_type_url(typed_struct));
+ result.type =
+ UpbStringToAbsl(xds_type_v3_TypedStruct_type_url(result.typed_struct));
+ }
+ size_t pos = result.type.rfind('/');
+ if (pos == y_absl::string_view::npos || pos == result.type.size() - 1) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("Invalid type_url ", result.type));
}
- *filter_type = y_absl::StripPrefix(*filter_type, "type.googleapis.com/");
- return GRPC_ERROR_NONE;
+ result.type = result.type.substr(pos + 1);
+ return result;
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_common_types.h b/contrib/libs/grpc/src/core/ext/xds/xds_common_types.h
index c91e48c0bc..885cbb1fcb 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_common_types.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_common_types.h
@@ -23,12 +23,15 @@
#include <util/string/cast.h>
#include <vector>
-#include "y_absl/strings/str_format.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
#include "envoy/extensions/transport_sockets/tls/v3/tls.upb.h"
#include "google/protobuf/any.upb.h"
#include "google/protobuf/duration.upb.h"
+#include "xds/type/v3/typed_struct.upb.h"
-#include "src/core/ext/xds/upb_utils.h"
+#include "src/core/ext/xds/xds_resource_type.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/matchers/matchers.h"
namespace grpc_core {
@@ -80,16 +83,20 @@ struct CommonTlsContext {
TString ToString() const;
bool Empty() const;
- static grpc_error_handle Parse(
- const XdsEncodingContext& context,
+ static y_absl::StatusOr<CommonTlsContext> Parse(
+ const XdsResourceType::DecodeContext& context,
const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*
- common_tls_context_proto,
- CommonTlsContext* common_tls_context);
+ common_tls_context_proto);
};
-grpc_error_handle ExtractHttpFilterTypeName(const XdsEncodingContext& context,
- const google_protobuf_Any* any,
- y_absl::string_view* filter_type);
+struct ExtractExtensionTypeNameResult {
+ y_absl::string_view type;
+ xds_type_v3_TypedStruct* typed_struct = nullptr;
+};
+
+y_absl::StatusOr<ExtractExtensionTypeNameResult> ExtractExtensionTypeName(
+ const XdsResourceType::DecodeContext& context,
+ const google_protobuf_Any* any);
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_endpoint.cc b/contrib/libs/grpc/src/core/ext/xds/xds_endpoint.cc
index 62dfc4c116..5f81657e54 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_endpoint.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_endpoint.cc
@@ -18,9 +18,17 @@
#include "src/core/ext/xds/xds_endpoint.h"
+#include <stdlib.h>
+
+#include <algorithm>
+#include <vector>
+
#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_join.h"
+#include "y_absl/types/optional.h"
#include "envoy/config/core/v3/address.upb.h"
#include "envoy/config/core/v3/base.upb.h"
#include "envoy/config/core/v3/health_check.upb.h"
@@ -30,12 +38,14 @@
#include "envoy/type/v3/percent.upb.h"
#include "google/protobuf/wrappers.upb.h"
#include "upb/text_encode.h"
-#include "upb/upb.h"
-#include "upb/upb.hpp"
+
+#include <grpc/support/log.h>
#include "src/core/ext/xds/upb_utils.h"
+#include "src/core/ext/xds/xds_resource_type.h"
#include "src/core/lib/address_utils/parse_address.h"
-#include "src/core/lib/address_utils/sockaddr_utils.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/debug/trace.h"
namespace grpc_core {
@@ -116,7 +126,7 @@ TString XdsEndpointResource::ToString() const {
namespace {
void MaybeLogClusterLoadAssignment(
- const XdsEncodingContext& context,
+ const XdsResourceType::DecodeContext& context,
const envoy_config_endpoint_v3_ClusterLoadAssignment* cla) {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
@@ -130,15 +140,14 @@ void MaybeLogClusterLoadAssignment(
}
}
-grpc_error_handle ServerAddressParseAndAppend(
- const envoy_config_endpoint_v3_LbEndpoint* lb_endpoint,
- ServerAddressList* list) {
+y_absl::StatusOr<y_absl::optional<ServerAddress>> ServerAddressParse(
+ const envoy_config_endpoint_v3_LbEndpoint* lb_endpoint) {
// If health_status is not HEALTHY or UNKNOWN, skip this endpoint.
const int32_t health_status =
envoy_config_endpoint_v3_LbEndpoint_health_status(lb_endpoint);
if (health_status != envoy_config_core_v3_UNKNOWN &&
health_status != envoy_config_core_v3_HEALTHY) {
- return GRPC_ERROR_NONE;
+ return y_absl::nullopt;
}
// Find the ip:port.
const envoy_config_endpoint_v3_Endpoint* endpoint =
@@ -151,61 +160,59 @@ grpc_error_handle ServerAddressParseAndAppend(
envoy_config_core_v3_SocketAddress_address(socket_address));
uint32_t port = envoy_config_core_v3_SocketAddress_port_value(socket_address);
if (GPR_UNLIKELY(port >> 16) != 0) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Invalid port.");
+ return y_absl::InvalidArgumentError("Invalid port.");
}
// Find load_balancing_weight for the endpoint.
+ uint32_t weight = 1;
const google_protobuf_UInt32Value* load_balancing_weight =
envoy_config_endpoint_v3_LbEndpoint_load_balancing_weight(lb_endpoint);
- const int32_t weight =
- load_balancing_weight != nullptr
- ? google_protobuf_UInt32Value_value(load_balancing_weight)
- : 500;
- if (weight == 0) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Invalid endpoint weight of 0.");
+ if (load_balancing_weight != nullptr) {
+ weight = google_protobuf_UInt32Value_value(load_balancing_weight);
+ if (weight == 0) {
+ return y_absl::InvalidArgumentError("Invalid endpoint weight of 0.");
+ }
}
// Populate grpc_resolved_address.
- grpc_resolved_address addr;
- grpc_error_handle error =
- grpc_string_to_sockaddr(&addr, address_str.c_str(), port);
- if (error != GRPC_ERROR_NONE) return error;
+ auto addr = StringToSockaddr(address_str, port);
+ if (!addr.ok()) return addr.status();
// Append the address to the list.
std::map<const char*, std::unique_ptr<ServerAddress::AttributeInterface>>
attributes;
attributes[ServerAddressWeightAttribute::kServerAddressWeightAttributeKey] =
y_absl::make_unique<ServerAddressWeightAttribute>(weight);
- list->emplace_back(addr, nullptr, std::move(attributes));
- return GRPC_ERROR_NONE;
+ return ServerAddress(*addr, ChannelArgs(), std::move(attributes));
}
-grpc_error_handle LocalityParse(
- const envoy_config_endpoint_v3_LocalityLbEndpoints* locality_lb_endpoints,
- XdsEndpointResource::Priority::Locality* output_locality,
- size_t* priority) {
+struct ParsedLocality {
+ size_t priority;
+ XdsEndpointResource::Priority::Locality locality;
+};
+
+y_absl::StatusOr<ParsedLocality> LocalityParse(
+ const envoy_config_endpoint_v3_LocalityLbEndpoints* locality_lb_endpoints) {
+ ParsedLocality parsed_locality;
// Parse LB weight.
const google_protobuf_UInt32Value* lb_weight =
envoy_config_endpoint_v3_LocalityLbEndpoints_load_balancing_weight(
locality_lb_endpoints);
// If LB weight is not specified, it means this locality is assigned no load.
- // TODO(juanlishen): When we support CDS to configure the inter-locality
- // policy, we should change the LB weight handling.
- output_locality->lb_weight =
+ parsed_locality.locality.lb_weight =
lb_weight != nullptr ? google_protobuf_UInt32Value_value(lb_weight) : 0;
- if (output_locality->lb_weight == 0) return GRPC_ERROR_NONE;
+ if (parsed_locality.locality.lb_weight == 0) return parsed_locality;
// Parse locality name.
const envoy_config_core_v3_Locality* locality =
envoy_config_endpoint_v3_LocalityLbEndpoints_locality(
locality_lb_endpoints);
if (locality == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty locality.");
+ return y_absl::InvalidArgumentError("Empty locality.");
}
TString region =
UpbStringToStdString(envoy_config_core_v3_Locality_region(locality));
TString zone =
- UpbStringToStdString(envoy_config_core_v3_Locality_region(locality));
+ UpbStringToStdString(envoy_config_core_v3_Locality_zone(locality));
TString sub_zone =
UpbStringToStdString(envoy_config_core_v3_Locality_sub_zone(locality));
- output_locality->name = MakeRefCounted<XdsLocalityName>(
+ parsed_locality.locality.name = MakeRefCounted<XdsLocalityName>(
std::move(region), std::move(zone), std::move(sub_zone));
// Parse the addresses.
size_t size;
@@ -213,17 +220,20 @@ grpc_error_handle LocalityParse(
envoy_config_endpoint_v3_LocalityLbEndpoints_lb_endpoints(
locality_lb_endpoints, &size);
for (size_t i = 0; i < size; ++i) {
- grpc_error_handle error = ServerAddressParseAndAppend(
- lb_endpoints[i], &output_locality->endpoints);
- if (error != GRPC_ERROR_NONE) return error;
+ auto address = ServerAddressParse(lb_endpoints[i]);
+ if (!address.ok()) return address.status();
+ if (address->has_value()) {
+ parsed_locality.locality.endpoints.push_back(std::move(**address));
+ }
}
// Parse the priority.
- *priority = envoy_config_endpoint_v3_LocalityLbEndpoints_priority(
- locality_lb_endpoints);
- return GRPC_ERROR_NONE;
+ parsed_locality.priority =
+ envoy_config_endpoint_v3_LocalityLbEndpoints_priority(
+ locality_lb_endpoints);
+ return parsed_locality;
}
-grpc_error_handle DropParseAndAppend(
+y_absl::Status DropParseAndAppend(
const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload*
drop_overload,
XdsEndpointResource::DropConfig* drop_config) {
@@ -232,7 +242,7 @@ grpc_error_handle DropParseAndAppend(
envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_category(
drop_overload));
if (category.empty()) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty drop category name");
+ return y_absl::InvalidArgumentError("Empty drop category name");
}
// Get the drop rate (per million).
const envoy_type_v3_FractionalPercent* drop_percentage =
@@ -254,51 +264,60 @@ grpc_error_handle DropParseAndAppend(
case envoy_type_v3_FractionalPercent_MILLION:
break;
default:
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unknown denominator type");
+ return y_absl::InvalidArgumentError(
+ "drop config: unknown denominator type");
}
// Cap numerator to 1000000.
numerator = std::min(numerator, 1000000u);
drop_config->AddCategory(std::move(category), numerator);
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
-grpc_error_handle EdsResourceParse(
- const XdsEncodingContext& /*context*/,
+y_absl::StatusOr<XdsEndpointResource> EdsResourceParse(
+ const XdsResourceType::DecodeContext& /*context*/,
const envoy_config_endpoint_v3_ClusterLoadAssignment*
cluster_load_assignment,
- bool /*is_v2*/, XdsEndpointResource* eds_update) {
- std::vector<grpc_error_handle> errors;
+ bool /*is_v2*/) {
+ XdsEndpointResource eds_resource;
+ std::vector<TString> errors;
// Get the endpoints.
size_t locality_size;
const envoy_config_endpoint_v3_LocalityLbEndpoints* const* endpoints =
envoy_config_endpoint_v3_ClusterLoadAssignment_endpoints(
cluster_load_assignment, &locality_size);
for (size_t j = 0; j < locality_size; ++j) {
- size_t priority;
- XdsEndpointResource::Priority::Locality locality;
- grpc_error_handle error = LocalityParse(endpoints[j], &locality, &priority);
- if (error != GRPC_ERROR_NONE) {
- errors.push_back(error);
+ auto parsed_locality = LocalityParse(endpoints[j]);
+ if (!parsed_locality.ok()) {
+ errors.emplace_back(parsed_locality.status().message());
continue;
}
// Filter out locality with weight 0.
- if (locality.lb_weight == 0) continue;
+ if (parsed_locality->locality.lb_weight == 0) continue;
// Make sure prorities is big enough. Note that they might not
// arrive in priority order.
- while (eds_update->priorities.size() < priority + 1) {
- eds_update->priorities.emplace_back();
+ if (eds_resource.priorities.size() < parsed_locality->priority + 1) {
+ eds_resource.priorities.resize(parsed_locality->priority + 1);
+ }
+ auto& locality_map =
+ eds_resource.priorities[parsed_locality->priority].localities;
+ auto it = locality_map.find(parsed_locality->locality.name.get());
+ if (it != locality_map.end()) {
+ errors.emplace_back(
+ y_absl::StrCat("duplicate locality ",
+ parsed_locality->locality.name->AsHumanReadableString(),
+ " found in priority ", parsed_locality->priority));
+ } else {
+ locality_map.emplace(parsed_locality->locality.name.get(),
+ std::move(parsed_locality->locality));
}
- eds_update->priorities[priority].localities.emplace(locality.name.get(),
- std::move(locality));
}
- for (const auto& priority : eds_update->priorities) {
+ for (const auto& priority : eds_resource.priorities) {
if (priority.localities.empty()) {
- errors.push_back(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("sparse priority list"));
+ errors.emplace_back("sparse priority list");
}
}
// Get the drop config.
- eds_update->drop_config = MakeRefCounted<XdsEndpointResource::DropConfig>();
+ eds_resource.drop_config = MakeRefCounted<XdsEndpointResource::DropConfig>();
const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* policy =
envoy_config_endpoint_v3_ClusterLoadAssignment_policy(
cluster_load_assignment);
@@ -309,56 +328,56 @@ grpc_error_handle EdsResourceParse(
envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_drop_overloads(
policy, &drop_size);
for (size_t j = 0; j < drop_size; ++j) {
- grpc_error_handle error =
- DropParseAndAppend(drop_overload[j], eds_update->drop_config.get());
- if (error != GRPC_ERROR_NONE) {
- errors.push_back(
- grpc_error_add_child(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "drop config validation error"),
- error));
- }
+ y_absl::Status status =
+ DropParseAndAppend(drop_overload[j], eds_resource.drop_config.get());
+ if (!status.ok()) errors.emplace_back(status.message());
}
}
- return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing EDS resource", &errors);
+ // Return result.
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "errors parsing EDS resource: [", y_absl::StrJoin(errors, "; "), "]"));
+ }
+ return eds_resource;
}
} // namespace
-y_absl::StatusOr<XdsResourceType::DecodeResult> XdsEndpointResourceType::Decode(
- const XdsEncodingContext& context, y_absl::string_view serialized_resource,
- bool is_v2) const {
+XdsResourceType::DecodeResult XdsEndpointResourceType::Decode(
+ const XdsResourceType::DecodeContext& context,
+ y_absl::string_view serialized_resource, bool is_v2) const {
+ DecodeResult result;
// Parse serialized proto.
auto* resource = envoy_config_endpoint_v3_ClusterLoadAssignment_parse(
serialized_resource.data(), serialized_resource.size(), context.arena);
if (resource == nullptr) {
- return y_absl::InvalidArgumentError(
+ result.resource = y_absl::InvalidArgumentError(
"Can't parse ClusterLoadAssignment resource.");
+ return result;
}
MaybeLogClusterLoadAssignment(context, resource);
// Validate resource.
- DecodeResult result;
result.name = UpbStringToStdString(
envoy_config_endpoint_v3_ClusterLoadAssignment_cluster_name(resource));
- auto endpoint_data = y_absl::make_unique<ResourceDataSubclass>();
- grpc_error_handle error =
- EdsResourceParse(context, resource, is_v2, &endpoint_data->resource);
- if (error != GRPC_ERROR_NONE) {
- TString error_str = grpc_error_std_string(error);
- GRPC_ERROR_UNREF(error);
+ auto eds_resource = EdsResourceParse(context, resource, is_v2);
+ if (!eds_resource.ok()) {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
gpr_log(GPR_ERROR, "[xds_client %p] invalid ClusterLoadAssignment %s: %s",
- context.client, result.name.c_str(), error_str.c_str());
+ context.client, result.name->c_str(),
+ eds_resource.status().ToString().c_str());
}
- result.resource = y_absl::InvalidArgumentError(error_str);
+ result.resource = eds_resource.status();
} else {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
gpr_log(GPR_INFO, "[xds_client %p] parsed ClusterLoadAssignment %s: %s",
- context.client, result.name.c_str(),
- endpoint_data->resource.ToString().c_str());
+ context.client, result.name->c_str(),
+ eds_resource->ToString().c_str());
}
- result.resource = std::move(endpoint_data);
+ auto resource = y_absl::make_unique<ResourceDataSubclass>();
+ resource->resource = std::move(*eds_resource);
+ result.resource = std::move(resource);
}
- return std::move(result);
+ return result;
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_endpoint.h b/contrib/libs/grpc/src/core/ext/xds/xds_endpoint.h
index 24918f70d1..aba6321e3f 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_endpoint.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_endpoint.h
@@ -19,17 +19,24 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
+#include <algorithm>
#include <map>
-#include <set>
+#include <memory>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+#include <vector>
-#include "y_absl/container/inlined_vector.h"
+#include "y_absl/strings/string_view.h"
#include "envoy/config/endpoint/v3/endpoint.upbdefs.h"
+#include "upb/def.h"
-#include "src/core/ext/xds/xds_client.h"
#include "src/core/ext/xds/xds_client_stats.h"
+#include "src/core/ext/xds/xds_resource_type.h"
#include "src/core/ext/xds/xds_resource_type_impl.h"
+#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/resolver/server_address.h"
@@ -55,7 +62,7 @@ struct XdsEndpointResource {
bool operator==(const Priority& other) const;
TString ToString() const;
};
- using PriorityList = y_absl::InlinedVector<Priority, 2>;
+ using PriorityList = std::vector<Priority>;
// There are two phases of accessing this class's content:
// 1. to initialize in the control plane combiner;
@@ -73,7 +80,7 @@ struct XdsEndpointResource {
const uint32_t parts_per_million;
};
- using DropCategoryList = y_absl::InlinedVector<DropCategory, 2>;
+ using DropCategoryList = std::vector<DropCategory>;
void AddCategory(TString name, uint32_t parts_per_million) {
drop_category_list_.emplace_back(
@@ -122,9 +129,9 @@ class XdsEndpointResourceType
return "envoy.api.v2.ClusterLoadAssignment";
}
- y_absl::StatusOr<DecodeResult> Decode(const XdsEncodingContext& context,
- y_absl::string_view serialized_resource,
- bool is_v2) const override;
+ DecodeResult Decode(const XdsResourceType::DecodeContext& context,
+ y_absl::string_view serialized_resource,
+ bool is_v2) const override;
void InitUpbSymtab(upb_DefPool* symtab) const override {
envoy_config_endpoint_v3_ClusterLoadAssignment_getmsgdef(symtab);
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_http_fault_filter.cc b/contrib/libs/grpc/src/core/ext/xds/xds_http_fault_filter.cc
index e00a52bfd1..a5db459cf1 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_http_fault_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_http_fault_filter.cc
@@ -18,29 +18,32 @@
#include "src/core/ext/xds/xds_http_fault_filter.h"
+#include <stdint.h>
+
+#include <map>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+#include "y_absl/status/status.h"
#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
-#include "y_absl/strings/str_format.h"
#include "y_absl/strings/string_view.h"
#include "envoy/extensions/filters/common/fault/v3/fault.upb.h"
#include "envoy/extensions/filters/http/fault/v3/fault.upb.h"
#include "envoy/extensions/filters/http/fault/v3/fault.upbdefs.h"
#include "envoy/type/v3/percent.upb.h"
-#include "google/protobuf/any.upb.h"
-#include "google/protobuf/duration.upb.h"
#include "google/protobuf/wrappers.upb.h"
#include "upb/def.h"
-#include <grpc/grpc.h>
+#include <grpc/status.h>
#include "src/core/ext/filters/fault_injection/fault_injection_filter.h"
+#include "src/core/ext/xds/xds_common_types.h"
#include "src/core/ext/xds/xds_http_filters.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/channel/status_util.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/json/json.h"
#include "src/core/lib/transport/status_conversion.h"
@@ -107,7 +110,7 @@ y_absl::StatusOr<Json> ParseHttpFaultIntoJson(
int abort_http_status_code =
envoy_extensions_filters_http_fault_v3_FaultAbort_http_status(
fault_abort);
- if (abort_http_status_code != 0 and abort_http_status_code != 200) {
+ if (abort_http_status_code != 0 && abort_http_status_code != 200) {
abort_grpc_status_code =
grpc_http2_status_to_grpc_status(abort_http_status_code);
}
@@ -141,9 +144,8 @@ y_absl::StatusOr<Json> ParseHttpFaultIntoJson(
envoy_extensions_filters_common_fault_v3_FaultDelay_fixed_delay(
fault_delay);
if (delay_duration != nullptr) {
- fault_injection_policy_json["delay"] = y_absl::StrFormat(
- "%d.%09ds", google_protobuf_Duration_seconds(delay_duration),
- google_protobuf_Duration_nanos(delay_duration));
+ fault_injection_policy_json["delay"] =
+ ParseDuration(delay_duration).ToJsonString();
}
// Set the headers if we enabled header delay injection control
if (envoy_extensions_filters_common_fault_v3_FaultDelay_has_header_delay(
@@ -199,19 +201,12 @@ XdsHttpFaultFilter::GenerateFilterConfigOverride(
}
const grpc_channel_filter* XdsHttpFaultFilter::channel_filter() const {
- return &FaultInjectionFilterVtable;
+ return &FaultInjectionFilter::kFilter;
}
-grpc_channel_args* XdsHttpFaultFilter::ModifyChannelArgs(
- grpc_channel_args* args) const {
- grpc_arg args_to_add = grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG), 1);
- grpc_channel_args* new_args =
- grpc_channel_args_copy_and_add(args, &args_to_add, 1);
- // Since this function takes the ownership of the channel args, it needs to
- // deallocate the old ones to prevent leak.
- grpc_channel_args_destroy(args);
- return new_args;
+ChannelArgs XdsHttpFaultFilter::ModifyChannelArgs(
+ const ChannelArgs& args) const {
+ return args.Set(GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG, 1);
}
y_absl::StatusOr<XdsHttpFilterImpl::ServiceConfigJsonEntry>
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_http_fault_filter.h b/contrib/libs/grpc/src/core/ext/xds/xds_http_fault_filter.h
index caeddd3862..30dda75bed 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_http_fault_filter.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_http_fault_filter.h
@@ -20,11 +20,13 @@
#include <grpc/support/port_platform.h>
#include "y_absl/status/statusor.h"
+#include "upb/arena.h"
#include "upb/def.h"
-
-#include <grpc/grpc.h>
+#include "upb/upb.h"
#include "src/core/ext/xds/xds_http_filters.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
namespace grpc_core {
@@ -47,7 +49,7 @@ class XdsHttpFaultFilter : public XdsHttpFilterImpl {
const grpc_channel_filter* channel_filter() const override;
// Overrides the ModifyChannelArgs method
- grpc_channel_args* ModifyChannelArgs(grpc_channel_args* args) const override;
+ ChannelArgs ModifyChannelArgs(const ChannelArgs& args) const override;
// Overrides the GenerateServiceConfig method
y_absl::StatusOr<ServiceConfigJsonEntry> GenerateServiceConfig(
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_http_filters.cc b/contrib/libs/grpc/src/core/ext/xds/xds_http_filters.cc
index 254a1cf0f4..032d7ccd63 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_http_filters.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_http_filters.cc
@@ -18,6 +18,13 @@
#include "src/core/ext/xds/xds_http_filters.h"
+#include <algorithm>
+#include <map>
+#include <utility>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
#include "envoy/extensions/filters/http/router/v3/router.upb.h"
#include "envoy/extensions/filters/http/router/v3/router.upbdefs.h"
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_http_filters.h b/contrib/libs/grpc/src/core/ext/xds/xds_http_filters.h
index 7f7ba8cc8f..11a640886f 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_http_filters.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_http_filters.h
@@ -27,12 +27,12 @@
#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/string_view.h"
-#include "google/protobuf/any.upb.h"
+#include "upb/arena.h"
#include "upb/def.h"
+#include "upb/upb.h"
-#include <grpc/grpc.h>
-
-#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/json/json.h"
namespace grpc_core {
@@ -89,7 +89,7 @@ class XdsHttpFilterImpl {
// Modifies channel args that may affect service config parsing (not
// visible to the channel as a whole).
// Takes ownership of args. Caller takes ownership of return value.
- virtual grpc_channel_args* ModifyChannelArgs(grpc_channel_args* args) const {
+ virtual ChannelArgs ModifyChannelArgs(const ChannelArgs& args) const {
return args;
}
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_http_rbac_filter.cc b/contrib/libs/grpc/src/core/ext/xds/xds_http_rbac_filter.cc
index 8663a21055..4bb59d0f76 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_http_rbac_filter.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_http_rbac_filter.cc
@@ -18,7 +18,21 @@
#include "src/core/ext/xds/xds_http_rbac_filter.h"
-#include "y_absl/strings/str_format.h"
+#include <stddef.h>
+
+#include <algorithm>
+#include <cstdint>
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/status/status.h"
+#include "y_absl/strings/match.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
#include "envoy/config/core/v3/address.upb.h"
#include "envoy/config/rbac/v3/rbac.upb.h"
#include "envoy/config/route/v3/route_components.upb.h"
@@ -35,6 +49,7 @@
#include "src/core/ext/filters/rbac/rbac_service_config_parser.h"
#include "src/core/ext/xds/upb_utils.h"
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/json/json.h"
namespace grpc_core {
@@ -61,15 +76,13 @@ Json ParseInt64RangeToJson(const envoy_type_v3_Int64Range* range) {
y_absl::StatusOr<Json> ParseHeaderMatcherToJson(
const envoy_config_route_v3_HeaderMatcher* header) {
Json::Object header_json;
- std::vector<y_absl::Status> error_list;
+ std::vector<TString> errors;
TString name =
UpbStringToStdString(envoy_config_route_v3_HeaderMatcher_name(header));
if (name == ":scheme") {
- error_list.push_back(
- y_absl::InvalidArgumentError("':scheme' not allowed in header"));
+ errors.emplace_back("':scheme' not allowed in header");
} else if (y_absl::StartsWith(name, "grpc-")) {
- error_list.push_back(
- y_absl::InvalidArgumentError("'grpc-' prefixes not allowed in header"));
+ errors.emplace_back("'grpc-' prefixes not allowed in header");
}
header_json.emplace("name", std::move(name));
if (envoy_config_route_v3_HeaderMatcher_has_exact_match(header)) {
@@ -107,13 +120,11 @@ y_absl::StatusOr<Json> ParseHeaderMatcherToJson(
UpbStringToStdString(
envoy_config_route_v3_HeaderMatcher_contains_match(header)));
} else {
- error_list.push_back(
- y_absl::InvalidArgumentError("Invalid route header matcher specified."));
+ errors.emplace_back("Invalid route header matcher specified.");
}
- if (!error_list.empty()) {
- return StatusCreate(y_absl::StatusCode::kInvalidArgument,
- "Error parsing HeaderMatcher", DEBUG_LOCATION,
- std::move(error_list));
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "errors parsing HeaderMatcher: [", y_absl::StrJoin(errors, "; "), "]"));
}
header_json.emplace("invertMatch",
envoy_config_route_v3_HeaderMatcher_invert_match(header));
@@ -201,7 +212,7 @@ y_absl::StatusOr<Json> ParsePermissionToJson(
auto parse_permission_set_to_json =
[](const envoy_config_rbac_v3_Permission_Set* set)
-> y_absl::StatusOr<Json> {
- std::vector<y_absl::Status> error_list;
+ std::vector<TString> errors;
Json::Array rules_json;
size_t size;
const envoy_config_rbac_v3_Permission* const* rules =
@@ -209,15 +220,14 @@ y_absl::StatusOr<Json> ParsePermissionToJson(
for (size_t i = 0; i < size; ++i) {
auto permission_json = ParsePermissionToJson(rules[i]);
if (!permission_json.ok()) {
- error_list.push_back(permission_json.status());
+ errors.emplace_back(permission_json.status().message());
} else {
rules_json.emplace_back(std::move(*permission_json));
}
}
- if (!error_list.empty()) {
- return StatusCreate(y_absl::StatusCode::kInvalidArgument,
- "Error parsing Set", DEBUG_LOCATION,
- std::move(error_list));
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "errors parsing Set: [", y_absl::StrJoin(errors, "; "), "]"));
}
return Json::Object({{"rules", std::move(rules_json)}});
};
@@ -297,7 +307,7 @@ y_absl::StatusOr<Json> ParsePrincipalToJson(
[](const envoy_config_rbac_v3_Principal_Set* set)
-> y_absl::StatusOr<Json> {
Json::Object json;
- std::vector<y_absl::Status> error_list;
+ std::vector<TString> errors;
Json::Array ids_json;
size_t size;
const envoy_config_rbac_v3_Principal* const* ids =
@@ -305,15 +315,14 @@ y_absl::StatusOr<Json> ParsePrincipalToJson(
for (size_t i = 0; i < size; ++i) {
auto principal_json = ParsePrincipalToJson(ids[i]);
if (!principal_json.ok()) {
- error_list.push_back(principal_json.status());
+ errors.emplace_back(principal_json.status().message());
} else {
ids_json.emplace_back(std::move(*principal_json));
}
}
- if (!error_list.empty()) {
- return StatusCreate(y_absl::StatusCode::kInvalidArgument,
- "Error parsing Set", DEBUG_LOCATION,
- std::move(error_list));
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "errors parsing Set: [", y_absl::StrJoin(errors, "; "), "]"));
}
return Json::Object({{"ids", std::move(ids_json)}});
};
@@ -396,7 +405,7 @@ y_absl::StatusOr<Json> ParsePrincipalToJson(
y_absl::StatusOr<Json> ParsePolicyToJson(
const envoy_config_rbac_v3_Policy* policy) {
Json::Object policy_json;
- std::vector<y_absl::Status> error_list;
+ std::vector<TString> errors;
size_t size;
Json::Array permissions_json;
const envoy_config_rbac_v3_Permission* const* permissions =
@@ -404,7 +413,7 @@ y_absl::StatusOr<Json> ParsePolicyToJson(
for (size_t i = 0; i < size; ++i) {
auto permission_json = ParsePermissionToJson(permissions[i]);
if (!permission_json.ok()) {
- error_list.push_back(permission_json.status());
+ errors.emplace_back(permission_json.status().message());
} else {
permissions_json.emplace_back(std::move(*permission_json));
}
@@ -416,24 +425,21 @@ y_absl::StatusOr<Json> ParsePolicyToJson(
for (size_t i = 0; i < size; ++i) {
auto principal_json = ParsePrincipalToJson(principals[i]);
if (!principal_json.ok()) {
- error_list.push_back(principal_json.status());
+ errors.emplace_back(principal_json.status().message());
} else {
principals_json.emplace_back(std::move(*principal_json));
}
}
policy_json.emplace("principals", std::move(principals_json));
if (envoy_config_rbac_v3_Policy_has_condition(policy)) {
- error_list.push_back(
- y_absl::InvalidArgumentError("Policy: condition not supported"));
+ errors.emplace_back("Policy: condition not supported");
}
if (envoy_config_rbac_v3_Policy_has_checked_condition(policy)) {
- error_list.push_back(
- y_absl::InvalidArgumentError("Policy: checked condition not supported"));
+ errors.emplace_back("Policy: checked condition not supported");
}
- if (!error_list.empty()) {
- return StatusCreate(y_absl::StatusCode::kInvalidArgument,
- "Error parsing Policy", DEBUG_LOCATION,
- std::move(error_list));
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "errors parsing Policy: [", y_absl::StrJoin(errors, "; "), "]"));
}
return policy_json;
}
@@ -441,7 +447,7 @@ y_absl::StatusOr<Json> ParsePolicyToJson(
y_absl::StatusOr<Json> ParseHttpRbacToJson(
const envoy_extensions_filters_http_rbac_v3_RBAC* rbac) {
Json::Object rbac_json;
- std::vector<y_absl::Status> error_list;
+ std::vector<TString> errors;
const auto* rules = envoy_extensions_filters_http_rbac_v3_RBAC_rules(rbac);
if (rules != nullptr) {
int action = envoy_config_rbac_v3_RBAC_action(rules);
@@ -462,13 +468,11 @@ y_absl::StatusOr<Json> ParseHttpRbacToJson(
auto policy = ParsePolicyToJson(
envoy_config_rbac_v3_RBAC_PoliciesEntry_value(entry));
if (!policy.ok()) {
- error_list.push_back(StatusCreate(
- y_absl::StatusCode::kInvalidArgument,
- y_absl::StrFormat(
- "RBAC PoliciesEntry key:%s",
- UpbStringToStdString(
- envoy_config_rbac_v3_RBAC_PoliciesEntry_key(entry))),
- DEBUG_LOCATION, {policy.status()}));
+ errors.emplace_back(y_absl::StrCat(
+ "RBAC PoliciesEntry key:",
+ UpbStringToStdString(
+ envoy_config_rbac_v3_RBAC_PoliciesEntry_key(entry)),
+ " error:", policy.status().message()));
} else {
policies_object.emplace(
UpbStringToStdString(
@@ -480,10 +484,9 @@ y_absl::StatusOr<Json> ParseHttpRbacToJson(
}
rbac_json.emplace("rules", std::move(inner_rbac_json));
}
- if (!error_list.empty()) {
- return StatusCreate(y_absl::StatusCode::kInvalidArgument,
- "Error parsing RBAC", DEBUG_LOCATION,
- std::move(error_list));
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "errors parsing RBAC: [", y_absl::StrJoin(errors, "; "), "]"));
}
return rbac_json;
}
@@ -539,14 +542,9 @@ const grpc_channel_filter* XdsHttpRbacFilter::channel_filter() const {
return &RbacFilter::kFilterVtable;
}
-grpc_channel_args* XdsHttpRbacFilter::ModifyChannelArgs(
- grpc_channel_args* args) const {
- grpc_arg arg_to_add = grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_PARSE_RBAC_METHOD_CONFIG), 1);
- grpc_channel_args* new_args =
- grpc_channel_args_copy_and_add(args, &arg_to_add, 1);
- grpc_channel_args_destroy(args);
- return new_args;
+ChannelArgs XdsHttpRbacFilter::ModifyChannelArgs(
+ const ChannelArgs& args) const {
+ return args.Set(GRPC_ARG_PARSE_RBAC_METHOD_CONFIG, 1);
}
y_absl::StatusOr<XdsHttpFilterImpl::ServiceConfigJsonEntry>
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_http_rbac_filter.h b/contrib/libs/grpc/src/core/ext/xds/xds_http_rbac_filter.h
index 5e1a64d0b2..7370da8258 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_http_rbac_filter.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_http_rbac_filter.h
@@ -19,7 +19,14 @@
#include <grpc/support/port_platform.h>
+#include "y_absl/status/statusor.h"
+#include "upb/arena.h"
+#include "upb/def.h"
+#include "upb/upb.h"
+
#include "src/core/ext/xds/xds_http_filters.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
namespace grpc_core {
@@ -38,7 +45,7 @@ class XdsHttpRbacFilter : public XdsHttpFilterImpl {
const grpc_channel_filter* channel_filter() const override;
- grpc_channel_args* ModifyChannelArgs(grpc_channel_args* args) const override;
+ ChannelArgs ModifyChannelArgs(const ChannelArgs& args) const override;
y_absl::StatusOr<ServiceConfigJsonEntry> GenerateServiceConfig(
const FilterConfig& hcm_filter_config,
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_lb_policy_registry.cc b/contrib/libs/grpc/src/core/ext/xds/xds_lb_policy_registry.cc
new file mode 100644
index 0000000000..84611949d8
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_lb_policy_registry.cc
@@ -0,0 +1,291 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/xds/xds_lb_policy_registry.h"
+
+#include <stddef.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_format.h"
+#include "envoy/config/core/v3/extension.upb.h"
+#include "envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h"
+#include "envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h"
+#include "google/protobuf/any.upb.h"
+#include "google/protobuf/struct.upb.h"
+#include "google/protobuf/struct.upbdefs.h"
+#include "google/protobuf/wrappers.upb.h"
+#include "upb/arena.h"
+#include "upb/json_encode.h"
+#include "upb/status.h"
+#include "upb/upb.hpp"
+#include "xds/type/v3/typed_struct.upb.h"
+
+#include "src/core/ext/xds/upb_utils.h"
+#include "src/core/ext/xds/xds_common_types.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+
+namespace grpc_core {
+
+namespace {
+
+class RingHashLbPolicyConfigFactory
+ : public XdsLbPolicyRegistry::ConfigFactory {
+ public:
+ y_absl::StatusOr<Json::Object> ConvertXdsLbPolicyConfig(
+ const XdsResourceType::DecodeContext& context,
+ y_absl::string_view configuration, int /* recursion_depth */) override {
+ const auto* resource =
+ envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_parse(
+ configuration.data(), configuration.size(), context.arena);
+ if (resource == nullptr) {
+ return y_absl::InvalidArgumentError(
+ "Can't decode RingHash loadbalancing policy");
+ }
+ if (envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_hash_function(
+ resource) !=
+ envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_XX_HASH) {
+ return y_absl::InvalidArgumentError(
+ "Invalid hash function provided for RingHash loadbalancing policy. "
+ "Only XX_HASH is supported.");
+ }
+ Json::Object json;
+ const auto* min_ring_size =
+ envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_minimum_ring_size(
+ resource);
+ if (min_ring_size != nullptr) {
+ json.emplace("minRingSize",
+ google_protobuf_UInt64Value_value(min_ring_size));
+ }
+ const auto* max_ring_size =
+ envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_maximum_ring_size(
+ resource);
+ if (max_ring_size != nullptr) {
+ json.emplace("maxRingSize",
+ google_protobuf_UInt64Value_value(max_ring_size));
+ }
+ return Json::Object{{"ring_hash_experimental", std::move(json)}};
+ }
+
+ y_absl::string_view type() override { return Type(); }
+
+ static y_absl::string_view Type() {
+ return "envoy.extensions.load_balancing_policies.ring_hash.v3.RingHash";
+ }
+};
+
+class RoundRobinLbPolicyConfigFactory
+ : public XdsLbPolicyRegistry::ConfigFactory {
+ public:
+ y_absl::StatusOr<Json::Object> ConvertXdsLbPolicyConfig(
+ const XdsResourceType::DecodeContext& /* context */,
+ y_absl::string_view /* configuration */,
+ int /* recursion_depth */) override {
+ return Json::Object{{"round_robin", Json::Object()}};
+ }
+
+ y_absl::string_view type() override { return Type(); }
+
+ static y_absl::string_view Type() {
+ return "envoy.extensions.load_balancing_policies.round_robin.v3.RoundRobin";
+ }
+};
+
+class WrrLocalityLbPolicyConfigFactory
+ : public XdsLbPolicyRegistry::ConfigFactory {
+ public:
+ y_absl::StatusOr<Json::Object> ConvertXdsLbPolicyConfig(
+ const XdsResourceType::DecodeContext& context,
+ y_absl::string_view configuration, int recursion_depth) override {
+ const auto* resource =
+ envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_parse(
+ configuration.data(), configuration.size(), context.arena);
+ if (resource == nullptr) {
+ return y_absl::InvalidArgumentError(
+ "Can't decode WrrLocality loadbalancing policy");
+ }
+ const auto* endpoint_picking_policy =
+ envoy_extensions_load_balancing_policies_wrr_locality_v3_WrrLocality_endpoint_picking_policy(
+ resource);
+ if (endpoint_picking_policy == nullptr) {
+ return y_absl::InvalidArgumentError(
+ "WrrLocality: endpoint_picking_policy not found");
+ }
+ auto child_policy = XdsLbPolicyRegistry::ConvertXdsLbPolicyConfig(
+ context, endpoint_picking_policy, recursion_depth + 1);
+ if (!child_policy.ok()) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("Error parsing WrrLocality load balancing policy: ",
+ child_policy.status().message()));
+ }
+ return Json::Object{
+ {"xds_wrr_locality_experimental",
+ Json::Object{{"child_policy", *std::move(child_policy)}}}};
+ }
+
+ y_absl::string_view type() override { return Type(); }
+
+ static y_absl::string_view Type() {
+ return "envoy.extensions.load_balancing_policies.wrr_locality.v3."
+ "WrrLocality";
+ }
+};
+
+y_absl::StatusOr<Json> ParseStructToJson(
+ const XdsResourceType::DecodeContext& context,
+ const google_protobuf_Struct* resource) {
+ upb::Status status;
+ const auto* msg_def = google_protobuf_Struct_getmsgdef(context.symtab);
+ size_t json_size = upb_JsonEncode(resource, msg_def, context.symtab, 0,
+ nullptr, 0, status.ptr());
+ if (json_size == static_cast<size_t>(-1)) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("Error parsing google::Protobuf::Struct: ",
+ upb_Status_ErrorMessage(status.ptr())));
+ }
+ void* buf = upb_Arena_Malloc(context.arena, json_size + 1);
+ upb_JsonEncode(resource, msg_def, context.symtab, 0,
+ reinterpret_cast<char*>(buf), json_size + 1, status.ptr());
+ auto json = Json::Parse(reinterpret_cast<char*>(buf));
+ if (!json.ok()) {
+ // This should not happen
+ return y_absl::InternalError(
+ y_absl::StrCat("Error parsing JSON form of google::Protobuf::Struct "
+ "produced by upb library: ",
+ json.status().ToString()));
+ }
+ return std::move(*json);
+}
+
+} // namespace
+
+//
+// XdsLbPolicyRegistry
+//
+
+y_absl::StatusOr<Json::Array> XdsLbPolicyRegistry::ConvertXdsLbPolicyConfig(
+ const XdsResourceType::DecodeContext& context,
+ const envoy_config_cluster_v3_LoadBalancingPolicy* lb_policy,
+ int recursion_depth) {
+ constexpr int kMaxRecursionDepth = 16;
+ if (recursion_depth >= kMaxRecursionDepth) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrFormat("LoadBalancingPolicy configuration has a recursion "
+ "depth of more than %d.",
+ kMaxRecursionDepth));
+ }
+ size_t size = 0;
+ const auto* policies =
+ envoy_config_cluster_v3_LoadBalancingPolicy_policies(lb_policy, &size);
+ for (size_t i = 0; i < size; ++i) {
+ y_absl::StatusOr<Json::Object> policy;
+ const auto* typed_extension_config =
+ envoy_config_cluster_v3_LoadBalancingPolicy_Policy_typed_extension_config(
+ policies[i]);
+ if (typed_extension_config == nullptr) {
+ return y_absl::InvalidArgumentError(
+ "Error parsing LoadBalancingPolicy::Policy - Missing "
+ "typed_extension_config field");
+ }
+ const auto* typed_config =
+ envoy_config_core_v3_TypedExtensionConfig_typed_config(
+ typed_extension_config);
+ if (typed_config == nullptr) {
+ return y_absl::InvalidArgumentError(
+ "Error parsing LoadBalancingPolicy::Policy - Missing "
+ "TypedExtensionConfig::typed_config field");
+ }
+ auto type = ExtractExtensionTypeName(context, typed_config);
+ if (!type.ok()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "Error parsing "
+ "LoadBalancingPolicy::Policy::TypedExtensionConfig::typed_config: ",
+ type.status().message()));
+ }
+ y_absl::string_view value =
+ UpbStringToAbsl(google_protobuf_Any_value(typed_config));
+ auto config_factory_it = Get()->policy_config_factories_.find(type->type);
+ if (config_factory_it != Get()->policy_config_factories_.end()) {
+ policy = config_factory_it->second->ConvertXdsLbPolicyConfig(
+ context, value, recursion_depth);
+ if (!policy.ok()) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("Error parsing "
+ "LoadBalancingPolicy::Policy::TypedExtensionConfig::"
+ "typed_config to JSON: ",
+ policy.status().message()));
+ }
+ } else if (type->typed_struct != nullptr) {
+ // Custom lb policy config
+ TString custom_type = TString(type->type);
+ if (!CoreConfiguration::Get()
+ .lb_policy_registry()
+ .LoadBalancingPolicyExists(custom_type.c_str(), nullptr)) {
+ // Skip unsupported custom lb policy.
+ continue;
+ }
+ // Convert typed struct to json.
+ auto value = xds_type_v3_TypedStruct_value(type->typed_struct);
+ if (value == nullptr) {
+ policy = Json::Object{{std::move(custom_type), Json() /* null */}};
+ } else {
+ auto parsed_value = ParseStructToJson(context, value);
+ if (!parsed_value.ok()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "Error parsing LoadBalancingPolicy: Custom Policy: ", custom_type,
+ ": ", parsed_value.status().message()));
+ }
+ policy =
+ Json::Object{{std::move(custom_type), *(std::move(parsed_value))}};
+ }
+ } else {
+ // Unsupported type. Skipping entry.
+ continue;
+ }
+ return Json::Array{std::move(policy.value())};
+ }
+ return y_absl::InvalidArgumentError(
+ "No supported load balancing policy config found.");
+}
+
+XdsLbPolicyRegistry::XdsLbPolicyRegistry() {
+ policy_config_factories_.emplace(
+ RingHashLbPolicyConfigFactory::Type(),
+ y_absl::make_unique<RingHashLbPolicyConfigFactory>());
+ policy_config_factories_.emplace(
+ RoundRobinLbPolicyConfigFactory::Type(),
+ y_absl::make_unique<RoundRobinLbPolicyConfigFactory>());
+ policy_config_factories_.emplace(
+ WrrLocalityLbPolicyConfigFactory::Type(),
+ y_absl::make_unique<WrrLocalityLbPolicyConfigFactory>());
+}
+
+XdsLbPolicyRegistry* XdsLbPolicyRegistry::Get() {
+ // This is thread-safe since C++11
+ static XdsLbPolicyRegistry* instance = new XdsLbPolicyRegistry();
+ return instance;
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_lb_policy_registry.h b/contrib/libs/grpc/src/core/ext/xds/xds_lb_policy_registry.h
new file mode 100644
index 0000000000..d077fbb51b
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_lb_policy_registry.h
@@ -0,0 +1,72 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_EXT_XDS_XDS_LB_POLICY_REGISTRY_H
+#define GRPC_CORE_EXT_XDS_XDS_LB_POLICY_REGISTRY_H
+
+#include <grpc/support/port_platform.h>
+
+#include <map>
+#include <memory>
+
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+#include "envoy/config/cluster/v3/cluster.upb.h"
+
+#include "src/core/ext/xds/xds_resource_type.h"
+#include "src/core/lib/json/json.h"
+
+namespace grpc_core {
+
+// A registry that maintans a set of converters that are able to map xDS
+// loadbalancing policy configurations to gRPC's JSON format.
+class XdsLbPolicyRegistry {
+ public:
+ class ConfigFactory {
+ public:
+ virtual ~ConfigFactory() {}
+ virtual y_absl::StatusOr<Json::Object> ConvertXdsLbPolicyConfig(
+ const XdsResourceType::DecodeContext& context,
+ y_absl::string_view configuration, int recursion_depth) = 0;
+
+ virtual y_absl::string_view type() = 0;
+ };
+
+ // Converts an xDS cluster load balancing policy message to gRPC's JSON
+ // format. An error is returned if none of the lb policies in the list are
+ // supported, or if a supported lb policy configuration conversion fails. \a
+ // recursion_depth indicates the current depth of the tree if lb_policy
+ // configuration recursively holds other lb policies.
+ static y_absl::StatusOr<Json::Array> ConvertXdsLbPolicyConfig(
+ const XdsResourceType::DecodeContext& context,
+ const envoy_config_cluster_v3_LoadBalancingPolicy* lb_policy,
+ int recursion_depth = 0);
+
+ private:
+ XdsLbPolicyRegistry();
+
+ static XdsLbPolicyRegistry* Get();
+
+ // A map of config factories that goes from the type of the lb policy config
+ // to the config factory.
+ std::map<y_absl::string_view /* Owned by ConfigFactory */,
+ std::unique_ptr<ConfigFactory>>
+ policy_config_factories_;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_XDS_XDS_LB_POLICY_REGISTRY_H
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_listener.cc b/contrib/libs/grpc/src/core/ext/xds/xds_listener.cc
index e39993f19a..0c1bc476f3 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_listener.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_listener.cc
@@ -18,10 +18,18 @@
#include "src/core/ext/xds/xds_listener.h"
+#include <stdint.h>
+
+#include <set>
+#include <utility>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
-#include "y_absl/strings/str_split.h"
+#include "y_absl/strings/strip.h"
#include "envoy/config/core/v3/address.upb.h"
#include "envoy/config/core/v3/base.upb.h"
#include "envoy/config/core/v3/config_source.upb.h"
@@ -30,18 +38,29 @@
#include "envoy/config/listener/v3/listener.upb.h"
#include "envoy/config/listener/v3/listener.upbdefs.h"
#include "envoy/config/listener/v3/listener_components.upb.h"
+#include "envoy/config/route/v3/route.upb.h"
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h"
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h"
+#include "envoy/extensions/transport_sockets/tls/v3/tls.upb.h"
+#include "google/protobuf/any.upb.h"
+#include "google/protobuf/duration.upb.h"
#include "google/protobuf/wrappers.upb.h"
#include "upb/text_encode.h"
#include "upb/upb.h"
-#include "upb/upb.hpp"
+#include <grpc/support/log.h>
+
+#include "src/core/ext/xds/upb_utils.h"
#include "src/core/ext/xds/xds_common_types.h"
+#include "src/core/ext/xds/xds_resource_type.h"
#include "src/core/lib/address_utils/parse_address.h"
#include "src/core/lib/address_utils/sockaddr_utils.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/host_port.h"
+#include "src/core/lib/gprpp/status_helper.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/sockaddr.h"
+#include "src/core/lib/json/json.h"
namespace grpc_core {
@@ -64,7 +83,7 @@ bool XdsListenerResource::DownstreamTlsContext::Empty() const {
//
TString XdsListenerResource::HttpConnectionManager::ToString() const {
- y_absl::InlinedVector<TString, 4> contents;
+ std::vector<TString> contents;
contents.push_back(y_absl::StrFormat(
"route_config_name=%s",
!route_config_name.empty() ? route_config_name.c_str() : "<inlined>"));
@@ -109,8 +128,10 @@ TString XdsListenerResource::FilterChainData::ToString() const {
//
TString XdsListenerResource::FilterChainMap::CidrRange::ToString() const {
+ auto addr_str = grpc_sockaddr_to_string(&address, false);
return y_absl::StrCat(
- "{address_prefix=", grpc_sockaddr_to_string(&address, false),
+ "{address_prefix=",
+ addr_str.ok() ? addr_str.value() : addr_str.status().ToString(),
", prefix_len=", prefix_len, "}");
}
@@ -138,7 +159,7 @@ struct FilterChain {
};
TString FilterChain::FilterChainMatch::ToString() const {
- y_absl::InlinedVector<TString, 8> contents;
+ std::vector<TString> contents;
if (destination_port != 0) {
contents.push_back(y_absl::StrCat("destination_port=", destination_port));
}
@@ -227,7 +248,7 @@ TString XdsListenerResource::FilterChainMap::ToString() const {
//
TString XdsListenerResource::ToString() const {
- y_absl::InlinedVector<TString, 4> contents;
+ std::vector<TString> contents;
if (type == ListenerType::kTcpListener) {
contents.push_back(y_absl::StrCat("address=", address));
contents.push_back(
@@ -250,7 +271,7 @@ TString XdsListenerResource::ToString() const {
namespace {
void MaybeLogHttpConnectionManager(
- const XdsEncodingContext& context,
+ const XdsResourceType::DecodeContext& context,
const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager*
http_connection_manager_config) {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
@@ -266,25 +287,25 @@ void MaybeLogHttpConnectionManager(
}
}
-grpc_error_handle HttpConnectionManagerParse(
- bool is_client, const XdsEncodingContext& context,
+y_absl::StatusOr<XdsListenerResource::HttpConnectionManager>
+HttpConnectionManagerParse(
+ bool is_client, const XdsResourceType::DecodeContext& context,
const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager*
http_connection_manager_proto,
- bool is_v2,
- XdsListenerResource::HttpConnectionManager* http_connection_manager) {
+ bool is_v2) {
MaybeLogHttpConnectionManager(context, http_connection_manager_proto);
+ std::vector<TString> errors;
+ XdsListenerResource::HttpConnectionManager http_connection_manager;
// NACK a non-zero `xff_num_trusted_hops` and a `non-empty
// original_ip_detection_extensions` as mentioned in
// https://github.com/grpc/proposal/blob/master/A41-xds-rbac.md
if (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_xff_num_trusted_hops(
http_connection_manager_proto) != 0) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "'xff_num_trusted_hops' must be zero");
+ errors.emplace_back("'xff_num_trusted_hops' must be zero");
}
if (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_original_ip_detection_extensions(
http_connection_manager_proto)) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "'original_ip_detection_extensions' must be empty");
+ errors.emplace_back("'original_ip_detection_extensions' must be empty");
}
// Obtain max_stream_duration from Http Protocol Options.
const envoy_config_core_v3_HttpProtocolOptions* options =
@@ -294,7 +315,7 @@ grpc_error_handle HttpConnectionManagerParse(
const google_protobuf_Duration* duration =
envoy_config_core_v3_HttpProtocolOptions_max_stream_duration(options);
if (duration != nullptr) {
- http_connection_manager->http_max_stream_duration =
+ http_connection_manager.http_max_stream_duration =
ParseDuration(duration);
}
}
@@ -311,12 +332,12 @@ grpc_error_handle HttpConnectionManagerParse(
envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_name(
http_filter));
if (name.empty()) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("empty filter name at index ", i));
+ errors.emplace_back(y_absl::StrCat("empty filter name at index ", i));
+ continue;
}
if (names_seen.find(name) != names_seen.end()) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("duplicate HTTP filter name: ", name));
+ errors.emplace_back(y_absl::StrCat("duplicate HTTP filter name: ", name));
+ continue;
}
names_seen.insert(name);
const bool is_optional =
@@ -326,56 +347,64 @@ grpc_error_handle HttpConnectionManagerParse(
envoy_extensions_filters_network_http_connection_manager_v3_HttpFilter_typed_config(
http_filter);
if (any == nullptr) {
- if (is_optional) continue;
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("no filter config specified for filter name ", name));
+ if (!is_optional) {
+ errors.emplace_back(y_absl::StrCat(
+ "no filter config specified for filter name ", name));
+ }
+ continue;
+ }
+ auto filter_type = ExtractExtensionTypeName(context, any);
+ if (!filter_type.ok()) {
+ errors.emplace_back(y_absl::StrCat("filter name ", name, ": ",
+ filter_type.status().message()));
+ continue;
}
- y_absl::string_view filter_type;
- grpc_error_handle error =
- ExtractHttpFilterTypeName(context, any, &filter_type);
- if (error != GRPC_ERROR_NONE) return error;
const XdsHttpFilterImpl* filter_impl =
- XdsHttpFilterRegistry::GetFilterForType(filter_type);
+ XdsHttpFilterRegistry::GetFilterForType(filter_type->type);
if (filter_impl == nullptr) {
- if (is_optional) continue;
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("no filter registered for config type ", filter_type));
+ if (!is_optional) {
+ errors.emplace_back(y_absl::StrCat(
+ "no filter registered for config type ", filter_type->type));
+ }
+ continue;
}
if ((is_client && !filter_impl->IsSupportedOnClients()) ||
(!is_client && !filter_impl->IsSupportedOnServers())) {
- if (is_optional) continue;
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrFormat("Filter %s is not supported on %s", filter_type,
- is_client ? "clients" : "servers"));
+ if (!is_optional) {
+ errors.emplace_back(y_absl::StrFormat(
+ "Filter %s is not supported on %s", filter_type->type,
+ is_client ? "clients" : "servers"));
+ }
+ continue;
}
y_absl::StatusOr<XdsHttpFilterImpl::FilterConfig> filter_config =
filter_impl->GenerateFilterConfig(google_protobuf_Any_value(any),
context.arena);
if (!filter_config.ok()) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "filter config for type ", filter_type,
+ errors.emplace_back(y_absl::StrCat(
+ "filter config for type ", filter_type->type,
" failed to parse: ", StatusToString(filter_config.status())));
+ continue;
}
- http_connection_manager->http_filters.emplace_back(
+ http_connection_manager.http_filters.emplace_back(
XdsListenerResource::HttpConnectionManager::HttpFilter{
TString(name), std::move(*filter_config)});
}
- if (http_connection_manager->http_filters.empty()) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Expected at least one HTTP filter");
+ if (http_connection_manager.http_filters.empty()) {
+ errors.emplace_back("Expected at least one HTTP filter");
}
// Make sure that the last filter is terminal and non-last filters are
// non-terminal. Note that this check is being performed in a separate loop
// to take care of the case where there are two terminal filters in the list
// out of which only one gets added in the final list.
- for (const auto& http_filter : http_connection_manager->http_filters) {
+ for (const auto& http_filter : http_connection_manager.http_filters) {
const XdsHttpFilterImpl* filter_impl =
XdsHttpFilterRegistry::GetFilterForType(
http_filter.config.config_proto_type_name);
- if (&http_filter != &http_connection_manager->http_filters.back()) {
+ if (&http_filter != &http_connection_manager.http_filters.back()) {
// Filters before the last filter must not be terminal.
if (filter_impl->IsTerminalFilter()) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ errors.emplace_back(
y_absl::StrCat("terminal filter for config type ",
http_filter.config.config_proto_type_name,
" must be the last filter in the chain"));
@@ -383,7 +412,7 @@ grpc_error_handle HttpConnectionManagerParse(
} else {
// The last filter must be terminal.
if (!filter_impl->IsTerminalFilter()) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ errors.emplace_back(
y_absl::StrCat("non-terminal filter for config type ",
http_filter.config.config_proto_type_name,
" is the last filter in the chain"));
@@ -395,7 +424,7 @@ grpc_error_handle HttpConnectionManagerParse(
// router filter without actually looking at the config. This ensures
// that the right thing happens in the xds resolver without having
// to expose whether the resource we received was v2 or v3.
- http_connection_manager->http_filters.emplace_back(
+ http_connection_manager.http_filters.emplace_back(
XdsListenerResource::HttpConnectionManager::HttpFilter{
"router", {kXdsHttpRouterFilterConfigName, Json()}});
}
@@ -409,261 +438,290 @@ grpc_error_handle HttpConnectionManagerParse(
const envoy_config_route_v3_RouteConfiguration* route_config =
envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_config(
http_connection_manager_proto);
- XdsRouteConfigResource rds_update;
- grpc_error_handle error =
- XdsRouteConfigResource::Parse(context, route_config, &rds_update);
- if (error != GRPC_ERROR_NONE) return error;
- http_connection_manager->rds_update = std::move(rds_update);
- return GRPC_ERROR_NONE;
- }
- // Validate that RDS must be used to get the route_config dynamically.
- const envoy_extensions_filters_network_http_connection_manager_v3_Rds* rds =
- envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_rds(
- http_connection_manager_proto);
- if (rds == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "HttpConnectionManager neither has inlined route_config nor RDS.");
- }
- // Check that the ConfigSource specifies ADS.
- const envoy_config_core_v3_ConfigSource* config_source =
- envoy_extensions_filters_network_http_connection_manager_v3_Rds_config_source(
- rds);
- if (config_source == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "HttpConnectionManager missing config_source for RDS.");
- }
- if (!envoy_config_core_v3_ConfigSource_has_ads(config_source) &&
- !envoy_config_core_v3_ConfigSource_has_self(config_source)) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "HttpConnectionManager ConfigSource for RDS does not specify ADS "
- "or SELF.");
+ auto rds_update = XdsRouteConfigResource::Parse(context, route_config);
+ if (!rds_update.ok()) {
+ errors.emplace_back(rds_update.status().message());
+ } else {
+ http_connection_manager.rds_update = std::move(*rds_update);
+ }
+ } else {
+ // Validate that RDS must be used to get the route_config dynamically.
+ const envoy_extensions_filters_network_http_connection_manager_v3_Rds* rds =
+ envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_rds(
+ http_connection_manager_proto);
+ if (rds == nullptr) {
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "HttpConnectionManager neither has inlined route_config nor RDS.");
+ }
+ // Check that the ConfigSource specifies ADS.
+ const envoy_config_core_v3_ConfigSource* config_source =
+ envoy_extensions_filters_network_http_connection_manager_v3_Rds_config_source(
+ rds);
+ if (config_source == nullptr) {
+ errors.emplace_back(
+ "HttpConnectionManager missing config_source for RDS.");
+ } else if (!envoy_config_core_v3_ConfigSource_has_ads(config_source) &&
+ !envoy_config_core_v3_ConfigSource_has_self(config_source)) {
+ errors.emplace_back(
+ "HttpConnectionManager ConfigSource for RDS does not specify ADS "
+ "or SELF.");
+ } else {
+ // Get the route_config_name.
+ http_connection_manager.route_config_name = UpbStringToStdString(
+ envoy_extensions_filters_network_http_connection_manager_v3_Rds_route_config_name(
+ rds));
+ }
}
- // Get the route_config_name.
- http_connection_manager->route_config_name = UpbStringToStdString(
- envoy_extensions_filters_network_http_connection_manager_v3_Rds_route_config_name(
- rds));
}
- return GRPC_ERROR_NONE;
+ // Return result.
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("Errors parsing HttpConnectionManager config: [",
+ y_absl::StrJoin(errors, "; "), "]"));
+ }
+ return http_connection_manager;
}
-grpc_error_handle LdsResourceParseClient(
- const XdsEncodingContext& context,
- const envoy_config_listener_v3_ApiListener* api_listener, bool is_v2,
- XdsListenerResource* lds_update) {
- lds_update->type = XdsListenerResource::ListenerType::kHttpApiListener;
+y_absl::StatusOr<XdsListenerResource> LdsResourceParseClient(
+ const XdsResourceType::DecodeContext& context,
+ const envoy_config_listener_v3_ApiListener* api_listener, bool is_v2) {
const upb_StringView encoded_api_listener = google_protobuf_Any_value(
envoy_config_listener_v3_ApiListener_api_listener(api_listener));
const auto* http_connection_manager =
envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_parse(
encoded_api_listener.data, encoded_api_listener.size, context.arena);
if (http_connection_manager == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"Could not parse HttpConnectionManager config from ApiListener");
}
- return HttpConnectionManagerParse(true /* is_client */, context,
- http_connection_manager, is_v2,
- &lds_update->http_connection_manager);
+ auto hcm = HttpConnectionManagerParse(true /* is_client */, context,
+ http_connection_manager, is_v2);
+ if (!hcm.ok()) return hcm.status();
+ XdsListenerResource lds_update;
+ lds_update.type = XdsListenerResource::ListenerType::kHttpApiListener;
+ lds_update.http_connection_manager = std::move(*hcm);
+ return lds_update;
}
-grpc_error_handle DownstreamTlsContextParse(
- const XdsEncodingContext& context,
- const envoy_config_core_v3_TransportSocket* transport_socket,
- XdsListenerResource::DownstreamTlsContext* downstream_tls_context) {
- y_absl::string_view name = UpbStringToAbsl(
- envoy_config_core_v3_TransportSocket_name(transport_socket));
- if (name != "envoy.transport_sockets.tls") {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("Unrecognized transport socket: ", name));
- }
- auto* typed_config =
+y_absl::StatusOr<XdsListenerResource::DownstreamTlsContext>
+DownstreamTlsContextParse(
+ const XdsResourceType::DecodeContext& context,
+ const envoy_config_core_v3_TransportSocket* transport_socket) {
+ const auto* typed_config =
envoy_config_core_v3_TransportSocket_typed_config(transport_socket);
- std::vector<grpc_error_handle> errors;
- if (typed_config != nullptr) {
- const upb_StringView encoded_downstream_tls_context =
- google_protobuf_Any_value(typed_config);
- auto* downstream_tls_context_proto =
- envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_parse(
- encoded_downstream_tls_context.data,
- encoded_downstream_tls_context.size, context.arena);
- if (downstream_tls_context_proto == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Can't decode downstream tls context.");
- }
- auto* common_tls_context =
- envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_common_tls_context(
- downstream_tls_context_proto);
- if (common_tls_context != nullptr) {
- grpc_error_handle error =
- CommonTlsContext::Parse(context, common_tls_context,
- &downstream_tls_context->common_tls_context);
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
- }
- auto* require_client_certificate =
- envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_client_certificate(
- downstream_tls_context_proto);
- if (require_client_certificate != nullptr) {
- downstream_tls_context->require_client_certificate =
- google_protobuf_BoolValue_value(require_client_certificate);
- }
- auto* require_sni =
- envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_sni(
- downstream_tls_context_proto);
- if (require_sni != nullptr &&
- google_protobuf_BoolValue_value(require_sni)) {
- errors.push_back(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("require_sni: unsupported"));
- }
- if (envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_ocsp_staple_policy(
- downstream_tls_context_proto) !=
- envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_LENIENT_STAPLING) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "ocsp_staple_policy: Only LENIENT_STAPLING supported"));
+ if (typed_config == nullptr) {
+ return y_absl::InvalidArgumentError("transport socket typed config unset");
+ }
+ y_absl::string_view type_url = y_absl::StripPrefix(
+ UpbStringToAbsl(google_protobuf_Any_type_url(typed_config)),
+ "type.googleapis.com/");
+ if (type_url !=
+ "envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext") {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("Unrecognized transport socket type: ", type_url));
+ }
+ const upb_StringView encoded_downstream_tls_context =
+ google_protobuf_Any_value(typed_config);
+ const auto* downstream_tls_context_proto =
+ envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_parse(
+ encoded_downstream_tls_context.data,
+ encoded_downstream_tls_context.size, context.arena);
+ if (downstream_tls_context_proto == nullptr) {
+ return y_absl::InvalidArgumentError("Can't decode downstream tls context.");
+ }
+ std::vector<TString> errors;
+ XdsListenerResource::DownstreamTlsContext downstream_tls_context;
+ auto* common_tls_context =
+ envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_common_tls_context(
+ downstream_tls_context_proto);
+ if (common_tls_context != nullptr) {
+ auto common_context = CommonTlsContext::Parse(context, common_tls_context);
+ if (!common_context.ok()) {
+ errors.emplace_back(common_context.status().message());
+ } else {
+ downstream_tls_context.common_tls_context = std::move(*common_context);
}
}
- if (downstream_tls_context->common_tls_context
+ auto* require_client_certificate =
+ envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_client_certificate(
+ downstream_tls_context_proto);
+ if (require_client_certificate != nullptr) {
+ downstream_tls_context.require_client_certificate =
+ google_protobuf_BoolValue_value(require_client_certificate);
+ }
+ auto* require_sni =
+ envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_require_sni(
+ downstream_tls_context_proto);
+ if (require_sni != nullptr && google_protobuf_BoolValue_value(require_sni)) {
+ errors.emplace_back("require_sni: unsupported");
+ }
+ if (envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_ocsp_staple_policy(
+ downstream_tls_context_proto) !=
+ envoy_extensions_transport_sockets_tls_v3_DownstreamTlsContext_LENIENT_STAPLING) {
+ errors.emplace_back("ocsp_staple_policy: Only LENIENT_STAPLING supported");
+ }
+ if (downstream_tls_context.common_tls_context
.tls_certificate_provider_instance.instance_name.empty()) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ errors.emplace_back(
"TLS configuration provided but no "
- "tls_certificate_provider_instance found."));
+ "tls_certificate_provider_instance found.");
}
- if (downstream_tls_context->require_client_certificate &&
- downstream_tls_context->common_tls_context.certificate_validation_context
+ if (downstream_tls_context.require_client_certificate &&
+ downstream_tls_context.common_tls_context.certificate_validation_context
.ca_certificate_provider_instance.instance_name.empty()) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ errors.emplace_back(
"TLS configuration requires client certificates but no certificate "
- "provider instance specified for validation."));
+ "provider instance specified for validation.");
}
- if (!downstream_tls_context->common_tls_context.certificate_validation_context
+ if (!downstream_tls_context.common_tls_context.certificate_validation_context
.match_subject_alt_names.empty()) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "match_subject_alt_names not supported on servers"));
+ errors.emplace_back("match_subject_alt_names not supported on servers");
+ }
+ // Return result.
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("Errors parsing DownstreamTlsContext: [",
+ y_absl::StrJoin(errors, "; "), "]"));
}
- return GRPC_ERROR_CREATE_FROM_VECTOR("Error parsing DownstreamTlsContext",
- &errors);
+ return downstream_tls_context;
}
-grpc_error_handle CidrRangeParse(
- const envoy_config_core_v3_CidrRange* cidr_range_proto,
- XdsListenerResource::FilterChainMap::CidrRange* cidr_range) {
+y_absl::StatusOr<XdsListenerResource::FilterChainMap::CidrRange> CidrRangeParse(
+ const envoy_config_core_v3_CidrRange* cidr_range_proto) {
+ XdsListenerResource::FilterChainMap::CidrRange cidr_range;
TString address_prefix = UpbStringToStdString(
envoy_config_core_v3_CidrRange_address_prefix(cidr_range_proto));
- grpc_error_handle error =
- grpc_string_to_sockaddr(&cidr_range->address, address_prefix.c_str(), 0);
- if (error != GRPC_ERROR_NONE) return error;
- cidr_range->prefix_len = 0;
+ auto address = StringToSockaddr(address_prefix, /*port=*/0);
+ if (!address.ok()) return address.status();
+ cidr_range.address = *address;
+ cidr_range.prefix_len = 0;
auto* prefix_len_proto =
envoy_config_core_v3_CidrRange_prefix_len(cidr_range_proto);
if (prefix_len_proto != nullptr) {
- cidr_range->prefix_len = std::min(
+ cidr_range.prefix_len = std::min(
google_protobuf_UInt32Value_value(prefix_len_proto),
- (reinterpret_cast<const grpc_sockaddr*>(cidr_range->address.addr))
+ (reinterpret_cast<const grpc_sockaddr*>(cidr_range.address.addr))
->sa_family == GRPC_AF_INET
? uint32_t(32)
: uint32_t(128));
}
// Normalize the network address by masking it with prefix_len
- grpc_sockaddr_mask_bits(&cidr_range->address, cidr_range->prefix_len);
- return GRPC_ERROR_NONE;
+ grpc_sockaddr_mask_bits(&cidr_range.address, cidr_range.prefix_len);
+ return cidr_range;
}
-grpc_error_handle FilterChainMatchParse(
- const envoy_config_listener_v3_FilterChainMatch* filter_chain_match_proto,
- FilterChain::FilterChainMatch* filter_chain_match) {
+y_absl::StatusOr<FilterChain::FilterChainMatch> FilterChainMatchParse(
+ const envoy_config_listener_v3_FilterChainMatch* filter_chain_match_proto) {
+ std::vector<TString> errors;
+ FilterChain::FilterChainMatch filter_chain_match;
auto* destination_port =
envoy_config_listener_v3_FilterChainMatch_destination_port(
filter_chain_match_proto);
if (destination_port != nullptr) {
- filter_chain_match->destination_port =
+ filter_chain_match.destination_port =
google_protobuf_UInt32Value_value(destination_port);
}
size_t size = 0;
auto* prefix_ranges = envoy_config_listener_v3_FilterChainMatch_prefix_ranges(
filter_chain_match_proto, &size);
- filter_chain_match->prefix_ranges.reserve(size);
+ filter_chain_match.prefix_ranges.reserve(size);
for (size_t i = 0; i < size; i++) {
- XdsListenerResource::FilterChainMap::CidrRange cidr_range;
- grpc_error_handle error = CidrRangeParse(prefix_ranges[i], &cidr_range);
- if (error != GRPC_ERROR_NONE) return error;
- filter_chain_match->prefix_ranges.push_back(cidr_range);
+ auto cidr_range = CidrRangeParse(prefix_ranges[i]);
+ if (!cidr_range.ok()) {
+ errors.emplace_back(y_absl::StrCat("prefix range ", i, ": ",
+ cidr_range.status().message()));
+ continue;
+ }
+ filter_chain_match.prefix_ranges.push_back(*cidr_range);
}
- filter_chain_match->source_type =
+ filter_chain_match.source_type =
static_cast<XdsListenerResource::FilterChainMap::ConnectionSourceType>(
envoy_config_listener_v3_FilterChainMatch_source_type(
filter_chain_match_proto));
auto* source_prefix_ranges =
envoy_config_listener_v3_FilterChainMatch_source_prefix_ranges(
filter_chain_match_proto, &size);
- filter_chain_match->source_prefix_ranges.reserve(size);
+ filter_chain_match.source_prefix_ranges.reserve(size);
for (size_t i = 0; i < size; i++) {
- XdsListenerResource::FilterChainMap::CidrRange cidr_range;
- grpc_error_handle error =
- CidrRangeParse(source_prefix_ranges[i], &cidr_range);
- if (error != GRPC_ERROR_NONE) return error;
- filter_chain_match->source_prefix_ranges.push_back(cidr_range);
+ auto cidr_range = CidrRangeParse(source_prefix_ranges[i]);
+ if (!cidr_range.ok()) {
+ errors.emplace_back(y_absl::StrCat("source prefix range ", i, ": ",
+ cidr_range.status().message()));
+ continue;
+ }
+ filter_chain_match.source_prefix_ranges.push_back(*cidr_range);
}
auto* source_ports = envoy_config_listener_v3_FilterChainMatch_source_ports(
filter_chain_match_proto, &size);
- filter_chain_match->source_ports.reserve(size);
+ filter_chain_match.source_ports.reserve(size);
for (size_t i = 0; i < size; i++) {
- filter_chain_match->source_ports.push_back(source_ports[i]);
+ filter_chain_match.source_ports.push_back(source_ports[i]);
}
auto* server_names = envoy_config_listener_v3_FilterChainMatch_server_names(
filter_chain_match_proto, &size);
for (size_t i = 0; i < size; i++) {
- filter_chain_match->server_names.push_back(
+ filter_chain_match.server_names.push_back(
UpbStringToStdString(server_names[i]));
}
- filter_chain_match->transport_protocol = UpbStringToStdString(
+ filter_chain_match.transport_protocol = UpbStringToStdString(
envoy_config_listener_v3_FilterChainMatch_transport_protocol(
filter_chain_match_proto));
auto* application_protocols =
envoy_config_listener_v3_FilterChainMatch_application_protocols(
filter_chain_match_proto, &size);
for (size_t i = 0; i < size; i++) {
- filter_chain_match->application_protocols.push_back(
+ filter_chain_match.application_protocols.push_back(
UpbStringToStdString(application_protocols[i]));
}
- return GRPC_ERROR_NONE;
+ // Return result.
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("errors parsing filter chain match: [",
+ y_absl::StrJoin(errors, "; "), "]"));
+ }
+ return filter_chain_match;
}
-grpc_error_handle FilterChainParse(
- const XdsEncodingContext& context,
- const envoy_config_listener_v3_FilterChain* filter_chain_proto, bool is_v2,
- FilterChain* filter_chain) {
- std::vector<grpc_error_handle> errors;
+y_absl::StatusOr<FilterChain> FilterChainParse(
+ const XdsResourceType::DecodeContext& context,
+ const envoy_config_listener_v3_FilterChain* filter_chain_proto,
+ bool is_v2) {
+ FilterChain filter_chain;
+ std::vector<TString> errors;
auto* filter_chain_match =
envoy_config_listener_v3_FilterChain_filter_chain_match(
filter_chain_proto);
if (filter_chain_match != nullptr) {
- grpc_error_handle error = FilterChainMatchParse(
- filter_chain_match, &filter_chain->filter_chain_match);
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
+ auto match = FilterChainMatchParse(filter_chain_match);
+ if (!match.ok()) {
+ errors.emplace_back(match.status().message());
+ } else {
+ filter_chain.filter_chain_match = std::move(*match);
+ }
}
- filter_chain->filter_chain_data =
+ filter_chain.filter_chain_data =
std::make_shared<XdsListenerResource::FilterChainData>();
// Parse the filters list. Currently we only support HttpConnectionManager.
size_t size = 0;
auto* filters =
envoy_config_listener_v3_FilterChain_filters(filter_chain_proto, &size);
if (size != 1) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ errors.push_back(
"FilterChain should have exactly one filter: HttpConnectionManager; no "
- "other filter is supported at the moment"));
+ "other filter is supported at the moment");
} else {
auto* typed_config =
envoy_config_listener_v3_Filter_typed_config(filters[0]);
if (typed_config == nullptr) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "No typed_config found in filter."));
+ errors.emplace_back("No typed_config found in filter.");
} else {
- y_absl::string_view type_url =
- UpbStringToAbsl(google_protobuf_Any_type_url(typed_config));
+ y_absl::string_view type_url = y_absl::StripPrefix(
+ UpbStringToAbsl(google_protobuf_Any_type_url(typed_config)),
+ "type.googleapis.com/");
if (type_url !=
- "type.googleapis.com/"
"envoy.extensions.filters.network.http_connection_manager.v3."
"HttpConnectionManager") {
- errors.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("Unsupported filter type ", type_url)));
+ errors.emplace_back(y_absl::StrCat("Unsupported filter type ", type_url));
} else {
const upb_StringView encoded_http_connection_manager =
google_protobuf_Any_value(typed_config);
@@ -672,14 +730,18 @@ grpc_error_handle FilterChainParse(
encoded_http_connection_manager.data,
encoded_http_connection_manager.size, context.arena);
if (http_connection_manager == nullptr) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ errors.emplace_back(
"Could not parse HttpConnectionManager config from filter "
- "typed_config"));
+ "typed_config");
} else {
- grpc_error_handle error = HttpConnectionManagerParse(
- false /* is_client */, context, http_connection_manager, is_v2,
- &filter_chain->filter_chain_data->http_connection_manager);
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
+ auto hcm = HttpConnectionManagerParse(
+ /*is_client=*/false, context, http_connection_manager, is_v2);
+ if (!hcm.ok()) {
+ errors.emplace_back(hcm.status().message());
+ } else {
+ filter_chain.filter_chain_data->http_connection_manager =
+ std::move(*hcm);
+ }
}
}
}
@@ -687,36 +749,42 @@ grpc_error_handle FilterChainParse(
auto* transport_socket =
envoy_config_listener_v3_FilterChain_transport_socket(filter_chain_proto);
if (transport_socket != nullptr) {
- grpc_error_handle error = DownstreamTlsContextParse(
- context, transport_socket,
- &filter_chain->filter_chain_data->downstream_tls_context);
- if (error != GRPC_ERROR_NONE) errors.push_back(error);
+ auto downstream_context =
+ DownstreamTlsContextParse(context, transport_socket);
+ if (!downstream_context.ok()) {
+ errors.emplace_back(downstream_context.status().message());
+ } else {
+ filter_chain.filter_chain_data->downstream_tls_context =
+ std::move(*downstream_context);
+ }
+ }
+ // Return result.
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "Errors parsing FilterChain: [", y_absl::StrJoin(errors, "; "), "]"));
}
- return GRPC_ERROR_CREATE_FROM_VECTOR("Error parsing FilterChain", &errors);
+ return filter_chain;
}
-grpc_error_handle AddressParse(
- const envoy_config_core_v3_Address* address_proto, TString* address) {
+y_absl::StatusOr<TString> AddressParse(
+ const envoy_config_core_v3_Address* address_proto) {
const auto* socket_address =
envoy_config_core_v3_Address_socket_address(address_proto);
if (socket_address == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Address does not have socket_address");
+ return y_absl::InvalidArgumentError("Address does not have socket_address");
}
if (envoy_config_core_v3_SocketAddress_protocol(socket_address) !=
envoy_config_core_v3_SocketAddress_TCP) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "SocketAddress protocol is not TCP");
+ return y_absl::InvalidArgumentError("SocketAddress protocol is not TCP");
}
uint32_t port = envoy_config_core_v3_SocketAddress_port_value(socket_address);
if (port > 65535) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Invalid port");
+ return y_absl::InvalidArgumentError("Invalid port");
}
- *address = JoinHostPort(
+ return JoinHostPort(
UpbStringToAbsl(
envoy_config_core_v3_SocketAddress_address(socket_address)),
port);
- return GRPC_ERROR_NONE;
}
// An intermediate map for filter chains that we create to validate the list of
@@ -735,37 +803,36 @@ struct InternalFilterChainMap {
DestinationIpMap destination_ip_map;
};
-grpc_error_handle AddFilterChainDataForSourcePort(
- const FilterChain& filter_chain,
- XdsListenerResource::FilterChainMap::SourcePortsMap* ports_map,
- uint32_t port) {
+y_absl::Status AddFilterChainDataForSourcePort(
+ const FilterChain& filter_chain, uint32_t port,
+ XdsListenerResource::FilterChainMap::SourcePortsMap* ports_map) {
auto insert_result = ports_map->emplace(
port, XdsListenerResource::FilterChainMap::FilterChainDataSharedPtr{
filter_chain.filter_chain_data});
if (!insert_result.second) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
"Duplicate matching rules detected when adding filter chain: ",
filter_chain.filter_chain_match.ToString()));
}
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
-grpc_error_handle AddFilterChainDataForSourcePorts(
+y_absl::Status AddFilterChainDataForSourcePorts(
const FilterChain& filter_chain,
XdsListenerResource::FilterChainMap::SourcePortsMap* ports_map) {
if (filter_chain.filter_chain_match.source_ports.empty()) {
- return AddFilterChainDataForSourcePort(filter_chain, ports_map, 0);
+ return AddFilterChainDataForSourcePort(filter_chain, 0, ports_map);
} else {
for (uint32_t port : filter_chain.filter_chain_match.source_ports) {
- grpc_error_handle error =
- AddFilterChainDataForSourcePort(filter_chain, ports_map, port);
- if (error != GRPC_ERROR_NONE) return error;
+ y_absl::Status status =
+ AddFilterChainDataForSourcePort(filter_chain, port, ports_map);
+ if (!status.ok()) return status;
}
}
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
-grpc_error_handle AddFilterChainDataForSourceIpRange(
+y_absl::Status AddFilterChainDataForSourceIpRange(
const FilterChain& filter_chain,
InternalFilterChainMap::SourceIpMap* source_ip_map) {
if (filter_chain.filter_chain_match.source_prefix_ranges.empty()) {
@@ -776,22 +843,23 @@ grpc_error_handle AddFilterChainDataForSourceIpRange(
} else {
for (const auto& prefix_range :
filter_chain.filter_chain_match.source_prefix_ranges) {
+ auto addr_str = grpc_sockaddr_to_string(&prefix_range.address, false);
+ if (!addr_str.ok()) return addr_str.status();
auto insert_result = source_ip_map->emplace(
- y_absl::StrCat(grpc_sockaddr_to_string(&prefix_range.address, false),
- "/", prefix_range.prefix_len),
+ y_absl::StrCat(*addr_str, "/", prefix_range.prefix_len),
XdsListenerResource::FilterChainMap::SourceIp());
if (insert_result.second) {
insert_result.first->second.prefix_range.emplace(prefix_range);
}
- grpc_error_handle error = AddFilterChainDataForSourcePorts(
+ y_absl::Status status = AddFilterChainDataForSourcePorts(
filter_chain, &insert_result.first->second.ports_map);
- if (error != GRPC_ERROR_NONE) return error;
+ if (!status.ok()) return status;
}
}
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
-grpc_error_handle AddFilterChainDataForSourceType(
+y_absl::Status AddFilterChainDataForSourceType(
const FilterChain& filter_chain,
InternalFilterChainMap::DestinationIp* destination_ip) {
GPR_ASSERT(static_cast<unsigned int>(
@@ -801,31 +869,31 @@ grpc_error_handle AddFilterChainDataForSourceType(
filter_chain.filter_chain_match.source_type)]);
}
-grpc_error_handle AddFilterChainDataForApplicationProtocols(
+y_absl::Status AddFilterChainDataForApplicationProtocols(
const FilterChain& filter_chain,
InternalFilterChainMap::DestinationIp* destination_ip) {
// Only allow filter chains that do not mention application protocols
if (!filter_chain.filter_chain_match.application_protocols.empty()) {
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
return AddFilterChainDataForSourceType(filter_chain, destination_ip);
}
-grpc_error_handle AddFilterChainDataForTransportProtocol(
+y_absl::Status AddFilterChainDataForTransportProtocol(
const FilterChain& filter_chain,
InternalFilterChainMap::DestinationIp* destination_ip) {
const TString& transport_protocol =
filter_chain.filter_chain_match.transport_protocol;
// Only allow filter chains with no transport protocol or "raw_buffer"
if (!transport_protocol.empty() && transport_protocol != "raw_buffer") {
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
// If for this configuration, we've already seen filter chains that mention
// the transport protocol as "raw_buffer", we will never match filter chains
// that do not mention it.
if (destination_ip->transport_protocol_raw_buffer_provided &&
transport_protocol.empty()) {
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
if (!transport_protocol.empty() &&
!destination_ip->transport_protocol_raw_buffer_provided) {
@@ -839,17 +907,17 @@ grpc_error_handle AddFilterChainDataForTransportProtocol(
destination_ip);
}
-grpc_error_handle AddFilterChainDataForServerNames(
+y_absl::Status AddFilterChainDataForServerNames(
const FilterChain& filter_chain,
InternalFilterChainMap::DestinationIp* destination_ip) {
// Don't continue adding filter chains with server names mentioned
if (!filter_chain.filter_chain_match.server_names.empty()) {
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
return AddFilterChainDataForTransportProtocol(filter_chain, destination_ip);
}
-grpc_error_handle AddFilterChainDataForDestinationIpRange(
+y_absl::Status AddFilterChainDataForDestinationIpRange(
const FilterChain& filter_chain,
InternalFilterChainMap::DestinationIpMap* destination_ip_map) {
if (filter_chain.filter_chain_match.prefix_ranges.empty()) {
@@ -860,19 +928,20 @@ grpc_error_handle AddFilterChainDataForDestinationIpRange(
} else {
for (const auto& prefix_range :
filter_chain.filter_chain_match.prefix_ranges) {
+ auto addr_str = grpc_sockaddr_to_string(&prefix_range.address, false);
+ if (!addr_str.ok()) return addr_str.status();
auto insert_result = destination_ip_map->emplace(
- y_absl::StrCat(grpc_sockaddr_to_string(&prefix_range.address, false),
- "/", prefix_range.prefix_len),
+ y_absl::StrCat(*addr_str, "/", prefix_range.prefix_len),
InternalFilterChainMap::DestinationIp());
if (insert_result.second) {
insert_result.first->second.prefix_range.emplace(prefix_range);
}
- grpc_error_handle error = AddFilterChainDataForServerNames(
+ y_absl::Status status = AddFilterChainDataForServerNames(
filter_chain, &insert_result.first->second);
- if (error != GRPC_ERROR_NONE) return error;
+ if (!status.ok()) return status;
}
}
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
XdsListenerResource::FilterChainMap BuildFromInternalFilterChainMap(
@@ -894,36 +963,33 @@ XdsListenerResource::FilterChainMap BuildFromInternalFilterChainMap(
return filter_chain_map;
}
-grpc_error_handle BuildFilterChainMap(
- const std::vector<FilterChain>& filter_chains,
- XdsListenerResource::FilterChainMap* filter_chain_map) {
+y_absl::StatusOr<XdsListenerResource::FilterChainMap> BuildFilterChainMap(
+ const std::vector<FilterChain>& filter_chains) {
InternalFilterChainMap internal_filter_chain_map;
for (const auto& filter_chain : filter_chains) {
// Discard filter chain entries that specify destination port
if (filter_chain.filter_chain_match.destination_port != 0) continue;
- grpc_error_handle error = AddFilterChainDataForDestinationIpRange(
+ y_absl::Status status = AddFilterChainDataForDestinationIpRange(
filter_chain, &internal_filter_chain_map.destination_ip_map);
- if (error != GRPC_ERROR_NONE) return error;
+ if (!status.ok()) return status;
}
- *filter_chain_map =
- BuildFromInternalFilterChainMap(&internal_filter_chain_map);
- return GRPC_ERROR_NONE;
+ return BuildFromInternalFilterChainMap(&internal_filter_chain_map);
}
-grpc_error_handle LdsResourceParseServer(
- const XdsEncodingContext& context,
- const envoy_config_listener_v3_Listener* listener, bool is_v2,
- XdsListenerResource* lds_update) {
- lds_update->type = XdsListenerResource::ListenerType::kTcpListener;
- grpc_error_handle error =
- AddressParse(envoy_config_listener_v3_Listener_address(listener),
- &lds_update->address);
- if (error != GRPC_ERROR_NONE) return error;
+y_absl::StatusOr<XdsListenerResource> LdsResourceParseServer(
+ const XdsResourceType::DecodeContext& context,
+ const envoy_config_listener_v3_Listener* listener, bool is_v2) {
+ XdsListenerResource lds_update;
+ lds_update.type = XdsListenerResource::ListenerType::kTcpListener;
+ auto address =
+ AddressParse(envoy_config_listener_v3_Listener_address(listener));
+ if (!address.ok()) return address.status();
+ lds_update.address = std::move(*address);
const auto* use_original_dst =
envoy_config_listener_v3_Listener_use_original_dst(listener);
if (use_original_dst != nullptr) {
if (google_protobuf_BoolValue_value(use_original_dst)) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"Field \'use_original_dst\' is not supported.");
}
}
@@ -933,60 +999,56 @@ grpc_error_handle LdsResourceParseServer(
std::vector<FilterChain> parsed_filter_chains;
parsed_filter_chains.reserve(size);
for (size_t i = 0; i < size; i++) {
- FilterChain filter_chain;
- error = FilterChainParse(context, filter_chains[i], is_v2, &filter_chain);
- if (error != GRPC_ERROR_NONE) return error;
- parsed_filter_chains.push_back(std::move(filter_chain));
- }
- error =
- BuildFilterChainMap(parsed_filter_chains, &lds_update->filter_chain_map);
- if (error != GRPC_ERROR_NONE) return error;
+ auto filter_chain = FilterChainParse(context, filter_chains[i], is_v2);
+ if (!filter_chain.ok()) return filter_chain.status();
+ parsed_filter_chains.push_back(std::move(*filter_chain));
+ }
+ auto filter_chain_map = BuildFilterChainMap(parsed_filter_chains);
+ if (!filter_chain_map.ok()) return filter_chain_map.status();
+ lds_update.filter_chain_map = std::move(*filter_chain_map);
auto* default_filter_chain =
envoy_config_listener_v3_Listener_default_filter_chain(listener);
if (default_filter_chain != nullptr) {
- FilterChain filter_chain;
- error =
- FilterChainParse(context, default_filter_chain, is_v2, &filter_chain);
- if (error != GRPC_ERROR_NONE) return error;
- if (filter_chain.filter_chain_data != nullptr) {
- lds_update->default_filter_chain =
- std::move(*filter_chain.filter_chain_data);
+ auto filter_chain = FilterChainParse(context, default_filter_chain, is_v2);
+ if (!filter_chain.ok()) return filter_chain.status();
+ if (filter_chain->filter_chain_data != nullptr) {
+ lds_update.default_filter_chain =
+ std::move(*filter_chain->filter_chain_data);
}
}
if (size == 0 && default_filter_chain == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("No filter chain provided.");
+ return y_absl::InvalidArgumentError("No filter chain provided.");
}
- return GRPC_ERROR_NONE;
+ return lds_update;
}
-grpc_error_handle LdsResourceParse(
- const XdsEncodingContext& context,
- const envoy_config_listener_v3_Listener* listener, bool is_v2,
- XdsListenerResource* lds_update) {
+y_absl::StatusOr<XdsListenerResource> LdsResourceParse(
+ const XdsResourceType::DecodeContext& context,
+ const envoy_config_listener_v3_Listener* listener, bool is_v2) {
// Check whether it's a client or server listener.
const envoy_config_listener_v3_ApiListener* api_listener =
envoy_config_listener_v3_Listener_api_listener(listener);
const envoy_config_core_v3_Address* address =
envoy_config_listener_v3_Listener_address(listener);
- if (api_listener != nullptr && address != nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Listener has both address and ApiListener");
- }
+ // TODO(roth): Re-enable the following check once
+ // github.com/istio/istio/issues/38914 is resolved.
+ // if (api_listener != nullptr && address != nullptr) {
+ // return y_absl::InvalidArgumentError(
+ // "Listener has both address and ApiListener");
+ // }
if (api_listener == nullptr && address == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"Listener has neither address nor ApiListener");
}
- // Validate Listener fields.
- grpc_error_handle error = GRPC_ERROR_NONE;
+ // If api_listener is present, it's for a client; otherwise, it's
+ // for a server.
if (api_listener != nullptr) {
- error = LdsResourceParseClient(context, api_listener, is_v2, lds_update);
- } else {
- error = LdsResourceParseServer(context, listener, is_v2, lds_update);
+ return LdsResourceParseClient(context, api_listener, is_v2);
}
- return error;
+ return LdsResourceParseServer(context, listener, is_v2);
}
-void MaybeLogListener(const XdsEncodingContext& context,
+void MaybeLogListener(const XdsResourceType::DecodeContext& context,
const envoy_config_listener_v3_Listener* listener) {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
@@ -1000,40 +1062,41 @@ void MaybeLogListener(const XdsEncodingContext& context,
} // namespace
-y_absl::StatusOr<XdsResourceType::DecodeResult> XdsListenerResourceType::Decode(
- const XdsEncodingContext& context, y_absl::string_view serialized_resource,
- bool is_v2) const {
+XdsResourceType::DecodeResult XdsListenerResourceType::Decode(
+ const XdsResourceType::DecodeContext& context,
+ y_absl::string_view serialized_resource, bool is_v2) const {
+ DecodeResult result;
// Parse serialized proto.
auto* resource = envoy_config_listener_v3_Listener_parse(
serialized_resource.data(), serialized_resource.size(), context.arena);
if (resource == nullptr) {
- return y_absl::InvalidArgumentError("Can't parse Listener resource.");
+ result.resource =
+ y_absl::InvalidArgumentError("Can't parse Listener resource.");
+ return result;
}
MaybeLogListener(context, resource);
// Validate resource.
- DecodeResult result;
result.name =
UpbStringToStdString(envoy_config_listener_v3_Listener_name(resource));
- auto listener_data = y_absl::make_unique<ResourceDataSubclass>();
- grpc_error_handle error =
- LdsResourceParse(context, resource, is_v2, &listener_data->resource);
- if (error != GRPC_ERROR_NONE) {
- TString error_str = grpc_error_std_string(error);
- GRPC_ERROR_UNREF(error);
+ auto listener = LdsResourceParse(context, resource, is_v2);
+ if (!listener.ok()) {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
gpr_log(GPR_ERROR, "[xds_client %p] invalid Listener %s: %s",
- context.client, result.name.c_str(), error_str.c_str());
+ context.client, result.name->c_str(),
+ listener.status().ToString().c_str());
}
- result.resource = y_absl::InvalidArgumentError(error_str);
+ result.resource = listener.status();
} else {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
gpr_log(GPR_INFO, "[xds_client %p] parsed Listener %s: %s",
- context.client, result.name.c_str(),
- listener_data->resource.ToString().c_str());
+ context.client, result.name->c_str(),
+ listener->ToString().c_str());
}
- result.resource = std::move(listener_data);
+ auto resource = y_absl::make_unique<ResourceDataSubclass>();
+ resource->resource = std::move(*listener);
+ result.resource = std::move(resource);
}
- return std::move(result);
+ return result;
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_listener.h b/contrib/libs/grpc/src/core/ext/xds/xds_listener.h
index 7d729cce3c..435b89c47c 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_listener.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_listener.h
@@ -19,23 +19,31 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+#include <string.h>
+
+#include <algorithm>
#include <array>
+#include <cstdint>
#include <map>
+#include <memory>
#include <util/generic/string.h>
#include <util/string/cast.h>
#include <vector>
-#include "y_absl/status/statusor.h"
#include "y_absl/strings/string_view.h"
#include "y_absl/types/optional.h"
#include "envoy/config/listener/v3/listener.upbdefs.h"
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h"
+#include "upb/def.h"
-#include "src/core/ext/xds/xds_client.h"
#include "src/core/ext/xds/xds_common_types.h"
#include "src/core/ext/xds/xds_http_filters.h"
+#include "src/core/ext/xds/xds_resource_type.h"
#include "src/core/ext/xds/xds_resource_type_impl.h"
#include "src/core/ext/xds/xds_route_config.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/resolved_address.h"
namespace grpc_core {
@@ -202,9 +210,9 @@ class XdsListenerResourceType
return "envoy.api.v2.Listener";
}
- y_absl::StatusOr<DecodeResult> Decode(const XdsEncodingContext& context,
- y_absl::string_view serialized_resource,
- bool is_v2) const override;
+ DecodeResult Decode(const XdsResourceType::DecodeContext& context,
+ y_absl::string_view serialized_resource,
+ bool is_v2) const override;
bool AllResourcesRequiredInSotW() const override { return true; }
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_resource_type.h b/contrib/libs/grpc/src/core/ext/xds/xds_resource_type.h
index 58457abed8..4244378833 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_resource_type.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_resource_type.h
@@ -14,6 +14,8 @@
// limitations under the License.
//
+#ifndef GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H
+#define GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H
#include <grpc/support/port_platform.h>
#include <memory>
@@ -22,18 +24,30 @@
#include "y_absl/status/statusor.h"
#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+#include "upb/arena.h"
+#include "upb/def.h"
-#include "src/core/ext/xds/upb_utils.h"
-
-#ifndef GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H
-#define GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_H
+#include "src/core/ext/xds/xds_bootstrap.h"
+#include "src/core/lib/debug/trace.h"
namespace grpc_core {
+class XdsClient;
+
// Interface for an xDS resource type.
// Used to inject type-specific logic into XdsClient.
class XdsResourceType {
public:
+ // Context passed into Decode().
+ struct DecodeContext {
+ XdsClient* client;
+ const XdsBootstrap::XdsServer& server;
+ TraceFlag* tracer;
+ upb_DefPool* symtab;
+ upb_Arena* arena;
+ };
+
// A base type for resource data.
// Subclasses will extend this, and their DecodeResults will be
// downcastable to their extended type.
@@ -43,7 +57,11 @@ class XdsResourceType {
// Result returned by Decode().
struct DecodeResult {
- TString name;
+ // The resource's name, if it can be determined.
+ // If the name is not returned, the resource field should contain a
+ // non-OK status.
+ y_absl::optional<TString> name;
+ // The parsed and validated resource, or an error status.
y_absl::StatusOr<std::unique_ptr<ResourceData>> resource;
};
@@ -56,13 +74,9 @@ class XdsResourceType {
virtual y_absl::string_view v2_type_url() const = 0;
// Decodes and validates a serialized resource proto.
- // If the resource fails protobuf deserialization, returns non-OK status.
- // If the deserialized resource fails validation, returns a DecodeResult
- // whose resource field is set to a non-OK status.
- // Otherwise, returns a DecodeResult with a valid resource.
- virtual y_absl::StatusOr<DecodeResult> Decode(
- const XdsEncodingContext& context, y_absl::string_view serialized_resource,
- bool is_v2) const = 0;
+ virtual DecodeResult Decode(const DecodeContext& context,
+ y_absl::string_view serialized_resource,
+ bool is_v2) const = 0;
// Returns true if r1 and r2 are equal.
// Must be invoked only on resources returned by this object's Decode()
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_resource_type_impl.h b/contrib/libs/grpc/src/core/ext/xds/xds_resource_type_impl.h
index b259449a26..0241c9dc85 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_resource_type_impl.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_resource_type_impl.h
@@ -14,13 +14,17 @@
// limitations under the License.
//
+#ifndef GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_IMPL_H
+#define GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_IMPL_H
#include <grpc/support/port_platform.h>
+#include <memory>
+
+#include "y_absl/strings/string_view.h"
+
#include "src/core/ext/xds/xds_client.h"
#include "src/core/ext/xds/xds_resource_type.h"
-
-#ifndef GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_IMPL_H
-#define GRPC_CORE_EXT_XDS_XDS_RESOURCE_TYPE_IMPL_H
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_route_config.cc b/contrib/libs/grpc/src/core/ext/xds/xds_route_config.cc
index 57c3825ab7..a2dae7d783 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_route_config.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_route_config.cc
@@ -16,44 +16,82 @@
#include <grpc/support/port_platform.h>
+#include "src/core/ext/xds/xds_route_config.h"
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include <map>
+#include <memory>
+#include <set>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
#include "y_absl/strings/str_split.h"
#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+#include "y_absl/types/variant.h"
#include "envoy/config/core/v3/base.upb.h"
+#include "envoy/config/core/v3/extension.upb.h"
#include "envoy/config/route/v3/route.upb.h"
#include "envoy/config/route/v3/route.upbdefs.h"
#include "envoy/config/route/v3/route_components.upb.h"
-#include "envoy/config/route/v3/route_components.upbdefs.h"
#include "envoy/type/matcher/v3/regex.upb.h"
-#include "envoy/type/matcher/v3/string.upb.h"
#include "envoy/type/v3/percent.upb.h"
#include "envoy/type/v3/range.upb.h"
#include "google/protobuf/any.upb.h"
+#include "google/protobuf/duration.upb.h"
#include "google/protobuf/wrappers.upb.h"
+#include "re2/re2.h"
+#include "upb/def.h"
#include "upb/text_encode.h"
#include "upb/upb.h"
-#include "upb/upb.hpp"
+
+#include <grpc/status.h>
+#include <grpc/support/log.h>
#include "src/core/ext/xds/upb_utils.h"
-#include "src/core/ext/xds/xds_api.h"
+#include "src/core/ext/xds/xds_bootstrap.h"
+#include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
#include "src/core/ext/xds/xds_common_types.h"
+#include "src/core/ext/xds/xds_http_filters.h"
#include "src/core/ext/xds/xds_resource_type.h"
+#include "src/core/ext/xds/xds_resource_type_impl.h"
#include "src/core/ext/xds/xds_routing.h"
-#include "src/core/lib/gpr/env.h"
+#include "src/core/lib/channel/status_util.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gprpp/env.h"
+#include "src/core/lib/gprpp/match.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/matchers/matchers.h"
namespace grpc_core {
// TODO(yashykt): Remove once RBAC is no longer experimental
bool XdsRbacEnabled() {
- char* value = gpr_getenv("GRPC_XDS_EXPERIMENTAL_RBAC");
+ auto value = GetEnv("GRPC_XDS_EXPERIMENTAL_RBAC");
+ if (!value.has_value()) return false;
+ bool parsed_value;
+ bool parse_succeeded = gpr_parse_bool_value(value->c_str(), &parsed_value);
+ return parse_succeeded && parsed_value;
+}
+
+// TODO(donnadionne): Remove once RLS is no longer experimental
+bool XdsRlsEnabled() {
+ auto value = GetEnv("GRPC_EXPERIMENTAL_XDS_RLS_LB");
+ if (!value.has_value()) return false;
bool parsed_value;
- bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
- gpr_free(value);
+ bool parse_succeeded = gpr_parse_bool_value(value->c_str(), &parsed_value);
return parse_succeeded && parsed_value;
}
@@ -212,12 +250,23 @@ TString XdsRouteConfigResource::Route::RouteAction::ToString() const {
if (retry_policy.has_value()) {
contents.push_back(y_absl::StrCat("retry_policy=", retry_policy->ToString()));
}
- if (!cluster_name.empty()) {
- contents.push_back(y_absl::StrFormat("Cluster name: %s", cluster_name));
- }
- for (const ClusterWeight& cluster_weight : weighted_clusters) {
- contents.push_back(cluster_weight.ToString());
- }
+ Match(
+ action,
+ [&contents](const ClusterName& cluster_name) {
+ contents.push_back(
+ y_absl::StrFormat("Cluster name: %s", cluster_name.cluster_name));
+ },
+ [&contents](const std::vector<ClusterWeight>& weighted_clusters) {
+ for (const ClusterWeight& cluster_weight : weighted_clusters) {
+ contents.push_back(cluster_weight.ToString());
+ }
+ },
+ [&contents](
+ const ClusterSpecifierPluginName& cluster_specifier_plugin_name) {
+ contents.push_back(y_absl::StrFormat(
+ "Cluster specifier plugin name: %s",
+ cluster_specifier_plugin_name.cluster_specifier_plugin_name));
+ });
if (max_stream_duration.has_value()) {
contents.push_back(max_stream_duration->ToString());
}
@@ -258,38 +307,95 @@ TString XdsRouteConfigResource::Route::ToString() const {
//
TString XdsRouteConfigResource::ToString() const {
- std::vector<TString> vhosts;
+ std::vector<TString> parts;
for (const VirtualHost& vhost : virtual_hosts) {
- vhosts.push_back(
+ parts.push_back(
y_absl::StrCat("vhost={\n"
" domains=[",
y_absl::StrJoin(vhost.domains, ", "),
"]\n"
" routes=[\n"));
for (const XdsRouteConfigResource::Route& route : vhost.routes) {
- vhosts.push_back(" {\n");
- vhosts.push_back(route.ToString());
- vhosts.push_back("\n }\n");
+ parts.push_back(" {\n");
+ parts.push_back(route.ToString());
+ parts.push_back("\n }\n");
}
- vhosts.push_back(" ]\n");
- vhosts.push_back(" typed_per_filter_config={\n");
+ parts.push_back(" ]\n");
+ parts.push_back(" typed_per_filter_config={\n");
for (const auto& p : vhost.typed_per_filter_config) {
const TString& name = p.first;
const auto& config = p.second;
- vhosts.push_back(
- y_absl::StrCat(" ", name, "=", config.ToString(), "\n"));
+ parts.push_back(y_absl::StrCat(" ", name, "=", config.ToString(), "\n"));
}
- vhosts.push_back(" }\n");
- vhosts.push_back("]\n");
+ parts.push_back(" }\n");
+ parts.push_back("]\n");
+ }
+ parts.push_back("cluster_specifier_plugins={\n");
+ for (const auto& it : cluster_specifier_plugin_map) {
+ parts.push_back(y_absl::StrFormat("%s={%s}\n", it.first, it.second));
}
- return y_absl::StrJoin(vhosts, "");
+ parts.push_back("}");
+ return y_absl::StrJoin(parts, "");
}
namespace {
-grpc_error_handle RoutePathMatchParse(
- const envoy_config_route_v3_RouteMatch* match,
- XdsRouteConfigResource::Route* route, bool* ignore_route) {
+y_absl::StatusOr<XdsRouteConfigResource::ClusterSpecifierPluginMap>
+ClusterSpecifierPluginParse(
+ const XdsResourceType::DecodeContext& context,
+ const envoy_config_route_v3_RouteConfiguration* route_config) {
+ XdsRouteConfigResource::ClusterSpecifierPluginMap
+ cluster_specifier_plugin_map;
+ size_t num_cluster_specifier_plugins;
+ const envoy_config_route_v3_ClusterSpecifierPlugin* const*
+ cluster_specifier_plugin =
+ envoy_config_route_v3_RouteConfiguration_cluster_specifier_plugins(
+ route_config, &num_cluster_specifier_plugins);
+ for (size_t i = 0; i < num_cluster_specifier_plugins; ++i) {
+ const envoy_config_core_v3_TypedExtensionConfig* extension =
+ envoy_config_route_v3_ClusterSpecifierPlugin_extension(
+ cluster_specifier_plugin[i]);
+ TString name = UpbStringToStdString(
+ envoy_config_core_v3_TypedExtensionConfig_name(extension));
+ if (cluster_specifier_plugin_map.find(name) !=
+ cluster_specifier_plugin_map.end()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "Duplicated definition of cluster_specifier_plugin ", name));
+ }
+ const google_protobuf_Any* any =
+ envoy_config_core_v3_TypedExtensionConfig_typed_config(extension);
+ if (any == nullptr) {
+ return y_absl::InvalidArgumentError(
+ "Could not obtrain TypedExtensionConfig for plugin config.");
+ }
+ auto plugin_type = ExtractExtensionTypeName(context, any);
+ if (!plugin_type.ok()) return plugin_type.status();
+ bool is_optional = envoy_config_route_v3_ClusterSpecifierPlugin_is_optional(
+ cluster_specifier_plugin[i]);
+ const XdsClusterSpecifierPluginImpl* cluster_specifier_plugin_impl =
+ XdsClusterSpecifierPluginRegistry::GetPluginForType(plugin_type->type);
+ TString lb_policy_config;
+ if (cluster_specifier_plugin_impl == nullptr) {
+ if (!is_optional) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "Unknown ClusterSpecifierPlugin type ", plugin_type->type));
+ }
+ // Optional plugin, leave lb_policy_config empty.
+ } else {
+ auto config =
+ cluster_specifier_plugin_impl->GenerateLoadBalancingPolicyConfig(
+ google_protobuf_Any_value(any), context.arena, context.symtab);
+ if (!config.ok()) return config.status();
+ lb_policy_config = std::move(*config);
+ }
+ cluster_specifier_plugin_map[std::move(name)] = std::move(lb_policy_config);
+ }
+ return cluster_specifier_plugin_map;
+}
+
+y_absl::Status RoutePathMatchParse(const envoy_config_route_v3_RouteMatch* match,
+ XdsRouteConfigResource::Route* route,
+ bool* ignore_route) {
auto* case_sensitive_ptr =
envoy_config_route_v3_RouteMatch_case_sensitive(match);
bool case_sensitive = true;
@@ -308,18 +414,18 @@ grpc_error_handle RoutePathMatchParse(
// Prefix which does not start with a / will never match anything, so
// ignore this route.
*ignore_route = true;
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
std::vector<y_absl::string_view> prefix_elements =
y_absl::StrSplit(prefix.substr(1), y_absl::MaxSplits('/', 2));
if (prefix_elements.size() > 2) {
// Prefix cannot have more than 2 slashes.
*ignore_route = true;
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
} else if (prefix_elements.size() == 2 && prefix_elements[0].empty()) {
// Prefix contains empty string between the 2 slashes
*ignore_route = true;
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
}
type = StringMatcher::Type::kPrefix;
@@ -330,13 +436,13 @@ grpc_error_handle RoutePathMatchParse(
if (path.empty()) {
// Path that is empty will never match anything, so ignore this route.
*ignore_route = true;
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
if (path[0] != '/') {
// Path which does not start with a / will never match anything, so
// ignore this route.
*ignore_route = true;
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
std::vector<y_absl::string_view> path_elements =
y_absl::StrSplit(path.substr(1), y_absl::MaxSplits('/', 2));
@@ -344,17 +450,17 @@ grpc_error_handle RoutePathMatchParse(
// Path not in the required format of /service/method will never match
// anything, so ignore this route.
*ignore_route = true;
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
} else if (path_elements[0].empty()) {
// Path contains empty service name will never match anything, so ignore
// this route.
*ignore_route = true;
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
} else if (path_elements[1].empty()) {
// Path contains empty method name will never match anything, so ignore
// this route.
*ignore_route = true;
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
type = StringMatcher::Type::kExact;
match_string = TString(path);
@@ -366,20 +472,20 @@ grpc_error_handle RoutePathMatchParse(
match_string = UpbStringToStdString(
envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher));
} else {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"Invalid route path specifier specified.");
}
y_absl::StatusOr<StringMatcher> string_matcher =
StringMatcher::Create(type, match_string, case_sensitive);
if (!string_matcher.ok()) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ return y_absl::InvalidArgumentError(
y_absl::StrCat("path matcher: ", string_matcher.status().message()));
}
route->matchers.path_matcher = std::move(string_matcher.value());
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
-grpc_error_handle RouteHeaderMatchersParse(
+y_absl::Status RouteHeaderMatchersParse(
const envoy_config_route_v3_RouteMatch* match,
XdsRouteConfigResource::Route* route) {
size_t size;
@@ -428,7 +534,7 @@ grpc_error_handle RouteHeaderMatchersParse(
match_string = UpbStringToStdString(
envoy_config_route_v3_HeaderMatcher_contains_match(header));
} else {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"Invalid route header matcher specified.");
}
bool invert_match =
@@ -437,16 +543,16 @@ grpc_error_handle RouteHeaderMatchersParse(
HeaderMatcher::Create(name, type, match_string, range_start, range_end,
present_match, invert_match);
if (!header_matcher.ok()) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ return y_absl::InvalidArgumentError(
y_absl::StrCat("header matcher: ", header_matcher.status().message()));
}
route->matchers.header_matchers.emplace_back(
std::move(header_matcher.value()));
}
- return GRPC_ERROR_NONE;
+ return y_absl::OkStatus();
}
-grpc_error_handle RouteRuntimeFractionParse(
+y_absl::Status RouteRuntimeFractionParse(
const envoy_config_route_v3_RouteMatch* match,
XdsRouteConfigResource::Route* route) {
const envoy_config_core_v3_RuntimeFractionalPercent* runtime_fraction =
@@ -471,8 +577,7 @@ grpc_error_handle RouteRuntimeFractionParse(
case envoy_type_v3_FractionalPercent_MILLION:
break;
default:
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Unknown denominator type");
+ return y_absl::InvalidArgumentError("Unknown denominator type");
}
route->matchers.fraction_per_million = numerator;
}
@@ -481,26 +586,27 @@ grpc_error_handle RouteRuntimeFractionParse(
}
template <typename ParentType, typename EntryType>
-grpc_error_handle ParseTypedPerFilterConfig(
- const XdsEncodingContext& context, const ParentType* parent,
+y_absl::StatusOr<XdsRouteConfigResource::TypedPerFilterConfig>
+ParseTypedPerFilterConfig(
+ const XdsResourceType::DecodeContext& context, const ParentType* parent,
const EntryType* (*entry_func)(const ParentType*, size_t*),
upb_StringView (*key_func)(const EntryType*),
- const google_protobuf_Any* (*value_func)(const EntryType*),
- XdsRouteConfigResource::TypedPerFilterConfig* typed_per_filter_config) {
+ const google_protobuf_Any* (*value_func)(const EntryType*)) {
+ XdsRouteConfigResource::TypedPerFilterConfig typed_per_filter_config;
size_t filter_it = kUpb_Map_Begin;
while (true) {
const auto* filter_entry = entry_func(parent, &filter_it);
if (filter_entry == nullptr) break;
y_absl::string_view key = UpbStringToAbsl(key_func(filter_entry));
if (key.empty()) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("empty filter name in map");
+ return y_absl::InvalidArgumentError("empty filter name in map");
}
const google_protobuf_Any* any = value_func(filter_entry);
GPR_ASSERT(any != nullptr);
y_absl::string_view filter_type =
UpbStringToAbsl(google_protobuf_Any_type_url(any));
if (filter_type.empty()) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ return y_absl::InvalidArgumentError(
y_absl::StrCat("no filter config specified for filter name ", key));
}
bool is_optional = false;
@@ -510,7 +616,7 @@ grpc_error_handle ParseTypedPerFilterConfig(
const auto* filter_config = envoy_config_route_v3_FilterConfig_parse(
any_value.data, any_value.size, context.arena);
if (filter_config == nullptr) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ return y_absl::InvalidArgumentError(
y_absl::StrCat("could not parse FilterConfig wrapper for ", key));
}
is_optional =
@@ -518,38 +624,37 @@ grpc_error_handle ParseTypedPerFilterConfig(
any = envoy_config_route_v3_FilterConfig_config(filter_config);
if (any == nullptr) {
if (is_optional) continue;
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ return y_absl::InvalidArgumentError(
y_absl::StrCat("no filter config specified for filter name ", key));
}
}
- grpc_error_handle error =
- ExtractHttpFilterTypeName(context, any, &filter_type);
- if (error != GRPC_ERROR_NONE) return error;
+ auto type = ExtractExtensionTypeName(context, any);
+ if (!type.ok()) return type.status();
const XdsHttpFilterImpl* filter_impl =
- XdsHttpFilterRegistry::GetFilterForType(filter_type);
+ XdsHttpFilterRegistry::GetFilterForType(type->type);
if (filter_impl == nullptr) {
if (is_optional) continue;
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("no filter registered for config type ", filter_type));
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("no filter registered for config type ", type->type));
}
y_absl::StatusOr<XdsHttpFilterImpl::FilterConfig> filter_config =
filter_impl->GenerateFilterConfigOverride(
google_protobuf_Any_value(any), context.arena);
if (!filter_config.ok()) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "filter config for type ", filter_type,
- " failed to parse: ", StatusToString(filter_config.status())));
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("filter config for type ", type->type,
+ " failed to parse: ", filter_config.status().message()));
}
- (*typed_per_filter_config)[TString(key)] = std::move(*filter_config);
+ typed_per_filter_config[TString(key)] = std::move(*filter_config);
}
- return GRPC_ERROR_NONE;
+ return typed_per_filter_config;
}
-grpc_error_handle RetryPolicyParse(
- const XdsEncodingContext& context,
+y_absl::Status RetryPolicyParse(
+ const XdsResourceType::DecodeContext& context,
const envoy_config_route_v3_RetryPolicy* retry_policy,
y_absl::optional<XdsRouteConfigResource::RetryPolicy>* retry) {
- std::vector<grpc_error_handle> errors;
+ std::vector<TString> errors;
XdsRouteConfigResource::RetryPolicy retry_to_return;
auto retry_on = UpbStringToStdString(
envoy_config_route_v3_RetryPolicy_retry_on(retry_policy));
@@ -577,8 +682,8 @@ grpc_error_handle RetryPolicyParse(
if (num_retries != nullptr) {
uint32_t num_retries_value = google_protobuf_UInt32Value_value(num_retries);
if (num_retries_value == 0) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "RouteAction RetryPolicy num_retries set to invalid value 0."));
+ errors.emplace_back(
+ "RouteAction RetryPolicy num_retries set to invalid value 0.");
} else {
retry_to_return.num_retries = num_retries_value;
}
@@ -591,8 +696,8 @@ grpc_error_handle RetryPolicyParse(
const google_protobuf_Duration* base_interval =
envoy_config_route_v3_RetryPolicy_RetryBackOff_base_interval(backoff);
if (base_interval == nullptr) {
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "RouteAction RetryPolicy RetryBackoff missing base interval."));
+ errors.emplace_back(
+ "RouteAction RetryPolicy RetryBackoff missing base interval.");
} else {
retry_to_return.retry_back_off.base_interval =
ParseDuration(base_interval);
@@ -611,31 +716,39 @@ grpc_error_handle RetryPolicyParse(
retry_to_return.retry_back_off.base_interval = Duration::Milliseconds(25);
retry_to_return.retry_back_off.max_interval = Duration::Milliseconds(250);
}
- if (errors.empty()) {
- *retry = retry_to_return;
- return GRPC_ERROR_NONE;
- } else {
- return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing retry policy",
- &errors);
+ // Return result.
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "Errors parsing retry policy: [", y_absl::StrJoin(errors, "; "), "]"));
}
+ *retry = retry_to_return;
+ return y_absl::OkStatus();
}
-grpc_error_handle RouteActionParse(
- const XdsEncodingContext& context,
+y_absl::StatusOr<XdsRouteConfigResource::Route::RouteAction> RouteActionParse(
+ const XdsResourceType::DecodeContext& context,
const envoy_config_route_v3_Route* route_msg,
- XdsRouteConfigResource::Route::RouteAction* route, bool* ignore_route) {
+ const std::map<TString /*cluster_specifier_plugin_name*/,
+ TString /*LB policy config*/>&
+ cluster_specifier_plugin_map,
+ bool* ignore_route) {
+ XdsRouteConfigResource::Route::RouteAction route;
const envoy_config_route_v3_RouteAction* route_action =
envoy_config_route_v3_Route_route(route_msg);
// Get the cluster or weighted_clusters in the RouteAction.
if (envoy_config_route_v3_RouteAction_has_cluster(route_action)) {
- route->cluster_name = UpbStringToStdString(
+ TString cluster_name = UpbStringToStdString(
envoy_config_route_v3_RouteAction_cluster(route_action));
- if (route->cluster_name.empty()) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ if (cluster_name.empty()) {
+ return y_absl::InvalidArgumentError(
"RouteAction cluster contains empty cluster name.");
}
+ route.action = XdsRouteConfigResource::Route::RouteAction::ClusterName{
+ std::move(cluster_name)};
} else if (envoy_config_route_v3_RouteAction_has_weighted_clusters(
route_action)) {
+ std::vector<XdsRouteConfigResource::Route::RouteAction::ClusterWeight>
+ action_weighted_clusters;
const envoy_config_route_v3_WeightedCluster* weighted_cluster =
envoy_config_route_v3_RouteAction_weighted_clusters(route_action);
uint32_t total_weight = 100;
@@ -657,7 +770,7 @@ grpc_error_handle RouteActionParse(
envoy_config_route_v3_WeightedCluster_ClusterWeight_name(
cluster_weight));
if (cluster.name.empty()) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"RouteAction weighted_cluster cluster contains empty cluster "
"name.");
}
@@ -665,35 +778,60 @@ grpc_error_handle RouteActionParse(
envoy_config_route_v3_WeightedCluster_ClusterWeight_weight(
cluster_weight);
if (weight == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"RouteAction weighted_cluster cluster missing weight");
}
cluster.weight = google_protobuf_UInt32Value_value(weight);
if (cluster.weight == 0) continue;
sum_of_weights += cluster.weight;
- if (context.use_v3) {
- grpc_error_handle error = ParseTypedPerFilterConfig<
+ if (context.server.ShouldUseV3()) {
+ auto typed_per_filter_config = ParseTypedPerFilterConfig<
envoy_config_route_v3_WeightedCluster_ClusterWeight,
envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry>(
context, cluster_weight,
envoy_config_route_v3_WeightedCluster_ClusterWeight_typed_per_filter_config_next,
envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_key,
- envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_value,
- &cluster.typed_per_filter_config);
- if (error != GRPC_ERROR_NONE) return error;
+ envoy_config_route_v3_WeightedCluster_ClusterWeight_TypedPerFilterConfigEntry_value);
+ if (!typed_per_filter_config.ok()) {
+ return typed_per_filter_config.status();
+ }
+ cluster.typed_per_filter_config = std::move(*typed_per_filter_config);
}
- route->weighted_clusters.emplace_back(std::move(cluster));
+ action_weighted_clusters.emplace_back(std::move(cluster));
}
if (total_weight != sum_of_weights) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"RouteAction weighted_cluster has incorrect total weight");
}
- if (route->weighted_clusters.empty()) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ if (action_weighted_clusters.empty()) {
+ return y_absl::InvalidArgumentError(
"RouteAction weighted_cluster has no valid clusters specified.");
}
+ route.action = std::move(action_weighted_clusters);
+ } else if (XdsRlsEnabled() &&
+ envoy_config_route_v3_RouteAction_has_cluster_specifier_plugin(
+ route_action)) {
+ TString plugin_name = UpbStringToStdString(
+ envoy_config_route_v3_RouteAction_cluster_specifier_plugin(
+ route_action));
+ if (plugin_name.empty()) {
+ return y_absl::InvalidArgumentError(
+ "RouteAction cluster contains empty cluster specifier plugin name.");
+ }
+ auto it = cluster_specifier_plugin_map.find(plugin_name);
+ if (it == cluster_specifier_plugin_map.end()) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("RouteAction cluster contains cluster specifier plugin "
+ "name not configured: ",
+ plugin_name));
+ }
+ if (it->second.empty()) *ignore_route = true;
+ route.action =
+ XdsRouteConfigResource::Route::RouteAction::ClusterSpecifierPluginName{
+ std::move(plugin_name)};
} else {
- // No cluster or weighted_clusters found in RouteAction, ignore this route.
+ // No cluster or weighted_clusters or plugin found in RouteAction, ignore
+ // this route.
*ignore_route = true;
}
if (!*ignore_route) {
@@ -710,7 +848,7 @@ grpc_error_handle RouteActionParse(
max_stream_duration);
}
if (duration != nullptr) {
- route->max_stream_duration = ParseDuration(duration);
+ route.max_stream_duration = ParseDuration(duration);
}
}
}
@@ -788,35 +926,45 @@ grpc_error_handle RouteActionParse(
"RouteAction HashPolicy contains unsupported policy specifier.");
continue;
}
- route->hash_policies.emplace_back(std::move(policy));
+ route.hash_policies.emplace_back(std::move(policy));
}
// Get retry policy
const envoy_config_route_v3_RetryPolicy* retry_policy =
envoy_config_route_v3_RouteAction_retry_policy(route_action);
if (retry_policy != nullptr) {
y_absl::optional<XdsRouteConfigResource::RetryPolicy> retry;
- grpc_error_handle error = RetryPolicyParse(context, retry_policy, &retry);
- if (error != GRPC_ERROR_NONE) return error;
- route->retry_policy = retry;
+ y_absl::Status status = RetryPolicyParse(context, retry_policy, &retry);
+ if (!status.ok()) return status;
+ route.retry_policy = retry;
}
- return GRPC_ERROR_NONE;
+ return route;
}
} // namespace
-grpc_error_handle XdsRouteConfigResource::Parse(
- const XdsEncodingContext& context,
- const envoy_config_route_v3_RouteConfiguration* route_config,
- XdsRouteConfigResource* rds_update) {
+y_absl::StatusOr<XdsRouteConfigResource> XdsRouteConfigResource::Parse(
+ const XdsResourceType::DecodeContext& context,
+ const envoy_config_route_v3_RouteConfiguration* route_config) {
+ XdsRouteConfigResource rds_update;
+ // Get the cluster spcifier plugins
+ if (XdsRlsEnabled()) {
+ auto cluster_specifier_plugin_map =
+ ClusterSpecifierPluginParse(context, route_config);
+ if (!cluster_specifier_plugin_map.ok()) {
+ return cluster_specifier_plugin_map.status();
+ }
+ rds_update.cluster_specifier_plugin_map =
+ std::move(*cluster_specifier_plugin_map);
+ }
// Get the virtual hosts.
size_t num_virtual_hosts;
const envoy_config_route_v3_VirtualHost* const* virtual_hosts =
envoy_config_route_v3_RouteConfiguration_virtual_hosts(
route_config, &num_virtual_hosts);
for (size_t i = 0; i < num_virtual_hosts; ++i) {
- rds_update->virtual_hosts.emplace_back();
+ rds_update.virtual_hosts.emplace_back();
XdsRouteConfigResource::VirtualHost& vhost =
- rds_update->virtual_hosts.back();
+ rds_update.virtual_hosts.back();
// Parse domains.
size_t domain_size;
upb_StringView const* domains = envoy_config_route_v3_VirtualHost_domains(
@@ -824,25 +972,27 @@ grpc_error_handle XdsRouteConfigResource::Parse(
for (size_t j = 0; j < domain_size; ++j) {
TString domain_pattern = UpbStringToStdString(domains[j]);
if (!XdsRouting::IsValidDomainPattern(domain_pattern)) {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ return y_absl::InvalidArgumentError(
y_absl::StrCat("Invalid domain pattern \"", domain_pattern, "\"."));
}
vhost.domains.emplace_back(std::move(domain_pattern));
}
if (vhost.domains.empty()) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("VirtualHost has no domains");
+ return y_absl::InvalidArgumentError("VirtualHost has no domains");
}
// Parse typed_per_filter_config.
- if (context.use_v3) {
- grpc_error_handle error = ParseTypedPerFilterConfig<
+ if (context.server.ShouldUseV3()) {
+ auto typed_per_filter_config = ParseTypedPerFilterConfig<
envoy_config_route_v3_VirtualHost,
envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry>(
context, virtual_hosts[i],
envoy_config_route_v3_VirtualHost_typed_per_filter_config_next,
envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_key,
- envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_value,
- &vhost.typed_per_filter_config);
- if (error != GRPC_ERROR_NONE) return error;
+ envoy_config_route_v3_VirtualHost_TypedPerFilterConfigEntry_value);
+ if (!typed_per_filter_config.ok()) {
+ return typed_per_filter_config.status();
+ }
+ vhost.typed_per_filter_config = std::move(*typed_per_filter_config);
}
// Parse retry policy.
y_absl::optional<XdsRouteConfigResource::RetryPolicy>
@@ -850,24 +1000,29 @@ grpc_error_handle XdsRouteConfigResource::Parse(
const envoy_config_route_v3_RetryPolicy* retry_policy =
envoy_config_route_v3_VirtualHost_retry_policy(virtual_hosts[i]);
if (retry_policy != nullptr) {
- grpc_error_handle error =
+ y_absl::Status status =
RetryPolicyParse(context, retry_policy, &virtual_host_retry_policy);
- if (error != GRPC_ERROR_NONE) return error;
+ if (!status.ok()) return status;
}
// Parse routes.
size_t num_routes;
const envoy_config_route_v3_Route* const* routes =
envoy_config_route_v3_VirtualHost_routes(virtual_hosts[i], &num_routes);
if (num_routes < 1) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "No route found in the virtual host.");
+ return y_absl::InvalidArgumentError("No route found in the virtual host.");
+ }
+ // Build a set of cluster_specifier_plugin configured to make sure each is
+ // actually referenced by a route action.
+ std::set<y_absl::string_view> cluster_specifier_plugins;
+ for (auto& plugin : rds_update.cluster_specifier_plugin_map) {
+ cluster_specifier_plugins.emplace(plugin.first);
}
// Loop over the whole list of routes
for (size_t j = 0; j < num_routes; ++j) {
const envoy_config_route_v3_RouteMatch* match =
envoy_config_route_v3_Route_match(routes[j]);
if (match == nullptr) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Match can't be null.");
+ return y_absl::InvalidArgumentError("Match can't be null.");
}
size_t query_parameters_size;
static_cast<void>(envoy_config_route_v3_RouteMatch_query_parameters(
@@ -877,49 +1032,63 @@ grpc_error_handle XdsRouteConfigResource::Parse(
}
XdsRouteConfigResource::Route route;
bool ignore_route = false;
- grpc_error_handle error =
- RoutePathMatchParse(match, &route, &ignore_route);
- if (error != GRPC_ERROR_NONE) return error;
+ y_absl::Status status = RoutePathMatchParse(match, &route, &ignore_route);
+ if (!status.ok()) return status;
if (ignore_route) continue;
- error = RouteHeaderMatchersParse(match, &route);
- if (error != GRPC_ERROR_NONE) return error;
- error = RouteRuntimeFractionParse(match, &route);
- if (error != GRPC_ERROR_NONE) return error;
+ status = RouteHeaderMatchersParse(match, &route);
+ if (!status.ok()) return status;
+ status = RouteRuntimeFractionParse(match, &route);
+ if (!status.ok()) return status;
if (envoy_config_route_v3_Route_has_route(routes[j])) {
route.action.emplace<XdsRouteConfigResource::Route::RouteAction>();
- auto& route_action =
- y_absl::get<XdsRouteConfigResource::Route::RouteAction>(route.action);
- error =
- RouteActionParse(context, routes[j], &route_action, &ignore_route);
- if (error != GRPC_ERROR_NONE) return error;
+ auto route_action = RouteActionParse(
+ context, routes[j], rds_update.cluster_specifier_plugin_map,
+ &ignore_route);
+ if (!route_action.ok()) return route_action.status();
if (ignore_route) continue;
- if (route_action.retry_policy == y_absl::nullopt &&
+ if (route_action->retry_policy == y_absl::nullopt &&
retry_policy != nullptr) {
- route_action.retry_policy = virtual_host_retry_policy;
+ route_action->retry_policy = virtual_host_retry_policy;
+ }
+ // Mark off plugins used in route action.
+ auto* cluster_specifier_action =
+ y_absl::get_if<XdsRouteConfigResource::Route::RouteAction::
+ ClusterSpecifierPluginName>(&route_action->action);
+ if (cluster_specifier_action != nullptr) {
+ cluster_specifier_plugins.erase(
+ cluster_specifier_action->cluster_specifier_plugin_name);
}
+ route.action = std::move(*route_action);
} else if (envoy_config_route_v3_Route_has_non_forwarding_action(
routes[j])) {
route.action
.emplace<XdsRouteConfigResource::Route::NonForwardingAction>();
}
- if (context.use_v3) {
- grpc_error_handle error = ParseTypedPerFilterConfig<
+ if (context.server.ShouldUseV3()) {
+ auto typed_per_filter_config = ParseTypedPerFilterConfig<
envoy_config_route_v3_Route,
envoy_config_route_v3_Route_TypedPerFilterConfigEntry>(
context, routes[j],
envoy_config_route_v3_Route_typed_per_filter_config_next,
envoy_config_route_v3_Route_TypedPerFilterConfigEntry_key,
- envoy_config_route_v3_Route_TypedPerFilterConfigEntry_value,
- &route.typed_per_filter_config);
- if (error != GRPC_ERROR_NONE) return error;
+ envoy_config_route_v3_Route_TypedPerFilterConfigEntry_value);
+ if (!typed_per_filter_config.ok()) {
+ return typed_per_filter_config.status();
+ }
+ route.typed_per_filter_config = std::move(*typed_per_filter_config);
}
vhost.routes.emplace_back(std::move(route));
}
if (vhost.routes.empty()) {
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("No valid routes specified.");
+ return y_absl::InvalidArgumentError("No valid routes specified.");
+ }
+ // For plugins not used in route action, delete from the update to prevent
+ // further use.
+ for (auto& unused_plugin : cluster_specifier_plugins) {
+ rds_update.cluster_specifier_plugin_map.erase(TString(unused_plugin));
}
}
- return GRPC_ERROR_NONE;
+ return rds_update;
}
//
@@ -929,7 +1098,7 @@ grpc_error_handle XdsRouteConfigResource::Parse(
namespace {
void MaybeLogRouteConfiguration(
- const XdsEncodingContext& context,
+ const XdsResourceType::DecodeContext& context,
const envoy_config_route_v3_RouteConfiguration* route_config) {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
@@ -944,42 +1113,41 @@ void MaybeLogRouteConfiguration(
} // namespace
-y_absl::StatusOr<XdsResourceType::DecodeResult>
-XdsRouteConfigResourceType::Decode(const XdsEncodingContext& context,
- y_absl::string_view serialized_resource,
- bool /*is_v2*/) const {
+XdsResourceType::DecodeResult XdsRouteConfigResourceType::Decode(
+ const XdsResourceType::DecodeContext& context,
+ y_absl::string_view serialized_resource, bool /*is_v2*/) const {
+ DecodeResult result;
// Parse serialized proto.
auto* resource = envoy_config_route_v3_RouteConfiguration_parse(
serialized_resource.data(), serialized_resource.size(), context.arena);
if (resource == nullptr) {
- return y_absl::InvalidArgumentError(
- "Can't parse RouteConfiguration resource.");
+ result.resource =
+ y_absl::InvalidArgumentError("Can't parse RouteConfiguration resource.");
+ return result;
}
MaybeLogRouteConfiguration(context, resource);
// Validate resource.
- DecodeResult result;
result.name = UpbStringToStdString(
envoy_config_route_v3_RouteConfiguration_name(resource));
- auto route_config_data = y_absl::make_unique<ResourceDataSubclass>();
- grpc_error_handle error = XdsRouteConfigResource::Parse(
- context, resource, &route_config_data->resource);
- if (error != GRPC_ERROR_NONE) {
- TString error_str = grpc_error_std_string(error);
- GRPC_ERROR_UNREF(error);
+ auto rds_update = XdsRouteConfigResource::Parse(context, resource);
+ if (!rds_update.ok()) {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
gpr_log(GPR_ERROR, "[xds_client %p] invalid RouteConfiguration %s: %s",
- context.client, result.name.c_str(), error_str.c_str());
+ context.client, result.name->c_str(),
+ rds_update.status().ToString().c_str());
}
- result.resource = y_absl::InvalidArgumentError(error_str);
+ result.resource = rds_update.status();
} else {
if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
gpr_log(GPR_INFO, "[xds_client %p] parsed RouteConfiguration %s: %s",
- context.client, result.name.c_str(),
- route_config_data->resource.ToString().c_str());
+ context.client, result.name->c_str(),
+ rds_update->ToString().c_str());
}
- result.resource = std::move(route_config_data);
+ auto resource = y_absl::make_unique<ResourceDataSubclass>();
+ resource->resource = std::move(*rds_update);
+ result.resource = std::move(resource);
}
- return std::move(result);
+ return result;
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_route_config.h b/contrib/libs/grpc/src/core/ext/xds/xds_route_config.h
index 275ea6231b..237177988f 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_route_config.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_route_config.h
@@ -19,22 +19,30 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
+#include <algorithm>
#include <map>
+#include <memory>
#include <util/generic/string.h>
#include <util/string/cast.h>
#include <vector>
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/types/optional.h"
#include "y_absl/types/variant.h"
#include "envoy/config/route/v3/route.upb.h"
#include "envoy/config/route/v3/route.upbdefs.h"
#include "re2/re2.h"
+#include "upb/def.h"
-#include "src/core/ext/xds/xds_client.h"
-#include "src/core/ext/xds/xds_common_types.h"
+#include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
#include "src/core/ext/xds/xds_http_filters.h"
+#include "src/core/ext/xds/xds_resource_type.h"
#include "src/core/ext/xds/xds_resource_type_impl.h"
#include "src/core/lib/channel/status_util.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/matchers/matchers.h"
namespace grpc_core {
@@ -45,6 +53,10 @@ struct XdsRouteConfigResource {
using TypedPerFilterConfig =
std::map<TString, XdsHttpFilterImpl::FilterConfig>;
+ using ClusterSpecifierPluginMap =
+ std::map<TString /*cluster_specifier_plugin_name*/,
+ TString /*LB policy config*/>;
+
struct RetryPolicy {
internal::StatusCodeSet retry_on;
uint32_t num_retries;
@@ -68,8 +80,6 @@ struct XdsRouteConfigResource {
TString ToString() const;
};
- // TODO(donnadionne): When we can use y_absl::variant<>, consider using that
- // for: PathMatcher, HeaderMatcher, cluster_name and weighted_clusters
struct Route {
// Matchers for this route.
struct Matchers {
@@ -115,6 +125,14 @@ struct XdsRouteConfigResource {
TString ToString() const;
};
+ struct ClusterName {
+ TString cluster_name;
+
+ bool operator==(const ClusterName& other) const {
+ return cluster_name == other.cluster_name;
+ }
+ };
+
struct ClusterWeight {
TString name;
uint32_t weight;
@@ -127,14 +145,22 @@ struct XdsRouteConfigResource {
TString ToString() const;
};
+ struct ClusterSpecifierPluginName {
+ TString cluster_specifier_plugin_name;
+
+ bool operator==(const ClusterSpecifierPluginName& other) const {
+ return cluster_specifier_plugin_name ==
+ other.cluster_specifier_plugin_name;
+ }
+ };
+
std::vector<HashPolicy> hash_policies;
y_absl::optional<RetryPolicy> retry_policy;
// Action for this route.
- // TODO(roth): When we can use y_absl::variant<>, consider using that
- // here, to enforce the fact that only one of the two fields can be set.
- TString cluster_name;
- std::vector<ClusterWeight> weighted_clusters;
+ y_absl::variant<ClusterName, std::vector<ClusterWeight>,
+ ClusterSpecifierPluginName>
+ action;
// Storing the timeout duration from route action:
// RouteAction.max_stream_duration.grpc_timeout_header_max or
// RouteAction.max_stream_duration.max_stream_duration if the former is
@@ -143,9 +169,7 @@ struct XdsRouteConfigResource {
bool operator==(const RouteAction& other) const {
return hash_policies == other.hash_policies &&
- retry_policy == other.retry_policy &&
- cluster_name == other.cluster_name &&
- weighted_clusters == other.weighted_clusters &&
+ retry_policy == other.retry_policy && action == other.action &&
max_stream_duration == other.max_stream_duration;
}
TString ToString() const;
@@ -179,16 +203,17 @@ struct XdsRouteConfigResource {
};
std::vector<VirtualHost> virtual_hosts;
+ ClusterSpecifierPluginMap cluster_specifier_plugin_map;
bool operator==(const XdsRouteConfigResource& other) const {
- return virtual_hosts == other.virtual_hosts;
+ return virtual_hosts == other.virtual_hosts &&
+ cluster_specifier_plugin_map == other.cluster_specifier_plugin_map;
}
TString ToString() const;
- static grpc_error_handle Parse(
- const XdsEncodingContext& context,
- const envoy_config_route_v3_RouteConfiguration* route_config,
- XdsRouteConfigResource* rds_update);
+ static y_absl::StatusOr<XdsRouteConfigResource> Parse(
+ const XdsResourceType::DecodeContext& context,
+ const envoy_config_route_v3_RouteConfiguration* route_config);
};
class XdsRouteConfigResourceType
@@ -202,12 +227,13 @@ class XdsRouteConfigResourceType
return "envoy.api.v2.RouteConfiguration";
}
- y_absl::StatusOr<DecodeResult> Decode(const XdsEncodingContext& context,
- y_absl::string_view serialized_resource,
- bool /*is_v2*/) const override;
+ DecodeResult Decode(const XdsResourceType::DecodeContext& context,
+ y_absl::string_view serialized_resource,
+ bool /*is_v2*/) const override;
void InitUpbSymtab(upb_DefPool* symtab) const override {
envoy_config_route_v3_RouteConfiguration_getmsgdef(symtab);
+ XdsClusterSpecifierPluginRegistry::PopulateSymtab(symtab);
}
};
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_routing.cc b/contrib/libs/grpc/src/core/ext/xds/xds_routing.cc
index 582c345067..c6aaeae213 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_routing.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_routing.cc
@@ -20,7 +20,23 @@
#include "src/core/ext/xds/xds_routing.h"
+#include <stdint.h>
+#include <stdlib.h>
+
+#include <algorithm>
#include <cctype>
+#include <utility>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/match.h"
+#include "y_absl/strings/str_cat.h"
+
+#include <grpc/support/log.h>
+
+#include "src/core/ext/xds/xds_http_filters.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/matchers/matchers.h"
namespace grpc_core {
@@ -202,7 +218,7 @@ const XdsHttpFilterImpl::FilterConfig* FindFilterConfigOverride(
} // namespace
-XdsRouting::GeneratePerHttpFilterConfigsResult
+y_absl::StatusOr<XdsRouting::GeneratePerHttpFilterConfigsResult>
XdsRouting::GeneratePerHTTPFilterConfigs(
const std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>&
http_filters,
@@ -210,7 +226,7 @@ XdsRouting::GeneratePerHTTPFilterConfigs(
const XdsRouteConfigResource::Route& route,
const XdsRouteConfigResource::Route::RouteAction::ClusterWeight*
cluster_weight,
- grpc_channel_args* args) {
+ const ChannelArgs& args) {
GeneratePerHttpFilterConfigsResult result;
result.args = args;
for (const auto& http_filter : http_filters) {
@@ -234,12 +250,9 @@ XdsRouting::GeneratePerHTTPFilterConfigs(
auto method_config_field =
filter_impl->GenerateServiceConfig(http_filter.config, config_override);
if (!method_config_field.ok()) {
- grpc_channel_args_destroy(result.args);
- result.args = nullptr;
- result.error = GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
+ return y_absl::FailedPreconditionError(y_absl::StrCat(
"failed to generate method config for HTTP filter ", http_filter.name,
": ", method_config_field.status().ToString()));
- break;
}
result.per_filter_configs[method_config_field->service_config_field_name]
.push_back(method_config_field->element);
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_routing.h b/contrib/libs/grpc/src/core/ext/xds/xds_routing.h
index 21262eb1e0..59c7f5087f 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_routing.h
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_routing.h
@@ -21,15 +21,20 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include <vector>
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/string_view.h"
-
-#include <grpc/support/log.h>
+#include "y_absl/types/optional.h"
#include "src/core/ext/xds/xds_listener.h"
#include "src/core/ext/xds/xds_route_config.h"
-#include "src/core/lib/matchers/matchers.h"
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/transport/metadata_batch.h"
namespace grpc_core {
@@ -78,22 +83,21 @@ class XdsRouting {
TString* concatenated_value);
struct GeneratePerHttpFilterConfigsResult {
- // Map of field name to list of elements for that field
+ // Map of service config field name to list of elements for that field.
std::map<TString, std::vector<TString>> per_filter_configs;
- grpc_error_handle error = GRPC_ERROR_NONE;
- // Guaranteed to be nullptr if error is GRPC_ERROR_NONE
- grpc_channel_args* args = nullptr;
+ ChannelArgs args;
};
// Generates a map of per_filter_configs. \a args is consumed.
- static GeneratePerHttpFilterConfigsResult GeneratePerHTTPFilterConfigs(
+ static y_absl::StatusOr<GeneratePerHttpFilterConfigsResult>
+ GeneratePerHTTPFilterConfigs(
const std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>&
http_filters,
const XdsRouteConfigResource::VirtualHost& vhost,
const XdsRouteConfigResource::Route& route,
const XdsRouteConfigResource::Route::RouteAction::ClusterWeight*
cluster_weight,
- grpc_channel_args* args);
+ const ChannelArgs& args);
};
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_server_config_fetcher.cc b/contrib/libs/grpc/src/core/ext/xds/xds_server_config_fetcher.cc
index 914231a132..b2af19f1f1 100644
--- a/contrib/libs/grpc/src/core/ext/xds/xds_server_config_fetcher.cc
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_server_config_fetcher.cc
@@ -18,30 +18,78 @@
#include <grpc/support/port_platform.h>
+#include <string.h>
+
+#include <algorithm>
+#include <array>
+#include <map>
+#include <memory>
+#include <set>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/match.h"
+#include "y_absl/strings/numbers.h"
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_join.h"
#include "y_absl/strings/str_replace.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+#include "y_absl/types/variant.h"
+
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
+#include <grpc/status.h>
+#include <grpc/support/log.h>
#include "src/core/ext/filters/server_config_selector/server_config_selector.h"
#include "src/core/ext/filters/server_config_selector/server_config_selector_filter.h"
+#include "src/core/ext/xds/certificate_provider_store.h"
+#include "src/core/ext/xds/xds_bootstrap_grpc.h"
#include "src/core/ext/xds/xds_certificate_provider.h"
#include "src/core/ext/xds/xds_channel_stack_modifier.h"
-#include "src/core/ext/xds/xds_client.h"
+#include "src/core/ext/xds/xds_client_grpc.h"
+#include "src/core/ext/xds/xds_common_types.h"
+#include "src/core/ext/xds/xds_http_filters.h"
#include "src/core/ext/xds/xds_listener.h"
+#include "src/core/ext/xds/xds_resource_type_impl.h"
#include "src/core/ext/xds/xds_route_config.h"
#include "src/core/ext/xds/xds_routing.h"
#include "src/core/lib/address_utils/parse_address.h"
#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_args_preconditioning.h"
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/host_port.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/iomgr/resolved_address.h"
#include "src/core/lib/iomgr/sockaddr.h"
#include "src/core/lib/iomgr/socket_utils.h"
+#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
#include "src/core/lib/security/credentials/xds/xds_credentials.h"
+#include "src/core/lib/service_config/service_config.h"
#include "src/core/lib/service_config/service_config_impl.h"
-#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/server.h"
-#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/transport/metadata_batch.h"
#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
@@ -54,9 +102,13 @@ TraceFlag grpc_xds_server_config_fetcher_trace(false,
// listeners from the xDS control plane.
class XdsServerConfigFetcher : public grpc_server_config_fetcher {
public:
- XdsServerConfigFetcher(RefCountedPtr<XdsClient> xds_client,
+ XdsServerConfigFetcher(RefCountedPtr<GrpcXdsClient> xds_client,
grpc_server_xds_status_notifier notifier);
+ ~XdsServerConfigFetcher() override {
+ xds_client_.reset(DEBUG_LOCATION, "XdsServerConfigFetcher");
+ }
+
void StartWatch(TString listening_address,
std::unique_ptr<grpc_server_config_fetcher::WatcherInterface>
watcher) override;
@@ -72,7 +124,7 @@ class XdsServerConfigFetcher : public grpc_server_config_fetcher {
private:
class ListenerWatcher;
- const RefCountedPtr<XdsClient> xds_client_;
+ RefCountedPtr<GrpcXdsClient> xds_client_;
const grpc_server_xds_status_notifier serving_status_notifier_;
Mutex mu_;
std::map<grpc_server_config_fetcher::WatcherInterface*, ListenerWatcher*>
@@ -92,15 +144,19 @@ class XdsServerConfigFetcher : public grpc_server_config_fetcher {
class XdsServerConfigFetcher::ListenerWatcher
: public XdsListenerResourceType::WatcherInterface {
public:
- ListenerWatcher(RefCountedPtr<XdsClient> xds_client,
+ ListenerWatcher(RefCountedPtr<GrpcXdsClient> xds_client,
std::unique_ptr<grpc_server_config_fetcher::WatcherInterface>
server_config_watcher,
grpc_server_xds_status_notifier serving_status_notifier,
TString listening_address);
+ ~ListenerWatcher() override {
+ xds_client_.reset(DEBUG_LOCATION, "ListenerWatcher");
+ }
+
void OnResourceChanged(XdsListenerResource listener) override;
- void OnError(grpc_error_handle error) override;
+ void OnError(y_absl::Status status) override;
void OnResourceDoesNotExist() override;
@@ -124,7 +180,7 @@ class XdsServerConfigFetcher::ListenerWatcher
FilterChainMatchManager* filter_chain_match_manager)
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
- const RefCountedPtr<XdsClient> xds_client_;
+ RefCountedPtr<GrpcXdsClient> xds_client_;
const std::unique_ptr<grpc_server_config_fetcher::WatcherInterface>
server_config_watcher_;
const grpc_server_xds_status_notifier serving_status_notifier_;
@@ -144,13 +200,17 @@ class XdsServerConfigFetcher::ListenerWatcher
class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager
: public grpc_server_config_fetcher::ConnectionManager {
public:
- FilterChainMatchManager(RefCountedPtr<XdsClient> xds_client,
+ FilterChainMatchManager(RefCountedPtr<GrpcXdsClient> xds_client,
XdsListenerResource::FilterChainMap filter_chain_map,
y_absl::optional<XdsListenerResource::FilterChainData>
default_filter_chain);
- y_absl::StatusOr<grpc_channel_args*> UpdateChannelArgsForConnection(
- grpc_channel_args* args, grpc_endpoint* tcp) override;
+ ~FilterChainMatchManager() override {
+ xds_client_.reset(DEBUG_LOCATION, "FilterChainMatchManager");
+ }
+
+ y_absl::StatusOr<ChannelArgs> UpdateChannelArgsForConnection(
+ const ChannelArgs& args, grpc_endpoint* tcp) override;
void Orphan() override;
@@ -195,10 +255,10 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager
// RDS resources.
void OnRouteConfigChanged(const TString& resource_name,
XdsRouteConfigResource route_config);
- void OnError(const TString& resource_name, grpc_error_handle error);
+ void OnError(const TString& resource_name, y_absl::Status status);
void OnResourceDoesNotExist(const TString& resource_name);
- RefCountedPtr<XdsClient> xds_client_;
+ RefCountedPtr<GrpcXdsClient> xds_client_;
// This ref is only kept around till the FilterChainMatchManager becomes
// ready.
RefCountedPtr<ListenerWatcher> listener_watcher_;
@@ -233,8 +293,8 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
std::move(route_config));
}
- void OnError(grpc_error_handle error) override {
- filter_chain_match_manager_->OnError(resource_name_, error);
+ void OnError(y_absl::Status status) override {
+ filter_chain_match_manager_->OnError(resource_name_, status);
}
void OnResourceDoesNotExist() override {
@@ -354,11 +414,15 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
: public ServerConfigSelectorProvider {
public:
DynamicXdsServerConfigSelectorProvider(
- RefCountedPtr<XdsClient> xds_client, TString resource_name,
+ RefCountedPtr<GrpcXdsClient> xds_client, TString resource_name,
y_absl::StatusOr<XdsRouteConfigResource> initial_resource,
std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>
http_filters);
+ ~DynamicXdsServerConfigSelectorProvider() override {
+ xds_client_.reset(DEBUG_LOCATION, "DynamicXdsServerConfigSelectorProvider");
+ }
+
void Orphan() override;
y_absl::StatusOr<RefCountedPtr<ServerConfigSelector>> Watch(
@@ -370,10 +434,10 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
class RouteConfigWatcher;
void OnRouteConfigChanged(XdsRouteConfigResource rds_update);
- void OnError(grpc_error_handle error);
+ void OnError(y_absl::Status status);
void OnResourceDoesNotExist();
- RefCountedPtr<XdsClient> xds_client_;
+ RefCountedPtr<GrpcXdsClient> xds_client_;
TString resource_name_;
std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>
http_filters_;
@@ -398,7 +462,7 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
parent_->OnRouteConfigChanged(std::move(route_config));
}
- void OnError(grpc_error_handle error) override { parent_->OnError(error); }
+ void OnError(y_absl::Status status) override { parent_->OnError(status); }
void OnResourceDoesNotExist() override { parent_->OnResourceDoesNotExist(); }
@@ -411,7 +475,7 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
//
XdsServerConfigFetcher::XdsServerConfigFetcher(
- RefCountedPtr<XdsClient> xds_client,
+ RefCountedPtr<GrpcXdsClient> xds_client,
grpc_server_xds_status_notifier notifier)
: xds_client_(std::move(xds_client)), serving_status_notifier_(notifier) {
GPR_ASSERT(xds_client_ != nullptr);
@@ -433,13 +497,14 @@ void XdsServerConfigFetcher::StartWatch(
std::unique_ptr<grpc_server_config_fetcher::WatcherInterface> watcher) {
grpc_server_config_fetcher::WatcherInterface* watcher_ptr = watcher.get();
auto listener_watcher = MakeRefCounted<ListenerWatcher>(
- xds_client_, std::move(watcher), serving_status_notifier_,
- listening_address);
+ xds_client_->Ref(DEBUG_LOCATION, "ListenerWatcher"), std::move(watcher),
+ serving_status_notifier_, listening_address);
auto* listener_watcher_ptr = listener_watcher.get();
XdsListenerResourceType::StartWatch(
xds_client_.get(),
ListenerResourceName(
- xds_client_->bootstrap().server_listener_resource_name_template(),
+ static_cast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
+ .server_listener_resource_name_template(),
listening_address),
std::move(listener_watcher));
MutexLock lock(&mu_);
@@ -455,7 +520,8 @@ void XdsServerConfigFetcher::CancelWatch(
XdsListenerResourceType::CancelWatch(
xds_client_.get(),
ListenerResourceName(
- xds_client_->bootstrap().server_listener_resource_name_template(),
+ static_cast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
+ .server_listener_resource_name_template(),
it->second->listening_address()),
it->second, false /* delay_unsubscription */);
listener_watchers_.erase(it);
@@ -467,7 +533,7 @@ void XdsServerConfigFetcher::CancelWatch(
//
XdsServerConfigFetcher::ListenerWatcher::ListenerWatcher(
- RefCountedPtr<XdsClient> xds_client,
+ RefCountedPtr<GrpcXdsClient> xds_client,
std::unique_ptr<grpc_server_config_fetcher::WatcherInterface>
server_config_watcher,
grpc_server_xds_status_notifier serving_status_notifier,
@@ -491,7 +557,8 @@ void XdsServerConfigFetcher::ListenerWatcher::OnResourceChanged(
return;
}
auto new_filter_chain_match_manager = MakeRefCounted<FilterChainMatchManager>(
- xds_client_, std::move(listener.filter_chain_map),
+ xds_client_->Ref(DEBUG_LOCATION, "FilterChainMatchManager"),
+ std::move(listener.filter_chain_map),
std::move(listener.default_filter_chain));
MutexLock lock(&mu_);
if (filter_chain_match_manager_ == nullptr ||
@@ -510,29 +577,26 @@ void XdsServerConfigFetcher::ListenerWatcher::OnResourceChanged(
}
}
-void XdsServerConfigFetcher::ListenerWatcher::OnError(grpc_error_handle error) {
+void XdsServerConfigFetcher::ListenerWatcher::OnError(y_absl::Status status) {
MutexLock lock(&mu_);
if (filter_chain_match_manager_ != nullptr ||
pending_filter_chain_match_manager_ != nullptr) {
gpr_log(GPR_ERROR,
"ListenerWatcher:%p XdsClient reports error: %s for %s; "
"ignoring in favor of existing resource",
- this, grpc_error_std_string(error).c_str(),
- listening_address_.c_str());
+ this, status.ToString().c_str(), listening_address_.c_str());
} else {
if (serving_status_notifier_.on_serving_status_update != nullptr) {
serving_status_notifier_.on_serving_status_update(
serving_status_notifier_.user_data, listening_address_.c_str(),
- {GRPC_STATUS_UNAVAILABLE, grpc_error_std_string(error).c_str()});
+ {GRPC_STATUS_UNAVAILABLE, status.ToString().c_str()});
} else {
gpr_log(GPR_ERROR,
"ListenerWatcher:%p error obtaining xDS Listener resource: %s; "
"not serving on %s",
- this, grpc_error_std_string(error).c_str(),
- listening_address_.c_str());
+ this, status.ToString().c_str(), listening_address_.c_str());
}
}
- GRPC_ERROR_UNREF(error);
}
void XdsServerConfigFetcher::ListenerWatcher::OnFatalError(
@@ -597,7 +661,7 @@ void XdsServerConfigFetcher::ListenerWatcher::
XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
FilterChainMatchManager(
- RefCountedPtr<XdsClient> xds_client,
+ RefCountedPtr<GrpcXdsClient> xds_client,
XdsListenerResource::FilterChainMap filter_chain_map,
y_absl::optional<XdsListenerResource::FilterChainData>
default_filter_chain)
@@ -778,7 +842,7 @@ void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
}
void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::OnError(
- const TString& resource_name, grpc_error_handle error) {
+ const TString& resource_name, y_absl::Status status) {
RefCountedPtr<ListenerWatcher> listener_watcher;
{
MutexLock lock(&mu_);
@@ -787,11 +851,11 @@ void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::OnError(
if (--rds_resources_yet_to_fetch_ == 0) {
listener_watcher = std::move(listener_watcher_);
}
- state.rds_update = grpc_error_to_absl_status(error);
+ state.rds_update = status;
} else {
// Prefer existing good version over current errored version
if (!state.rds_update->ok()) {
- state.rds_update = grpc_error_to_absl_status(error);
+ state.rds_update = status;
}
}
}
@@ -800,7 +864,6 @@ void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::OnError(
if (listener_watcher != nullptr) {
listener_watcher->PendingFilterChainMatchManagerReady(this);
}
- GRPC_ERROR_UNREF(error);
}
void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
@@ -901,13 +964,10 @@ const XdsListenerResource::FilterChainData* FindFilterChainDataForSourceType(
if (!SplitHostPort(source_uri->path(), &host, &port)) {
return nullptr;
}
- grpc_resolved_address source_addr;
- grpc_error_handle error = grpc_string_to_sockaddr(
- &source_addr, host.c_str(), 0 /* port doesn't matter here */);
- if (error != GRPC_ERROR_NONE) {
- gpr_log(GPR_DEBUG, "Could not parse string to socket address: %s",
- host.c_str());
- GRPC_ERROR_UNREF(error);
+ auto source_addr = StringToSockaddr(host, 0); // Port doesn't matter here.
+ if (!source_addr.ok()) {
+ gpr_log(GPR_DEBUG, "Could not parse \"%s\" as socket address: %s",
+ host.c_str(), source_addr.status().ToString().c_str());
return nullptr;
}
// Use kAny only if kSameIporLoopback and kExternal are empty
@@ -921,20 +981,20 @@ const XdsListenerResource::FilterChainData* FindFilterChainDataForSourceType(
return FindFilterChainDataForSourceIp(
source_types_array[static_cast<int>(
XdsListenerResource::FilterChainMap::ConnectionSourceType::kAny)],
- &source_addr, port);
+ &*source_addr, port);
}
- if (IsLoopbackIp(&source_addr) || host == destination_ip) {
+ if (IsLoopbackIp(&*source_addr) || host == destination_ip) {
return FindFilterChainDataForSourceIp(
source_types_array[static_cast<int>(
XdsListenerResource::FilterChainMap::ConnectionSourceType::
kSameIpOrLoopback)],
- &source_addr, port);
+ &*source_addr, port);
} else {
return FindFilterChainDataForSourceIp(
source_types_array[static_cast<int>(
XdsListenerResource::FilterChainMap::ConnectionSourceType::
kExternal)],
- &source_addr, port);
+ &*source_addr, port);
}
}
@@ -952,13 +1012,11 @@ const XdsListenerResource::FilterChainData* FindFilterChainDataForDestinationIp(
if (!SplitHostPort(destination_uri->path(), &host, &port)) {
return nullptr;
}
- grpc_resolved_address destination_addr;
- grpc_error_handle error = grpc_string_to_sockaddr(
- &destination_addr, host.c_str(), 0 /* port doesn't matter here */);
- if (error != GRPC_ERROR_NONE) {
- gpr_log(GPR_DEBUG, "Could not parse string to socket address: %s",
- host.c_str());
- GRPC_ERROR_UNREF(error);
+ auto destination_addr =
+ StringToSockaddr(host, 0); // Port doesn't matter here.
+ if (!destination_addr.ok()) {
+ gpr_log(GPR_DEBUG, "Could not parse \"%s\" as socket address: %s",
+ host.c_str(), destination_addr.status().ToString().c_str());
return nullptr;
}
const XdsListenerResource::FilterChainMap::DestinationIp* best_match =
@@ -976,7 +1034,7 @@ const XdsListenerResource::FilterChainData* FindFilterChainDataForDestinationIp(
entry.prefix_range->prefix_len) {
continue;
}
- if (grpc_sockaddr_match_subnet(&destination_addr,
+ if (grpc_sockaddr_match_subnet(&*destination_addr,
&entry.prefix_range->address,
entry.prefix_range->prefix_len)) {
best_match = &entry;
@@ -987,19 +1045,18 @@ const XdsListenerResource::FilterChainData* FindFilterChainDataForDestinationIp(
host);
}
-y_absl::StatusOr<grpc_channel_args*> XdsServerConfigFetcher::ListenerWatcher::
+y_absl::StatusOr<ChannelArgs> XdsServerConfigFetcher::ListenerWatcher::
FilterChainMatchManager::UpdateChannelArgsForConnection(
- grpc_channel_args* args, grpc_endpoint* tcp) {
+ const ChannelArgs& input_args, grpc_endpoint* tcp) {
+ ChannelArgs args = input_args;
const auto* filter_chain = FindFilterChainDataForDestinationIp(
filter_chain_map_.destination_ip_vector, tcp);
if (filter_chain == nullptr && default_filter_chain_.has_value()) {
filter_chain = &default_filter_chain_.value();
}
if (filter_chain == nullptr) {
- grpc_channel_args_destroy(args);
return y_absl::UnavailableError("No matching filter chain found");
}
- y_absl::InlinedVector<grpc_arg, 3> args_to_add;
RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider;
RefCountedPtr<XdsChannelStackModifier> channel_stack_modifier;
RefCountedPtr<XdsCertificateProvider> xds_certificate_provider;
@@ -1040,33 +1097,27 @@ y_absl::StatusOr<grpc_channel_args*> XdsServerConfigFetcher::ListenerWatcher::
}
server_config_selector_provider =
MakeRefCounted<DynamicXdsServerConfigSelectorProvider>(
- xds_client_,
+ xds_client_->Ref(DEBUG_LOCATION,
+ "DynamicXdsServerConfigSelectorProvider"),
filter_chain->http_connection_manager.route_config_name,
std::move(initial_resource),
filter_chain->http_connection_manager.http_filters);
}
- args_to_add.emplace_back(server_config_selector_provider->MakeChannelArg());
- args_to_add.emplace_back(channel_stack_modifier->MakeChannelArg());
+ args = args.SetObject(server_config_selector_provider)
+ .SetObject(channel_stack_modifier);
}
// Add XdsCertificateProvider if credentials are xDS.
- grpc_server_credentials* server_creds =
- grpc_find_server_credentials_in_args(args);
- if (server_creds != nullptr && server_creds->type() == kCredentialsTypeXds) {
+ auto* server_creds = args.GetObject<grpc_server_credentials>();
+ if (server_creds != nullptr &&
+ server_creds->type() == XdsServerCredentials::Type()) {
y_absl::StatusOr<RefCountedPtr<XdsCertificateProvider>> result =
CreateOrGetXdsCertificateProviderFromFilterChainData(filter_chain);
if (!result.ok()) {
- grpc_channel_args_destroy(args);
return result.status();
}
xds_certificate_provider = std::move(*result);
GPR_ASSERT(xds_certificate_provider != nullptr);
- args_to_add.emplace_back(xds_certificate_provider->MakeChannelArg());
- }
- if (!args_to_add.empty()) {
- grpc_channel_args* updated_args = grpc_channel_args_copy_and_add(
- args, args_to_add.data(), args_to_add.size());
- grpc_channel_args_destroy(args);
- args = updated_args;
+ args = args.SetObject(xds_certificate_provider);
}
return args;
}
@@ -1096,15 +1147,12 @@ XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
config_selector_route.unsupported_action =
y_absl::get_if<XdsRouteConfigResource::Route::NonForwardingAction>(
&route.action) == nullptr;
- XdsRouting::GeneratePerHttpFilterConfigsResult result =
- XdsRouting::GeneratePerHTTPFilterConfigs(http_filters, vhost, route,
- nullptr, nullptr);
- if (result.error != GRPC_ERROR_NONE) {
- return grpc_error_to_absl_status(result.error);
- }
+ auto result = XdsRouting::GeneratePerHTTPFilterConfigs(
+ http_filters, vhost, route, nullptr, ChannelArgs());
+ if (!result.ok()) return result.status();
std::vector<TString> fields;
- fields.reserve(result.per_filter_configs.size());
- for (const auto& p : result.per_filter_configs) {
+ fields.reserve(result->per_filter_configs.size());
+ for (const auto& p : result->per_filter_configs) {
fields.emplace_back(y_absl::StrCat(" \"", p.first, "\": [\n",
y_absl::StrJoin(p.second, ",\n"),
"\n ]"));
@@ -1120,12 +1168,9 @@ XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
y_absl::StrJoin(fields, ",\n"),
"\n } ]\n"
"}");
- grpc_error_handle error = GRPC_ERROR_NONE;
config_selector_route.method_config =
- ServiceConfigImpl::Create(result.args, json.c_str(), &error);
- GPR_ASSERT(error == GRPC_ERROR_NONE);
+ ServiceConfigImpl::Create(result->args, json.c_str()).value();
}
- grpc_channel_args_destroy(result.args);
}
}
return config_selector;
@@ -1191,7 +1236,7 @@ ServerConfigSelector::CallConfig XdsServerConfigFetcher::ListenerWatcher::
XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
DynamicXdsServerConfigSelectorProvider::
DynamicXdsServerConfigSelectorProvider(
- RefCountedPtr<XdsClient> xds_client, TString resource_name,
+ RefCountedPtr<GrpcXdsClient> xds_client, TString resource_name,
y_absl::StatusOr<XdsRouteConfigResource> initial_resource,
std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>
http_filters)
@@ -1258,15 +1303,13 @@ void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
}
void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
- DynamicXdsServerConfigSelectorProvider::OnError(grpc_error_handle error) {
+ DynamicXdsServerConfigSelectorProvider::OnError(y_absl::Status status) {
MutexLock lock(&mu_);
// Prefer existing good update.
if (resource_.ok()) {
- GRPC_ERROR_UNREF(error);
return;
}
- resource_ = grpc_error_to_absl_status(error);
- GRPC_ERROR_UNREF(error);
+ resource_ = status;
if (watcher_ == nullptr) {
return;
}
@@ -1290,24 +1333,22 @@ grpc_server_config_fetcher* grpc_server_config_fetcher_xds_create(
grpc_server_xds_status_notifier notifier, const grpc_channel_args* args) {
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
grpc_core::ExecCtx exec_ctx;
- args = grpc_core::CoreConfiguration::Get()
- .channel_args_preconditioning()
- .PreconditionChannelArgs(args);
+ grpc_core::ChannelArgs channel_args = grpc_core::CoreConfiguration::Get()
+ .channel_args_preconditioning()
+ .PreconditionChannelArgs(args);
GRPC_API_TRACE(
"grpc_server_config_fetcher_xds_create(notifier={on_serving_status_"
"update=%p, user_data=%p}, args=%p)",
3, (notifier.on_serving_status_update, notifier.user_data, args));
- grpc_error_handle error = GRPC_ERROR_NONE;
- grpc_core::RefCountedPtr<grpc_core::XdsClient> xds_client =
- grpc_core::XdsClient::GetOrCreate(args, &error);
- grpc_channel_args_destroy(args);
- if (error != GRPC_ERROR_NONE) {
+ auto xds_client = grpc_core::GrpcXdsClient::GetOrCreate(
+ channel_args, "XdsServerConfigFetcher");
+ if (!xds_client.ok()) {
gpr_log(GPR_ERROR, "Failed to create xds client: %s",
- grpc_error_std_string(error).c_str());
- GRPC_ERROR_UNREF(error);
+ xds_client.status().ToString().c_str());
return nullptr;
}
- if (xds_client->bootstrap()
+ if (static_cast<const grpc_core::GrpcXdsBootstrap&>(
+ (*xds_client)->bootstrap())
.server_listener_resource_name_template()
.empty()) {
gpr_log(GPR_ERROR,
@@ -1315,5 +1356,6 @@ grpc_server_config_fetcher* grpc_server_config_fetcher_xds_create(
"file.");
return nullptr;
}
- return new grpc_core::XdsServerConfigFetcher(std::move(xds_client), notifier);
+ return new grpc_core::XdsServerConfigFetcher(std::move(*xds_client),
+ notifier);
}
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_transport.h b/contrib/libs/grpc/src/core/ext/xds/xds_transport.h
new file mode 100644
index 0000000000..b71b14e441
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_transport.h
@@ -0,0 +1,87 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_EXT_XDS_XDS_TRANSPORT_H
+#define GRPC_CORE_EXT_XDS_XDS_TRANSPORT_H
+
+#include <grpc/support/port_platform.h>
+
+#include <functional>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/ext/xds/xds_bootstrap.h"
+#include "src/core/lib/gprpp/orphanable.h"
+
+namespace grpc_core {
+
+// A factory for creating new XdsTransport instances.
+class XdsTransportFactory : public InternallyRefCounted<XdsTransportFactory> {
+ public:
+ // Represents a transport for xDS communication (e.g., a gRPC channel).
+ class XdsTransport : public InternallyRefCounted<XdsTransport> {
+ public:
+ // Represents a bidi streaming RPC call.
+ class StreamingCall : public InternallyRefCounted<StreamingCall> {
+ public:
+ // An interface for handling events on a streaming call.
+ class EventHandler {
+ public:
+ virtual ~EventHandler() = default;
+
+ // Called when a SendMessage() operation completes.
+ virtual void OnRequestSent(bool ok) = 0;
+ // Called when a message is received on the stream.
+ virtual void OnRecvMessage(y_absl::string_view payload) = 0;
+ // Called when status is received on the stream.
+ virtual void OnStatusReceived(y_absl::Status status) = 0;
+ };
+
+ // Sends a message on the stream. When the message has been sent,
+ // the EventHandler::OnRequestSent() method will be called.
+ // Only one message will be in flight at a time; subsequent
+ // messages will not be sent until this one is done.
+ virtual void SendMessage(TString payload) = 0;
+ };
+
+ // Create a streaming call on this transport for the specified method.
+ // Events on the stream will be reported to event_handler.
+ virtual OrphanablePtr<StreamingCall> CreateStreamingCall(
+ const char* method,
+ std::unique_ptr<StreamingCall::EventHandler> event_handler) = 0;
+
+ // Resets connection backoff for the transport.
+ virtual void ResetBackoff() = 0;
+ };
+
+ // Creates a new transport for the specified server.
+ // The on_connectivity_failure callback will be invoked whenever there is
+ // a connectivity failure on the transport.
+ // *status will be set if there is an error creating the channel,
+ // although the returned channel must still accept calls (which may fail).
+ virtual OrphanablePtr<XdsTransport> Create(
+ const XdsBootstrap::XdsServer& server,
+ std::function<void(y_absl::Status)> on_connectivity_failure,
+ y_absl::Status* status) = 0;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_XDS_XDS_TRANSPORT_H
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_transport_grpc.cc b/contrib/libs/grpc/src/core/ext/xds/xds_transport_grpc.cc
new file mode 100644
index 0000000000..6d08da3b54
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_transport_grpc.cc
@@ -0,0 +1,357 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/ext/xds/xds_transport_grpc.h"
+
+#include <string.h>
+
+#include <functional>
+#include <memory>
+#include <utility>
+
+#include "y_absl/strings/str_cat.h"
+
+#include <grpc/byte_buffer.h>
+#include <grpc/byte_buffer_reader.h>
+#include <grpc/grpc.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/impl/codegen/propagation_bits.h>
+#include <grpc/slice.h>
+#include <grpc/support/log.h>
+
+#include "src/core/ext/filters/client_channel/client_channel.h"
+#include "src/core/ext/xds/xds_bootstrap.h"
+#include "src/core/ext/xds/xds_bootstrap_grpc.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/security/credentials/channel_creds_registry.h"
+#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
+#include "src/core/lib/surface/call.h"
+#include "src/core/lib/surface/channel.h"
+#include "src/core/lib/surface/init_internally.h"
+#include "src/core/lib/surface/lame_client.h"
+#include "src/core/lib/transport/connectivity_state.h"
+
+namespace grpc_core {
+
+//
+// GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall
+//
+
+GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::GrpcStreamingCall(
+ RefCountedPtr<GrpcXdsTransportFactory> factory, grpc_channel* channel,
+ const char* method,
+ std::unique_ptr<StreamingCall::EventHandler> event_handler)
+ : factory_(std::move(factory)), event_handler_(std::move(event_handler)) {
+ // Create call.
+ call_ = grpc_channel_create_pollset_set_call(
+ channel, nullptr, GRPC_PROPAGATE_DEFAULTS, factory_->interested_parties(),
+ StaticSlice::FromStaticString(method).c_slice(), nullptr,
+ Timestamp::InfFuture(), nullptr);
+ GPR_ASSERT(call_ != nullptr);
+ // Init data associated with the call.
+ grpc_metadata_array_init(&initial_metadata_recv_);
+ grpc_metadata_array_init(&trailing_metadata_recv_);
+ // Initialize closure to be used for sending messages.
+ GRPC_CLOSURE_INIT(&on_request_sent_, OnRequestSent, this, nullptr);
+ // Start ops on the call.
+ grpc_call_error call_error;
+ grpc_op ops[3];
+ memset(ops, 0, sizeof(ops));
+ // Send initial metadata. No callback for this, since we don't really
+ // care when it finishes.
+ grpc_op* op = ops;
+ op->op = GRPC_OP_SEND_INITIAL_METADATA;
+ op->data.send_initial_metadata.count = 0;
+ op->flags = GRPC_INITIAL_METADATA_WAIT_FOR_READY |
+ GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET;
+ op->reserved = nullptr;
+ op++;
+ call_error = grpc_call_start_batch_and_execute(
+ call_, ops, static_cast<size_t>(op - ops), nullptr);
+ GPR_ASSERT(GRPC_CALL_OK == call_error);
+ // Start a batch with recv_initial_metadata and recv_message.
+ op = ops;
+ op->op = GRPC_OP_RECV_INITIAL_METADATA;
+ op->data.recv_initial_metadata.recv_initial_metadata =
+ &initial_metadata_recv_;
+ op->flags = 0;
+ op->reserved = nullptr;
+ op++;
+ op->op = GRPC_OP_RECV_MESSAGE;
+ op->data.recv_message.recv_message = &recv_message_payload_;
+ op->flags = 0;
+ op->reserved = nullptr;
+ op++;
+ Ref(DEBUG_LOCATION, "OnResponseReceived").release();
+ GRPC_CLOSURE_INIT(&on_response_received_, OnResponseReceived, this, nullptr);
+ call_error = grpc_call_start_batch_and_execute(
+ call_, ops, static_cast<size_t>(op - ops), &on_response_received_);
+ GPR_ASSERT(GRPC_CALL_OK == call_error);
+ // Start a batch for recv_trailing_metadata.
+ op = ops;
+ op->op = GRPC_OP_RECV_STATUS_ON_CLIENT;
+ op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv_;
+ op->data.recv_status_on_client.status = &status_code_;
+ op->data.recv_status_on_client.status_details = &status_details_;
+ op->flags = 0;
+ op->reserved = nullptr;
+ op++;
+ // This callback signals the end of the call, so it relies on the initial
+ // ref instead of a new ref. When it's invoked, it's the initial ref that is
+ // unreffed.
+ GRPC_CLOSURE_INIT(&on_status_received_, OnStatusReceived, this, nullptr);
+ call_error = grpc_call_start_batch_and_execute(
+ call_, ops, static_cast<size_t>(op - ops), &on_status_received_);
+ GPR_ASSERT(GRPC_CALL_OK == call_error);
+}
+
+GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::
+ ~GrpcStreamingCall() {
+ grpc_metadata_array_destroy(&initial_metadata_recv_);
+ grpc_metadata_array_destroy(&trailing_metadata_recv_);
+ grpc_byte_buffer_destroy(send_message_payload_);
+ grpc_byte_buffer_destroy(recv_message_payload_);
+ grpc_slice_unref_internal(status_details_);
+ GPR_ASSERT(call_ != nullptr);
+ grpc_call_unref(call_);
+}
+
+void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::Orphan() {
+ GPR_ASSERT(call_ != nullptr);
+ // If we are here because xds_client wants to cancel the call,
+ // OnStatusReceived() will complete the cancellation and clean up.
+ // Otherwise, we are here because xds_client has to orphan a failed call,
+ // in which case the following cancellation will be a no-op.
+ grpc_call_cancel_internal(call_);
+ // Note that the initial ref is held by OnStatusReceived(), so the
+ // corresponding unref happens there instead of here.
+}
+
+void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::SendMessage(
+ TString payload) {
+ // Create payload.
+ grpc_slice slice = grpc_slice_from_cpp_string(std::move(payload));
+ send_message_payload_ = grpc_raw_byte_buffer_create(&slice, 1);
+ grpc_slice_unref_internal(slice);
+ // Send the message.
+ grpc_op op;
+ memset(&op, 0, sizeof(op));
+ op.op = GRPC_OP_SEND_MESSAGE;
+ op.data.send_message.send_message = send_message_payload_;
+ Ref(DEBUG_LOCATION, "OnRequestSent").release();
+ grpc_call_error call_error =
+ grpc_call_start_batch_and_execute(call_, &op, 1, &on_request_sent_);
+ GPR_ASSERT(GRPC_CALL_OK == call_error);
+}
+
+void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::
+ OnRequestSent(void* arg, grpc_error_handle error) {
+ auto* self = static_cast<GrpcStreamingCall*>(arg);
+ // Clean up the sent message.
+ grpc_byte_buffer_destroy(self->send_message_payload_);
+ self->send_message_payload_ = nullptr;
+ // Invoke request handler.
+ self->event_handler_->OnRequestSent(GRPC_ERROR_IS_NONE(error));
+ // Drop the ref.
+ self->Unref(DEBUG_LOCATION, "OnRequestSent");
+}
+
+void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::
+ OnResponseReceived(void* arg, grpc_error_handle /*error*/) {
+ auto* self = static_cast<GrpcStreamingCall*>(arg);
+ // If there was no payload, then we received status before we received
+ // another message, so we stop reading.
+ if (self->recv_message_payload_ == nullptr) {
+ self->Unref(DEBUG_LOCATION, "OnResponseReceived");
+ return;
+ }
+ // Process the response.
+ grpc_byte_buffer_reader bbr;
+ grpc_byte_buffer_reader_init(&bbr, self->recv_message_payload_);
+ grpc_slice response_slice = grpc_byte_buffer_reader_readall(&bbr);
+ grpc_byte_buffer_reader_destroy(&bbr);
+ grpc_byte_buffer_destroy(self->recv_message_payload_);
+ self->recv_message_payload_ = nullptr;
+ self->event_handler_->OnRecvMessage(StringViewFromSlice(response_slice));
+ grpc_slice_unref_internal(response_slice);
+ // Keep reading.
+ grpc_op op;
+ memset(&op, 0, sizeof(op));
+ op.op = GRPC_OP_RECV_MESSAGE;
+ op.data.recv_message.recv_message = &self->recv_message_payload_;
+ GPR_ASSERT(self->call_ != nullptr);
+ // Reuses the "OnResponseReceived" ref taken in ctor.
+ const grpc_call_error call_error = grpc_call_start_batch_and_execute(
+ self->call_, &op, 1, &self->on_response_received_);
+ GPR_ASSERT(GRPC_CALL_OK == call_error);
+}
+
+void GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall::
+ OnStatusReceived(void* arg, grpc_error_handle /*error*/) {
+ auto* self = static_cast<GrpcStreamingCall*>(arg);
+ self->event_handler_->OnStatusReceived(
+ y_absl::Status(static_cast<y_absl::StatusCode>(self->status_code_),
+ StringViewFromSlice(self->status_details_)));
+ self->Unref(DEBUG_LOCATION, "OnStatusReceived");
+}
+
+//
+// GrpcXdsTransportFactory::GrpcXdsTransport::StateWatcher
+//
+
+class GrpcXdsTransportFactory::GrpcXdsTransport::StateWatcher
+ : public AsyncConnectivityStateWatcherInterface {
+ public:
+ explicit StateWatcher(
+ std::function<void(y_absl::Status)> on_connectivity_failure)
+ : on_connectivity_failure_(std::move(on_connectivity_failure)) {}
+
+ private:
+ void OnConnectivityStateChange(grpc_connectivity_state new_state,
+ const y_absl::Status& status) override {
+ if (new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
+ on_connectivity_failure_(y_absl::Status(
+ status.code(),
+ y_absl::StrCat("channel in TRANSIENT_FAILURE: ", status.message())));
+ }
+ }
+
+ std::function<void(y_absl::Status)> on_connectivity_failure_;
+};
+
+//
+// GrpcXdsClient::GrpcXdsTransport
+//
+
+namespace {
+
+grpc_channel* CreateXdsChannel(const ChannelArgs& args,
+ const GrpcXdsBootstrap::GrpcXdsServer& server) {
+ RefCountedPtr<grpc_channel_credentials> channel_creds =
+ CoreConfiguration::Get().channel_creds_registry().CreateChannelCreds(
+ server.channel_creds_type(), server.channel_creds_config());
+ return grpc_channel_create(server.server_uri().c_str(), channel_creds.get(),
+ args.ToC().get());
+}
+
+bool IsLameChannel(grpc_channel* channel) {
+ grpc_channel_element* elem =
+ grpc_channel_stack_last_element(grpc_channel_get_channel_stack(channel));
+ return elem->filter == &LameClientFilter::kFilter;
+}
+
+} // namespace
+
+GrpcXdsTransportFactory::GrpcXdsTransport::GrpcXdsTransport(
+ GrpcXdsTransportFactory* factory, const XdsBootstrap::XdsServer& server,
+ std::function<void(y_absl::Status)> on_connectivity_failure,
+ y_absl::Status* status)
+ : factory_(factory) {
+ channel_ = CreateXdsChannel(
+ factory->args_,
+ static_cast<const GrpcXdsBootstrap::GrpcXdsServer&>(server));
+ GPR_ASSERT(channel_ != nullptr);
+ if (IsLameChannel(channel_)) {
+ *status = y_absl::UnavailableError("xds client has a lame channel");
+ } else {
+ ClientChannel* client_channel =
+ ClientChannel::GetFromChannel(Channel::FromC(channel_));
+ GPR_ASSERT(client_channel != nullptr);
+ watcher_ = new StateWatcher(std::move(on_connectivity_failure));
+ client_channel->AddConnectivityWatcher(
+ GRPC_CHANNEL_IDLE,
+ OrphanablePtr<AsyncConnectivityStateWatcherInterface>(watcher_));
+ }
+}
+
+GrpcXdsTransportFactory::GrpcXdsTransport::~GrpcXdsTransport() {
+ grpc_channel_destroy(channel_);
+}
+
+void GrpcXdsTransportFactory::GrpcXdsTransport::Orphan() {
+ if (!IsLameChannel(channel_)) {
+ ClientChannel* client_channel =
+ ClientChannel::GetFromChannel(Channel::FromC(channel_));
+ GPR_ASSERT(client_channel != nullptr);
+ client_channel->RemoveConnectivityWatcher(watcher_);
+ }
+ Unref();
+}
+
+OrphanablePtr<XdsTransportFactory::XdsTransport::StreamingCall>
+GrpcXdsTransportFactory::GrpcXdsTransport::CreateStreamingCall(
+ const char* method,
+ std::unique_ptr<StreamingCall::EventHandler> event_handler) {
+ return MakeOrphanable<GrpcStreamingCall>(
+ factory_->Ref(DEBUG_LOCATION, "StreamingCall"), channel_, method,
+ std::move(event_handler));
+}
+
+void GrpcXdsTransportFactory::GrpcXdsTransport::ResetBackoff() {
+ grpc_channel_reset_connect_backoff(channel_);
+}
+
+//
+// GrpcXdsTransportFactory
+//
+
+namespace {
+
+ChannelArgs ModifyChannelArgs(const ChannelArgs& args) {
+ return args.Set(GRPC_ARG_KEEPALIVE_TIME_MS, Duration::Minutes(5).millis());
+}
+
+} // namespace
+
+GrpcXdsTransportFactory::GrpcXdsTransportFactory(const ChannelArgs& args)
+ : args_(ModifyChannelArgs(args)),
+ interested_parties_(grpc_pollset_set_create()) {
+ // Calling grpc_init to ensure gRPC does not shut down until the XdsClient is
+ // destroyed.
+ InitInternally();
+}
+
+GrpcXdsTransportFactory::~GrpcXdsTransportFactory() {
+ grpc_pollset_set_destroy(interested_parties_);
+ // Calling grpc_shutdown to ensure gRPC does not shut down until the XdsClient
+ // is destroyed.
+ ShutdownInternally();
+}
+
+OrphanablePtr<XdsTransportFactory::XdsTransport>
+GrpcXdsTransportFactory::Create(
+ const XdsBootstrap::XdsServer& server,
+ std::function<void(y_absl::Status)> on_connectivity_failure,
+ y_absl::Status* status) {
+ return MakeOrphanable<GrpcXdsTransport>(
+ this, server, std::move(on_connectivity_failure), status);
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/ext/xds/xds_transport_grpc.h b/contrib/libs/grpc/src/core/ext/xds/xds_transport_grpc.h
new file mode 100644
index 0000000000..0731a1a8a8
--- /dev/null
+++ b/contrib/libs/grpc/src/core/ext/xds/xds_transport_grpc.h
@@ -0,0 +1,136 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_EXT_XDS_XDS_TRANSPORT_GRPC_H
+#define GRPC_CORE_EXT_XDS_XDS_TRANSPORT_GRPC_H
+
+#include <grpc/support/port_platform.h>
+
+#include <functional>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/status/status.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
+#include <grpc/status.h>
+
+#include "src/core/ext/xds/xds_bootstrap.h"
+#include "src/core/ext/xds/xds_transport.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+
+namespace grpc_core {
+
+class GrpcXdsTransportFactory : public XdsTransportFactory {
+ public:
+ class GrpcXdsTransport;
+
+ explicit GrpcXdsTransportFactory(const ChannelArgs& args);
+ ~GrpcXdsTransportFactory() override;
+
+ void Orphan() override { Unref(); }
+
+ OrphanablePtr<XdsTransport> Create(
+ const XdsBootstrap::XdsServer& server,
+ std::function<void(y_absl::Status)> on_connectivity_failure,
+ y_absl::Status* status) override;
+
+ grpc_pollset_set* interested_parties() const { return interested_parties_; }
+
+ private:
+ ChannelArgs args_;
+ grpc_pollset_set* interested_parties_;
+};
+
+class GrpcXdsTransportFactory::GrpcXdsTransport
+ : public XdsTransportFactory::XdsTransport {
+ public:
+ class GrpcStreamingCall;
+
+ GrpcXdsTransport(GrpcXdsTransportFactory* factory,
+ const XdsBootstrap::XdsServer& server,
+ std::function<void(y_absl::Status)> on_connectivity_failure,
+ y_absl::Status* status);
+ ~GrpcXdsTransport() override;
+
+ void Orphan() override;
+
+ OrphanablePtr<StreamingCall> CreateStreamingCall(
+ const char* method,
+ std::unique_ptr<StreamingCall::EventHandler> event_handler) override;
+
+ void ResetBackoff() override;
+
+ private:
+ class StateWatcher;
+
+ GrpcXdsTransportFactory* factory_; // Not owned.
+ grpc_channel* channel_;
+ StateWatcher* watcher_;
+};
+
+class GrpcXdsTransportFactory::GrpcXdsTransport::GrpcStreamingCall
+ : public XdsTransportFactory::XdsTransport::StreamingCall {
+ public:
+ GrpcStreamingCall(RefCountedPtr<GrpcXdsTransportFactory> factory,
+ grpc_channel* channel, const char* method,
+ std::unique_ptr<StreamingCall::EventHandler> event_handler);
+ ~GrpcStreamingCall() override;
+
+ void Orphan() override;
+
+ void SendMessage(TString payload) override;
+
+ private:
+ static void OnRequestSent(void* arg, grpc_error_handle error);
+ static void OnResponseReceived(void* arg, grpc_error_handle /*error*/);
+ static void OnStatusReceived(void* arg, grpc_error_handle /*error*/);
+
+ RefCountedPtr<GrpcXdsTransportFactory> factory_;
+
+ std::unique_ptr<StreamingCall::EventHandler> event_handler_;
+
+ // Always non-NULL.
+ grpc_call* call_;
+
+ // recv_initial_metadata
+ grpc_metadata_array initial_metadata_recv_;
+
+ // send_message
+ grpc_byte_buffer* send_message_payload_ = nullptr;
+ grpc_closure on_request_sent_;
+
+ // recv_message
+ grpc_byte_buffer* recv_message_payload_ = nullptr;
+ grpc_closure on_response_received_;
+
+ // recv_trailing_metadata
+ grpc_metadata_array trailing_metadata_recv_;
+ grpc_status_code status_code_;
+ grpc_slice status_details_;
+ grpc_closure on_status_received_;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_EXT_XDS_XDS_TRANSPORT_GRPC_H
diff --git a/contrib/libs/grpc/src/core/lib/address_utils/parse_address.cc b/contrib/libs/grpc/src/core/lib/address_utils/parse_address.cc
index df63f40e2e..4ffdf24cb3 100644
--- a/contrib/libs/grpc/src/core/lib/address_utils/parse_address.cc
+++ b/contrib/libs/grpc/src/core/lib/address_utils/parse_address.cc
@@ -21,26 +21,24 @@
#include "src/core/lib/address_utils/parse_address.h"
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
#ifdef GRPC_HAVE_UNIX_SOCKET
#include <sys/un.h>
#endif
-#ifdef GRPC_POSIX_SOCKET
-#include <errno.h>
-#include <net/if.h>
-#endif
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/strip.h"
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
-#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gprpp/host_port.h"
#include "src/core/lib/iomgr/grpc_if_nametoindex.h"
+#include "src/core/lib/iomgr/port.h"
#include "src/core/lib/iomgr/sockaddr.h"
#include "src/core/lib/iomgr/socket_utils.h"
@@ -55,7 +53,7 @@ bool grpc_parse_unix(const grpc_core::URI& uri,
}
grpc_error_handle error =
grpc_core::UnixSockaddrPopulate(uri.path(), resolved_addr);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_ERROR, "%s", grpc_error_std_string(error).c_str());
GRPC_ERROR_UNREF(error);
return false;
@@ -72,7 +70,7 @@ bool grpc_parse_unix_abstract(const grpc_core::URI& uri,
}
grpc_error_handle error =
grpc_core::UnixAbstractSockaddrPopulate(uri.path(), resolved_addr);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_ERROR, "%s", grpc_error_std_string(error).c_str());
GRPC_ERROR_UNREF(error);
return false;
@@ -320,21 +318,23 @@ uint16_t grpc_strhtons(const char* port) {
return htons(static_cast<unsigned short>(atoi(port)));
}
-grpc_error_handle grpc_string_to_sockaddr(grpc_resolved_address* out,
- const char* addr, int port) {
- memset(out, 0, sizeof(grpc_resolved_address));
- grpc_sockaddr_in6* addr6 = reinterpret_cast<grpc_sockaddr_in6*>(out->addr);
- grpc_sockaddr_in* addr4 = reinterpret_cast<grpc_sockaddr_in*>(out->addr);
- if (grpc_inet_pton(GRPC_AF_INET6, addr, &addr6->sin6_addr) == 1) {
- addr6->sin6_family = GRPC_AF_INET6;
- out->len = sizeof(grpc_sockaddr_in6);
- } else if (grpc_inet_pton(GRPC_AF_INET, addr, &addr4->sin_addr) == 1) {
- addr4->sin_family = GRPC_AF_INET;
- out->len = sizeof(grpc_sockaddr_in);
- } else {
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("Failed to parse address:", addr));
+namespace grpc_core {
+
+y_absl::StatusOr<grpc_resolved_address> StringToSockaddr(
+ y_absl::string_view address_and_port) {
+ grpc_resolved_address out;
+ memset(&out, 0, sizeof(grpc_resolved_address));
+ if (!grpc_parse_ipv4_hostport(address_and_port, &out, /*log_errors=*/false) &&
+ !grpc_parse_ipv6_hostport(address_and_port, &out, /*log_errors=*/false)) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("Failed to parse address:", address_and_port));
}
- grpc_sockaddr_set_port(out, port);
- return GRPC_ERROR_NONE;
+ return out;
}
+
+y_absl::StatusOr<grpc_resolved_address> StringToSockaddr(
+ y_absl::string_view address, int port) {
+ return StringToSockaddr(JoinHostPort(address, port));
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/address_utils/parse_address.h b/contrib/libs/grpc/src/core/lib/address_utils/parse_address.h
index 78c3656cca..b8547b75dc 100644
--- a/contrib/libs/grpc/src/core/lib/address_utils/parse_address.h
+++ b/contrib/libs/grpc/src/core/lib/address_utils/parse_address.h
@@ -21,11 +21,13 @@
#include <grpc/support/port_platform.h>
-#include <stddef.h>
+#include <stdint.h>
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/string_view.h"
-#include "src/core/lib/iomgr/resolve_address.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/resolved_address.h"
#include "src/core/lib/uri/uri_parser.h"
/** Populate \a resolved_addr from \a uri, whose path is expected to contain a
@@ -61,13 +63,15 @@ bool grpc_parse_ipv6_hostport(y_absl::string_view hostport,
/* Converts named or numeric port to a uint16 suitable for use in a sockaddr. */
uint16_t grpc_strhtons(const char* port);
-// Newer form of grpc_string_to_sockaddr which returns an error instead of
-// crashing if \a addr is not IPv6/IPv6
-grpc_error_handle grpc_string_to_sockaddr(grpc_resolved_address* out,
- const char* addr, int port);
-
namespace grpc_core {
+// Parses an IPv4 or IPv6 address string and returns a sockaddr with the
+// specified address and port.
+y_absl::StatusOr<grpc_resolved_address> StringToSockaddr(
+ y_absl::string_view address_and_port);
+y_absl::StatusOr<grpc_resolved_address> StringToSockaddr(
+ y_absl::string_view address, int port);
+
/** Populate \a resolved_addr to be a unix socket at |path| */
grpc_error_handle UnixSockaddrPopulate(y_absl::string_view path,
grpc_resolved_address* resolved_addr);
diff --git a/contrib/libs/grpc/src/core/lib/address_utils/sockaddr_utils.cc b/contrib/libs/grpc/src/core/lib/address_utils/sockaddr_utils.cc
index a3b0216458..7e3fb155f5 100644
--- a/contrib/libs/grpc/src/core/lib/address_utils/sockaddr_utils.cc
+++ b/contrib/libs/grpc/src/core/lib/address_utils/sockaddr_utils.cc
@@ -26,44 +26,53 @@
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gprpp/host_port.h"
+#include "src/core/lib/iomgr/port.h"
#include "src/core/lib/iomgr/sockaddr.h"
#include "src/core/lib/iomgr/socket_utils.h"
+#include "src/core/lib/uri/uri_parser.h"
#ifdef GRPC_HAVE_UNIX_SOCKET
#include <sys/un.h>
#endif
#ifdef GRPC_HAVE_UNIX_SOCKET
-static TString grpc_sockaddr_to_uri_unix_if_possible(
+static y_absl::StatusOr<TString> grpc_sockaddr_to_uri_unix_if_possible(
const grpc_resolved_address* resolved_addr) {
const grpc_sockaddr* addr =
reinterpret_cast<const grpc_sockaddr*>(resolved_addr->addr);
if (addr->sa_family != AF_UNIX) {
- return "";
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("Socket family is not AF_UNIX: ", addr->sa_family));
}
const auto* unix_addr = reinterpret_cast<const struct sockaddr_un*>(addr);
+ TString scheme, path;
if (unix_addr->sun_path[0] == '\0' && unix_addr->sun_path[1] != '\0') {
- return y_absl::StrCat(
- "unix-abstract:",
- y_absl::string_view(
- unix_addr->sun_path + 1,
- resolved_addr->len - sizeof(unix_addr->sun_family) - 1));
+ scheme = "unix-abstract";
+ path = TString(unix_addr->sun_path + 1,
+ resolved_addr->len - sizeof(unix_addr->sun_family) - 1);
+ } else {
+ scheme = "unix";
+ path = unix_addr->sun_path;
}
- return y_absl::StrCat("unix:", unix_addr->sun_path);
+ y_absl::StatusOr<grpc_core::URI> uri = grpc_core::URI::Create(
+ std::move(scheme), /*authority=*/"", std::move(path),
+ /*query_parameter_pairs=*/{}, /*fragment=*/"");
+ if (!uri.ok()) return uri.status();
+ return uri->ToString();
}
#else
-static TString grpc_sockaddr_to_uri_unix_if_possible(
+static y_absl::StatusOr<TString> grpc_sockaddr_to_uri_unix_if_possible(
const grpc_resolved_address* /* addr */) {
- return "";
+ return y_absl::InvalidArgumentError("Unix socket is not supported.");
}
#endif
@@ -183,8 +192,8 @@ void grpc_sockaddr_make_wildcard6(int port,
resolved_wild_out->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in6));
}
-TString grpc_sockaddr_to_string(const grpc_resolved_address* resolved_addr,
- bool normalize) {
+y_absl::StatusOr<TString> grpc_sockaddr_to_string(
+ const grpc_resolved_address* resolved_addr, bool normalize) {
const int save_errno = errno;
grpc_resolved_address addr_normalized;
if (normalize && grpc_sockaddr_is_v4mapped(resolved_addr, &addr_normalized)) {
@@ -192,6 +201,28 @@ TString grpc_sockaddr_to_string(const grpc_resolved_address* resolved_addr,
}
const grpc_sockaddr* addr =
reinterpret_cast<const grpc_sockaddr*>(resolved_addr->addr);
+ TString out;
+#ifdef GRPC_HAVE_UNIX_SOCKET
+ if (addr->sa_family == GRPC_AF_UNIX) {
+ const sockaddr_un* addr_un = reinterpret_cast<const sockaddr_un*>(addr);
+ bool abstract = addr_un->sun_path[0] == '\0';
+ if (abstract) {
+ int len = resolved_addr->len - sizeof(addr->sa_family);
+ if (len <= 0) {
+ return y_absl::InvalidArgumentError("empty UDS abstract path");
+ }
+ out = TString(addr_un->sun_path, len);
+ } else {
+ size_t maxlen = sizeof(addr_un->sun_path);
+ if (strnlen(addr_un->sun_path, maxlen) == maxlen) {
+ return y_absl::InvalidArgumentError("UDS path is not null-terminated");
+ }
+ out = TString(addr_un->sun_path);
+ }
+ return out;
+ }
+#endif
+
const void* ip = nullptr;
int port = 0;
uint32_t sin6_scope_id = 0;
@@ -208,27 +239,30 @@ TString grpc_sockaddr_to_string(const grpc_resolved_address* resolved_addr,
sin6_scope_id = addr6->sin6_scope_id;
}
char ntop_buf[GRPC_INET6_ADDRSTRLEN];
- TString out;
if (ip != nullptr && grpc_inet_ntop(addr->sa_family, ip, ntop_buf,
sizeof(ntop_buf)) != nullptr) {
if (sin6_scope_id != 0) {
// Enclose sin6_scope_id with the format defined in RFC 6874 section 2.
TString host_with_scope =
- y_absl::StrFormat("%s%%25%" PRIu32, ntop_buf, sin6_scope_id);
+ y_absl::StrFormat("%s%%%" PRIu32, ntop_buf, sin6_scope_id);
out = grpc_core::JoinHostPort(host_with_scope, port);
} else {
out = grpc_core::JoinHostPort(ntop_buf, port);
}
} else {
- out = y_absl::StrFormat("(sockaddr family=%d)", addr->sa_family);
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("Unknown sockaddr family: ", addr->sa_family));
}
/* This is probably redundant, but we wouldn't want to log the wrong error. */
errno = save_errno;
return out;
}
-TString grpc_sockaddr_to_uri(const grpc_resolved_address* resolved_addr) {
- if (resolved_addr->len == 0) return "";
+y_absl::StatusOr<TString> grpc_sockaddr_to_uri(
+ const grpc_resolved_address* resolved_addr) {
+ if (resolved_addr->len == 0) {
+ return y_absl::InvalidArgumentError("Empty address");
+ }
grpc_resolved_address addr_normalized;
if (grpc_sockaddr_is_v4mapped(resolved_addr, &addr_normalized)) {
resolved_addr = &addr_normalized;
@@ -237,13 +271,13 @@ TString grpc_sockaddr_to_uri(const grpc_resolved_address* resolved_addr) {
if (scheme == nullptr || strcmp("unix", scheme) == 0) {
return grpc_sockaddr_to_uri_unix_if_possible(resolved_addr);
}
- TString path =
- grpc_sockaddr_to_string(resolved_addr, false /* normalize */);
- TString uri_str;
- if (scheme != nullptr) {
- uri_str = y_absl::StrCat(scheme, ":", path);
- }
- return uri_str;
+ auto path = grpc_sockaddr_to_string(resolved_addr, false /* normalize */);
+ if (!path.ok()) return path;
+ y_absl::StatusOr<grpc_core::URI> uri =
+ grpc_core::URI::Create(scheme, /*authority=*/"", std::move(path.value()),
+ /*query_parameter_pairs=*/{}, /*fragment=*/"");
+ if (!uri.ok()) return uri.status();
+ return uri->ToString();
}
const char* grpc_sockaddr_get_uri_scheme(
diff --git a/contrib/libs/grpc/src/core/lib/address_utils/sockaddr_utils.h b/contrib/libs/grpc/src/core/lib/address_utils/sockaddr_utils.h
index fc2b8dc3da..a7b2f836c6 100644
--- a/contrib/libs/grpc/src/core/lib/address_utils/sockaddr_utils.h
+++ b/contrib/libs/grpc/src/core/lib/address_utils/sockaddr_utils.h
@@ -21,9 +21,13 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include "y_absl/status/statusor.h"
+
#include "src/core/lib/iomgr/resolved_address.h"
/* Returns true if addr is an IPv4-mapped IPv6 address within the
@@ -61,14 +65,15 @@ int grpc_sockaddr_set_port(grpc_resolved_address* addr, int port);
// Converts a sockaddr into a newly-allocated human-readable string.
//
-// Currently, only the AF_INET and AF_INET6 families are recognized.
+// Currently, only the AF_INET, AF_INET6, and AF_UNIX families are recognized.
// If the normalize flag is enabled, ::ffff:0.0.0.0/96 IPv6 addresses are
// displayed as plain IPv4.
-TString grpc_sockaddr_to_string(const grpc_resolved_address* addr,
- bool normalize) GRPC_MUST_USE_RESULT;
+y_absl::StatusOr<TString> grpc_sockaddr_to_string(
+ const grpc_resolved_address* addr, bool normalize) GRPC_MUST_USE_RESULT;
/* Returns the URI string corresponding to \a addr */
-TString grpc_sockaddr_to_uri(const grpc_resolved_address* addr);
+y_absl::StatusOr<TString> grpc_sockaddr_to_uri(
+ const grpc_resolved_address* addr);
/* Returns the URI scheme corresponding to \a addr */
const char* grpc_sockaddr_get_uri_scheme(const grpc_resolved_address* addr);
diff --git a/contrib/libs/grpc/src/core/lib/avl/avl.h b/contrib/libs/grpc/src/core/lib/avl/avl.h
index 9771d845a9..33d2ae661f 100644
--- a/contrib/libs/grpc/src/core/lib/avl/avl.h
+++ b/contrib/libs/grpc/src/core/lib/avl/avl.h
@@ -19,8 +19,11 @@
#include <stdlib.h>
-#include <algorithm>
+#include <algorithm> // IWYU pragma: keep
#include <memory>
+#include <utility>
+
+#include "src/core/lib/gpr/useful.h"
namespace grpc_core {
@@ -32,8 +35,12 @@ class AVL {
AVL Add(K key, V value) const {
return AVL(AddKey(root_, std::move(key), std::move(value)));
}
- AVL Remove(const K& key) const { return AVL(RemoveKey(root_, key)); }
- const V* Lookup(const K& key) const {
+ template <typename SomethingLikeK>
+ AVL Remove(const SomethingLikeK& key) const {
+ return AVL(RemoveKey(root_, key));
+ }
+ template <typename SomethingLikeK>
+ const V* Lookup(const SomethingLikeK& key) const {
NodePtr n = Get(root_, key);
return n ? &n->kv.second : nullptr;
}
@@ -50,10 +57,39 @@ class AVL {
ForEachImpl(root_.get(), std::forward<F>(f));
}
- bool SameIdentity(AVL avl) const { return root_ == avl.root_; }
+ bool SameIdentity(const AVL& avl) const { return root_ == avl.root_; }
+
+ friend int QsortCompare(const AVL& left, const AVL& right) {
+ if (left.root_.get() == right.root_.get()) return 0;
+ Iterator a(left.root_);
+ Iterator b(right.root_);
+ for (;;) {
+ Node* p = a.current();
+ Node* q = b.current();
+ if (p != q) {
+ if (p == nullptr) return -1;
+ if (q == nullptr) return 1;
+ const int kv = QsortCompare(p->kv, q->kv);
+ if (kv != 0) return kv;
+ } else if (p == nullptr) {
+ return 0;
+ }
+ a.MoveNext();
+ b.MoveNext();
+ }
+ }
+
+ bool operator==(const AVL& other) const {
+ return QsortCompare(*this, other) == 0;
+ }
+
+ bool operator<(const AVL& other) const {
+ return QsortCompare(*this, other) < 0;
+ }
private:
struct Node;
+
typedef std::shared_ptr<Node> NodePtr;
struct Node : public std::enable_shared_from_this<Node> {
Node(K k, V v, NodePtr l, NodePtr r, long h)
@@ -68,6 +104,54 @@ class AVL {
};
NodePtr root_;
+ class IteratorStack {
+ public:
+ void Push(Node* n) {
+ nodes_[depth_] = n;
+ ++depth_;
+ }
+
+ Node* Pop() {
+ --depth_;
+ return nodes_[depth_];
+ }
+
+ Node* Back() const { return nodes_[depth_ - 1]; }
+
+ bool Empty() const { return depth_ == 0; }
+
+ private:
+ size_t depth_{0};
+ // 32 is the maximum depth we can accept, and corresponds to ~4billion nodes
+ // - which ought to suffice our use cases.
+ Node* nodes_[32];
+ };
+
+ class Iterator {
+ public:
+ explicit Iterator(const NodePtr& root) {
+ auto* n = root.get();
+ while (n != nullptr) {
+ stack_.Push(n);
+ n = n->left.get();
+ }
+ }
+ Node* current() const { return stack_.Empty() ? nullptr : stack_.Back(); }
+ void MoveNext() {
+ auto* n = stack_.Pop();
+ if (n->right != nullptr) {
+ n = n->right.get();
+ while (n != nullptr) {
+ stack_.Push(n);
+ n = n->left.get();
+ }
+ }
+ }
+
+ private:
+ IteratorStack stack_;
+ };
+
explicit AVL(NodePtr root) : root_(std::move(root)) {}
template <class F>
@@ -86,7 +170,8 @@ class AVL {
1 + std::max(Height(left), Height(right)));
}
- static NodePtr Get(const NodePtr& node, const K& key) {
+ template <typename SomethingLikeK>
+ static NodePtr Get(const NodePtr& node, const SomethingLikeK& key) {
if (node == nullptr) {
return nullptr;
}
@@ -198,7 +283,8 @@ class AVL {
return node;
}
- static NodePtr RemoveKey(const NodePtr& node, const K& key) {
+ template <typename SomethingLikeK>
+ static NodePtr RemoveKey(const NodePtr& node, const SomethingLikeK& key) {
if (node == nullptr) {
return nullptr;
}
@@ -246,6 +332,7 @@ class AVL<K, void> {
private:
struct Node;
+
typedef std::shared_ptr<Node> NodePtr;
struct Node : public std::enable_shared_from_this<Node> {
Node(K k, NodePtr l, NodePtr r, long h)
diff --git a/contrib/libs/grpc/src/core/lib/backoff/backoff.cc b/contrib/libs/grpc/src/core/lib/backoff/backoff.cc
index 48605864ac..eccff49dd3 100644
--- a/contrib/libs/grpc/src/core/lib/backoff/backoff.cc
+++ b/contrib/libs/grpc/src/core/lib/backoff/backoff.cc
@@ -22,8 +22,6 @@
#include <algorithm>
-#include "src/core/lib/gpr/useful.h"
-
namespace grpc_core {
BackOff::BackOff(const Options& options) : options_(options) { Reset(); }
@@ -31,14 +29,14 @@ BackOff::BackOff(const Options& options) : options_(options) { Reset(); }
Timestamp BackOff::NextAttemptTime() {
if (initial_) {
initial_ = false;
- return current_backoff_ + ExecCtx::Get()->Now();
+ return current_backoff_ + Timestamp::Now();
}
current_backoff_ = std::min(current_backoff_ * options_.multiplier(),
options_.max_backoff());
const Duration jitter = Duration::FromSecondsAsDouble(
y_absl::Uniform(rand_gen_, -options_.jitter() * current_backoff_.seconds(),
options_.jitter() * current_backoff_.seconds()));
- return ExecCtx::Get()->Now() + current_backoff_ + jitter;
+ return Timestamp::Now() + current_backoff_ + jitter;
}
void BackOff::Reset() {
diff --git a/contrib/libs/grpc/src/core/lib/backoff/backoff.h b/contrib/libs/grpc/src/core/lib/backoff/backoff.h
index b28a94b109..30bda31a12 100644
--- a/contrib/libs/grpc/src/core/lib/backoff/backoff.h
+++ b/contrib/libs/grpc/src/core/lib/backoff/backoff.h
@@ -23,7 +23,7 @@
#include "y_absl/random/random.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/gprpp/time.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/channel/call_finalization.h b/contrib/libs/grpc/src/core/lib/channel/call_finalization.h
index 9ccf4ee214..62c22f25cc 100644
--- a/contrib/libs/grpc/src/core/lib/channel/call_finalization.h
+++ b/contrib/libs/grpc/src/core/lib/channel/call_finalization.h
@@ -17,6 +17,8 @@
#include <grpc/support/port_platform.h>
+#include <utility>
+
#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/promise/context.h"
#include "src/core/lib/resource_quota/arena.h"
@@ -43,7 +45,7 @@ class CallFinalization {
}
void Run(const grpc_call_final_info* final_info) {
- if (Finalizer* f = y_absl::exchange(first_, nullptr)) f->Run(final_info);
+ if (Finalizer* f = std::exchange(first_, nullptr)) f->Run(final_info);
}
private:
diff --git a/contrib/libs/grpc/src/core/lib/channel/call_tracer.h b/contrib/libs/grpc/src/core/lib/channel/call_tracer.h
index 3a61e44c32..0990abb6ec 100644
--- a/contrib/libs/grpc/src/core/lib/channel/call_tracer.h
+++ b/contrib/libs/grpc/src/core/lib/channel/call_tracer.h
@@ -21,11 +21,17 @@
#include <grpc/support/port_platform.h>
-#include "y_absl/strings/string_view.h"
+#include <stdint.h>
-#include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/transport/byte_stream.h"
+#include "y_absl/status/status.h"
+
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/support/atm.h>
+
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/slice/slice_buffer.h"
#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
namespace grpc_core {
@@ -44,7 +50,7 @@ class CallTracer {
// Please refer to `grpc_transport_stream_op_batch_payload` for details on
// arguments.
virtual void RecordSendInitialMetadata(
- grpc_metadata_batch* send_initial_metadata, uint32_t flags) = 0;
+ grpc_metadata_batch* send_initial_metadata) = 0;
// TODO(yashkt): We are using gpr_atm here instead of y_absl::string_view
// since that's what the transport API uses, and performing an atomic load
// is unnecessary if the census tracer does not need it at present. Fix this
@@ -52,13 +58,13 @@ class CallTracer {
virtual void RecordOnDoneSendInitialMetadata(gpr_atm* peer_string) = 0;
virtual void RecordSendTrailingMetadata(
grpc_metadata_batch* send_trailing_metadata) = 0;
- virtual void RecordSendMessage(const ByteStream& send_message) = 0;
+ virtual void RecordSendMessage(const SliceBuffer& send_message) = 0;
// The `RecordReceivedInitialMetadata()` and `RecordReceivedMessage()`
// methods should only be invoked when the metadata/message was
// successfully received, i.e., without any error.
virtual void RecordReceivedInitialMetadata(
grpc_metadata_batch* recv_initial_metadata, uint32_t flags) = 0;
- virtual void RecordReceivedMessage(const ByteStream& recv_message) = 0;
+ virtual void RecordReceivedMessage(const SliceBuffer& recv_message) = 0;
// If the call was cancelled before the recv_trailing_metadata op
// was started, recv_trailing_metadata and transport_stream_stats
// will be null.
diff --git a/contrib/libs/grpc/src/core/lib/channel/channel_args.cc b/contrib/libs/grpc/src/core/lib/channel/channel_args.cc
index b260e16493..068f2af016 100644
--- a/contrib/libs/grpc/src/core/lib/channel/channel_args.cc
+++ b/contrib/libs/grpc/src/core/lib/channel/channel_args.cc
@@ -21,12 +21,15 @@
#include "src/core/lib/channel/channel_args.h"
#include <limits.h>
+#include <stdlib.h>
#include <string.h>
+#include <algorithm>
#include <map>
#include <vector>
#include "y_absl/strings/match.h"
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
@@ -35,8 +38,235 @@
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
-#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/match.h"
+
+namespace grpc_core {
+
+ChannelArgs::Pointer::Pointer(void* p, const grpc_arg_pointer_vtable* vtable)
+ : p_(p), vtable_(vtable == nullptr ? EmptyVTable() : vtable) {}
+
+ChannelArgs::Pointer::Pointer(const Pointer& other)
+ : p_(other.vtable_->copy(other.p_)), vtable_(other.vtable_) {}
+
+ChannelArgs::Pointer::Pointer(Pointer&& other) noexcept
+ : p_(other.p_), vtable_(other.vtable_) {
+ other.p_ = nullptr;
+ other.vtable_ = EmptyVTable();
+}
+
+const grpc_arg_pointer_vtable* ChannelArgs::Pointer::EmptyVTable() {
+ static const grpc_arg_pointer_vtable vtable = {
+ // copy
+ [](void* p) { return p; },
+ // destroy
+ [](void*) {},
+ // cmp
+ [](void* p1, void* p2) -> int { return QsortCompare(p1, p2); },
+ };
+ return &vtable;
+}
+
+ChannelArgs::ChannelArgs() = default;
+ChannelArgs::~ChannelArgs() = default;
+ChannelArgs::ChannelArgs(const ChannelArgs& other) = default;
+ChannelArgs& ChannelArgs::operator=(const ChannelArgs& other) = default;
+ChannelArgs::ChannelArgs(ChannelArgs&& other) noexcept = default;
+ChannelArgs& ChannelArgs::operator=(ChannelArgs&& other) noexcept = default;
+
+const ChannelArgs::Value* ChannelArgs::Get(y_absl::string_view name) const {
+ return args_.Lookup(name);
+}
+
+bool ChannelArgs::Contains(y_absl::string_view name) const {
+ return Get(name) != nullptr;
+}
+
+bool ChannelArgs::operator<(const ChannelArgs& other) const {
+ return args_ < other.args_;
+}
+
+bool ChannelArgs::operator==(const ChannelArgs& other) const {
+ return args_ == other.args_;
+}
+
+bool ChannelArgs::operator!=(const ChannelArgs& other) const {
+ return !(*this == other);
+}
+
+bool ChannelArgs::WantMinimalStack() const {
+ return GetBool(GRPC_ARG_MINIMAL_STACK).value_or(false);
+}
+
+ChannelArgs::ChannelArgs(AVL<TString, Value> args)
+ : args_(std::move(args)) {}
+
+ChannelArgs ChannelArgs::Set(grpc_arg arg) const {
+ switch (arg.type) {
+ case GRPC_ARG_INTEGER:
+ return Set(arg.key, arg.value.integer);
+ case GRPC_ARG_STRING:
+ if (arg.value.string != nullptr) return Set(arg.key, arg.value.string);
+ return Set(arg.key, "");
+ case GRPC_ARG_POINTER:
+ return Set(arg.key,
+ Pointer(arg.value.pointer.vtable->copy(arg.value.pointer.p),
+ arg.value.pointer.vtable));
+ }
+ GPR_UNREACHABLE_CODE(return ChannelArgs());
+}
+
+ChannelArgs ChannelArgs::FromC(const grpc_channel_args* args) {
+ ChannelArgs result;
+ if (args != nullptr) {
+ for (size_t i = 0; i < args->num_args; i++) {
+ result = result.Set(args->args[i]);
+ }
+ }
+ return result;
+}
+
+ChannelArgs::CPtr ChannelArgs::ToC() const {
+ std::vector<grpc_arg> c_args;
+ args_.ForEach([&c_args](const TString& key, const Value& value) {
+ char* name = const_cast<char*>(key.c_str());
+ c_args.push_back(Match(
+ value,
+ [name](int i) { return grpc_channel_arg_integer_create(name, i); },
+ [name](const TString& s) {
+ return grpc_channel_arg_string_create(name,
+ const_cast<char*>(s.c_str()));
+ },
+ [name](const Pointer& p) {
+ return grpc_channel_arg_pointer_create(name, p.c_pointer(),
+ p.c_vtable());
+ }));
+ });
+ return CPtr(static_cast<const grpc_channel_args*>(
+ grpc_channel_args_copy_and_add(nullptr, c_args.data(), c_args.size())));
+}
+
+ChannelArgs ChannelArgs::Set(y_absl::string_view name, Pointer value) const {
+ return Set(name, Value(std::move(value)));
+}
+
+ChannelArgs ChannelArgs::Set(y_absl::string_view name, int value) const {
+ return Set(name, Value(value));
+}
+
+ChannelArgs ChannelArgs::Set(y_absl::string_view key, Value value) const {
+ return ChannelArgs(args_.Add(TString(key), std::move(value)));
+}
+
+ChannelArgs ChannelArgs::Set(y_absl::string_view key,
+ y_absl::string_view value) const {
+ return Set(key, TString(value));
+}
+
+ChannelArgs ChannelArgs::Set(y_absl::string_view key, const char* value) const {
+ return Set(key, TString(value));
+}
+
+ChannelArgs ChannelArgs::Set(y_absl::string_view key, TString value) const {
+ return Set(key, Value(std::move(value)));
+}
+
+ChannelArgs ChannelArgs::Remove(y_absl::string_view key) const {
+ return ChannelArgs(args_.Remove(key));
+}
+
+y_absl::optional<int> ChannelArgs::GetInt(y_absl::string_view name) const {
+ auto* v = Get(name);
+ if (v == nullptr) return y_absl::nullopt;
+ if (!y_absl::holds_alternative<int>(*v)) return y_absl::nullopt;
+ return y_absl::get<int>(*v);
+}
+
+y_absl::optional<Duration> ChannelArgs::GetDurationFromIntMillis(
+ y_absl::string_view name) const {
+ auto ms = GetInt(name);
+ if (!ms.has_value()) return y_absl::nullopt;
+ if (*ms == INT_MAX) return Duration::Infinity();
+ if (*ms == INT_MIN) return Duration::NegativeInfinity();
+ return Duration::Milliseconds(*ms);
+}
+
+y_absl::optional<y_absl::string_view> ChannelArgs::GetString(
+ y_absl::string_view name) const {
+ auto* v = Get(name);
+ if (v == nullptr) return y_absl::nullopt;
+ if (!y_absl::holds_alternative<TString>(*v)) return y_absl::nullopt;
+ return y_absl::get<TString>(*v);
+}
+
+y_absl::optional<TString> ChannelArgs::GetOwnedString(
+ y_absl::string_view name) const {
+ y_absl::optional<y_absl::string_view> v = GetString(name);
+ if (!v.has_value()) return y_absl::nullopt;
+ return TString(*v);
+}
+
+void* ChannelArgs::GetVoidPointer(y_absl::string_view name) const {
+ auto* v = Get(name);
+ if (v == nullptr) return nullptr;
+ if (!y_absl::holds_alternative<Pointer>(*v)) return nullptr;
+ return y_absl::get<Pointer>(*v).c_pointer();
+}
+
+y_absl::optional<bool> ChannelArgs::GetBool(y_absl::string_view name) const {
+ auto* v = Get(name);
+ if (v == nullptr) return y_absl::nullopt;
+ auto* i = y_absl::get_if<int>(v);
+ if (i == nullptr) {
+ gpr_log(GPR_ERROR, "%s ignored: it must be an integer",
+ TString(name).c_str());
+ return y_absl::nullopt;
+ }
+ switch (*i) {
+ case 0:
+ return false;
+ case 1:
+ return true;
+ default:
+ gpr_log(GPR_ERROR, "%s treated as bool but set to %d (assuming true)",
+ TString(name).c_str(), *i);
+ return true;
+ }
+}
+
+TString ChannelArgs::ToString() const {
+ std::vector<TString> arg_strings;
+ args_.ForEach([&arg_strings](const TString& key, const Value& value) {
+ TString value_str;
+ if (auto* i = y_absl::get_if<int>(&value)) {
+ value_str = ::ToString(*i);
+ } else if (auto* s = y_absl::get_if<TString>(&value)) {
+ value_str = *s;
+ } else if (auto* p = y_absl::get_if<Pointer>(&value)) {
+ value_str = y_absl::StrFormat("%p", p->c_pointer());
+ }
+ arg_strings.push_back(y_absl::StrCat(key, "=", value_str));
+ });
+ return y_absl::StrCat("{", y_absl::StrJoin(arg_strings, ", "), "}");
+}
+
+ChannelArgs ChannelArgs::UnionWith(ChannelArgs other) const {
+ args_.ForEach([&other](const TString& key, const Value& value) {
+ other.args_ = other.args_.Add(key, value);
+ });
+ return other;
+}
+
+void ChannelArgs::ChannelArgsDeleter::operator()(
+ const grpc_channel_args* p) const {
+ grpc_channel_args_destroy(p);
+}
+
+std::ostream& operator<<(std::ostream& out, const ChannelArgs& args) {
+ return out << args.ToString();
+}
+
+} // namespace grpc_core
static grpc_arg copy_arg(const grpc_arg* src) {
grpc_arg dst;
@@ -156,16 +386,9 @@ static int cmp_arg(const grpc_arg* a, const grpc_arg* b) {
case GRPC_ARG_INTEGER:
return grpc_core::QsortCompare(a->value.integer, b->value.integer);
case GRPC_ARG_POINTER:
- c = grpc_core::QsortCompare(a->value.pointer.p, b->value.pointer.p);
- if (c != 0) {
- c = grpc_core::QsortCompare(a->value.pointer.vtable,
- b->value.pointer.vtable);
- if (c == 0) {
- c = a->value.pointer.vtable->cmp(a->value.pointer.p,
- b->value.pointer.p);
- }
- }
- return c;
+ return grpc_core::channel_args_detail::PointerCompare(
+ a->value.pointer.p, a->value.pointer.vtable, b->value.pointer.p,
+ b->value.pointer.vtable);
}
GPR_UNREACHABLE_CODE(return 0);
}
@@ -345,49 +568,15 @@ grpc_arg grpc_channel_arg_pointer_create(
}
TString grpc_channel_args_string(const grpc_channel_args* args) {
- if (args == nullptr) return "";
- std::vector<TString> arg_strings;
- for (size_t i = 0; i < args->num_args; ++i) {
- const grpc_arg& arg = args->args[i];
- TString arg_string;
- switch (arg.type) {
- case GRPC_ARG_INTEGER:
- arg_string = y_absl::StrFormat("%s=%d", arg.key, arg.value.integer);
- break;
- case GRPC_ARG_STRING:
- arg_string = y_absl::StrFormat("%s=%s", arg.key, arg.value.string);
- break;
- case GRPC_ARG_POINTER:
- arg_string = y_absl::StrFormat("%s=%p", arg.key, arg.value.pointer.p);
- break;
- default:
- arg_string = "arg with unknown type";
- }
- arg_strings.push_back(arg_string);
- }
- return y_absl::StrJoin(arg_strings, ", ");
+ return grpc_core::ChannelArgs::FromC(args).ToString();
}
namespace grpc_core {
-const grpc_channel_args* RemoveGrpcInternalArgs(const grpc_channel_args* src) {
- if (src == nullptr) return nullptr;
- // Create result.
- grpc_channel_args* dst =
- static_cast<grpc_channel_args*>(gpr_malloc(sizeof(grpc_channel_args)));
- dst->args =
- static_cast<grpc_arg*>(gpr_malloc(sizeof(grpc_arg) * src->num_args));
- dst->num_args = 0;
- for (size_t i = 0; i < src->num_args; ++i) {
- if (y_absl::StartsWith(src->args[i].key, "grpc.internal.")) continue;
- dst->args[dst->num_args++] = copy_arg(&src->args[i]);
- }
- return dst;
-}
-
-const grpc_channel_args* UniquifyChannelArgKeys(const grpc_channel_args* src) {
- if (src == nullptr) return nullptr;
- std::map<y_absl::string_view, const grpc_arg*> values;
- std::map<y_absl::string_view, std::vector<TString>> concatenated_values;
+ChannelArgs ChannelArgsBuiltinPrecondition(const grpc_channel_args* src) {
+ if (src == nullptr) return ChannelArgs();
+ ChannelArgs output;
+ std::map<y_absl::string_view, std::vector<y_absl::string_view>>
+ concatenated_values;
for (size_t i = 0; i < src->num_args; i++) {
y_absl::string_view key = src->args[i].key;
// User-agent strings were traditionally multi-valued and concatenated.
@@ -401,47 +590,25 @@ const grpc_channel_args* UniquifyChannelArgKeys(const grpc_channel_args* src) {
concatenated_values[key].push_back(src->args[i].value.string);
}
continue;
+ } else if (y_absl::StartsWith(key, "grpc.internal.")) {
+ continue;
}
- auto it = values.find(key);
- if (it == values.end()) {
- values[key] = &src->args[i];
+ if (!output.Contains(key)) {
+ output = output.Set(src->args[i]);
} else {
// Traditional grpc_channel_args_find behavior was to pick the first
// value.
// For compatibility with existing users, we will do the same here.
}
}
- if (values.size() + concatenated_values.size() == src->num_args) {
- return grpc_channel_args_copy(src);
- }
// Concatenate the concatenated values.
- std::map<y_absl::string_view, TString> concatenated_values_str;
for (const auto& concatenated_value : concatenated_values) {
- concatenated_values_str[concatenated_value.first] =
- y_absl::StrJoin(concatenated_value.second, " ");
+ output = output.Set(concatenated_value.first,
+ y_absl::StrJoin(concatenated_value.second, " "));
}
- // Create the result
- std::vector<grpc_arg> argv;
- argv.reserve(values.size());
- for (const auto& a : values) {
- argv.push_back(*a.second);
- }
- for (const auto& a : concatenated_values_str) {
- argv.push_back(
- grpc_channel_arg_string_create(const_cast<char*>(a.first.data()),
- const_cast<char*>(a.second.c_str())));
- }
- grpc_channel_args args = {argv.size(), argv.data()};
- // Log that we're mutating things
- gpr_log(GPR_INFO,
- "Uniquification pass on channel args is mutating them: {%s} is being "
- "changed to {%s}",
- grpc_channel_args_string(src).c_str(),
- grpc_channel_args_string(&args).c_str());
- // Return the result (note we need to copy because we're borrowing the args
- // from src still!)
- return grpc_channel_args_copy(&args);
+ return output;
}
+
} // namespace grpc_core
namespace {
diff --git a/contrib/libs/grpc/src/core/lib/channel/channel_args.h b/contrib/libs/grpc/src/core/lib/channel/channel_args.h
index a5a6b6f482..e62d31d8df 100644
--- a/contrib/libs/grpc/src/core/lib/channel/channel_args.h
+++ b/contrib/libs/grpc/src/core/lib/channel/channel_args.h
@@ -21,15 +21,402 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <algorithm> // IWYU pragma: keep
+#include <iosfwd>
+#include <memory>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+#include "y_absl/types/variant.h"
#include <grpc/impl/codegen/grpc_types.h>
+#include "src/core/lib/avl/avl.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/dual_ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/surface/channel_stack_type.h"
// Channel args are intentionally immutable, to avoid the need for locking.
+namespace grpc_core {
+
+// Define a traits object for vtable lookup - allows us to integrate with
+// existing code easily (just define the trait!) and allows some magic in
+// ChannelArgs to automatically derive a vtable from a T*.
+// To participate as a pointer, instances should expose the function:
+// // Gets the vtable for this type
+// static const grpc_arg_pointer_vtable* VTable();
+// // Performs any mutations required for channel args to own a pointer
+// // Only needed if ChannelArgs::Set is to be called with a raw pointer.
+// static void* TakeUnownedPointer(T* p);
+template <typename T, typename Ignored = void /* for SFINAE */>
+struct ChannelArgTypeTraits;
+
+namespace channel_args_detail {
+inline int PointerCompare(void* a_ptr, const grpc_arg_pointer_vtable* a_vtable,
+ void* b_ptr,
+ const grpc_arg_pointer_vtable* b_vtable) {
+ int c = QsortCompare(a_ptr, b_ptr);
+ if (c == 0) return 0;
+ c = QsortCompare(a_vtable, b_vtable);
+ if (c != 0) return c;
+ return a_vtable->cmp(a_ptr, b_ptr);
+}
+
+// The type returned by calling Ref() on a T - used to determine the basest-type
+// before the crt refcount base class.
+template <typename T>
+using RefType = y_absl::remove_cvref_t<decltype(*std::declval<T>().Ref())>;
+} // namespace channel_args_detail
+
+// Specialization for ref-counted pointers.
+// Types should expose:
+// static int ChannelArgsCompare(const T* a, const T* b);
+template <typename T>
+struct ChannelArgTypeTraits<
+ T, y_absl::enable_if_t<
+ std::is_base_of<RefCounted<channel_args_detail::RefType<T>>,
+ channel_args_detail::RefType<T>>::value ||
+ std::is_base_of<RefCounted<channel_args_detail::RefType<T>,
+ NonPolymorphicRefCount>,
+ channel_args_detail::RefType<T>>::value ||
+ std::is_base_of<DualRefCounted<channel_args_detail::RefType<T>>,
+ channel_args_detail::RefType<T>>::value,
+ void>> {
+ static const grpc_arg_pointer_vtable* VTable() {
+ static const grpc_arg_pointer_vtable tbl = {
+ // copy
+ [](void* p) -> void* {
+ return p == nullptr ? nullptr
+ : static_cast<T*>(p)
+ ->Ref(DEBUG_LOCATION, "ChannelArgs copy")
+ .release();
+ },
+ // destroy
+ [](void* p) {
+ if (p != nullptr) {
+ static_cast<T*>(p)->Unref(DEBUG_LOCATION, "ChannelArgs destroy");
+ }
+ },
+ // compare
+ [](void* p1, void* p2) {
+ return T::ChannelArgsCompare(static_cast<const T*>(p1),
+ static_cast<const T*>(p2));
+ },
+ };
+ return &tbl;
+ };
+};
+
+// Specialization for shared_ptr
+// Incurs an allocation because shared_ptr.release is not a thing.
+template <typename T>
+struct is_shared_ptr : std::false_type {};
+template <typename T>
+struct is_shared_ptr<std::shared_ptr<T>> : std::true_type {};
+template <typename T>
+struct ChannelArgTypeTraits<T,
+ y_absl::enable_if_t<is_shared_ptr<T>::value, void>> {
+ static void* TakeUnownedPointer(T* p) { return p; }
+ static const grpc_arg_pointer_vtable* VTable() {
+ static const grpc_arg_pointer_vtable tbl = {
+ // copy
+ [](void* p) -> void* { return new T(*static_cast<T*>(p)); },
+ // destroy
+ [](void* p) { delete static_cast<T*>(p); },
+ // compare
+ [](void* p1, void* p2) {
+ return QsortCompare(static_cast<const T*>(p1)->get(),
+ static_cast<const T*>(p2)->get());
+ },
+ };
+ return &tbl;
+ };
+};
+
+// If a type declares some member 'struct RawPointerChannelArgTag {}' then
+// we automatically generate a vtable for it that does not do any ownership
+// management and compares the type by pointer identity.
+// This is intended to be relatively ugly because *most types should worry about
+// ownership*.
+template <typename T>
+struct ChannelArgTypeTraits<T,
+ y_absl::void_t<typename T::RawPointerChannelArgTag>> {
+ static void* TakeUnownedPointer(T* p) { return p; }
+ static const grpc_arg_pointer_vtable* VTable() {
+ static const grpc_arg_pointer_vtable tbl = {
+ // copy
+ [](void* p) -> void* { return p; },
+ // destroy
+ [](void*) {},
+ // compare
+ [](void* p1, void* p2) { return QsortCompare(p1, p2); },
+ };
+ return &tbl;
+ };
+};
+
+// GetObject support for shared_ptr and RefCountedPtr
+template <typename T>
+struct WrapInSharedPtr
+ : std::integral_constant<
+ bool, std::is_base_of<std::enable_shared_from_this<T>, T>::value> {};
+template <typename T, typename Ignored = void /* for SFINAE */>
+struct GetObjectImpl;
+// std::shared_ptr implementation
+template <typename T>
+struct GetObjectImpl<T, y_absl::enable_if_t<WrapInSharedPtr<T>::value, void>> {
+ using Result = T*;
+ using ReffedResult = std::shared_ptr<T>;
+ using StoredType = std::shared_ptr<T>*;
+ static Result Get(StoredType p) { return p->get(); };
+ static ReffedResult GetReffed(StoredType p) { return ReffedResult(*p); };
+ static ReffedResult GetReffed(StoredType p,
+ const DebugLocation& /* location */,
+ const char* /* reason */) {
+ return GetReffed(*p);
+ };
+};
+// RefCountedPtr
+template <typename T>
+struct GetObjectImpl<T, y_absl::enable_if_t<!WrapInSharedPtr<T>::value, void>> {
+ using Result = T*;
+ using ReffedResult = RefCountedPtr<T>;
+ using StoredType = Result;
+ static Result Get(StoredType p) { return p; };
+ static ReffedResult GetReffed(StoredType p) {
+ if (p == nullptr) return nullptr;
+ return p->Ref();
+ };
+ static ReffedResult GetReffed(StoredType p, const DebugLocation& location,
+ const char* reason) {
+ if (p == nullptr) return nullptr;
+ return p->Ref(location, reason);
+ };
+};
+
+// Provide the canonical name for a type's channel arg key
+template <typename T>
+struct ChannelArgNameTraits {
+ static y_absl::string_view ChannelArgName() { return T::ChannelArgName(); }
+};
+template <typename T>
+struct ChannelArgNameTraits<std::shared_ptr<T>> {
+ static y_absl::string_view ChannelArgName() { return T::ChannelArgName(); }
+};
+
+class ChannelArgs {
+ public:
+ class Pointer {
+ public:
+ Pointer(void* p, const grpc_arg_pointer_vtable* vtable);
+ ~Pointer() { vtable_->destroy(p_); }
+
+ Pointer(const Pointer& other);
+ Pointer& operator=(Pointer other) {
+ std::swap(p_, other.p_);
+ std::swap(vtable_, other.vtable_);
+ return *this;
+ }
+ Pointer(Pointer&& other) noexcept;
+ Pointer& operator=(Pointer&& other) noexcept {
+ std::swap(p_, other.p_);
+ std::swap(vtable_, other.vtable_);
+ return *this;
+ }
+
+ friend int QsortCompare(const Pointer& a, const Pointer& b) {
+ return channel_args_detail::PointerCompare(a.p_, a.vtable_, b.p_,
+ b.vtable_);
+ }
+
+ bool operator==(const Pointer& rhs) const {
+ return QsortCompare(*this, rhs) == 0;
+ }
+ bool operator<(const Pointer& rhs) const {
+ return QsortCompare(*this, rhs) < 0;
+ }
+ bool operator!=(const Pointer& rhs) const {
+ return QsortCompare(*this, rhs) != 0;
+ }
+
+ void* c_pointer() const { return p_; }
+ const grpc_arg_pointer_vtable* c_vtable() const { return vtable_; }
+
+ private:
+ static const grpc_arg_pointer_vtable* EmptyVTable();
+
+ void* p_;
+ const grpc_arg_pointer_vtable* vtable_;
+ };
+
+ using Value = y_absl::variant<int, TString, Pointer>;
+
+ struct ChannelArgsDeleter {
+ void operator()(const grpc_channel_args* p) const;
+ };
+ using CPtr =
+ std::unique_ptr<const grpc_channel_args, ChannelArgs::ChannelArgsDeleter>;
+
+ ChannelArgs();
+ ~ChannelArgs();
+ ChannelArgs(const ChannelArgs&);
+ ChannelArgs& operator=(const ChannelArgs&);
+ ChannelArgs(ChannelArgs&&) noexcept;
+ ChannelArgs& operator=(ChannelArgs&&) noexcept;
+
+ static ChannelArgs FromC(const grpc_channel_args* args);
+ static ChannelArgs FromC(const grpc_channel_args& args) {
+ return FromC(&args);
+ }
+ // Construct a new grpc_channel_args struct.
+ CPtr ToC() const;
+
+ // Returns the union of this channel args with other.
+ // If a key is present in both, the value from this is used.
+ GRPC_MUST_USE_RESULT ChannelArgs UnionWith(ChannelArgs other) const;
+
+ const Value* Get(y_absl::string_view name) const;
+ GRPC_MUST_USE_RESULT ChannelArgs Set(y_absl::string_view name,
+ Pointer value) const;
+ GRPC_MUST_USE_RESULT ChannelArgs Set(y_absl::string_view name, int value) const;
+ GRPC_MUST_USE_RESULT ChannelArgs Set(y_absl::string_view name,
+ y_absl::string_view value) const;
+ GRPC_MUST_USE_RESULT ChannelArgs Set(y_absl::string_view name,
+ TString value) const;
+ GRPC_MUST_USE_RESULT ChannelArgs Set(y_absl::string_view name,
+ const char* value) const;
+ GRPC_MUST_USE_RESULT ChannelArgs Set(grpc_arg arg) const;
+ template <typename T>
+ GRPC_MUST_USE_RESULT y_absl::enable_if_t<
+ std::is_same<const grpc_arg_pointer_vtable*,
+ decltype(ChannelArgTypeTraits<T>::VTable())>::value,
+ ChannelArgs>
+ Set(y_absl::string_view name, T* value) const {
+ return Set(name, Pointer(ChannelArgTypeTraits<T>::TakeUnownedPointer(value),
+ ChannelArgTypeTraits<T>::VTable()));
+ }
+ template <typename T>
+ GRPC_MUST_USE_RESULT auto Set(y_absl::string_view name,
+ RefCountedPtr<T> value) const
+ -> y_absl::enable_if_t<
+ std::is_same<const grpc_arg_pointer_vtable*,
+ decltype(ChannelArgTypeTraits<
+ y_absl::remove_cvref_t<T>>::VTable())>::value,
+ ChannelArgs> {
+ return Set(
+ name, Pointer(value.release(),
+ ChannelArgTypeTraits<y_absl::remove_cvref_t<T>>::VTable()));
+ }
+ template <typename T>
+ GRPC_MUST_USE_RESULT y_absl::enable_if_t<
+ std::is_same<
+ const grpc_arg_pointer_vtable*,
+ decltype(ChannelArgTypeTraits<std::shared_ptr<T>>::VTable())>::value,
+ ChannelArgs>
+ Set(y_absl::string_view name, std::shared_ptr<T> value) const {
+ auto* store_value = new std::shared_ptr<T>(value);
+ return Set(
+ name,
+ Pointer(ChannelArgTypeTraits<std::shared_ptr<T>>::TakeUnownedPointer(
+ store_value),
+ ChannelArgTypeTraits<std::shared_ptr<T>>::VTable()));
+ }
+ template <typename T>
+ GRPC_MUST_USE_RESULT ChannelArgs SetIfUnset(y_absl::string_view name,
+ T value) const {
+ if (Contains(name)) return *this;
+ return Set(name, std::move(value));
+ }
+ GRPC_MUST_USE_RESULT ChannelArgs Remove(y_absl::string_view name) const;
+ bool Contains(y_absl::string_view name) const;
+
+ template <typename T>
+ bool ContainsObject() const {
+ return Get(ChannelArgNameTraits<T>::ChannelArgName()) != nullptr;
+ }
+
+ y_absl::optional<int> GetInt(y_absl::string_view name) const;
+ y_absl::optional<y_absl::string_view> GetString(y_absl::string_view name) const;
+ y_absl::optional<TString> GetOwnedString(y_absl::string_view name) const;
+ void* GetVoidPointer(y_absl::string_view name) const;
+ template <typename T>
+ typename GetObjectImpl<T>::StoredType GetPointer(
+ y_absl::string_view name) const {
+ return static_cast<typename GetObjectImpl<T>::StoredType>(
+ GetVoidPointer(name));
+ }
+ y_absl::optional<Duration> GetDurationFromIntMillis(
+ y_absl::string_view name) const;
+ y_absl::optional<bool> GetBool(y_absl::string_view name) const;
+
+ // Object based get/set.
+ // Deal with the common case that we set a pointer to an object under
+ // the same name in every usage.
+ // Expects ChannelArgTypeTraits to exist for T, and T to expose:
+ // static string_view ChannelArgName();
+ template <typename T>
+ GRPC_MUST_USE_RESULT ChannelArgs SetObject(T* p) const {
+ return Set(T::ChannelArgName(), p);
+ }
+ template <typename T>
+ GRPC_MUST_USE_RESULT ChannelArgs SetObject(RefCountedPtr<T> p) const {
+ return Set(T::ChannelArgName(), std::move(p));
+ }
+ template <typename T>
+ GRPC_MUST_USE_RESULT ChannelArgs SetObject(std::shared_ptr<T> p) const {
+ return Set(ChannelArgNameTraits<T>::ChannelArgName(), std::move(p));
+ }
+ template <typename T>
+ typename GetObjectImpl<T>::Result GetObject() const {
+ return GetObjectImpl<T>::Get(
+ GetPointer<T>(ChannelArgNameTraits<T>::ChannelArgName()));
+ }
+ template <typename T>
+ typename GetObjectImpl<T>::ReffedResult GetObjectRef() const {
+ return GetObjectImpl<T>::GetReffed(
+ GetPointer<T>(ChannelArgNameTraits<T>::ChannelArgName()));
+ }
+ template <typename T>
+ typename GetObjectImpl<T>::ReffedResult GetObjectRef(
+ const DebugLocation& location, const char* reason) const {
+ return GetObjectImpl<T>::GetReffed(
+ GetPointer<T>(ChannelArgNameTraits<T>::ChannelArgName()), location,
+ reason);
+ }
+
+ bool operator!=(const ChannelArgs& other) const;
+ bool operator<(const ChannelArgs& other) const;
+ bool operator==(const ChannelArgs& other) const;
+
+ // Helpers for commonly accessed things
+
+ bool WantMinimalStack() const;
+ TString ToString() const;
+
+ private:
+ explicit ChannelArgs(AVL<TString, Value> args);
+
+ GRPC_MUST_USE_RESULT ChannelArgs Set(y_absl::string_view name,
+ Value value) const;
+
+ AVL<TString, Value> args_;
+};
+
+std::ostream& operator<<(std::ostream& out, const ChannelArgs& args);
+
+} // namespace grpc_core
+
/** Copy the arguments in \a src into a new instance */
grpc_channel_args* grpc_channel_args_copy(const grpc_channel_args* src);
@@ -121,20 +508,16 @@ grpc_arg grpc_channel_arg_pointer_create(char* name, void* value,
TString grpc_channel_args_string(const grpc_channel_args* args);
namespace grpc_core {
-/** Remove any channel args prefixed with 'grpc.internal.'
- * These are used for internal implementation details and are not intended to
- * be exposed to users.
- * Returns a new channel args instance.
- * Does not take ownership of \a src.
- * Should be called by any public API that receives channel args. */
-const grpc_channel_args* RemoveGrpcInternalArgs(const grpc_channel_args* src);
-/** Ensure no duplicate channel args, in preparation for moving to a map<> */
-const grpc_channel_args* UniquifyChannelArgKeys(const grpc_channel_args* src);
+// Ensure no duplicate channel args (with some backwards compatibility hacks).
+// Eliminate any grpc.internal.* args.
+// Return a C++ object.
+ChannelArgs ChannelArgsBuiltinPrecondition(const grpc_channel_args* src);
} // namespace grpc_core
// Takes ownership of the old_args
-typedef grpc_channel_args* (*grpc_channel_args_client_channel_creation_mutator)(
- const char* target, grpc_channel_args* old_args,
+typedef grpc_core::ChannelArgs (
+ *grpc_channel_args_client_channel_creation_mutator)(
+ const char* target, const grpc_core::ChannelArgs& old_args,
grpc_channel_stack_type type);
// Should be called only once globaly before grpc is init'ed.
diff --git a/contrib/libs/grpc/src/core/lib/channel/channel_args_preconditioning.cc b/contrib/libs/grpc/src/core/lib/channel/channel_args_preconditioning.cc
index 640ca58b9d..a251be38a1 100644
--- a/contrib/libs/grpc/src/core/lib/channel/channel_args_preconditioning.cc
+++ b/contrib/libs/grpc/src/core/lib/channel/channel_args_preconditioning.cc
@@ -16,7 +16,8 @@
#include "src/core/lib/channel/channel_args_preconditioning.h"
-#include <grpc/support/alloc.h>
+#include <algorithm>
+#include <utility>
namespace grpc_core {
@@ -25,24 +26,18 @@ void ChannelArgsPreconditioning::Builder::RegisterStage(Stage stage) {
}
ChannelArgsPreconditioning ChannelArgsPreconditioning::Builder::Build() {
- // TODO(ctiller): should probably make this registered too.
- stages_.emplace_back(RemoveGrpcInternalArgs);
- stages_.emplace_back(UniquifyChannelArgKeys);
-
ChannelArgsPreconditioning preconditioning;
preconditioning.stages_ = std::move(stages_);
return preconditioning;
}
-const grpc_channel_args* ChannelArgsPreconditioning::PreconditionChannelArgs(
+ChannelArgs ChannelArgsPreconditioning::PreconditionChannelArgs(
const grpc_channel_args* args) const {
- const grpc_channel_args* owned_args = nullptr;
+ ChannelArgs channel_args = ChannelArgsBuiltinPrecondition(args);
for (auto& stage : stages_) {
- args = stage(args);
- grpc_channel_args_destroy(owned_args);
- owned_args = args;
+ channel_args = stage(std::move(channel_args));
}
- return args;
+ return channel_args;
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/channel/channel_args_preconditioning.h b/contrib/libs/grpc/src/core/lib/channel/channel_args_preconditioning.h
index 224399fb54..2f333aa252 100644
--- a/contrib/libs/grpc/src/core/lib/channel/channel_args_preconditioning.h
+++ b/contrib/libs/grpc/src/core/lib/channel/channel_args_preconditioning.h
@@ -20,6 +20,8 @@
#include <functional>
#include <vector>
+#include <grpc/impl/codegen/grpc_types.h>
+
#include "src/core/lib/channel/channel_args.h"
namespace grpc_core {
@@ -33,8 +35,7 @@ class ChannelArgsPreconditioning {
// Take channel args and mutate them.
// Does not take ownership of the channel args passed in.
// Returns a new channel args object that is owned by the caller.
- using Stage =
- std::function<const grpc_channel_args*(const grpc_channel_args*)>;
+ using Stage = std::function<ChannelArgs(ChannelArgs)>;
class Builder {
public:
@@ -50,8 +51,7 @@ class ChannelArgsPreconditioning {
// Take channel args and precondition them.
// Does not take ownership of the channel args passed in.
// Returns a new channel args object that is owned by the caller.
- const grpc_channel_args* PreconditionChannelArgs(
- const grpc_channel_args* args) const;
+ ChannelArgs PreconditionChannelArgs(const grpc_channel_args* args) const;
private:
std::vector<Stage> stages_;
diff --git a/contrib/libs/grpc/src/core/lib/channel/channel_fwd.h b/contrib/libs/grpc/src/core/lib/channel/channel_fwd.h
new file mode 100644
index 0000000000..d63dfa94d7
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/channel/channel_fwd.h
@@ -0,0 +1,26 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_CHANNEL_CHANNEL_FWD_H
+#define GRPC_CORE_LIB_CHANNEL_CHANNEL_FWD_H
+
+typedef struct grpc_channel_stack grpc_channel_stack;
+typedef struct grpc_channel_filter grpc_channel_filter;
+
+typedef struct grpc_channel_element grpc_channel_element;
+typedef struct grpc_call_element grpc_call_element;
+
+typedef struct grpc_call_stack grpc_call_stack;
+
+#endif // GRPC_CORE_LIB_CHANNEL_CHANNEL_FWD_H
diff --git a/contrib/libs/grpc/src/core/lib/channel/channel_stack.cc b/contrib/libs/grpc/src/core/lib/channel/channel_stack.cc
index 3d02f19fe5..60f1d51c59 100644
--- a/contrib/libs/grpc/src/core/lib/channel/channel_stack.cc
+++ b/contrib/libs/grpc/src/core/lib/channel/channel_stack.cc
@@ -20,10 +20,10 @@
#include "src/core/lib/channel/channel_stack.h"
-#include <stdlib.h>
-#include <string.h>
+#include <stdint.h>
+
+#include <utility>
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include "src/core/lib/gpr/alloc.h"
@@ -113,6 +113,8 @@ grpc_error_handle grpc_channel_stack_init(
}
}
+ stack->on_destroy.Init([]() {});
+
size_t call_size =
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call_stack)) +
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(filter_count * sizeof(grpc_call_element));
@@ -140,8 +142,8 @@ grpc_error_handle grpc_channel_stack_init(
elems[i].channel_data = user_data;
grpc_error_handle error =
elems[i].filter->init_channel_elem(&elems[i], &args);
- if (error != GRPC_ERROR_NONE) {
- if (first_error == GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ if (GRPC_ERROR_IS_NONE(first_error)) {
first_error = error;
} else {
GRPC_ERROR_UNREF(error);
@@ -169,6 +171,9 @@ void grpc_channel_stack_destroy(grpc_channel_stack* stack) {
for (i = 0; i < count; i++) {
channel_elems[i].filter->destroy_channel_elem(&channel_elems[i]);
}
+
+ (*stack->on_destroy)();
+ stack->on_destroy.Destroy();
}
grpc_error_handle grpc_call_stack_init(
@@ -199,8 +204,8 @@ grpc_error_handle grpc_call_stack_init(
for (size_t i = 0; i < count; i++) {
grpc_error_handle error =
call_elems[i].filter->init_call_elem(&call_elems[i], elem_args);
- if (error != GRPC_ERROR_NONE) {
- if (first_error == GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ if (GRPC_ERROR_IS_NONE(first_error)) {
first_error = error;
} else {
GRPC_ERROR_UNREF(error);
@@ -272,3 +277,35 @@ grpc_call_stack* grpc_call_stack_from_top_element(grpc_call_element* elem) {
reinterpret_cast<char*>(elem) -
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call_stack)));
}
+
+void grpc_channel_stack_no_post_init(grpc_channel_stack*,
+ grpc_channel_element*) {}
+
+namespace {
+
+grpc_core::NextPromiseFactory ClientNext(grpc_channel_element* elem) {
+ return [elem](grpc_core::CallArgs args) {
+ return elem->filter->make_call_promise(elem, std::move(args),
+ ClientNext(elem + 1));
+ };
+}
+
+grpc_core::NextPromiseFactory ServerNext(grpc_channel_element* elem) {
+ return [elem](grpc_core::CallArgs args) {
+ return elem->filter->make_call_promise(elem, std::move(args),
+ ServerNext(elem - 1));
+ };
+}
+
+} // namespace
+
+grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle>
+grpc_channel_stack::MakeCallPromise(grpc_core::CallArgs call_args) {
+ if (is_client) {
+ return ClientNext(grpc_channel_stack_element(this, 0))(
+ std::move(call_args));
+ } else {
+ return ServerNext(grpc_channel_stack_element(this, this->count - 1))(
+ std::move(call_args));
+ }
+}
diff --git a/contrib/libs/grpc/src/core/lib/channel/channel_stack.h b/contrib/libs/grpc/src/core/lib/channel/channel_stack.h
index 00a09db96f..b555263b8b 100644
--- a/contrib/libs/grpc/src/core/lib/channel/channel_stack.h
+++ b/contrib/libs/grpc/src/core/lib/channel/channel_stack.h
@@ -50,27 +50,27 @@
#include <functional>
-#include <grpc/grpc.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
+#include <grpc/status.h>
#include <grpc/support/log.h>
-#include <grpc/support/time.h>
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/context.h"
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gpr/time_precise.h"
+#include "src/core/lib/gprpp/manual_constructor.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/polling_entity.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/resource_quota/arena.h"
-#include "src/core/lib/transport/metadata_batch.h"
#include "src/core/lib/transport/transport.h"
-typedef struct grpc_channel_element grpc_channel_element;
-typedef struct grpc_call_element grpc_call_element;
-
-typedef struct grpc_channel_stack grpc_channel_stack;
-typedef struct grpc_call_stack grpc_call_stack;
-
-#define GRPC_ARG_TRANSPORT "grpc.internal.transport"
-
struct grpc_channel_element_args {
grpc_channel_stack* channel_stack;
const grpc_channel_args* channel_args;
@@ -122,9 +122,8 @@ struct grpc_channel_filter {
- allocation of memory for call data
There is an on-going migration to move all filters to providing this, and
then to drop start_transport_stream_op_batch. */
- grpc_core::ArenaPromise<grpc_core::TrailingMetadata> (*make_call_promise)(
- grpc_channel_element* elem,
- grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle> (*make_call_promise)(
+ grpc_channel_element* elem, grpc_core::CallArgs call_args,
grpc_core::NextPromiseFactory next_promise_factory);
/* Called to handle channel level operations - e.g. new calls, or transport
closure.
@@ -167,6 +166,10 @@ struct grpc_channel_filter {
Implementations may assume that elem->channel_data is all zeros. */
grpc_error_handle (*init_channel_elem)(grpc_channel_element* elem,
grpc_channel_element_args* args);
+ /* Post init per-channel data.
+ Called after all channel elements have been successfully created. */
+ void (*post_init_channel_elem)(grpc_channel_stack* stk,
+ grpc_channel_element* elem);
/* Destroy per channel data.
The filter does not need to do any chaining */
void (*destroy_channel_elem)(grpc_channel_element* elem);
@@ -198,10 +201,16 @@ struct grpc_call_element {
guarantees they live within a single malloc() allocation */
struct grpc_channel_stack {
grpc_stream_refcount refcount;
+ bool is_client;
size_t count;
/* Memory required for a call stack (computed at channel stack
initialization) */
size_t call_stack_size;
+ // TODO(ctiller): remove this mechanism... it's a hack to allow
+ // Channel to be separated from grpc_channel_stack's allocation. As the
+ // promise conversion continues, we'll reconsider what grpc_channel_stack
+ // should look like and this can go.
+ grpc_core::ManualConstructor<std::function<void()>> on_destroy;
// Minimal infrastructure to act like a RefCounted thing without converting
// everything.
@@ -214,6 +223,9 @@ struct grpc_channel_stack {
IncrementRefCount();
return grpc_core::RefCountedPtr<grpc_channel_stack>(this);
}
+
+ grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle> MakeCallPromise(
+ grpc_core::CallArgs call_args);
};
/* A call stack tracks a set of related filters for one call, and guarantees
@@ -225,6 +237,16 @@ struct grpc_call_stack {
about the address of the call stack itself. */
grpc_stream_refcount refcount;
size_t count;
+
+ // Minimal infrastructure to act like a RefCounted thing without converting
+ // everything.
+ // grpc_call_stack will be eliminated once the promise conversion completes.
+ void IncrementRefCount();
+ void Unref();
+ grpc_core::RefCountedPtr<grpc_call_stack> Ref() {
+ IncrementRefCount();
+ return grpc_core::RefCountedPtr<grpc_call_stack>(this);
+ }
};
/* Get a channel element given a channel stack and its index */
@@ -307,6 +329,14 @@ inline void grpc_channel_stack::Unref() {
GRPC_CHANNEL_STACK_UNREF(this, "smart_pointer");
}
+inline void grpc_call_stack::IncrementRefCount() {
+ GRPC_CALL_STACK_REF(this, "smart_pointer");
+}
+
+inline void grpc_call_stack::Unref() {
+ GRPC_CALL_STACK_UNREF(this, "smart_pointer");
+}
+
/* Destroy a call stack */
void grpc_call_stack_destroy(grpc_call_stack* stack,
const grpc_call_final_info* final_info,
@@ -336,6 +366,9 @@ void grpc_call_log_op(const char* file, int line, gpr_log_severity severity,
grpc_call_element* elem,
grpc_transport_stream_op_batch* op);
+void grpc_channel_stack_no_post_init(grpc_channel_stack* stk,
+ grpc_channel_element* elem);
+
extern grpc_core::TraceFlag grpc_trace_channel;
#define GRPC_CALL_LOG_OP(sev, elem, op) \
diff --git a/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder.cc b/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder.cc
index bcfd022d72..45ef965a5b 100644
--- a/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder.cc
+++ b/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder.cc
@@ -20,20 +20,13 @@
#include "src/core/lib/channel/channel_stack_builder.h"
-#include <string.h>
-
-#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
+#include <algorithm>
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channel_stack_builder.h"
-#include "src/core/lib/gprpp/memory.h"
namespace grpc_core {
-ChannelStackBuilder::~ChannelStackBuilder() {
- grpc_channel_args_destroy(args_);
-}
+ChannelStackBuilder::~ChannelStackBuilder() = default;
ChannelStackBuilder& ChannelStackBuilder::SetTarget(const char* target) {
if (target == nullptr) {
@@ -45,85 +38,17 @@ ChannelStackBuilder& ChannelStackBuilder::SetTarget(const char* target) {
}
ChannelStackBuilder& ChannelStackBuilder::SetChannelArgs(
- const grpc_channel_args* args) {
- grpc_channel_args_destroy(args_);
- args_ = grpc_channel_args_copy(args);
+ const ChannelArgs& args) {
+ args_ = args;
return *this;
}
-void ChannelStackBuilder::PrependFilter(const grpc_channel_filter* filter,
- PostInitFunc post_init) {
- stack_.insert(stack_.begin(), {filter, std::move(post_init)});
-}
-
-void ChannelStackBuilder::AppendFilter(const grpc_channel_filter* filter,
- PostInitFunc post_init) {
- stack_.push_back({filter, std::move(post_init)});
+void ChannelStackBuilder::PrependFilter(const grpc_channel_filter* filter) {
+ stack_.insert(stack_.begin(), filter);
}
-grpc_error_handle ChannelStackBuilder::Build(size_t prefix_bytes,
- int initial_refs,
- grpc_iomgr_cb_func destroy,
- void* destroy_arg, void** result) {
- // create an array of filters
- std::vector<const grpc_channel_filter*> filters;
- filters.reserve(stack_.size());
- for (const auto& elem : stack_) {
- filters.push_back(elem.filter);
- }
-
- // calculate the size of the channel stack
- size_t channel_stack_size =
- grpc_channel_stack_size(filters.data(), filters.size());
-
- // allocate memory, with prefix_bytes followed by channel_stack_size
- *result = gpr_zalloc(prefix_bytes + channel_stack_size);
- // fetch a pointer to the channel stack
- grpc_channel_stack* channel_stack = reinterpret_cast<grpc_channel_stack*>(
- static_cast<char*>(*result) + prefix_bytes);
-
- const grpc_channel_args* final_args;
- if (transport_ != nullptr) {
- static const grpc_arg_pointer_vtable vtable = {
- // copy
- [](void* p) { return p; },
- // destroy
- [](void*) {},
- // cmp
- [](void* a, void* b) { return QsortCompare(a, b); },
- };
- grpc_arg arg = grpc_channel_arg_pointer_create(
- const_cast<char*>(GRPC_ARG_TRANSPORT), transport_, &vtable);
- final_args = grpc_channel_args_copy_and_add(args_, &arg, 1);
- } else {
- final_args = args_;
- }
-
- // and initialize it
- grpc_error_handle error = grpc_channel_stack_init(
- initial_refs, destroy, destroy_arg == nullptr ? *result : destroy_arg,
- filters.data(), filters.size(), final_args, name_, channel_stack);
-
- if (final_args != args_) {
- grpc_channel_args_destroy(final_args);
- }
-
- if (error != GRPC_ERROR_NONE) {
- grpc_channel_stack_destroy(channel_stack);
- gpr_free(*result);
- *result = nullptr;
- return error;
- }
-
- // run post-initialization functions
- for (size_t i = 0; i < filters.size(); i++) {
- if (stack_[i].post_init != nullptr) {
- stack_[i].post_init(channel_stack,
- grpc_channel_stack_element(channel_stack, i));
- }
- }
-
- return GRPC_ERROR_NONE;
+void ChannelStackBuilder::AppendFilter(const grpc_channel_filter* filter) {
+ stack_.push_back(filter);
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder.h b/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder.h
index 7f60507021..6a8aef572e 100644
--- a/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder.h
+++ b/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder.h
@@ -17,10 +17,20 @@
#include <grpc/support/port_platform.h>
-#include <stdbool.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/support/log.h>
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/surface/channel_stack_type.h"
+#include "src/core/lib/transport/transport_fwd.h"
namespace grpc_core {
@@ -31,21 +41,11 @@ namespace grpc_core {
// and a transport.
class ChannelStackBuilder {
public:
- // A function that will be called after the channel stack is successfully
- // built.
- using PostInitFunc = std::function<void(grpc_channel_stack* channel_stack,
- grpc_channel_element* elem)>;
-
- // One filter in the currently building stack.
- struct StackEntry {
- const grpc_channel_filter* filter;
- PostInitFunc post_init;
- };
-
// Initialize with a name.
- explicit ChannelStackBuilder(const char* name) : name_(name) {}
+ ChannelStackBuilder(const char* name, grpc_channel_stack_type type)
+ : name_(name), type_(type) {}
- ~ChannelStackBuilder();
+ const char* name() const { return name_; }
// Set the target string.
ChannelStackBuilder& SetTarget(const char* target);
@@ -63,44 +63,51 @@ class ChannelStackBuilder {
// Query the transport.
grpc_transport* transport() const { return transport_; }
- // Set channel args (takes a copy of them).
- ChannelStackBuilder& SetChannelArgs(const grpc_channel_args* args);
+ // Set channel args.
+ ChannelStackBuilder& SetChannelArgs(const ChannelArgs& args);
// Query the channel args.
- const grpc_channel_args* channel_args() const { return args_; }
+ const ChannelArgs& channel_args() const { return args_; }
// Mutable vector of proposed stack entries.
- std::vector<StackEntry>* mutable_stack() { return &stack_; }
+ std::vector<const grpc_channel_filter*>* mutable_stack() { return &stack_; }
+
+ // The type of channel stack being built.
+ grpc_channel_stack_type channel_stack_type() const { return type_; }
// Helper to add a filter to the front of the stack.
- void PrependFilter(const grpc_channel_filter* filter, PostInitFunc post_init);
+ void PrependFilter(const grpc_channel_filter* filter);
// Helper to add a filter to the end of the stack.
- void AppendFilter(const grpc_channel_filter* filter, PostInitFunc post_init);
+ void AppendFilter(const grpc_channel_filter* filter);
// Build the channel stack.
// After success, *result holds the new channel stack,
// prefix_bytes are allocated before the channel stack,
- // initial_refs, destroy, destroy_arg are as per grpc_channel_stack_init
+ // destroy is as per grpc_channel_stack_init
// On failure, *result is nullptr.
- grpc_error_handle Build(size_t prefix_bytes, int initial_refs,
- grpc_iomgr_cb_func destroy, void* destroy_arg,
- void** result);
+ virtual y_absl::StatusOr<RefCountedPtr<grpc_channel_stack>> Build() = 0;
+
+ protected:
+ ~ChannelStackBuilder();
private:
static TString unknown_target() { return "unknown"; }
// The name of the stack
const char* const name_;
+ // The type of stack being built
+ const grpc_channel_stack_type type_;
// The target
TString target_{unknown_target()};
// The transport
grpc_transport* transport_ = nullptr;
// Channel args
- const grpc_channel_args* args_ = nullptr;
+ ChannelArgs args_;
// The in-progress stack
- std::vector<StackEntry> stack_;
+ std::vector<const grpc_channel_filter*> stack_;
};
+
} // namespace grpc_core
#endif // GRPC_CORE_LIB_CHANNEL_CHANNEL_STACK_BUILDER_H
diff --git a/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder_impl.cc b/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder_impl.cc
new file mode 100644
index 0000000000..93b0648300
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder_impl.cc
@@ -0,0 +1,95 @@
+/*
+ *
+ * Copyright 2016 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/channel/channel_stack_builder_impl.h"
+
+#include <string.h>
+
+#include <vector>
+
+#include "y_absl/status/status.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/alloc.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/transport/transport.h"
+
+namespace grpc_core {
+
+y_absl::StatusOr<RefCountedPtr<grpc_channel_stack>>
+ChannelStackBuilderImpl::Build() {
+ auto* stack = mutable_stack();
+
+ // calculate the size of the channel stack
+ size_t channel_stack_size =
+ grpc_channel_stack_size(stack->data(), stack->size());
+
+ // allocate memory
+ auto* channel_stack =
+ static_cast<grpc_channel_stack*>(gpr_zalloc(channel_stack_size));
+
+ ChannelArgs final_args = channel_args();
+ if (transport() != nullptr) {
+ static const grpc_arg_pointer_vtable vtable = {
+ // copy
+ [](void* p) { return p; },
+ // destroy
+ [](void*) {},
+ // cmp
+ [](void* a, void* b) { return QsortCompare(a, b); },
+ };
+ final_args = final_args.Set(GRPC_ARG_TRANSPORT,
+ ChannelArgs::Pointer(transport(), &vtable));
+ }
+
+ // and initialize it
+ grpc_error_handle error = grpc_channel_stack_init(
+ 1,
+ [](void* p, grpc_error_handle) {
+ auto* stk = static_cast<grpc_channel_stack*>(p);
+ grpc_channel_stack_destroy(stk);
+ gpr_free(stk);
+ },
+ channel_stack, stack->data(), stack->size(), final_args.ToC().get(),
+ name(), channel_stack);
+
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ grpc_channel_stack_destroy(channel_stack);
+ gpr_free(channel_stack);
+ auto status = grpc_error_to_absl_status(error);
+ GRPC_ERROR_UNREF(error);
+ return status;
+ }
+
+ // run post-initialization functions
+ for (size_t i = 0; i < stack->size(); i++) {
+ auto* elem = grpc_channel_stack_element(channel_stack, i);
+ elem->filter->post_init_channel_elem(channel_stack, elem);
+ }
+
+ return RefCountedPtr<grpc_channel_stack>(channel_stack);
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder_impl.h b/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder_impl.h
new file mode 100644
index 0000000000..48887b9186
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/channel/channel_stack_builder_impl.h
@@ -0,0 +1,46 @@
+// Copyright 2016 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_CHANNEL_CHANNEL_STACK_BUILDER_IMPL_H
+#define GRPC_CORE_LIB_CHANNEL_CHANNEL_STACK_BUILDER_IMPL_H
+
+#include <grpc/support/port_platform.h>
+
+#include "y_absl/status/statusor.h"
+
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/channel_stack_builder.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+
+namespace grpc_core {
+
+// Build a channel stack.
+// Allows interested parties to add filters to the stack, and to query an
+// in-progress build.
+// Carries some useful context for the channel stack, such as a target string
+// and a transport.
+class ChannelStackBuilderImpl final : public ChannelStackBuilder {
+ public:
+ using ChannelStackBuilder::ChannelStackBuilder;
+
+ // Build the channel stack.
+ // After success, *result holds the new channel stack,
+ // prefix_bytes are allocated before the channel stack,
+ // initial_refs, destroy, destroy_arg are as per grpc_channel_stack_init
+ // On failure, *result is nullptr.
+ y_absl::StatusOr<RefCountedPtr<grpc_channel_stack>> Build() override;
+};
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_CHANNEL_CHANNEL_STACK_BUILDER_IMPL_H
diff --git a/contrib/libs/grpc/src/core/lib/channel/channel_trace.cc b/contrib/libs/grpc/src/core/lib/channel/channel_trace.cc
index 4bc6f49b2c..8b97d19249 100644
--- a/contrib/libs/grpc/src/core/lib/channel/channel_trace.cc
+++ b/contrib/libs/grpc/src/core/lib/channel/channel_trace.cc
@@ -20,24 +20,19 @@
#include "src/core/lib/channel/channel_trace.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include <algorithm>
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
-#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
-#include "src/core/lib/channel/status_util.h"
+#include "src/core/lib/channel/channelz.h"
#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/gprpp/memory.h"
-#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/surface/channel.h"
-#include "src/core/lib/transport/connectivity_state.h"
-#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/slice/slice_refcount.h"
namespace grpc_core {
namespace channelz {
@@ -46,7 +41,7 @@ ChannelTrace::TraceEvent::TraceEvent(Severity severity, const grpc_slice& data,
RefCountedPtr<BaseNode> referenced_entity)
: severity_(severity),
data_(data),
- timestamp_(ExecCtx::Get()->Now().as_timespec(GPR_CLOCK_REALTIME)),
+ timestamp_(Timestamp::Now().as_timespec(GPR_CLOCK_REALTIME)),
next_(nullptr),
referenced_entity_(std::move(referenced_entity)),
memory_usage_(sizeof(TraceEvent) + grpc_slice_memory_usage(data)) {}
@@ -54,7 +49,7 @@ ChannelTrace::TraceEvent::TraceEvent(Severity severity, const grpc_slice& data,
ChannelTrace::TraceEvent::TraceEvent(Severity severity, const grpc_slice& data)
: severity_(severity),
data_(data),
- timestamp_(ExecCtx::Get()->Now().as_timespec(GPR_CLOCK_REALTIME)),
+ timestamp_(Timestamp::Now().as_timespec(GPR_CLOCK_REALTIME)),
next_(nullptr),
memory_usage_(sizeof(TraceEvent) + grpc_slice_memory_usage(data)) {}
@@ -70,7 +65,7 @@ ChannelTrace::ChannelTrace(size_t max_event_memory)
return; // tracing is disabled if max_event_memory_ == 0
}
gpr_mu_init(&tracer_mu_);
- time_created_ = ExecCtx::Get()->Now().as_timespec(GPR_CLOCK_REALTIME);
+ time_created_ = Timestamp::Now().as_timespec(GPR_CLOCK_REALTIME);
}
ChannelTrace::~ChannelTrace() {
diff --git a/contrib/libs/grpc/src/core/lib/channel/channel_trace.h b/contrib/libs/grpc/src/core/lib/channel/channel_trace.h
index deff60a6f2..323d7bd4a4 100644
--- a/contrib/libs/grpc/src/core/lib/channel/channel_trace.h
+++ b/contrib/libs/grpc/src/core/lib/channel/channel_trace.h
@@ -21,11 +21,14 @@
#include <grpc/support/port_platform.h>
-#include <grpc/grpc.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/slice.h>
+#include <grpc/support/sync.h>
-#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/json/json.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/channel/channelz.cc b/contrib/libs/grpc/src/core/lib/channel/channelz.cc
index c5865d9f9a..98d6c92045 100644
--- a/contrib/libs/grpc/src/core/lib/channel/channelz.cc
+++ b/contrib/libs/grpc/src/core/lib/channel/channelz.cc
@@ -20,37 +20,27 @@
#include "src/core/lib/channel/channelz.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
+#include <algorithm>
#include <atomic>
+#include <memory>
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/escaping.h"
#include "y_absl/strings/strip.h"
-#include <grpc/grpc.h>
-#include <grpc/support/alloc.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/support/cpu.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
+#include <grpc/support/time.h>
#include "src/core/lib/address_utils/parse_address.h"
#include "src/core/lib/address_utils/sockaddr_utils.h"
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channelz_registry.h"
-#include "src/core/lib/channel/status_util.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/gprpp/host_port.h"
-#include "src/core/lib/gprpp/memory.h"
-#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/exec_ctx.h"
-#include "src/core/lib/iomgr/resolve_address.h"
-#include "src/core/lib/slice/b64.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/surface/channel.h"
-#include "src/core/lib/surface/server.h"
#include "src/core/lib/transport/connectivity_state.h"
-#include "src/core/lib/transport/error_utils.h"
#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
@@ -428,42 +418,38 @@ namespace {
void PopulateSocketAddressJson(Json::Object* json, const char* name,
const char* addr_str) {
if (addr_str == nullptr) return;
- Json::Object data;
y_absl::StatusOr<URI> uri = URI::Parse(addr_str);
- if (uri.ok() && (uri->scheme() == "ipv4" || uri->scheme() == "ipv6")) {
- TString host;
- TString port;
- GPR_ASSERT(
- SplitHostPort(y_absl::StripPrefix(uri->path(), "/"), &host, &port));
- int port_num = -1;
- if (!port.empty()) {
- port_num = atoi(port.data());
- }
- grpc_resolved_address resolved_host;
- grpc_error_handle error =
- grpc_string_to_sockaddr(&resolved_host, host.c_str(), port_num);
- if (error == GRPC_ERROR_NONE) {
- TString packed_host = grpc_sockaddr_get_packed_host(&resolved_host);
- TString b64_host = y_absl::Base64Escape(packed_host);
- data["tcpip_address"] = Json::Object{
- {"port", port_num},
- {"ip_address", b64_host},
+ if (uri.ok()) {
+ if (uri->scheme() == "ipv4" || uri->scheme() == "ipv6") {
+ auto address = StringToSockaddr(y_absl::StripPrefix(uri->path(), "/"));
+ if (address.ok()) {
+ TString packed_host = grpc_sockaddr_get_packed_host(&*address);
+ (*json)[name] = Json::Object{
+ {"tcpip_address",
+ Json::Object{
+ {"port", grpc_sockaddr_get_port(&*address)},
+ {"ip_address", y_absl::Base64Escape(packed_host)},
+ }},
+ };
+ return;
+ }
+ } else if (uri->scheme() == "unix") {
+ (*json)[name] = Json::Object{
+ {"uds_address",
+ Json::Object{
+ {"filename", uri->path()},
+ }},
};
- (*json)[name] = std::move(data);
return;
}
- GRPC_ERROR_UNREF(error);
- }
- if (uri.ok() && uri->scheme() == "unix") {
- data["uds_address"] = Json::Object{
- {"filename", uri->path()},
- };
- } else {
- data["other_address"] = Json::Object{
- {"name", addr_str},
- };
}
- (*json)[name] = std::move(data);
+ // Unknown address type.
+ (*json)[name] = Json::Object{
+ {"other_address",
+ Json::Object{
+ {"name", addr_str},
+ }},
+ };
}
} // namespace
diff --git a/contrib/libs/grpc/src/core/lib/channel/channelz.h b/contrib/libs/grpc/src/core/lib/channel/channelz.h
index a4f322fa3e..d0565348fb 100644
--- a/contrib/libs/grpc/src/core/lib/channel/channelz.h
+++ b/contrib/libs/grpc/src/core/lib/channel/channelz.h
@@ -21,24 +21,30 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
#include <atomic>
+#include <cstdint>
+#include <map>
#include <set>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+#include <vector>
-#include "y_absl/container/inlined_vector.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/types/optional.h"
-#include <grpc/grpc.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
#include "src/core/lib/channel/channel_trace.h"
#include "src/core/lib/gpr/time_precise.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/iomgr/error.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/json/json.h"
// Channel arg key for channelz node.
@@ -166,8 +172,7 @@ class CallCountingHelper {
// collects the sharded data into one CounterData struct.
void CollectData(CounterData* out);
- // Really zero-sized, but 0-sized arrays are illegal on MSVC.
- y_absl::InlinedVector<AtomicCounterData, 1> per_cpu_counter_data_storage_;
+ std::vector<AtomicCounterData> per_cpu_counter_data_storage_;
size_t num_cores_ = 0;
};
@@ -177,6 +182,10 @@ class ChannelNode : public BaseNode {
ChannelNode(TString target, size_t channel_tracer_max_nodes,
bool is_internal_channel);
+ static y_absl::string_view ChannelArgName() {
+ return GRPC_ARG_CHANNELZ_CHANNEL_NODE;
+ }
+
// Returns the string description of the given connectivity state.
static const char* GetChannelConnectivityStateChangeString(
grpc_connectivity_state state);
@@ -296,6 +305,14 @@ class SocketNode : public BaseNode {
Json RenderJson();
+ static y_absl::string_view ChannelArgName() {
+ return GRPC_ARG_CHANNELZ_SECURITY;
+ }
+
+ static int ChannelArgsCompare(const Security* a, const Security* b) {
+ return QsortCompare(a, b);
+ }
+
grpc_arg MakeChannelArg() const;
static RefCountedPtr<Security> GetFromChannelArgs(
diff --git a/contrib/libs/grpc/src/core/lib/channel/channelz_registry.cc b/contrib/libs/grpc/src/core/lib/channel/channelz_registry.cc
index d890c12b4a..14271acb52 100644
--- a/contrib/libs/grpc/src/core/lib/channel/channelz_registry.cc
+++ b/contrib/libs/grpc/src/core/lib/channel/channelz_registry.cc
@@ -21,39 +21,31 @@
#include "src/core/lib/channel/channelz_registry.h"
#include <algorithm>
+#include <cstdint>
#include <cstring>
+#include <utility>
+#include <vector>
-#include "y_absl/container/inlined_vector.h"
-
-#include <grpc/support/alloc.h>
+#include <grpc/grpc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
-#include <grpc/support/sync.h>
-#include "src/core/lib/channel/channel_trace.h"
#include "src/core/lib/channel/channelz.h"
-#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/json/json.h"
namespace grpc_core {
namespace channelz {
namespace {
-// singleton instance of the registry.
-ChannelzRegistry* g_channelz_registry = nullptr;
-
const int kPaginationLimit = 100;
} // anonymous namespace
-void ChannelzRegistry::Init() { g_channelz_registry = new ChannelzRegistry(); }
-
-void ChannelzRegistry::Shutdown() { delete g_channelz_registry; }
-
ChannelzRegistry* ChannelzRegistry::Default() {
- GPR_DEBUG_ASSERT(g_channelz_registry != nullptr);
- return g_channelz_registry;
+ static ChannelzRegistry* singleton = new ChannelzRegistry();
+ return singleton;
}
void ChannelzRegistry::InternalRegister(BaseNode* node) {
@@ -84,7 +76,7 @@ RefCountedPtr<BaseNode> ChannelzRegistry::InternalGet(intptr_t uuid) {
TString ChannelzRegistry::InternalGetTopChannels(
intptr_t start_channel_id) {
- y_absl::InlinedVector<RefCountedPtr<BaseNode>, 10> top_level_channels;
+ std::vector<RefCountedPtr<BaseNode>> top_level_channels;
RefCountedPtr<BaseNode> node_after_pagination_limit;
{
MutexLock lock(&mu_);
@@ -123,7 +115,7 @@ TString ChannelzRegistry::InternalGetTopChannels(
}
TString ChannelzRegistry::InternalGetServers(intptr_t start_server_id) {
- y_absl::InlinedVector<RefCountedPtr<BaseNode>, 10> servers;
+ std::vector<RefCountedPtr<BaseNode>> servers;
RefCountedPtr<BaseNode> node_after_pagination_limit;
{
MutexLock lock(&mu_);
@@ -162,7 +154,7 @@ TString ChannelzRegistry::InternalGetServers(intptr_t start_server_id) {
}
void ChannelzRegistry::InternalLogAllEntities() {
- y_absl::InlinedVector<RefCountedPtr<BaseNode>, 10> nodes;
+ std::vector<RefCountedPtr<BaseNode>> nodes;
{
MutexLock lock(&mu_);
for (auto& p : node_map_) {
diff --git a/contrib/libs/grpc/src/core/lib/channel/channelz_registry.h b/contrib/libs/grpc/src/core/lib/channel/channelz_registry.h
index b9998da520..239fd9aa1e 100644
--- a/contrib/libs/grpc/src/core/lib/channel/channelz_registry.h
+++ b/contrib/libs/grpc/src/core/lib/channel/channelz_registry.h
@@ -21,14 +21,13 @@
#include <grpc/support/port_platform.h>
-#include <stdint.h>
-
+#include <cstdint>
#include <map>
#include <util/generic/string.h>
#include <util/string/cast.h>
-#include "src/core/lib/channel/channel_trace.h"
#include "src/core/lib/channel/channelz.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
namespace grpc_core {
@@ -38,12 +37,6 @@ namespace channelz {
// channelz bookkeeping. All objects share globally distributed uuids.
class ChannelzRegistry {
public:
- // To be called in grpc_init()
- static void Init();
-
- // To be called in grpc_shutdown();
- static void Shutdown();
-
static void Register(BaseNode* node) {
return Default()->InternalRegister(node);
}
@@ -68,6 +61,14 @@ class ChannelzRegistry {
// This can aid in debugging channelz code.
static void LogAllEntities() { Default()->InternalLogAllEntities(); }
+ // Test only helper function to reset to initial state.
+ static void TestOnlyReset() {
+ auto* p = Default();
+ MutexLock lock(&p->mu_);
+ p->node_map_.clear();
+ p->uuid_generator_ = 0;
+ }
+
private:
// Returned the singleton instance of ChannelzRegistry;
static ChannelzRegistry* Default();
diff --git a/contrib/libs/grpc/src/core/lib/channel/connected_channel.cc b/contrib/libs/grpc/src/core/lib/channel/connected_channel.cc
index b004e6287d..10cef0874f 100644
--- a/contrib/libs/grpc/src/core/lib/channel/connected_channel.cc
+++ b/contrib/libs/grpc/src/core/lib/channel/connected_channel.cc
@@ -20,18 +20,19 @@
#include "src/core/lib/channel/connected_channel.h"
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <grpc/byte_buffer.h>
-#include <grpc/slice_buffer.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/profiling/timers.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/gpr/alloc.h"
+#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/polling_entity.h"
#include "src/core/lib/transport/transport.h"
+#include "src/core/lib/transport/transport_fwd.h"
#define MAX_BUFFER_LENGTH 8192
@@ -184,7 +185,8 @@ static grpc_error_handle connected_channel_init_channel_elem(
grpc_channel_element* elem, grpc_channel_element_args* args) {
channel_data* cd = static_cast<channel_data*>(elem->channel_data);
GPR_ASSERT(args->is_last);
- cd->transport = nullptr;
+ cd->transport = grpc_channel_args_find_pointer<grpc_transport>(
+ args->channel_args, GRPC_ARG_TRANSPORT);
return GRPC_ERROR_NONE;
}
@@ -211,36 +213,25 @@ const grpc_channel_filter grpc_connected_filter = {
connected_channel_destroy_call_elem,
sizeof(channel_data),
connected_channel_init_channel_elem,
+ [](grpc_channel_stack* channel_stack, grpc_channel_element* elem) {
+ /* HACK(ctiller): increase call stack size for the channel to make space
+ for channel data. We need a cleaner (but performant) way to do this,
+ and I'm not sure what that is yet.
+ This is only "safe" because call stacks place no additional data after
+ the last call element, and the last call element MUST be the connected
+ channel. */
+ channel_stack->call_stack_size += grpc_transport_stream_size(
+ static_cast<channel_data*>(elem->channel_data)->transport);
+ },
connected_channel_destroy_channel_elem,
connected_channel_get_channel_info,
"connected",
};
-static void bind_transport(grpc_channel_stack* channel_stack,
- grpc_channel_element* elem, void* t) {
- channel_data* cd = static_cast<channel_data*>(elem->channel_data);
- GPR_ASSERT(elem->filter == &grpc_connected_filter);
- GPR_ASSERT(cd->transport == nullptr);
- cd->transport = static_cast<grpc_transport*>(t);
-
- /* HACK(ctiller): increase call stack size for the channel to make space
- for channel data. We need a cleaner (but performant) way to do this,
- and I'm not sure what that is yet.
- This is only "safe" because call stacks place no additional data after
- the last call element, and the last call element MUST be the connected
- channel. */
- channel_stack->call_stack_size +=
- grpc_transport_stream_size(static_cast<grpc_transport*>(t));
-}
-
bool grpc_add_connected_filter(grpc_core::ChannelStackBuilder* builder) {
grpc_transport* t = builder->transport();
GPR_ASSERT(t != nullptr);
- builder->AppendFilter(
- &grpc_connected_filter,
- [t](grpc_channel_stack* stk, grpc_channel_element* elem) {
- bind_transport(stk, elem, t);
- });
+ builder->AppendFilter(&grpc_connected_filter);
return true;
}
diff --git a/contrib/libs/grpc/src/core/lib/channel/connected_channel.h b/contrib/libs/grpc/src/core/lib/channel/connected_channel.h
index 7da9b21353..ea1428310e 100644
--- a/contrib/libs/grpc/src/core/lib/channel/connected_channel.h
+++ b/contrib/libs/grpc/src/core/lib/channel/connected_channel.h
@@ -21,7 +21,10 @@
#include <grpc/support/port_platform.h>
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/channel/channel_stack_builder.h"
+#include "src/core/lib/transport/transport.h"
extern const grpc_channel_filter grpc_connected_filter;
diff --git a/contrib/libs/grpc/src/core/lib/channel/promise_based_filter.cc b/contrib/libs/grpc/src/core/lib/channel/promise_based_filter.cc
index a2414d66d9..3bd905ffc8 100644
--- a/contrib/libs/grpc/src/core/lib/channel/promise_based_filter.cc
+++ b/contrib/libs/grpc/src/core/lib/channel/promise_based_filter.cc
@@ -16,7 +16,20 @@
#include "src/core/lib/channel/promise_based_filter.h"
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/base/attributes.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/types/variant.h"
+
+#include <grpc/status.h>
+
#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/gprpp/manual_constructor.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/slice/slice.h"
namespace grpc_core {
namespace promise_filter_detail {
@@ -24,6 +37,25 @@ namespace promise_filter_detail {
///////////////////////////////////////////////////////////////////////////////
// BaseCallData
+BaseCallData::BaseCallData(grpc_call_element* elem,
+ const grpc_call_element_args* args, uint8_t flags)
+ : call_stack_(args->call_stack),
+ elem_(elem),
+ arena_(args->arena),
+ call_combiner_(args->call_combiner),
+ deadline_(args->deadline),
+ context_(args->context) {
+ if (flags & kFilterExaminesServerInitialMetadata) {
+ server_initial_metadata_latch_ = arena_->New<Latch<ServerMetadata*>>();
+ }
+}
+
+BaseCallData::~BaseCallData() {
+ if (server_initial_metadata_latch_ != nullptr) {
+ server_initial_metadata_latch_->~Latch();
+ }
+}
+
// We don't form ActivityPtr's to this type, and consequently don't need
// Orphan().
void BaseCallData::Orphan() { abort(); }
@@ -50,31 +82,425 @@ void BaseCallData::Wakeup() {
void BaseCallData::Drop() { GRPC_CALL_STACK_UNREF(call_stack_, "waker"); }
///////////////////////////////////////////////////////////////////////////////
+// BaseCallData::CapturedBatch
+
+namespace {
+uintptr_t* RefCountField(grpc_transport_stream_op_batch* b) {
+ return &b->handler_private.closure.error_data.scratch;
+}
+} // namespace
+
+BaseCallData::CapturedBatch::CapturedBatch() : batch_(nullptr) {}
+
+BaseCallData::CapturedBatch::CapturedBatch(
+ grpc_transport_stream_op_batch* batch) {
+ *RefCountField(batch) = 1;
+ batch_ = batch;
+}
+
+BaseCallData::CapturedBatch::~CapturedBatch() {
+ if (batch_ == nullptr) return;
+ // A ref can be dropped by destruction, but it must not release the batch
+ uintptr_t& refcnt = *RefCountField(batch_);
+ if (refcnt == 0) return; // refcnt==0 ==> cancelled
+ --refcnt;
+ GPR_ASSERT(refcnt != 0);
+}
+
+BaseCallData::CapturedBatch::CapturedBatch(const CapturedBatch& rhs)
+ : batch_(rhs.batch_) {
+ if (batch_ == nullptr) return;
+ uintptr_t& refcnt = *RefCountField(batch_);
+ if (refcnt == 0) return; // refcnt==0 ==> cancelled
+ ++refcnt;
+}
+
+BaseCallData::CapturedBatch& BaseCallData::CapturedBatch::operator=(
+ const CapturedBatch& b) {
+ CapturedBatch temp(b);
+ Swap(&temp);
+ return *this;
+}
+
+BaseCallData::CapturedBatch::CapturedBatch(CapturedBatch&& rhs) noexcept
+ : batch_(rhs.batch_) {
+ rhs.batch_ = nullptr;
+}
+
+BaseCallData::CapturedBatch& BaseCallData::CapturedBatch::operator=(
+ CapturedBatch&& b) noexcept {
+ Swap(&b);
+ return *this;
+}
+
+void BaseCallData::CapturedBatch::ResumeWith(Flusher* releaser) {
+ auto* batch = std::exchange(batch_, nullptr);
+ GPR_ASSERT(batch != nullptr);
+ uintptr_t& refcnt = *RefCountField(batch);
+ if (refcnt == 0) return; // refcnt==0 ==> cancelled
+ if (--refcnt == 0) {
+ releaser->Resume(batch);
+ }
+}
+
+void BaseCallData::CapturedBatch::CompleteWith(Flusher* releaser) {
+ auto* batch = std::exchange(batch_, nullptr);
+ GPR_ASSERT(batch != nullptr);
+ uintptr_t& refcnt = *RefCountField(batch);
+ if (refcnt == 0) return; // refcnt==0 ==> cancelled
+ if (--refcnt == 0) {
+ releaser->Complete(batch);
+ }
+}
+
+void BaseCallData::CapturedBatch::CancelWith(grpc_error_handle error,
+ Flusher* releaser) {
+ auto* batch = std::exchange(batch_, nullptr);
+ GPR_ASSERT(batch != nullptr);
+ uintptr_t& refcnt = *RefCountField(batch);
+ if (refcnt == 0) {
+ // refcnt==0 ==> cancelled
+ GRPC_ERROR_UNREF(error);
+ return;
+ }
+ refcnt = 0;
+ releaser->Cancel(batch, error);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// BaseCallData::Flusher
+
+BaseCallData::Flusher::Flusher(BaseCallData* call) : call_(call) {
+ GRPC_CALL_STACK_REF(call_->call_stack(), "flusher");
+}
+
+BaseCallData::Flusher::~Flusher() {
+ if (release_.empty()) {
+ if (call_closures_.size() == 0) {
+ GRPC_CALL_COMBINER_STOP(call_->call_combiner(), "nothing to flush");
+ GRPC_CALL_STACK_UNREF(call_->call_stack(), "flusher");
+ return;
+ }
+ call_closures_.RunClosures(call_->call_combiner());
+ GRPC_CALL_STACK_UNREF(call_->call_stack(), "flusher");
+ return;
+ }
+ auto call_next_op = [](void* p, grpc_error_handle) {
+ auto* batch = static_cast<grpc_transport_stream_op_batch*>(p);
+ BaseCallData* call =
+ static_cast<BaseCallData*>(batch->handler_private.extra_arg);
+ grpc_call_next_op(call->elem(), batch);
+ GRPC_CALL_STACK_UNREF(call->call_stack(), "flusher_batch");
+ };
+ for (size_t i = 1; i < release_.size(); i++) {
+ auto* batch = release_[i];
+ batch->handler_private.extra_arg = call_;
+ GRPC_CLOSURE_INIT(&batch->handler_private.closure, call_next_op, batch,
+ nullptr);
+ GRPC_CALL_STACK_REF(call_->call_stack(), "flusher_batch");
+ call_closures_.Add(&batch->handler_private.closure, GRPC_ERROR_NONE,
+ "flusher_batch");
+ }
+ call_closures_.RunClosuresWithoutYielding(call_->call_combiner());
+ grpc_call_next_op(call_->elem(), release_[0]);
+ GRPC_CALL_STACK_UNREF(call_->call_stack(), "flusher");
+}
+
+///////////////////////////////////////////////////////////////////////////////
// ClientCallData
+struct ClientCallData::RecvInitialMetadata final {
+ enum State {
+ // Initial state; no op seen
+ kInitial,
+ // No op seen, but we have a latch that would like to modify it when we do
+ kGotLatch,
+ // Responded to trailing metadata prior to getting a recv_initial_metadata
+ kRespondedToTrailingMetadataPriorToHook,
+ // Hooked, no latch yet
+ kHookedWaitingForLatch,
+ // Hooked, latch seen
+ kHookedAndGotLatch,
+ // Got the callback, haven't set latch yet
+ kCompleteWaitingForLatch,
+ // Got the callback and got the latch
+ kCompleteAndGotLatch,
+ // Got the callback and set the latch
+ kCompleteAndSetLatch,
+ // Called the original callback
+ kResponded,
+ };
+
+ State state = kInitial;
+ grpc_closure* original_on_ready = nullptr;
+ grpc_closure on_ready;
+ grpc_metadata_batch* metadata = nullptr;
+ Latch<ServerMetadata*>* server_initial_metadata_publisher = nullptr;
+};
+
+class ClientCallData::PollContext {
+ public:
+ explicit PollContext(ClientCallData* self, Flusher* flusher)
+ : self_(self), flusher_(flusher) {
+ GPR_ASSERT(self_->poll_ctx_ == nullptr);
+
+ self_->poll_ctx_ = this;
+ scoped_activity_.Init(self_);
+ have_scoped_activity_ = true;
+ }
+
+ PollContext(const PollContext&) = delete;
+ PollContext& operator=(const PollContext&) = delete;
+
+ void Run() {
+ GPR_ASSERT(have_scoped_activity_);
+ repoll_ = false;
+ if (self_->server_initial_metadata_latch() != nullptr) {
+ switch (self_->recv_initial_metadata_->state) {
+ case RecvInitialMetadata::kInitial:
+ case RecvInitialMetadata::kGotLatch:
+ case RecvInitialMetadata::kHookedWaitingForLatch:
+ case RecvInitialMetadata::kHookedAndGotLatch:
+ case RecvInitialMetadata::kCompleteWaitingForLatch:
+ case RecvInitialMetadata::kResponded:
+ case RecvInitialMetadata::kRespondedToTrailingMetadataPriorToHook:
+ break;
+ case RecvInitialMetadata::kCompleteAndGotLatch:
+ self_->recv_initial_metadata_->state =
+ RecvInitialMetadata::kCompleteAndSetLatch;
+ self_->recv_initial_metadata_->server_initial_metadata_publisher->Set(
+ self_->recv_initial_metadata_->metadata);
+ Y_ABSL_FALLTHROUGH_INTENDED;
+ case RecvInitialMetadata::kCompleteAndSetLatch: {
+ Poll<ServerMetadata**> p =
+ self_->server_initial_metadata_latch()->Wait()();
+ if (ServerMetadata*** ppp = y_absl::get_if<ServerMetadata**>(&p)) {
+ ServerMetadata* md = **ppp;
+ if (self_->recv_initial_metadata_->metadata != md) {
+ *self_->recv_initial_metadata_->metadata = std::move(*md);
+ }
+ self_->recv_initial_metadata_->state =
+ RecvInitialMetadata::kResponded;
+ flusher_->AddClosure(
+ std::exchange(self_->recv_initial_metadata_->original_on_ready,
+ nullptr),
+ GRPC_ERROR_NONE,
+ "wake_inside_combiner:recv_initial_metadata_ready");
+ }
+ } break;
+ }
+ }
+ if (self_->recv_trailing_state_ == RecvTrailingState::kCancelled ||
+ self_->recv_trailing_state_ == RecvTrailingState::kResponded) {
+ return;
+ }
+ switch (self_->send_initial_state_) {
+ case SendInitialState::kQueued:
+ case SendInitialState::kForwarded: {
+ // Poll the promise once since we're waiting for it.
+ Poll<ServerMetadataHandle> poll = self_->promise_();
+ if (auto* r = y_absl::get_if<ServerMetadataHandle>(&poll)) {
+ auto* md = UnwrapMetadata(std::move(*r));
+ bool destroy_md = true;
+ if (self_->recv_trailing_state_ == RecvTrailingState::kComplete) {
+ if (self_->recv_trailing_metadata_ != md) {
+ *self_->recv_trailing_metadata_ = std::move(*md);
+ } else {
+ destroy_md = false;
+ }
+ self_->recv_trailing_state_ = RecvTrailingState::kResponded;
+ flusher_->AddClosure(
+ std::exchange(self_->original_recv_trailing_metadata_ready_,
+ nullptr),
+ GRPC_ERROR_NONE, "wake_inside_combiner:recv_trailing_ready:1");
+ if (self_->recv_initial_metadata_ != nullptr) {
+ switch (self_->recv_initial_metadata_->state) {
+ case RecvInitialMetadata::kInitial:
+ case RecvInitialMetadata::kGotLatch:
+ self_->recv_initial_metadata_->state = RecvInitialMetadata::
+ kRespondedToTrailingMetadataPriorToHook;
+ break;
+ case RecvInitialMetadata::
+ kRespondedToTrailingMetadataPriorToHook:
+ abort(); // not reachable
+ break;
+ case RecvInitialMetadata::kHookedWaitingForLatch:
+ case RecvInitialMetadata::kHookedAndGotLatch:
+ case RecvInitialMetadata::kResponded:
+ case RecvInitialMetadata::kCompleteAndGotLatch:
+ case RecvInitialMetadata::kCompleteAndSetLatch:
+ break;
+ case RecvInitialMetadata::kCompleteWaitingForLatch:
+ self_->recv_initial_metadata_->state =
+ RecvInitialMetadata::kResponded;
+ flusher_->AddClosure(
+ std::exchange(
+ self_->recv_initial_metadata_->original_on_ready,
+ nullptr),
+ GRPC_ERROR_CANCELLED,
+ "wake_inside_combiner:recv_initial_metadata_ready");
+ }
+ }
+ } else {
+ GPR_ASSERT(*md->get_pointer(GrpcStatusMetadata()) !=
+ GRPC_STATUS_OK);
+ grpc_error_handle error = grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "early return from promise based filter"),
+ GRPC_ERROR_INT_GRPC_STATUS,
+ *md->get_pointer(GrpcStatusMetadata()));
+ if (auto* message = md->get_pointer(GrpcMessageMetadata())) {
+ error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
+ message->as_string_view());
+ }
+ GRPC_ERROR_UNREF(self_->cancelled_error_);
+ self_->cancelled_error_ = GRPC_ERROR_REF(error);
+ if (self_->recv_initial_metadata_ != nullptr) {
+ switch (self_->recv_initial_metadata_->state) {
+ case RecvInitialMetadata::kInitial:
+ case RecvInitialMetadata::kGotLatch:
+ self_->recv_initial_metadata_->state = RecvInitialMetadata::
+ kRespondedToTrailingMetadataPriorToHook;
+ break;
+ case RecvInitialMetadata::kHookedWaitingForLatch:
+ case RecvInitialMetadata::kHookedAndGotLatch:
+ case RecvInitialMetadata::kResponded:
+ break;
+ case RecvInitialMetadata::
+ kRespondedToTrailingMetadataPriorToHook:
+ abort(); // not reachable
+ break;
+ case RecvInitialMetadata::kCompleteWaitingForLatch:
+ case RecvInitialMetadata::kCompleteAndGotLatch:
+ case RecvInitialMetadata::kCompleteAndSetLatch:
+ self_->recv_initial_metadata_->state =
+ RecvInitialMetadata::kResponded;
+ flusher_->AddClosure(
+ std::exchange(
+ self_->recv_initial_metadata_->original_on_ready,
+ nullptr),
+ GRPC_ERROR_REF(error),
+ "wake_inside_combiner:recv_initial_metadata_ready");
+ }
+ }
+ if (self_->send_initial_state_ == SendInitialState::kQueued) {
+ self_->send_initial_state_ = SendInitialState::kCancelled;
+ self_->send_initial_metadata_batch_.CancelWith(error, flusher_);
+ } else {
+ GPR_ASSERT(
+ self_->recv_trailing_state_ == RecvTrailingState::kInitial ||
+ self_->recv_trailing_state_ == RecvTrailingState::kForwarded);
+ self_->call_combiner()->Cancel(GRPC_ERROR_REF(error));
+ CapturedBatch b(grpc_make_transport_stream_op(GRPC_CLOSURE_CREATE(
+ [](void* p, grpc_error_handle) {
+ GRPC_CALL_COMBINER_STOP(static_cast<CallCombiner*>(p),
+ "finish_cancel");
+ },
+ self_->call_combiner(), nullptr)));
+ b->cancel_stream = true;
+ b->payload->cancel_stream.cancel_error = error;
+ b.ResumeWith(flusher_);
+ }
+ self_->recv_trailing_state_ = RecvTrailingState::kCancelled;
+ }
+ if (destroy_md) {
+ md->~grpc_metadata_batch();
+ }
+ scoped_activity_.Destroy();
+ have_scoped_activity_ = false;
+ self_->promise_ = ArenaPromise<ServerMetadataHandle>();
+ }
+ } break;
+ case SendInitialState::kInitial:
+ case SendInitialState::kCancelled:
+ // If we get a response without sending anything, we just propagate
+ // that up. (note: that situation isn't possible once we finish the
+ // promise transition).
+ if (self_->recv_trailing_state_ == RecvTrailingState::kComplete) {
+ self_->recv_trailing_state_ = RecvTrailingState::kResponded;
+ flusher_->AddClosure(
+ std::exchange(self_->original_recv_trailing_metadata_ready_,
+ nullptr),
+ GRPC_ERROR_NONE, "wake_inside_combiner:recv_trailing_ready:2");
+ }
+ break;
+ }
+ }
+
+ ~PollContext() {
+ self_->poll_ctx_ = nullptr;
+ if (have_scoped_activity_) scoped_activity_.Destroy();
+ if (repoll_) {
+ struct NextPoll : public grpc_closure {
+ grpc_call_stack* call_stack;
+ ClientCallData* call_data;
+ };
+ auto run = [](void* p, grpc_error_handle) {
+ auto* next_poll = static_cast<NextPoll*>(p);
+ {
+ Flusher flusher(next_poll->call_data);
+ next_poll->call_data->WakeInsideCombiner(&flusher);
+ }
+ GRPC_CALL_STACK_UNREF(next_poll->call_stack, "re-poll");
+ delete next_poll;
+ };
+ // Unique ptr --> release to suppress clang-tidy warnings about allocating
+ // in a destructor.
+ auto* p = y_absl::make_unique<NextPoll>().release();
+ p->call_stack = self_->call_stack();
+ p->call_data = self_;
+ GRPC_CALL_STACK_REF(self_->call_stack(), "re-poll");
+ GRPC_CLOSURE_INIT(p, run, p, nullptr);
+ flusher_->AddClosure(p, GRPC_ERROR_NONE, "re-poll");
+ }
+ }
+
+ void Repoll() { repoll_ = true; }
+
+ void ForwardSendInitialMetadata() {
+ self_->send_initial_metadata_batch_.ResumeWith(flusher_);
+ }
+
+ private:
+ ManualConstructor<ScopedActivity> scoped_activity_;
+ ClientCallData* self_;
+ Flusher* flusher_;
+ bool repoll_ = false;
+ bool have_scoped_activity_;
+};
+
ClientCallData::ClientCallData(grpc_call_element* elem,
- const grpc_call_element_args* args)
- : BaseCallData(elem, args) {
+ const grpc_call_element_args* args,
+ uint8_t flags)
+ : BaseCallData(elem, args, flags) {
GRPC_CLOSURE_INIT(&recv_trailing_metadata_ready_,
RecvTrailingMetadataReadyCallback, this,
grpc_schedule_on_exec_ctx);
+ if (server_initial_metadata_latch() != nullptr) {
+ recv_initial_metadata_ = arena()->New<RecvInitialMetadata>();
+ }
}
ClientCallData::~ClientCallData() {
- GPR_ASSERT(!is_polling_);
+ GPR_ASSERT(poll_ctx_ == nullptr);
GRPC_ERROR_UNREF(cancelled_error_);
+ if (recv_initial_metadata_ != nullptr) {
+ recv_initial_metadata_->~RecvInitialMetadata();
+ }
}
// Activity implementation.
void ClientCallData::ForceImmediateRepoll() {
- GPR_ASSERT(is_polling_);
- repoll_ = true;
+ GPR_ASSERT(poll_ctx_ != nullptr);
+ poll_ctx_->Repoll();
}
// Handle one grpc_transport_stream_op_batch
-void ClientCallData::StartBatch(grpc_transport_stream_op_batch* batch) {
+void ClientCallData::StartBatch(grpc_transport_stream_op_batch* b) {
// Fake out the activity based context.
ScopedContext context(this);
+ CapturedBatch batch(b);
+ Flusher flusher(this);
// If this is a cancel stream, cancel anything we have pending and propagate
// the cancellation.
@@ -84,50 +510,94 @@ void ClientCallData::StartBatch(grpc_transport_stream_op_batch* batch) {
!batch->recv_initial_metadata && !batch->recv_message &&
!batch->recv_trailing_metadata);
Cancel(batch->payload->cancel_stream.cancel_error);
- grpc_call_next_op(elem(), batch);
+ if (is_last()) {
+ GRPC_ERROR_UNREF(batch->payload->cancel_stream.cancel_error);
+ batch.CompleteWith(&flusher);
+ } else {
+ batch.ResumeWith(&flusher);
+ }
return;
}
+ if (recv_initial_metadata_ != nullptr && batch->recv_initial_metadata) {
+ bool hook = true;
+ switch (recv_initial_metadata_->state) {
+ case RecvInitialMetadata::kInitial:
+ recv_initial_metadata_->state =
+ RecvInitialMetadata::kHookedWaitingForLatch;
+ break;
+ case RecvInitialMetadata::kGotLatch:
+ recv_initial_metadata_->state = RecvInitialMetadata::kHookedAndGotLatch;
+ break;
+ case RecvInitialMetadata::kRespondedToTrailingMetadataPriorToHook:
+ hook = false;
+ break;
+ case RecvInitialMetadata::kHookedWaitingForLatch:
+ case RecvInitialMetadata::kHookedAndGotLatch:
+ case RecvInitialMetadata::kCompleteWaitingForLatch:
+ case RecvInitialMetadata::kCompleteAndGotLatch:
+ case RecvInitialMetadata::kCompleteAndSetLatch:
+ case RecvInitialMetadata::kResponded:
+ abort(); // unreachable
+ }
+ if (hook) {
+ auto cb = [](void* ptr, grpc_error_handle error) {
+ ClientCallData* self = static_cast<ClientCallData*>(ptr);
+ self->RecvInitialMetadataReady(error);
+ };
+ recv_initial_metadata_->metadata =
+ batch->payload->recv_initial_metadata.recv_initial_metadata;
+ recv_initial_metadata_->original_on_ready =
+ batch->payload->recv_initial_metadata.recv_initial_metadata_ready;
+ GRPC_CLOSURE_INIT(&recv_initial_metadata_->on_ready, cb, this, nullptr);
+ batch->payload->recv_initial_metadata.recv_initial_metadata_ready =
+ &recv_initial_metadata_->on_ready;
+ }
+ }
+
// send_initial_metadata: seeing this triggers the start of the promise part
// of this filter.
if (batch->send_initial_metadata) {
// If we're already cancelled, just terminate the batch.
if (send_initial_state_ == SendInitialState::kCancelled ||
recv_trailing_state_ == RecvTrailingState::kCancelled) {
- grpc_transport_stream_op_batch_finish_with_failure(
- batch, GRPC_ERROR_REF(cancelled_error_), call_combiner());
- return;
+ batch.CancelWith(GRPC_ERROR_REF(cancelled_error_), &flusher);
+ } else {
+ // Otherwise, we should not have seen a send_initial_metadata op yet.
+ GPR_ASSERT(send_initial_state_ == SendInitialState::kInitial);
+ // Mark ourselves as queued.
+ send_initial_state_ = SendInitialState::kQueued;
+ if (batch->recv_trailing_metadata) {
+ // If there's a recv_trailing_metadata op, we queue that too.
+ GPR_ASSERT(recv_trailing_state_ == RecvTrailingState::kInitial);
+ recv_trailing_state_ = RecvTrailingState::kQueued;
+ }
+ // This is the queuing!
+ send_initial_metadata_batch_ = batch;
+ // And kick start the promise.
+ StartPromise(&flusher);
}
- // Otherwise, we should not have seen a send_initial_metadata op yet.
- GPR_ASSERT(send_initial_state_ == SendInitialState::kInitial);
- // Mark ourselves as queued.
- send_initial_state_ = SendInitialState::kQueued;
- if (batch->recv_trailing_metadata) {
- // If there's a recv_trailing_metadata op, we queue that too.
+ } else if (batch->recv_trailing_metadata) {
+ // recv_trailing_metadata *without* send_initial_metadata: hook it so we
+ // can respond to it, and push it down.
+ if (recv_trailing_state_ == RecvTrailingState::kCancelled) {
+ batch.CancelWith(GRPC_ERROR_REF(cancelled_error_), &flusher);
+ } else {
GPR_ASSERT(recv_trailing_state_ == RecvTrailingState::kInitial);
- recv_trailing_state_ = RecvTrailingState::kQueued;
+ recv_trailing_state_ = RecvTrailingState::kForwarded;
+ HookRecvTrailingMetadata(batch);
}
- // This is the queuing!
- send_initial_metadata_batch_ = batch;
- // And kick start the promise.
- StartPromise();
- return;
+ } else if (!GRPC_ERROR_IS_NONE(cancelled_error_)) {
+ batch.CancelWith(GRPC_ERROR_REF(cancelled_error_), &flusher);
}
- // recv_trailing_metadata *without* send_initial_metadata: hook it so we can
- // respond to it, and push it down.
- if (batch->recv_trailing_metadata) {
- if (recv_trailing_state_ == RecvTrailingState::kCancelled) {
- grpc_transport_stream_op_batch_finish_with_failure(
- batch, GRPC_ERROR_REF(cancelled_error_), call_combiner());
- return;
+ if (batch.is_captured()) {
+ if (!is_last()) {
+ batch.ResumeWith(&flusher);
+ } else {
+ batch.CancelWith(GRPC_ERROR_CANCELLED, &flusher);
}
- GPR_ASSERT(recv_trailing_state_ == RecvTrailingState::kInitial);
- recv_trailing_state_ = RecvTrailingState::kForwarded;
- HookRecvTrailingMetadata(batch);
}
-
- grpc_call_next_op(elem(), batch);
}
// Handle cancellation.
@@ -136,7 +606,7 @@ void ClientCallData::Cancel(grpc_error_handle error) {
GRPC_ERROR_UNREF(cancelled_error_);
cancelled_error_ = GRPC_ERROR_REF(error);
// Stop running the promise.
- promise_ = ArenaPromise<TrailingMetadata>();
+ promise_ = ArenaPromise<ServerMetadataHandle>();
// If we have an op queued, fail that op.
// Record what we've done.
if (send_initial_state_ == SendInitialState::kQueued) {
@@ -145,52 +615,108 @@ void ClientCallData::Cancel(grpc_error_handle error) {
recv_trailing_state_ = RecvTrailingState::kCancelled;
}
struct FailBatch : public grpc_closure {
- grpc_transport_stream_op_batch* batch;
- CallCombiner* call_combiner;
+ CapturedBatch batch;
+ ClientCallData* call;
};
auto fail = [](void* p, grpc_error_handle error) {
auto* f = static_cast<FailBatch*>(p);
- grpc_transport_stream_op_batch_finish_with_failure(
- f->batch, GRPC_ERROR_REF(error), f->call_combiner);
+ {
+ Flusher flusher(f->call);
+ f->batch.CancelWith(GRPC_ERROR_REF(error), &flusher);
+ GRPC_CALL_STACK_UNREF(f->call->call_stack(), "cancel pending batch");
+ }
delete f;
};
auto* b = new FailBatch();
GRPC_CLOSURE_INIT(b, fail, b, nullptr);
- b->batch = y_absl::exchange(send_initial_metadata_batch_, nullptr);
- b->call_combiner = call_combiner();
+ b->batch = std::move(send_initial_metadata_batch_);
+ b->call = this;
+ GRPC_CALL_STACK_REF(call_stack(), "cancel pending batch");
GRPC_CALL_COMBINER_START(call_combiner(), b,
GRPC_ERROR_REF(cancelled_error_),
"cancel pending batch");
} else {
send_initial_state_ = SendInitialState::kCancelled;
}
+ if (recv_initial_metadata_ != nullptr) {
+ switch (recv_initial_metadata_->state) {
+ case RecvInitialMetadata::kCompleteWaitingForLatch:
+ case RecvInitialMetadata::kCompleteAndGotLatch:
+ case RecvInitialMetadata::kCompleteAndSetLatch:
+ recv_initial_metadata_->state = RecvInitialMetadata::kResponded;
+ GRPC_CALL_COMBINER_START(
+ call_combiner(),
+ std::exchange(recv_initial_metadata_->original_on_ready, nullptr),
+ GRPC_ERROR_REF(error), "propagate cancellation");
+ break;
+ case RecvInitialMetadata::kInitial:
+ case RecvInitialMetadata::kGotLatch:
+ case RecvInitialMetadata::kRespondedToTrailingMetadataPriorToHook:
+ case RecvInitialMetadata::kHookedWaitingForLatch:
+ case RecvInitialMetadata::kHookedAndGotLatch:
+ case RecvInitialMetadata::kResponded:
+ break;
+ }
+ }
}
// Begin running the promise - which will ultimately take some initial
// metadata and return some trailing metadata.
-void ClientCallData::StartPromise() {
+void ClientCallData::StartPromise(Flusher* flusher) {
GPR_ASSERT(send_initial_state_ == SendInitialState::kQueued);
ChannelFilter* filter = static_cast<ChannelFilter*>(elem()->channel_data);
// Construct the promise.
- {
- ScopedActivity activity(this);
- promise_ = filter->MakeCallPromise(
- WrapMetadata(send_initial_metadata_batch_->payload
- ->send_initial_metadata.send_initial_metadata),
- [this](ClientInitialMetadata initial_metadata) {
- return MakeNextPromise(std::move(initial_metadata));
- });
+ PollContext ctx(this, flusher);
+ promise_ = filter->MakeCallPromise(
+ CallArgs{WrapMetadata(send_initial_metadata_batch_->payload
+ ->send_initial_metadata.send_initial_metadata),
+ server_initial_metadata_latch()},
+ [this](CallArgs call_args) {
+ return MakeNextPromise(std::move(call_args));
+ });
+ ctx.Run();
+}
+
+void ClientCallData::RecvInitialMetadataReady(grpc_error_handle error) {
+ ScopedContext context(this);
+ switch (recv_initial_metadata_->state) {
+ case RecvInitialMetadata::kHookedWaitingForLatch:
+ recv_initial_metadata_->state =
+ RecvInitialMetadata::kCompleteWaitingForLatch;
+ break;
+ case RecvInitialMetadata::kHookedAndGotLatch:
+ recv_initial_metadata_->state = RecvInitialMetadata::kCompleteAndGotLatch;
+ break;
+ case RecvInitialMetadata::kInitial:
+ case RecvInitialMetadata::kGotLatch:
+ case RecvInitialMetadata::kCompleteWaitingForLatch:
+ case RecvInitialMetadata::kCompleteAndGotLatch:
+ case RecvInitialMetadata::kCompleteAndSetLatch:
+ case RecvInitialMetadata::kResponded:
+ case RecvInitialMetadata::kRespondedToTrailingMetadataPriorToHook:
+ abort(); // unreachable
}
- // Poll once.
- WakeInsideCombiner();
+ Flusher flusher(this);
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ recv_initial_metadata_->state = RecvInitialMetadata::kResponded;
+ flusher.AddClosure(
+ std::exchange(recv_initial_metadata_->original_on_ready, nullptr),
+ GRPC_ERROR_REF(error), "propagate cancellation");
+ } else if (send_initial_state_ == SendInitialState::kCancelled ||
+ recv_trailing_state_ == RecvTrailingState::kResponded) {
+ recv_initial_metadata_->state = RecvInitialMetadata::kResponded;
+ flusher.AddClosure(
+ std::exchange(recv_initial_metadata_->original_on_ready, nullptr),
+ GRPC_ERROR_REF(cancelled_error_), "propagate cancellation");
+ }
+ WakeInsideCombiner(&flusher);
}
// Interject our callback into the op batch for recv trailing metadata ready.
// Stash a pointer to the trailing metadata that will be filled in, so we can
// manipulate it later.
-void ClientCallData::HookRecvTrailingMetadata(
- grpc_transport_stream_op_batch* batch) {
+void ClientCallData::HookRecvTrailingMetadata(CapturedBatch batch) {
recv_trailing_metadata_ =
batch->payload->recv_trailing_metadata.recv_trailing_metadata;
original_recv_trailing_metadata_ready_ =
@@ -203,12 +729,46 @@ void ClientCallData::HookRecvTrailingMetadata(
// Effectively:
// - put the modified initial metadata into the batch to be sent down.
// - return a wrapper around PollTrailingMetadata as the promise.
-ArenaPromise<TrailingMetadata> ClientCallData::MakeNextPromise(
- ClientInitialMetadata initial_metadata) {
+ArenaPromise<ServerMetadataHandle> ClientCallData::MakeNextPromise(
+ CallArgs call_args) {
+ GPR_ASSERT(poll_ctx_ != nullptr);
GPR_ASSERT(send_initial_state_ == SendInitialState::kQueued);
send_initial_metadata_batch_->payload->send_initial_metadata
- .send_initial_metadata = UnwrapMetadata(std::move(initial_metadata));
- return ArenaPromise<TrailingMetadata>(
+ .send_initial_metadata =
+ UnwrapMetadata(std::move(call_args.client_initial_metadata));
+ if (recv_initial_metadata_ != nullptr) {
+ // Call args should contain a latch for receiving initial metadata.
+ // It might be the one we passed in - in which case we know this filter
+ // only wants to examine the metadata, or it might be a new instance, in
+ // which case we know the filter wants to mutate.
+ GPR_ASSERT(call_args.server_initial_metadata != nullptr);
+ recv_initial_metadata_->server_initial_metadata_publisher =
+ call_args.server_initial_metadata;
+ switch (recv_initial_metadata_->state) {
+ case RecvInitialMetadata::kInitial:
+ recv_initial_metadata_->state = RecvInitialMetadata::kGotLatch;
+ break;
+ case RecvInitialMetadata::kHookedWaitingForLatch:
+ recv_initial_metadata_->state = RecvInitialMetadata::kHookedAndGotLatch;
+ poll_ctx_->Repoll();
+ break;
+ case RecvInitialMetadata::kCompleteWaitingForLatch:
+ recv_initial_metadata_->state =
+ RecvInitialMetadata::kCompleteAndGotLatch;
+ poll_ctx_->Repoll();
+ break;
+ case RecvInitialMetadata::kGotLatch:
+ case RecvInitialMetadata::kHookedAndGotLatch:
+ case RecvInitialMetadata::kCompleteAndGotLatch:
+ case RecvInitialMetadata::kCompleteAndSetLatch:
+ case RecvInitialMetadata::kResponded:
+ case RecvInitialMetadata::kRespondedToTrailingMetadataPriorToHook:
+ abort(); // unreachable
+ }
+ } else {
+ GPR_ASSERT(call_args.server_initial_metadata == nullptr);
+ }
+ return ArenaPromise<ServerMetadataHandle>(
[this]() { return PollTrailingMetadata(); });
}
@@ -216,17 +776,18 @@ ArenaPromise<TrailingMetadata> ClientCallData::MakeNextPromise(
// First poll: send the send_initial_metadata op down the stack.
// All polls: await receiving the trailing metadata, then return it to the
// application.
-Poll<TrailingMetadata> ClientCallData::PollTrailingMetadata() {
+Poll<ServerMetadataHandle> ClientCallData::PollTrailingMetadata() {
+ GPR_ASSERT(poll_ctx_ != nullptr);
if (send_initial_state_ == SendInitialState::kQueued) {
// First poll: pass the send_initial_metadata op down the stack.
- GPR_ASSERT(send_initial_metadata_batch_ != nullptr);
+ GPR_ASSERT(send_initial_metadata_batch_.is_captured());
send_initial_state_ = SendInitialState::kForwarded;
if (recv_trailing_state_ == RecvTrailingState::kQueued) {
// (and the recv_trailing_metadata op if it's part of the queuing)
HookRecvTrailingMetadata(send_initial_metadata_batch_);
recv_trailing_state_ = RecvTrailingState::kForwarded;
}
- forward_send_initial_metadata_ = true;
+ poll_ctx_->ForwardSendInitialMetadata();
}
switch (recv_trailing_state_) {
case RecvTrailingState::kInitial:
@@ -261,18 +822,20 @@ void ClientCallData::RecvTrailingMetadataReadyCallback(
}
void ClientCallData::RecvTrailingMetadataReady(grpc_error_handle error) {
+ Flusher flusher(this);
// If we were cancelled prior to receiving this callback, we should simply
// forward the callback up with the same error.
if (recv_trailing_state_ == RecvTrailingState::kCancelled) {
if (grpc_closure* call_closure =
- y_absl::exchange(original_recv_trailing_metadata_ready_, nullptr)) {
- Closure::Run(DEBUG_LOCATION, call_closure, GRPC_ERROR_REF(error));
+ std::exchange(original_recv_trailing_metadata_ready_, nullptr)) {
+ flusher.AddClosure(call_closure, GRPC_ERROR_REF(error),
+ "propagate failure");
}
return;
}
// If there was an error, we'll put that into the trailing metadata and
// proceed as if there was not.
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
SetStatusFromError(recv_trailing_metadata_, error);
}
// Record that we've got the callback.
@@ -280,10 +843,10 @@ void ClientCallData::RecvTrailingMetadataReady(grpc_error_handle error) {
recv_trailing_state_ = RecvTrailingState::kComplete;
// Repoll the promise.
ScopedContext context(this);
- WakeInsideCombiner();
+ WakeInsideCombiner(&flusher);
}
-// Given an error, fill in TrailingMetadata to represent that error.
+// Given an error, fill in ServerMetadataHandle to represent that error.
void ClientCallData::SetStatusFromError(grpc_metadata_batch* metadata,
grpc_error_handle error) {
grpc_status_code status_code = GRPC_STATUS_UNKNOWN;
@@ -297,160 +860,114 @@ void ClientCallData::SetStatusFromError(grpc_metadata_batch* metadata,
}
// Wakeup and poll the promise if appropriate.
-void ClientCallData::WakeInsideCombiner() {
- GPR_ASSERT(!is_polling_);
- grpc_closure* call_closure = nullptr;
- is_polling_ = true;
- grpc_error_handle cancel_send_initial_metadata_error = GRPC_ERROR_NONE;
- grpc_transport_stream_op_batch* forward_batch = nullptr;
- switch (send_initial_state_) {
- case SendInitialState::kQueued:
- case SendInitialState::kForwarded: {
- // Poll the promise once since we're waiting for it.
- Poll<TrailingMetadata> poll;
- {
- ScopedActivity activity(this);
- poll = promise_();
- }
- if (auto* r = y_absl::get_if<TrailingMetadata>(&poll)) {
- promise_ = ArenaPromise<TrailingMetadata>();
- auto* md = UnwrapMetadata(std::move(*r));
- bool destroy_md = true;
- if (recv_trailing_state_ == RecvTrailingState::kComplete) {
- if (recv_trailing_metadata_ != md) {
- *recv_trailing_metadata_ = std::move(*md);
- } else {
- destroy_md = false;
- }
- recv_trailing_state_ = RecvTrailingState::kResponded;
- call_closure =
- y_absl::exchange(original_recv_trailing_metadata_ready_, nullptr);
- } else {
- GPR_ASSERT(*md->get_pointer(GrpcStatusMetadata()) != GRPC_STATUS_OK);
- grpc_error_handle error =
- grpc_error_set_int(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "early return from promise based filter"),
- GRPC_ERROR_INT_GRPC_STATUS,
- *md->get_pointer(GrpcStatusMetadata()));
- if (auto* message = md->get_pointer(GrpcMessageMetadata())) {
- error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
- message->as_string_view());
- }
- GRPC_ERROR_UNREF(cancelled_error_);
- cancelled_error_ = GRPC_ERROR_REF(error);
- if (send_initial_state_ == SendInitialState::kQueued) {
- send_initial_state_ = SendInitialState::kCancelled;
- cancel_send_initial_metadata_error = error;
- } else {
- GPR_ASSERT(recv_trailing_state_ == RecvTrailingState::kInitial ||
- recv_trailing_state_ == RecvTrailingState::kForwarded);
- call_combiner()->Cancel(GRPC_ERROR_REF(error));
- forward_batch = grpc_make_transport_stream_op(GRPC_CLOSURE_CREATE(
- [](void*, grpc_error_handle) {}, nullptr, nullptr));
- forward_batch->cancel_stream = true;
- forward_batch->payload->cancel_stream.cancel_error = error;
- }
- recv_trailing_state_ = RecvTrailingState::kCancelled;
- }
- if (destroy_md) {
- md->~grpc_metadata_batch();
- }
- }
- } break;
- case SendInitialState::kInitial:
- case SendInitialState::kCancelled:
- // If we get a response without sending anything, we just propagate
- // that up. (note: that situation isn't possible once we finish the
- // promise transition).
- if (recv_trailing_state_ == RecvTrailingState::kComplete) {
- recv_trailing_state_ = RecvTrailingState::kResponded;
- call_closure =
- y_absl::exchange(original_recv_trailing_metadata_ready_, nullptr);
- }
- break;
+void ClientCallData::WakeInsideCombiner(Flusher* flusher) {
+ PollContext(this, flusher).Run();
+}
+
+void ClientCallData::OnWakeup() {
+ Flusher flusher(this);
+ ScopedContext context(this);
+ WakeInsideCombiner(&flusher);
+}
+
+///////////////////////////////////////////////////////////////////////////////
+// ServerCallData
+
+struct ServerCallData::SendInitialMetadata {
+ enum State {
+ kInitial,
+ kGotLatch,
+ kQueuedWaitingForLatch,
+ kQueuedAndGotLatch,
+ kQueuedAndSetLatch,
+ kForwarded,
+ kCancelled,
+ };
+ State state = kInitial;
+ CapturedBatch batch;
+ Latch<ServerMetadata*>* server_initial_metadata_publisher = nullptr;
+};
+
+class ServerCallData::PollContext {
+ public:
+ explicit PollContext(ServerCallData* self, Flusher* flusher)
+ : self_(self), flusher_(flusher) {
+ GPR_ASSERT(self_->poll_ctx_ == nullptr);
+ self_->poll_ctx_ = this;
+ scoped_activity_.Init(self_);
+ have_scoped_activity_ = true;
}
- GRPC_CALL_STACK_REF(call_stack(), "finish_poll");
- is_polling_ = false;
- bool in_combiner = true;
- bool repoll = y_absl::exchange(repoll_, false);
- if (forward_batch != nullptr) {
- GPR_ASSERT(in_combiner);
- in_combiner = false;
- forward_send_initial_metadata_ = false;
- grpc_call_next_op(elem(), forward_batch);
- }
- if (cancel_send_initial_metadata_error != GRPC_ERROR_NONE) {
- GPR_ASSERT(in_combiner);
- forward_send_initial_metadata_ = false;
- in_combiner = false;
- grpc_transport_stream_op_batch_finish_with_failure(
- y_absl::exchange(send_initial_metadata_batch_, nullptr),
- cancel_send_initial_metadata_error, call_combiner());
- }
- if (y_absl::exchange(forward_send_initial_metadata_, false)) {
- GPR_ASSERT(in_combiner);
- in_combiner = false;
- grpc_call_next_op(elem(),
- y_absl::exchange(send_initial_metadata_batch_, nullptr));
- }
- if (call_closure != nullptr) {
- GPR_ASSERT(in_combiner);
- in_combiner = false;
- Closure::Run(DEBUG_LOCATION, call_closure, GRPC_ERROR_NONE);
- }
- if (repoll) {
- if (in_combiner) {
- WakeInsideCombiner();
- } else {
+
+ PollContext(const PollContext&) = delete;
+ PollContext& operator=(const PollContext&) = delete;
+
+ ~PollContext() {
+ self_->poll_ctx_ = nullptr;
+ if (have_scoped_activity_) scoped_activity_.Destroy();
+ if (repoll_) {
struct NextPoll : public grpc_closure {
grpc_call_stack* call_stack;
- ClientCallData* call_data;
+ ServerCallData* call_data;
};
auto run = [](void* p, grpc_error_handle) {
auto* next_poll = static_cast<NextPoll*>(p);
- next_poll->call_data->WakeInsideCombiner();
+ {
+ Flusher flusher(next_poll->call_data);
+ next_poll->call_data->WakeInsideCombiner(&flusher);
+ }
GRPC_CALL_STACK_UNREF(next_poll->call_stack, "re-poll");
delete next_poll;
};
- auto* p = new NextPoll;
- GRPC_CALL_STACK_REF(call_stack(), "re-poll");
+ auto* p = y_absl::make_unique<NextPoll>().release();
+ p->call_stack = self_->call_stack();
+ p->call_data = self_;
+ GRPC_CALL_STACK_REF(self_->call_stack(), "re-poll");
GRPC_CLOSURE_INIT(p, run, p, nullptr);
- GRPC_CALL_COMBINER_START(call_combiner(), p, GRPC_ERROR_NONE, "re-poll");
+ flusher_->AddClosure(p, GRPC_ERROR_NONE, "re-poll");
}
- } else if (in_combiner) {
- GRPC_CALL_COMBINER_STOP(call_combiner(), "poll paused");
}
- GRPC_CALL_STACK_UNREF(call_stack(), "finish_poll");
-}
-void ClientCallData::OnWakeup() {
- ScopedContext context(this);
- WakeInsideCombiner();
-}
+ void Repoll() { repoll_ = true; }
+ void ClearRepoll() { repoll_ = false; }
-///////////////////////////////////////////////////////////////////////////////
-// ServerCallData
+ private:
+ ManualConstructor<ScopedActivity> scoped_activity_;
+ ServerCallData* const self_;
+ Flusher* const flusher_;
+ bool repoll_ = false;
+ bool have_scoped_activity_;
+};
ServerCallData::ServerCallData(grpc_call_element* elem,
- const grpc_call_element_args* args)
- : BaseCallData(elem, args) {
+ const grpc_call_element_args* args,
+ uint8_t flags)
+ : BaseCallData(elem, args, flags) {
+ if (server_initial_metadata_latch() != nullptr) {
+ send_initial_metadata_ = arena()->New<SendInitialMetadata>();
+ }
GRPC_CLOSURE_INIT(&recv_initial_metadata_ready_,
RecvInitialMetadataReadyCallback, this,
grpc_schedule_on_exec_ctx);
}
ServerCallData::~ServerCallData() {
- GPR_ASSERT(!is_polling_);
+ GPR_ASSERT(poll_ctx_ == nullptr);
GRPC_ERROR_UNREF(cancelled_error_);
}
// Activity implementation.
-void ServerCallData::ForceImmediateRepoll() { abort(); } // Not implemented.
+void ServerCallData::ForceImmediateRepoll() {
+ GPR_ASSERT(poll_ctx_ != nullptr);
+ poll_ctx_->Repoll();
+}
// Handle one grpc_transport_stream_op_batch
-void ServerCallData::StartBatch(grpc_transport_stream_op_batch* batch) {
+void ServerCallData::StartBatch(grpc_transport_stream_op_batch* b) {
// Fake out the activity based context.
ScopedContext context(this);
+ CapturedBatch batch(b);
+ Flusher flusher(this);
+ bool wake = false;
// If this is a cancel stream, cancel anything we have pending and
// propagate the cancellation.
@@ -459,8 +976,14 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* batch) {
!batch->send_trailing_metadata && !batch->send_message &&
!batch->recv_initial_metadata && !batch->recv_message &&
!batch->recv_trailing_metadata);
- Cancel(batch->payload->cancel_stream.cancel_error);
- grpc_call_next_op(elem(), batch);
+ Cancel(GRPC_ERROR_REF(batch->payload->cancel_stream.cancel_error),
+ &flusher);
+ if (is_last()) {
+ GRPC_ERROR_UNREF(batch->payload->cancel_stream.cancel_error);
+ batch.CompleteWith(&flusher);
+ } else {
+ batch.ResumeWith(&flusher);
+ }
return;
}
@@ -482,81 +1005,130 @@ void ServerCallData::StartBatch(grpc_transport_stream_op_batch* batch) {
recv_initial_state_ = RecvInitialState::kForwarded;
}
+ // send_initial_metadata
+ if (send_initial_metadata_ != nullptr && batch->send_initial_metadata) {
+ switch (send_initial_metadata_->state) {
+ case SendInitialMetadata::kInitial:
+ send_initial_metadata_->state =
+ SendInitialMetadata::kQueuedWaitingForLatch;
+ break;
+ case SendInitialMetadata::kGotLatch:
+ send_initial_metadata_->state = SendInitialMetadata::kQueuedAndGotLatch;
+ break;
+ case SendInitialMetadata::kCancelled:
+ batch.CancelWith(GRPC_ERROR_REF(cancelled_error_), &flusher);
+ break;
+ case SendInitialMetadata::kQueuedAndGotLatch:
+ case SendInitialMetadata::kQueuedWaitingForLatch:
+ case SendInitialMetadata::kQueuedAndSetLatch:
+ case SendInitialMetadata::kForwarded:
+ abort(); // not reachable
+ }
+ send_initial_metadata_->batch = batch;
+ wake = true;
+ }
+
// send_trailing_metadata
- if (batch->send_trailing_metadata) {
+ if (batch.is_captured() && batch->send_trailing_metadata) {
switch (send_trailing_state_) {
case SendTrailingState::kInitial:
send_trailing_metadata_batch_ = batch;
send_trailing_state_ = SendTrailingState::kQueued;
- WakeInsideCombiner([this](grpc_error_handle error) {
- GPR_ASSERT(send_trailing_state_ == SendTrailingState::kQueued);
- Cancel(error);
- });
+ wake = true;
break;
case SendTrailingState::kQueued:
case SendTrailingState::kForwarded:
abort(); // unreachable
break;
case SendTrailingState::kCancelled:
- grpc_transport_stream_op_batch_finish_with_failure(
- batch, GRPC_ERROR_REF(cancelled_error_), call_combiner());
+ batch.CancelWith(GRPC_ERROR_REF(cancelled_error_), &flusher);
break;
}
- return;
}
- grpc_call_next_op(elem(), batch);
+ if (wake) WakeInsideCombiner(&flusher);
+ if (batch.is_captured()) batch.ResumeWith(&flusher);
}
// Handle cancellation.
-void ServerCallData::Cancel(grpc_error_handle error) {
+void ServerCallData::Cancel(grpc_error_handle error, Flusher* flusher) {
// Track the latest reason for cancellation.
GRPC_ERROR_UNREF(cancelled_error_);
- cancelled_error_ = GRPC_ERROR_REF(error);
+ cancelled_error_ = error;
// Stop running the promise.
- promise_ = ArenaPromise<TrailingMetadata>();
+ promise_ = ArenaPromise<ServerMetadataHandle>();
if (send_trailing_state_ == SendTrailingState::kQueued) {
send_trailing_state_ = SendTrailingState::kCancelled;
- struct FailBatch : public grpc_closure {
- grpc_transport_stream_op_batch* batch;
- CallCombiner* call_combiner;
- };
- auto fail = [](void* p, grpc_error_handle error) {
- auto* f = static_cast<FailBatch*>(p);
- grpc_transport_stream_op_batch_finish_with_failure(
- f->batch, GRPC_ERROR_REF(error), f->call_combiner);
- delete f;
- };
- auto* b = new FailBatch();
- GRPC_CLOSURE_INIT(b, fail, b, nullptr);
- b->batch = y_absl::exchange(send_trailing_metadata_batch_, nullptr);
- b->call_combiner = call_combiner();
- GRPC_CALL_COMBINER_START(call_combiner(), b,
- GRPC_ERROR_REF(cancelled_error_),
- "cancel pending batch");
+ send_trailing_metadata_batch_.CancelWith(GRPC_ERROR_REF(error), flusher);
} else {
send_trailing_state_ = SendTrailingState::kCancelled;
}
+ if (send_initial_metadata_ != nullptr) {
+ switch (send_initial_metadata_->state) {
+ case SendInitialMetadata::kInitial:
+ case SendInitialMetadata::kGotLatch:
+ case SendInitialMetadata::kForwarded:
+ case SendInitialMetadata::kCancelled:
+ break;
+ case SendInitialMetadata::kQueuedWaitingForLatch:
+ case SendInitialMetadata::kQueuedAndGotLatch:
+ case SendInitialMetadata::kQueuedAndSetLatch:
+ send_initial_metadata_->batch.CancelWith(GRPC_ERROR_REF(error),
+ flusher);
+ break;
+ }
+ send_initial_metadata_->state = SendInitialMetadata::kCancelled;
+ }
+ if (auto* closure =
+ std::exchange(original_recv_initial_metadata_ready_, nullptr)) {
+ flusher->AddClosure(closure, GRPC_ERROR_REF(error),
+ "original_recv_initial_metadata");
+ }
}
// Construct a promise that will "call" the next filter.
// Effectively:
// - put the modified initial metadata into the batch being sent up.
// - return a wrapper around PollTrailingMetadata as the promise.
-ArenaPromise<TrailingMetadata> ServerCallData::MakeNextPromise(
- ClientInitialMetadata initial_metadata) {
+ArenaPromise<ServerMetadataHandle> ServerCallData::MakeNextPromise(
+ CallArgs call_args) {
GPR_ASSERT(recv_initial_state_ == RecvInitialState::kComplete);
- GPR_ASSERT(UnwrapMetadata(std::move(initial_metadata)) ==
+ GPR_ASSERT(UnwrapMetadata(std::move(call_args.client_initial_metadata)) ==
recv_initial_metadata_);
forward_recv_initial_metadata_callback_ = true;
- return ArenaPromise<TrailingMetadata>(
+ if (send_initial_metadata_ != nullptr) {
+ GPR_ASSERT(send_initial_metadata_->server_initial_metadata_publisher ==
+ nullptr);
+ GPR_ASSERT(call_args.server_initial_metadata != nullptr);
+ send_initial_metadata_->server_initial_metadata_publisher =
+ call_args.server_initial_metadata;
+ switch (send_initial_metadata_->state) {
+ case SendInitialMetadata::kInitial:
+ send_initial_metadata_->state = SendInitialMetadata::kGotLatch;
+ break;
+ case SendInitialMetadata::kGotLatch:
+ case SendInitialMetadata::kQueuedAndGotLatch:
+ case SendInitialMetadata::kQueuedAndSetLatch:
+ case SendInitialMetadata::kForwarded:
+ abort(); // not reachable
+ break;
+ case SendInitialMetadata::kQueuedWaitingForLatch:
+ send_initial_metadata_->state = SendInitialMetadata::kQueuedAndGotLatch;
+ break;
+ case SendInitialMetadata::kCancelled:
+ break;
+ }
+ } else {
+ GPR_ASSERT(call_args.server_initial_metadata == nullptr);
+ }
+ return ArenaPromise<ServerMetadataHandle>(
[this]() { return PollTrailingMetadata(); });
}
// Wrapper to make it look like we're calling the next filter as a promise.
// All polls: await sending the trailing metadata, then foward it down the
// stack.
-Poll<TrailingMetadata> ServerCallData::PollTrailingMetadata() {
+Poll<ServerMetadataHandle> ServerCallData::PollTrailingMetadata() {
switch (send_trailing_state_) {
case SendTrailingState::kInitial:
return Pending{};
@@ -580,12 +1152,14 @@ void ServerCallData::RecvInitialMetadataReadyCallback(void* arg,
}
void ServerCallData::RecvInitialMetadataReady(grpc_error_handle error) {
+ Flusher flusher(this);
GPR_ASSERT(recv_initial_state_ == RecvInitialState::kForwarded);
// If there was an error we just propagate that through
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
recv_initial_state_ = RecvInitialState::kResponded;
- Closure::Run(DEBUG_LOCATION, original_recv_initial_metadata_ready_,
- GRPC_ERROR_REF(error));
+ flusher.AddClosure(
+ std::exchange(original_recv_initial_metadata_ready_, nullptr),
+ GRPC_ERROR_REF(error), "propagate error");
return;
}
// Record that we've got the callback.
@@ -595,36 +1169,53 @@ void ServerCallData::RecvInitialMetadataReady(grpc_error_handle error) {
ScopedContext context(this);
// Construct the promise.
ChannelFilter* filter = static_cast<ChannelFilter*>(elem()->channel_data);
- promise_ = filter->MakeCallPromise(
- WrapMetadata(recv_initial_metadata_),
- [this](ClientInitialMetadata initial_metadata) {
- return MakeNextPromise(std::move(initial_metadata));
- });
+ promise_ =
+ filter->MakeCallPromise(CallArgs{WrapMetadata(recv_initial_metadata_),
+ server_initial_metadata_latch()},
+ [this](CallArgs call_args) {
+ return MakeNextPromise(std::move(call_args));
+ });
// Poll once.
- bool own_error = false;
- WakeInsideCombiner([&error, &own_error](grpc_error_handle new_error) {
- GPR_ASSERT(error == GRPC_ERROR_NONE);
- error = GRPC_ERROR_REF(new_error);
- own_error = true;
- });
- Closure::Run(DEBUG_LOCATION, original_recv_initial_metadata_ready_,
- GRPC_ERROR_REF(error));
- if (own_error) GRPC_ERROR_UNREF(error);
+ WakeInsideCombiner(&flusher);
+ if (auto* closure =
+ std::exchange(original_recv_initial_metadata_ready_, nullptr)) {
+ flusher.AddClosure(closure, GRPC_ERROR_NONE,
+ "original_recv_initial_metadata");
+ }
}
// Wakeup and poll the promise if appropriate.
-void ServerCallData::WakeInsideCombiner(
- y_absl::FunctionRef<void(grpc_error_handle)> cancel) {
- GPR_ASSERT(!is_polling_);
- bool forward_send_trailing_metadata = false;
- is_polling_ = true;
- if (recv_initial_state_ == RecvInitialState::kComplete) {
- Poll<TrailingMetadata> poll;
- {
- ScopedActivity activity(this);
- poll = promise_();
+void ServerCallData::WakeInsideCombiner(Flusher* flusher) {
+ PollContext poll_ctx(this, flusher);
+ if (send_initial_metadata_ != nullptr &&
+ send_initial_metadata_->state ==
+ SendInitialMetadata::kQueuedAndGotLatch) {
+ send_initial_metadata_->state = SendInitialMetadata::kQueuedAndSetLatch;
+ send_initial_metadata_->server_initial_metadata_publisher->Set(
+ send_initial_metadata_->batch->payload->send_initial_metadata
+ .send_initial_metadata);
+ }
+ poll_ctx.ClearRepoll();
+ if (promise_.has_value()) {
+ Poll<ServerMetadataHandle> poll;
+ poll = promise_();
+ if (send_initial_metadata_ != nullptr &&
+ send_initial_metadata_->state ==
+ SendInitialMetadata::kQueuedAndSetLatch) {
+ Poll<ServerMetadata**> p = server_initial_metadata_latch()->Wait()();
+ if (ServerMetadata*** ppp = y_absl::get_if<ServerMetadata**>(&p)) {
+ ServerMetadata* md = **ppp;
+ if (send_initial_metadata_->batch->payload->send_initial_metadata
+ .send_initial_metadata != md) {
+ *send_initial_metadata_->batch->payload->send_initial_metadata
+ .send_initial_metadata = std::move(*md);
+ }
+ send_initial_metadata_->state = SendInitialMetadata::kForwarded;
+ send_initial_metadata_->batch.ResumeWith(flusher);
+ }
}
- if (auto* r = y_absl::get_if<TrailingMetadata>(&poll)) {
+ if (auto* r = y_absl::get_if<ServerMetadataHandle>(&poll)) {
+ promise_ = ArenaPromise<ServerMetadataHandle>();
auto* md = UnwrapMetadata(std::move(*r));
bool destroy_md = true;
switch (send_trailing_state_) {
@@ -636,7 +1227,7 @@ void ServerCallData::WakeInsideCombiner(
} else {
destroy_md = false;
}
- forward_send_trailing_metadata = true;
+ send_trailing_metadata_batch_.ResumeWith(flusher);
send_trailing_state_ = SendTrailingState::kForwarded;
} break;
case SendTrailingState::kForwarded:
@@ -653,8 +1244,7 @@ void ServerCallData::WakeInsideCombiner(
error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
message->as_string_view());
}
- cancel(error);
- GRPC_ERROR_UNREF(error);
+ Cancel(error, flusher);
} break;
case SendTrailingState::kCancelled:
// Nothing to do.
@@ -665,11 +1255,6 @@ void ServerCallData::WakeInsideCombiner(
}
}
}
- is_polling_ = false;
- if (forward_send_trailing_metadata) {
- grpc_call_next_op(elem(),
- y_absl::exchange(send_trailing_metadata_batch_, nullptr));
- }
}
void ServerCallData::OnWakeup() { abort(); } // not implemented
diff --git a/contrib/libs/grpc/src/core/lib/channel/promise_based_filter.h b/contrib/libs/grpc/src/core/lib/channel/promise_based_filter.h
index 81546d1be6..6095bc1bc5 100644
--- a/contrib/libs/grpc/src/core/lib/channel/promise_based_filter.h
+++ b/contrib/libs/grpc/src/core/lib/channel/promise_based_filter.h
@@ -21,20 +21,40 @@
#include <grpc/support/port_platform.h>
-#include "y_absl/utility/utility.h"
+#include <stdint.h>
+#include <stdlib.h>
-#include <grpc/status.h>
+#include <atomic>
+#include <new>
+#include <utility>
+
+#include "y_absl/container/inlined_vector.h"
+#include "y_absl/meta/type_traits.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/log.h>
#include "src/core/lib/channel/call_finalization.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/channel/context.h"
#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/polling_entity.h"
+#include "src/core/lib/promise/activity.h"
#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/promise/context.h"
-#include "src/core/lib/promise/promise.h"
+#include "src/core/lib/promise/latch.h"
+#include "src/core/lib/promise/poll.h"
+#include "src/core/lib/resource_quota/arena.h"
#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
namespace grpc_core {
@@ -42,21 +62,28 @@ class ChannelFilter {
public:
class Args {
public:
- Args() : Args(nullptr) {}
- explicit Args(grpc_channel_stack* channel_stack)
- : channel_stack_(channel_stack) {}
+ Args() : Args(nullptr, nullptr) {}
+ explicit Args(grpc_channel_stack* channel_stack,
+ grpc_channel_element* channel_element)
+ : channel_stack_(channel_stack), channel_element_(channel_element) {}
grpc_channel_stack* channel_stack() const { return channel_stack_; }
+ grpc_channel_element* uninitialized_channel_element() {
+ return channel_element_;
+ }
private:
friend class ChannelFilter;
grpc_channel_stack* channel_stack_;
+ grpc_channel_element* channel_element_;
};
+ // Perform post-initialization step (if any).
+ virtual void PostInit() {}
+
// Construct a promise for one call.
- virtual ArenaPromise<TrailingMetadata> MakeCallPromise(
- ClientInitialMetadata initial_metadata,
- NextPromiseFactory next_promise_factory) = 0;
+ virtual ArenaPromise<ServerMetadataHandle> MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) = 0;
// Start a legacy transport op
// Return true if the op was handled, false if it should be passed to the
@@ -65,32 +92,50 @@ class ChannelFilter {
// structures going forward.
virtual bool StartTransportOp(grpc_transport_op*) { return false; }
- protected:
+ // Perform a legacy get info call
+ // Return true if the op was handled, false if it should be passed to the
+ // next filter.
+ // TODO(ctiller): design a new API for this
+ virtual bool GetChannelInfo(const grpc_channel_info*) { return false; }
+
virtual ~ChannelFilter() = default;
};
// Designator for whether a filter is client side or server side.
-// Please don't use this outside calls to MakePromiseBasedFilter - it's intended
-// to be deleted once the promise conversion is complete.
+// Please don't use this outside calls to MakePromiseBasedFilter - it's
+// intended to be deleted once the promise conversion is complete.
enum class FilterEndpoint {
kClient,
kServer,
};
+// Flags for MakePromiseBasedFilter.
+static constexpr uint8_t kFilterExaminesServerInitialMetadata = 1;
+static constexpr uint8_t kFilterIsLast = 2;
+
namespace promise_filter_detail {
+// Proxy channel filter for initialization failure, since we must leave a
+// valid filter in place.
+class InvalidChannelFilter : public ChannelFilter {
+ public:
+ ArenaPromise<ServerMetadataHandle> MakeCallPromise(
+ CallArgs, NextPromiseFactory) override {
+ abort();
+ }
+};
+
// Call data shared between all implementations of promise-based filters.
class BaseCallData : public Activity, private Wakeable {
public:
- BaseCallData(grpc_call_element* elem, const grpc_call_element_args* args)
- : call_stack_(args->call_stack),
- elem_(elem),
- arena_(args->arena),
- call_combiner_(args->call_combiner),
- deadline_(args->deadline),
- context_(args->context) {}
+ BaseCallData(grpc_call_element* elem, const grpc_call_element_args* args,
+ uint8_t flags);
+ ~BaseCallData() override;
- void set_pollent(grpc_polling_entity* pollent) { pollent_ = pollent; }
+ void set_pollent(grpc_polling_entity* pollent) {
+ GPR_ASSERT(nullptr ==
+ pollent_.exchange(pollent, std::memory_order_release));
+ }
// Activity implementation (partial).
void Orphan() final;
@@ -112,11 +157,76 @@ class BaseCallData : public Activity, private Wakeable {
: promise_detail::Context<Arena>(call_data->arena_),
promise_detail::Context<grpc_call_context_element>(
call_data->context_),
- promise_detail::Context<grpc_polling_entity>(call_data->pollent_),
+ promise_detail::Context<grpc_polling_entity>(
+ call_data->pollent_.load(std::memory_order_acquire)),
promise_detail::Context<CallFinalization>(&call_data->finalization_) {
}
};
+ class Flusher {
+ public:
+ explicit Flusher(BaseCallData* call);
+ // Calls closures, schedules batches, relinquishes call combiner.
+ ~Flusher();
+
+ void Resume(grpc_transport_stream_op_batch* batch) {
+ GPR_ASSERT(!call_->is_last());
+ release_.push_back(batch);
+ }
+
+ void Cancel(grpc_transport_stream_op_batch* batch,
+ grpc_error_handle error) {
+ grpc_transport_stream_op_batch_queue_finish_with_failure(batch, error,
+ &call_closures_);
+ }
+
+ void Complete(grpc_transport_stream_op_batch* batch) {
+ call_closures_.Add(batch->on_complete, GRPC_ERROR_NONE,
+ "Flusher::Complete");
+ }
+
+ void AddClosure(grpc_closure* closure, grpc_error_handle error,
+ const char* reason) {
+ call_closures_.Add(closure, error, reason);
+ }
+
+ private:
+ y_absl::InlinedVector<grpc_transport_stream_op_batch*, 1> release_;
+ CallCombinerClosureList call_closures_;
+ BaseCallData* const call_;
+ };
+
+ // Smart pointer like wrapper around a batch.
+ // Creation makes a ref count of one capture.
+ // Copying increments.
+ // Must be moved from or resumed or cancelled before destruction.
+ class CapturedBatch final {
+ public:
+ CapturedBatch();
+ explicit CapturedBatch(grpc_transport_stream_op_batch* batch);
+ ~CapturedBatch();
+ CapturedBatch(const CapturedBatch&);
+ CapturedBatch& operator=(const CapturedBatch&);
+ CapturedBatch(CapturedBatch&&) noexcept;
+ CapturedBatch& operator=(CapturedBatch&&) noexcept;
+
+ grpc_transport_stream_op_batch* operator->() { return batch_; }
+ bool is_captured() const { return batch_ != nullptr; }
+
+ // Resume processing this batch (releases one ref, passes it down the
+ // stack)
+ void ResumeWith(Flusher* releaser);
+ // Cancel this batch immediately (releases all refs)
+ void CancelWith(grpc_error_handle error, Flusher* releaser);
+ // Complete this batch (pass it up) assuming refs drop to zero
+ void CompleteWith(Flusher* releaser);
+
+ void Swap(CapturedBatch* other) { std::swap(batch_, other->batch_); }
+
+ private:
+ grpc_transport_stream_op_batch* batch_;
+ };
+
static MetadataHandle<grpc_metadata_batch> WrapMetadata(
grpc_metadata_batch* p) {
return MetadataHandle<grpc_metadata_batch>(p);
@@ -127,10 +237,19 @@ class BaseCallData : public Activity, private Wakeable {
return p.Unwrap();
}
+ Arena* arena() { return arena_; }
grpc_call_element* elem() const { return elem_; }
CallCombiner* call_combiner() const { return call_combiner_; }
Timestamp deadline() const { return deadline_; }
grpc_call_stack* call_stack() const { return call_stack_; }
+ Latch<ServerMetadata*>* server_initial_metadata_latch() const {
+ return server_initial_metadata_latch_;
+ }
+
+ bool is_last() const {
+ return grpc_call_stack_element(call_stack_, call_stack_->count - 1) ==
+ elem_;
+ }
private:
// Wakeable implementation.
@@ -146,12 +265,14 @@ class BaseCallData : public Activity, private Wakeable {
const Timestamp deadline_;
CallFinalization finalization_;
grpc_call_context_element* const context_;
- grpc_polling_entity* pollent_ = nullptr;
+ std::atomic<grpc_polling_entity*> pollent_{nullptr};
+ Latch<ServerMetadata*>* server_initial_metadata_latch_ = nullptr;
};
class ClientCallData : public BaseCallData {
public:
- ClientCallData(grpc_call_element* elem, const grpc_call_element_args* args);
+ ClientCallData(grpc_call_element* elem, const grpc_call_element_args* args,
+ uint8_t flags);
~ClientCallData() override;
// Activity implementation.
@@ -177,7 +298,8 @@ class ClientCallData : public BaseCallData {
// Start state: no op seen
kInitial,
// We saw the op, and since it was bundled with send initial metadata, we
- // queued it until the send initial metadata can be sent to the next filter.
+ // queued it until the send initial metadata can be sent to the next
+ // filter.
kQueued,
// We've forwarded the op to the next filter.
kForwarded,
@@ -192,42 +314,47 @@ class ClientCallData : public BaseCallData {
kCancelled
};
+ struct RecvInitialMetadata;
+ class PollContext;
+
// Handle cancellation.
void Cancel(grpc_error_handle error);
// Begin running the promise - which will ultimately take some initial
// metadata and return some trailing metadata.
- void StartPromise();
- // Interject our callback into the op batch for recv trailing metadata ready.
- // Stash a pointer to the trailing metadata that will be filled in, so we can
- // manipulate it later.
- void HookRecvTrailingMetadata(grpc_transport_stream_op_batch* batch);
+ void StartPromise(Flusher* flusher);
+ // Interject our callback into the op batch for recv trailing metadata
+ // ready. Stash a pointer to the trailing metadata that will be filled in,
+ // so we can manipulate it later.
+ void HookRecvTrailingMetadata(CapturedBatch batch);
// Construct a promise that will "call" the next filter.
// Effectively:
// - put the modified initial metadata into the batch to be sent down.
// - return a wrapper around PollTrailingMetadata as the promise.
- ArenaPromise<TrailingMetadata> MakeNextPromise(
- ClientInitialMetadata initial_metadata);
+ ArenaPromise<ServerMetadataHandle> MakeNextPromise(CallArgs call_args);
// Wrapper to make it look like we're calling the next filter as a promise.
// First poll: send the send_initial_metadata op down the stack.
// All polls: await receiving the trailing metadata, then return it to the
// application.
- Poll<TrailingMetadata> PollTrailingMetadata();
+ Poll<ServerMetadataHandle> PollTrailingMetadata();
static void RecvTrailingMetadataReadyCallback(void* arg,
grpc_error_handle error);
void RecvTrailingMetadataReady(grpc_error_handle error);
- // Given an error, fill in TrailingMetadata to represent that error.
+ void RecvInitialMetadataReady(grpc_error_handle error);
+ // Given an error, fill in ServerMetadataHandle to represent that error.
void SetStatusFromError(grpc_metadata_batch* metadata,
grpc_error_handle error);
// Wakeup and poll the promise if appropriate.
- void WakeInsideCombiner();
+ void WakeInsideCombiner(Flusher* flusher);
void OnWakeup() override;
// Contained promise
- ArenaPromise<TrailingMetadata> promise_;
+ ArenaPromise<ServerMetadataHandle> promise_;
// Queued batch containing at least a send_initial_metadata op.
- grpc_transport_stream_op_batch* send_initial_metadata_batch_ = nullptr;
+ CapturedBatch send_initial_metadata_batch_;
// Pointer to where trailing metadata will be stored.
grpc_metadata_batch* recv_trailing_metadata_ = nullptr;
+ // State tracking recv initial metadata for filters that care about it.
+ RecvInitialMetadata* recv_initial_metadata_ = nullptr;
// Closure to call when we're done with the trailing metadata.
grpc_closure* original_recv_trailing_metadata_ready_ = nullptr;
// Our closure pointing to RecvTrailingMetadataReadyCallback.
@@ -238,17 +365,14 @@ class ClientCallData : public BaseCallData {
SendInitialState send_initial_state_ = SendInitialState::kInitial;
// State of the recv_trailing_metadata op.
RecvTrailingState recv_trailing_state_ = RecvTrailingState::kInitial;
- // Whether we're currently polling the promise.
- bool is_polling_ = false;
- // Should we repoll after completing polling?
- bool repoll_ = false;
- // Whether we should forward send initial metadata after polling?
- bool forward_send_initial_metadata_ = false;
+ // Polling related data. Non-null if we're actively polling
+ PollContext* poll_ctx_ = nullptr;
};
class ServerCallData : public BaseCallData {
public:
- ServerCallData(grpc_call_element* elem, const grpc_call_element_args* args);
+ ServerCallData(grpc_call_element* elem, const grpc_call_element_args* args,
+ uint8_t flags);
~ServerCallData() override;
// Activity implementation.
@@ -283,29 +407,33 @@ class ServerCallData : public BaseCallData {
kCancelled
};
+ class PollContext;
+ struct SendInitialMetadata;
+
// Handle cancellation.
- void Cancel(grpc_error_handle error);
+ void Cancel(grpc_error_handle error, Flusher* flusher);
// Construct a promise that will "call" the next filter.
// Effectively:
// - put the modified initial metadata into the batch being sent up.
// - return a wrapper around PollTrailingMetadata as the promise.
- ArenaPromise<TrailingMetadata> MakeNextPromise(
- ClientInitialMetadata initial_metadata);
+ ArenaPromise<ServerMetadataHandle> MakeNextPromise(CallArgs call_args);
// Wrapper to make it look like we're calling the next filter as a promise.
// All polls: await sending the trailing metadata, then foward it down the
// stack.
- Poll<TrailingMetadata> PollTrailingMetadata();
+ Poll<ServerMetadataHandle> PollTrailingMetadata();
static void RecvInitialMetadataReadyCallback(void* arg,
grpc_error_handle error);
void RecvInitialMetadataReady(grpc_error_handle error);
// Wakeup and poll the promise if appropriate.
- void WakeInsideCombiner(y_absl::FunctionRef<void(grpc_error_handle)> cancel);
+ void WakeInsideCombiner(Flusher* flusher);
void OnWakeup() override;
// Contained promise
- ArenaPromise<TrailingMetadata> promise_;
+ ArenaPromise<ServerMetadataHandle> promise_;
// Pointer to where initial metadata will be stored.
grpc_metadata_batch* recv_initial_metadata_ = nullptr;
+ // State for sending initial metadata.
+ SendInitialMetadata* send_initial_metadata_ = nullptr;
// Closure to call when we're done with the trailing metadata.
grpc_closure* original_recv_initial_metadata_ready_ = nullptr;
// Our closure pointing to RecvInitialMetadataReadyCallback.
@@ -313,13 +441,13 @@ class ServerCallData : public BaseCallData {
// Error received during cancellation.
grpc_error_handle cancelled_error_ = GRPC_ERROR_NONE;
// Trailing metadata batch
- grpc_transport_stream_op_batch* send_trailing_metadata_batch_ = nullptr;
+ CapturedBatch send_trailing_metadata_batch_;
// State of the send_initial_metadata op.
RecvInitialState recv_initial_state_ = RecvInitialState::kInitial;
// State of the recv_trailing_metadata op.
SendTrailingState send_trailing_state_ = SendTrailingState::kInitial;
- // Whether we're currently polling the promise.
- bool is_polling_ = false;
+ // Current poll context (or nullptr if not polling).
+ PollContext* poll_ctx_ = nullptr;
// Whether to forward the recv_initial_metadata op at the end of promise
// wakeup.
bool forward_recv_initial_metadata_callback_ = false;
@@ -351,11 +479,9 @@ class CallData<ChannelFilter, FilterEndpoint::kServer> : public ServerCallData {
// class SomeChannelFilter : public ChannelFilter {
// public:
// static y_absl::StatusOr<SomeChannelFilter> Create(
-// ChannelFilter::Args filter_args);
+// ChannelArgs channel_args, ChannelFilter::Args filter_args);
// };
-// TODO(ctiller): allow implementing get_channel_info, start_transport_op in
-// some way on ChannelFilter.
-template <typename F, FilterEndpoint kEndpoint>
+template <typename F, FilterEndpoint kEndpoint, uint8_t kFlags = 0>
y_absl::enable_if_t<std::is_base_of<ChannelFilter, F>::value, grpc_channel_filter>
MakePromiseBasedFilter(const char* name) {
using CallData = promise_filter_detail::CallData<F, kEndpoint>;
@@ -366,15 +492,16 @@ MakePromiseBasedFilter(const char* name) {
static_cast<CallData*>(elem->call_data)->StartBatch(batch);
},
// make_call_promise
- [](grpc_channel_element* elem, ClientInitialMetadata initial_metadata,
+ [](grpc_channel_element* elem, CallArgs call_args,
NextPromiseFactory next_promise_factory) {
- return static_cast<F*>(elem->channel_data)
- ->MakeCallPromise(std::move(initial_metadata),
+ return static_cast<ChannelFilter*>(elem->channel_data)
+ ->MakeCallPromise(std::move(call_args),
std::move(next_promise_factory));
},
// start_transport_op
[](grpc_channel_element* elem, grpc_transport_op* op) {
- if (!static_cast<F*>(elem->channel_data)->StartTransportOp(op)) {
+ if (!static_cast<ChannelFilter*>(elem->channel_data)
+ ->StartTransportOp(op)) {
grpc_channel_next_op(elem, op);
}
},
@@ -382,7 +509,7 @@ MakePromiseBasedFilter(const char* name) {
sizeof(CallData),
// init_call_elem
[](grpc_call_element* elem, const grpc_call_element_args* args) {
- new (elem->call_data) CallData(elem, args);
+ new (elem->call_data) CallData(elem, args, kFlags);
return GRPC_ERROR_NONE;
},
// set_pollset_or_pollset_set
@@ -391,28 +518,49 @@ MakePromiseBasedFilter(const char* name) {
},
// destroy_call_elem
[](grpc_call_element* elem, const grpc_call_final_info* final_info,
- grpc_closure*) {
+ grpc_closure* then_schedule_closure) {
auto* cd = static_cast<CallData*>(elem->call_data);
cd->Finalize(final_info);
cd->~CallData();
+ if ((kFlags & kFilterIsLast) != 0) {
+ ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, GRPC_ERROR_NONE);
+ } else {
+ GPR_ASSERT(then_schedule_closure == nullptr);
+ }
},
// sizeof_channel_data
sizeof(F),
// init_channel_elem
[](grpc_channel_element* elem, grpc_channel_element_args* args) {
- GPR_ASSERT(!args->is_last);
- auto status = F::Create(args->channel_args,
- ChannelFilter::Args(args->channel_stack));
- if (!status.ok()) return absl_status_to_grpc_error(status.status());
+ GPR_ASSERT(args->is_last == ((kFlags & kFilterIsLast) != 0));
+ auto status = F::Create(ChannelArgs::FromC(args->channel_args),
+ ChannelFilter::Args(args->channel_stack, elem));
+ if (!status.ok()) {
+ static_assert(
+ sizeof(promise_filter_detail::InvalidChannelFilter) <= sizeof(F),
+ "InvalidChannelFilter must fit in F");
+ new (elem->channel_data)
+ promise_filter_detail::InvalidChannelFilter();
+ return absl_status_to_grpc_error(status.status());
+ }
new (elem->channel_data) F(std::move(*status));
return GRPC_ERROR_NONE;
},
+ // post_init_channel_elem
+ [](grpc_channel_stack*, grpc_channel_element* elem) {
+ static_cast<ChannelFilter*>(elem->channel_data)->PostInit();
+ },
// destroy_channel_elem
[](grpc_channel_element* elem) {
- static_cast<F*>(elem->channel_data)->~F();
+ static_cast<ChannelFilter*>(elem->channel_data)->~ChannelFilter();
},
// get_channel_info
- grpc_channel_next_get_info,
+ [](grpc_channel_element* elem, const grpc_channel_info* info) {
+ if (!static_cast<ChannelFilter*>(elem->channel_data)
+ ->GetChannelInfo(info)) {
+ grpc_channel_next_get_info(elem, info);
+ }
+ },
// name
name,
};
diff --git a/contrib/libs/grpc/src/core/lib/channel/status_util.cc b/contrib/libs/grpc/src/core/lib/channel/status_util.cc
index 0c60030d5a..488b7a383e 100644
--- a/contrib/libs/grpc/src/core/lib/channel/status_util.cc
+++ b/contrib/libs/grpc/src/core/lib/channel/status_util.cc
@@ -20,6 +20,10 @@
#include "src/core/lib/channel/status_util.h"
+#include <string.h>
+
+#include "y_absl/strings/str_cat.h"
+
#include "src/core/lib/gpr/useful.h"
struct status_string_entry {
@@ -107,3 +111,28 @@ bool grpc_status_code_from_int(int status_int, grpc_status_code* status) {
*status = static_cast<grpc_status_code>(status_int);
return true;
}
+
+namespace grpc_core {
+
+y_absl::Status MaybeRewriteIllegalStatusCode(y_absl::Status status,
+ y_absl::string_view source) {
+ switch (status.code()) {
+ // The set of disallowed codes, as per
+ // https://github.com/grpc/proposal/blob/master/A54-restrict-control-plane-status-codes.md.
+ case y_absl::StatusCode::kInvalidArgument:
+ case y_absl::StatusCode::kNotFound:
+ case y_absl::StatusCode::kAlreadyExists:
+ case y_absl::StatusCode::kFailedPrecondition:
+ case y_absl::StatusCode::kAborted:
+ case y_absl::StatusCode::kOutOfRange:
+ case y_absl::StatusCode::kDataLoss: {
+ return y_absl::InternalError(
+ y_absl::StrCat("Illegal status code from ", source,
+ "; original status: ", status.ToString()));
+ }
+ default:
+ return status;
+ }
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/channel/status_util.h b/contrib/libs/grpc/src/core/lib/channel/status_util.h
index b9245f234e..85794d4bd9 100644
--- a/contrib/libs/grpc/src/core/lib/channel/status_util.h
+++ b/contrib/libs/grpc/src/core/lib/channel/status_util.h
@@ -21,8 +21,8 @@
#include <grpc/support/port_platform.h>
-#include <stdbool.h>
-#include <string.h>
+#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
#include <grpc/status.h>
@@ -62,6 +62,13 @@ class StatusCodeSet {
};
} // namespace internal
+
+// Optionally rewrites a status as per
+// https://github.com/grpc/proposal/blob/master/A54-restrict-control-plane-status-codes.md.
+// The source parameter indicates where the status came from.
+y_absl::Status MaybeRewriteIllegalStatusCode(y_absl::Status status,
+ y_absl::string_view source);
+
} // namespace grpc_core
#endif /* GRPC_CORE_LIB_CHANNEL_STATUS_UTIL_H */
diff --git a/contrib/libs/grpc/src/core/lib/compression/compression.cc b/contrib/libs/grpc/src/core/lib/compression/compression.cc
index fc6cd69b16..c896e6b1d0 100644
--- a/contrib/libs/grpc/src/core/lib/compression/compression.cc
+++ b/contrib/libs/grpc/src/core/lib/compression/compression.cc
@@ -18,12 +18,17 @@
#include <grpc/support/port_platform.h>
-#include <stdlib.h>
+#include <stdint.h>
#include <string.h>
+#include "y_absl/types/optional.h"
+
#include <grpc/compression.h>
+#include <grpc/impl/codegen/compression_types.h>
+#include <grpc/slice.h>
#include "src/core/lib/compression/compression_internal.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/surface/api_trace.h"
diff --git a/contrib/libs/grpc/src/core/lib/compression/compression_internal.cc b/contrib/libs/grpc/src/core/lib/compression/compression_internal.cc
index ec2a732ac3..d556d06020 100644
--- a/contrib/libs/grpc/src/core/lib/compression/compression_internal.cc
+++ b/contrib/libs/grpc/src/core/lib/compression/compression_internal.cc
@@ -23,17 +23,14 @@
#include <stdlib.h>
#include <string.h>
-#include <cstdint>
-
#include "y_absl/container/inlined_vector.h"
-#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/ascii.h"
#include "y_absl/strings/str_split.h"
-#include <grpc/compression.h>
+#include <grpc/support/log.h>
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/surface/api_trace.h"
namespace grpc_core {
@@ -52,6 +49,48 @@ const char* CompressionAlgorithmAsString(grpc_compression_algorithm algorithm) {
}
}
+namespace {
+class CommaSeparatedLists {
+ public:
+ CommaSeparatedLists() : lists_{}, text_buffer_{} {
+ char* text_buffer = text_buffer_;
+ auto add_char = [&text_buffer, this](char c) {
+ if (text_buffer - text_buffer_ == kTextBufferSize) abort();
+ *text_buffer++ = c;
+ };
+ for (size_t list = 0; list < kNumLists; ++list) {
+ char* start = text_buffer;
+ for (size_t algorithm = 0; algorithm < GRPC_COMPRESS_ALGORITHMS_COUNT;
+ ++algorithm) {
+ if ((list & (1 << algorithm)) == 0) continue;
+ if (start != text_buffer) {
+ add_char(',');
+ add_char(' ');
+ }
+ const char* name = CompressionAlgorithmAsString(
+ static_cast<grpc_compression_algorithm>(algorithm));
+ for (const char* p = name; *p != '\0'; ++p) {
+ add_char(*p);
+ }
+ }
+ lists_[list] = y_absl::string_view(start, text_buffer - start);
+ }
+ if (text_buffer - text_buffer_ != kTextBufferSize) abort();
+ }
+
+ y_absl::string_view operator[](size_t list) const { return lists_[list]; }
+
+ private:
+ static constexpr size_t kNumLists = 1 << GRPC_COMPRESS_ALGORITHMS_COUNT;
+ // Experimentally determined (tweak things until it runs).
+ static constexpr size_t kTextBufferSize = 86;
+ y_absl::string_view lists_[kNumLists];
+ char text_buffer_[kTextBufferSize];
+};
+
+const CommaSeparatedLists kCommaSeparatedLists;
+} // namespace
+
y_absl::optional<grpc_compression_algorithm> ParseCompressionAlgorithm(
y_absl::string_view algorithm) {
if (algorithm == "identity") {
@@ -165,19 +204,12 @@ void CompressionAlgorithmSet::Set(grpc_compression_algorithm algorithm) {
}
}
-TString CompressionAlgorithmSet::ToString() const {
- y_absl::InlinedVector<const char*, GRPC_COMPRESS_ALGORITHMS_COUNT> segments;
- for (size_t i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) {
- if (set_.is_set(i)) {
- segments.push_back(CompressionAlgorithmAsString(
- static_cast<grpc_compression_algorithm>(i)));
- }
- }
- return y_absl::StrJoin(segments, ", ");
+y_absl::string_view CompressionAlgorithmSet::ToString() const {
+ return kCommaSeparatedLists[ToLegacyBitmask()];
}
Slice CompressionAlgorithmSet::ToSlice() const {
- return Slice::FromCopiedString(ToString());
+ return Slice::FromStaticString(ToString());
}
CompressionAlgorithmSet CompressionAlgorithmSet::FromString(
@@ -194,13 +226,7 @@ CompressionAlgorithmSet CompressionAlgorithmSet::FromString(
}
uint32_t CompressionAlgorithmSet::ToLegacyBitmask() const {
- uint32_t x = 0;
- for (size_t i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) {
- if (set_.is_set(i)) {
- x |= (1u << i);
- }
- }
- return x;
+ return set_.ToInt<uint32_t>();
}
y_absl::optional<grpc_compression_algorithm>
diff --git a/contrib/libs/grpc/src/core/lib/compression/compression_internal.h b/contrib/libs/grpc/src/core/lib/compression/compression_internal.h
index f5440e6f95..85b90621d4 100644
--- a/contrib/libs/grpc/src/core/lib/compression/compression_internal.h
+++ b/contrib/libs/grpc/src/core/lib/compression/compression_internal.h
@@ -21,14 +21,15 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
#include <initializer_list>
#include "y_absl/strings/string_view.h"
#include "y_absl/types/optional.h"
-#include <grpc/compression.h>
+#include <grpc/impl/codegen/compression_types.h>
#include <grpc/impl/codegen/grpc_types.h>
-#include <grpc/slice.h>
#include "src/core/lib/gprpp/bitset.h"
#include "src/core/lib/slice/slice.h"
@@ -73,7 +74,7 @@ class CompressionAlgorithmSet {
void Set(grpc_compression_algorithm algorithm);
// Return a comma separated string of the algorithms in this set.
- TString ToString() const;
+ y_absl::string_view ToString() const;
Slice ToSlice() const;
// Return a bitmask of the algorithms in this set.
diff --git a/contrib/libs/grpc/src/core/lib/compression/message_compress.cc b/contrib/libs/grpc/src/core/lib/compression/message_compress.cc
index b88f5103c7..7bb4dd6bff 100644
--- a/contrib/libs/grpc/src/core/lib/compression/message_compress.cc
+++ b/contrib/libs/grpc/src/core/lib/compression/message_compress.cc
@@ -22,12 +22,14 @@
#include <string.h>
+#include <zconf.h>
#include <zlib.h>
+#include <grpc/slice_buffer.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
#define OUTPUT_BLOCK_SIZE 1024
diff --git a/contrib/libs/grpc/src/core/lib/compression/message_compress.h b/contrib/libs/grpc/src/core/lib/compression/message_compress.h
index b84120c19e..b453eaeb89 100644
--- a/contrib/libs/grpc/src/core/lib/compression/message_compress.h
+++ b/contrib/libs/grpc/src/core/lib/compression/message_compress.h
@@ -21,9 +21,8 @@
#include <grpc/support/port_platform.h>
-#include <grpc/slice_buffer.h>
-
-#include "src/core/lib/compression/compression_internal.h"
+#include <grpc/impl/codegen/compression_types.h>
+#include <grpc/slice.h>
/* compress 'input' to 'output' using 'algorithm'.
On success, appends compressed slices to output and returns 1.
diff --git a/contrib/libs/grpc/src/core/lib/config/core_configuration.cc b/contrib/libs/grpc/src/core/lib/config/core_configuration.cc
index 3924cd95c5..4469f9db00 100644
--- a/contrib/libs/grpc/src/core/lib/config/core_configuration.cc
+++ b/contrib/libs/grpc/src/core/lib/config/core_configuration.cc
@@ -16,7 +16,10 @@
#include "src/core/lib/config/core_configuration.h"
+#include <algorithm>
#include <atomic>
+#include <utility>
+#include <vector>
#include <grpc/support/log.h>
@@ -40,7 +43,11 @@ CoreConfiguration::CoreConfiguration(Builder* builder)
handshaker_registry_(builder->handshaker_registry_.Build()),
channel_creds_registry_(builder->channel_creds_registry_.Build()),
service_config_parser_(builder->service_config_parser_.Build()),
- resolver_registry_(builder->resolver_registry_.Build()) {}
+ resolver_registry_(builder->resolver_registry_.Build()),
+ lb_policy_registry_(builder->lb_policy_registry_.Build()),
+ proxy_mapper_registry_(builder->proxy_mapper_registry_.Build()),
+ certificate_provider_registry_(
+ builder->certificate_provider_registry_.Build()) {}
void CoreConfiguration::RegisterBuilder(std::function<void(Builder*)> builder) {
GPR_ASSERT(config_.load(std::memory_order_relaxed) == nullptr &&
diff --git a/contrib/libs/grpc/src/core/lib/config/core_configuration.h b/contrib/libs/grpc/src/core/lib/config/core_configuration.h
index a526c79b2e..6285c60bb0 100644
--- a/contrib/libs/grpc/src/core/lib/config/core_configuration.h
+++ b/contrib/libs/grpc/src/core/lib/config/core_configuration.h
@@ -18,13 +18,19 @@
#include <grpc/support/port_platform.h>
#include <atomic>
+#include <functional>
+
+#include <grpc/support/log.h>
#include "src/core/lib/channel/channel_args_preconditioning.h"
-#include "src/core/lib/channel/handshaker_registry.h"
+#include "src/core/lib/handshaker/proxy_mapper_registry.h"
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
#include "src/core/lib/resolver/resolver_registry.h"
+#include "src/core/lib/security/certificate_provider/certificate_provider_registry.h"
#include "src/core/lib/security/credentials/channel_creds_registry.h"
#include "src/core/lib/service_config/service_config_parser.h"
#include "src/core/lib/surface/channel_init.h"
+#include "src/core/lib/transport/handshaker_registry.h"
namespace grpc_core {
@@ -61,6 +67,18 @@ class CoreConfiguration {
return &resolver_registry_;
}
+ LoadBalancingPolicyRegistry::Builder* lb_policy_registry() {
+ return &lb_policy_registry_;
+ }
+
+ ProxyMapperRegistry::Builder* proxy_mapper_registry() {
+ return &proxy_mapper_registry_;
+ }
+
+ CertificateProviderRegistry::Builder* certificate_provider_registry() {
+ return &certificate_provider_registry_;
+ }
+
private:
friend class CoreConfiguration;
@@ -70,11 +88,58 @@ class CoreConfiguration {
ChannelCredsRegistry<>::Builder channel_creds_registry_;
ServiceConfigParser::Builder service_config_parser_;
ResolverRegistry::Builder resolver_registry_;
+ LoadBalancingPolicyRegistry::Builder lb_policy_registry_;
+ ProxyMapperRegistry::Builder proxy_mapper_registry_;
+ CertificateProviderRegistry::Builder certificate_provider_registry_;
Builder();
CoreConfiguration* Build();
};
+ // Stores a builder for RegisterBuilder
+ struct RegisteredBuilder {
+ std::function<void(Builder*)> builder;
+ RegisteredBuilder* next;
+ };
+
+ // Temporarily replaces core configuration with what is built from the
+ // provided BuildFunc that takes (Builder*) and returns void.
+ // Requires no concurrent Get() be called. Restores current core
+ // configuration when this object is destroyed. The default builder
+ // is not backed up or restored.
+ //
+ // Useful for running multiple tests back to back in the same process
+ // without side effects from previous tests.
+ class WithSubstituteBuilder {
+ public:
+ template <typename BuildFunc>
+ explicit WithSubstituteBuilder(BuildFunc build) {
+ // Build core configuration to replace.
+ Builder builder;
+ build(&builder);
+ CoreConfiguration* p = builder.Build();
+
+ // Backup current core configuration and replace/reset.
+ config_restore_ =
+ CoreConfiguration::config_.exchange(p, std::memory_order_acquire);
+ builders_restore_ = CoreConfiguration::builders_.exchange(
+ nullptr, std::memory_order_acquire);
+ }
+
+ ~WithSubstituteBuilder() {
+ // Reset and restore.
+ Reset();
+ GPR_ASSERT(CoreConfiguration::config_.exchange(
+ config_restore_, std::memory_order_acquire) == nullptr);
+ GPR_ASSERT(CoreConfiguration::builders_.exchange(
+ builders_restore_, std::memory_order_acquire) == nullptr);
+ }
+
+ private:
+ CoreConfiguration* config_restore_;
+ RegisteredBuilder* builders_restore_;
+ };
+
// Lifetime methods
// Get the core configuration; if it does not exist, create it.
@@ -86,36 +151,11 @@ class CoreConfiguration {
return BuildNewAndMaybeSet();
}
- // Build a special core configuration.
- // Requires no concurrent Get() be called.
- // Doesn't call the regular BuildCoreConfiguration function, instead calls
- // `build`.
- // BuildFunc is a callable that takes a Builder* and returns void.
- // We use a template instead of std::function<void(Builder*)> to avoid
- // including std::function in this widely used header, and to ensure no code
- // is generated in programs that do not use this function.
- // This is sometimes useful for testing.
- template <typename BuildFunc>
- static void BuildSpecialConfiguration(BuildFunc build) {
- // Build bespoke configuration
- Builder builder;
- build(&builder);
- CoreConfiguration* p = builder.Build();
- // Swap in final configuration, deleting anything that was already present.
- delete config_.exchange(p, std::memory_order_release);
- }
-
// Attach a registration function globally.
// Each registration function is called *in addition to*
- // BuildCoreConfiguration for the default core configuration. When using
- // BuildSpecialConfiguration, one can use CallRegisteredBuilders to call them.
- // Must be called before a configuration is built.
+ // BuildCoreConfiguration for the default core configuration.
static void RegisterBuilder(std::function<void(Builder*)> builder);
- // Call all registered builders.
- // See RegisterBuilder for why you might want to call this.
- static void CallRegisteredBuilders(Builder* builder);
-
// Drop the core configuration. Users must ensure no other threads are
// accessing the configuration.
// Clears any dynamically registered builders.
@@ -127,10 +167,8 @@ class CoreConfiguration {
template <typename BuildFunc, typename RunFunc>
static void RunWithSpecialConfiguration(BuildFunc build_configuration,
RunFunc code_to_run) {
- Reset();
- BuildSpecialConfiguration(build_configuration);
+ WithSubstituteBuilder builder(build_configuration);
code_to_run();
- Reset();
}
// Accessors
@@ -157,6 +195,18 @@ class CoreConfiguration {
return resolver_registry_;
}
+ const LoadBalancingPolicyRegistry& lb_policy_registry() const {
+ return lb_policy_registry_;
+ }
+
+ const ProxyMapperRegistry& proxy_mapper_registry() const {
+ return proxy_mapper_registry_;
+ }
+
+ const CertificateProviderRegistry& certificate_provider_registry() const {
+ return certificate_provider_registry_;
+ }
+
static void SetDefaultBuilder(void (*builder)(CoreConfiguration::Builder*)) {
default_builder_ = builder;
}
@@ -164,12 +214,6 @@ class CoreConfiguration {
private:
explicit CoreConfiguration(Builder* builder);
- // Stores a builder for RegisterBuilder
- struct RegisteredBuilder {
- std::function<void(Builder*)> builder;
- RegisteredBuilder* next;
- };
-
// Create a new CoreConfiguration, and either set it or throw it away.
// We allow multiple CoreConfiguration's to be created in parallel.
static const CoreConfiguration& BuildNewAndMaybeSet();
@@ -187,6 +231,9 @@ class CoreConfiguration {
ChannelCredsRegistry<> channel_creds_registry_;
ServiceConfigParser service_config_parser_;
ResolverRegistry resolver_registry_;
+ LoadBalancingPolicyRegistry lb_policy_registry_;
+ ProxyMapperRegistry proxy_mapper_registry_;
+ CertificateProviderRegistry certificate_provider_registry_;
};
extern void BuildCoreConfiguration(CoreConfiguration::Builder* builder);
diff --git a/contrib/libs/grpc/src/core/lib/debug/stats.cc b/contrib/libs/grpc/src/core/lib/debug/stats.cc
index 1ce09e55e4..7da69dffc9 100644
--- a/contrib/libs/grpc/src/core/lib/debug/stats.cc
+++ b/contrib/libs/grpc/src/core/lib/debug/stats.cc
@@ -23,38 +23,36 @@
#include <inttypes.h>
#include <string.h>
+#include <algorithm>
#include <vector>
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
-
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gpr/useful.h"
-
-grpc_stats_data* grpc_stats_per_cpu_storage = nullptr;
-static size_t g_num_cores;
-
-void grpc_stats_init(void) {
- g_num_cores = std::max(1u, gpr_cpu_num_cores());
- grpc_stats_per_cpu_storage = static_cast<grpc_stats_data*>(
- gpr_zalloc(sizeof(grpc_stats_data) * g_num_cores));
-}
-
-void grpc_stats_shutdown(void) { gpr_free(grpc_stats_per_cpu_storage); }
+#include <grpc/support/cpu.h>
+
+namespace grpc_core {
+Stats* const g_stats_data = [] {
+ size_t num_cores = gpr_cpu_num_cores();
+ Stats* stats = static_cast<Stats*>(
+ gpr_zalloc(sizeof(Stats) + num_cores * sizeof(grpc_stats_data)));
+ stats->num_cores = num_cores;
+ return stats;
+}();
+} // namespace grpc_core
void grpc_stats_collect(grpc_stats_data* output) {
memset(output, 0, sizeof(*output));
- for (size_t core = 0; core < g_num_cores; core++) {
+ for (size_t core = 0; core < grpc_core::g_stats_data->num_cores; core++) {
for (size_t i = 0; i < GRPC_STATS_COUNTER_COUNT; i++) {
output->counters[i] += gpr_atm_no_barrier_load(
- &grpc_stats_per_cpu_storage[core].counters[i]);
+ &grpc_core::g_stats_data->per_cpu[core].counters[i]);
}
for (size_t i = 0; i < GRPC_STATS_HISTOGRAM_BUCKETS; i++) {
output->histograms[i] += gpr_atm_no_barrier_load(
- &grpc_stats_per_cpu_storage[core].histograms[i]);
+ &grpc_core::g_stats_data->per_cpu[core].histograms[i]);
}
}
}
@@ -69,21 +67,12 @@ void grpc_stats_diff(const grpc_stats_data* b, const grpc_stats_data* a,
}
}
-int grpc_stats_histo_find_bucket_slow(int value, const int* table,
- int table_size) {
- GRPC_STATS_INC_HISTOGRAM_SLOW_LOOKUPS();
- const int* const start = table;
- while (table_size > 0) {
- int step = table_size / 2;
- const int* it = table + step;
- if (value >= *it) {
- table = it + 1;
- table_size -= step + 1;
- } else {
- table_size = step;
- }
- }
- return static_cast<int>(table - start) - 1;
+void grpc_stats_inc_histogram_value(int histogram, int value) {
+ const int bucket = grpc_stats_get_bucket[histogram](value);
+ gpr_atm_no_barrier_fetch_add(
+ &GRPC_THREAD_STATS_DATA()
+ ->histograms[grpc_stats_histo_start[histogram] + bucket],
+ 1);
}
size_t grpc_stats_histo_count(const grpc_stats_data* stats,
@@ -145,28 +134,32 @@ double grpc_stats_histo_percentile(const grpc_stats_data* stats,
static_cast<double>(count) * percentile / 100.0);
}
+namespace {
+template <typename I>
+TString ArrayToJson(const I* values, size_t count) {
+ std::vector<TString> parts;
+ for (size_t i = 0; i < count; i++) {
+ parts.push_back(y_absl::StrFormat("%d", values[i]));
+ }
+ return y_absl::StrCat("[", y_absl::StrJoin(parts, ","), "]");
+}
+} // namespace
+
TString grpc_stats_data_as_json(const grpc_stats_data* data) {
std::vector<TString> parts;
- parts.push_back("{");
for (size_t i = 0; i < GRPC_STATS_COUNTER_COUNT; i++) {
parts.push_back(y_absl::StrFormat(
"\"%s\": %" PRIdPTR, grpc_stats_counter_name[i], data->counters[i]));
}
for (size_t i = 0; i < GRPC_STATS_HISTOGRAM_COUNT; i++) {
- parts.push_back(y_absl::StrFormat("\"%s\": [", grpc_stats_histogram_name[i]));
- for (int j = 0; j < grpc_stats_histo_buckets[i]; j++) {
- parts.push_back(
- y_absl::StrFormat("%s%" PRIdPTR, j == 0 ? "" : ",",
- data->histograms[grpc_stats_histo_start[i] + j]));
- }
+ parts.push_back(y_absl::StrFormat(
+ "\"%s\": %s", grpc_stats_histogram_name[i],
+ ArrayToJson(data->histograms + grpc_stats_histo_start[i],
+ grpc_stats_histo_buckets[i])));
parts.push_back(
- y_absl::StrFormat("], \"%s_bkt\": [", grpc_stats_histogram_name[i]));
- for (int j = 0; j < grpc_stats_histo_buckets[i]; j++) {
- parts.push_back(y_absl::StrFormat(
- "%s%d", j == 0 ? "" : ",", grpc_stats_histo_bucket_boundaries[i][j]));
- }
- parts.push_back("]");
+ y_absl::StrFormat("\"%s_bkt\": %s", grpc_stats_histogram_name[i],
+ ArrayToJson(grpc_stats_histo_bucket_boundaries[i],
+ grpc_stats_histo_buckets[i])));
}
- parts.push_back("}");
- return y_absl::StrJoin(parts, "");
+ return y_absl::StrCat("{", y_absl::StrJoin(parts, ", "), "}");
}
diff --git a/contrib/libs/grpc/src/core/lib/debug/stats.h b/contrib/libs/grpc/src/core/lib/debug/stats.h
index 3bd83e5511..cf60b57028 100644
--- a/contrib/libs/grpc/src/core/lib/debug/stats.h
+++ b/contrib/libs/grpc/src/core/lib/debug/stats.h
@@ -21,12 +21,14 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
#include <util/generic/string.h>
#include <util/string/cast.h>
#include <grpc/support/atm.h>
-#include "src/core/lib/debug/stats_data.h"
+#include "src/core/lib/debug/stats_data.h" // IWYU pragma: export
#include "src/core/lib/iomgr/exec_ctx.h"
typedef struct grpc_stats_data {
@@ -34,14 +36,18 @@ typedef struct grpc_stats_data {
gpr_atm histograms[GRPC_STATS_HISTOGRAM_BUCKETS];
} grpc_stats_data;
-extern grpc_stats_data* grpc_stats_per_cpu_storage;
+namespace grpc_core {
+struct Stats {
+ size_t num_cores;
+ grpc_stats_data per_cpu[0];
+};
+extern Stats* const g_stats_data;
+} // namespace grpc_core
#define GRPC_THREAD_STATS_DATA() \
- (&grpc_stats_per_cpu_storage[grpc_core::ExecCtx::Get()->starting_cpu()])
+ (&::grpc_core::g_stats_data \
+ ->per_cpu[grpc_core::ExecCtx::Get()->starting_cpu()])
-/* Only collect stats if GRPC_COLLECT_STATS is defined or it is a debug build.
- */
-#if defined(GRPC_COLLECT_STATS) || !defined(NDEBUG)
#define GRPC_STATS_INC_COUNTER(ctr) \
(gpr_atm_no_barrier_fetch_add(&GRPC_THREAD_STATS_DATA()->counters[(ctr)], 1))
@@ -49,24 +55,17 @@ extern grpc_stats_data* grpc_stats_per_cpu_storage;
(gpr_atm_no_barrier_fetch_add( \
&GRPC_THREAD_STATS_DATA()->histograms[histogram##_FIRST_SLOT + (index)], \
1))
-#else /* defined(GRPC_COLLECT_STATS) || !defined(NDEBUG) */
-#define GRPC_STATS_INC_COUNTER(ctr)
-#define GRPC_STATS_INC_HISTOGRAM(histogram, index)
-#endif /* defined(GRPC_COLLECT_STATS) || !defined(NDEBUG) */
-void grpc_stats_init(void);
-void grpc_stats_shutdown(void);
void grpc_stats_collect(grpc_stats_data* output);
// c = b-a
void grpc_stats_diff(const grpc_stats_data* b, const grpc_stats_data* a,
grpc_stats_data* c);
TString grpc_stats_data_as_json(const grpc_stats_data* data);
-int grpc_stats_histo_find_bucket_slow(int value, const int* table,
- int table_size);
double grpc_stats_histo_percentile(const grpc_stats_data* stats,
grpc_stats_histograms histogram,
double percentile);
size_t grpc_stats_histo_count(const grpc_stats_data* stats,
grpc_stats_histograms histogram);
+void grpc_stats_inc_histogram_value(int histogram, int value);
#endif // GRPC_CORE_LIB_DEBUG_STATS_H
diff --git a/contrib/libs/grpc/src/core/lib/debug/stats_data.cc b/contrib/libs/grpc/src/core/lib/debug/stats_data.cc
index 21e27f2b7f..43759caf88 100644
--- a/contrib/libs/grpc/src/core/lib/debug/stats_data.cc
+++ b/contrib/libs/grpc/src/core/lib/debug/stats_data.cc
@@ -22,668 +22,169 @@
#include "src/core/lib/debug/stats_data.h"
+#include <stdint.h>
+
#include "src/core/lib/debug/stats.h"
-#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
+namespace {
+union DblUint {
+ double dbl;
+ uint64_t uint;
+};
+} // namespace
const char* grpc_stats_counter_name[GRPC_STATS_COUNTER_COUNT] = {
"client_calls_created",
"server_calls_created",
- "cqs_created",
"client_channels_created",
"client_subchannels_created",
"server_channels_created",
- "syscall_poll",
- "syscall_wait",
- "pollset_kick",
- "pollset_kicked_without_poller",
- "pollset_kicked_again",
- "pollset_kick_wakeup_fd",
- "pollset_kick_wakeup_cv",
- "pollset_kick_own_thread",
- "syscall_epoll_ctl",
- "pollset_fd_cache_hits",
- "histogram_slow_lookups",
"syscall_write",
"syscall_read",
- "tcp_backup_pollers_created",
- "tcp_backup_poller_polls",
- "http2_op_batches",
- "http2_op_cancel",
- "http2_op_send_initial_metadata",
- "http2_op_send_message",
- "http2_op_send_trailing_metadata",
- "http2_op_recv_initial_metadata",
- "http2_op_recv_message",
- "http2_op_recv_trailing_metadata",
+ "tcp_read_alloc_8k",
+ "tcp_read_alloc_64k",
"http2_settings_writes",
"http2_pings_sent",
"http2_writes_begun",
- "http2_writes_offloaded",
- "http2_writes_continued",
- "http2_partial_writes",
- "http2_initiate_write_due_to_initial_write",
- "http2_initiate_write_due_to_start_new_stream",
- "http2_initiate_write_due_to_send_message",
- "http2_initiate_write_due_to_send_initial_metadata",
- "http2_initiate_write_due_to_send_trailing_metadata",
- "http2_initiate_write_due_to_retry_send_ping",
- "http2_initiate_write_due_to_continue_pings",
- "http2_initiate_write_due_to_goaway_sent",
- "http2_initiate_write_due_to_rst_stream",
- "http2_initiate_write_due_to_close_from_api",
- "http2_initiate_write_due_to_stream_flow_control",
- "http2_initiate_write_due_to_transport_flow_control",
- "http2_initiate_write_due_to_send_settings",
- "http2_initiate_write_due_to_bdp_estimator_ping",
- "http2_initiate_write_due_to_flow_control_unstalled_by_setting",
- "http2_initiate_write_due_to_flow_control_unstalled_by_update",
- "http2_initiate_write_due_to_application_ping",
- "http2_initiate_write_due_to_keepalive_ping",
- "http2_initiate_write_due_to_transport_flow_control_unstalled",
- "http2_initiate_write_due_to_ping_response",
- "http2_initiate_write_due_to_force_rst_stream",
- "http2_spurious_writes_begun",
- "hpack_recv_indexed",
- "hpack_recv_lithdr_incidx",
- "hpack_recv_lithdr_incidx_v",
- "hpack_recv_lithdr_notidx",
- "hpack_recv_lithdr_notidx_v",
- "hpack_recv_lithdr_nvridx",
- "hpack_recv_lithdr_nvridx_v",
- "hpack_recv_uncompressed",
- "hpack_recv_huffman",
- "hpack_recv_binary",
- "hpack_recv_binary_base64",
- "hpack_send_indexed",
- "hpack_send_lithdr_incidx",
- "hpack_send_lithdr_incidx_v",
- "hpack_send_lithdr_notidx",
- "hpack_send_lithdr_notidx_v",
- "hpack_send_lithdr_nvridx",
- "hpack_send_lithdr_nvridx_v",
- "hpack_send_uncompressed",
- "hpack_send_huffman",
- "hpack_send_binary",
- "hpack_send_binary_base64",
- "combiner_locks_initiated",
- "combiner_locks_scheduled_items",
- "combiner_locks_scheduled_final_items",
- "combiner_locks_offloaded",
- "call_combiner_locks_initiated",
- "call_combiner_locks_scheduled_items",
- "call_combiner_set_notify_on_cancel",
- "call_combiner_cancelled",
- "executor_scheduled_short_items",
- "executor_scheduled_long_items",
- "executor_scheduled_to_self",
- "executor_wakeup_initiated",
- "executor_queue_drained",
- "executor_push_retries",
- "server_requested_calls",
- "server_slowpath_requests_queued",
- "cq_ev_queue_trylock_failures",
- "cq_ev_queue_trylock_successes",
- "cq_ev_queue_transient_pop_failures",
+ "http2_transport_stalls",
+ "http2_stream_stalls",
+ "cq_pluck_creates",
+ "cq_next_creates",
+ "cq_callback_creates",
};
const char* grpc_stats_counter_doc[GRPC_STATS_COUNTER_COUNT] = {
"Number of client side calls created by this process",
"Number of server side calls created by this process",
- "Number of completion queues created",
"Number of client channels created",
"Number of client subchannels created",
"Number of server channels created",
- "Number of polling syscalls (epoll_wait, poll, etc) made by this process",
- "Number of sleeping syscalls made by this process",
- "How many polling wakeups were performed by the process (only valid for "
- "epoll1 right now)",
- "How many times was a polling wakeup requested without an active poller "
- "(only valid for epoll1 right now)",
- "How many times was the same polling worker awoken repeatedly before "
- "waking up (only valid for epoll1 right now)",
- "How many times was an eventfd used as the wakeup vector for a polling "
- "wakeup (only valid for epoll1 right now)",
- "How many times was a condition variable used as the wakeup vector for a "
- "polling wakeup (only valid for epoll1 right now)",
- "How many times could a polling wakeup be satisfied by keeping the waking "
- "thread awake? (only valid for epoll1 right now)",
- "Number of epoll_ctl calls made (only valid for epollex right now)",
- "Number of epoll_ctl calls skipped because the fd was cached as already "
- "being added. (only valid for epollex right now)",
- "Number of times histogram increments went through the slow (binary "
- "search) path",
"Number of write syscalls (or equivalent - eg sendmsg) made by this "
"process",
"Number of read syscalls (or equivalent - eg recvmsg) made by this process",
- "Number of times a backup poller has been created (this can be expensive)",
- "Number of polls performed on the backup poller",
- "Number of batches received by HTTP2 transport",
- "Number of cancelations received by HTTP2 transport",
- "Number of batches containing send initial metadata",
- "Number of batches containing send message",
- "Number of batches containing send trailing metadata",
- "Number of batches containing receive initial metadata",
- "Number of batches containing receive message",
- "Number of batches containing receive trailing metadata",
+ "Number of 8k allocations by the TCP subsystem for reading",
+ "Number of 64k allocations by the TCP subsystem for reading",
"Number of settings frames sent",
"Number of HTTP2 pings sent by process",
"Number of HTTP2 writes initiated",
- "Number of HTTP2 writes offloaded to the executor from application threads",
- "Number of HTTP2 writes that finished seeing more data needed to be "
- "written",
- "Number of HTTP2 writes that were made knowing there was still more data "
- "to be written (we cap maximum write size to syscall_write)",
- "Number of HTTP2 writes initiated due to 'initial_write'",
- "Number of HTTP2 writes initiated due to 'start_new_stream'",
- "Number of HTTP2 writes initiated due to 'send_message'",
- "Number of HTTP2 writes initiated due to 'send_initial_metadata'",
- "Number of HTTP2 writes initiated due to 'send_trailing_metadata'",
- "Number of HTTP2 writes initiated due to 'retry_send_ping'",
- "Number of HTTP2 writes initiated due to 'continue_pings'",
- "Number of HTTP2 writes initiated due to 'goaway_sent'",
- "Number of HTTP2 writes initiated due to 'rst_stream'",
- "Number of HTTP2 writes initiated due to 'close_from_api'",
- "Number of HTTP2 writes initiated due to 'stream_flow_control'",
- "Number of HTTP2 writes initiated due to 'transport_flow_control'",
- "Number of HTTP2 writes initiated due to 'send_settings'",
- "Number of HTTP2 writes initiated due to 'bdp_estimator_ping'",
- "Number of HTTP2 writes initiated due to "
- "'flow_control_unstalled_by_setting'",
- "Number of HTTP2 writes initiated due to "
- "'flow_control_unstalled_by_update'",
- "Number of HTTP2 writes initiated due to 'application_ping'",
- "Number of HTTP2 writes initiated due to 'keepalive_ping'",
- "Number of HTTP2 writes initiated due to "
- "'transport_flow_control_unstalled'",
- "Number of HTTP2 writes initiated due to 'ping_response'",
- "Number of HTTP2 writes initiated due to 'force_rst_stream'",
- "Number of HTTP2 writes initiated with nothing to write",
- "Number of HPACK indexed fields received",
- "Number of HPACK literal headers received with incremental indexing",
- "Number of HPACK literal headers received with incremental indexing and "
- "literal keys",
- "Number of HPACK literal headers received with no indexing",
- "Number of HPACK literal headers received with no indexing and literal "
- "keys",
- "Number of HPACK literal headers received with never-indexing",
- "Number of HPACK literal headers received with never-indexing and literal "
- "keys",
- "Number of uncompressed strings received in metadata",
- "Number of huffman encoded strings received in metadata",
- "Number of binary strings received in metadata",
- "Number of binary strings received encoded in base64 in metadata",
- "Number of HPACK indexed fields sent",
- "Number of HPACK literal headers sent with incremental indexing",
- "Number of HPACK literal headers sent with incremental indexing and "
- "literal keys",
- "Number of HPACK literal headers sent with no indexing",
- "Number of HPACK literal headers sent with no indexing and literal keys",
- "Number of HPACK literal headers sent with never-indexing",
- "Number of HPACK literal headers sent with never-indexing and literal keys",
- "Number of uncompressed strings sent in metadata",
- "Number of huffman encoded strings sent in metadata",
- "Number of binary strings received in metadata",
- "Number of binary strings received encoded in base64 in metadata",
- "Number of combiner lock entries by process (first items queued to a "
- "combiner)",
- "Number of items scheduled against combiner locks",
- "Number of final items scheduled against combiner locks",
- "Number of combiner locks offloaded to different threads",
- "Number of call combiner lock entries by process (first items queued to a "
- "call combiner)",
- "Number of items scheduled against call combiner locks",
- "Number of times a cancellation callback was set on a call combiner",
- "Number of times a call combiner was cancelled",
- "Number of finite runtime closures scheduled against the executor (gRPC "
- "thread pool)",
- "Number of potentially infinite runtime closures scheduled against the "
- "executor (gRPC thread pool)",
- "Number of closures scheduled by the executor to the executor",
- "Number of thread wakeups initiated within the executor",
- "Number of times an executor queue was drained",
- "Number of times we raced and were forced to retry pushing a closure to "
- "the executor",
- "How many calls were requested (not necessarily received) by the server",
- "How many times was the server slow path taken (indicates too few "
- "outstanding requests)",
- "Number of lock (trylock) acquisition failures on completion queue event "
- "queue. High value here indicates high contention on completion queues",
- "Number of lock (trylock) acquisition successes on completion queue event "
- "queue.",
- "Number of times NULL was popped out of completion queue's event queue "
- "even though the event queue was not empty",
+ "Number of times sending was completely stalled by the transport flow "
+ "control window",
+ "Number of times sending was completely stalled by the stream flow control "
+ "window",
+ "Number of completion queues created for cq_pluck (indicates sync api "
+ "usage)",
+ "Number of completion queues created for cq_next (indicates cq async api "
+ "usage)",
+ "Number of completion queues created for cq_callback (indicates callback "
+ "api usage)",
};
const char* grpc_stats_histogram_name[GRPC_STATS_HISTOGRAM_COUNT] = {
- "call_initial_size",
- "poll_events_returned",
- "tcp_write_size",
- "tcp_write_iov_size",
- "tcp_read_size",
- "tcp_read_offer",
- "tcp_read_offer_iov_size",
+ "call_initial_size", "tcp_write_size", "tcp_write_iov_size",
+ "tcp_read_size", "tcp_read_offer", "tcp_read_offer_iov_size",
"http2_send_message_size",
- "http2_send_initial_metadata_per_write",
- "http2_send_message_per_write",
- "http2_send_trailing_metadata_per_write",
- "http2_send_flowctl_per_write",
- "server_cqs_checked",
};
const char* grpc_stats_histogram_doc[GRPC_STATS_HISTOGRAM_COUNT] = {
"Initial size of the grpc_call arena created at call start",
- "How many events are called for each syscall_poll",
"Number of bytes offered to each syscall_write",
"Number of byte segments offered to each syscall_write",
"Number of bytes received by each syscall_read",
"Number of bytes offered to each syscall_read",
"Number of byte segments offered to each syscall_read",
"Size of messages received by HTTP2 transport",
- "Number of streams initiated written per TCP write",
- "Number of streams whose payload was written per TCP write",
- "Number of streams terminated per TCP write",
- "Number of flow control updates written per TCP write",
- // NOLINTNEXTLINE(bugprone-suspicious-missing-comma)
- "How many completion queues were checked looking for a CQ that had "
- "requested the incoming call",
};
-const int grpc_stats_table_0[65] = {
- 0, 1, 2, 3, 4, 5, 7, 9, 11, 14,
- 17, 21, 26, 32, 39, 47, 57, 68, 82, 98,
- 117, 140, 167, 199, 238, 284, 339, 404, 482, 575,
- 685, 816, 972, 1158, 1380, 1644, 1959, 2334, 2780, 3312,
- 3945, 4699, 5597, 6667, 7941, 9459, 11267, 13420, 15984, 19038,
- 22676, 27009, 32169, 38315, 45635, 54353, 64737, 77104, 91834, 109378,
- 130273, 155159, 184799, 220100, 262144};
-const uint8_t grpc_stats_table_1[124] = {
- 0, 0, 0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6,
- 7, 7, 7, 8, 9, 9, 10, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15,
- 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 22, 23, 24,
- 24, 25, 25, 26, 26, 26, 27, 27, 28, 29, 29, 30, 30, 30, 31, 31, 32, 33,
- 33, 34, 34, 34, 35, 35, 36, 37, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41,
- 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50,
- 51, 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, 56, 57, 57, 58, 58};
-const int grpc_stats_table_2[129] = {
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30,
- 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60,
- 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 94, 98, 102, 106, 110,
- 114, 118, 122, 126, 131, 136, 141, 146, 151, 156, 162, 168, 174, 180, 186,
- 192, 199, 206, 213, 220, 228, 236, 244, 252, 260, 269, 278, 287, 297, 307,
- 317, 327, 338, 349, 360, 372, 384, 396, 409, 422, 436, 450, 464, 479, 494,
- 510, 526, 543, 560, 578, 596, 615, 634, 654, 674, 695, 717, 739, 762, 785,
- 809, 834, 859, 885, 912, 939, 967, 996, 1024};
-const uint8_t grpc_stats_table_3[166] = {
- 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7,
- 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 16,
- 17, 17, 18, 19, 19, 20, 21, 21, 22, 23, 23, 24, 25, 25, 26, 26, 27, 27, 28,
- 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 36, 36, 37, 38, 39,
- 40, 40, 41, 42, 42, 43, 44, 44, 45, 46, 46, 47, 48, 48, 49, 49, 50, 50, 51,
- 51, 52, 52, 53, 53, 54, 54, 55, 56, 57, 58, 59, 59, 60, 61, 62, 63, 63, 64,
- 65, 65, 66, 67, 67, 68, 69, 69, 70, 71, 71, 72, 72, 73, 73, 74, 75, 75, 76,
- 76, 77, 78, 79, 79, 80, 81, 82, 83, 84, 85, 85, 86, 87, 88, 88, 89, 90, 90,
- 91, 92, 92, 93, 94, 94, 95, 95, 96, 97, 97, 98, 98, 99};
-const int grpc_stats_table_4[65] = {
- 0, 1, 2, 3, 4, 6, 8, 11,
- 15, 20, 26, 34, 44, 57, 73, 94,
- 121, 155, 199, 255, 327, 419, 537, 688,
- 881, 1128, 1444, 1848, 2365, 3026, 3872, 4954,
- 6338, 8108, 10373, 13270, 16976, 21717, 27782, 35541,
- 45467, 58165, 74409, 95189, 121772, 155778, 199281, 254933,
- 326126, 417200, 533707, 682750, 873414, 1117323, 1429345, 1828502,
- 2339127, 2992348, 3827987, 4896985, 6264509, 8013925, 10251880, 13114801,
- 16777216};
-const uint8_t grpc_stats_table_5[87] = {
- 0, 0, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11,
- 11, 12, 13, 13, 14, 15, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22, 22, 23,
- 24, 25, 25, 26, 27, 27, 28, 29, 29, 30, 31, 31, 32, 33, 34, 34, 35, 36,
- 36, 37, 38, 39, 39, 40, 41, 41, 42, 43, 44, 44, 45, 45, 46, 47, 48, 48,
- 49, 50, 51, 51, 52, 53, 53, 54, 55, 56, 56, 57, 58, 58, 59};
-const int grpc_stats_table_6[65] = {
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 14, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 43, 47,
- 51, 56, 61, 66, 72, 78, 85, 92, 100, 109, 118, 128, 139,
- 151, 164, 178, 193, 209, 226, 244, 264, 285, 308, 333, 359, 387,
- 418, 451, 486, 524, 565, 609, 656, 707, 762, 821, 884, 952, 1024};
-const uint8_t grpc_stats_table_7[102] = {
- 0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
- 6, 7, 7, 7, 8, 8, 9, 9, 10, 11, 11, 12, 12, 13, 13, 14, 14,
- 14, 15, 15, 16, 16, 17, 17, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23,
- 23, 24, 24, 24, 25, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32,
- 32, 33, 33, 34, 35, 35, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41,
- 42, 42, 43, 44, 44, 45, 46, 46, 47, 48, 48, 49, 49, 50, 50, 51, 51};
-const int grpc_stats_table_8[9] = {0, 1, 2, 4, 7, 13, 23, 39, 64};
-const uint8_t grpc_stats_table_9[9] = {0, 0, 1, 2, 2, 3, 4, 4, 5};
-void grpc_stats_inc_call_initial_size(int value) {
- value = grpc_core::Clamp(value, 0, 262144);
- if (value < 6) {
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_CALL_INITIAL_SIZE, value);
- return;
- }
- union {
- double dbl;
- uint64_t uint;
- } _val, _bkt;
- _val.dbl = value;
- if (_val.uint < 4651092515166879744ull) {
- int bucket =
- grpc_stats_table_1[((_val.uint - 4618441417868443648ull) >> 49)] + 6;
- _bkt.dbl = grpc_stats_table_0[bucket];
- bucket -= (_val.uint < _bkt.uint);
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_CALL_INITIAL_SIZE, bucket);
- return;
- }
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_CALL_INITIAL_SIZE,
- grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_0, 64));
-}
-void grpc_stats_inc_poll_events_returned(int value) {
- value = grpc_core::Clamp(value, 0, 1024);
- if (value < 29) {
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_POLL_EVENTS_RETURNED, value);
- return;
- }
- union {
- double dbl;
- uint64_t uint;
- } _val, _bkt;
- _val.dbl = value;
- if (_val.uint < 4642789003353915392ull) {
- int bucket =
- grpc_stats_table_3[((_val.uint - 4628855992006737920ull) >> 47)] + 29;
- _bkt.dbl = grpc_stats_table_2[bucket];
- bucket -= (_val.uint < _bkt.uint);
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_POLL_EVENTS_RETURNED, bucket);
- return;
- }
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_POLL_EVENTS_RETURNED,
- grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_2, 128));
-}
-void grpc_stats_inc_tcp_write_size(int value) {
- value = grpc_core::Clamp(value, 0, 16777216);
- if (value < 5) {
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, value);
- return;
- }
- union {
- double dbl;
- uint64_t uint;
- } _val, _bkt;
- _val.dbl = value;
- if (_val.uint < 4683743612465315840ull) {
- int bucket =
- grpc_stats_table_5[((_val.uint - 4617315517961601024ull) >> 50)] + 5;
- _bkt.dbl = grpc_stats_table_4[bucket];
- bucket -= (_val.uint < _bkt.uint);
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, bucket);
- return;
- }
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE,
- grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_4, 64));
-}
-void grpc_stats_inc_tcp_write_iov_size(int value) {
- value = grpc_core::Clamp(value, 0, 1024);
- if (value < 13) {
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, value);
- return;
- }
- union {
- double dbl;
- uint64_t uint;
- } _val, _bkt;
- _val.dbl = value;
- if (_val.uint < 4637863191261478912ull) {
- int bucket =
- grpc_stats_table_7[((_val.uint - 4623507967449235456ull) >> 48)] + 13;
- _bkt.dbl = grpc_stats_table_6[bucket];
- bucket -= (_val.uint < _bkt.uint);
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, bucket);
- return;
- }
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE,
- grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_6, 64));
-}
-void grpc_stats_inc_tcp_read_size(int value) {
- value = grpc_core::Clamp(value, 0, 16777216);
- if (value < 5) {
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, value);
- return;
- }
- union {
- double dbl;
- uint64_t uint;
- } _val, _bkt;
- _val.dbl = value;
- if (_val.uint < 4683743612465315840ull) {
- int bucket =
- grpc_stats_table_5[((_val.uint - 4617315517961601024ull) >> 50)] + 5;
- _bkt.dbl = grpc_stats_table_4[bucket];
- bucket -= (_val.uint < _bkt.uint);
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, bucket);
- return;
- }
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_TCP_READ_SIZE,
- grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_4, 64));
-}
-void grpc_stats_inc_tcp_read_offer(int value) {
- value = grpc_core::Clamp(value, 0, 16777216);
- if (value < 5) {
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_READ_OFFER, value);
- return;
- }
- union {
- double dbl;
- uint64_t uint;
- } _val, _bkt;
- _val.dbl = value;
- if (_val.uint < 4683743612465315840ull) {
- int bucket =
- grpc_stats_table_5[((_val.uint - 4617315517961601024ull) >> 50)] + 5;
- _bkt.dbl = grpc_stats_table_4[bucket];
- bucket -= (_val.uint < _bkt.uint);
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_READ_OFFER, bucket);
- return;
- }
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_TCP_READ_OFFER,
- grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_4, 64));
-}
-void grpc_stats_inc_tcp_read_offer_iov_size(int value) {
- value = grpc_core::Clamp(value, 0, 1024);
- if (value < 13) {
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE,
- value);
- return;
- }
- union {
- double dbl;
- uint64_t uint;
- } _val, _bkt;
- _val.dbl = value;
- if (_val.uint < 4637863191261478912ull) {
- int bucket =
- grpc_stats_table_7[((_val.uint - 4623507967449235456ull) >> 48)] + 13;
- _bkt.dbl = grpc_stats_table_6[bucket];
- bucket -= (_val.uint < _bkt.uint);
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE,
- bucket);
- return;
- }
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE,
- grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_6, 64));
-}
-void grpc_stats_inc_http2_send_message_size(int value) {
- value = grpc_core::Clamp(value, 0, 16777216);
- if (value < 5) {
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE,
- value);
- return;
- }
- union {
- double dbl;
- uint64_t uint;
- } _val, _bkt;
- _val.dbl = value;
- if (_val.uint < 4683743612465315840ull) {
- int bucket =
- grpc_stats_table_5[((_val.uint - 4617315517961601024ull) >> 50)] + 5;
- _bkt.dbl = grpc_stats_table_4[bucket];
- bucket -= (_val.uint < _bkt.uint);
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE,
- bucket);
- return;
- }
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE,
- grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_4, 64));
-}
-void grpc_stats_inc_http2_send_initial_metadata_per_write(int value) {
- value = grpc_core::Clamp(value, 0, 1024);
- if (value < 13) {
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_INITIAL_METADATA_PER_WRITE, value);
- return;
- }
- union {
- double dbl;
- uint64_t uint;
- } _val, _bkt;
- _val.dbl = value;
- if (_val.uint < 4637863191261478912ull) {
- int bucket =
- grpc_stats_table_7[((_val.uint - 4623507967449235456ull) >> 48)] + 13;
- _bkt.dbl = grpc_stats_table_6[bucket];
- bucket -= (_val.uint < _bkt.uint);
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_INITIAL_METADATA_PER_WRITE, bucket);
- return;
- }
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_INITIAL_METADATA_PER_WRITE,
- grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_6, 64));
-}
-void grpc_stats_inc_http2_send_message_per_write(int value) {
- value = grpc_core::Clamp(value, 0, 1024);
- if (value < 13) {
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_PER_WRITE,
- value);
- return;
- }
- union {
- double dbl;
- uint64_t uint;
- } _val, _bkt;
- _val.dbl = value;
- if (_val.uint < 4637863191261478912ull) {
- int bucket =
- grpc_stats_table_7[((_val.uint - 4623507967449235456ull) >> 48)] + 13;
- _bkt.dbl = grpc_stats_table_6[bucket];
- bucket -= (_val.uint < _bkt.uint);
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_PER_WRITE,
- bucket);
- return;
- }
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_PER_WRITE,
- grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_6, 64));
-}
-void grpc_stats_inc_http2_send_trailing_metadata_per_write(int value) {
- value = grpc_core::Clamp(value, 0, 1024);
- if (value < 13) {
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_TRAILING_METADATA_PER_WRITE, value);
- return;
- }
- union {
- double dbl;
- uint64_t uint;
- } _val, _bkt;
- _val.dbl = value;
- if (_val.uint < 4637863191261478912ull) {
- int bucket =
- grpc_stats_table_7[((_val.uint - 4623507967449235456ull) >> 48)] + 13;
- _bkt.dbl = grpc_stats_table_6[bucket];
- bucket -= (_val.uint < _bkt.uint);
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_TRAILING_METADATA_PER_WRITE, bucket);
- return;
+const int grpc_stats_table_0[25] = {
+ 0, 1, 2, 4, 7, 11, 17, 26, 40, 61, 93, 142, 216,
+ 329, 500, 760, 1155, 1755, 2667, 4052, 6155, 9350, 14203, 21574, 32768};
+const uint8_t grpc_stats_table_1[27] = {3, 3, 4, 5, 6, 6, 7, 8, 9,
+ 10, 11, 11, 12, 13, 14, 15, 16, 16,
+ 17, 18, 19, 20, 20, 21, 22, 23, 24};
+const int grpc_stats_table_2[21] = {
+ 0, 1, 3, 8, 19, 45, 106,
+ 250, 588, 1383, 3252, 7646, 17976, 42262,
+ 99359, 233593, 549177, 1291113, 3035402, 7136218, 16777216};
+const uint8_t grpc_stats_table_3[23] = {2, 3, 3, 4, 5, 6, 7, 8,
+ 8, 9, 10, 11, 12, 12, 13, 14,
+ 15, 16, 16, 17, 18, 19, 20};
+const int grpc_stats_table_4[11] = {0, 1, 2, 4, 7, 11, 17, 26, 38, 56, 80};
+const uint8_t grpc_stats_table_5[9] = {3, 3, 4, 5, 6, 6, 7, 8, 9};
+namespace grpc_core {
+int BucketForHistogramValue_32768_24(int value) {
+ if (value < 3) {
+ if (value < 0) {
+ return 0;
+ } else {
+ return value;
+ }
+ } else {
+ if (value < 24577) {
+ // first_nontrivial_code=4613937818241073152
+ // last_code=4672484613396889600 [24576.000000]
+ DblUint val;
+ val.dbl = value;
+ const int bucket =
+ grpc_stats_table_1[((val.uint - 4613937818241073152ull) >> 51)];
+ return bucket - (value < grpc_stats_table_0[bucket]);
+ } else {
+ return 23;
+ }
}
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_TRAILING_METADATA_PER_WRITE,
- grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_6, 64));
}
-void grpc_stats_inc_http2_send_flowctl_per_write(int value) {
- value = grpc_core::Clamp(value, 0, 1024);
- if (value < 13) {
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_HTTP2_SEND_FLOWCTL_PER_WRITE,
- value);
- return;
+int BucketForHistogramValue_16777216_20(int value) {
+ if (value < 2) {
+ if (value < 0) {
+ return 0;
+ } else {
+ return value;
+ }
+ } else {
+ if (value < 8388609) {
+ // first_nontrivial_code=4611686018427387904
+ // last_code=4710765210229538816 [8388608.000000]
+ DblUint val;
+ val.dbl = value;
+ const int bucket =
+ grpc_stats_table_3[((val.uint - 4611686018427387904ull) >> 52)];
+ return bucket - (value < grpc_stats_table_2[bucket]);
+ } else {
+ return 19;
+ }
}
- union {
- double dbl;
- uint64_t uint;
- } _val, _bkt;
- _val.dbl = value;
- if (_val.uint < 4637863191261478912ull) {
- int bucket =
- grpc_stats_table_7[((_val.uint - 4623507967449235456ull) >> 48)] + 13;
- _bkt.dbl = grpc_stats_table_6[bucket];
- bucket -= (_val.uint < _bkt.uint);
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_HTTP2_SEND_FLOWCTL_PER_WRITE,
- bucket);
- return;
- }
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_FLOWCTL_PER_WRITE,
- grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_6, 64));
}
-void grpc_stats_inc_server_cqs_checked(int value) {
- value = grpc_core::Clamp(value, 0, 64);
+int BucketForHistogramValue_80_10(int value) {
if (value < 3) {
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_SERVER_CQS_CHECKED, value);
- return;
- }
- union {
- double dbl;
- uint64_t uint;
- } _val, _bkt;
- _val.dbl = value;
- if (_val.uint < 4625196817309499392ull) {
- int bucket =
- grpc_stats_table_9[((_val.uint - 4613937818241073152ull) >> 51)] + 3;
- _bkt.dbl = grpc_stats_table_8[bucket];
- bucket -= (_val.uint < _bkt.uint);
- GRPC_STATS_INC_HISTOGRAM(GRPC_STATS_HISTOGRAM_SERVER_CQS_CHECKED, bucket);
- return;
+ if (value < 0) {
+ return 0;
+ } else {
+ return value;
+ }
+ } else {
+ if (value < 49) {
+ // first_nontrivial_code=4613937818241073152
+ // last_code=4631952216750555136 [48.000000]
+ DblUint val;
+ val.dbl = value;
+ const int bucket =
+ grpc_stats_table_5[((val.uint - 4613937818241073152ull) >> 51)];
+ return bucket - (value < grpc_stats_table_4[bucket]);
+ } else {
+ if (value < 56) {
+ return 8;
+ } else {
+ return 9;
+ }
+ }
}
- GRPC_STATS_INC_HISTOGRAM(
- GRPC_STATS_HISTOGRAM_SERVER_CQS_CHECKED,
- grpc_stats_histo_find_bucket_slow(value, grpc_stats_table_8, 8));
}
-const int grpc_stats_histo_buckets[13] = {64, 128, 64, 64, 64, 64, 64,
- 64, 64, 64, 64, 64, 8};
-const int grpc_stats_histo_start[13] = {0, 64, 192, 256, 320, 384, 448,
- 512, 576, 640, 704, 768, 832};
-const int* const grpc_stats_histo_bucket_boundaries[13] = {
+} // namespace grpc_core
+const int grpc_stats_histo_buckets[7] = {24, 20, 10, 20, 20, 10, 20};
+const int grpc_stats_histo_start[7] = {0, 24, 44, 54, 74, 94, 104};
+const int* const grpc_stats_histo_bucket_boundaries[7] = {
grpc_stats_table_0, grpc_stats_table_2, grpc_stats_table_4,
- grpc_stats_table_6, grpc_stats_table_4, grpc_stats_table_4,
- grpc_stats_table_6, grpc_stats_table_4, grpc_stats_table_6,
- grpc_stats_table_6, grpc_stats_table_6, grpc_stats_table_6,
- grpc_stats_table_8};
-void (*const grpc_stats_inc_histogram[13])(int x) = {
- grpc_stats_inc_call_initial_size,
- grpc_stats_inc_poll_events_returned,
- grpc_stats_inc_tcp_write_size,
- grpc_stats_inc_tcp_write_iov_size,
- grpc_stats_inc_tcp_read_size,
- grpc_stats_inc_tcp_read_offer,
- grpc_stats_inc_tcp_read_offer_iov_size,
- grpc_stats_inc_http2_send_message_size,
- grpc_stats_inc_http2_send_initial_metadata_per_write,
- grpc_stats_inc_http2_send_message_per_write,
- grpc_stats_inc_http2_send_trailing_metadata_per_write,
- grpc_stats_inc_http2_send_flowctl_per_write,
- grpc_stats_inc_server_cqs_checked};
+ grpc_stats_table_2, grpc_stats_table_2, grpc_stats_table_4,
+ grpc_stats_table_2};
+int (*const grpc_stats_get_bucket[7])(int value) = {
+ grpc_core::BucketForHistogramValue_32768_24,
+ grpc_core::BucketForHistogramValue_16777216_20,
+ grpc_core::BucketForHistogramValue_80_10,
+ grpc_core::BucketForHistogramValue_16777216_20,
+ grpc_core::BucketForHistogramValue_16777216_20,
+ grpc_core::BucketForHistogramValue_80_10,
+ grpc_core::BucketForHistogramValue_16777216_20};
diff --git a/contrib/libs/grpc/src/core/lib/debug/stats_data.h b/contrib/libs/grpc/src/core/lib/debug/stats_data.h
index 61c3d103f4..1736508649 100644
--- a/contrib/libs/grpc/src/core/lib/debug/stats_data.h
+++ b/contrib/libs/grpc/src/core/lib/debug/stats_data.h
@@ -23,534 +23,129 @@
#include <grpc/support/port_platform.h>
-#include <inttypes.h>
-
-#include "src/core/lib/iomgr/exec_ctx.h"
+// IWYU pragma: private, include "src/core/lib/debug/stats.h"
typedef enum {
GRPC_STATS_COUNTER_CLIENT_CALLS_CREATED,
GRPC_STATS_COUNTER_SERVER_CALLS_CREATED,
- GRPC_STATS_COUNTER_CQS_CREATED,
GRPC_STATS_COUNTER_CLIENT_CHANNELS_CREATED,
GRPC_STATS_COUNTER_CLIENT_SUBCHANNELS_CREATED,
GRPC_STATS_COUNTER_SERVER_CHANNELS_CREATED,
- GRPC_STATS_COUNTER_SYSCALL_POLL,
- GRPC_STATS_COUNTER_SYSCALL_WAIT,
- GRPC_STATS_COUNTER_POLLSET_KICK,
- GRPC_STATS_COUNTER_POLLSET_KICKED_WITHOUT_POLLER,
- GRPC_STATS_COUNTER_POLLSET_KICKED_AGAIN,
- GRPC_STATS_COUNTER_POLLSET_KICK_WAKEUP_FD,
- GRPC_STATS_COUNTER_POLLSET_KICK_WAKEUP_CV,
- GRPC_STATS_COUNTER_POLLSET_KICK_OWN_THREAD,
- GRPC_STATS_COUNTER_SYSCALL_EPOLL_CTL,
- GRPC_STATS_COUNTER_POLLSET_FD_CACHE_HITS,
- GRPC_STATS_COUNTER_HISTOGRAM_SLOW_LOOKUPS,
GRPC_STATS_COUNTER_SYSCALL_WRITE,
GRPC_STATS_COUNTER_SYSCALL_READ,
- GRPC_STATS_COUNTER_TCP_BACKUP_POLLERS_CREATED,
- GRPC_STATS_COUNTER_TCP_BACKUP_POLLER_POLLS,
- GRPC_STATS_COUNTER_HTTP2_OP_BATCHES,
- GRPC_STATS_COUNTER_HTTP2_OP_CANCEL,
- GRPC_STATS_COUNTER_HTTP2_OP_SEND_INITIAL_METADATA,
- GRPC_STATS_COUNTER_HTTP2_OP_SEND_MESSAGE,
- GRPC_STATS_COUNTER_HTTP2_OP_SEND_TRAILING_METADATA,
- GRPC_STATS_COUNTER_HTTP2_OP_RECV_INITIAL_METADATA,
- GRPC_STATS_COUNTER_HTTP2_OP_RECV_MESSAGE,
- GRPC_STATS_COUNTER_HTTP2_OP_RECV_TRAILING_METADATA,
+ GRPC_STATS_COUNTER_TCP_READ_ALLOC_8K,
+ GRPC_STATS_COUNTER_TCP_READ_ALLOC_64K,
GRPC_STATS_COUNTER_HTTP2_SETTINGS_WRITES,
GRPC_STATS_COUNTER_HTTP2_PINGS_SENT,
GRPC_STATS_COUNTER_HTTP2_WRITES_BEGUN,
- GRPC_STATS_COUNTER_HTTP2_WRITES_OFFLOADED,
- GRPC_STATS_COUNTER_HTTP2_WRITES_CONTINUED,
- GRPC_STATS_COUNTER_HTTP2_PARTIAL_WRITES,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_INITIAL_WRITE,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_START_NEW_STREAM,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_MESSAGE,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_INITIAL_METADATA,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_TRAILING_METADATA,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_RETRY_SEND_PING,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_CONTINUE_PINGS,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_GOAWAY_SENT,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_RST_STREAM,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_CLOSE_FROM_API,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_STREAM_FLOW_CONTROL,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_UPDATE,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL_UNSTALLED,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_PING_RESPONSE,
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_FORCE_RST_STREAM,
- GRPC_STATS_COUNTER_HTTP2_SPURIOUS_WRITES_BEGUN,
- GRPC_STATS_COUNTER_HPACK_RECV_INDEXED,
- GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_INCIDX,
- GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_INCIDX_V,
- GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NOTIDX,
- GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NOTIDX_V,
- GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NVRIDX,
- GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NVRIDX_V,
- GRPC_STATS_COUNTER_HPACK_RECV_UNCOMPRESSED,
- GRPC_STATS_COUNTER_HPACK_RECV_HUFFMAN,
- GRPC_STATS_COUNTER_HPACK_RECV_BINARY,
- GRPC_STATS_COUNTER_HPACK_RECV_BINARY_BASE64,
- GRPC_STATS_COUNTER_HPACK_SEND_INDEXED,
- GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_INCIDX,
- GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_INCIDX_V,
- GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NOTIDX,
- GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NOTIDX_V,
- GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NVRIDX,
- GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NVRIDX_V,
- GRPC_STATS_COUNTER_HPACK_SEND_UNCOMPRESSED,
- GRPC_STATS_COUNTER_HPACK_SEND_HUFFMAN,
- GRPC_STATS_COUNTER_HPACK_SEND_BINARY,
- GRPC_STATS_COUNTER_HPACK_SEND_BINARY_BASE64,
- GRPC_STATS_COUNTER_COMBINER_LOCKS_INITIATED,
- GRPC_STATS_COUNTER_COMBINER_LOCKS_SCHEDULED_ITEMS,
- GRPC_STATS_COUNTER_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS,
- GRPC_STATS_COUNTER_COMBINER_LOCKS_OFFLOADED,
- GRPC_STATS_COUNTER_CALL_COMBINER_LOCKS_INITIATED,
- GRPC_STATS_COUNTER_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS,
- GRPC_STATS_COUNTER_CALL_COMBINER_SET_NOTIFY_ON_CANCEL,
- GRPC_STATS_COUNTER_CALL_COMBINER_CANCELLED,
- GRPC_STATS_COUNTER_EXECUTOR_SCHEDULED_SHORT_ITEMS,
- GRPC_STATS_COUNTER_EXECUTOR_SCHEDULED_LONG_ITEMS,
- GRPC_STATS_COUNTER_EXECUTOR_SCHEDULED_TO_SELF,
- GRPC_STATS_COUNTER_EXECUTOR_WAKEUP_INITIATED,
- GRPC_STATS_COUNTER_EXECUTOR_QUEUE_DRAINED,
- GRPC_STATS_COUNTER_EXECUTOR_PUSH_RETRIES,
- GRPC_STATS_COUNTER_SERVER_REQUESTED_CALLS,
- GRPC_STATS_COUNTER_SERVER_SLOWPATH_REQUESTS_QUEUED,
- GRPC_STATS_COUNTER_CQ_EV_QUEUE_TRYLOCK_FAILURES,
- GRPC_STATS_COUNTER_CQ_EV_QUEUE_TRYLOCK_SUCCESSES,
- GRPC_STATS_COUNTER_CQ_EV_QUEUE_TRANSIENT_POP_FAILURES,
+ GRPC_STATS_COUNTER_HTTP2_TRANSPORT_STALLS,
+ GRPC_STATS_COUNTER_HTTP2_STREAM_STALLS,
+ GRPC_STATS_COUNTER_CQ_PLUCK_CREATES,
+ GRPC_STATS_COUNTER_CQ_NEXT_CREATES,
+ GRPC_STATS_COUNTER_CQ_CALLBACK_CREATES,
GRPC_STATS_COUNTER_COUNT
} grpc_stats_counters;
extern const char* grpc_stats_counter_name[GRPC_STATS_COUNTER_COUNT];
extern const char* grpc_stats_counter_doc[GRPC_STATS_COUNTER_COUNT];
typedef enum {
GRPC_STATS_HISTOGRAM_CALL_INITIAL_SIZE,
- GRPC_STATS_HISTOGRAM_POLL_EVENTS_RETURNED,
GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE,
GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE,
GRPC_STATS_HISTOGRAM_TCP_READ_SIZE,
GRPC_STATS_HISTOGRAM_TCP_READ_OFFER,
GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE,
GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE,
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_INITIAL_METADATA_PER_WRITE,
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_PER_WRITE,
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_TRAILING_METADATA_PER_WRITE,
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_FLOWCTL_PER_WRITE,
- GRPC_STATS_HISTOGRAM_SERVER_CQS_CHECKED,
GRPC_STATS_HISTOGRAM_COUNT
} grpc_stats_histograms;
extern const char* grpc_stats_histogram_name[GRPC_STATS_HISTOGRAM_COUNT];
extern const char* grpc_stats_histogram_doc[GRPC_STATS_HISTOGRAM_COUNT];
typedef enum {
GRPC_STATS_HISTOGRAM_CALL_INITIAL_SIZE_FIRST_SLOT = 0,
- GRPC_STATS_HISTOGRAM_CALL_INITIAL_SIZE_BUCKETS = 64,
- GRPC_STATS_HISTOGRAM_POLL_EVENTS_RETURNED_FIRST_SLOT = 64,
- GRPC_STATS_HISTOGRAM_POLL_EVENTS_RETURNED_BUCKETS = 128,
- GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE_FIRST_SLOT = 192,
- GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE_BUCKETS = 64,
- GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE_FIRST_SLOT = 256,
- GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE_BUCKETS = 64,
- GRPC_STATS_HISTOGRAM_TCP_READ_SIZE_FIRST_SLOT = 320,
- GRPC_STATS_HISTOGRAM_TCP_READ_SIZE_BUCKETS = 64,
- GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_FIRST_SLOT = 384,
- GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_BUCKETS = 64,
- GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE_FIRST_SLOT = 448,
- GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE_BUCKETS = 64,
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE_FIRST_SLOT = 512,
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE_BUCKETS = 64,
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_INITIAL_METADATA_PER_WRITE_FIRST_SLOT = 576,
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_INITIAL_METADATA_PER_WRITE_BUCKETS = 64,
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_PER_WRITE_FIRST_SLOT = 640,
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_PER_WRITE_BUCKETS = 64,
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_TRAILING_METADATA_PER_WRITE_FIRST_SLOT = 704,
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_TRAILING_METADATA_PER_WRITE_BUCKETS = 64,
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_FLOWCTL_PER_WRITE_FIRST_SLOT = 768,
- GRPC_STATS_HISTOGRAM_HTTP2_SEND_FLOWCTL_PER_WRITE_BUCKETS = 64,
- GRPC_STATS_HISTOGRAM_SERVER_CQS_CHECKED_FIRST_SLOT = 832,
- GRPC_STATS_HISTOGRAM_SERVER_CQS_CHECKED_BUCKETS = 8,
- GRPC_STATS_HISTOGRAM_BUCKETS = 840
+ GRPC_STATS_HISTOGRAM_CALL_INITIAL_SIZE_BUCKETS = 24,
+ GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE_FIRST_SLOT = 24,
+ GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE_BUCKETS = 20,
+ GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE_FIRST_SLOT = 44,
+ GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE_BUCKETS = 10,
+ GRPC_STATS_HISTOGRAM_TCP_READ_SIZE_FIRST_SLOT = 54,
+ GRPC_STATS_HISTOGRAM_TCP_READ_SIZE_BUCKETS = 20,
+ GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_FIRST_SLOT = 74,
+ GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_BUCKETS = 20,
+ GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE_FIRST_SLOT = 94,
+ GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE_BUCKETS = 10,
+ GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE_FIRST_SLOT = 104,
+ GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE_BUCKETS = 20,
+ GRPC_STATS_HISTOGRAM_BUCKETS = 124
} grpc_stats_histogram_constants;
-#if defined(GRPC_COLLECT_STATS) || !defined(NDEBUG)
#define GRPC_STATS_INC_CLIENT_CALLS_CREATED() \
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CLIENT_CALLS_CREATED)
#define GRPC_STATS_INC_SERVER_CALLS_CREATED() \
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SERVER_CALLS_CREATED)
-#define GRPC_STATS_INC_CQS_CREATED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CQS_CREATED)
#define GRPC_STATS_INC_CLIENT_CHANNELS_CREATED() \
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CLIENT_CHANNELS_CREATED)
#define GRPC_STATS_INC_CLIENT_SUBCHANNELS_CREATED() \
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CLIENT_SUBCHANNELS_CREATED)
#define GRPC_STATS_INC_SERVER_CHANNELS_CREATED() \
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SERVER_CHANNELS_CREATED)
-#define GRPC_STATS_INC_SYSCALL_POLL() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SYSCALL_POLL)
-#define GRPC_STATS_INC_SYSCALL_WAIT() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SYSCALL_WAIT)
-#define GRPC_STATS_INC_POLLSET_KICK() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_KICK)
-#define GRPC_STATS_INC_POLLSET_KICKED_WITHOUT_POLLER() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_KICKED_WITHOUT_POLLER)
-#define GRPC_STATS_INC_POLLSET_KICKED_AGAIN() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_KICKED_AGAIN)
-#define GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_KICK_WAKEUP_FD)
-#define GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_KICK_WAKEUP_CV)
-#define GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_KICK_OWN_THREAD)
-#define GRPC_STATS_INC_SYSCALL_EPOLL_CTL() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SYSCALL_EPOLL_CTL)
-#define GRPC_STATS_INC_POLLSET_FD_CACHE_HITS() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_POLLSET_FD_CACHE_HITS)
-#define GRPC_STATS_INC_HISTOGRAM_SLOW_LOOKUPS() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HISTOGRAM_SLOW_LOOKUPS)
#define GRPC_STATS_INC_SYSCALL_WRITE() \
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SYSCALL_WRITE)
#define GRPC_STATS_INC_SYSCALL_READ() \
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SYSCALL_READ)
-#define GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_TCP_BACKUP_POLLERS_CREATED)
-#define GRPC_STATS_INC_TCP_BACKUP_POLLER_POLLS() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_TCP_BACKUP_POLLER_POLLS)
-#define GRPC_STATS_INC_HTTP2_OP_BATCHES() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_BATCHES)
-#define GRPC_STATS_INC_HTTP2_OP_CANCEL() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_CANCEL)
-#define GRPC_STATS_INC_HTTP2_OP_SEND_INITIAL_METADATA() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_SEND_INITIAL_METADATA)
-#define GRPC_STATS_INC_HTTP2_OP_SEND_MESSAGE() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_SEND_MESSAGE)
-#define GRPC_STATS_INC_HTTP2_OP_SEND_TRAILING_METADATA() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_SEND_TRAILING_METADATA)
-#define GRPC_STATS_INC_HTTP2_OP_RECV_INITIAL_METADATA() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_RECV_INITIAL_METADATA)
-#define GRPC_STATS_INC_HTTP2_OP_RECV_MESSAGE() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_RECV_MESSAGE)
-#define GRPC_STATS_INC_HTTP2_OP_RECV_TRAILING_METADATA() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_OP_RECV_TRAILING_METADATA)
+#define GRPC_STATS_INC_TCP_READ_ALLOC_8K() \
+ GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_TCP_READ_ALLOC_8K)
+#define GRPC_STATS_INC_TCP_READ_ALLOC_64K() \
+ GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_TCP_READ_ALLOC_64K)
#define GRPC_STATS_INC_HTTP2_SETTINGS_WRITES() \
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_SETTINGS_WRITES)
#define GRPC_STATS_INC_HTTP2_PINGS_SENT() \
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_PINGS_SENT)
#define GRPC_STATS_INC_HTTP2_WRITES_BEGUN() \
GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_WRITES_BEGUN)
-#define GRPC_STATS_INC_HTTP2_WRITES_OFFLOADED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_WRITES_OFFLOADED)
-#define GRPC_STATS_INC_HTTP2_WRITES_CONTINUED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_WRITES_CONTINUED)
-#define GRPC_STATS_INC_HTTP2_PARTIAL_WRITES() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_PARTIAL_WRITES)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_INITIAL_WRITE() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_INITIAL_WRITE)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_START_NEW_STREAM() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_START_NEW_STREAM)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_MESSAGE() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_MESSAGE)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_INITIAL_METADATA() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_INITIAL_METADATA)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_TRAILING_METADATA() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_TRAILING_METADATA)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RETRY_SEND_PING() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_RETRY_SEND_PING)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CONTINUE_PINGS() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_CONTINUE_PINGS)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_GOAWAY_SENT() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_GOAWAY_SENT)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RST_STREAM() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_RST_STREAM)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CLOSE_FROM_API() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_CLOSE_FROM_API)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_STREAM_FLOW_CONTROL() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_STREAM_FLOW_CONTROL)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_UPDATE() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_UPDATE)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL_UNSTALLED() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL_UNSTALLED)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_PING_RESPONSE() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_PING_RESPONSE)
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FORCE_RST_STREAM() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_HTTP2_INITIATE_WRITE_DUE_TO_FORCE_RST_STREAM)
-#define GRPC_STATS_INC_HTTP2_SPURIOUS_WRITES_BEGUN() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_SPURIOUS_WRITES_BEGUN)
-#define GRPC_STATS_INC_HPACK_RECV_INDEXED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_INDEXED)
-#define GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_INCIDX)
-#define GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX_V() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_INCIDX_V)
-#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NOTIDX)
-#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX_V() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NOTIDX_V)
-#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NVRIDX)
-#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX_V() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_LITHDR_NVRIDX_V)
-#define GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_UNCOMPRESSED)
-#define GRPC_STATS_INC_HPACK_RECV_HUFFMAN() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_HUFFMAN)
-#define GRPC_STATS_INC_HPACK_RECV_BINARY() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_BINARY)
-#define GRPC_STATS_INC_HPACK_RECV_BINARY_BASE64() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_RECV_BINARY_BASE64)
-#define GRPC_STATS_INC_HPACK_SEND_INDEXED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_INDEXED)
-#define GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_INCIDX)
-#define GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX_V() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_INCIDX_V)
-#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NOTIDX)
-#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX_V() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NOTIDX_V)
-#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NVRIDX() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NVRIDX)
-#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NVRIDX_V() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_LITHDR_NVRIDX_V)
-#define GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_UNCOMPRESSED)
-#define GRPC_STATS_INC_HPACK_SEND_HUFFMAN() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_HUFFMAN)
-#define GRPC_STATS_INC_HPACK_SEND_BINARY() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_BINARY)
-#define GRPC_STATS_INC_HPACK_SEND_BINARY_BASE64() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HPACK_SEND_BINARY_BASE64)
-#define GRPC_STATS_INC_COMBINER_LOCKS_INITIATED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_COMBINER_LOCKS_INITIATED)
-#define GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_ITEMS() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_COMBINER_LOCKS_SCHEDULED_ITEMS)
-#define GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS() \
- GRPC_STATS_INC_COUNTER( \
- GRPC_STATS_COUNTER_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS)
-#define GRPC_STATS_INC_COMBINER_LOCKS_OFFLOADED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_COMBINER_LOCKS_OFFLOADED)
-#define GRPC_STATS_INC_CALL_COMBINER_LOCKS_INITIATED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CALL_COMBINER_LOCKS_INITIATED)
-#define GRPC_STATS_INC_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS)
-#define GRPC_STATS_INC_CALL_COMBINER_SET_NOTIFY_ON_CANCEL() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CALL_COMBINER_SET_NOTIFY_ON_CANCEL)
-#define GRPC_STATS_INC_CALL_COMBINER_CANCELLED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CALL_COMBINER_CANCELLED)
-#define GRPC_STATS_INC_EXECUTOR_SCHEDULED_SHORT_ITEMS() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_EXECUTOR_SCHEDULED_SHORT_ITEMS)
-#define GRPC_STATS_INC_EXECUTOR_SCHEDULED_LONG_ITEMS() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_EXECUTOR_SCHEDULED_LONG_ITEMS)
-#define GRPC_STATS_INC_EXECUTOR_SCHEDULED_TO_SELF() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_EXECUTOR_SCHEDULED_TO_SELF)
-#define GRPC_STATS_INC_EXECUTOR_WAKEUP_INITIATED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_EXECUTOR_WAKEUP_INITIATED)
-#define GRPC_STATS_INC_EXECUTOR_QUEUE_DRAINED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_EXECUTOR_QUEUE_DRAINED)
-#define GRPC_STATS_INC_EXECUTOR_PUSH_RETRIES() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_EXECUTOR_PUSH_RETRIES)
-#define GRPC_STATS_INC_SERVER_REQUESTED_CALLS() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SERVER_REQUESTED_CALLS)
-#define GRPC_STATS_INC_SERVER_SLOWPATH_REQUESTS_QUEUED() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_SERVER_SLOWPATH_REQUESTS_QUEUED)
-#define GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_FAILURES() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CQ_EV_QUEUE_TRYLOCK_FAILURES)
-#define GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_SUCCESSES() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CQ_EV_QUEUE_TRYLOCK_SUCCESSES)
-#define GRPC_STATS_INC_CQ_EV_QUEUE_TRANSIENT_POP_FAILURES() \
- GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CQ_EV_QUEUE_TRANSIENT_POP_FAILURES)
+#define GRPC_STATS_INC_HTTP2_TRANSPORT_STALLS() \
+ GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_TRANSPORT_STALLS)
+#define GRPC_STATS_INC_HTTP2_STREAM_STALLS() \
+ GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_HTTP2_STREAM_STALLS)
+#define GRPC_STATS_INC_CQ_PLUCK_CREATES() \
+ GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CQ_PLUCK_CREATES)
+#define GRPC_STATS_INC_CQ_NEXT_CREATES() \
+ GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CQ_NEXT_CREATES)
+#define GRPC_STATS_INC_CQ_CALLBACK_CREATES() \
+ GRPC_STATS_INC_COUNTER(GRPC_STATS_COUNTER_CQ_CALLBACK_CREATES)
#define GRPC_STATS_INC_CALL_INITIAL_SIZE(value) \
- grpc_stats_inc_call_initial_size((int)(value))
-void grpc_stats_inc_call_initial_size(int value);
-#define GRPC_STATS_INC_POLL_EVENTS_RETURNED(value) \
- grpc_stats_inc_poll_events_returned((int)(value))
-void grpc_stats_inc_poll_events_returned(int value);
+ GRPC_STATS_INC_HISTOGRAM( \
+ GRPC_STATS_HISTOGRAM_CALL_INITIAL_SIZE, \
+ grpc_core::BucketForHistogramValue_32768_24(static_cast<int>(value)))
#define GRPC_STATS_INC_TCP_WRITE_SIZE(value) \
- grpc_stats_inc_tcp_write_size((int)(value))
-void grpc_stats_inc_tcp_write_size(int value);
+ GRPC_STATS_INC_HISTOGRAM( \
+ GRPC_STATS_HISTOGRAM_TCP_WRITE_SIZE, \
+ grpc_core::BucketForHistogramValue_16777216_20(static_cast<int>(value)))
#define GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(value) \
- grpc_stats_inc_tcp_write_iov_size((int)(value))
-void grpc_stats_inc_tcp_write_iov_size(int value);
+ GRPC_STATS_INC_HISTOGRAM( \
+ GRPC_STATS_HISTOGRAM_TCP_WRITE_IOV_SIZE, \
+ grpc_core::BucketForHistogramValue_80_10(static_cast<int>(value)))
#define GRPC_STATS_INC_TCP_READ_SIZE(value) \
- grpc_stats_inc_tcp_read_size((int)(value))
-void grpc_stats_inc_tcp_read_size(int value);
+ GRPC_STATS_INC_HISTOGRAM( \
+ GRPC_STATS_HISTOGRAM_TCP_READ_SIZE, \
+ grpc_core::BucketForHistogramValue_16777216_20(static_cast<int>(value)))
#define GRPC_STATS_INC_TCP_READ_OFFER(value) \
- grpc_stats_inc_tcp_read_offer((int)(value))
-void grpc_stats_inc_tcp_read_offer(int value);
+ GRPC_STATS_INC_HISTOGRAM( \
+ GRPC_STATS_HISTOGRAM_TCP_READ_OFFER, \
+ grpc_core::BucketForHistogramValue_16777216_20(static_cast<int>(value)))
#define GRPC_STATS_INC_TCP_READ_OFFER_IOV_SIZE(value) \
- grpc_stats_inc_tcp_read_offer_iov_size((int)(value))
-void grpc_stats_inc_tcp_read_offer_iov_size(int value);
+ GRPC_STATS_INC_HISTOGRAM( \
+ GRPC_STATS_HISTOGRAM_TCP_READ_OFFER_IOV_SIZE, \
+ grpc_core::BucketForHistogramValue_80_10(static_cast<int>(value)))
#define GRPC_STATS_INC_HTTP2_SEND_MESSAGE_SIZE(value) \
- grpc_stats_inc_http2_send_message_size((int)(value))
-void grpc_stats_inc_http2_send_message_size(int value);
-#define GRPC_STATS_INC_HTTP2_SEND_INITIAL_METADATA_PER_WRITE(value) \
- grpc_stats_inc_http2_send_initial_metadata_per_write((int)(value))
-void grpc_stats_inc_http2_send_initial_metadata_per_write(int value);
-#define GRPC_STATS_INC_HTTP2_SEND_MESSAGE_PER_WRITE(value) \
- grpc_stats_inc_http2_send_message_per_write((int)(value))
-void grpc_stats_inc_http2_send_message_per_write(int value);
-#define GRPC_STATS_INC_HTTP2_SEND_TRAILING_METADATA_PER_WRITE(value) \
- grpc_stats_inc_http2_send_trailing_metadata_per_write((int)(value))
-void grpc_stats_inc_http2_send_trailing_metadata_per_write(int value);
-#define GRPC_STATS_INC_HTTP2_SEND_FLOWCTL_PER_WRITE(value) \
- grpc_stats_inc_http2_send_flowctl_per_write((int)(value))
-void grpc_stats_inc_http2_send_flowctl_per_write(int value);
-#define GRPC_STATS_INC_SERVER_CQS_CHECKED(value) \
- grpc_stats_inc_server_cqs_checked((int)(value))
-void grpc_stats_inc_server_cqs_checked(int value);
-#else
-#define GRPC_STATS_INC_CLIENT_CALLS_CREATED()
-#define GRPC_STATS_INC_SERVER_CALLS_CREATED()
-#define GRPC_STATS_INC_CQS_CREATED()
-#define GRPC_STATS_INC_CLIENT_CHANNELS_CREATED()
-#define GRPC_STATS_INC_CLIENT_SUBCHANNELS_CREATED()
-#define GRPC_STATS_INC_SERVER_CHANNELS_CREATED()
-#define GRPC_STATS_INC_SYSCALL_POLL()
-#define GRPC_STATS_INC_SYSCALL_WAIT()
-#define GRPC_STATS_INC_POLLSET_KICK()
-#define GRPC_STATS_INC_POLLSET_KICKED_WITHOUT_POLLER()
-#define GRPC_STATS_INC_POLLSET_KICKED_AGAIN()
-#define GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD()
-#define GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV()
-#define GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD()
-#define GRPC_STATS_INC_SYSCALL_EPOLL_CTL()
-#define GRPC_STATS_INC_POLLSET_FD_CACHE_HITS()
-#define GRPC_STATS_INC_HISTOGRAM_SLOW_LOOKUPS()
-#define GRPC_STATS_INC_SYSCALL_WRITE()
-#define GRPC_STATS_INC_SYSCALL_READ()
-#define GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED()
-#define GRPC_STATS_INC_TCP_BACKUP_POLLER_POLLS()
-#define GRPC_STATS_INC_HTTP2_OP_BATCHES()
-#define GRPC_STATS_INC_HTTP2_OP_CANCEL()
-#define GRPC_STATS_INC_HTTP2_OP_SEND_INITIAL_METADATA()
-#define GRPC_STATS_INC_HTTP2_OP_SEND_MESSAGE()
-#define GRPC_STATS_INC_HTTP2_OP_SEND_TRAILING_METADATA()
-#define GRPC_STATS_INC_HTTP2_OP_RECV_INITIAL_METADATA()
-#define GRPC_STATS_INC_HTTP2_OP_RECV_MESSAGE()
-#define GRPC_STATS_INC_HTTP2_OP_RECV_TRAILING_METADATA()
-#define GRPC_STATS_INC_HTTP2_SETTINGS_WRITES()
-#define GRPC_STATS_INC_HTTP2_PINGS_SENT()
-#define GRPC_STATS_INC_HTTP2_WRITES_BEGUN()
-#define GRPC_STATS_INC_HTTP2_WRITES_OFFLOADED()
-#define GRPC_STATS_INC_HTTP2_WRITES_CONTINUED()
-#define GRPC_STATS_INC_HTTP2_PARTIAL_WRITES()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_INITIAL_WRITE()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_START_NEW_STREAM()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_MESSAGE()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_INITIAL_METADATA()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_TRAILING_METADATA()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RETRY_SEND_PING()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CONTINUE_PINGS()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_GOAWAY_SENT()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_RST_STREAM()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_CLOSE_FROM_API()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_STREAM_FLOW_CONTROL()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_SEND_SETTINGS()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_BDP_ESTIMATOR_PING()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_SETTING()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FLOW_CONTROL_UNSTALLED_BY_UPDATE()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_APPLICATION_PING()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_KEEPALIVE_PING()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_TRANSPORT_FLOW_CONTROL_UNSTALLED()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_PING_RESPONSE()
-#define GRPC_STATS_INC_HTTP2_INITIATE_WRITE_DUE_TO_FORCE_RST_STREAM()
-#define GRPC_STATS_INC_HTTP2_SPURIOUS_WRITES_BEGUN()
-#define GRPC_STATS_INC_HPACK_RECV_INDEXED()
-#define GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX()
-#define GRPC_STATS_INC_HPACK_RECV_LITHDR_INCIDX_V()
-#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX()
-#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NOTIDX_V()
-#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX()
-#define GRPC_STATS_INC_HPACK_RECV_LITHDR_NVRIDX_V()
-#define GRPC_STATS_INC_HPACK_RECV_UNCOMPRESSED()
-#define GRPC_STATS_INC_HPACK_RECV_HUFFMAN()
-#define GRPC_STATS_INC_HPACK_RECV_BINARY()
-#define GRPC_STATS_INC_HPACK_RECV_BINARY_BASE64()
-#define GRPC_STATS_INC_HPACK_SEND_INDEXED()
-#define GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX()
-#define GRPC_STATS_INC_HPACK_SEND_LITHDR_INCIDX_V()
-#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX()
-#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NOTIDX_V()
-#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NVRIDX()
-#define GRPC_STATS_INC_HPACK_SEND_LITHDR_NVRIDX_V()
-#define GRPC_STATS_INC_HPACK_SEND_UNCOMPRESSED()
-#define GRPC_STATS_INC_HPACK_SEND_HUFFMAN()
-#define GRPC_STATS_INC_HPACK_SEND_BINARY()
-#define GRPC_STATS_INC_HPACK_SEND_BINARY_BASE64()
-#define GRPC_STATS_INC_COMBINER_LOCKS_INITIATED()
-#define GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_ITEMS()
-#define GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS()
-#define GRPC_STATS_INC_COMBINER_LOCKS_OFFLOADED()
-#define GRPC_STATS_INC_CALL_COMBINER_LOCKS_INITIATED()
-#define GRPC_STATS_INC_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS()
-#define GRPC_STATS_INC_CALL_COMBINER_SET_NOTIFY_ON_CANCEL()
-#define GRPC_STATS_INC_CALL_COMBINER_CANCELLED()
-#define GRPC_STATS_INC_EXECUTOR_SCHEDULED_SHORT_ITEMS()
-#define GRPC_STATS_INC_EXECUTOR_SCHEDULED_LONG_ITEMS()
-#define GRPC_STATS_INC_EXECUTOR_SCHEDULED_TO_SELF()
-#define GRPC_STATS_INC_EXECUTOR_WAKEUP_INITIATED()
-#define GRPC_STATS_INC_EXECUTOR_QUEUE_DRAINED()
-#define GRPC_STATS_INC_EXECUTOR_PUSH_RETRIES()
-#define GRPC_STATS_INC_SERVER_REQUESTED_CALLS()
-#define GRPC_STATS_INC_SERVER_SLOWPATH_REQUESTS_QUEUED()
-#define GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_FAILURES()
-#define GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_SUCCESSES()
-#define GRPC_STATS_INC_CQ_EV_QUEUE_TRANSIENT_POP_FAILURES()
-#define GRPC_STATS_INC_CALL_INITIAL_SIZE(value)
-#define GRPC_STATS_INC_POLL_EVENTS_RETURNED(value)
-#define GRPC_STATS_INC_TCP_WRITE_SIZE(value)
-#define GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(value)
-#define GRPC_STATS_INC_TCP_READ_SIZE(value)
-#define GRPC_STATS_INC_TCP_READ_OFFER(value)
-#define GRPC_STATS_INC_TCP_READ_OFFER_IOV_SIZE(value)
-#define GRPC_STATS_INC_HTTP2_SEND_MESSAGE_SIZE(value)
-#define GRPC_STATS_INC_HTTP2_SEND_INITIAL_METADATA_PER_WRITE(value)
-#define GRPC_STATS_INC_HTTP2_SEND_MESSAGE_PER_WRITE(value)
-#define GRPC_STATS_INC_HTTP2_SEND_TRAILING_METADATA_PER_WRITE(value)
-#define GRPC_STATS_INC_HTTP2_SEND_FLOWCTL_PER_WRITE(value)
-#define GRPC_STATS_INC_SERVER_CQS_CHECKED(value)
-#endif /* defined(GRPC_COLLECT_STATS) || !defined(NDEBUG) */
-extern const int grpc_stats_histo_buckets[13];
-extern const int grpc_stats_histo_start[13];
-extern const int* const grpc_stats_histo_bucket_boundaries[13];
-extern void (*const grpc_stats_inc_histogram[13])(int x);
+ GRPC_STATS_INC_HISTOGRAM( \
+ GRPC_STATS_HISTOGRAM_HTTP2_SEND_MESSAGE_SIZE, \
+ grpc_core::BucketForHistogramValue_16777216_20(static_cast<int>(value)))
+namespace grpc_core {
+int BucketForHistogramValue_32768_24(int value);
+int BucketForHistogramValue_16777216_20(int value);
+int BucketForHistogramValue_80_10(int value);
+} // namespace grpc_core
+extern const int grpc_stats_histo_buckets[7];
+extern const int grpc_stats_histo_start[7];
+extern const int* const grpc_stats_histo_bucket_boundaries[7];
+extern int (*const grpc_stats_get_bucket[7])(int value);
#endif /* GRPC_CORE_LIB_DEBUG_STATS_DATA_H */
diff --git a/contrib/libs/grpc/src/core/lib/debug/trace.cc b/contrib/libs/grpc/src/core/lib/debug/trace.cc
index 87b6144638..e977085184 100644
--- a/contrib/libs/grpc/src/core/lib/debug/trace.cc
+++ b/contrib/libs/grpc/src/core/lib/debug/trace.cc
@@ -148,8 +148,6 @@ void grpc_tracer_init() {
parse(value.get());
}
-void grpc_tracer_shutdown(void) {}
-
int grpc_tracer_set_enabled(const char* name, int enabled) {
return grpc_core::TraceFlagList::Set(name, enabled != 0);
}
diff --git a/contrib/libs/grpc/src/core/lib/debug/trace.h b/contrib/libs/grpc/src/core/lib/debug/trace.h
index 91d15b3f01..333f366fb8 100644
--- a/contrib/libs/grpc/src/core/lib/debug/trace.h
+++ b/contrib/libs/grpc/src/core/lib/debug/trace.h
@@ -19,13 +19,20 @@
#ifndef GRPC_CORE_LIB_DEBUG_TRACE_H
#define GRPC_CORE_LIB_DEBUG_TRACE_H
-#include <grpc/support/port_platform.h>
+#if defined(__has_feature)
+#if __has_feature(thread_sanitizer)
+#define GRPC_THREADSAFE_TRACER
+#endif
+#endif
-#include <stdbool.h>
+#include <grpc/support/port_platform.h>
-#include <grpc/support/atm.h>
+#ifdef GRPC_THREADSAFE_TRACER
+#include <atomic>
+#endif
#include "src/core/lib/gprpp/global_config.h"
+#include "src/core/lib/gprpp/memory.h"
GPR_GLOBAL_CONFIG_DECLARE_STRING(grpc_trace);
@@ -36,12 +43,6 @@ void grpc_tracer_init(const char* env_var_name);
void grpc_tracer_init();
void grpc_tracer_shutdown(void);
-#if defined(__has_feature)
-#if __has_feature(thread_sanitizer)
-#define GRPC_THREADSAFE_TRACER
-#endif
-#endif
-
namespace grpc_core {
class TraceFlag;
@@ -80,7 +81,7 @@ class TraceFlag {
#if defined(GRPC_USE_TRACERS) || !defined(NDEBUG)
bool enabled() {
#ifdef GRPC_THREADSAFE_TRACER
- return gpr_atm_no_barrier_load(&value_) != 0;
+ return value_.load(std::memory_order_relaxed);
#else
return value_;
#endif // GRPC_THREADSAFE_TRACER
@@ -95,7 +96,7 @@ class TraceFlag {
void set_enabled(bool enabled) {
#ifdef GRPC_THREADSAFE_TRACER
- gpr_atm_no_barrier_store(&value_, enabled);
+ value_.store(enabled, std::memory_order_relaxed);
#else
value_ = enabled;
#endif
@@ -104,7 +105,7 @@ class TraceFlag {
TraceFlag* next_tracer_;
const char* const name_;
#ifdef GRPC_THREADSAFE_TRACER
- gpr_atm value_;
+ std::atomic<bool> value_;
#else
bool value_;
#endif
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/channel_args_endpoint_config.cc b/contrib/libs/grpc/src/core/lib/event_engine/channel_args_endpoint_config.cc
index 2fa62acff2..335df7dd8b 100644
--- a/contrib/libs/grpc/src/core/lib/event_engine/channel_args_endpoint_config.cc
+++ b/contrib/libs/grpc/src/core/lib/event_engine/channel_args_endpoint_config.cc
@@ -15,31 +15,25 @@
#include "src/core/lib/event_engine/channel_args_endpoint_config.h"
-#include <grpc/event_engine/endpoint_config.h>
-#include <grpc/impl/codegen/grpc_types.h>
-#include <grpc/impl/codegen/log.h>
+#include "y_absl/types/optional.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/useful.h"
namespace grpc_event_engine {
namespace experimental {
-EndpointConfig::Setting ChannelArgsEndpointConfig::Get(
+y_absl::optional<int> ChannelArgsEndpointConfig::GetInt(
y_absl::string_view key) const {
- const grpc_arg* arg = grpc_channel_args_find(args_, TString(key).c_str());
- if (arg == nullptr) {
- return y_absl::monostate();
- }
- switch (arg->type) {
- case GRPC_ARG_STRING:
- return y_absl::string_view(arg->value.string);
- case GRPC_ARG_INTEGER:
- return arg->value.integer;
- case GRPC_ARG_POINTER:
- return arg->value.pointer.p;
- }
- GPR_UNREACHABLE_CODE(return y_absl::monostate());
+ return args_.GetInt(key);
+}
+
+y_absl::optional<y_absl::string_view> ChannelArgsEndpointConfig::GetString(
+ y_absl::string_view key) const {
+ return args_.GetString(key);
+}
+
+void* ChannelArgsEndpointConfig::GetVoidPointer(y_absl::string_view key) const {
+ return args_.GetVoidPointer(key);
}
} // namespace experimental
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/channel_args_endpoint_config.h b/contrib/libs/grpc/src/core/lib/event_engine/channel_args_endpoint_config.h
index 440eb97d13..011ac7d6a4 100644
--- a/contrib/libs/grpc/src/core/lib/event_engine/channel_args_endpoint_config.h
+++ b/contrib/libs/grpc/src/core/lib/event_engine/channel_args_endpoint_config.h
@@ -16,6 +16,9 @@
#include <grpc/support/port_platform.h>
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
#include <grpc/event_engine/endpoint_config.h>
#include "src/core/lib/channel/channel_args.h"
@@ -23,17 +26,21 @@
namespace grpc_event_engine {
namespace experimental {
-/// A readonly \a EndpointConfig based on grpc_channel_args. This class does not
-/// take ownership of the grpc_endpoint_args*, and instances of this class
-/// should not be used after the underlying args are destroyed.
class ChannelArgsEndpointConfig : public EndpointConfig {
public:
- explicit ChannelArgsEndpointConfig(const grpc_channel_args* args)
+ ChannelArgsEndpointConfig() = default;
+ explicit ChannelArgsEndpointConfig(const grpc_core::ChannelArgs& args)
: args_(args) {}
- Setting Get(y_absl::string_view key) const override;
+ ChannelArgsEndpointConfig(const ChannelArgsEndpointConfig& config) = default;
+ ChannelArgsEndpointConfig& operator=(const ChannelArgsEndpointConfig& other) =
+ default;
+ y_absl::optional<int> GetInt(y_absl::string_view key) const override;
+ y_absl::optional<y_absl::string_view> GetString(
+ y_absl::string_view key) const override;
+ void* GetVoidPointer(y_absl::string_view key) const override;
private:
- const grpc_channel_args* args_;
+ grpc_core::ChannelArgs args_;
};
} // namespace experimental
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine.cc b/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine.cc
new file mode 100644
index 0000000000..1900e16b80
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine.cc
@@ -0,0 +1,71 @@
+// Copyright 2021 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/event_engine/default_event_engine.h"
+
+#include <atomic>
+#include <memory>
+#include <utility>
+
+#include "y_absl/functional/any_invocable.h"
+
+#include <grpc/event_engine/event_engine.h>
+
+#include "src/core/lib/event_engine/default_event_engine_factory.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+namespace {
+std::atomic<y_absl::AnyInvocable<std::unique_ptr<EventEngine>()>*>
+ g_event_engine_factory{nullptr};
+std::atomic<EventEngine*> g_event_engine{nullptr};
+} // namespace
+
+void SetDefaultEventEngineFactory(
+ y_absl::AnyInvocable<std::unique_ptr<EventEngine>()> factory) {
+ delete g_event_engine_factory.exchange(
+ new y_absl::AnyInvocable<std::unique_ptr<EventEngine>()>(
+ std::move(factory)));
+}
+
+std::unique_ptr<EventEngine> CreateEventEngine() {
+ if (auto* factory = g_event_engine_factory.load()) {
+ return (*factory)();
+ }
+ return DefaultEventEngineFactory();
+}
+
+EventEngine* GetDefaultEventEngine() {
+ EventEngine* engine = g_event_engine.load(std::memory_order_acquire);
+ if (engine == nullptr) {
+ auto* created = CreateEventEngine().release();
+ if (g_event_engine.compare_exchange_strong(engine, created,
+ std::memory_order_acq_rel,
+ std::memory_order_acquire)) {
+ engine = created;
+ } else {
+ delete created;
+ }
+ }
+ return engine;
+}
+
+void ResetDefaultEventEngine() {
+ delete g_event_engine.exchange(nullptr, std::memory_order_acq_rel);
+}
+
+} // namespace experimental
+} // namespace grpc_event_engine
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/event_engine_factory.h b/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine.h
index 11a96924bc..1a182bd73f 100644
--- a/contrib/libs/grpc/src/core/lib/event_engine/event_engine_factory.h
+++ b/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine.h
@@ -11,8 +11,9 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
-#ifndef GRPC_CORE_LIB_EVENT_ENGINE_EVENT_ENGINE_FACTORY_H
-#define GRPC_CORE_LIB_EVENT_ENGINE_EVENT_ENGINE_FACTORY_H
+
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_DEFAULT_EVENT_ENGINE_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_DEFAULT_EVENT_ENGINE_H
#include <grpc/support/port_platform.h>
@@ -27,10 +28,10 @@ namespace experimental {
/// Strongly consider whether you could use \a CreateEventEngine instead.
EventEngine* GetDefaultEventEngine();
-/// Create an EventEngine using the default factory provided at link time.
-std::unique_ptr<EventEngine> DefaultEventEngineFactory();
+/// Reset the default event engine
+void ResetDefaultEventEngine();
} // namespace experimental
} // namespace grpc_event_engine
-#endif // GRPC_CORE_LIB_EVENT_ENGINE_EVENT_ENGINE_FACTORY_H
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_DEFAULT_EVENT_ENGINE_H
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine_factory.cc b/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine_factory.cc
index f84a128308..55c0e05255 100644
--- a/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine_factory.cc
+++ b/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine_factory.cc
@@ -11,17 +11,40 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
+
#include <grpc/support/port_platform.h>
-#include "src/core/lib/event_engine/event_engine_factory.h"
+#include "src/core/lib/event_engine/default_event_engine_factory.h"
+
+#include <memory>
+
+#include "y_absl/memory/memory.h"
+
+#include <grpc/event_engine/event_engine.h>
+
+#ifdef GPR_WINDOWS
+#include "src/core/lib/event_engine/windows/windows_engine.h"
namespace grpc_event_engine {
namespace experimental {
std::unique_ptr<EventEngine> DefaultEventEngineFactory() {
- // TODO(hork): call LibuvEventEngineFactory
- return nullptr;
+ return y_absl::make_unique<WindowsEventEngine>();
}
} // namespace experimental
} // namespace grpc_event_engine
+#else // not GPR_WINDOWS
+#include "src/core/lib/event_engine/posix_engine/posix_engine.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+std::unique_ptr<EventEngine> DefaultEventEngineFactory() {
+ return y_absl::make_unique<PosixEventEngine>();
+}
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolved_address_internal.h b/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine_factory.h
index 7ed8a10a27..6fad0b8940 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolved_address_internal.h
+++ b/contrib/libs/grpc/src/core/lib/event_engine/default_event_engine_factory.h
@@ -11,27 +11,23 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
-#ifndef GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_RESOLVED_ADDRESS_INTERNAL_H
-#define GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_RESOLVED_ADDRESS_INTERNAL_H
+
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_DEFAULT_EVENT_ENGINE_FACTORY_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_DEFAULT_EVENT_ENGINE_FACTORY_H
#include <grpc/support/port_platform.h>
-#include <grpc/event_engine/event_engine.h>
+#include <memory>
-#include "src/core/lib/iomgr/resolve_address.h"
+#include <grpc/event_engine/event_engine.h>
namespace grpc_event_engine {
namespace experimental {
-EventEngine::ResolvedAddress CreateResolvedAddress(
- const grpc_resolved_address& addr);
-
-grpc_resolved_address CreateGRPCResolvedAddress(
- const EventEngine::ResolvedAddress& ra);
-
-TString ResolvedAddressToURI(const EventEngine::ResolvedAddress& addr);
+/// Create an EventEngine using the default factory provided at link time.
+std::unique_ptr<EventEngine> DefaultEventEngineFactory();
} // namespace experimental
} // namespace grpc_event_engine
-#endif // GRPC_CORE_LIB_IOMGR_EVENT_ENGINE_RESOLVED_ADDRESS_INTERNAL_H
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_DEFAULT_EVENT_ENGINE_FACTORY_H
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/event_engine.cc b/contrib/libs/grpc/src/core/lib/event_engine/event_engine.cc
deleted file mode 100644
index 31b25a2c9e..0000000000
--- a/contrib/libs/grpc/src/core/lib/event_engine/event_engine.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2021 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include <grpc/support/port_platform.h>
-
-#include <grpc/event_engine/event_engine.h>
-#include <grpc/event_engine/port.h>
-#include <grpc/support/log.h>
-
-#include "src/core/lib/event_engine/event_engine_factory.h"
-#include "src/core/lib/gprpp/sync.h"
-
-namespace grpc_event_engine {
-namespace experimental {
-
-namespace {
-const std::function<std::unique_ptr<EventEngine>()>* g_event_engine_factory =
- nullptr;
-grpc_core::Mutex* g_mu = new grpc_core::Mutex();
-} // namespace
-
-void SetDefaultEventEngineFactory(
- const std::function<std::unique_ptr<EventEngine>()>* factory) {
- grpc_core::MutexLock lock(g_mu);
- g_event_engine_factory = factory;
-}
-
-std::unique_ptr<EventEngine> CreateEventEngine() {
- grpc_core::MutexLock lock(g_mu);
- if (g_event_engine_factory != nullptr) {
- return (*g_event_engine_factory)();
- }
- return DefaultEventEngineFactory();
-}
-
-EventEngine* GetDefaultEventEngine() {
- static EventEngine* default_event_engine = CreateEventEngine().release();
- return default_event_engine;
-}
-
-} // namespace experimental
-} // namespace grpc_event_engine
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/executor/executor.h b/contrib/libs/grpc/src/core/lib/event_engine/executor/executor.h
new file mode 100644
index 0000000000..2e3d6a53ee
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/executor/executor.h
@@ -0,0 +1,38 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_EXECUTOR_EXECUTOR_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_EXECUTOR_EXECUTOR_H
+
+#include <grpc/support/port_platform.h>
+
+#include "y_absl/functional/any_invocable.h"
+
+#include <grpc/event_engine/event_engine.h>
+
+namespace grpc_event_engine {
+namespace experimental {
+
+// A subset of the EventEngine execution API. See event_engine.h for details
+class Executor {
+ public:
+ virtual ~Executor() = default;
+ virtual void Run(EventEngine::Closure* closure) = 0;
+ virtual void Run(y_absl::AnyInvocable<void()> closure) = 0;
+};
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_EXECUTOR_EXECUTOR_H \ No newline at end of file
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/executor/threaded_executor.cc b/contrib/libs/grpc/src/core/lib/event_engine/executor/threaded_executor.cc
new file mode 100644
index 0000000000..ca204128ba
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/executor/threaded_executor.cc
@@ -0,0 +1,36 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/event_engine/executor/threaded_executor.h"
+
+#include <utility>
+
+namespace grpc_event_engine {
+namespace experimental {
+
+ThreadedExecutor::ThreadedExecutor(int reserve_threads)
+ : thread_pool_(reserve_threads){};
+
+void ThreadedExecutor::Run(EventEngine::Closure* closure) {
+ thread_pool_.Add([closure]() { closure->Run(); });
+}
+
+void ThreadedExecutor::Run(y_absl::AnyInvocable<void()> closure) {
+ thread_pool_.Add(std::move(closure));
+}
+
+} // namespace experimental
+} // namespace grpc_event_engine
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/executor/threaded_executor.h b/contrib/libs/grpc/src/core/lib/event_engine/executor/threaded_executor.h
new file mode 100644
index 0000000000..b24a49896d
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/executor/threaded_executor.h
@@ -0,0 +1,44 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_EXECUTOR_THREADED_EXECUTOR_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_EXECUTOR_THREADED_EXECUTOR_H
+
+#include <grpc/support/port_platform.h>
+
+#include "y_absl/functional/any_invocable.h"
+
+#include <grpc/event_engine/event_engine.h>
+
+#include "src/core/lib/event_engine/executor/executor.h"
+#include "src/core/lib/event_engine/thread_pool.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+class ThreadedExecutor : public Executor {
+ public:
+ explicit ThreadedExecutor(int reserve_threads);
+ ~ThreadedExecutor() override = default;
+ void Run(EventEngine::Closure* closure) override;
+ void Run(y_absl::AnyInvocable<void()> closure) override;
+
+ private:
+ ThreadPool thread_pool_;
+};
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_EXECUTOR_THREADED_EXECUTOR_H \ No newline at end of file
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/forkable.cc b/contrib/libs/grpc/src/core/lib/event_engine/forkable.cc
new file mode 100644
index 0000000000..f904765c50
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/forkable.cc
@@ -0,0 +1,101 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/event_engine/forkable.h"
+
+#ifdef GRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK
+
+#include <pthread.h>
+
+#include "y_absl/container/flat_hash_set.h"
+
+#include "src/core/lib/gprpp/no_destruct.h"
+#include "src/core/lib/gprpp/sync.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+namespace {
+grpc_core::NoDestruct<grpc_core::Mutex> g_mu;
+bool g_registered Y_ABSL_GUARDED_BY(g_mu){false};
+grpc_core::NoDestruct<y_absl::flat_hash_set<Forkable*>> g_forkables
+ Y_ABSL_GUARDED_BY(g_mu);
+} // namespace
+
+Forkable::Forkable() { ManageForkable(this); }
+
+Forkable::~Forkable() { StopManagingForkable(this); }
+
+void RegisterForkHandlers() {
+ grpc_core::MutexLock lock(g_mu.get());
+ if (!std::exchange(g_registered, true)) {
+ pthread_atfork(PrepareFork, PostforkParent, PostforkChild);
+ }
+};
+
+void PrepareFork() {
+ grpc_core::MutexLock lock(g_mu.get());
+ for (auto* forkable : *g_forkables) {
+ forkable->PrepareFork();
+ }
+}
+void PostforkParent() {
+ grpc_core::MutexLock lock(g_mu.get());
+ for (auto* forkable : *g_forkables) {
+ forkable->PostforkParent();
+ }
+}
+
+void PostforkChild() {
+ grpc_core::MutexLock lock(g_mu.get());
+ for (auto* forkable : *g_forkables) {
+ forkable->PostforkChild();
+ }
+}
+
+void ManageForkable(Forkable* forkable) {
+ grpc_core::MutexLock lock(g_mu.get());
+ g_forkables->insert(forkable);
+}
+
+void StopManagingForkable(Forkable* forkable) {
+ grpc_core::MutexLock lock(g_mu.get());
+ g_forkables->erase(forkable);
+}
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#else // GRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK
+
+namespace grpc_event_engine {
+namespace experimental {
+
+Forkable::Forkable() {}
+Forkable::~Forkable() {}
+
+void RegisterForkHandlers() {}
+void PrepareFork() {}
+void PostforkParent() {}
+void PostforkChild() {}
+
+void ManageForkable(Forkable* /* forkable */) {}
+void StopManagingForkable(Forkable* /* forkable */) {}
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/forkable.h b/contrib/libs/grpc/src/core/lib/event_engine/forkable.h
new file mode 100644
index 0000000000..de50a6bd4e
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/forkable.h
@@ -0,0 +1,61 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_FORKABLE_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_FORKABLE_H
+
+#include <grpc/support/port_platform.h>
+
+namespace grpc_event_engine {
+namespace experimental {
+
+// Register fork handlers with the system, enabling fork support.
+//
+// This provides pthread-based support for fork events. Any objects that
+// implement Forkable can register themselves with this system using
+// ManageForkable, and their respective methods will be called upon fork.
+//
+// This should be called once upon grpc_initialization.
+void RegisterForkHandlers();
+
+// Global callback for pthread_atfork's *prepare argument
+void PrepareFork();
+// Global callback for pthread_atfork's *parent argument
+void PostforkParent();
+// Global callback for pthread_atfork's *child argument
+void PostforkChild();
+
+// An interface to be implemented by EventEngines that wish to have managed fork
+// support.
+class Forkable {
+ public:
+ Forkable();
+ virtual ~Forkable();
+ virtual void PrepareFork() = 0;
+ virtual void PostforkParent() = 0;
+ virtual void PostforkChild() = 0;
+};
+
+// Add Forkables from the set of objects that are supported.
+// Upon fork, each forkable will have its respective fork hooks called on
+// the thread that invoked the fork.
+//
+// Relative ordering of fork callback operations is not guaranteed.
+void ManageForkable(Forkable* forkable);
+// Remove a forkable from the managed set.
+void StopManagingForkable(Forkable* forkable);
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_FORKABLE_H \ No newline at end of file
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/handle_containers.h b/contrib/libs/grpc/src/core/lib/event_engine/handle_containers.h
new file mode 100644
index 0000000000..eb41d7779a
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/handle_containers.h
@@ -0,0 +1,67 @@
+// Copyright 2022 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_HANDLE_CONTAINERS_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_HANDLE_CONTAINERS_H
+
+#include <grpc/support/port_platform.h>
+
+#include <stddef.h>
+
+#include <cstdint>
+#include <utility>
+
+#include "y_absl/container/flat_hash_set.h"
+#include "y_absl/hash/hash.h"
+
+#include <grpc/event_engine/event_engine.h>
+
+namespace grpc_event_engine {
+namespace experimental {
+
+// Used for heterogeneous lookup of TaskHandles in abseil containers.
+template <typename TaskHandle>
+struct TaskHandleComparator {
+ struct Hash {
+ using HashType = std::pair<const intptr_t, const intptr_t>;
+ using is_transparent = void;
+ size_t operator()(const TaskHandle& handle) const {
+ return y_absl::Hash<HashType>()({handle.keys[0], handle.keys[1]});
+ }
+ };
+ struct Eq {
+ using is_transparent = void;
+ bool operator()(const TaskHandle& lhs, const TaskHandle& rhs) const {
+ return lhs.keys[0] == rhs.keys[0] && lhs.keys[1] == rhs.keys[1];
+ }
+ };
+};
+
+using TaskHandleSet = y_absl::flat_hash_set<
+ grpc_event_engine::experimental::EventEngine::TaskHandle,
+ TaskHandleComparator<
+ grpc_event_engine::experimental::EventEngine::TaskHandle>::Hash,
+ TaskHandleComparator<
+ grpc_event_engine::experimental::EventEngine::TaskHandle>::Eq>;
+
+using LookupTaskHandleSet = y_absl::flat_hash_set<
+ grpc_event_engine::experimental::EventEngine::DNSResolver::LookupTaskHandle,
+ TaskHandleComparator<grpc_event_engine::experimental::EventEngine::
+ DNSResolver::LookupTaskHandle>::Hash,
+ TaskHandleComparator<grpc_event_engine::experimental::EventEngine::
+ DNSResolver::LookupTaskHandle>::Eq>;
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_HANDLE_CONTAINERS_H
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/memory_allocator.cc b/contrib/libs/grpc/src/core/lib/event_engine/memory_allocator.cc
index afb056ecd7..4c3448d37e 100644
--- a/contrib/libs/grpc/src/core/lib/event_engine/memory_allocator.cc
+++ b/contrib/libs/grpc/src/core/lib/event_engine/memory_allocator.cc
@@ -14,10 +14,18 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#include <memory>
+#include <new>
+#include <utility>
+
#include <grpc/event_engine/memory_allocator.h>
+#include <grpc/event_engine/memory_request.h>
+#include <grpc/slice.h>
-#include "src/core/lib/gprpp/ref_counted.h"
-#include "src/core/lib/slice/slice_refcount.h"
+#include "src/core/lib/slice/slice_refcount_base.h"
namespace grpc_event_engine {
namespace experimental {
@@ -41,7 +49,7 @@ class SliceRefCount : public grpc_slice_refcount {
static void Destroy(grpc_slice_refcount* p) {
auto* rc = static_cast<SliceRefCount*>(p);
rc->~SliceRefCount();
- gpr_free(rc);
+ free(rc);
}
std::shared_ptr<internal::MemoryAllocatorImpl> allocator_;
@@ -52,7 +60,7 @@ class SliceRefCount : public grpc_slice_refcount {
grpc_slice MemoryAllocator::MakeSlice(MemoryRequest request) {
auto size = Reserve(request.Increase(sizeof(SliceRefCount)));
- void* p = gpr_malloc(size);
+ void* p = malloc(size);
new (p) SliceRefCount(allocator_, size);
grpc_slice slice;
slice.refcount = static_cast<SliceRefCount*>(p);
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/poller.h b/contrib/libs/grpc/src/core/lib/event_engine/poller.h
new file mode 100644
index 0000000000..6f41296197
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/poller.h
@@ -0,0 +1,56 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_POLLER_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_POLLER_H
+
+#include <grpc/support/port_platform.h>
+
+#include "y_absl/functional/function_ref.h"
+
+#include <grpc/event_engine/event_engine.h>
+
+namespace grpc_event_engine {
+namespace experimental {
+
+// A generic cross-platform "poller" concept.
+// Concrete implementations will likely manage a set of sockets/file
+// descriptors/etc, allowing threads to drive polling and event processing via
+// Work(...).
+class Poller {
+ public:
+ enum class WorkResult { kOk, kDeadlineExceeded, kKicked };
+
+ virtual ~Poller() = default;
+ // Poll once for events and process received events. The callback function
+ // "schedule_poll_again" is expected to be run synchronously prior to
+ // processing received events. The callback's responsibility primarily is to
+ // schedule Poller::Work asynchronously again. This would ensure that the next
+ // polling cycle would run as quickly as possible to ensure continuous
+ // polling.
+ //
+ // Returns:
+ // * Poller::WorkResult::kKicked if it was Kicked.
+ // * Poller::WorkResult::kDeadlineExceeded if timeout occurred
+ // * Poller::WorkResult::kOk, otherwise indicating that the callback function
+ // was run synchonously before some events were processed.
+ virtual WorkResult Work(EventEngine::Duration timeout,
+ y_absl::FunctionRef<void()> schedule_poll_again) = 0;
+ // Trigger the threads executing Work(..) to break out as soon as possible.
+ virtual void Kick() = 0;
+};
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_POLLER_H
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/posix_engine.cc b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/posix_engine.cc
new file mode 100644
index 0000000000..bb03628e20
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/posix_engine.cc
@@ -0,0 +1,143 @@
+// Copyright 2022 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/event_engine/posix_engine/posix_engine.h"
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/container/flat_hash_set.h"
+#include "y_absl/functional/any_invocable.h"
+
+#include <grpc/event_engine/event_engine.h>
+#include <grpc/support/log.h>
+
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/event_engine/executor/threaded_executor.h"
+#include "src/core/lib/event_engine/posix_engine/timer.h"
+#include "src/core/lib/event_engine/trace.h"
+#include "src/core/lib/event_engine/utils.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+struct PosixEventEngine::ClosureData final : public EventEngine::Closure {
+ y_absl::AnyInvocable<void()> cb;
+ posix_engine::Timer timer;
+ PosixEventEngine* engine;
+ EventEngine::TaskHandle handle;
+
+ void Run() override {
+ GRPC_EVENT_ENGINE_TRACE("PosixEventEngine:%p executing callback:%s", engine,
+ HandleToString(handle).c_str());
+ {
+ grpc_core::MutexLock lock(&engine->mu_);
+ engine->known_handles_.erase(handle);
+ }
+ cb();
+ delete this;
+ }
+};
+
+PosixEventEngine::~PosixEventEngine() {
+ grpc_core::MutexLock lock(&mu_);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
+ for (auto handle : known_handles_) {
+ gpr_log(GPR_ERROR,
+ "(event_engine) PosixEventEngine:%p uncleared TaskHandle at "
+ "shutdown:%s",
+ this, HandleToString(handle).c_str());
+ }
+ }
+ GPR_ASSERT(GPR_LIKELY(known_handles_.empty()));
+}
+
+bool PosixEventEngine::Cancel(EventEngine::TaskHandle handle) {
+ grpc_core::MutexLock lock(&mu_);
+ if (!known_handles_.contains(handle)) return false;
+ auto* cd = reinterpret_cast<ClosureData*>(handle.keys[0]);
+ bool r = timer_manager_.TimerCancel(&cd->timer);
+ known_handles_.erase(handle);
+ if (r) delete cd;
+ return r;
+}
+
+EventEngine::TaskHandle PosixEventEngine::RunAfter(
+ Duration when, y_absl::AnyInvocable<void()> closure) {
+ return RunAfterInternal(when, std::move(closure));
+}
+
+EventEngine::TaskHandle PosixEventEngine::RunAfter(
+ Duration when, EventEngine::Closure* closure) {
+ return RunAfterInternal(when, [closure]() { closure->Run(); });
+}
+
+void PosixEventEngine::Run(y_absl::AnyInvocable<void()> closure) {
+ executor_.Run(std::move(closure));
+}
+
+void PosixEventEngine::Run(EventEngine::Closure* closure) {
+ executor_.Run(closure);
+}
+
+EventEngine::TaskHandle PosixEventEngine::RunAfterInternal(
+ Duration when, y_absl::AnyInvocable<void()> cb) {
+ auto when_ts = ToTimestamp(timer_manager_.Now(), when);
+ auto* cd = new ClosureData;
+ cd->cb = std::move(cb);
+ cd->engine = this;
+ EventEngine::TaskHandle handle{reinterpret_cast<intptr_t>(cd),
+ aba_token_.fetch_add(1)};
+ grpc_core::MutexLock lock(&mu_);
+ known_handles_.insert(handle);
+ cd->handle = handle;
+ GRPC_EVENT_ENGINE_TRACE("PosixEventEngine:%p scheduling callback:%s", this,
+ HandleToString(handle).c_str());
+ timer_manager_.TimerInit(&cd->timer, when_ts, cd);
+ return handle;
+}
+
+std::unique_ptr<EventEngine::DNSResolver> PosixEventEngine::GetDNSResolver(
+ EventEngine::DNSResolver::ResolverOptions const& /*options*/) {
+ GPR_ASSERT(false && "unimplemented");
+}
+
+bool PosixEventEngine::IsWorkerThread() {
+ GPR_ASSERT(false && "unimplemented");
+}
+
+bool PosixEventEngine::CancelConnect(EventEngine::ConnectionHandle /*handle*/) {
+ GPR_ASSERT(false && "unimplemented");
+}
+
+EventEngine::ConnectionHandle PosixEventEngine::Connect(
+ OnConnectCallback /*on_connect*/, const ResolvedAddress& /*addr*/,
+ const EndpointConfig& /*args*/, MemoryAllocator /*memory_allocator*/,
+ Duration /*deadline*/) {
+ GPR_ASSERT(false && "unimplemented");
+}
+
+y_absl::StatusOr<std::unique_ptr<EventEngine::Listener>>
+PosixEventEngine::CreateListener(
+ Listener::AcceptCallback /*on_accept*/,
+ y_absl::AnyInvocable<void(y_absl::Status)> /*on_shutdown*/,
+ const EndpointConfig& /*config*/,
+ std::unique_ptr<MemoryAllocatorFactory> /*memory_allocator_factory*/) {
+ GPR_ASSERT(false && "unimplemented");
+}
+
+} // namespace experimental
+} // namespace grpc_event_engine
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/posix_engine.h b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/posix_engine.h
new file mode 100644
index 0000000000..f4b090184c
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/posix_engine.h
@@ -0,0 +1,121 @@
+// Copyright 2022 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_POSIX_ENGINE_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_POSIX_ENGINE_H
+#include <grpc/support/port_platform.h>
+
+#include <stdint.h>
+
+#include <atomic>
+#include <memory>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/functional/any_invocable.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/event_engine/endpoint_config.h>
+#include <grpc/event_engine/event_engine.h>
+#include <grpc/event_engine/memory_allocator.h>
+#include <grpc/event_engine/slice_buffer.h>
+
+#include "src/core/lib/event_engine/executor/threaded_executor.h"
+#include "src/core/lib/event_engine/handle_containers.h"
+#include "src/core/lib/event_engine/posix_engine/timer_manager.h"
+#include "src/core/lib/gprpp/sync.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+// An iomgr-based Posix EventEngine implementation.
+// All methods require an ExecCtx to already exist on the thread's stack.
+class PosixEventEngine final : public EventEngine {
+ public:
+ class PosixEndpoint : public EventEngine::Endpoint {
+ public:
+ ~PosixEndpoint() override;
+ void Read(y_absl::AnyInvocable<void(y_absl::Status)> on_read,
+ SliceBuffer* buffer, const ReadArgs* args) override;
+ void Write(y_absl::AnyInvocable<void(y_absl::Status)> on_writable,
+ SliceBuffer* data, const WriteArgs* args) override;
+ const ResolvedAddress& GetPeerAddress() const override;
+ const ResolvedAddress& GetLocalAddress() const override;
+ };
+ class PosixListener : public EventEngine::Listener {
+ public:
+ ~PosixListener() override;
+ y_absl::StatusOr<int> Bind(const ResolvedAddress& addr) override;
+ y_absl::Status Start() override;
+ };
+ class PosixDNSResolver : public EventEngine::DNSResolver {
+ public:
+ ~PosixDNSResolver() override;
+ LookupTaskHandle LookupHostname(LookupHostnameCallback on_resolve,
+ y_absl::string_view name,
+ y_absl::string_view default_port,
+ Duration timeout) override;
+ LookupTaskHandle LookupSRV(LookupSRVCallback on_resolve,
+ y_absl::string_view name,
+ Duration timeout) override;
+ LookupTaskHandle LookupTXT(LookupTXTCallback on_resolve,
+ y_absl::string_view name,
+ Duration timeout) override;
+ bool CancelLookup(LookupTaskHandle handle) override;
+ };
+
+ PosixEventEngine() = default;
+ ~PosixEventEngine() override;
+
+ y_absl::StatusOr<std::unique_ptr<Listener>> CreateListener(
+ Listener::AcceptCallback on_accept,
+ y_absl::AnyInvocable<void(y_absl::Status)> on_shutdown,
+ const EndpointConfig& config,
+ std::unique_ptr<MemoryAllocatorFactory> memory_allocator_factory)
+ override;
+
+ ConnectionHandle Connect(OnConnectCallback on_connect,
+ const ResolvedAddress& addr,
+ const EndpointConfig& args,
+ MemoryAllocator memory_allocator,
+ Duration timeout) override;
+
+ bool CancelConnect(ConnectionHandle handle) override;
+ bool IsWorkerThread() override;
+ std::unique_ptr<DNSResolver> GetDNSResolver(
+ const DNSResolver::ResolverOptions& options) override;
+ void Run(Closure* closure) override;
+ void Run(y_absl::AnyInvocable<void()> closure) override;
+ TaskHandle RunAfter(Duration when, Closure* closure) override;
+ TaskHandle RunAfter(Duration when,
+ y_absl::AnyInvocable<void()> closure) override;
+ bool Cancel(TaskHandle handle) override;
+
+ private:
+ struct ClosureData;
+ EventEngine::TaskHandle RunAfterInternal(Duration when,
+ y_absl::AnyInvocable<void()> cb);
+
+ posix_engine::TimerManager timer_manager_;
+ ThreadedExecutor executor_{2};
+
+ grpc_core::Mutex mu_;
+ TaskHandleSet known_handles_ Y_ABSL_GUARDED_BY(mu_);
+ std::atomic<intptr_t> aba_token_{0};
+};
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_POSIX_ENGINE_H
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer.cc b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer.cc
new file mode 100644
index 0000000000..fd428b451e
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer.cc
@@ -0,0 +1,311 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/event_engine/posix_engine/timer.h"
+
+#include <algorithm>
+#include <atomic>
+#include <limits>
+#include <utility>
+
+#include <grpc/support/cpu.h>
+
+#include "src/core/lib/event_engine/posix_engine/timer_heap.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/time.h"
+
+namespace grpc_event_engine {
+namespace posix_engine {
+
+static const size_t kInvalidHeapIndex = std::numeric_limits<size_t>::max();
+static const double kAddDeadlineScale = 0.33;
+static const double kMinQueueWindowDuration = 0.01;
+static const double kMaxQueueWindowDuration = 1.0;
+
+grpc_core::Timestamp TimerList::Shard::ComputeMinDeadline() {
+ return heap.is_empty()
+ ? queue_deadline_cap + grpc_core::Duration::Epsilon()
+ : grpc_core::Timestamp::FromMillisecondsAfterProcessEpoch(
+ heap.Top()->deadline);
+}
+
+TimerList::Shard::Shard() : stats(1.0 / kAddDeadlineScale, 0.1, 0.5) {}
+
+TimerList::TimerList(TimerListHost* host)
+ : host_(host),
+ num_shards_(grpc_core::Clamp(2 * gpr_cpu_num_cores(), 1u, 32u)),
+ min_timer_(host_->Now().milliseconds_after_process_epoch()),
+ shards_(new Shard[num_shards_]),
+ shard_queue_(new Shard*[num_shards_]) {
+ for (size_t i = 0; i < num_shards_; i++) {
+ Shard& shard = shards_[i];
+ shard.queue_deadline_cap =
+ grpc_core::Timestamp::FromMillisecondsAfterProcessEpoch(
+ min_timer_.load(std::memory_order_relaxed));
+ shard.shard_queue_index = i;
+ shard.list.next = shard.list.prev = &shard.list;
+ shard.min_deadline = shard.ComputeMinDeadline();
+ shard_queue_[i] = &shard;
+ }
+}
+
+namespace {
+/* returns true if the first element in the list */
+void ListJoin(Timer* head, Timer* timer) {
+ timer->next = head;
+ timer->prev = head->prev;
+ timer->next->prev = timer->prev->next = timer;
+}
+
+void ListRemove(Timer* timer) {
+ timer->next->prev = timer->prev;
+ timer->prev->next = timer->next;
+}
+} // namespace
+
+void TimerList::SwapAdjacentShardsInQueue(uint32_t first_shard_queue_index) {
+ Shard* temp;
+ temp = shard_queue_[first_shard_queue_index];
+ shard_queue_[first_shard_queue_index] =
+ shard_queue_[first_shard_queue_index + 1];
+ shard_queue_[first_shard_queue_index + 1] = temp;
+ shard_queue_[first_shard_queue_index]->shard_queue_index =
+ first_shard_queue_index;
+ shard_queue_[first_shard_queue_index + 1]->shard_queue_index =
+ first_shard_queue_index + 1;
+}
+
+void TimerList::NoteDeadlineChange(Shard* shard) {
+ while (shard->shard_queue_index > 0 &&
+ shard->min_deadline <
+ shard_queue_[shard->shard_queue_index - 1]->min_deadline) {
+ SwapAdjacentShardsInQueue(shard->shard_queue_index - 1);
+ }
+ while (shard->shard_queue_index < num_shards_ - 1 &&
+ shard->min_deadline >
+ shard_queue_[shard->shard_queue_index + 1]->min_deadline) {
+ SwapAdjacentShardsInQueue(shard->shard_queue_index);
+ }
+}
+
+void TimerList::TimerInit(Timer* timer, grpc_core::Timestamp deadline,
+ experimental::EventEngine::Closure* closure) {
+ bool is_first_timer = false;
+ Shard* shard = &shards_[grpc_core::HashPointer(timer, num_shards_)];
+ timer->closure = closure;
+ timer->deadline = deadline.milliseconds_after_process_epoch();
+
+#ifndef NDEBUG
+ timer->hash_table_next = nullptr;
+#endif
+
+ {
+ grpc_core::MutexLock lock(&shard->mu);
+ timer->pending = true;
+ grpc_core::Timestamp now = host_->Now();
+ if (deadline <= now) {
+ deadline = now;
+ }
+
+ shard->stats.AddSample((deadline - now).millis() / 1000.0);
+
+ if (deadline < shard->queue_deadline_cap) {
+ is_first_timer = shard->heap.Add(timer);
+ } else {
+ timer->heap_index = kInvalidHeapIndex;
+ ListJoin(&shard->list, timer);
+ }
+ }
+
+ /* Deadline may have decreased, we need to adjust the main queue. Note
+ that there is a potential racy unlocked region here. There could be a
+ reordering of multiple TimerInit calls, at this point, but the < test
+ below should ensure that we err on the side of caution. There could
+ also be a race with TimerCheck, which might beat us to the lock. In
+ that case, it is possible that the timer that we added will have already
+ run by the time we hold the lock, but that too is a safe error.
+ Finally, it's possible that the TimerCheck that intervened failed to
+ trigger the new timer because the min_deadline hadn't yet been reduced.
+ In that case, the timer will simply have to wait for the next
+ TimerCheck. */
+ if (is_first_timer) {
+ grpc_core::MutexLock lock(&mu_);
+ if (deadline < shard->min_deadline) {
+ grpc_core::Timestamp old_min_deadline = shard_queue_[0]->min_deadline;
+ shard->min_deadline = deadline;
+ NoteDeadlineChange(shard);
+ if (shard->shard_queue_index == 0 && deadline < old_min_deadline) {
+ min_timer_.store(deadline.milliseconds_after_process_epoch(),
+ std::memory_order_relaxed);
+ host_->Kick();
+ }
+ }
+ }
+}
+
+bool TimerList::TimerCancel(Timer* timer) {
+ Shard* shard = &shards_[grpc_core::HashPointer(timer, num_shards_)];
+ grpc_core::MutexLock lock(&shard->mu);
+
+ if (timer->pending) {
+ timer->pending = false;
+ if (timer->heap_index == kInvalidHeapIndex) {
+ ListRemove(timer);
+ } else {
+ shard->heap.Remove(timer);
+ }
+ return true;
+ }
+
+ return false;
+}
+
+/* Rebalances the timer shard by computing a new 'queue_deadline_cap' and moving
+ all relevant timers in shard->list (i.e timers with deadlines earlier than
+ 'queue_deadline_cap') into into shard->heap.
+ Returns 'true' if shard->heap has at least ONE element */
+bool TimerList::Shard::RefillHeap(grpc_core::Timestamp now) {
+ /* Compute the new queue window width and bound by the limits: */
+ double computed_deadline_delta = stats.UpdateAverage() * kAddDeadlineScale;
+ double deadline_delta =
+ grpc_core::Clamp(computed_deadline_delta, kMinQueueWindowDuration,
+ kMaxQueueWindowDuration);
+ Timer *timer, *next;
+
+ /* Compute the new cap and put all timers under it into the queue: */
+ queue_deadline_cap = std::max(now, queue_deadline_cap) +
+ grpc_core::Duration::FromSecondsAsDouble(deadline_delta);
+
+ for (timer = list.next; timer != &list; timer = next) {
+ next = timer->next;
+ auto timer_deadline =
+ grpc_core::Timestamp::FromMillisecondsAfterProcessEpoch(
+ timer->deadline);
+
+ if (timer_deadline < queue_deadline_cap) {
+ ListRemove(timer);
+ heap.Add(timer);
+ }
+ }
+ return !heap.is_empty();
+}
+
+/* This pops the next non-cancelled timer with deadline <= now from the
+ queue, or returns NULL if there isn't one. */
+Timer* TimerList::Shard::PopOne(grpc_core::Timestamp now) {
+ Timer* timer;
+ for (;;) {
+ if (heap.is_empty()) {
+ if (now < queue_deadline_cap) return nullptr;
+ if (!RefillHeap(now)) return nullptr;
+ }
+ timer = heap.Top();
+ auto timer_deadline =
+ grpc_core::Timestamp::FromMillisecondsAfterProcessEpoch(
+ timer->deadline);
+ if (timer_deadline > now) return nullptr;
+ timer->pending = false;
+ heap.Pop();
+ return timer;
+ }
+}
+
+void TimerList::Shard::PopTimers(
+ grpc_core::Timestamp now, grpc_core::Timestamp* new_min_deadline,
+ std::vector<experimental::EventEngine::Closure*>* out) {
+ grpc_core::MutexLock lock(&mu);
+ while (Timer* timer = PopOne(now)) {
+ out->push_back(timer->closure);
+ }
+ *new_min_deadline = ComputeMinDeadline();
+}
+
+std::vector<experimental::EventEngine::Closure*> TimerList::FindExpiredTimers(
+ grpc_core::Timestamp now, grpc_core::Timestamp* next) {
+ grpc_core::Timestamp min_timer =
+ grpc_core::Timestamp::FromMillisecondsAfterProcessEpoch(
+ min_timer_.load(std::memory_order_relaxed));
+
+ std::vector<experimental::EventEngine::Closure*> done;
+ if (now < min_timer) {
+ if (next != nullptr) *next = std::min(*next, min_timer);
+ return done;
+ }
+
+ grpc_core::MutexLock lock(&mu_);
+
+ while (shard_queue_[0]->min_deadline < now ||
+ (now != grpc_core::Timestamp::InfFuture() &&
+ shard_queue_[0]->min_deadline == now)) {
+ grpc_core::Timestamp new_min_deadline;
+
+ /* For efficiency, we pop as many available timers as we can from the
+ shard. This may violate perfect timer deadline ordering, but that
+ shouldn't be a big deal because we don't make ordering guarantees. */
+ shard_queue_[0]->PopTimers(now, &new_min_deadline, &done);
+
+ /* An TimerInit() on the shard could intervene here, adding a new
+ timer that is earlier than new_min_deadline. However,
+ TimerInit() will block on the mutex before it can call
+ set_min_deadline, so this one will complete first and then the Addtimer
+ will reduce the min_deadline (perhaps unnecessarily). */
+ shard_queue_[0]->min_deadline = new_min_deadline;
+ NoteDeadlineChange(shard_queue_[0]);
+ }
+
+ if (next) {
+ *next = std::min(*next, shard_queue_[0]->min_deadline);
+ }
+
+ min_timer_.store(
+ shard_queue_[0]->min_deadline.milliseconds_after_process_epoch(),
+ std::memory_order_relaxed);
+
+ return done;
+}
+
+y_absl::optional<std::vector<experimental::EventEngine::Closure*>>
+TimerList::TimerCheck(grpc_core::Timestamp* next) {
+ // prelude
+ grpc_core::Timestamp now = host_->Now();
+
+ /* fetch from a thread-local first: this avoids contention on a globally
+ mutable cacheline in the common case */
+ grpc_core::Timestamp min_timer =
+ grpc_core::Timestamp::FromMillisecondsAfterProcessEpoch(
+ min_timer_.load(std::memory_order_relaxed));
+
+ if (now < min_timer) {
+ if (next != nullptr) {
+ *next = std::min(*next, min_timer);
+ }
+ return std::vector<experimental::EventEngine::Closure*>();
+ }
+
+ if (!checker_mu_.TryLock()) return y_absl::nullopt;
+ std::vector<experimental::EventEngine::Closure*> run =
+ FindExpiredTimers(now, next);
+ checker_mu_.Unlock();
+
+ return std::move(run);
+}
+
+} // namespace posix_engine
+} // namespace grpc_event_engine
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer.h b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer.h
new file mode 100644
index 0000000000..f28bd45434
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer.h
@@ -0,0 +1,193 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_TIMER_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_TIMER_H
+
+#include <grpc/support/port_platform.h>
+
+#include <stddef.h>
+
+#include <atomic>
+#include <cstdint>
+#include <memory>
+#include <vector>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/event_engine/event_engine.h>
+
+#include "src/core/lib/event_engine/posix_engine/timer_heap.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/time_averaged_stats.h"
+
+namespace grpc_event_engine {
+namespace posix_engine {
+
+struct Timer {
+ int64_t deadline;
+ // kInvalidHeapIndex if not in heap.
+ size_t heap_index;
+ bool pending;
+ struct Timer* next;
+ struct Timer* prev;
+ experimental::EventEngine::Closure* closure;
+#ifndef NDEBUG
+ struct Timer* hash_table_next;
+#endif
+
+ grpc_event_engine::experimental::EventEngine::TaskHandle task_handle;
+};
+
+// Dependency injection: allow tests and/or TimerManager to inject
+// their own implementations of Now, Kick.
+class TimerListHost {
+ public:
+ // Return the current timestamp.
+ // Abstracted so that tests can be run deterministically.
+ virtual grpc_core::Timestamp Now() = 0;
+ // Wake up a thread to check for timers.
+ virtual void Kick() = 0;
+
+ protected:
+ ~TimerListHost() = default;
+};
+
+class TimerList {
+ public:
+ explicit TimerList(TimerListHost* host);
+
+ TimerList(const TimerList&) = delete;
+ TimerList& operator=(const TimerList&) = delete;
+
+ /* Initialize *timer. When expired or canceled, closure will be called with
+ error set to indicate if it expired (GRPC_ERROR_NONE) or was canceled
+ (GRPC_ERROR_CANCELLED). *closure is guaranteed to be called exactly once, and
+ application code should check the error to determine how it was invoked. The
+ application callback is also responsible for maintaining information about
+ when to free up any user-level state. Behavior is undefined for a deadline of
+ grpc_core::Timestamp::InfFuture(). */
+ void TimerInit(Timer* timer, grpc_core::Timestamp deadline,
+ experimental::EventEngine::Closure* closure);
+
+ /* Note that there is no timer destroy function. This is because the
+ timer is a one-time occurrence with a guarantee that the callback will
+ be called exactly once, either at expiration or cancellation. Thus, all
+ the internal timer event management state is destroyed just before
+ that callback is invoked. If the user has additional state associated with
+ the timer, the user is responsible for determining when it is safe to
+ destroy that state. */
+
+ /* Cancel an *timer.
+ There are three cases:
+ 1. We normally cancel the timer
+ 2. The timer has already run
+ 3. We can't cancel the timer because it is "in flight".
+
+ In all of these cases, the cancellation is still considered successful.
+ They are essentially distinguished in that the timer_cb will be run
+ exactly once from either the cancellation (with error GRPC_ERROR_CANCELLED)
+ or from the activation (with error GRPC_ERROR_NONE).
+
+ Note carefully that the callback function MAY occur in the same callstack
+ as grpc_timer_cancel. It's expected that most timers will be cancelled
+ (their primary use is to implement deadlines), and so this code is
+ optimized such that cancellation costs as little as possible. Making
+ callbacks run inline matches this aim.
+
+ Requires: cancel() must happen after init() on a given timer */
+ bool TimerCancel(Timer* timer) GRPC_MUST_USE_RESULT;
+
+ /* iomgr internal api for dealing with timers */
+
+ /* Check for timers to be run, and return them.
+ Return nullopt if timers could not be checked due to contention with
+ another thread checking.
+ Return a vector of closures that *must* be run otherwise.
+ If next is non-null, TRY to update *next with the next running timer
+ IF that timer occurs before *next current value.
+ *next is never guaranteed to be updated on any given execution; however,
+ with high probability at least one thread in the system will see an update
+ at any time slice. */
+ y_absl::optional<std::vector<experimental::EventEngine::Closure*>> TimerCheck(
+ grpc_core::Timestamp* next);
+
+ private:
+ /* A "timer shard". Contains a 'heap' and a 'list' of timers. All timers with
+ * deadlines earlier than 'queue_deadline_cap' are maintained in the heap and
+ * others are maintained in the list (unordered). This helps to keep the
+ * number of elements in the heap low.
+ *
+ * The 'queue_deadline_cap' gets recomputed periodically based on the timer
+ * stats maintained in 'stats' and the relevant timers are then moved from the
+ * 'list' to 'heap'.
+ */
+ struct Shard {
+ Shard();
+
+ grpc_core::Timestamp ComputeMinDeadline() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu);
+ bool RefillHeap(grpc_core::Timestamp now) Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu);
+ Timer* PopOne(grpc_core::Timestamp now) Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu);
+ void PopTimers(grpc_core::Timestamp now,
+ grpc_core::Timestamp* new_min_deadline,
+ std::vector<experimental::EventEngine::Closure*>* out)
+ Y_ABSL_LOCKS_EXCLUDED(mu);
+
+ grpc_core::Mutex mu;
+ grpc_core::TimeAveragedStats stats Y_ABSL_GUARDED_BY(mu);
+ /* All and only timers with deadlines < this will be in the heap. */
+ grpc_core::Timestamp queue_deadline_cap Y_ABSL_GUARDED_BY(mu);
+ /* The deadline of the next timer due in this shard. */
+ grpc_core::Timestamp min_deadline Y_ABSL_GUARDED_BY(&TimerList::mu_);
+ /* Index of this timer_shard in the g_shard_queue. */
+ uint32_t shard_queue_index Y_ABSL_GUARDED_BY(&TimerList::mu_);
+ /* This holds all timers with deadlines < queue_deadline_cap. Timers in this
+ list have the top bit of their deadline set to 0. */
+ TimerHeap heap Y_ABSL_GUARDED_BY(mu);
+ /* This holds timers whose deadline is >= queue_deadline_cap. */
+ Timer list Y_ABSL_GUARDED_BY(mu);
+ };
+
+ void SwapAdjacentShardsInQueue(uint32_t first_shard_queue_index)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
+ void NoteDeadlineChange(Shard* shard) Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
+ std::vector<experimental::EventEngine::Closure*> FindExpiredTimers(
+ grpc_core::Timestamp now, grpc_core::Timestamp* next);
+
+ TimerListHost* const host_;
+ const size_t num_shards_;
+ grpc_core::Mutex mu_;
+ /* The deadline of the next timer due across all timer shards */
+ std::atomic<uint64_t> min_timer_;
+ /* Allow only one FindExpiredTimers at once (used as a TryLock, protects no
+ * fields but ensures limits on concurrency) */
+ grpc_core::Mutex checker_mu_;
+ /* Array of timer shards. Whenever a timer (Timer *) is added, its address
+ * is hashed to select the timer shard to add the timer to */
+ const std::unique_ptr<Shard[]> shards_;
+ /* Maintains a sorted list of timer shards (sorted by their min_deadline, i.e
+ * the deadline of the next timer in each shard). */
+ const std::unique_ptr<Shard*[]> shard_queue_ Y_ABSL_GUARDED_BY(mu_);
+};
+
+} // namespace posix_engine
+} // namespace grpc_event_engine
+
+#endif /* GRPC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_TIMER_H */
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_heap.cc b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_heap.cc
new file mode 100644
index 0000000000..ea7b57ac87
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_heap.cc
@@ -0,0 +1,107 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/event_engine/posix_engine/timer_heap.h"
+
+#include <stdint.h>
+
+#include <algorithm>
+
+#include "src/core/lib/event_engine/posix_engine/timer.h"
+
+namespace grpc_event_engine {
+namespace posix_engine {
+
+/* Adjusts a heap so as to move a hole at position i closer to the root,
+ until a suitable position is found for element t. Then, copies t into that
+ position. This functor is called each time immediately after modifying a
+ value in the underlying container, with the offset of the modified element as
+ its argument. */
+void TimerHeap::AdjustUpwards(size_t i, Timer* t) {
+ while (i > 0) {
+ size_t parent = (i - 1) / 2;
+ if (timers_[parent]->deadline <= t->deadline) break;
+ timers_[i] = timers_[parent];
+ timers_[i]->heap_index = i;
+ i = parent;
+ }
+ timers_[i] = t;
+ t->heap_index = i;
+}
+
+/* Adjusts a heap so as to move a hole at position i farther away from the root,
+ until a suitable position is found for element t. Then, copies t into that
+ position. */
+void TimerHeap::AdjustDownwards(size_t i, Timer* t) {
+ for (;;) {
+ size_t left_child = 1 + 2 * i;
+ if (left_child >= timers_.size()) break;
+ size_t right_child = left_child + 1;
+ size_t next_i =
+ right_child < timers_.size() &&
+ timers_[left_child]->deadline > timers_[right_child]->deadline
+ ? right_child
+ : left_child;
+ if (t->deadline <= timers_[next_i]->deadline) break;
+ timers_[i] = timers_[next_i];
+ timers_[i]->heap_index = i;
+ i = next_i;
+ }
+ timers_[i] = t;
+ t->heap_index = i;
+}
+
+void TimerHeap::NoteChangedPriority(Timer* timer) {
+ uint32_t i = timer->heap_index;
+ uint32_t parent = static_cast<uint32_t>((static_cast<int>(i) - 1) / 2);
+ if (timers_[parent]->deadline > timer->deadline) {
+ AdjustUpwards(i, timer);
+ } else {
+ AdjustDownwards(i, timer);
+ }
+}
+
+bool TimerHeap::Add(Timer* timer) {
+ timer->heap_index = timers_.size();
+ timers_.push_back(timer);
+ AdjustUpwards(timer->heap_index, timer);
+ return timer->heap_index == 0;
+}
+
+void TimerHeap::Remove(Timer* timer) {
+ uint32_t i = timer->heap_index;
+ if (i == timers_.size() - 1) {
+ timers_.pop_back();
+ return;
+ }
+ timers_[i] = timers_[timers_.size() - 1];
+ timers_[i]->heap_index = i;
+ timers_.pop_back();
+ NoteChangedPriority(timers_[i]);
+}
+
+bool TimerHeap::is_empty() { return timers_.empty(); }
+
+Timer* TimerHeap::Top() { return timers_[0]; }
+
+void TimerHeap::Pop() { Remove(Top()); }
+
+} // namespace posix_engine
+} // namespace grpc_event_engine
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_heap.h b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_heap.h
new file mode 100644
index 0000000000..f5aee91411
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_heap.h
@@ -0,0 +1,56 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_TIMER_HEAP_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_TIMER_HEAP_H
+
+#include <grpc/support/port_platform.h>
+
+#include <cstddef>
+#include <vector>
+
+namespace grpc_event_engine {
+namespace posix_engine {
+
+struct Timer;
+
+class TimerHeap {
+ public:
+ /* return true if the new timer is the first timer in the heap */
+ bool Add(Timer* timer);
+
+ void Remove(Timer* timer);
+ Timer* Top();
+ void Pop();
+
+ bool is_empty();
+
+ const std::vector<Timer*>& TestOnlyGetTimers() const { return timers_; }
+
+ private:
+ void AdjustUpwards(size_t i, Timer* t);
+ void AdjustDownwards(size_t i, Timer* t);
+ void NoteChangedPriority(Timer* timer);
+
+ std::vector<Timer*> timers_;
+};
+
+} // namespace posix_engine
+} // namespace grpc_event_engine
+
+#endif /* GRPC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_TIMER_HEAP_H */
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_manager.cc b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_manager.cc
new file mode 100644
index 0000000000..5ded9d83fe
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_manager.cc
@@ -0,0 +1,311 @@
+/*
+ *
+ * Copyright 2017 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/event_engine/posix_engine/timer_manager.h"
+
+#include <algorithm>
+#include <memory>
+#include <utility>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/time/time.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/support/log.h>
+#include <grpc/support/time.h>
+
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gpr/tls.h"
+#include "src/core/lib/gprpp/thd.h"
+
+static GPR_THREAD_LOCAL(bool) g_timer_thread;
+
+namespace grpc_event_engine {
+namespace posix_engine {
+
+grpc_core::DebugOnlyTraceFlag grpc_event_engine_timer_trace(false, "timer");
+
+namespace {
+class ThreadCollector {
+ public:
+ ThreadCollector() = default;
+ ~ThreadCollector();
+
+ void Collect(std::vector<grpc_core::Thread> threads) {
+ GPR_ASSERT(threads_.empty());
+ threads_ = std::move(threads);
+ }
+
+ private:
+ std::vector<grpc_core::Thread> threads_;
+};
+
+ThreadCollector::~ThreadCollector() {
+ for (auto& t : threads_) t.Join();
+}
+} // namespace
+
+void TimerManager::StartThread() {
+ ++waiter_count_;
+ ++thread_count_;
+ auto* thread = new RunThreadArgs();
+ thread->self = this;
+ thread->thread = grpc_core::Thread(
+ "timer_manager", &TimerManager::RunThread, thread, nullptr,
+ grpc_core::Thread::Options().set_tracked(false));
+ thread->thread.Start();
+}
+
+void TimerManager::RunSomeTimers(
+ std::vector<experimental::EventEngine::Closure*> timers) {
+ // if there's something to execute...
+ ThreadCollector collector;
+ {
+ grpc_core::MutexLock lock(&mu_);
+ if (shutdown_ || forking_) return;
+ // remove a waiter from the pool, and start another thread if necessary
+ --waiter_count_;
+ if (waiter_count_ == 0) {
+ // The number of timer threads is always increasing until all the threads
+ // are stopped, with the exception that all threads are shut down on fork
+ // events. In rare cases, if a large number of timers fire simultaneously,
+ // we may end up using a large number of threads.
+ // TODO(ctiller): We could avoid this by exiting threads in WaitUntil().
+ StartThread();
+ } else {
+ // if there's no thread waiting with a timeout, kick an existing untimed
+ // waiter so that the next deadline is not missed
+ if (!has_timed_waiter_) {
+ cv_wait_.Signal();
+ }
+ }
+ }
+ for (auto* timer : timers) {
+ timer->Run();
+ }
+ {
+ grpc_core::MutexLock lock(&mu_);
+ collector.Collect(std::move(completed_threads_));
+ // get ready to wait again
+ ++waiter_count_;
+ }
+}
+
+// wait until 'next' (or forever if there is already a timed waiter in the pool)
+// returns true if the thread should continue executing (false if it should
+// shutdown)
+bool TimerManager::WaitUntil(grpc_core::Timestamp next) {
+ grpc_core::MutexLock lock(&mu_);
+
+ if (shutdown_) return false;
+ if (forking_) return false;
+
+ // TODO(ctiller): if there are too many waiting threads, this would be a good
+ // place to exit the current thread.
+
+ // If kicked_ is true at this point, it means there was a kick from the timer
+ // system that the timer-manager threads here missed. We cannot trust 'next'
+ // here any longer (since there might be an earlier deadline). So if kicked_
+ // is true at this point, we should quickly exit this and get the next
+ // deadline from the timer system
+
+ if (!kicked_) {
+ // if there's no timed waiter, we should become one: that waiter waits
+ // only until the next timer should expire. All other timers wait forever
+ //
+ // 'timed_waiter_generation_' is a global generation counter. The idea here
+ // is that the thread becoming a timed-waiter increments and stores this
+ // global counter locally in 'my_timed_waiter_generation' before going to
+ // sleep. After waking up, if my_timed_waiter_generation ==
+ // timed_waiter_generation_, it can be sure that it was the timed_waiter
+ // thread (and that no other thread took over while this was asleep)
+ //
+ // Initialize my_timed_waiter_generation to some value that is NOT equal to
+ // timed_waiter_generation_
+ uint64_t my_timed_waiter_generation = timed_waiter_generation_ - 1;
+
+ /* If there's no timed waiter, we should become one: that waiter waits only
+ until the next timer should expire. All other timer threads wait forever
+ unless their 'next' is earlier than the current timed-waiter's deadline
+ (in which case the thread with earlier 'next' takes over as the new timed
+ waiter) */
+ if (next != grpc_core::Timestamp::InfFuture()) {
+ if (!has_timed_waiter_ || (next < timed_waiter_deadline_)) {
+ my_timed_waiter_generation = ++timed_waiter_generation_;
+ has_timed_waiter_ = true;
+ timed_waiter_deadline_ = next;
+ } else { // timed_waiter_ == true && next >= timed_waiter_deadline_
+ next = grpc_core::Timestamp::InfFuture();
+ }
+ }
+
+ cv_wait_.WaitWithTimeout(&mu_,
+ y_absl::Milliseconds((next - host_.Now()).millis()));
+
+ // if this was the timed waiter, then we need to check timers, and flag
+ // that there's now no timed waiter... we'll look for a replacement if
+ // there's work to do after checking timers (code above)
+ if (my_timed_waiter_generation == timed_waiter_generation_) {
+ ++wakeups_;
+ has_timed_waiter_ = false;
+ timed_waiter_deadline_ = grpc_core::Timestamp::InfFuture();
+ }
+ }
+
+ kicked_ = false;
+
+ return true;
+}
+
+void TimerManager::MainLoop() {
+ for (;;) {
+ grpc_core::Timestamp next = grpc_core::Timestamp::InfFuture();
+ y_absl::optional<std::vector<experimental::EventEngine::Closure*>>
+ check_result = timer_list_->TimerCheck(&next);
+ if (check_result.has_value()) {
+ if (!check_result->empty()) {
+ RunSomeTimers(std::move(*check_result));
+ continue;
+ }
+ } else {
+ /* This case only happens under contention, meaning more than one timer
+ manager thread checked timers concurrently.
+
+ If that happens, we're guaranteed that some other thread has just
+ checked timers, and this will avalanche into some other thread seeing
+ empty timers and doing a timed sleep.
+
+ Consequently, we can just sleep forever here and be happy at some
+ saved wakeup cycles. */
+ next = grpc_core::Timestamp::InfFuture();
+ }
+ if (!WaitUntil(next)) return;
+ }
+}
+
+void TimerManager::RunThread(void* arg) {
+ g_timer_thread = true;
+ std::unique_ptr<RunThreadArgs> thread(static_cast<RunThreadArgs*>(arg));
+ if (grpc_event_engine_timer_trace.enabled()) {
+ gpr_log(GPR_DEBUG, "TimerManager::%p starting thread::%p", thread->self,
+ &thread->thread);
+ }
+ thread->self->Run(std::move(thread->thread));
+ if (grpc_event_engine_timer_trace.enabled()) {
+ gpr_log(GPR_DEBUG, "TimerManager::%p thread::%p finished", thread->self,
+ &thread->thread);
+ }
+}
+
+void TimerManager::Run(grpc_core::Thread thread) {
+ MainLoop();
+ grpc_core::MutexLock lock(&mu_);
+ completed_threads_.push_back(std::move(thread));
+ thread_count_--;
+ if (thread_count_ == 0) cv_threadcount_.Signal();
+}
+
+bool TimerManager::IsTimerManagerThread() { return g_timer_thread; }
+
+TimerManager::TimerManager() : host_(this) {
+ timer_list_ = y_absl::make_unique<TimerList>(&host_);
+ grpc_core::MutexLock lock(&mu_);
+ StartThread();
+}
+
+grpc_core::Timestamp TimerManager::Host::Now() {
+ return grpc_core::Timestamp::FromTimespecRoundDown(
+ gpr_now(GPR_CLOCK_MONOTONIC));
+}
+
+void TimerManager::TimerInit(Timer* timer, grpc_core::Timestamp deadline,
+ experimental::EventEngine::Closure* closure) {
+ timer_list_->TimerInit(timer, deadline, closure);
+}
+
+bool TimerManager::TimerCancel(Timer* timer) {
+ return timer_list_->TimerCancel(timer);
+}
+
+TimerManager::~TimerManager() {
+ if (grpc_event_engine_timer_trace.enabled()) {
+ gpr_log(GPR_DEBUG, "TimerManager::%p shutting down", this);
+ }
+ ThreadCollector collector;
+ grpc_core::MutexLock lock(&mu_);
+ shutdown_ = true;
+ cv_wait_.SignalAll();
+ while (thread_count_ > 0) {
+ cv_threadcount_.Wait(&mu_);
+ if (grpc_event_engine_timer_trace.enabled()) {
+ gpr_log(GPR_DEBUG, "TimerManager::%p waiting for %zu threads to finish",
+ this, thread_count_);
+ }
+ }
+ collector.Collect(std::move(completed_threads_));
+ if (grpc_event_engine_timer_trace.enabled()) {
+ gpr_log(GPR_DEBUG, "TimerManager::%p shutdown complete", this);
+ }
+}
+
+void TimerManager::Host::Kick() { timer_manager_->Kick(); }
+
+void TimerManager::Kick() {
+ grpc_core::MutexLock lock(&mu_);
+ has_timed_waiter_ = false;
+ timed_waiter_deadline_ = grpc_core::Timestamp::InfFuture();
+ ++timed_waiter_generation_;
+ kicked_ = true;
+ cv_wait_.Signal();
+}
+
+void TimerManager::PrepareFork() {
+ ThreadCollector collector;
+ grpc_core::MutexLock lock(&mu_);
+ forking_ = true;
+ prefork_thread_count_ = thread_count_;
+ cv_wait_.SignalAll();
+ while (thread_count_ > 0) {
+ cv_threadcount_.Wait(&mu_);
+ }
+ collector.Collect(std::move(completed_threads_));
+}
+
+void TimerManager::PostforkParent() {
+ grpc_core::MutexLock lock(&mu_);
+ for (int i = 0; i < prefork_thread_count_; i++) {
+ StartThread();
+ }
+ prefork_thread_count_ = 0;
+ forking_ = false;
+}
+
+void TimerManager::PostforkChild() {
+ grpc_core::MutexLock lock(&mu_);
+ for (int i = 0; i < prefork_thread_count_; i++) {
+ StartThread();
+ }
+ prefork_thread_count_ = 0;
+ forking_ = false;
+}
+
+} // namespace posix_engine
+} // namespace grpc_event_engine
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_manager.h b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_manager.h
new file mode 100644
index 0000000000..e620c6094d
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/posix_engine/timer_manager.h
@@ -0,0 +1,142 @@
+/*
+ *
+ * Copyright 2017 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_TIMER_MANAGER_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_TIMER_MANAGER_H
+
+#include <grpc/support/port_platform.h>
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include <memory>
+#include <vector>
+
+#include "y_absl/base/thread_annotations.h"
+
+#include <grpc/event_engine/event_engine.h>
+
+#include "src/core/lib/event_engine/forkable.h"
+#include "src/core/lib/event_engine/posix_engine/timer.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/thd.h"
+#include "src/core/lib/gprpp/time.h"
+
+namespace grpc_event_engine {
+namespace posix_engine {
+
+// Timer Manager tries to keep only one thread waiting for the next timeout at
+// all times, and thus effectively preventing the thundering herd problem.
+// TODO(ctiller): consider unifying this thread pool and the one in
+// thread_pool.{h,cc}.
+class TimerManager final : public grpc_event_engine::experimental::Forkable {
+ public:
+ TimerManager();
+ ~TimerManager() override;
+
+ grpc_core::Timestamp Now() { return host_.Now(); }
+
+ void TimerInit(Timer* timer, grpc_core::Timestamp deadline,
+ experimental::EventEngine::Closure* closure);
+ bool TimerCancel(Timer* timer);
+
+ // Forkable
+ void PrepareFork() override;
+ void PostforkParent() override;
+ void PostforkChild() override;
+
+ static bool IsTimerManagerThread();
+
+ private:
+ struct RunThreadArgs {
+ TimerManager* self;
+ grpc_core::Thread thread;
+ };
+
+ class Host final : public TimerListHost {
+ public:
+ explicit Host(TimerManager* timer_manager)
+ : timer_manager_(timer_manager) {}
+
+ void Kick() override;
+ grpc_core::Timestamp Now() override;
+
+ private:
+ TimerManager* const timer_manager_;
+ };
+
+ void StartThread() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
+ static void RunThread(void* arg);
+ void Run(grpc_core::Thread thread);
+ void MainLoop();
+ void RunSomeTimers(std::vector<experimental::EventEngine::Closure*> timers);
+ bool WaitUntil(grpc_core::Timestamp next);
+ void Kick();
+
+ grpc_core::Mutex mu_;
+ // Condvar associated with decrementing the thread count.
+ // Threads will signal this when thread count reaches zero, and the forking
+ // code *or* the destructor will wait upon it.
+ grpc_core::CondVar cv_threadcount_;
+ // Condvar associated with threads waiting to wakeup and work.
+ // Threads wait on this until either a timeout is reached or another thread is
+ // needed to wait for a timeout.
+ // On shutdown we SignalAll against this to wake up all threads and have them
+ // finish.
+ // On kick we Signal against this to wake up at least one thread (but not
+ // all)! Similarly when we note that no thread is watching timers.
+ //
+ // This is a different condvar than cv_threadcount_!
+ // If this were the same:
+ // - thread exits would require a SignalAll to ensure that the specific thread
+ // we want to wake is woken up.
+ // - kicks would need to signal all threads to avoid having the kick absorbed
+ // by a shutdown thread and cause a deadlock, leading to thundering herd
+ // problems in the common case.
+ grpc_core::CondVar cv_wait_;
+ Host host_;
+ // number of threads in the system
+ size_t thread_count_ Y_ABSL_GUARDED_BY(mu_) = 0;
+ // number of threads sitting around waiting
+ size_t waiter_count_ Y_ABSL_GUARDED_BY(mu_) = 0;
+ // Threads waiting to be joined
+ std::vector<grpc_core::Thread> completed_threads_ Y_ABSL_GUARDED_BY(mu_);
+ // is there a thread waiting until the next timer should fire?
+ bool has_timed_waiter_ Y_ABSL_GUARDED_BY(mu_) = false;
+ // are we shutting down?
+ bool shutdown_ Y_ABSL_GUARDED_BY(mu_) = false;
+ // are we forking?
+ bool forking_ Y_ABSL_GUARDED_BY(mu_) = false;
+ // are we shutting down?
+ bool kicked_ Y_ABSL_GUARDED_BY(mu_) = false;
+ // the deadline of the current timed waiter thread (only relevant if
+ // has_timed_waiter_ is true)
+ grpc_core::Timestamp timed_waiter_deadline_ Y_ABSL_GUARDED_BY(mu_);
+ // generation counter to track which thread is waiting for the next timer
+ uint64_t timed_waiter_generation_ Y_ABSL_GUARDED_BY(mu_) = 0;
+ // number of timer wakeups
+ uint64_t wakeups_ Y_ABSL_GUARDED_BY(mu_) = 0;
+ // actual timer implementation
+ std::unique_ptr<TimerList> timer_list_;
+ int prefork_thread_count_ = 0;
+};
+
+} // namespace posix_engine
+} // namespace grpc_event_engine
+
+#endif /* GRPC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_TIMER_MANAGER_H */
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/resolved_address.cc b/contrib/libs/grpc/src/core/lib/event_engine/resolved_address.cc
index 0623e6317f..75cf2b08a9 100644
--- a/contrib/libs/grpc/src/core/lib/event_engine/resolved_address.cc
+++ b/contrib/libs/grpc/src/core/lib/event_engine/resolved_address.cc
@@ -11,13 +11,15 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
+
#include <grpc/support/port_platform.h>
+#include <string.h>
+
#include <grpc/event_engine/event_engine.h>
-#include <grpc/event_engine/port.h>
#include <grpc/support/log.h>
-#include "src/core/lib/gprpp/sync.h"
+// IWYU pragma: no_include <sys/socket.h>
namespace grpc_event_engine {
namespace experimental {
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/slice.cc b/contrib/libs/grpc/src/core/lib/event_engine/slice.cc
new file mode 100644
index 0000000000..790f58fd2c
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/slice.cc
@@ -0,0 +1,103 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <grpc/support/port_platform.h>
+
+#include <stdint.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include <grpc/event_engine/slice.h>
+#include <grpc/slice.h>
+#include <grpc/support/log.h>
+
+#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
+#include "src/core/lib/slice/slice_refcount_base.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+namespace slice_detail {
+
+uint32_t BaseSlice::Hash() const { return grpc_slice_hash_internal(slice_); }
+
+template <>
+MutableSlice CopyConstructors<MutableSlice>::FromCopiedString(TString s) {
+ return MutableSlice(grpc_slice_from_cpp_string(std::move(s)));
+}
+
+template <>
+Slice CopyConstructors<Slice>::FromCopiedString(TString s) {
+ return Slice(grpc_slice_from_cpp_string(std::move(s)));
+}
+
+} // namespace slice_detail
+
+MutableSlice::MutableSlice(const grpc_slice& slice)
+ : slice_detail::BaseSlice(slice) {
+ GPR_DEBUG_ASSERT(slice.refcount == nullptr || slice.refcount->IsUnique());
+}
+
+MutableSlice::~MutableSlice() { grpc_slice_unref_internal(c_slice()); }
+
+Slice Slice::TakeOwned() {
+ if (c_slice().refcount == nullptr) {
+ return Slice(c_slice());
+ }
+ if (c_slice().refcount == grpc_slice_refcount::NoopRefcount()) {
+ return Slice(grpc_slice_copy(c_slice()));
+ }
+ return Slice(TakeCSlice());
+}
+
+Slice Slice::AsOwned() const {
+ if (c_slice().refcount == nullptr) {
+ return Slice(c_slice());
+ }
+ if (c_slice().refcount == grpc_slice_refcount::NoopRefcount()) {
+ return Slice(grpc_slice_copy(c_slice()));
+ }
+ return Slice(grpc_slice_ref_internal(c_slice()));
+}
+
+MutableSlice Slice::TakeMutable() {
+ if (c_slice().refcount == nullptr) {
+ return MutableSlice(c_slice());
+ }
+ if (c_slice().refcount != grpc_slice_refcount::NoopRefcount() &&
+ c_slice().refcount->IsUnique()) {
+ return MutableSlice(TakeCSlice());
+ }
+ return MutableSlice(grpc_slice_copy(c_slice()));
+}
+
+Slice::~Slice() { grpc_slice_unref_internal(c_slice()); }
+
+Slice Slice::Ref() const { return Slice(grpc_slice_ref_internal(c_slice())); }
+
+Slice Slice::FromRefcountAndBytes(grpc_slice_refcount* r, const uint8_t* begin,
+ const uint8_t* end) {
+ grpc_slice out;
+ out.refcount = r;
+ if (r != grpc_slice_refcount::NoopRefcount()) r->Ref();
+ out.data.refcounted.bytes = const_cast<uint8_t*>(begin);
+ out.data.refcounted.length = end - begin;
+ return Slice(out);
+}
+
+} // namespace experimental
+} // namespace grpc_event_engine
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/slice_buffer.cc b/contrib/libs/grpc/src/core/lib/event_engine/slice_buffer.cc
new file mode 100644
index 0000000000..4f94f70da9
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/slice_buffer.cc
@@ -0,0 +1,50 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <grpc/support/port_platform.h>
+
+#include <stddef.h>
+
+#include <grpc/event_engine/slice.h>
+#include <grpc/event_engine/slice_buffer.h>
+#include <grpc/slice.h>
+#include <grpc/slice_buffer.h>
+
+#include "src/core/lib/slice/slice_refcount.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+void SliceBuffer::Append(Slice slice) {
+ grpc_slice_buffer_add(&slice_buffer_, slice.TakeCSlice());
+}
+
+size_t SliceBuffer::AppendIndexed(Slice slice) {
+ return grpc_slice_buffer_add_indexed(&slice_buffer_, slice.TakeCSlice());
+}
+
+Slice SliceBuffer::TakeFirst() {
+ return Slice(grpc_slice_buffer_take_first(&slice_buffer_));
+}
+
+void SliceBuffer::Prepend(Slice slice) {
+ grpc_slice_buffer_undo_take_first(&slice_buffer_, slice.TakeCSlice());
+}
+
+Slice SliceBuffer::RefSlice(size_t index) {
+ return Slice(grpc_slice_ref_internal(slice_buffer_.slices[index]));
+}
+
+} // namespace experimental
+} // namespace grpc_event_engine
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/sockaddr.cc b/contrib/libs/grpc/src/core/lib/event_engine/sockaddr.cc
deleted file mode 100644
index dab44f938a..0000000000
--- a/contrib/libs/grpc/src/core/lib/event_engine/sockaddr.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2021 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include <grpc/support/port_platform.h>
-
-#ifdef GRPC_USE_EVENT_ENGINE
-#include <string.h>
-
-#include <grpc/event_engine/event_engine.h>
-#include <grpc/event_engine/port.h>
-#include <grpc/support/log.h>
-
-uint16_t grpc_htons(uint16_t hostshort) { return htons(hostshort); }
-
-uint16_t grpc_ntohs(uint16_t netshort) { return ntohs(netshort); }
-
-uint32_t grpc_htonl(uint32_t hostlong) { return htonl(hostlong); }
-
-uint32_t grpc_ntohl(uint32_t netlong) { return ntohl(netlong); }
-
-int grpc_inet_pton(int af, const char* src, void* dst) {
- return inet_pton(af, src, dst);
-}
-
-const char* grpc_inet_ntop(int af, const void* src, char* dst, size_t size) {
- inet_ntop(af, src, dst, size);
- return dst;
-}
-
-#endif // GRPC_USE_EVENT_ENGINE
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/sockaddr.h b/contrib/libs/grpc/src/core/lib/event_engine/sockaddr.h
deleted file mode 100644
index 23b83dde56..0000000000
--- a/contrib/libs/grpc/src/core/lib/event_engine/sockaddr.h
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2021 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#ifndef GRPC_CORE_LIB_EVENT_ENGINE_SOCKADDR_H
-#define GRPC_CORE_LIB_EVENT_ENGINE_SOCKADDR_H
-
-#include <grpc/support/port_platform.h>
-
-#ifdef GRPC_USE_EVENT_ENGINE
-#include <grpc/event_engine/port.h>
-
-#include "src/core/lib/iomgr/port.h"
-
-typedef struct sockaddr grpc_sockaddr;
-typedef struct sockaddr_in grpc_sockaddr_in;
-typedef struct sockaddr_in6 grpc_sockaddr_in6;
-typedef struct in_addr grpc_in_addr;
-typedef struct in6_addr grpc_in6_addr;
-
-#define GRPC_INET_ADDRSTRLEN INET_ADDRSTRLEN
-#define GRPC_INET6_ADDRSTRLEN INET6_ADDRSTRLEN
-
-#define GRPC_SOCK_STREAM SOCK_STREAM
-#define GRPC_SOCK_DGRAM SOCK_DGRAM
-
-#define GRPC_AF_UNSPEC AF_UNSPEC
-#define GRPC_AF_UNIX AF_UNIX
-#define GRPC_AF_INET AF_INET
-#define GRPC_AF_INET6 AF_INET6
-
-#define GRPC_AI_PASSIVE AI_PASSIVE
-
-#endif
-#endif // GRPC_CORE_LIB_EVENT_ENGINE_SOCKADDR_H
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/socket_notifier.h b/contrib/libs/grpc/src/core/lib/event_engine/socket_notifier.h
new file mode 100644
index 0000000000..67d29a87ab
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/socket_notifier.h
@@ -0,0 +1,55 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_SOCKET_NOTIFIER_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_SOCKET_NOTIFIER_H
+
+#include <grpc/support/port_platform.h>
+
+#include "y_absl/status/status.h"
+
+#include <grpc/event_engine/event_engine.h>
+
+namespace grpc_event_engine {
+namespace experimental {
+
+// Generically wraps a socket/fd, and manages the registration of callbacks and
+// triggering of notifications on it.
+class SocketNotifier {
+ public:
+ virtual ~SocketNotifier() = default;
+ // Schedule on_read to be invoked when the underlying socket
+ // becomes readable.
+ // If the socket is already readable, the callback will be executed as soon as
+ // possible.
+ virtual void NotifyOnRead(EventEngine::Closure* on_read) = 0;
+ // Schedule on_write to be invoked when the underlying socket
+ // becomes writable.
+ // If the socket is already writable, the callback will be executed as soon as
+ // possible.
+ virtual void NotifyOnWrite(EventEngine::Closure* on_write) = 0;
+ // Set a readable event on the underlying socket.
+ virtual void SetReadable() = 0;
+ // Set a writable event on the underlying socket.
+ virtual void SetWritable() = 0;
+ // Shutdown a SocketNotifier. After this operation, NotifyXXX and SetXXX
+ // operations cannot be performed.
+ virtual void MaybeShutdown(y_absl::Status why) = 0;
+ // Returns true if the SocketNotifier has been shutdown.
+ virtual bool IsShutdown() = 0;
+};
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_SOCKET_NOTIFIER_H \ No newline at end of file
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/thread_pool.cc b/contrib/libs/grpc/src/core/lib/event_engine/thread_pool.cc
new file mode 100644
index 0000000000..5fa18ab7cc
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/thread_pool.cc
@@ -0,0 +1,195 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/event_engine/thread_pool.h"
+
+#include <memory>
+#include <utility>
+
+#include "y_absl/time/clock.h"
+#include "y_absl/time/time.h"
+
+#include <grpc/support/log.h>
+
+#include "src/core/lib/gpr/tls.h"
+#include "src/core/lib/gprpp/thd.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+namespace {
+// TODO(drfloob): Remove this, and replace it with the WorkQueue* for the
+// current thread (with nullptr indicating not a threadpool thread).
+GPR_THREAD_LOCAL(bool) g_threadpool_thread;
+} // namespace
+
+void ThreadPool::StartThread(StatePtr state, bool throttled) {
+ state->thread_count.Add();
+ struct ThreadArg {
+ StatePtr state;
+ bool throttled;
+ };
+ grpc_core::Thread(
+ "event_engine",
+ [](void* arg) {
+ std::unique_ptr<ThreadArg> a(static_cast<ThreadArg*>(arg));
+ g_threadpool_thread = true;
+ if (a->throttled) {
+ GPR_ASSERT(a->state->currently_starting_one_thread.exchange(
+ false, std::memory_order_relaxed));
+ }
+ ThreadFunc(a->state);
+ },
+ new ThreadArg{state, throttled}, nullptr,
+ grpc_core::Thread::Options().set_tracked(false).set_joinable(false))
+ .Start();
+}
+
+void ThreadPool::ThreadFunc(StatePtr state) {
+ while (state->queue.Step()) {
+ }
+ state->thread_count.Remove();
+}
+
+bool ThreadPool::Queue::Step() {
+ grpc_core::ReleasableMutexLock lock(&mu_);
+ // Wait until work is available or we are shutting down.
+ while (state_ == State::kRunning && callbacks_.empty()) {
+ // If there are too many threads waiting, then quit this thread.
+ // TODO(ctiller): wait some time in this case to be sure.
+ if (threads_waiting_ >= reserve_threads_) return false;
+ threads_waiting_++;
+ cv_.Wait(&mu_);
+ threads_waiting_--;
+ }
+ switch (state_) {
+ case State::kRunning:
+ break;
+ case State::kShutdown:
+ case State::kForking:
+ if (!callbacks_.empty()) break;
+ return false;
+ }
+ GPR_ASSERT(!callbacks_.empty());
+ auto callback = std::move(callbacks_.front());
+ callbacks_.pop();
+ lock.Release();
+ callback();
+ return true;
+}
+
+ThreadPool::ThreadPool(int reserve_threads)
+ : reserve_threads_(reserve_threads) {
+ for (int i = 0; i < reserve_threads; i++) {
+ StartThread(state_, /*throttled=*/false);
+ }
+}
+
+ThreadPool::~ThreadPool() {
+ state_->queue.SetShutdown();
+ // Wait until all threads are exited.
+ // Note that if this is a threadpool thread then we won't exit this thread
+ // until the callstack unwinds a little, so we need to wait for just one
+ // thread running instead of zero.
+ state_->thread_count.BlockUntilThreadCount(g_threadpool_thread ? 1 : 0,
+ "shutting down");
+}
+
+void ThreadPool::Add(y_absl::AnyInvocable<void()> callback) {
+ if (state_->queue.Add(std::move(callback))) {
+ if (!state_->currently_starting_one_thread.exchange(
+ true, std::memory_order_relaxed)) {
+ StartThread(state_, /*throttled=*/true);
+ }
+ }
+}
+
+bool ThreadPool::Queue::Add(y_absl::AnyInvocable<void()> callback) {
+ grpc_core::MutexLock lock(&mu_);
+ // Add works to the callbacks list
+ callbacks_.push(std::move(callback));
+ cv_.Signal();
+ switch (state_) {
+ case State::kRunning:
+ case State::kShutdown:
+ return threads_waiting_ == 0;
+ case State::kForking:
+ return false;
+ }
+ GPR_UNREACHABLE_CODE(return false);
+}
+
+void ThreadPool::Queue::SetState(State state) {
+ grpc_core::MutexLock lock(&mu_);
+ if (state == State::kRunning) {
+ GPR_ASSERT(state_ != State::kRunning);
+ } else {
+ GPR_ASSERT(state_ == State::kRunning);
+ }
+ state_ = state;
+ cv_.SignalAll();
+}
+
+void ThreadPool::ThreadCount::Add() {
+ grpc_core::MutexLock lock(&mu_);
+ ++threads_;
+}
+
+void ThreadPool::ThreadCount::Remove() {
+ grpc_core::MutexLock lock(&mu_);
+ --threads_;
+ cv_.Signal();
+}
+
+void ThreadPool::ThreadCount::BlockUntilThreadCount(int threads,
+ const char* why) {
+ grpc_core::MutexLock lock(&mu_);
+ auto last_log = y_absl::Now();
+ while (threads_ > threads) {
+ // Wait for all threads to exit.
+ // At least once every three seconds (but no faster than once per second in
+ // the event of spurious wakeups) log a message indicating we're waiting to
+ // fork.
+ cv_.WaitWithTimeout(&mu_, y_absl::Seconds(3));
+ if (threads_ > threads && y_absl::Now() - last_log > y_absl::Seconds(1)) {
+ gpr_log(GPR_ERROR, "Waiting for thread pool to idle before %s", why);
+ last_log = y_absl::Now();
+ }
+ }
+}
+
+void ThreadPool::PrepareFork() {
+ state_->queue.SetForking();
+ state_->thread_count.BlockUntilThreadCount(0, "forking");
+}
+
+void ThreadPool::PostforkParent() { Postfork(); }
+
+void ThreadPool::PostforkChild() { Postfork(); }
+
+void ThreadPool::Postfork() {
+ state_->queue.Reset();
+ for (int i = 0; i < reserve_threads_; i++) {
+ StartThread(state_, /*throttled=*/false);
+ }
+}
+
+} // namespace experimental
+} // namespace grpc_event_engine
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/thread_pool.h b/contrib/libs/grpc/src/core/lib/event_engine/thread_pool.h
new file mode 100644
index 0000000000..db66ff4b75
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/thread_pool.h
@@ -0,0 +1,114 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_THREAD_POOL_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_THREAD_POOL_H
+
+#include <grpc/support/port_platform.h>
+
+#include <atomic>
+#include <memory>
+#include <queue>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/functional/any_invocable.h"
+
+#include "src/core/lib/event_engine/forkable.h"
+#include "src/core/lib/gprpp/sync.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+class ThreadPool final : public grpc_event_engine::experimental::Forkable {
+ public:
+ explicit ThreadPool(int reserve_threads);
+ // Ensures the thread pool is empty before destroying it.
+ ~ThreadPool() override;
+
+ void Add(y_absl::AnyInvocable<void()> callback);
+
+ // Forkable
+ // Ensures that the thread pool is empty before forking.
+ void PrepareFork() override;
+ void PostforkParent() override;
+ void PostforkChild() override;
+
+ private:
+ class Queue {
+ public:
+ explicit Queue(int reserve_threads) : reserve_threads_(reserve_threads) {}
+ bool Step();
+ void SetShutdown() { SetState(State::kShutdown); }
+ void SetForking() { SetState(State::kForking); }
+ // Add a callback to the queue.
+ // Return true if we should also spin up a new thread.
+ bool Add(y_absl::AnyInvocable<void()> callback);
+ void Reset() { SetState(State::kRunning); }
+
+ private:
+ enum class State { kRunning, kShutdown, kForking };
+
+ void SetState(State state);
+
+ grpc_core::Mutex mu_;
+ grpc_core::CondVar cv_;
+ std::queue<y_absl::AnyInvocable<void()>> callbacks_ Y_ABSL_GUARDED_BY(mu_);
+ int threads_waiting_ Y_ABSL_GUARDED_BY(mu_) = 0;
+ const int reserve_threads_;
+ State state_ Y_ABSL_GUARDED_BY(mu_) = State::kRunning;
+ };
+
+ class ThreadCount {
+ public:
+ void Add();
+ void Remove();
+ void BlockUntilThreadCount(int threads, const char* why);
+
+ private:
+ grpc_core::Mutex mu_;
+ grpc_core::CondVar cv_;
+ int threads_ Y_ABSL_GUARDED_BY(mu_) = 0;
+ };
+
+ struct State {
+ explicit State(int reserve_threads) : queue(reserve_threads) {}
+ Queue queue;
+ ThreadCount thread_count;
+ // After pool creation we use this to rate limit creation of threads to one
+ // at a time.
+ std::atomic<bool> currently_starting_one_thread{false};
+ };
+
+ using StatePtr = std::shared_ptr<State>;
+
+ static void ThreadFunc(StatePtr state);
+ // Start a new thread; throttled indicates whether the State::starting_thread
+ // variable is being used to throttle this threads creation against others or
+ // not: at thread pool startup we start several threads concurrently, but
+ // after that we only start one at a time.
+ static void StartThread(StatePtr state, bool throttled);
+ void Postfork();
+
+ const int reserve_threads_;
+ const StatePtr state_ = std::make_shared<State>(reserve_threads_);
+};
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_THREAD_POOL_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc b/contrib/libs/grpc/src/core/lib/event_engine/time_util.cc
index fdd4e00c55..0422f05989 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc
+++ b/contrib/libs/grpc/src/core/lib/event_engine/time_util.cc
@@ -1,4 +1,4 @@
-// Copyright 2021 The gRPC Authors
+// Copyright 2022 gRPC authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -13,16 +13,18 @@
// limitations under the License.
#include <grpc/support/port_platform.h>
-#include "src/core/lib/iomgr/port.h"
-#if GRPC_ARES == 1 && defined(GRPC_USE_EVENT_ENGINE)
+#include "src/core/lib/event_engine/time_util.h"
-#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
+#include <chrono>
-bool grpc_ares_query_ipv6() {
- /* The libuv grpc code currently does not have the code to probe for this,
- * so we assume for now that IPv6 is always available in contexts where this
- * code will be used. */
- return true;
+#include <grpc/event_engine/event_engine.h>
+
+namespace grpc_event_engine {
+namespace experimental {
+
+size_t Milliseconds(EventEngine::Duration d) {
+ return std::chrono::duration_cast<std::chrono::milliseconds>(d).count();
}
-#endif /* GRPC_ARES == 1 && defined(GRPC_USE_EVENT_ENGINE) */
+} // namespace experimental
+} // namespace grpc_event_engine
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/time_util.h b/contrib/libs/grpc/src/core/lib/event_engine/time_util.h
new file mode 100644
index 0000000000..82b23ef394
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/time_util.h
@@ -0,0 +1,32 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_TIME_UTIL_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_TIME_UTIL_H
+
+#include <grpc/support/port_platform.h>
+
+#include <stddef.h>
+
+#include <grpc/event_engine/event_engine.h>
+
+namespace grpc_event_engine {
+namespace experimental {
+
+// Convert a duration to milliseconds
+size_t Milliseconds(EventEngine::Duration d);
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_TIME_UTIL_H \ No newline at end of file
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/trace.cc b/contrib/libs/grpc/src/core/lib/event_engine/trace.cc
new file mode 100644
index 0000000000..52cbd35f4f
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/trace.cc
@@ -0,0 +1,18 @@
+// Copyright 2022 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/debug/trace.h"
+
+grpc_core::TraceFlag grpc_event_engine_trace(false, "event_engine");
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_event_engine.cc b/contrib/libs/grpc/src/core/lib/event_engine/trace.h
index 7c0c1008a1..d26dee3628 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_event_engine.cc
+++ b/contrib/libs/grpc/src/core/lib/event_engine/trace.h
@@ -1,4 +1,4 @@
-// Copyright 2021 The gRPC Authors
+// Copyright 2022 The gRPC Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -11,22 +11,20 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
-#include <grpc/support/port_platform.h>
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_TRACE_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_TRACE_H
-#ifdef GRPC_USE_EVENT_ENGINE
-#include <stdlib.h>
+#include <grpc/support/port_platform.h>
#include <grpc/support/log.h>
-#include "src/core/lib/iomgr/endpoint_pair.h"
-#include "src/core/lib/iomgr/port.h"
+#include "src/core/lib/debug/trace.h"
+
+extern grpc_core::TraceFlag grpc_event_engine_trace;
-grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(
- const char* /* name */, grpc_channel_args* /* args */) {
- // TODO(hork): determine what's needed here in the long run
- GPR_ASSERT(
- false &&
- "grpc_iomgr_create_endpoint_pair is not suppoted with event_engine");
-}
+#define GRPC_EVENT_ENGINE_TRACE(format, ...) \
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) { \
+ gpr_log(GPR_DEBUG, "(event_engine) " format, __VA_ARGS__); \
+ }
-#endif // GRPC_USE_EVENT_ENGINE
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_TRACE_H
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/utils.cc b/contrib/libs/grpc/src/core/lib/event_engine/utils.cc
new file mode 100644
index 0000000000..9d3aadc345
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/utils.cc
@@ -0,0 +1,44 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/event_engine/utils.h"
+
+#include <stdint.h>
+
+#include <algorithm>
+
+#include "y_absl/strings/str_cat.h"
+
+#include <grpc/event_engine/event_engine.h>
+
+#include "src/core/lib/gprpp/time.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+TString HandleToString(EventEngine::TaskHandle handle) {
+ return y_absl::StrCat("{", handle.keys[0], ",", handle.keys[1], "}");
+}
+
+grpc_core::Timestamp ToTimestamp(grpc_core::Timestamp now,
+ EventEngine::Duration delta) {
+ return now +
+ std::max(grpc_core::Duration::Milliseconds(1),
+ grpc_core::Duration::NanosecondsRoundUp(delta.count())) +
+ grpc_core::Duration::Milliseconds(1);
+}
+
+} // namespace experimental
+} // namespace grpc_event_engine
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/utils.h b/contrib/libs/grpc/src/core/lib/event_engine/utils.h
new file mode 100644
index 0000000000..24010dcf5b
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/utils.h
@@ -0,0 +1,37 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_UTILS_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_UTILS_H
+
+#include <grpc/support/port_platform.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include <grpc/event_engine/event_engine.h>
+
+#include "src/core/lib/gprpp/time.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+TString HandleToString(EventEngine::TaskHandle handle);
+
+grpc_core::Timestamp ToTimestamp(grpc_core::Timestamp now,
+ EventEngine::Duration delta);
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_UTILS_H \ No newline at end of file
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/windows/iocp.cc b/contrib/libs/grpc/src/core/lib/event_engine/windows/iocp.cc
new file mode 100644
index 0000000000..d710589323
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/windows/iocp.cc
@@ -0,0 +1,155 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include <grpc/support/port_platform.h>
+
+#ifdef GPR_WINDOWS
+
+#include <chrono>
+
+#include "y_absl/strings/str_format.h"
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/log_windows.h>
+
+#include "src/core/lib/event_engine/time_util.h"
+#include "src/core/lib/event_engine/trace.h"
+#include "src/core/lib/event_engine/windows/iocp.h"
+#include "src/core/lib/event_engine/windows/win_socket.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+IOCP::IOCP(Executor* executor) noexcept
+ : executor_(executor),
+ iocp_handle_(CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL,
+ (ULONG_PTR)NULL, 0)) {
+ GPR_ASSERT(iocp_handle_);
+ WSASocketFlagsInit();
+}
+
+// Shutdown must be called prior to deletion
+IOCP::~IOCP() {}
+
+WinSocket* IOCP::Watch(SOCKET socket) {
+ WinSocket* wrapped_socket = new WinSocket(socket, executor_);
+ HANDLE ret =
+ CreateIoCompletionPort(reinterpret_cast<HANDLE>(socket), iocp_handle_,
+ reinterpret_cast<uintptr_t>(wrapped_socket), 0);
+ if (!ret) {
+ char* utf8_message = gpr_format_message(WSAGetLastError());
+ gpr_log(GPR_ERROR, "Unable to add socket to iocp: %s", utf8_message);
+ gpr_free(utf8_message);
+ __debugbreak();
+ abort();
+ }
+ GPR_ASSERT(ret == iocp_handle_);
+ return wrapped_socket;
+}
+
+void IOCP::Shutdown() {
+ while (outstanding_kicks_.load() > 0) {
+ Work(std::chrono::hours(42), []() {});
+ }
+ GPR_ASSERT(CloseHandle(iocp_handle_));
+}
+
+Poller::WorkResult IOCP::Work(EventEngine::Duration timeout,
+ y_absl::FunctionRef<void()> schedule_poll_again) {
+ static const y_absl::Status kDeadlineExceeded = y_absl::DeadlineExceededError(
+ y_absl::StrFormat("IOCP::%p: Received no completions", this));
+ static const y_absl::Status kKicked =
+ y_absl::AbortedError(y_absl::StrFormat("IOCP::%p: Awoken from a kick", this));
+ DWORD bytes = 0;
+ ULONG_PTR completion_key;
+ LPOVERLAPPED overlapped;
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
+ gpr_log(GPR_DEBUG, "IOCP::%p doing work", this);
+ }
+ BOOL success = GetQueuedCompletionStatus(
+ iocp_handle_, &bytes, &completion_key, &overlapped,
+ static_cast<DWORD>(Milliseconds(timeout)));
+ if (success == 0 && overlapped == NULL) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
+ gpr_log(GPR_DEBUG, "IOCP::%p deadline exceeded", this);
+ }
+ return Poller::WorkResult::kDeadlineExceeded;
+ }
+ GPR_ASSERT(completion_key && overlapped);
+ if (overlapped == &kick_overlap_) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
+ gpr_log(GPR_DEBUG, "IOCP::%p kicked", this);
+ }
+ outstanding_kicks_.fetch_sub(1);
+ if (completion_key == (ULONG_PTR)&kick_token_) {
+ return Poller::WorkResult::kKicked;
+ }
+ gpr_log(GPR_ERROR, "Unknown custom completion key: %p", completion_key);
+ abort();
+ }
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
+ gpr_log(GPR_DEBUG, "IOCP::%p got event on OVERLAPPED::%p", this,
+ overlapped);
+ }
+ WinSocket* socket = reinterpret_cast<WinSocket*>(completion_key);
+ // TODO(hork): move the following logic into the WinSocket impl.
+ WinSocket::OpState* info = socket->GetOpInfoForOverlapped(overlapped);
+ GPR_ASSERT(info != nullptr);
+ if (socket->IsShutdown()) {
+ info->SetError(WSAESHUTDOWN);
+ } else {
+ info->GetOverlappedResult();
+ }
+ if (info->closure() != nullptr) {
+ schedule_poll_again();
+ executor_->Run(info->closure());
+ return Poller::WorkResult::kOk;
+ }
+ // No callback registered. Set ready and return an empty set
+ info->SetReady();
+ schedule_poll_again();
+ return Poller::WorkResult::kOk;
+}
+
+void IOCP::Kick() {
+ outstanding_kicks_.fetch_add(1);
+ GPR_ASSERT(PostQueuedCompletionStatus(
+ iocp_handle_, 0, reinterpret_cast<ULONG_PTR>(&kick_token_),
+ &kick_overlap_));
+}
+
+DWORD IOCP::GetDefaultSocketFlags() {
+ static DWORD wsa_socket_flags = WSASocketFlagsInit();
+ return wsa_socket_flags;
+}
+
+DWORD IOCP::WSASocketFlagsInit() {
+ DWORD wsa_socket_flags = WSA_FLAG_OVERLAPPED;
+ /* WSA_FLAG_NO_HANDLE_INHERIT may be not supported on the older Windows
+ versions, see
+ https://msdn.microsoft.com/en-us/library/windows/desktop/ms742212(v=vs.85).aspx
+ for details. */
+ SOCKET sock = WSASocket(AF_INET6, SOCK_STREAM, IPPROTO_TCP, NULL, 0,
+ wsa_socket_flags | WSA_FLAG_NO_HANDLE_INHERIT);
+ if (sock != INVALID_SOCKET) {
+ /* Windows 7, Windows 2008 R2 with SP1 or later */
+ wsa_socket_flags |= WSA_FLAG_NO_HANDLE_INHERIT;
+ closesocket(sock);
+ }
+ return wsa_socket_flags;
+}
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GPR_WINDOWS
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/windows/iocp.h b/contrib/libs/grpc/src/core/lib/event_engine/windows/iocp.h
new file mode 100644
index 0000000000..793af32ab8
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/windows/iocp.h
@@ -0,0 +1,69 @@
+// Copyright 2022 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_IOCP_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_IOCP_H
+
+#include <grpc/support/port_platform.h>
+
+#ifdef GPR_WINDOWS
+
+#include "y_absl/status/status.h"
+
+#include <grpc/event_engine/event_engine.h>
+
+#include "src/core/lib/event_engine/executor/executor.h"
+#include "src/core/lib/event_engine/poller.h"
+#include "src/core/lib/event_engine/windows/win_socket.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+class IOCP final : public Poller {
+ public:
+ explicit IOCP(Executor* executor) noexcept;
+ ~IOCP();
+ // Not copyable
+ IOCP(const IOCP&) = delete;
+ IOCP& operator=(const IOCP&) = delete;
+ // Not moveable
+ IOCP(IOCP&& other) = delete;
+ IOCP& operator=(IOCP&& other) = delete;
+
+ // interface methods
+ void Shutdown();
+ WorkResult Work(EventEngine::Duration timeout,
+ y_absl::FunctionRef<void()> schedule_poll_again) override;
+ void Kick() override;
+
+ WinSocket* Watch(SOCKET socket);
+ // Return the set of default flags
+ static DWORD GetDefaultSocketFlags();
+
+ private:
+ // Initialize default flags via checking platform support
+ static DWORD WSASocketFlagsInit();
+
+ Executor* executor_;
+ HANDLE iocp_handle_;
+ OVERLAPPED kick_overlap_;
+ ULONG kick_token_;
+ std::atomic<int> outstanding_kicks_{0};
+};
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif
+
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_IOCP_H
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/windows/win_socket.cc b/contrib/libs/grpc/src/core/lib/event_engine/windows/win_socket.cc
new file mode 100644
index 0000000000..fc0320759c
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/windows/win_socket.cc
@@ -0,0 +1,196 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include <grpc/support/port_platform.h>
+
+#ifdef GPR_WINDOWS
+#include <grpc/support/alloc.h>
+#include <grpc/support/log_windows.h>
+
+#include "src/core/lib/event_engine/executor/executor.h"
+#include "src/core/lib/event_engine/trace.h"
+#include "src/core/lib/event_engine/windows/win_socket.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/error.h"
+
+#if defined(__MSYS__) && defined(GPR_ARCH_64)
+/* Nasty workaround for nasty bug when using the 64 bits msys compiler
+ in conjunction with Microsoft Windows headers. */
+#define GRPC_FIONBIO _IOW('f', 126, uint32_t)
+#else
+#define GRPC_FIONBIO FIONBIO
+#endif
+
+namespace grpc_event_engine {
+namespace experimental {
+
+WinSocket::WinSocket(SOCKET socket, Executor* executor) noexcept
+ : socket_(socket),
+ executor_(executor),
+ read_info_(OpState(this)),
+ write_info_(OpState(this)) {}
+
+WinSocket::~WinSocket() { GPR_ASSERT(is_shutdown_.load()); }
+
+SOCKET WinSocket::socket() { return socket_; }
+
+void WinSocket::MaybeShutdown(y_absl::Status why) {
+ // if already shutdown, return early. Otherwise, set the shutdown flag.
+ if (is_shutdown_.exchange(true)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
+ gpr_log(GPR_DEBUG, "WinSocket::%p already shutting down", this);
+ }
+ return;
+ }
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
+ gpr_log(GPR_DEBUG, "WinSocket::%p shutting down now. Reason: %s", this,
+ why.ToString().c_str());
+ }
+ // Grab the function pointer for DisconnectEx for that specific socket.
+ // It may change depending on the interface.
+ GUID guid = WSAID_DISCONNECTEX;
+ LPFN_DISCONNECTEX DisconnectEx;
+ DWORD ioctl_num_bytes;
+ int status = WSAIoctl(socket_, SIO_GET_EXTENSION_FUNCTION_POINTER, &guid,
+ sizeof(guid), &DisconnectEx, sizeof(DisconnectEx),
+ &ioctl_num_bytes, NULL, NULL);
+
+ if (status == 0) {
+ DisconnectEx(socket_, NULL, 0, 0);
+ } else {
+ char* utf8_message = gpr_format_message(WSAGetLastError());
+ gpr_log(GPR_INFO, "Unable to retrieve DisconnectEx pointer : %s",
+ utf8_message);
+ gpr_free(utf8_message);
+ }
+ closesocket(socket_);
+}
+
+void WinSocket::NotifyOnReady(OpState& info, EventEngine::Closure* closure) {
+ if (IsShutdown()) {
+ info.SetError(WSAESHUTDOWN);
+ executor_->Run(closure);
+ return;
+ };
+ if (std::exchange(info.has_pending_iocp_, false)) {
+ executor_->Run(closure);
+ } else {
+ info.closure_ = closure;
+ }
+}
+
+void WinSocket::NotifyOnRead(EventEngine::Closure* on_read) {
+ NotifyOnReady(read_info_, on_read);
+}
+
+void WinSocket::NotifyOnWrite(EventEngine::Closure* on_write) {
+ NotifyOnReady(write_info_, on_write);
+}
+
+WinSocket::OpState::OpState(WinSocket* win_socket) noexcept
+ : win_socket_(win_socket), closure_(nullptr) {}
+
+void WinSocket::OpState::SetReady() {
+ GPR_ASSERT(!has_pending_iocp_);
+ if (closure_) {
+ win_socket_->executor_->Run(closure_);
+ } else {
+ has_pending_iocp_ = true;
+ }
+}
+
+void WinSocket::OpState::SetError(int wsa_error) {
+ bytes_transferred_ = 0;
+ wsa_error_ = wsa_error;
+}
+
+void WinSocket::OpState::GetOverlappedResult() {
+ DWORD flags = 0;
+ DWORD bytes;
+ BOOL success = WSAGetOverlappedResult(win_socket_->socket(), &overlapped_,
+ &bytes, FALSE, &flags);
+ bytes_transferred_ = bytes;
+ wsa_error_ = success ? 0 : WSAGetLastError();
+}
+
+void WinSocket::SetReadable() { read_info_.SetReady(); }
+
+void WinSocket::SetWritable() { write_info_.SetReady(); }
+
+bool WinSocket::IsShutdown() { return is_shutdown_.load(); }
+
+WinSocket::OpState* WinSocket::GetOpInfoForOverlapped(OVERLAPPED* overlapped) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
+ gpr_log(GPR_DEBUG,
+ "WinSocket::%p looking for matching OVERLAPPED::%p. "
+ "read(%p) write(%p)",
+ this, overlapped, &read_info_.overlapped_,
+ &write_info_.overlapped_);
+ }
+ if (overlapped == &read_info_.overlapped_) return &read_info_;
+ if (overlapped == &write_info_.overlapped_) return &write_info_;
+ return nullptr;
+}
+
+namespace {
+
+grpc_error_handle grpc_tcp_set_non_block(SOCKET sock) {
+ int status;
+ uint32_t param = 1;
+ DWORD ret;
+ status = WSAIoctl(sock, GRPC_FIONBIO, &param, sizeof(param), NULL, 0, &ret,
+ NULL, NULL);
+ return status == 0
+ ? GRPC_ERROR_NONE
+ : GRPC_WSA_ERROR(WSAGetLastError(), "WSAIoctl(GRPC_FIONBIO)");
+}
+
+static grpc_error_handle set_dualstack(SOCKET sock) {
+ int status;
+ DWORD param = 0;
+ status = setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (const char*)&param,
+ sizeof(param));
+ return status == 0
+ ? GRPC_ERROR_NONE
+ : GRPC_WSA_ERROR(WSAGetLastError(), "setsockopt(IPV6_V6ONLY)");
+}
+
+static grpc_error_handle enable_socket_low_latency(SOCKET sock) {
+ int status;
+ BOOL param = TRUE;
+ status = ::setsockopt(sock, IPPROTO_TCP, TCP_NODELAY,
+ reinterpret_cast<char*>(&param), sizeof(param));
+ if (status == SOCKET_ERROR) {
+ status = WSAGetLastError();
+ }
+ return status == 0 ? GRPC_ERROR_NONE
+ : GRPC_WSA_ERROR(status, "setsockopt(TCP_NODELAY)");
+}
+
+} // namespace
+
+y_absl::Status PrepareSocket(SOCKET sock) {
+ y_absl::Status err;
+ err = grpc_tcp_set_non_block(sock);
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
+ err = enable_socket_low_latency(sock);
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
+ err = set_dualstack(sock);
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
+ return GRPC_ERROR_NONE;
+}
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif // GPR_WINDOWS
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/windows/win_socket.h b/contrib/libs/grpc/src/core/lib/event_engine/windows/win_socket.h
new file mode 100644
index 0000000000..3e5c97c83d
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/windows/win_socket.h
@@ -0,0 +1,120 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_WIN_SOCKET_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_WIN_SOCKET_H
+
+#include <grpc/support/port_platform.h>
+
+#ifdef GPR_WINDOWS
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/functional/any_invocable.h"
+
+#include <grpc/event_engine/event_engine.h>
+
+#include "src/core/lib/event_engine/executor/executor.h"
+#include "src/core/lib/event_engine/socket_notifier.h"
+#include "src/core/lib/gprpp/sync.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+class WinSocket final : public SocketNotifier {
+ public:
+ // State related to a Read or Write socket operation
+ class OpState {
+ public:
+ explicit OpState(WinSocket* win_socket) noexcept;
+ // Signal a result has returned
+ // If a callback is already primed for notification, it will be executed via
+ // the WinSocket's Executor. Otherwise, a "pending iocp" flag will
+ // be set.
+ void SetReady();
+ // Set error results for a completed op
+ void SetError(int wsa_error);
+ // Retrieve results of overlapped operation (via Winsock API)
+ void GetOverlappedResult();
+ // OVERLAPPED, needed for Winsock API calls
+ LPOVERLAPPED overlapped() { return &overlapped_; }
+ // Data from the previous operation, set via GetOverlappedResult
+ DWORD bytes_transferred() const { return bytes_transferred_; }
+ // Previous error if set.
+ int wsa_error() const { return wsa_error_; }
+ EventEngine::Closure* closure() { return closure_; }
+
+ private:
+ friend class WinSocket;
+
+ OVERLAPPED overlapped_;
+ WinSocket* win_socket_ = nullptr;
+ EventEngine::Closure* closure_ = nullptr;
+ bool has_pending_iocp_ = false;
+ DWORD bytes_transferred_;
+ int wsa_error_;
+ };
+
+ WinSocket(SOCKET socket, Executor* executor) noexcept;
+ ~WinSocket();
+ // Calling NotifyOnRead means either of two things:
+ // - The IOCP already completed in the background, and we need to call
+ // the callback now.
+ // - The IOCP hasn't completed yet, and we're queuing it for later.
+ void NotifyOnRead(EventEngine::Closure* on_read) override;
+ void NotifyOnWrite(EventEngine::Closure* on_write) override;
+ void SetReadable() override;
+ void SetWritable() override;
+ // Schedule a shutdown of the socket operations. Will call the pending
+ // operations to abort them. We need to do that this way because of the
+ // various callsites of that function, which happens to be in various
+ // mutex hold states, and that'd be unsafe to call them directly.
+ void MaybeShutdown(y_absl::Status why) override;
+ bool IsShutdown() override;
+
+ // Return the appropriate OpState for a given OVERLAPPED
+ // Returns nullptr if the overlapped does not match either read or write ops.
+ OpState* GetOpInfoForOverlapped(OVERLAPPED* overlapped);
+ // Getters for the operation state data.
+ OpState* read_info() { return &read_info_; }
+ OpState* write_info() { return &write_info_; }
+ // Accessor method for underlying socket
+ SOCKET socket();
+
+ private:
+ void NotifyOnReady(OpState& info, EventEngine::Closure* closure);
+
+ SOCKET socket_;
+ std::atomic<bool> is_shutdown_{false};
+ Executor* executor_;
+ // These OpStates are effectively synchronized using their respective
+ // OVERLAPPED structures and the Overlapped I/O APIs. For example, OpState
+ // users should not attempt to read their bytes_transeferred until
+ // GetOverlappedResult has returned, to ensure there are no two threads
+ // reading and writing the same values concurrently.
+ //
+ // Callers must also ensure that at most one read and write operation are
+ // occurring at a time. Attempting to do multiple concurrent reads/writes will
+ // have undefined behavior.
+ OpState read_info_;
+ OpState write_info_;
+};
+
+// Attempt to configure default socket settings
+y_absl::Status PrepareSocket(SOCKET sock);
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif
+
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_WIN_SOCKET_H
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/windows/windows_engine.cc b/contrib/libs/grpc/src/core/lib/event_engine/windows/windows_engine.cc
new file mode 100644
index 0000000000..4534bb0aaf
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/windows/windows_engine.cc
@@ -0,0 +1,159 @@
+// Copyright 2022 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#include <grpc/support/port_platform.h>
+
+#ifdef GPR_WINDOWS
+
+#include <memory>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/event_engine/endpoint_config.h>
+#include <grpc/event_engine/event_engine.h>
+#include <grpc/event_engine/memory_allocator.h>
+#include <grpc/event_engine/slice_buffer.h>
+
+#include "src/core/lib/event_engine/executor/threaded_executor.h"
+#include "src/core/lib/event_engine/handle_containers.h"
+#include "src/core/lib/event_engine/posix_engine/timer_manager.h"
+#include "src/core/lib/event_engine/trace.h"
+#include "src/core/lib/event_engine/utils.h"
+#include "src/core/lib/event_engine/windows/iocp.h"
+#include "src/core/lib/event_engine/windows/windows_engine.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+// TODO(hork): The iomgr timer and execution engine can be reused. It should
+// be separated out from the posix_engine and instantiated as components. It is
+// effectively copied below.
+
+struct WindowsEventEngine::Closure final : public EventEngine::Closure {
+ y_absl::AnyInvocable<void()> cb;
+ posix_engine::Timer timer;
+ WindowsEventEngine* engine;
+ EventEngine::TaskHandle handle;
+
+ void Run() override {
+ GRPC_EVENT_ENGINE_TRACE("WindowsEventEngine:%p executing callback:%s",
+ engine, HandleToString(handle).c_str());
+ {
+ grpc_core::MutexLock lock(&engine->mu_);
+ engine->known_handles_.erase(handle);
+ }
+ cb();
+ delete this;
+ }
+};
+
+WindowsEventEngine::WindowsEventEngine() : iocp_(&executor_) {
+ WSADATA wsaData;
+ int status = WSAStartup(MAKEWORD(2, 0), &wsaData);
+ GPR_ASSERT(status == 0);
+}
+
+WindowsEventEngine::~WindowsEventEngine() {
+ grpc_core::MutexLock lock(&mu_);
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_event_engine_trace)) {
+ for (auto handle : known_handles_) {
+ gpr_log(GPR_ERROR,
+ "WindowsEventEngine:%p uncleared TaskHandle at shutdown:%s", this,
+ HandleToString(handle).c_str());
+ }
+ }
+ GPR_ASSERT(GPR_LIKELY(known_handles_.empty()));
+ GPR_ASSERT(WSACleanup() == 0);
+}
+
+bool WindowsEventEngine::Cancel(EventEngine::TaskHandle handle) {
+ grpc_core::MutexLock lock(&mu_);
+ if (!known_handles_.contains(handle)) return false;
+ auto* cd = reinterpret_cast<Closure*>(handle.keys[0]);
+ bool r = timer_manager_.TimerCancel(&cd->timer);
+ known_handles_.erase(handle);
+ if (r) delete cd;
+ return r;
+}
+
+EventEngine::TaskHandle WindowsEventEngine::RunAfter(
+ Duration when, y_absl::AnyInvocable<void()> closure) {
+ return RunAfterInternal(when, std::move(closure));
+}
+
+EventEngine::TaskHandle WindowsEventEngine::RunAfter(
+ Duration when, EventEngine::Closure* closure) {
+ return RunAfterInternal(when, [closure]() { closure->Run(); });
+}
+
+void WindowsEventEngine::Run(y_absl::AnyInvocable<void()> closure) {
+ executor_.Run(std::move(closure));
+}
+
+void WindowsEventEngine::Run(EventEngine::Closure* closure) {
+ executor_.Run(closure);
+}
+
+EventEngine::TaskHandle WindowsEventEngine::RunAfterInternal(
+ Duration when, y_absl::AnyInvocable<void()> cb) {
+ auto when_ts = ToTimestamp(timer_manager_.Now(), when);
+ auto* cd = new Closure;
+ cd->cb = std::move(cb);
+ cd->engine = this;
+ EventEngine::TaskHandle handle{reinterpret_cast<intptr_t>(cd),
+ aba_token_.fetch_add(1)};
+ grpc_core::MutexLock lock(&mu_);
+ known_handles_.insert(handle);
+ cd->handle = handle;
+ GRPC_EVENT_ENGINE_TRACE("WindowsEventEngine:%p scheduling callback:%s", this,
+ HandleToString(handle).c_str());
+ timer_manager_.TimerInit(&cd->timer, when_ts, cd);
+ return handle;
+}
+
+std::unique_ptr<EventEngine::DNSResolver> WindowsEventEngine::GetDNSResolver(
+ EventEngine::DNSResolver::ResolverOptions const& /*options*/) {
+ GPR_ASSERT(false && "unimplemented");
+}
+
+bool WindowsEventEngine::IsWorkerThread() {
+ GPR_ASSERT(false && "unimplemented");
+}
+
+bool WindowsEventEngine::CancelConnect(EventEngine::ConnectionHandle handle) {
+ GPR_ASSERT(false && "unimplemented");
+}
+
+EventEngine::ConnectionHandle WindowsEventEngine::Connect(
+ OnConnectCallback on_connect, const ResolvedAddress& addr,
+ const EndpointConfig& args, MemoryAllocator memory_allocator,
+ Duration deadline) {
+ GPR_ASSERT(false && "unimplemented");
+}
+
+y_absl::StatusOr<std::unique_ptr<EventEngine::Listener>>
+WindowsEventEngine::CreateListener(
+ Listener::AcceptCallback on_accept,
+ y_absl::AnyInvocable<void(y_absl::Status)> on_shutdown,
+ const EndpointConfig& config,
+ std::unique_ptr<MemoryAllocatorFactory> memory_allocator_factory) {
+ GPR_ASSERT(false && "unimplemented");
+}
+
+} // namespace experimental
+} // namespace grpc_event_engine
+#endif // GPR_WINDOWS
diff --git a/contrib/libs/grpc/src/core/lib/event_engine/windows/windows_engine.h b/contrib/libs/grpc/src/core/lib/event_engine/windows/windows_engine.h
new file mode 100644
index 0000000000..4a687d0099
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/event_engine/windows/windows_engine.h
@@ -0,0 +1,120 @@
+// Copyright 2022 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+#ifndef GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_WINDOWS_ENGINE_H
+#define GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_WINDOWS_ENGINE_H
+#include <grpc/support/port_platform.h>
+
+#ifdef GPR_WINDOWS
+
+#include <memory>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/event_engine/endpoint_config.h>
+#include <grpc/event_engine/event_engine.h>
+#include <grpc/event_engine/memory_allocator.h>
+#include <grpc/event_engine/slice_buffer.h>
+
+#include "src/core/lib/event_engine/executor/threaded_executor.h"
+#include "src/core/lib/event_engine/handle_containers.h"
+#include "src/core/lib/event_engine/posix_engine/timer_manager.h"
+#include "src/core/lib/event_engine/windows/iocp.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
+
+namespace grpc_event_engine {
+namespace experimental {
+
+class WindowsEventEngine : public EventEngine {
+ public:
+ class WindowsEndpoint : public EventEngine::Endpoint {
+ public:
+ ~WindowsEndpoint() override;
+ void Read(y_absl::AnyInvocable<void(y_absl::Status)> on_read,
+ SliceBuffer* buffer, const ReadArgs* args) override;
+ void Write(y_absl::AnyInvocable<void(y_absl::Status)> on_writable,
+ SliceBuffer* data, const WriteArgs* args) override;
+ const ResolvedAddress& GetPeerAddress() const override;
+ const ResolvedAddress& GetLocalAddress() const override;
+ };
+ class WindowsListener : public EventEngine::Listener {
+ public:
+ ~WindowsListener() override;
+ y_absl::StatusOr<int> Bind(const ResolvedAddress& addr) override;
+ y_absl::Status Start() override;
+ };
+ class WindowsDNSResolver : public EventEngine::DNSResolver {
+ public:
+ ~WindowsDNSResolver() override;
+ LookupTaskHandle LookupHostname(LookupHostnameCallback on_resolve,
+ y_absl::string_view name,
+ y_absl::string_view default_port,
+ Duration timeout) override;
+ LookupTaskHandle LookupSRV(LookupSRVCallback on_resolve,
+ y_absl::string_view name,
+ Duration timeout) override;
+ LookupTaskHandle LookupTXT(LookupTXTCallback on_resolve,
+ y_absl::string_view name,
+ Duration timeout) override;
+ bool CancelLookup(LookupTaskHandle handle) override;
+ };
+
+ WindowsEventEngine();
+ ~WindowsEventEngine() override;
+
+ y_absl::StatusOr<std::unique_ptr<Listener>> CreateListener(
+ Listener::AcceptCallback on_accept,
+ y_absl::AnyInvocable<void(y_absl::Status)> on_shutdown,
+ const EndpointConfig& config,
+ std::unique_ptr<MemoryAllocatorFactory> memory_allocator_factory)
+ override;
+
+ ConnectionHandle Connect(OnConnectCallback on_connect,
+ const ResolvedAddress& addr,
+ const EndpointConfig& args,
+ MemoryAllocator memory_allocator,
+ Duration timeout) override;
+
+ bool CancelConnect(ConnectionHandle handle) override;
+ bool IsWorkerThread() override;
+ std::unique_ptr<DNSResolver> GetDNSResolver(
+ const DNSResolver::ResolverOptions& options) override;
+ void Run(Closure* closure) override;
+ void Run(y_absl::AnyInvocable<void()> closure) override;
+ TaskHandle RunAfter(Duration when, Closure* closure) override;
+ TaskHandle RunAfter(Duration when,
+ y_absl::AnyInvocable<void()> closure) override;
+ bool Cancel(TaskHandle handle) override;
+
+ private:
+ struct Closure;
+ EventEngine::TaskHandle RunAfterInternal(Duration when,
+ y_absl::AnyInvocable<void()> cb);
+ grpc_core::Mutex mu_;
+ TaskHandleSet known_handles_ Y_ABSL_GUARDED_BY(mu_);
+ std::atomic<intptr_t> aba_token_{0};
+
+ posix_engine::TimerManager timer_manager_;
+ ThreadedExecutor executor_{2};
+ IOCP iocp_;
+};
+
+} // namespace experimental
+} // namespace grpc_event_engine
+
+#endif
+
+#endif // GRPC_CORE_LIB_EVENT_ENGINE_WINDOWS_WINDOWS_ENGINE_H
diff --git a/contrib/libs/grpc/src/core/lib/experiments/config.cc b/contrib/libs/grpc/src/core/lib/experiments/config.cc
new file mode 100644
index 0000000000..9008c8a7ce
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/experiments/config.cc
@@ -0,0 +1,147 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/experiments/config.h"
+
+#include <string.h>
+
+#include <algorithm>
+#include <atomic>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/strings/ascii.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_split.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/support/log.h>
+
+#include "src/core/lib/experiments/experiments.h"
+#include "src/core/lib/gprpp/global_config.h"
+#include "src/core/lib/gprpp/no_destruct.h"
+
+GPR_GLOBAL_CONFIG_DEFINE_STRING(
+ grpc_experiments, "",
+ "List of grpc experiments to enable (or with a '-' prefix to disable).");
+
+namespace grpc_core {
+
+namespace {
+struct Experiments {
+ bool enabled[kNumExperiments];
+};
+
+struct ForcedExperiment {
+ bool forced = false;
+ bool value;
+};
+ForcedExperiment g_forced_experiments[kNumExperiments];
+
+std::atomic<bool> g_loaded;
+
+GPR_ATTRIBUTE_NOINLINE Experiments LoadExperimentsFromConfigVariable() {
+ GPR_ASSERT(g_loaded.exchange(true, std::memory_order_relaxed) == false);
+ // Set defaults from metadata.
+ Experiments experiments;
+ for (size_t i = 0; i < kNumExperiments; i++) {
+ experiments.enabled[i] = g_experiment_metadata[i].default_value;
+ }
+ // Get the global config.
+ auto experiments_str = GPR_GLOBAL_CONFIG_GET(grpc_experiments);
+ // For each comma-separated experiment in the global config:
+ for (auto experiment :
+ y_absl::StrSplit(y_absl::string_view(experiments_str.get()), ',')) {
+ // Strip whitespace.
+ experiment = y_absl::StripAsciiWhitespace(experiment);
+ // Handle ",," without crashing.
+ if (experiment.empty()) continue;
+ // Enable unless prefixed with '-' (=> disable).
+ bool enable = true;
+ if (experiment[0] == '-') {
+ enable = false;
+ experiment.remove_prefix(1);
+ }
+ // See if we can find the experiment in the list in this binary.
+ bool found = false;
+ for (size_t i = 0; i < kNumExperiments; i++) {
+ if (experiment == g_experiment_metadata[i].name) {
+ experiments.enabled[i] = enable;
+ found = true;
+ break;
+ }
+ }
+ // If not found log an error, but don't take any other action.
+ // Allows us an easy path to disabling experiments.
+ if (!found) {
+ gpr_log(GPR_ERROR, "Unknown experiment: %s",
+ TString(experiment).c_str());
+ }
+ }
+ return experiments;
+}
+} // namespace
+
+bool IsExperimentEnabled(size_t experiment_id) {
+ // One time initialization:
+ static const NoDestruct<Experiments> experiments{
+ LoadExperimentsFromConfigVariable()};
+ // Normal path: just return the value;
+ return experiments->enabled[experiment_id];
+}
+
+void PrintExperimentsList() {
+ size_t max_experiment_length = 0;
+ for (size_t i = 0; i < kNumExperiments; i++) {
+ max_experiment_length =
+ std::max(max_experiment_length, strlen(g_experiment_metadata[i].name));
+ }
+ for (size_t i = 0; i < kNumExperiments; i++) {
+ gpr_log(GPR_DEBUG, "%s",
+ y_absl::StrCat(
+ "gRPC EXPERIMENT ", g_experiment_metadata[i].name,
+ TString(max_experiment_length -
+ strlen(g_experiment_metadata[i].name) + 1,
+ ' '),
+ IsExperimentEnabled(i) ? "ON " : "OFF", " (default:",
+ g_experiment_metadata[i].default_value ? "ON" : "OFF",
+ g_forced_experiments[i].forced
+ ? y_absl::StrCat(" force:",
+ g_forced_experiments[i].value ? "ON" : "OFF")
+ : TString(),
+ ")")
+ .c_str());
+ }
+}
+
+void ForceEnableExperiment(y_absl::string_view experiment, bool enable) {
+ GPR_ASSERT(g_loaded.load(std::memory_order_relaxed) == false);
+ for (size_t i = 0; i < kNumExperiments; i++) {
+ if (g_experiment_metadata[i].name != experiment) continue;
+ if (g_forced_experiments[i].forced) {
+ GPR_ASSERT(g_forced_experiments[i].value == enable);
+ } else {
+ g_forced_experiments[i].forced = true;
+ g_forced_experiments[i].value = enable;
+ }
+ return;
+ }
+ gpr_log(GPR_INFO, "gRPC EXPERIMENT %s not found to force %s",
+ TString(experiment).c_str(), enable ? "enable" : "disable");
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/experiments/config.h b/contrib/libs/grpc/src/core/lib/experiments/config.h
new file mode 100644
index 0000000000..58a2a81526
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/experiments/config.h
@@ -0,0 +1,43 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_EXPERIMENTS_CONFIG_H
+#define GRPC_CORE_LIB_EXPERIMENTS_CONFIG_H
+
+#include <grpc/support/port_platform.h>
+
+#include <stddef.h>
+
+#include "y_absl/strings/string_view.h"
+
+namespace grpc_core {
+
+// Return true if experiment \a experiment_id is enabled.
+// Experiments are numbered by their order in the g_experiment_metadata array
+// declared in experiments.h.
+bool IsExperimentEnabled(size_t experiment_id);
+
+// Print out a list of all experiments that are built into this binary.
+void PrintExperimentsList();
+
+// Force an experiment to be on or off.
+// Must be called before experiments are configured (the first
+// IsExperimentEnabled call).
+// If the experiment does not exist, emits a warning but continues execution.
+// If this is called twice for the same experiment, both calls must agree.
+void ForceEnableExperiment(y_absl::string_view experiment_name, bool enable);
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_EXPERIMENTS_CONFIG_H
diff --git a/contrib/libs/grpc/src/core/lib/experiments/experiments.cc b/contrib/libs/grpc/src/core/lib/experiments/experiments.cc
new file mode 100644
index 0000000000..2e096ccc0b
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/experiments/experiments.cc
@@ -0,0 +1,75 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Automatically generated by tools/codegen/core/gen_experiments.py
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/experiments/experiments.h"
+
+namespace {
+const char* const description_tcp_frame_size_tuning =
+ "If set, enables TCP to use RPC size estimation made by higher layers. TCP "
+ "would not indicate completion of a read operation until a specified "
+ "number of bytes have been read over the socket. Buffers are also "
+ "allocated according to estimated RPC sizes.";
+const char* const description_tcp_read_chunks =
+ "Allocate only 8kb or 64kb chunks for TCP reads to reduce pressure on "
+ "malloc to recycle arbitrary large blocks.";
+const char* const description_tcp_rcv_lowat =
+ "Use SO_RCVLOWAT to avoid wakeups on the read path.";
+const char* const description_peer_state_based_framing =
+ "If set, the max sizes of frames sent to lower layers is controlled based "
+ "on the peer's memory pressure which is reflected in its max http2 frame "
+ "size.";
+const char* const description_flow_control_fixes =
+ "Various fixes for flow control, max frame size setting.";
+const char* const description_memory_pressure_controller =
+ "New memory pressure controller";
+const char* const description_periodic_resource_quota_reclamation =
+ "Periodically return memory to the resource quota";
+const char* const description_unconstrained_max_quota_buffer_size =
+ "Discard the cap on the max free pool size for one memory allocator";
+const char* const description_new_hpack_huffman_decoder =
+ "New HPACK huffman decoder - should be much faster than the existing "
+ "implementation.";
+const char* const description_event_engine_client =
+ "Use EventEngine clients instead of iomgr's grpc_tcp_client";
+#ifdef NDEBUG
+const bool kDefaultForDebugOnly = false;
+#else
+const bool kDefaultForDebugOnly = true;
+#endif
+} // namespace
+
+namespace grpc_core {
+
+const ExperimentMetadata g_experiment_metadata[] = {
+ {"tcp_frame_size_tuning", description_tcp_frame_size_tuning, false},
+ {"tcp_read_chunks", description_tcp_read_chunks, false},
+ {"tcp_rcv_lowat", description_tcp_rcv_lowat, false},
+ {"peer_state_based_framing", description_peer_state_based_framing, false},
+ {"flow_control_fixes", description_flow_control_fixes, false},
+ {"memory_pressure_controller", description_memory_pressure_controller,
+ false},
+ {"periodic_resource_quota_reclamation",
+ description_periodic_resource_quota_reclamation, false},
+ {"unconstrained_max_quota_buffer_size",
+ description_unconstrained_max_quota_buffer_size, false},
+ {"new_hpack_huffman_decoder", description_new_hpack_huffman_decoder,
+ kDefaultForDebugOnly},
+ {"event_engine_client", description_event_engine_client, false},
+};
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/experiments/experiments.h b/contrib/libs/grpc/src/core/lib/experiments/experiments.h
new file mode 100644
index 0000000000..1b14dbcaec
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/experiments/experiments.h
@@ -0,0 +1,56 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Automatically generated by tools/codegen/core/gen_experiments.py
+
+#ifndef GRPC_CORE_LIB_EXPERIMENTS_EXPERIMENTS_H
+#define GRPC_CORE_LIB_EXPERIMENTS_EXPERIMENTS_H
+
+#include <grpc/support/port_platform.h>
+
+#include <stddef.h>
+
+#include "src/core/lib/experiments/config.h"
+
+namespace grpc_core {
+
+inline bool IsTcpFrameSizeTuningEnabled() { return IsExperimentEnabled(0); }
+inline bool IsTcpReadChunksEnabled() { return IsExperimentEnabled(1); }
+inline bool IsTcpRcvLowatEnabled() { return IsExperimentEnabled(2); }
+inline bool IsPeerStateBasedFramingEnabled() { return IsExperimentEnabled(3); }
+inline bool IsFlowControlFixesEnabled() { return IsExperimentEnabled(4); }
+inline bool IsMemoryPressureControllerEnabled() {
+ return IsExperimentEnabled(5);
+}
+inline bool IsPeriodicResourceQuotaReclamationEnabled() {
+ return IsExperimentEnabled(6);
+}
+inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() {
+ return IsExperimentEnabled(7);
+}
+inline bool IsNewHpackHuffmanDecoderEnabled() { return IsExperimentEnabled(8); }
+inline bool IsEventEngineClientEnabled() { return IsExperimentEnabled(9); }
+
+struct ExperimentMetadata {
+ const char* name;
+ const char* description;
+ bool default_value;
+};
+
+constexpr const size_t kNumExperiments = 10;
+extern const ExperimentMetadata g_experiment_metadata[kNumExperiments];
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_EXPERIMENTS_EXPERIMENTS_H
diff --git a/contrib/libs/grpc/src/core/lib/gpr/alloc.cc b/contrib/libs/grpc/src/core/lib/gpr/alloc.cc
index 9a46ff85fe..4537fb91dd 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/alloc.cc
+++ b/contrib/libs/grpc/src/core/lib/gpr/alloc.cc
@@ -24,10 +24,7 @@
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include "src/core/lib/profiling/timers.h"
-
void* gpr_malloc(size_t size) {
- GPR_TIMER_SCOPE("gpr_malloc", 0);
void* p;
if (size == 0) return nullptr;
p = malloc(size);
@@ -38,7 +35,6 @@ void* gpr_malloc(size_t size) {
}
void* gpr_zalloc(size_t size) {
- GPR_TIMER_SCOPE("gpr_zalloc", 0);
void* p;
if (size == 0) return nullptr;
p = calloc(size, 1);
@@ -48,13 +44,9 @@ void* gpr_zalloc(size_t size) {
return p;
}
-void gpr_free(void* p) {
- GPR_TIMER_SCOPE("gpr_free", 0);
- free(p);
-}
+void gpr_free(void* p) { free(p); }
void* gpr_realloc(void* p, size_t size) {
- GPR_TIMER_SCOPE("gpr_realloc", 0);
if ((size == 0) && (p == nullptr)) return nullptr;
p = realloc(p, size);
if (!p) {
diff --git a/contrib/libs/grpc/src/core/lib/gpr/env_windows.cc b/contrib/libs/grpc/src/core/lib/gpr/env_windows.cc
deleted file mode 100644
index 76c45fb87a..0000000000
--- a/contrib/libs/grpc/src/core/lib/gpr/env_windows.cc
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *
- * Copyright 2015 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/support/port_platform.h>
-
-#ifdef GPR_WINDOWS_ENV
-
-#include <windows.h>
-
-#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
-
-#include "src/core/lib/gpr/env.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gpr/string_windows.h"
-
-char* gpr_getenv(const char* name) {
- char* result = NULL;
- DWORD size;
- LPTSTR tresult = NULL;
- LPTSTR tname = gpr_char_to_tchar(name);
- DWORD ret;
-
- ret = GetEnvironmentVariable(tname, NULL, 0);
- if (ret == 0) {
- gpr_free(tname);
- return NULL;
- }
- size = ret * (DWORD)sizeof(TCHAR);
- tresult = (LPTSTR)gpr_malloc(size);
- ret = GetEnvironmentVariable(tname, tresult, size);
- gpr_free(tname);
- if (ret == 0) {
- gpr_free(tresult);
- return NULL;
- }
- result = gpr_tchar_to_char(tresult);
- gpr_free(tresult);
- return result;
-}
-
-void gpr_setenv(const char* name, const char* value) {
- LPTSTR tname = gpr_char_to_tchar(name);
- LPTSTR tvalue = gpr_char_to_tchar(value);
- BOOL res = SetEnvironmentVariable(tname, tvalue);
- gpr_free(tname);
- gpr_free(tvalue);
- GPR_ASSERT(res);
-}
-
-void gpr_unsetenv(const char* name) {
- LPTSTR tname = gpr_char_to_tchar(name);
- BOOL res = SetEnvironmentVariable(tname, NULL);
- gpr_free(tname);
- GPR_ASSERT(res);
-}
-
-#endif /* GPR_WINDOWS_ENV */
diff --git a/contrib/libs/grpc/src/core/lib/gpr/log.cc b/contrib/libs/grpc/src/core/lib/gpr/log.cc
index d18f52b432..71de49f7a5 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/log.cc
+++ b/contrib/libs/grpc/src/core/lib/gpr/log.cc
@@ -47,6 +47,11 @@ static gpr_atm g_log_func = reinterpret_cast<gpr_atm>(gpr_default_log);
static gpr_atm g_min_severity_to_print = GPR_LOG_SEVERITY_UNSET;
static gpr_atm g_min_severity_to_print_stacktrace = GPR_LOG_SEVERITY_UNSET;
+void gpr_unreachable_code(const char* reason, const char* file, int line) {
+ gpr_log(file, line, GPR_LOG_SEVERITY_ERROR, "UNREACHABLE CODE: %s", reason);
+ abort();
+}
+
const char* gpr_log_severity_string(gpr_log_severity severity) {
switch (severity) {
case GPR_LOG_SEVERITY_DEBUG:
diff --git a/contrib/libs/grpc/src/core/lib/gpr/log_windows.cc b/contrib/libs/grpc/src/core/lib/gpr/log_windows.cc
index ea7c43f19b..3ed10489c6 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/log_windows.cc
+++ b/contrib/libs/grpc/src/core/lib/gpr/log_windows.cc
@@ -30,7 +30,6 @@
#include <grpc/support/time.h>
#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gpr/string_windows.h"
#include "src/core/lib/gprpp/examine_stack.h"
int gpr_should_log_stacktrace(gpr_log_severity severity);
diff --git a/contrib/libs/grpc/src/core/lib/gpr/string_util_windows.cc b/contrib/libs/grpc/src/core/lib/gpr/string_util_windows.cc
index 8c8c99cd21..9be48c94d0 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/string_util_windows.cc
+++ b/contrib/libs/grpc/src/core/lib/gpr/string_util_windows.cc
@@ -37,46 +37,19 @@
#include <grpc/support/string_util.h>
#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gpr/string_windows.h"
-
-#if defined UNICODE || defined _UNICODE
-LPTSTR
-gpr_char_to_tchar(LPCSTR input) {
- LPTSTR ret;
- int needed = MultiByteToWideChar(CP_UTF8, 0, input, -1, NULL, 0);
- if (needed <= 0) return NULL;
- ret = (LPTSTR)gpr_malloc((unsigned)needed * sizeof(TCHAR));
- MultiByteToWideChar(CP_UTF8, 0, input, -1, ret, needed);
- return ret;
-}
-
-LPSTR
-gpr_tchar_to_char(LPCTSTR input) {
- LPSTR ret;
- int needed = WideCharToMultiByte(CP_UTF8, 0, input, -1, NULL, 0, NULL, NULL);
- if (needed <= 0) return NULL;
- ret = (LPSTR)gpr_malloc((unsigned)needed);
- WideCharToMultiByte(CP_UTF8, 0, input, -1, ret, needed, NULL, NULL);
- return ret;
-}
-#else
-LPSTR gpr_tchar_to_char(LPCTSTR input) { return (LPSTR)gpr_strdup(input); }
-
-LPTSTR gpr_char_to_tchar(LPCTSTR input) { return (LPTSTR)gpr_strdup(input); }
-#endif
+#include "src/core/lib/gprpp/tchar.h"
char* gpr_format_message(int messageid) {
LPTSTR tmessage;
- char* message;
DWORD status = FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, (DWORD)messageid, MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
(LPTSTR)(&tmessage), 0, NULL);
if (status == 0) return gpr_strdup("Unable to retrieve error string");
- message = gpr_tchar_to_char(tmessage);
+ auto message = grpc_core::TcharToChar(tmessage);
LocalFree(tmessage);
- return message;
+ return gpr_strdup(message.c_str());
}
#endif /* GPR_WINDOWS */
diff --git a/contrib/libs/grpc/src/core/lib/gpr/sync_abseil.cc b/contrib/libs/grpc/src/core/lib/gpr/sync_abseil.cc
index 03854947b9..3cc9fa541c 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/sync_abseil.cc
+++ b/contrib/libs/grpc/src/core/lib/gpr/sync_abseil.cc
@@ -33,14 +33,6 @@
#include <grpc/support/sync.h>
#include <grpc/support/time.h>
-#include "src/core/lib/profiling/timers.h"
-
-#ifdef GPR_LOW_LEVEL_COUNTERS
-gpr_atm gpr_mu_locks = 0;
-gpr_atm gpr_counter_atm_cas = 0;
-gpr_atm gpr_counter_atm_add = 0;
-#endif
-
void gpr_mu_init(gpr_mu* mu) {
static_assert(sizeof(gpr_mu) == sizeof(y_absl::Mutex),
"gpr_mu and Mutex must be the same size");
@@ -52,17 +44,14 @@ void gpr_mu_destroy(gpr_mu* mu) {
}
void gpr_mu_lock(gpr_mu* mu) Y_ABSL_NO_THREAD_SAFETY_ANALYSIS {
- GPR_TIMER_SCOPE("gpr_mu_lock", 0);
reinterpret_cast<y_absl::Mutex*>(mu)->Lock();
}
void gpr_mu_unlock(gpr_mu* mu) Y_ABSL_NO_THREAD_SAFETY_ANALYSIS {
- GPR_TIMER_SCOPE("gpr_mu_unlock", 0);
reinterpret_cast<y_absl::Mutex*>(mu)->Unlock();
}
int gpr_mu_trylock(gpr_mu* mu) {
- GPR_TIMER_SCOPE("gpr_mu_trylock", 0);
return reinterpret_cast<y_absl::Mutex*>(mu)->TryLock();
}
@@ -79,7 +68,6 @@ void gpr_cv_destroy(gpr_cv* cv) {
}
int gpr_cv_wait(gpr_cv* cv, gpr_mu* mu, gpr_timespec abs_deadline) {
- GPR_TIMER_SCOPE("gpr_cv_wait", 0);
if (gpr_time_cmp(abs_deadline, gpr_inf_future(abs_deadline.clock_type)) ==
0) {
reinterpret_cast<y_absl::CondVar*>(cv)->Wait(
@@ -94,12 +82,10 @@ int gpr_cv_wait(gpr_cv* cv, gpr_mu* mu, gpr_timespec abs_deadline) {
}
void gpr_cv_signal(gpr_cv* cv) {
- GPR_TIMER_MARK("gpr_cv_signal", 0);
reinterpret_cast<y_absl::CondVar*>(cv)->Signal();
}
void gpr_cv_broadcast(gpr_cv* cv) {
- GPR_TIMER_MARK("gpr_cv_broadcast", 0);
reinterpret_cast<y_absl::CondVar*>(cv)->SignalAll();
}
diff --git a/contrib/libs/grpc/src/core/lib/gpr/sync_posix.cc b/contrib/libs/grpc/src/core/lib/gpr/sync_posix.cc
index 21926352a7..978596058d 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/sync_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/gpr/sync_posix.cc
@@ -29,14 +29,6 @@
#include <grpc/support/sync.h>
#include <grpc/support/time.h>
-#include "src/core/lib/profiling/timers.h"
-
-#ifdef GPR_LOW_LEVEL_COUNTERS
-gpr_atm gpr_mu_locks = 0;
-gpr_atm gpr_counter_atm_cas = 0;
-gpr_atm gpr_counter_atm_add = 0;
-#endif
-
void gpr_mu_init(gpr_mu* mu) {
#ifdef GRPC_ASAN_ENABLED
GPR_ASSERT(pthread_mutex_init(&mu->mutex, nullptr) == 0);
@@ -57,10 +49,6 @@ void gpr_mu_destroy(gpr_mu* mu) {
}
void gpr_mu_lock(gpr_mu* mu) {
-#ifdef GPR_LOW_LEVEL_COUNTERS
- GPR_ATM_INC_COUNTER(gpr_mu_locks);
-#endif
- GPR_TIMER_SCOPE("gpr_mu_lock", 0);
#ifdef GRPC_ASAN_ENABLED
GPR_ASSERT(pthread_mutex_lock(&mu->mutex) == 0);
#else
@@ -69,7 +57,6 @@ void gpr_mu_lock(gpr_mu* mu) {
}
void gpr_mu_unlock(gpr_mu* mu) {
- GPR_TIMER_SCOPE("gpr_mu_unlock", 0);
#ifdef GRPC_ASAN_ENABLED
GPR_ASSERT(pthread_mutex_unlock(&mu->mutex) == 0);
#else
@@ -78,7 +65,6 @@ void gpr_mu_unlock(gpr_mu* mu) {
}
int gpr_mu_trylock(gpr_mu* mu) {
- GPR_TIMER_SCOPE("gpr_mu_trylock", 0);
int err = 0;
#ifdef GRPC_ASAN_ENABLED
err = pthread_mutex_trylock(&mu->mutex);
diff --git a/contrib/libs/grpc/src/core/lib/gpr/time.cc b/contrib/libs/grpc/src/core/lib/gpr/time.cc
index 630e987237..222a25bbef 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/time.cc
+++ b/contrib/libs/grpc/src/core/lib/gpr/time.cc
@@ -77,16 +77,18 @@ static gpr_timespec to_seconds_from_sub_second_time(int64_t time_in_units,
} else if (time_in_units == INT64_MIN) {
out = gpr_inf_past(type);
} else {
- if (time_in_units >= 0) {
- out.tv_sec = time_in_units / units_per_sec;
- } else {
- out.tv_sec = (-((units_per_sec - 1) - (time_in_units + units_per_sec)) /
- units_per_sec) -
- 1;
- }
+ GPR_DEBUG_ASSERT(GPR_NS_PER_SEC % units_per_sec == 0);
+
+ out.tv_sec = time_in_units / units_per_sec;
out.tv_nsec =
- static_cast<int32_t>((time_in_units - out.tv_sec * units_per_sec) *
- GPR_NS_PER_SEC / units_per_sec);
+ static_cast<int32_t>((time_in_units - (out.tv_sec * units_per_sec)) *
+ (GPR_NS_PER_SEC / units_per_sec));
+ /// `out.tv_nsec` should always be positive.
+ if (out.tv_nsec < 0) {
+ out.tv_nsec += GPR_NS_PER_SEC;
+ out.tv_sec--;
+ }
+
out.clock_type = type;
}
return out;
diff --git a/contrib/libs/grpc/src/core/lib/gpr/time_posix.cc b/contrib/libs/grpc/src/core/lib/gpr/time_posix.cc
index 0a9e1158b3..260d32721e 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/time_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/gpr/time_posix.cc
@@ -88,17 +88,14 @@ static gpr_timespec now_impl(gpr_clock_type clock_type) {
#include <mach/mach_time.h>
#include <sys/time.h>
-static double g_time_scale;
-static uint64_t g_time_start;
-
-void gpr_time_init(void) {
+static double g_time_scale = []() {
mach_timebase_info_data_t tb = {0, 1};
- gpr_precise_clock_init();
mach_timebase_info(&tb);
- g_time_scale = tb.numer;
- g_time_scale /= tb.denom;
- g_time_start = mach_absolute_time();
-}
+ return static_cast<double>(tb.numer) / static_cast<double>(tb.denom);
+}();
+static uint64_t g_time_start = mach_absolute_time();
+
+void gpr_time_init(void) { gpr_precise_clock_init(); }
static gpr_timespec now_impl(gpr_clock_type clock) {
gpr_timespec now;
@@ -143,13 +140,7 @@ static gpr_timespec now_impl(gpr_clock_type clock) {
gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type) = now_impl;
-#ifdef GPR_LOW_LEVEL_COUNTERS
-gpr_atm gpr_now_call_count;
-#endif
gpr_timespec gpr_now(gpr_clock_type clock_type) {
-#ifdef GPR_LOW_LEVEL_COUNTERS
- __atomic_fetch_add(&gpr_now_call_count, 1, __ATOMIC_RELAXED);
-#endif
// validate clock type
GPR_ASSERT(clock_type == GPR_CLOCK_MONOTONIC ||
clock_type == GPR_CLOCK_REALTIME ||
diff --git a/contrib/libs/grpc/src/core/lib/gpr/time_precise.h b/contrib/libs/grpc/src/core/lib/gpr/time_precise.h
index 1dcfa3b57e..a41047afb0 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/time_precise.h
+++ b/contrib/libs/grpc/src/core/lib/gpr/time_precise.h
@@ -28,7 +28,7 @@
// low as a usec. Use other clock sources or gpr_precise_clock_now(),
// where you need high resolution clocks.
//
-// Using gpr_get_cycle_counter() is preferred to using ExecCtx::Get()->Now()
+// Using gpr_get_cycle_counter() is preferred to using Timestamp::Now()
// whenever possible.
#if GPR_CYCLE_COUNTER_CUSTOM
diff --git a/contrib/libs/grpc/src/core/lib/gpr/time_windows.cc b/contrib/libs/grpc/src/core/lib/gpr/time_windows.cc
index 39bca1b094..57323fb8a0 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/time_windows.cc
+++ b/contrib/libs/grpc/src/core/lib/gpr/time_windows.cc
@@ -31,15 +31,18 @@
#include "src/core/lib/gpr/time_precise.h"
-static LARGE_INTEGER g_start_time;
-static double g_time_scale;
-
-void gpr_time_init(void) {
+static LARGE_INTEGER g_start_time = []() {
+ LARGE_INTEGER x;
+ QueryPerformanceCounter(&x);
+ return x;
+}();
+static double g_time_scale = []() {
LARGE_INTEGER frequency;
QueryPerformanceFrequency(&frequency);
- QueryPerformanceCounter(&g_start_time);
- g_time_scale = 1.0 / (double)frequency.QuadPart;
-}
+ return 1.0 / (double)frequency.QuadPart;
+}();
+
+void gpr_time_init(void) {}
static gpr_timespec now_impl(gpr_clock_type clock) {
gpr_timespec now_tv;
diff --git a/contrib/libs/grpc/src/core/lib/gpr/tls.h b/contrib/libs/grpc/src/core/lib/gpr/tls.h
index 9c2349e597..2a85565c37 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/tls.h
+++ b/contrib/libs/grpc/src/core/lib/gpr/tls.h
@@ -50,11 +50,10 @@ class TlsTypeConstrainer {
#include <pthread.h>
+#include <algorithm>
#include <array>
#include <cstring>
-#include <grpc/support/log.h> /* for GPR_ASSERT */
-
namespace grpc_core {
template <typename T>
@@ -94,14 +93,14 @@ class PthreadTlsImpl : TlsTypeConstrainer<T> {
typename std::remove_const<decltype(PthreadTlsImpl::keys_)>::type
keys;
for (pthread_key_t& key : keys) {
- GPR_ASSERT(0 == pthread_key_create(&key, nullptr));
+ if (0 != pthread_key_create(&key, nullptr)) abort();
}
return keys;
}()) {}
PthreadTlsImpl(T t) : PthreadTlsImpl() { *this = t; }
~PthreadTlsImpl() {
for (pthread_key_t key : keys_) {
- GPR_ASSERT(0 == pthread_key_delete(key));
+ if (0 != pthread_key_delete(key)) abort();
}
}
@@ -131,7 +130,7 @@ class PthreadTlsImpl : TlsTypeConstrainer<T> {
size_t remaining = reinterpret_cast<char*>(&t + 1) - src;
size_t step = std::min(sizeof(dst), remaining);
memcpy(&dst, src, step);
- GPR_ASSERT(0 == pthread_setspecific(key, reinterpret_cast<void*>(dst)));
+ if (0 != pthread_setspecific(key, reinterpret_cast<void*>(dst))) abort();
src += step;
}
return t;
diff --git a/contrib/libs/grpc/src/core/lib/gpr/tmpfile_msys.cc b/contrib/libs/grpc/src/core/lib/gpr/tmpfile_msys.cc
index 76cd886f3a..61017a30bc 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/tmpfile_msys.cc
+++ b/contrib/libs/grpc/src/core/lib/gpr/tmpfile_msys.cc
@@ -29,7 +29,7 @@
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
-#include "src/core/lib/gpr/string_windows.h"
+#error #include "src/core/lib/gpr/string_windows.h"
#include "src/core/lib/gpr/tmpfile.h"
FILE* gpr_tmpfile(const char* prefix, char** tmp_filename_out) {
diff --git a/contrib/libs/grpc/src/core/lib/gpr/tmpfile_windows.cc b/contrib/libs/grpc/src/core/lib/gpr/tmpfile_windows.cc
index d486808418..abb051a9d3 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/tmpfile_windows.cc
+++ b/contrib/libs/grpc/src/core/lib/gpr/tmpfile_windows.cc
@@ -29,12 +29,11 @@
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
-#include "src/core/lib/gpr/string_windows.h"
#include "src/core/lib/gpr/tmpfile.h"
+#include "src/core/lib/gprpp/tchar.h"
FILE* gpr_tmpfile(const char* prefix, char** tmp_filename_out) {
FILE* result = NULL;
- LPTSTR template_string = NULL;
TCHAR tmp_path[MAX_PATH];
TCHAR tmp_filename[MAX_PATH];
DWORD status;
@@ -43,15 +42,14 @@ FILE* gpr_tmpfile(const char* prefix, char** tmp_filename_out) {
if (tmp_filename_out != NULL) *tmp_filename_out = NULL;
/* Convert our prefix to TCHAR. */
- template_string = gpr_char_to_tchar(prefix);
- GPR_ASSERT(template_string);
+ grpc_core::TcharString template_string = grpc_core::CharToTchar(prefix);
/* Get the path to the best temporary folder available. */
status = GetTempPath(MAX_PATH, tmp_path);
if (status == 0 || status > MAX_PATH) goto end;
/* Generate a unique filename with our template + temporary path. */
- success = GetTempFileName(tmp_path, template_string, 0, tmp_filename);
+ success = GetTempFileName(tmp_path, template_string.c_str(), 0, tmp_filename);
if (!success) goto end;
/* Open a file there. */
@@ -59,10 +57,10 @@ FILE* gpr_tmpfile(const char* prefix, char** tmp_filename_out) {
end:
if (result && tmp_filename_out) {
- *tmp_filename_out = gpr_tchar_to_char(tmp_filename);
+ *tmp_filename_out =
+ gpr_strdup(grpc_core::TcharToChar(tmp_filename).c_str());
}
- gpr_free(template_string);
return result;
}
diff --git a/contrib/libs/grpc/src/core/lib/gpr/useful.h b/contrib/libs/grpc/src/core/lib/gpr/useful.h
index dcd457bcaf..3cb6ce4671 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/useful.h
+++ b/contrib/libs/grpc/src/core/lib/gpr/useful.h
@@ -23,6 +23,9 @@
#include <cstddef>
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/variant.h"
+
/** useful utilities that don't belong anywhere else */
namespace grpc_core {
@@ -98,6 +101,32 @@ int QsortCompare(const T& a, const T& b) {
return 0;
}
+template <typename... X>
+int QsortCompare(const y_absl::variant<X...>& a, const y_absl::variant<X...>& b) {
+ const int index = QsortCompare(a.index(), b.index());
+ if (index != 0) return index;
+ return y_absl::visit(
+ [&](const auto& x) {
+ return QsortCompare(x, y_absl::get<y_absl::remove_cvref_t<decltype(x)>>(b));
+ },
+ a);
+}
+
+inline int QsortCompare(y_absl::string_view a, y_absl::string_view b) {
+ return a.compare(b);
+}
+
+inline int QsortCompare(const TString& a, const TString& b) {
+ return a.compare(b);
+}
+
+template <typename A, typename B>
+int QsortCompare(const std::pair<A, B>& a, const std::pair<A, B>& b) {
+ const int first = QsortCompare(a.first, b.first);
+ if (first != 0) return first;
+ return QsortCompare(a.second, b.second);
+}
+
template <typename T>
constexpr size_t HashPointer(T* p, size_t range) {
return (((reinterpret_cast<size_t>(p)) >> 4) ^
@@ -124,6 +153,17 @@ inline uint32_t MixHash32(uint32_t a, uint32_t b) {
return RotateLeft(a, 2u) ^ b;
}
+inline uint32_t RoundUpToPowerOf2(uint32_t v) {
+ v--;
+ v |= v >> 1;
+ v |= v >> 2;
+ v |= v >> 4;
+ v |= v >> 8;
+ v |= v >> 16;
+ v++;
+ return v;
+}
+
} // namespace grpc_core
#define GPR_ARRAY_SIZE(array) (sizeof(array) / sizeof(*(array)))
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/bitset.h b/contrib/libs/grpc/src/core/lib/gprpp/bitset.h
index dded433d08..cb25a44635 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/bitset.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/bitset.h
@@ -17,15 +17,12 @@
#include <grpc/support/port_platform.h>
-#include <utility>
+#include <stddef.h>
+#include <stdint.h>
-#include "src/core/lib/gpr/useful.h"
+#include <type_traits>
-#if __cplusplus > 201103l
-#define GRPC_BITSET_CONSTEXPR_MUTATOR constexpr
-#else
-#define GRPC_BITSET_CONSTEXPR_MUTATOR
-#endif
+#include "src/core/lib/gpr/useful.h"
namespace grpc_core {
@@ -33,6 +30,7 @@ namespace grpc_core {
// exactly that number of bits. Undefined if that bit count is not available.
template <size_t kBits>
struct UintSelector;
+
template <>
struct UintSelector<8> {
typedef uint8_t Type;
@@ -86,12 +84,10 @@ class BitSet {
constexpr BitSet() : units_{} {}
// Set bit i to true
- GRPC_BITSET_CONSTEXPR_MUTATOR void set(int i) {
- units_[unit_for(i)] |= mask_for(i);
- }
+ constexpr void set(int i) { units_[unit_for(i)] |= mask_for(i); }
// Set bit i to is_set
- GRPC_BITSET_CONSTEXPR_MUTATOR void set(int i, bool is_set) {
+ constexpr void set(int i, bool is_set) {
if (is_set) {
set(i);
} else {
@@ -100,9 +96,7 @@ class BitSet {
}
// Set bit i to false
- GRPC_BITSET_CONSTEXPR_MUTATOR void clear(int i) {
- units_[unit_for(i)] &= ~mask_for(i);
- }
+ constexpr void clear(int i) { units_[unit_for(i)] &= ~mask_for(i); }
// Return true if bit i is set
constexpr bool is_set(int i) const {
@@ -153,6 +147,18 @@ class BitSet {
return true;
}
+ template <typename Int>
+ typename std::enable_if<std::is_unsigned<Int>::value &&
+ (sizeof(Int) * 8 >= kTotalBits),
+ Int>::type
+ ToInt() const {
+ Int result = 0;
+ for (size_t i = 0; i < kTotalBits; i++) {
+ if (is_set(i)) result |= (Int(1) << i);
+ }
+ return result;
+ }
+
private:
// Given a bit index, return which unit it's stored in.
static constexpr size_t unit_for(size_t bit) { return bit / kUnitBits; }
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/capture.h b/contrib/libs/grpc/src/core/lib/gprpp/capture.h
deleted file mode 100644
index 07949fd1c9..0000000000
--- a/contrib/libs/grpc/src/core/lib/gprpp/capture.h
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2021 gRPC authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef GRPC_CORE_LIB_GPRPP_CAPTURE_H
-#define GRPC_CORE_LIB_GPRPP_CAPTURE_H
-
-#include <grpc/support/port_platform.h>
-
-#include <tuple>
-#include <utility>
-
-#include "y_absl/utility/utility.h"
-
-namespace grpc_core {
-
-namespace detail {
-
-template <typename F, typename... Captures>
-class Capture {
- public:
- explicit Capture(F f, Captures... captures)
- : f_(std::move(f)), captures_(std::move(captures)...) {}
-
- template <typename... Args>
- decltype(std::declval<F>()(static_cast<Captures*>(nullptr)...,
- std::declval<Args>()...))
- operator()(Args... args) {
- auto f = &f_;
- return y_absl::apply(
- [f, &args...](Captures&... captures) {
- return (*f)(&captures..., std::move(args)...);
- },
- captures_);
- }
-
- private:
- GPR_NO_UNIQUE_ADDRESS F f_;
- GPR_NO_UNIQUE_ADDRESS std::tuple<Captures...> captures_;
-};
-
-} // namespace detail
-
-// C++11 helper - best explained by usage:
-//
-// BigThing big_thing;
-// auto f = Capture(
-// [](BigThing* c, int a, int b) { /*...*/ },
-// std::move(big_thing));
-//
-// results in: f being a callable that takes arguments (int a, int b), and
-// captures the original value of big_thing by move. Each call, a pointer to
-// each captured thing is inserted into the argument list at the beginning so it
-// can be manipulated.
-//
-// Captured values are mutable, and it's the users responsibility to ensure,
-// should this callable be invoked from different threads, that proper locking
-// is implemented.
-template <typename F, typename... Captures>
-detail::Capture<F, Captures...> Capture(F f, Captures... captures) {
- return detail::Capture<F, Captures...>(std::move(f), std::move(captures)...);
-}
-
-} // namespace grpc_core
-
-#endif // GRPC_CORE_LIB_GPRPP_CAPTURE_H
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/chunked_vector.h b/contrib/libs/grpc/src/core/lib/gprpp/chunked_vector.h
index c415427621..cd8e208315 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/chunked_vector.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/chunked_vector.h
@@ -18,6 +18,10 @@
#include <grpc/support/port_platform.h>
#include <cstddef>
+#include <iterator>
+#include <utility>
+
+#include <grpc/support/log.h>
#include "src/core/lib/gprpp/manual_constructor.h"
#include "src/core/lib/resource_quota/arena.h"
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/construct_destruct.h b/contrib/libs/grpc/src/core/lib/gprpp/construct_destruct.h
index 73fdb1f3d5..29797f7a3a 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/construct_destruct.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/construct_destruct.h
@@ -17,6 +17,7 @@
#include <grpc/support/port_platform.h>
+#include <new>
#include <utility>
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/cpp_impl_of.h b/contrib/libs/grpc/src/core/lib/gprpp/cpp_impl_of.h
index 8d61dc8adf..aca7a3ebb7 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/cpp_impl_of.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/cpp_impl_of.h
@@ -31,6 +31,10 @@ class CppImplOf {
return reinterpret_cast<CppType*>(c_type);
}
+ static const CppType* FromC(const CType* c_type) {
+ return reinterpret_cast<const CppType*>(c_type);
+ }
+
// Retrieve a c pointer (of the same ownership as this)
CType* c_ptr() {
return reinterpret_cast<CType*>(static_cast<CppType*>(this));
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/debug_location.h b/contrib/libs/grpc/src/core/lib/gprpp/debug_location.h
index 04f284ce70..b4a1c5153a 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/debug_location.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/debug_location.h
@@ -19,8 +19,39 @@
#ifndef GRPC_CORE_LIB_GPRPP_DEBUG_LOCATION_H
#define GRPC_CORE_LIB_GPRPP_DEBUG_LOCATION_H
+#if defined(__has_builtin)
+#if __has_builtin(__builtin_FILE)
+#define GRPC_DEFAULT_FILE __builtin_FILE()
+#endif
+#endif
+#ifndef GRPC_DEFAULT_FILE
+#define GRPC_DEFAULT_FILE "<unknown>"
+#endif
+#if defined(__has_builtin)
+#if __has_builtin(__builtin_LINE)
+#define GRPC_DEFAULT_LINE __builtin_LINE()
+#endif
+#endif
+#ifndef GRPC_DEFAULT_LINE
+#define GRPC_DEFAULT_LINE -1
+#endif
+
namespace grpc_core {
+class SourceLocation {
+ public:
+ // NOLINTNEXTLINE
+ SourceLocation(const char* file = GRPC_DEFAULT_FILE,
+ int line = GRPC_DEFAULT_LINE)
+ : file_(file), line_(line) {}
+ const char* file() const { return file_; }
+ int line() const { return line_; }
+
+ private:
+ const char* file_;
+ int line_;
+};
+
// Used for tracking file and line where a call is made for debug builds.
// No-op for non-debug builds.
// Callers can use the DEBUG_LOCATION macro in either case.
@@ -30,15 +61,15 @@ namespace grpc_core {
// callers don't need to explicitly pass DEBUG_LOCATION anywhere.
class DebugLocation {
public:
- DebugLocation(const char* file, int line) : file_(file), line_(line) {}
- const char* file() const { return file_; }
- int line() const { return line_; }
+ DebugLocation(const char* file = GRPC_DEFAULT_FILE,
+ int line = GRPC_DEFAULT_LINE)
+ : location_(file, line) {}
+ const char* file() const { return location_.file(); }
+ int line() const { return location_.line(); }
private:
- const char* file_;
- const int line_;
+ SourceLocation location_;
};
-#define DEBUG_LOCATION ::grpc_core::DebugLocation(__FILE__, __LINE__)
#else
class DebugLocation {
public:
@@ -47,9 +78,10 @@ class DebugLocation {
const char* file() const { return nullptr; }
int line() const { return -1; }
};
-#define DEBUG_LOCATION ::grpc_core::DebugLocation()
#endif
+#define DEBUG_LOCATION ::grpc_core::DebugLocation(__FILE__, __LINE__)
+
} // namespace grpc_core
#endif /* GRPC_CORE_LIB_GPRPP_DEBUG_LOCATION_H */
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/dual_ref_counted.h b/contrib/libs/grpc/src/core/lib/gprpp/dual_ref_counted.h
index 560e08d04b..8d3f582551 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/dual_ref_counted.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/dual_ref_counted.h
@@ -20,12 +20,9 @@
#include <grpc/support/port_platform.h>
#include <atomic>
-#include <cassert>
-#include <cinttypes>
+#include <cstdint>
-#include <grpc/support/atm.h>
#include <grpc/support/log.h>
-#include <grpc/support/sync.h>
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
diff --git a/contrib/libs/grpc/src/core/lib/gpr/env.h b/contrib/libs/grpc/src/core/lib/gprpp/env.h
index f5016c6fa0..4e6d0894b0 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/env.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/env.h
@@ -16,25 +16,39 @@
*
*/
-#ifndef GRPC_CORE_LIB_GPR_ENV_H
-#define GRPC_CORE_LIB_GPR_ENV_H
+#ifndef GRPC_CORE_LIB_GPRPP_ENV_H
+#define GRPC_CORE_LIB_GPRPP_ENV_H
#include <grpc/support/port_platform.h>
-#include <stdio.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
-/* Env utility functions */
+#include "y_absl/types/optional.h"
-/* Gets the environment variable value with the specified name.
- Returns a newly allocated string. It is the responsibility of the caller to
- gpr_free the return value if not NULL (which means that the environment
- variable exists). */
-char* gpr_getenv(const char* name);
+namespace grpc_core {
+
+// Gets the environment variable value with the specified name. */
+y_absl::optional<TString> GetEnv(const char* name);
/* Sets the environment with the specified name to the specified value. */
-void gpr_setenv(const char* name, const char* value);
+void SetEnv(const char* name, const char* value);
+inline void SetEnv(const char* name, const TString& value) {
+ SetEnv(name, value.c_str());
+}
/* Deletes the variable name from the environment. */
-void gpr_unsetenv(const char* name);
+void UnsetEnv(const char* name);
+
+template <typename T>
+void SetOrUnsetEnv(const char* name, const y_absl::optional<T>& value) {
+ if (value.has_value()) {
+ SetEnv(name, value.value());
+ } else {
+ UnsetEnv(name);
+ }
+}
+
+} // namespace grpc_core
-#endif /* GRPC_CORE_LIB_GPR_ENV_H */
+#endif /* GRPC_CORE_LIB_GPRPP_ENV_H */
diff --git a/contrib/libs/grpc/src/core/lib/gpr/env_linux.cc b/contrib/libs/grpc/src/core/lib/gprpp/env_linux.cc
index 4b33246810..9f03144e33 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/env_linux.cc
+++ b/contrib/libs/grpc/src/core/lib/gprpp/env_linux.cc
@@ -23,21 +23,25 @@
#include <grpc/support/port_platform.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/types/optional.h"
+
#ifdef GPR_LINUX_ENV
+#if defined(GPR_BACKWARDS_COMPATIBILITY_MODE)
#include <dlfcn.h>
+#endif
+
#include <features.h>
#include <stdlib.h>
-#include <string.h>
-#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
+#include "src/core/lib/gprpp/env.h"
-#include "src/core/lib/gpr/env.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gpr/useful.h"
+namespace grpc_core {
-char* gpr_getenv(const char* name) {
+y_absl::optional<TString> GetEnv(const char* name) {
char* result = nullptr;
#if defined(GPR_BACKWARDS_COMPATIBILITY_MODE)
typedef char* (*getenv_type)(const char*);
@@ -45,9 +49,8 @@ char* gpr_getenv(const char* name) {
/* Check to see which getenv variant is supported (go from most
* to least secure) */
if (getenv_func == nullptr) {
- const char* names[] = {"secure_getenv", "__secure_getenv", "getenv"};
- for (size_t i = 0; i < GPR_ARRAY_SIZE(names); i++) {
- getenv_func = (getenv_type)dlsym(RTLD_DEFAULT, names[i]);
+ for (auto name : {"secure_getenv", "__secure_getenv", "getenv"}) {
+ getenv_func = reinterpret_cast<getenv_type>(dlsym(RTLD_DEFAULT, name));
if (getenv_func != nullptr) {
break;
}
@@ -59,17 +62,20 @@ char* gpr_getenv(const char* name) {
#else
result = getenv(name);
#endif
- return result == nullptr ? result : gpr_strdup(result);
+ if (result == nullptr) return y_absl::nullopt;
+ return result;
}
-void gpr_setenv(const char* name, const char* value) {
+void SetEnv(const char* name, const char* value) {
int res = setenv(name, value, 1);
- GPR_ASSERT(res == 0);
+ if (res != 0) abort();
}
-void gpr_unsetenv(const char* name) {
+void UnsetEnv(const char* name) {
int res = unsetenv(name);
- GPR_ASSERT(res == 0);
+ if (res != 0) abort();
}
+} // namespace grpc_core
+
#endif /* GPR_LINUX_ENV */
diff --git a/contrib/libs/grpc/src/core/lib/gpr/env_posix.cc b/contrib/libs/grpc/src/core/lib/gprpp/env_posix.cc
index fb2a21c669..edf28ea611 100644
--- a/contrib/libs/grpc/src/core/lib/gpr/env_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/gprpp/env_posix.cc
@@ -22,25 +22,26 @@
#include <stdlib.h>
-#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
+#include "src/core/lib/gprpp/env.h"
-#include "src/core/lib/gpr/env.h"
-#include "src/core/lib/gpr/string.h"
+namespace grpc_core {
-char* gpr_getenv(const char* name) {
+y_absl::optional<TString> GetEnv(const char* name) {
char* result = getenv(name);
- return result == nullptr ? result : gpr_strdup(result);
+ if (result == nullptr) return y_absl::nullopt;
+ return result;
}
-void gpr_setenv(const char* name, const char* value) {
+void SetEnv(const char* name, const char* value) {
int res = setenv(name, value, 1);
- GPR_ASSERT(res == 0);
+ if (res != 0) abort();
}
-void gpr_unsetenv(const char* name) {
+void UnsetEnv(const char* name) {
int res = unsetenv(name);
- GPR_ASSERT(res == 0);
+ if (res != 0) abort();
}
+} // namespace grpc_core
+
#endif /* GPR_POSIX_ENV */
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/env_windows.cc b/contrib/libs/grpc/src/core/lib/gprpp/env_windows.cc
new file mode 100644
index 0000000000..813a7f49a3
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/gprpp/env_windows.cc
@@ -0,0 +1,56 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <grpc/support/port_platform.h>
+
+#ifdef GPR_WINDOWS_ENV
+
+#include <windows.h>
+
+#include <memory>
+
+#include "src/core/lib/gprpp/env.h"
+#include "src/core/lib/gprpp/tchar.h"
+
+namespace grpc_core {
+
+y_absl::optional<TString> GetEnv(const char* name) {
+ auto tname = CharToTchar(name);
+ DWORD ret = GetEnvironmentVariable(tname.c_str(), NULL, 0);
+ if (ret == 0) return y_absl::nullopt;
+ std::unique_ptr<TCHAR[]> tresult(new TCHAR[ret]);
+ ret =
+ GetEnvironmentVariable(tname.c_str(), tresult.get(), ret * sizeof(TCHAR));
+ if (ret == 0) return y_absl::nullopt;
+ return TcharToChar(tresult.get());
+}
+
+void SetEnv(const char* name, const char* value) {
+ BOOL res = SetEnvironmentVariable(CharToTchar(name).c_str(),
+ CharToTchar(value).c_str());
+ if (!res) abort();
+}
+
+void UnsetEnv(const char* name) {
+ BOOL res = SetEnvironmentVariable(CharToTchar(name).c_str(), NULL);
+ if (!res) abort();
+}
+
+} // namespace grpc_core
+
+#endif /* GPR_WINDOWS_ENV */
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/examine_stack.h b/contrib/libs/grpc/src/core/lib/gprpp/examine_stack.h
index 5ce37cfcbc..87a052f9f3 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/examine_stack.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/examine_stack.h
@@ -21,7 +21,6 @@
#include <grpc/support/port_platform.h>
-#include <functional>
#include <util/generic/string.h>
#include <util/string/cast.h>
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/fork.cc b/contrib/libs/grpc/src/core/lib/gprpp/fork.cc
index 675f8e4d40..d142fe54de 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/fork.cc
+++ b/contrib/libs/grpc/src/core/lib/gprpp/fork.cc
@@ -20,15 +20,13 @@
#include "src/core/lib/gprpp/fork.h"
-#include <string.h>
-
-#include <grpc/support/alloc.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/support/atm.h>
#include <grpc/support/sync.h>
#include <grpc/support/time.h>
-#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/gprpp/global_config.h"
-#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/gprpp/global_config_env.h"
+#include "src/core/lib/gprpp/no_destruct.h"
/*
* NOTE: FORKING IS NOT GENERALLY SUPPORTED, THIS IS ONLY INTENDED TO WORK
@@ -46,7 +44,7 @@ GPR_GLOBAL_CONFIG_DEFINE_BOOL(grpc_enable_fork_support,
"Enable fork support");
namespace grpc_core {
-namespace internal {
+namespace {
// The exec_ctx_count has 2 modes, blocked and unblocked.
// When unblocked, the count is 2-indexed; exec_ctx_count=2 indicates
// 0 active ExecCtxs, exex_ctx_count=3 indicates 1 active ExecCtxs...
@@ -164,24 +162,13 @@ class ThreadState {
int count_;
};
-} // namespace internal
+} // namespace
void Fork::GlobalInit() {
if (!override_enabled_) {
support_enabled_.store(GPR_GLOBAL_CONFIG_GET(grpc_enable_fork_support),
std::memory_order_relaxed);
}
- if (support_enabled_.load(std::memory_order_relaxed)) {
- exec_ctx_state_ = new internal::ExecCtxState();
- thread_state_ = new internal::ThreadState();
- }
-}
-
-void Fork::GlobalShutdown() {
- if (support_enabled_.load(std::memory_order_relaxed)) {
- delete exec_ctx_state_;
- delete thread_state_;
- }
}
bool Fork::Enabled() {
@@ -194,9 +181,13 @@ void Fork::Enable(bool enable) {
support_enabled_.store(enable, std::memory_order_relaxed);
}
-void Fork::DoIncExecCtxCount() { exec_ctx_state_->IncExecCtxCount(); }
+void Fork::DoIncExecCtxCount() {
+ NoDestructSingleton<ExecCtxState>::Get()->IncExecCtxCount();
+}
-void Fork::DoDecExecCtxCount() { exec_ctx_state_->DecExecCtxCount(); }
+void Fork::DoDecExecCtxCount() {
+ NoDestructSingleton<ExecCtxState>::Get()->DecExecCtxCount();
+}
void Fork::SetResetChildPollingEngineFunc(
Fork::child_postfork_func reset_child_polling_engine) {
@@ -208,36 +199,34 @@ Fork::child_postfork_func Fork::GetResetChildPollingEngineFunc() {
bool Fork::BlockExecCtx() {
if (support_enabled_.load(std::memory_order_relaxed)) {
- return exec_ctx_state_->BlockExecCtx();
+ return NoDestructSingleton<ExecCtxState>::Get()->BlockExecCtx();
}
return false;
}
void Fork::AllowExecCtx() {
if (support_enabled_.load(std::memory_order_relaxed)) {
- exec_ctx_state_->AllowExecCtx();
+ NoDestructSingleton<ExecCtxState>::Get()->AllowExecCtx();
}
}
void Fork::IncThreadCount() {
if (support_enabled_.load(std::memory_order_relaxed)) {
- thread_state_->IncThreadCount();
+ NoDestructSingleton<ThreadState>::Get()->IncThreadCount();
}
}
void Fork::DecThreadCount() {
if (support_enabled_.load(std::memory_order_relaxed)) {
- thread_state_->DecThreadCount();
+ NoDestructSingleton<ThreadState>::Get()->DecThreadCount();
}
}
void Fork::AwaitThreads() {
if (support_enabled_.load(std::memory_order_relaxed)) {
- thread_state_->AwaitThreads();
+ NoDestructSingleton<ThreadState>::Get()->AwaitThreads();
}
}
-internal::ExecCtxState* Fork::exec_ctx_state_ = nullptr;
-internal::ThreadState* Fork::thread_state_ = nullptr;
std::atomic<bool> Fork::support_enabled_(false);
bool Fork::override_enabled_ = false;
Fork::child_postfork_func Fork::reset_child_polling_engine_ = nullptr;
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/fork.h b/contrib/libs/grpc/src/core/lib/gprpp/fork.h
index d6ef16130a..599176a741 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/fork.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/fork.h
@@ -30,17 +30,11 @@
namespace grpc_core {
-namespace internal {
-class ExecCtxState;
-class ThreadState;
-} // namespace internal
-
class Fork {
public:
typedef void (*child_postfork_func)(void);
static void GlobalInit();
- static void GlobalShutdown();
// Returns true if fork suppport is enabled, false otherwise
static bool Enabled();
@@ -91,8 +85,6 @@ class Fork {
static void DoIncExecCtxCount();
static void DoDecExecCtxCount();
- static internal::ExecCtxState* exec_ctx_state_;
- static internal::ThreadState* thread_state_;
static std::atomic<bool> support_enabled_;
static bool override_enabled_;
static child_postfork_func reset_child_polling_engine_;
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/global_config.h b/contrib/libs/grpc/src/core/lib/gprpp/global_config.h
index 150c738563..76ad8906b1 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/global_config.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/global_config.h
@@ -21,8 +21,6 @@
#include <grpc/support/port_platform.h>
-#include <stdint.h>
-
// --------------------------------------------------------------------
// How to use global configuration variables:
//
@@ -89,7 +87,7 @@
// bool gpr_global_config_get_test();
// void gpr_global_config_set_test(bool value);
-#include "src/core/lib/gprpp/global_config_custom.h"
-#include "src/core/lib/gprpp/global_config_env.h"
+#include "src/core/lib/gprpp/global_config_custom.h" // IWYU pragma: export
+#include "src/core/lib/gprpp/global_config_env.h" // IWYU pragma: export
#endif /* GRPC_CORE_LIB_GPRPP_GLOBAL_CONFIG_H */
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/global_config_env.cc b/contrib/libs/grpc/src/core/lib/gprpp/global_config_env.cc
index f40621116e..c2a41d0333 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/global_config_env.cc
+++ b/contrib/libs/grpc/src/core/lib/gprpp/global_config_env.cc
@@ -21,19 +21,21 @@
#include "src/core/lib/gprpp/global_config_env.h"
#include <ctype.h>
-#include <string.h>
+#include <stdlib.h>
+#include <memory>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <type_traits>
#include "y_absl/strings/str_format.h"
+#include "y_absl/types/optional.h"
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
-#include "src/core/lib/gpr/env.h"
#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gprpp/env.h"
namespace grpc_core {
@@ -60,14 +62,14 @@ void SetGlobalConfigEnvErrorFunction(GlobalConfigEnvErrorFunctionType func) {
}
UniquePtr<char> GlobalConfigEnv::GetValue() {
- return UniquePtr<char>(gpr_getenv(GetName()));
+ auto env = GetEnv(GetName());
+ return UniquePtr<char>(env.has_value() ? gpr_strdup(env.value().c_str())
+ : nullptr);
}
-void GlobalConfigEnv::SetValue(const char* value) {
- gpr_setenv(GetName(), value);
-}
+void GlobalConfigEnv::SetValue(const char* value) { SetEnv(GetName(), value); }
-void GlobalConfigEnv::Unset() { gpr_unsetenv(GetName()); }
+void GlobalConfigEnv::Unset() { UnsetEnv(GetName()); }
char* GlobalConfigEnv::GetName() {
// This makes sure that name_ is in a canonical form having uppercase
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/global_config_env.h b/contrib/libs/grpc/src/core/lib/gprpp/global_config_env.h
index 3d3038895d..4ea8097111 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/global_config_env.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/global_config_env.h
@@ -21,7 +21,9 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/gprpp/global_config_generic.h"
+#include <stdint.h>
+
+#include "src/core/lib/gprpp/global_config_generic.h" // IWYU pragma: export
#include "src/core/lib/gprpp/memory.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/global_config_generic.h b/contrib/libs/grpc/src/core/lib/gprpp/global_config_generic.h
index 6bdadb0980..8d53f17e7b 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/global_config_generic.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/global_config_generic.h
@@ -21,10 +21,6 @@
#include <grpc/support/port_platform.h>
-#include <stdint.h>
-
-#include "src/core/lib/gprpp/memory.h"
-
#define GPR_GLOBAL_CONFIG_GET(name) gpr_global_config_get_##name()
#define GPR_GLOBAL_CONFIG_SET(name, value) gpr_global_config_set_##name(value)
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/host_port.cc b/contrib/libs/grpc/src/core/lib/gprpp/host_port.cc
index e9db87f938..198827e8dc 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/host_port.cc
+++ b/contrib/libs/grpc/src/core/lib/gprpp/host_port.cc
@@ -20,6 +20,8 @@
#include "src/core/lib/gprpp/host_port.h"
+#include <stddef.h>
+
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/string_view.h"
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/manual_constructor.h b/contrib/libs/grpc/src/core/lib/gprpp/manual_constructor.h
index 6ef5557035..0d4056daa7 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/manual_constructor.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/manual_constructor.h
@@ -24,14 +24,9 @@
#include <grpc/support/port_platform.h>
#include <stddef.h>
-#include <stdlib.h>
-#include <new>
-#include <type_traits>
#include <utility>
-#include <grpc/support/log.h>
-
#include "src/core/lib/gprpp/construct_destruct.h"
namespace grpc_core {
@@ -103,70 +98,6 @@ class max_align_of<A, B...> {
} // namespace manual_ctor_impl
-template <class BaseType, class... DerivedTypes>
-class PolymorphicManualConstructor {
- public:
- // No constructor or destructor because one of the most useful uses of
- // this class is as part of a union, and members of a union could not have
- // constructors or destructors till C++11. And, anyway, the whole point of
- // this class is to bypass constructor and destructor.
-
- BaseType* get() { return reinterpret_cast<BaseType*>(&space_); }
- const BaseType* get() const {
- return reinterpret_cast<const BaseType*>(&space_);
- }
-
- BaseType* operator->() { return get(); }
- const BaseType* operator->() const { return get(); }
-
- BaseType& operator*() { return *get(); }
- const BaseType& operator*() const { return *get(); }
-
- template <class DerivedType>
- void Init() {
- FinishInit(new (&space_) DerivedType);
- }
-
- // Init() constructs the Type instance using the given arguments
- // (which are forwarded to Type's constructor).
- //
- // Note that Init() with no arguments performs default-initialization,
- // not zero-initialization (i.e it behaves the same as "new Type;", not
- // "new Type();"), so it will leave non-class types uninitialized.
- template <class DerivedType, typename... Ts>
- void Init(Ts&&... args) {
- FinishInit(new (&space_) DerivedType(std::forward<Ts>(args)...));
- }
-
- // Init() that is equivalent to copy and move construction.
- // Enables usage like this:
- // ManualConstructor<std::vector<int>> v;
- // v.Init({1, 2, 3});
- template <class DerivedType>
- void Init(const DerivedType& x) {
- FinishInit(new (&space_) DerivedType(x));
- }
- template <class DerivedType>
- void Init(DerivedType&& x) {
- FinishInit(new (&space_) DerivedType(std::forward<DerivedType>(x)));
- }
-
- void Destroy() { get()->~BaseType(); }
-
- private:
- template <class DerivedType>
- void FinishInit(DerivedType* p) {
- static_assert(
- manual_ctor_impl::is_one_of<DerivedType, DerivedTypes...>::value,
- "DerivedType must be one of the predeclared DerivedTypes");
- GPR_ASSERT(static_cast<BaseType*>(p) == p);
- }
-
- typename std::aligned_storage<
- manual_ctor_impl::max_size_of<DerivedTypes...>::value,
- manual_ctor_impl::max_align_of<DerivedTypes...>::value>::type space_;
-};
-
template <typename Type>
class ManualConstructor {
public:
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/match.h b/contrib/libs/grpc/src/core/lib/gprpp/match.h
new file mode 100644
index 0000000000..ee28df050b
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/gprpp/match.h
@@ -0,0 +1,75 @@
+// Copyright 2021 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_GPRPP_MATCH_H
+#define GRPC_CORE_LIB_GPRPP_MATCH_H
+
+#include <grpc/support/port_platform.h>
+
+#include <type_traits>
+
+#include "y_absl/types/variant.h"
+
+#include "src/core/lib/gprpp/overload.h"
+
+namespace grpc_core {
+
+namespace detail {
+
+template <typename... Cases>
+struct MatchPointerExtractor {
+ OverloadType<Cases...> cases;
+ template <typename T>
+ auto operator()(T& value) -> decltype(cases(&value)) {
+ return cases(&value);
+ }
+};
+
+} // namespace detail
+
+/// Match on a variant.
+/// Given variant \a value, and a set of callables \a fs, call the appropriate
+/// callable based on the type contained in \a value.
+///
+/// Example (prints "hoorah"):
+/// variant<int, string> v = 42;
+/// Match(v,
+/// [](int i) { puts("hoorah"); },
+/// [](string s) { puts("boo"); });
+template <typename... Fs, typename T0, typename... Ts>
+auto Match(const y_absl::variant<T0, Ts...>& value, Fs... fs)
+ -> decltype(std::declval<OverloadType<Fs...>>()(std::declval<T0>())) {
+ return y_absl::visit(Overload(std::move(fs)...), value);
+}
+
+/// A version of Match that takes a mutable pointer to a variant and calls its
+/// overload callables with a mutable pointer to the current variant value.
+///
+/// Example:
+/// variant<int, string> v = 42;
+/// MatchMutable(&v,
+/// [](int* i) { *i = 1; },
+/// [](string* s) { *s = "foo"; });
+/// // v now contains 1.
+template <typename... Fs, typename T0, typename... Ts>
+auto MatchMutable(y_absl::variant<T0, Ts...>* value, Fs... fs)
+ -> decltype(std::declval<OverloadType<Fs...>>()(std::declval<T0*>())) {
+ return y_absl::visit(detail::MatchPointerExtractor<Fs...>{OverloadType<Fs...>(
+ std::move(fs)...)},
+ *value);
+}
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_GPRPP_MATCH_H
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/memory.h b/contrib/libs/grpc/src/core/lib/gprpp/memory.h
index 1e9568a437..0851007879 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/memory.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/memory.h
@@ -21,14 +21,10 @@
#include <grpc/support/port_platform.h>
-#include <limits>
#include <memory>
-#include <utility>
-
-#include "y_absl/memory/memory.h"
+#include <type_traits>
#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/no_destruct.h b/contrib/libs/grpc/src/core/lib/gprpp/no_destruct.h
new file mode 100644
index 0000000000..0e839e3ca7
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/gprpp/no_destruct.h
@@ -0,0 +1,94 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_GPRPP_NO_DESTRUCT_H
+#define GRPC_CORE_LIB_GPRPP_NO_DESTRUCT_H
+
+#include <grpc/support/port_platform.h>
+
+#include <utility>
+
+#include "src/core/lib/gprpp/construct_destruct.h"
+
+namespace grpc_core {
+
+// NoDestruct<T> is a wrapper around an object of type T that:
+// - stores the value inline - no heap allocation
+// - is non-copyable
+// - is eagerly constructed (i.e. the constructor is called when NoDestruct is
+// constructed)
+// - *NEVER* calls ~T()
+// It's useful in cases where no ordering can be assumed between destructors of
+// objects that need to refer to each other - such as at program destruction
+// time.
+// Examples:
+// // globally available object:
+// static NoDestruct<Foo> g_foo(1, "foo", 2.0);
+// // used as:
+// g_foo->DoSomething();
+// // singleton function:
+// Bar* BarSingleton() {
+// static NoDestruct<Bar> bar(1, "bar", 2.0);
+// return &*bar;
+// }
+// The globally available version is constructed at program startup, and the
+// singleton version is constructed at the first call to BarSingleton().
+// Neither Foo nor Bar instance will be destructed.
+template <typename T>
+class NoDestruct {
+ public:
+ template <typename... Args>
+ explicit NoDestruct(Args&&... args) {
+ static_assert(std::is_trivially_destructible<NoDestruct<T>>::value,
+ "NoDestruct must be trivially destructible");
+ Construct(reinterpret_cast<T*>(&space_), std::forward<Args>(args)...);
+ }
+ NoDestruct(const NoDestruct&) = delete;
+ NoDestruct& operator=(const NoDestruct&) = delete;
+ ~NoDestruct() = default;
+
+ T* operator->() { return get(); }
+ const T* operator->() const { return get(); }
+ T& operator*() { return *get(); }
+ const T& operator*() const { return *get(); }
+
+ T* get() { return reinterpret_cast<T*>(&space_); }
+ const T* get() const { return reinterpret_cast<const T*>(&space_); }
+
+ private:
+ typename std::aligned_storage<sizeof(T), alignof(T)>::type space_;
+};
+
+// Helper for when a program desires a single *process wide* instance of a
+// default constructed T to be always available.
+// The instance is constructed eagerly at program startup, so it's essentially
+// free to load the pointer to the instance.
+template <typename T>
+class NoDestructSingleton {
+ public:
+ static T* Get() { return &*value_; }
+
+ private:
+ NoDestructSingleton() = delete;
+ ~NoDestructSingleton() = delete;
+
+ static NoDestruct<T> value_;
+};
+
+template <typename T>
+NoDestruct<T> NoDestructSingleton<T>::value_;
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_GPRPP_NO_DESTRUCT_H
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/notification.h b/contrib/libs/grpc/src/core/lib/gprpp/notification.h
new file mode 100644
index 0000000000..1f057e9baf
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/gprpp/notification.h
@@ -0,0 +1,67 @@
+// Copyright 2022 The gRPC Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_GPRPP_NOTIFICATION_H
+#define GRPC_CORE_LIB_GPRPP_NOTIFICATION_H
+
+#include <grpc/support/port_platform.h>
+
+#include "y_absl/time/clock.h"
+#include "y_absl/time/time.h"
+
+#include "src/core/lib/gprpp/sync.h"
+
+namespace grpc_core {
+
+// Polyfill for y_absl::Notification until we can use that type.
+class Notification {
+ public:
+ void Notify() {
+ MutexLock lock(&mu_);
+ notified_ = true;
+ cv_.SignalAll();
+ }
+
+ void WaitForNotification() {
+ MutexLock lock(&mu_);
+ while (!notified_) {
+ cv_.Wait(&mu_);
+ }
+ }
+
+ bool WaitForNotificationWithTimeout(y_absl::Duration timeout) {
+ auto now = y_absl::Now();
+ auto deadline = now + timeout;
+ MutexLock lock(&mu_);
+ while (!notified_ && now < deadline) {
+ cv_.WaitWithTimeout(&mu_, deadline - now);
+ now = y_absl::Now();
+ }
+ return notified_;
+ }
+
+ bool HasBeenNotified() {
+ MutexLock lock(&mu_);
+ return notified_;
+ }
+
+ private:
+ Mutex mu_;
+ CondVar cv_;
+ bool notified_ = false;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_GPRPP_NOTIFICATION_H
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/orphanable.h b/contrib/libs/grpc/src/core/lib/gprpp/orphanable.h
index bdd26d562b..26ae460afd 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/orphanable.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/orphanable.h
@@ -23,12 +23,9 @@
#include <cinttypes>
#include <memory>
-
-#include <grpc/support/log.h>
-#include <grpc/support/sync.h>
+#include <utility>
#include "src/core/lib/gprpp/debug_location.h"
-#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/overload.h b/contrib/libs/grpc/src/core/lib/gprpp/overload.h
new file mode 100644
index 0000000000..c243a8c010
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/gprpp/overload.h
@@ -0,0 +1,59 @@
+// Copyright 2021 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_GPRPP_OVERLOAD_H
+#define GRPC_CORE_LIB_GPRPP_OVERLOAD_H
+
+#include <grpc/support/port_platform.h>
+
+#include <utility>
+
+namespace grpc_core {
+
+template <typename... Cases>
+struct OverloadType;
+// Compose one overload with N more -- use inheritance to leverage using and the
+// empty base class optimization.
+template <typename Case, typename... Cases>
+struct OverloadType<Case, Cases...> : public Case,
+ public OverloadType<Cases...> {
+ explicit OverloadType(Case&& c, Cases&&... cases)
+ : Case(std::forward<Case>(c)),
+ OverloadType<Cases...>(std::forward<Cases>(cases)...) {}
+ using Case::operator();
+ using OverloadType<Cases...>::operator();
+};
+// Overload of a single case is just that case itself
+template <typename Case>
+struct OverloadType<Case> : public Case {
+ explicit OverloadType(Case&& c) : Case(std::forward<Case>(c)) {}
+ using Case::operator();
+};
+
+/// Compose callables into a single callable.
+/// e.g. given [](int i) { puts("a"); } and [](double d) { puts("b"); },
+/// return a callable object like:
+/// struct {
+/// void operator()(int i) { puts("a"); }
+/// void operator()(double i) { puts("b"); }
+/// };
+/// Preserves all captures.
+template <typename... Cases>
+OverloadType<Cases...> Overload(Cases... cases) {
+ return OverloadType<Cases...>(std::move(cases)...);
+}
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_GPRPP_OVERLOAD_H
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/packed_table.h b/contrib/libs/grpc/src/core/lib/gprpp/packed_table.h
new file mode 100644
index 0000000000..53f77b8853
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/gprpp/packed_table.h
@@ -0,0 +1,40 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_GPRPP_PACKED_TABLE_H
+#define GRPC_CORE_LIB_GPRPP_PACKED_TABLE_H
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/gprpp/sorted_pack.h"
+#include "src/core/lib/gprpp/table.h"
+
+namespace grpc_core {
+
+namespace packed_table_detail {
+template <typename A, typename B>
+struct Cmp {
+ static constexpr bool kValue = alignof(A) > alignof(B) ||
+ (alignof(A) == alignof(B) &&
+ sizeof(A) > sizeof(B));
+};
+}; // namespace packed_table_detail
+
+template <typename... T>
+using PackedTable =
+ typename WithSortedPack<Table, packed_table_detail::Cmp, T...>::Type;
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_GPRPP_PACKED_TABLE_H
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/ref_counted.h b/contrib/libs/grpc/src/core/lib/gprpp/ref_counted.h
index 733ec5e938..d5d56288cd 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/ref_counted.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/ref_counted.h
@@ -25,13 +25,10 @@
#include <cassert>
#include <cinttypes>
-#include <grpc/support/atm.h>
#include <grpc/support/log.h>
-#include <grpc/support/sync.h>
#include "src/core/lib/gprpp/atomic_utils.h"
#include "src/core/lib/gprpp/debug_location.h"
-#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
namespace grpc_core {
@@ -234,6 +231,7 @@ enum UnrefBehavior {
namespace internal {
template <typename T, UnrefBehavior UnrefBehaviorArg>
class Delete;
+
template <typename T>
class Delete<T, kUnrefDelete> {
public:
@@ -281,6 +279,8 @@ template <typename Child, typename Impl = PolymorphicRefCount,
UnrefBehavior UnrefBehaviorArg = kUnrefDelete>
class RefCounted : public Impl {
public:
+ using RefCountedChildType = Child;
+
// Note: Depending on the Impl used, this dtor can be implicitly virtual.
~RefCounted() = default;
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/ref_counted_ptr.h b/contrib/libs/grpc/src/core/lib/gprpp/ref_counted_ptr.h
index 047ae95aec..b518ff4f6f 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/ref_counted_ptr.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/ref_counted_ptr.h
@@ -21,11 +21,10 @@
#include <grpc/support/port_platform.h>
-#include <type_traits>
+#include <iosfwd>
#include <utility>
#include "src/core/lib/gprpp/debug_location.h"
-#include "src/core/lib/gprpp/memory.h"
namespace grpc_core {
@@ -56,14 +55,12 @@ class RefCountedPtr {
// Move assignment.
RefCountedPtr& operator=(RefCountedPtr&& other) noexcept {
- reset(other.value_);
- other.value_ = nullptr;
+ reset(std::exchange(other.value_, nullptr));
return *this;
}
template <typename Y>
RefCountedPtr& operator=(RefCountedPtr<Y>&& other) noexcept {
- reset(other.value_);
- other.value_ = nullptr;
+ reset(std::exchange(other.value_, nullptr));
return *this;
}
@@ -109,39 +106,32 @@ class RefCountedPtr {
// If value is non-null, we take ownership of a ref to it.
void reset(T* value = nullptr) {
- if (value_ != nullptr) value_->Unref();
- value_ = value;
+ T* old_value = std::exchange(value_, value);
+ if (old_value != nullptr) old_value->Unref();
}
void reset(const DebugLocation& location, const char* reason,
T* value = nullptr) {
- if (value_ != nullptr) value_->Unref(location, reason);
- value_ = value;
+ T* old_value = std::exchange(value_, value);
+ if (old_value != nullptr) old_value->Unref(location, reason);
}
template <typename Y>
void reset(Y* value = nullptr) {
static_assert(std::has_virtual_destructor<T>::value,
"T does not have a virtual dtor");
- if (value_ != nullptr) value_->Unref();
- value_ = static_cast<T*>(value);
+ reset(static_cast<T*>(value));
}
template <typename Y>
void reset(const DebugLocation& location, const char* reason,
Y* value = nullptr) {
static_assert(std::has_virtual_destructor<T>::value,
"T does not have a virtual dtor");
- if (value_ != nullptr) value_->Unref(location, reason);
- value_ = static_cast<T*>(value);
+ reset(location, reason, static_cast<T*>(value));
}
- // TODO(roth): This method exists solely as a transition mechanism to allow
- // us to pass a ref to idiomatic C code that does not use RefCountedPtr<>.
- // Once all of our code has been converted to idiomatic C++, this
- // method should go away.
- T* release() {
- T* value = value_;
- value_ = nullptr;
- return value;
- }
+ // This method is mostly useful for interoperating with C code.
+ // Eventually use within core should be banned, except at the surface API
+ // boundaries.
+ T* release() { return std::exchange(value_, nullptr); }
T* get() const { return value_; }
@@ -208,14 +198,12 @@ class WeakRefCountedPtr {
// Move assignment.
WeakRefCountedPtr& operator=(WeakRefCountedPtr&& other) noexcept {
- reset(other.value_);
- other.value_ = nullptr;
+ reset(std::exchange(other.value_, nullptr));
return *this;
}
template <typename Y>
WeakRefCountedPtr& operator=(WeakRefCountedPtr<Y>&& other) noexcept {
- reset(other.value_);
- other.value_ = nullptr;
+ reset(std::exchange(other.value_, nullptr));
return *this;
}
@@ -261,28 +249,26 @@ class WeakRefCountedPtr {
// If value is non-null, we take ownership of a ref to it.
void reset(T* value = nullptr) {
- if (value_ != nullptr) value_->WeakUnref();
- value_ = value;
+ T* old_value = std::exchange(value_, value);
+ if (old_value != nullptr) old_value->WeakUnref();
}
void reset(const DebugLocation& location, const char* reason,
T* value = nullptr) {
- if (value_ != nullptr) value_->WeakUnref(location, reason);
- value_ = value;
+ T* old_value = std::exchange(value_, value);
+ if (old_value != nullptr) old_value->WeakUnref(location, reason);
}
template <typename Y>
void reset(Y* value = nullptr) {
static_assert(std::has_virtual_destructor<T>::value,
"T does not have a virtual dtor");
- if (value_ != nullptr) value_->WeakUnref();
- value_ = static_cast<T*>(value);
+ reset(static_cast<T*>(value));
}
template <typename Y>
void reset(const DebugLocation& location, const char* reason,
Y* value = nullptr) {
static_assert(std::has_virtual_destructor<T>::value,
"T does not have a virtual dtor");
- if (value_ != nullptr) value_->WeakUnref(location, reason);
- value_ = static_cast<T*>(value);
+ reset(location, reason, static_cast<T*>(value));
}
// TODO(roth): This method exists solely as a transition mechanism to allow
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/single_set_ptr.h b/contrib/libs/grpc/src/core/lib/gprpp/single_set_ptr.h
new file mode 100644
index 0000000000..1b26d099b5
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/gprpp/single_set_ptr.h
@@ -0,0 +1,87 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_GPRPP_SINGLE_SET_PTR_H
+#define GRPC_CORE_LIB_GPRPP_SINGLE_SET_PTR_H
+
+#include <grpc/support/port_platform.h>
+
+#include <atomic>
+#include <memory>
+
+#include <grpc/support/log.h>
+
+namespace grpc_core {
+
+template <class T, class Deleter = std::default_delete<T>>
+class SingleSetPtr {
+ public:
+ SingleSetPtr() = default;
+ explicit SingleSetPtr(T* p) : p_{p} {}
+ explicit SingleSetPtr(std::unique_ptr<T, Deleter> p) : p_{p.release()} {}
+ ~SingleSetPtr() { Delete(p_.load(std::memory_order_relaxed)); }
+
+ SingleSetPtr(const SingleSetPtr&) = delete;
+ SingleSetPtr& operator=(const SingleSetPtr&) = delete;
+ SingleSetPtr(SingleSetPtr&& other) noexcept
+ : p_(other.p_.exchange(nullptr)) {}
+ SingleSetPtr& operator=(SingleSetPtr&& other) noexcept {
+ Set(other.p_.exchange(nullptr, std::memory_order_acq_rel));
+ return *this;
+ }
+
+ // Set the pointer;
+ // if already set, return the pre-set value and delete ptr;
+ // if deleted, return nullptr and delete ptr.
+ T* Set(T* ptr) {
+ T* expected = nullptr;
+ if (!p_.compare_exchange_strong(expected, ptr, std::memory_order_acq_rel,
+ std::memory_order_acquire)) {
+ Delete(ptr);
+ return expected;
+ }
+ return ptr;
+ }
+
+ // Set the pointer from a compatible unique_ptr - with the same caveats as
+ // above.
+ T* Set(std::unique_ptr<T, Deleter> ptr) { return Set(ptr.release()); }
+
+ // Clear the pointer.
+ void Reset() { Delete(p_.exchange(nullptr, std::memory_order_acq_rel)); }
+
+ bool is_set() const {
+ T* p = p_.load(std::memory_order_acquire);
+ return p != nullptr;
+ }
+
+ T* operator->() const {
+ T* p = p_.load(std::memory_order_acquire);
+ GPR_DEBUG_ASSERT(p != nullptr);
+ return p;
+ }
+
+ T& operator*() const { return *operator->(); }
+
+ private:
+ static void Delete(T* p) {
+ if (p == nullptr) return;
+ Deleter()(p);
+ }
+ std::atomic<T*> p_{nullptr};
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_GPRPP_SINGLE_SET_PTR_H
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/sorted_pack.h b/contrib/libs/grpc/src/core/lib/gprpp/sorted_pack.h
new file mode 100644
index 0000000000..c103b98028
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/gprpp/sorted_pack.h
@@ -0,0 +1,98 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_GPRPP_SORTED_PACK_H
+#define GRPC_CORE_LIB_GPRPP_SORTED_PACK_H
+
+#include <grpc/support/port_platform.h>
+
+#include <type_traits>
+
+namespace grpc_core {
+
+namespace sorted_pack_detail {
+
+// A list of types
+template <typename... A>
+struct Typelist {
+ template <template <typename...> class T>
+ using Instantiate = T<A...>;
+
+ template <typename C>
+ using PushFront = Typelist<C, A...>;
+};
+
+// Find the smallest element of Args, and the rest of the elements
+template <template <typename, typename> class Cmp, typename Args>
+struct Smallest;
+
+template <template <typename, typename> class Cmp, typename Arg,
+ typename... Args>
+struct Smallest<Cmp, Typelist<Arg, Args...>> {
+ using SmallestRest = Smallest<Cmp, Typelist<Args...>>;
+ using PrevSmallest = typename SmallestRest::Result;
+ using PrevRest = typename SmallestRest::Rest;
+ static constexpr bool kCmpResult = Cmp<Arg, PrevSmallest>::kValue;
+ using Result = typename std::conditional<kCmpResult, Arg, PrevSmallest>::type;
+ using Prefix = typename std::conditional<kCmpResult, PrevSmallest, Arg>::type;
+ using Rest = typename PrevRest::template PushFront<Prefix>;
+};
+
+template <template <typename, typename> class Cmp, typename Arg>
+struct Smallest<Cmp, Typelist<Arg>> {
+ using Result = Arg;
+ using Rest = Typelist<>;
+};
+
+// Sort a list of types into a typelist
+template <template <typename, typename> class Cmp, typename Args>
+struct Sorted;
+
+template <template <typename, typename> class Cmp, typename... Args>
+struct Sorted<Cmp, Typelist<Args...>> {
+ using SmallestResult = Smallest<Cmp, Typelist<Args...>>;
+ using SmallestType = typename SmallestResult::Result;
+ using RestOfTypes = typename SmallestResult::Rest;
+ using SortedRestOfTypes = typename Sorted<Cmp, RestOfTypes>::Result;
+ using Result = typename SortedRestOfTypes::template PushFront<SmallestType>;
+};
+
+template <template <typename, typename> class Cmp, typename Arg>
+struct Sorted<Cmp, Typelist<Arg>> {
+ using Result = Typelist<Arg>;
+};
+
+template <template <typename, typename> class Cmp>
+struct Sorted<Cmp, Typelist<>> {
+ using Result = Typelist<>;
+};
+
+} // namespace sorted_pack_detail
+
+// Given a type T<A...>, and a type comparator Cmp<P,Q>, and some set of types
+// Args...:
+// Sort Args... using Cmp into SortedArgs..., then instantiate T<SortedArgs...>
+// as Type.
+// Cmp<P,Q> should have a single constant `kValue` that is true if P < Q.
+template <template <typename...> class T,
+ template <typename, typename> class Cmp, typename... Args>
+struct WithSortedPack {
+ using Type = typename sorted_pack_detail::Sorted<
+ Cmp,
+ sorted_pack_detail::Typelist<Args...>>::Result::template Instantiate<T>;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_GPRPP_SORTED_PACK_H
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/stat.h b/contrib/libs/grpc/src/core/lib/gprpp/stat.h
index 4e1009bae0..53cc4377e5 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/stat.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/stat.h
@@ -19,11 +19,9 @@
#include <grpc/support/port_platform.h>
-#include <stdio.h>
#include <time.h>
#include "y_absl/status/status.h"
-#include "y_absl/strings/string_view.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/stat_posix.cc b/contrib/libs/grpc/src/core/lib/gprpp/stat_posix.cc
index 1f21cd3a1d..fcf3251e26 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/stat_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/gprpp/stat_posix.cc
@@ -16,12 +16,17 @@
#include <grpc/support/port_platform.h>
+// IWYU pragma: no_include <bits/struct_stat.h>
+
+#include <string.h>
+
+#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
+
#ifdef GPR_POSIX_STAT
#include <errno.h>
#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
#include <grpc/support/log.h>
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/status_helper.cc b/contrib/libs/grpc/src/core/lib/gprpp/status_helper.cc
index 2c0221c0fe..83cb6a6878 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/status_helper.cc
+++ b/contrib/libs/grpc/src/core/lib/gprpp/status_helper.cc
@@ -20,19 +20,28 @@
#include "src/core/lib/gprpp/status_helper.h"
+#include <string.h>
+
+#include <algorithm>
+#include <utility>
+
#include "y_absl/strings/cord.h"
#include "y_absl/strings/escaping.h"
#include "y_absl/strings/match.h"
-#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/numbers.h"
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_join.h"
#include "y_absl/time/clock.h"
#include "google/protobuf/any.upb.h"
#include "google/rpc/status.upb.h"
+#include "upb/arena.h"
+#include "upb/upb.h"
#include "upb/upb.hpp"
#include <grpc/support/log.h>
-#include "src/core/lib/gprpp/time_util.h"
+#include "src/core/lib/slice/percent_encoding.h"
+#include "src/core/lib/slice/slice.h"
#include <util/string/cast.h>
@@ -220,9 +229,10 @@ y_absl::optional<TString> StatusGetStr(const y_absl::Status& status,
void StatusSetTime(y_absl::Status* status, StatusTimeProperty key,
y_absl::Time time) {
+ TString time_str =
+ y_absl::FormatTime(y_absl::RFC3339_full, time, y_absl::UTCTimeZone());
status->SetPayload(GetStatusTimePropertyUrl(key),
- y_absl::Cord(y_absl::string_view(
- reinterpret_cast<const char*>(&time), sizeof(time))));
+ y_absl::Cord(std::move(time_str)));
}
y_absl::optional<y_absl::Time> StatusGetTime(const y_absl::Status& status,
@@ -231,14 +241,16 @@ y_absl::optional<y_absl::Time> StatusGetTime(const y_absl::Status& status,
status.GetPayload(GetStatusTimePropertyUrl(key));
if (p.has_value()) {
y_absl::optional<y_absl::string_view> sv = p->TryFlat();
+ y_absl::Time time;
if (sv.has_value()) {
- // copy the content before casting to avoid misaligned address access
- alignas(y_absl::Time) char buf[sizeof(const y_absl::Time)];
- memcpy(buf, sv->data(), sizeof(const y_absl::Time));
- return *reinterpret_cast<const y_absl::Time*>(buf);
+ if (y_absl::ParseTime(y_absl::RFC3339_full, sv.value(), &time, nullptr)) {
+ return time;
+ }
} else {
TString s = TString(*p);
- return *reinterpret_cast<const y_absl::Time*>(s.c_str());
+ if (y_absl::ParseTime(y_absl::RFC3339_full, s, &time, nullptr)) {
+ return time;
+ }
}
}
return {};
@@ -306,9 +318,14 @@ TString StatusToString(const y_absl::Status& status) {
y_absl::CHexEscape(payload_view), "\""));
} else if (y_absl::StartsWith(type_url, kTypeTimeTag)) {
type_url.remove_prefix(kTypeTimeTag.size());
- y_absl::Time t =
- *reinterpret_cast<const y_absl::Time*>(payload_view.data());
- kvs.push_back(y_absl::StrCat(type_url, ":\"", y_absl::FormatTime(t), "\""));
+ y_absl::Time t;
+ if (y_absl::ParseTime(y_absl::RFC3339_full, payload_view, &t, nullptr)) {
+ kvs.push_back(
+ y_absl::StrCat(type_url, ":\"", y_absl::FormatTime(t), "\""));
+ } else {
+ kvs.push_back(y_absl::StrCat(type_url, ":\"",
+ y_absl::CHexEscape(payload_view), "\""));
+ }
} else {
kvs.push_back(y_absl::StrCat(type_url, ":\"",
y_absl::CHexEscape(payload_view), "\""));
@@ -339,9 +356,21 @@ namespace internal {
google_rpc_Status* StatusToProto(const y_absl::Status& status, upb_Arena* arena) {
google_rpc_Status* msg = google_rpc_Status_new(arena);
google_rpc_Status_set_code(msg, int32_t(status.code()));
+ // Protobuf string field requires to be utf-8 encoding but C++ string doesn't
+ // this requirement so it can be a non utf-8 string. So it should be converted
+ // to a percent-encoded string to keep it as a utf-8 string.
+ Slice message_percent_slice =
+ PercentEncodeSlice(Slice::FromExternalString(status.message()),
+ PercentEncodingType::Compatible);
+ char* message_percent = reinterpret_cast<char*>(
+ upb_Arena_Malloc(arena, message_percent_slice.length()));
+ if (message_percent_slice.length() > 0) {
+ memcpy(message_percent, message_percent_slice.data(),
+ message_percent_slice.length());
+ }
google_rpc_Status_set_message(
- msg, upb_StringView_FromDataAndSize(status.message().data(),
- status.message().size()));
+ msg, upb_StringView_FromDataAndSize(message_percent,
+ message_percent_slice.length()));
status.ForEachPayload([&](y_absl::string_view type_url,
const y_absl::Cord& payload) {
google_protobuf_Any* any = google_rpc_Status_add_details(msg, arena);
@@ -371,9 +400,15 @@ google_rpc_Status* StatusToProto(const y_absl::Status& status, upb_Arena* arena)
y_absl::Status StatusFromProto(google_rpc_Status* msg) {
int32_t code = google_rpc_Status_code(msg);
- upb_StringView message = google_rpc_Status_message(msg);
- y_absl::Status status(static_cast<y_absl::StatusCode>(code),
- y_absl::string_view(message.data, message.size));
+ upb_StringView message_percent_upb = google_rpc_Status_message(msg);
+ Slice message_percent_slice = Slice::FromExternalString(
+ y_absl::string_view(message_percent_upb.data, message_percent_upb.size));
+ Slice message_slice =
+ PermissivePercentDecodeSlice(std::move(message_percent_slice));
+ y_absl::Status status(
+ static_cast<y_absl::StatusCode>(code),
+ y_absl::string_view(reinterpret_cast<const char*>(message_slice.data()),
+ message_slice.size()));
size_t detail_len;
const google_protobuf_Any* const* details =
google_rpc_Status_details(msg, &detail_len);
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/status_helper.h b/contrib/libs/grpc/src/core/lib/gprpp/status_helper.h
index 8ef527036e..70172fbe23 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/status_helper.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/status_helper.h
@@ -21,9 +21,14 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include <vector>
#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/time/time.h"
#include "y_absl/types/optional.h"
@@ -34,6 +39,12 @@ struct google_rpc_Status;
struct upb_Arena;
}
+#define RETURN_IF_ERROR(expr) \
+ do { \
+ const y_absl::Status status = (expr); \
+ if (!status.ok()) return status; \
+ } while (0)
+
namespace grpc_core {
/// This enum should have the same value of grpc_error_ints
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/sync.h b/contrib/libs/grpc/src/core/lib/gprpp/sync.h
index eb1705795b..ee3d967655 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/sync.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/sync.h
@@ -21,13 +21,15 @@
#include <grpc/support/port_platform.h>
+#include "y_absl/base/thread_annotations.h"
#include "y_absl/synchronization/mutex.h"
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
-#include <grpc/support/time.h>
+#ifndef GPR_ABSEIL_SYNC
#include "src/core/lib/gprpp/time_util.h"
+#endif
// The core library is not accessible in C++ codegen headers, and vice versa.
// Thus, we need to have duplicate headers with similar functionality.
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/table.h b/contrib/libs/grpc/src/core/lib/gprpp/table.h
index 41b7179a14..a02355b8e6 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/table.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/table.h
@@ -17,8 +17,13 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <initializer_list>
+#include <new>
#include <utility>
+#include "y_absl/meta/type_traits.h"
#include "y_absl/utility/utility.h"
#include "src/core/lib/gprpp/bitset.h"
@@ -31,6 +36,7 @@ namespace table_detail {
// A tuple-like type that contains manually constructed elements.
template <typename... Ts>
struct Elements;
+
template <typename T, typename... Ts>
struct Elements<T, Ts...> : Elements<Ts...> {
union U {
@@ -71,6 +77,7 @@ struct GetElem<I, T, Ts...> {
// Sets a member constant N to the number of times Needle is in Haystack.
template <typename Needle, typename... Haystack>
struct CountIncludedStruct;
+
template <typename Needle, typename Straw, typename... RestOfHaystack>
struct CountIncludedStruct<Needle, Straw, RestOfHaystack...> {
static constexpr size_t N =
@@ -92,6 +99,7 @@ constexpr size_t CountIncluded() {
// Ignored should be void always, and is used for enable_if_t.
template <typename Ignored, typename Needle, typename... Haystack>
struct IndexOfStruct;
+
template <typename Needle, typename Straw, typename... RestOfHaystack>
struct IndexOfStruct<y_absl::enable_if_t<std::is_same<Needle, Straw>::value>,
Needle, Straw, RestOfHaystack...> {
@@ -123,6 +131,7 @@ IndexOf() {
// Implemented as a simple type recursion.
template <size_t I, typename... Ts>
struct TypeIndexStruct;
+
template <typename T, typename... Ts>
struct TypeIndexStruct<0, T, Ts...> {
using Type = T;
@@ -209,7 +218,7 @@ class Table {
// Check if this table has index I.
template <size_t I>
- y_absl::enable_if_t < I<sizeof...(Ts), bool> has() const {
+ y_absl::enable_if_t<(I < sizeof...(Ts)), bool> has() const {
return present_bits_.is_set(I);
}
@@ -308,6 +317,14 @@ class Table {
ForEachImpl(std::move(f), y_absl::make_index_sequence<sizeof...(Ts)>());
}
+ // Iterate through each set field in the table if it exists in Vs, in the
+ // order of Vs.
+ template <typename F, typename... Vs>
+ void ForEachIn(F f) const {
+ ForEachImpl(std::move(f),
+ y_absl::index_sequence<table_detail::IndexOf<Vs, Ts...>()...>());
+ }
+
// Count the number of set fields in the table
size_t count() const { return present_bits_.count(); }
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/tchar.cc b/contrib/libs/grpc/src/core/lib/gprpp/tchar.cc
new file mode 100644
index 0000000000..cfc67106e9
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/gprpp/tchar.cc
@@ -0,0 +1,49 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/gprpp/tchar.h"
+
+#ifdef GPR_WINDOWS
+
+namespace grpc_core {
+
+#if defined UNICODE || defined _UNICODE
+TcharString CharToTchar(TString input) {
+ int needed = MultiByteToWideChar(CP_UTF8, 0, input.c_str(), -1, NULL, 0);
+ if (needed <= 0) return TcharString();
+ TcharString ret(needed, L'\0');
+ MultiByteToWideChar(CP_UTF8, 0, input.c_str(), -1,
+ const_cast<LPTSTR>(ret.data()), needed);
+ return ret;
+}
+
+TString TcharToChar(TcharString input) {
+ int needed =
+ WideCharToMultiByte(CP_UTF8, 0, input.c_str(), -1, NULL, 0, NULL, NULL);
+ if (needed <= 0) return TString();
+ TString ret(needed, '\0');
+ WideCharToMultiByte(CP_UTF8, 0, input.c_str(), -1,
+ const_cast<LPSTR>(ret.data()), needed, NULL, NULL);
+ return ret;
+}
+#else
+TcharString CharToTchar(TString input) { return input; }
+TString TcharToChar(TcharString input) { return input; }
+#endif
+
+} // namespace grpc_core
+
+#endif
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc b/contrib/libs/grpc/src/core/lib/gprpp/tchar.h
index 45c1464808..638cc1b181 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc
+++ b/contrib/libs/grpc/src/core/lib/gprpp/tchar.h
@@ -1,4 +1,4 @@
-// Copyright 2021 The gRPC Authors
+// Copyright 2022 gRPC authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -11,21 +11,24 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
-#include <grpc/support/port_platform.h>
-#include "src/core/lib/iomgr/port.h"
-#if GRPC_ARES == 1 && defined(GRPC_USE_EVENT_ENGINE)
+#ifndef GRPC_CORE_LIB_GPRPP_TCHAR_H
+#define GRPC_CORE_LIB_GPRPP_TCHAR_H
+
+#include <grpc/support/port_platform.h>
-#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h"
-#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
+#ifdef GPR_WINDOWS
+#include <util/generic/string.h>
+#include <util/string/cast.h>
namespace grpc_core {
-std::unique_ptr<GrpcPolledFdFactory> NewGrpcPolledFdFactory(
- std::shared_ptr<WorkSerializer> /* work_serializer */) {
- return nullptr;
-}
+using TcharString = std::basic_string<TCHAR>;
+
+TcharString CharToTchar(TString input);
+TString TcharToChar(TcharString input);
} // namespace grpc_core
+#endif
-#endif /* GRPC_ARES == 1 && defined(GRPC_USE_EVENT_ENGINE) */
+#endif // GRPC_CORE_LIB_GPRPP_TCHAR_H
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/thd.h b/contrib/libs/grpc/src/core/lib/gprpp/thd.h
index c4ce04cec4..5990b0f17b 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/thd.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/thd.h
@@ -23,12 +23,9 @@
#include <grpc/support/port_platform.h>
-#include <grpc/support/log.h>
-#include <grpc/support/sync.h>
-#include <grpc/support/thd_id.h>
-#include <grpc/support/time.h>
+#include <stddef.h>
-#include "src/core/lib/gprpp/memory.h"
+#include <grpc/support/log.h>
namespace grpc_core {
namespace internal {
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/thd_posix.cc b/contrib/libs/grpc/src/core/lib/gprpp/thd_posix.cc
index 210294a4aa..79cc2f0365 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/thd_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/gprpp/thd_posix.cc
@@ -21,6 +21,9 @@
#include <grpc/support/port_platform.h>
#include <util/system/thread.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/support/time.h>
+
#ifdef GPR_POSIX_SYNC
#include <pthread.h>
@@ -28,19 +31,18 @@
#include <string.h>
#include <unistd.h>
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
#include <grpc/support/thd_id.h>
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/fork.h"
-#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/gprpp/thd.h"
namespace grpc_core {
namespace {
class ThreadInternalsPosix;
+
struct thd_arg {
ThreadInternalsPosix* thread;
void (*body)(void* arg); /* body of a thread */
@@ -112,7 +114,19 @@ class ThreadInternalsPosix : public internal::ThreadInternalsInterface {
thd_arg arg = *static_cast<thd_arg*>(v);
free(v);
if (arg.name != nullptr) {
- TThread::SetCurrentThreadName(arg.name);
+#if GPR_APPLE_PTHREAD_NAME
+ /* Apple supports 64 characters, and will
+ * truncate if it's longer. */
+ pthread_setname_np(arg.name);
+#elif GPR_LINUX_PTHREAD_NAME
+ /* Linux supports 16 characters max, and will
+ * error if it's longer. */
+ char buf[16];
+ size_t buf_len = GPR_ARRAY_SIZE(buf) - 1;
+ strncpy(buf, arg.name, buf_len);
+ buf[buf_len] = '\0';
+ pthread_setname_np(pthread_self(), buf);
+#endif // GPR_APPLE_PTHREAD_NAME
}
gpr_mu_lock(&arg.thread->mu_);
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/thd_windows.cc b/contrib/libs/grpc/src/core/lib/gprpp/thd_windows.cc
index ce1a753995..af5046c1a2 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/thd_windows.cc
+++ b/contrib/libs/grpc/src/core/lib/gprpp/thd_windows.cc
@@ -26,7 +26,9 @@
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
+#include <grpc/support/sync.h>
#include <grpc/support/thd_id.h>
+#include <grpc/support/time.h>
#include "src/core/lib/gpr/tls.h"
#include "src/core/lib/gprpp/memory.h"
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/time.cc b/contrib/libs/grpc/src/core/lib/gprpp/time.cc
index be9ecfdee5..e1a74d21c1 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/time.cc
+++ b/contrib/libs/grpc/src/core/lib/gprpp/time.cc
@@ -17,14 +17,20 @@
#include "src/core/lib/gprpp/time.h"
#include <atomic>
+#include <chrono>
#include <cstdint>
#include <limits>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/strings/str_format.h"
#include <grpc/impl/codegen/gpr_types.h>
#include <grpc/support/log.h>
+#include "src/core/lib/gprpp/no_destruct.h"
+
namespace grpc_core {
namespace {
@@ -32,6 +38,13 @@ namespace {
std::atomic<int64_t> g_process_epoch_seconds;
std::atomic<gpr_cycle_counter> g_process_epoch_cycles;
+class GprNowTimeSource final : public Timestamp::Source {
+ public:
+ Timestamp Now() override {
+ return Timestamp::FromTimespecRoundDown(gpr_now(GPR_CLOCK_MONOTONIC));
+ }
+};
+
GPR_ATTRIBUTE_NOINLINE std::pair<int64_t, gpr_cycle_counter> InitTime() {
gpr_cycle_counter cycles_start = 0;
gpr_cycle_counter cycles_end = 0;
@@ -130,6 +143,18 @@ int64_t TimespanToMillisRoundDown(gpr_timespec ts) {
} // namespace
+GPR_THREAD_LOCAL(Timestamp::Source*)
+Timestamp::thread_local_time_source_{
+ NoDestructSingleton<GprNowTimeSource>::Get()};
+
+Timestamp ScopedTimeCache::Now() {
+ if (!cached_time_.has_value()) {
+ previous()->InvalidateCache();
+ cached_time_ = previous()->Now();
+ }
+ return cached_time_.value();
+}
+
Timestamp Timestamp::FromTimespecRoundUp(gpr_timespec ts) {
return FromMillisecondsAfterProcessEpoch(TimespanToMillisRoundUp(gpr_time_sub(
gpr_convert_clock_type(ts, GPR_CLOCK_MONOTONIC), StartTime())));
@@ -156,6 +181,12 @@ gpr_timespec Timestamp::as_timespec(gpr_clock_type clock_type) const {
}
TString Timestamp::ToString() const {
+ if (millis_ == std::numeric_limits<int64_t>::max()) {
+ return "@∞";
+ }
+ if (millis_ == std::numeric_limits<int64_t>::min()) {
+ return "@-∞";
+ }
return "@" + ::ToString(millis_) + "ms";
}
@@ -168,9 +199,27 @@ Duration Duration::FromTimespec(gpr_timespec t) {
}
TString Duration::ToString() const {
+ if (millis_ == std::numeric_limits<int64_t>::max()) {
+ return "∞";
+ }
+ if (millis_ == std::numeric_limits<int64_t>::min()) {
+ return "-∞";
+ }
return ::ToString(millis_) + "ms";
}
+TString Duration::ToJsonString() const {
+ gpr_timespec ts = as_timespec();
+ return y_absl::StrFormat("%d.%09ds", ts.tv_sec, ts.tv_nsec);
+}
+
+Duration::operator grpc_event_engine::experimental::EventEngine::Duration()
+ const {
+ return std::chrono::milliseconds(
+ Clamp(millis_, std::numeric_limits<int64_t>::min() / GPR_NS_PER_MS,
+ std::numeric_limits<int64_t>::max() / GPR_NS_PER_MS));
+}
+
void TestOnlySetProcessEpoch(gpr_timespec epoch) {
g_process_epoch_seconds.store(
gpr_convert_clock_type(epoch, GPR_CLOCK_MONOTONIC).tv_sec);
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/time.h b/contrib/libs/grpc/src/core/lib/gprpp/time.h
index 818d520c82..4c4313365a 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/time.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/time.h
@@ -19,15 +19,19 @@
#include <stdint.h>
-#include <cstdint>
#include <limits>
#include <ostream>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include "y_absl/types/optional.h"
+
+#include <grpc/event_engine/event_engine.h>
+#include <grpc/impl/codegen/gpr_types.h>
#include <grpc/support/time.h>
#include "src/core/lib/gpr/time_precise.h"
+#include "src/core/lib/gpr/tls.h"
#include "src/core/lib/gpr/useful.h"
namespace grpc_core {
@@ -61,6 +65,35 @@ class Duration;
// Timestamp represents a discrete point in time.
class Timestamp {
public:
+ // Base interface for time providers.
+ class Source {
+ public:
+ // Return the current time.
+ virtual Timestamp Now() = 0;
+ virtual void InvalidateCache() {}
+
+ protected:
+ // We don't delete through this interface, so non-virtual dtor is fine.
+ ~Source() = default;
+ };
+
+ class ScopedSource : public Source {
+ public:
+ ScopedSource() : previous_(thread_local_time_source_) {
+ thread_local_time_source_ = this;
+ }
+ ScopedSource(const ScopedSource&) = delete;
+ ScopedSource& operator=(const ScopedSource&) = delete;
+ void InvalidateCache() override { previous_->InvalidateCache(); }
+
+ protected:
+ ~ScopedSource() { thread_local_time_source_ = previous_; }
+ Source* previous() const { return previous_; }
+
+ private:
+ Source* const previous_;
+ };
+
constexpr Timestamp() = default;
// Constructs a Timestamp from a gpr_timespec.
static Timestamp FromTimespecRoundDown(gpr_timespec t);
@@ -70,6 +103,8 @@ class Timestamp {
static Timestamp FromCycleCounterRoundUp(gpr_cycle_counter c);
static Timestamp FromCycleCounterRoundDown(gpr_cycle_counter c);
+ static Timestamp Now() { return thread_local_time_source_->Now(); }
+
static constexpr Timestamp FromMillisecondsAfterProcessEpoch(int64_t millis) {
return Timestamp(millis);
}
@@ -116,12 +151,27 @@ class Timestamp {
explicit constexpr Timestamp(int64_t millis) : millis_(millis) {}
int64_t millis_ = 0;
+ static GPR_THREAD_LOCAL(Timestamp::Source*) thread_local_time_source_;
+};
+
+class ScopedTimeCache final : public Timestamp::ScopedSource {
+ public:
+ Timestamp Now() override;
+
+ void InvalidateCache() override {
+ cached_time_ = y_absl::nullopt;
+ Timestamp::ScopedSource::InvalidateCache();
+ }
+ void TestOnlySetNow(Timestamp now) { cached_time_ = now; }
+
+ private:
+ y_absl::optional<Timestamp> cached_time_;
};
// Duration represents a span of time.
class Duration {
public:
- constexpr Duration() : millis_(0) {}
+ constexpr Duration() noexcept : millis_(0) {}
static Duration FromTimespec(gpr_timespec t);
static Duration FromSecondsAndNanoseconds(int64_t seconds, int32_t nanos);
@@ -200,6 +250,7 @@ class Duration {
}
return *this;
}
+ Duration& operator*=(double multiplier);
Duration& operator+=(Duration other) {
millis_ += other.millis_;
return *this;
@@ -208,10 +259,18 @@ class Duration {
constexpr int64_t millis() const { return millis_; }
double seconds() const { return static_cast<double>(millis_) / 1000.0; }
+ // NOLINTNEXTLINE: google-explicit-constructor
+ operator grpc_event_engine::experimental::EventEngine::Duration() const;
+
gpr_timespec as_timespec() const;
TString ToString() const;
+ // Returns the duration in the JSON form corresponding to a
+ // google.protobuf.Duration proto, as defined here:
+ // https://developers.google.com/protocol-buffers/docs/proto3#json
+ TString ToJsonString() const;
+
private:
explicit constexpr Duration(int64_t millis) : millis_(millis) {}
@@ -279,6 +338,11 @@ inline Duration Duration::FromSecondsAsDouble(double seconds) {
return Milliseconds(static_cast<int64_t>(millis));
}
+inline Duration& Duration::operator*=(double multiplier) {
+ *this = *this * multiplier;
+ return *this;
+}
+
inline Timestamp& Timestamp::operator+=(Duration duration) {
return *this = (*this + duration);
}
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/time_averaged_stats.cc b/contrib/libs/grpc/src/core/lib/gprpp/time_averaged_stats.cc
new file mode 100644
index 0000000000..9077c00422
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/gprpp/time_averaged_stats.cc
@@ -0,0 +1,60 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/gprpp/time_averaged_stats.h"
+
+namespace grpc_core {
+
+TimeAveragedStats::TimeAveragedStats(double init_avg, double regress_weight,
+ double persistence_factor)
+ : init_avg_(init_avg),
+ regress_weight_(regress_weight),
+ persistence_factor_(persistence_factor) {}
+
+void TimeAveragedStats::AddSample(double value) {
+ batch_total_value_ += value;
+ ++batch_num_samples_;
+}
+
+double TimeAveragedStats::UpdateAverage() {
+ /* Start with the current batch: */
+ double weighted_sum = batch_total_value_;
+ double total_weight = batch_num_samples_;
+ if (regress_weight_ > 0) {
+ /* Add in the regression towards init_avg_: */
+ weighted_sum += regress_weight_ * init_avg_;
+ total_weight += regress_weight_;
+ }
+ if (persistence_factor_ > 0) {
+ /* Add in the persistence: */
+ const double prev_sample_weight =
+ persistence_factor_ * aggregate_total_weight_;
+ weighted_sum += prev_sample_weight * aggregate_weighted_avg_;
+ total_weight += prev_sample_weight;
+ }
+ aggregate_weighted_avg_ =
+ (total_weight > 0) ? (weighted_sum / total_weight) : init_avg_;
+ aggregate_total_weight_ = total_weight;
+ batch_num_samples_ = 0;
+ batch_total_value_ = 0;
+ return aggregate_weighted_avg_;
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/time_averaged_stats.h b/contrib/libs/grpc/src/core/lib/gprpp/time_averaged_stats.h
index 877d1bec0e..b228ad8909 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/time_averaged_stats.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/time_averaged_stats.h
@@ -16,26 +16,42 @@
*
*/
-#ifndef GRPC_CORE_LIB_IOMGR_TIME_AVERAGED_STATS_H
-#define GRPC_CORE_LIB_IOMGR_TIME_AVERAGED_STATS_H
+#ifndef GRPC_CORE_LIB_GPRPP_TIME_AVERAGED_STATS_H
+#define GRPC_CORE_LIB_GPRPP_TIME_AVERAGED_STATS_H
+
+namespace grpc_core {
/* This tracks a time-decaying weighted average. It works by collecting
batches of samples and then mixing their average into a time-decaying
weighted mean. It is designed for batch operations where we do many adds
before updating the average. */
-struct grpc_time_averaged_stats {
+class TimeAveragedStats {
+ public:
+ TimeAveragedStats(double init_avg, double regress_weight,
+ double persistence_factor);
+
+ /* Add a sample to the current batch. */
+ void AddSample(double value);
+ /* Complete a batch and compute the new estimate of the average sample
+ value. */
+ double UpdateAverage();
+
+ double aggregate_weighted_avg() const { return aggregate_weighted_avg_; }
+ double aggregate_total_weight() const { return aggregate_total_weight_; }
+
+ private:
/* The initial average value. This is the reported average until the first
grpc_time_averaged_stats_update_average call. If a positive regress_weight
is used, we also regress towards this value on each update. */
- double init_avg;
+ const double init_avg_;
/* The sample weight of "init_avg" that is mixed in with each call to
grpc_time_averaged_stats_update_average. If the calls to
grpc_time_averaged_stats_add_sample stop, this will cause the average to
regress back to the mean. This should be non-negative. Set it to 0 to
disable the bias. A value of 1 has the effect of adding in 1 bonus sample
with value init_avg to each sample period. */
- double regress_weight;
+ const double regress_weight_;
/* This determines the rate of decay of the time-averaging from one period
to the next by scaling the aggregate_total_weight of samples from prior
periods when combining with the latest period. It should be in the range
@@ -43,30 +59,21 @@ struct grpc_time_averaged_stats {
batches each have k samples, the samples_in_avg_ will grow to 2 k, so the
weighting of the time average will eventually be 1/3 new batch and 2/3
old average. */
- double persistence_factor;
+ const double persistence_factor_;
/* The total value of samples since the last UpdateAverage(). */
- double batch_total_value;
+ double batch_total_value_ = 0;
/* The number of samples since the last UpdateAverage(). */
- double batch_num_samples;
+ double batch_num_samples_ = 0;
/* The time-decayed sum of batch_num_samples_ over previous batches. This is
the "weight" of the old aggregate_weighted_avg_ when updating the
average. */
- double aggregate_total_weight;
+ double aggregate_total_weight_ = 0;
/* A time-decayed average of the (batch_total_value_ / batch_num_samples_),
computed by decaying the samples_in_avg_ weight in the weighted average. */
- double aggregate_weighted_avg;
+ double aggregate_weighted_avg_ = init_avg_;
};
-/* See the comments on the members above for an explanation of init_avg,
- regress_weight, and persistence_factor. */
-void grpc_time_averaged_stats_init(grpc_time_averaged_stats* stats,
- double init_avg, double regress_weight,
- double persistence_factor);
-/* Add a sample to the current batch. */
-void grpc_time_averaged_stats_add_sample(grpc_time_averaged_stats* stats,
- double value);
-/* Complete a batch and compute the new estimate of the average sample
- value. */
-double grpc_time_averaged_stats_update_average(grpc_time_averaged_stats* stats);
-#endif /* GRPC_CORE_LIB_IOMGR_TIME_AVERAGED_STATS_H */
+} // namespace grpc_core
+
+#endif /* GRPC_CORE_LIB_GPRPP_TIME_AVERAGED_STATS_H */
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/time_util.cc b/contrib/libs/grpc/src/core/lib/gprpp/time_util.cc
index c543e4b512..6e5a33109c 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/time_util.cc
+++ b/contrib/libs/grpc/src/core/lib/gprpp/time_util.cc
@@ -18,7 +18,11 @@
#include "src/core/lib/gprpp/time_util.h"
+#include <stdint.h>
+#include <time.h>
+
#include <grpc/support/log.h>
+#include <grpc/support/time.h>
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/time_util.h b/contrib/libs/grpc/src/core/lib/gprpp/time_util.h
index 4ad0997997..39cf3b4af3 100644
--- a/contrib/libs/grpc/src/core/lib/gprpp/time_util.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/time_util.h
@@ -21,7 +21,7 @@
#include "y_absl/time/time.h"
-#include <grpc/support/time.h>
+#include <grpc/impl/codegen/gpr_types.h>
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/unique_type_name.h b/contrib/libs/grpc/src/core/lib/gprpp/unique_type_name.h
new file mode 100644
index 0000000000..41245e97d9
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/gprpp/unique_type_name.h
@@ -0,0 +1,105 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_LIB_GPRPP_UNIQUE_TYPE_NAME_H
+#define GRPC_CORE_LIB_GPRPP_UNIQUE_TYPE_NAME_H
+
+#include <grpc/support/port_platform.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/lib/gpr/useful.h"
+
+// Provides a type name that is unique by instance rather than by
+// string content. This is useful in cases where there are different
+// implementations of a given interface that need to be differentiated from
+// each other for down-casting purposes, where it is undesirable to provide
+// a registry to avoid name collisions.
+//
+// Expected usage:
+/*
+// Interface has a virtual method that returns a UniqueTypeName.
+class Interface {
+ public:
+ virtual ~Interface() = default;
+ virtual UniqueTypeName type() const = 0;
+};
+
+// Implementation uses a static factory instance to return the same
+// UniqueTypeName for every instance.
+class FooImplementation : public Interface {
+ public:
+ UniqueTypeName type() const override {
+ static UniqueTypeName::Factory kFactory("Foo");
+ return kFactory.Create();
+ }
+};
+*/
+
+namespace grpc_core {
+
+class UniqueTypeName {
+ public:
+ // Factory class. There should be a single static instance of this
+ // for each unique type name.
+ class Factory {
+ public:
+ explicit Factory(y_absl::string_view name) : name_(new TString(name)) {}
+
+ Factory(const Factory&) = delete;
+ Factory& operator=(const Factory&) = delete;
+
+ UniqueTypeName Create() { return UniqueTypeName(*name_); }
+
+ private:
+ TString* name_;
+ };
+
+ // Copyable.
+ UniqueTypeName(const UniqueTypeName& other) : name_(other.name_) {}
+ UniqueTypeName& operator=(const UniqueTypeName& other) {
+ name_ = other.name_;
+ return *this;
+ }
+
+ bool operator==(const UniqueTypeName& other) const {
+ return name_.data() == other.name_.data();
+ }
+ bool operator!=(const UniqueTypeName& other) const {
+ return name_.data() != other.name_.data();
+ }
+ bool operator<(const UniqueTypeName& other) const {
+ return name_.data() < other.name_.data();
+ }
+
+ int Compare(const UniqueTypeName& other) const {
+ return QsortCompare(name_.data(), other.name_.data());
+ }
+
+ y_absl::string_view name() const { return name_; }
+
+ private:
+ explicit UniqueTypeName(y_absl::string_view name) : name_(name) {}
+
+ y_absl::string_view name_;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_GPRPP_UNIQUE_TYPE_NAME_H
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/validation_errors.cc b/contrib/libs/grpc/src/core/lib/gprpp/validation_errors.cc
new file mode 100644
index 0000000000..ed32b5583a
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/gprpp/validation_errors.cc
@@ -0,0 +1,61 @@
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/gprpp/validation_errors.h"
+
+#include <algorithm>
+#include <utility>
+
+#include "y_absl/status/status.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/strip.h"
+
+namespace grpc_core {
+
+void ValidationErrors::PushField(y_absl::string_view ext) {
+ // Skip leading '.' for top-level field names.
+ if (fields_.empty()) y_absl::ConsumePrefix(&ext, ".");
+ fields_.emplace_back(TString(ext));
+}
+
+void ValidationErrors::PopField() { fields_.pop_back(); }
+
+void ValidationErrors::AddError(y_absl::string_view error) {
+ field_errors_[y_absl::StrJoin(fields_, "")].emplace_back(error);
+}
+
+bool ValidationErrors::FieldHasErrors() const {
+ return field_errors_.find(y_absl::StrJoin(fields_, "")) != field_errors_.end();
+}
+
+y_absl::Status ValidationErrors::status(y_absl::string_view prefix) const {
+ if (field_errors_.empty()) return y_absl::OkStatus();
+ std::vector<TString> errors;
+ for (const auto& p : field_errors_) {
+ if (p.second.size() > 1) {
+ errors.emplace_back(y_absl::StrCat("field:", p.first, " errors:[",
+ y_absl::StrJoin(p.second, "; "), "]"));
+ } else {
+ errors.emplace_back(
+ y_absl::StrCat("field:", p.first, " error:", p.second[0]));
+ }
+ }
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat(prefix, ": [", y_absl::StrJoin(errors, "; "), "]"));
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/gprpp/validation_errors.h b/contrib/libs/grpc/src/core/lib/gprpp/validation_errors.h
new file mode 100644
index 0000000000..4923c4f90c
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/gprpp/validation_errors.h
@@ -0,0 +1,111 @@
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_GPRPP_VALIDATION_ERRORS_H
+#define GRPC_CORE_LIB_GPRPP_VALIDATION_ERRORS_H
+
+#include <grpc/support/port_platform.h>
+
+#include <stddef.h>
+
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
+#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
+
+namespace grpc_core {
+
+// Tracks errors that occur during validation of a data structure (e.g.,
+// a JSON object or protobuf message). Errors are tracked based on
+// which field they are associated with. If at least one error occurs
+// during validation, the validation failed.
+//
+// Example usage:
+//
+// y_absl::StatusOr<TString> GetFooBar(const Json::Object& json) {
+// ValidationErrors errors;
+// {
+// ValidationErrors::ScopedField field("foo");
+// auto it = json.object_value().find("foo");
+// if (it == json.object_value().end()) {
+// errors.AddError("field not present");
+// } else if (it->second.type() != Json::Type::OBJECT) {
+// errors.AddError("must be a JSON object");
+// } else {
+// const Json& foo = it->second;
+// ValidationErrors::ScopedField field(".bar");
+// auto it = foo.object_value().find("bar");
+// if (it == json.object_value().end()) {
+// errors.AddError("field not present");
+// } else if (it->second.type() != Json::Type::STRING) {
+// errors.AddError("must be a JSON string");
+// } else {
+// return it->second.string_value();
+// }
+// }
+// }
+// return errors.status("errors validating foo.bar");
+// }
+class ValidationErrors {
+ public:
+ // Pushes a field name onto the stack at construction and pops it off
+ // of the stack at destruction.
+ class ScopedField {
+ public:
+ ScopedField(ValidationErrors* errors, y_absl::string_view field_name)
+ : errors_(errors) {
+ errors_->PushField(field_name);
+ }
+ ~ScopedField() { errors_->PopField(); }
+
+ private:
+ ValidationErrors* errors_;
+ };
+
+ // Records that we've encountered an error associated with the current
+ // field.
+ void AddError(y_absl::string_view error) GPR_ATTRIBUTE_NOINLINE;
+
+ // Returns true if the current field has errors.
+ bool FieldHasErrors() const GPR_ATTRIBUTE_NOINLINE;
+
+ // Returns the resulting status of parsing.
+ y_absl::Status status(y_absl::string_view prefix) const;
+
+ // Returns true if there are no errors.
+ bool ok() const { return field_errors_.empty(); }
+
+ size_t size() const { return field_errors_.size(); }
+
+ private:
+ // Pushes a field name onto the stack.
+ void PushField(y_absl::string_view ext) GPR_ATTRIBUTE_NOINLINE;
+ // Pops a field name off of the stack.
+ void PopField() GPR_ATTRIBUTE_NOINLINE;
+
+ // Errors that we have encountered so far, keyed by field name.
+ // TODO(roth): If we don't actually have any fields for which we
+ // report more than one error, simplify this data structure.
+ std::map<TString /*field_name*/, std::vector<TString>> field_errors_;
+ // Stack of field names indicating the field that we are currently
+ // validating.
+ std::vector<TString> fields_;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_GPRPP_VALIDATION_ERRORS_H
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/work_serializer.cc b/contrib/libs/grpc/src/core/lib/gprpp/work_serializer.cc
index ac98962bab..56fa6cce42 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/work_serializer.cc
+++ b/contrib/libs/grpc/src/core/lib/gprpp/work_serializer.cc
@@ -1,29 +1,45 @@
-/*
- *
- * Copyright 2019 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
+//
+// Copyright 2019 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
#include <grpc/support/port_platform.h>
-#include "src/core/lib/iomgr/work_serializer.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+
+#include <stdint.h>
+
+#include <atomic>
+#include <functional>
+#include <memory>
+#include <utility>
+
+#include <grpc/support/log.h>
+
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/mpscq.h"
+#include "src/core/lib/gprpp/orphanable.h"
namespace grpc_core {
DebugOnlyTraceFlag grpc_work_serializer_trace(false, "work_serializer");
+//
+// WorkSerializer::WorkSerializerImpl
+//
+
class WorkSerializer::WorkSerializerImpl : public Orphanable {
public:
void Run(std::function<void()> callback, const DebugLocation& location);
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/work_serializer.h b/contrib/libs/grpc/src/core/lib/gprpp/work_serializer.h
index b742a23cb4..2ee84d6ad7 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/work_serializer.h
+++ b/contrib/libs/grpc/src/core/lib/gprpp/work_serializer.h
@@ -1,37 +1,30 @@
-/*
- *
- * Copyright 2019 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
+//
+// Copyright 2019 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_LIB_GPRPP_WORK_SERIALIZER_H
+#define GRPC_CORE_LIB_GPRPP_WORK_SERIALIZER_H
#include <grpc/support/port_platform.h>
-#include <atomic>
#include <functional>
-#include "y_absl/synchronization/mutex.h"
+#include "y_absl/base/thread_annotations.h"
-#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/debug_location.h"
-#include "src/core/lib/gprpp/mpscq.h"
#include "src/core/lib/gprpp/orphanable.h"
-#include "src/core/lib/gprpp/ref_counted.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
-
-#ifndef GRPC_CORE_LIB_IOMGR_WORK_SERIALIZER_H
-#define GRPC_CORE_LIB_IOMGR_WORK_SERIALIZER_H
namespace grpc_core {
@@ -88,6 +81,6 @@ class Y_ABSL_LOCKABLE WorkSerializer {
OrphanablePtr<WorkSerializerImpl> impl_;
};
-} /* namespace grpc_core */
+} // namespace grpc_core
-#endif /* GRPC_CORE_LIB_IOMGR_WORK_SERIALIZER_H */
+#endif // GRPC_CORE_LIB_GPRPP_WORK_SERIALIZER_H
diff --git a/contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper.h b/contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper.h
new file mode 100644
index 0000000000..88d6705d05
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper.h
@@ -0,0 +1,54 @@
+/*
+ *
+ * Copyright 2017 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_H
+#define GRPC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_H
+
+#include <grpc/support/port_platform.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/iomgr/resolved_address.h"
+
+namespace grpc_core {
+
+class ProxyMapperInterface {
+ public:
+ virtual ~ProxyMapperInterface() = default;
+
+ /// Determines the proxy name to resolve for \a server_uri.
+ /// If no proxy is needed, returns nullopt.
+ /// Otherwise, updates \a args and returns the name to resolve.
+ virtual y_absl::optional<TString> MapName(y_absl::string_view server_uri,
+ ChannelArgs* args) = 0;
+
+ /// Determines the proxy address to use to contact \a address.
+ /// If no proxy is needed, returns nullopt.
+ /// Otherwise, updates \a args, and returns a new address.
+ virtual y_absl::optional<grpc_resolved_address> MapAddress(
+ const grpc_resolved_address& address, ChannelArgs* args) = 0;
+};
+
+} // namespace grpc_core
+
+#endif /* GRPC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_H */
diff --git a/contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper_registry.cc b/contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper_registry.cc
new file mode 100644
index 0000000000..ae6371e72a
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper_registry.cc
@@ -0,0 +1,71 @@
+/*
+ *
+ * Copyright 2017 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/handshaker/proxy_mapper_registry.h"
+
+#include <algorithm>
+#include <memory>
+#include <utility>
+#include <vector>
+
+#include "y_absl/types/optional.h"
+
+namespace grpc_core {
+
+void ProxyMapperRegistry::Builder::Register(
+ bool at_start, std::unique_ptr<ProxyMapperInterface> mapper) {
+ if (at_start) {
+ mappers_.insert(mappers_.begin(), std::move(mapper));
+ } else {
+ mappers_.emplace_back(std::move(mapper));
+ }
+}
+
+ProxyMapperRegistry ProxyMapperRegistry::Builder::Build() {
+ ProxyMapperRegistry registry;
+ registry.mappers_ = std::move(mappers_);
+ return registry;
+}
+
+y_absl::optional<TString> ProxyMapperRegistry::MapName(
+ y_absl::string_view server_uri, ChannelArgs* args) const {
+ ChannelArgs args_backup = *args;
+ for (const auto& mapper : mappers_) {
+ *args = args_backup;
+ auto r = mapper->MapName(server_uri, args);
+ if (r.has_value()) return r;
+ }
+ *args = args_backup;
+ return y_absl::nullopt;
+}
+
+y_absl::optional<grpc_resolved_address> ProxyMapperRegistry::MapAddress(
+ const grpc_resolved_address& address, ChannelArgs* args) const {
+ ChannelArgs args_backup = *args;
+ for (const auto& mapper : mappers_) {
+ *args = args_backup;
+ auto r = mapper->MapAddress(address, args);
+ if (r.has_value()) return r;
+ }
+ *args = args_backup;
+ return y_absl::nullopt;
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper_registry.h b/contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper_registry.h
new file mode 100644
index 0000000000..ef9da438f3
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/handshaker/proxy_mapper_registry.h
@@ -0,0 +1,76 @@
+/*
+ *
+ * Copyright 2017 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef GRPC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_REGISTRY_H
+#define GRPC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_REGISTRY_H
+
+#include <grpc/support/port_platform.h>
+
+#include <algorithm>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/handshaker/proxy_mapper.h"
+#include "src/core/lib/iomgr/resolved_address.h"
+
+namespace grpc_core {
+
+class ProxyMapperRegistry {
+ using ProxyMapperList = std::vector<std::unique_ptr<ProxyMapperInterface>>;
+
+ public:
+ class Builder {
+ public:
+ /// Registers a new proxy mapper.
+ /// If \a at_start is true, the new mapper will be at the beginning of
+ /// the list. Otherwise, it will be added to the end.
+ void Register(bool at_start, std::unique_ptr<ProxyMapperInterface> mapper);
+
+ ProxyMapperRegistry Build();
+
+ private:
+ ProxyMapperList mappers_;
+ };
+
+ ~ProxyMapperRegistry() = default;
+ ProxyMapperRegistry(const ProxyMapperRegistry&) = delete;
+ ProxyMapperRegistry& operator=(const ProxyMapperRegistry&) = delete;
+ ProxyMapperRegistry(ProxyMapperRegistry&&) = default;
+ ProxyMapperRegistry& operator=(ProxyMapperRegistry&&) = default;
+
+ y_absl::optional<TString> MapName(y_absl::string_view server_uri,
+ ChannelArgs* args) const;
+
+ y_absl::optional<grpc_resolved_address> MapAddress(
+ const grpc_resolved_address& address, ChannelArgs* args) const;
+
+ private:
+ ProxyMapperRegistry() = default;
+
+ ProxyMapperList mappers_;
+};
+
+} // namespace grpc_core
+
+#endif /* GRPC_CORE_LIB_HANDSHAKER_PROXY_MAPPER_REGISTRY_H */
diff --git a/contrib/libs/grpc/src/core/lib/http/format_request.cc b/contrib/libs/grpc/src/core/lib/http/format_request.cc
index d8fe7eb4cf..d8075fb67e 100644
--- a/contrib/libs/grpc/src/core/lib/http/format_request.cc
+++ b/contrib/libs/grpc/src/core/lib/http/format_request.cc
@@ -20,28 +20,29 @@
#include "src/core/lib/http/format_request.h"
-#include <stdarg.h>
#include <stdio.h>
#include <string.h>
+#include <algorithm>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include <vector>
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
#include <grpc/slice.h>
-#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/http/httpcli.h"
static void fill_common_header(const grpc_http_request* request,
const char* host, const char* path,
bool connection_close,
std::vector<TString>* buf) {
buf->push_back(path);
- buf->push_back(" HTTP/1.0\r\n");
- /* just in case some crazy server really expects HTTP/1.1 */
+ buf->push_back(" HTTP/1.1\r\n");
buf->push_back("Host: ");
buf->push_back(host);
buf->push_back("\r\n");
@@ -96,6 +97,35 @@ grpc_slice grpc_httpcli_format_post_request(const grpc_http_request* request,
return grpc_slice_from_copied_buffer(req.data(), req.size());
}
+grpc_slice grpc_httpcli_format_put_request(const grpc_http_request* request,
+ const char* host, const char* path) {
+ std::vector<TString> out;
+ out.push_back("PUT ");
+ fill_common_header(request, host, path, true, &out);
+ if (request->body != nullptr) {
+ bool has_content_type = false;
+ for (size_t i = 0; i < request->hdr_count; i++) {
+ if (strcmp(request->hdrs[i].key, "Content-Type") == 0) {
+ has_content_type = true;
+ break;
+ }
+ }
+ if (!has_content_type) {
+ out.push_back("Content-Type: text/plain\r\n");
+ }
+ out.push_back(
+ y_absl::StrFormat("Content-Length: %lu\r\n",
+ static_cast<unsigned long>(request->body_length)));
+ }
+ out.push_back("\r\n");
+ TString req = y_absl::StrJoin(out, "");
+ if (request->body != nullptr) {
+ y_absl::StrAppend(&req,
+ y_absl::string_view(request->body, request->body_length));
+ }
+ return grpc_slice_from_copied_buffer(req.data(), req.size());
+}
+
grpc_slice grpc_httpcli_format_connect_request(const grpc_http_request* request,
const char* host,
const char* path) {
diff --git a/contrib/libs/grpc/src/core/lib/http/format_request.h b/contrib/libs/grpc/src/core/lib/http/format_request.h
index 440bde907e..5dccb1e067 100644
--- a/contrib/libs/grpc/src/core/lib/http/format_request.h
+++ b/contrib/libs/grpc/src/core/lib/http/format_request.h
@@ -23,12 +23,14 @@
#include <grpc/slice.h>
-#include "src/core/lib/http/httpcli.h"
+#include "src/core/lib/http/parser.h"
grpc_slice grpc_httpcli_format_get_request(const grpc_http_request* request,
const char* host, const char* path);
grpc_slice grpc_httpcli_format_post_request(const grpc_http_request* request,
const char* host, const char* path);
+grpc_slice grpc_httpcli_format_put_request(const grpc_http_request* request,
+ const char* host, const char* path);
grpc_slice grpc_httpcli_format_connect_request(const grpc_http_request* request,
const char* host,
const char* path);
diff --git a/contrib/libs/grpc/src/core/lib/http/httpcli.cc b/contrib/libs/grpc/src/core/lib/http/httpcli.cc
index b084530dca..7efc6235e5 100644
--- a/contrib/libs/grpc/src/core/lib/http/httpcli.cc
+++ b/contrib/libs/grpc/src/core/lib/http/httpcli.cc
@@ -20,33 +20,40 @@
#include "src/core/lib/http/httpcli.h"
-#include <string.h>
+#include <limits.h>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
#include "y_absl/functional/bind_front.h"
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_format.h"
-#include "y_absl/strings/string_view.h"
#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/slice_buffer.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/channel/channel_args_preconditioning.h"
+#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/http/format_request.h"
#include "src/core/lib/http/parser.h"
#include "src/core/lib/iomgr/endpoint.h"
#include "src/core/lib/iomgr/iomgr_internal.h"
+#include "src/core/lib/iomgr/pollset_set.h"
#include "src/core/lib/iomgr/resolve_address.h"
-#include "src/core/lib/iomgr/tcp_client.h"
#include "src/core/lib/resource_quota/api.h"
+#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/transport/handshaker_registry.h"
+#include "src/core/lib/transport/tcp_connect_handshaker.h"
namespace grpc_core {
@@ -54,6 +61,7 @@ namespace {
grpc_httpcli_get_override g_get_override;
grpc_httpcli_post_override g_post_override;
+grpc_httpcli_put_override g_put_override;
void (*g_test_only_on_handshake_done_intercept)(HttpRequest* req);
} // namespace
@@ -108,10 +116,36 @@ OrphanablePtr<HttpRequest> HttpRequest::Post(
std::move(channel_creds));
}
+OrphanablePtr<HttpRequest> HttpRequest::Put(
+ URI uri, const grpc_channel_args* channel_args,
+ grpc_polling_entity* pollent, const grpc_http_request* request,
+ Timestamp deadline, grpc_closure* on_done, grpc_http_response* response,
+ RefCountedPtr<grpc_channel_credentials> channel_creds) {
+ y_absl::optional<std::function<void()>> test_only_generate_response;
+ if (g_put_override != nullptr) {
+ test_only_generate_response = [request, uri, deadline, on_done,
+ response]() {
+ g_put_override(request, uri.authority().c_str(), uri.path().c_str(),
+ request->body, request->body_length, deadline, on_done,
+ response);
+ };
+ }
+ TString name =
+ y_absl::StrFormat("HTTP:PUT:%s:%s", uri.authority(), uri.path());
+ const grpc_slice request_text = grpc_httpcli_format_put_request(
+ request, uri.authority().c_str(), uri.path().c_str());
+ return MakeOrphanable<HttpRequest>(
+ std::move(uri), request_text, response, deadline, channel_args, on_done,
+ pollent, name.c_str(), std::move(test_only_generate_response),
+ std::move(channel_creds));
+}
+
void HttpRequest::SetOverride(grpc_httpcli_get_override get,
- grpc_httpcli_post_override post) {
+ grpc_httpcli_post_override post,
+ grpc_httpcli_put_override put) {
g_get_override = get;
g_post_override = post;
+ g_put_override = put;
}
void HttpRequest::TestOnlySetOnHandshakeDoneIntercept(
@@ -130,7 +164,9 @@ HttpRequest::HttpRequest(
deadline_(deadline),
channel_args_(CoreConfiguration::Get()
.channel_args_preconditioning()
- .PreconditionChannelArgs(channel_args)),
+ .PreconditionChannelArgs(channel_args)
+ .ToC()
+ .release()),
channel_creds_(std::move(channel_creds)),
on_done_(on_done),
resource_quota_(ResourceQuotaFromChannelArgs(channel_args_)),
@@ -151,10 +187,6 @@ HttpRequest::HttpRequest(
grpc_schedule_on_exec_ctx);
GPR_ASSERT(pollent);
grpc_polling_entity_add_to_pollset_set(pollent, pollset_set_);
- // Create the DNS resolver. We'll start resolving when Start is called.
- dns_request_ = GetDNSResolver()->ResolveName(
- uri_.authority(), uri_.scheme(), pollset_set_,
- y_absl::bind_front(&HttpRequest::OnResolved, this));
}
HttpRequest::~HttpRequest() {
@@ -178,7 +210,10 @@ void HttpRequest::Start() {
return;
}
Ref().release(); // ref held by pending DNS resolution
- dns_request_->Start();
+ dns_request_handle_ = GetDNSResolver()->LookupHostname(
+ y_absl::bind_front(&HttpRequest::OnResolved, this), uri_.authority(),
+ uri_.scheme(), kDefaultDNSRequestTimeout, pollset_set_,
+ /*name_server=*/"");
}
void HttpRequest::Orphan() {
@@ -186,21 +221,17 @@ void HttpRequest::Orphan() {
MutexLock lock(&mu_);
GPR_ASSERT(!cancelled_);
cancelled_ = true;
- dns_request_.reset(); // cancel potentially pending DNS resolution
- if (connecting_) {
- // gRPC's TCP connection establishment API doesn't currently have
- // a mechanism for cancellation. So invoke the user callback now. The TCP
- // connection will eventually complete (at least within its deadline), and
- // we'll simply unref ourselves at that point.
- // TODO(apolcyn): fix this to cancel the TCP connection attempt when
- // an API to do so exists.
- Finish(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
- "HTTP request cancelled during TCP connection establishment",
- &overall_error_, 1));
+ // cancel potentially pending DNS resolution.
+ if (dns_request_handle_.has_value() &&
+ GetDNSResolver()->Cancel(dns_request_handle_.value())) {
+ Finish(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "cancelled during DNS resolution"));
+ Unref();
}
if (handshake_mgr_ != nullptr) {
+ // Shutdown will cancel any ongoing tcp connect.
handshake_mgr_->Shutdown(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "HTTP request cancelled during security handshake"));
+ "HTTP request cancelled during handshake"));
}
if (own_endpoint_ && ep_ != nullptr) {
grpc_endpoint_shutdown(
@@ -211,15 +242,17 @@ void HttpRequest::Orphan() {
}
void HttpRequest::AppendError(grpc_error_handle error) {
- if (overall_error_ == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(overall_error_)) {
overall_error_ =
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed HTTP/1 client request");
}
const grpc_resolved_address* addr = &addresses_[next_address_ - 1];
- TString addr_text = grpc_sockaddr_to_uri(addr);
+ auto addr_text = grpc_sockaddr_to_uri(addr);
overall_error_ = grpc_error_add_child(
overall_error_,
- grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS, addr_text));
+ grpc_error_set_str(
+ error, GRPC_ERROR_STR_TARGET_ADDRESS,
+ addr_text.ok() ? addr_text.value() : addr_text.status().ToString()));
}
void HttpRequest::OnReadInternal(grpc_error_handle error) {
@@ -228,7 +261,7 @@ void HttpRequest::OnReadInternal(grpc_error_handle error) {
have_read_byte_ = 1;
grpc_error_handle err =
grpc_http_parser_parse(&parser_, incoming_.slices[i], nullptr);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
Finish(err);
return;
}
@@ -237,7 +270,7 @@ void HttpRequest::OnReadInternal(grpc_error_handle error) {
if (cancelled_) {
Finish(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"HTTP1 request cancelled during read", &overall_error_, 1));
- } else if (error == GRPC_ERROR_NONE) {
+ } else if (GRPC_ERROR_IS_NONE(error)) {
DoRead();
} else if (!have_read_byte_) {
NextAddress(GRPC_ERROR_REF(error));
@@ -250,7 +283,7 @@ void HttpRequest::ContinueDoneWriteAfterScheduleOnExecCtx(
void* arg, grpc_error_handle error) {
RefCountedPtr<HttpRequest> req(static_cast<HttpRequest*>(arg));
MutexLock lock(&req->mu_);
- if (error == GRPC_ERROR_NONE && !req->cancelled_) {
+ if (GRPC_ERROR_IS_NONE(error) && !req->cancelled_) {
req->OnWritten();
} else {
req->NextAddress(GRPC_ERROR_REF(error));
@@ -261,7 +294,8 @@ void HttpRequest::StartWrite() {
grpc_slice_ref_internal(request_text_);
grpc_slice_buffer_add(&outgoing_, request_text_);
Ref().release(); // ref held by pending write
- grpc_endpoint_write(ep_, &outgoing_, &done_write_, nullptr);
+ grpc_endpoint_write(ep_, &outgoing_, &done_write_, nullptr,
+ /*max_frame_size=*/INT_MAX);
}
void HttpRequest::OnHandshakeDone(void* arg, grpc_error_handle error) {
@@ -274,86 +308,58 @@ void HttpRequest::OnHandshakeDone(void* arg, grpc_error_handle error) {
}
MutexLock lock(&req->mu_);
req->own_endpoint_ = true;
- if (error != GRPC_ERROR_NONE) {
- gpr_log(GPR_ERROR, "Secure transport setup failed: %s",
- grpc_error_std_string(error).c_str());
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ req->handshake_mgr_.reset();
req->NextAddress(GRPC_ERROR_REF(error));
return;
}
// Handshake completed, so we own fields in args
- grpc_channel_args_destroy(args->args);
grpc_slice_buffer_destroy_internal(args->read_buffer);
gpr_free(args->read_buffer);
req->ep_ = args->endpoint;
+ req->handshake_mgr_.reset();
if (req->cancelled_) {
req->NextAddress(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "HTTP request cancelled during security handshake"));
+ "HTTP request cancelled during handshake"));
return;
}
req->StartWrite();
}
-void HttpRequest::OnConnected(void* arg, grpc_error_handle error) {
- RefCountedPtr<HttpRequest> req(static_cast<HttpRequest*>(arg));
- MutexLock lock(&req->mu_);
- req->connecting_ = false;
- req->own_endpoint_ = true;
- if (req->cancelled_) {
- // since we were cancelled while connecting, Finish has already
- // been called.
- return;
- }
- if (!req->ep_) {
- req->NextAddress(GRPC_ERROR_REF(error));
- return;
- }
- // TODO(yihuaz): treating nullptr channel_creds_ as insecure is
- // a hack used to support the port server client (a test utility) in
- // unsecure builds (when no definition of grpc_insecure_credentials_create
- // exists). We can remove this hack and unconditionally assume a valid
- // channel_creds_ object after unsecure builds are deleted, in
- // https://github.com/grpc/grpc/pull/25586.
- if (req->channel_creds_ == nullptr) {
- gpr_log(GPR_DEBUG,
- "HTTP request skipping handshake because creds are null");
- req->StartWrite();
- return;
- }
+void HttpRequest::DoHandshake(const grpc_resolved_address* addr) {
// Create the security connector using the credentials and target name.
- grpc_channel_args* new_args_from_connector = nullptr;
+ ChannelArgs args = ChannelArgs::FromC(channel_args_);
RefCountedPtr<grpc_channel_security_connector> sc =
- req->channel_creds_->create_security_connector(
- nullptr /*call_creds*/, req->uri_.authority().c_str(),
- req->channel_args_, &new_args_from_connector);
+ channel_creds_->create_security_connector(
+ nullptr /*call_creds*/, uri_.authority().c_str(), &args);
if (sc == nullptr) {
- req->Finish(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
- "failed to create security connector", &req->overall_error_, 1));
+ Finish(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "failed to create security connector", &overall_error_, 1));
+ return;
+ }
+ y_absl::StatusOr<TString> address = grpc_sockaddr_to_uri(addr);
+ if (!address.ok()) {
+ Finish(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Failed to extract URI from address", &overall_error_, 1));
return;
}
- grpc_arg security_connector_arg = grpc_security_connector_to_arg(sc.get());
- grpc_channel_args* new_args = grpc_channel_args_copy_and_add(
- new_args_from_connector != nullptr ? new_args_from_connector
- : req->channel_args_,
- &security_connector_arg, 1);
- grpc_channel_args_destroy(new_args_from_connector);
+ args = args.SetObject(std::move(sc))
+ .Set(GRPC_ARG_TCP_HANDSHAKER_RESOLVED_ADDRESS, address.value());
// Start the handshake
- req->handshake_mgr_ = MakeRefCounted<HandshakeManager>();
+ handshake_mgr_ = MakeRefCounted<HandshakeManager>();
CoreConfiguration::Get().handshaker_registry().AddHandshakers(
- HANDSHAKER_CLIENT, new_args, req->pollset_set_,
- req->handshake_mgr_.get());
- req->Ref().release(); // ref held by pending handshake
- grpc_endpoint* ep = req->ep_;
- req->ep_ = nullptr;
- req->own_endpoint_ = false;
- req->handshake_mgr_->DoHandshake(ep, new_args, req->deadline_,
- /*acceptor=*/nullptr, OnHandshakeDone,
- /*user_data=*/req.get());
- sc.reset(DEBUG_LOCATION, "httpcli");
- grpc_channel_args_destroy(new_args);
+ HANDSHAKER_CLIENT, args, pollset_set_, handshake_mgr_.get());
+ Ref().release(); // ref held by pending handshake
+ grpc_endpoint* ep = ep_;
+ ep_ = nullptr;
+ own_endpoint_ = false;
+ handshake_mgr_->DoHandshake(ep, args, deadline_,
+ /*acceptor=*/nullptr, OnHandshakeDone,
+ /*user_data=*/this);
}
void HttpRequest::NextAddress(grpc_error_handle error) {
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
AppendError(error);
}
if (cancelled_) {
@@ -367,28 +373,23 @@ void HttpRequest::NextAddress(grpc_error_handle error) {
return;
}
const grpc_resolved_address* addr = &addresses_[next_address_++];
- GRPC_CLOSURE_INIT(&connected_, OnConnected, this, grpc_schedule_on_exec_ctx);
- connecting_ = true;
- own_endpoint_ = false;
- Ref().release(); // ref held by pending connect
- grpc_tcp_client_connect(&connected_, &ep_, pollset_set_, channel_args_, addr,
- deadline_);
+ DoHandshake(addr);
}
void HttpRequest::OnResolved(
y_absl::StatusOr<std::vector<grpc_resolved_address>> addresses_or) {
RefCountedPtr<HttpRequest> unreffer(this);
MutexLock lock(&mu_);
- dns_request_.reset();
- if (!addresses_or.ok()) {
- Finish(absl_status_to_grpc_error(addresses_or.status()));
- return;
- }
+ dns_request_handle_.reset();
if (cancelled_) {
Finish(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"cancelled during DNS resolution"));
return;
}
+ if (!addresses_or.ok()) {
+ Finish(absl_status_to_grpc_error(addresses_or.status()));
+ return;
+ }
addresses_ = std::move(*addresses_or);
next_address_ = 0;
NextAddress(GRPC_ERROR_NONE);
diff --git a/contrib/libs/grpc/src/core/lib/http/httpcli.h b/contrib/libs/grpc/src/core/lib/http/httpcli.h
index 5cc1014b92..078c794379 100644
--- a/contrib/libs/grpc/src/core/lib/http/httpcli.h
+++ b/contrib/libs/grpc/src/core/lib/http/httpcli.h
@@ -23,18 +23,34 @@
#include <stddef.h>
-#include <grpc/support/time.h>
+#include <functional>
+#include <vector>
-#include "src/core/lib/channel/handshaker.h"
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/grpc.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
+
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/http/parser.h"
+#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/iomgr/iomgr_internal.h"
#include "src/core/lib/iomgr/polling_entity.h"
-#include "src/core/lib/iomgr/pollset_set.h"
#include "src/core/lib/iomgr/resolve_address.h"
+#include "src/core/lib/iomgr/resolved_address.h"
#include "src/core/lib/resource_quota/resource_quota.h"
-#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/transport/handshaker.h"
#include "src/core/lib/uri/uri_parser.h"
/* User agent this library reports */
@@ -50,6 +66,10 @@ typedef int (*grpc_httpcli_post_override)(
const grpc_http_request* request, const char* host, const char* path,
const char* body_bytes, size_t body_size, grpc_core::Timestamp deadline,
grpc_closure* on_complete, grpc_http_response* response);
+typedef int (*grpc_httpcli_put_override)(
+ const grpc_http_request* request, const char* host, const char* path,
+ const char* body_bytes, size_t body_size, grpc_core::Timestamp deadline,
+ grpc_closure* on_complete, grpc_http_response* response);
namespace grpc_core {
@@ -112,6 +132,32 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
RefCountedPtr<grpc_channel_credentials> channel_creds)
GRPC_MUST_USE_RESULT;
+ // Asynchronously perform a HTTP PUT.
+ // 'uri' is the target to make the request to. The scheme field is used to
+ // determine the port number. The authority field is the target host. The
+ // path field determines the path of the request. No other fields are used.
+ // 'args' are optional channel args for the request.
+ // 'pollent' indicates a grpc_polling_entity that is interested in the result
+ // of the post - work on this entity may be used to progress the post
+ // operation
+ // 'request' contains request parameters - these are caller owned and can be
+ // destroyed once the call returns
+ // 'deadline' contains a deadline for the request (or gpr_inf_future)
+ // 'on_done' is a callback to report results to
+ // 'channel_creds' are used to configurably secure the connection.
+ // For insecure requests, use grpc_insecure_credentials_create.
+ // For secure requests, use CreateHttpRequestSSLCredentials().
+ // nullptr is treated as insecure credentials.
+ // TODO(apolcyn): disallow nullptr as a value after unsecure builds
+ // are removed.
+ // Does not support ?var1=val1&var2=val2 in the path.
+ static OrphanablePtr<HttpRequest> Put(
+ URI uri, const grpc_channel_args* args, grpc_polling_entity* pollent,
+ const grpc_http_request* request, Timestamp deadline,
+ grpc_closure* on_done, grpc_http_response* response,
+ RefCountedPtr<grpc_channel_credentials> channel_creds)
+ GRPC_MUST_USE_RESULT;
+
HttpRequest(URI uri, const grpc_slice& request_text,
grpc_http_response* response, Timestamp deadline,
const grpc_channel_args* channel_args, grpc_closure* on_done,
@@ -126,7 +172,8 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
void Orphan() override;
static void SetOverride(grpc_httpcli_get_override get,
- grpc_httpcli_post_override post);
+ grpc_httpcli_post_override post,
+ grpc_httpcli_put_override put);
static void TestOnlySetOnHandshakeDoneIntercept(
void (*intercept)(HttpRequest* req));
@@ -141,7 +188,8 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
void DoRead() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) {
Ref().release(); // ref held by pending read
- grpc_endpoint_read(ep_, &incoming_, &on_read_, /*urgent=*/true);
+ grpc_endpoint_read(ep_, &incoming_, &on_read_, /*urgent=*/true,
+ /*min_progress_size=*/1);
}
static void OnRead(void* user_data, grpc_error_handle error) {
@@ -179,7 +227,8 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
static void OnHandshakeDone(void* arg, grpc_error_handle error);
- static void OnConnected(void* arg, grpc_error_handle error);
+ void DoHandshake(const grpc_resolved_address* addr)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
void NextAddress(grpc_error_handle error) Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
@@ -195,7 +244,6 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
grpc_closure continue_on_read_after_schedule_on_exec_ctx_;
grpc_closure done_write_;
grpc_closure continue_done_write_after_schedule_on_exec_ctx_;
- grpc_closure connected_;
grpc_endpoint* ep_ = nullptr;
grpc_closure* on_done_;
ResourceQuotaRefPtr resource_quota_;
@@ -206,7 +254,6 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
RefCountedPtr<HandshakeManager> handshake_mgr_ Y_ABSL_GUARDED_BY(mu_);
bool own_endpoint_ Y_ABSL_GUARDED_BY(mu_) = true;
bool cancelled_ Y_ABSL_GUARDED_BY(mu_) = false;
- bool connecting_ Y_ABSL_GUARDED_BY(mu_) = false;
grpc_http_parser parser_ Y_ABSL_GUARDED_BY(mu_);
std::vector<grpc_resolved_address> addresses_ Y_ABSL_GUARDED_BY(mu_);
size_t next_address_ Y_ABSL_GUARDED_BY(mu_) = 0;
@@ -215,7 +262,8 @@ class HttpRequest : public InternallyRefCounted<HttpRequest> {
grpc_slice_buffer incoming_ Y_ABSL_GUARDED_BY(mu_);
grpc_slice_buffer outgoing_ Y_ABSL_GUARDED_BY(mu_);
grpc_error_handle overall_error_ Y_ABSL_GUARDED_BY(mu_) = GRPC_ERROR_NONE;
- OrphanablePtr<DNSResolver::Request> dns_request_ Y_ABSL_GUARDED_BY(mu_);
+ y_absl::optional<DNSResolver::TaskHandle> dns_request_handle_
+ Y_ABSL_GUARDED_BY(mu_) = DNSResolver::kNullHandle;
};
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/http/httpcli_security_connector.cc b/contrib/libs/grpc/src/core/lib/http/httpcli_security_connector.cc
index c6180cfd8d..714da5fb34 100644
--- a/contrib/libs/grpc/src/core/lib/http/httpcli_security_connector.cc
+++ b/contrib/libs/grpc/src/core/lib/http/httpcli_security_connector.cc
@@ -20,24 +20,39 @@
#include <string.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/pollset.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/promise/promise.h"
#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
#include "src/core/lib/security/security_connector/ssl_utils.h"
#include "src/core/lib/security/transport/security_handshaker.h"
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/transport/handshaker.h"
#include "src/core/tsi/ssl_transport_security.h"
+#include "src/core/tsi/transport_security_interface.h"
namespace grpc_core {
@@ -48,7 +63,7 @@ class grpc_httpcli_ssl_channel_security_connector final
public:
explicit grpc_httpcli_ssl_channel_security_connector(char* secure_peer_name)
: grpc_channel_security_connector(
- /*url_scheme=*/std::string_view{},
+ /*url_scheme=*/{},
/*channel_creds=*/nullptr,
/*request_metadata_creds=*/nullptr),
secure_peer_name_(secure_peer_name) {}
@@ -71,13 +86,14 @@ class grpc_httpcli_ssl_channel_security_connector final
&options, &handshaker_factory_);
}
- void add_handshakers(const grpc_channel_args* args,
+ void add_handshakers(const ChannelArgs& args,
grpc_pollset_set* /*interested_parties*/,
HandshakeManager* handshake_mgr) override {
tsi_handshaker* handshaker = nullptr;
if (handshaker_factory_ != nullptr) {
tsi_result result = tsi_ssl_client_handshaker_factory_create_handshaker(
- handshaker_factory_, secure_peer_name_, &handshaker);
+ handshaker_factory_, secure_peer_name_, /*network_bio_buf_size=*/0,
+ /*ssl_bio_buf_size=*/0, &handshaker);
if (result != TSI_OK) {
gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
tsi_result_to_string(result));
@@ -91,6 +107,7 @@ class grpc_httpcli_ssl_channel_security_connector final
}
void check_peer(tsi_peer peer, grpc_endpoint* /*ep*/,
+ const ChannelArgs& /*args*/,
RefCountedPtr<grpc_auth_context>* /*auth_context*/,
grpc_closure* on_peer_checked) override {
grpc_error_handle error = GRPC_ERROR_NONE;
@@ -152,13 +169,9 @@ httpcli_ssl_channel_security_connector_create(
class HttpRequestSSLCredentials : public grpc_channel_credentials {
public:
- HttpRequestSSLCredentials() : grpc_channel_credentials("HttpRequestSSL") {}
- ~HttpRequestSSLCredentials() override {}
-
RefCountedPtr<grpc_channel_security_connector> create_security_connector(
RefCountedPtr<grpc_call_credentials> /*call_creds*/, const char* target,
- const grpc_channel_args* args,
- grpc_channel_args** /*new_args*/) override {
+ ChannelArgs* args) override {
const char* pem_root_certs = DefaultSslRootStore::GetPemRootCerts();
const tsi_ssl_root_certs_store* root_store =
DefaultSslRootStore::GetRootStore();
@@ -166,13 +179,11 @@ class HttpRequestSSLCredentials : public grpc_channel_credentials {
gpr_log(GPR_ERROR, "Could not get default pem root certs.");
return nullptr;
}
- const char* ssl_host_override =
- grpc_channel_args_find_string(args, GRPC_SSL_TARGET_NAME_OVERRIDE_ARG);
- if (ssl_host_override != nullptr) {
- target = ssl_host_override;
- }
- return httpcli_ssl_channel_security_connector_create(pem_root_certs,
- root_store, target);
+ y_absl::optional<TString> target_string =
+ args->GetOwnedString(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG)
+ .value_or(target);
+ return httpcli_ssl_channel_security_connector_create(
+ pem_root_certs, root_store, target_string->c_str());
}
RefCountedPtr<grpc_channel_credentials> duplicate_without_call_credentials()
@@ -180,8 +191,9 @@ class HttpRequestSSLCredentials : public grpc_channel_credentials {
return Ref();
}
- grpc_channel_args* update_arguments(grpc_channel_args* args) override {
- return args;
+ UniqueTypeName type() const override {
+ static UniqueTypeName::Factory kFactory("HttpRequestSSL");
+ return kFactory.Create();
}
private:
diff --git a/contrib/libs/grpc/src/core/lib/http/httpcli_ssl_credentials.h b/contrib/libs/grpc/src/core/lib/http/httpcli_ssl_credentials.h
index ef33662a28..56d57616b1 100644
--- a/contrib/libs/grpc/src/core/lib/http/httpcli_ssl_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/http/httpcli_ssl_credentials.h
@@ -19,7 +19,9 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/security/credentials/credentials.h"
+#include <grpc/grpc.h>
+
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/http/parser.cc b/contrib/libs/grpc/src/core/lib/http/parser.cc
index d88ebdb401..6a50f68aa9 100644
--- a/contrib/libs/grpc/src/core/lib/http/parser.cc
+++ b/contrib/libs/grpc/src/core/lib/http/parser.cc
@@ -20,14 +20,13 @@
#include "src/core/lib/http/parser.h"
-#include <stdbool.h>
#include <string.h>
+#include <algorithm>
+
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include "src/core/lib/gpr/useful.h"
-
grpc_core::TraceFlag grpc_http1_trace(false, "http1");
static char* buf2str(void* buffer, size_t length) {
@@ -177,6 +176,7 @@ static grpc_error_handle add_header(grpc_http_parser* parser) {
uint8_t* cur = beg;
uint8_t* end = beg + parser->cur_line_length;
size_t* hdr_count = nullptr;
+ size_t size = 0;
grpc_http_header** hdrs = nullptr;
grpc_http_header hdr = {nullptr, nullptr};
grpc_error_handle error = GRPC_ERROR_NONE;
@@ -205,13 +205,20 @@ static grpc_error_handle add_header(grpc_http_parser* parser) {
cur++;
}
GPR_ASSERT((size_t)(end - cur) >= parser->cur_line_end_length);
- hdr.value = buf2str(
- cur, static_cast<size_t>(end - cur) - parser->cur_line_end_length);
+ size = static_cast<size_t>(end - cur) - parser->cur_line_end_length;
+ if ((size != 0) && (cur[size - 1] == '\r')) {
+ size--;
+ }
+ hdr.value = buf2str(cur, size);
switch (parser->type) {
case GRPC_HTTP_RESPONSE:
hdr_count = &parser->http.response->hdr_count;
hdrs = &parser->http.response->hdrs;
+ if ((strcmp(hdr.key, "Transfer-Encoding") == 0) &&
+ (strcmp(hdr.value, "chunked") == 0)) {
+ parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_LENGTH;
+ }
break;
case GRPC_HTTP_REQUEST:
hdr_count = &parser->http.request->hdr_count;
@@ -228,7 +235,7 @@ static grpc_error_handle add_header(grpc_http_parser* parser) {
(*hdrs)[(*hdr_count)++] = hdr;
done:
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
gpr_free(hdr.key);
gpr_free(hdr.value);
}
@@ -241,21 +248,28 @@ static grpc_error_handle finish_line(grpc_http_parser* parser,
switch (parser->state) {
case GRPC_HTTP_FIRST_LINE:
err = handle_first_line(parser);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
parser->state = GRPC_HTTP_HEADERS;
break;
case GRPC_HTTP_HEADERS:
+ case GRPC_HTTP_TRAILERS:
if (parser->cur_line_length == parser->cur_line_end_length) {
- parser->state = GRPC_HTTP_BODY;
- *found_body_start = true;
+ if (parser->state == GRPC_HTTP_HEADERS) {
+ parser->state = GRPC_HTTP_BODY;
+ *found_body_start = true;
+ } else {
+ parser->state = GRPC_HTTP_END;
+ }
break;
- }
- err = add_header(parser);
- if (err != GRPC_ERROR_NONE) {
- return err;
+ } else {
+ err = add_header(parser);
+ if (!GRPC_ERROR_IS_NONE(err)) {
+ return err;
+ }
}
break;
case GRPC_HTTP_BODY:
+ case GRPC_HTTP_END:
GPR_UNREACHABLE_CODE(return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Should never reach here"));
}
@@ -269,6 +283,59 @@ static grpc_error_handle addbyte_body(grpc_http_parser* parser, uint8_t byte) {
char** body = nullptr;
if (parser->type == GRPC_HTTP_RESPONSE) {
+ switch (parser->http.response->chunked_state) {
+ case GRPC_HTTP_CHUNKED_LENGTH:
+ if ((byte == '\r') || (byte == ';')) {
+ parser->http.response->chunked_state =
+ GRPC_HTTP_CHUNKED_IGNORE_ALL_UNTIL_LF;
+ } else if ((byte >= '0') && (byte <= '9')) {
+ parser->http.response->chunk_length *= 16;
+ parser->http.response->chunk_length += byte - '0';
+ } else if ((byte >= 'a') && (byte <= 'f')) {
+ parser->http.response->chunk_length *= 16;
+ parser->http.response->chunk_length += byte - 'a' + 10;
+ } else if ((byte >= 'A') && (byte <= 'F')) {
+ parser->http.response->chunk_length *= 16;
+ parser->http.response->chunk_length += byte - 'A' + 10;
+ } else {
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Expected chunk size in hexadecimal");
+ }
+ return GRPC_ERROR_NONE;
+ case GRPC_HTTP_CHUNKED_IGNORE_ALL_UNTIL_LF:
+ if (byte == '\n') {
+ if (parser->http.response->chunk_length == 0) {
+ parser->state = GRPC_HTTP_TRAILERS;
+ } else {
+ parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_BODY;
+ }
+ }
+ return GRPC_ERROR_NONE;
+ case GRPC_HTTP_CHUNKED_BODY:
+ if (parser->http.response->chunk_length == 0) {
+ if (byte != '\r') {
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Expected '\\r\\n' after chunk body");
+ }
+ parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_CONSUME_LF;
+ parser->http.response->chunk_length = 0;
+ return GRPC_ERROR_NONE;
+ } else {
+ parser->http.response->chunk_length--;
+ /* fallback to the normal body appending code below */
+ }
+ break;
+ case GRPC_HTTP_CHUNKED_CONSUME_LF:
+ if (byte != '\n') {
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Expected '\\r\\n' after chunk body");
+ }
+ parser->http.response->chunked_state = GRPC_HTTP_CHUNKED_LENGTH;
+ return GRPC_ERROR_NONE;
+ case GRPC_HTTP_CHUNKED_PLAIN:
+ /* avoiding warning; just fallback to normal codepath */
+ break;
+ }
body_length = &parser->http.response->body_length;
body = &parser->http.response->body;
} else if (parser->type == GRPC_HTTP_REQUEST) {
@@ -318,6 +385,7 @@ static grpc_error_handle addbyte(grpc_http_parser* parser, uint8_t byte,
switch (parser->state) {
case GRPC_HTTP_FIRST_LINE:
case GRPC_HTTP_HEADERS:
+ case GRPC_HTTP_TRAILERS:
if (parser->cur_line_length >= GRPC_HTTP_PARSER_MAX_HEADER_LENGTH) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_http1_trace)) {
gpr_log(GPR_ERROR, "HTTP header max line length (%d) exceeded",
@@ -334,6 +402,8 @@ static grpc_error_handle addbyte(grpc_http_parser* parser, uint8_t byte,
return GRPC_ERROR_NONE;
case GRPC_HTTP_BODY:
return addbyte_body(parser, byte);
+ case GRPC_HTTP_END:
+ return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unexpected byte after end");
}
GPR_UNREACHABLE_CODE(return GRPC_ERROR_NONE);
}
@@ -378,14 +448,14 @@ grpc_error_handle grpc_http_parser_parse(grpc_http_parser* parser,
bool found_body_start = false;
grpc_error_handle err =
addbyte(parser, GRPC_SLICE_START_PTR(slice)[i], &found_body_start);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
if (found_body_start && start_of_body != nullptr) *start_of_body = i + 1;
}
return GRPC_ERROR_NONE;
}
grpc_error_handle grpc_http_parser_eof(grpc_http_parser* parser) {
- if (parser->state != GRPC_HTTP_BODY) {
+ if ((parser->state != GRPC_HTTP_BODY) && (parser->state != GRPC_HTTP_END)) {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Did not finish headers");
}
return GRPC_ERROR_NONE;
diff --git a/contrib/libs/grpc/src/core/lib/http/parser.h b/contrib/libs/grpc/src/core/lib/http/parser.h
index 80147584e6..d3522e4244 100644
--- a/contrib/libs/grpc/src/core/lib/http/parser.h
+++ b/contrib/libs/grpc/src/core/lib/http/parser.h
@@ -21,6 +21,9 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+#include <stdint.h>
+
#include <grpc/slice.h>
#include "src/core/lib/debug/trace.h"
@@ -38,10 +41,20 @@ typedef struct grpc_http_header {
typedef enum {
GRPC_HTTP_FIRST_LINE,
GRPC_HTTP_HEADERS,
- GRPC_HTTP_BODY
+ GRPC_HTTP_BODY,
+ GRPC_HTTP_TRAILERS,
+ GRPC_HTTP_END,
} grpc_http_parser_state;
typedef enum {
+ GRPC_HTTP_CHUNKED_PLAIN,
+ GRPC_HTTP_CHUNKED_LENGTH,
+ GRPC_HTTP_CHUNKED_IGNORE_ALL_UNTIL_LF,
+ GRPC_HTTP_CHUNKED_BODY,
+ GRPC_HTTP_CHUNKED_CONSUME_LF,
+} grpc_http_parser_chunked_state;
+
+typedef enum {
GRPC_HTTP_HTTP10,
GRPC_HTTP_HTTP11,
GRPC_HTTP_HTTP20,
@@ -77,6 +90,9 @@ typedef struct grpc_http_response {
grpc_http_header* hdrs = nullptr;
/* Body: length and contents; contents are NOT null-terminated */
size_t body_length = 0;
+ /* State of the chunked parser. Only valid for the response. */
+ grpc_http_parser_chunked_state chunked_state = GRPC_HTTP_CHUNKED_PLAIN;
+ size_t chunk_length = 0;
char* body = nullptr;
} grpc_http_response;
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/call_combiner.cc b/contrib/libs/grpc/src/core/lib/iomgr/call_combiner.cc
index 720fd47a27..55ee3a01dd 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/call_combiner.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/call_combiner.cc
@@ -25,7 +25,6 @@
#include <grpc/support/log.h>
#include "src/core/lib/debug/stats.h"
-#include "src/core/lib/profiling/timers.h"
namespace grpc_core {
@@ -38,11 +37,7 @@ constexpr intptr_t kErrorBit = 1;
grpc_error_handle DecodeCancelStateError(gpr_atm cancel_state) {
if (cancel_state & kErrorBit) {
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
return internal::StatusGetFromHeapPtr(cancel_state & ~kErrorBit);
-#else
- return reinterpret_cast<grpc_error_handle>(cancel_state & ~kErrorBit);
-#endif
}
return GRPC_ERROR_NONE;
}
@@ -60,12 +55,7 @@ CallCombiner::CallCombiner() {
CallCombiner::~CallCombiner() {
if (cancel_state_ & kErrorBit) {
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
internal::StatusFreeHeapPtr(cancel_state_ & ~kErrorBit);
-#else
- GRPC_ERROR_UNREF(reinterpret_cast<grpc_error_handle>(
- cancel_state_ & ~static_cast<gpr_atm>(kErrorBit)));
-#endif
}
}
@@ -122,7 +112,6 @@ void CallCombiner::ScheduleClosure(grpc_closure* closure,
void CallCombiner::Start(grpc_closure* closure, grpc_error_handle error,
DEBUG_ARGS const char* reason) {
- GPR_TIMER_SCOPE("CallCombiner::Start", 0);
if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) {
gpr_log(GPR_INFO,
"==> CallCombiner::Start() [%p] closure=%p [" DEBUG_FMT_STR
@@ -136,10 +125,7 @@ void CallCombiner::Start(grpc_closure* closure, grpc_error_handle error,
gpr_log(GPR_INFO, " size: %" PRIdPTR " -> %" PRIdPTR, prev_size,
prev_size + 1);
}
- GRPC_STATS_INC_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS();
if (prev_size == 0) {
- GRPC_STATS_INC_CALL_COMBINER_LOCKS_INITIATED();
- GPR_TIMER_MARK("call_combiner_initiate", 0);
if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) {
gpr_log(GPR_INFO, " EXECUTING IMMEDIATELY");
}
@@ -150,18 +136,13 @@ void CallCombiner::Start(grpc_closure* closure, grpc_error_handle error,
gpr_log(GPR_INFO, " QUEUING");
}
// Queue was not empty, so add closure to queue.
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
closure->error_data.error = internal::StatusAllocHeapPtr(error);
-#else
- closure->error_data.error = reinterpret_cast<intptr_t>(error);
-#endif
queue_.Push(
reinterpret_cast<MultiProducerSingleConsumerQueue::Node*>(closure));
}
}
void CallCombiner::Stop(DEBUG_ARGS const char* reason) {
- GPR_TIMER_SCOPE("CallCombiner::Stop", 0);
if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) {
gpr_log(GPR_INFO, "==> CallCombiner::Stop() [%p] [" DEBUG_FMT_STR "%s]",
this DEBUG_FMT_ARGS, reason);
@@ -189,13 +170,8 @@ void CallCombiner::Stop(DEBUG_ARGS const char* reason) {
}
continue;
}
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
grpc_error_handle error =
internal::StatusMoveFromHeapPtr(closure->error_data.error);
-#else
- grpc_error_handle error =
- reinterpret_cast<grpc_error_handle>(closure->error_data.error);
-#endif
closure->error_data.error = 0;
if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) {
gpr_log(GPR_INFO, " EXECUTING FROM QUEUE: closure=%p error=%s",
@@ -210,14 +186,13 @@ void CallCombiner::Stop(DEBUG_ARGS const char* reason) {
}
void CallCombiner::SetNotifyOnCancel(grpc_closure* closure) {
- GRPC_STATS_INC_CALL_COMBINER_SET_NOTIFY_ON_CANCEL();
while (true) {
// Decode original state.
gpr_atm original_state = gpr_atm_acq_load(&cancel_state_);
grpc_error_handle original_error = DecodeCancelStateError(original_state);
// If error is set, invoke the cancellation closure immediately.
// Otherwise, store the new closure.
- if (original_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(original_error)) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_call_combiner_trace)) {
gpr_log(GPR_INFO,
"call_combiner=%p: scheduling notify_on_cancel callback=%p "
@@ -253,22 +228,13 @@ void CallCombiner::SetNotifyOnCancel(grpc_closure* closure) {
}
void CallCombiner::Cancel(grpc_error_handle error) {
- GRPC_STATS_INC_CALL_COMBINER_CANCELLED();
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
intptr_t status_ptr = internal::StatusAllocHeapPtr(error);
gpr_atm new_state = kErrorBit | status_ptr;
-#else
- gpr_atm new_state = kErrorBit | reinterpret_cast<gpr_atm>(error);
-#endif
while (true) {
gpr_atm original_state = gpr_atm_acq_load(&cancel_state_);
grpc_error_handle original_error = DecodeCancelStateError(original_state);
- if (original_error != GRPC_ERROR_NONE) {
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
+ if (!GRPC_ERROR_IS_NONE(original_error)) {
internal::StatusFreeHeapPtr(status_ptr);
-#else
- GRPC_ERROR_UNREF(error);
-#endif
break;
}
if (gpr_atm_full_cas(&cancel_state_, original_state, new_state)) {
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/closure.h b/contrib/libs/grpc/src/core/lib/iomgr/closure.h
index 0b79368a9f..bbae4a527f 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/closure.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/closure.h
@@ -31,7 +31,6 @@
#include "src/core/lib/gprpp/manual_constructor.h"
#include "src/core/lib/gprpp/mpscq.h"
#include "src/core/lib/iomgr/error.h"
-#include "src/core/lib/profiling/timers.h"
struct grpc_closure;
typedef struct grpc_closure grpc_closure;
@@ -199,11 +198,7 @@ inline bool grpc_closure_list_append(grpc_closure_list* closure_list,
GRPC_ERROR_UNREF(error);
return false;
}
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
closure->error_data.error = grpc_core::internal::StatusAllocHeapPtr(error);
-#else
- closure->error_data.error = reinterpret_cast<intptr_t>(error);
-#endif
return grpc_closure_list_append(closure_list, closure);
}
@@ -212,13 +207,8 @@ inline void grpc_closure_list_fail_all(grpc_closure_list* list,
grpc_error_handle forced_failure) {
for (grpc_closure* c = list->head; c != nullptr; c = c->next_data.next) {
if (c->error_data.error == 0) {
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
c->error_data.error =
grpc_core::internal::StatusAllocHeapPtr(forced_failure);
-#else
- c->error_data.error =
- reinterpret_cast<intptr_t>(GRPC_ERROR_REF(forced_failure));
-#endif
}
}
GRPC_ERROR_UNREF(forced_failure);
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/combiner.cc b/contrib/libs/grpc/src/core/lib/iomgr/combiner.cc
index a51364ca4b..875bf39cca 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/combiner.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/combiner.cc
@@ -149,11 +149,7 @@ static void combiner_exec(grpc_core::Combiner* lock, grpc_closure* cl,
}
GPR_ASSERT(last & STATE_UNORPHANED); // ensure lock has not been destroyed
assert(cl->cb);
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
cl->error_data.error = grpc_core::internal::StatusAllocHeapPtr(error);
-#else
- cl->error_data.error = reinterpret_cast<intptr_t>(error);
-#endif
lock->queue.Push(cl->next_data.mpscq_node.get());
}
@@ -228,18 +224,10 @@ bool grpc_combiner_continue_exec_ctx() {
#ifndef NDEBUG
cl->scheduled = false;
#endif
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
grpc_error_handle cl_err =
grpc_core::internal::StatusMoveFromHeapPtr(cl->error_data.error);
cl->error_data.error = 0;
cl->cb(cl->cb_arg, std::move(cl_err));
-#else
- grpc_error_handle cl_err =
- reinterpret_cast<grpc_error_handle>(cl->error_data.error);
- cl->error_data.error = 0;
- cl->cb(cl->cb_arg, cl_err);
- GRPC_ERROR_UNREF(cl_err);
-#endif
} else {
grpc_closure* c = lock->final_list.head;
GPR_ASSERT(c != nullptr);
@@ -252,18 +240,10 @@ bool grpc_combiner_continue_exec_ctx() {
#ifndef NDEBUG
c->scheduled = false;
#endif
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
grpc_error_handle error =
grpc_core::internal::StatusMoveFromHeapPtr(c->error_data.error);
c->error_data.error = 0;
c->cb(c->cb_arg, std::move(error));
-#else
- grpc_error_handle error =
- reinterpret_cast<grpc_error_handle>(c->error_data.error);
- c->error_data.error = 0;
- c->cb(c->cb_arg, error);
- GRPC_ERROR_UNREF(error);
-#endif
c = next;
}
}
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/endpoint.cc b/contrib/libs/grpc/src/core/lib/iomgr/endpoint.cc
index 1e22671055..93da9661be 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/endpoint.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/endpoint.cc
@@ -23,13 +23,13 @@
grpc_core::TraceFlag grpc_tcp_trace(false, "tcp");
void grpc_endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* slices,
- grpc_closure* cb, bool urgent) {
- ep->vtable->read(ep, slices, cb, urgent);
+ grpc_closure* cb, bool urgent, int min_progress_size) {
+ ep->vtable->read(ep, slices, cb, urgent, min_progress_size);
}
void grpc_endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
- grpc_closure* cb, void* arg) {
- ep->vtable->write(ep, slices, cb, arg);
+ grpc_closure* cb, void* arg, int max_frame_size) {
+ ep->vtable->write(ep, slices, cb, arg, max_frame_size);
}
void grpc_endpoint_add_to_pollset(grpc_endpoint* ep, grpc_pollset* pollset) {
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/endpoint.h b/contrib/libs/grpc/src/core/lib/iomgr/endpoint.h
index 7e270460d9..0ec370b925 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/endpoint.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/endpoint.h
@@ -38,9 +38,9 @@ typedef struct grpc_endpoint_vtable grpc_endpoint_vtable;
struct grpc_endpoint_vtable {
void (*read)(grpc_endpoint* ep, grpc_slice_buffer* slices, grpc_closure* cb,
- bool urgent);
+ bool urgent, int min_progress_size);
void (*write)(grpc_endpoint* ep, grpc_slice_buffer* slices, grpc_closure* cb,
- void* arg);
+ void* arg, int max_frame_size);
void (*add_to_pollset)(grpc_endpoint* ep, grpc_pollset* pollset);
void (*add_to_pollset_set)(grpc_endpoint* ep, grpc_pollset_set* pollset);
void (*delete_from_pollset_set)(grpc_endpoint* ep, grpc_pollset_set* pollset);
@@ -56,9 +56,9 @@ struct grpc_endpoint_vtable {
Callback success indicates that the endpoint can accept more reads, failure
indicates the endpoint is closed.
Valid slices may be placed into \a slices even when the callback is
- invoked with error != GRPC_ERROR_NONE. */
+ invoked with !GRPC_ERROR_IS_NONE(error). */
void grpc_endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* slices,
- grpc_closure* cb, bool urgent);
+ grpc_closure* cb, bool urgent, int min_progress_size);
y_absl::string_view grpc_endpoint_get_peer(grpc_endpoint* ep);
@@ -79,9 +79,11 @@ int grpc_endpoint_get_fd(grpc_endpoint* ep);
it is a valid slice buffer.
\a arg is platform specific. It is currently only used by TCP on linux
platforms as an argument that would be forwarded to the timestamps callback.
+ \a max_frame_size. A hint to the endpoint implementation to construct
+ frames which do not exceed the specified size.
*/
void grpc_endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
- grpc_closure* cb, void* arg);
+ grpc_closure* cb, void* arg, int max_frame_size);
/* Causes any pending and future read/write callbacks to run immediately with
success==0 */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/endpoint_cfstream.cc b/contrib/libs/grpc/src/core/lib/iomgr/endpoint_cfstream.cc
index 1fc20da8dc..8a44501765 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/endpoint_cfstream.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/endpoint_cfstream.cc
@@ -147,7 +147,7 @@ static void CallWriteCb(CFStreamEndpoint* ep, grpc_error_handle error) {
static void ReadAction(void* arg, grpc_error_handle error) {
CFStreamEndpoint* ep = static_cast<CFStreamEndpoint*>(arg);
GPR_ASSERT(ep->read_cb != nullptr);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
grpc_slice_buffer_reset_and_unref_internal(ep->read_slices);
CallReadCb(ep, GRPC_ERROR_REF(error));
EP_UNREF(ep, "read");
@@ -189,7 +189,7 @@ static void ReadAction(void* arg, grpc_error_handle error) {
static void WriteAction(void* arg, grpc_error_handle error) {
CFStreamEndpoint* ep = static_cast<CFStreamEndpoint*>(arg);
GPR_ASSERT(ep->write_cb != nullptr);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
grpc_slice_buffer_reset_and_unref_internal(ep->write_slices);
CallWriteCb(ep, GRPC_ERROR_REF(error));
EP_UNREF(ep, "write");
@@ -237,7 +237,8 @@ static void WriteAction(void* arg, grpc_error_handle error) {
}
static void CFStreamRead(grpc_endpoint* ep, grpc_slice_buffer* slices,
- grpc_closure* cb, bool urgent) {
+ grpc_closure* cb, bool urgent,
+ int /*min_progress_size*/) {
CFStreamEndpoint* ep_impl = reinterpret_cast<CFStreamEndpoint*>(ep);
if (grpc_tcp_trace.enabled()) {
gpr_log(GPR_DEBUG, "CFStream endpoint:%p read (%p, %p) length:%zu", ep_impl,
@@ -254,7 +255,7 @@ static void CFStreamRead(grpc_endpoint* ep, grpc_slice_buffer* slices,
}
static void CFStreamWrite(grpc_endpoint* ep, grpc_slice_buffer* slices,
- grpc_closure* cb, void* arg) {
+ grpc_closure* cb, void* arg, int /*max_frame_size*/) {
CFStreamEndpoint* ep_impl = reinterpret_cast<CFStreamEndpoint*>(ep);
if (grpc_tcp_trace.enabled()) {
gpr_log(GPR_DEBUG, "CFStream endpoint:%p write (%p, %p) length:%zu",
@@ -351,11 +352,13 @@ grpc_endpoint* grpc_cfstream_endpoint_create(CFReadStreamRef read_stream,
if (native_handle) {
CFRelease(native_handle);
}
+ y_absl::StatusOr<TString> addr_uri;
if (getsockname(sockfd, reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
- &resolved_local_addr.len) < 0) {
+ &resolved_local_addr.len) < 0 ||
+ !(addr_uri = grpc_sockaddr_to_uri(&resolved_local_addr)).ok()) {
ep_impl->local_address = "";
} else {
- ep_impl->local_address = grpc_sockaddr_to_uri(&resolved_local_addr);
+ ep_impl->local_address = addr_uri.value();
}
ep_impl->read_cb = nil;
ep_impl->write_cb = nil;
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_posix.cc b/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_posix.cc
index ca7644dc0b..cd2596980a 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_posix.cc
@@ -36,6 +36,7 @@
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
+#include "src/core/lib/event_engine/channel_args_endpoint_config.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/iomgr/endpoint_pair.h"
#include "src/core/lib/iomgr/socket_utils_posix.h"
@@ -61,15 +62,20 @@ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char* name,
create_sockets(sv);
grpc_core::ExecCtx exec_ctx;
TString final_name = y_absl::StrCat(name, ":client");
- const grpc_channel_args* new_args = grpc_core::CoreConfiguration::Get()
- .channel_args_preconditioning()
- .PreconditionChannelArgs(args);
- p.client = grpc_tcp_create(grpc_fd_create(sv[1], final_name.c_str(), false),
- new_args, "socketpair-server");
+ auto new_args = grpc_core::CoreConfiguration::Get()
+ .channel_args_preconditioning()
+ .PreconditionChannelArgs(args);
+ p.client = grpc_tcp_create(
+ grpc_fd_create(sv[1], final_name.c_str(), false),
+ TcpOptionsFromEndpointConfig(
+ grpc_event_engine::experimental::ChannelArgsEndpointConfig(new_args)),
+ "socketpair-server");
final_name = y_absl::StrCat(name, ":server");
- p.server = grpc_tcp_create(grpc_fd_create(sv[0], final_name.c_str(), false),
- new_args, "socketpair-client");
- grpc_channel_args_destroy(new_args);
+ p.server = grpc_tcp_create(
+ grpc_fd_create(sv[0], final_name.c_str(), false),
+ TcpOptionsFromEndpointConfig(
+ grpc_event_engine::experimental::ChannelArgsEndpointConfig(new_args)),
+ "socketpair-client");
return p;
}
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_windows.cc b/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_windows.cc
index 386057b895..7ea1dcb3d5 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_windows.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/endpoint_pair_windows.cc
@@ -77,9 +77,9 @@ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(
create_sockets(sv);
grpc_core::ExecCtx exec_ctx;
p.client = grpc_tcp_create(grpc_winsocket_create(sv[1], "endpoint:client"),
- channel_args, "endpoint:server");
+ "endpoint:server");
p.server = grpc_tcp_create(grpc_winsocket_create(sv[0], "endpoint:server"),
- channel_args, "endpoint:client");
+ "endpoint:client");
return p;
}
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/error.cc b/contrib/libs/grpc/src/core/lib/iomgr/error.cc
index e4e48ca10b..7b5fed5b48 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/error.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/error.cc
@@ -33,7 +33,6 @@
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/iomgr/error_internal.h"
#include "src/core/lib/slice/slice_internal.h"
grpc_core::DebugOnlyTraceFlag grpc_trace_error_refcount(false,
@@ -50,8 +49,6 @@ void grpc_enable_error_creation() {
gpr_atm_no_barrier_store(&g_error_creation_allowed, true);
}
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
-
y_absl::Status grpc_status_create(y_absl::StatusCode code, y_absl::string_view msg,
const grpc_core::DebugLocation& location,
size_t children_count, y_absl::Status* children) {
@@ -71,7 +68,7 @@ TString grpc_error_std_string(y_absl::Status error) {
y_absl::Status grpc_os_error(const grpc_core::DebugLocation& location, int err,
const char* call_name) {
y_absl::Status s =
- StatusCreate(y_absl::StatusCode::kUnknown, "OS Error", location, {});
+ StatusCreate(y_absl::StatusCode::kUnknown, strerror(err), location, {});
grpc_core::StatusSetInt(&s, grpc_core::StatusIntProperty::kErrorNo, err);
grpc_core::StatusSetStr(&s, grpc_core::StatusStrProperty::kOsError,
strerror(err));
@@ -87,6 +84,8 @@ y_absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
y_absl::Status s =
StatusCreate(y_absl::StatusCode::kUnavailable, "WSA Error", location, {});
StatusSetInt(&s, grpc_core::StatusIntProperty::kWsaError, err);
+ StatusSetInt(&s, grpc_core::StatusIntProperty::kRpcStatus,
+ GRPC_STATUS_UNAVAILABLE);
StatusSetStr(&s, grpc_core::StatusStrProperty::kOsError, utf8_message);
StatusSetStr(&s, grpc_core::StatusStrProperty::kSyscall, call_name);
return s;
@@ -95,7 +94,7 @@ y_absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
grpc_error_handle grpc_error_set_int(grpc_error_handle src,
grpc_error_ints which, intptr_t value) {
- if (src == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(src)) {
src = y_absl::UnknownError("");
StatusSetInt(&src, grpc_core::StatusIntProperty::kRpcStatus,
GRPC_STATUS_OK);
@@ -136,7 +135,7 @@ bool grpc_error_get_int(grpc_error_handle error, grpc_error_ints which,
grpc_error_handle grpc_error_set_str(grpc_error_handle src,
grpc_error_strs which,
y_absl::string_view str) {
- if (src == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(src)) {
src = y_absl::UnknownError("");
StatusSetInt(&src, grpc_core::StatusIntProperty::kRpcStatus,
GRPC_STATUS_OK);
@@ -211,781 +210,8 @@ grpc_error_handle grpc_error_add_child(grpc_error_handle src,
bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
int line) {
- GPR_DEBUG_ASSERT(error != GRPC_ERROR_NONE);
+ GPR_DEBUG_ASSERT(!GRPC_ERROR_IS_NONE(error));
gpr_log(file, line, GPR_LOG_SEVERITY_ERROR, "%s: %s", what,
grpc_core::StatusToString(error).c_str());
return false;
}
-
-#else // GRPC_ERROR_IS_ABSEIL_STATUS
-
-static const char* error_int_name(grpc_error_ints key) {
- switch (key) {
- case GRPC_ERROR_INT_ERRNO:
- return "errno";
- case GRPC_ERROR_INT_FILE_LINE:
- return "file_line";
- case GRPC_ERROR_INT_STREAM_ID:
- return "stream_id";
- case GRPC_ERROR_INT_GRPC_STATUS:
- return "grpc_status";
- case GRPC_ERROR_INT_OFFSET:
- return "offset";
- case GRPC_ERROR_INT_INDEX:
- return "index";
- case GRPC_ERROR_INT_SIZE:
- return "size";
- case GRPC_ERROR_INT_HTTP2_ERROR:
- return "http2_error";
- case GRPC_ERROR_INT_TSI_CODE:
- return "tsi_code";
- case GRPC_ERROR_INT_FD:
- return "fd";
- case GRPC_ERROR_INT_WSA_ERROR:
- return "wsa_error";
- case GRPC_ERROR_INT_HTTP_STATUS:
- return "http_status";
- case GRPC_ERROR_INT_OCCURRED_DURING_WRITE:
- return "occurred_during_write";
- case GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE:
- return "channel_connectivity_state";
- case GRPC_ERROR_INT_LB_POLICY_DROP:
- return "lb_policy_drop";
- case GRPC_ERROR_INT_MAX:
- GPR_UNREACHABLE_CODE(return "unknown");
- }
- GPR_UNREACHABLE_CODE(return "unknown");
-}
-
-static const char* error_str_name(grpc_error_strs key) {
- switch (key) {
- case GRPC_ERROR_STR_KEY:
- return "key";
- case GRPC_ERROR_STR_VALUE:
- return "value";
- case GRPC_ERROR_STR_DESCRIPTION:
- return "description";
- case GRPC_ERROR_STR_OS_ERROR:
- return "os_error";
- case GRPC_ERROR_STR_TARGET_ADDRESS:
- return "target_address";
- case GRPC_ERROR_STR_SYSCALL:
- return "syscall";
- case GRPC_ERROR_STR_FILE:
- return "file";
- case GRPC_ERROR_STR_GRPC_MESSAGE:
- return "grpc_message";
- case GRPC_ERROR_STR_RAW_BYTES:
- return "raw_bytes";
- case GRPC_ERROR_STR_TSI_ERROR:
- return "tsi_error";
- case GRPC_ERROR_STR_FILENAME:
- return "filename";
- case GRPC_ERROR_STR_MAX:
- GPR_UNREACHABLE_CODE(return "unknown");
- }
- GPR_UNREACHABLE_CODE(return "unknown");
-}
-
-static const char* error_time_name(grpc_error_times key) {
- switch (key) {
- case GRPC_ERROR_TIME_CREATED:
- return "created";
- case GRPC_ERROR_TIME_MAX:
- GPR_UNREACHABLE_CODE(return "unknown");
- }
- GPR_UNREACHABLE_CODE(return "unknown");
-}
-
-#ifndef NDEBUG
-grpc_error_handle grpc_error_do_ref(grpc_error_handle err, const char* file,
- int line) {
- if (grpc_trace_error_refcount.enabled()) {
- gpr_log(GPR_DEBUG, "%p: %" PRIdPTR " -> %" PRIdPTR " [%s:%d]", err,
- gpr_atm_no_barrier_load(&err->atomics.refs.count),
- gpr_atm_no_barrier_load(&err->atomics.refs.count) + 1, file, line);
- }
- gpr_ref(&err->atomics.refs);
- return err;
-}
-#else
-grpc_error_handle grpc_error_do_ref(grpc_error_handle err) {
- gpr_ref(&err->atomics.refs);
- return err;
-}
-#endif
-
-static void unref_errs(grpc_error_handle err) {
- uint8_t slot = err->first_err;
- while (slot != UINT8_MAX) {
- grpc_linked_error* lerr =
- reinterpret_cast<grpc_linked_error*>(err->arena + slot);
- GRPC_ERROR_UNREF(lerr->err);
- GPR_ASSERT(err->last_err == slot ? lerr->next == UINT8_MAX
- : lerr->next != UINT8_MAX);
- slot = lerr->next;
- }
-}
-
-static void unref_strs(grpc_error_handle err) {
- for (size_t which = 0; which < GRPC_ERROR_STR_MAX; ++which) {
- uint8_t slot = err->strs[which];
- if (slot != UINT8_MAX) {
- grpc_slice_unref_internal(
- *reinterpret_cast<grpc_slice*>(err->arena + slot));
- }
- }
-}
-
-static void error_destroy(grpc_error_handle err) {
- GPR_ASSERT(!grpc_error_is_special(err));
- unref_errs(err);
- unref_strs(err);
- gpr_free(
- reinterpret_cast<void*>(gpr_atm_acq_load(&err->atomics.error_string)));
- gpr_free(err);
-}
-
-#ifndef NDEBUG
-void grpc_error_do_unref(grpc_error_handle err, const char* file, int line) {
- if (grpc_trace_error_refcount.enabled()) {
- gpr_log(GPR_DEBUG, "%p: %" PRIdPTR " -> %" PRIdPTR " [%s:%d]", err,
- gpr_atm_no_barrier_load(&err->atomics.refs.count),
- gpr_atm_no_barrier_load(&err->atomics.refs.count) - 1, file, line);
- }
- if (gpr_unref(&err->atomics.refs)) {
- error_destroy(err);
- }
-}
-#else
-void grpc_error_do_unref(grpc_error_handle err) {
- if (gpr_unref(&err->atomics.refs)) {
- error_destroy(err);
- }
-}
-#endif
-
-static uint8_t get_placement(grpc_error_handle* err, size_t size) {
- GPR_ASSERT(*err);
- uint8_t slots = static_cast<uint8_t>(size / sizeof(intptr_t));
- if ((*err)->arena_size + slots > (*err)->arena_capacity) {
- (*err)->arena_capacity = static_cast<uint8_t>(std::min(
- size_t(UINT8_MAX - 1), size_t(3 * (*err)->arena_capacity / 2)));
- if ((*err)->arena_size + slots > (*err)->arena_capacity) {
- return UINT8_MAX;
- }
-#ifndef NDEBUG
- grpc_error_handle orig = *err;
-#endif
- *err = static_cast<grpc_error_handle>(gpr_realloc(
- *err, sizeof(grpc_error) + (*err)->arena_capacity * sizeof(intptr_t)));
-#ifndef NDEBUG
- if (grpc_trace_error_refcount.enabled()) {
- if (*err != orig) {
- gpr_log(GPR_DEBUG, "realloc %p -> %p", orig, *err);
- }
- }
-#endif
- }
- uint8_t placement = (*err)->arena_size;
- (*err)->arena_size = static_cast<uint8_t>((*err)->arena_size + slots);
- return placement;
-}
-
-static void internal_set_int(grpc_error_handle* err, grpc_error_ints which,
- intptr_t value) {
- uint8_t slot = (*err)->ints[which];
- if (slot == UINT8_MAX) {
- slot = get_placement(err, sizeof(value));
- if (slot == UINT8_MAX) {
- gpr_log(GPR_ERROR, "Error %p is full, dropping int {\"%s\":%" PRIiPTR "}",
- *err, error_int_name(which), value);
- return;
- }
- }
- (*err)->ints[which] = slot;
- (*err)->arena[slot] = value;
-}
-
-static void internal_set_str(grpc_error_handle* err, grpc_error_strs which,
- const grpc_slice& value) {
- uint8_t slot = (*err)->strs[which];
- if (slot == UINT8_MAX) {
- slot = get_placement(err, sizeof(value));
- if (slot == UINT8_MAX) {
- char* str = grpc_slice_to_c_string(value);
- gpr_log(GPR_ERROR, "Error %p is full, dropping string {\"%s\":\"%s\"}",
- *err, error_str_name(which), str);
- gpr_free(str);
- return;
- }
- } else {
- grpc_slice_unref_internal(
- *reinterpret_cast<grpc_slice*>((*err)->arena + slot));
- }
- (*err)->strs[which] = slot;
- memcpy((*err)->arena + slot, &value, sizeof(value));
-}
-
-static char* fmt_time(gpr_timespec tm);
-static void internal_set_time(grpc_error_handle* err, grpc_error_times which,
- gpr_timespec value) {
- uint8_t slot = (*err)->times[which];
- if (slot == UINT8_MAX) {
- slot = get_placement(err, sizeof(value));
- if (slot == UINT8_MAX) {
- char* time_str = fmt_time(value);
- gpr_log(GPR_ERROR, "Error %p is full, dropping \"%s\":\"%s\"}", *err,
- error_time_name(which), time_str);
- gpr_free(time_str);
- return;
- }
- }
- (*err)->times[which] = slot;
- memcpy((*err)->arena + slot, &value, sizeof(value));
-}
-
-const char* grpc_error_string(grpc_error_handle err);
-
-static void internal_add_error(grpc_error_handle* err,
- grpc_error_handle new_err) {
- grpc_linked_error new_last = {new_err, UINT8_MAX};
- uint8_t slot = get_placement(err, sizeof(grpc_linked_error));
- if (slot == UINT8_MAX) {
- gpr_log(GPR_ERROR, "Error %p is full, dropping error %p = %s", *err,
- new_err, grpc_error_string(new_err));
- GRPC_ERROR_UNREF(new_err);
- return;
- }
- if ((*err)->first_err == UINT8_MAX) {
- GPR_ASSERT((*err)->last_err == UINT8_MAX);
- (*err)->last_err = slot;
- (*err)->first_err = slot;
- } else {
- GPR_ASSERT((*err)->last_err != UINT8_MAX);
- grpc_linked_error* old_last =
- reinterpret_cast<grpc_linked_error*>((*err)->arena + (*err)->last_err);
- old_last->next = slot;
- (*err)->last_err = slot;
- }
- memcpy((*err)->arena + slot, &new_last, sizeof(grpc_linked_error));
-}
-
-#define SLOTS_PER_INT (1) // == (sizeof(intptr_t) / sizeof(intptr_t))
-#define SLOTS_PER_STR (sizeof(grpc_slice) / sizeof(intptr_t))
-#define SLOTS_PER_TIME (sizeof(gpr_timespec) / sizeof(intptr_t))
-#define SLOTS_PER_LINKED_ERROR (sizeof(grpc_linked_error) / sizeof(intptr_t))
-
-// size of storing one int and two slices and a timespec. For line, desc, file,
-// and time created
-#define DEFAULT_ERROR_CAPACITY \
- (SLOTS_PER_INT + (SLOTS_PER_STR * 2) + SLOTS_PER_TIME)
-
-// It is very common to include and extra int and string in an error
-#define SURPLUS_CAPACITY (2 * SLOTS_PER_INT + SLOTS_PER_TIME)
-
-grpc_error_handle grpc_error_create(const char* file, int line,
- const grpc_slice& desc,
- grpc_error_handle* referencing,
- size_t num_referencing) {
- uint8_t initial_arena_capacity = static_cast<uint8_t>(
- DEFAULT_ERROR_CAPACITY +
- static_cast<uint8_t>(num_referencing * SLOTS_PER_LINKED_ERROR) +
- SURPLUS_CAPACITY);
- grpc_error_handle err = static_cast<grpc_error_handle>(
- gpr_malloc(sizeof(*err) + initial_arena_capacity * sizeof(intptr_t)));
- if (err == nullptr) { // TODO(ctiller): make gpr_malloc return NULL
- return GRPC_ERROR_OOM;
- }
-#ifndef NDEBUG
- if (!gpr_atm_no_barrier_load(&g_error_creation_allowed)) {
- gpr_log(GPR_ERROR,
- "Error creation occurred when error creation was disabled [%s:%d]",
- file, line);
- abort();
- }
- if (grpc_trace_error_refcount.enabled()) {
- gpr_log(GPR_DEBUG, "%p create [%s:%d]", err, file, line);
- }
-#endif
-
- err->arena_size = 0;
- err->arena_capacity = initial_arena_capacity;
- err->first_err = UINT8_MAX;
- err->last_err = UINT8_MAX;
-
- memset(err->ints, UINT8_MAX, GRPC_ERROR_INT_MAX);
- memset(err->strs, UINT8_MAX, GRPC_ERROR_STR_MAX);
- memset(err->times, UINT8_MAX, GRPC_ERROR_TIME_MAX);
-
- internal_set_int(&err, GRPC_ERROR_INT_FILE_LINE, line);
- internal_set_str(&err, GRPC_ERROR_STR_FILE,
- grpc_slice_from_static_string(file));
- internal_set_str(&err, GRPC_ERROR_STR_DESCRIPTION, desc);
-
- for (size_t i = 0; i < num_referencing; ++i) {
- if (referencing[i] == GRPC_ERROR_NONE) continue;
- internal_add_error(
- &err,
- GRPC_ERROR_REF(
- referencing[i])); // TODO(ncteisen), change ownership semantics
- }
-
- internal_set_time(&err, GRPC_ERROR_TIME_CREATED, gpr_now(GPR_CLOCK_REALTIME));
-
- gpr_atm_no_barrier_store(&err->atomics.error_string, 0);
- gpr_ref_init(&err->atomics.refs, 1);
- return err;
-}
-
-static void ref_strs(grpc_error_handle err) {
- for (size_t i = 0; i < GRPC_ERROR_STR_MAX; ++i) {
- uint8_t slot = err->strs[i];
- if (slot != UINT8_MAX) {
- grpc_slice_ref_internal(
- *reinterpret_cast<grpc_slice*>(err->arena + slot));
- }
- }
-}
-
-static void ref_errs(grpc_error_handle err) {
- uint8_t slot = err->first_err;
- while (slot != UINT8_MAX) {
- grpc_linked_error* lerr =
- reinterpret_cast<grpc_linked_error*>(err->arena + slot);
- (void)GRPC_ERROR_REF(lerr->err);
- slot = lerr->next;
- }
-}
-
-static grpc_error_handle copy_error_and_unref(grpc_error_handle in) {
- grpc_error_handle out;
- if (grpc_error_is_special(in)) {
- out = GRPC_ERROR_CREATE_FROM_STATIC_STRING("unknown");
- if (in == GRPC_ERROR_NONE) {
- internal_set_str(&out, GRPC_ERROR_STR_DESCRIPTION,
- grpc_slice_from_static_string("no error"));
- internal_set_int(&out, GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_OK);
- } else if (in == GRPC_ERROR_OOM) {
- internal_set_str(&out, GRPC_ERROR_STR_DESCRIPTION,
- grpc_slice_from_static_string("oom"));
- } else if (in == GRPC_ERROR_CANCELLED) {
- internal_set_str(&out, GRPC_ERROR_STR_DESCRIPTION,
- grpc_slice_from_static_string("cancelled"));
- internal_set_int(&out, GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_CANCELLED);
- }
- } else if (gpr_ref_is_unique(&in->atomics.refs)) {
- out = in;
- } else {
- uint8_t new_arena_capacity = in->arena_capacity;
- // the returned err will be added to, so we ensure this is room to avoid
- // unneeded allocations.
- if (in->arena_capacity - in->arena_size <
- static_cast<uint8_t> SLOTS_PER_STR) {
- new_arena_capacity = static_cast<uint8_t>(3 * new_arena_capacity / 2);
- }
- out = static_cast<grpc_error_handle>(
- gpr_malloc(sizeof(*in) + new_arena_capacity * sizeof(intptr_t)));
-#ifndef NDEBUG
- if (grpc_trace_error_refcount.enabled()) {
- gpr_log(GPR_DEBUG, "%p create copying %p", out, in);
- }
-#endif
- // bulk memcpy of the rest of the struct.
- // NOLINTNEXTLINE(bugprone-sizeof-expression)
- size_t skip = sizeof(&out->atomics);
- memcpy(reinterpret_cast<void*>(reinterpret_cast<uintptr_t>(out) + skip),
- reinterpret_cast<void*>(reinterpret_cast<uintptr_t>(in) + skip),
- sizeof(*in) + (in->arena_size * sizeof(intptr_t)) - skip);
- // manually set the atomics and the new capacity
- gpr_atm_no_barrier_store(&out->atomics.error_string, 0);
- gpr_ref_init(&out->atomics.refs, 1);
- out->arena_capacity = new_arena_capacity;
- ref_strs(out);
- ref_errs(out);
- GRPC_ERROR_UNREF(in);
- }
- return out;
-}
-
-grpc_error_handle grpc_error_set_int(grpc_error_handle src,
- grpc_error_ints which, intptr_t value) {
- grpc_error_handle new_err = copy_error_and_unref(src);
- internal_set_int(&new_err, which, value);
- return new_err;
-}
-
-struct special_error_status_map {
- grpc_status_code code;
- const char* msg;
- size_t len;
-};
-const special_error_status_map error_status_map[] = {
- {GRPC_STATUS_OK, "", 0}, // GRPC_ERROR_NONE
- {GRPC_STATUS_INVALID_ARGUMENT, "", 0}, // GRPC_ERROR_RESERVED_1
- {GRPC_STATUS_RESOURCE_EXHAUSTED, "RESOURCE_EXHAUSTED",
- strlen("RESOURCE_EXHAUSTED")}, // GRPC_ERROR_OOM
- {GRPC_STATUS_INVALID_ARGUMENT, "", 0}, // GRPC_ERROR_RESERVED_2
- {GRPC_STATUS_CANCELLED, "CANCELLED",
- strlen("CANCELLED")}, // GRPC_ERROR_CANCELLED
-};
-
-bool grpc_error_get_int(grpc_error_handle err, grpc_error_ints which,
- intptr_t* p) {
- if (grpc_error_is_special(err)) {
- if (which != GRPC_ERROR_INT_GRPC_STATUS) return false;
- *p = error_status_map[reinterpret_cast<size_t>(err)].code;
- return true;
- }
- uint8_t slot = err->ints[which];
- if (slot != UINT8_MAX) {
- if (p != nullptr) *p = err->arena[slot];
- return true;
- }
- return false;
-}
-
-grpc_error_handle grpc_error_set_str(grpc_error_handle src,
- grpc_error_strs which,
- y_absl::string_view str) {
- grpc_error_handle new_err = copy_error_and_unref(src);
- internal_set_str(&new_err, which,
- grpc_slice_from_copied_buffer(str.data(), str.length()));
- return new_err;
-}
-
-bool grpc_error_get_str(grpc_error_handle err, grpc_error_strs which,
- TString* s) {
- if (grpc_error_is_special(err)) {
- if (which != GRPC_ERROR_STR_GRPC_MESSAGE) return false;
- const special_error_status_map& msg =
- error_status_map[reinterpret_cast<size_t>(err)];
- *s = TString(msg.msg, msg.len);
- return true;
- }
- uint8_t slot = err->strs[which];
- if (slot != UINT8_MAX) {
- grpc_slice* slice = reinterpret_cast<grpc_slice*>(err->arena + slot);
- *s = TString(grpc_core::StringViewFromSlice(*slice));
- return true;
- } else {
- return false;
- }
-}
-
-grpc_error_handle grpc_error_add_child(grpc_error_handle src,
- grpc_error_handle child) {
- if (src != GRPC_ERROR_NONE) {
- if (child == GRPC_ERROR_NONE) {
- /* \a child is empty. Simply return the ref to \a src */
- return src;
- } else if (child != src) {
- grpc_error_handle new_err = copy_error_and_unref(src);
- internal_add_error(&new_err, child);
- return new_err;
- } else {
- /* \a src and \a child are the same. Drop one of the references and return
- * the other */
- GRPC_ERROR_UNREF(child);
- return src;
- }
- } else {
- /* \a src is empty. Simply return the ref to \a child */
- return child;
- }
-}
-
-static const char* no_error_string = "\"OK\"";
-static const char* oom_error_string = "\"RESOURCE_EXHAUSTED\"";
-static const char* cancelled_error_string = "\"CANCELLED\"";
-
-struct kv_pair {
- char* key;
- char* value;
-};
-struct kv_pairs {
- kv_pair* kvs;
- size_t num_kvs;
- size_t cap_kvs;
-};
-static void append_chr(char c, char** s, size_t* sz, size_t* cap) {
- if (*sz == *cap) {
- *cap = std::max(size_t(8), 3 * *cap / 2);
- *s = static_cast<char*>(gpr_realloc(*s, *cap));
- }
- (*s)[(*sz)++] = c;
-}
-
-static void append_str(const char* str, char** s, size_t* sz, size_t* cap) {
- for (const char* c = str; *c; c++) {
- append_chr(*c, s, sz, cap);
- }
-}
-
-static void append_esc_str(const uint8_t* str, size_t len, char** s, size_t* sz,
- size_t* cap) {
- static const char* hex = "0123456789abcdef";
- append_chr('"', s, sz, cap);
- for (size_t i = 0; i < len; i++, str++) {
- if (*str < 32 || *str >= 127) {
- append_chr('\\', s, sz, cap);
- switch (*str) {
- case '\b':
- append_chr('b', s, sz, cap);
- break;
- case '\f':
- append_chr('f', s, sz, cap);
- break;
- case '\n':
- append_chr('n', s, sz, cap);
- break;
- case '\r':
- append_chr('r', s, sz, cap);
- break;
- case '\t':
- append_chr('t', s, sz, cap);
- break;
- default:
- append_chr('u', s, sz, cap);
- append_chr('0', s, sz, cap);
- append_chr('0', s, sz, cap);
- append_chr(hex[*str >> 4], s, sz, cap);
- append_chr(hex[*str & 0x0f], s, sz, cap);
- break;
- }
- } else {
- append_chr(static_cast<char>(*str), s, sz, cap);
- }
- }
- append_chr('"', s, sz, cap);
-}
-
-static void append_kv(kv_pairs* kvs, char* key, char* value) {
- if (kvs->num_kvs == kvs->cap_kvs) {
- kvs->cap_kvs = std::max(3 * kvs->cap_kvs / 2, size_t(4));
- kvs->kvs = static_cast<kv_pair*>(
- gpr_realloc(kvs->kvs, sizeof(*kvs->kvs) * kvs->cap_kvs));
- }
- kvs->kvs[kvs->num_kvs].key = key;
- kvs->kvs[kvs->num_kvs].value = value;
- kvs->num_kvs++;
-}
-
-static char* key_int(grpc_error_ints which) {
- return gpr_strdup(error_int_name(which));
-}
-
-static char* fmt_int(intptr_t p) {
- char* s;
- gpr_asprintf(&s, "%" PRIdPTR, p);
- return s;
-}
-
-static void collect_ints_kvs(grpc_error_handle err, kv_pairs* kvs) {
- for (size_t which = 0; which < GRPC_ERROR_INT_MAX; ++which) {
- uint8_t slot = err->ints[which];
- if (slot != UINT8_MAX) {
- append_kv(kvs, key_int(static_cast<grpc_error_ints>(which)),
- fmt_int(err->arena[slot]));
- }
- }
-}
-
-static char* key_str(grpc_error_strs which) {
- return gpr_strdup(error_str_name(which));
-}
-
-static char* fmt_str(const grpc_slice& slice) {
- char* s = nullptr;
- size_t sz = 0;
- size_t cap = 0;
- append_esc_str(GRPC_SLICE_START_PTR(slice), GRPC_SLICE_LENGTH(slice), &s, &sz,
- &cap);
- append_chr(0, &s, &sz, &cap);
- return s;
-}
-
-static void collect_strs_kvs(grpc_error_handle err, kv_pairs* kvs) {
- for (size_t which = 0; which < GRPC_ERROR_STR_MAX; ++which) {
- uint8_t slot = err->strs[which];
- if (slot != UINT8_MAX) {
- append_kv(kvs, key_str(static_cast<grpc_error_strs>(which)),
- fmt_str(*reinterpret_cast<grpc_slice*>(err->arena + slot)));
- }
- }
-}
-
-static char* key_time(grpc_error_times which) {
- return gpr_strdup(error_time_name(which));
-}
-
-static char* fmt_time(gpr_timespec tm) {
- char* out;
- const char* pfx = "!!";
- switch (tm.clock_type) {
- case GPR_CLOCK_MONOTONIC:
- pfx = "@monotonic:";
- break;
- case GPR_CLOCK_REALTIME:
- pfx = "@";
- break;
- case GPR_CLOCK_PRECISE:
- pfx = "@precise:";
- break;
- case GPR_TIMESPAN:
- pfx = "";
- break;
- }
- gpr_asprintf(&out, "\"%s%" PRId64 ".%09d\"", pfx, tm.tv_sec, tm.tv_nsec);
- return out;
-}
-
-static void collect_times_kvs(grpc_error_handle err, kv_pairs* kvs) {
- for (size_t which = 0; which < GRPC_ERROR_TIME_MAX; ++which) {
- uint8_t slot = err->times[which];
- if (slot != UINT8_MAX) {
- append_kv(kvs, key_time(static_cast<grpc_error_times>(which)),
- fmt_time(*reinterpret_cast<gpr_timespec*>(err->arena + slot)));
- }
- }
-}
-
-static void add_errs(grpc_error_handle err, char** s, size_t* sz, size_t* cap) {
- uint8_t slot = err->first_err;
- bool first = true;
- while (slot != UINT8_MAX) {
- grpc_linked_error* lerr =
- reinterpret_cast<grpc_linked_error*>(err->arena + slot);
- if (!first) append_chr(',', s, sz, cap);
- first = false;
- const char* e = grpc_error_string(lerr->err);
- append_str(e, s, sz, cap);
- GPR_ASSERT(err->last_err == slot ? lerr->next == UINT8_MAX
- : lerr->next != UINT8_MAX);
- slot = lerr->next;
- }
-}
-
-static char* errs_string(grpc_error_handle err) {
- char* s = nullptr;
- size_t sz = 0;
- size_t cap = 0;
- append_chr('[', &s, &sz, &cap);
- add_errs(err, &s, &sz, &cap);
- append_chr(']', &s, &sz, &cap);
- append_chr(0, &s, &sz, &cap);
- return s;
-}
-
-static int cmp_kvs(const void* a, const void* b) {
- const kv_pair* ka = static_cast<const kv_pair*>(a);
- const kv_pair* kb = static_cast<const kv_pair*>(b);
- return strcmp(ka->key, kb->key);
-}
-
-static char* finish_kvs(kv_pairs* kvs) {
- char* s = nullptr;
- size_t sz = 0;
- size_t cap = 0;
-
- append_chr('{', &s, &sz, &cap);
- for (size_t i = 0; i < kvs->num_kvs; i++) {
- if (i != 0) append_chr(',', &s, &sz, &cap);
- append_esc_str(reinterpret_cast<const uint8_t*>(kvs->kvs[i].key),
- strlen(kvs->kvs[i].key), &s, &sz, &cap);
- gpr_free(kvs->kvs[i].key);
- append_chr(':', &s, &sz, &cap);
- append_str(kvs->kvs[i].value, &s, &sz, &cap);
- gpr_free(kvs->kvs[i].value);
- }
- append_chr('}', &s, &sz, &cap);
- append_chr(0, &s, &sz, &cap);
-
- gpr_free(kvs->kvs);
- return s;
-}
-
-// Newly allocated error string is stored into err object via atomic cas, and this drives coverity crazy
-// Disable allocation checks as the code is fine.
-// coverity[-alloc]
-const char* grpc_error_string(grpc_error_handle err) {
- if (err == GRPC_ERROR_NONE) return no_error_string;
- if (err == GRPC_ERROR_OOM) return oom_error_string;
- if (err == GRPC_ERROR_CANCELLED) return cancelled_error_string;
-
- void* p =
- reinterpret_cast<void*>(gpr_atm_acq_load(&err->atomics.error_string));
- if (p != nullptr) {
- return static_cast<const char*>(p);
- }
-
- kv_pairs kvs;
- memset(&kvs, 0, sizeof(kvs));
-
- collect_ints_kvs(err, &kvs);
- collect_strs_kvs(err, &kvs);
- collect_times_kvs(err, &kvs);
- if (err->first_err != UINT8_MAX) {
- append_kv(&kvs, gpr_strdup("referenced_errors"), errs_string(err));
- }
-
- qsort(kvs.kvs, kvs.num_kvs, sizeof(kv_pair), cmp_kvs);
-
- char* out = finish_kvs(&kvs);
-
- if (!gpr_atm_rel_cas(&err->atomics.error_string, 0,
- reinterpret_cast<gpr_atm>(out))) {
- gpr_free(out);
- out = reinterpret_cast<char*>(gpr_atm_acq_load(&err->atomics.error_string));
- }
-
- return out;
-}
-
-TString grpc_error_std_string(grpc_error_handle error) {
- return TString(grpc_error_string(error));
-}
-
-grpc_error_handle grpc_os_error(const char* file, int line, int err,
- const char* call_name) {
- return grpc_error_set_str(
- grpc_error_set_str(
- grpc_error_set_int(
- grpc_error_create(file, line,
- grpc_slice_from_static_string(strerror(err)),
- nullptr, 0),
- GRPC_ERROR_INT_ERRNO, err),
- GRPC_ERROR_STR_OS_ERROR, strerror(err)),
- GRPC_ERROR_STR_SYSCALL, call_name);
-}
-
-#ifdef GPR_WINDOWS
-grpc_error_handle grpc_wsa_error(const char* file, int line, int err,
- const char* call_name) {
- char* utf8_message = gpr_format_message(err);
- grpc_error_handle error = grpc_error_set_int(
- grpc_error_set_str(
- grpc_error_set_str(
- grpc_error_set_int(
- grpc_error_create(file, line,
- grpc_slice_from_static_string("OS Error"),
- NULL, 0),
- GRPC_ERROR_INT_WSA_ERROR, err),
- GRPC_ERROR_STR_OS_ERROR, utf8_message),
- GRPC_ERROR_STR_SYSCALL, call_name),
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
- gpr_free(utf8_message);
- return error;
-}
-#endif
-
-bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
- int line) {
- GPR_DEBUG_ASSERT(error != GRPC_ERROR_NONE);
- const char* msg = grpc_error_string(error);
- gpr_log(file, line, GPR_LOG_SEVERITY_ERROR, "%s: %s", what, msg);
- GRPC_ERROR_UNREF(error);
- return false;
-}
-
-#endif // GRPC_ERROR_IS_ABSEIL_STATUS
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/error.h b/contrib/libs/grpc/src/core/lib/iomgr/error.h
index b424f116a1..4f87345f07 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/error.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/error.h
@@ -40,17 +40,8 @@
/// See https://github.com/grpc/grpc/blob/master/doc/core/grpc-error.md for a
/// full write up of this object.
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
-
typedef y_absl::Status grpc_error_handle;
-#else // GRPC_ERROR_IS_ABSEIL_STATUS
-
-typedef struct grpc_error grpc_error;
-typedef grpc_error* grpc_error_handle;
-
-#endif // GRPC_ERROR_IS_ABSEIL_STATUS
-
typedef enum {
/// 'errno' from the operating system
GRPC_ERROR_INT_ERRNO =
@@ -152,8 +143,6 @@ TString grpc_error_std_string(grpc_error_handle error);
void grpc_disable_error_creation();
void grpc_enable_error_creation();
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
-
#define GRPC_ERROR_NONE y_absl::OkStatus()
#define GRPC_ERROR_OOM y_absl::Status(y_absl::ResourceExhaustedError(""))
#define GRPC_ERROR_CANCELLED y_absl::CancelledError()
@@ -161,6 +150,8 @@ void grpc_enable_error_creation();
#define GRPC_ERROR_REF(err) (err)
#define GRPC_ERROR_UNREF(err) (void)(err)
+#define GRPC_ERROR_IS_NONE(err) (err).ok()
+
#define GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc) \
StatusCreate(y_absl::StatusCode::kUnknown, desc, DEBUG_LOCATION, {})
#define GRPC_ERROR_CREATE_FROM_COPIED_STRING(desc) \
@@ -208,7 +199,7 @@ y_absl::Status grpc_os_error(const grpc_core::DebugLocation& location, int err,
const char* call_name) GRPC_MUST_USE_RESULT;
inline y_absl::Status grpc_assert_never_ok(y_absl::Status error) {
- GPR_ASSERT(error != GRPC_ERROR_NONE);
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
return error;
}
@@ -223,138 +214,6 @@ y_absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
#define GRPC_WSA_ERROR(err, call_name) \
grpc_wsa_error(DEBUG_LOCATION, err, call_name)
-#else // GRPC_ERROR_IS_ABSEIL_STATUS
-
-/// The following "special" errors can be propagated without allocating memory.
-/// They are always even so that other code (particularly combiner locks,
-/// polling engines) can safely use the lower bit for themselves.
-
-#define GRPC_ERROR_NONE ((grpc_error_handle)NULL)
-#define GRPC_ERROR_RESERVED_1 ((grpc_error_handle)1)
-#define GRPC_ERROR_OOM ((grpc_error_handle)2)
-#define GRPC_ERROR_RESERVED_2 ((grpc_error_handle)3)
-#define GRPC_ERROR_CANCELLED ((grpc_error_handle)4)
-#define GRPC_ERROR_SPECIAL_MAX GRPC_ERROR_CANCELLED
-
-inline bool grpc_error_is_special(grpc_error_handle err) {
- return err <= GRPC_ERROR_SPECIAL_MAX;
-}
-
-#ifndef NDEBUG
-grpc_error_handle grpc_error_do_ref(grpc_error_handle err, const char* file,
- int line);
-void grpc_error_do_unref(grpc_error_handle err, const char* file, int line);
-inline grpc_error_handle grpc_error_ref(grpc_error_handle err, const char* file,
- int line) {
- if (grpc_error_is_special(err)) return err;
- return grpc_error_do_ref(err, file, line);
-}
-inline void grpc_error_unref(grpc_error_handle err, const char* file,
- int line) {
- if (grpc_error_is_special(err)) return;
- grpc_error_do_unref(err, file, line);
-}
-#define GRPC_ERROR_REF(err) grpc_error_ref(err, __FILE__, __LINE__)
-#define GRPC_ERROR_UNREF(err) grpc_error_unref(err, __FILE__, __LINE__)
-#else
-grpc_error_handle grpc_error_do_ref(grpc_error_handle err);
-void grpc_error_do_unref(grpc_error_handle err);
-inline grpc_error_handle grpc_error_ref(grpc_error_handle err) {
- if (grpc_error_is_special(err)) return err;
- return grpc_error_do_ref(err);
-}
-inline void grpc_error_unref(grpc_error_handle err) {
- if (grpc_error_is_special(err)) return;
- grpc_error_do_unref(err);
-}
-#define GRPC_ERROR_REF(err) grpc_error_ref(err)
-#define GRPC_ERROR_UNREF(err) grpc_error_unref(err)
-#endif
-
-/// Create an error - but use GRPC_ERROR_CREATE instead
-grpc_error_handle grpc_error_create(const char* file, int line,
- const grpc_slice& desc,
- grpc_error_handle* referencing,
- size_t num_referencing);
-/// Create an error (this is the preferred way of generating an error that is
-/// not due to a system call - for system calls, use GRPC_OS_ERROR or
-/// GRPC_WSA_ERROR as appropriate)
-/// \a referencing is an array of num_referencing elements indicating one or
-/// more errors that are believed to have contributed to this one
-/// err = grpc_error_create(x, y, z, r, nr) is equivalent to:
-/// err = grpc_error_create(x, y, z, NULL, 0);
-/// for (i=0; i<nr; i++) err = grpc_error_add_child(err, r[i]);
-#define GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc) \
- grpc_error_create(__FILE__, __LINE__, grpc_slice_from_static_string(desc), \
- NULL, 0)
-#define GRPC_ERROR_CREATE_FROM_COPIED_STRING(desc) \
- grpc_error_create(__FILE__, __LINE__, grpc_slice_from_copied_string(desc), \
- NULL, 0)
-#define GRPC_ERROR_CREATE_FROM_CPP_STRING(desc) \
- grpc_error_create(__FILE__, __LINE__, grpc_slice_from_cpp_string(desc), \
- NULL, 0)
-#define GRPC_ERROR_CREATE_FROM_STRING_VIEW(desc) \
- grpc_error_create( \
- __FILE__, __LINE__, \
- grpc_slice_from_copied_buffer((desc).data(), (desc).size()), NULL, 0)
-
-// Create an error that references some other errors. This function adds a
-// reference to each error in errs - it does not consume an existing reference
-#define GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(desc, errs, count) \
- grpc_error_create(__FILE__, __LINE__, grpc_slice_from_static_string(desc), \
- errs, count)
-#define GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(desc, errs, count) \
- grpc_error_create(__FILE__, __LINE__, grpc_slice_from_copied_string(desc), \
- errs, count)
-
-#define GRPC_ERROR_CREATE_FROM_VECTOR(desc, error_list) \
- grpc_error_create_from_vector( \
- __FILE__, __LINE__, grpc_slice_from_static_string, desc, error_list)
-#define GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(desc, error_list) \
- grpc_error_create_from_vector(__FILE__, __LINE__, \
- grpc_slice_from_cpp_string, desc, error_list)
-
-// Consumes all the errors in the vector and forms a referencing error from
-// them. If the vector is empty, return GRPC_ERROR_NONE.
-template <typename VectorType, typename StringType,
- typename SliceFromStringFunction>
-static grpc_error_handle grpc_error_create_from_vector(
- const char* file, int line,
- SliceFromStringFunction slice_from_string_function, StringType desc,
- VectorType* error_list) {
- grpc_error_handle error = GRPC_ERROR_NONE;
- if (error_list->size() != 0) {
- error = grpc_error_create(file, line,
- slice_from_string_function(std::move(desc)),
- error_list->data(), error_list->size());
- // Remove refs to all errors in error_list.
- for (size_t i = 0; i < error_list->size(); i++) {
- GRPC_ERROR_UNREF((*error_list)[i]);
- }
- error_list->clear();
- }
- return error;
-}
-
-grpc_error_handle grpc_os_error(const char* file, int line, int err,
- const char* call_name) GRPC_MUST_USE_RESULT;
-
-inline grpc_error_handle grpc_assert_never_ok(grpc_error_handle error) {
- GPR_ASSERT(error != GRPC_ERROR_NONE);
- return error;
-}
-
-/// create an error associated with errno!=0 (an 'operating system' error)
-#define GRPC_OS_ERROR(err, call_name) \
- grpc_assert_never_ok(grpc_os_error(__FILE__, __LINE__, err, call_name))
-grpc_error_handle grpc_wsa_error(const char* file, int line, int err,
- const char* call_name) GRPC_MUST_USE_RESULT;
-/// windows only: create an error associated with WSAGetLastError()!=0
-#define GRPC_WSA_ERROR(err, call_name) \
- grpc_wsa_error(__FILE__, __LINE__, err, call_name)
-
-#endif // GRPC_ERROR_IS_ABSEIL_STATUS
-
grpc_error_handle grpc_error_set_int(grpc_error_handle src,
grpc_error_ints which,
intptr_t value) GRPC_MUST_USE_RESULT;
@@ -387,8 +246,8 @@ bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
int line);
inline bool grpc_log_if_error(const char* what, grpc_error_handle error,
const char* file, int line) {
- return error == GRPC_ERROR_NONE ? true
- : grpc_log_error(what, error, file, line);
+ return GRPC_ERROR_IS_NONE(error) ? true
+ : grpc_log_error(what, error, file, line);
}
#define GRPC_LOG_IF_ERROR(what, error) \
@@ -413,7 +272,7 @@ class AtomicError {
/// returns get() == GRPC_ERROR_NONE
bool ok() {
gpr_spinlock_lock(&lock_);
- bool ret = error_ == GRPC_ERROR_NONE;
+ bool ret = GRPC_ERROR_IS_NONE(error_);
gpr_spinlock_unlock(&lock_);
return ret;
}
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/error_cfstream.cc b/contrib/libs/grpc/src/core/lib/iomgr/error_cfstream.cc
index f0ad48842f..7f43231724 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/error_cfstream.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/error_cfstream.cc
@@ -49,12 +49,7 @@ grpc_error_handle grpc_error_create_from_cferror(const char* file, int line,
y_absl::StrFormat("%s (error domain:%s, code:%ld, description:%s)",
custom_desc, buf_domain, code, buf_desc);
CFRelease(desc);
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
return StatusCreate(y_absl::StatusCode::kUnknown, error_msg,
grpc_core::DebugLocation(file, line), {});
-#else
- return grpc_error_create(
- file, line, grpc_slice_from_copied_string(error_msg.c_str()), NULL, 0);
-#endif
}
#endif /* GRPC_CFSTREAM */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/error_internal.h b/contrib/libs/grpc/src/core/lib/iomgr/error_internal.h
deleted file mode 100644
index 8959ed13b4..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/error_internal.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- *
- * Copyright 2016 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef GRPC_CORE_LIB_IOMGR_ERROR_INTERNAL_H
-#define GRPC_CORE_LIB_IOMGR_ERROR_INTERNAL_H
-
-#include <grpc/support/port_platform.h>
-
-#include <inttypes.h>
-#include <stdbool.h> // TODO(unknown): , do we need this?
-
-#include <grpc/support/sync.h>
-
-#include "src/core/lib/iomgr/error.h"
-
-#ifndef GRPC_ERROR_IS_ABSEIL_STATUS
-
-typedef struct grpc_linked_error grpc_linked_error;
-
-struct grpc_linked_error {
- grpc_error_handle err;
- uint8_t next;
-};
-
-// c core representation of an error. See error.h for high level description of
-// this object.
-struct grpc_error {
- // All atomics in grpc_error must be stored in this nested struct. The rest of
- // the object is memcpy-ed in bulk in copy_and_unref.
- struct atomics {
- gpr_refcount refs;
- gpr_atm error_string;
- } atomics;
- // These arrays index into dynamic arena at the bottom of the struct.
- // UINT8_MAX is used as a sentinel value.
- uint8_t ints[GRPC_ERROR_INT_MAX];
- uint8_t strs[GRPC_ERROR_STR_MAX];
- uint8_t times[GRPC_ERROR_TIME_MAX];
- // The child errors are stored in the arena, but are effectively a linked list
- // structure, since they are contained within grpc_linked_error objects.
- uint8_t first_err;
- uint8_t last_err;
- // The arena is dynamically reallocated with a grow factor of 1.5.
- uint8_t arena_size;
- uint8_t arena_capacity;
- intptr_t arena[0];
-};
-
-#endif // GRPC_ERROR_IS_ABSEIL_STATUS
-
-#endif /* GRPC_CORE_LIB_IOMGR_ERROR_INTERNAL_H */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/ev_epoll1_linux.cc b/contrib/libs/grpc/src/core/lib/iomgr/ev_epoll1_linux.cc
index 480ca1426c..15ea8b2c46 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/ev_epoll1_linux.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/ev_epoll1_linux.cc
@@ -58,9 +58,9 @@
#include "src/core/lib/iomgr/iomgr_internal.h"
#include "src/core/lib/iomgr/lockfree_event.h"
#include "src/core/lib/iomgr/wakeup_fd_posix.h"
-#include "src/core/lib/profiling/timers.h"
static grpc_wakeup_fd global_wakeup_fd;
+static bool g_is_shutdown = true;
/*******************************************************************************
* Singleton epoll set related fields
@@ -243,8 +243,8 @@ struct grpc_pollset_set {
static bool append_error(grpc_error_handle* composite, grpc_error_handle error,
const char* desc) {
- if (error == GRPC_ERROR_NONE) return true;
- if (*composite == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) return true;
+ if (GRPC_ERROR_IS_NONE(*composite)) {
*composite = GRPC_ERROR_CREATE_FROM_COPIED_STRING(desc);
}
*composite = grpc_error_add_child(*composite, error);
@@ -518,7 +518,7 @@ static grpc_error_handle pollset_global_init(void) {
gpr_atm_no_barrier_store(&g_active_poller, 0);
global_wakeup_fd.read_fd = -1;
grpc_error_handle err = grpc_wakeup_fd_init(&global_wakeup_fd);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
struct epoll_event ev;
ev.events = static_cast<uint32_t>(EPOLLIN | EPOLLET);
ev.data.ptr = &global_wakeup_fd;
@@ -587,25 +587,20 @@ static void pollset_destroy(grpc_pollset* pollset) {
}
static grpc_error_handle pollset_kick_all(grpc_pollset* pollset) {
- GPR_TIMER_SCOPE("pollset_kick_all", 0);
grpc_error_handle error = GRPC_ERROR_NONE;
if (pollset->root_worker != nullptr) {
grpc_pollset_worker* worker = pollset->root_worker;
do {
- GRPC_STATS_INC_POLLSET_KICK();
switch (worker->state) {
case KICKED:
- GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
break;
case UNKICKED:
SET_KICK_STATE(worker, KICKED);
if (worker->initialized_cv) {
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
gpr_cv_signal(&worker->cv);
}
break;
case DESIGNATED_POLLER:
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
SET_KICK_STATE(worker, KICKED);
append_error(&error, grpc_wakeup_fd_wakeup(&global_wakeup_fd),
"pollset_kick_all");
@@ -623,7 +618,6 @@ static grpc_error_handle pollset_kick_all(grpc_pollset* pollset) {
static void pollset_maybe_finish_shutdown(grpc_pollset* pollset) {
if (pollset->shutdown_closure != nullptr && pollset->root_worker == nullptr &&
pollset->begin_refs == 0) {
- GPR_TIMER_MARK("pollset_finish_shutdown", 0);
grpc_core::ExecCtx::Run(DEBUG_LOCATION, pollset->shutdown_closure,
GRPC_ERROR_NONE);
pollset->shutdown_closure = nullptr;
@@ -631,7 +625,6 @@ static void pollset_maybe_finish_shutdown(grpc_pollset* pollset) {
}
static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
- GPR_TIMER_SCOPE("pollset_shutdown", 0);
GPR_ASSERT(pollset->shutdown_closure == nullptr);
GPR_ASSERT(!pollset->shutting_down);
pollset->shutdown_closure = closure;
@@ -642,7 +635,7 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
static int poll_deadline_to_millis_timeout(grpc_core::Timestamp millis) {
if (millis == grpc_core::Timestamp::InfFuture()) return -1;
- int64_t delta = (millis - grpc_core::ExecCtx::Get()->Now()).millis();
+ int64_t delta = (millis - grpc_core::Timestamp::Now()).millis();
if (delta > INT_MAX) {
return INT_MAX;
} else if (delta < 0) {
@@ -661,8 +654,6 @@ static int poll_deadline_to_millis_timeout(grpc_core::Timestamp millis) {
called by g_active_poller thread. So there is no need for synchronization
when accessing fields in g_epoll_set */
static grpc_error_handle process_epoll_events(grpc_pollset* /*pollset*/) {
- GPR_TIMER_SCOPE("process_epoll_events", 0);
-
static const char* err_desc = "process_events";
grpc_error_handle error = GRPC_ERROR_NONE;
long num_events = gpr_atm_acq_load(&g_epoll_set.num_events);
@@ -714,15 +705,12 @@ static grpc_error_handle process_epoll_events(grpc_pollset* /*pollset*/) {
no need for any synchronization when accesing fields in g_epoll_set */
static grpc_error_handle do_epoll_wait(grpc_pollset* ps,
grpc_core::Timestamp deadline) {
- GPR_TIMER_SCOPE("do_epoll_wait", 0);
-
int r;
int timeout = poll_deadline_to_millis_timeout(deadline);
if (timeout != 0) {
GRPC_SCHEDULING_START_BLOCKING_REGION;
}
do {
- GRPC_STATS_INC_SYSCALL_POLL();
r = epoll_wait(g_epoll_set.epfd, g_epoll_set.events, MAX_EPOLL_EVENTS,
timeout);
} while (r < 0 && errno == EINTR);
@@ -732,8 +720,6 @@ static grpc_error_handle do_epoll_wait(grpc_pollset* ps,
if (r < 0) return GRPC_OS_ERROR(errno, "epoll_wait");
- GRPC_STATS_INC_POLL_EVENTS_RETURNED(r);
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
gpr_log(GPR_INFO, "ps: %p poll got %d events", ps, r);
}
@@ -747,7 +733,6 @@ static grpc_error_handle do_epoll_wait(grpc_pollset* ps,
static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
grpc_pollset_worker** worker_hdl,
grpc_core::Timestamp deadline) {
- GPR_TIMER_SCOPE("begin_worker", 0);
if (worker_hdl != nullptr) *worker_hdl = worker;
worker->initialized_cv = false;
SET_KICK_STATE(worker, UNKICKED);
@@ -870,7 +855,6 @@ static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
static bool check_neighborhood_for_available_poller(
pollset_neighborhood* neighborhood) {
- GPR_TIMER_SCOPE("check_neighborhood_for_available_poller", 0);
bool found_worker = false;
do {
grpc_pollset* inspect = neighborhood->active_root;
@@ -893,8 +877,6 @@ static bool check_neighborhood_for_available_poller(
}
SET_KICK_STATE(inspect_worker, DESIGNATED_POLLER);
if (inspect_worker->initialized_cv) {
- GPR_TIMER_MARK("signal worker", 0);
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
gpr_cv_signal(&inspect_worker->cv);
}
} else {
@@ -935,7 +917,6 @@ static bool check_neighborhood_for_available_poller(
static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
grpc_pollset_worker** worker_hdl) {
- GPR_TIMER_SCOPE("end_worker", 0);
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
gpr_log(GPR_INFO, "PS:%p END_WORKER:%p", pollset, worker);
}
@@ -953,7 +934,6 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
GPR_ASSERT(worker->next->initialized_cv);
gpr_atm_no_barrier_store(&g_active_poller, (gpr_atm)worker->next);
SET_KICK_STATE(worker->next, DESIGNATED_POLLER);
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
gpr_cv_signal(&worker->next->cv);
if (grpc_core::ExecCtx::Get()->HasWork()) {
gpr_mu_unlock(&pollset->mu);
@@ -1015,7 +995,6 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
static grpc_error_handle pollset_work(grpc_pollset* ps,
grpc_pollset_worker** worker_hdl,
grpc_core::Timestamp deadline) {
- GPR_TIMER_SCOPE("pollset_work", 0);
grpc_pollset_worker worker;
grpc_error_handle error = GRPC_ERROR_NONE;
static const char* err_desc = "pollset_work";
@@ -1065,8 +1044,6 @@ static grpc_error_handle pollset_work(grpc_pollset* ps,
static grpc_error_handle pollset_kick(grpc_pollset* pollset,
grpc_pollset_worker* specific_worker) {
- GPR_TIMER_SCOPE("pollset_kick", 0);
- GRPC_STATS_INC_POLLSET_KICK();
grpc_error_handle ret_err = GRPC_ERROR_NONE;
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
std::vector<TString> log;
@@ -1092,7 +1069,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
if (g_current_thread_pollset != pollset) {
grpc_pollset_worker* root_worker = pollset->root_worker;
if (root_worker == nullptr) {
- GRPC_STATS_INC_POLLSET_KICKED_WITHOUT_POLLER();
pollset->kicked_without_poller = true;
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
gpr_log(GPR_INFO, " .. kicked_without_poller");
@@ -1101,14 +1077,12 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
}
grpc_pollset_worker* next_worker = root_worker->next;
if (root_worker->state == KICKED) {
- GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
gpr_log(GPR_INFO, " .. already kicked %p", root_worker);
}
SET_KICK_STATE(root_worker, KICKED);
goto done;
} else if (next_worker->state == KICKED) {
- GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
gpr_log(GPR_INFO, " .. already kicked %p", next_worker);
}
@@ -1119,7 +1093,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
root_worker ==
reinterpret_cast<grpc_pollset_worker*>(
gpr_atm_no_barrier_load(&g_active_poller))) {
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
gpr_log(GPR_INFO, " .. kicked %p", root_worker);
}
@@ -1127,7 +1100,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
ret_err = grpc_wakeup_fd_wakeup(&global_wakeup_fd);
goto done;
} else if (next_worker->state == UNKICKED) {
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
gpr_log(GPR_INFO, " .. kicked %p", next_worker);
}
@@ -1145,12 +1117,10 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
}
SET_KICK_STATE(root_worker, KICKED);
if (root_worker->initialized_cv) {
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
gpr_cv_signal(&root_worker->cv);
}
goto done;
} else {
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
gpr_log(GPR_INFO, " .. non-root poller %p (root=%p)", next_worker,
root_worker);
@@ -1160,13 +1130,11 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
goto done;
}
} else {
- GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
GPR_ASSERT(next_worker->state == KICKED);
SET_KICK_STATE(next_worker, KICKED);
goto done;
}
} else {
- GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD();
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
gpr_log(GPR_INFO, " .. kicked while waking up");
}
@@ -1182,7 +1150,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
}
goto done;
} else if (g_current_thread_worker == specific_worker) {
- GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD();
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
gpr_log(GPR_INFO, " .. mark %p kicked", specific_worker);
}
@@ -1191,7 +1158,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
} else if (specific_worker ==
reinterpret_cast<grpc_pollset_worker*>(
gpr_atm_no_barrier_load(&g_active_poller))) {
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
gpr_log(GPR_INFO, " .. kick active poller");
}
@@ -1199,7 +1165,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
ret_err = grpc_wakeup_fd_wakeup(&global_wakeup_fd);
goto done;
} else if (specific_worker->initialized_cv) {
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
gpr_log(GPR_INFO, " .. kick waiting worker");
}
@@ -1207,7 +1172,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* pollset,
gpr_cv_signal(&specific_worker->cv);
goto done;
} else {
- GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
gpr_log(GPR_INFO, " .. kick non-waiting worker");
}
@@ -1267,9 +1231,12 @@ static void shutdown_engine(void) {
gpr_mu_destroy(&fork_fd_list_mu);
grpc_core::Fork::SetResetChildPollingEngineFunc(nullptr);
}
+ g_is_shutdown = true;
}
-static const grpc_event_engine_vtable vtable = {
+static bool init_epoll1_linux();
+
+const grpc_event_engine_vtable grpc_ev_epoll1_posix = {
sizeof(grpc_pollset),
true,
false,
@@ -1303,8 +1270,14 @@ static const grpc_event_engine_vtable vtable = {
pollset_set_del_fd,
is_any_background_poller_thread,
+ /* name = */ "epoll1",
+ /* check_engine_available = */
+ [](bool) { return init_epoll1_linux(); },
+ /* init_engine = */
+ []() { GPR_ASSERT(init_epoll1_linux()); },
shutdown_background_closure,
- shutdown_engine,
+ /* shutdown_engine = */
+ []() { shutdown_engine(); },
add_closure_to_background_poller,
};
@@ -1320,21 +1293,21 @@ static void reset_event_manager_on_fork() {
}
gpr_mu_unlock(&fork_fd_list_mu);
shutdown_engine();
- grpc_init_epoll1_linux(true);
+ init_epoll1_linux();
}
/* It is possible that GLIBC has epoll but the underlying kernel doesn't.
* Create epoll_fd (epoll_set_init() takes care of that) to make sure epoll
* support is available */
-const grpc_event_engine_vtable* grpc_init_epoll1_linux(
- bool /*explicit_request*/) {
+static bool init_epoll1_linux() {
+ if (!g_is_shutdown) return true;
if (!grpc_has_wakeup_fd()) {
gpr_log(GPR_ERROR, "Skipping epoll1 because of no wakeup fd.");
- return nullptr;
+ return false;
}
if (!epoll_set_init()) {
- return nullptr;
+ return false;
}
fd_global_init();
@@ -1342,7 +1315,7 @@ const grpc_event_engine_vtable* grpc_init_epoll1_linux(
if (!GRPC_LOG_IF_ERROR("pollset_global_init", pollset_global_init())) {
fd_global_shutdown();
epoll_set_shutdown();
- return nullptr;
+ return false;
}
if (grpc_core::Fork::Enabled()) {
@@ -1350,17 +1323,53 @@ const grpc_event_engine_vtable* grpc_init_epoll1_linux(
grpc_core::Fork::SetResetChildPollingEngineFunc(
reset_event_manager_on_fork);
}
- return &vtable;
+ g_is_shutdown = false;
+ return true;
}
#else /* defined(GRPC_LINUX_EPOLL) */
#if defined(GRPC_POSIX_SOCKET_EV_EPOLL1)
#include "src/core/lib/iomgr/ev_epoll1_linux.h"
-/* If GRPC_LINUX_EPOLL is not defined, it means epoll is not available. Return
- * NULL */
-const grpc_event_engine_vtable* grpc_init_epoll1_linux(
- bool /*explicit_request*/) {
- return nullptr;
-}
+const grpc_event_engine_vtable grpc_ev_epoll1_posix = {
+ 1,
+ true,
+ false,
+
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+
+ nullptr,
+ /* name = */ "epoll1",
+ /* check_engine_available = */ [](bool) { return false; },
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+};
#endif /* defined(GRPC_POSIX_SOCKET_EV_EPOLL1) */
#endif /* !defined(GRPC_LINUX_EPOLL) */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/ev_epoll1_linux.h b/contrib/libs/grpc/src/core/lib/iomgr/ev_epoll1_linux.h
index ca0db7250f..a3e0fefb5f 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/ev_epoll1_linux.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/ev_epoll1_linux.h
@@ -26,6 +26,6 @@
// a polling engine that utilizes a singleton epoll set and turnstile polling
-const grpc_event_engine_vtable* grpc_init_epoll1_linux(bool explicit_request);
+extern const grpc_event_engine_vtable grpc_ev_epoll1_posix;
#endif /* GRPC_CORE_LIB_IOMGR_EV_EPOLL1_LINUX_H */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/ev_epollex_linux.cc b/contrib/libs/grpc/src/core/lib/iomgr/ev_epollex_linux.cc
deleted file mode 100644
index d1740fde0c..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/ev_epollex_linux.cc
+++ /dev/null
@@ -1,1658 +0,0 @@
-/*
- *
- * Copyright 2017 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/support/port_platform.h>
-
-#include <grpc/support/log.h>
-
-#include "src/core/lib/iomgr/port.h"
-
-/* This polling engine is only relevant on linux kernels supporting epoll() */
-#ifdef GRPC_LINUX_EPOLL_CREATE1
-
-#include <assert.h>
-#include <errno.h>
-#include <limits.h>
-#include <poll.h>
-#include <pthread.h>
-#include <string.h>
-#include <sys/epoll.h>
-#include <sys/socket.h>
-#include <sys/syscall.h>
-#include <unistd.h>
-
-#include <util/generic/string.h>
-#include <util/string/cast.h>
-
-#include "y_absl/container/inlined_vector.h"
-#include "y_absl/strings/str_cat.h"
-#include "y_absl/strings/str_format.h"
-
-#include <grpc/support/alloc.h>
-
-#include "src/core/lib/debug/stats.h"
-#include "src/core/lib/gpr/spinlock.h"
-#include "src/core/lib/gpr/tls.h"
-#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
-#include "src/core/lib/gprpp/ref_counted.h"
-#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/iomgr/block_annotate.h"
-#include "src/core/lib/iomgr/ev_epollex_linux.h"
-#include "src/core/lib/iomgr/iomgr_internal.h"
-#include "src/core/lib/iomgr/is_epollexclusive_available.h"
-#include "src/core/lib/iomgr/lockfree_event.h"
-#include "src/core/lib/iomgr/sys_epoll_wrapper.h"
-#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/iomgr/wakeup_fd_posix.h"
-#include "src/core/lib/profiling/timers.h"
-
-// debug aid: create workers on the heap (allows asan to spot
-// use-after-destruction)
-//#define GRPC_EPOLLEX_CREATE_WORKERS_ON_HEAP 1
-
-#define MAX_EPOLL_EVENTS 100
-#define MAX_FDS_IN_CACHE 32
-
-grpc_core::DebugOnlyTraceFlag grpc_trace_pollable_refcount(false,
- "pollable_refcount");
-
-/*******************************************************************************
- * pollable Declarations
- */
-
-typedef enum { PO_MULTI, PO_FD, PO_EMPTY } pollable_type;
-
-typedef struct pollable pollable;
-
-/// A pollable is something that can be polled: it has an epoll set to poll on,
-/// and a wakeup fd for kicks
-/// There are three broad types:
-/// - PO_EMPTY - the empty pollable, used before file descriptors are added to
-/// a pollset
-/// - PO_FD - a pollable containing only one FD - used to optimize single-fd
-/// pollsets (which are common with synchronous api usage)
-/// - PO_MULTI - a pollable containing many fds
-struct pollable {
- pollable_type type; // immutable
- grpc_core::RefCount refs;
-
- int epfd;
- grpc_wakeup_fd wakeup;
-
- // The following are relevant only for type PO_FD
- grpc_fd* owner_fd; // Set to the owner_fd if the type is PO_FD
- gpr_mu owner_orphan_mu; // Synchronizes access to owner_orphaned field
- bool owner_orphaned; // Is the owner fd orphaned
-
- grpc_pollset_set* pollset_set;
- pollable* next;
- pollable* prev;
-
- gpr_mu mu;
- grpc_pollset_worker* root_worker;
-
- int event_cursor;
- int event_count;
- struct epoll_event events[MAX_EPOLL_EVENTS];
-};
-
-static const char* pollable_type_string(pollable_type t) {
- switch (t) {
- case PO_MULTI:
- return "pollset";
- case PO_FD:
- return "fd";
- case PO_EMPTY:
- return "empty";
- }
- return "<invalid>";
-}
-
-static TString pollable_desc(pollable* p) {
- return y_absl::StrFormat("type=%s epfd=%d wakeup=%d",
- pollable_type_string(p->type), p->epfd,
- p->wakeup.read_fd);
-}
-
-/// Shared empty pollable - used by pollset to poll on until the first fd is
-/// added
-static pollable* g_empty_pollable;
-
-static grpc_error_handle pollable_create(pollable_type type, pollable** p);
-static pollable* pollable_ref(pollable* p,
- const grpc_core::DebugLocation& dbg_loc,
- const char* reason) {
- p->refs.Ref(dbg_loc, reason);
- return p;
-}
-static void pollable_unref(pollable* p, const grpc_core::DebugLocation& dbg_loc,
- const char* reason) {
- if (p == nullptr) return;
- if (GPR_UNLIKELY(p != nullptr && p->refs.Unref(dbg_loc, reason))) {
- GRPC_FD_TRACE("pollable_unref: Closing epfd: %d", p->epfd);
- close(p->epfd);
- grpc_wakeup_fd_destroy(&p->wakeup);
- gpr_mu_destroy(&p->owner_orphan_mu);
- gpr_mu_destroy(&p->mu);
- gpr_free(p);
- }
-}
-#define POLLABLE_REF(p, r) pollable_ref((p), DEBUG_LOCATION, (r))
-#define POLLABLE_UNREF(p, r) pollable_unref((p), DEBUG_LOCATION, (r))
-
-/*******************************************************************************
- * Fd Declarations
- */
-
-struct grpc_fd {
- grpc_fd(int fd, const char* name, bool track_err)
- : fd(fd), track_err(track_err) {
- gpr_mu_init(&orphan_mu);
- gpr_mu_init(&pollable_mu);
- read_closure.InitEvent();
- write_closure.InitEvent();
- error_closure.InitEvent();
-
- TString fd_name = y_absl::StrCat(name, " fd=", fd);
- grpc_iomgr_register_object(&iomgr_object, fd_name.c_str());
-#ifndef NDEBUG
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_fd_refcount)) {
- gpr_log(GPR_DEBUG, "FD %d %p create %s", fd, this, fd_name.c_str());
- }
-#endif
- }
-
- // This is really the dtor, but the poller threads waking up from
- // epoll_wait() may access the (read|write|error)_closure after destruction.
- // Since the object will be added to the free pool, this behavior is
- // not going to cause issues, except spurious events if the FD is reused
- // while the race happens.
- void destroy() {
- grpc_iomgr_unregister_object(&iomgr_object);
-
- POLLABLE_UNREF(pollable_obj, "fd_pollable");
-
- // To clear out the allocations of pollset_fds, we need to swap its
- // contents with a newly-constructed (and soon to be destructed) local
- // variable of its same type. This is because InlinedVector::clear is _not_
- // guaranteed to actually free up allocations and this is important since
- // this object doesn't have a conventional destructor.
- y_absl::InlinedVector<int, 1> pollset_fds_tmp;
- pollset_fds_tmp.swap(pollset_fds);
-
- gpr_mu_destroy(&pollable_mu);
- gpr_mu_destroy(&orphan_mu);
-
- read_closure.DestroyEvent();
- write_closure.DestroyEvent();
- error_closure.DestroyEvent();
-
- invalidate();
- }
-
-#ifndef NDEBUG
- /* Since an fd is never really destroyed (i.e gpr_free() is not called), it is
- * hard-to-debug cases where fd fields are accessed even after calling
- * fd_destroy(). The following invalidates fd fields to make catching such
- * errors easier */
- void invalidate() {
- fd = -1;
- gpr_atm_no_barrier_store(&refst, -1);
- memset(&orphan_mu, -1, sizeof(orphan_mu));
- memset(&pollable_mu, -1, sizeof(pollable_mu));
- pollable_obj = nullptr;
- on_done_closure = nullptr;
- memset(&iomgr_object, -1, sizeof(iomgr_object));
- track_err = false;
- }
-#else
- void invalidate() {}
-#endif
-
- int fd;
-
- // refst format:
- // bit 0 : 1=Active / 0=Orphaned
- // bits 1-n : refcount
- // Ref/Unref by two to avoid altering the orphaned bit
- gpr_atm refst = 1;
-
- gpr_mu orphan_mu;
-
- // Protects pollable_obj and pollset_fds.
- gpr_mu pollable_mu;
- y_absl::InlinedVector<int, 1> pollset_fds; // Used in PO_MULTI.
- pollable* pollable_obj = nullptr; // Used in PO_FD.
-
- grpc_core::LockfreeEvent read_closure;
- grpc_core::LockfreeEvent write_closure;
- grpc_core::LockfreeEvent error_closure;
-
- struct grpc_fd* freelist_next = nullptr;
- grpc_closure* on_done_closure = nullptr;
-
- grpc_iomgr_object iomgr_object;
-
- // Do we need to track EPOLLERR events separately?
- bool track_err;
-};
-
-static void fd_global_init(void);
-static void fd_global_shutdown(void);
-
-/*******************************************************************************
- * Pollset Declarations
- */
-
-struct pwlink {
- grpc_pollset_worker* next;
- grpc_pollset_worker* prev;
-};
-typedef enum { PWLINK_POLLABLE = 0, PWLINK_POLLSET, PWLINK_COUNT } pwlinks;
-
-struct grpc_pollset_worker {
- bool kicked;
- bool initialized_cv;
-#ifndef NDEBUG
- // debug aid: which thread started this worker
- pid_t originator;
-#endif
- gpr_cv cv;
- grpc_pollset* pollset;
- pollable* pollable_obj;
-
- pwlink links[PWLINK_COUNT];
-};
-
-struct grpc_pollset {
- gpr_mu mu;
- gpr_atm worker_count;
- gpr_atm active_pollable_type;
- pollable* active_pollable;
- bool kicked_without_poller;
- grpc_closure* shutdown_closure;
- bool already_shutdown;
- grpc_pollset_worker* root_worker;
- int containing_pollset_set_count;
-};
-
-/*******************************************************************************
- * Pollset-set Declarations
- */
-
-struct grpc_pollset_set {
- grpc_core::RefCount refs;
- gpr_mu mu;
- grpc_pollset_set* parent;
-
- size_t pollset_count;
- size_t pollset_capacity;
- grpc_pollset** pollsets;
-
- size_t fd_count;
- size_t fd_capacity;
- grpc_fd** fds;
-};
-
-/*******************************************************************************
- * Common helpers
- */
-
-static bool append_error(grpc_error_handle* composite, grpc_error_handle error,
- const char* desc) {
- if (error == GRPC_ERROR_NONE) return true;
- if (*composite == GRPC_ERROR_NONE) {
- *composite = GRPC_ERROR_CREATE_FROM_COPIED_STRING(desc);
- }
- *composite = grpc_error_add_child(*composite, error);
- return false;
-}
-
-/*******************************************************************************
- * Fd Definitions
- */
-
-/* We need to keep a freelist not because of any concerns of malloc performance
- * but instead so that implementations with multiple threads in (for example)
- * epoll_wait deal with the race between pollset removal and incoming poll
- * notifications.
- *
- * The problem is that the poller ultimately holds a reference to this
- * object, so it is very difficult to know when is safe to free it, at least
- * without some expensive synchronization.
- *
- * If we keep the object freelisted, in the worst case losing this race just
- * becomes a spurious read notification on a reused fd.
- */
-
-static grpc_fd* fd_freelist = nullptr;
-static gpr_mu fd_freelist_mu;
-
-#ifndef NDEBUG
-#define REF_BY(fd, n, reason) ref_by(fd, n, reason, __FILE__, __LINE__)
-#define UNREF_BY(fd, n, reason) unref_by(fd, n, reason, __FILE__, __LINE__)
-static void ref_by(grpc_fd* fd, int n, const char* reason, const char* file,
- int line) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_fd_refcount)) {
- gpr_log(GPR_DEBUG,
- "FD %d %p ref %d %" PRIdPTR " -> %" PRIdPTR " [%s; %s:%d]",
- fd->fd, fd, n, gpr_atm_no_barrier_load(&fd->refst),
- gpr_atm_no_barrier_load(&fd->refst) + n, reason, file, line);
- }
-#else
-#define REF_BY(fd, n, reason) \
- do { \
- ref_by(fd, n); \
- (void)(reason); \
- } while (0)
-#define UNREF_BY(fd, n, reason) \
- do { \
- unref_by(fd, n); \
- (void)(reason); \
- } while (0)
-static void ref_by(grpc_fd* fd, int n) {
-#endif
- GPR_ASSERT(gpr_atm_no_barrier_fetch_add(&fd->refst, n) > 0);
-}
-
-/* Uninitialize and add to the freelist */
-static void fd_destroy(void* arg, grpc_error_handle /*error*/) {
- grpc_fd* fd = static_cast<grpc_fd*>(arg);
- fd->destroy();
-
- /* Add the fd to the freelist */
- gpr_mu_lock(&fd_freelist_mu);
- fd->freelist_next = fd_freelist;
- fd_freelist = fd;
- gpr_mu_unlock(&fd_freelist_mu);
-}
-
-#ifndef NDEBUG
-static void unref_by(grpc_fd* fd, int n, const char* reason, const char* file,
- int line) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_fd_refcount)) {
- gpr_log(GPR_DEBUG,
- "FD %d %p unref %d %" PRIdPTR " -> %" PRIdPTR " [%s; %s:%d]",
- fd->fd, fd, n, gpr_atm_no_barrier_load(&fd->refst),
- gpr_atm_no_barrier_load(&fd->refst) - n, reason, file, line);
- }
-#else
-static void unref_by(grpc_fd* fd, int n) {
-#endif
- gpr_atm old = gpr_atm_full_fetch_add(&fd->refst, -n);
- if (old == n) {
- grpc_core::ExecCtx::Run(
- DEBUG_LOCATION,
- GRPC_CLOSURE_CREATE(fd_destroy, fd, grpc_schedule_on_exec_ctx),
- GRPC_ERROR_NONE);
- } else {
- GPR_ASSERT(old > n);
- }
-}
-
-static void fd_global_init(void) { gpr_mu_init(&fd_freelist_mu); }
-
-static void fd_global_shutdown(void) {
- // TODO(guantaol): We don't have a reasonable explanation about this
- // lock()/unlock() pattern. It can be a valid barrier if there is at most one
- // pending lock() at this point. Otherwise, there is still a possibility of
- // use-after-free race. Need to reason about the code and/or clean it up.
- gpr_mu_lock(&fd_freelist_mu);
- gpr_mu_unlock(&fd_freelist_mu);
- while (fd_freelist != nullptr) {
- grpc_fd* fd = fd_freelist;
- fd_freelist = fd_freelist->freelist_next;
- gpr_free(fd);
- }
- gpr_mu_destroy(&fd_freelist_mu);
-}
-
-static grpc_fd* fd_create(int fd, const char* name, bool track_err) {
- grpc_fd* new_fd = nullptr;
-
- gpr_mu_lock(&fd_freelist_mu);
- if (fd_freelist != nullptr) {
- new_fd = fd_freelist;
- fd_freelist = fd_freelist->freelist_next;
- }
- gpr_mu_unlock(&fd_freelist_mu);
-
- if (new_fd == nullptr) {
- new_fd = static_cast<grpc_fd*>(gpr_malloc(sizeof(grpc_fd)));
- }
-
- return new (new_fd) grpc_fd(fd, name, track_err);
-}
-
-static int fd_wrapped_fd(grpc_fd* fd) {
- int ret_fd = fd->fd;
- return (gpr_atm_acq_load(&fd->refst) & 1) ? ret_fd : -1;
-}
-
-static void fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd,
- const char* reason) {
- bool is_fd_closed = false;
-
- gpr_mu_lock(&fd->orphan_mu);
-
- // Get the fd->pollable_obj and set the owner_orphaned on that pollable to
- // true so that the pollable will no longer access its owner_fd field.
- gpr_mu_lock(&fd->pollable_mu);
- pollable* pollable_obj = fd->pollable_obj;
-
- if (pollable_obj) {
- gpr_mu_lock(&pollable_obj->owner_orphan_mu);
- pollable_obj->owner_orphaned = true;
- }
-
- fd->on_done_closure = on_done;
-
- /* If release_fd is not NULL, we should be relinquishing control of the file
- descriptor fd->fd (but we still own the grpc_fd structure). */
- if (release_fd != nullptr) {
- // Remove the FD from all epolls sets, before releasing it.
- // Otherwise, we will receive epoll events after we release the FD.
- epoll_event ev_fd;
- memset(&ev_fd, 0, sizeof(ev_fd));
- if (pollable_obj != nullptr) { // For PO_FD.
- epoll_ctl(pollable_obj->epfd, EPOLL_CTL_DEL, fd->fd, &ev_fd);
- }
- for (size_t i = 0; i < fd->pollset_fds.size(); ++i) { // For PO_MULTI.
- const int epfd = fd->pollset_fds[i];
- epoll_ctl(epfd, EPOLL_CTL_DEL, fd->fd, &ev_fd);
- }
- *release_fd = fd->fd;
- } else {
- close(fd->fd);
- is_fd_closed = true;
- }
-
- // TODO(sreek): handle fd removal (where is_fd_closed=false)
- if (!is_fd_closed) {
- GRPC_FD_TRACE("epoll_fd %p (%d) was orphaned but not closed.", fd, fd->fd);
- }
-
- /* Remove the active status but keep referenced. We want this grpc_fd struct
- to be alive (and not added to freelist) until the end of this function */
- REF_BY(fd, 1, reason);
-
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, fd->on_done_closure, GRPC_ERROR_NONE);
-
- if (pollable_obj) {
- gpr_mu_unlock(&pollable_obj->owner_orphan_mu);
- }
-
- gpr_mu_unlock(&fd->pollable_mu);
- gpr_mu_unlock(&fd->orphan_mu);
-
- UNREF_BY(fd, 2, reason); /* Drop the reference */
-}
-
-static bool fd_is_shutdown(grpc_fd* fd) {
- return fd->read_closure.IsShutdown();
-}
-
-/* Might be called multiple times */
-static void fd_shutdown(grpc_fd* fd, grpc_error_handle why) {
- if (fd->read_closure.SetShutdown(GRPC_ERROR_REF(why))) {
- if (shutdown(fd->fd, SHUT_RDWR)) {
- if (errno != ENOTCONN) {
- gpr_log(GPR_ERROR, "Error shutting down fd %d. errno: %d",
- grpc_fd_wrapped_fd(fd), errno);
- }
- }
- fd->write_closure.SetShutdown(GRPC_ERROR_REF(why));
- fd->error_closure.SetShutdown(GRPC_ERROR_REF(why));
- }
- GRPC_ERROR_UNREF(why);
-}
-
-static void fd_notify_on_read(grpc_fd* fd, grpc_closure* closure) {
- fd->read_closure.NotifyOn(closure);
-}
-
-static void fd_notify_on_write(grpc_fd* fd, grpc_closure* closure) {
- fd->write_closure.NotifyOn(closure);
-}
-
-static void fd_notify_on_error(grpc_fd* fd, grpc_closure* closure) {
- fd->error_closure.NotifyOn(closure);
-}
-
-static bool fd_has_pollset(grpc_fd* fd, grpc_pollset* pollset) {
- const int epfd = pollset->active_pollable->epfd;
- grpc_core::MutexLockForGprMu lock(&fd->pollable_mu);
- for (size_t i = 0; i < fd->pollset_fds.size(); ++i) {
- if (fd->pollset_fds[i] == epfd) {
- return true;
- }
- }
- return false;
-}
-
-static void fd_add_pollset(grpc_fd* fd, grpc_pollset* pollset) {
- const int epfd = pollset->active_pollable->epfd;
- grpc_core::MutexLockForGprMu lock(&fd->pollable_mu);
- fd->pollset_fds.push_back(epfd);
-}
-
-/*******************************************************************************
- * Pollable Definitions
- */
-
-static grpc_error_handle pollable_create(pollable_type type, pollable** p) {
- *p = nullptr;
-
- int epfd = epoll_create1(EPOLL_CLOEXEC);
- if (epfd == -1) {
- return GRPC_OS_ERROR(errno, "epoll_create1");
- }
- GRPC_FD_TRACE("Pollable_create: created epfd: %d (type: %d)", epfd, type);
- *p = static_cast<pollable*>(gpr_malloc(sizeof(**p)));
- grpc_error_handle err = grpc_wakeup_fd_init(&(*p)->wakeup);
- if (err != GRPC_ERROR_NONE) {
- GRPC_FD_TRACE(
- "Pollable_create: closed epfd: %d (type: %d). wakeupfd_init error",
- epfd, type);
- close(epfd);
- gpr_free(*p);
- *p = nullptr;
- return err;
- }
- struct epoll_event ev;
- ev.events = static_cast<uint32_t>(EPOLLIN | EPOLLET);
- ev.data.ptr =
- reinterpret_cast<void*>(1 | reinterpret_cast<intptr_t>(&(*p)->wakeup));
- if (epoll_ctl(epfd, EPOLL_CTL_ADD, (*p)->wakeup.read_fd, &ev) != 0) {
- err = GRPC_OS_ERROR(errno, "epoll_ctl");
- GRPC_FD_TRACE(
- "Pollable_create: closed epfd: %d (type: %d). epoll_ctl error", epfd,
- type);
- close(epfd);
- grpc_wakeup_fd_destroy(&(*p)->wakeup);
- gpr_free(*p);
- *p = nullptr;
- return err;
- }
-
- (*p)->type = type;
- new (&(*p)->refs) grpc_core::RefCount(
- 1, GRPC_TRACE_FLAG_ENABLED(grpc_trace_pollable_refcount)
- ? "pollable_refcount"
- : nullptr);
- gpr_mu_init(&(*p)->mu);
- (*p)->epfd = epfd;
- (*p)->owner_fd = nullptr;
- gpr_mu_init(&(*p)->owner_orphan_mu);
- (*p)->owner_orphaned = false;
- (*p)->pollset_set = nullptr;
- (*p)->next = (*p)->prev = *p;
- (*p)->root_worker = nullptr;
- (*p)->event_cursor = 0;
- (*p)->event_count = 0;
- return GRPC_ERROR_NONE;
-}
-
-static grpc_error_handle pollable_add_fd(pollable* p, grpc_fd* fd) {
- grpc_error_handle error = GRPC_ERROR_NONE;
- static const char* err_desc = "pollable_add_fd";
- const int epfd = p->epfd;
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "add fd %p (%d) to pollable %p", fd, fd->fd, p);
- }
-
- struct epoll_event ev_fd;
- ev_fd.events =
- static_cast<uint32_t>(EPOLLET | EPOLLIN | EPOLLOUT | EPOLLEXCLUSIVE);
- /* Use the second least significant bit of ev_fd.data.ptr to store track_err
- * to avoid synchronization issues when accessing it after receiving an event.
- * Accessing fd would be a data race there because the fd might have been
- * returned to the free list at that point. */
- ev_fd.data.ptr = reinterpret_cast<void*>(reinterpret_cast<intptr_t>(fd) |
- (fd->track_err ? 2 : 0));
- GRPC_STATS_INC_SYSCALL_EPOLL_CTL();
- if (epoll_ctl(epfd, EPOLL_CTL_ADD, fd->fd, &ev_fd) != 0) {
- switch (errno) {
- case EEXIST:
- break;
- default:
- append_error(&error, GRPC_OS_ERROR(errno, "epoll_ctl"), err_desc);
- }
- }
-
- return error;
-}
-
-/*******************************************************************************
- * Pollset Definitions
- */
-
-static GPR_THREAD_LOCAL(grpc_pollset*) g_current_thread_pollset;
-static GPR_THREAD_LOCAL(grpc_pollset_worker*) g_current_thread_worker;
-
-/* Global state management */
-static grpc_error_handle pollset_global_init(void) {
- return pollable_create(PO_EMPTY, &g_empty_pollable);
-}
-
-static void pollset_global_shutdown(void) {
- POLLABLE_UNREF(g_empty_pollable, "g_empty_pollable");
-}
-
-/* pollset->mu must be held while calling this function */
-static void pollset_maybe_finish_shutdown(grpc_pollset* pollset) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO,
- "PS:%p (pollable:%p) maybe_finish_shutdown sc=%p (target:!NULL) "
- "rw=%p (target:NULL) cpsc=%d (target:0)",
- pollset, pollset->active_pollable, pollset->shutdown_closure,
- pollset->root_worker, pollset->containing_pollset_set_count);
- }
- if (pollset->shutdown_closure != nullptr && pollset->root_worker == nullptr &&
- pollset->containing_pollset_set_count == 0) {
- GPR_TIMER_MARK("pollset_finish_shutdown", 0);
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, pollset->shutdown_closure,
- GRPC_ERROR_NONE);
- pollset->shutdown_closure = nullptr;
- pollset->already_shutdown = true;
- }
-}
-
-/* pollset->mu must be held before calling this function,
- * pollset->active_pollable->mu & specific_worker->pollable_obj->mu must not be
- * held */
-static grpc_error_handle kick_one_worker(grpc_pollset_worker* specific_worker) {
- GPR_TIMER_SCOPE("kick_one_worker", 0);
- pollable* p = specific_worker->pollable_obj;
- grpc_core::MutexLockForGprMu lock(&p->mu);
- GPR_ASSERT(specific_worker != nullptr);
- if (specific_worker->kicked) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PS:%p kicked_specific_but_already_kicked", p);
- }
- GRPC_STATS_INC_POLLSET_KICKED_AGAIN();
- return GRPC_ERROR_NONE;
- }
- if (g_current_thread_worker == specific_worker) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PS:%p kicked_specific_but_awake", p);
- }
- GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD();
- specific_worker->kicked = true;
- return GRPC_ERROR_NONE;
- }
- if (specific_worker == p->root_worker) {
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_FD();
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PS:%p kicked_specific_via_wakeup_fd", p);
- }
- specific_worker->kicked = true;
- grpc_error_handle error = grpc_wakeup_fd_wakeup(&p->wakeup);
- return error;
- }
- if (specific_worker->initialized_cv) {
- GRPC_STATS_INC_POLLSET_KICK_WAKEUP_CV();
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PS:%p kicked_specific_via_cv", p);
- }
- specific_worker->kicked = true;
- gpr_cv_signal(&specific_worker->cv);
- return GRPC_ERROR_NONE;
- }
- // we can get here during end_worker after removing specific_worker from the
- // pollable list but before removing it from the pollset list
- return GRPC_ERROR_NONE;
-}
-
-static grpc_error_handle pollset_kick(grpc_pollset* pollset,
- grpc_pollset_worker* specific_worker) {
- GPR_TIMER_SCOPE("pollset_kick", 0);
- GRPC_STATS_INC_POLLSET_KICK();
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO,
- "PS:%p kick %p tls_pollset=%p tls_worker=%p pollset.root_worker=%p",
- pollset, specific_worker,
- static_cast<void*>(g_current_thread_pollset),
- static_cast<void*>(g_current_thread_worker), pollset->root_worker);
- }
- if (specific_worker == nullptr) {
- if (g_current_thread_pollset != pollset) {
- if (pollset->root_worker == nullptr) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PS:%p kicked_any_without_poller", pollset);
- }
- GRPC_STATS_INC_POLLSET_KICKED_WITHOUT_POLLER();
- pollset->kicked_without_poller = true;
- return GRPC_ERROR_NONE;
- } else {
- // We've been asked to kick a poller, but we haven't been told which one
- // ... any will do
- // We look at the pollset worker list because:
- // 1. the pollable list may include workers from other pollers, so we'd
- // need to do an O(N) search
- // 2. we'd additionally need to take the pollable lock, which we've so
- // far avoided
- // Now, we would prefer to wake a poller in cv_wait, and not in
- // epoll_wait (since the latter would imply the need to do an additional
- // wakeup)
- // We know that if a worker is at the root of a pollable, it's (likely)
- // also the root of a pollset, and we know that if a worker is NOT at
- // the root of a pollset, it's (likely) not at the root of a pollable,
- // so we take our chances and choose the SECOND worker enqueued against
- // the pollset as a worker that's likely to be in cv_wait
- return kick_one_worker(
- pollset->root_worker->links[PWLINK_POLLSET].next);
- }
- } else {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PS:%p kicked_any_but_awake", pollset);
- }
- GRPC_STATS_INC_POLLSET_KICK_OWN_THREAD();
- return GRPC_ERROR_NONE;
- }
- } else {
- return kick_one_worker(specific_worker);
- }
-}
-
-static grpc_error_handle pollset_kick_all(grpc_pollset* pollset) {
- GPR_TIMER_SCOPE("pollset_kick_all", 0);
- grpc_error_handle error = GRPC_ERROR_NONE;
- const char* err_desc = "pollset_kick_all";
- grpc_pollset_worker* w = pollset->root_worker;
- if (w != nullptr) {
- do {
- GRPC_STATS_INC_POLLSET_KICK();
- append_error(&error, kick_one_worker(w), err_desc);
- w = w->links[PWLINK_POLLSET].next;
- } while (w != pollset->root_worker);
- }
- return error;
-}
-
-static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) {
- gpr_mu_init(&pollset->mu);
- gpr_atm_no_barrier_store(&pollset->worker_count, 0);
- gpr_atm_no_barrier_store(&pollset->active_pollable_type, PO_EMPTY);
- pollset->active_pollable = POLLABLE_REF(g_empty_pollable, "pollset");
- pollset->kicked_without_poller = false;
- pollset->shutdown_closure = nullptr;
- pollset->already_shutdown = false;
- pollset->root_worker = nullptr;
- pollset->containing_pollset_set_count = 0;
- *mu = &pollset->mu;
-}
-
-static int poll_deadline_to_millis_timeout(grpc_core::Timestamp millis) {
- if (millis == grpc_core::Timestamp::InfFuture()) return -1;
- int64_t delta = (millis - grpc_core::ExecCtx::Get()->Now()).millis();
- if (delta > INT_MAX) {
- return INT_MAX;
- } else if (delta < 0) {
- return 0;
- } else {
- return static_cast<int>(delta);
- }
-}
-
-static void fd_become_readable(grpc_fd* fd) { fd->read_closure.SetReady(); }
-
-static void fd_become_writable(grpc_fd* fd) { fd->write_closure.SetReady(); }
-
-static void fd_has_errors(grpc_fd* fd) { fd->error_closure.SetReady(); }
-
-/* Get the pollable_obj attached to this fd. If none is attached, create a new
- * pollable object (of type PO_FD), attach it to the fd and return it
- *
- * Note that if a pollable object is already attached to the fd, it may be of
- * either PO_FD or PO_MULTI type */
-static grpc_error_handle get_fd_pollable(grpc_fd* fd, pollable** p) {
- gpr_mu_lock(&fd->pollable_mu);
- grpc_error_handle error = GRPC_ERROR_NONE;
- static const char* err_desc = "get_fd_pollable";
- if (fd->pollable_obj == nullptr) {
- if (append_error(&error, pollable_create(PO_FD, &fd->pollable_obj),
- err_desc)) {
- fd->pollable_obj->owner_fd = fd;
- if (!append_error(&error, pollable_add_fd(fd->pollable_obj, fd),
- err_desc)) {
- POLLABLE_UNREF(fd->pollable_obj, "fd_pollable");
- fd->pollable_obj = nullptr;
- }
- }
- }
- if (error == GRPC_ERROR_NONE) {
- GPR_ASSERT(fd->pollable_obj != nullptr);
- *p = POLLABLE_REF(fd->pollable_obj, "pollset");
- } else {
- GPR_ASSERT(fd->pollable_obj == nullptr);
- *p = nullptr;
- }
- gpr_mu_unlock(&fd->pollable_mu);
- return error;
-}
-
-/* pollset->po.mu lock must be held by the caller before calling this */
-static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
- GPR_TIMER_SCOPE("pollset_shutdown", 0);
- GPR_ASSERT(pollset->shutdown_closure == nullptr);
- pollset->shutdown_closure = closure;
- GRPC_LOG_IF_ERROR("pollset_shutdown", pollset_kick_all(pollset));
- pollset_maybe_finish_shutdown(pollset);
-}
-
-static grpc_error_handle pollable_process_events(grpc_pollset* pollset,
- pollable* pollable_obj,
- bool drain) {
- GPR_TIMER_SCOPE("pollable_process_events", 0);
- static const char* err_desc = "pollset_process_events";
- // Use a simple heuristic to determine how many fd events to process
- // per loop iteration. (events/workers)
- int handle_count = 1;
- int worker_count = gpr_atm_no_barrier_load(&pollset->worker_count);
- GPR_ASSERT(worker_count > 0);
- handle_count =
- (pollable_obj->event_count - pollable_obj->event_cursor) / worker_count;
- if (handle_count == 0) {
- handle_count = 1;
- }
- grpc_error_handle error = GRPC_ERROR_NONE;
- for (int i = 0; (drain || i < handle_count) &&
- pollable_obj->event_cursor != pollable_obj->event_count;
- i++) {
- int n = pollable_obj->event_cursor++;
- struct epoll_event* ev = &pollable_obj->events[n];
- void* data_ptr = ev->data.ptr;
- if (1 & reinterpret_cast<intptr_t>(data_ptr)) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PS:%p got pollset_wakeup %p", pollset, data_ptr);
- }
- append_error(
- &error,
- grpc_wakeup_fd_consume_wakeup(reinterpret_cast<grpc_wakeup_fd*>(
- ~static_cast<intptr_t>(1) &
- reinterpret_cast<intptr_t>(data_ptr))),
- err_desc);
- } else {
- grpc_fd* fd =
- reinterpret_cast<grpc_fd*>(reinterpret_cast<intptr_t>(data_ptr) & ~2);
- bool track_err = reinterpret_cast<intptr_t>(data_ptr) & 2;
- bool cancel = (ev->events & EPOLLHUP) != 0;
- bool error = (ev->events & EPOLLERR) != 0;
- bool read_ev = (ev->events & (EPOLLIN | EPOLLPRI)) != 0;
- bool write_ev = (ev->events & EPOLLOUT) != 0;
- bool err_fallback = error && !track_err;
-
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO,
- "PS:%p got fd %p: cancel=%d read=%d "
- "write=%d",
- pollset, fd, cancel, read_ev, write_ev);
- }
- if (error && !err_fallback) {
- fd_has_errors(fd);
- }
- if (read_ev || cancel || err_fallback) {
- fd_become_readable(fd);
- }
- if (write_ev || cancel || err_fallback) {
- fd_become_writable(fd);
- }
- }
- }
-
- return error;
-}
-
-/* pollset_shutdown is guaranteed to be called before pollset_destroy. */
-static void pollset_destroy(grpc_pollset* pollset) {
- POLLABLE_UNREF(pollset->active_pollable, "pollset");
- pollset->active_pollable = nullptr;
- gpr_mu_destroy(&pollset->mu);
-}
-
-static grpc_error_handle pollable_epoll(pollable* p,
- grpc_core::Timestamp deadline) {
- GPR_TIMER_SCOPE("pollable_epoll", 0);
- int timeout = poll_deadline_to_millis_timeout(deadline);
-
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "POLLABLE:%p[%s] poll for %dms", p,
- pollable_desc(p).c_str(), timeout);
- }
-
- if (timeout != 0) {
- GRPC_SCHEDULING_START_BLOCKING_REGION;
- }
- int r;
- do {
- GRPC_STATS_INC_SYSCALL_POLL();
- r = epoll_wait(p->epfd, p->events, MAX_EPOLL_EVENTS, timeout);
- } while (r < 0 && errno == EINTR);
- if (timeout != 0) {
- GRPC_SCHEDULING_END_BLOCKING_REGION;
- }
-
- if (r < 0) return GRPC_OS_ERROR(errno, "epoll_wait");
-
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "POLLABLE:%p got %d events", p, r);
- }
-
- p->event_cursor = 0;
- p->event_count = r;
-
- return GRPC_ERROR_NONE;
-}
-
-/* Return true if first in list */
-static bool worker_insert(grpc_pollset_worker** root_worker,
- grpc_pollset_worker* worker, pwlinks link) {
- if (*root_worker == nullptr) {
- *root_worker = worker;
- worker->links[link].next = worker->links[link].prev = worker;
- return true;
- } else {
- worker->links[link].next = *root_worker;
- worker->links[link].prev = worker->links[link].next->links[link].prev;
- worker->links[link].next->links[link].prev = worker;
- worker->links[link].prev->links[link].next = worker;
- return false;
- }
-}
-
-/* returns the new root IFF the root changed */
-typedef enum { WRR_NEW_ROOT, WRR_EMPTIED, WRR_REMOVED } worker_remove_result;
-
-static worker_remove_result worker_remove(grpc_pollset_worker** root_worker,
- grpc_pollset_worker* worker,
- pwlinks link) {
- if (worker == *root_worker) {
- if (worker == worker->links[link].next) {
- *root_worker = nullptr;
- return WRR_EMPTIED;
- } else {
- *root_worker = worker->links[link].next;
- worker->links[link].prev->links[link].next = worker->links[link].next;
- worker->links[link].next->links[link].prev = worker->links[link].prev;
- return WRR_NEW_ROOT;
- }
- } else {
- worker->links[link].prev->links[link].next = worker->links[link].next;
- worker->links[link].next->links[link].prev = worker->links[link].prev;
- return WRR_REMOVED;
- }
-}
-
-/* Return true if this thread should poll */
-static bool begin_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
- grpc_pollset_worker** worker_hdl,
- grpc_core::Timestamp deadline) {
- GPR_TIMER_SCOPE("begin_worker", 0);
- bool do_poll =
- (pollset->shutdown_closure == nullptr && !pollset->already_shutdown);
- gpr_atm_no_barrier_fetch_add(&pollset->worker_count, 1);
- if (worker_hdl != nullptr) *worker_hdl = worker;
- worker->initialized_cv = false;
- worker->kicked = false;
- worker->pollset = pollset;
- worker->pollable_obj =
- POLLABLE_REF(pollset->active_pollable, "pollset_worker");
- worker_insert(&pollset->root_worker, worker, PWLINK_POLLSET);
- gpr_mu_lock(&worker->pollable_obj->mu);
- if (!worker_insert(&worker->pollable_obj->root_worker, worker,
- PWLINK_POLLABLE)) {
- worker->initialized_cv = true;
- gpr_cv_init(&worker->cv);
- gpr_mu_unlock(&pollset->mu);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace) &&
- worker->pollable_obj->root_worker != worker) {
- gpr_log(GPR_INFO, "PS:%p wait %p w=%p for %dms", pollset,
- worker->pollable_obj, worker,
- poll_deadline_to_millis_timeout(deadline));
- }
- while (do_poll && worker->pollable_obj->root_worker != worker) {
- if (gpr_cv_wait(&worker->cv, &worker->pollable_obj->mu,
- deadline.as_timespec(GPR_CLOCK_REALTIME))) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PS:%p timeout_wait %p w=%p", pollset,
- worker->pollable_obj, worker);
- }
- do_poll = false;
- } else if (worker->kicked) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PS:%p wakeup %p w=%p", pollset,
- worker->pollable_obj, worker);
- }
- do_poll = false;
- } else if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace) &&
- worker->pollable_obj->root_worker != worker) {
- gpr_log(GPR_INFO, "PS:%p spurious_wakeup %p w=%p", pollset,
- worker->pollable_obj, worker);
- }
- }
- grpc_core::ExecCtx::Get()->InvalidateNow();
- } else {
- gpr_mu_unlock(&pollset->mu);
- }
- gpr_mu_unlock(&worker->pollable_obj->mu);
-
- return do_poll;
-}
-
-static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
- grpc_pollset_worker** /*worker_hdl*/) {
- GPR_TIMER_SCOPE("end_worker", 0);
- gpr_mu_lock(&pollset->mu);
- gpr_mu_lock(&worker->pollable_obj->mu);
- switch (worker_remove(&worker->pollable_obj->root_worker, worker,
- PWLINK_POLLABLE)) {
- case WRR_NEW_ROOT: {
- // wakeup new poller
- grpc_pollset_worker* new_root = worker->pollable_obj->root_worker;
- GPR_ASSERT(new_root->initialized_cv);
- gpr_cv_signal(&new_root->cv);
- break;
- }
- case WRR_EMPTIED:
- if (pollset->active_pollable != worker->pollable_obj) {
- // pollable no longer being polled: flush events
- (void)pollable_process_events(pollset, worker->pollable_obj, true);
- }
- break;
- case WRR_REMOVED:
- break;
- }
- gpr_mu_unlock(&worker->pollable_obj->mu);
- POLLABLE_UNREF(worker->pollable_obj, "pollset_worker");
- if (worker_remove(&pollset->root_worker, worker, PWLINK_POLLSET) ==
- WRR_EMPTIED) {
- pollset_maybe_finish_shutdown(pollset);
- }
- if (worker->initialized_cv) {
- gpr_cv_destroy(&worker->cv);
- }
- gpr_atm_no_barrier_fetch_add(&pollset->worker_count, -1);
-}
-
-#ifndef NDEBUG
-static long sys_gettid(void) { return syscall(__NR_gettid); }
-#endif
-
-/* pollset->mu lock must be held by the caller before calling this.
- The function pollset_work() may temporarily release the lock (pollset->po.mu)
- during the course of its execution but it will always re-acquire the lock and
- ensure that it is held by the time the function returns */
-static grpc_error_handle pollset_work(grpc_pollset* pollset,
- grpc_pollset_worker** worker_hdl,
- grpc_core::Timestamp deadline) {
- GPR_TIMER_SCOPE("pollset_work", 0);
-#ifdef GRPC_EPOLLEX_CREATE_WORKERS_ON_HEAP
- grpc_pollset_worker* worker =
- (grpc_pollset_worker*)gpr_malloc(sizeof(*worker));
-#define WORKER_PTR (worker)
-#else
- grpc_pollset_worker worker;
-#define WORKER_PTR (&worker)
-#endif
-#ifndef NDEBUG
- WORKER_PTR->originator = sys_gettid();
-#endif
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO,
- "PS:%p work hdl=%p worker=%p now=%" PRId64 " deadline=%" PRId64
- " kwp=%d pollable=%p",
- pollset, worker_hdl, WORKER_PTR,
- grpc_core::ExecCtx::Get()->Now().milliseconds_after_process_epoch(),
- deadline.milliseconds_after_process_epoch(),
- pollset->kicked_without_poller, pollset->active_pollable);
- }
- static const char* err_desc = "pollset_work";
- grpc_error_handle error = GRPC_ERROR_NONE;
- if (pollset->kicked_without_poller) {
- pollset->kicked_without_poller = false;
- } else {
- if (begin_worker(pollset, WORKER_PTR, worker_hdl, deadline)) {
- g_current_thread_pollset = pollset;
- g_current_thread_worker = WORKER_PTR;
- if (WORKER_PTR->pollable_obj->event_cursor ==
- WORKER_PTR->pollable_obj->event_count) {
- append_error(&error, pollable_epoll(WORKER_PTR->pollable_obj, deadline),
- err_desc);
- }
- append_error(
- &error,
- pollable_process_events(pollset, WORKER_PTR->pollable_obj, false),
- err_desc);
- grpc_core::ExecCtx::Get()->Flush();
- g_current_thread_pollset = nullptr;
- g_current_thread_worker = nullptr;
- }
- end_worker(pollset, WORKER_PTR, worker_hdl);
- }
-#ifdef GRPC_EPOLLEX_CREATE_WORKERS_ON_HEAP
- gpr_free(worker);
-#endif
-#undef WORKER_PTR
- return error;
-}
-
-static grpc_error_handle pollset_transition_pollable_from_empty_to_fd_locked(
- grpc_pollset* pollset, grpc_fd* fd) {
- static const char* err_desc = "pollset_transition_pollable_from_empty_to_fd";
- grpc_error_handle error = GRPC_ERROR_NONE;
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO,
- "PS:%p add fd %p (%d); transition pollable from empty to fd",
- pollset, fd, fd->fd);
- }
- append_error(&error, pollset_kick_all(pollset), err_desc);
- POLLABLE_UNREF(pollset->active_pollable, "pollset");
- append_error(&error, get_fd_pollable(fd, &pollset->active_pollable),
- err_desc);
- return error;
-}
-
-static grpc_error_handle pollset_transition_pollable_from_fd_to_multi_locked(
- grpc_pollset* pollset, grpc_fd* and_add_fd) {
- static const char* err_desc = "pollset_transition_pollable_from_fd_to_multi";
- grpc_error_handle error = GRPC_ERROR_NONE;
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(
- GPR_INFO,
- "PS:%p add fd %p (%d); transition pollable from fd %p to multipoller",
- pollset, and_add_fd, and_add_fd ? and_add_fd->fd : -1,
- pollset->active_pollable->owner_fd);
- }
- append_error(&error, pollset_kick_all(pollset), err_desc);
- grpc_fd* initial_fd = pollset->active_pollable->owner_fd;
- POLLABLE_UNREF(pollset->active_pollable, "pollset");
- pollset->active_pollable = nullptr;
- if (append_error(&error, pollable_create(PO_MULTI, &pollset->active_pollable),
- err_desc)) {
- append_error(&error, pollable_add_fd(pollset->active_pollable, initial_fd),
- err_desc);
- if (and_add_fd != nullptr) {
- append_error(&error,
- pollable_add_fd(pollset->active_pollable, and_add_fd),
- err_desc);
- }
- }
- return error;
-}
-
-/* expects pollsets locked, flag whether fd is locked or not */
-static grpc_error_handle pollset_add_fd_locked(grpc_pollset* pollset,
- grpc_fd* fd) {
- grpc_error_handle error = GRPC_ERROR_NONE;
- pollable* po_at_start =
- POLLABLE_REF(pollset->active_pollable, "pollset_add_fd");
- switch (pollset->active_pollable->type) {
- case PO_EMPTY:
- /* empty pollable --> single fd pollable */
- error = pollset_transition_pollable_from_empty_to_fd_locked(pollset, fd);
- break;
- case PO_FD:
- gpr_mu_lock(&po_at_start->owner_orphan_mu);
- if (po_at_start->owner_orphaned) {
- error =
- pollset_transition_pollable_from_empty_to_fd_locked(pollset, fd);
- } else {
- /* fd --> multipoller */
- error =
- pollset_transition_pollable_from_fd_to_multi_locked(pollset, fd);
- }
- gpr_mu_unlock(&po_at_start->owner_orphan_mu);
- break;
- case PO_MULTI:
- error = pollable_add_fd(pollset->active_pollable, fd);
- break;
- }
- if (error != GRPC_ERROR_NONE) {
- POLLABLE_UNREF(pollset->active_pollable, "pollset");
- pollset->active_pollable = po_at_start;
- } else {
- gpr_atm_rel_store(&pollset->active_pollable_type,
- pollset->active_pollable->type);
- POLLABLE_UNREF(po_at_start, "pollset_add_fd");
- }
- return error;
-}
-
-static grpc_error_handle pollset_as_multipollable_locked(
- grpc_pollset* pollset, pollable** pollable_obj) {
- grpc_error_handle error = GRPC_ERROR_NONE;
- pollable* po_at_start =
- POLLABLE_REF(pollset->active_pollable, "pollset_as_multipollable");
- switch (pollset->active_pollable->type) {
- case PO_EMPTY:
- POLLABLE_UNREF(pollset->active_pollable, "pollset");
- error = pollable_create(PO_MULTI, &pollset->active_pollable);
- /* Any workers currently polling on this pollset must now be woked up so
- * that they can pick up the new active_pollable */
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO,
- "PS:%p active pollable transition from empty to multi",
- pollset);
- }
- static const char* err_desc =
- "pollset_as_multipollable_locked: empty -> multi";
- append_error(&error, pollset_kick_all(pollset), err_desc);
- break;
- case PO_FD:
- gpr_mu_lock(&po_at_start->owner_orphan_mu);
- if (po_at_start->owner_orphaned) {
- // Unlock before Unref'ing the pollable
- gpr_mu_unlock(&po_at_start->owner_orphan_mu);
- POLLABLE_UNREF(pollset->active_pollable, "pollset");
- error = pollable_create(PO_MULTI, &pollset->active_pollable);
- } else {
- error = pollset_transition_pollable_from_fd_to_multi_locked(pollset,
- nullptr);
- gpr_mu_unlock(&po_at_start->owner_orphan_mu);
- }
- break;
- case PO_MULTI:
- break;
- }
- if (error != GRPC_ERROR_NONE) {
- POLLABLE_UNREF(pollset->active_pollable, "pollset");
- pollset->active_pollable = po_at_start;
- *pollable_obj = nullptr;
- } else {
- gpr_atm_rel_store(&pollset->active_pollable_type,
- pollset->active_pollable->type);
- *pollable_obj = POLLABLE_REF(pollset->active_pollable, "pollset_set");
- POLLABLE_UNREF(po_at_start, "pollset_as_multipollable");
- }
- return error;
-}
-
-static void pollset_add_fd(grpc_pollset* pollset, grpc_fd* fd) {
- GPR_TIMER_SCOPE("pollset_add_fd", 0);
-
- // We never transition from PO_MULTI to other modes (i.e., PO_FD or PO_EMPTY)
- // and, thus, it is safe to simply store and check whether the FD has already
- // been added to the active pollable previously.
- if (gpr_atm_acq_load(&pollset->active_pollable_type) == PO_MULTI &&
- fd_has_pollset(fd, pollset)) {
- return;
- }
-
- grpc_core::MutexLockForGprMu lock(&pollset->mu);
- grpc_error_handle error = pollset_add_fd_locked(pollset, fd);
-
- // If we are in PO_MULTI mode, we should update the pollsets of the FD.
- if (gpr_atm_no_barrier_load(&pollset->active_pollable_type) == PO_MULTI) {
- fd_add_pollset(fd, pollset);
- }
-
- GRPC_LOG_IF_ERROR("pollset_add_fd", error);
-}
-
-/*******************************************************************************
- * Pollset-set Definitions
- */
-
-static grpc_pollset_set* pss_lock_adam(grpc_pollset_set* pss) {
- gpr_mu_lock(&pss->mu);
- while (pss->parent != nullptr) {
- gpr_mu_unlock(&pss->mu);
- pss = pss->parent;
- gpr_mu_lock(&pss->mu);
- }
- return pss;
-}
-
-static grpc_pollset_set* pollset_set_create(void) {
- grpc_pollset_set* pss =
- static_cast<grpc_pollset_set*>(gpr_zalloc(sizeof(*pss)));
- gpr_mu_init(&pss->mu);
- new (&pss->refs) grpc_core::RefCount();
- return pss;
-}
-
-static void pollset_set_unref(grpc_pollset_set* pss) {
- if (pss == nullptr) return;
- if (GPR_LIKELY(!pss->refs.Unref())) return;
- pollset_set_unref(pss->parent);
- gpr_mu_destroy(&pss->mu);
- for (size_t i = 0; i < pss->pollset_count; i++) {
- gpr_mu_lock(&pss->pollsets[i]->mu);
- if (0 == --pss->pollsets[i]->containing_pollset_set_count) {
- pollset_maybe_finish_shutdown(pss->pollsets[i]);
- }
- gpr_mu_unlock(&pss->pollsets[i]->mu);
- }
- for (size_t i = 0; i < pss->fd_count; i++) {
- UNREF_BY(pss->fds[i], 2, "pollset_set");
- }
- gpr_free(pss->pollsets);
- gpr_free(pss->fds);
- gpr_free(pss);
-}
-
-static void pollset_set_add_fd(grpc_pollset_set* pss, grpc_fd* fd) {
- GPR_TIMER_SCOPE("pollset_set_add_fd", 0);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PSS:%p: add fd %p (%d)", pss, fd, fd->fd);
- }
- grpc_error_handle error = GRPC_ERROR_NONE;
- static const char* err_desc = "pollset_set_add_fd";
- pss = pss_lock_adam(pss);
- for (size_t i = 0; i < pss->pollset_count; i++) {
- append_error(&error, pollable_add_fd(pss->pollsets[i]->active_pollable, fd),
- err_desc);
- }
- if (pss->fd_count == pss->fd_capacity) {
- pss->fd_capacity = std::max(pss->fd_capacity * 2, size_t(8));
- pss->fds = static_cast<grpc_fd**>(
- gpr_realloc(pss->fds, pss->fd_capacity * sizeof(*pss->fds)));
- }
- REF_BY(fd, 2, "pollset_set");
- pss->fds[pss->fd_count++] = fd;
- gpr_mu_unlock(&pss->mu);
-
- GRPC_LOG_IF_ERROR(err_desc, error);
-}
-
-static void pollset_set_del_fd(grpc_pollset_set* pss, grpc_fd* fd) {
- GPR_TIMER_SCOPE("pollset_set_del_fd", 0);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PSS:%p: del fd %p", pss, fd);
- }
- pss = pss_lock_adam(pss);
- size_t i;
- for (i = 0; i < pss->fd_count; i++) {
- if (pss->fds[i] == fd) {
- UNREF_BY(fd, 2, "pollset_set");
- break;
- }
- }
- GPR_ASSERT(i != pss->fd_count);
- for (; i < pss->fd_count - 1; i++) {
- pss->fds[i] = pss->fds[i + 1];
- }
- pss->fd_count--;
- gpr_mu_unlock(&pss->mu);
-}
-
-static void pollset_set_del_pollset(grpc_pollset_set* pss, grpc_pollset* ps) {
- GPR_TIMER_SCOPE("pollset_set_del_pollset", 0);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PSS:%p: del pollset %p", pss, ps);
- }
- pss = pss_lock_adam(pss);
- size_t i;
- for (i = 0; i < pss->pollset_count; i++) {
- if (pss->pollsets[i] == ps) {
- break;
- }
- }
- GPR_ASSERT(i != pss->pollset_count);
- for (; i < pss->pollset_count - 1; i++) {
- pss->pollsets[i] = pss->pollsets[i + 1];
- }
- pss->pollset_count--;
- gpr_mu_unlock(&pss->mu);
- gpr_mu_lock(&ps->mu);
- if (0 == --ps->containing_pollset_set_count) {
- pollset_maybe_finish_shutdown(ps);
- }
- gpr_mu_unlock(&ps->mu);
-}
-
-// add all fds to pollables, and output a new array of unorphaned out_fds
-// assumes pollsets are multipollable
-static grpc_error_handle add_fds_to_pollsets(grpc_fd** fds, size_t fd_count,
- grpc_pollset** pollsets,
- size_t pollset_count,
- const char* err_desc,
- grpc_fd** out_fds,
- size_t* out_fd_count) {
- GPR_TIMER_SCOPE("add_fds_to_pollsets", 0);
- grpc_error_handle error = GRPC_ERROR_NONE;
- for (size_t i = 0; i < fd_count; i++) {
- gpr_mu_lock(&fds[i]->orphan_mu);
- if ((gpr_atm_no_barrier_load(&fds[i]->refst) & 1) == 0) {
- gpr_mu_unlock(&fds[i]->orphan_mu);
- UNREF_BY(fds[i], 2, "pollset_set");
- } else {
- for (size_t j = 0; j < pollset_count; j++) {
- append_error(&error,
- pollable_add_fd(pollsets[j]->active_pollable, fds[i]),
- err_desc);
- }
- gpr_mu_unlock(&fds[i]->orphan_mu);
- out_fds[(*out_fd_count)++] = fds[i];
- }
- }
- return error;
-}
-
-static void pollset_set_add_pollset(grpc_pollset_set* pss, grpc_pollset* ps) {
- GPR_TIMER_SCOPE("pollset_set_add_pollset", 0);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PSS:%p: add pollset %p", pss, ps);
- }
- grpc_error_handle error = GRPC_ERROR_NONE;
- static const char* err_desc = "pollset_set_add_pollset";
- pollable* pollable_obj = nullptr;
- gpr_mu_lock(&ps->mu);
- if (!GRPC_LOG_IF_ERROR(err_desc,
- pollset_as_multipollable_locked(ps, &pollable_obj))) {
- GPR_ASSERT(pollable_obj == nullptr);
- gpr_mu_unlock(&ps->mu);
- return;
- }
- ps->containing_pollset_set_count++;
- gpr_mu_unlock(&ps->mu);
- pss = pss_lock_adam(pss);
- size_t initial_fd_count = pss->fd_count;
- pss->fd_count = 0;
- append_error(&error,
- add_fds_to_pollsets(pss->fds, initial_fd_count, &ps, 1, err_desc,
- pss->fds, &pss->fd_count),
- err_desc);
- if (pss->pollset_count == pss->pollset_capacity) {
- pss->pollset_capacity = std::max(pss->pollset_capacity * 2, size_t(8));
- pss->pollsets = static_cast<grpc_pollset**>(gpr_realloc(
- pss->pollsets, pss->pollset_capacity * sizeof(*pss->pollsets)));
- }
- pss->pollsets[pss->pollset_count++] = ps;
- gpr_mu_unlock(&pss->mu);
- POLLABLE_UNREF(pollable_obj, "pollset_set");
-
- GRPC_LOG_IF_ERROR(err_desc, error);
-}
-
-static void pollset_set_add_pollset_set(grpc_pollset_set* a,
- grpc_pollset_set* b) {
- GPR_TIMER_SCOPE("pollset_set_add_pollset_set", 0);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PSS: merge (%p, %p)", a, b);
- }
- grpc_error_handle error = GRPC_ERROR_NONE;
- static const char* err_desc = "pollset_set_add_fd";
- for (;;) {
- if (a == b) {
- // pollset ancestors are the same: nothing to do
- return;
- }
- if (a > b) {
- std::swap(a, b);
- }
- gpr_mu* a_mu = &a->mu;
- gpr_mu* b_mu = &b->mu;
- gpr_mu_lock(a_mu);
- gpr_mu_lock(b_mu);
- if (a->parent != nullptr) {
- a = a->parent;
- } else if (b->parent != nullptr) {
- b = b->parent;
- } else {
- break; // exit loop, both pollsets locked
- }
- gpr_mu_unlock(a_mu);
- gpr_mu_unlock(b_mu);
- }
- // try to do the least copying possible
- // TODO(sreek): there's probably a better heuristic here
- const size_t a_size = a->fd_count + a->pollset_count;
- const size_t b_size = b->fd_count + b->pollset_count;
- if (b_size > a_size) {
- std::swap(a, b);
- }
- if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
- gpr_log(GPR_INFO, "PSS: parent %p to %p", b, a);
- }
- a->refs.Ref();
- b->parent = a;
- if (a->fd_capacity < a->fd_count + b->fd_count) {
- a->fd_capacity = std::max(2 * a->fd_capacity, a->fd_count + b->fd_count);
- a->fds = static_cast<grpc_fd**>(
- gpr_realloc(a->fds, a->fd_capacity * sizeof(*a->fds)));
- }
- size_t initial_a_fd_count = a->fd_count;
- a->fd_count = 0;
- append_error(
- &error,
- add_fds_to_pollsets(a->fds, initial_a_fd_count, b->pollsets,
- b->pollset_count, "merge_a2b", a->fds, &a->fd_count),
- err_desc);
- append_error(
- &error,
- add_fds_to_pollsets(b->fds, b->fd_count, a->pollsets, a->pollset_count,
- "merge_b2a", a->fds, &a->fd_count),
- err_desc);
- if (a->pollset_capacity < a->pollset_count + b->pollset_count) {
- a->pollset_capacity =
- std::max(2 * a->pollset_capacity, a->pollset_count + b->pollset_count);
- a->pollsets = static_cast<grpc_pollset**>(
- gpr_realloc(a->pollsets, a->pollset_capacity * sizeof(*a->pollsets)));
- }
- if (b->pollset_count > 0) {
- memcpy(a->pollsets + a->pollset_count, b->pollsets,
- b->pollset_count * sizeof(*b->pollsets));
- }
- a->pollset_count += b->pollset_count;
- gpr_free(b->fds);
- gpr_free(b->pollsets);
- b->fds = nullptr;
- b->pollsets = nullptr;
- b->fd_count = b->fd_capacity = b->pollset_count = b->pollset_capacity = 0;
- gpr_mu_unlock(&a->mu);
- gpr_mu_unlock(&b->mu);
-}
-
-static void pollset_set_del_pollset_set(grpc_pollset_set* /*bag*/,
- grpc_pollset_set* /*item*/) {}
-
-/*******************************************************************************
- * Event engine binding
- */
-
-static bool is_any_background_poller_thread(void) { return false; }
-
-static void shutdown_background_closure(void) {}
-
-static bool add_closure_to_background_poller(grpc_closure* /*closure*/,
- grpc_error_handle /*error*/) {
- return false;
-}
-
-static void shutdown_engine(void) {
- fd_global_shutdown();
- pollset_global_shutdown();
-}
-
-static const grpc_event_engine_vtable vtable = {
- sizeof(grpc_pollset),
- true,
- false,
-
- fd_create,
- fd_wrapped_fd,
- fd_orphan,
- fd_shutdown,
- fd_notify_on_read,
- fd_notify_on_write,
- fd_notify_on_error,
- fd_become_readable,
- fd_become_writable,
- fd_has_errors,
- fd_is_shutdown,
-
- pollset_init,
- pollset_shutdown,
- pollset_destroy,
- pollset_work,
- pollset_kick,
- pollset_add_fd,
-
- pollset_set_create,
- pollset_set_unref, // destroy ==> unref 1 public ref
- pollset_set_add_pollset,
- pollset_set_del_pollset,
- pollset_set_add_pollset_set,
- pollset_set_del_pollset_set,
- pollset_set_add_fd,
- pollset_set_del_fd,
-
- is_any_background_poller_thread,
- shutdown_background_closure,
- shutdown_engine,
- add_closure_to_background_poller,
-};
-
-const grpc_event_engine_vtable* grpc_init_epollex_linux(
- bool /*explicitly_requested*/) {
- if (!grpc_has_wakeup_fd()) {
- gpr_log(GPR_ERROR, "Skipping epollex because of no wakeup fd.");
- return nullptr;
- }
-
- if (!grpc_is_epollexclusive_available()) {
- gpr_log(GPR_INFO, "Skipping epollex because it is not supported.");
- return nullptr;
- }
-
- fd_global_init();
-
- if (!GRPC_LOG_IF_ERROR("pollset_global_init", pollset_global_init())) {
- pollset_global_shutdown();
- fd_global_shutdown();
- return nullptr;
- }
-
- return &vtable;
-}
-
-#else /* defined(GRPC_LINUX_EPOLL_CREATE1) */
-#if defined(GRPC_POSIX_SOCKET_EV_EPOLLEX)
-#include "src/core/lib/iomgr/ev_epollex_linux.h"
-/* If GRPC_LINUX_EPOLL_CREATE1 is not defined, it means
- epoll_create1 is not available. Return NULL */
-const grpc_event_engine_vtable* grpc_init_epollex_linux(
- bool /*explicitly_requested*/) {
- return nullptr;
-}
-#endif /* defined(GRPC_POSIX_SOCKET_EV_EPOLLEX) */
-
-#endif /* !defined(GRPC_LINUX_EPOLL_CREATE1) */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/ev_poll_posix.cc b/contrib/libs/grpc/src/core/lib/iomgr/ev_poll_posix.cc
index 2f7fd94e33..0583f14e8b 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/ev_poll_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/ev_poll_posix.cc
@@ -18,6 +18,8 @@
#include <grpc/support/port_platform.h>
+#include <grpc/support/sync.h>
+
#include "src/core/lib/iomgr/port.h"
#ifdef GRPC_POSIX_SOCKET_EV_POLL
@@ -47,7 +49,6 @@
#include "src/core/lib/iomgr/ev_poll_posix.h"
#include "src/core/lib/iomgr/iomgr_internal.h"
#include "src/core/lib/iomgr/wakeup_fd_posix.h"
-#include "src/core/lib/profiling/timers.h"
#define GRPC_POLLSET_KICK_BROADCAST ((grpc_pollset_worker*)1)
@@ -361,9 +362,7 @@ static void unref_by(grpc_fd* fd, int n) {
if (fd->shutdown) {
GRPC_ERROR_UNREF(fd->shutdown_error);
}
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
fd->shutdown_error.~Status();
-#endif
gpr_free(fd);
} else {
GPR_ASSERT(old > n);
@@ -378,9 +377,7 @@ static grpc_fd* fd_create(int fd, const char* name, bool track_err) {
gpr_mu_init(&r->mu);
gpr_atm_rel_store(&r->refst, 1);
r->shutdown = 0;
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
new (&r->shutdown_error) y_absl::Status();
-#endif
r->read_closure = CLOSURE_NOT_READY;
r->write_closure = CLOSURE_NOT_READY;
r->fd = fd;
@@ -620,7 +617,6 @@ static uint32_t fd_begin_poll(grpc_fd* fd, grpc_pollset* pollset,
/* if we are shutdown, then don't add to the watcher set */
if (fd->shutdown) {
- watcher->fd = nullptr;
watcher->pollset = nullptr;
watcher->worker = nullptr;
gpr_mu_unlock(&fd->mu);
@@ -661,12 +657,17 @@ static void fd_end_poll(grpc_fd_watcher* watcher, int got_read, int got_write) {
int was_polling = 0;
int kick = 0;
grpc_fd* fd = watcher->fd;
-
if (fd == nullptr) {
return;
}
gpr_mu_lock(&fd->mu);
+ if (watcher->pollset == nullptr) {
+ watcher->fd = nullptr;
+ gpr_mu_unlock(&fd->mu);
+ GRPC_FD_UNREF(fd, "multipoller_start");
+ return;
+ }
if (watcher == fd->read_watcher) {
/* remove read watcher, kick if we still need a read */
@@ -758,8 +759,8 @@ static void push_front_worker(grpc_pollset* p, grpc_pollset_worker* worker) {
static void kick_append_error(grpc_error_handle* composite,
grpc_error_handle error) {
- if (error == GRPC_ERROR_NONE) return;
- if (*composite == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) return;
+ if (GRPC_ERROR_IS_NONE(*composite)) {
*composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Kick Failure");
}
*composite = grpc_error_add_child(*composite, error);
@@ -768,14 +769,11 @@ static void kick_append_error(grpc_error_handle* composite,
static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
grpc_pollset_worker* specific_worker,
uint32_t flags) {
- GPR_TIMER_SCOPE("pollset_kick_ext", 0);
grpc_error_handle error = GRPC_ERROR_NONE;
- GRPC_STATS_INC_POLLSET_KICK();
/* pollset->mu already held */
if (specific_worker != nullptr) {
if (specific_worker == GRPC_POLLSET_KICK_BROADCAST) {
- GPR_TIMER_SCOPE("pollset_kick_ext.broadcast", 0);
GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0);
for (specific_worker = p->root_worker.next;
specific_worker != &p->root_worker;
@@ -785,7 +783,6 @@ static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
}
p->kicked_without_pollers = true;
} else if (g_current_thread_worker != specific_worker) {
- GPR_TIMER_MARK("different_thread_worker", 0);
if ((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) != 0) {
specific_worker->reevaluate_polling_on_wakeup = true;
}
@@ -793,7 +790,6 @@ static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
kick_append_error(&error,
grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd->fd));
} else if ((flags & GRPC_POLLSET_CAN_KICK_SELF) != 0) {
- GPR_TIMER_MARK("kick_yoself", 0);
if ((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) != 0) {
specific_worker->reevaluate_polling_on_wakeup = true;
}
@@ -803,11 +799,9 @@ static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
}
} else if (g_current_thread_poller != p) {
GPR_ASSERT((flags & GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) == 0);
- GPR_TIMER_MARK("kick_anonymous", 0);
specific_worker = pop_front_worker(p);
if (specific_worker != nullptr) {
if (g_current_thread_worker == specific_worker) {
- GPR_TIMER_MARK("kick_anonymous_not_self", 0);
push_back_worker(p, specific_worker);
specific_worker = pop_front_worker(p);
if ((flags & GRPC_POLLSET_CAN_KICK_SELF) == 0 &&
@@ -817,13 +811,11 @@ static grpc_error_handle pollset_kick_ext(grpc_pollset* p,
}
}
if (specific_worker != nullptr) {
- GPR_TIMER_MARK("finally_kick", 0);
push_back_worker(p, specific_worker);
kick_append_error(
&error, grpc_wakeup_fd_wakeup(&specific_worker->wakeup_fd->fd));
}
} else {
- GPR_TIMER_MARK("kicked_no_pollers", 0);
p->kicked_without_pollers = true;
}
}
@@ -841,8 +833,6 @@ static grpc_error_handle pollset_kick(grpc_pollset* p,
static grpc_error_handle pollset_global_init(void) { return GRPC_ERROR_NONE; }
-static void pollset_global_shutdown(void) {}
-
/* main interface */
static void pollset_init(grpc_pollset* pollset, gpr_mu** mu) {
@@ -905,8 +895,8 @@ static void finish_shutdown(grpc_pollset* pollset) {
static void work_combine_error(grpc_error_handle* composite,
grpc_error_handle error) {
- if (error == GRPC_ERROR_NONE) return;
- if (*composite == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) return;
+ if (GRPC_ERROR_IS_NONE(*composite)) {
*composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("pollset_work");
}
*composite = grpc_error_add_child(*composite, error);
@@ -915,7 +905,6 @@ static void work_combine_error(grpc_error_handle* composite,
static grpc_error_handle pollset_work(grpc_pollset* pollset,
grpc_pollset_worker** worker_hdl,
grpc_core::Timestamp deadline) {
- GPR_TIMER_SCOPE("pollset_work", 0);
grpc_pollset_worker worker;
if (worker_hdl) *worker_hdl = &worker;
grpc_error_handle error = GRPC_ERROR_NONE;
@@ -941,7 +930,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
gpr_malloc(sizeof(*worker.wakeup_fd)));
error = grpc_wakeup_fd_init(&worker.wakeup_fd->fd);
fork_fd_list_add_wakeup_fd(worker.wakeup_fd);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
GRPC_LOG_IF_ERROR("pollset_work", GRPC_ERROR_REF(error));
return error;
}
@@ -949,7 +938,6 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
worker.kicked_specifically = 0;
/* If we're shutting down then we don't execute any extended work */
if (pollset->shutting_down) {
- GPR_TIMER_MARK("pollset_work.shutting_down", 0);
goto done;
}
/* Start polling, and keep doing so while we're being asked to
@@ -960,13 +948,12 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
while (keep_polling) {
keep_polling = 0;
if (!pollset->kicked_without_pollers ||
- deadline <= grpc_core::ExecCtx::Get()->Now()) {
+ deadline <= grpc_core::Timestamp::Now()) {
if (!added_worker) {
push_front_worker(pollset, &worker);
added_worker = 1;
g_current_thread_worker = &worker;
}
- GPR_TIMER_SCOPE("maybe_work_and_unlock", 0);
#define POLLOUT_CHECK (POLLOUT | POLLHUP | POLLERR)
#define POLLIN_CHECK (POLLIN | POLLHUP | POLLERR)
@@ -1017,13 +1004,14 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
grpc_fd* fd = watchers[i].fd;
pfds[i].events = static_cast<short>(
fd_begin_poll(fd, pollset, &worker, POLLIN, POLLOUT, &watchers[i]));
- GRPC_FD_UNREF(fd, "multipoller_start");
+ if (watchers[i].pollset != nullptr) {
+ GRPC_FD_UNREF(fd, "multipoller_start");
+ }
}
/* TODO(vpai): Consider first doing a 0 timeout poll here to avoid
even going into the blocking annotation if possible */
GRPC_SCHEDULING_START_BLOCKING_REGION;
- GRPC_STATS_INC_SYSCALL_POLL();
r = grpc_poll_function(pfds, pfd_count, timeout);
GRPC_SCHEDULING_END_BLOCKING_REGION;
@@ -1037,7 +1025,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
}
for (i = 1; i < pfd_count; i++) {
- if (watchers[i].fd == nullptr) {
+ if (watchers[i].pollset == nullptr) {
fd_end_poll(&watchers[i], 0, 0);
} else {
// Wake up all the file descriptors, if we have an invalid one
@@ -1058,7 +1046,11 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
&error, grpc_wakeup_fd_consume_wakeup(&worker.wakeup_fd->fd));
}
for (i = 1; i < pfd_count; i++) {
- if (watchers[i].fd == nullptr) {
+ if (watchers[i].pollset == nullptr) {
+ grpc_fd* fd = watchers[i].fd;
+ if (pfds[i].revents & POLLHUP) {
+ gpr_atm_no_barrier_store(&fd->pollhup, 1);
+ }
fd_end_poll(&watchers[i], 0, 0);
} else {
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
@@ -1085,7 +1077,6 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
locked = 0;
} else {
- GPR_TIMER_MARK("pollset_work.kicked_without_pollers", 0);
pollset->kicked_without_pollers = 0;
}
/* Finished execution - start cleaning up.
@@ -1101,7 +1092,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
/* If we're forced to re-evaluate polling (via pollset_kick with
GRPC_POLLSET_REEVALUATE_POLLING_ON_WAKEUP) then we land here and force
a loop */
- if (worker.reevaluate_polling_on_wakeup && error == GRPC_ERROR_NONE) {
+ if (worker.reevaluate_polling_on_wakeup && GRPC_ERROR_IS_NONE(error)) {
worker.reevaluate_polling_on_wakeup = 0;
pollset->kicked_without_pollers = 0;
if (queued_work || worker.kicked_specifically) {
@@ -1155,7 +1146,7 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
static int poll_deadline_to_millis_timeout(grpc_core::Timestamp deadline) {
if (deadline == grpc_core::Timestamp::InfFuture()) return -1;
if (deadline.is_process_epoch()) return 0;
- int64_t n = (deadline - grpc_core::ExecCtx::Get()->Now()).millis();
+ int64_t n = (deadline - grpc_core::Timestamp::Now()).millis();
if (n < 0) return 0;
if (n > INT_MAX) return -1;
return static_cast<int>(n);
@@ -1341,15 +1332,29 @@ static bool add_closure_to_background_poller(grpc_closure* /*closure*/,
return false;
}
-static void shutdown_engine(void) {
- pollset_global_shutdown();
- if (track_fds_for_fork) {
- gpr_mu_destroy(&fork_fd_list_mu);
- grpc_core::Fork::SetResetChildPollingEngineFunc(nullptr);
+/* Called by the child process's post-fork handler to close open fds, including
+ * worker wakeup fds. This allows gRPC to shutdown in the child process without
+ * interfering with connections or RPCs ongoing in the parent. */
+static void reset_event_manager_on_fork() {
+ gpr_mu_lock(&fork_fd_list_mu);
+ while (fork_fd_list_head != nullptr) {
+ if (fork_fd_list_head->fd != nullptr) {
+ if (!fork_fd_list_head->fd->closed) {
+ close(fork_fd_list_head->fd->fd);
+ }
+ fork_fd_list_head->fd->fd = -1;
+ } else {
+ close(fork_fd_list_head->cached_wakeup_fd->fd.read_fd);
+ fork_fd_list_head->cached_wakeup_fd->fd.read_fd = -1;
+ close(fork_fd_list_head->cached_wakeup_fd->fd.write_fd);
+ fork_fd_list_head->cached_wakeup_fd->fd.write_fd = -1;
+ }
+ fork_fd_list_head = fork_fd_list_head->next;
}
+ gpr_mu_unlock(&fork_fd_list_mu);
}
-static const grpc_event_engine_vtable vtable = {
+const grpc_event_engine_vtable grpc_ev_poll_posix = {
sizeof(grpc_pollset),
false,
false,
@@ -1383,49 +1388,62 @@ static const grpc_event_engine_vtable vtable = {
pollset_set_del_fd,
is_any_background_poller_thread,
- shutdown_background_closure,
- shutdown_engine,
+ /* name = */ "poll",
+ /* check_engine_available = */
+ [](bool) {
+ if (!grpc_has_wakeup_fd()) {
+ gpr_log(GPR_ERROR, "Skipping poll because of no wakeup fd.");
+ return false;
+ }
+ if (!GRPC_LOG_IF_ERROR("pollset_global_init", pollset_global_init())) {
+ return false;
+ }
+ if (grpc_core::Fork::Enabled()) {
+ track_fds_for_fork = true;
+ gpr_mu_init(&fork_fd_list_mu);
+ grpc_core::Fork::SetResetChildPollingEngineFunc(
+ reset_event_manager_on_fork);
+ }
+ return true;
+ },
+ /* init_engine = */ []() {},
+ /* shutdown_engine = */ shutdown_background_closure,
+ []() {},
add_closure_to_background_poller,
};
-/* Called by the child process's post-fork handler to close open fds, including
- * worker wakeup fds. This allows gRPC to shutdown in the child process without
- * interfering with connections or RPCs ongoing in the parent. */
-static void reset_event_manager_on_fork() {
- gpr_mu_lock(&fork_fd_list_mu);
- while (fork_fd_list_head != nullptr) {
- if (fork_fd_list_head->fd != nullptr) {
- if (!fork_fd_list_head->fd->closed) {
- close(fork_fd_list_head->fd->fd);
- }
- fork_fd_list_head->fd->fd = -1;
- } else {
- close(fork_fd_list_head->cached_wakeup_fd->fd.read_fd);
- fork_fd_list_head->cached_wakeup_fd->fd.read_fd = -1;
- close(fork_fd_list_head->cached_wakeup_fd->fd.write_fd);
- fork_fd_list_head->cached_wakeup_fd->fd.write_fd = -1;
- }
- fork_fd_list_head = fork_fd_list_head->next;
- }
- gpr_mu_unlock(&fork_fd_list_mu);
-}
+namespace {
-const grpc_event_engine_vtable* grpc_init_poll_posix(
- bool /*explicit_request*/) {
- if (!grpc_has_wakeup_fd()) {
- gpr_log(GPR_ERROR, "Skipping poll because of no wakeup fd.");
- return nullptr;
- }
- if (!GRPC_LOG_IF_ERROR("pollset_global_init", pollset_global_init())) {
- return nullptr;
- }
- if (grpc_core::Fork::Enabled()) {
- track_fds_for_fork = true;
- gpr_mu_init(&fork_fd_list_mu);
- grpc_core::Fork::SetResetChildPollingEngineFunc(
- reset_event_manager_on_fork);
+grpc_poll_function_type real_poll_function;
+
+int phony_poll(struct pollfd fds[], nfds_t nfds, int timeout) {
+ if (timeout == 0) {
+ return real_poll_function(fds, nfds, 0);
+ } else {
+ gpr_log(GPR_ERROR, "Attempted a blocking poll when declared non-polling.");
+ GPR_ASSERT(false);
+ return -1;
}
- return &vtable;
}
+} // namespace
+
+const grpc_event_engine_vtable grpc_ev_none_posix = []() {
+ grpc_event_engine_vtable v = grpc_ev_poll_posix;
+ v.check_engine_available = [](bool explicit_request) {
+ if (!explicit_request) return false;
+ // return the simplest engine as a phony but also override the poller
+ if (!grpc_ev_poll_posix.check_engine_available(explicit_request)) {
+ return false;
+ }
+ real_poll_function = grpc_poll_function;
+ grpc_poll_function = phony_poll;
+ return true;
+ };
+ v.name = "none";
+ v.init_engine = []() {};
+ v.shutdown_engine = []() {};
+ return v;
+}();
+
#endif /* GRPC_POSIX_SOCKET_EV_POLL */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/ev_poll_posix.h b/contrib/libs/grpc/src/core/lib/iomgr/ev_poll_posix.h
index ab3cd9029e..57050a9708 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/ev_poll_posix.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/ev_poll_posix.h
@@ -23,7 +23,7 @@
#include "src/core/lib/iomgr/ev_posix.h"
-const grpc_event_engine_vtable* grpc_init_poll_posix(bool explicit_request);
-const grpc_event_engine_vtable* grpc_init_poll_cv_posix(bool explicit_request);
+extern const grpc_event_engine_vtable grpc_ev_poll_posix;
+extern const grpc_event_engine_vtable grpc_ev_none_posix;
#endif /* GRPC_CORE_LIB_IOMGR_EV_POLL_POSIX_H */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/ev_posix.cc b/contrib/libs/grpc/src/core/lib/iomgr/ev_posix.cc
index 92c77dea73..da3e0db365 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/ev_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/ev_posix.cc
@@ -18,6 +18,8 @@
#include <grpc/support/port_platform.h>
+#include <grpc/grpc.h>
+
#include "src/core/lib/iomgr/port.h"
#ifdef GRPC_POSIX_SOCKET_EV
@@ -32,7 +34,6 @@
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/global_config.h"
#include "src/core/lib/iomgr/ev_epoll1_linux.h"
-#include "src/core/lib/iomgr/ev_epollex_linux.h"
#include "src/core/lib/iomgr/ev_poll_posix.h"
#include "src/core/lib/iomgr/ev_posix.h"
#include "src/core/lib/iomgr/internal_errqueue.h"
@@ -75,44 +76,7 @@ grpc_poll_function_type grpc_poll_function = aix_poll;
grpc_wakeup_fd grpc_global_wakeup_fd;
static const grpc_event_engine_vtable* g_event_engine = nullptr;
-static const char* g_poll_strategy_name = nullptr;
-
-typedef const grpc_event_engine_vtable* (*event_engine_factory_fn)(
- bool explicit_request);
-
-struct event_engine_factory {
- const char* name;
- event_engine_factory_fn factory;
-};
-namespace {
-
-grpc_poll_function_type real_poll_function;
-
-int phony_poll(struct pollfd fds[], nfds_t nfds, int timeout) {
- if (timeout == 0) {
- return real_poll_function(fds, nfds, 0);
- } else {
- gpr_log(GPR_ERROR, "Attempted a blocking poll when declared non-polling.");
- GPR_ASSERT(false);
- return -1;
- }
-}
-
-const grpc_event_engine_vtable* init_non_polling(bool explicit_request) {
- if (!explicit_request) {
- return nullptr;
- }
- // return the simplest engine as a phony but also override the poller
- auto ret = grpc_init_poll_posix(explicit_request);
- real_poll_function = grpc_poll_function;
- grpc_poll_function = phony_poll;
-
- return ret;
-}
-} // namespace
-
-#define ENGINE_HEAD_CUSTOM "head_custom"
-#define ENGINE_TAIL_CUSTOM "tail_custom"
+static gpr_once g_choose_engine = GPR_ONCE_INIT;
// The global array of event-engine factories. Each entry is a pair with a name
// and an event-engine generator function (nullptr if there is no generator
@@ -125,13 +89,18 @@ const grpc_event_engine_vtable* init_non_polling(bool explicit_request) {
// specific poller that is requested by name in the GRPC_POLL_STRATEGY
// environment variable if that variable is set (which should be a
// comma-separated list of one or more event engine names)
-static event_engine_factory g_factories[] = {
- {ENGINE_HEAD_CUSTOM, nullptr}, {ENGINE_HEAD_CUSTOM, nullptr},
- {ENGINE_HEAD_CUSTOM, nullptr}, {ENGINE_HEAD_CUSTOM, nullptr},
- {"epoll1", grpc_init_epoll1_linux}, {"epollex", grpc_init_epollex_linux},
- {"poll", grpc_init_poll_posix}, {"none", init_non_polling},
- {ENGINE_TAIL_CUSTOM, nullptr}, {ENGINE_TAIL_CUSTOM, nullptr},
- {ENGINE_TAIL_CUSTOM, nullptr}, {ENGINE_TAIL_CUSTOM, nullptr},
+static const grpc_event_engine_vtable* g_vtables[] = {
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
+ &grpc_ev_epoll1_posix,
+ &grpc_ev_poll_posix,
+ &grpc_ev_none_posix,
+ nullptr,
+ nullptr,
+ nullptr,
+ nullptr,
};
static void add(const char* beg, const char* end, char*** ss, size_t* ns) {
@@ -164,84 +133,73 @@ static bool is(const char* want, const char* have) {
}
static void try_engine(const char* engine) {
- for (size_t i = 0; i < GPR_ARRAY_SIZE(g_factories); i++) {
- if (g_factories[i].factory != nullptr && is(engine, g_factories[i].name)) {
- if ((g_event_engine = g_factories[i].factory(
- 0 == strcmp(engine, g_factories[i].name)))) {
- g_poll_strategy_name = g_factories[i].name;
- gpr_log(GPR_DEBUG, "Using polling engine: %s", g_factories[i].name);
- return;
- }
+ for (size_t i = 0; i < GPR_ARRAY_SIZE(g_vtables); i++) {
+ if (g_vtables[i] != nullptr && is(engine, g_vtables[i]->name) &&
+ g_vtables[i]->check_engine_available(
+ 0 == strcmp(engine, g_vtables[i]->name))) {
+ g_event_engine = g_vtables[i];
+ gpr_log(GPR_DEBUG, "Using polling engine: %s", g_event_engine->name);
+ return;
}
}
}
/* Call this before calling grpc_event_engine_init() */
-void grpc_register_event_engine_factory(const char* name,
- event_engine_factory_fn factory,
+void grpc_register_event_engine_factory(const grpc_event_engine_vtable* vtable,
bool add_at_head) {
- const char* custom_match =
- add_at_head ? ENGINE_HEAD_CUSTOM : ENGINE_TAIL_CUSTOM;
+ const grpc_event_engine_vtable** first_null = nullptr;
+ const grpc_event_engine_vtable** last_null = nullptr;
// Overwrite an existing registration if already registered
- for (size_t i = 0; i < GPR_ARRAY_SIZE(g_factories); i++) {
- if (0 == strcmp(name, g_factories[i].name)) {
- g_factories[i].factory = factory;
+ for (size_t i = 0; i < GPR_ARRAY_SIZE(g_vtables); i++) {
+ if (g_vtables[i] == nullptr) {
+ if (first_null == nullptr) first_null = &g_vtables[i];
+ last_null = &g_vtables[i];
+ } else if (0 == strcmp(g_vtables[i]->name, vtable->name)) {
+ g_vtables[i] = vtable;
return;
}
}
- // Otherwise fill in an available custom slot
- for (size_t i = 0; i < GPR_ARRAY_SIZE(g_factories); i++) {
- if (0 == strcmp(g_factories[i].name, custom_match)) {
- g_factories[i].name = name;
- g_factories[i].factory = factory;
- return;
- }
- }
-
- // Otherwise fail
- GPR_ASSERT(false);
+ *(add_at_head ? first_null : last_null) = vtable;
}
/*If grpc_event_engine_init() has been called, returns the poll_strategy_name.
* Otherwise, returns nullptr. */
-const char* grpc_get_poll_strategy_name() { return g_poll_strategy_name; }
+const char* grpc_get_poll_strategy_name() { return g_event_engine->name; }
void grpc_event_engine_init(void) {
- grpc_core::UniquePtr<char> value = GPR_GLOBAL_CONFIG_GET(grpc_poll_strategy);
+ gpr_once_init(&g_choose_engine, []() {
+ grpc_core::UniquePtr<char> value =
+ GPR_GLOBAL_CONFIG_GET(grpc_poll_strategy);
- char** strings = nullptr;
- size_t nstrings = 0;
- split(value.get(), &strings, &nstrings);
+ char** strings = nullptr;
+ size_t nstrings = 0;
+ split(value.get(), &strings, &nstrings);
- for (size_t i = 0; g_event_engine == nullptr && i < nstrings; i++) {
- try_engine(strings[i]);
- }
+ for (size_t i = 0; g_event_engine == nullptr && i < nstrings; i++) {
+ try_engine(strings[i]);
+ }
- for (size_t i = 0; i < nstrings; i++) {
- gpr_free(strings[i]);
- }
- gpr_free(strings);
+ for (size_t i = 0; i < nstrings; i++) {
+ gpr_free(strings[i]);
+ }
+ gpr_free(strings);
- if (g_event_engine == nullptr) {
- gpr_log(GPR_ERROR, "No event engine could be initialized from %s",
- value.get());
- abort();
- }
+ if (g_event_engine == nullptr) {
+ gpr_log(GPR_ERROR, "No event engine could be initialized from %s",
+ value.get());
+ abort();
+ }
+ });
+ g_event_engine->init_engine();
}
-void grpc_event_engine_shutdown(void) {
- g_event_engine->shutdown_engine();
- g_event_engine = nullptr;
-}
+void grpc_event_engine_shutdown(void) { g_event_engine->shutdown_engine(); }
bool grpc_event_engine_can_track_errors(void) {
/* Only track errors if platform supports errqueue. */
- if (grpc_core::kernel_supports_errqueue()) {
- return g_event_engine->can_track_err;
- }
- return false;
+ return grpc_core::KernelSupportsErrqueue() && g_event_engine->can_track_err;
}
bool grpc_event_engine_run_in_background(void) {
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/ev_posix.h b/contrib/libs/grpc/src/core/lib/iomgr/ev_posix.h
index 823f68266b..b12942dd2c 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/ev_posix.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/ev_posix.h
@@ -85,6 +85,9 @@ typedef struct grpc_event_engine_vtable {
void (*pollset_set_del_fd)(grpc_pollset_set* pollset_set, grpc_fd* fd);
bool (*is_any_background_poller_thread)(void);
+ const char* name;
+ bool (*check_engine_available)(bool explicit_request);
+ void (*init_engine)();
void (*shutdown_background_closure)(void);
void (*shutdown_engine)(void);
bool (*add_closure_to_background_poller)(grpc_closure* closure,
@@ -92,9 +95,8 @@ typedef struct grpc_event_engine_vtable {
} grpc_event_engine_vtable;
/* register a new event engine factory */
-void grpc_register_event_engine_factory(
- const char* name, const grpc_event_engine_vtable* (*factory)(bool),
- bool add_at_head);
+void grpc_register_event_engine_factory(const grpc_event_engine_vtable* vtable,
+ bool add_at_head);
void grpc_event_engine_init(void);
void grpc_event_engine_shutdown(void);
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/closure.cc b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/closure.cc
deleted file mode 100644
index 1fb46c920d..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/closure.cc
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2021 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include <grpc/support/port_platform.h>
-
-#ifdef GRPC_USE_EVENT_ENGINE
-#include <grpc/event_engine/event_engine.h>
-
-#include "src/core/lib/iomgr/closure.h"
-#error #include "src/core/lib/iomgr/event_engine/closure.h"
-#error #include "src/core/lib/iomgr/event_engine/pollset.h"
-#include "src/core/lib/transport/error_utils.h"
-
-namespace grpc_event_engine {
-namespace experimental {
-
-namespace {
-
-void RunClosure(grpc_closure* closure, grpc_error_handle error) {
- GPR_ASSERT(closure != nullptr);
-#ifndef NDEBUG
- closure->scheduled = false;
- if (grpc_trace_closure.enabled()) {
- gpr_log(GPR_DEBUG,
- "EventEngine: running closure %p: created [%s:%d]: %s [%s:%d]",
- closure, closure->file_created, closure->line_created,
- closure->run ? "run" : "scheduled", closure->file_initiated,
- closure->line_initiated);
- }
-#endif
- closure->cb(closure->cb_arg, error);
-#ifndef NDEBUG
- if (grpc_trace_closure.enabled()) {
- gpr_log(GPR_DEBUG, "EventEngine: closure %p finished", closure);
- }
-#endif
-}
-
-} // namespace
-
-std::function<void(y_absl::Status)> GrpcClosureToStatusCallback(
- grpc_closure* closure) {
- return [closure](y_absl::Status status) {
- RunClosure(closure, absl_status_to_grpc_error(status));
- grpc_pollset_ee_broadcast_event();
- };
-}
-
-std::function<void()> GrpcClosureToCallback(grpc_closure* closure) {
- return [closure]() {
- RunClosure(closure, GRPC_ERROR_NONE);
- grpc_pollset_ee_broadcast_event();
- };
-}
-
-std::function<void()> GrpcClosureToCallback(grpc_closure* closure,
- grpc_error_handle error) {
- return [closure, error]() {
- RunClosure(closure, error);
- grpc_pollset_ee_broadcast_event();
- };
-}
-
-} // namespace experimental
-} // namespace grpc_event_engine
-
-#endif // GRPC_USE_EVENT_ENGINE
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/endpoint.cc b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/endpoint.cc
deleted file mode 100644
index 366d4d183a..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/endpoint.cc
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright 2021 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include <grpc/support/port_platform.h>
-
-#ifdef GRPC_USE_EVENT_ENGINE
-#include "y_absl/strings/string_view.h"
-
-#include <grpc/event_engine/event_engine.h>
-#include <grpc/slice.h>
-#include <grpc/slice_buffer.h>
-#include <grpc/support/time.h>
-
-#include "src/core/lib/address_utils/sockaddr_utils.h"
-#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/iomgr/endpoint.h"
-#include "src/core/lib/iomgr/error.h"
-#error #include "src/core/lib/iomgr/event_engine/closure.h"
-#error #include "src/core/lib/iomgr/event_engine/endpoint.h"
-#error #include "src/core/lib/iomgr/event_engine/pollset.h"
-#include "src/core/lib/iomgr/pollset.h"
-#include "src/core/lib/iomgr/pollset_set.h"
-#error #include "src/core/lib/iomgr/resource_quota.h"
-#include "src/core/lib/transport/error_utils.h"
-
-extern grpc_core::TraceFlag grpc_tcp_trace;
-
-namespace {
-
-using ::grpc_event_engine::experimental::EventEngine;
-using ::grpc_event_engine::experimental::ResolvedAddressToURI;
-using ::grpc_event_engine::experimental::SliceBuffer;
-
-void endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* slices,
- grpc_closure* cb, bool /* urgent */) {
- auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
- if (eeep->endpoint == nullptr) {
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, GRPC_ERROR_CANCELLED);
- return;
- }
- SliceBuffer* read_buffer = new (&eeep->read_buffer) SliceBuffer(slices);
- eeep->endpoint->Read(
- [eeep, cb](y_absl::Status status) {
- auto* read_buffer = reinterpret_cast<SliceBuffer*>(&eeep->read_buffer);
- read_buffer->~SliceBuffer();
- grpc_core::ExecCtx exec_ctx;
- grpc_core::Closure::Run(DEBUG_LOCATION, cb,
- absl_status_to_grpc_error(status));
- exec_ctx.Flush();
- grpc_pollset_ee_broadcast_event();
- },
- read_buffer);
-}
-
-void endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
- grpc_closure* cb, void* arg) {
- // TODO(hork): adapt arg to some metrics collection mechanism.
- (void)arg;
- auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
- if (eeep->endpoint == nullptr) {
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, GRPC_ERROR_CANCELLED);
- return;
- }
- SliceBuffer* write_buffer = new (&eeep->write_buffer) SliceBuffer(slices);
- eeep->endpoint->Write(
- [eeep, cb](y_absl::Status status) {
- auto* write_buffer =
- reinterpret_cast<SliceBuffer*>(&eeep->write_buffer);
- write_buffer->~SliceBuffer();
- grpc_core::ExecCtx exec_ctx;
- grpc_core::Closure::Run(DEBUG_LOCATION, cb,
- absl_status_to_grpc_error(status));
- exec_ctx.Flush();
- grpc_pollset_ee_broadcast_event();
- },
- write_buffer);
-}
-void endpoint_add_to_pollset(grpc_endpoint* /* ep */,
- grpc_pollset* /* pollset */) {}
-void endpoint_add_to_pollset_set(grpc_endpoint* /* ep */,
- grpc_pollset_set* /* pollset */) {}
-void endpoint_delete_from_pollset_set(grpc_endpoint* /* ep */,
- grpc_pollset_set* /* pollset */) {}
-/// After shutdown, all endpoint operations except destroy are no-op,
-/// and will return some kind of sane default (empty strings, nullptrs, etc). It
-/// is the caller's responsibility to ensure that calls to endpoint_shutdown are
-/// synchronized.
-void endpoint_shutdown(grpc_endpoint* ep, grpc_error_handle why) {
- auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
- TString str = grpc_error_std_string(why);
- gpr_log(GPR_INFO, "TCP Endpoint %p shutdown why=%s", eeep->endpoint.get(),
- str.c_str());
- }
- eeep->endpoint.reset();
-}
-
-void endpoint_destroy(grpc_endpoint* ep) {
- auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
- delete eeep;
-}
-
-y_absl::string_view endpoint_get_peer(grpc_endpoint* ep) {
- auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
- if (eeep->endpoint == nullptr) {
- return "";
- }
- if (eeep->peer_address.empty()) {
- const EventEngine::ResolvedAddress& addr = eeep->endpoint->GetPeerAddress();
- eeep->peer_address = ResolvedAddressToURI(addr);
- }
- return eeep->peer_address;
-}
-
-y_absl::string_view endpoint_get_local_address(grpc_endpoint* ep) {
- auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
- if (eeep->endpoint == nullptr) {
- return "";
- }
- if (eeep->local_address.empty()) {
- const EventEngine::ResolvedAddress& addr =
- eeep->endpoint->GetLocalAddress();
- eeep->local_address = ResolvedAddressToURI(addr);
- }
- return eeep->local_address;
-}
-
-int endpoint_get_fd(grpc_endpoint* /* ep */) { return -1; }
-
-bool endpoint_can_track_err(grpc_endpoint* /* ep */) { return false; }
-
-grpc_endpoint_vtable grpc_event_engine_endpoint_vtable = {
- endpoint_read,
- endpoint_write,
- endpoint_add_to_pollset,
- endpoint_add_to_pollset_set,
- endpoint_delete_from_pollset_set,
- endpoint_shutdown,
- endpoint_destroy,
- endpoint_get_peer,
- endpoint_get_local_address,
- endpoint_get_fd,
- endpoint_can_track_err};
-
-} // namespace
-
-grpc_event_engine_endpoint* grpc_tcp_server_endpoint_create(
- std::unique_ptr<EventEngine::Endpoint> ee_endpoint) {
- auto endpoint = new grpc_event_engine_endpoint;
- endpoint->base.vtable = &grpc_event_engine_endpoint_vtable;
- endpoint->endpoint = std::move(ee_endpoint);
- return endpoint;
-}
-
-grpc_endpoint* grpc_tcp_create(const grpc_channel_args* /* channel_args */,
- y_absl::string_view /* peer_address */) {
- auto endpoint = new grpc_event_engine_endpoint;
- endpoint->base.vtable = &grpc_event_engine_endpoint_vtable;
- return &endpoint->base;
-}
-
-#endif // GRPC_USE_EVENT_ENGINE
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/iomgr.cc b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/iomgr.cc
deleted file mode 100644
index 5cd502008b..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/iomgr.cc
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2021 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include <grpc/support/port_platform.h>
-
-#ifdef GRPC_USE_EVENT_ENGINE
-#include <grpc/event_engine/event_engine.h>
-
-#include "src/core/lib/debug/trace.h"
-#include "src/core/lib/iomgr/closure.h"
-#error #include "src/core/lib/iomgr/event_engine/resolver.h"
-#include "src/core/lib/iomgr/iomgr_internal.h"
-#include "src/core/lib/iomgr/tcp_client.h"
-#include "src/core/lib/iomgr/tcp_server.h"
-#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/surface/init.h"
-
-extern grpc_tcp_client_vtable grpc_event_engine_tcp_client_vtable;
-extern grpc_tcp_server_vtable grpc_event_engine_tcp_server_vtable;
-extern grpc_timer_vtable grpc_event_engine_timer_vtable;
-extern grpc_pollset_vtable grpc_event_engine_pollset_vtable;
-extern grpc_pollset_set_vtable grpc_event_engine_pollset_set_vtable;
-
-// Disabled by default. grpc_polling_trace must be defined in all iomgr
-// implementations due to its usage in lockfree_event.
-grpc_core::DebugOnlyTraceFlag grpc_polling_trace(false, "polling");
-
-namespace {
-
-using ::grpc_event_engine::experimental::EventEngine;
-using ::grpc_event_engine::experimental::GetDefaultEventEngine;
-
-// TODO(nnoble): Instantiate the default EventEngine if none have been provided.
-void iomgr_platform_init(void) {}
-
-void iomgr_platform_flush(void) {}
-
-void iomgr_platform_shutdown(void) {}
-
-void iomgr_platform_shutdown_background_closure(void) {}
-
-bool iomgr_platform_is_any_background_poller_thread(void) {
- return grpc_event_engine::experimental::GetDefaultEventEngine()
- ->IsWorkerThread();
-}
-
-bool iomgr_platform_add_closure_to_background_poller(
- grpc_closure* /* closure */, grpc_error_handle /* error */) {
- return false;
-}
-
-grpc_iomgr_platform_vtable vtable = {
- iomgr_platform_init,
- iomgr_platform_flush,
- iomgr_platform_shutdown,
- iomgr_platform_shutdown_background_closure,
- iomgr_platform_is_any_background_poller_thread,
- iomgr_platform_add_closure_to_background_poller};
-
-} // namespace
-
-void grpc_set_default_iomgr_platform() {
- grpc_set_tcp_client_impl(&grpc_event_engine_tcp_client_vtable);
- grpc_set_tcp_server_impl(&grpc_event_engine_tcp_server_vtable);
- grpc_set_timer_impl(&grpc_event_engine_timer_vtable);
- grpc_set_pollset_vtable(&grpc_event_engine_pollset_vtable);
- grpc_set_pollset_set_vtable(&grpc_event_engine_pollset_set_vtable);
- grpc_core::SetDNSResolver(
- grpc_core::experimental::EventEngineDNSResolver::GetOrCreate());
- grpc_set_iomgr_platform_vtable(&vtable);
-}
-
-bool grpc_iomgr_run_in_background() { return false; }
-
-#endif // GRPC_USE_EVENT_ENGINE
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/pollset.cc b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/pollset.cc
deleted file mode 100644
index e9297fe682..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/pollset.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2021 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include <grpc/support/port_platform.h>
-
-#ifdef GRPC_USE_EVENT_ENGINE
-#include <grpc/event_engine/event_engine.h>
-
-#error #include "src/core/lib/iomgr/event_engine/pollset.h"
-#include "src/core/lib/iomgr/iomgr_internal.h"
-#include "src/core/lib/iomgr/pollset.h"
-#include "src/core/lib/iomgr/pollset_set.h"
-
-namespace {
-
-static gpr_mu g_mu;
-static gpr_cv g_cv;
-
-// --- pollset vtable API ---
-void pollset_global_init(void) {
- gpr_mu_init(&g_mu);
- gpr_cv_init(&g_cv);
-}
-void pollset_global_shutdown(void) {
- gpr_cv_destroy(&g_cv);
- gpr_mu_destroy(&g_mu);
-}
-void pollset_init(grpc_pollset* pollset, gpr_mu** mu) { *mu = &g_mu; }
-void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_NONE);
-}
-void pollset_destroy(grpc_pollset* pollset) {}
-grpc_error_handle pollset_work(grpc_pollset* pollset,
- grpc_pollset_worker** worker,
- grpc_core::Timestamp deadline) {
- (void)worker;
- gpr_cv_wait(&g_cv, &g_mu, deadline.as_timespec(GPR_CLOCK_REALTIME));
- return GRPC_ERROR_NONE;
-}
-grpc_error_handle pollset_kick(grpc_pollset* pollset,
- grpc_pollset_worker* specific_worker) {
- (void)pollset;
- (void)specific_worker;
- return GRPC_ERROR_NONE;
-}
-size_t pollset_size(void) { return 1; }
-
-// --- pollset_set vtable API ---
-grpc_pollset_set* pollset_set_create(void) { return nullptr; }
-void pollset_set_destroy(grpc_pollset_set* pollset_set) {}
-void pollset_set_add_pollset(grpc_pollset_set* pollset_set,
- grpc_pollset* pollset) {}
-
-void pollset_set_del_pollset(grpc_pollset_set* pollset_set,
- grpc_pollset* pollset) {}
-void pollset_set_add_pollset_set(grpc_pollset_set* bag,
- grpc_pollset_set* item) {}
-void pollset_set_del_pollset_set(grpc_pollset_set* bag,
- grpc_pollset_set* item) {}
-
-} // namespace
-
-void grpc_pollset_ee_broadcast_event() { gpr_cv_signal(&g_cv); }
-
-// --- vtables ---
-grpc_pollset_vtable grpc_event_engine_pollset_vtable = {
- pollset_global_init, pollset_global_shutdown,
- pollset_init, pollset_shutdown,
- pollset_destroy, pollset_work,
- pollset_kick, pollset_size};
-
-grpc_pollset_set_vtable grpc_event_engine_pollset_set_vtable = {
- pollset_set_create, pollset_set_destroy,
- pollset_set_add_pollset, pollset_set_del_pollset,
- pollset_set_add_pollset_set, pollset_set_del_pollset_set};
-
-#endif // GRPC_USE_EVENT_ENGINE
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolved_address_internal.cc b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolved_address_internal.cc
deleted file mode 100644
index 136df80944..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolved_address_internal.cc
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2021 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include <grpc/support/port_platform.h>
-
-#include "src/core/lib/iomgr/event_engine/resolved_address_internal.h"
-
-#include <grpc/event_engine/event_engine.h>
-
-#include "src/core/lib/address_utils/sockaddr_utils.h"
-#include "src/core/lib/iomgr/resolve_address.h"
-
-namespace grpc_event_engine {
-namespace experimental {
-
-EventEngine::ResolvedAddress CreateResolvedAddress(
- const grpc_resolved_address& addr) {
- return EventEngine::ResolvedAddress(
- reinterpret_cast<const sockaddr*>(addr.addr), addr.len);
-}
-
-grpc_resolved_address CreateGRPCResolvedAddress(
- const EventEngine::ResolvedAddress& ra) {
- grpc_resolved_address grpc_addr;
- memcpy(grpc_addr.addr, ra.address(), ra.size());
- grpc_addr.len = ra.size();
- return grpc_addr;
-}
-
-// TODO(ctiller): Move this to somewhere more permanent as we're deleting iomgr.
-TString ResolvedAddressToURI(const EventEngine::ResolvedAddress& addr) {
- auto gra = CreateGRPCResolvedAddress(addr);
- return grpc_sockaddr_to_uri(&gra);
-}
-
-} // namespace experimental
-} // namespace grpc_event_engine
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolver.cc b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolver.cc
deleted file mode 100644
index aa4a6897c3..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/resolver.cc
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright 2021 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include <grpc/support/port_platform.h>
-
-#ifdef GRPC_USE_EVENT_ENGINE
-#include "y_absl/functional/bind_front.h"
-
-#include <grpc/event_engine/event_engine.h>
-
-#include "src/core/lib/address_utils/sockaddr_utils.h"
-#include "src/core/lib/event_engine/event_engine_factory.h"
-#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/iomgr/error.h"
-#error #include "src/core/lib/iomgr/event_engine/promise.h"
-#include "src/core/lib/iomgr/event_engine/resolved_address_internal.h"
-#error #include "src/core/lib/iomgr/event_engine/resolver.h"
-#include "src/core/lib/iomgr/resolve_address.h"
-#error #include "src/core/lib/iomgr/resolve_address_impl.h"
-#include "src/core/lib/iomgr/work_serializer.h"
-#include "src/core/lib/surface/init.h"
-#include "src/core/lib/transport/error_utils.h"
-
-namespace grpc_core {
-namespace experimental {
-namespace {
-using ::grpc_event_engine::experimental::CreateGRPCResolvedAddress;
-using ::grpc_event_engine::experimental::EventEngine;
-using ::grpc_event_engine::experimental::GetDefaultEventEngine;
-using ::grpc_event_engine::experimental::Promise;
-
-/// A fire-and-forget class representing an individual DNS request.
-///
-/// This provides a place to store the ownership of the DNSResolver object until
-/// the request is complete.
-class EventEngineDNSRequest : DNSRequest {
- public:
- EventEngineDNSRequest(std::unique_ptr<EventEngine::DNSResolver> dns_resolver,
- y_absl::string_view name, y_absl::string_view default_port,
- grpc_closure* on_done,
- std::vector<grpc_resolved_address>* addresses)
- : dns_resolver_(std::move(dns_resolver)),
- name_(TString(name)),
- default_port_(TString(default_port)),
- on_done_(std::move(on_done)) {}
-
- void Start() override {
- if (dns_resolver_ == nullptr) {
- new DNSCallbackExecCtxScheduler(
- std::move(on_done_),
- y_absl::UnknownError("Failed to get DNS Resolver."));
- return;
- }
- Ref().release(); // ref held by pending resolution
- dns_resolver_->LookupHostname(
- y_absl::bind_front(&EventEngineDNSRequest::OnLookupComplete, this), name_,
- default_port_, y_absl::InfiniteFuture());
- }
-
- // TODO(hork): implement cancellation; currently it's a no-op
- void Orphan() override { Unref(); }
-
- private:
- void OnLookupComplete(
- y_absl::StatusOr<std::vector<EventEngine::ResolvedAddress>> addresses) {
- ExecCtx exec_ctx;
- // Convert addresses to iomgr form.
- std::vector<grpc_resolved_address> result;
- results.reserve(addresses->size());
- for (size_t i = 0; i < addresses->size(); ++i) {
- results.push_back(CreateGRPCResolvedAddress(addresses[i]));
- }
- if (addresses.ok()) {
- on_done_(std::move(result));
- } else {
- on_done_(addresses.status());
- }
- Unref();
- }
-
- std::unique_ptr<EventEngine::DNSResolver> dns_resolver_;
- const TString name_;
- const TString default_port_;
- std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
- on_done_;
-};
-
-} // namespace
-
-DNSResolver* EventEngineDNSResolver::GetOrCreate() {
- static EventEngineDNSResolver* instance = new EventEngineDNSResolver();
- return instance;
-}
-
-OrphanablePtr<DNSResolver::Request> EventEngineDNSResolver::ResolveName(
- y_absl::string_view name, y_absl::string_view default_port,
- grpc_pollset_set* /* interested_parties */,
- std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
- on_done) {
- std::unique_ptr<EventEngine::DNSResolver> dns_resolver =
- GetDefaultEventEngine()->GetDNSResolver();
- return MakeOrphanable<EventEngineDNSRequest>(
- std::move(dns_resolver), name, default_port, std::move(on_done));
-}
-
-y_absl::StatusOr<std::vector<grpc_resolved_address>>
-EventEngineDNSResolver::ResolveNameBlocking(y_absl::string_view name,
- y_absl::string_view default_port) {
- grpc_closure on_done;
- Promise<y_absl::StatusOr<std::vector<grpc_resolved_address>>> evt;
- auto r = ResolveName(
- name, default_port,
- [&evt](void(y_absl::StatusOr<std::vector<grpc_resolved_address>> result) {
- evt.Set(std::move(result));
- }));
- r->Start();
- return evt.Get();
-}
-
-} // namespace experimental
-} // namespace grpc_core
-
-#endif // GRPC_USE_EVENT_ENGINE
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/tcp.cc b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/tcp.cc
deleted file mode 100644
index 4ae633ddcf..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/tcp.cc
+++ /dev/null
@@ -1,296 +0,0 @@
-// Copyright 2021 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include <grpc/support/port_platform.h>
-
-#ifdef GRPC_USE_EVENT_ENGINE
-#include <grpc/event_engine/event_engine.h>
-
-#include "src/core/lib/address_utils/sockaddr_utils.h"
-#include "src/core/lib/event_engine/channel_args_endpoint_config.h"
-#include "src/core/lib/event_engine/event_engine_factory.h"
-#include "src/core/lib/event_engine/sockaddr.h"
-#include "src/core/lib/gprpp/ref_counted.h"
-#error #include "src/core/lib/iomgr/event_engine/closure.h"
-#error #include "src/core/lib/iomgr/event_engine/endpoint.h"
-#error #include "src/core/lib/iomgr/event_engine/pollset.h"
-#include "src/core/lib/iomgr/resolve_address.h"
-#include "src/core/lib/iomgr/tcp_client.h"
-#include "src/core/lib/iomgr/tcp_server.h"
-#include "src/core/lib/surface/init.h"
-#include "src/core/lib/transport/error_utils.h"
-
-extern grpc_core::TraceFlag grpc_tcp_trace;
-
-namespace {
-using ::grpc_event_engine::experimental::ChannelArgsEndpointConfig;
-using ::grpc_event_engine::experimental::EventEngine;
-using ::grpc_event_engine::experimental::GetDefaultEventEngine;
-using ::grpc_event_engine::experimental::GrpcClosureToStatusCallback;
-using ::grpc_event_engine::experimental::SliceAllocator;
-using ::grpc_event_engine::experimental::SliceAllocatorFactory;
-using ::grpc_event_engine::experimental::SliceBuffer;
-} // namespace
-
-class WrappedInternalSliceAllocator : public SliceAllocator {
- public:
- explicit WrappedInternalSliceAllocator(grpc_slice_allocator* slice_allocator)
- : slice_allocator_(slice_allocator) {}
-
- ~WrappedInternalSliceAllocator() {
- grpc_slice_allocator_destroy(slice_allocator_);
- }
-
- y_absl::Status Allocate(size_t size, SliceBuffer* dest,
- SliceAllocator::AllocateCallback cb) override {
- // TODO(nnoble): requires the SliceBuffer definition.
- grpc_slice_allocator_allocate(
- slice_allocator_, size, 1, grpc_slice_allocator_intent::kReadBuffer,
- dest->RawSliceBuffer(),
- [](void* arg, grpc_error_handle error) {
- auto cb = static_cast<SliceAllocator::AllocateCallback*>(arg);
- (*cb)(grpc_error_to_absl_status(error));
- delete cb;
- },
- new SliceAllocator::AllocateCallback(cb));
- return y_absl::OkStatus();
- }
-
- private:
- grpc_slice_allocator* slice_allocator_;
-};
-
-class WrappedInternalSliceAllocatorFactory : public SliceAllocatorFactory {
- public:
- explicit WrappedInternalSliceAllocatorFactory(
- grpc_slice_allocator_factory* slice_allocator_factory)
- : slice_allocator_factory_(slice_allocator_factory) {}
-
- ~WrappedInternalSliceAllocatorFactory() {
- grpc_slice_allocator_factory_destroy(slice_allocator_factory_);
- }
-
- std::unique_ptr<SliceAllocator> CreateSliceAllocator(
- y_absl::string_view peer_name) override {
- return y_absl::make_unique<WrappedInternalSliceAllocator>(
- grpc_slice_allocator_factory_create_slice_allocator(
- slice_allocator_factory_, peer_name));
- };
-
- private:
- grpc_slice_allocator_factory* slice_allocator_factory_;
-};
-
-struct grpc_tcp_server {
- explicit grpc_tcp_server(std::unique_ptr<EventEngine::Listener> listener)
- : refcount(1, GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace) ? "tcp" : nullptr),
- listener(std::move(listener)) {
- shutdown_starting.head = nullptr;
- shutdown_starting.tail = nullptr;
- };
- ~grpc_tcp_server() {
- grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &shutdown_starting);
- grpc_core::ExecCtx::Get()->Flush();
- }
- grpc_core::RefCount refcount;
- grpc_core::Mutex mu;
- std::unique_ptr<EventEngine::Listener> listener;
- grpc_closure_list shutdown_starting Y_ABSL_GUARDED_BY(mu);
- grpc_tcp_server_cb on_accept_internal;
- void* on_accept_internal_arg;
-};
-
-namespace {
-
-/// Converts a grpc_closure to an EventEngine Callback. The closure is expected
-/// to already be initialized.
-EventEngine::OnConnectCallback GrpcClosureToOnConnectCallback(
- grpc_closure* closure, grpc_endpoint** endpoint_ptr) {
- return [closure, endpoint_ptr](
- y_absl::StatusOr<std::unique_ptr<EventEngine::Endpoint>> endpoint) {
- grpc_core::ExecCtx exec_ctx;
- if (endpoint.ok()) {
- auto* grpc_endpoint_out =
- reinterpret_cast<grpc_event_engine_endpoint*>(*endpoint_ptr);
- grpc_endpoint_out->endpoint = std::move(*endpoint);
- } else {
- grpc_endpoint_destroy(*endpoint_ptr);
- *endpoint_ptr = nullptr;
- }
- grpc_core::Closure::Run(DEBUG_LOCATION, closure,
- absl_status_to_grpc_error(endpoint.status()));
- exec_ctx.Flush();
- grpc_pollset_ee_broadcast_event();
- };
-}
-
-/// Usage note: this method does not take ownership of any pointer arguments.
-void tcp_connect(grpc_closure* on_connect, grpc_endpoint** endpoint,
- grpc_slice_allocator* slice_allocator,
- grpc_pollset_set* /* interested_parties */,
- const grpc_channel_args* channel_args,
- const grpc_resolved_address* addr,
- grpc_core::Timestamp deadline) {
- grpc_event_engine_endpoint* ee_endpoint =
- reinterpret_cast<grpc_event_engine_endpoint*>(
- grpc_tcp_create(channel_args, grpc_sockaddr_to_uri(addr)));
- *endpoint = &ee_endpoint->base;
- EventEngine::OnConnectCallback ee_on_connect =
- GrpcClosureToOnConnectCallback(on_connect, endpoint);
- auto ee_slice_allocator =
- y_absl::make_unique<WrappedInternalSliceAllocator>(slice_allocator);
- EventEngine::ResolvedAddress ra(reinterpret_cast<const sockaddr*>(addr->addr),
- addr->len);
- y_absl::Time ee_deadline =
- grpc_core::ToAbslTime(deadline.as_timespec(GPR_CLOCK_MONOTONIC));
- ChannelArgsEndpointConfig endpoint_config(channel_args);
- y_absl::Status connected = GetDefaultEventEngine()->Connect(
- ee_on_connect, ra, endpoint_config, std::move(ee_slice_allocator),
- ee_deadline);
- if (!connected.ok()) {
- // EventEngine failed to start an asynchronous connect.
- grpc_endpoint_destroy(*endpoint);
- *endpoint = nullptr;
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_connect,
- absl_status_to_grpc_error(connected));
- }
-}
-
-grpc_error_handle tcp_server_create(
- grpc_closure* shutdown_complete, const grpc_channel_args* args,
- grpc_slice_allocator_factory* slice_allocator_factory,
- grpc_tcp_server** server) {
- ChannelArgsEndpointConfig endpoint_config(args);
- auto ee_slice_allocator_factory =
- y_absl::make_unique<WrappedInternalSliceAllocatorFactory>(
- slice_allocator_factory);
- EventEngine* event_engine = GetDefaultEventEngine();
- y_absl::StatusOr<std::unique_ptr<EventEngine::Listener>> listener =
- event_engine->CreateListener(
- [server](std::unique_ptr<EventEngine::Endpoint> ee_endpoint,
- const SliceAllocator& /*slice_allocator*/) {
- grpc_core::ExecCtx exec_ctx;
- GPR_ASSERT((*server)->on_accept_internal != nullptr);
- grpc_event_engine_endpoint* iomgr_endpoint =
- grpc_tcp_server_endpoint_create(std::move(ee_endpoint));
- grpc_tcp_server_acceptor* acceptor =
- static_cast<grpc_tcp_server_acceptor*>(
- gpr_zalloc(sizeof(*acceptor)));
- acceptor->from_server = *server;
- acceptor->external_connection = false;
- (*server)->on_accept_internal((*server)->on_accept_internal_arg,
- &iomgr_endpoint->base, nullptr,
- acceptor);
- exec_ctx.Flush();
- grpc_pollset_ee_broadcast_event();
- },
- GrpcClosureToStatusCallback(shutdown_complete), endpoint_config,
- std::move(ee_slice_allocator_factory));
- if (!listener.ok()) {
- return absl_status_to_grpc_error(listener.status());
- }
- *server = new grpc_tcp_server(std::move(*listener));
- return GRPC_ERROR_NONE;
-}
-
-void tcp_server_start(grpc_tcp_server* server,
- const std::vector<grpc_pollset*>* /* pollsets */,
- grpc_tcp_server_cb on_accept_cb, void* cb_arg) {
- server->on_accept_internal = on_accept_cb;
- server->on_accept_internal_arg = cb_arg;
- // The iomgr API does not handle situations where the server cannot start, so
- // a crash may be preferable for now.
- GPR_ASSERT(server->listener->Start().ok());
-}
-
-grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
- const grpc_resolved_address* addr,
- int* out_port) {
- EventEngine::ResolvedAddress ra(reinterpret_cast<const sockaddr*>(addr->addr),
- addr->len);
- auto port = s->listener->Bind(ra);
- if (!port.ok()) {
- return absl_status_to_grpc_error(port.status());
- }
- *out_port = *port;
- return GRPC_ERROR_NONE;
-}
-
-grpc_core::TcpServerFdHandler* tcp_server_create_fd_handler(
- grpc_tcp_server* /* s */) {
- // EventEngine-iomgr does not support fds.
- return nullptr;
-}
-
-unsigned tcp_server_port_fd_count(grpc_tcp_server* /* s */,
- unsigned /* port_index */) {
- return 0;
-}
-
-int tcp_server_port_fd(grpc_tcp_server* /* s */, unsigned /* port_index */,
- unsigned /* fd_index */) {
- // Note: only used internally
- return -1;
-}
-
-grpc_tcp_server* tcp_server_ref(grpc_tcp_server* s) {
- s->refcount.Ref(DEBUG_LOCATION, "server ref");
- return s;
-}
-
-void tcp_server_shutdown_starting_add(grpc_tcp_server* s,
- grpc_closure* shutdown_starting) {
- grpc_core::MutexLock lock(&s->mu);
- grpc_closure_list_append(&s->shutdown_starting, shutdown_starting,
- GRPC_ERROR_NONE);
-}
-
-void tcp_server_unref(grpc_tcp_server* s) {
- if (GPR_UNLIKELY(s->refcount.Unref(DEBUG_LOCATION, "server unref"))) {
- delete s;
- }
-}
-
-// No-op, all are handled on listener unref
-void tcp_server_shutdown_listeners(grpc_tcp_server* /* s */) {}
-
-} // namespace
-
-grpc_tcp_client_vtable grpc_event_engine_tcp_client_vtable = {tcp_connect};
-grpc_tcp_server_vtable grpc_event_engine_tcp_server_vtable = {
- tcp_server_create, tcp_server_start,
- tcp_server_add_port, tcp_server_create_fd_handler,
- tcp_server_port_fd_count, tcp_server_port_fd,
- tcp_server_ref, tcp_server_shutdown_starting_add,
- tcp_server_unref, tcp_server_shutdown_listeners};
-
-// Methods that are expected to exist elsewhere in the codebase.
-
-struct grpc_fd {
- int fd;
-};
-
-grpc_fd* grpc_fd_create(int /* fd */, const char* /* name */,
- bool /* track_err */) {
- return nullptr;
-}
-
-grpc_endpoint* grpc_tcp_client_create_from_fd(
- grpc_fd* /* fd */, const grpc_channel_args* /* channel_args */,
- y_absl::string_view /* addr_str */,
- grpc_slice_allocator* slice_allocator /* slice_allocator */) {
- grpc_slice_allocator_destroy(slice_allocator);
- return nullptr;
-}
-
-#endif // GRPC_USE_EVENT_ENGINE
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/timer.cc b/contrib/libs/grpc/src/core/lib/iomgr/event_engine/timer.cc
deleted file mode 100644
index bf0b932211..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/event_engine/timer.cc
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2021 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-#include <grpc/support/port_platform.h>
-
-#ifdef GRPC_USE_EVENT_ENGINE
-#include <grpc/event_engine/event_engine.h>
-
-#include "src/core/lib/event_engine/event_engine_factory.h"
-#include "src/core/lib/iomgr/error.h"
-#error #include "src/core/lib/iomgr/event_engine/closure.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
-#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/surface/init.h"
-#include "src/core/lib/transport/error_utils.h"
-
-namespace {
-using ::grpc_event_engine::experimental::EventEngine;
-using ::grpc_event_engine::experimental::GetDefaultEventEngine;
-using ::grpc_event_engine::experimental::GrpcClosureToCallback;
-
-void timer_init(grpc_timer* timer, grpc_core::Timestamp deadline,
- grpc_closure* closure) {
- timer->ee_task_handle = GetDefaultEventEngine()->RunAt(
- grpc_core::ToAbslTime(deadline.as_timespec(GPR_CLOCK_REALTIME)),
- GrpcClosureToCallback(closure));
- timer->closure = closure;
-}
-
-void timer_cancel(grpc_timer* timer) {
- auto handle = timer->ee_task_handle;
- if (!GetDefaultEventEngine()->Cancel(handle)) {
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, timer->closure,
- GRPC_ERROR_CANCELLED);
- }
-}
-
-/* Internal API */
-grpc_timer_check_result timer_check(grpc_core::Timestamp* /* next */) {
- return GRPC_TIMERS_NOT_CHECKED;
-}
-void timer_list_init() {}
-void timer_list_shutdown(void) {}
-void timer_consume_kick(void) {}
-
-} // namespace
-
-grpc_timer_vtable grpc_event_engine_timer_vtable = {
- timer_init, timer_cancel, timer_check,
- timer_list_init, timer_list_shutdown, timer_consume_kick};
-
-#endif // GRPC_USE_EVENT_ENGINE
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.cc b/contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.cc
index 8bee36e5ee..5a37133ce0 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.cc
@@ -25,7 +25,6 @@
#include "src/core/lib/iomgr/combiner.h"
#include "src/core/lib/iomgr/error.h"
-#include "src/core/lib/profiling/timers.h"
static void exec_ctx_run(grpc_closure* closure) {
#ifndef NDEBUG
@@ -37,18 +36,10 @@ static void exec_ctx_run(grpc_closure* closure) {
closure->line_initiated);
}
#endif
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
grpc_error_handle error =
grpc_core::internal::StatusMoveFromHeapPtr(closure->error_data.error);
closure->error_data.error = 0;
closure->cb(closure->cb_arg, std::move(error));
-#else
- grpc_error_handle error =
- reinterpret_cast<grpc_error_handle>(closure->error_data.error);
- closure->error_data.error = 0;
- closure->cb(closure->cb_arg, error);
- GRPC_ERROR_UNREF(error);
-#endif
#ifndef NDEBUG
if (grpc_trace_closure.enabled()) {
gpr_log(GPR_DEBUG, "closure %p finished", closure);
@@ -68,7 +59,6 @@ ApplicationCallbackExecCtx::callback_exec_ctx_;
bool ExecCtx::Flush() {
bool did_something = false;
- GPR_TIMER_SCOPE("grpc_exec_ctx_flush", 0);
for (;;) {
if (!grpc_closure_list_empty(closure_list_)) {
grpc_closure* c = closure_list_.head;
@@ -87,14 +77,6 @@ bool ExecCtx::Flush() {
return did_something;
}
-Timestamp ExecCtx::Now() {
- if (!now_is_valid_) {
- now_ = Timestamp::FromTimespecRoundDown(gpr_now(GPR_CLOCK_MONOTONIC));
- now_is_valid_ = true;
- }
- return now_;
-}
-
void ExecCtx::Run(const DebugLocation& location, grpc_closure* closure,
grpc_error_handle error) {
(void)location;
@@ -118,11 +100,7 @@ void ExecCtx::Run(const DebugLocation& location, grpc_closure* closure,
closure->run = false;
GPR_ASSERT(closure->cb != nullptr);
#endif
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
closure->error_data.error = internal::StatusAllocHeapPtr(error);
-#else
- closure->error_data.error = reinterpret_cast<intptr_t>(error);
-#endif
exec_ctx_sched(closure);
}
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.h b/contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.h
index 2c9e214754..08aeb23083 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.h
@@ -176,36 +176,18 @@ class ExecCtx {
}
}
- /** Returns the stored current time relative to start if valid,
- * otherwise refreshes the stored time, sets it valid and returns the new
- * value.
- */
- Timestamp Now();
-
- /** Invalidates the stored time value. A new time value will be set on calling
- * Now().
- */
- void InvalidateNow() { now_is_valid_ = false; }
-
- /** To be used only by shutdown code in iomgr */
+ Timestamp Now() { return Timestamp::Now(); }
+ void InvalidateNow() { time_cache_.InvalidateCache(); }
void SetNowIomgrShutdown() {
- now_ = Timestamp::InfFuture();
- now_is_valid_ = true;
- }
-
- /** To be used only for testing.
- * Sets the now value.
- */
- void TestOnlySetNow(Timestamp new_val) {
- now_ = new_val;
- now_is_valid_ = true;
+ // We get to do a test only set now on this path just because iomgr
+ // is getting removed and no point adding more interfaces for it.
+ time_cache_.TestOnlySetNow(Timestamp::InfFuture());
}
+ void TestOnlySetNow(Timestamp now) { time_cache_.TestOnlySetNow(now); }
/** Gets pointer to current exec_ctx. */
static ExecCtx* Get() { return exec_ctx_; }
- static void Set(ExecCtx* exec_ctx) { exec_ctx_ = exec_ctx; }
-
static void Run(const DebugLocation& location, grpc_closure* closure,
grpc_error_handle error);
@@ -220,6 +202,7 @@ class ExecCtx {
private:
/** Set exec_ctx_ to exec_ctx. */
+ static void Set(ExecCtx* exec_ctx) { exec_ctx_ = exec_ctx; }
grpc_closure_list closure_list_ = GRPC_CLOSURE_LIST_INIT;
CombinerData combiner_data_ = {nullptr, nullptr};
@@ -227,9 +210,7 @@ class ExecCtx {
unsigned starting_cpu_ = std::numeric_limits<unsigned>::max();
- bool now_is_valid_ = false;
- Timestamp now_;
-
+ ScopedTimeCache time_cache_;
static GPR_THREAD_LOCAL(ExecCtx*) exec_ctx_;
ExecCtx* last_exec_ctx_ = Get();
};
@@ -339,12 +320,6 @@ class ApplicationCallbackExecCtx {
ctx->tail_ = functor;
}
- /** Global initialization for ApplicationCallbackExecCtx. Called by init. */
- static void GlobalInit(void) {}
-
- /** Global shutdown for ApplicationCallbackExecCtx. Called by init. */
- static void GlobalShutdown(void) {}
-
static bool Available() { return Get() != nullptr; }
private:
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/executor.cc b/contrib/libs/grpc/src/core/lib/iomgr/executor.cc
index eb23aed07f..4d968ec1de 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/executor.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/executor.cc
@@ -132,18 +132,10 @@ size_t Executor::RunClosures(const char* executor_name,
#else
EXECUTOR_TRACE("(%s) run %p", executor_name, c);
#endif
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
grpc_error_handle error =
internal::StatusMoveFromHeapPtr(c->error_data.error);
c->error_data.error = 0;
c->cb(c->cb_arg, std::move(error));
-#else
- grpc_error_handle error =
- reinterpret_cast<grpc_error_handle>(c->error_data.error);
- c->error_data.error = 0;
- c->cb(c->cb_arg, error);
- GRPC_ERROR_UNREF(error);
-#endif
c = next;
n++;
ExecCtx::Get()->Flush();
@@ -467,6 +459,4 @@ void Executor::SetThreadingDefault(bool enable) {
executors[static_cast<size_t>(ExecutorType::DEFAULT)]->SetThreading(enable);
}
-void grpc_executor_global_init() {}
-
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/executor.h b/contrib/libs/grpc/src/core/lib/iomgr/executor.h
index c205b8e234..6b5b5b8a1d 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/executor.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/executor.h
@@ -117,9 +117,6 @@ class Executor {
gpr_spinlock adding_thread_lock_;
};
-// Global initializer for executor
-void grpc_executor_global_init();
-
} // namespace grpc_core
#endif /* GRPC_CORE_LIB_IOMGR_EXECUTOR_H */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/executor/mpmcqueue.cc b/contrib/libs/grpc/src/core/lib/iomgr/executor/mpmcqueue.cc
deleted file mode 100644
index e4d9d21dc3..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/executor/mpmcqueue.cc
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- *
- * Copyright 2019 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/lib/iomgr/executor/mpmcqueue.h"
-
-namespace grpc_core {
-
-DebugOnlyTraceFlag grpc_thread_pool_trace(false, "thread_pool");
-
-inline void* InfLenFIFOQueue::PopFront() {
- // Caller should already check queue is not empty and has already held the
- // mutex. This function will assume that there is at least one element in the
- // queue (i.e. queue_head_->content is valid).
- void* result = queue_head_->content;
- count_.store(count_.load(std::memory_order_relaxed) - 1,
- std::memory_order_relaxed);
-
- // Updates Stats when trace flag turned on.
- if (GRPC_TRACE_FLAG_ENABLED(grpc_thread_pool_trace)) {
- gpr_timespec wait_time =
- gpr_time_sub(gpr_now(GPR_CLOCK_MONOTONIC), queue_head_->insert_time);
- stats_.num_completed++;
- stats_.total_queue_time = gpr_time_add(stats_.total_queue_time, wait_time);
- stats_.max_queue_time = gpr_time_max(
- gpr_convert_clock_type(stats_.max_queue_time, GPR_TIMESPAN), wait_time);
-
- if (count_.load(std::memory_order_relaxed) == 0) {
- stats_.busy_queue_time =
- gpr_time_add(stats_.busy_queue_time,
- gpr_time_sub(gpr_now(GPR_CLOCK_MONOTONIC), busy_time));
- }
-
- gpr_log(GPR_INFO,
- "[InfLenFIFOQueue PopFront] num_completed: %" PRIu64
- " total_queue_time: %f max_queue_time: %f busy_queue_time: %f",
- stats_.num_completed,
- gpr_timespec_to_micros(stats_.total_queue_time),
- gpr_timespec_to_micros(stats_.max_queue_time),
- gpr_timespec_to_micros(stats_.busy_queue_time));
- }
-
- queue_head_ = queue_head_->next;
- // Signal waiting thread
- if (count_.load(std::memory_order_relaxed) > 0) {
- TopWaiter()->cv.Signal();
- }
-
- return result;
-}
-
-InfLenFIFOQueue::Node* InfLenFIFOQueue::AllocateNodes(int num) {
- num_nodes_ = num_nodes_ + num;
- Node* new_chunk = new Node[num];
- new_chunk[0].next = &new_chunk[1];
- new_chunk[num - 1].prev = &new_chunk[num - 2];
- for (int i = 1; i < num - 1; ++i) {
- new_chunk[i].prev = &new_chunk[i - 1];
- new_chunk[i].next = &new_chunk[i + 1];
- }
- return new_chunk;
-}
-
-InfLenFIFOQueue::InfLenFIFOQueue() {
- delete_list_size_ = kDeleteListInitSize;
- delete_list_ = new Node*[delete_list_size_];
-
- Node* new_chunk = AllocateNodes(kQueueInitNumNodes);
- delete_list_[delete_list_count_++] = new_chunk;
- queue_head_ = queue_tail_ = new_chunk;
- new_chunk[0].prev = &new_chunk[kQueueInitNumNodes - 1];
- new_chunk[kQueueInitNumNodes - 1].next = &new_chunk[0];
-
- waiters_.next = &waiters_;
- waiters_.prev = &waiters_;
-}
-
-InfLenFIFOQueue::~InfLenFIFOQueue() {
- GPR_ASSERT(count_.load(std::memory_order_relaxed) == 0);
- for (size_t i = 0; i < delete_list_count_; ++i) {
- delete[] delete_list_[i];
- }
- delete[] delete_list_;
-}
-
-void InfLenFIFOQueue::Put(void* elem) {
- MutexLock l(&mu_);
-
- int curr_count = count_.load(std::memory_order_relaxed);
-
- if (queue_tail_ == queue_head_ && curr_count != 0) {
- // List is full. Expands list to double size by inserting new chunk of nodes
- Node* new_chunk = AllocateNodes(curr_count);
- delete_list_[delete_list_count_++] = new_chunk;
- // Expands delete list on full.
- if (delete_list_count_ == delete_list_size_) {
- delete_list_size_ = delete_list_size_ * 2;
- delete_list_ = new Node*[delete_list_size_];
- }
- new_chunk[0].prev = queue_tail_->prev;
- new_chunk[curr_count - 1].next = queue_head_;
- queue_tail_->prev->next = new_chunk;
- queue_head_->prev = &new_chunk[curr_count - 1];
- queue_tail_ = new_chunk;
- }
- queue_tail_->content = static_cast<void*>(elem);
-
- // Updates Stats info
- if (GRPC_TRACE_FLAG_ENABLED(grpc_thread_pool_trace)) {
- stats_.num_started++;
- gpr_log(GPR_INFO, "[InfLenFIFOQueue Put] num_started: %" PRIu64,
- stats_.num_started);
- auto current_time = gpr_now(GPR_CLOCK_MONOTONIC);
- if (curr_count == 0) {
- busy_time = current_time;
- }
- queue_tail_->insert_time = current_time;
- }
-
- count_.store(curr_count + 1, std::memory_order_relaxed);
- queue_tail_ = queue_tail_->next;
-
- TopWaiter()->cv.Signal();
-}
-
-void* InfLenFIFOQueue::Get(gpr_timespec* wait_time) {
- MutexLock l(&mu_);
-
- if (count_.load(std::memory_order_relaxed) == 0) {
- gpr_timespec start_time;
- if (GRPC_TRACE_FLAG_ENABLED(grpc_thread_pool_trace) &&
- wait_time != nullptr) {
- start_time = gpr_now(GPR_CLOCK_MONOTONIC);
- }
-
- Waiter self;
- PushWaiter(&self);
- do {
- self.cv.Wait(&mu_);
- } while (count_.load(std::memory_order_relaxed) == 0);
- RemoveWaiter(&self);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_thread_pool_trace) &&
- wait_time != nullptr) {
- *wait_time = gpr_time_sub(gpr_now(GPR_CLOCK_MONOTONIC), start_time);
- }
- }
- GPR_DEBUG_ASSERT(count_.load(std::memory_order_relaxed) > 0);
- return PopFront();
-}
-
-void InfLenFIFOQueue::PushWaiter(Waiter* waiter) {
- waiter->next = waiters_.next;
- waiter->prev = &waiters_;
- waiter->next->prev = waiter;
- waiter->prev->next = waiter;
-}
-
-void InfLenFIFOQueue::RemoveWaiter(Waiter* waiter) {
- GPR_DEBUG_ASSERT(waiter != &waiters_);
- waiter->next->prev = waiter->prev;
- waiter->prev->next = waiter->next;
-}
-
-InfLenFIFOQueue::Waiter* InfLenFIFOQueue::TopWaiter() { return waiters_.next; }
-
-} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/executor/mpmcqueue.h b/contrib/libs/grpc/src/core/lib/iomgr/executor/mpmcqueue.h
deleted file mode 100644
index f3bc346e48..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/executor/mpmcqueue.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- *
- * Copyright 2019 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef GRPC_CORE_LIB_IOMGR_EXECUTOR_MPMCQUEUE_H
-#define GRPC_CORE_LIB_IOMGR_EXECUTOR_MPMCQUEUE_H
-
-#include <grpc/support/port_platform.h>
-
-#include <atomic>
-
-#include "src/core/lib/debug/stats.h"
-#include "src/core/lib/gprpp/sync.h"
-
-namespace grpc_core {
-
-extern DebugOnlyTraceFlag grpc_thread_pool_trace;
-
-// Abstract base class of a Multiple-Producer-Multiple-Consumer(MPMC) queue
-// interface
-class MPMCQueueInterface {
- public:
- virtual ~MPMCQueueInterface() {}
-
- // Puts elem into queue immediately at the end of queue.
- // This might cause to block on full queue depending on implementation.
- virtual void Put(void* elem) = 0;
-
- // Removes the oldest element from the queue and return it.
- // This might cause to block on empty queue depending on implementation.
- // Optional argument for collecting stats purpose.
- virtual void* Get(gpr_timespec* wait_time) = 0;
-
- // Returns number of elements in the queue currently
- virtual int count() const = 0;
-};
-
-class InfLenFIFOQueue : public MPMCQueueInterface {
- public:
- // Creates a new MPMC Queue. The queue created will have infinite length.
- InfLenFIFOQueue();
-
- // Releases all resources held by the queue. The queue must be empty, and no
- // one waits on conditional variables.
- ~InfLenFIFOQueue() override;
-
- // Puts elem into queue immediately at the end of queue. Since the queue has
- // infinite length, this routine will never block and should never fail.
- void Put(void* elem) override;
-
- // Removes the oldest element from the queue and returns it.
- // This routine will cause the thread to block if queue is currently empty.
- // Argument wait_time should be passed in when trace flag turning on (for
- // collecting stats info purpose.)
- void* Get(gpr_timespec* wait_time) override;
-
- // Returns number of elements in queue currently.
- // There might be concurrently add/remove on queue, so count might change
- // quickly.
- int count() const override { return count_.load(std::memory_order_relaxed); }
-
- struct Node {
- Node* next = nullptr; // Linking
- Node* prev = nullptr;
- void* content = nullptr; // Points to actual element
- gpr_timespec insert_time; // Time for stats
- };
-
- // For test purpose only. Returns number of nodes allocated in queue.
- // Any allocated node will be alive until the destruction of the queue.
- int num_nodes() const { return num_nodes_; }
-
- // For test purpose only. Returns the initial number of nodes in queue.
- int init_num_nodes() const { return kQueueInitNumNodes; }
-
- private:
- // For Internal Use Only.
- // Removes the oldest element from the queue and returns it. This routine
- // will NOT check whether queue is empty, and it will NOT acquire mutex.
- // Caller MUST check that queue is not empty and must acquire mutex before
- // callling.
- void* PopFront();
-
- // Stats of queue. This will only be collect when debug trace mode is on.
- // All printed stats info will have time measurement in microsecond.
- struct Stats {
- uint64_t num_started; // Number of elements have been added to queue
- uint64_t num_completed; // Number of elements have been removed from
- // the queue
- gpr_timespec total_queue_time; // Total waiting time that all the
- // removed elements have spent in queue
- gpr_timespec max_queue_time; // Max waiting time among all removed
- // elements
- gpr_timespec busy_queue_time; // Accumulated amount of time that queue
- // was not empty
-
- Stats() {
- num_started = 0;
- num_completed = 0;
- total_queue_time = gpr_time_0(GPR_TIMESPAN);
- max_queue_time = gpr_time_0(GPR_TIMESPAN);
- busy_queue_time = gpr_time_0(GPR_TIMESPAN);
- }
- };
-
- // Node for waiting thread queue. Stands for one waiting thread, should have
- // exact one thread waiting on its CondVar.
- // Using a doubly linked list for waiting thread queue to wake up waiting
- // threads in LIFO order to reduce cache misses.
- struct Waiter {
- CondVar cv;
- Waiter* next;
- Waiter* prev;
- };
-
- // Pushs waiter to the front of queue, require caller held mutex
- void PushWaiter(Waiter* waiter);
-
- // Removes waiter from queue, require caller held mutex
- void RemoveWaiter(Waiter* waiter);
-
- // Returns pointer to the waiter that should be waken up next, should be the
- // last added waiter.
- Waiter* TopWaiter();
-
- Mutex mu_; // Protecting lock
- Waiter waiters_; // Head of waiting thread queue
-
- // Initial size for delete list
- static const int kDeleteListInitSize = 1024;
- // Initial number of nodes allocated
- static const int kQueueInitNumNodes = 1024;
-
- Node** delete_list_ = nullptr; // Keeps track of all allocated array entries
- // for deleting on destruction
- size_t delete_list_count_ = 0; // Number of entries in list
- size_t delete_list_size_ = 0; // Size of the list. List will be expanded to
- // double size on full
-
- Node* queue_head_ = nullptr; // Head of the queue, remove position
- Node* queue_tail_ = nullptr; // End of queue, insert position
- std::atomic<int> count_{0}; // Number of elements in queue
- int num_nodes_ = 0; // Number of nodes allocated
-
- Stats stats_; // Stats info
- gpr_timespec busy_time; // Start time of busy queue
-
- // Internal Helper.
- // Allocates an array of nodes of size "num", links all nodes together except
- // the first node's prev and last node's next. They should be set by caller
- // manually afterward.
- Node* AllocateNodes(int num);
-};
-
-} // namespace grpc_core
-
-#endif /* GRPC_CORE_LIB_IOMGR_EXECUTOR_MPMCQUEUE_H */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/executor/threadpool.cc b/contrib/libs/grpc/src/core/lib/iomgr/executor/threadpool.cc
deleted file mode 100644
index 8bd954ccd0..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/executor/threadpool.cc
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- *
- * Copyright 2019 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/lib/iomgr/executor/threadpool.h"
-
-namespace grpc_core {
-
-void ThreadPoolWorker::Run() {
- while (true) {
- void* elem;
-
- if (GRPC_TRACE_FLAG_ENABLED(grpc_thread_pool_trace)) {
- // Updates stats and print
- gpr_timespec wait_time = gpr_time_0(GPR_TIMESPAN);
- elem = queue_->Get(&wait_time);
- stats_.sleep_time = gpr_time_add(stats_.sleep_time, wait_time);
- gpr_log(GPR_INFO,
- "ThreadPool Worker [%s %d] Stats: sleep_time %f",
- thd_name_, index_, gpr_timespec_to_micros(stats_.sleep_time));
- } else {
- elem = queue_->Get(nullptr);
- }
- if (elem == nullptr) {
- break;
- }
- // Runs closure
- auto* closure = static_cast<grpc_completion_queue_functor*>(elem);
- closure->functor_run(closure, closure->internal_success);
- }
-}
-
-void ThreadPool::SharedThreadPoolConstructor() {
- // All worker threads in thread pool must be joinable.
- thread_options_.set_joinable(true);
-
- // Create at least 1 worker thread.
- if (num_threads_ <= 0) num_threads_ = 1;
-
- queue_ = new InfLenFIFOQueue();
- threads_ = static_cast<ThreadPoolWorker**>(
- gpr_zalloc(num_threads_ * sizeof(ThreadPoolWorker*)));
- for (int i = 0; i < num_threads_; ++i) {
- threads_[i] = new ThreadPoolWorker(thd_name_, queue_, thread_options_, i);
- threads_[i]->Start();
- }
-}
-
-size_t ThreadPool::DefaultStackSize() {
-#if defined(__ANDROID__) || defined(__APPLE__)
- return 1952 * 1024;
-#else
- return 64 * 1024;
-#endif
-}
-
-void ThreadPool::AssertHasNotBeenShutDown() {
- // For debug checking purpose, using RELAXED order is sufficient.
- GPR_DEBUG_ASSERT(!shut_down_.load(std::memory_order_relaxed));
-}
-
-ThreadPool::ThreadPool(int num_threads) : num_threads_(num_threads) {
- thd_name_ = "ThreadPoolWorker";
- thread_options_ = Thread::Options();
- thread_options_.set_stack_size(DefaultStackSize());
- SharedThreadPoolConstructor();
-}
-
-ThreadPool::ThreadPool(int num_threads, const char* thd_name)
- : num_threads_(num_threads), thd_name_(thd_name) {
- thread_options_ = Thread::Options();
- thread_options_.set_stack_size(DefaultStackSize());
- SharedThreadPoolConstructor();
-}
-
-ThreadPool::ThreadPool(int num_threads, const char* thd_name,
- const Thread::Options& thread_options)
- : num_threads_(num_threads),
- thd_name_(thd_name),
- thread_options_(thread_options) {
- if (thread_options_.stack_size() == 0) {
- thread_options_.set_stack_size(DefaultStackSize());
- }
- SharedThreadPoolConstructor();
-}
-
-ThreadPool::~ThreadPool() {
- // For debug checking purpose, using RELAXED order is sufficient.
- shut_down_.store(true, std::memory_order_relaxed);
-
- for (int i = 0; i < num_threads_; ++i) {
- queue_->Put(nullptr);
- }
-
- for (int i = 0; i < num_threads_; ++i) {
- threads_[i]->Join();
- }
-
- for (int i = 0; i < num_threads_; ++i) {
- delete threads_[i];
- }
- gpr_free(threads_);
- delete queue_;
-}
-
-void ThreadPool::Add(grpc_completion_queue_functor* closure) {
- AssertHasNotBeenShutDown();
- queue_->Put(static_cast<void*>(closure));
-}
-
-int ThreadPool::num_pending_closures() const { return queue_->count(); }
-
-int ThreadPool::pool_capacity() const { return num_threads_; }
-
-const Thread::Options& ThreadPool::thread_options() const {
- return thread_options_;
-}
-
-const char* ThreadPool::thread_name() const { return thd_name_; }
-} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/executor/threadpool.h b/contrib/libs/grpc/src/core/lib/iomgr/executor/threadpool.h
deleted file mode 100644
index e0e5eb07cd..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/executor/threadpool.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- *
- * Copyright 2019 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef GRPC_CORE_LIB_IOMGR_EXECUTOR_THREADPOOL_H
-#define GRPC_CORE_LIB_IOMGR_EXECUTOR_THREADPOOL_H
-
-#include <grpc/support/port_platform.h>
-
-#include <grpc/grpc.h>
-
-#include "src/core/lib/gprpp/thd.h"
-#include "src/core/lib/iomgr/executor/mpmcqueue.h"
-
-namespace grpc_core {
-
-// A base abstract base class for threadpool.
-// Threadpool is an executor that maintains a pool of threads sitting around
-// and waiting for closures. A threadpool also maintains a queue of pending
-// closures, when closures appearing in the queue, the threads in pool will
-// pull them out and execute them.
-class ThreadPoolInterface {
- public:
- // Waits for all pending closures to complete, then shuts down thread pool.
- virtual ~ThreadPoolInterface() {}
-
- // Schedules a given closure for execution later.
- // Depending on specific subclass implementation, this routine might cause
- // current thread to be blocked (in case of unable to schedule).
- // Closure should contain a function pointer and arguments it will take, more
- // details for closure struct at /grpc/include/grpc/impl/codegen/grpc_types.h
- virtual void Add(grpc_completion_queue_functor* closure) = 0;
-
- // Returns the current number of pending closures
- virtual int num_pending_closures() const = 0;
-
- // Returns the capacity of pool (number of worker threads in pool)
- virtual int pool_capacity() const = 0;
-
- // Thread option accessor
- virtual const Thread::Options& thread_options() const = 0;
-
- // Returns the thread name for threads in this ThreadPool.
- virtual const char* thread_name() const = 0;
-};
-
-// Worker thread for threadpool. Executes closures in the queue, until getting a
-// NULL closure.
-class ThreadPoolWorker {
- public:
- ThreadPoolWorker(const char* thd_name, MPMCQueueInterface* queue,
- Thread::Options& options, int index)
- : queue_(queue), thd_name_(thd_name), index_(index) {
- thd_ = Thread(
- thd_name, [](void* th) { static_cast<ThreadPoolWorker*>(th)->Run(); },
- this, nullptr, options);
- }
-
- ~ThreadPoolWorker() {}
-
- void Start() { thd_.Start(); }
- void Join() { thd_.Join(); }
-
- private:
- // struct for tracking stats of thread
- struct Stats {
- gpr_timespec sleep_time;
- Stats() { sleep_time = gpr_time_0(GPR_TIMESPAN); }
- };
-
- void Run(); // Pulls closures from queue and executes them
-
- MPMCQueueInterface* queue_; // Queue in thread pool to pull closures from
- Thread thd_; // Thread wrapped in
- Stats stats_; // Stats to be collected in run time
- const char* thd_name_; // Name of thread
- int index_; // Index in thread pool
-};
-
-// A fixed size thread pool implementation of abstract thread pool interface.
-// In this implementation, the number of threads in pool is fixed, but the
-// capacity of closure queue is unlimited.
-class ThreadPool : public ThreadPoolInterface {
- public:
- // Creates a thread pool with size of "num_threads", with default thread name
- // "ThreadPoolWorker" and all thread options set to default. If the given size
- // is 0 or less, there will be 1 worker thread created inside pool.
- explicit ThreadPool(int num_threads);
-
- // Same as ThreadPool(int num_threads) constructor, except
- // that it also sets "thd_name" as the name of all threads in the thread pool.
- ThreadPool(int num_threads, const char* thd_name);
-
- // Same as ThreadPool(const char *thd_name, int num_threads) constructor,
- // except that is also set thread_options for threads.
- // Notes for stack size:
- // If the stack size field of the passed in Thread::Options is set to default
- // value 0, default ThreadPool stack size will be used. The current default
- // stack size of this implementation is 1952K for mobile platform and 64K for
- // all others.
- ThreadPool(int num_threads, const char* thd_name,
- const Thread::Options& thread_options);
-
- // Waits for all pending closures to complete, then shuts down thread pool.
- ~ThreadPool() override;
-
- // Adds given closure into pending queue immediately. Since closure queue has
- // infinite length, this routine will not block.
- void Add(grpc_completion_queue_functor* closure) override;
-
- int num_pending_closures() const override;
- int pool_capacity() const override;
- const Thread::Options& thread_options() const override;
- const char* thread_name() const override;
-
- private:
- int num_threads_ = 0;
- const char* thd_name_ = nullptr;
- Thread::Options thread_options_;
- ThreadPoolWorker** threads_ = nullptr; // Array of worker threads
- MPMCQueueInterface* queue_ = nullptr; // Closure queue
-
- std::atomic<bool> shut_down_{
- false}; // Destructor has been called if set to true
-
- void SharedThreadPoolConstructor();
- // For ThreadPool, default stack size for mobile platform is 1952K. for other
- // platforms is 64K.
- size_t DefaultStackSize();
- // Internal Use Only for debug checking.
- void AssertHasNotBeenShutDown();
-};
-
-} // namespace grpc_core
-
-#endif /* GRPC_CORE_LIB_IOMGR_EXECUTOR_THREADPOOL_H */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/fork_posix.cc b/contrib/libs/grpc/src/core/lib/iomgr/fork_posix.cc
index 005bbb0f24..db5c34490f 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/fork_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/fork_posix.cc
@@ -67,13 +67,13 @@ void grpc_prefork() {
if (poll_strategy_name == nullptr ||
(strcmp(poll_strategy_name, "epoll1") != 0 &&
strcmp(poll_strategy_name, "poll") != 0)) {
- gpr_log(GPR_ERROR,
+ gpr_log(GPR_INFO,
"Fork support is only compatible with the epoll1 and poll polling "
"strategies");
return;
}
if (!grpc_core::Fork::BlockExecCtx()) {
- gpr_log(GPR_ERROR,
+ gpr_log(GPR_INFO,
"Other threads are currently calling into gRPC, skipping fork() "
"handlers");
return;
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/internal_errqueue.cc b/contrib/libs/grpc/src/core/lib/iomgr/internal_errqueue.cc
index ac644b2f43..5dcff1a0fd 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/internal_errqueue.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/internal_errqueue.cc
@@ -1,20 +1,16 @@
-/*
- *
- * Copyright 2018 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
+// Copyright 2018 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
#include <grpc/support/port_platform.h>
@@ -32,37 +28,32 @@
#include <sys/utsname.h>
namespace grpc_core {
-static bool errqueue_supported = false;
-bool kernel_supports_errqueue() { return errqueue_supported; }
-
-void grpc_errqueue_init() {
-/* Both-compile time and run-time linux kernel versions should be at least 4.0.0
- */
+bool KernelSupportsErrqueue() {
+ static const bool errqueue_supported = []() {
#ifdef GRPC_LINUX_ERRQUEUE
- struct utsname buffer;
- if (uname(&buffer) != 0) {
- gpr_log(GPR_ERROR, "uname: %s", strerror(errno));
- return;
- }
- char* release = buffer.release;
- if (release == nullptr) {
- return;
- }
-
- if (strtol(release, nullptr, 10) >= 4) {
- errqueue_supported = true;
- } else {
- gpr_log(GPR_DEBUG, "ERRQUEUE support not enabled");
- }
-#endif /* GRPC_LINUX_ERRQUEUE */
+ // Both-compile time and run-time linux kernel versions should be at
+ // least 4.0.0
+ struct utsname buffer;
+ if (uname(&buffer) != 0) {
+ gpr_log(GPR_ERROR, "uname: %s", strerror(errno));
+ return false;
+ }
+ char* release = buffer.release;
+ if (release == nullptr) {
+ return false;
+ }
+
+ if (strtol(release, nullptr, 10) >= 4) {
+ return true;
+ } else {
+ gpr_log(GPR_DEBUG, "ERRQUEUE support not enabled");
+ }
+#endif // GRPC_LINUX_ERRQUEUE
+ return false;
+ }();
+ return errqueue_supported;
}
-} /* namespace grpc_core */
-
-#else
-
-namespace grpc_core {
-void grpc_errqueue_init() {}
-} /* namespace grpc_core */
+} // namespace grpc_core
-#endif /* GRPC_POSIX_SOCKET_TCP */
+#endif // GRPC_POSIX_SOCKET_TCP
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/internal_errqueue.h b/contrib/libs/grpc/src/core/lib/iomgr/internal_errqueue.h
index b9fe411769..5a3fe05ff5 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/internal_errqueue.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/internal_errqueue.h
@@ -177,15 +177,10 @@ struct tcp_info {
/* Returns true if kernel is capable of supporting errqueue and timestamping.
* Currently allowing only linux kernels above 4.0.0
*/
-bool kernel_supports_errqueue();
+bool KernelSupportsErrqueue();
} /* namespace grpc_core */
#endif /* GRPC_POSIX_SOCKET_TCP */
-namespace grpc_core {
-/* Initializes errqueue support */
-void grpc_errqueue_init();
-} /* namespace grpc_core */
-
#endif /* GRPC_CORE_LIB_IOMGR_INTERNAL_ERRQUEUE_H */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/iocp_windows.cc b/contrib/libs/grpc/src/core/lib/iomgr/iocp_windows.cc
index b5c34907f4..13a2e9acb6 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/iocp_windows.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/iocp_windows.cc
@@ -48,7 +48,7 @@ static DWORD deadline_to_millis_timeout(grpc_core::Timestamp deadline) {
if (deadline == grpc_core::Timestamp::InfFuture()) {
return INFINITE;
}
- grpc_core::Timestamp now = grpc_core::ExecCtx::Get()->Now();
+ grpc_core::Timestamp now = grpc_core::Timestamp::Now();
if (deadline < now) return 0;
grpc_core::Duration timeout = deadline - now;
if (timeout.millis() > std::numeric_limits<DWORD>::max()) return INFINITE;
@@ -63,7 +63,6 @@ grpc_iocp_work_status grpc_iocp_work(grpc_core::Timestamp deadline) {
LPOVERLAPPED overlapped;
grpc_winsocket* socket;
grpc_winsocket_callback_info* info;
- GRPC_STATS_INC_SYSCALL_POLL();
success =
GetQueuedCompletionStatus(g_iocp, &bytes, &completion_key, &overlapped,
deadline_to_millis_timeout(deadline));
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/iomgr.cc b/contrib/libs/grpc/src/core/lib/iomgr/iomgr.cc
index 8bfcebf999..dfbc26faf8 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/iomgr.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/iomgr.cc
@@ -64,7 +64,6 @@ void grpc_iomgr_init() {
g_root_object.name = const_cast<char*>("root");
grpc_iomgr_platform_init();
grpc_timer_list_init();
- grpc_core::grpc_errqueue_init();
g_grpc_abort_on_leaks = GPR_GLOBAL_CONFIG_GET(grpc_abort_on_leaks);
}
@@ -79,7 +78,12 @@ static size_t count_objects(void) {
return n;
}
-size_t grpc_iomgr_count_objects_for_testing(void) { return count_objects(); }
+size_t grpc_iomgr_count_objects_for_testing(void) {
+ gpr_mu_lock(&g_mu);
+ size_t ret = count_objects();
+ gpr_mu_unlock(&g_mu);
+ return ret;
+}
static void dump_objects(const char* kind) {
grpc_iomgr_object* obj;
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/iomgr_fwd.h b/contrib/libs/grpc/src/core/lib/iomgr/iomgr_fwd.h
new file mode 100644
index 0000000000..41b228d8da
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/iomgr/iomgr_fwd.h
@@ -0,0 +1,26 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_IOMGR_IOMGR_FWD_H
+#define GRPC_CORE_LIB_IOMGR_IOMGR_FWD_H
+
+// A bunch of forward declarations that are useful to higher level things that
+// don't want to depend on all of iomgr.
+
+#include <grpc/support/port_platform.h>
+
+typedef struct grpc_pollset_set grpc_pollset_set;
+typedef struct grpc_pollset grpc_pollset;
+
+#endif // GRPC_CORE_LIB_IOMGR_IOMGR_FWD_H
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix.cc b/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix.cc
index 437d032750..0a862ccad6 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix.cc
@@ -80,6 +80,7 @@ void grpc_set_default_iomgr_platform() {
grpc_set_pollset_vtable(&grpc_posix_pollset_vtable);
grpc_set_pollset_set_vtable(&grpc_posix_pollset_set_vtable);
grpc_core::SetDNSResolver(grpc_core::NativeDNSResolver::GetOrCreate());
+ grpc_tcp_client_global_init();
grpc_set_iomgr_platform_vtable(&vtable);
}
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix_cfstream.cc b/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix_cfstream.cc
index 74cd19cc25..90677e516a 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix_cfstream.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/iomgr_posix_cfstream.cc
@@ -177,6 +177,7 @@ void grpc_set_default_iomgr_platform() {
grpc_set_pollset_set_vtable(&grpc_apple_pollset_set_vtable);
grpc_set_iomgr_platform_vtable(&apple_vtable);
}
+ grpc_tcp_client_global_init();
grpc_set_timer_impl(&grpc_generic_timer_vtable);
grpc_core::SetDNSResolver(grpc_core::NativeDNSResolver::GetOrCreate());
}
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/is_epollexclusive_available.cc b/contrib/libs/grpc/src/core/lib/iomgr/is_epollexclusive_available.cc
deleted file mode 100644
index 80cac4a5af..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/is_epollexclusive_available.cc
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- *
- * Copyright 2017 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/lib/iomgr/is_epollexclusive_available.h"
-
-#include "src/core/lib/iomgr/port.h"
-
-#ifdef GRPC_LINUX_EPOLL_CREATE1
-
-#include <errno.h>
-#include <sys/epoll.h>
-#include <sys/eventfd.h>
-#include <unistd.h>
-
-#include <grpc/support/log.h>
-
-#include "src/core/lib/iomgr/sys_epoll_wrapper.h"
-
-/* This polling engine is only relevant on linux kernels supporting epoll() */
-bool grpc_is_epollexclusive_available(void) {
- static bool logged_why_not = false;
-
- int fd = epoll_create1(EPOLL_CLOEXEC);
- if (fd < 0) {
- if (!logged_why_not) {
- gpr_log(GPR_DEBUG,
- "epoll_create1 failed with error: %d. Not using epollex polling "
- "engine.",
- fd);
- logged_why_not = true;
- }
- return false;
- }
- int evfd = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
- if (evfd < 0) {
- if (!logged_why_not) {
- gpr_log(GPR_DEBUG,
- "eventfd failed with error: %d. Not using epollex polling "
- "engine.",
- fd);
- logged_why_not = true;
- }
- close(fd);
- return false;
- }
- struct epoll_event ev;
- /* choose events that should cause an error on
- EPOLLEXCLUSIVE enabled kernels - specifically the combination of
- EPOLLONESHOT and EPOLLEXCLUSIVE */
- ev.events =
- static_cast<uint32_t>(EPOLLET | EPOLLIN | EPOLLEXCLUSIVE | EPOLLONESHOT);
- ev.data.ptr = nullptr;
- if (epoll_ctl(fd, EPOLL_CTL_ADD, evfd, &ev) != 0) {
- if (errno != EINVAL) {
- if (!logged_why_not) {
- gpr_log(
- GPR_ERROR,
- "epoll_ctl with EPOLLEXCLUSIVE | EPOLLONESHOT failed with error: "
- "%d. Not using epollex polling engine.",
- errno);
- logged_why_not = true;
- }
- close(fd);
- close(evfd);
- return false;
- }
- } else {
- if (!logged_why_not) {
- gpr_log(GPR_DEBUG,
- "epoll_ctl with EPOLLEXCLUSIVE | EPOLLONESHOT succeeded. This is "
- "evidence of no EPOLLEXCLUSIVE support. Not using "
- "epollex polling engine.");
- logged_why_not = true;
- }
- close(fd);
- close(evfd);
- return false;
- }
- // Check that EPOLLEXCLUSIVE is supported at all.
- ev.events = static_cast<uint32_t>(EPOLLET | EPOLLIN | EPOLLEXCLUSIVE);
- if (epoll_ctl(fd, EPOLL_CTL_ADD, evfd, &ev) != 0) {
- if (!logged_why_not) {
- gpr_log(GPR_DEBUG,
- "epoll_ctl with EPOLLEXCLUSIVE failed with error: "
- "%d. Not using epollex polling engine.",
- errno);
- logged_why_not = true;
- }
- close(fd);
- close(evfd);
- return false;
- }
- close(evfd);
- close(fd);
- return true;
-}
-
-#else
-
-bool grpc_is_epollexclusive_available(void) { return false; }
-
-#endif
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/load_file.cc b/contrib/libs/grpc/src/core/lib/iomgr/load_file.cc
index 9068670118..ab4eab463d 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/load_file.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/load_file.cc
@@ -66,7 +66,7 @@ grpc_error_handle grpc_load_file(const char* filename, int add_null_terminator,
end:
*output = result;
if (file != nullptr) fclose(file);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
grpc_error_handle error_out =
grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Failed to load file", &error, 1),
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/lockfree_event.cc b/contrib/libs/grpc/src/core/lib/iomgr/lockfree_event.cc
index d41e502984..b25a90b049 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/lockfree_event.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/lockfree_event.cc
@@ -77,11 +77,7 @@ void LockfreeEvent::DestroyEvent() {
do {
curr = gpr_atm_no_barrier_load(&state_);
if (curr & kShutdownBit) {
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
internal::StatusFreeHeapPtr(curr & ~kShutdownBit);
-#else
- GRPC_ERROR_UNREF((grpc_error_handle)(curr & ~kShutdownBit));
-#endif
} else {
GPR_ASSERT(curr == kClosureNotReady || curr == kClosureReady);
}
@@ -143,13 +139,8 @@ void LockfreeEvent::NotifyOn(grpc_closure* closure) {
contains a pointer to the shutdown-error). If the fd is shutdown,
schedule the closure with the shutdown error */
if ((curr & kShutdownBit) > 0) {
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
grpc_error_handle shutdown_err =
internal::StatusGetFromHeapPtr(curr & ~kShutdownBit);
-#else
- grpc_error_handle shutdown_err =
- reinterpret_cast<grpc_error_handle>(curr & ~kShutdownBit);
-#endif
ExecCtx::Run(DEBUG_LOCATION, closure,
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"FD Shutdown", &shutdown_err, 1));
@@ -169,12 +160,8 @@ void LockfreeEvent::NotifyOn(grpc_closure* closure) {
}
bool LockfreeEvent::SetShutdown(grpc_error_handle shutdown_error) {
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
intptr_t status_ptr = internal::StatusAllocHeapPtr(shutdown_error);
gpr_atm new_state = status_ptr | kShutdownBit;
-#else
- gpr_atm new_state = reinterpret_cast<gpr_atm>(shutdown_error) | kShutdownBit;
-#endif
while (true) {
gpr_atm curr = gpr_atm_no_barrier_load(&state_);
@@ -198,11 +185,7 @@ bool LockfreeEvent::SetShutdown(grpc_error_handle shutdown_error) {
/* If fd is already shutdown, we are done */
if ((curr & kShutdownBit) > 0) {
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
internal::StatusFreeHeapPtr(status_ptr);
-#else
- GRPC_ERROR_UNREF(shutdown_error);
-#endif
return false;
}
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/pollset.h b/contrib/libs/grpc/src/core/lib/iomgr/pollset.h
index b1f1138f8e..8d58847aed 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/pollset.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/pollset.h
@@ -25,6 +25,7 @@
#include <grpc/support/time.h>
#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
extern grpc_core::DebugOnlyTraceFlag grpc_trace_fd_refcount;
@@ -35,7 +36,6 @@ extern grpc_core::DebugOnlyTraceFlag grpc_trace_fd_refcount;
- a completion queue might keep a pollset with an entry for each transport
that is servicing a call that it's tracking */
-typedef struct grpc_pollset grpc_pollset;
typedef struct grpc_pollset_worker grpc_pollset_worker;
typedef struct grpc_pollset_vtable {
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/pollset_set.h b/contrib/libs/grpc/src/core/lib/iomgr/pollset_set.h
index d3355b8ff8..abc1189f24 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/pollset_set.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/pollset_set.h
@@ -21,15 +21,13 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/iomgr/pollset.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
/* A grpc_pollset_set is a set of pollsets that are interested in an
action. Adding a pollset to a pollset_set automatically adds any
fd's (etc) that have been registered with the set_set to that pollset.
Registering fd's automatically adds them to all current pollsets. */
-typedef struct grpc_pollset_set grpc_pollset_set;
-
typedef struct grpc_pollset_set_vtable {
grpc_pollset_set* (*create)(void);
void (*destroy)(grpc_pollset_set* pollset_set);
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/port.h b/contrib/libs/grpc/src/core/lib/iomgr/port.h
index e2ecbd8c2b..65015b6ba5 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/port.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/port.h
@@ -20,14 +20,15 @@
#include <grpc/support/port_platform.h>
+// IWYU pragma: no_include <features.h>
+// IWYU pragma: no_include <linux/version.h>
+
/* This needs to be separate from the other conditions because it needs to
* apply to custom sockets too */
#ifdef GPR_WINDOWS
#define GRPC_ARES_RESOLVE_LOCALHOST_MANUALLY 1
#endif
-#if defined(GRPC_USE_EVENT_ENGINE)
-// Do Nothing
-#elif defined(GPR_WINDOWS)
+#if defined(GPR_WINDOWS)
#define GRPC_WINSOCK_SOCKET 1
#define GRPC_WINDOWS_SOCKETUTILS 1
#define GRPC_WINDOWS_SOCKET_ARES_EV_DRIVER 1
@@ -107,7 +108,6 @@
#define GRPC_POSIX_SOCKET_ARES_EV_DRIVER 1
#define GRPC_POSIX_SOCKET_EV 1
#define GRPC_POSIX_SOCKET_EV_EPOLL1 1
-#define GRPC_POSIX_SOCKET_EV_EPOLLEX 1
#define GRPC_POSIX_SOCKET_EV_POLL 1
#define GRPC_POSIX_SOCKET_IF_NAMETOINDEX 1
#define GRPC_POSIX_SOCKET_RESOLVE_ADDRESS 1
@@ -156,6 +156,17 @@
#define GRPC_POSIX_SOCKET 1
#define GRPC_POSIX_SOCKETUTILS 1
#define GRPC_POSIX_WAKEUP_FD 1
+#elif defined(GPR_NETBSD)
+#define GRPC_HAVE_ARPA_NAMESER 1
+#define GRPC_HAVE_IFADDRS 1
+#define GRPC_HAVE_IPV6_RECVPKTINFO 1
+#define GRPC_HAVE_SO_NOSIGPIPE 1
+#define GRPC_HAVE_UNIX_SOCKET 1
+#define GRPC_POSIX_FORK 1
+#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
+#define GRPC_POSIX_SOCKET 1
+#define GRPC_POSIX_SOCKETUTILS 1
+#define GRPC_POSIX_WAKEUP_FD 1
#elif defined(GPR_NACL)
#define GRPC_HAVE_ARPA_NAMESER 1
#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
@@ -178,21 +189,30 @@
// TODO(rudominer) Check this does something we want.
#define GRPC_POSIX_SOCKETUTILS 1
#define GRPC_TIMER_USE_GENERIC 1
+#elif defined(GPR_HAIKU)
+#define GRPC_HAVE_ARPA_NAMESER 1
+#define GRPC_HAVE_IFADDRS 1
+#define GRPC_HAVE_IPV6_RECVPKTINFO 1
+#define GRPC_HAVE_UNIX_SOCKET 1
+#define GRPC_POSIX_FORK 1
+#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
+#define GRPC_POSIX_SOCKET 1
+#define GRPC_POSIX_SOCKETUTILS 1
+#define GRPC_POSIX_WAKEUP_FD 1
#elif !defined(GPR_NO_AUTODETECT_PLATFORM)
#error "Platform not recognized"
#endif
-#if defined(GRPC_POSIX_SOCKET) + defined(GRPC_WINSOCK_SOCKET) + \
- defined(GRPC_CFSTREAM) + defined(GRPC_USE_EVENT_ENGINE) != \
+#if defined(GRPC_POSIX_SOCKET) + defined(GRPC_WINSOCK_SOCKET) + \
+ defined(GRPC_CFSTREAM) != \
1
#error \
- "Must define exactly one of GRPC_POSIX_SOCKET, GRPC_WINSOCK_SOCKET, GRPC_CFSTREAM, GRPC_USE_EVENT_ENGINE"
+ "Must define exactly one of GRPC_POSIX_SOCKET, GRPC_WINSOCK_SOCKET, GRPC_CFSTREAM"
#endif
#ifdef GRPC_POSIX_SOCKET
#define GRPC_POSIX_SOCKET_ARES_EV_DRIVER 1
#define GRPC_POSIX_SOCKET_EV 1
-#define GRPC_POSIX_SOCKET_EV_EPOLLEX 1
#define GRPC_POSIX_SOCKET_EV_POLL 1
#define GRPC_POSIX_SOCKET_EV_EPOLL1 1
#define GRPC_POSIX_SOCKET_IF_NAMETOINDEX 1
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/resolve_address.cc b/contrib/libs/grpc/src/core/lib/iomgr/resolve_address.cc
index 3dfe1bf548..66d70e78c3 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/resolve_address.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/resolve_address.cc
@@ -19,6 +19,8 @@
#include "src/core/lib/iomgr/resolve_address.h"
+#include "y_absl/strings/str_cat.h"
+
#include <grpc/event_engine/event_engine.h>
#include <grpc/support/alloc.h>
@@ -29,8 +31,14 @@ namespace {
DNSResolver* g_dns_resolver;
}
+constexpr DNSResolver::TaskHandle DNSResolver::kNullHandle;
+
void SetDNSResolver(DNSResolver* resolver) { g_dns_resolver = resolver; }
DNSResolver* GetDNSResolver() { return g_dns_resolver; }
+TString DNSResolver::HandleToString(TaskHandle handle) {
+ return y_absl::StrCat("{", handle.keys[0], ",", handle.keys[1], "}");
+}
+
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/resolve_address.h b/contrib/libs/grpc/src/core/lib/iomgr/resolve_address.h
index 6bf5e37876..86ff4a3002 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/resolve_address.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/resolve_address.h
@@ -25,7 +25,10 @@
#include "y_absl/status/statusor.h"
+#include <grpc/event_engine/event_engine.h>
+
#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/iomgr/pollset_set.h"
#include "src/core/lib/iomgr/port.h"
#include "src/core/lib/iomgr/resolved_address.h"
@@ -35,41 +38,69 @@
namespace grpc_core {
extern const char* kDefaultSecurePort;
constexpr int kDefaultSecurePortInt = 443;
+constexpr Duration kDefaultDNSRequestTimeout = Duration::Minutes(2);
// A singleton class used for async and blocking DNS resolution
class DNSResolver {
public:
- // Tracks a single asynchronous DNS resolution attempt. The DNS
- // resolution should be arranged to be cancelled as soon as possible
- // when Orphan is called.
- class Request : public InternallyRefCounted<Request> {
- public:
- // Begins async DNS resolution
- virtual void Start() = 0;
- };
+ using TaskHandle = ::grpc_event_engine::experimental::EventEngine::
+ DNSResolver::LookupTaskHandle;
+ static constexpr TaskHandle kNullHandle{0, 0};
virtual ~DNSResolver() {}
+ static TString HandleToString(TaskHandle handle);
+
// Asynchronously resolve name. Use \a default_port if a port isn't designated
// in \a name, otherwise use the port in \a name. On completion, \a on_done is
// invoked with the result.
//
// Note for implementations: calls may acquire locks in \a on_done which
- // were previously held while calling Request::Start(). Therefore,
- // implementations must not invoke \a on_done inline from the call to
- // Request::Start(). The DNSCallbackExecCtxScheduler utility may help address
- // this.
- virtual OrphanablePtr<Request> ResolveName(
- y_absl::string_view name, y_absl::string_view default_port,
- grpc_pollset_set* interested_parties,
+ // were previously held while starting the request. Therefore,
+ // implementations must not invoke \a on_done inline from the call site that
+ // starts the request. The DNSCallbackExecCtxScheduler utility may help
+ // address this.
+ //
+ // \a interested_parties may be deleted after a request is cancelled.
+ virtual TaskHandle LookupHostname(
std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
- on_done) GRPC_MUST_USE_RESULT = 0;
+ on_resolved,
+ y_absl::string_view name, y_absl::string_view default_port, Duration timeout,
+ grpc_pollset_set* interested_parties, y_absl::string_view name_server) = 0;
// Resolve name in a blocking fashion. Use \a default_port if a port isn't
// designated in \a name, otherwise use the port in \a name.
virtual y_absl::StatusOr<std::vector<grpc_resolved_address>>
- ResolveNameBlocking(y_absl::string_view name,
- y_absl::string_view default_port) = 0;
+ LookupHostnameBlocking(y_absl::string_view name,
+ y_absl::string_view default_port) = 0;
+
+ // Asynchronously resolve an SRV Record to Hostnames.
+ // On completion, \a on_done is invoked with the result.
+ //
+ // The same caveats in \a LookupHostname apply here as well.
+ //
+ // TODO(hork): return std::vector<SRVRecord> and ask the client to do the
+ // subsequent hostname lookups.
+ virtual TaskHandle LookupSRV(
+ std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
+ on_resolved,
+ y_absl::string_view name, Duration timeout,
+ grpc_pollset_set* interested_parties, y_absl::string_view name_server) = 0;
+
+ // Asynchronously resolve a TXT Record. On completion, \a on_done is invoked
+ // with the resulting string.
+ //
+ // The same caveats in \a LookupHostname apply here.
+ virtual TaskHandle LookupTXT(
+ std::function<void(y_absl::StatusOr<TString>)> on_resolved,
+ y_absl::string_view name, Duration timeout,
+ grpc_pollset_set* interested_parties, y_absl::string_view name_server) = 0;
+
+ // This shares the same semantics with \a EventEngine::Cancel: successfully
+ // cancelled lookups will not have their callbacks executed, and this
+ // method returns true. If a TaskHandle is unknown, this method should return
+ // false.
+ virtual bool Cancel(TaskHandle handle) = 0;
};
// Override the active DNS resolver which should be used for all DNS
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_posix.cc b/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_posix.cc
index 68d3ce3bee..09911cf14f 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_posix.cc
@@ -29,11 +29,13 @@
#include <grpc/support/string_util.h>
#include <grpc/support/time.h>
+#include "src/core/lib/event_engine/default_event_engine.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/host_port.h"
#include "src/core/lib/gprpp/thd.h"
#include "src/core/lib/iomgr/block_annotate.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/executor.h"
#include "src/core/lib/iomgr/iomgr_internal.h"
#include "src/core/lib/iomgr/resolve_address.h"
@@ -45,7 +47,9 @@
namespace grpc_core {
namespace {
-class NativeDNSRequest : public DNSResolver::Request {
+using ::grpc_event_engine::experimental::GetDefaultEventEngine;
+
+class NativeDNSRequest {
public:
NativeDNSRequest(
y_absl::string_view name, y_absl::string_view default_port,
@@ -53,28 +57,19 @@ class NativeDNSRequest : public DNSResolver::Request {
on_done)
: name_(name), default_port_(default_port), on_done_(std::move(on_done)) {
GRPC_CLOSURE_INIT(&request_closure_, DoRequestThread, this, nullptr);
- }
-
- // Starts the resolution
- void Start() override {
- Ref().release(); // ref held by callback
Executor::Run(&request_closure_, GRPC_ERROR_NONE, ExecutorType::RESOLVER);
}
- // This is a no-op for the native resolver. Note
- // that no I/O polling is required for the resolution to finish.
- void Orphan() override { Unref(); }
-
private:
// Callback to be passed to grpc Executor to asynch-ify
- // ResolveNameBlocking
+ // LookupHostnameBlocking
static void DoRequestThread(void* rp, grpc_error_handle /*error*/) {
NativeDNSRequest* r = static_cast<NativeDNSRequest*>(rp);
auto result =
- GetDNSResolver()->ResolveNameBlocking(r->name_, r->default_port_);
+ GetDNSResolver()->LookupHostnameBlocking(r->name_, r->default_port_);
// running inline is safe since we've already been scheduled on the executor
r->on_done_(std::move(result));
- r->Unref();
+ delete r;
}
const TString name_;
@@ -91,18 +86,20 @@ NativeDNSResolver* NativeDNSResolver::GetOrCreate() {
return instance;
}
-OrphanablePtr<DNSResolver::Request> NativeDNSResolver::ResolveName(
- y_absl::string_view name, y_absl::string_view default_port,
- grpc_pollset_set* /* interested_parties */,
+DNSResolver::TaskHandle NativeDNSResolver::LookupHostname(
std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
- on_done) {
- return MakeOrphanable<NativeDNSRequest>(name, default_port,
- std::move(on_done));
+ on_done,
+ y_absl::string_view name, y_absl::string_view default_port,
+ Duration /* timeout */, grpc_pollset_set* /* interested_parties */,
+ y_absl::string_view /* name_server */) {
+ // self-deleting class
+ new NativeDNSRequest(name, default_port, std::move(on_done));
+ return kNullHandle;
}
y_absl::StatusOr<std::vector<grpc_resolved_address>>
-NativeDNSResolver::ResolveNameBlocking(y_absl::string_view name,
- y_absl::string_view default_port) {
+NativeDNSResolver::LookupHostnameBlocking(y_absl::string_view name,
+ y_absl::string_view default_port) {
ExecCtx exec_ctx;
struct addrinfo hints;
struct addrinfo *result = nullptr, *resp;
@@ -173,7 +170,7 @@ done:
if (result) {
freeaddrinfo(result);
}
- if (err == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(err)) {
return addresses;
}
auto error_result = grpc_error_to_absl_status(err);
@@ -181,6 +178,38 @@ done:
return error_result;
}
+DNSResolver::TaskHandle NativeDNSResolver::LookupSRV(
+ std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
+ on_resolved,
+ y_absl::string_view /* name */, Duration /* timeout */,
+ grpc_pollset_set* /* interested_parties */,
+ y_absl::string_view /* name_server */) {
+ GetDefaultEventEngine()->Run([on_resolved] {
+ ApplicationCallbackExecCtx app_exec_ctx;
+ ExecCtx exec_ctx;
+ on_resolved(y_absl::UnimplementedError(
+ "The Native resolver does not support looking up SRV records"));
+ });
+ return {-1, -1};
+};
+
+DNSResolver::TaskHandle NativeDNSResolver::LookupTXT(
+ std::function<void(y_absl::StatusOr<TString>)> on_resolved,
+ y_absl::string_view /* name */, Duration /* timeout */,
+ grpc_pollset_set* /* interested_parties */,
+ y_absl::string_view /* name_server */) {
+ // Not supported
+ GetDefaultEventEngine()->Run([on_resolved] {
+ ApplicationCallbackExecCtx app_exec_ctx;
+ ExecCtx exec_ctx;
+ on_resolved(y_absl::UnimplementedError(
+ "The Native resolver does not support looking up TXT records"));
+ });
+ return {-1, -1};
+};
+
+bool NativeDNSResolver::Cancel(TaskHandle /*handle*/) { return false; }
+
} // namespace grpc_core
#endif
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_posix.h b/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_posix.h
index feb7bc92b0..cdd9876cdf 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_posix.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_posix.h
@@ -32,14 +32,31 @@ class NativeDNSResolver : public DNSResolver {
// Gets the singleton instance, creating it first if it doesn't exist
static NativeDNSResolver* GetOrCreate();
- OrphanablePtr<DNSResolver::Request> ResolveName(
- y_absl::string_view name, y_absl::string_view default_port,
- grpc_pollset_set* interested_parties,
+ TaskHandle LookupHostname(
std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
- on_done) override;
+ on_done,
+ y_absl::string_view name, y_absl::string_view default_port, Duration timeout,
+ grpc_pollset_set* interested_parties,
+ y_absl::string_view name_server) override;
- y_absl::StatusOr<std::vector<grpc_resolved_address>> ResolveNameBlocking(
+ y_absl::StatusOr<std::vector<grpc_resolved_address>> LookupHostnameBlocking(
y_absl::string_view name, y_absl::string_view default_port) override;
+
+ TaskHandle LookupSRV(
+ std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
+ on_resolved,
+ y_absl::string_view name, Duration timeout,
+ grpc_pollset_set* interested_parties,
+ y_absl::string_view name_server) override;
+
+ TaskHandle LookupTXT(
+ std::function<void(y_absl::StatusOr<TString>)> on_resolved,
+ y_absl::string_view name, Duration timeout,
+ grpc_pollset_set* interested_parties,
+ y_absl::string_view name_server) override;
+
+ // NativeDNSResolver does not support cancellation.
+ bool Cancel(TaskHandle handle) override;
};
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_windows.cc b/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_windows.cc
index e3cf54844b..4340d6a42e 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_windows.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_windows.cc
@@ -35,10 +35,12 @@
#include <grpc/support/time.h>
#include "src/core/lib/address_utils/sockaddr_utils.h"
+#include "src/core/lib/event_engine/default_event_engine.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gprpp/host_port.h"
#include "src/core/lib/gprpp/thd.h"
#include "src/core/lib/iomgr/block_annotate.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/executor.h"
#include "src/core/lib/iomgr/iomgr_internal.h"
#include "src/core/lib/iomgr/resolve_address.h"
@@ -49,7 +51,9 @@
namespace grpc_core {
namespace {
-class NativeDNSRequest : public DNSResolver::Request {
+using ::grpc_event_engine::experimental::GetDefaultEventEngine;
+
+class NativeDNSRequest {
public:
NativeDNSRequest(
y_absl::string_view name, y_absl::string_view default_port,
@@ -57,28 +61,19 @@ class NativeDNSRequest : public DNSResolver::Request {
on_done)
: name_(name), default_port_(default_port), on_done_(std::move(on_done)) {
GRPC_CLOSURE_INIT(&request_closure_, DoRequestThread, this, nullptr);
- }
-
- // Starts the resolution
- void Start() override {
- Ref().release(); // ref held by callback
Executor::Run(&request_closure_, GRPC_ERROR_NONE, ExecutorType::RESOLVER);
}
- // This is a no-op for the native resolver. Note
- // that no I/O polling is required for the resolution to finish.
- void Orphan() override { Unref(); }
-
private:
// Callback to be passed to grpc Executor to asynch-ify
- // ResolveNameBlocking
+ // LookupHostnameBlocking
static void DoRequestThread(void* rp, grpc_error_handle /*error*/) {
NativeDNSRequest* r = static_cast<NativeDNSRequest*>(rp);
auto result =
- GetDNSResolver()->ResolveNameBlocking(r->name_, r->default_port_);
+ GetDNSResolver()->LookupHostnameBlocking(r->name_, r->default_port_);
// running inline is safe since we've already been scheduled on the executor
r->on_done_(std::move(result));
- r->Unref();
+ delete r;
}
const TString name_;
@@ -95,18 +90,19 @@ NativeDNSResolver* NativeDNSResolver::GetOrCreate() {
return instance;
}
-OrphanablePtr<DNSResolver::Request> NativeDNSResolver::ResolveName(
- y_absl::string_view name, y_absl::string_view default_port,
- grpc_pollset_set* /* interested_parties */,
+DNSResolver::TaskHandle NativeDNSResolver::LookupHostname(
std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
- on_done) {
- return MakeOrphanable<NativeDNSRequest>(name, default_port,
- std::move(on_done));
+ on_resolved,
+ y_absl::string_view name, y_absl::string_view default_port,
+ Duration /* timeout */, grpc_pollset_set* /* interested_parties */,
+ y_absl::string_view /* name_server */) {
+ new NativeDNSRequest(name, default_port, std::move(on_resolved));
+ return kNullHandle;
}
y_absl::StatusOr<std::vector<grpc_resolved_address>>
-NativeDNSResolver::ResolveNameBlocking(y_absl::string_view name,
- y_absl::string_view default_port) {
+NativeDNSResolver::LookupHostnameBlocking(y_absl::string_view name,
+ y_absl::string_view default_port) {
ExecCtx exec_ctx;
struct addrinfo hints;
struct addrinfo *result = NULL, *resp;
@@ -159,7 +155,7 @@ done:
if (result) {
freeaddrinfo(result);
}
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
return addresses;
}
auto error_result = grpc_error_to_absl_status(error);
@@ -167,6 +163,38 @@ done:
return error_result;
}
+DNSResolver::TaskHandle NativeDNSResolver::LookupSRV(
+ std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
+ on_resolved,
+ y_absl::string_view /* name */, Duration /* deadline */,
+ grpc_pollset_set* /* interested_parties */,
+ y_absl::string_view /* name_server */) {
+ GetDefaultEventEngine()->Run([on_resolved] {
+ ApplicationCallbackExecCtx app_exec_ctx;
+ ExecCtx exec_ctx;
+ on_resolved(y_absl::UnimplementedError(
+ "The Native resolver does not support looking up SRV records"));
+ });
+ return {-1, -1};
+};
+
+DNSResolver::TaskHandle NativeDNSResolver::LookupTXT(
+ std::function<void(y_absl::StatusOr<TString>)> on_resolved,
+ y_absl::string_view /* name */, Duration /* timeout */,
+ grpc_pollset_set* /* interested_parties */,
+ y_absl::string_view /* name_server */) {
+ // Not supported
+ GetDefaultEventEngine()->Run([on_resolved] {
+ ApplicationCallbackExecCtx app_exec_ctx;
+ ExecCtx exec_ctx;
+ on_resolved(y_absl::UnimplementedError(
+ "The Native resolver does not support looking up TXT records"));
+ });
+ return {-1, -1};
+};
+
+bool NativeDNSResolver::Cancel(TaskHandle /*handle*/) { return false; }
+
} // namespace grpc_core
#endif
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_windows.h b/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_windows.h
index 2feb974ab9..2af085ffc3 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_windows.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/resolve_address_windows.h
@@ -32,14 +32,31 @@ class NativeDNSResolver : public DNSResolver {
// Gets the singleton instance, creating it first if it doesn't exist
static NativeDNSResolver* GetOrCreate();
- OrphanablePtr<DNSResolver::Request> ResolveName(
- y_absl::string_view name, y_absl::string_view default_port,
- grpc_pollset_set* interested_parties,
+ TaskHandle LookupHostname(
std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
- on_done) override;
+ on_resolved,
+ y_absl::string_view name, y_absl::string_view default_port, Duration timeout,
+ grpc_pollset_set* interested_parties,
+ y_absl::string_view name_server) override;
- y_absl::StatusOr<std::vector<grpc_resolved_address>> ResolveNameBlocking(
+ y_absl::StatusOr<std::vector<grpc_resolved_address>> LookupHostnameBlocking(
y_absl::string_view name, y_absl::string_view default_port) override;
+
+ TaskHandle LookupSRV(
+ std::function<void(y_absl::StatusOr<std::vector<grpc_resolved_address>>)>
+ on_resolved,
+ y_absl::string_view name, Duration timeout,
+ grpc_pollset_set* interested_parties,
+ y_absl::string_view name_server) override;
+
+ TaskHandle LookupTXT(
+ std::function<void(y_absl::StatusOr<TString>)> on_resolved,
+ y_absl::string_view name, Duration timeout,
+ grpc_pollset_set* interested_parties,
+ y_absl::string_view name_server) override;
+
+ // NativeDNSResolver does not support cancellation.
+ bool Cancel(TaskHandle handle) override;
};
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/sockaddr.h b/contrib/libs/grpc/src/core/lib/iomgr/sockaddr.h
index 7abb82ddb2..7d10ab3189 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/sockaddr.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/sockaddr.h
@@ -25,9 +25,8 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/event_engine/sockaddr.h"
#include "src/core/lib/iomgr/port.h"
-#include "src/core/lib/iomgr/sockaddr_posix.h"
-#include "src/core/lib/iomgr/sockaddr_windows.h"
+#include "src/core/lib/iomgr/sockaddr_posix.h" // IWYU pragma: export
+#include "src/core/lib/iomgr/sockaddr_windows.h" // IWYU pragma: export
#endif /* GRPC_CORE_LIB_IOMGR_SOCKADDR_H */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/sockaddr_posix.h b/contrib/libs/grpc/src/core/lib/iomgr/sockaddr_posix.h
index 3cedd9082d..4909806aae 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/sockaddr_posix.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/sockaddr_posix.h
@@ -19,6 +19,8 @@
#ifndef GRPC_CORE_LIB_IOMGR_SOCKADDR_POSIX_H
#define GRPC_CORE_LIB_IOMGR_SOCKADDR_POSIX_H
+// IWYU pragma: private, include "src/core/lib/iomgr/sockaddr.h"
+
#include <grpc/support/port_platform.h>
#include "src/core/lib/iomgr/port.h"
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/sockaddr_utils_posix.cc b/contrib/libs/grpc/src/core/lib/iomgr/sockaddr_utils_posix.cc
index d420e6663c..e9f1541b73 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/sockaddr_utils_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/sockaddr_utils_posix.cc
@@ -23,6 +23,8 @@
#ifdef GRPC_POSIX_SOCKET_UTILS_COMMON
#include "src/core/lib/iomgr/socket_utils.h"
+// sys/types.h must precede netinet/tcp.h for compatibility.
+#include <sys/types.h>
#ifdef GRPC_LINUX_TCP_H
#include <linux/tcp.h>
#else
@@ -31,7 +33,6 @@
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
-#include <sys/types.h>
#include <unistd.h>
#include <util/generic/string.h>
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/sockaddr_windows.h b/contrib/libs/grpc/src/core/lib/iomgr/sockaddr_windows.h
index 4d637251a1..45aacbf76e 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/sockaddr_windows.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/sockaddr_windows.h
@@ -21,6 +21,8 @@
#include <grpc/support/port_platform.h>
+// IWYU pragma: private, include "src/core/lib/iomgr/sockaddr.h"
+
#include "src/core/lib/iomgr/port.h"
#ifdef GRPC_WINSOCK_SOCKET
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_common_posix.cc b/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_common_posix.cc
index 36541bb5d0..301362a8ac 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_common_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_common_posix.cc
@@ -44,12 +44,12 @@
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <grpc/event_engine/endpoint_config.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
#include "src/core/lib/address_utils/sockaddr_utils.h"
-#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/iomgr/sockaddr.h"
@@ -309,10 +309,9 @@ void config_default_tcp_user_timeout(bool enable, int timeout, bool is_client) {
/* Set TCP_USER_TIMEOUT */
grpc_error_handle grpc_set_socket_tcp_user_timeout(
- int fd, const grpc_channel_args* channel_args, bool is_client) {
+ int fd, const grpc_core::PosixTcpOptions& options, bool is_client) {
// Use conditionally-important parameter to avoid warning
(void)fd;
- (void)channel_args;
(void)is_client;
extern grpc_core::TraceFlag grpc_tcp_trace;
if (g_socket_supports_tcp_user_timeout.load() >= 0) {
@@ -325,29 +324,13 @@ grpc_error_handle grpc_set_socket_tcp_user_timeout(
enable = g_default_server_tcp_user_timeout_enabled;
timeout = g_default_server_tcp_user_timeout_ms;
}
- if (channel_args) {
- for (unsigned int i = 0; i < channel_args->num_args; i++) {
- if (0 ==
- strcmp(channel_args->args[i].key, GRPC_ARG_KEEPALIVE_TIME_MS)) {
- const int value = grpc_channel_arg_get_integer(
- &channel_args->args[i], grpc_integer_options{0, 1, INT_MAX});
- /* Continue using default if value is 0 */
- if (value == 0) {
- continue;
- }
- /* Disable if value is INT_MAX */
- enable = value != INT_MAX;
- } else if (0 == strcmp(channel_args->args[i].key,
- GRPC_ARG_KEEPALIVE_TIMEOUT_MS)) {
- const int value = grpc_channel_arg_get_integer(
- &channel_args->args[i], grpc_integer_options{0, 1, INT_MAX});
- /* Continue using default if value is 0 */
- if (value == 0) {
- continue;
- }
- timeout = value;
- }
- }
+ int value = options.keep_alive_time_ms;
+ if (value > 0) {
+ enable = value != INT_MAX;
+ }
+ value = options.keep_alive_timeout_ms;
+ if (value > 0) {
+ timeout = value;
}
if (enable) {
int newval;
@@ -409,16 +392,11 @@ grpc_error_handle grpc_set_socket_with_mutator(int fd, grpc_fd_usage usage,
}
grpc_error_handle grpc_apply_socket_mutator_in_args(
- int fd, grpc_fd_usage usage, const grpc_channel_args* args) {
- const grpc_arg* socket_mutator_arg =
- grpc_channel_args_find(args, GRPC_ARG_SOCKET_MUTATOR);
- if (socket_mutator_arg == nullptr) {
+ int fd, grpc_fd_usage usage, const grpc_core::PosixTcpOptions& options) {
+ if (options.socket_mutator == nullptr) {
return GRPC_ERROR_NONE;
}
- GPR_DEBUG_ASSERT(socket_mutator_arg->type == GRPC_ARG_POINTER);
- grpc_socket_mutator* mutator =
- static_cast<grpc_socket_mutator*>(socket_mutator_arg->value.pointer.p);
- return grpc_set_socket_with_mutator(fd, usage, mutator);
+ return grpc_set_socket_with_mutator(fd, usage, options.socket_mutator);
}
static gpr_once g_probe_ipv6_once = GPR_ONCE_INIT;
@@ -452,9 +430,10 @@ int grpc_ipv6_loopback_available(void) {
static grpc_error_handle error_for_fd(int fd,
const grpc_resolved_address* addr) {
if (fd >= 0) return GRPC_ERROR_NONE;
- TString addr_str = grpc_sockaddr_to_string(addr, false);
+ auto addr_str = grpc_sockaddr_to_string(addr, false);
grpc_error_handle err = grpc_error_set_str(
- GRPC_OS_ERROR(errno, "socket"), GRPC_ERROR_STR_TARGET_ADDRESS, addr_str);
+ GRPC_OS_ERROR(errno, "socket"), GRPC_ERROR_STR_TARGET_ADDRESS,
+ addr_str.ok() ? addr_str.value() : addr_str.status().ToString());
return err;
}
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_posix.cc b/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_posix.cc
index 333e60db78..41d927da85 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_posix.cc
@@ -18,18 +18,100 @@
#include <grpc/support/port_platform.h>
+#include "y_absl/types/optional.h"
+
#include "src/core/lib/iomgr/port.h"
#ifdef GRPC_POSIX_SOCKETUTILS
-
#include <fcntl.h>
#include <sys/socket.h>
#include <unistd.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/log.h>
#include "src/core/lib/iomgr/sockaddr.h"
#include "src/core/lib/iomgr/socket_utils_posix.h"
+#endif
+
+#ifdef GRPC_POSIX_SOCKET_TCP
+
+#include "src/core/lib/event_engine/channel_args_endpoint_config.h"
+#include "src/core/lib/iomgr/socket_utils_posix.h"
+
+using ::grpc_event_engine::experimental::EndpointConfig;
+
+using ::grpc_core::PosixTcpOptions;
+
+namespace {
+
+int AdjustValue(int default_value, int min_value, int max_value,
+ y_absl::optional<int> actual_value) {
+ if (!actual_value.has_value() || *actual_value < min_value ||
+ *actual_value > max_value) {
+ return default_value;
+ }
+ return *actual_value;
+}
+} // namespace
+
+PosixTcpOptions TcpOptionsFromEndpointConfig(const EndpointConfig& config) {
+ void* value;
+ PosixTcpOptions options;
+ options.tcp_read_chunk_size = AdjustValue(
+ PosixTcpOptions::kDefaultReadChunkSize, 1, PosixTcpOptions::kMaxChunkSize,
+ config.GetInt(GRPC_ARG_TCP_READ_CHUNK_SIZE));
+ options.tcp_min_read_chunk_size =
+ AdjustValue(PosixTcpOptions::kDefaultMinReadChunksize, 1,
+ PosixTcpOptions::kMaxChunkSize,
+ config.GetInt(GRPC_ARG_TCP_MIN_READ_CHUNK_SIZE));
+ options.tcp_max_read_chunk_size =
+ AdjustValue(PosixTcpOptions::kDefaultMaxReadChunksize, 1,
+ PosixTcpOptions::kMaxChunkSize,
+ config.GetInt(GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE));
+ options.tcp_tx_zerocopy_send_bytes_threshold =
+ AdjustValue(PosixTcpOptions::kDefaultSendBytesThreshold, 0, INT_MAX,
+ config.GetInt(GRPC_ARG_TCP_TX_ZEROCOPY_SEND_BYTES_THRESHOLD));
+ options.tcp_tx_zerocopy_max_simultaneous_sends =
+ AdjustValue(PosixTcpOptions::kDefaultMaxSends, 0, INT_MAX,
+ config.GetInt(GRPC_ARG_TCP_TX_ZEROCOPY_MAX_SIMULT_SENDS));
+ options.tcp_tx_zero_copy_enabled =
+ (AdjustValue(PosixTcpOptions::kZerocpTxEnabledDefault, 0, 1,
+ config.GetInt(GRPC_ARG_TCP_TX_ZEROCOPY_ENABLED)) != 0);
+ options.keep_alive_time_ms =
+ AdjustValue(0, 1, INT_MAX, config.GetInt(GRPC_ARG_KEEPALIVE_TIME_MS));
+ options.keep_alive_timeout_ms =
+ AdjustValue(0, 1, INT_MAX, config.GetInt(GRPC_ARG_KEEPALIVE_TIMEOUT_MS));
+ options.expand_wildcard_addrs =
+ (AdjustValue(0, 1, INT_MAX,
+ config.GetInt(GRPC_ARG_EXPAND_WILDCARD_ADDRS)) != 0);
+ options.allow_reuse_port =
+ (AdjustValue(0, 1, INT_MAX, config.GetInt(GRPC_ARG_ALLOW_REUSEPORT)) !=
+ 0);
+
+ if (options.tcp_min_read_chunk_size > options.tcp_max_read_chunk_size) {
+ options.tcp_min_read_chunk_size = options.tcp_max_read_chunk_size;
+ }
+ options.tcp_read_chunk_size = grpc_core::Clamp(
+ options.tcp_read_chunk_size, options.tcp_min_read_chunk_size,
+ options.tcp_max_read_chunk_size);
+
+ value = config.GetVoidPointer(GRPC_ARG_RESOURCE_QUOTA);
+ if (value != nullptr) {
+ options.resource_quota =
+ reinterpret_cast<grpc_core::ResourceQuota*>(value)->Ref();
+ }
+ value = config.GetVoidPointer(GRPC_ARG_SOCKET_MUTATOR);
+ if (value != nullptr) {
+ options.socket_mutator =
+ grpc_socket_mutator_ref(static_cast<grpc_socket_mutator*>(value));
+ }
+ return options;
+}
+
+#endif /* GRPC_POSIX_SOCKET_TCP */
+
+#ifdef GRPC_POSIX_SOCKETUTILS
int grpc_accept4(int sockfd, grpc_resolved_address* resolved_addr, int nonblock,
int cloexec) {
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_posix.h b/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_posix.h
index d79a4a15ed..0cfebb94b4 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_posix.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/socket_utils_posix.h
@@ -21,15 +21,14 @@
#include <grpc/support/port_platform.h>
-#include <sys/socket.h>
-#include <unistd.h>
-
+#include <grpc/event_engine/endpoint_config.h>
#include <grpc/impl/codegen/grpc_types.h>
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/resolve_address.h"
#include "src/core/lib/iomgr/socket_factory_posix.h"
#include "src/core/lib/iomgr/socket_mutator.h"
+#include "src/core/lib/resource_quota/resource_quota.h"
#ifdef GRPC_LINUX_ERRQUEUE
#ifndef SO_ZEROCOPY
@@ -40,6 +39,98 @@
#endif
#endif /* ifdef GRPC_LINUX_ERRQUEUE */
+namespace grpc_core {
+
+struct PosixTcpOptions {
+ static constexpr int kDefaultReadChunkSize = 8192;
+ static constexpr int kDefaultMinReadChunksize = 256;
+ static constexpr int kDefaultMaxReadChunksize = 4 * 1024 * 1024;
+ static constexpr int kZerocpTxEnabledDefault = 0;
+ static constexpr int kMaxChunkSize = 32 * 1024 * 1024;
+ static constexpr int kDefaultMaxSends = 4;
+ static constexpr size_t kDefaultSendBytesThreshold = 16 * 1024;
+ int tcp_read_chunk_size = kDefaultReadChunkSize;
+ int tcp_min_read_chunk_size = kDefaultMinReadChunksize;
+ int tcp_max_read_chunk_size = kDefaultMaxReadChunksize;
+ int tcp_tx_zerocopy_send_bytes_threshold = kDefaultSendBytesThreshold;
+ int tcp_tx_zerocopy_max_simultaneous_sends = kDefaultMaxSends;
+ bool tcp_tx_zero_copy_enabled = kZerocpTxEnabledDefault;
+ int keep_alive_time_ms = 0;
+ int keep_alive_timeout_ms = 0;
+ bool expand_wildcard_addrs = false;
+ bool allow_reuse_port = false;
+ RefCountedPtr<ResourceQuota> resource_quota;
+ struct grpc_socket_mutator* socket_mutator = nullptr;
+ PosixTcpOptions() = default;
+ // Move ctor
+ PosixTcpOptions(PosixTcpOptions&& other) noexcept {
+ socket_mutator = y_absl::exchange(other.socket_mutator, nullptr);
+ resource_quota = std::move(other.resource_quota);
+ CopyIntegerOptions(other);
+ }
+ // Move assignment
+ PosixTcpOptions& operator=(PosixTcpOptions&& other) noexcept {
+ if (socket_mutator != nullptr) {
+ grpc_socket_mutator_unref(socket_mutator);
+ }
+ socket_mutator = y_absl::exchange(other.socket_mutator, nullptr);
+ resource_quota = std::move(other.resource_quota);
+ CopyIntegerOptions(other);
+ return *this;
+ }
+ // Copy ctor
+ PosixTcpOptions(const PosixTcpOptions& other) {
+ if (other.socket_mutator != nullptr) {
+ socket_mutator = grpc_socket_mutator_ref(other.socket_mutator);
+ }
+ resource_quota = other.resource_quota;
+ CopyIntegerOptions(other);
+ }
+ // Copy assignment
+ PosixTcpOptions& operator=(const PosixTcpOptions& other) {
+ if (&other == this) {
+ return *this;
+ }
+ if (socket_mutator != nullptr) {
+ grpc_socket_mutator_unref(socket_mutator);
+ socket_mutator = nullptr;
+ }
+ if (other.socket_mutator != nullptr) {
+ socket_mutator = grpc_socket_mutator_ref(other.socket_mutator);
+ }
+ resource_quota = other.resource_quota;
+ CopyIntegerOptions(other);
+ return *this;
+ }
+ // Destructor.
+ ~PosixTcpOptions() {
+ if (socket_mutator != nullptr) {
+ grpc_socket_mutator_unref(socket_mutator);
+ }
+ }
+
+ private:
+ void CopyIntegerOptions(const PosixTcpOptions& other) {
+ tcp_read_chunk_size = other.tcp_read_chunk_size;
+ tcp_min_read_chunk_size = other.tcp_min_read_chunk_size;
+ tcp_max_read_chunk_size = other.tcp_max_read_chunk_size;
+ tcp_tx_zerocopy_send_bytes_threshold =
+ other.tcp_tx_zerocopy_send_bytes_threshold;
+ tcp_tx_zerocopy_max_simultaneous_sends =
+ other.tcp_tx_zerocopy_max_simultaneous_sends;
+ tcp_tx_zero_copy_enabled = other.tcp_tx_zero_copy_enabled;
+ keep_alive_time_ms = other.keep_alive_time_ms;
+ keep_alive_timeout_ms = other.keep_alive_timeout_ms;
+ expand_wildcard_addrs = other.expand_wildcard_addrs;
+ allow_reuse_port = other.allow_reuse_port;
+ }
+};
+
+} // namespace grpc_core
+
+grpc_core::PosixTcpOptions TcpOptionsFromEndpointConfig(
+ const grpc_event_engine::experimental::EndpointConfig& config);
+
/* a wrapper for accept or accept4 */
int grpc_accept4(int sockfd, grpc_resolved_address* resolved_addr, int nonblock,
int cloexec);
@@ -70,7 +161,7 @@ void config_default_tcp_user_timeout(bool enable, int timeout, bool is_client);
/* Set TCP_USER_TIMEOUT */
grpc_error_handle grpc_set_socket_tcp_user_timeout(
- int fd, const grpc_channel_args* channel_args, bool is_client);
+ int fd, const grpc_core::PosixTcpOptions& options, bool is_client);
/* Returns true if this system can create AF_INET6 sockets bound to ::1.
The value is probed once, and cached for the life of the process.
@@ -104,9 +195,10 @@ grpc_error_handle grpc_set_socket_rcvbuf(int fd, int buffer_size_bytes);
grpc_error_handle grpc_set_socket_with_mutator(int fd, grpc_fd_usage usage,
grpc_socket_mutator* mutator);
-/* Extracts the first socket mutator from args if any and applies on the fd. */
+/* Extracts the first socket mutator from config if any and applies on the fd.
+ */
grpc_error_handle grpc_apply_socket_mutator_in_args(
- int fd, grpc_fd_usage usage, const grpc_channel_args* args);
+ int fd, grpc_fd_usage usage, const grpc_core::PosixTcpOptions& options);
/* An enum to keep track of IPv4/IPv6 socket modes.
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/socket_windows.h b/contrib/libs/grpc/src/core/lib/iomgr/socket_windows.h
index 78f79453c6..de635f13a3 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/socket_windows.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/socket_windows.h
@@ -86,8 +86,6 @@ typedef struct grpc_winsocket {
This prevents that. */
int added_to_iocp;
- grpc_closure shutdown_closure;
-
/* A label for iomgr to track outstanding objects */
grpc_iomgr_object iomgr_object;
} grpc_winsocket;
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_client.cc b/contrib/libs/grpc/src/core/lib/iomgr/tcp_client.cc
index f252f207eb..05511a4192 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_client.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_client.cc
@@ -22,13 +22,17 @@
grpc_tcp_client_vtable* grpc_tcp_client_impl;
-void grpc_tcp_client_connect(grpc_closure* on_connect, grpc_endpoint** endpoint,
- grpc_pollset_set* interested_parties,
- const grpc_channel_args* channel_args,
- const grpc_resolved_address* addr,
- grpc_core::Timestamp deadline) {
- grpc_tcp_client_impl->connect(on_connect, endpoint, interested_parties,
- channel_args, addr, deadline);
+int64_t grpc_tcp_client_connect(
+ grpc_closure* on_connect, grpc_endpoint** endpoint,
+ grpc_pollset_set* interested_parties,
+ const grpc_event_engine::experimental::EndpointConfig& config,
+ const grpc_resolved_address* addr, grpc_core::Timestamp deadline) {
+ return grpc_tcp_client_impl->connect(on_connect, endpoint, interested_parties,
+ config, addr, deadline);
+}
+
+bool grpc_tcp_client_cancel_connect(int64_t connection_handle) {
+ return grpc_tcp_client_impl->cancel_connect(connection_handle);
}
void grpc_set_tcp_client_impl(grpc_tcp_client_vtable* impl) {
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_client.h b/contrib/libs/grpc/src/core/lib/iomgr/tcp_client.h
index 1dfb8d2574..12edeb97b6 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_client.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_client.h
@@ -21,6 +21,7 @@
#include <grpc/support/port_platform.h>
+#include <grpc/event_engine/endpoint_config.h>
#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/time.h>
@@ -30,25 +31,35 @@
#include "src/core/lib/resource_quota/memory_quota.h"
typedef struct grpc_tcp_client_vtable {
- void (*connect)(grpc_closure* on_connect, grpc_endpoint** endpoint,
- grpc_pollset_set* interested_parties,
- const grpc_channel_args* channel_args,
- const grpc_resolved_address* addr,
- grpc_core::Timestamp deadline);
+ int64_t (*connect)(
+ grpc_closure* on_connect, grpc_endpoint** endpoint,
+ grpc_pollset_set* interested_parties,
+ const grpc_event_engine::experimental::EndpointConfig& config,
+ const grpc_resolved_address* addr, grpc_core::Timestamp deadline);
+ bool (*cancel_connect)(int64_t connection_handle);
} grpc_tcp_client_vtable;
/* Asynchronously connect to an address (specified as (addr, len)), and call
cb with arg and the completed connection when done (or call cb with arg and
NULL on failure).
interested_parties points to a set of pollsets that would be interested
- in this connection being established (in order to continue their work) */
-void grpc_tcp_client_connect(grpc_closure* on_connect, grpc_endpoint** endpoint,
- grpc_pollset_set* interested_parties,
- const grpc_channel_args* channel_args,
- const grpc_resolved_address* addr,
- grpc_core::Timestamp deadline);
-
-void grpc_tcp_client_global_init();
+ in this connection being established (in order to continue their work). It
+ returns a handle to the connect operation which can be used to cancel the
+ connection attempt. */
+int64_t grpc_tcp_client_connect(
+ grpc_closure* on_connect, grpc_endpoint** endpoint,
+ grpc_pollset_set* interested_parties,
+ const grpc_event_engine::experimental::EndpointConfig& config,
+ const grpc_resolved_address* addr, grpc_core::Timestamp deadline);
+
+// Returns true if a connect attempt corresponding to the provided handle
+// is successfully cancelled. Otherwise it returns false. If the connect
+// attempt is successfully cancelled, then the on_connect closure passed to
+// grpc_tcp_client_connect will not be executed. Its upto the caller to free
+// up any resources that may have been allocated to create the closure.
+bool grpc_tcp_client_cancel_connect(int64_t connection_handle);
+
+extern void grpc_tcp_client_global_init();
void grpc_set_tcp_client_impl(grpc_tcp_client_vtable* impl);
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_cfstream.cc b/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_cfstream.cc
index 305a56f6d0..a56fed7795 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_cfstream.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_cfstream.cc
@@ -27,12 +27,12 @@
#include <netinet/in.h>
#include <string.h>
+#include <grpc/event_engine/endpoint_config.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
#include "src/core/lib/address_utils/sockaddr_utils.h"
-#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gprpp/host_port.h"
#error #include "src/core/lib/iomgr/cfstream_handle.h"
#include "src/core/lib/iomgr/closure.h"
@@ -116,7 +116,7 @@ static void OnOpen(void* arg, grpc_error_handle error) {
gpr_mu_unlock(&connect->mu);
CFStreamConnectCleanup(connect);
} else {
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
CFErrorRef stream_error = CFReadStreamCopyError(connect->read_stream);
if (stream_error == NULL) {
stream_error = CFWriteStreamCopyError(connect->write_stream);
@@ -125,7 +125,7 @@ static void OnOpen(void* arg, grpc_error_handle error) {
error = GRPC_ERROR_CREATE_FROM_CFERROR(stream_error, "connect() error");
CFRelease(stream_error);
}
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
*endpoint = grpc_cfstream_endpoint_create(
connect->read_stream, connect->write_stream,
connect->addr_name.c_str(), connect->stream_handle);
@@ -140,7 +140,7 @@ static void OnOpen(void* arg, grpc_error_handle error) {
static void ParseResolvedAddress(const grpc_resolved_address* addr,
CFStringRef* host, int* port) {
- TString host_port = grpc_sockaddr_to_string(addr, true);
+ TString host_port = grpc_sockaddr_to_string(addr, true).value();
TString host_string;
TString port_string;
grpc_core::SplitHostPort(host_port, &host_string, &port_string);
@@ -149,15 +149,23 @@ static void ParseResolvedAddress(const grpc_resolved_address* addr,
*port = grpc_sockaddr_get_port(addr);
}
-static void CFStreamClientConnect(grpc_closure* closure, grpc_endpoint** ep,
- grpc_pollset_set* interested_parties,
- const grpc_channel_args* channel_args,
- const grpc_resolved_address* resolved_addr,
- grpc_core::Timestamp deadline) {
+static int64_t CFStreamClientConnect(
+ grpc_closure* closure, grpc_endpoint** ep,
+ grpc_pollset_set* interested_parties,
+ const grpc_event_engine::experimental::EndpointConfig& /*config*/,
+ const grpc_resolved_address* resolved_addr, grpc_core::Timestamp deadline) {
+ auto addr_uri = grpc_sockaddr_to_uri(resolved_addr);
+ if (!addr_uri.ok()) {
+ grpc_error_handle error =
+ GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_uri.status().ToString());
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
+ return 0;
+ }
+
CFStreamConnect* connect = new CFStreamConnect();
connect->closure = closure;
connect->endpoint = ep;
- connect->addr_name = grpc_sockaddr_to_uri(resolved_addr);
+ connect->addr_name = addr_uri.value();
connect->refs = 2; // One for the connect operation, one for the timer.
gpr_ref_init(&connect->refcount, 1);
gpr_mu_init(&connect->mu);
@@ -190,8 +198,14 @@ static void CFStreamClientConnect(grpc_closure* closure, grpc_endpoint** ep,
CFWriteStreamOpen(write_stream);
grpc_timer_init(&connect->alarm, deadline, &connect->on_alarm);
gpr_mu_unlock(&connect->mu);
+ return 0;
+}
+
+static bool CFStreamClientCancelConnect(int64_t /*connection_handle*/) {
+ return false;
}
-grpc_tcp_client_vtable grpc_cfstream_client_vtable = {CFStreamClientConnect};
+grpc_tcp_client_vtable grpc_cfstream_client_vtable = {
+ CFStreamClientConnect, CFStreamClientCancelConnect};
#endif /* GRPC_CFSTREAM_CLIENT */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_posix.cc b/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_posix.cc
index 02a7a6dd51..c36f25cd66 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_posix.cc
@@ -27,6 +27,7 @@
#include <string.h>
#include <unistd.h>
+#include "y_absl/container/flat_hash_map.h"
#include "y_absl/strings/str_cat.h"
#include <grpc/support/alloc.h>
@@ -34,7 +35,6 @@
#include <grpc/support/time.h>
#include "src/core/lib/address_utils/sockaddr_utils.h"
-#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/iomgr/ev_posix.h"
#include "src/core/lib/iomgr/executor.h"
@@ -50,6 +50,8 @@
extern grpc_core::TraceFlag grpc_tcp_trace;
+using ::grpc_event_engine::experimental::EndpointConfig;
+
struct async_connect {
gpr_mu mu;
grpc_fd* fd;
@@ -61,35 +63,59 @@ struct async_connect {
TString addr_str;
grpc_endpoint** ep;
grpc_closure* closure;
- grpc_channel_args* channel_args;
+ int64_t connection_handle;
+ bool connect_cancelled;
+ grpc_core::PosixTcpOptions options;
+};
+
+struct ConnectionShard {
+ grpc_core::Mutex mu;
+ y_absl::flat_hash_map<int64_t, async_connect*> pending_connections
+ Y_ABSL_GUARDED_BY(&mu);
};
-static grpc_error_handle prepare_socket(const grpc_resolved_address* addr,
- int fd,
- const grpc_channel_args* channel_args) {
+namespace {
+
+gpr_once g_tcp_client_posix_init = GPR_ONCE_INIT;
+std::vector<ConnectionShard>* g_connection_shards = nullptr;
+std::atomic<int64_t> g_connection_id{1};
+
+void do_tcp_client_global_init(void) {
+ size_t num_shards = std::max(2 * gpr_cpu_num_cores(), 1u);
+ g_connection_shards = new std::vector<struct ConnectionShard>(num_shards);
+}
+
+} // namespace
+
+void grpc_tcp_client_global_init() {
+ gpr_once_init(&g_tcp_client_posix_init, do_tcp_client_global_init);
+}
+
+static grpc_error_handle prepare_socket(
+ const grpc_resolved_address* addr, int fd,
+ const grpc_core::PosixTcpOptions& options) {
grpc_error_handle err = GRPC_ERROR_NONE;
GPR_ASSERT(fd >= 0);
err = grpc_set_socket_nonblocking(fd, 1);
- if (err != GRPC_ERROR_NONE) goto error;
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
err = grpc_set_socket_cloexec(fd, 1);
- if (err != GRPC_ERROR_NONE) goto error;
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
if (!grpc_is_unix_socket(addr)) {
err = grpc_set_socket_low_latency(fd, 1);
- if (err != GRPC_ERROR_NONE) goto error;
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
err = grpc_set_socket_reuse_addr(fd, 1);
- if (err != GRPC_ERROR_NONE) goto error;
- err = grpc_set_socket_tcp_user_timeout(fd, channel_args,
- true /* is_client */);
- if (err != GRPC_ERROR_NONE) goto error;
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
+ err = grpc_set_socket_tcp_user_timeout(fd, options, true /* is_client */);
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
}
err = grpc_set_socket_no_sigpipe_if_possible(fd);
- if (err != GRPC_ERROR_NONE) goto error;
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_CLIENT_CONNECTION_USAGE,
- channel_args);
- if (err != GRPC_ERROR_NONE) goto error;
+ options);
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
goto done;
@@ -117,15 +143,20 @@ static void tc_on_alarm(void* acp, grpc_error_handle error) {
gpr_mu_unlock(&ac->mu);
if (done) {
gpr_mu_destroy(&ac->mu);
- grpc_channel_args_destroy(ac->channel_args);
delete ac;
}
}
-grpc_endpoint* grpc_tcp_client_create_from_fd(
- grpc_fd* fd, const grpc_channel_args* channel_args,
+static grpc_endpoint* grpc_tcp_client_create_from_fd(
+ grpc_fd* fd, const grpc_core::PosixTcpOptions& options,
y_absl::string_view addr_str) {
- return grpc_tcp_create(fd, channel_args, addr_str);
+ return grpc_tcp_create(fd, options, addr_str);
+}
+
+grpc_endpoint* grpc_tcp_create_from_fd(
+ grpc_fd* fd, const grpc_event_engine::experimental::EndpointConfig& config,
+ y_absl::string_view addr_str) {
+ return grpc_tcp_create(fd, TcpOptionsFromEndpointConfig(config), addr_str);
}
static void on_writable(void* acp, grpc_error_handle error) {
@@ -136,7 +167,7 @@ static void on_writable(void* acp, grpc_error_handle error) {
int done;
grpc_endpoint** ep = ac->ep;
grpc_closure* closure = ac->closure;
- std::string addr_str = ac->addr_str;
+ TString addr_str = ac->addr_str;
grpc_fd* fd;
(void)GRPC_ERROR_REF(error);
@@ -150,17 +181,24 @@ static void on_writable(void* acp, grpc_error_handle error) {
GPR_ASSERT(ac->fd);
fd = ac->fd;
ac->fd = nullptr;
+ bool connect_cancelled = ac->connect_cancelled;
gpr_mu_unlock(&ac->mu);
grpc_timer_cancel(&ac->alarm);
gpr_mu_lock(&ac->mu);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
error =
grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR, "Timeout occurred");
goto finish;
}
+ if (connect_cancelled) {
+ // The callback should not get scheduled in this case.
+ error = GRPC_ERROR_NONE;
+ goto finish;
+ }
+
do {
so_error_size = sizeof(so_error);
err = getsockopt(grpc_fd_wrapped_fd(fd), SOL_SOCKET, SO_ERROR, &so_error,
@@ -174,7 +212,7 @@ static void on_writable(void* acp, grpc_error_handle error) {
switch (so_error) {
case 0:
grpc_pollset_set_del_fd(ac->interested_parties, fd);
- *ep = grpc_tcp_client_create_from_fd(fd, ac->channel_args, ac->addr_str);
+ *ep = grpc_tcp_client_create_from_fd(fd, ac->options, ac->addr_str);
fd = nullptr;
break;
case ENOBUFS:
@@ -208,6 +246,14 @@ static void on_writable(void* acp, grpc_error_handle error) {
}
finish:
+ if (!connect_cancelled) {
+ int shard_number = ac->connection_handle % (*g_connection_shards).size();
+ struct ConnectionShard* shard = &(*g_connection_shards)[shard_number];
+ {
+ grpc_core::MutexLock lock(&shard->mu);
+ shard->pending_connections.erase(ac->connection_handle);
+ }
+ }
if (fd != nullptr) {
grpc_pollset_set_del_fd(ac->interested_parties, fd);
grpc_fd_orphan(fd, nullptr, nullptr, "tcp_client_orphan");
@@ -215,7 +261,7 @@ finish:
}
done = (--ac->refs == 0);
gpr_mu_unlock(&ac->mu);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
TString str;
bool ret = grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION, &str);
GPR_ASSERT(ret);
@@ -228,18 +274,23 @@ finish:
// This is safe even outside the lock, because "done", the sentinel, is
// populated *inside* the lock.
gpr_mu_destroy(&ac->mu);
- grpc_channel_args_destroy(ac->channel_args);
delete ac;
}
// Push async connect closure to the executor since this may actually be
// called during the shutdown process, in which case a deadlock could form
// between the core shutdown mu and the connector mu (b/188239051)
- grpc_core::Executor::Run(closure, error);
+ if (!connect_cancelled) {
+ grpc_core::Executor::Run(closure, error);
+ } else if (!GRPC_ERROR_IS_NONE(error)) {
+ // Unref the error here because it is not used.
+ (void)GRPC_ERROR_UNREF(error);
+ }
}
grpc_error_handle grpc_tcp_client_prepare_fd(
- const grpc_channel_args* channel_args, const grpc_resolved_address* addr,
- grpc_resolved_address* mapped_addr, int* fd) {
+ const grpc_core::PosixTcpOptions& options,
+ const grpc_resolved_address* addr, grpc_resolved_address* mapped_addr,
+ int* fd) {
grpc_dualstack_mode dsmode;
grpc_error_handle error;
*fd = -1;
@@ -251,7 +302,7 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
}
error =
grpc_create_dualstack_socket(mapped_addr, SOCK_STREAM, 0, &dsmode, fd);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
return error;
}
if (dsmode == GRPC_DSMODE_IPV4) {
@@ -260,39 +311,55 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
memcpy(mapped_addr, addr, sizeof(*mapped_addr));
}
}
- if ((error = prepare_socket(mapped_addr, *fd, channel_args)) !=
- GRPC_ERROR_NONE) {
+ if ((error = prepare_socket(mapped_addr, *fd, options)) != GRPC_ERROR_NONE) {
return error;
}
return GRPC_ERROR_NONE;
}
-void grpc_tcp_client_create_from_prepared_fd(
+int64_t grpc_tcp_client_create_from_prepared_fd(
grpc_pollset_set* interested_parties, grpc_closure* closure, const int fd,
- const grpc_channel_args* channel_args, const grpc_resolved_address* addr,
- grpc_core::Timestamp deadline, grpc_endpoint** ep) {
+ const grpc_core::PosixTcpOptions& options,
+ const grpc_resolved_address* addr, grpc_core::Timestamp deadline,
+ grpc_endpoint** ep) {
int err;
do {
err = connect(fd, reinterpret_cast<const grpc_sockaddr*>(addr->addr),
addr->len);
} while (err < 0 && errno == EINTR);
- TString name = y_absl::StrCat("tcp-client:", grpc_sockaddr_to_uri(addr));
+ auto addr_uri = grpc_sockaddr_to_uri(addr);
+ if (!addr_uri.ok()) {
+ grpc_error_handle error =
+ GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_uri.status().ToString());
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
+ return 0;
+ }
+
+ TString name = y_absl::StrCat("tcp-client:", addr_uri.value());
grpc_fd* fdobj = grpc_fd_create(fd, name.c_str(), true);
+ int64_t connection_id = 0;
+ if (errno == EWOULDBLOCK || errno == EINPROGRESS) {
+ // Connection is still in progress.
+ connection_id = g_connection_id.fetch_add(1, std::memory_order_acq_rel);
+ }
if (err >= 0) {
- *ep = grpc_tcp_client_create_from_fd(fdobj, channel_args,
- grpc_sockaddr_to_uri(addr));
+ // Connection already succeded. Return 0 to discourage any cancellation
+ // attempts.
+ *ep = grpc_tcp_client_create_from_fd(fdobj, options, addr_uri.value());
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_NONE);
- return;
+ return 0;
}
if (errno != EWOULDBLOCK && errno != EINPROGRESS) {
+ // Connection already failed. Return 0 to discourage any cancellation
+ // attempts.
grpc_error_handle error = GRPC_OS_ERROR(errno, "connect");
error = grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS,
- grpc_sockaddr_to_uri(addr));
+ addr_uri.value());
grpc_fd_orphan(fdobj, nullptr, nullptr, "tcp_client_connect_error");
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
- return;
+ return 0;
}
grpc_pollset_set_add_fd(interested_parties, fdobj);
@@ -302,43 +369,105 @@ void grpc_tcp_client_create_from_prepared_fd(
ac->ep = ep;
ac->fd = fdobj;
ac->interested_parties = interested_parties;
- ac->addr_str = grpc_sockaddr_to_uri(addr);
+ ac->addr_str = addr_uri.value();
+ ac->connection_handle = connection_id;
+ ac->connect_cancelled = false;
gpr_mu_init(&ac->mu);
ac->refs = 2;
GRPC_CLOSURE_INIT(&ac->write_closure, on_writable, ac,
grpc_schedule_on_exec_ctx);
- ac->channel_args = grpc_channel_args_copy(channel_args);
+ ac->options = options;
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: asynchronously connecting fd %p",
ac->addr_str.c_str(), fdobj);
}
+ int shard_number = connection_id % (*g_connection_shards).size();
+ struct ConnectionShard* shard = &(*g_connection_shards)[shard_number];
+ {
+ grpc_core::MutexLock lock(&shard->mu);
+ shard->pending_connections.insert_or_assign(connection_id, ac);
+ }
+
gpr_mu_lock(&ac->mu);
GRPC_CLOSURE_INIT(&ac->on_alarm, tc_on_alarm, ac, grpc_schedule_on_exec_ctx);
grpc_timer_init(&ac->alarm, deadline, &ac->on_alarm);
grpc_fd_notify_on_write(ac->fd, &ac->write_closure);
gpr_mu_unlock(&ac->mu);
+ return connection_id;
}
-static void tcp_connect(grpc_closure* closure, grpc_endpoint** ep,
- grpc_pollset_set* interested_parties,
- const grpc_channel_args* channel_args,
- const grpc_resolved_address* addr,
- grpc_core::Timestamp deadline) {
+static int64_t tcp_connect(grpc_closure* closure, grpc_endpoint** ep,
+ grpc_pollset_set* interested_parties,
+ const EndpointConfig& config,
+ const grpc_resolved_address* addr,
+ grpc_core::Timestamp deadline) {
grpc_resolved_address mapped_addr;
+ grpc_core::PosixTcpOptions options(TcpOptionsFromEndpointConfig(config));
int fd = -1;
grpc_error_handle error;
*ep = nullptr;
- if ((error = grpc_tcp_client_prepare_fd(channel_args, addr, &mapped_addr,
- &fd)) != GRPC_ERROR_NONE) {
+ if ((error = grpc_tcp_client_prepare_fd(options, addr, &mapped_addr, &fd)) !=
+ GRPC_ERROR_NONE) {
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
- return;
+ return 0;
+ }
+ return grpc_tcp_client_create_from_prepared_fd(
+ interested_parties, closure, fd, options, &mapped_addr, deadline, ep);
+}
+
+static bool tcp_cancel_connect(int64_t connection_handle) {
+ if (connection_handle <= 0) {
+ return false;
+ }
+ int shard_number = connection_handle % (*g_connection_shards).size();
+ struct ConnectionShard* shard = &(*g_connection_shards)[shard_number];
+ async_connect* ac = nullptr;
+ {
+ grpc_core::MutexLock lock(&shard->mu);
+ auto it = shard->pending_connections.find(connection_handle);
+ if (it != shard->pending_connections.end()) {
+ ac = it->second;
+ GPR_ASSERT(ac != nullptr);
+ // Trying to acquire ac->mu here would could cause a deadlock because
+ // the on_writable method tries to acquire the two mutexes used
+ // here in the reverse order. But we dont need to acquire ac->mu before
+ // incrementing ac->refs here. This is because the on_writable
+ // method decrements ac->refs only after deleting the connection handle
+ // from the corresponding hashmap. If the code enters here, it means that
+ // deletion hasn't happened yet. The deletion can only happen after the
+ // corresponding g_shard_mu is unlocked.
+ ++ac->refs;
+ // Remove connection from list of active connections.
+ shard->pending_connections.erase(it);
+ }
+ }
+ if (ac == nullptr) {
+ return false;
+ }
+ gpr_mu_lock(&ac->mu);
+ bool connection_cancel_success = (ac->fd != nullptr);
+ if (connection_cancel_success) {
+ // Connection is still pending. The on_writable callback hasn't executed
+ // yet because ac->fd != nullptr.
+ ac->connect_cancelled = true;
+ // Shutdown the fd. This would cause on_writable to run as soon as possible.
+ // We dont need to pass a custom error here because it wont be used since
+ // the on_connect_closure is not run if connect cancellation is successfull.
+ grpc_fd_shutdown(ac->fd, GRPC_ERROR_NONE);
+ }
+ bool done = (--ac->refs == 0);
+ gpr_mu_unlock(&ac->mu);
+ if (done) {
+ // This is safe even outside the lock, because "done", the sentinel, is
+ // populated *inside* the lock.
+ gpr_mu_destroy(&ac->mu);
+ delete ac;
}
- grpc_tcp_client_create_from_prepared_fd(interested_parties, closure, fd,
- channel_args, &mapped_addr, deadline,
- ep);
+ return connection_cancel_success;
}
-grpc_tcp_client_vtable grpc_posix_tcp_client_vtable = {tcp_connect};
+grpc_tcp_client_vtable grpc_posix_tcp_client_vtable = {tcp_connect,
+ tcp_cancel_connect};
#endif
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_posix.h b/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_posix.h
index 0dbd2b4dad..efb13d1ad9 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_posix.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_posix.h
@@ -23,23 +23,24 @@
#include "src/core/lib/iomgr/endpoint.h"
#include "src/core/lib/iomgr/ev_posix.h"
+#include "src/core/lib/iomgr/socket_utils_posix.h"
#include "src/core/lib/iomgr/tcp_client.h"
/* Create an endpoint from a connected grpc_fd.
fd: a connected FD. Ownership is taken.
- channel_args: may contain custom settings for the endpoint
+ config: may contain custom settings for the endpoint
addr_str: destination address in printable format
slice_allocator: ownership is taken by client.
Returns: a new endpoint
*/
-grpc_endpoint* grpc_tcp_client_create_from_fd(
- grpc_fd* fd, const grpc_channel_args* channel_args,
+grpc_endpoint* grpc_tcp_create_from_fd(
+ grpc_fd* fd, const grpc_event_engine::experimental::EndpointConfig& config,
y_absl::string_view addr_str);
/* Return a configured, unbound, unconnected TCP client fd.
- channel_args: may contain custom settings for the fd
+ options: may contain custom settings for the fd
addr: the destination address
mapped_addr: out parameter. addr mapped to an address appropriate to the
type of socket FD created. For example, if addr is IPv4 and dual stack
@@ -48,8 +49,9 @@ grpc_endpoint* grpc_tcp_client_create_from_fd(
Returns: error, if any. Out parameters are not set on error
*/
grpc_error_handle grpc_tcp_client_prepare_fd(
- const grpc_channel_args* channel_args, const grpc_resolved_address* addr,
- grpc_resolved_address* mapped_addr, int* fd);
+ const grpc_core::PosixTcpOptions& options,
+ const grpc_resolved_address* addr, grpc_resolved_address* mapped_addr,
+ int* fd);
/* Connect a configured TCP client fd.
@@ -57,13 +59,14 @@ grpc_error_handle grpc_tcp_client_prepare_fd(
connection being established (in order to continue their work
closure: called when complete. On success, *ep will be set.
fd: an FD returned from grpc_tcp_client_prepare_fd().
- channel_args: may contain custom settings for the endpoint
+ options: may contain custom settings for the endpoint
deadline: connection deadline
ep: out parameter. Set before closure is called if successful
*/
-void grpc_tcp_client_create_from_prepared_fd(
+int64_t grpc_tcp_client_create_from_prepared_fd(
grpc_pollset_set* interested_parties, grpc_closure* closure, const int fd,
- const grpc_channel_args* channel_args, const grpc_resolved_address* addr,
- grpc_core::Timestamp deadline, grpc_endpoint** ep);
+ const grpc_core::PosixTcpOptions& options,
+ const grpc_resolved_address* addr, grpc_core::Timestamp deadline,
+ grpc_endpoint** ep);
#endif /* GRPC_CORE_LIB_IOMGR_TCP_CLIENT_POSIX_H */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_windows.cc b/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_windows.cc
index 9c3a3aea96..a01da4ed80 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_windows.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_client_windows.cc
@@ -24,13 +24,13 @@
#ifdef GRPC_WINSOCK_SOCKET
+#include <grpc/event_engine/endpoint_config.h>
#include <grpc/slice_buffer.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/log_windows.h>
#include "src/core/lib/address_utils/sockaddr_utils.h"
-#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/iomgr/iocp_windows.h"
#include "src/core/lib/iomgr/sockaddr.h"
#include "src/core/lib/iomgr/sockaddr_windows.h"
@@ -38,8 +38,11 @@
#include "src/core/lib/iomgr/tcp_client.h"
#include "src/core/lib/iomgr/tcp_windows.h"
#include "src/core/lib/iomgr/timer.h"
+#include "src/core/lib/resource_quota/api.h"
#include "src/core/lib/slice/slice_internal.h"
+using ::grpc_event_engine::experimental::EndpointConfig;
+
struct async_connect {
grpc_closure* on_done;
gpr_mu mu;
@@ -50,7 +53,6 @@ struct async_connect {
int refs;
grpc_closure on_connect;
grpc_endpoint** endpoint;
- grpc_channel_args* channel_args;
};
static void async_connect_unlock_and_cleanup(async_connect* ac,
@@ -58,7 +60,6 @@ static void async_connect_unlock_and_cleanup(async_connect* ac,
int done = (--ac->refs == 0);
gpr_mu_unlock(&ac->mu);
if (done) {
- grpc_channel_args_destroy(ac->channel_args);
gpr_mu_destroy(&ac->mu);
delete ac;
}
@@ -93,7 +94,7 @@ static void on_connect(void* acp, grpc_error_handle error) {
gpr_mu_lock(&ac->mu);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
if (socket != NULL) {
DWORD transfered_bytes = 0;
DWORD flags;
@@ -105,7 +106,7 @@ static void on_connect(void* acp, grpc_error_handle error) {
error = GRPC_WSA_ERROR(WSAGetLastError(), "ConnectEx");
closesocket(socket->socket);
} else {
- *ep = grpc_tcp_create(socket, ac->channel_args, ac->addr_name);
+ *ep = grpc_tcp_create(socket, ac->addr_name);
socket = nullptr;
}
} else {
@@ -121,11 +122,11 @@ static void on_connect(void* acp, grpc_error_handle error) {
/* Tries to issue one async connection, then schedules both an IOCP
notification request for the connection, and one timeout alert. */
-static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
- grpc_pollset_set* interested_parties,
- const grpc_channel_args* channel_args,
- const grpc_resolved_address* addr,
- grpc_core::Timestamp deadline) {
+static int64_t tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
+ grpc_pollset_set* interested_parties,
+ const EndpointConfig& config,
+ const grpc_resolved_address* addr,
+ grpc_core::Timestamp deadline) {
SOCKET sock = INVALID_SOCKET;
BOOL success;
int status;
@@ -138,6 +139,13 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
grpc_winsocket_callback_info* info;
grpc_error_handle error = GRPC_ERROR_NONE;
async_connect* ac = NULL;
+ y_absl::StatusOr<TString> addr_uri;
+
+ addr_uri = grpc_sockaddr_to_uri(addr);
+ if (!addr_uri.ok()) {
+ error = GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_uri.status().ToString());
+ goto failure;
+ }
*endpoint = NULL;
@@ -154,7 +162,7 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
}
error = grpc_tcp_prepare_socket(sock);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
goto failure;
}
@@ -199,9 +207,8 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
ac->socket = socket;
gpr_mu_init(&ac->mu);
ac->refs = 2;
- ac->addr_name = grpc_sockaddr_to_uri(addr);
+ ac->addr_name = addr_uri.value();
ac->endpoint = endpoint;
- ac->channel_args = grpc_channel_args_copy(channel_args);
GRPC_CLOSURE_INIT(&ac->on_connect, on_connect, ac, grpc_schedule_on_exec_ctx);
GRPC_CLOSURE_INIT(&ac->on_alarm, on_alarm, ac, grpc_schedule_on_exec_ctx);
@@ -209,15 +216,15 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
grpc_timer_init(&ac->alarm, deadline, &ac->on_alarm);
grpc_socket_notify_on_write(socket, &ac->on_connect);
gpr_mu_unlock(&ac->mu);
- return;
+ return 0;
failure:
- GPR_ASSERT(error != GRPC_ERROR_NONE);
- TString target_uri = grpc_sockaddr_to_uri(addr);
- grpc_error_handle final_error =
- grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
- "Failed to connect", &error, 1),
- GRPC_ERROR_STR_TARGET_ADDRESS, target_uri);
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
+ grpc_error_handle final_error = grpc_error_set_str(
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING("Failed to connect",
+ &error, 1),
+ GRPC_ERROR_STR_TARGET_ADDRESS,
+ addr_uri.ok() ? *addr_uri : addr_uri.status().ToString());
GRPC_ERROR_UNREF(error);
if (socket != NULL) {
grpc_winsocket_destroy(socket);
@@ -225,8 +232,12 @@ failure:
closesocket(sock);
}
grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_done, final_error);
+ return 0;
}
-grpc_tcp_client_vtable grpc_windows_tcp_client_vtable = {tcp_connect};
+static bool tcp_cancel_connect(int64_t /*connection_handle*/) { return false; }
+
+grpc_tcp_client_vtable grpc_windows_tcp_client_vtable = {tcp_connect,
+ tcp_cancel_connect};
#endif /* GRPC_WINSOCK_SOCKET */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_posix.cc b/contrib/libs/grpc/src/core/lib/iomgr/tcp_posix.cc
index a42e3b3f04..bbac4c4b85 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_posix.cc
@@ -20,6 +20,7 @@
#include <grpc/impl/codegen/grpc_types.h>
+#include "src/core/lib/gprpp/global_config_generic.h"
#include "src/core/lib/iomgr/port.h"
#ifdef GRPC_POSIX_SOCKET_TCP
@@ -47,9 +48,9 @@
#include <grpc/support/time.h>
#include "src/core/lib/address_utils/sockaddr_utils.h"
-#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/debug/stats.h"
#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/experiments/experiments.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/sync.h"
@@ -58,9 +59,9 @@
#include "src/core/lib/iomgr/executor.h"
#include "src/core/lib/iomgr/socket_utils_posix.h"
#include "src/core/lib/iomgr/tcp_posix.h"
-#include "src/core/lib/profiling/timers.h"
#include "src/core/lib/resource_quota/api.h"
#include "src/core/lib/resource_quota/memory_quota.h"
+#include "src/core/lib/resource_quota/trace.h"
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/slice/slice_string_helpers.h"
@@ -231,7 +232,11 @@ class TcpZerocopySendCtx {
// buffers that were sent with the corresponding call to sendmsg().
void NoteSend(TcpZerocopySendRecord* record) {
record->Ref();
- AssociateSeqWithSendRecord(last_send_, record);
+ {
+ MutexLock guard(&lock_);
+ is_in_write_ = true;
+ AssociateSeqWithSendRecordLocked(last_send_, record);
+ }
++last_send_;
}
@@ -252,8 +257,8 @@ class TcpZerocopySendCtx {
// Simply associate this send record (and the underlying sent data buffers)
// with the implicit sequence number for this zerocopy sendmsg().
- void AssociateSeqWithSendRecord(uint32_t seq, TcpZerocopySendRecord* record) {
- MutexLock guard(&lock_);
+ void AssociateSeqWithSendRecordLocked(uint32_t seq,
+ TcpZerocopySendRecord* record) {
ctx_lookup_.emplace(seq, record);
}
@@ -311,7 +316,107 @@ class TcpZerocopySendCtx {
// zerocopy is not useful for small transfers.
size_t threshold_bytes() const { return threshold_bytes_; }
+ // Expected to be called by handler reading messages from the err queue.
+ // It is used to indicate that some OMem meory is now available. It returns
+ // true to tell the caller to mark the file descriptor as immediately
+ // writable.
+ //
+ // If a write is currently in progress on the socket (ie. we have issued a
+ // sendmsg() and are about to check its return value) then we set omem state
+ // to CHECK to make the sending thread know that some tcp_omem was
+ // concurrently freed even if sendmsg() returns ENOBUFS. In this case, since
+ // there is already an active send thread, we do not need to mark the
+ // socket writeable, so we return false.
+ //
+ // If there was no write in progress on the socket, and the socket was not
+ // marked as FULL, then we need not mark the socket writeable now that some
+ // tcp_omem memory is freed since it was not considered as blocked on
+ // tcp_omem to begin with. So in this case, return false.
+ //
+ // But, if a write was not in progress and the omem state was FULL, then we
+ // need to mark the socket writeable since it is no longer blocked by
+ // tcp_omem. In this case, return true.
+ //
+ // Please refer to the STATE TRANSITION DIAGRAM below for more details.
+ //
+ bool UpdateZeroCopyOMemStateAfterFree() {
+ MutexLock guard(&lock_);
+ if (is_in_write_) {
+ zcopy_enobuf_state_ = OMemState::CHECK;
+ return false;
+ }
+ GPR_DEBUG_ASSERT(zcopy_enobuf_state_ != OMemState::CHECK);
+ if (zcopy_enobuf_state_ == OMemState::FULL) {
+ // A previous sendmsg attempt was blocked by ENOBUFS. Return true to
+ // mark the fd as writable so the next write attempt could be made.
+ zcopy_enobuf_state_ = OMemState::OPEN;
+ return true;
+ } else if (zcopy_enobuf_state_ == OMemState::OPEN) {
+ // No need to mark the fd as writable because the previous write
+ // attempt did not encounter ENOBUFS.
+ return false;
+ } else {
+ // This state should never be reached because it implies that the previous
+ // state was CHECK and is_in_write is false. This means that after the
+ // previous sendmsg returned and set is_in_write to false, it did
+ // not update the z-copy change from CHECK to OPEN.
+ GPR_ASSERT(false && "OMem state error!");
+ }
+ }
+
+ // Expected to be called by the thread calling sendmsg after the syscall
+ // invocation. is complete. If an ENOBUF is seen, it checks if the error
+ // handler (Tx0cp completions) has already run and free'ed up some OMem. It
+ // returns true indicating that the write can be attempted again immediately.
+ // If ENOBUFS was seen but no Tx0cp completions have been received between the
+ // sendmsg() and us taking this lock, then tcp_omem is still full from our
+ // point of view. Therefore, we do not signal that the socket is writeable
+ // with respect to the availability of tcp_omem. Therefore the function
+ // returns false. This indicates that another write should not be attempted
+ // immediately and the calling thread should wait until the socket is writable
+ // again. If ENOBUFS was not seen, then again return false because the next
+ // write should be attempted only when the socket is writable again.
+ //
+ // Please refer to the STATE TRANSITION DIAGRAM below for more details.
+ //
+ bool UpdateZeroCopyOMemStateAfterSend(bool seen_enobuf) {
+ MutexLock guard(&lock_);
+ is_in_write_ = false;
+ if (seen_enobuf) {
+ if (zcopy_enobuf_state_ == OMemState::CHECK) {
+ zcopy_enobuf_state_ = OMemState::OPEN;
+ return true;
+ } else {
+ zcopy_enobuf_state_ = OMemState::FULL;
+ }
+ } else if (zcopy_enobuf_state_ != OMemState::OPEN) {
+ zcopy_enobuf_state_ = OMemState::OPEN;
+ }
+ return false;
+ }
+
private:
+ // STATE TRANSITION DIAGRAM
+ //
+ // sendmsg succeeds Tx-zero copy succeeds and there is no active sendmsg
+ // ----<<--+ +------<<-------------------------------------+
+ // | | | |
+ // | | v sendmsg returns ENOBUFS |
+ // +-----> OPEN ------------->>-------------------------> FULL
+ // ^ |
+ // | |
+ // | sendmsg completes |
+ // +----<<---------- CHECK <-------<<-------------+
+ // Tx-zero copy succeeds and there is
+ // an active sendmsg
+ //
+ enum class OMemState : int8_t {
+ OPEN, // Everything is clear and omem is not full.
+ FULL, // The last sendmsg() has returned with an errno of ENOBUFS.
+ CHECK, // Error queue is read while is_in_write_ was true, so we should
+ // check this state after the sendmsg.
+ };
+
TcpZerocopySendRecord* ReleaseSendRecordLocked(uint32_t seq) {
auto iter = ctx_lookup_.find(seq);
GPR_DEBUG_ASSERT(iter != ctx_lookup_.end());
@@ -348,6 +453,8 @@ class TcpZerocopySendCtx {
size_t threshold_bytes_ = kDefaultSendBytesThreshold;
std::unordered_map<uint32_t, TcpZerocopySendRecord*> ctx_lookup_;
bool memory_limited_ = false;
+ bool is_in_write_ = false;
+ OMemState zcopy_enobuf_state_;
};
} // namespace grpc_core
@@ -356,15 +463,21 @@ using grpc_core::TcpZerocopySendCtx;
using grpc_core::TcpZerocopySendRecord;
namespace {
+
struct grpc_tcp {
- grpc_tcp(int max_sends, size_t send_bytes_threshold)
- : tcp_zerocopy_send_ctx(max_sends, send_bytes_threshold) {}
+ explicit grpc_tcp(const grpc_core::PosixTcpOptions& tcp_options)
+ : min_read_chunk_size(tcp_options.tcp_min_read_chunk_size),
+ max_read_chunk_size(tcp_options.tcp_max_read_chunk_size),
+ tcp_zerocopy_send_ctx(
+ tcp_options.tcp_tx_zerocopy_max_simultaneous_sends,
+ tcp_options.tcp_tx_zerocopy_send_bytes_threshold) {}
grpc_endpoint base;
grpc_fd* em_fd;
int fd;
/* Used by the endpoint read function to distinguish the very first read call
* from the rest */
bool is_first_read;
+ bool has_posted_reclaimer Y_ABSL_GUARDED_BY(read_mu) = false;
double target_length;
double bytes_read_this_round;
grpc_core::RefCount refcount;
@@ -372,11 +485,13 @@ struct grpc_tcp {
int min_read_chunk_size;
int max_read_chunk_size;
+ int set_rcvlowat = 0;
/* garbage after the last read */
grpc_slice_buffer last_read_buffer;
- grpc_slice_buffer* incoming_buffer;
+ grpc_core::Mutex read_mu;
+ grpc_slice_buffer* incoming_buffer Y_ABSL_GUARDED_BY(read_mu) = nullptr;
int inq; /* bytes pending on the socket from the last read. */
bool inq_capable; /* cache whether kernel supports inq */
@@ -423,6 +538,11 @@ struct grpc_tcp {
on errors anymore */
TcpZerocopySendCtx tcp_zerocopy_send_ctx;
TcpZerocopySendRecord* current_zerocopy_send = nullptr;
+
+ bool frame_size_tuning_enabled;
+ int min_progress_size; /* A hint from upper layers specifying the minimum
+ number of bytes that need to be read to make
+ meaningful progress */
};
struct backup_poller {
@@ -462,8 +582,7 @@ static void run_poller(void* bp, grpc_error_handle /*error_ignored*/) {
}
gpr_mu_lock(p->pollset_mu);
grpc_core::Timestamp deadline =
- grpc_core::ExecCtx::Get()->Now() + grpc_core::Duration::Seconds(10);
- GRPC_STATS_INC_TCP_BACKUP_POLLER_POLLS();
+ grpc_core::Timestamp::Now() + grpc_core::Duration::Seconds(10);
GRPC_LOG_IF_ERROR(
"backup_poller:pollset_work",
grpc_pollset_work(BACKUP_POLLER_POLLSET(p), nullptr, deadline));
@@ -524,7 +643,6 @@ static void cover_self(grpc_tcp* tcp) {
g_backup_poller = p;
grpc_pollset_init(BACKUP_POLLER_POLLSET(p), &p->pollset_mu);
g_backup_poller_mu->Unlock();
- GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED();
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
gpr_log(GPR_INFO, "BACKUP_POLLER:%p create", p);
}
@@ -661,9 +779,35 @@ static void tcp_destroy(grpc_endpoint* ep) {
TCP_UNREF(tcp, "destroy");
}
-static void call_read_cb(grpc_tcp* tcp, grpc_error_handle error) {
- grpc_closure* cb = tcp->read_cb;
+static void perform_reclamation(grpc_tcp* tcp)
+ Y_ABSL_LOCKS_EXCLUDED(tcp->read_mu) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
+ gpr_log(GPR_INFO, "TCP: benign reclamation to free memory");
+ }
+ tcp->read_mu.Lock();
+ if (tcp->incoming_buffer != nullptr) {
+ grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
+ }
+ tcp->has_posted_reclaimer = false;
+ tcp->read_mu.Unlock();
+}
+static void maybe_post_reclaimer(grpc_tcp* tcp)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
+ if (!tcp->has_posted_reclaimer) {
+ tcp->has_posted_reclaimer = true;
+ tcp->memory_owner.PostReclaimer(
+ grpc_core::ReclamationPass::kBenign,
+ [tcp](y_absl::optional<grpc_core::ReclamationSweep> sweep) {
+ if (!sweep.has_value()) return;
+ perform_reclamation(tcp);
+ });
+ }
+}
+
+static void tcp_trace_read(grpc_tcp* tcp, grpc_error_handle error)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
+ grpc_closure* cb = tcp->read_cb;
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
gpr_log(GPR_INFO, "TCP:%p call_cb %p %p:%p", tcp, cb, cb->cb, cb->cb_arg);
size_t i;
@@ -678,15 +822,59 @@ static void call_read_cb(grpc_tcp* tcp, grpc_error_handle error) {
}
}
}
+}
- tcp->read_cb = nullptr;
- tcp->incoming_buffer = nullptr;
- grpc_core::Closure::Run(DEBUG_LOCATION, cb, error);
+static void update_rcvlowat(grpc_tcp* tcp)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
+ if (!grpc_core::IsTcpRcvLowatEnabled()) return;
+
+ // TODO(ctiller): Check if supported by OS.
+ // TODO(ctiller): Allow some adjustments instead of hardcoding things.
+
+ static constexpr int kRcvLowatMax = 16 * 1024 * 1024;
+ static constexpr int kRcvLowatThreshold = 16 * 1024;
+
+ int remaining = std::min(static_cast<int>(tcp->incoming_buffer->length),
+ tcp->min_progress_size);
+ remaining = std::min(remaining, kRcvLowatMax);
+
+ // Setting SO_RCVLOWAT for small quantities does not save on CPU.
+ if (remaining < kRcvLowatThreshold) {
+ remaining = 0;
+ }
+
+ // If zerocopy is off, wake shortly before the full RPC is here. More can
+ // show up partway through recvmsg() since it takes a while to copy data.
+ // So an early wakeup aids latency.
+ if (!tcp->tcp_zerocopy_send_ctx.enabled() && remaining > 0) {
+ remaining -= kRcvLowatThreshold;
+ }
+
+ // We still do not know the RPC size. Do not set SO_RCVLOWAT.
+ if (tcp->set_rcvlowat <= 1 && remaining <= 1) return;
+
+ // Previous value is still valid. No change needed in SO_RCVLOWAT.
+ if (tcp->set_rcvlowat == remaining) {
+ return;
+ }
+ if (setsockopt(tcp->fd, SOL_SOCKET, SO_RCVLOWAT, &remaining,
+ sizeof(remaining)) != 0) {
+ gpr_log(GPR_ERROR, "%s",
+ y_absl::StrCat("Cannot set SO_RCVLOWAT on fd=", tcp->fd,
+ " err=", strerror(errno))
+ .c_str());
+ return;
+ }
+ tcp->set_rcvlowat = remaining;
}
-#define MAX_READ_IOVEC 4
-static void tcp_do_read(grpc_tcp* tcp) {
- GPR_TIMER_SCOPE("tcp_do_read", 0);
+/* Returns true if data available to read or error other than EAGAIN. */
+#define MAX_READ_IOVEC 64
+static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
+ gpr_log(GPR_INFO, "TCP:%p do_read", tcp);
+ }
struct msghdr msg;
struct iovec iov[MAX_READ_IOVEC];
ssize_t read_bytes;
@@ -706,6 +894,7 @@ static void tcp_do_read(grpc_tcp* tcp) {
}
GPR_ASSERT(tcp->incoming_buffer->length != 0);
+ GPR_DEBUG_ASSERT(tcp->min_progress_size > 0);
do {
/* Assume there is something on the queue. If we receive TCP_INQ from
@@ -730,14 +919,14 @@ static void tcp_do_read(grpc_tcp* tcp) {
GRPC_STATS_INC_TCP_READ_OFFER_IOV_SIZE(tcp->incoming_buffer->count);
do {
- GPR_TIMER_SCOPE("recvmsg", 0);
GRPC_STATS_INC_SYSCALL_READ();
read_bytes = recvmsg(tcp->fd, &msg, 0);
} while (read_bytes < 0 && errno == EINTR);
/* We have read something in previous reads. We need to deliver those
* bytes to the upper layer. */
- if (read_bytes <= 0 && total_read_bytes > 0) {
+ if (read_bytes <= 0 &&
+ total_read_bytes >= static_cast<size_t>(tcp->min_progress_size)) {
tcp->inq = 1;
break;
}
@@ -746,17 +935,17 @@ static void tcp_do_read(grpc_tcp* tcp) {
/* NB: After calling call_read_cb a parallel call of the read handler may
* be running. */
if (errno == EAGAIN) {
+ if (total_read_bytes > 0) {
+ break;
+ }
finish_estimate(tcp);
tcp->inq = 0;
- /* We've consumed the edge, request a new one */
- notify_on_read(tcp);
+ return false;
} else {
grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
- call_read_cb(tcp,
- tcp_annotate_error(GRPC_OS_ERROR(errno, "recvmsg"), tcp));
- TCP_UNREF(tcp, "read");
+ *error = tcp_annotate_error(GRPC_OS_ERROR(errno, "recvmsg"), tcp);
+ return true;
}
- return;
}
if (read_bytes == 0) {
/* 0 read size ==> end of stream
@@ -765,11 +954,9 @@ static void tcp_do_read(grpc_tcp* tcp) {
* since the connection is closed we will drop the data here, because we
* can't call the callback multiple times. */
grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
- call_read_cb(
- tcp, tcp_annotate_error(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Socket closed"), tcp));
- TCP_UNREF(tcp, "read");
- return;
+ *error = tcp_annotate_error(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Socket closed"), tcp);
+ return true;
}
GRPC_STATS_INC_TCP_READ_SIZE(read_bytes);
@@ -823,39 +1010,104 @@ static void tcp_do_read(grpc_tcp* tcp) {
}
GPR_DEBUG_ASSERT(total_read_bytes > 0);
+ *error = GRPC_ERROR_NONE;
+ if (tcp->frame_size_tuning_enabled) {
+ // Update min progress size based on the total number of bytes read in
+ // this round.
+ tcp->min_progress_size -= total_read_bytes;
+ if (tcp->min_progress_size > 0) {
+ // There is still some bytes left to be read before we can signal
+ // the read as complete. Append the bytes read so far into
+ // last_read_buffer which serves as a staging buffer. Return false
+ // to indicate tcp_handle_read needs to be scheduled again.
+ grpc_slice_buffer_move_first(tcp->incoming_buffer, total_read_bytes,
+ &tcp->last_read_buffer);
+ return false;
+ } else {
+ // The required number of bytes have been read. Append the bytes
+ // read in this round into last_read_buffer. Then swap last_read_buffer
+ // and incoming_buffer. Now incoming buffer contains all the bytes
+ // read since the start of the last tcp_read operation. last_read_buffer
+ // would contain any spare space left in the incoming buffer. This
+ // space will be used in the next tcp_read operation.
+ tcp->min_progress_size = 1;
+ grpc_slice_buffer_move_first(tcp->incoming_buffer, total_read_bytes,
+ &tcp->last_read_buffer);
+ grpc_slice_buffer_swap(&tcp->last_read_buffer, tcp->incoming_buffer);
+ return true;
+ }
+ }
if (total_read_bytes < tcp->incoming_buffer->length) {
grpc_slice_buffer_trim_end(tcp->incoming_buffer,
tcp->incoming_buffer->length - total_read_bytes,
&tcp->last_read_buffer);
}
- call_read_cb(tcp, GRPC_ERROR_NONE);
- TCP_UNREF(tcp, "read");
+ return true;
}
-static void tcp_continue_read(grpc_tcp* tcp) {
- if (tcp->incoming_buffer->length == 0 &&
- tcp->incoming_buffer->count < MAX_READ_IOVEC) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
- gpr_log(GPR_INFO,
- "TCP:%p alloc_slices; min_chunk=%d max_chunk=%d target=%lf "
- "buf_len=%" PRIdPTR,
- tcp, tcp->min_read_chunk_size, tcp->max_read_chunk_size,
- tcp->target_length, tcp->incoming_buffer->length);
+static void maybe_make_read_slices(grpc_tcp* tcp)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
+ if (grpc_core::IsTcpReadChunksEnabled()) {
+ static const int kBigAlloc = 64 * 1024;
+ static const int kSmallAlloc = 8 * 1024;
+ if (tcp->incoming_buffer->length <
+ static_cast<size_t>(tcp->min_progress_size)) {
+ size_t allocate_length = tcp->min_progress_size;
+ const size_t target_length = static_cast<size_t>(tcp->target_length);
+ // If memory pressure is low and we think there will be more than
+ // min_progress_size bytes to read, allocate a bit more.
+ const bool low_memory_pressure =
+ tcp->memory_owner.GetPressureInfo().pressure_control_value < 0.8;
+ if (low_memory_pressure && target_length > allocate_length) {
+ allocate_length = target_length;
+ }
+ int extra_wanted =
+ allocate_length - static_cast<int>(tcp->incoming_buffer->length);
+ if (extra_wanted >=
+ (low_memory_pressure ? kSmallAlloc * 3 / 2 : kBigAlloc)) {
+ while (extra_wanted > 0) {
+ extra_wanted -= kBigAlloc;
+ grpc_slice_buffer_add_indexed(tcp->incoming_buffer,
+ tcp->memory_owner.MakeSlice(kBigAlloc));
+ GRPC_STATS_INC_TCP_READ_ALLOC_64K();
+ }
+ } else {
+ while (extra_wanted > 0) {
+ extra_wanted -= kSmallAlloc;
+ grpc_slice_buffer_add_indexed(
+ tcp->incoming_buffer, tcp->memory_owner.MakeSlice(kSmallAlloc));
+ GRPC_STATS_INC_TCP_READ_ALLOC_8K();
+ }
+ }
+ maybe_post_reclaimer(tcp);
+ }
+ } else {
+ if (tcp->incoming_buffer->length <
+ static_cast<size_t>(tcp->min_progress_size) &&
+ tcp->incoming_buffer->count < MAX_READ_IOVEC) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
+ gpr_log(GPR_INFO,
+ "TCP:%p alloc_slices; min_chunk=%d max_chunk=%d target=%lf "
+ "buf_len=%" PRIdPTR,
+ tcp, tcp->min_read_chunk_size, tcp->max_read_chunk_size,
+ tcp->target_length, tcp->incoming_buffer->length);
+ }
+ int target_length = std::max(static_cast<int>(tcp->target_length),
+ tcp->min_progress_size);
+ int extra_wanted =
+ target_length - static_cast<int>(tcp->incoming_buffer->length);
+ int min_read_chunk_size =
+ std::max(tcp->min_read_chunk_size, tcp->min_progress_size);
+ int max_read_chunk_size =
+ std::max(tcp->max_read_chunk_size, tcp->min_progress_size);
+ grpc_slice slice = tcp->memory_owner.MakeSlice(grpc_core::MemoryRequest(
+ min_read_chunk_size,
+ grpc_core::Clamp(extra_wanted, min_read_chunk_size,
+ max_read_chunk_size)));
+ grpc_slice_buffer_add_indexed(tcp->incoming_buffer, slice);
+ maybe_post_reclaimer(tcp);
}
- int target_length = static_cast<int>(tcp->target_length);
- int extra_wanted =
- target_length - static_cast<int>(tcp->incoming_buffer->length);
- grpc_slice_buffer_add_indexed(
- tcp->incoming_buffer,
- tcp->memory_owner.MakeSlice(grpc_core::MemoryRequest(
- tcp->min_read_chunk_size,
- grpc_core::Clamp(extra_wanted, tcp->min_read_chunk_size,
- tcp->max_read_chunk_size))));
- }
- if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
- gpr_log(GPR_INFO, "TCP:%p do_read", tcp);
}
- tcp_do_read(tcp);
}
static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
@@ -864,37 +1116,59 @@ static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error) {
gpr_log(GPR_INFO, "TCP:%p got_read: %s", tcp,
grpc_error_std_string(error).c_str());
}
-
- if (GPR_UNLIKELY(error != GRPC_ERROR_NONE)) {
+ tcp->read_mu.Lock();
+ grpc_error_handle tcp_read_error;
+ if (GPR_LIKELY(GRPC_ERROR_IS_NONE(error))) {
+ maybe_make_read_slices(tcp);
+ if (!tcp_do_read(tcp, &tcp_read_error)) {
+ /* We've consumed the edge, request a new one */
+ update_rcvlowat(tcp);
+ tcp->read_mu.Unlock();
+ notify_on_read(tcp);
+ return;
+ }
+ tcp_trace_read(tcp, tcp_read_error);
+ } else {
+ tcp_read_error = GRPC_ERROR_REF(error);
grpc_slice_buffer_reset_and_unref_internal(tcp->incoming_buffer);
grpc_slice_buffer_reset_and_unref_internal(&tcp->last_read_buffer);
- call_read_cb(tcp, GRPC_ERROR_REF(error));
- TCP_UNREF(tcp, "read");
- } else {
- tcp_continue_read(tcp);
}
+ grpc_closure* cb = tcp->read_cb;
+ tcp->read_cb = nullptr;
+ tcp->incoming_buffer = nullptr;
+ tcp->read_mu.Unlock();
+ grpc_core::Closure::Run(DEBUG_LOCATION, cb, tcp_read_error);
+ TCP_UNREF(tcp, "read");
}
static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
- grpc_closure* cb, bool urgent) {
+ grpc_closure* cb, bool urgent, int min_progress_size) {
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
GPR_ASSERT(tcp->read_cb == nullptr);
tcp->read_cb = cb;
+ tcp->read_mu.Lock();
tcp->incoming_buffer = incoming_buffer;
+ tcp->min_progress_size =
+ tcp->frame_size_tuning_enabled ? min_progress_size : 1;
grpc_slice_buffer_reset_and_unref_internal(incoming_buffer);
grpc_slice_buffer_swap(incoming_buffer, &tcp->last_read_buffer);
TCP_REF(tcp, "read");
if (tcp->is_first_read) {
+ update_rcvlowat(tcp);
+ tcp->read_mu.Unlock();
/* Endpoint read called for the very first time. Register read callback with
* the polling engine */
tcp->is_first_read = false;
notify_on_read(tcp);
} else if (!urgent && tcp->inq == 0) {
+ update_rcvlowat(tcp);
+ tcp->read_mu.Unlock();
/* Upper layer asked to read more but we know there is no pending data
* to read from previous reads. So, wait for POLLIN.
*/
notify_on_read(tcp);
} else {
+ tcp->read_mu.Unlock();
/* Not the first time. We may or may not have more bytes available. In any
* case call tcp->read_done_closure (i.e tcp_handle_read()) which does the
* right thing (i.e calls tcp_do_read() which either reads the available
@@ -907,14 +1181,14 @@ static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
/* A wrapper around sendmsg. It sends \a msg over \a fd and returns the number
* of bytes sent. */
-ssize_t tcp_send(int fd, const struct msghdr* msg, int additional_flags = 0) {
- GPR_TIMER_SCOPE("sendmsg", 1);
+ssize_t tcp_send(int fd, const struct msghdr* msg, int* saved_errno,
+ int additional_flags = 0) {
ssize_t sent_length;
do {
/* TODO(klempner): Cork if this is a partial write */
GRPC_STATS_INC_SYSCALL_WRITE();
sent_length = sendmsg(fd, msg, SENDMSG_FLAGS | additional_flags);
- } while (sent_length < 0 && errno == EINTR);
+ } while (sent_length < 0 && (*saved_errno = errno) == EINTR);
return sent_length;
}
@@ -926,7 +1200,7 @@ ssize_t tcp_send(int fd, const struct msghdr* msg, int additional_flags = 0) {
*/
static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
size_t sending_length,
- ssize_t* sent_length,
+ ssize_t* sent_length, int* saved_errno,
int additional_flags = 0);
/** The callback function to be invoked when we get an error on the socket. */
@@ -970,7 +1244,7 @@ static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* tcp) {
static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
size_t sending_length,
- ssize_t* sent_length,
+ ssize_t* sent_length, int* saved_errno,
int additional_flags) {
if (!tcp->socket_ts_enabled) {
uint32_t opt = grpc_core::kTimestampingSocketOptions;
@@ -999,7 +1273,7 @@ static bool tcp_write_with_timestamps(grpc_tcp* tcp, struct msghdr* msg,
msg->msg_controllen = CMSG_SPACE(sizeof(uint32_t));
/* If there was an error on sendmsg the logic in tcp_flush will handle it. */
- ssize_t length = tcp_send(tcp->fd, msg, additional_flags);
+ ssize_t length = tcp_send(tcp->fd, msg, saved_errno, additional_flags);
*sent_length = length;
/* Only save timestamps if all the bytes were taken by sendmsg. */
if (sending_length == static_cast<size_t>(length)) {
@@ -1034,6 +1308,9 @@ static void process_zerocopy(grpc_tcp* tcp, struct cmsghdr* cmsg) {
GPR_DEBUG_ASSERT(record);
UnrefMaybePutZerocopySendRecord(tcp, record, seq, "CALLBACK RCVD");
}
+ if (tcp->tcp_zerocopy_send_ctx.UpdateZeroCopyOMemStateAfterFree()) {
+ grpc_fd_set_writable(tcp->em_fd);
+ }
}
// Whether the cmsg received from error queue is of the IPv4 or IPv6 levels.
@@ -1193,7 +1470,7 @@ static void tcp_handle_error(void* arg /* grpc_tcp */,
grpc_error_std_string(error).c_str());
}
- if (error != GRPC_ERROR_NONE ||
+ if (!GRPC_ERROR_IS_NONE(error) ||
static_cast<bool>(gpr_atm_acq_load(&tcp->stop_error_notification))) {
/* We aren't going to register to hear on error anymore, so it is safe to
* unref. */
@@ -1224,6 +1501,7 @@ static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* /*tcp*/) {}
static bool tcp_write_with_timestamps(grpc_tcp* /*tcp*/, struct msghdr* /*msg*/,
size_t /*sending_length*/,
ssize_t* /*sent_length*/,
+ int* /* saved_errno */,
int /*additional_flags*/) {
gpr_log(GPR_ERROR, "Write with timestamps not supported for this platform");
GPR_ASSERT(0);
@@ -1304,6 +1582,7 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
size_t unwind_slice_idx;
size_t unwind_byte_idx;
bool tried_sending_message;
+ int saved_errno;
msghdr msg;
// iov consumes a large space. Keep it as the last item on the stack to
// improve locality. After all, we expect only the first elements of it being
@@ -1322,10 +1601,11 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
// Before calling sendmsg (with or without timestamps): we
// take a single ref on the zerocopy send record.
tcp->tcp_zerocopy_send_ctx.NoteSend(record);
+ saved_errno = 0;
if (tcp->outgoing_buffer_arg != nullptr) {
if (!tcp->ts_capable ||
!tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length,
- MSG_ZEROCOPY)) {
+ &saved_errno, MSG_ZEROCOPY)) {
/* We could not set socket options to collect Fathom timestamps.
* Fallback on writing without timestamps. */
tcp->ts_capable = false;
@@ -1339,20 +1619,24 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record,
msg.msg_controllen = 0;
GRPC_STATS_INC_TCP_WRITE_SIZE(sending_length);
GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(iov_size);
- sent_length = tcp_send(tcp->fd, &msg, MSG_ZEROCOPY);
+ sent_length = tcp_send(tcp->fd, &msg, &saved_errno, MSG_ZEROCOPY);
+ }
+ if (tcp->tcp_zerocopy_send_ctx.UpdateZeroCopyOMemStateAfterSend(
+ saved_errno == ENOBUFS)) {
+ grpc_fd_set_writable(tcp->em_fd);
}
if (sent_length < 0) {
// If this particular send failed, drop ref taken earlier in this method.
tcp->tcp_zerocopy_send_ctx.UndoSend();
- if (errno == EAGAIN) {
+ if (saved_errno == EAGAIN || saved_errno == ENOBUFS) {
record->UnwindIfThrottled(unwind_slice_idx, unwind_byte_idx);
return false;
- } else if (errno == EPIPE) {
- *error = tcp_annotate_error(GRPC_OS_ERROR(errno, "sendmsg"), tcp);
+ } else if (saved_errno == EPIPE) {
+ *error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
tcp_shutdown_buffer_list(tcp);
return true;
} else {
- *error = tcp_annotate_error(GRPC_OS_ERROR(errno, "sendmsg"), tcp);
+ *error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
tcp_shutdown_buffer_list(tcp);
return true;
}
@@ -1396,6 +1680,7 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
size_t trailing;
size_t unwind_slice_idx;
size_t unwind_byte_idx;
+ int saved_errno;
// We always start at zero, because we eagerly unref and trim the slice
// buffer as we write
@@ -1427,9 +1712,11 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
msg.msg_iovlen = iov_size;
msg.msg_flags = 0;
bool tried_sending_message = false;
+ saved_errno = 0;
if (tcp->outgoing_buffer_arg != nullptr) {
if (!tcp->ts_capable ||
- !tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length)) {
+ !tcp_write_with_timestamps(tcp, &msg, sending_length, &sent_length,
+ &saved_errno)) {
/* We could not set socket options to collect Fathom timestamps.
* Fallback on writing without timestamps. */
tcp->ts_capable = false;
@@ -1445,11 +1732,11 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
GRPC_STATS_INC_TCP_WRITE_SIZE(sending_length);
GRPC_STATS_INC_TCP_WRITE_IOV_SIZE(iov_size);
- sent_length = tcp_send(tcp->fd, &msg);
+ sent_length = tcp_send(tcp->fd, &msg, &saved_errno);
}
if (sent_length < 0) {
- if (errno == EAGAIN) {
+ if (saved_errno == EAGAIN || saved_errno == ENOBUFS) {
tcp->outgoing_byte_idx = unwind_byte_idx;
// unref all and forget about all slices that have been written to this
// point
@@ -1457,13 +1744,13 @@ static bool tcp_flush(grpc_tcp* tcp, grpc_error_handle* error) {
grpc_slice_buffer_remove_first(tcp->outgoing_buffer);
}
return false;
- } else if (errno == EPIPE) {
- *error = tcp_annotate_error(GRPC_OS_ERROR(errno, "sendmsg"), tcp);
+ } else if (saved_errno == EPIPE) {
+ *error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
grpc_slice_buffer_reset_and_unref_internal(tcp->outgoing_buffer);
tcp_shutdown_buffer_list(tcp);
return true;
} else {
- *error = tcp_annotate_error(GRPC_OS_ERROR(errno, "sendmsg"), tcp);
+ *error = tcp_annotate_error(GRPC_OS_ERROR(saved_errno, "sendmsg"), tcp);
grpc_slice_buffer_reset_and_unref_internal(tcp->outgoing_buffer);
tcp_shutdown_buffer_list(tcp);
return true;
@@ -1499,7 +1786,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
grpc_tcp* tcp = static_cast<grpc_tcp*>(arg);
grpc_closure* cb;
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
cb = tcp->write_cb;
tcp->write_cb = nullptr;
if (tcp->current_zerocopy_send != nullptr) {
@@ -1511,7 +1798,6 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
TCP_UNREF(tcp, "write");
return;
}
-
bool flush_result =
tcp->current_zerocopy_send != nullptr
? tcp_flush_zerocopy(tcp, tcp->current_zerocopy_send, &error)
@@ -1522,7 +1808,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
}
notify_on_write(tcp);
// tcp_flush does not populate error if it has returned false.
- GPR_DEBUG_ASSERT(error == GRPC_ERROR_NONE);
+ GPR_DEBUG_ASSERT(GRPC_ERROR_IS_NONE(error));
} else {
cb = tcp->write_cb;
tcp->write_cb = nullptr;
@@ -1537,8 +1823,7 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
}
static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
- grpc_closure* cb, void* arg) {
- GPR_TIMER_SCOPE("tcp_write", 0);
+ grpc_closure* cb, void* arg, int /*max_frame_size*/) {
grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
grpc_error_handle error = GRPC_ERROR_NONE;
TcpZerocopySendRecord* zerocopy_send_record = nullptr;
@@ -1659,92 +1944,35 @@ static const grpc_endpoint_vtable vtable = {tcp_read,
tcp_get_fd,
tcp_can_track_err};
-#define MAX_CHUNK_SIZE (32 * 1024 * 1024)
-
grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
- const grpc_channel_args* channel_args,
+ const grpc_core::PosixTcpOptions& options,
y_absl::string_view peer_string) {
- static constexpr bool kZerocpTxEnabledDefault = false;
- int tcp_read_chunk_size = GRPC_TCP_DEFAULT_READ_SLICE_SIZE;
- int tcp_max_read_chunk_size = 4 * 1024 * 1024;
- int tcp_min_read_chunk_size = 256;
- bool tcp_tx_zerocopy_enabled = kZerocpTxEnabledDefault;
- int tcp_tx_zerocopy_send_bytes_thresh =
- grpc_core::TcpZerocopySendCtx::kDefaultSendBytesThreshold;
- int tcp_tx_zerocopy_max_simult_sends =
- grpc_core::TcpZerocopySendCtx::kDefaultMaxSends;
- if (channel_args != nullptr) {
- for (size_t i = 0; i < channel_args->num_args; i++) {
- if (0 ==
- strcmp(channel_args->args[i].key, GRPC_ARG_TCP_READ_CHUNK_SIZE)) {
- grpc_integer_options options = {tcp_read_chunk_size, 1, MAX_CHUNK_SIZE};
- tcp_read_chunk_size =
- grpc_channel_arg_get_integer(&channel_args->args[i], options);
- } else if (0 == strcmp(channel_args->args[i].key,
- GRPC_ARG_TCP_MIN_READ_CHUNK_SIZE)) {
- grpc_integer_options options = {tcp_read_chunk_size, 1, MAX_CHUNK_SIZE};
- tcp_min_read_chunk_size =
- grpc_channel_arg_get_integer(&channel_args->args[i], options);
- } else if (0 == strcmp(channel_args->args[i].key,
- GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE)) {
- grpc_integer_options options = {tcp_read_chunk_size, 1, MAX_CHUNK_SIZE};
- tcp_max_read_chunk_size =
- grpc_channel_arg_get_integer(&channel_args->args[i], options);
- } else if (0 == strcmp(channel_args->args[i].key,
- GRPC_ARG_TCP_TX_ZEROCOPY_ENABLED)) {
- tcp_tx_zerocopy_enabled = grpc_channel_arg_get_bool(
- &channel_args->args[i], kZerocpTxEnabledDefault);
- } else if (0 == strcmp(channel_args->args[i].key,
- GRPC_ARG_TCP_TX_ZEROCOPY_SEND_BYTES_THRESHOLD)) {
- grpc_integer_options options = {
- grpc_core::TcpZerocopySendCtx::kDefaultSendBytesThreshold, 0,
- INT_MAX};
- tcp_tx_zerocopy_send_bytes_thresh =
- grpc_channel_arg_get_integer(&channel_args->args[i], options);
- } else if (0 == strcmp(channel_args->args[i].key,
- GRPC_ARG_TCP_TX_ZEROCOPY_MAX_SIMULT_SENDS)) {
- grpc_integer_options options = {
- grpc_core::TcpZerocopySendCtx::kDefaultMaxSends, 0, INT_MAX};
- tcp_tx_zerocopy_max_simult_sends =
- grpc_channel_arg_get_integer(&channel_args->args[i], options);
- }
- }
- }
-
- if (tcp_min_read_chunk_size > tcp_max_read_chunk_size) {
- tcp_min_read_chunk_size = tcp_max_read_chunk_size;
- }
- tcp_read_chunk_size = grpc_core::Clamp(
- tcp_read_chunk_size, tcp_min_read_chunk_size, tcp_max_read_chunk_size);
-
- grpc_tcp* tcp = new grpc_tcp(tcp_tx_zerocopy_max_simult_sends,
- tcp_tx_zerocopy_send_bytes_thresh);
+ grpc_tcp* tcp = new grpc_tcp(options);
tcp->base.vtable = &vtable;
tcp->peer_string = TString(peer_string);
tcp->fd = grpc_fd_wrapped_fd(em_fd);
- tcp->memory_owner = grpc_core::ResourceQuotaFromChannelArgs(channel_args)
- ->memory_quota()
- ->CreateMemoryOwner(peer_string);
+ GPR_ASSERT(options.resource_quota != nullptr);
+ tcp->memory_owner =
+ options.resource_quota->memory_quota()->CreateMemoryOwner(peer_string);
tcp->self_reservation = tcp->memory_owner.MakeReservation(sizeof(grpc_tcp));
grpc_resolved_address resolved_local_addr;
memset(&resolved_local_addr, 0, sizeof(resolved_local_addr));
resolved_local_addr.len = sizeof(resolved_local_addr.addr);
+ y_absl::StatusOr<TString> addr_uri;
if (getsockname(tcp->fd,
reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
- &resolved_local_addr.len) < 0) {
+ &resolved_local_addr.len) < 0 ||
+ !(addr_uri = grpc_sockaddr_to_uri(&resolved_local_addr)).ok()) {
tcp->local_address = "";
} else {
- tcp->local_address = grpc_sockaddr_to_uri(&resolved_local_addr);
+ tcp->local_address = addr_uri.value();
}
tcp->read_cb = nullptr;
tcp->write_cb = nullptr;
tcp->current_zerocopy_send = nullptr;
tcp->release_fd_cb = nullptr;
tcp->release_fd = nullptr;
- tcp->incoming_buffer = nullptr;
- tcp->target_length = static_cast<double>(tcp_read_chunk_size);
- tcp->min_read_chunk_size = tcp_min_read_chunk_size;
- tcp->max_read_chunk_size = tcp_max_read_chunk_size;
+ tcp->target_length = static_cast<double>(options.tcp_read_chunk_size);
tcp->bytes_read_this_round = 0;
/* Will be set to false by the very first endpoint read function */
tcp->is_first_read = true;
@@ -1752,7 +1980,10 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
tcp->socket_ts_enabled = false;
tcp->ts_capable = true;
tcp->outgoing_buffer_arg = nullptr;
- if (tcp_tx_zerocopy_enabled && !tcp->tcp_zerocopy_send_ctx.memory_limited()) {
+ tcp->frame_size_tuning_enabled = grpc_core::IsTcpFrameSizeTuningEnabled();
+ tcp->min_progress_size = 1;
+ if (options.tcp_tx_zero_copy_enabled &&
+ !tcp->tcp_zerocopy_send_ctx.memory_limited()) {
#ifdef GRPC_LINUX_ERRQUEUE
const int enable = 1;
auto err =
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_posix.h b/contrib/libs/grpc/src/core/lib/iomgr/tcp_posix.h
index 9932688b9a..5fba64a23f 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_posix.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_posix.h
@@ -36,12 +36,14 @@
#include "src/core/lib/iomgr/endpoint.h"
#include "src/core/lib/iomgr/ev_posix.h"
#include "src/core/lib/iomgr/port.h"
+#include "src/core/lib/iomgr/socket_utils_posix.h"
extern grpc_core::TraceFlag grpc_tcp_trace;
/// Create a tcp endpoint given a file desciptor and a read slice size.
/// Takes ownership of \a fd. Takes ownership of the \a slice_allocator.
-grpc_endpoint* grpc_tcp_create(grpc_fd* fd, const grpc_channel_args* args,
+grpc_endpoint* grpc_tcp_create(grpc_fd* fd,
+ const grpc_core::PosixTcpOptions& options,
y_absl::string_view peer_string);
/// Return the tcp endpoint's fd, or -1 if this is not available. Does not
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_server.cc b/contrib/libs/grpc/src/core/lib/iomgr/tcp_server.cc
index 8d6fefbbb2..0c762c559f 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_server.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_server.cc
@@ -22,10 +22,11 @@
grpc_tcp_server_vtable* grpc_tcp_server_impl;
-grpc_error_handle grpc_tcp_server_create(grpc_closure* shutdown_complete,
- const grpc_channel_args* args,
- grpc_tcp_server** server) {
- return grpc_tcp_server_impl->create(shutdown_complete, args, server);
+grpc_error_handle grpc_tcp_server_create(
+ grpc_closure* shutdown_complete,
+ const grpc_event_engine::experimental::EndpointConfig& config,
+ grpc_tcp_server** server) {
+ return grpc_tcp_server_impl->create(shutdown_complete, config, server);
}
void grpc_tcp_server_start(grpc_tcp_server* server,
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_server.h b/contrib/libs/grpc/src/core/lib/iomgr/tcp_server.h
index 9c88428021..93fdc30b19 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_server.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_server.h
@@ -23,6 +23,7 @@
#include <vector>
+#include <grpc/event_engine/endpoint_config.h>
#include <grpc/grpc.h>
#include <grpc/impl/codegen/grpc_types.h>
@@ -63,9 +64,10 @@ class TcpServerFdHandler {
} // namespace grpc_core
typedef struct grpc_tcp_server_vtable {
- grpc_error_handle (*create)(grpc_closure* shutdown_complete,
- const grpc_channel_args* args,
- grpc_tcp_server** server);
+ grpc_error_handle (*create)(
+ grpc_closure* shutdown_complete,
+ const grpc_event_engine::experimental::EndpointConfig& config,
+ grpc_tcp_server** server);
void (*start)(grpc_tcp_server* server,
const std::vector<grpc_pollset*>* pollsets,
grpc_tcp_server_cb on_accept_cb, void* cb_arg);
@@ -86,9 +88,10 @@ typedef struct grpc_tcp_server_vtable {
If shutdown_complete is not NULL, it will be used by
grpc_tcp_server_unref() when the ref count reaches zero.
Takes ownership of the slice_allocator_factory. */
-grpc_error_handle grpc_tcp_server_create(grpc_closure* shutdown_complete,
- const grpc_channel_args* args,
- grpc_tcp_server** server);
+grpc_error_handle grpc_tcp_server_create(
+ grpc_closure* shutdown_complete,
+ const grpc_event_engine::experimental::EndpointConfig& config,
+ grpc_tcp_server** server);
/* Start listening to bound ports */
void grpc_tcp_server_start(grpc_tcp_server* server,
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_posix.cc b/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_posix.cc
index a6c999208a..db0a6d7103 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_posix.cc
@@ -29,6 +29,7 @@
#include <errno.h>
#include <fcntl.h>
+#include <inttypes.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <string.h>
@@ -44,13 +45,13 @@
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
+#include <grpc/event_engine/endpoint_config.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
#include <grpc/support/time.h>
#include "src/core/lib/address_utils/sockaddr_utils.h"
-#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/iomgr/exec_ctx.h"
@@ -63,31 +64,23 @@
#include "src/core/lib/iomgr/unix_sockets_posix.h"
#include "src/core/lib/resource_quota/api.h"
+static std::atomic<int64_t> num_dropped_connections{0};
+
+using ::grpc_event_engine::experimental::EndpointConfig;
+
static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
- const grpc_channel_args* args,
+ const EndpointConfig& config,
grpc_tcp_server** server) {
grpc_tcp_server* s = new grpc_tcp_server;
s->so_reuseport = grpc_is_socket_reuse_port_supported();
s->expand_wildcard_addrs = false;
- for (size_t i = 0; i < (args == nullptr ? 0 : args->num_args); i++) {
- if (0 == strcmp(GRPC_ARG_ALLOW_REUSEPORT, args->args[i].key)) {
- if (args->args[i].type == GRPC_ARG_INTEGER) {
- s->so_reuseport = grpc_is_socket_reuse_port_supported() &&
- (args->args[i].value.integer != 0);
- } else {
- gpr_free(s);
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(GRPC_ARG_ALLOW_REUSEPORT
- " must be an integer");
- }
- } else if (0 == strcmp(GRPC_ARG_EXPAND_WILDCARD_ADDRS, args->args[i].key)) {
- if (args->args[i].type == GRPC_ARG_INTEGER) {
- s->expand_wildcard_addrs = (args->args[i].value.integer != 0);
- } else {
- gpr_free(s);
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- GRPC_ARG_EXPAND_WILDCARD_ADDRS " must be an integer");
- }
- }
+ auto value = config.GetInt(GRPC_ARG_ALLOW_REUSEPORT);
+ if (value.has_value()) {
+ s->so_reuseport = (grpc_is_socket_reuse_port_supported() && *value != 0);
+ }
+ value = config.GetInt(GRPC_ARG_EXPAND_WILDCARD_ADDRS);
+ if (value.has_value()) {
+ s->expand_wildcard_addrs = (*value != 0);
}
gpr_ref_init(&s->refs, 1);
gpr_mu_init(&s->mu);
@@ -102,10 +95,10 @@ static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
s->head = nullptr;
s->tail = nullptr;
s->nports = 0;
- s->channel_args = grpc_channel_args_copy(args);
+ s->options = TcpOptionsFromEndpointConfig(config);
s->fd_handler = nullptr;
- s->memory_quota =
- grpc_core::ResourceQuotaFromChannelArgs(args)->memory_quota();
+ GPR_ASSERT(s->options.resource_quota != nullptr);
+ s->memory_quota = s->options.resource_quota->memory_quota();
gpr_atm_no_barrier_store(&s->next_pollset_to_assign, 0);
*server = s;
return GRPC_ERROR_NONE;
@@ -125,7 +118,6 @@ static void finish_shutdown(grpc_tcp_server* s) {
s->head = sp->next;
gpr_free(sp);
}
- grpc_channel_args_destroy(s->channel_args);
delete s->fd_handler;
delete s;
}
@@ -190,7 +182,7 @@ static void tcp_server_destroy(grpc_tcp_server* s) {
static void on_read(void* arg, grpc_error_handle err) {
grpc_tcp_listener* sp = static_cast<grpc_tcp_listener*>(arg);
grpc_pollset* read_notifier_pollset;
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
goto error;
}
@@ -203,30 +195,36 @@ static void on_read(void* arg, grpc_error_handle err) {
strip off the ::ffff:0.0.0.0/96 prefix first. */
int fd = grpc_accept4(sp->fd, &addr, 1, 1);
if (fd < 0) {
- switch (errno) {
- case EINTR:
- continue;
- case EAGAIN:
- grpc_fd_notify_on_read(sp->emfd, &sp->read_closure);
- return;
- case EMFILE:
- case ENFILE:
- Y_FAIL("grpc failed accept4: %s", strerror(errno));
- default:
- gpr_mu_lock(&sp->server->mu);
- if (!sp->server->shutdown_listeners) {
- gpr_log(GPR_ERROR, "Failed accept4: %s", strerror(errno));
- } else {
- /* if we have shutdown listeners, accept4 could fail, and we
- needn't notify users */
- }
- gpr_mu_unlock(&sp->server->mu);
- goto error;
+ if (errno == EINTR) {
+ continue;
+ } else if (errno == EAGAIN || errno == ECONNABORTED ||
+ errno == EWOULDBLOCK) {
+ grpc_fd_notify_on_read(sp->emfd, &sp->read_closure);
+ return;
+ } else if (errno == EMFILE || errno == ENFILE) {
+ Y_FAIL("grpc failed accept4: %s", strerror(errno));
+ } else {
+ gpr_mu_lock(&sp->server->mu);
+ if (!sp->server->shutdown_listeners) {
+ gpr_log(GPR_ERROR, "Failed accept4: %s", strerror(errno));
+ } else {
+ /* if we have shutdown listeners, accept4 could fail, and we
+ needn't notify users */
+ }
+ gpr_mu_unlock(&sp->server->mu);
+ goto error;
}
}
if (sp->server->memory_quota->IsMemoryPressureHigh()) {
- gpr_log(GPR_INFO, "Drop incoming connection: high memory pressure");
+ int64_t dropped_connections_count =
+ num_dropped_connections.fetch_add(1, std::memory_order_relaxed) + 1;
+ if (dropped_connections_count % 1000 == 1) {
+ gpr_log(GPR_INFO,
+ "Dropped >= %" PRId64
+ " new connection attempts due to high memory pressure",
+ dropped_connections_count);
+ }
close(fd);
continue;
}
@@ -247,18 +245,23 @@ static void on_read(void* arg, grpc_error_handle err) {
(void)grpc_set_socket_no_sigpipe_if_possible(fd);
err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_SERVER_CONNECTION_USAGE,
- sp->server->channel_args);
- if (err != GRPC_ERROR_NONE) {
+ sp->server->options);
+ if (!GRPC_ERROR_IS_NONE(err)) {
goto error;
}
- TString addr_str = grpc_sockaddr_to_uri(&addr);
+ auto addr_uri = grpc_sockaddr_to_uri(&addr);
+ if (!addr_uri.ok()) {
+ gpr_log(GPR_ERROR, "Invalid address: %s",
+ addr_uri.status().ToString().c_str());
+ goto error;
+ }
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
gpr_log(GPR_INFO, "SERVER_CONNECT: incoming connection: %s",
- addr_str.c_str());
+ addr_uri->c_str());
}
- TString name = y_absl::StrCat("tcp-server-connection:", addr_str);
+ TString name = y_absl::StrCat("tcp-server-connection:", addr_uri.value());
grpc_fd* fdobj = grpc_fd_create(fd, name.c_str(), true);
read_notifier_pollset = (*(sp->server->pollsets))
@@ -277,7 +280,7 @@ static void on_read(void* arg, grpc_error_handle err) {
acceptor->external_connection = false;
sp->server->on_accept_cb(
sp->server->on_accept_cb_arg,
- grpc_tcp_create(fdobj, sp->server->channel_args, addr_str),
+ grpc_tcp_create(fdobj, sp->server->options, addr_uri.value()),
read_notifier_pollset, acceptor);
}
@@ -334,14 +337,14 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
}
}
if (*out_port > 0) {
- if (v6_err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(v6_err)) {
gpr_log(GPR_INFO,
"Failed to add :: listener, "
"the environment may not support IPv6: %s",
grpc_error_std_string(v6_err).c_str());
GRPC_ERROR_UNREF(v6_err);
}
- if (v4_err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(v4_err)) {
gpr_log(GPR_INFO,
"Failed to add 0.0.0.0 listener, "
"the environment may not support IPv4: %s",
@@ -352,7 +355,7 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
} else {
grpc_error_handle root_err = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Failed to add any wildcard listeners");
- GPR_ASSERT(v6_err != GRPC_ERROR_NONE && v4_err != GRPC_ERROR_NONE);
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(v6_err) && !GRPC_ERROR_IS_NONE(v4_err));
root_err = grpc_error_add_child(root_err, v6_err);
root_err = grpc_error_add_child(root_err, v4_err);
return root_err;
@@ -362,7 +365,7 @@ static grpc_error_handle add_wildcard_addrs_to_server(grpc_tcp_server* s,
static grpc_error_handle clone_port(grpc_tcp_listener* listener,
unsigned count) {
grpc_tcp_listener* sp = nullptr;
- TString addr_str;
+ y_absl::StatusOr<TString> addr_str;
grpc_error_handle err;
for (grpc_tcp_listener* l = listener->next; l && l->is_sibling; l = l->next) {
@@ -375,12 +378,15 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener,
grpc_dualstack_mode dsmode;
err = grpc_create_dualstack_socket(&listener->addr, SOCK_STREAM, 0, &dsmode,
&fd);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
err = grpc_tcp_server_prepare_socket(listener->server, fd, &listener->addr,
true, &port);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
listener->server->nports++;
addr_str = grpc_sockaddr_to_string(&listener->addr, true);
+ if (!addr_str.ok()) {
+ return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
+ }
sp = static_cast<grpc_tcp_listener*>(gpr_malloc(sizeof(grpc_tcp_listener)));
sp->next = listener->next;
listener->next = sp;
@@ -393,7 +399,7 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener,
sp->fd = fd;
sp->emfd = grpc_fd_create(
fd,
- y_absl::StrFormat("tcp-server-listener:%s/clone-%d", addr_str.c_str(), i)
+ y_absl::StrFormat("tcp-server-listener:%s/clone-%d", *addr_str, i)
.c_str(),
true);
memcpy(&sp->addr, &listener->addr, sizeof(grpc_resolved_address));
@@ -600,12 +606,17 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
return;
}
(void)grpc_set_socket_no_sigpipe_if_possible(fd);
- TString addr_str = grpc_sockaddr_to_uri(&addr);
+ auto addr_uri = grpc_sockaddr_to_uri(&addr);
+ if (!addr_uri.ok()) {
+ gpr_log(GPR_ERROR, "Invalid address: %s",
+ addr_uri.status().ToString().c_str());
+ return;
+ }
if (grpc_tcp_trace.enabled()) {
gpr_log(GPR_INFO, "SERVER_CONNECT: incoming external connection: %s",
- addr_str.c_str());
+ addr_uri->c_str());
}
- TString name = y_absl::StrCat("tcp-server-connection:", addr_str);
+ TString name = y_absl::StrCat("tcp-server-connection:", addr_uri.value());
grpc_fd* fdobj = grpc_fd_create(fd, name.c_str(), true);
read_notifier_pollset =
(*(s_->pollsets))[static_cast<size_t>(gpr_atm_no_barrier_fetch_add(
@@ -621,7 +632,7 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
acceptor->listener_fd = listener_fd;
acceptor->pending_data = buf;
s_->on_accept_cb(s_->on_accept_cb_arg,
- grpc_tcp_create(fdobj, s_->channel_args, addr_str),
+ grpc_tcp_create(fdobj, s_->options, addr_uri.value()),
read_notifier_pollset, acceptor);
}
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix.h b/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix.h
index 79527c2461..94faa2c17e 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix.h
@@ -90,8 +90,8 @@ struct grpc_tcp_server {
/* next pollset to assign a channel to */
gpr_atm next_pollset_to_assign = 0;
- /* channel args for this server */
- grpc_channel_args* channel_args = nullptr;
+ /* Contains config extracted from channel args for this server */
+ grpc_core::PosixTcpOptions options;
/* a handler for external connections, owned */
grpc_core::TcpServerFdHandler* fd_handler = nullptr;
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_common.cc b/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_common.cc
index 36c0234743..5448af725c 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_common.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_common.cc
@@ -86,38 +86,41 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, int fd,
unsigned port_index,
unsigned fd_index,
grpc_tcp_listener** listener) {
- grpc_tcp_listener* sp = nullptr;
+ *listener = nullptr;
int port = -1;
grpc_error_handle err =
grpc_tcp_server_prepare_socket(s, fd, addr, s->so_reuseport, &port);
- if (err == GRPC_ERROR_NONE) {
- GPR_ASSERT(port > 0);
- TString addr_str = grpc_sockaddr_to_string(addr, true);
- TString name = y_absl::StrCat("tcp-server-listener:", addr_str);
- gpr_mu_lock(&s->mu);
- s->nports++;
- GPR_ASSERT(!s->on_accept_cb && "must add ports before starting server");
- sp = static_cast<grpc_tcp_listener*>(gpr_malloc(sizeof(grpc_tcp_listener)));
- sp->next = nullptr;
- if (s->head == nullptr) {
- s->head = sp;
- } else {
- s->tail->next = sp;
- }
- s->tail = sp;
- sp->server = s;
- sp->fd = fd;
- sp->emfd = grpc_fd_create(fd, name.c_str(), true);
- memcpy(&sp->addr, addr, sizeof(grpc_resolved_address));
- sp->port = port;
- sp->port_index = port_index;
- sp->fd_index = fd_index;
- sp->is_sibling = 0;
- sp->sibling = nullptr;
- GPR_ASSERT(sp->emfd);
- gpr_mu_unlock(&s->mu);
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
+ GPR_ASSERT(port > 0);
+ y_absl::StatusOr<TString> addr_str = grpc_sockaddr_to_string(addr, true);
+ if (!addr_str.ok()) {
+ return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
+ }
+ TString name = y_absl::StrCat("tcp-server-listener:", addr_str.value());
+ gpr_mu_lock(&s->mu);
+ s->nports++;
+ GPR_ASSERT(!s->on_accept_cb && "must add ports before starting server");
+ grpc_tcp_listener* sp =
+ static_cast<grpc_tcp_listener*>(gpr_malloc(sizeof(grpc_tcp_listener)));
+ sp->next = nullptr;
+ if (s->head == nullptr) {
+ s->head = sp;
+ } else {
+ s->tail->next = sp;
}
+ s->tail = sp;
+ sp->server = s;
+ sp->fd = fd;
+ sp->emfd = grpc_fd_create(fd, name.c_str(), true);
+ memcpy(&sp->addr, addr, sizeof(grpc_resolved_address));
+ sp->port = port;
+ sp->port_index = port_index;
+ sp->fd_index = fd_index;
+ sp->is_sibling = 0;
+ sp->sibling = nullptr;
+ GPR_ASSERT(sp->emfd);
+ gpr_mu_unlock(&s->mu);
*listener = sp;
return err;
@@ -135,7 +138,7 @@ grpc_error_handle grpc_tcp_server_add_addr(grpc_tcp_server* s,
int fd;
grpc_error_handle err =
grpc_create_dualstack_socket(addr, SOCK_STREAM, 0, dsmode, &fd);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
return err;
}
if (*dsmode == GRPC_DSMODE_IPV4 &&
@@ -156,36 +159,36 @@ grpc_error_handle grpc_tcp_server_prepare_socket(
if (so_reuseport && !grpc_is_unix_socket(addr)) {
err = grpc_set_socket_reuse_port(fd, 1);
- if (err != GRPC_ERROR_NONE) goto error;
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
}
#ifdef GRPC_LINUX_ERRQUEUE
err = grpc_set_socket_zerocopy(fd);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
/* it's not fatal, so just log it. */
gpr_log(GPR_DEBUG, "Node does not support SO_ZEROCOPY, continuing.");
GRPC_ERROR_UNREF(err);
}
#endif
err = grpc_set_socket_nonblocking(fd, 1);
- if (err != GRPC_ERROR_NONE) goto error;
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
err = grpc_set_socket_cloexec(fd, 1);
- if (err != GRPC_ERROR_NONE) goto error;
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
if (!grpc_is_unix_socket(addr)) {
err = grpc_set_socket_low_latency(fd, 1);
- if (err != GRPC_ERROR_NONE) goto error;
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
err = grpc_set_socket_reuse_addr(fd, 1);
- if (err != GRPC_ERROR_NONE) goto error;
- err = grpc_set_socket_tcp_user_timeout(fd, s->channel_args,
- false /* is_client */);
- if (err != GRPC_ERROR_NONE) goto error;
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
+ err =
+ grpc_set_socket_tcp_user_timeout(fd, s->options, false /* is_client */);
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
}
err = grpc_set_socket_no_sigpipe_if_possible(fd);
- if (err != GRPC_ERROR_NONE) goto error;
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_SERVER_LISTENER_USAGE,
- s->channel_args);
- if (err != GRPC_ERROR_NONE) goto error;
+ s->options);
+ if (!GRPC_ERROR_IS_NONE(err)) goto error;
if (bind(fd, reinterpret_cast<grpc_sockaddr*>(const_cast<char*>(addr->addr)),
addr->len) < 0) {
@@ -210,7 +213,7 @@ grpc_error_handle grpc_tcp_server_prepare_socket(
return GRPC_ERROR_NONE;
error:
- GPR_ASSERT(err != GRPC_ERROR_NONE);
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(err));
if (fd >= 0) {
close(fd);
}
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc b/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
index 8f3cc7753d..47d61c92e3 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
@@ -66,7 +66,7 @@ static grpc_error_handle get_unused_port(int* port) {
int fd;
grpc_error_handle err =
grpc_create_dualstack_socket(&wild, SOCK_STREAM, 0, &dsmode, &fd);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
return err;
}
if (dsmode == GRPC_DSMODE_IPV4) {
@@ -134,21 +134,24 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
err = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to set port");
break;
}
- TString addr_str = grpc_sockaddr_to_string(&addr, false);
+ auto addr_str = grpc_sockaddr_to_string(&addr, false);
+ if (!addr_str.ok()) {
+ return GRPC_ERROR_CREATE_FROM_CPP_STRING(addr_str.status().ToString());
+ }
gpr_log(GPR_DEBUG,
"Adding local addr from interface %s flags 0x%x to server: %s",
- ifa_name, ifa_it->ifa_flags, addr_str.c_str());
+ ifa_name, ifa_it->ifa_flags, addr_str->c_str());
/* We could have multiple interfaces with the same address (e.g., bonding),
so look for duplicates. */
if (find_listener_with_addr(s, &addr) != nullptr) {
gpr_log(GPR_DEBUG, "Skipping duplicate addr %s on interface %s",
- addr_str.c_str(), ifa_name);
+ addr_str->c_str(), ifa_name);
continue;
}
if ((err = grpc_tcp_server_add_addr(s, &addr, port_index, fd_index, &dsmode,
&new_sp)) != GRPC_ERROR_NONE) {
grpc_error_handle root_err = GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("Failed to add listener: ", addr_str));
+ y_absl::StrCat("Failed to add listener: ", addr_str.value()));
err = grpc_error_add_child(root_err, err);
break;
} else {
@@ -162,7 +165,7 @@ grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
}
}
freeifaddrs(ifa);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
return err;
} else if (sp == nullptr) {
return GRPC_ERROR_CREATE_FROM_STATIC_STRING("No local addresses");
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_windows.cc b/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_windows.cc
index 018ac493e4..daf9c6a1c4 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_windows.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_server_windows.cc
@@ -29,6 +29,7 @@
#include "y_absl/strings/str_cat.h"
+#include <grpc/event_engine/endpoint_config.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/log_windows.h>
@@ -37,7 +38,6 @@
#include <grpc/support/time.h>
#include "src/core/lib/address_utils/sockaddr_utils.h"
-#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/iomgr/iocp_windows.h"
#include "src/core/lib/iomgr/pollset_windows.h"
#include "src/core/lib/iomgr/resolve_address.h"
@@ -45,10 +45,13 @@
#include "src/core/lib/iomgr/socket_windows.h"
#include "src/core/lib/iomgr/tcp_server.h"
#include "src/core/lib/iomgr/tcp_windows.h"
+#include "src/core/lib/resource_quota/api.h"
#include "src/core/lib/slice/slice_internal.h"
#define MIN_SAFE_ACCEPT_QUEUE_SIZE 100
+using ::grpc_event_engine::experimental::EndpointConfig;
+
/* one listening port */
typedef struct grpc_tcp_listener grpc_tcp_listener;
struct grpc_tcp_listener {
@@ -94,17 +97,14 @@ struct grpc_tcp_server {
/* shutdown callback */
grpc_closure* shutdown_complete;
-
- grpc_channel_args* channel_args;
};
/* Public function. Allocates the proper data structures to hold a
grpc_tcp_server. */
static grpc_error_handle tcp_server_create(grpc_closure* shutdown_complete,
- const grpc_channel_args* args,
+ const EndpointConfig& config,
grpc_tcp_server** server) {
grpc_tcp_server* s = (grpc_tcp_server*)gpr_malloc(sizeof(grpc_tcp_server));
- s->channel_args = grpc_channel_args_copy(args);
gpr_ref_init(&s->refs, 1);
gpr_mu_init(&s->mu);
s->active_ports = 0;
@@ -132,7 +132,6 @@ static void destroy_server(void* arg, grpc_error_handle error) {
grpc_winsocket_destroy(sp->socket);
gpr_free(sp);
}
- grpc_channel_args_destroy(s->channel_args);
gpr_mu_destroy(&s->mu);
gpr_free(s);
}
@@ -197,7 +196,7 @@ static grpc_error_handle prepare_socket(SOCKET sock,
int sockname_temp_len;
error = grpc_tcp_prepare_socket(sock);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
goto failure;
}
@@ -224,12 +223,14 @@ static grpc_error_handle prepare_socket(SOCKET sock,
return GRPC_ERROR_NONE;
failure:
- GPR_ASSERT(error != GRPC_ERROR_NONE);
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
+ auto addr_uri = grpc_sockaddr_to_uri(addr);
grpc_error_set_int(
- grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
- "Failed to prepare server socket", &error, 1),
- GRPC_ERROR_STR_TARGET_ADDRESS,
- grpc_sockaddr_to_uri(addr)),
+ grpc_error_set_str(
+ GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Failed to prepare server socket", &error, 1),
+ GRPC_ERROR_STR_TARGET_ADDRESS,
+ addr_uri.ok() ? *addr_uri : addr_uri.status().ToString()),
GRPC_ERROR_INT_FD, (intptr_t)sock);
GRPC_ERROR_UNREF(error);
if (sock != INVALID_SOCKET) closesocket(sock);
@@ -265,7 +266,7 @@ static grpc_error_handle start_accept_locked(grpc_tcp_listener* port) {
}
error = grpc_tcp_prepare_socket(sock);
- if (error != GRPC_ERROR_NONE) goto failure;
+ if (!GRPC_ERROR_IS_NONE(error)) goto failure;
/* Start the "accept" asynchronously. */
success = port->AcceptEx(port->socket->socket, sock, port->addresses, 0,
@@ -290,7 +291,7 @@ static grpc_error_handle start_accept_locked(grpc_tcp_listener* port) {
return error;
failure:
- GPR_ASSERT(error != GRPC_ERROR_NONE);
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
if (sock != INVALID_SOCKET) closesocket(sock);
return error;
}
@@ -314,7 +315,7 @@ static void on_accept(void* arg, grpc_error_handle error) {
/* The general mechanism for shutting down is to queue abortion calls. While
this is necessary in the read/write case, it's useless for the accept
case. We only need to adjust the pending callback count */
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_INFO, "Skipping on_accept due to error: %s",
grpc_error_std_string(error).c_str());
@@ -347,7 +348,13 @@ static void on_accept(void* arg, grpc_error_handle error) {
peer_name.len = (size_t)peer_name_len;
TString peer_name_string;
if (!err) {
- peer_name_string = grpc_sockaddr_to_uri(&peer_name);
+ auto addr_uri = grpc_sockaddr_to_uri(&peer_name);
+ if (addr_uri.ok()) {
+ peer_name_string = addr_uri.value();
+ } else {
+ gpr_log(GPR_ERROR, "invalid peer name: %s",
+ addr_uri.status().ToString().c_str());
+ }
} else {
char* utf8_message = gpr_format_message(WSAGetLastError());
gpr_log(GPR_ERROR, "getpeername error: %s", utf8_message);
@@ -355,7 +362,7 @@ static void on_accept(void* arg, grpc_error_handle error) {
}
TString fd_name = y_absl::StrCat("tcp_server:", peer_name_string);
ep = grpc_tcp_create(grpc_winsocket_create(sock, fd_name.c_str()),
- sp->server->channel_args, peer_name_string);
+ peer_name_string);
} else {
closesocket(sock);
}
@@ -411,7 +418,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s, SOCKET sock,
}
error = prepare_socket(sock, addr, &port);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
return error;
}
@@ -503,7 +510,7 @@ static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
done:
gpr_free(allocated_addr);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
grpc_error_handle error_out =
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Failed to add port to server", &error, 1);
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_windows.cc b/contrib/libs/grpc/src/core/lib/iomgr/tcp_windows.cc
index 18d7a97780..7d5a5b739c 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_windows.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_windows.cc
@@ -31,6 +31,7 @@
#include <grpc/support/string_util.h>
#include "src/core/lib/address_utils/sockaddr_utils.h"
+#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/iomgr/iocp_windows.h"
#include "src/core/lib/iomgr/sockaddr.h"
@@ -88,11 +89,11 @@ static grpc_error_handle enable_socket_low_latency(SOCKET sock) {
grpc_error_handle grpc_tcp_prepare_socket(SOCKET sock) {
grpc_error_handle err;
err = grpc_tcp_set_non_block(sock);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
err = set_dualstack(sock);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
err = enable_socket_low_latency(sock);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
return GRPC_ERROR_NONE;
}
@@ -185,7 +186,7 @@ static void on_read(void* tcpp, grpc_error_handle error) {
(void)GRPC_ERROR_REF(error);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
if (info->wsa_error != 0 && !tcp->shutting_down) {
char* utf8_message = gpr_format_message(info->wsa_error);
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(utf8_message);
@@ -237,7 +238,7 @@ static void on_read(void* tcpp, grpc_error_handle error) {
#define DEFAULT_TARGET_READ_SIZE 8192
#define MAX_WSABUF_COUNT 16
static void win_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices,
- grpc_closure* cb, bool urgent) {
+ grpc_closure* cb, bool urgent, int /*min_progress_size*/) {
grpc_tcp* tcp = (grpc_tcp*)ep;
grpc_winsocket* handle = tcp->socket;
grpc_winsocket_callback_info* info = &handle->read_info;
@@ -330,7 +331,7 @@ static void on_write(void* tcpp, grpc_error_handle error) {
tcp->write_cb = NULL;
gpr_mu_unlock(&tcp->mu);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
if (info->wsa_error != 0) {
error = GRPC_WSA_ERROR(info->wsa_error, "WSASend");
} else {
@@ -344,7 +345,7 @@ static void on_write(void* tcpp, grpc_error_handle error) {
/* Initiates a write. */
static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
- grpc_closure* cb, void* arg) {
+ grpc_closure* cb, void* arg, int /*max_frame_size*/) {
grpc_tcp* tcp = (grpc_tcp*)ep;
grpc_winsocket* socket = tcp->socket;
grpc_winsocket_callback_info* info = &socket->write_info;
@@ -504,7 +505,6 @@ static grpc_endpoint_vtable vtable = {win_read,
win_can_track_err};
grpc_endpoint* grpc_tcp_create(grpc_winsocket* socket,
- grpc_channel_args* channel_args,
y_absl::string_view peer_string) {
// TODO(jtattermusch): C++ize grpc_tcp and its dependencies (i.e. add
// constructors) to ensure proper initialization
@@ -517,12 +517,14 @@ grpc_endpoint* grpc_tcp_create(grpc_winsocket* socket,
GRPC_CLOSURE_INIT(&tcp->on_write, on_write, tcp, grpc_schedule_on_exec_ctx);
grpc_resolved_address resolved_local_addr;
resolved_local_addr.len = sizeof(resolved_local_addr.addr);
+ y_absl::StatusOr<TString> addr_uri;
if (getsockname(tcp->socket->socket,
reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
- &resolved_local_addr.len) < 0) {
+ &resolved_local_addr.len) < 0 ||
+ !(addr_uri = grpc_sockaddr_to_uri(&resolved_local_addr)).ok()) {
tcp->local_address = "";
} else {
- tcp->local_address = grpc_sockaddr_to_uri(&resolved_local_addr);
+ tcp->local_address = grpc_sockaddr_to_uri(&resolved_local_addr).value();
}
tcp->peer_string = TString(peer_string);
grpc_slice_buffer_init(&tcp->last_read_buffer);
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/tcp_windows.h b/contrib/libs/grpc/src/core/lib/iomgr/tcp_windows.h
index 9c4de7c535..4c681b4968 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/tcp_windows.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/tcp_windows.h
@@ -41,7 +41,6 @@
* Takes ownership of the handle.
*/
grpc_endpoint* grpc_tcp_create(grpc_winsocket* socket,
- grpc_channel_args* channel_args,
y_absl::string_view peer_string);
grpc_error_handle grpc_tcp_prepare_socket(SOCKET sock);
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/time_averaged_stats.cc b/contrib/libs/grpc/src/core/lib/iomgr/time_averaged_stats.cc
deleted file mode 100644
index 6369e48db0..0000000000
--- a/contrib/libs/grpc/src/core/lib/iomgr/time_averaged_stats.cc
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- *
- * Copyright 2015 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/lib/iomgr/time_averaged_stats.h"
-
-void grpc_time_averaged_stats_init(grpc_time_averaged_stats* stats,
- double init_avg, double regress_weight,
- double persistence_factor) {
- stats->init_avg = init_avg;
- stats->regress_weight = regress_weight;
- stats->persistence_factor = persistence_factor;
- stats->batch_total_value = 0;
- stats->batch_num_samples = 0;
- stats->aggregate_total_weight = 0;
- stats->aggregate_weighted_avg = init_avg;
-}
-
-void grpc_time_averaged_stats_add_sample(grpc_time_averaged_stats* stats,
- double value) {
- stats->batch_total_value += value;
- ++stats->batch_num_samples;
-}
-
-double grpc_time_averaged_stats_update_average(
- grpc_time_averaged_stats* stats) {
- /* Start with the current batch: */
- double weighted_sum = stats->batch_total_value;
- double total_weight = stats->batch_num_samples;
- if (stats->regress_weight > 0) {
- /* Add in the regression towards init_avg_: */
- weighted_sum += stats->regress_weight * stats->init_avg;
- total_weight += stats->regress_weight;
- }
- if (stats->persistence_factor > 0) {
- /* Add in the persistence: */
- const double prev_sample_weight =
- stats->persistence_factor * stats->aggregate_total_weight;
- weighted_sum += prev_sample_weight * stats->aggregate_weighted_avg;
- total_weight += prev_sample_weight;
- }
- stats->aggregate_weighted_avg =
- (total_weight > 0) ? (weighted_sum / total_weight) : stats->init_avg;
- stats->aggregate_total_weight = total_weight;
- stats->batch_num_samples = 0;
- stats->batch_total_value = 0;
- return stats->aggregate_weighted_avg;
-}
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/timer_generic.cc b/contrib/libs/grpc/src/core/lib/iomgr/timer_generic.cc
index 4678a1d806..6babef1da1 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/timer_generic.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/timer_generic.cc
@@ -34,10 +34,11 @@
#include "src/core/lib/gpr/spinlock.h"
#include "src/core/lib/gpr/tls.h"
#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/manual_constructor.h"
#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/time_averaged_stats.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/port.h"
-#include "src/core/lib/iomgr/time_averaged_stats.h"
#include "src/core/lib/iomgr/timer.h"
#include "src/core/lib/iomgr/timer_heap.h"
@@ -61,7 +62,7 @@ grpc_core::TraceFlag grpc_timer_check_trace(false, "timer_check");
*/
struct timer_shard {
gpr_mu mu;
- grpc_time_averaged_stats stats;
+ grpc_core::ManualConstructor<grpc_core::TimeAveragedStats> stats;
/* All and only timers with deadlines < this will be in the heap. */
grpc_core::Timestamp queue_deadline_cap;
/* The deadline of the next timer due in this shard. */
@@ -253,15 +254,14 @@ static void timer_list_init() {
g_shared_mutables.initialized = true;
g_shared_mutables.checker_mu = GPR_SPINLOCK_INITIALIZER;
gpr_mu_init(&g_shared_mutables.mu);
- g_shared_mutables.min_timer = grpc_core::ExecCtx::Get()->Now();
+ g_shared_mutables.min_timer = grpc_core::Timestamp::Now();
g_last_seen_min_timer = 0;
for (i = 0; i < g_num_shards; i++) {
timer_shard* shard = &g_shards[i];
gpr_mu_init(&shard->mu);
- grpc_time_averaged_stats_init(&shard->stats, 1.0 / ADD_DEADLINE_SCALE, 0.1,
- 0.5);
+ shard->stats.Init(1.0 / ADD_DEADLINE_SCALE, 0.1, 0.5);
shard->queue_deadline_cap = g_shared_mutables.min_timer;
shard->shard_queue_index = i;
grpc_timer_heap_init(&shard->heap);
@@ -344,7 +344,7 @@ static void timer_init(grpc_timer* timer, grpc_core::Timestamp deadline,
if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_trace)) {
gpr_log(GPR_INFO, "TIMER %p: SET %" PRId64 " now %" PRId64 " call %p[%p]",
timer, deadline.milliseconds_after_process_epoch(),
- grpc_core::ExecCtx::Get()->Now().milliseconds_after_process_epoch(),
+ grpc_core::Timestamp::Now().milliseconds_after_process_epoch(),
closure, closure->cb);
}
@@ -359,7 +359,7 @@ static void timer_init(grpc_timer* timer, grpc_core::Timestamp deadline,
gpr_mu_lock(&shard->mu);
timer->pending = true;
- grpc_core::Timestamp now = grpc_core::ExecCtx::Get()->Now();
+ grpc_core::Timestamp now = grpc_core::Timestamp::Now();
if (deadline <= now) {
timer->pending = false;
grpc_core::ExecCtx::Run(DEBUG_LOCATION, timer->closure, GRPC_ERROR_NONE);
@@ -368,8 +368,7 @@ static void timer_init(grpc_timer* timer, grpc_core::Timestamp deadline,
return;
}
- grpc_time_averaged_stats_add_sample(&shard->stats,
- (deadline - now).millis() / 1000.0);
+ shard->stats->AddSample((deadline - now).millis() / 1000.0);
ADD_TO_HASH_TABLE(timer);
@@ -474,8 +473,7 @@ static void timer_cancel(grpc_timer* timer) {
static bool refill_heap(timer_shard* shard, grpc_core::Timestamp now) {
/* Compute the new queue window width and bound by the limits: */
double computed_deadline_delta =
- grpc_time_averaged_stats_update_average(&shard->stats) *
- ADD_DEADLINE_SCALE;
+ shard->stats->UpdateAverage() * ADD_DEADLINE_SCALE;
double deadline_delta =
grpc_core::Clamp(computed_deadline_delta, MIN_QUEUE_WINDOW_DURATION,
MAX_QUEUE_WINDOW_DURATION);
@@ -668,7 +666,7 @@ static grpc_timer_check_result run_some_expired_timers(
static grpc_timer_check_result timer_check(grpc_core::Timestamp* next) {
// prelude
- grpc_core::Timestamp now = grpc_core::ExecCtx::Get()->Now();
+ grpc_core::Timestamp now = grpc_core::Timestamp::Now();
/* fetch from a thread-local first: this avoids contention on a globally
mutable cacheline in the common case */
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/timer_manager.cc b/contrib/libs/grpc/src/core/lib/iomgr/timer_manager.cc
index d630845d31..cb16895f8e 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/timer_manager.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/timer_manager.cc
@@ -184,8 +184,7 @@ static bool wait_until(grpc_core::Timestamp next) {
g_timed_waiter_deadline = next;
if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
- grpc_core::Duration wait_time =
- next - grpc_core::ExecCtx::Get()->Now();
+ grpc_core::Duration wait_time = next - grpc_core::Timestamp::Now();
gpr_log(GPR_INFO, "sleep for a %" PRId64 " milliseconds",
wait_time.millis());
}
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/unix_sockets_posix.cc b/contrib/libs/grpc/src/core/lib/iomgr/unix_sockets_posix.cc
index 6d899557b5..153da6b721 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/unix_sockets_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/unix_sockets_posix.cc
@@ -45,7 +45,7 @@ y_absl::StatusOr<std::vector<grpc_resolved_address>>
grpc_resolve_unix_domain_address(y_absl::string_view name) {
grpc_resolved_address addr;
grpc_error_handle error = grpc_core::UnixSockaddrPopulate(name, &addr);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
return std::vector<grpc_resolved_address>({addr});
}
auto result = grpc_error_to_absl_status(error);
@@ -58,7 +58,7 @@ grpc_resolve_unix_abstract_domain_address(const y_absl::string_view name) {
grpc_resolved_address addr;
grpc_error_handle error =
grpc_core::UnixAbstractSockaddrPopulate(name, &addr);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
return std::vector<grpc_resolved_address>({addr});
}
auto result = grpc_error_to_absl_status(error);
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_eventfd.cc b/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_eventfd.cc
index 3951fe6f57..21a8ea2391 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_eventfd.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_eventfd.cc
@@ -29,7 +29,6 @@
#include <grpc/support/log.h>
#include "src/core/lib/iomgr/wakeup_fd_posix.h"
-#include "src/core/lib/profiling/timers.h"
static grpc_error_handle eventfd_create(grpc_wakeup_fd* fd_info) {
fd_info->read_fd = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
@@ -53,7 +52,6 @@ static grpc_error_handle eventfd_consume(grpc_wakeup_fd* fd_info) {
}
static grpc_error_handle eventfd_wakeup(grpc_wakeup_fd* fd_info) {
- GPR_TIMER_SCOPE("eventfd_wakeup", 0);
int err;
do {
err = eventfd_write(fd_info->read_fd, 1);
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_pipe.cc b/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_pipe.cc
index e25a944880..50cd594b92 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_pipe.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_pipe.cc
@@ -41,9 +41,9 @@ static grpc_error_handle pipe_init(grpc_wakeup_fd* fd_info) {
}
grpc_error_handle err;
err = grpc_set_socket_nonblocking(pipefd[0], 1);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
err = grpc_set_socket_nonblocking(pipefd[1], 1);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
fd_info->read_fd = pipefd[0];
fd_info->write_fd = pipefd[1];
return GRPC_ERROR_NONE;
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_posix.cc b/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_posix.cc
index 89bd51baa9..99e0e36dff 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_posix.cc
+++ b/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_posix.cc
@@ -32,22 +32,25 @@ static const grpc_wakeup_fd_vtable* wakeup_fd_vtable = nullptr;
int grpc_allow_specialized_wakeup_fd = 1;
int grpc_allow_pipe_wakeup_fd = 1;
-int has_real_wakeup_fd = 1;
-int cv_wakeup_fds_enabled = 0;
+static int has_real_wakeup_fd = 1;
+
+static gpr_once once_init_wakeup_fd = GPR_ONCE_INIT;
void grpc_wakeup_fd_global_init(void) {
- if (grpc_allow_specialized_wakeup_fd &&
- grpc_specialized_wakeup_fd_vtable.check_availability()) {
- wakeup_fd_vtable = &grpc_specialized_wakeup_fd_vtable;
- } else if (grpc_allow_pipe_wakeup_fd &&
- grpc_pipe_wakeup_fd_vtable.check_availability()) {
- wakeup_fd_vtable = &grpc_pipe_wakeup_fd_vtable;
- } else {
- has_real_wakeup_fd = 0;
- }
+ gpr_once_init(&once_init_wakeup_fd, []() {
+ if (grpc_allow_specialized_wakeup_fd &&
+ grpc_specialized_wakeup_fd_vtable.check_availability()) {
+ wakeup_fd_vtable = &grpc_specialized_wakeup_fd_vtable;
+ } else if (grpc_allow_pipe_wakeup_fd &&
+ grpc_pipe_wakeup_fd_vtable.check_availability()) {
+ wakeup_fd_vtable = &grpc_pipe_wakeup_fd_vtable;
+ } else {
+ has_real_wakeup_fd = 0;
+ }
+ });
}
-void grpc_wakeup_fd_global_destroy(void) { wakeup_fd_vtable = nullptr; }
+void grpc_wakeup_fd_global_destroy(void) {}
int grpc_has_wakeup_fd(void) { return has_real_wakeup_fd; }
diff --git a/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_posix.h b/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_posix.h
index 1079ce6899..24c9995a9f 100644
--- a/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_posix.h
+++ b/contrib/libs/grpc/src/core/lib/iomgr/wakeup_fd_posix.h
@@ -59,8 +59,6 @@ void grpc_wakeup_fd_global_destroy(void);
void grpc_wakeup_fd_global_init_force_fallback(void);
int grpc_has_wakeup_fd(void);
-int grpc_cv_wakeup_fds_enabled(void);
-void grpc_enable_cv_wakeup_fds(int enable);
typedef struct grpc_wakeup_fd grpc_wakeup_fd;
diff --git a/contrib/libs/grpc/src/core/lib/json/json.h b/contrib/libs/grpc/src/core/lib/json/json.h
index ad79f9b0fb..464d37a75d 100644
--- a/contrib/libs/grpc/src/core/lib/json/json.h
+++ b/contrib/libs/grpc/src/core/lib/json/json.h
@@ -1,37 +1,33 @@
-/*
- *
- * Copyright 2015 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
+//
+// Copyright 2015 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
#ifndef GRPC_CORE_LIB_JSON_JSON_H
#define GRPC_CORE_LIB_JSON_JSON_H
#include <grpc/support/port_platform.h>
-#include <stdlib.h>
-
#include <map>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
#include <vector>
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/string_view.h"
-#include "src/core/lib/iomgr/error.h"
-
namespace grpc_core {
// A JSON value, which can be any one of object, array, string,
@@ -56,8 +52,8 @@ class Json {
using Object = std::map<TString, Json>;
using Array = std::vector<Json>;
- // Parses JSON string from json_str. On error, sets *error.
- static Json Parse(y_absl::string_view json_str, grpc_error_handle* error);
+ // Parses JSON string from json_str.
+ static y_absl::StatusOr<Json> Parse(y_absl::string_view json_str);
Json() = default;
@@ -248,4 +244,4 @@ class Json {
} // namespace grpc_core
-#endif /* GRPC_CORE_LIB_JSON_JSON_H */
+#endif // GRPC_CORE_LIB_JSON_JSON_H
diff --git a/contrib/libs/grpc/src/core/lib/json/json_args.h b/contrib/libs/grpc/src/core/lib/json/json_args.h
new file mode 100644
index 0000000000..ab1c0b1b12
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/json/json_args.h
@@ -0,0 +1,34 @@
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_JSON_JSON_ARGS_H
+#define GRPC_CORE_LIB_JSON_JSON_ARGS_H
+
+#include <grpc/support/port_platform.h>
+
+#include "y_absl/strings/string_view.h"
+
+namespace grpc_core {
+
+class JsonArgs {
+ public:
+ JsonArgs() = default;
+ virtual ~JsonArgs() = default;
+
+ virtual bool IsEnabled(y_absl::string_view /*key*/) const { return true; }
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_JSON_JSON_ARGS_H
diff --git a/contrib/libs/grpc/src/core/lib/json/json_object_loader.cc b/contrib/libs/grpc/src/core/lib/json/json_object_loader.cc
new file mode 100644
index 0000000000..271cd77adc
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/json/json_object_loader.cc
@@ -0,0 +1,202 @@
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/json/json_object_loader.h"
+
+#include <utility>
+
+#include "y_absl/strings/ascii.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/strip.h"
+
+namespace grpc_core {
+namespace json_detail {
+
+void LoadScalar::LoadInto(const Json& json, const JsonArgs& /*args*/, void* dst,
+ ValidationErrors* errors) const {
+ // We accept either STRING or NUMBER for numeric values, as per
+ // https://developers.google.com/protocol-buffers/docs/proto3#json.
+ if (json.type() != Json::Type::STRING &&
+ (!IsNumber() || json.type() != Json::Type::NUMBER)) {
+ errors->AddError(
+ y_absl::StrCat("is not a ", IsNumber() ? "number" : "string"));
+ return;
+ }
+ return LoadInto(json.string_value(), dst, errors);
+}
+
+bool LoadString::IsNumber() const { return false; }
+
+void LoadString::LoadInto(const TString& value, void* dst,
+ ValidationErrors*) const {
+ *static_cast<TString*>(dst) = value;
+}
+
+bool LoadDuration::IsNumber() const { return false; }
+
+void LoadDuration::LoadInto(const TString& value, void* dst,
+ ValidationErrors* errors) const {
+ y_absl::string_view buf(value);
+ if (!y_absl::ConsumeSuffix(&buf, "s")) {
+ errors->AddError("Not a duration (no s suffix)");
+ return;
+ }
+ buf = y_absl::StripAsciiWhitespace(buf);
+ auto decimal_point = buf.find('.');
+ int nanos = 0;
+ if (decimal_point != y_absl::string_view::npos) {
+ y_absl::string_view after_decimal = buf.substr(decimal_point + 1);
+ buf = buf.substr(0, decimal_point);
+ if (!y_absl::SimpleAtoi(after_decimal, &nanos)) {
+ errors->AddError("Not a duration (not a number of nanoseconds)");
+ return;
+ }
+ if (after_decimal.length() > 9) {
+ // We don't accept greater precision than nanos.
+ errors->AddError("Not a duration (too many digits after decimal)");
+ return;
+ }
+ for (size_t i = 0; i < (9 - after_decimal.length()); ++i) {
+ nanos *= 10;
+ }
+ }
+ int seconds;
+ if (!y_absl::SimpleAtoi(buf, &seconds)) {
+ errors->AddError("Not a duration (not a number of seconds)");
+ return;
+ }
+ *static_cast<Duration*>(dst) =
+ Duration::FromSecondsAndNanoseconds(seconds, nanos);
+}
+
+bool LoadNumber::IsNumber() const { return true; }
+
+void LoadBool::LoadInto(const Json& json, const JsonArgs&, void* dst,
+ ValidationErrors* errors) const {
+ if (json.type() == Json::Type::JSON_TRUE) {
+ *static_cast<bool*>(dst) = true;
+ } else if (json.type() == Json::Type::JSON_FALSE) {
+ *static_cast<bool*>(dst) = false;
+ } else {
+ errors->AddError("is not a boolean");
+ }
+}
+
+void LoadUnprocessedJsonObject::LoadInto(const Json& json, const JsonArgs&,
+ void* dst,
+ ValidationErrors* errors) const {
+ if (json.type() != Json::Type::OBJECT) {
+ errors->AddError("is not an object");
+ return;
+ }
+ *static_cast<Json::Object*>(dst) = json.object_value();
+}
+
+void LoadVector::LoadInto(const Json& json, const JsonArgs& args, void* dst,
+ ValidationErrors* errors) const {
+ if (json.type() != Json::Type::ARRAY) {
+ errors->AddError("is not an array");
+ return;
+ }
+ const auto& array = json.array_value();
+ const LoaderInterface* element_loader = ElementLoader();
+ for (size_t i = 0; i < array.size(); ++i) {
+ ValidationErrors::ScopedField field(errors, y_absl::StrCat("[", i, "]"));
+ void* element = EmplaceBack(dst);
+ element_loader->LoadInto(array[i], args, element, errors);
+ }
+}
+
+void AutoLoader<std::vector<bool>>::LoadInto(const Json& json,
+ const JsonArgs& args, void* dst,
+ ValidationErrors* errors) const {
+ if (json.type() != Json::Type::ARRAY) {
+ errors->AddError("is not an array");
+ return;
+ }
+ const auto& array = json.array_value();
+ const LoaderInterface* element_loader = LoaderForType<bool>();
+ std::vector<bool>* vec = static_cast<std::vector<bool>*>(dst);
+ for (size_t i = 0; i < array.size(); ++i) {
+ ValidationErrors::ScopedField field(errors, y_absl::StrCat("[", i, "]"));
+ bool elem = false;
+ element_loader->LoadInto(array[i], args, &elem, errors);
+ vec->push_back(elem);
+ }
+}
+
+void LoadMap::LoadInto(const Json& json, const JsonArgs& args, void* dst,
+ ValidationErrors* errors) const {
+ if (json.type() != Json::Type::OBJECT) {
+ errors->AddError("is not an object");
+ return;
+ }
+ const LoaderInterface* element_loader = ElementLoader();
+ for (const auto& pair : json.object_value()) {
+ ValidationErrors::ScopedField field(errors,
+ y_absl::StrCat("[\"", pair.first, "\"]"));
+ void* element = Insert(pair.first, dst);
+ element_loader->LoadInto(pair.second, args, element, errors);
+ }
+}
+
+void LoadOptional::LoadInto(const Json& json, const JsonArgs& args, void* dst,
+ ValidationErrors* errors) const {
+ if (json.type() == Json::Type::JSON_NULL) return;
+ void* element = Emplace(dst);
+ size_t starting_error_size = errors->size();
+ ElementLoader()->LoadInto(json, args, element, errors);
+ if (errors->size() > starting_error_size) Reset(dst);
+}
+
+bool LoadObject(const Json& json, const JsonArgs& args, const Element* elements,
+ size_t num_elements, void* dst, ValidationErrors* errors) {
+ if (json.type() != Json::Type::OBJECT) {
+ errors->AddError("is not an object");
+ return false;
+ }
+ for (size_t i = 0; i < num_elements; ++i) {
+ const Element& element = elements[i];
+ if (element.enable_key != nullptr && !args.IsEnabled(element.enable_key)) {
+ continue;
+ }
+ ValidationErrors::ScopedField field(errors,
+ y_absl::StrCat(".", element.name));
+ const auto& it = json.object_value().find(element.name);
+ if (it == json.object_value().end()) {
+ if (element.optional) continue;
+ errors->AddError("field not present");
+ continue;
+ }
+ char* field_dst = static_cast<char*>(dst) + element.member_offset;
+ element.loader->LoadInto(it->second, args, field_dst, errors);
+ }
+ return true;
+}
+
+const Json* GetJsonObjectField(const Json::Object& json,
+ y_absl::string_view field,
+ ValidationErrors* errors, bool required) {
+ auto it = json.find(TString(field));
+ if (it == json.end()) {
+ if (required) errors->AddError("field not present");
+ return nullptr;
+ }
+ return &it->second;
+}
+
+} // namespace json_detail
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/json/json_object_loader.h b/contrib/libs/grpc/src/core/lib/json/json_object_loader.h
new file mode 100644
index 0000000000..26f790e767
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/json/json_object_loader.h
@@ -0,0 +1,599 @@
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_JSON_JSON_OBJECT_LOADER_H
+#define GRPC_CORE_LIB_JSON_JSON_OBJECT_LOADER_H
+
+#include <grpc/support/port_platform.h>
+
+#include <cstdint>
+#include <cstring>
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/numbers.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include "src/core/lib/gprpp/no_destruct.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/validation_errors.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/json/json_args.h"
+
+// Provides a means to load JSON objects into C++ objects, with the aim of
+// minimizing object code size.
+//
+// Usage:
+// Given struct Foo:
+// struct Foo {
+// int a;
+// int b;
+// };
+// We add a static JsonLoader() method to Foo to declare how to load the
+// object from JSON, and an optional JsonPostLoad() method to do any
+// necessary post-processing:
+// struct Foo {
+// int a;
+// int b;
+// static const JsonLoaderInterface* JsonLoader(const JsonArgs& args) {
+// // Note: Field names must be string constants; they are not copied.
+// static const auto* loader = JsonObjectLoader<Foo>()
+// .Field("a", &Foo::a)
+// .Field("b", &Foo::b)
+// .Finish();
+// return loader;
+// }
+// // Optional; omit if no post-processing needed.
+// void JsonPostLoad(const Json& source, const JsonArgs& args,
+// ValidationErrors* errors) {
+// ++a;
+// }
+// };
+// Now we can load Foo objects from JSON:
+// y_absl::StatusOr<Foo> foo = LoadFromJson<Foo>(json);
+namespace grpc_core {
+
+namespace json_detail {
+
+// An un-typed JSON loader.
+class LoaderInterface {
+ public:
+ // Convert json value to whatever type we're loading at dst.
+ // If errors occur, add them to errors.
+ virtual void LoadInto(const Json& json, const JsonArgs& args, void* dst,
+ ValidationErrors* errors) const = 0;
+
+ protected:
+ ~LoaderInterface() = default;
+};
+
+// Loads a scalar (string or number).
+class LoadScalar : public LoaderInterface {
+ public:
+ void LoadInto(const Json& json, const JsonArgs& args, void* dst,
+ ValidationErrors* errors) const override;
+
+ protected:
+ ~LoadScalar() = default;
+
+ private:
+ // true if we're loading a number, false if we're loading a string.
+ // We use a virtual function to store this decision in a vtable instead of
+ // needing an instance variable.
+ virtual bool IsNumber() const = 0;
+
+ virtual void LoadInto(const TString& json, void* dst,
+ ValidationErrors* errors) const = 0;
+};
+
+// Load a string.
+class LoadString : public LoadScalar {
+ protected:
+ ~LoadString() = default;
+
+ private:
+ bool IsNumber() const override;
+ void LoadInto(const TString& value, void* dst,
+ ValidationErrors* errors) const override;
+};
+
+// Load a Duration.
+class LoadDuration : public LoadScalar {
+ protected:
+ ~LoadDuration() = default;
+
+ private:
+ bool IsNumber() const override;
+ void LoadInto(const TString& value, void* dst,
+ ValidationErrors* errors) const override;
+};
+
+// Load a number.
+class LoadNumber : public LoadScalar {
+ protected:
+ ~LoadNumber() = default;
+
+ private:
+ bool IsNumber() const override;
+};
+
+// Load a signed number of type T.
+template <typename T>
+class TypedLoadSignedNumber : public LoadNumber {
+ protected:
+ ~TypedLoadSignedNumber() = default;
+
+ private:
+ void LoadInto(const TString& value, void* dst,
+ ValidationErrors* errors) const override {
+ if (!y_absl::SimpleAtoi(value, static_cast<T*>(dst))) {
+ errors->AddError("failed to parse number");
+ }
+ }
+};
+
+// Load an unsigned number of type T.
+template <typename T>
+class TypedLoadUnsignedNumber : public LoadNumber {
+ protected:
+ ~TypedLoadUnsignedNumber() = default;
+
+ private:
+ void LoadInto(const TString& value, void* dst,
+ ValidationErrors* errors) const override {
+ if (!y_absl::SimpleAtoi(value, static_cast<T*>(dst))) {
+ errors->AddError("failed to parse non-negative number");
+ }
+ }
+};
+
+// Load a float.
+class LoadFloat : public LoadNumber {
+ protected:
+ ~LoadFloat() = default;
+
+ private:
+ void LoadInto(const TString& value, void* dst,
+ ValidationErrors* errors) const override {
+ if (!y_absl::SimpleAtof(value, static_cast<float*>(dst))) {
+ errors->AddError("failed to parse floating-point number");
+ }
+ }
+};
+
+// Load a double.
+class LoadDouble : public LoadNumber {
+ protected:
+ ~LoadDouble() = default;
+
+ private:
+ void LoadInto(const TString& value, void* dst,
+ ValidationErrors* errors) const override {
+ if (!y_absl::SimpleAtod(value, static_cast<double*>(dst))) {
+ errors->AddError("failed to parse floating-point number");
+ }
+ }
+};
+
+// Load a bool.
+class LoadBool : public LoaderInterface {
+ public:
+ void LoadInto(const Json& json, const JsonArgs& /*args*/, void* dst,
+ ValidationErrors* errors) const override;
+
+ protected:
+ ~LoadBool() = default;
+};
+
+// Loads an unprocessed JSON object value.
+class LoadUnprocessedJsonObject : public LoaderInterface {
+ public:
+ void LoadInto(const Json& json, const JsonArgs& /*args*/, void* dst,
+ ValidationErrors* errors) const override;
+
+ protected:
+ ~LoadUnprocessedJsonObject() = default;
+};
+
+// Load a vector of some type.
+class LoadVector : public LoaderInterface {
+ public:
+ void LoadInto(const Json& json, const JsonArgs& args, void* dst,
+ ValidationErrors* errors) const override;
+
+ protected:
+ ~LoadVector() = default;
+
+ private:
+ virtual void* EmplaceBack(void* dst) const = 0;
+ virtual const LoaderInterface* ElementLoader() const = 0;
+};
+
+// Load a map of string->some type.
+class LoadMap : public LoaderInterface {
+ public:
+ void LoadInto(const Json& json, const JsonArgs& args, void* dst,
+ ValidationErrors* errors) const override;
+
+ protected:
+ ~LoadMap() = default;
+
+ private:
+ virtual void* Insert(const TString& name, void* dst) const = 0;
+ virtual const LoaderInterface* ElementLoader() const = 0;
+};
+
+// Load an optional of some type.
+class LoadOptional : public LoaderInterface {
+ public:
+ void LoadInto(const Json& json, const JsonArgs& args, void* dst,
+ ValidationErrors* errors) const override;
+
+ protected:
+ ~LoadOptional() = default;
+
+ private:
+ virtual void* Emplace(void* dst) const = 0;
+ virtual void Reset(void* dst) const = 0;
+ virtual const LoaderInterface* ElementLoader() const = 0;
+};
+
+// Fetch a LoaderInterface for some type.
+template <typename T>
+const LoaderInterface* LoaderForType();
+
+// AutoLoader implements LoaderInterface for a type.
+// The default asks the type for its LoaderInterface and then uses that.
+// Classes that load from objects should provide a:
+// static const JsonLoaderInterface* JsonLoader();
+template <typename T>
+class AutoLoader final : public LoaderInterface {
+ public:
+ void LoadInto(const Json& json, const JsonArgs& args, void* dst,
+ ValidationErrors* errors) const override {
+ T::JsonLoader(args)->LoadInto(json, args, dst, errors);
+ }
+
+ private:
+ ~AutoLoader() = default;
+};
+
+// Specializations of AutoLoader for basic types.
+template <>
+class AutoLoader<TString> final : public LoadString {
+ private:
+ ~AutoLoader() = default;
+};
+template <>
+class AutoLoader<Duration> final : public LoadDuration {
+ private:
+ ~AutoLoader() = default;
+};
+template <>
+class AutoLoader<int32_t> final : public TypedLoadSignedNumber<int32_t> {
+ private:
+ ~AutoLoader() = default;
+};
+template <>
+class AutoLoader<int64_t> final : public TypedLoadSignedNumber<int64_t> {
+ private:
+ ~AutoLoader() = default;
+};
+template <>
+class AutoLoader<uint32_t> final : public TypedLoadUnsignedNumber<uint32_t> {
+ private:
+ ~AutoLoader() = default;
+};
+template <>
+class AutoLoader<uint64_t> final : public TypedLoadUnsignedNumber<uint64_t> {
+ private:
+ ~AutoLoader() = default;
+};
+template <>
+class AutoLoader<float> final : public LoadFloat {
+ private:
+ ~AutoLoader() = default;
+};
+template <>
+class AutoLoader<double> final : public LoadDouble {
+ private:
+ ~AutoLoader() = default;
+};
+template <>
+class AutoLoader<bool> final : public LoadBool {
+ private:
+ ~AutoLoader() = default;
+};
+template <>
+class AutoLoader<Json::Object> final : public LoadUnprocessedJsonObject {
+ private:
+ ~AutoLoader() = default;
+};
+
+// Specializations of AutoLoader for vectors.
+template <typename T>
+class AutoLoader<std::vector<T>> final : public LoadVector {
+ private:
+ ~AutoLoader() = default;
+ void* EmplaceBack(void* dst) const final {
+ auto* vec = static_cast<std::vector<T>*>(dst);
+ vec->emplace_back();
+ return &vec->back();
+ }
+ const LoaderInterface* ElementLoader() const final {
+ return LoaderForType<T>();
+ }
+};
+
+// Specialization of AutoLoader for vector<bool> - we need a different
+// implementation because, as vector<bool> packs bits in its implementation, the
+// technique of returning a void* from Emplace() for the generic vector loader
+// doesn't work.
+template <>
+class AutoLoader<std::vector<bool>> final : public LoaderInterface {
+ public:
+ void LoadInto(const Json& json, const JsonArgs& args, void* dst,
+ ValidationErrors* errors) const override;
+
+ private:
+ ~AutoLoader() = default;
+};
+
+// Specializations of AutoLoader for maps.
+template <typename T>
+class AutoLoader<std::map<TString, T>> final : public LoadMap {
+ private:
+ void* Insert(const TString& name, void* dst) const final {
+ return &static_cast<std::map<TString, T>*>(dst)
+ ->emplace(name, T())
+ .first->second;
+ };
+ const LoaderInterface* ElementLoader() const final {
+ return LoaderForType<T>();
+ }
+
+ private:
+ ~AutoLoader() = default;
+};
+
+// Specializations of AutoLoader for y_absl::optional<>.
+template <typename T>
+class AutoLoader<y_absl::optional<T>> final : public LoadOptional {
+ public:
+ void* Emplace(void* dst) const final {
+ return &static_cast<y_absl::optional<T>*>(dst)->emplace();
+ }
+ void Reset(void* dst) const final {
+ static_cast<y_absl::optional<T>*>(dst)->reset();
+ }
+ const LoaderInterface* ElementLoader() const final {
+ return LoaderForType<T>();
+ }
+
+ private:
+ ~AutoLoader() = default;
+};
+
+// Implementation of aforementioned LoaderForType.
+// Simply keeps a static AutoLoader<T> and returns a pointer to that.
+template <typename T>
+const LoaderInterface* LoaderForType() {
+ return NoDestructSingleton<AutoLoader<T>>::Get();
+}
+
+// Element describes one typed field to be loaded from a JSON object.
+struct Element {
+ Element() = default;
+ template <typename A, typename B>
+ Element(const char* name, bool optional, B A::*p,
+ const LoaderInterface* loader, const char* enable_key)
+ : loader(loader),
+ member_offset(static_cast<uint16_t>(
+ reinterpret_cast<uintptr_t>(&(static_cast<A*>(nullptr)->*p)))),
+ optional(optional),
+ name(name),
+ enable_key(enable_key) {}
+ // The loader for this field.
+ const LoaderInterface* loader;
+ // Offset into the destination object to store the field.
+ uint16_t member_offset;
+ // Is this field optional?
+ bool optional;
+ // The name of the field.
+ const char* name;
+ // The key to use with JsonArgs to see if this field is enabled.
+ const char* enable_key;
+};
+
+// Vec<T, kSize> provides a constant array type that can be appended to by
+// copying. It's setup so that most compilers can optimize away all of its
+// operations.
+template <typename T, size_t kSize>
+class Vec {
+ public:
+ Vec(const Vec<T, kSize - 1>& other, const T& new_value) {
+ for (size_t i = 0; i < other.size(); i++) values_[i] = other.data()[i];
+ values_[kSize - 1] = new_value;
+ }
+
+ const T* data() const { return values_; }
+ size_t size() const { return kSize; }
+
+ private:
+ T values_[kSize];
+};
+
+template <typename T>
+class Vec<T, 0> {
+ public:
+ const T* data() const { return nullptr; }
+ size_t size() const { return 0; }
+};
+
+// Given a list of elements, and a destination object, load the elements into
+// the object from some parsed JSON.
+// Returns false if the JSON object was not of type Json::Type::OBJECT.
+bool LoadObject(const Json& json, const JsonArgs& args, const Element* elements,
+ size_t num_elements, void* dst, ValidationErrors* errors);
+
+// Adaptor type - takes a compile time computed list of elements and
+// implements LoaderInterface by calling LoadObject.
+template <typename T, size_t kElemCount, typename Hidden = void>
+class FinishedJsonObjectLoader final : public LoaderInterface {
+ public:
+ explicit FinishedJsonObjectLoader(const Vec<Element, kElemCount>& elements)
+ : elements_(elements) {}
+
+ void LoadInto(const Json& json, const JsonArgs& args, void* dst,
+ ValidationErrors* errors) const override {
+ LoadObject(json, args, elements_.data(), elements_.size(), dst, errors);
+ }
+
+ private:
+ GPR_NO_UNIQUE_ADDRESS Vec<Element, kElemCount> elements_;
+};
+
+// Specialization for when the object has a JsonPostLoad function exposed.
+template <typename T, size_t kElemCount>
+class FinishedJsonObjectLoader<T, kElemCount,
+ y_absl::void_t<decltype(&T::JsonPostLoad)>>
+ final : public LoaderInterface {
+ public:
+ explicit FinishedJsonObjectLoader(const Vec<Element, kElemCount>& elements)
+ : elements_(elements) {}
+
+ void LoadInto(const Json& json, const JsonArgs& args, void* dst,
+ ValidationErrors* errors) const override {
+ // Call JsonPostLoad() only if json is a JSON object.
+ if (LoadObject(json, args, elements_.data(), elements_.size(), dst,
+ errors)) {
+ static_cast<T*>(dst)->JsonPostLoad(json, args, errors);
+ }
+ }
+
+ private:
+ GPR_NO_UNIQUE_ADDRESS Vec<Element, kElemCount> elements_;
+};
+
+// Builder type for JSON object loaders.
+// Concatenate fields with Field, OptionalField, and then call Finish to
+// obtain an object that implements LoaderInterface.
+template <typename T, size_t kElemCount = 0>
+class JsonObjectLoader final {
+ public:
+ JsonObjectLoader() {
+ static_assert(kElemCount == 0,
+ "Only initial loader step can have kElemCount==0.");
+ }
+
+ FinishedJsonObjectLoader<T, kElemCount>* Finish() const {
+ return new FinishedJsonObjectLoader<T, kElemCount>(elements_);
+ }
+
+ template <typename U>
+ JsonObjectLoader<T, kElemCount + 1> Field(
+ const char* name, U T::*p, const char* enable_key = nullptr) const {
+ return Field(name, false, p, enable_key);
+ }
+
+ template <typename U>
+ JsonObjectLoader<T, kElemCount + 1> OptionalField(
+ const char* name, U T::*p, const char* enable_key = nullptr) const {
+ return Field(name, true, p, enable_key);
+ }
+
+ JsonObjectLoader(const Vec<Element, kElemCount - 1>& elements,
+ Element new_element)
+ : elements_(elements, new_element) {}
+
+ private:
+ template <typename U>
+ JsonObjectLoader<T, kElemCount + 1> Field(const char* name, bool optional,
+ U T::*p,
+ const char* enable_key) const {
+ return JsonObjectLoader<T, kElemCount + 1>(
+ elements_, Element(name, optional, p, LoaderForType<U>(), enable_key));
+ }
+
+ GPR_NO_UNIQUE_ADDRESS Vec<Element, kElemCount> elements_;
+};
+
+const Json* GetJsonObjectField(const Json::Object& json,
+ y_absl::string_view field,
+ ValidationErrors* errors, bool required);
+
+} // namespace json_detail
+
+template <typename T>
+using JsonObjectLoader = json_detail::JsonObjectLoader<T>;
+
+using JsonLoaderInterface = json_detail::LoaderInterface;
+
+template <typename T>
+y_absl::StatusOr<T> LoadFromJson(
+ const Json& json, const JsonArgs& args = JsonArgs(),
+ y_absl::string_view error_prefix = "errors validating JSON") {
+ ValidationErrors errors;
+ T result{};
+ json_detail::LoaderForType<T>()->LoadInto(json, args, &result, &errors);
+ if (!errors.ok()) return errors.status(error_prefix);
+ return std::move(result);
+}
+
+template <typename T>
+y_absl::StatusOr<RefCountedPtr<T>> LoadRefCountedFromJson(
+ const Json& json, const JsonArgs& args = JsonArgs(),
+ y_absl::string_view error_prefix = "errors validating JSON") {
+ ValidationErrors errors;
+ auto result = MakeRefCounted<T>();
+ json_detail::LoaderForType<T>()->LoadInto(json, args, result.get(), &errors);
+ if (!errors.ok()) return errors.status(error_prefix);
+ return std::move(result);
+}
+
+template <typename T>
+T LoadFromJson(const Json& json, const JsonArgs& args,
+ ValidationErrors* errors) {
+ T result{};
+ json_detail::LoaderForType<T>()->LoadInto(json, args, &result, errors);
+ return result;
+}
+
+template <typename T>
+y_absl::optional<T> LoadJsonObjectField(const Json::Object& json,
+ const JsonArgs& args,
+ y_absl::string_view field,
+ ValidationErrors* errors,
+ bool required = true) {
+ ValidationErrors::ScopedField error_field(errors, y_absl::StrCat(".", field));
+ const Json* field_json =
+ json_detail::GetJsonObjectField(json, field, errors, required);
+ if (field_json == nullptr) return y_absl::nullopt;
+ T result{};
+ size_t starting_error_size = errors->size();
+ json_detail::LoaderForType<T>()->LoadInto(*field_json, args, &result, errors);
+ if (errors->size() > starting_error_size) return y_absl::nullopt;
+ return std::move(result);
+}
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_JSON_JSON_OBJECT_LOADER_H
diff --git a/contrib/libs/grpc/src/core/lib/json/json_reader.cc b/contrib/libs/grpc/src/core/lib/json/json_reader.cc
index 96b7d2c3de..0aa7d79713 100644
--- a/contrib/libs/grpc/src/core/lib/json/json_reader.cc
+++ b/contrib/libs/grpc/src/core/lib/json/json_reader.cc
@@ -1,30 +1,38 @@
-/*
- *
- * Copyright 2015-2016 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
+//
+// Copyright 2015-2016 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
#include <grpc/support/port_platform.h>
-#include <string.h>
+#include <inttypes.h>
+#include <stdlib.h>
+#include <algorithm>
+#include <map>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+#include "y_absl/base/attributes.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
#include <grpc/support/log.h>
@@ -39,7 +47,7 @@ namespace {
class JsonReader {
public:
- static grpc_error_handle Parse(y_absl::string_view input, Json* output);
+ static y_absl::StatusOr<Json> Parse(y_absl::string_view input);
private:
enum class Status {
@@ -118,9 +126,10 @@ class JsonReader {
bool container_just_begun_ = false;
uint16_t unicode_char_ = 0;
uint16_t unicode_high_surrogate_ = 0;
- std::vector<grpc_error_handle> errors_;
+ std::vector<TString> errors_;
bool truncated_errors_ = false;
uint8_t utf8_bytes_remaining_ = 0;
+ uint8_t utf8_first_byte_ = 0;
Json root_value_;
std::vector<Json*> stack_;
@@ -130,29 +139,56 @@ class JsonReader {
};
bool JsonReader::StringAddChar(uint32_t c) {
- switch (utf8_bytes_remaining_) {
- case 0:
- if ((c & 0x80) == 0) {
- utf8_bytes_remaining_ = 0;
- } else if ((c & 0xe0) == 0xc0) {
- utf8_bytes_remaining_ = 1;
- } else if ((c & 0xf0) == 0xe0) {
- utf8_bytes_remaining_ = 2;
- } else if ((c & 0xf8) == 0xf0) {
- utf8_bytes_remaining_ = 3;
- } else {
- return false;
- }
- break;
- case 1:
- case 2:
- case 3:
- if ((c & 0xc0) != 0x80) return false;
- --utf8_bytes_remaining_;
- break;
- default:
- abort();
+ if (utf8_bytes_remaining_ == 0) {
+ if ((c & 0x80) == 0) {
+ utf8_bytes_remaining_ = 0;
+ } else if ((c & 0xe0) == 0xc0 && c >= 0xc2) {
+ /// For the UTF-8 characters with length of 2 bytes, the range of the
+ /// first byte is [0xc2, 0xdf]. Reference: Table 3-7 in
+ /// https://www.unicode.org/versions/Unicode14.0.0/ch03.pdf
+ utf8_bytes_remaining_ = 1;
+ } else if ((c & 0xf0) == 0xe0) {
+ utf8_bytes_remaining_ = 2;
+ } else if ((c & 0xf8) == 0xf0 && c <= 0xf4) {
+ /// For the UTF-8 characters with length of 4 bytes, the range of the
+ /// first byte is [0xf0, 0xf4]. Reference: Table 3-7 in
+ /// https://www.unicode.org/versions/Unicode14.0.0/ch03.pdf
+ utf8_bytes_remaining_ = 3;
+ } else {
+ return false;
+ }
+ utf8_first_byte_ = c;
+ } else if (utf8_bytes_remaining_ == 1) {
+ if ((c & 0xc0) != 0x80) {
+ return false;
+ }
+ --utf8_bytes_remaining_;
+ } else if (utf8_bytes_remaining_ == 2) {
+ /// For UTF-8 characters starting with 0xe0, their length is 3 bytes, and
+ /// the range of the second byte is [0xa0, 0xbf]. For UTF-8 characters
+ /// starting with 0xed, their length is 3 bytes, and the range of the second
+ /// byte is [0x80, 0x9f]. Reference: Table 3-7 in
+ /// https://www.unicode.org/versions/Unicode14.0.0/ch03.pdf
+ if (((c & 0xc0) != 0x80) || (utf8_first_byte_ == 0xe0 && c < 0xa0) ||
+ (utf8_first_byte_ == 0xed && c > 0x9f)) {
+ return false;
+ }
+ --utf8_bytes_remaining_;
+ } else if (utf8_bytes_remaining_ == 3) {
+ /// For UTF-8 characters starting with 0xf0, their length is 4 bytes, and
+ /// the range of the second byte is [0x90, 0xbf]. For UTF-8 characters
+ /// starting with 0xf4, their length is 4 bytes, and the range of the second
+ /// byte is [0x80, 0x8f]. Reference: Table 3-7 in
+ /// https://www.unicode.org/versions/Unicode14.0.0/ch03.pdf
+ if (((c & 0xc0) != 0x80) || (utf8_first_byte_ == 0xf0 && c < 0x90) ||
+ (utf8_first_byte_ == 0xf4 && c > 0x8f)) {
+ return false;
+ }
+ --utf8_bytes_remaining_;
+ } else {
+ abort();
}
+
string_.push_back(static_cast<uint8_t>(c));
return true;
}
@@ -203,9 +239,8 @@ Json* JsonReader::CreateAndLinkValue() {
if (errors_.size() == GRPC_JSON_MAX_ERRORS) {
truncated_errors_ = true;
} else {
- errors_.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrFormat("duplicate key \"%s\" at index %" PRIuPTR, key_,
- CurrentIndex())));
+ errors_.push_back(y_absl::StrFormat(
+ "duplicate key \"%s\" at index %" PRIuPTR, key_, CurrentIndex()));
}
}
value = &(*parent->mutable_object())[std::move(key_)];
@@ -223,9 +258,9 @@ bool JsonReader::StartContainer(Json::Type type) {
if (errors_.size() == GRPC_JSON_MAX_ERRORS) {
truncated_errors_ = true;
} else {
- errors_.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ errors_.push_back(
y_absl::StrFormat("exceeded max stack depth (%d) at index %" PRIuPTR,
- GRPC_JSON_MAX_DEPTH, CurrentIndex())));
+ GRPC_JSON_MAX_DEPTH, CurrentIndex()));
}
return false;
}
@@ -864,35 +899,32 @@ JsonReader::Status JsonReader::Run() {
GPR_UNREACHABLE_CODE(return Status::GRPC_JSON_INTERNAL_ERROR);
}
-grpc_error_handle JsonReader::Parse(y_absl::string_view input, Json* output) {
+y_absl::StatusOr<Json> JsonReader::Parse(y_absl::string_view input) {
JsonReader reader(input);
Status status = reader.Run();
if (reader.truncated_errors_) {
- reader.errors_.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ reader.errors_.push_back(
"too many errors encountered during JSON parsing -- fix reported "
- "errors and try again to see additional errors"));
+ "errors and try again to see additional errors");
}
if (status == Status::GRPC_JSON_INTERNAL_ERROR) {
- reader.errors_.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
- "internal error in JSON parser at index ", reader.CurrentIndex())));
+ reader.errors_.push_back(y_absl::StrCat(
+ "internal error in JSON parser at index ", reader.CurrentIndex()));
} else if (status == Status::GRPC_JSON_PARSE_ERROR) {
- reader.errors_.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("JSON parse error at index ", reader.CurrentIndex())));
+ reader.errors_.push_back(
+ y_absl::StrCat("JSON parse error at index ", reader.CurrentIndex()));
}
if (!reader.errors_.empty()) {
- return GRPC_ERROR_CREATE_FROM_VECTOR("JSON parsing failed",
- &reader.errors_);
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "JSON parsing failed: [", y_absl::StrJoin(reader.errors_, "; "), "]"));
}
- *output = std::move(reader.root_value_);
- return GRPC_ERROR_NONE;
+ return std::move(reader.root_value_);
}
} // namespace
-Json Json::Parse(y_absl::string_view json_str, grpc_error_handle* error) {
- Json value;
- *error = JsonReader::Parse(json_str, &value);
- return value;
+y_absl::StatusOr<Json> Json::Parse(y_absl::string_view json_str) {
+ return JsonReader::Parse(json_str);
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/json/json_util.cc b/contrib/libs/grpc/src/core/lib/json/json_util.cc
index d1014b6a49..3f97f14823 100644
--- a/contrib/libs/grpc/src/core/lib/json/json_util.cc
+++ b/contrib/libs/grpc/src/core/lib/json/json_util.cc
@@ -20,39 +20,19 @@
#include "src/core/lib/json/json_util.h"
-#include <grpc/support/string_util.h>
-
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gprpp/no_destruct.h"
+#include "src/core/lib/gprpp/validation_errors.h"
+#include "src/core/lib/json/json_args.h"
+#include "src/core/lib/json/json_object_loader.h"
namespace grpc_core {
bool ParseDurationFromJson(const Json& field, Duration* duration) {
- if (field.type() != Json::Type::STRING) return false;
- size_t len = field.string_value().size();
- if (field.string_value()[len - 1] != 's') return false;
- UniquePtr<char> buf(gpr_strdup(field.string_value().c_str()));
- *(buf.get() + len - 1) = '\0'; // Remove trailing 's'.
- char* decimal_point = strchr(buf.get(), '.');
- int nanos = 0;
- if (decimal_point != nullptr) {
- *decimal_point = '\0';
- nanos = gpr_parse_nonnegative_int(decimal_point + 1);
- if (nanos == -1) {
- return false;
- }
- int num_digits = static_cast<int>(strlen(decimal_point + 1));
- if (num_digits > 9) { // We don't accept greater precision than nanos.
- return false;
- }
- for (int i = 0; i < (9 - num_digits); ++i) {
- nanos *= 10;
- }
- }
- int seconds =
- decimal_point == buf.get() ? 0 : gpr_parse_nonnegative_int(buf.get());
- if (seconds == -1) return false;
- *duration = Duration::FromSecondsAndNanoseconds(seconds, nanos);
- return true;
+ ValidationErrors errors;
+ static_cast<json_detail::LoaderInterface*>(
+ NoDestructSingleton<json_detail::AutoLoader<Duration>>::Get())
+ ->LoadInto(field, JsonArgs(), duration, &errors);
+ return errors.ok();
}
bool ExtractJsonBool(const Json& json, y_absl::string_view field_name,
diff --git a/contrib/libs/grpc/src/core/lib/json/json_util.h b/contrib/libs/grpc/src/core/lib/json/json_util.h
index c6b7bb60d8..8a5197dd34 100644
--- a/contrib/libs/grpc/src/core/lib/json/json_util.h
+++ b/contrib/libs/grpc/src/core/lib/json/json_util.h
@@ -21,10 +21,20 @@
#include <grpc/support/port_platform.h>
+#include <algorithm>
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <type_traits>
+#include <utility>
+#include <vector>
+
#include "y_absl/strings/numbers.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/json/json.h"
namespace grpc_core {
@@ -45,9 +55,9 @@ bool ExtractJsonNumber(const Json& json, y_absl::string_view field_name,
NumericType* output,
std::vector<grpc_error_handle>* error_list) {
static_assert(std::is_integral<NumericType>::value, "Integral required");
- if (json.type() != Json::Type::NUMBER) {
- error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
- y_absl::StrCat("field:", field_name, " error:type should be NUMBER")));
+ if (json.type() != Json::Type::NUMBER && json.type() != Json::Type::STRING) {
+ error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
+ "field:", field_name, " error:type should be NUMBER or STRING")));
return false;
}
if (!y_absl::SimpleAtoi(json.string_value(), output)) {
diff --git a/contrib/libs/grpc/src/core/lib/json/json_writer.cc b/contrib/libs/grpc/src/core/lib/json/json_writer.cc
index 6cca05237c..76cb23e332 100644
--- a/contrib/libs/grpc/src/core/lib/json/json_writer.cc
+++ b/contrib/libs/grpc/src/core/lib/json/json_writer.cc
@@ -18,8 +18,14 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
#include <stdlib.h>
-#include <string.h>
+
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
#include "y_absl/strings/string_view.h"
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy.cc b/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy.cc
index e3da7698d7..22fe07eb33 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy.cc
+++ b/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy.cc
@@ -18,10 +18,12 @@
#include <grpc/support/port_platform.h>
-#include "src/core/ext/filters/client_channel/lb_policy.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
-#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
-#include "src/core/lib/iomgr/combiner.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/pollset_set.h"
namespace grpc_core {
@@ -39,7 +41,8 @@ LoadBalancingPolicy::LoadBalancingPolicy(Args args, intptr_t initial_refcount)
initial_refcount),
work_serializer_(std::move(args.work_serializer)),
interested_parties_(grpc_pollset_set_create()),
- channel_control_helper_(std::move(args.channel_control_helper)) {}
+ channel_control_helper_(std::move(args.channel_control_helper)),
+ channel_args_(std::move(args.args)) {}
LoadBalancingPolicy::~LoadBalancingPolicy() {
grpc_pollset_set_destroy(interested_parties_);
@@ -51,48 +54,6 @@ void LoadBalancingPolicy::Orphan() {
}
//
-// LoadBalancingPolicy::UpdateArgs
-//
-
-LoadBalancingPolicy::UpdateArgs::UpdateArgs(const UpdateArgs& other)
- : addresses(other.addresses),
- config(other.config),
- resolution_note(other.resolution_note),
- args(grpc_channel_args_copy(other.args)) {}
-
-LoadBalancingPolicy::UpdateArgs::UpdateArgs(UpdateArgs&& other) noexcept
- : addresses(std::move(other.addresses)),
- config(std::move(other.config)),
- resolution_note(std::move(other.resolution_note)),
- // TODO(roth): Use std::move() once channel args is converted to C++.
- args(other.args) {
- other.args = nullptr;
-}
-
-LoadBalancingPolicy::UpdateArgs& LoadBalancingPolicy::UpdateArgs::operator=(
- const UpdateArgs& other) {
- if (&other == this) return *this;
- addresses = other.addresses;
- config = other.config;
- resolution_note = other.resolution_note;
- grpc_channel_args_destroy(args);
- args = grpc_channel_args_copy(other.args);
- return *this;
-}
-
-LoadBalancingPolicy::UpdateArgs& LoadBalancingPolicy::UpdateArgs::operator=(
- UpdateArgs&& other) noexcept {
- addresses = std::move(other.addresses);
- config = std::move(other.config);
- resolution_note = std::move(other.resolution_note);
- // TODO(roth): Use std::move() once channel args is converted to C++.
- grpc_channel_args_destroy(args);
- args = other.args;
- other.args = nullptr;
- return *this;
-}
-
-//
// LoadBalancingPolicy::QueuePicker
//
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy.h b/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy.h
index 864e329d27..1f3fa14e36 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/lb_policy.h
+++ b/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy.h
@@ -14,26 +14,39 @@
// limitations under the License.
//
-#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_H
-#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_H
+#ifndef GRPC_CORE_LIB_LOAD_BALANCING_LB_POLICY_H
+#define GRPC_CORE_LIB_LOAD_BALANCING_LB_POLICY_H
#include <grpc/support/port_platform.h>
-#include <functional>
-#include <iterator>
+#include <stddef.h>
+#include <stdint.h>
+
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
#include "y_absl/status/status.h"
#include "y_absl/status/statusor.h"
#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
#include "y_absl/types/variant.h"
-#include "src/core/ext/filters/client_channel/subchannel_interface.h"
+#include <grpc/impl/codegen/connectivity_state.h>
+
+#include "src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/polling_entity.h"
-#include "src/core/lib/iomgr/work_serializer.h"
+#include "src/core/lib/gprpp/work_serializer.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/load_balancing/subchannel_interface.h"
#include "src/core/lib/resolver/server_address.h"
-#include "src/core/lib/transport/connectivity_state.h"
namespace grpc_core {
@@ -92,13 +105,6 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
/// It is more efficient to use this than to allocate memory directly
/// for allocations that need to be made on a per-call basis.
virtual void* Alloc(size_t size) = 0;
-
- /// EXPERIMENTAL API.
- /// Returns the value of the call attribute \a key.
- /// Keys are static strings, so an attribute can be accessed by an LB
- /// policy implementation only if it knows about the internal key.
- /// Returns a null string_view if key not found.
- virtual y_absl::string_view ExperimentalGetCallAttribute(const char* key) = 0;
};
/// Interface for accessing metadata.
@@ -149,26 +155,6 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
/// SubchannelCallTrackerInterface.
class BackendMetricAccessor {
public:
- // Represents backend metrics reported by the backend to the client.
- struct BackendMetricData {
- /// CPU utilization expressed as a fraction of available CPU resources.
- double cpu_utilization;
- /// Memory utilization expressed as a fraction of available memory
- /// resources.
- double mem_utilization;
- /// Total requests per second being served by the backend. This
- /// should include all services that a backend is responsible for.
- uint64_t requests_per_second;
- /// Application-specific requests cost metrics. Metric names are
- /// determined by the application. Each value is an absolute cost
- /// (e.g. 3487 bytes of storage) associated with the request.
- std::map<y_absl::string_view, double> request_cost;
- /// Application-specific resource utilization metrics. Metric names
- /// are determined by the application. Each value is expressed as a
- /// fraction of total resources available.
- std::map<y_absl::string_view, double> utilization;
- };
-
virtual ~BackendMetricAccessor() = default;
/// Returns the backend metric data returned by the server for the call,
@@ -292,7 +278,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
/// Creates a new subchannel with the specified channel args.
virtual RefCountedPtr<SubchannelInterface> CreateSubchannel(
- ServerAddress address, const grpc_channel_args& args) = 0;
+ ServerAddress address, const ChannelArgs& args) = 0;
/// Sets the connectivity state and returns a new picker to be used
/// by the client channel.
@@ -320,7 +306,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
~Config() override = default;
// Returns the load balancing policy name
- virtual const char* name() const = 0;
+ virtual y_absl::string_view name() const = 0;
};
/// Data passed to the UpdateLocked() method when new addresses and
@@ -340,16 +326,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
// TODO(roth): Before making this a public API, find a better
// abstraction for representing channel args.
- const grpc_channel_args* args = nullptr;
-
- // TODO(roth): Remove everything below once channel args is
- // converted to a copyable and movable C++ object.
- UpdateArgs() = default;
- ~UpdateArgs() { grpc_channel_args_destroy(args); }
- UpdateArgs(const UpdateArgs& other);
- UpdateArgs(UpdateArgs&& other) noexcept;
- UpdateArgs& operator=(const UpdateArgs& other);
- UpdateArgs& operator=(UpdateArgs&& other) noexcept;
+ ChannelArgs args;
};
/// Args used to instantiate an LB policy.
@@ -362,10 +339,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
std::unique_ptr<ChannelControlHelper> channel_control_helper;
/// Channel args.
// TODO(roth): Find a better channel args representation for this API.
- // TODO(roth): Clarify ownership semantics here -- currently, this
- // does not take ownership of args, which is the opposite of how we
- // handle them in UpdateArgs.
- const grpc_channel_args* args = nullptr;
+ ChannelArgs args;
};
explicit LoadBalancingPolicy(Args args, intptr_t initial_refcount = 1);
@@ -376,15 +350,15 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
LoadBalancingPolicy& operator=(const LoadBalancingPolicy&) = delete;
/// Returns the name of the LB policy.
- virtual const char* name() const = 0;
+ virtual y_absl::string_view name() const = 0;
/// Updates the policy with new data from the resolver. Will be invoked
/// immediately after LB policy is constructed, and then again whenever
- /// the resolver returns a new result.
- // TODO(roth): Change this to return some indication as to whether the
- // update has been accepted, so that we can indicate to the resolver
- // whether it should go into backoff to retry the resolution.
- virtual void UpdateLocked(UpdateArgs) = 0; // NOLINT
+ /// the resolver returns a new result. The returned status indicates
+ /// whether the LB policy accepted the update; if non-OK, informs
+ /// polling-based resolvers that they should go into backoff delay and
+ /// eventually reattempt the resolution.
+ virtual y_absl::Status UpdateLocked(UpdateArgs) = 0; // NOLINT
/// Tries to enter a READY connectivity state.
/// This is a no-op by default, since most LB policies never go into
@@ -434,6 +408,8 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
return work_serializer_;
}
+ const ChannelArgs& channel_args() const { return channel_args_; }
+
// Note: LB policies MUST NOT call any method on the helper from their
// constructor.
ChannelControlHelper* channel_control_helper() const {
@@ -450,8 +426,11 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
grpc_pollset_set* interested_parties_;
/// Channel control helper.
std::unique_ptr<ChannelControlHelper> channel_control_helper_;
+ /// Channel args passed in.
+ // TODO(roth): Rework Args so that we don't need to capture channel args here.
+ ChannelArgs channel_args_;
};
} // namespace grpc_core
-#endif // GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_H
+#endif // GRPC_CORE_LIB_LOAD_BALANCING_LB_POLICY_H
diff --git a/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_factory.h b/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_factory.h
new file mode 100644
index 0000000000..585f9389d3
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_factory.h
@@ -0,0 +1,49 @@
+//
+// Copyright 2015 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_LIB_LOAD_BALANCING_LB_POLICY_FACTORY_H
+#define GRPC_CORE_LIB_LOAD_BALANCING_LB_POLICY_FACTORY_H
+
+#include <grpc/support/port_platform.h>
+
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+
+namespace grpc_core {
+
+class LoadBalancingPolicyFactory {
+ public:
+ virtual ~LoadBalancingPolicyFactory() {}
+
+ /// Returns a new LB policy instance.
+ virtual OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
+ LoadBalancingPolicy::Args) const = 0;
+
+ /// Returns the LB policy name that this factory provides.
+ virtual y_absl::string_view name() const = 0;
+
+ virtual y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+ ParseLoadBalancingConfig(const Json& json) const = 0;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_LOAD_BALANCING_LB_POLICY_FACTORY_H
diff --git a/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_registry.cc b/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_registry.cc
new file mode 100644
index 0000000000..7c748059bd
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_registry.cc
@@ -0,0 +1,142 @@
+//
+// Copyright 2015 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/load_balancing/lb_policy_registry.h"
+
+#include <algorithm>
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/status/status.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/support/log.h>
+
+#include "src/core/lib/load_balancing/lb_policy.h"
+
+namespace grpc_core {
+
+//
+// LoadBalancingPolicyRegistry::Builder
+//
+
+void LoadBalancingPolicyRegistry::Builder::RegisterLoadBalancingPolicyFactory(
+ std::unique_ptr<LoadBalancingPolicyFactory> factory) {
+ gpr_log(GPR_DEBUG, "registering LB policy factory for \"%s\"",
+ TString(factory->name()).c_str());
+ GPR_ASSERT(factories_.find(factory->name()) == factories_.end());
+ factories_.emplace(factory->name(), std::move(factory));
+}
+
+LoadBalancingPolicyRegistry LoadBalancingPolicyRegistry::Builder::Build() {
+ LoadBalancingPolicyRegistry out;
+ out.factories_ = std::move(factories_);
+ return out;
+}
+
+//
+// LoadBalancingPolicyRegistry
+//
+
+LoadBalancingPolicyFactory*
+LoadBalancingPolicyRegistry::GetLoadBalancingPolicyFactory(
+ y_absl::string_view name) const {
+ auto it = factories_.find(name);
+ if (it == factories_.end()) return nullptr;
+ return it->second.get();
+}
+
+OrphanablePtr<LoadBalancingPolicy>
+LoadBalancingPolicyRegistry::CreateLoadBalancingPolicy(
+ y_absl::string_view name, LoadBalancingPolicy::Args args) const {
+ // Find factory.
+ LoadBalancingPolicyFactory* factory = GetLoadBalancingPolicyFactory(name);
+ if (factory == nullptr) return nullptr; // Specified name not found.
+ // Create policy via factory.
+ return factory->CreateLoadBalancingPolicy(std::move(args));
+}
+
+bool LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
+ y_absl::string_view name, bool* requires_config) const {
+ auto* factory = GetLoadBalancingPolicyFactory(name);
+ if (factory == nullptr) return false;
+ // If requested, check if the load balancing policy allows an empty config.
+ if (requires_config != nullptr) {
+ auto config = factory->ParseLoadBalancingConfig(Json());
+ *requires_config = !config.ok();
+ }
+ return true;
+}
+
+// Returns the JSON node of policy (with both policy name and config content)
+// given the JSON node of a LoadBalancingConfig array.
+y_absl::StatusOr<Json::Object::const_iterator>
+LoadBalancingPolicyRegistry::ParseLoadBalancingConfigHelper(
+ const Json& lb_config_array) const {
+ if (lb_config_array.type() != Json::Type::ARRAY) {
+ return y_absl::InvalidArgumentError("type should be array");
+ }
+ // Find the first LB policy that this client supports.
+ std::vector<y_absl::string_view> policies_tried;
+ for (const Json& lb_config : lb_config_array.array_value()) {
+ if (lb_config.type() != Json::Type::OBJECT) {
+ return y_absl::InvalidArgumentError("child entry should be of type object");
+ }
+ if (lb_config.object_value().empty()) {
+ return y_absl::InvalidArgumentError("no policy found in child entry");
+ }
+ if (lb_config.object_value().size() > 1) {
+ return y_absl::InvalidArgumentError("oneOf violation");
+ }
+ auto it = lb_config.object_value().begin();
+ if (it->second.type() != Json::Type::OBJECT) {
+ return y_absl::InvalidArgumentError("child entry should be of type object");
+ }
+ // If we support this policy, then select it.
+ if (LoadBalancingPolicyRegistry::LoadBalancingPolicyExists(
+ it->first.c_str(), nullptr)) {
+ return it;
+ }
+ policies_tried.push_back(it->first);
+ }
+ return y_absl::FailedPreconditionError(y_absl::StrCat(
+ "No known policies in list: ", y_absl::StrJoin(policies_tried, " ")));
+}
+
+y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(const Json& json) const {
+ auto policy = ParseLoadBalancingConfigHelper(json);
+ if (!policy.ok()) return policy.status();
+ // Find factory.
+ LoadBalancingPolicyFactory* factory =
+ GetLoadBalancingPolicyFactory((*policy)->first.c_str());
+ if (factory == nullptr) {
+ return y_absl::FailedPreconditionError(y_absl::StrFormat(
+ "Factory not found for policy \"%s\"", (*policy)->first));
+ }
+ // Parse load balancing config via factory.
+ return factory->ParseLoadBalancingConfig((*policy)->second);
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_registry.h b/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_registry.h
new file mode 100644
index 0000000000..4c27c281cc
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/load_balancing/lb_policy_registry.h
@@ -0,0 +1,82 @@
+//
+// Copyright 2015 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_LIB_LOAD_BALANCING_LB_POLICY_REGISTRY_H
+#define GRPC_CORE_LIB_LOAD_BALANCING_LB_POLICY_REGISTRY_H
+
+#include <grpc/support/port_platform.h>
+
+#include <map>
+#include <memory>
+
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/load_balancing/lb_policy.h"
+#include "src/core/lib/load_balancing/lb_policy_factory.h"
+
+namespace grpc_core {
+
+class LoadBalancingPolicyRegistry {
+ public:
+ /// Methods used to create and populate the LoadBalancingPolicyRegistry.
+ /// NOT THREAD SAFE -- to be used only during global gRPC
+ /// initialization and shutdown.
+ class Builder {
+ public:
+ /// Registers an LB policy factory. The factory will be used to create an
+ /// LB policy whose name matches that of the factory.
+ void RegisterLoadBalancingPolicyFactory(
+ std::unique_ptr<LoadBalancingPolicyFactory> factory);
+
+ LoadBalancingPolicyRegistry Build();
+
+ private:
+ std::map<y_absl::string_view, std::unique_ptr<LoadBalancingPolicyFactory>>
+ factories_;
+ };
+
+ /// Creates an LB policy of the type specified by \a name.
+ OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
+ y_absl::string_view name, LoadBalancingPolicy::Args args) const;
+
+ /// Returns true if the LB policy factory specified by \a name exists in this
+ /// registry. If the load balancing policy requires a config to be specified
+ /// then sets \a requires_config to true.
+ bool LoadBalancingPolicyExists(y_absl::string_view name,
+ bool* requires_config) const;
+
+ /// Returns a parsed object of the load balancing policy to be used from a
+ /// LoadBalancingConfig array \a json.
+ y_absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
+ ParseLoadBalancingConfig(const Json& json) const;
+
+ private:
+ LoadBalancingPolicyFactory* GetLoadBalancingPolicyFactory(
+ y_absl::string_view name) const;
+ y_absl::StatusOr<Json::Object::const_iterator> ParseLoadBalancingConfigHelper(
+ const Json& lb_config_array) const;
+
+ std::map<y_absl::string_view, std::unique_ptr<LoadBalancingPolicyFactory>>
+ factories_;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_LOAD_BALANCING_LB_POLICY_REGISTRY_H
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_interface.h b/contrib/libs/grpc/src/core/lib/load_balancing/subchannel_interface.h
index c1618470a2..f35b017e19 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/subchannel_interface.h
+++ b/contrib/libs/grpc/src/core/lib/load_balancing/subchannel_interface.h
@@ -1,31 +1,35 @@
-/*
- *
- * Copyright 2019 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INTERFACE_H
-#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INTERFACE_H
+//
+// Copyright 2019 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_LIB_LOAD_BALANCING_SUBCHANNEL_INTERFACE_H
+#define GRPC_CORE_LIB_LOAD_BALANCING_SUBCHANNEL_INTERFACE_H
#include <grpc/support/port_platform.h>
+#include <memory>
+#include <utility>
+
+#include "y_absl/status/status.h"
+
#include <grpc/impl/codegen/connectivity_state.h>
-#include <grpc/impl/codegen/grpc_types.h>
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gprpp/ref_counted.h"
-#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
namespace grpc_core {
@@ -36,29 +40,32 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
public:
virtual ~ConnectivityStateWatcherInterface() = default;
- // Will be invoked whenever the subchannel's connectivity state
- // changes. There will be only one invocation of this method on a
- // given watcher instance at any given time.
- virtual void OnConnectivityStateChange(
- grpc_connectivity_state new_state) = 0;
+ // Will be invoked whenever the subchannel's connectivity state changes.
+ // If the new state is TRANSIENT_FAILURE, status indicates the reason
+ // for the failure. There will be only one invocation of this method
+ // on a given watcher instance at any given time.
+ virtual void OnConnectivityStateChange(grpc_connectivity_state new_state,
+ y_absl::Status status) = 0;
// TODO(roth): Remove this as soon as we move to EventManager-based
// polling.
virtual grpc_pollset_set* interested_parties() = 0;
};
+ // Opaque interface for watching data of a particular type for this
+ // subchannel.
+ class DataWatcherInterface {
+ public:
+ virtual ~DataWatcherInterface() = default;
+ };
+
explicit SubchannelInterface(const char* trace = nullptr)
: RefCounted<SubchannelInterface>(trace) {}
~SubchannelInterface() override = default;
- // Returns the current connectivity state of the subchannel.
- virtual grpc_connectivity_state CheckConnectivityState() = 0;
-
// Starts watching the subchannel's connectivity state.
- // The first callback to the watcher will be delivered when the
- // subchannel's connectivity state becomes a value other than
- // initial_state, which may happen immediately.
+ // The first callback to the watcher will be delivered ~immediately.
// Subsequent callbacks will be delivered as the subchannel's state
// changes.
// The watcher will be destroyed either when the subchannel is
@@ -67,7 +74,6 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
// valid to call this method a second time without first cancelling
// the previous watcher using CancelConnectivityStateWatch().
virtual void WatchConnectivityState(
- grpc_connectivity_state initial_state,
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) = 0;
// Cancels a connectivity state watch.
@@ -79,16 +85,20 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
// If the subchannel is currently in backoff delay due to a previously
// failed attempt, the new connection attempt will not start until the
// backoff delay has elapsed.
- virtual void AttemptToConnect() = 0;
+ virtual void RequestConnection() = 0;
- // Resets the subchannel's connection backoff state. If AttemptToConnect()
+ // Resets the subchannel's connection backoff state. If RequestConnection()
// has been called since the subchannel entered TRANSIENT_FAILURE state,
// starts a new connection attempt immediately; otherwise, a new connection
- // attempt will be started as soon as AttemptToConnect() is called.
+ // attempt will be started as soon as RequestConnection() is called.
virtual void ResetBackoff() = 0;
+ // Registers a new data watcher.
+ virtual void AddDataWatcher(
+ std::unique_ptr<DataWatcherInterface> watcher) = 0;
+
// TODO(roth): Need a better non-grpc-specific abstraction here.
- virtual const grpc_channel_args* channel_args() = 0;
+ virtual ChannelArgs channel_args() = 0;
};
// A class that delegates to another subchannel, to be used in cases
@@ -102,24 +112,24 @@ class DelegatingSubchannel : public SubchannelInterface {
return wrapped_subchannel_;
}
- grpc_connectivity_state CheckConnectivityState() override {
- return wrapped_subchannel_->CheckConnectivityState();
- }
void WatchConnectivityState(
- grpc_connectivity_state initial_state,
std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override {
- return wrapped_subchannel_->WatchConnectivityState(initial_state,
- std::move(watcher));
+ return wrapped_subchannel_->WatchConnectivityState(std::move(watcher));
}
void CancelConnectivityStateWatch(
ConnectivityStateWatcherInterface* watcher) override {
return wrapped_subchannel_->CancelConnectivityStateWatch(watcher);
}
- void AttemptToConnect() override { wrapped_subchannel_->AttemptToConnect(); }
+ void RequestConnection() override {
+ wrapped_subchannel_->RequestConnection();
+ }
void ResetBackoff() override { wrapped_subchannel_->ResetBackoff(); }
- const grpc_channel_args* channel_args() override {
+ ChannelArgs channel_args() override {
return wrapped_subchannel_->channel_args();
}
+ void AddDataWatcher(std::unique_ptr<DataWatcherInterface> watcher) override {
+ wrapped_subchannel_->AddDataWatcher(std::move(watcher));
+ }
private:
RefCountedPtr<SubchannelInterface> wrapped_subchannel_;
@@ -127,4 +137,4 @@ class DelegatingSubchannel : public SubchannelInterface {
} // namespace grpc_core
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SUBCHANNEL_INTERFACE_H */
+#endif // GRPC_CORE_LIB_LOAD_BALANCING_SUBCHANNEL_INTERFACE_H
diff --git a/contrib/libs/grpc/src/core/lib/matchers/matchers.cc b/contrib/libs/grpc/src/core/lib/matchers/matchers.cc
index 42dcffb21a..7aee4c6a26 100644
--- a/contrib/libs/grpc/src/core/lib/matchers/matchers.cc
+++ b/contrib/libs/grpc/src/core/lib/matchers/matchers.cc
@@ -16,11 +16,14 @@
#include "src/core/lib/matchers/matchers.h"
+#include <utility>
+
#include "y_absl/memory/memory.h"
-#include "y_absl/strings/str_cat.h"
+#include "y_absl/status/status.h"
+#include "y_absl/strings/ascii.h"
+#include "y_absl/strings/match.h"
+#include "y_absl/strings/numbers.h"
#include "y_absl/strings/str_format.h"
-#include "y_absl/strings/str_join.h"
-#include "y_absl/strings/str_split.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/matchers/matchers.h b/contrib/libs/grpc/src/core/lib/matchers/matchers.h
index 454ed6ad39..7d7fb0913f 100644
--- a/contrib/libs/grpc/src/core/lib/matchers/matchers.h
+++ b/contrib/libs/grpc/src/core/lib/matchers/matchers.h
@@ -17,6 +17,8 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
#include <memory>
#include <util/generic/string.h>
#include <util/string/cast.h>
diff --git a/contrib/libs/grpc/src/core/lib/profiling/basic_timers.cc b/contrib/libs/grpc/src/core/lib/profiling/basic_timers.cc
deleted file mode 100644
index f98624bf38..0000000000
--- a/contrib/libs/grpc/src/core/lib/profiling/basic_timers.cc
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- *
- * Copyright 2015 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/lib/profiling/timers.h"
-
-#ifdef GRPC_BASIC_PROFILER
-
-#include <inttypes.h>
-#include <pthread.h>
-#include <stdio.h>
-#include <string.h>
-
-#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
-#include <grpc/support/sync.h>
-#include <grpc/support/time.h>
-
-#include "src/core/lib/gpr/tls.h"
-#include "src/core/lib/gprpp/global_config.h"
-#include "src/core/lib/profiling/timers.h"
-
-typedef enum { BEGIN = '{', END = '}', MARK = '.' } marker_type;
-
-typedef struct gpr_timer_entry {
- gpr_timespec tm;
- const char* tagstr;
- const char* file;
- short line;
- char type;
- uint8_t important;
- int thd;
-} gpr_timer_entry;
-
-#define MAX_COUNT 1000000
-
-typedef struct gpr_timer_log {
- size_t num_entries;
- struct gpr_timer_log* next;
- struct gpr_timer_log* prev;
- gpr_timer_entry log[MAX_COUNT];
-} gpr_timer_log;
-
-typedef struct gpr_timer_log_list {
- gpr_timer_log* head;
- /* valid iff head!=NULL */
- gpr_timer_log* tail;
-} gpr_timer_log_list;
-
-static GPR_THREAD_LOCAL(gpr_timer_log*) g_thread_log;
-static gpr_once g_once_init = GPR_ONCE_INIT;
-static FILE* output_file;
-static const char* output_filename_or_null = NULL;
-static pthread_mutex_t g_mu;
-static pthread_cond_t g_cv;
-static gpr_timer_log_list g_in_progress_logs;
-static gpr_timer_log_list g_done_logs;
-static int g_shutdown;
-static pthread_t g_writing_thread;
-static GPR_THREAD_LOCAL(int) g_thread_id;
-static int g_next_thread_id;
-static int g_writing_enabled = 1;
-
-GPR_GLOBAL_CONFIG_DEFINE_STRING(grpc_latency_trace, "latency_trace.txt",
- "Output file name for latency trace")
-
-static const char* output_filename() {
- if (output_filename_or_null == NULL) {
- grpc_core::UniquePtr<char> value =
- GPR_GLOBAL_CONFIG_GET(grpc_latency_trace);
- if (strlen(value.get()) > 0) {
- output_filename_or_null = value.release();
- } else {
- output_filename_or_null = "latency_trace.txt";
- }
- }
- return output_filename_or_null;
-}
-
-static int timer_log_push_back(gpr_timer_log_list* list, gpr_timer_log* log) {
- if (list->head == NULL) {
- list->head = list->tail = log;
- log->next = log->prev = NULL;
- return 1;
- } else {
- log->prev = list->tail;
- log->next = NULL;
- list->tail->next = log;
- list->tail = log;
- return 0;
- }
-}
-
-static gpr_timer_log* timer_log_pop_front(gpr_timer_log_list* list) {
- gpr_timer_log* out = list->head;
- if (out != NULL) {
- list->head = out->next;
- if (list->head != NULL) {
- list->head->prev = NULL;
- } else {
- list->tail = NULL;
- }
- }
- return out;
-}
-
-static void timer_log_remove(gpr_timer_log_list* list, gpr_timer_log* log) {
- if (log->prev == NULL) {
- list->head = log->next;
- if (list->head != NULL) {
- list->head->prev = NULL;
- }
- } else {
- log->prev->next = log->next;
- }
- if (log->next == NULL) {
- list->tail = log->prev;
- if (list->tail != NULL) {
- list->tail->next = NULL;
- }
- } else {
- log->next->prev = log->prev;
- }
-}
-
-static void write_log(gpr_timer_log* log) {
- size_t i;
- if (output_file == NULL) {
- output_file = fopen(output_filename(), "w");
- }
- for (i = 0; i < log->num_entries; i++) {
- gpr_timer_entry* entry = &(log->log[i]);
- if (gpr_time_cmp(entry->tm, gpr_time_0(entry->tm.clock_type)) < 0) {
- entry->tm = gpr_time_0(entry->tm.clock_type);
- }
- fprintf(output_file,
- "{\"t\": %" PRId64
- ".%09d, \"thd\": \"%d\", \"type\": \"%c\", \"tag\": "
- "\"%s\", \"file\": \"%s\", \"line\": %d, \"imp\": %d}\n",
- entry->tm.tv_sec, entry->tm.tv_nsec, entry->thd, entry->type,
- entry->tagstr, entry->file, entry->line, entry->important);
- }
-}
-
-static void* writing_thread(void* unused) {
- gpr_timer_log* log;
- pthread_mutex_lock(&g_mu);
- for (;;) {
- while ((log = timer_log_pop_front(&g_done_logs)) == NULL && !g_shutdown) {
- pthread_cond_wait(&g_cv, &g_mu);
- }
- if (log != NULL) {
- pthread_mutex_unlock(&g_mu);
- write_log(log);
- free(log);
- pthread_mutex_lock(&g_mu);
- }
- if (g_shutdown) {
- pthread_mutex_unlock(&g_mu);
- return NULL;
- }
- }
-}
-
-static void flush_logs(gpr_timer_log_list* list) {
- gpr_timer_log* log;
- while ((log = timer_log_pop_front(list)) != NULL) {
- write_log(log);
- free(log);
- }
-}
-
-static void finish_writing(void) {
- pthread_mutex_lock(&g_mu);
- g_shutdown = 1;
- pthread_cond_signal(&g_cv);
- pthread_mutex_unlock(&g_mu);
- pthread_join(g_writing_thread, NULL);
-
- gpr_log(GPR_INFO, "flushing logs");
-
- pthread_mutex_lock(&g_mu);
- flush_logs(&g_done_logs);
- flush_logs(&g_in_progress_logs);
- pthread_mutex_unlock(&g_mu);
-
- if (output_file) {
- fclose(output_file);
- }
-}
-
-void gpr_timers_set_log_filename(const char* filename) {
- output_filename_or_null = filename;
-}
-
-static void init_output() {
- pthread_attr_t attr;
- pthread_attr_init(&attr);
- pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
- pthread_create(&g_writing_thread, &attr, &writing_thread, NULL);
- pthread_attr_destroy(&attr);
-
- atexit(finish_writing);
-}
-
-static void rotate_log() {
- /* Using malloc here, as this code could end up being called by gpr_malloc */
- gpr_timer_log* log = static_cast<gpr_timer_log*>(malloc(sizeof(*log)));
- gpr_once_init(&g_once_init, init_output);
- log->num_entries = 0;
- pthread_mutex_lock(&g_mu);
- if (g_thread_log != NULL) {
- timer_log_remove(&g_in_progress_logs, g_thread_log);
- if (timer_log_push_back(&g_done_logs, g_thread_log)) {
- pthread_cond_signal(&g_cv);
- }
- } else {
- g_thread_id = g_next_thread_id++;
- }
- timer_log_push_back(&g_in_progress_logs, log);
- pthread_mutex_unlock(&g_mu);
- g_thread_log = log;
-}
-
-static void gpr_timers_log_add(const char* tagstr, marker_type type,
- int important, const char* file, int line) {
- gpr_timer_entry* entry;
-
- if (!g_writing_enabled) {
- return;
- }
-
- if (g_thread_log == NULL || g_thread_log->num_entries == MAX_COUNT) {
- rotate_log();
- }
-
- entry = &g_thread_log->log[g_thread_log->num_entries++];
-
- entry->tm = gpr_now(GPR_CLOCK_PRECISE);
- entry->tagstr = tagstr;
- entry->type = type;
- entry->file = file;
- entry->line = (short)line;
- entry->important = important != 0;
- entry->thd = g_thread_id;
-}
-
-/* Latency profiler API implementation. */
-void gpr_timer_add_mark(const char* tagstr, int important, const char* file,
- int line) {
- gpr_timers_log_add(tagstr, MARK, important, file, line);
-}
-
-void gpr_timer_begin(const char* tagstr, int important, const char* file,
- int line) {
- gpr_timers_log_add(tagstr, BEGIN, important, file, line);
-}
-
-void gpr_timer_end(const char* tagstr, int important, const char* file,
- int line) {
- gpr_timers_log_add(tagstr, END, important, file, line);
-}
-
-void gpr_timer_set_enabled(int enabled) { g_writing_enabled = enabled; }
-
-/* Basic profiler specific API functions. */
-void gpr_timers_global_init(void) {}
-
-void gpr_timers_global_destroy(void) {}
-
-#else /* !GRPC_BASIC_PROFILER */
-void gpr_timers_global_init(void) {}
-
-void gpr_timers_global_destroy(void) {}
-
-void gpr_timers_set_log_filename(const char* /*filename*/) {}
-
-void gpr_timer_set_enabled(int /*enabled*/) {}
-#endif /* GRPC_BASIC_PROFILER */
diff --git a/contrib/libs/grpc/src/core/lib/profiling/stap_timers.cc b/contrib/libs/grpc/src/core/lib/profiling/stap_timers.cc
deleted file mode 100644
index 0e72efc256..0000000000
--- a/contrib/libs/grpc/src/core/lib/profiling/stap_timers.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *
- * Copyright 2015 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/support/port_platform.h>
-
-#ifdef GRPC_STAP_PROFILER
-
-#include <sys/sdt.h>
-
-#include "src/core/lib/profiling/timers.h"
-/* Generated from src/core/profiling/stap_probes.d */
-#error #include "src/core/lib/profiling/stap_probes.h"
-
-/* Latency profiler API implementation. */
-void gpr_timer_add_mark(int tag, const char* tagstr, void* id, const char* file,
- int line) {
- _STAP_ADD_MARK(tag);
-}
-
-void gpr_timer_add_important_mark(int tag, const char* tagstr, void* id,
- const char* file, int line) {
- _STAP_ADD_IMPORTANT_MARK(tag);
-}
-
-void gpr_timer_begin(int tag, const char* tagstr, void* id, const char* file,
- int line) {
- _STAP_TIMING_NS_BEGIN(tag);
-}
-
-void gpr_timer_end(int tag, const char* tagstr, void* id, const char* file,
- int line) {
- _STAP_TIMING_NS_END(tag);
-}
-
-#endif /* GRPC_STAP_PROFILER */
diff --git a/contrib/libs/grpc/src/core/lib/profiling/timers.h b/contrib/libs/grpc/src/core/lib/profiling/timers.h
deleted file mode 100644
index 7ff72783ec..0000000000
--- a/contrib/libs/grpc/src/core/lib/profiling/timers.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- *
- * Copyright 2015 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef GRPC_CORE_LIB_PROFILING_TIMERS_H
-#define GRPC_CORE_LIB_PROFILING_TIMERS_H
-
-void gpr_timers_global_init(void);
-void gpr_timers_global_destroy(void);
-
-void gpr_timer_add_mark(const char* tagstr, int important, const char* file,
- int line);
-void gpr_timer_begin(const char* tagstr, int important, const char* file,
- int line);
-void gpr_timer_end(const char* tagstr, int important, const char* file,
- int line);
-
-void gpr_timers_set_log_filename(const char* filename);
-
-void gpr_timer_set_enabled(int enabled);
-
-#if !(defined(GRPC_STAP_PROFILER) + defined(GRPC_BASIC_PROFILER) + \
- defined(GRPC_CUSTOM_PROFILER))
-/* No profiling. No-op all the things. */
-#define GPR_TIMER_MARK(tag, important) \
- do { \
- } while (0)
-
-#define GPR_TIMER_SCOPE(tag, important) \
- do { \
- } while (0)
-
-#else /* at least one profiler requested... */
-/* ... hopefully only one. */
-#if defined(GRPC_STAP_PROFILER) && defined(GRPC_BASIC_PROFILER)
-#error "GRPC_STAP_PROFILER and GRPC_BASIC_PROFILER are mutually exclusive."
-#endif
-#if defined(GRPC_STAP_PROFILER) && defined(GRPC_CUSTOM_PROFILER)
-#error "GRPC_STAP_PROFILER and GRPC_CUSTOM_PROFILER are mutually exclusive."
-#endif
-#if defined(GRPC_CUSTOM_PROFILER) && defined(GRPC_BASIC_PROFILER)
-#error "GRPC_CUSTOM_PROFILER and GRPC_BASIC_PROFILER are mutually exclusive."
-#endif
-
-/* Generic profiling interface. */
-#define GPR_TIMER_MARK(tag, important) \
- gpr_timer_add_mark(tag, important, __FILE__, __LINE__);
-
-#ifdef GRPC_STAP_PROFILER
-/* Empty placeholder for now. */
-#endif /* GRPC_STAP_PROFILER */
-
-#ifdef GRPC_BASIC_PROFILER
-/* Empty placeholder for now. */
-#endif /* GRPC_BASIC_PROFILER */
-
-namespace grpc {
-class ProfileScope {
- public:
- ProfileScope(const char* desc, bool important, const char* file, int line)
- : desc_(desc) {
- gpr_timer_begin(desc_, important ? 1 : 0, file, line);
- }
- ~ProfileScope() { gpr_timer_end(desc_, 0, "n/a", 0); }
-
- private:
- const char* const desc_;
-};
-} // namespace grpc
-
-#define GPR_TIMER_SCOPE_NAME_INTERNAL(prefix, line) prefix##line
-#define GPR_TIMER_SCOPE_NAME(prefix, line) \
- GPR_TIMER_SCOPE_NAME_INTERNAL(prefix, line)
-#define GPR_TIMER_SCOPE(tag, important) \
- ::grpc::ProfileScope GPR_TIMER_SCOPE_NAME(_profile_scope_, __LINE__)( \
- (tag), (important), __FILE__, __LINE__)
-
-#endif /* at least one profiler requested. */
-
-#endif /* GRPC_CORE_LIB_PROFILING_TIMERS_H */
diff --git a/contrib/libs/grpc/src/core/lib/promise/activity.cc b/contrib/libs/grpc/src/core/lib/promise/activity.cc
index 93e7faf0ba..0cf6bb9063 100644
--- a/contrib/libs/grpc/src/core/lib/promise/activity.cc
+++ b/contrib/libs/grpc/src/core/lib/promise/activity.cc
@@ -16,7 +16,7 @@
#include "src/core/lib/promise/activity.h"
-#include "y_absl/base/attributes.h"
+#include <stddef.h>
#include "src/core/lib/gprpp/atomic_utils.h"
@@ -26,7 +26,6 @@ namespace grpc_core {
// GLOBALS
GPR_THREAD_LOCAL(Activity*) Activity::g_current_activity_{nullptr};
-Waker::Unwakeable Waker::unwakeable_;
namespace promise_detail {
diff --git a/contrib/libs/grpc/src/core/lib/promise/activity.h b/contrib/libs/grpc/src/core/lib/promise/activity.h
index 7eb56018a5..f5f410b2f2 100644
--- a/contrib/libs/grpc/src/core/lib/promise/activity.h
+++ b/contrib/libs/grpc/src/core/lib/promise/activity.h
@@ -17,26 +17,23 @@
#include <grpc/support/port_platform.h>
-#include <stddef.h>
#include <stdint.h>
#include <algorithm>
#include <atomic>
-#include <functional>
#include <memory>
-#include <type_traits>
#include <utility>
#include "y_absl/base/thread_annotations.h"
#include "y_absl/status/status.h"
#include "y_absl/types/optional.h"
#include "y_absl/types/variant.h"
-#include "y_absl/utility/utility.h"
#include <grpc/support/log.h>
#include "src/core/lib/gpr/tls.h"
#include "src/core/lib/gprpp/construct_destruct.h"
+#include "src/core/lib/gprpp/no_destruct.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/sync.h"
#include "src/core/lib/promise/context.h"
@@ -59,28 +56,35 @@ class Wakeable {
inline ~Wakeable() {}
};
+namespace activity_detail {
+struct Unwakeable final : public Wakeable {
+ void Wakeup() override {}
+ void Drop() override {}
+};
+static Unwakeable* unwakeable() {
+ return NoDestructSingleton<Unwakeable>::Get();
+}
+} // namespace activity_detail
+
+class AtomicWaker;
+
// An owning reference to a Wakeable.
// This type is non-copyable but movable.
class Waker {
public:
explicit Waker(Wakeable* wakeable) : wakeable_(wakeable) {}
- Waker() : wakeable_(&unwakeable_) {}
+ Waker() : Waker(activity_detail::unwakeable()) {}
~Waker() { wakeable_->Drop(); }
Waker(const Waker&) = delete;
Waker& operator=(const Waker&) = delete;
- Waker(Waker&& other) noexcept : wakeable_(other.wakeable_) {
- other.wakeable_ = &unwakeable_;
- }
+ Waker(Waker&& other) noexcept : wakeable_(other.Take()) {}
Waker& operator=(Waker&& other) noexcept {
std::swap(wakeable_, other.wakeable_);
return *this;
}
// Wake the underlying activity.
- void Wakeup() {
- wakeable_->Wakeup();
- wakeable_ = &unwakeable_;
- }
+ void Wakeup() { Take()->Wakeup(); }
template <typename H>
friend H AbslHashValue(H h, const Waker& w) {
@@ -92,14 +96,48 @@ class Waker {
}
private:
- class Unwakeable final : public Wakeable {
- public:
- void Wakeup() final {}
- void Drop() final {}
- };
+ friend class AtomicWaker;
+
+ Wakeable* Take() {
+ return std::exchange(wakeable_, activity_detail::unwakeable());
+ }
Wakeable* wakeable_;
- static Unwakeable unwakeable_;
+};
+
+// An atomic variant of Waker - this type is non-copyable and non-movable.
+class AtomicWaker {
+ public:
+ explicit AtomicWaker(Wakeable* wakeable) : wakeable_(wakeable) {}
+ AtomicWaker() : AtomicWaker(activity_detail::unwakeable()) {}
+ explicit AtomicWaker(Waker waker) : AtomicWaker(waker.Take()) {}
+ ~AtomicWaker() { wakeable_.load(std::memory_order_acquire)->Drop(); }
+ AtomicWaker(const AtomicWaker&) = delete;
+ AtomicWaker& operator=(const AtomicWaker&) = delete;
+ AtomicWaker(AtomicWaker&& other) noexcept = delete;
+ AtomicWaker& operator=(AtomicWaker&& other) noexcept = delete;
+
+ // Wake the underlying activity.
+ void Wakeup() { Take()->Wakeup(); }
+
+ // Return true if there is a not-unwakeable wakeable present.
+ bool Armed() const noexcept {
+ return wakeable_.load(std::memory_order_relaxed) !=
+ activity_detail::unwakeable();
+ }
+
+ // Set to some new waker
+ void Set(Waker waker) {
+ wakeable_.exchange(waker.Take(), std::memory_order_acq_rel)->Wakeup();
+ }
+
+ private:
+ Wakeable* Take() {
+ return wakeable_.exchange(activity_detail::unwakeable(),
+ std::memory_order_acq_rel);
+ }
+
+ std::atomic<Wakeable*> wakeable_;
};
// An Activity tracks execution of a single promise.
@@ -150,13 +188,16 @@ class Activity : public Orphanable {
// Set the current activity at construction, clean it up at destruction.
class ScopedActivity {
public:
- explicit ScopedActivity(Activity* activity) {
- GPR_ASSERT(g_current_activity_ == nullptr);
+ explicit ScopedActivity(Activity* activity)
+ : prior_activity_(g_current_activity_) {
g_current_activity_ = activity;
}
- ~ScopedActivity() { g_current_activity_ = nullptr; }
+ ~ScopedActivity() { g_current_activity_ = prior_activity_; }
ScopedActivity(const ScopedActivity&) = delete;
ScopedActivity& operator=(const ScopedActivity&) = delete;
+
+ private:
+ Activity* const prior_activity_;
};
private:
@@ -273,7 +314,7 @@ class FreestandingActivity : public Activity, private Wakeable {
// Check if we got an internal wakeup since the last time this function was
// called.
ActionDuringRun GotActionDuringRun() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_) {
- return y_absl::exchange(action_during_run_, ActionDuringRun::kNone);
+ return std::exchange(action_during_run_, ActionDuringRun::kNone);
}
// Implementors of Wakeable::Wakeup should call this after the wakeup has
diff --git a/contrib/libs/grpc/src/core/lib/promise/arena_promise.h b/contrib/libs/grpc/src/core/lib/promise/arena_promise.h
index e44e6e7154..ed101ea56c 100644
--- a/contrib/libs/grpc/src/core/lib/promise/arena_promise.h
+++ b/contrib/libs/grpc/src/core/lib/promise/arena_promise.h
@@ -17,8 +17,14 @@
#include <grpc/support/port_platform.h>
-#include <grpc/support/log.h>
+#include <stdlib.h>
+#include <new>
+#include <utility>
+
+#include "y_absl/meta/type_traits.h"
+
+#include "src/core/lib/promise/context.h"
#include "src/core/lib/promise/poll.h"
#include "src/core/lib/resource_quota/arena.h"
@@ -26,59 +32,58 @@ namespace grpc_core {
namespace arena_promise_detail {
-// Type erased promise stored in the arena.
template <typename T>
-class ImplInterface {
- public:
+struct Vtable {
// Poll the promise, once.
- virtual Poll<T> PollOnce() = 0;
+ Poll<T> (*poll_once)(void** arg);
// Destroy the underlying callable object if there is one.
// Since we don't delete (the arena owns the memory) but we may need to call a
// destructor, we expose this for when the ArenaPromise object is destroyed.
- virtual void Destroy() = 0;
+ void (*destroy)(void** arg);
+};
- protected:
- ~ImplInterface() = default;
+template <typename T>
+struct VtableAndArg {
+ const Vtable<T>* vtable;
+ void* arg;
};
-// Implementation of ImplInterface for an empty object.
+// Implementation of Vtable for an empty object.
// Used when an empty ArenaPromise is created, or when the ArenaPromise is moved
// from. Since in either case these objects should not be polled, we simply
// crash if it is.
template <typename T>
-class NullImpl final : public ImplInterface<T> {
- public:
- Poll<T> PollOnce() override {
- abort();
- GPR_UNREACHABLE_CODE(return Pending{});
- }
- void Destroy() override {}
-
- static ImplInterface<T>* Get() {
- static NullImpl<T> instance;
- return &instance;
- }
-
- private:
- ~NullImpl() = default;
-};
+inline const Vtable<T>* null_impl() {
+ static const Vtable<T> vtable = {[](void**) -> Poll<T> {
+ abort();
+ GPR_UNREACHABLE_CODE(return Pending{});
+ },
+ [](void**) {}};
+ return &vtable;
+}
// Implementation of ImplInterface for a callable object.
template <typename T, typename Callable>
-class CallableImpl final : public ImplInterface<T> {
- public:
- explicit CallableImpl(Callable&& callable) : callable_(std::move(callable)) {}
- // Forward polls to the callable object.
- Poll<T> PollOnce() override { return poll_cast<T>(callable_()); }
- // Destroy destructs the callable object.
- void Destroy() override { this->~CallableImpl(); }
-
- private:
- // Should only be called by Destroy().
- ~CallableImpl() = default;
+inline const Vtable<T>* allocated_callable_impl() {
+ static const Vtable<T> vtable = {
+ [](void** arg) -> Poll<T> {
+ return poll_cast<T>((*static_cast<Callable*>(*arg))());
+ },
+ [](void** arg) { static_cast<Callable*>(*arg)->~Callable(); }};
+ return &vtable;
+}
- Callable callable_;
-};
+// Implementation of ImplInterface for a small callable object (one that fits
+// within the void* arg)
+template <typename T, typename Callable>
+inline const Vtable<T>* inlined_callable_impl() {
+ static const Vtable<T> vtable = {
+ [](void** arg) -> Poll<T> {
+ return poll_cast<T>((*reinterpret_cast<Callable*>(arg))());
+ },
+ [](void** arg) { reinterpret_cast<Callable*>(arg)->~Callable(); }};
+ return &vtable;
+}
// If a callable object is empty we can substitute any instance of that callable
// for the one we call (for how could we tell the difference)?
@@ -88,27 +93,12 @@ class CallableImpl final : public ImplInterface<T> {
// (this comes up often when the promise only accesses context data from the
// containing activity).
template <typename T, typename Callable>
-class SharedImpl final : public ImplInterface<T>, private Callable {
- public:
- // Call the callable, or at least an exact duplicate of it - if you have no
- // members, all your instances look the same.
- Poll<T> PollOnce() override { return Callable::operator()(); }
- // Nothing to destroy.
- void Destroy() override {}
- // Return a pointer to the shared instance - these are singletons, and are
- // needed just to get the vtable in place.
- static SharedImpl* Get(Callable&& callable) {
- static_assert(sizeof(SharedImpl) == sizeof(void*),
- "SharedImpl should be pointer sized");
- static SharedImpl impl(std::forward<Callable>(callable));
- return &impl;
- }
-
- private:
- explicit SharedImpl(Callable&& callable)
- : Callable(std::forward<Callable>(callable)) {}
- ~SharedImpl() = default;
-};
+inline const Vtable<T>* shared_callable_impl(Callable&& callable) {
+ static Callable instance = std::forward<Callable>(callable);
+ static const Vtable<T> vtable = {[](void**) -> Poll<T> { return instance(); },
+ [](void**) {}};
+ return &vtable;
+}
// Redirector type: given a callable type, expose a Make() function that creates
// the appropriate underlying implementation.
@@ -117,26 +107,41 @@ struct ChooseImplForCallable;
template <typename T, typename Callable>
struct ChooseImplForCallable<
- T, Callable, y_absl::enable_if_t<!std::is_empty<Callable>::value>> {
- static ImplInterface<T>* Make(Callable&& callable) {
- return GetContext<Arena>()->template New<CallableImpl<T, Callable>>(
- std::forward<Callable>(callable));
+ T, Callable,
+ y_absl::enable_if_t<!std::is_empty<Callable>::value &&
+ (sizeof(Callable) > sizeof(void*))>> {
+ static void Make(Callable&& callable, VtableAndArg<T>* out) {
+ *out = {allocated_callable_impl<T, Callable>(),
+ GetContext<Arena>()->template New<Callable>(
+ std::forward<Callable>(callable))};
+ }
+};
+
+template <typename T, typename Callable>
+struct ChooseImplForCallable<
+ T, Callable,
+ y_absl::enable_if_t<!std::is_empty<Callable>::value &&
+ (sizeof(Callable) <= sizeof(void*))>> {
+ static void Make(Callable&& callable, VtableAndArg<T>* out) {
+ out->vtable = inlined_callable_impl<T, Callable>();
+ new (&out->arg) Callable(std::forward<Callable>(callable));
}
};
template <typename T, typename Callable>
struct ChooseImplForCallable<
T, Callable, y_absl::enable_if_t<std::is_empty<Callable>::value>> {
- static ImplInterface<T>* Make(Callable&& callable) {
- return SharedImpl<T, Callable>::Get(std::forward<Callable>(callable));
+ static void Make(Callable&& callable, VtableAndArg<T>* out) {
+ out->vtable =
+ shared_callable_impl<T, Callable>(std::forward<Callable>(callable));
}
};
// Wrap ChooseImplForCallable with a friend approachable syntax.
template <typename T, typename Callable>
-ImplInterface<T>* MakeImplForCallable(Callable&& callable) {
- return ChooseImplForCallable<T, Callable>::Make(
- std::forward<Callable>(callable));
+void MakeImplForCallable(Callable&& callable, VtableAndArg<T>* out) {
+ ChooseImplForCallable<T, Callable>::Make(std::forward<Callable>(callable),
+ out);
}
} // namespace arena_promise_detail
@@ -153,34 +158,42 @@ class ArenaPromise {
typename Ignored =
y_absl::enable_if_t<!std::is_same<Callable, ArenaPromise>::value>>
// NOLINTNEXTLINE(google-explicit-constructor)
- ArenaPromise(Callable&& callable)
- : impl_(arena_promise_detail::MakeImplForCallable<T>(
- std::forward<Callable>(callable))) {}
+ ArenaPromise(Callable&& callable) {
+ arena_promise_detail::MakeImplForCallable<T>(
+ std::forward<Callable>(callable), &vtable_and_arg_);
+ }
// ArenaPromise is not copyable.
ArenaPromise(const ArenaPromise&) = delete;
ArenaPromise& operator=(const ArenaPromise&) = delete;
// ArenaPromise is movable.
- ArenaPromise(ArenaPromise&& other) noexcept : impl_(other.impl_) {
- other.impl_ = arena_promise_detail::NullImpl<T>::Get();
+ ArenaPromise(ArenaPromise&& other) noexcept
+ : vtable_and_arg_(other.vtable_and_arg_) {
+ other.vtable_and_arg_.vtable = arena_promise_detail::null_impl<T>();
}
ArenaPromise& operator=(ArenaPromise&& other) noexcept {
- impl_->Destroy();
- impl_ = other.impl_;
- other.impl_ = arena_promise_detail::NullImpl<T>::Get();
+ vtable_and_arg_.vtable->destroy(&vtable_and_arg_.arg);
+ vtable_and_arg_ = other.vtable_and_arg_;
+ other.vtable_and_arg_.vtable = arena_promise_detail::null_impl<T>();
return *this;
}
// Destruction => call Destroy on the underlying impl object.
- ~ArenaPromise() { impl_->Destroy(); }
+ ~ArenaPromise() { vtable_and_arg_.vtable->destroy(&vtable_and_arg_.arg); }
// Expose the promise interface: a call operator that returns Poll<T>.
- Poll<T> operator()() { return impl_->PollOnce(); }
+ Poll<T> operator()() {
+ return vtable_and_arg_.vtable->poll_once(&vtable_and_arg_.arg);
+ }
+
+ bool has_value() const {
+ return vtable_and_arg_.vtable != arena_promise_detail::null_impl<T>();
+ }
private:
// Underlying impl object.
- arena_promise_detail::ImplInterface<T>* impl_ =
- arena_promise_detail::NullImpl<T>::Get();
+ arena_promise_detail::VtableAndArg<T> vtable_and_arg_ = {
+ arena_promise_detail::null_impl<T>(), nullptr};
};
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/promise/call_push_pull.h b/contrib/libs/grpc/src/core/lib/promise/call_push_pull.h
new file mode 100644
index 0000000000..5e926617c6
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/promise/call_push_pull.h
@@ -0,0 +1,148 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_PROMISE_CALL_PUSH_PULL_H
+#define GRPC_CORE_LIB_PROMISE_CALL_PUSH_PULL_H
+
+#include <grpc/support/port_platform.h>
+
+#include <assert.h>
+
+#include <type_traits>
+
+#include "y_absl/types/variant.h"
+
+#include "src/core/lib/gprpp/bitset.h"
+#include "src/core/lib/gprpp/construct_destruct.h"
+#include "src/core/lib/promise/detail/promise_like.h"
+#include "src/core/lib/promise/detail/status.h"
+#include "src/core/lib/promise/poll.h"
+
+namespace grpc_core {
+
+namespace promise_detail {
+
+template <typename FMain, typename FPush, typename FPull>
+class CallPushPull {
+ public:
+ CallPushPull(FMain f_main, FPush f_push, FPull f_pull)
+ : push_(std::move(f_push)), pull_(std::move(f_pull)) {
+ Construct(&main_, std::move(f_main));
+ }
+
+ CallPushPull(const CallPushPull&) = delete;
+ CallPushPull& operator=(const CallPushPull&) = delete;
+ CallPushPull(CallPushPull&& other) noexcept
+ : done_(other.done_),
+ push_(std::move(other.push_)),
+ pull_(std::move(other.pull_)) {
+ assert(!done_.is_set(kDoneMain));
+ Construct(&main_, std::move(other.main_));
+ }
+
+ CallPushPull& operator=(CallPushPull&& other) noexcept {
+ assert(!done_.is_set(kDoneMain));
+ done_ = other.done_;
+ assert(!done_.is_set(kDoneMain));
+ push_ = std::move(other.push_);
+ main_ = std::move(other.main_);
+ pull_ = std::move(other.pull_);
+ return *this;
+ }
+
+ ~CallPushPull() {
+ if (done_.is_set(kDoneMain)) {
+ Destruct(&result_);
+ } else {
+ Destruct(&main_);
+ }
+ }
+
+ using Result =
+ typename PollTraits<decltype(std::declval<PromiseLike<FMain>>()())>::Type;
+
+ Poll<Result> operator()() {
+ if (!done_.is_set(kDonePush)) {
+ auto p = push_();
+ if (auto* status = y_absl::get_if<kPollReadyIdx>(&p)) {
+ if (IsStatusOk(*status)) {
+ done_.set(kDonePush);
+ } else {
+ return Result(std::move(*status));
+ }
+ }
+ }
+ if (!done_.is_set(kDoneMain)) {
+ auto p = main_();
+ if (auto* status = y_absl::get_if<kPollReadyIdx>(&p)) {
+ if (IsStatusOk(*status)) {
+ done_.set(kDoneMain);
+ Destruct(&main_);
+ Construct(&result_, std::move(*status));
+ } else {
+ return std::move(*status);
+ }
+ }
+ }
+ if (!done_.is_set(kDonePull)) {
+ auto p = pull_();
+ if (auto* status = y_absl::get_if<kPollReadyIdx>(&p)) {
+ if (IsStatusOk(*status)) {
+ done_.set(kDonePull);
+ } else {
+ return Result(std::move(*status));
+ }
+ }
+ }
+ if (done_.all()) return std::move(result_);
+ return Pending{};
+ }
+
+ private:
+ enum { kDonePull = 0, kDoneMain = 1, kDonePush = 2 };
+ BitSet<3> done_;
+ GPR_NO_UNIQUE_ADDRESS PromiseLike<FPush> push_;
+ union {
+ PromiseLike<FMain> main_;
+ Result result_;
+ };
+ GPR_NO_UNIQUE_ADDRESS PromiseLike<FPull> pull_;
+};
+
+} // namespace promise_detail
+
+// For promises representing calls a common pattern emerges:
+// There's a process pushing data down the stack, a process handling the main
+// call part, and a process pulling data back up the stack.
+//
+// This can reasonably be represented by the right combinations of TryJoins and
+// Maps, but since the structure is fundamental to the domain we introduce
+// this simple helper to make it easier to write the common case.
+//
+// It takes three promises: the main call, the push and the pull.
+// When polling, the push is polled first, then the main call (descending the
+// stack), then the pull (as we ascend once more).
+//
+// This strategy minimizes repolls.
+template <typename FMain, typename FPush, typename FPull>
+promise_detail::CallPushPull<FMain, FPush, FPull> CallPushPull(FMain f_main,
+ FPush f_push,
+ FPull f_pull) {
+ return promise_detail::CallPushPull<FMain, FPush, FPull>(
+ std::move(f_main), std::move(f_push), std::move(f_pull));
+}
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_PROMISE_CALL_PUSH_PULL_H
diff --git a/contrib/libs/grpc/src/core/lib/promise/context.h b/contrib/libs/grpc/src/core/lib/promise/context.h
index dfee3d28a6..29127bbd4a 100644
--- a/contrib/libs/grpc/src/core/lib/promise/context.h
+++ b/contrib/libs/grpc/src/core/lib/promise/context.h
@@ -17,7 +17,6 @@
#include <grpc/support/port_platform.h>
-#include <type_traits>
#include <utility>
#include "src/core/lib/gpr/tls.h"
@@ -29,7 +28,7 @@ namespace grpc_core {
// not contain any members, only exist.
// The reason for avoiding this is that context types each use a thread local.
template <typename T>
-struct ContextType;
+struct ContextType; // IWYU pragma: keep
namespace promise_detail {
@@ -78,7 +77,7 @@ T* GetContext() {
// Given a promise and a context, return a promise that has that context set.
template <typename T, typename F>
promise_detail::WithContext<T, F> WithContext(F f, T* context) {
- return promise_detail::WithContext<T, F>(f, context);
+ return promise_detail::WithContext<T, F>(std::move(f), context);
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/promise/detail/basic_seq.h b/contrib/libs/grpc/src/core/lib/promise/detail/basic_seq.h
index c400d821a3..559fc13f30 100644
--- a/contrib/libs/grpc/src/core/lib/promise/detail/basic_seq.h
+++ b/contrib/libs/grpc/src/core/lib/promise/detail/basic_seq.h
@@ -17,6 +17,8 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
#include <array>
#include <cassert>
#include <new>
@@ -29,13 +31,29 @@
#include "src/core/lib/gprpp/construct_destruct.h"
#include "src/core/lib/promise/detail/promise_factory.h"
-#include "src/core/lib/promise/detail/switch.h"
+#include "src/core/lib/promise/detail/promise_like.h"
#include "src/core/lib/promise/poll.h"
namespace grpc_core {
namespace promise_detail {
-template <typename F>
-class PromiseLike;
+
+// Given f0, ..., fn, call function idx and return the result.
+template <typename R, typename A, R (*... f)(A* arg)>
+class JumpTable {
+ public:
+ JumpTable() = delete;
+ JumpTable(const JumpTable&) = delete;
+
+ static R Run(size_t idx, A* arg) { return fs_[idx](arg); }
+
+ private:
+ using Fn = R (*)(A* arg);
+ static const Fn fs_[sizeof...(f)];
+};
+
+template <typename R, typename A, R (*... f)(A* arg)>
+const typename JumpTable<R, A, f...>::Fn
+ JumpTable<R, A, f...>::fs_[sizeof...(f)] = {f...};
// Helper for SeqState to evaluate some common types to all partial
// specializations.
@@ -335,16 +353,14 @@ class BasicSeq {
// parameter unpacking can work.
template <char I>
struct RunStateStruct {
- BasicSeq* s;
- Poll<Result> operator()() { return s->RunState<I>(); }
+ static Poll<Result> Run(BasicSeq* s) { return s->RunState<I>(); }
};
// Similarly placate those compilers for
// DestructCurrentPromiseAndSubsequentFactories
template <char I>
struct DestructCurrentPromiseAndSubsequentFactoriesStruct {
- BasicSeq* s;
- void operator()() {
+ static void Run(BasicSeq* s) {
return s->DestructCurrentPromiseAndSubsequentFactories<I>();
}
};
@@ -357,7 +373,8 @@ class BasicSeq {
// Duff's device like mechanic for evaluating sequences.
template <char... I>
Poll<Result> Run(y_absl::integer_sequence<char, I...>) {
- return Switch<Poll<Result>>(state_, RunStateStruct<I>{this}...);
+ return JumpTable<Poll<Result>, BasicSeq, RunStateStruct<I>::Run...>::Run(
+ state_, this);
}
// Run the appropriate destructors for a given state.
@@ -367,8 +384,9 @@ class BasicSeq {
// which can choose the correct instance at runtime to destroy everything.
template <char... I>
void RunDestruct(y_absl::integer_sequence<char, I...>) {
- Switch<void>(
- state_, DestructCurrentPromiseAndSubsequentFactoriesStruct<I>{this}...);
+ JumpTable<void, BasicSeq,
+ DestructCurrentPromiseAndSubsequentFactoriesStruct<I>::Run...>::
+ Run(state_, this);
}
public:
@@ -403,20 +421,22 @@ class BasicSeq {
// As above, but models a sequence of unknown size
// At each element, the accumulator A and the current value V is passed to some
-// function of type F as f(V, A); f is expected to return a promise that
-// resolves to Traits::WrappedType.
-template <template <typename Wrapped> class Traits, typename F, typename Arg,
- typename Iter>
+// function of type IterTraits::Factory as f(V, IterTraits::Argument); f is
+// expected to return a promise that resolves to IterTraits::Wrapped.
+template <class IterTraits>
class BasicSeqIter {
private:
- using IterValue = decltype(*std::declval<Iter>());
- using StateCreated = decltype(std::declval<F>()(std::declval<IterValue>(),
- std::declval<Arg>()));
- using State = PromiseLike<StateCreated>;
- using Wrapped = typename State::Result;
+ using Traits = typename IterTraits::Traits;
+ using Iter = typename IterTraits::Iter;
+ using Factory = typename IterTraits::Factory;
+ using Argument = typename IterTraits::Argument;
+ using IterValue = typename IterTraits::IterValue;
+ using StateCreated = typename IterTraits::StateCreated;
+ using State = typename IterTraits::State;
+ using Wrapped = typename IterTraits::Wrapped;
public:
- BasicSeqIter(Iter begin, Iter end, F f, Arg arg)
+ BasicSeqIter(Iter begin, Iter end, Factory f, Argument arg)
: cur_(begin), end_(end), f_(std::move(f)) {
if (cur_ == end_) {
Construct(&result_, std::move(arg));
@@ -466,7 +486,7 @@ class BasicSeqIter {
Poll<Wrapped> PollNonEmpty() {
Poll<Wrapped> r = state_();
if (y_absl::holds_alternative<Pending>(r)) return r;
- return Traits<Wrapped>::template CheckResultAndRunNext<Wrapped>(
+ return Traits::template CheckResultAndRunNext<Wrapped>(
std::move(y_absl::get<Wrapped>(r)), [this](Wrapped arg) -> Poll<Wrapped> {
auto next = cur_;
++next;
@@ -476,17 +496,17 @@ class BasicSeqIter {
cur_ = next;
state_.~State();
Construct(&state_,
- Traits<Wrapped>::CallSeqFactory(f_, *cur_, std::move(arg)));
+ Traits::template CallSeqFactory(f_, *cur_, std::move(arg)));
return PollNonEmpty();
});
}
Iter cur_;
const Iter end_;
- GPR_NO_UNIQUE_ADDRESS F f_;
+ GPR_NO_UNIQUE_ADDRESS Factory f_;
union {
GPR_NO_UNIQUE_ADDRESS State state_;
- GPR_NO_UNIQUE_ADDRESS Arg result_;
+ GPR_NO_UNIQUE_ADDRESS Argument result_;
};
};
diff --git a/contrib/libs/grpc/src/core/lib/promise/detail/promise_factory.h b/contrib/libs/grpc/src/core/lib/promise/detail/promise_factory.h
index 71cf400506..6ef9b636e4 100644
--- a/contrib/libs/grpc/src/core/lib/promise/detail/promise_factory.h
+++ b/contrib/libs/grpc/src/core/lib/promise/detail/promise_factory.h
@@ -17,13 +17,11 @@
#include <grpc/support/port_platform.h>
-#include <type_traits>
#include <utility>
#include "y_absl/meta/type_traits.h"
#include "src/core/lib/promise/detail/promise_like.h"
-#include "src/core/lib/promise/poll.h"
// PromiseFactory is an adaptor class.
//
diff --git a/contrib/libs/grpc/src/core/lib/promise/detail/status.h b/contrib/libs/grpc/src/core/lib/promise/detail/status.h
index 641bf22eb6..243a718ab6 100644
--- a/contrib/libs/grpc/src/core/lib/promise/detail/status.h
+++ b/contrib/libs/grpc/src/core/lib/promise/detail/status.h
@@ -39,11 +39,12 @@ inline y_absl::Status IntoStatus(y_absl::Status* status) {
}
} // namespace promise_detail
-} // namespace grpc_core
// Return true if the status represented by the argument is ok, false if not.
// By implementing this function for other, non-y_absl::Status types, those types
// can participate in TrySeq as result types that affect control flow.
inline bool IsStatusOk(const y_absl::Status& status) { return status.ok(); }
+} // namespace grpc_core
+
#endif // GRPC_CORE_LIB_PROMISE_DETAIL_STATUS_H
diff --git a/contrib/libs/grpc/src/core/lib/promise/detail/switch.h b/contrib/libs/grpc/src/core/lib/promise/detail/switch.h
deleted file mode 100644
index 84b119119b..0000000000
--- a/contrib/libs/grpc/src/core/lib/promise/detail/switch.h
+++ /dev/null
@@ -1,1455 +0,0 @@
-/*
- * Copyright 2021 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*
- * Automatically generated by tools/codegen/core/gen_switch.py
- */
-
-#ifndef GRPC_CORE_LIB_PROMISE_DETAIL_SWITCH_H
-#define GRPC_CORE_LIB_PROMISE_DETAIL_SWITCH_H
-
-#include <grpc/support/port_platform.h>
-
-#include <stdlib.h>
-
-namespace grpc_core {
-
-template <typename R, typename F0>
-R Switch(char idx, F0 f0) {
- switch (idx) {
- case 0:
- return f0();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1>
-R Switch(char idx, F0 f0, F1 f1) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2>
-R Switch(char idx, F0 f0, F1 f1, F2 f2) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17, typename F18>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17, F18 f18) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- case 18:
- return f18();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17, typename F18,
- typename F19>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17, F18 f18, F19 f19) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- case 18:
- return f18();
- case 19:
- return f19();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17, typename F18,
- typename F19, typename F20>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17, F18 f18, F19 f19, F20 f20) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- case 18:
- return f18();
- case 19:
- return f19();
- case 20:
- return f20();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17, typename F18,
- typename F19, typename F20, typename F21>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17, F18 f18, F19 f19, F20 f20, F21 f21) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- case 18:
- return f18();
- case 19:
- return f19();
- case 20:
- return f20();
- case 21:
- return f21();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17, typename F18,
- typename F19, typename F20, typename F21, typename F22>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17, F18 f18, F19 f19, F20 f20, F21 f21, F22 f22) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- case 18:
- return f18();
- case 19:
- return f19();
- case 20:
- return f20();
- case 21:
- return f21();
- case 22:
- return f22();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17, typename F18,
- typename F19, typename F20, typename F21, typename F22, typename F23>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17, F18 f18, F19 f19, F20 f20, F21 f21, F22 f22,
- F23 f23) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- case 18:
- return f18();
- case 19:
- return f19();
- case 20:
- return f20();
- case 21:
- return f21();
- case 22:
- return f22();
- case 23:
- return f23();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17, typename F18,
- typename F19, typename F20, typename F21, typename F22, typename F23,
- typename F24>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17, F18 f18, F19 f19, F20 f20, F21 f21, F22 f22, F23 f23,
- F24 f24) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- case 18:
- return f18();
- case 19:
- return f19();
- case 20:
- return f20();
- case 21:
- return f21();
- case 22:
- return f22();
- case 23:
- return f23();
- case 24:
- return f24();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17, typename F18,
- typename F19, typename F20, typename F21, typename F22, typename F23,
- typename F24, typename F25>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17, F18 f18, F19 f19, F20 f20, F21 f21, F22 f22, F23 f23,
- F24 f24, F25 f25) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- case 18:
- return f18();
- case 19:
- return f19();
- case 20:
- return f20();
- case 21:
- return f21();
- case 22:
- return f22();
- case 23:
- return f23();
- case 24:
- return f24();
- case 25:
- return f25();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17, typename F18,
- typename F19, typename F20, typename F21, typename F22, typename F23,
- typename F24, typename F25, typename F26>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17, F18 f18, F19 f19, F20 f20, F21 f21, F22 f22, F23 f23,
- F24 f24, F25 f25, F26 f26) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- case 18:
- return f18();
- case 19:
- return f19();
- case 20:
- return f20();
- case 21:
- return f21();
- case 22:
- return f22();
- case 23:
- return f23();
- case 24:
- return f24();
- case 25:
- return f25();
- case 26:
- return f26();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17, typename F18,
- typename F19, typename F20, typename F21, typename F22, typename F23,
- typename F24, typename F25, typename F26, typename F27>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17, F18 f18, F19 f19, F20 f20, F21 f21, F22 f22, F23 f23,
- F24 f24, F25 f25, F26 f26, F27 f27) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- case 18:
- return f18();
- case 19:
- return f19();
- case 20:
- return f20();
- case 21:
- return f21();
- case 22:
- return f22();
- case 23:
- return f23();
- case 24:
- return f24();
- case 25:
- return f25();
- case 26:
- return f26();
- case 27:
- return f27();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17, typename F18,
- typename F19, typename F20, typename F21, typename F22, typename F23,
- typename F24, typename F25, typename F26, typename F27, typename F28>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17, F18 f18, F19 f19, F20 f20, F21 f21, F22 f22, F23 f23,
- F24 f24, F25 f25, F26 f26, F27 f27, F28 f28) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- case 18:
- return f18();
- case 19:
- return f19();
- case 20:
- return f20();
- case 21:
- return f21();
- case 22:
- return f22();
- case 23:
- return f23();
- case 24:
- return f24();
- case 25:
- return f25();
- case 26:
- return f26();
- case 27:
- return f27();
- case 28:
- return f28();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17, typename F18,
- typename F19, typename F20, typename F21, typename F22, typename F23,
- typename F24, typename F25, typename F26, typename F27, typename F28,
- typename F29>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17, F18 f18, F19 f19, F20 f20, F21 f21, F22 f22, F23 f23,
- F24 f24, F25 f25, F26 f26, F27 f27, F28 f28, F29 f29) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- case 18:
- return f18();
- case 19:
- return f19();
- case 20:
- return f20();
- case 21:
- return f21();
- case 22:
- return f22();
- case 23:
- return f23();
- case 24:
- return f24();
- case 25:
- return f25();
- case 26:
- return f26();
- case 27:
- return f27();
- case 28:
- return f28();
- case 29:
- return f29();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17, typename F18,
- typename F19, typename F20, typename F21, typename F22, typename F23,
- typename F24, typename F25, typename F26, typename F27, typename F28,
- typename F29, typename F30>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17, F18 f18, F19 f19, F20 f20, F21 f21, F22 f22, F23 f23,
- F24 f24, F25 f25, F26 f26, F27 f27, F28 f28, F29 f29, F30 f30) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- case 18:
- return f18();
- case 19:
- return f19();
- case 20:
- return f20();
- case 21:
- return f21();
- case 22:
- return f22();
- case 23:
- return f23();
- case 24:
- return f24();
- case 25:
- return f25();
- case 26:
- return f26();
- case 27:
- return f27();
- case 28:
- return f28();
- case 29:
- return f29();
- case 30:
- return f30();
- }
- abort();
-}
-
-template <typename R, typename F0, typename F1, typename F2, typename F3,
- typename F4, typename F5, typename F6, typename F7, typename F8,
- typename F9, typename F10, typename F11, typename F12, typename F13,
- typename F14, typename F15, typename F16, typename F17, typename F18,
- typename F19, typename F20, typename F21, typename F22, typename F23,
- typename F24, typename F25, typename F26, typename F27, typename F28,
- typename F29, typename F30, typename F31>
-R Switch(char idx, F0 f0, F1 f1, F2 f2, F3 f3, F4 f4, F5 f5, F6 f6, F7 f7,
- F8 f8, F9 f9, F10 f10, F11 f11, F12 f12, F13 f13, F14 f14, F15 f15,
- F16 f16, F17 f17, F18 f18, F19 f19, F20 f20, F21 f21, F22 f22, F23 f23,
- F24 f24, F25 f25, F26 f26, F27 f27, F28 f28, F29 f29, F30 f30,
- F31 f31) {
- switch (idx) {
- case 0:
- return f0();
- case 1:
- return f1();
- case 2:
- return f2();
- case 3:
- return f3();
- case 4:
- return f4();
- case 5:
- return f5();
- case 6:
- return f6();
- case 7:
- return f7();
- case 8:
- return f8();
- case 9:
- return f9();
- case 10:
- return f10();
- case 11:
- return f11();
- case 12:
- return f12();
- case 13:
- return f13();
- case 14:
- return f14();
- case 15:
- return f15();
- case 16:
- return f16();
- case 17:
- return f17();
- case 18:
- return f18();
- case 19:
- return f19();
- case 20:
- return f20();
- case 21:
- return f21();
- case 22:
- return f22();
- case 23:
- return f23();
- case 24:
- return f24();
- case 25:
- return f25();
- case 26:
- return f26();
- case 27:
- return f27();
- case 28:
- return f28();
- case 29:
- return f29();
- case 30:
- return f30();
- case 31:
- return f31();
- }
- abort();
-}
-
-} // namespace grpc_core
-
-#endif // GRPC_CORE_LIB_PROMISE_DETAIL_SWITCH_H
diff --git a/contrib/libs/grpc/src/core/lib/promise/intra_activity_waiter.h b/contrib/libs/grpc/src/core/lib/promise/intra_activity_waiter.h
new file mode 100644
index 0000000000..137db5fd6d
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/promise/intra_activity_waiter.h
@@ -0,0 +1,49 @@
+// Copyright 2021 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_PROMISE_INTRA_ACTIVITY_WAITER_H
+#define GRPC_CORE_LIB_PROMISE_INTRA_ACTIVITY_WAITER_H
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/promise/activity.h"
+#include "src/core/lib/promise/poll.h"
+
+namespace grpc_core {
+
+// Helper type to track wakeups between objects in the same activity.
+// Can be fairly fast as no ref counting or locking needs to occur.
+class IntraActivityWaiter {
+ public:
+ // Register for wakeup, return Pending(). If state is not ready to proceed,
+ // Promises should bottom out here.
+ Pending pending() {
+ waiting_ = true;
+ return Pending();
+ }
+ // Wake the activity
+ void Wake() {
+ if (waiting_) {
+ waiting_ = false;
+ Activity::current()->ForceImmediateRepoll();
+ }
+ }
+
+ private:
+ bool waiting_ = false;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_PROMISE_INTRA_ACTIVITY_WAITER_H
diff --git a/contrib/libs/grpc/src/core/lib/promise/latch.h b/contrib/libs/grpc/src/core/lib/promise/latch.h
new file mode 100644
index 0000000000..c7ac963253
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/promise/latch.h
@@ -0,0 +1,103 @@
+// Copyright 2021 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_PROMISE_LATCH_H
+#define GRPC_CORE_LIB_PROMISE_LATCH_H
+
+#include <grpc/support/port_platform.h>
+
+#include <grpc/support/log.h>
+
+#include "src/core/lib/promise/intra_activity_waiter.h"
+#include "src/core/lib/promise/poll.h"
+
+namespace grpc_core {
+
+// Latch provides a single set waitable object.
+// Initially the Latch is unset.
+// It can be waited upon by the Wait method, which produces a Promise that
+// resolves when the Latch is Set to a value of type T.
+template <typename T>
+class Latch {
+ public:
+ // This is the type of the promise returned by Wait.
+ class WaitPromise {
+ public:
+ Poll<T*> operator()() const {
+ if (latch_->has_value_) {
+ return &latch_->value_;
+ } else {
+ return latch_->waiter_.pending();
+ }
+ }
+
+ private:
+ friend class Latch;
+ explicit WaitPromise(Latch* latch) : latch_(latch) {}
+ Latch* latch_;
+ };
+
+ Latch() = default;
+ Latch(const Latch&) = delete;
+ Latch& operator=(const Latch&) = delete;
+ Latch(Latch&& other) noexcept
+ : value_(std::move(other.value_)), has_value_(other.has_value_) {
+#ifndef NDEBUG
+ GPR_DEBUG_ASSERT(!other.has_had_waiters_);
+#endif
+ }
+ Latch& operator=(Latch&& other) noexcept {
+#ifndef NDEBUG
+ GPR_DEBUG_ASSERT(!other.has_had_waiters_);
+#endif
+ value_ = std::move(other.value_);
+ has_value_ = other.has_value_;
+ return *this;
+ }
+
+ // Produce a promise to wait for a value from this latch.
+ WaitPromise Wait() {
+#ifndef NDEBUG
+ has_had_waiters_ = true;
+#endif
+ return WaitPromise(this);
+ }
+
+ // Set the value of the latch. Can only be called once.
+ void Set(T value) {
+ GPR_DEBUG_ASSERT(!has_value_);
+ value_ = std::move(value);
+ has_value_ = true;
+ waiter_.Wake();
+ }
+
+ private:
+ // The value stored (if has_value_ is true), otherwise some random value, we
+ // don't care.
+ // Why not y_absl::optional<>? Writing things this way lets us compress
+ // has_value_ with waiter_ and leads to some significant memory savings for
+ // some scenarios.
+ GPR_NO_UNIQUE_ADDRESS T value_;
+ // True if we have a value set, false otherwise.
+ bool has_value_ = false;
+#ifndef NDEBUG
+ // Has this latch ever had waiters.
+ bool has_had_waiters_ = false;
+#endif
+ IntraActivityWaiter waiter_;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_PROMISE_LATCH_H
diff --git a/contrib/libs/grpc/src/core/lib/promise/loop.h b/contrib/libs/grpc/src/core/lib/promise/loop.h
index 43f1b5071a..e78109c478 100644
--- a/contrib/libs/grpc/src/core/lib/promise/loop.h
+++ b/contrib/libs/grpc/src/core/lib/promise/loop.h
@@ -19,7 +19,9 @@
#include <new>
#include <type_traits>
+#include <utility>
+#include "y_absl/status/status.h"
#include "y_absl/status/statusor.h"
#include "y_absl/types/variant.h"
diff --git a/contrib/libs/grpc/src/core/lib/promise/map.h b/contrib/libs/grpc/src/core/lib/promise/map.h
index 065cc73a69..806f0dc4e5 100644
--- a/contrib/libs/grpc/src/core/lib/promise/map.h
+++ b/contrib/libs/grpc/src/core/lib/promise/map.h
@@ -20,7 +20,6 @@
#include <stddef.h>
#include <tuple>
-#include <type_traits>
#include <utility>
#include "y_absl/types/variant.h"
diff --git a/contrib/libs/grpc/src/core/lib/promise/promise.h b/contrib/libs/grpc/src/core/lib/promise/promise.h
index 2e7b8aa0cb..b656b6ddf0 100644
--- a/contrib/libs/grpc/src/core/lib/promise/promise.h
+++ b/contrib/libs/grpc/src/core/lib/promise/promise.h
@@ -19,6 +19,7 @@
#include <functional>
#include <type_traits>
+#include <utility>
#include "y_absl/status/status.h"
#include "y_absl/types/optional.h"
diff --git a/contrib/libs/grpc/src/core/lib/promise/race.h b/contrib/libs/grpc/src/core/lib/promise/race.h
index 5b3a4f4a4b..382e407fb0 100644
--- a/contrib/libs/grpc/src/core/lib/promise/race.h
+++ b/contrib/libs/grpc/src/core/lib/promise/race.h
@@ -17,7 +17,6 @@
#include <grpc/support/port_platform.h>
-#include <tuple>
#include <type_traits>
#include "y_absl/types/variant.h"
diff --git a/contrib/libs/grpc/src/core/lib/promise/seq.h b/contrib/libs/grpc/src/core/lib/promise/seq.h
index 88e4e10ca2..c2b757d02d 100644
--- a/contrib/libs/grpc/src/core/lib/promise/seq.h
+++ b/contrib/libs/grpc/src/core/lib/promise/seq.h
@@ -19,9 +19,8 @@
#include <utility>
-#include "y_absl/types/variant.h"
-
#include "src/core/lib/promise/detail/basic_seq.h"
+#include "src/core/lib/promise/detail/promise_like.h"
#include "src/core/lib/promise/poll.h"
namespace grpc_core {
@@ -52,6 +51,26 @@ struct SeqTraits {
template <typename... Fs>
using Seq = BasicSeq<SeqTraits, Fs...>;
+template <typename I, typename F, typename Arg>
+struct SeqIterTraits {
+ using Iter = I;
+ using Factory = F;
+ using Argument = Arg;
+ using IterValue = decltype(*std::declval<Iter>());
+ using StateCreated = decltype(std::declval<F>()(std::declval<IterValue>(),
+ std::declval<Arg>()));
+ using State = PromiseLike<StateCreated>;
+ using Wrapped = typename State::Result;
+
+ using Traits = SeqTraits<Wrapped>;
+};
+
+template <typename Iter, typename Factory, typename Argument>
+struct SeqIterResultTraits {
+ using IterTraits = SeqIterTraits<Iter, Factory, Argument>;
+ using Result = BasicSeqIter<IterTraits>;
+};
+
} // namespace promise_detail
// Sequencing combinator.
@@ -77,11 +96,11 @@ F Seq(F functor) {
// }
// return argument;
template <typename Iter, typename Factory, typename Argument>
-promise_detail::BasicSeqIter<promise_detail::SeqTraits, Factory, Argument, Iter>
+typename promise_detail::SeqIterResultTraits<Iter, Factory, Argument>::Result
SeqIter(Iter begin, Iter end, Argument argument, Factory factory) {
- return promise_detail::BasicSeqIter<promise_detail::SeqTraits, Factory,
- Argument, Iter>(
- begin, end, std::move(factory), std::move(argument));
+ using Result = typename promise_detail::SeqIterResultTraits<Iter, Factory,
+ Argument>::Result;
+ return Result(begin, end, std::move(factory), std::move(argument));
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/promise/sleep.cc b/contrib/libs/grpc/src/core/lib/promise/sleep.cc
index 4450a9091e..5d357bab89 100644
--- a/contrib/libs/grpc/src/core/lib/promise/sleep.cc
+++ b/contrib/libs/grpc/src/core/lib/promise/sleep.cc
@@ -16,59 +16,74 @@
#include "src/core/lib/promise/sleep.h"
+#include <utility>
+
+#include <grpc/event_engine/event_engine.h>
+
+#include "src/core/lib/event_engine/default_event_engine.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/promise/activity.h"
+#include "src/core/lib/promise/poll.h"
+
namespace grpc_core {
-Sleep::Sleep(Timestamp deadline) : state_(new State(deadline)) {
- GRPC_CLOSURE_INIT(&state_->on_timer, &OnTimer, state_, nullptr);
-}
+using ::grpc_event_engine::experimental::GetDefaultEventEngine;
+
+Sleep::Sleep(Timestamp deadline) : deadline_(deadline) {}
Sleep::~Sleep() {
- if (state_ == nullptr) return;
- {
- MutexLock lock(&state_->mu);
- switch (state_->stage) {
- case Stage::kInitial:
- state_->Unref();
- break;
- case Stage::kStarted:
- grpc_timer_cancel(&state_->timer);
- break;
- case Stage::kDone:
- break;
- }
+ if (closure_ != nullptr) closure_->Cancel();
+}
+
+Poll<y_absl::Status> Sleep::operator()() {
+ // Invalidate now so that we see a fresh version of the time.
+ // TODO(ctiller): the following can be safely removed when we remove ExecCtx.
+ ExecCtx::Get()->InvalidateNow();
+ // If the deadline is earlier than now we can just return.
+ if (deadline_ <= Timestamp::Now()) return y_absl::OkStatus();
+ if (closure_ == nullptr) {
+ // TODO(ctiller): it's likely we'll want a pool of closures - probably per
+ // cpu? - to avoid allocating/deallocating on fast paths.
+ closure_ = new ActiveClosure(deadline_);
}
- state_->Unref();
+ if (closure_->HasRun()) return y_absl::OkStatus();
+ return Pending{};
}
-void Sleep::OnTimer(void* arg, grpc_error_handle) {
- auto* state = static_cast<State*>(arg);
- Waker waker;
- {
- MutexLock lock(&state->mu);
- state->stage = Stage::kDone;
- waker = std::move(state->waker);
+Sleep::ActiveClosure::ActiveClosure(Timestamp deadline)
+ : waker_(Activity::current()->MakeOwningWaker()),
+ timer_handle_(GetDefaultEventEngine()->RunAfter(
+ deadline - Timestamp::Now(), this)) {}
+
+void Sleep::ActiveClosure::Run() {
+ ApplicationCallbackExecCtx callback_exec_ctx;
+ ExecCtx exec_ctx;
+ auto waker = std::move(waker_);
+ if (Unref()) {
+ delete this;
+ } else {
+ waker.Wakeup();
}
- waker.Wakeup();
- state->Unref();
}
-Poll<y_absl::Status> Sleep::operator()() {
- MutexLock lock(&state_->mu);
- switch (state_->stage) {
- case Stage::kInitial:
- if (state_->deadline <= ExecCtx::Get()->Now()) {
- return y_absl::OkStatus();
- }
- state_->stage = Stage::kStarted;
- grpc_timer_init(&state_->timer, state_->deadline, &state_->on_timer);
- break;
- case Stage::kStarted:
- break;
- case Stage::kDone:
- return y_absl::OkStatus();
+void Sleep::ActiveClosure::Cancel() {
+ // If we cancel correctly then we must own both refs still and can simply
+ // delete without unreffing twice, otherwise try unreffing since this may be
+ // the last owned ref.
+ if (GetDefaultEventEngine()->Cancel(timer_handle_) || Unref()) {
+ delete this;
}
- state_->waker = Activity::current()->MakeNonOwningWaker();
- return Pending{};
+}
+
+bool Sleep::ActiveClosure::Unref() {
+ return (refs_.fetch_sub(1, std::memory_order_acq_rel) == 1);
+}
+
+bool Sleep::ActiveClosure::HasRun() const {
+ // If the closure has run (ie woken up the activity) then it will have
+ // decremented this ref count once.
+ return refs_.load(std::memory_order_acquire) == 1;
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/promise/sleep.h b/contrib/libs/grpc/src/core/lib/promise/sleep.h
index b41e651d21..30628d086c 100644
--- a/contrib/libs/grpc/src/core/lib/promise/sleep.h
+++ b/contrib/libs/grpc/src/core/lib/promise/sleep.h
@@ -17,48 +17,67 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/iomgr/timer.h"
+#include <atomic>
+
+#include "y_absl/status/status.h"
+
+#include <grpc/event_engine/event_engine.h>
+#include <grpc/support/log.h>
+
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/promise/activity.h"
#include "src/core/lib/promise/poll.h"
namespace grpc_core {
// Promise that sleeps until a deadline and then finishes.
-class Sleep {
+class Sleep final {
public:
explicit Sleep(Timestamp deadline);
~Sleep();
Sleep(const Sleep&) = delete;
Sleep& operator=(const Sleep&) = delete;
- Sleep(Sleep&& other) noexcept : state_(other.state_) {
- other.state_ = nullptr;
- }
+ Sleep(Sleep&& other) noexcept : deadline_(other.deadline_) {
+ // Promises can be moved only until they're polled, and since we only create
+ // the closure when first polled we can assume it's nullptr here.
+ GPR_DEBUG_ASSERT(other.closure_ == nullptr);
+ };
Sleep& operator=(Sleep&& other) noexcept {
- std::swap(state_, other.state_);
+ // Promises can be moved only until they're polled, and since we only create
+ // the closure when first polled we can assume it's nullptr here.
+ GPR_DEBUG_ASSERT(closure_ == nullptr);
+ GPR_DEBUG_ASSERT(other.closure_ == nullptr);
+ deadline_ = other.deadline_;
return *this;
- }
+ };
Poll<y_absl::Status> operator()();
private:
- static void OnTimer(void* arg, grpc_error_handle error);
-
- enum class Stage { kInitial, kStarted, kDone };
- struct State {
- explicit State(Timestamp deadline) : deadline(deadline) {}
- RefCount refs{2};
- const Timestamp deadline;
- grpc_timer timer;
- grpc_closure on_timer;
- Mutex mu;
- Stage stage Y_ABSL_GUARDED_BY(mu) = Stage::kInitial;
- Waker waker Y_ABSL_GUARDED_BY(mu);
- void Unref() {
- if (refs.Unref()) delete this;
- }
+ class ActiveClosure final
+ : public grpc_event_engine::experimental::EventEngine::Closure {
+ public:
+ explicit ActiveClosure(Timestamp deadline);
+
+ void Run() override;
+ // After calling Cancel, it's no longer safe to access this object.
+ void Cancel();
+
+ bool HasRun() const;
+
+ private:
+ bool Unref();
+
+ Waker waker_;
+ // One ref dropped by Run(), the other by Cancel().
+ std::atomic<int> refs_{2};
+ const grpc_event_engine::experimental::EventEngine::TaskHandle
+ timer_handle_;
};
- State* state_;
+
+ Timestamp deadline_;
+ ActiveClosure* closure_{nullptr};
};
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/promise/try_seq.h b/contrib/libs/grpc/src/core/lib/promise/try_seq.h
index 69137b2db0..2824bf170d 100644
--- a/contrib/libs/grpc/src/core/lib/promise/try_seq.h
+++ b/contrib/libs/grpc/src/core/lib/promise/try_seq.h
@@ -17,14 +17,14 @@
#include <grpc/support/port_platform.h>
-#include <tuple>
#include <utility>
+#include "y_absl/meta/type_traits.h"
#include "y_absl/status/status.h"
#include "y_absl/status/statusor.h"
-#include "y_absl/types/variant.h"
#include "src/core/lib/promise/detail/basic_seq.h"
+#include "src/core/lib/promise/detail/promise_like.h"
#include "src/core/lib/promise/detail/status.h"
#include "src/core/lib/promise/poll.h"
@@ -116,6 +116,26 @@ using TrySeqTraits = TrySeqTraitsWithSfinae<T>;
template <typename... Fs>
using TrySeq = BasicSeq<TrySeqTraits, Fs...>;
+template <typename I, typename F, typename Arg>
+struct TrySeqIterTraits {
+ using Iter = I;
+ using Factory = F;
+ using Argument = Arg;
+ using IterValue = decltype(*std::declval<Iter>());
+ using StateCreated = decltype(std::declval<F>()(std::declval<IterValue>(),
+ std::declval<Arg>()));
+ using State = PromiseLike<StateCreated>;
+ using Wrapped = typename State::Result;
+
+ using Traits = TrySeqTraits<Wrapped>;
+};
+
+template <typename Iter, typename Factory, typename Argument>
+struct TrySeqIterResultTraits {
+ using IterTraits = TrySeqIterTraits<Iter, Factory, Argument>;
+ using Result = BasicSeqIter<IterTraits>;
+};
+
} // namespace promise_detail
// Try a sequence of operations.
@@ -144,12 +164,12 @@ promise_detail::TrySeq<Functors...> TrySeq(Functors... functors) {
// }
// return argument;
template <typename Iter, typename Factory, typename Argument>
-promise_detail::BasicSeqIter<promise_detail::TrySeqTraits, Factory, Argument,
- Iter>
+typename promise_detail::TrySeqIterResultTraits<Iter, Factory, Argument>::Result
TrySeqIter(Iter begin, Iter end, Argument argument, Factory factory) {
- return promise_detail::BasicSeqIter<promise_detail::TrySeqTraits, Factory,
- Argument, Iter>(
- begin, end, std::move(factory), std::move(argument));
+ using Result =
+ typename promise_detail::TrySeqIterResultTraits<Iter, Factory,
+ Argument>::Result;
+ return Result(begin, end, std::move(factory), std::move(argument));
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/resolver/resolver.cc b/contrib/libs/grpc/src/core/lib/resolver/resolver.cc
index e43e97b4a2..1586f70f5f 100644
--- a/contrib/libs/grpc/src/core/lib/resolver/resolver.cc
+++ b/contrib/libs/grpc/src/core/lib/resolver/resolver.cc
@@ -34,46 +34,4 @@ Resolver::Resolver()
? "Resolver"
: nullptr) {}
-//
-// Resolver::Result
-//
-
-Resolver::Result::~Result() { grpc_channel_args_destroy(args); }
-
-Resolver::Result::Result(const Result& other)
- : addresses(other.addresses),
- service_config(other.service_config),
- resolution_note(other.resolution_note),
- args(grpc_channel_args_copy(other.args)) {}
-
-Resolver::Result::Result(Result&& other) noexcept
- : addresses(std::move(other.addresses)),
- service_config(std::move(other.service_config)),
- resolution_note(std::move(other.resolution_note)),
- // TODO(roth): Use std::move() once channel args is converted to C++.
- args(other.args) {
- other.args = nullptr;
-}
-
-Resolver::Result& Resolver::Result::operator=(const Result& other) {
- if (&other == this) return *this;
- addresses = other.addresses;
- service_config = other.service_config;
- resolution_note = other.resolution_note;
- grpc_channel_args_destroy(args);
- args = grpc_channel_args_copy(other.args);
- return *this;
-}
-
-Resolver::Result& Resolver::Result::operator=(Result&& other) noexcept {
- addresses = std::move(other.addresses);
- service_config = std::move(other.service_config);
- resolution_note = std::move(other.resolution_note);
- // TODO(roth): Use std::move() once channel args is converted to C++.
- grpc_channel_args_destroy(args);
- args = other.args;
- other.args = nullptr;
- return *this;
-}
-
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/resolver/resolver.h b/contrib/libs/grpc/src/core/lib/resolver/resolver.h
index 278b634f55..4f278634c7 100644
--- a/contrib/libs/grpc/src/core/lib/resolver/resolver.h
+++ b/contrib/libs/grpc/src/core/lib/resolver/resolver.h
@@ -19,10 +19,15 @@
#include <grpc/support/port_platform.h>
-#include "y_absl/status/statusor.h"
+#include <functional>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
-#include <grpc/impl/codegen/grpc_types.h>
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/resolver/server_address.h"
@@ -64,16 +69,18 @@ class Resolver : public InternallyRefCounted<Resolver> {
TString resolution_note;
// TODO(roth): Before making this a public API, figure out a way to
// avoid exposing channel args this way.
- const grpc_channel_args* args = nullptr;
-
- // TODO(roth): Remove everything below once grpc_channel_args is
- // converted to a copyable and movable C++ object.
- Result() = default;
- ~Result();
- Result(const Result& other);
- Result(Result&& other) noexcept;
- Result& operator=(const Result& other);
- Result& operator=(Result&& other) noexcept;
+ ChannelArgs args;
+ // If non-null, this callback will be invoked when the LB policy has
+ // processed the result. The status value passed to the callback
+ // indicates whether the LB policy accepted the update. For polling
+ // resolvers, if the reported status is non-OK, then the resolver
+ // should put itself into backoff to retry the resolution later.
+ // The resolver impl must not call ResultHandler::ReportResult()
+ // again until after this callback has been invoked.
+ // The callback will be invoked within the channel's WorkSerializer.
+ // It may or may not be invoked before ResultHandler::ReportResult()
+ // returns, which is why it's a separate callback.
+ std::function<void(y_absl::Status)> result_health_callback;
};
/// A proxy object used by the resolver to return results to the
@@ -83,9 +90,6 @@ class Resolver : public InternallyRefCounted<Resolver> {
virtual ~ResultHandler() {}
/// Reports a result to the channel.
- // TODO(roth): Add a mechanism for the resolver to get back a signal
- // indicating if the result was accepted by the LB policy, so that it
- // knows whether to go into backoff to retry to resolution.
virtual void ReportResult(Result result) = 0; // NOLINT
};
diff --git a/contrib/libs/grpc/src/core/lib/resolver/resolver_factory.h b/contrib/libs/grpc/src/core/lib/resolver/resolver_factory.h
index f3dc29dc5e..6b9ccc2798 100644
--- a/contrib/libs/grpc/src/core/lib/resolver/resolver_factory.h
+++ b/contrib/libs/grpc/src/core/lib/resolver/resolver_factory.h
@@ -19,17 +19,19 @@
#include <grpc/support/port_platform.h>
-#include "y_absl/strings/strip.h"
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
-#include <grpc/support/string_util.h>
+#include "y_absl/strings/string_view.h"
+#include "y_absl/strings/strip.h"
-#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/resolver/resolver.h"
#include "src/core/lib/uri/uri_parser.h"
-typedef struct grpc_pollset_set grpc_pollset_set;
-
namespace grpc_core {
// TODO(yashkt): Move WorkSerializer to its own Bazel target, depend on that
@@ -40,7 +42,7 @@ struct ResolverArgs {
/// The parsed URI to resolve.
URI uri;
/// Channel args to be included in resolver results.
- const grpc_channel_args* args = nullptr;
+ ChannelArgs args;
/// Used to drive I/O in the name resolution process.
grpc_pollset_set* pollset_set = nullptr;
/// The work_serializer under which all resolver calls will be run.
diff --git a/contrib/libs/grpc/src/core/lib/resolver/resolver_registry.cc b/contrib/libs/grpc/src/core/lib/resolver/resolver_registry.cc
index 24f565a68e..7ab2959a81 100644
--- a/contrib/libs/grpc/src/core/lib/resolver/resolver_registry.cc
+++ b/contrib/libs/grpc/src/core/lib/resolver/resolver_registry.cc
@@ -18,19 +18,12 @@
#include "src/core/lib/resolver/resolver_registry.h"
-#include <string.h>
-
-#include <vector>
-
-#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
-
-#include "src/core/lib/resolver/resolver_registry.h"
namespace grpc_core {
@@ -78,7 +71,7 @@ bool ResolverRegistry::IsValidTarget(y_absl::string_view target) const {
}
OrphanablePtr<Resolver> ResolverRegistry::CreateResolver(
- y_absl::string_view target, const grpc_channel_args* args,
+ y_absl::string_view target, const ChannelArgs& args,
grpc_pollset_set* pollset_set,
std::shared_ptr<WorkSerializer> work_serializer,
std::unique_ptr<Resolver::ResultHandler> result_handler) const {
diff --git a/contrib/libs/grpc/src/core/lib/resolver/resolver_registry.h b/contrib/libs/grpc/src/core/lib/resolver/resolver_registry.h
index a3d55947a8..26e3ad9213 100644
--- a/contrib/libs/grpc/src/core/lib/resolver/resolver_registry.h
+++ b/contrib/libs/grpc/src/core/lib/resolver/resolver_registry.h
@@ -19,9 +19,20 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/gprpp/memory.h"
+#include <map>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/resolver/resolver.h"
#include "src/core/lib/resolver/resolver_factory.h"
+#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
@@ -82,7 +93,7 @@ class ResolverRegistry {
/// which all resolver calls will be run. \a result_handler is used to return
/// results from the resolver.
OrphanablePtr<Resolver> CreateResolver(
- y_absl::string_view target, const grpc_channel_args* args,
+ y_absl::string_view target, const ChannelArgs& args,
grpc_pollset_set* pollset_set,
std::shared_ptr<WorkSerializer> work_serializer,
std::unique_ptr<Resolver::ResultHandler> result_handler) const;
diff --git a/contrib/libs/grpc/src/core/lib/resolver/server_address.cc b/contrib/libs/grpc/src/core/lib/resolver/server_address.cc
index 2d2fe8eda7..d892fee4b2 100644
--- a/contrib/libs/grpc/src/core/lib/resolver/server_address.cc
+++ b/contrib/libs/grpc/src/core/lib/resolver/server_address.cc
@@ -20,15 +20,25 @@
#include "src/core/lib/resolver/server_address.h"
+#include <string.h>
+
+#include <algorithm>
#include <memory>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
#include <vector>
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
#include "src/core/lib/address_utils/sockaddr_utils.h"
+#include "src/core/lib/channel/channel_args.h"
+
+// IWYU pragma: no_include <sys/socket.h>
namespace grpc_core {
@@ -43,12 +53,12 @@ const char* ServerAddressWeightAttribute::kServerAddressWeightAttributeKey =
//
ServerAddress::ServerAddress(
- const grpc_resolved_address& address, grpc_channel_args* args,
+ const grpc_resolved_address& address, const ChannelArgs& args,
std::map<const char*, std::unique_ptr<AttributeInterface>> attributes)
: address_(address), args_(args), attributes_(std::move(attributes)) {}
ServerAddress::ServerAddress(
- const void* address, size_t address_len, grpc_channel_args* args,
+ const void* address, size_t address_len, const ChannelArgs& args,
std::map<const char*, std::unique_ptr<AttributeInterface>> attributes)
: args_(args), attributes_(std::move(attributes)) {
memcpy(address_.addr, address, address_len);
@@ -56,7 +66,7 @@ ServerAddress::ServerAddress(
}
ServerAddress::ServerAddress(const ServerAddress& other)
- : address_(other.address_), args_(grpc_channel_args_copy(other.args_)) {
+ : address_(other.address_), args_(other.args_) {
for (const auto& p : other.attributes_) {
attributes_[p.first] = p.second->Copy();
}
@@ -66,8 +76,7 @@ ServerAddress& ServerAddress::operator=(const ServerAddress& other) {
return *this;
}
address_ = other.address_;
- grpc_channel_args_destroy(args_);
- args_ = grpc_channel_args_copy(other.args_);
+ args_ = other.args_;
attributes_.clear();
for (const auto& p : other.attributes_) {
attributes_[p.first] = p.second->Copy();
@@ -77,15 +86,12 @@ ServerAddress& ServerAddress::operator=(const ServerAddress& other) {
ServerAddress::ServerAddress(ServerAddress&& other) noexcept
: address_(other.address_),
- args_(other.args_),
- attributes_(std::move(other.attributes_)) {
- other.args_ = nullptr;
-}
+ args_(std::move(other.args_)),
+ attributes_(std::move(other.attributes_)) {}
+
ServerAddress& ServerAddress::operator=(ServerAddress&& other) noexcept {
address_ = other.address_;
- grpc_channel_args_destroy(args_);
- args_ = other.args_;
- other.args_ = nullptr;
+ args_ = std::move(other.args_);
attributes_ = std::move(other.attributes_);
return *this;
}
@@ -124,7 +130,7 @@ int ServerAddress::Cmp(const ServerAddress& other) const {
if (address_.len < other.address_.len) return -1;
int retval = memcmp(address_.addr, other.address_.addr, address_.len);
if (retval != 0) return retval;
- retval = grpc_channel_args_compare(args_, other.args_);
+ retval = QsortCompare(args_, other.args_);
if (retval != 0) return retval;
return CompareAttributes(attributes_, other.attributes_);
}
@@ -150,12 +156,12 @@ ServerAddress ServerAddress::WithAttribute(
}
TString ServerAddress::ToString() const {
+ auto addr_str = grpc_sockaddr_to_string(&address_, false);
std::vector<TString> parts = {
- grpc_sockaddr_to_string(&address_, false),
+ addr_str.ok() ? addr_str.value() : addr_str.status().ToString(),
};
- if (args_ != nullptr) {
- parts.emplace_back(
- y_absl::StrCat("args={", grpc_channel_args_string(args_), "}"));
+ if (args_ != ChannelArgs()) {
+ parts.emplace_back(y_absl::StrCat("args=", args_.ToString()));
}
if (!attributes_.empty()) {
std::vector<TString> attrs;
@@ -168,4 +174,8 @@ TString ServerAddress::ToString() const {
return y_absl::StrJoin(parts, " ");
}
+TString ServerAddressWeightAttribute::ToString() const {
+ return y_absl::StrFormat("%d", weight_);
+}
+
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/resolver/server_address.h b/contrib/libs/grpc/src/core/lib/resolver/server_address.h
index ef0154c6e0..899c327bf5 100644
--- a/contrib/libs/grpc/src/core/lib/resolver/server_address.h
+++ b/contrib/libs/grpc/src/core/lib/resolver/server_address.h
@@ -21,11 +21,16 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+#include <stdint.h>
+
#include <map>
#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
-#include "y_absl/container/inlined_vector.h"
-#include "y_absl/strings/str_format.h"
+#include "y_absl/memory/memory.h"
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gpr/useful.h"
@@ -64,16 +69,14 @@ class ServerAddress {
};
// Takes ownership of args.
- ServerAddress(const grpc_resolved_address& address, grpc_channel_args* args,
+ ServerAddress(const grpc_resolved_address& address, const ChannelArgs& args,
std::map<const char*, std::unique_ptr<AttributeInterface>>
attributes = {});
ServerAddress(const void* address, size_t address_len,
- grpc_channel_args* args,
+ const ChannelArgs& args,
std::map<const char*, std::unique_ptr<AttributeInterface>>
attributes = {});
- ~ServerAddress() { grpc_channel_args_destroy(args_); }
-
// Copyable.
ServerAddress(const ServerAddress& other);
ServerAddress& operator=(const ServerAddress& other);
@@ -87,7 +90,7 @@ class ServerAddress {
int Cmp(const ServerAddress& other) const;
const grpc_resolved_address& address() const { return address_; }
- const grpc_channel_args* args() const { return args_; }
+ const ChannelArgs& args() const { return args_; }
const AttributeInterface* GetAttribute(const char* key) const;
@@ -96,11 +99,14 @@ class ServerAddress {
ServerAddress WithAttribute(const char* key,
std::unique_ptr<AttributeInterface> value) const;
+ // TODO(ctiller): Prior to making this a public API we should ensure that the
+ // channel args are not part of the generated string, lest we make that debug
+ // format load-bearing via Hyrum's law.
TString ToString() const;
private:
grpc_resolved_address address_;
- grpc_channel_args* args_;
+ ChannelArgs args_;
std::map<const char*, std::unique_ptr<AttributeInterface>> attributes_;
};
@@ -108,7 +114,7 @@ class ServerAddress {
// ServerAddressList
//
-typedef y_absl::InlinedVector<ServerAddress, 1> ServerAddressList;
+using ServerAddressList = std::vector<ServerAddress>;
//
// ServerAddressWeightAttribute
@@ -131,9 +137,7 @@ class ServerAddressWeightAttribute : public ServerAddress::AttributeInterface {
return QsortCompare(weight_, other_locality_attr->weight_);
}
- TString ToString() const override {
- return y_absl::StrFormat("%d", weight_);
- }
+ TString ToString() const override;
private:
uint32_t weight_;
diff --git a/contrib/libs/grpc/src/core/lib/resource_quota/api.cc b/contrib/libs/grpc/src/core/lib/resource_quota/api.cc
index d8939da17d..0328082e74 100644
--- a/contrib/libs/grpc/src/core/lib/resource_quota/api.cc
+++ b/contrib/libs/grpc/src/core/lib/resource_quota/api.cc
@@ -16,10 +16,25 @@
#include "src/core/lib/resource_quota/api.h"
+#include <stdint.h>
+
+#include <atomic>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/strings/str_cat.h"
+
#include <grpc/grpc.h>
-#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_args_preconditioning.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/resource_quota/memory_quota.h"
+#include "src/core/lib/resource_quota/resource_quota.h"
+#include "src/core/lib/resource_quota/thread_quota.h"
namespace grpc_core {
@@ -30,30 +45,22 @@ ResourceQuotaRefPtr ResourceQuotaFromChannelArgs(
->Ref();
}
-namespace {
-grpc_arg MakeArg(ResourceQuota* quota) {
- return grpc_channel_arg_pointer_create(
- const_cast<char*>(GRPC_ARG_RESOURCE_QUOTA), quota,
- grpc_resource_quota_arg_vtable());
+ResourceQuotaRefPtr ResourceQuotaFromEndpointConfig(
+ const grpc_event_engine::experimental::EndpointConfig& config) {
+ void* value = config.GetVoidPointer(GRPC_ARG_RESOURCE_QUOTA);
+ if (value != nullptr) {
+ return reinterpret_cast<ResourceQuota*>(value)->Ref();
+ }
+ return nullptr;
}
-const grpc_channel_args* EnsureResourceQuotaInChannelArgs(
- const grpc_channel_args* args) {
- const grpc_arg* existing =
- grpc_channel_args_find(args, GRPC_ARG_RESOURCE_QUOTA);
- if (existing != nullptr && existing->type == GRPC_ARG_POINTER &&
- existing->value.pointer.p != nullptr) {
- return grpc_channel_args_copy(args);
- }
+ChannelArgs EnsureResourceQuotaInChannelArgs(const ChannelArgs& args) {
+ if (args.GetObject<ResourceQuota>() != nullptr) return args;
// If there's no existing quota, add it to the default one - shared between
// all channel args declared thusly. This prevents us from accidentally not
// sharing subchannels due to their channel args not specifying a quota.
- const char* remove[] = {GRPC_ARG_RESOURCE_QUOTA};
- auto new_arg = MakeArg(ResourceQuota::Default().get());
- return grpc_channel_args_copy_and_add_and_remove(args, remove, 1, &new_arg,
- 1);
+ return args.SetObject(ResourceQuota::Default());
}
-} // namespace
void RegisterResourceQuota(CoreConfiguration::Builder* builder) {
builder->channel_args_preconditioning()->RegisterStage(
@@ -63,16 +70,7 @@ void RegisterResourceQuota(CoreConfiguration::Builder* builder) {
} // namespace grpc_core
extern "C" const grpc_arg_pointer_vtable* grpc_resource_quota_arg_vtable() {
- static const grpc_arg_pointer_vtable vtable = {
- // copy
- [](void* p) -> void* {
- return static_cast<grpc_core::ResourceQuota*>(p)->Ref().release();
- },
- // destroy
- [](void* p) { static_cast<grpc_core::ResourceQuota*>(p)->Unref(); },
- // compare
- [](void* p, void* q) { return grpc_core::QsortCompare(p, q); }};
- return &vtable;
+ return grpc_core::ChannelArgTypeTraits<grpc_core::ResourceQuota>::VTable();
}
extern "C" grpc_resource_quota* grpc_resource_quota_create(const char* name) {
diff --git a/contrib/libs/grpc/src/core/lib/resource_quota/api.h b/contrib/libs/grpc/src/core/lib/resource_quota/api.h
index 40d0a0525f..ee9cee3662 100644
--- a/contrib/libs/grpc/src/core/lib/resource_quota/api.h
+++ b/contrib/libs/grpc/src/core/lib/resource_quota/api.h
@@ -17,7 +17,11 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/channel/channel_args.h"
+#include <stddef.h>
+
+#include <grpc/event_engine/endpoint_config.h>
+#include <grpc/impl/codegen/grpc_types.h>
+
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/resource_quota/resource_quota.h"
@@ -27,12 +31,17 @@ namespace grpc_core {
// TODO(ctiller): This is a hack. We need to do real accounting instead of
// hard coding.
-constexpr size_t kResourceQuotaChannelSize = 50 * 1024;
+constexpr size_t kResourceQuotaChannelSize = 34 * 1024;
// Retrieve the resource quota from the channel args.
// UB if not set.
ResourceQuotaRefPtr ResourceQuotaFromChannelArgs(const grpc_channel_args* args);
+// Retrieve the resource quota from the EndpointConfig.
+// Returns nullptr if not set.
+ResourceQuotaRefPtr ResourceQuotaFromEndpointConfig(
+ const grpc_event_engine::experimental::EndpointConfig& config);
+
void RegisterResourceQuota(CoreConfiguration::Builder* builder);
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/resource_quota/arena.cc b/contrib/libs/grpc/src/core/lib/resource_quota/arena.cc
index 7d7e1857b5..6d6def4ef2 100644
--- a/contrib/libs/grpc/src/core/lib/resource_quota/arena.cc
+++ b/contrib/libs/grpc/src/core/lib/resource_quota/arena.cc
@@ -20,17 +20,12 @@
#include "src/core/lib/resource_quota/arena.h"
-#include <string.h>
-
+#include <atomic>
#include <new>
#include <grpc/support/alloc.h>
-#include <grpc/support/atm.h>
-#include <grpc/support/log.h>
-#include <grpc/support/sync.h>
#include "src/core/lib/gpr/alloc.h"
-#include "src/core/lib/gprpp/memory.h"
namespace {
@@ -55,7 +50,7 @@ Arena::~Arena() {
Zone* z = last_zone_;
while (z) {
Zone* prev_z = z->prev;
- z->~Zone();
+ Destruct(z);
gpr_free_aligned(z);
z = prev_z;
}
@@ -77,6 +72,16 @@ std::pair<Arena*, void*> Arena::CreateWithAlloc(
}
size_t Arena::Destroy() {
+ ManagedNewObject* p;
+ // Outer loop: clear the managed new object list.
+ // We do this repeatedly in case a destructor ends up allocating something.
+ while ((p = managed_new_head_.exchange(nullptr, std::memory_order_relaxed)) !=
+ nullptr) {
+ // Inner loop: destruct a batch of objects.
+ while (p != nullptr) {
+ Destruct(std::exchange(p, p->next));
+ }
+ }
size_t size = total_used_.load(std::memory_order_relaxed);
memory_allocator_->Release(total_allocated_.load(std::memory_order_relaxed));
this->~Arena();
@@ -104,4 +109,11 @@ void* Arena::AllocZone(size_t size) {
return reinterpret_cast<char*>(z) + zone_base_size;
}
+void Arena::ManagedNewObject::Link(std::atomic<ManagedNewObject*>* head) {
+ next = head->load(std::memory_order_relaxed);
+ while (!head->compare_exchange_weak(next, this, std::memory_order_acq_rel,
+ std::memory_order_relaxed)) {
+ }
+}
+
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/resource_quota/arena.h b/contrib/libs/grpc/src/core/lib/resource_quota/arena.h
index 542b09a351..39038a6b80 100644
--- a/contrib/libs/grpc/src/core/lib/resource_quota/arena.h
+++ b/contrib/libs/grpc/src/core/lib/resource_quota/arena.h
@@ -31,13 +31,12 @@
#include <atomic>
#include <memory>
-#include <new>
#include <utility>
-#include <grpc/support/alloc.h>
-#include <grpc/support/sync.h>
+#include <grpc/event_engine/memory_allocator.h>
#include "src/core/lib/gpr/alloc.h"
+#include "src/core/lib/gprpp/construct_destruct.h"
#include "src/core/lib/promise/context.h"
#include "src/core/lib/resource_quota/memory_quota.h"
@@ -77,15 +76,36 @@ class Arena {
template <typename T, typename... Args>
T* New(Args&&... args) {
T* t = static_cast<T*>(Alloc(sizeof(T)));
- new (t) T(std::forward<Args>(args)...);
+ Construct(t, std::forward<Args>(args)...);
return t;
}
+ // Like New, but has the arena call p->~T() at arena destruction time.
+ template <typename T, typename... Args>
+ T* ManagedNew(Args&&... args) {
+ auto* p = New<ManagedNewImpl<T>>(std::forward<Args>(args)...);
+ p->Link(&managed_new_head_);
+ return &p->t;
+ }
+
private:
struct Zone {
Zone* prev;
};
+ struct ManagedNewObject {
+ ManagedNewObject* next = nullptr;
+ void Link(std::atomic<ManagedNewObject*>* head);
+ virtual ~ManagedNewObject() = default;
+ };
+
+ template <typename T>
+ struct ManagedNewImpl : public ManagedNewObject {
+ T t;
+ template <typename... Args>
+ explicit ManagedNewImpl(Args&&... args) : t(std::forward<Args>(args)...) {}
+ };
+
// Initialize an arena.
// Parameters:
// initial_size: The initial size of the whole arena in bytes. These bytes
@@ -119,6 +139,7 @@ class Arena {
// and (2) the allocated memory. The arena itself maintains a pointer to the
// last zone; the zone list is reverse-walked during arena destruction only.
std::atomic<Zone*> last_zone_{nullptr};
+ std::atomic<ManagedNewObject*> managed_new_head_{nullptr};
// The backing memory quota
MemoryAllocator* const memory_allocator_;
};
diff --git a/contrib/libs/grpc/src/core/lib/resource_quota/memory_quota.cc b/contrib/libs/grpc/src/core/lib/resource_quota/memory_quota.cc
index aeab3b3279..368d11615d 100644
--- a/contrib/libs/grpc/src/core/lib/resource_quota/memory_quota.cc
+++ b/contrib/libs/grpc/src/core/lib/resource_quota/memory_quota.cc
@@ -16,8 +16,16 @@
#include "src/core/lib/resource_quota/memory_quota.h"
+#include <inttypes.h>
+
+#include <algorithm>
#include <atomic>
+#include <tuple>
+
+#include "y_absl/status/status.h"
+#include "y_absl/strings/str_cat.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/mpscq.h"
#include "src/core/lib/promise/exec_ctx_wakeup_scheduler.h"
@@ -25,7 +33,6 @@
#include "src/core/lib/promise/map.h"
#include "src/core/lib/promise/race.h"
#include "src/core/lib/promise/seq.h"
-#include "src/core/lib/resource_quota/memory_quota.h"
#include "src/core/lib/resource_quota/trace.h"
namespace grpc_core {
@@ -156,7 +163,7 @@ GrpcMemoryAllocatorImpl::GrpcMemoryAllocatorImpl(
GrpcMemoryAllocatorImpl::~GrpcMemoryAllocatorImpl() {
GPR_ASSERT(free_bytes_.load(std::memory_order_acquire) +
sizeof(GrpcMemoryAllocatorImpl) ==
- taken_bytes_);
+ taken_bytes_.load(std::memory_order_relaxed));
memory_quota_->Return(taken_bytes_);
}
@@ -165,12 +172,12 @@ void GrpcMemoryAllocatorImpl::Shutdown() {
OrphanablePtr<ReclaimerQueue::Handle>
reclamation_handles[kNumReclamationPasses];
{
- MutexLock lock(&memory_quota_mu_);
+ MutexLock lock(&reclaimer_mu_);
GPR_ASSERT(!shutdown_);
shutdown_ = true;
memory_quota = memory_quota_;
for (size_t i = 0; i < kNumReclamationPasses; i++) {
- reclamation_handles[i] = y_absl::exchange(reclamation_handles_[i], nullptr);
+ reclamation_handles[i] = std::exchange(reclamation_handles_[i], nullptr);
}
}
}
@@ -183,7 +190,9 @@ size_t GrpcMemoryAllocatorImpl::Reserve(MemoryRequest request) {
while (true) {
// Attempt to reserve memory from our pool.
auto reservation = TryReserve(request);
- if (reservation.has_value()) return *reservation;
+ if (reservation.has_value()) {
+ return *reservation;
+ }
// If that failed, grab more from the quota and retry.
Replenish();
}
@@ -196,16 +205,10 @@ y_absl::optional<size_t> GrpcMemoryAllocatorImpl::TryReserve(
// Scale the request down according to memory pressure if we have that
// flexibility.
if (scaled_size_over_min != 0) {
- double pressure;
- size_t max_recommended_allocation_size;
- {
- MutexLock lock(&memory_quota_mu_);
- const auto pressure_and_max_recommended_allocation_size =
- memory_quota_->InstantaneousPressureAndMaxRecommendedAllocationSize();
- pressure = pressure_and_max_recommended_allocation_size.first;
- max_recommended_allocation_size =
- pressure_and_max_recommended_allocation_size.second;
- }
+ const auto pressure_info = memory_quota_->GetPressureInfo();
+ double pressure = pressure_info.pressure_control_value;
+ size_t max_recommended_allocation_size =
+ pressure_info.max_recommended_allocation_size;
// Reduce allocation size proportional to the pressure > 80% usage.
if (pressure > 0.8) {
scaled_size_over_min =
@@ -241,30 +244,53 @@ y_absl::optional<size_t> GrpcMemoryAllocatorImpl::TryReserve(
}
}
+void GrpcMemoryAllocatorImpl::MaybeDonateBack() {
+ size_t free = free_bytes_.load(std::memory_order_relaxed);
+ while (free > 0) {
+ size_t ret = 0;
+ if (!IsUnconstrainedMaxQuotaBufferSizeEnabled() &&
+ free > kMaxQuotaBufferSize / 2) {
+ ret = std::max(ret, free - kMaxQuotaBufferSize / 2);
+ }
+ if (IsPeriodicResourceQuotaReclamationEnabled()) {
+ ret = std::max(ret, free > 8192 ? free / 2 : free);
+ }
+ const size_t new_free = free - ret;
+ if (free_bytes_.compare_exchange_weak(free, new_free,
+ std::memory_order_acq_rel,
+ std::memory_order_acquire)) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
+ gpr_log(GPR_INFO, "[%p|%s] Early return %" PRIdPTR " bytes", this,
+ name_.c_str(), ret);
+ }
+ GPR_ASSERT(taken_bytes_.fetch_sub(ret, std::memory_order_relaxed) >= ret);
+ memory_quota_->Return(ret);
+ return;
+ }
+ }
+}
+
void GrpcMemoryAllocatorImpl::Replenish() {
- MutexLock lock(&memory_quota_mu_);
- GPR_ASSERT(!shutdown_);
// Attempt a fairly low rate exponential growth request size, bounded between
// some reasonable limits declared at top of file.
- auto amount = Clamp(taken_bytes_ / 3, kMinReplenishBytes, kMaxReplenishBytes);
+ auto amount = Clamp(taken_bytes_.load(std::memory_order_relaxed) / 3,
+ kMinReplenishBytes, kMaxReplenishBytes);
// Take the requested amount from the quota.
memory_quota_->Take(amount);
// Record that we've taken it.
- taken_bytes_ += amount;
+ taken_bytes_.fetch_add(amount, std::memory_order_relaxed);
// Add the taken amount to the free pool.
free_bytes_.fetch_add(amount, std::memory_order_acq_rel);
// See if we can add ourselves as a reclaimer.
- MaybeRegisterReclaimerLocked();
+ MaybeRegisterReclaimer();
}
void GrpcMemoryAllocatorImpl::MaybeRegisterReclaimer() {
- MutexLock lock(&memory_quota_mu_);
- MaybeRegisterReclaimerLocked();
-}
-
-void GrpcMemoryAllocatorImpl::MaybeRegisterReclaimerLocked() {
// If the reclaimer is already registered, then there's nothing to do.
- if (registered_reclaimer_) return;
+ if (registered_reclaimer_.exchange(true, std::memory_order_relaxed)) {
+ return;
+ }
+ MutexLock lock(&reclaimer_mu_);
if (shutdown_) return;
// Grab references to the things we'll need
auto self = shared_from_this();
@@ -275,49 +301,17 @@ void GrpcMemoryAllocatorImpl::MaybeRegisterReclaimerLocked() {
auto self = self_weak.lock();
if (self == nullptr) return;
auto* p = static_cast<GrpcMemoryAllocatorImpl*>(self.get());
- MutexLock lock(&p->memory_quota_mu_);
- p->registered_reclaimer_ = false;
+ p->registered_reclaimer_.store(false, std::memory_order_relaxed);
// Figure out how many bytes we can return to the quota.
size_t return_bytes = p->free_bytes_.exchange(0, std::memory_order_acq_rel);
if (return_bytes == 0) return;
// Subtract that from our outstanding balance.
- p->taken_bytes_ -= return_bytes;
+ p->taken_bytes_.fetch_sub(return_bytes);
// And return them to the quota.
p->memory_quota_->Return(return_bytes);
});
}
-void GrpcMemoryAllocatorImpl::Rebind(
- std::shared_ptr<BasicMemoryQuota> memory_quota) {
- MutexLock lock(&memory_quota_mu_);
- GPR_ASSERT(!shutdown_);
- if (memory_quota_ == memory_quota) return;
- // Return memory to the original memory quota.
- memory_quota_->Return(taken_bytes_);
- // Reassign any queued reclaimers
- for (size_t i = 0; i < kNumReclamationPasses; i++) {
- if (reclamation_handles_[i] != nullptr) {
- reclamation_handles_[i]->Requeue(memory_quota->reclaimer_queue(i));
- }
- }
- // Switch to the new memory quota, leaving the old one in memory_quota so that
- // when we unref it, we are outside of lock.
- memory_quota_.swap(memory_quota);
- // Drop our freed memory down to zero, to avoid needing to ask the new
- // quota for memory we're not currently using.
- taken_bytes_ -= free_bytes_.exchange(0, std::memory_order_acq_rel);
- // And let the new quota know how much we're already using.
- memory_quota_->Take(taken_bytes_);
-}
-
-//
-// MemoryOwner
-//
-
-void MemoryOwner::Rebind(MemoryQuota* quota) {
- impl()->Rebind(quota->memory_quota_);
-}
-
//
// BasicMemoryQuota
//
@@ -376,8 +370,12 @@ void BasicMemoryQuota::Start() {
std::tuple<const char*, RefCountedPtr<ReclaimerQueue::Handle>> arg) {
auto reclaimer = std::move(std::get<1>(arg));
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
- gpr_log(GPR_INFO, "RQ: %s perform %s reclamation",
- self->name_.c_str(), std::get<0>(arg));
+ double free = std::max(intptr_t(0), self->free_bytes_.load());
+ size_t quota_size = self->quota_size_.load();
+ gpr_log(GPR_INFO,
+ "RQ: %s perform %s reclamation. Available free bytes: %f, "
+ "total quota_size: %zu",
+ self->name_.c_str(), std::get<0>(arg), free, quota_size);
}
// One of the reclaimer queues gave us a way to get back memory.
// Call the reclaimer with a token that contains enough to wake us
@@ -436,7 +434,12 @@ void BasicMemoryQuota::FinishReclamation(uint64_t token, Waker waker) {
std::memory_order_relaxed,
std::memory_order_relaxed)) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
- gpr_log(GPR_INFO, "RQ: %s reclamation complete", name_.c_str());
+ double free = std::max(intptr_t(0), free_bytes_.load());
+ size_t quota_size = quota_size_.load();
+ gpr_log(GPR_INFO,
+ "RQ: %s reclamation complete. Available free bytes: %f, "
+ "total quota_size: %zu",
+ name_.c_str(), free, quota_size);
}
waker.Wakeup();
}
@@ -446,19 +449,140 @@ void BasicMemoryQuota::Return(size_t amount) {
free_bytes_.fetch_add(amount, std::memory_order_relaxed);
}
-std::pair<double, size_t>
-BasicMemoryQuota::InstantaneousPressureAndMaxRecommendedAllocationSize() const {
+BasicMemoryQuota::PressureInfo BasicMemoryQuota::GetPressureInfo() {
double free = free_bytes_.load();
if (free < 0) free = 0;
size_t quota_size = quota_size_.load();
double size = quota_size;
- if (size < 1) return std::make_pair(1.0, 1);
- double pressure = (size - free) / size;
- if (pressure < 0.0) pressure = 0.0;
- if (pressure > 1.0) pressure = 1.0;
- return std::make_pair(pressure, quota_size / 16);
+ if (size < 1) return PressureInfo{1, 1, 1};
+ PressureInfo pressure_info;
+ pressure_info.instantaneous_pressure = std::max(0.0, (size - free) / size);
+ if (IsMemoryPressureControllerEnabled()) {
+ pressure_info.pressure_control_value =
+ pressure_tracker_.AddSampleAndGetControlValue(
+ pressure_info.instantaneous_pressure);
+ } else {
+ pressure_info.pressure_control_value =
+ std::min(pressure_info.instantaneous_pressure, 1.0);
+ }
+ pressure_info.max_recommended_allocation_size = quota_size / 16;
+ return pressure_info;
+}
+
+//
+// PressureTracker
+//
+
+namespace memory_quota_detail {
+
+double PressureController::Update(double error) {
+ bool is_low = error < 0;
+ bool was_low = std::exchange(last_was_low_, is_low);
+ double new_control; // leave unset to compiler can note bad branches
+ if (is_low && was_low) {
+ // Memory pressure is too low this round, and was last round too.
+ // If we have reached the min reporting value last time, then we will report
+ // the same value again this time and can start to increase the ticks_same_
+ // counter.
+ if (last_control_ == min_) {
+ ticks_same_++;
+ if (ticks_same_ >= max_ticks_same_) {
+ // If it's been the same for too long, reduce the min reported value
+ // down towards zero.
+ min_ /= 2.0;
+ ticks_same_ = 0;
+ }
+ }
+ // Target the min reporting value.
+ new_control = min_;
+ } else if (!is_low && !was_low) {
+ // Memory pressure is high, and was high previously.
+ ticks_same_++;
+ if (ticks_same_ >= max_ticks_same_) {
+ // It's been high for too long, increase the max reporting value up
+ // towards 1.0.
+ max_ = (1.0 + max_) / 2.0;
+ ticks_same_ = 0;
+ }
+ // Target the max reporting value.
+ new_control = max_;
+ } else if (is_low) {
+ // Memory pressure is low, but was high last round.
+ // Target the min reporting value, but first update it to be closer to the
+ // current max (that we've been reporting lately).
+ // In this way the min will gradually climb towards the max as we find a
+ // stable point.
+ // If this is too high, then we'll eventually move it back towards zero.
+ ticks_same_ = 0;
+ min_ = (min_ + max_) / 2.0;
+ new_control = min_;
+ } else {
+ // Memory pressure is high, but was low last round.
+ // Target the max reporting value, but first update it to be closer to the
+ // last reported value.
+ // The first switchover will have last_control_ being 0, and max_ being 2,
+ // so we'll immediately choose 1.0 which will tend to really slow down
+ // progress.
+ // If we end up targetting too low, we'll eventually move it back towards
+ // 1.0 after max_ticks_same_ ticks.
+ ticks_same_ = 0;
+ max_ = (last_control_ + max_) / 2.0;
+ new_control = max_;
+ }
+ // If the control value is decreasing we do it slowly. This avoids rapid
+ // oscillations.
+ // (If we want a control value that's higher than the last one we snap
+ // immediately because it's likely that memory pressure is growing unchecked).
+ if (new_control < last_control_) {
+ new_control =
+ std::max(new_control, last_control_ - max_reduction_per_tick_ / 1000.0);
+ }
+ last_control_ = new_control;
+ return new_control;
}
+TString PressureController::DebugString() const {
+ return y_absl::StrCat(last_was_low_ ? "low" : "high", " min=", min_,
+ " max=", max_, " ticks=", ticks_same_,
+ " last_control=", last_control_);
+}
+
+double PressureTracker::AddSampleAndGetControlValue(double sample) {
+ static const double kSetPoint = 95.0;
+
+ double max_so_far = max_this_round_.load(std::memory_order_relaxed);
+ if (sample > max_so_far) {
+ max_this_round_.compare_exchange_weak(max_so_far, sample,
+ std::memory_order_relaxed,
+ std::memory_order_relaxed);
+ }
+ // If memory pressure is almost done, immediately hit the brakes and report
+ // full memory usage.
+ if (sample >= 0.99) {
+ report_.store(1.0, std::memory_order_relaxed);
+ }
+ update_.Tick([&](Duration) {
+ // Reset the round tracker with the new sample.
+ const double current_estimate =
+ max_this_round_.exchange(sample, std::memory_order_relaxed);
+ double report;
+ if (current_estimate > 0.99) {
+ // Under very high memory pressure we... just max things out.
+ report = controller_.Update(1e99);
+ } else {
+ report = controller_.Update(current_estimate - kSetPoint);
+ }
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
+ gpr_log(GPR_INFO, "RQ: pressure:%lf report:%lf controller:%s",
+ current_estimate, report, controller_.DebugString().c_str());
+ }
+ report_.store(report, std::memory_order_relaxed);
+ });
+ return report_.load(std::memory_order_relaxed);
+}
+
+} // namespace memory_quota_detail
+
//
// MemoryQuota
//
diff --git a/contrib/libs/grpc/src/core/lib/resource_quota/memory_quota.h b/contrib/libs/grpc/src/core/lib/resource_quota/memory_quota.h
index 6bb497f68f..0318c2bb59 100644
--- a/contrib/libs/grpc/src/core/lib/resource_quota/memory_quota.h
+++ b/contrib/libs/grpc/src/core/lib/resource_quota/memory_quota.h
@@ -17,21 +17,32 @@
#include <grpc/support/port_platform.h>
-#include <algorithm>
+#include <stdint.h>
+
#include <atomic>
#include <cstddef>
#include <limits>
#include <memory>
-#include <queue>
-#include <vector>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
#include <grpc/event_engine/memory_allocator.h>
-#include <grpc/slice.h>
+#include <grpc/event_engine/memory_request.h>
+#include <grpc/support/log.h>
+#include "src/core/lib/experiments/experiments.h"
#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/promise/activity.h"
#include "src/core/lib/promise/poll.h"
+#include "src/core/lib/resource_quota/periodic_update.h"
namespace grpc_core {
@@ -212,9 +223,72 @@ class ReclaimerQueue {
std::shared_ptr<State> state_;
};
+namespace memory_quota_detail {
+// Controller: tries to adjust a control variable up or down to get memory
+// pressure to some target. We use the control variable to size buffers
+// throughout the stack.
+class PressureController {
+ public:
+ PressureController(uint8_t max_ticks_same, uint8_t max_reduction_per_tick)
+ : max_ticks_same_(max_ticks_same),
+ max_reduction_per_tick_(max_reduction_per_tick) {}
+ // Update the controller, returns the new control value.
+ double Update(double error);
+ // Textual representation of the controller.
+ TString DebugString() const;
+
+ private:
+ // How many update periods have we reached the same decision in a row?
+ // Too many and we should start expanding the search space since we're not
+ // being agressive enough.
+ uint8_t ticks_same_ = 0;
+ // Maximum number of ticks with the same value until we start expanding the
+ // control space.
+ const uint8_t max_ticks_same_;
+ // Maximum amount to reduce the reporting value per iteration (in tenths of a
+ // percentile).
+ const uint8_t max_reduction_per_tick_;
+ // Was the last error indicating a too low pressure (or if false,
+ // a too high pressure).
+ bool last_was_low_ = true;
+ // Current minimum value to report.
+ double min_ = 0.0;
+ // Current maximum value to report.
+ // Set so that the first change over will choose 1.0 for max.
+ double max_ = 2.0;
+ // Last control value reported.
+ double last_control_ = 0.0;
+};
+
+// Utility to track memory pressure.
+// Tries to be conservative (returns a higher pressure than there may actually
+// be) but to be eventually accurate.
+class PressureTracker {
+ public:
+ double AddSampleAndGetControlValue(double sample);
+
+ private:
+ std::atomic<double> max_this_round_{0.0};
+ std::atomic<double> report_{0.0};
+ PeriodicUpdate update_{Duration::Seconds(1)};
+ PressureController controller_{100, 3};
+};
+} // namespace memory_quota_detail
+
class BasicMemoryQuota final
: public std::enable_shared_from_this<BasicMemoryQuota> {
public:
+ // Data about current memory pressure.
+ struct PressureInfo {
+ // The current instantaneously measured memory pressure.
+ double instantaneous_pressure;
+ // A control value that can be used to scale buffer sizes up or down to
+ // adjust memory pressure to our target set point.
+ double pressure_control_value;
+ // Maximum recommended individual allocation size.
+ size_t max_recommended_allocation_size;
+ };
+
explicit BasicMemoryQuota(TString name) : name_(std::move(name)) {}
// Start the reclamation activity.
@@ -235,8 +309,7 @@ class BasicMemoryQuota final
// Return some memory to the quota.
void Return(size_t amount);
// Instantaneous memory pressure approximation.
- std::pair<double, size_t>
- InstantaneousPressureAndMaxRecommendedAllocationSize() const;
+ PressureInfo GetPressureInfo();
// Get a reclamation queue
ReclaimerQueue* reclaimer_queue(size_t i) { return &reclaimers_[i]; }
@@ -268,6 +341,8 @@ class BasicMemoryQuota final
// We also increment this counter on completion of a sweep, as an indicator
// that the wait has ended.
std::atomic<uint64_t> reclamation_counter_{0};
+ // Memory pressure smoothing
+ memory_quota_detail::PressureTracker pressure_tracker_;
// The name of this quota - used for debugging/tracing/etc..
TString name_;
};
@@ -280,11 +355,6 @@ class GrpcMemoryAllocatorImpl final : public EventEngineMemoryAllocatorImpl {
std::shared_ptr<BasicMemoryQuota> memory_quota, TString name);
~GrpcMemoryAllocatorImpl() override;
- // Rebind - Swaps the underlying quota for this allocator, taking care to
- // make sure memory allocated is moved to allocations against the new quota.
- void Rebind(std::shared_ptr<BasicMemoryQuota> memory_quota)
- Y_ABSL_LOCKS_EXCLUDED(memory_quota_mu_);
-
// Reserve bytes from the quota.
// If we enter overcommit, reclamation will begin concurrently.
// Returns the number of bytes reserved.
@@ -295,14 +365,22 @@ class GrpcMemoryAllocatorImpl final : public EventEngineMemoryAllocatorImpl {
// Add the released memory to our free bytes counter... if this increases
// from 0 to non-zero, then we have more to do, otherwise, we're actually
// done.
- if (free_bytes_.fetch_add(n, std::memory_order_release) != 0) return;
+ size_t prev_free = free_bytes_.fetch_add(n, std::memory_order_release);
+ if ((!IsUnconstrainedMaxQuotaBufferSizeEnabled() &&
+ prev_free + n > kMaxQuotaBufferSize) ||
+ (IsPeriodicResourceQuotaReclamationEnabled() &&
+ donate_back_.Tick([](Duration) {}))) {
+ // Try to immediately return some free'ed memory back to the total quota.
+ MaybeDonateBack();
+ }
+ if (prev_free != 0) return;
MaybeRegisterReclaimer();
}
// Post a reclamation function.
template <typename F>
void PostReclaimer(ReclamationPass pass, F fn) {
- MutexLock lock(&memory_quota_mu_);
+ MutexLock lock(&reclaimer_mu_);
GPR_ASSERT(!shutdown_);
InsertReclaimer(static_cast<size_t>(pass), std::move(fn));
}
@@ -311,53 +389,52 @@ class GrpcMemoryAllocatorImpl final : public EventEngineMemoryAllocatorImpl {
void Shutdown() override;
// Read the instantaneous memory pressure
- double InstantaneousPressure() const {
- MutexLock lock(&memory_quota_mu_);
- return memory_quota_->InstantaneousPressureAndMaxRecommendedAllocationSize()
- .first;
+ BasicMemoryQuota::PressureInfo GetPressureInfo() const {
+ return memory_quota_->GetPressureInfo();
}
// Name of this allocator
y_absl::string_view name() const { return name_; }
private:
+ static constexpr size_t kMaxQuotaBufferSize = 1024 * 1024;
// Primitive reservation function.
y_absl::optional<size_t> TryReserve(MemoryRequest request) GRPC_MUST_USE_RESULT;
+ // This function may be invoked during a memory release operation.
+ // It will try to return half of our free pool to the quota.
+ void MaybeDonateBack();
// Replenish bytes from the quota, without blocking, possibly entering
// overcommit.
- void Replenish() Y_ABSL_LOCKS_EXCLUDED(memory_quota_mu_);
+ void Replenish();
// If we have not already, register a reclamation function against the quota
// to sweep any free memory back to that quota.
- void MaybeRegisterReclaimer() Y_ABSL_LOCKS_EXCLUDED(memory_quota_mu_);
- void MaybeRegisterReclaimerLocked()
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(memory_quota_mu_);
+ void MaybeRegisterReclaimer() Y_ABSL_LOCKS_EXCLUDED(reclaimer_mu_);
template <typename F>
void InsertReclaimer(size_t pass, F fn)
- Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(memory_quota_mu_) {
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(reclaimer_mu_) {
reclamation_handles_[pass] =
memory_quota_->reclaimer_queue(pass)->Insert(std::move(fn));
}
+ // Backing resource quota.
+ const std::shared_ptr<BasicMemoryQuota> memory_quota_;
// Amount of memory this allocator has cached for its own use: to avoid quota
// contention, each MemoryAllocator can keep some memory in addition to what
// it is immediately using, and the quota can pull it back under memory
// pressure.
std::atomic<size_t> free_bytes_{0};
- // Mutex guarding the backing resource quota.
- mutable Mutex memory_quota_mu_;
- // Backing resource quota.
- std::shared_ptr<BasicMemoryQuota> memory_quota_
- Y_ABSL_GUARDED_BY(memory_quota_mu_);
// Amount of memory taken from the quota by this allocator.
- size_t taken_bytes_ Y_ABSL_GUARDED_BY(memory_quota_mu_) =
- sizeof(GrpcMemoryAllocatorImpl);
- bool shutdown_ Y_ABSL_GUARDED_BY(memory_quota_mu_) = false;
- bool registered_reclaimer_ Y_ABSL_GUARDED_BY(memory_quota_mu_) = false;
+ std::atomic<size_t> taken_bytes_{sizeof(GrpcMemoryAllocatorImpl)};
+ std::atomic<bool> registered_reclaimer_{false};
+ // We try to donate back some memory periodically to the central quota.
+ PeriodicUpdate donate_back_{Duration::Seconds(10)};
+ Mutex reclaimer_mu_;
+ bool shutdown_ Y_ABSL_GUARDED_BY(reclaimer_mu_) = false;
// Indices into the various reclaimer queues, used so that we can cancel
// reclamation should we shutdown or get rebound.
OrphanablePtr<ReclaimerQueue::Handle>
reclamation_handles_[kNumReclamationPasses] Y_ABSL_GUARDED_BY(
- memory_quota_mu_);
+ reclaimer_mu_);
// Name of this allocator.
TString name_;
};
@@ -383,12 +460,9 @@ class MemoryOwner final : public MemoryAllocator {
impl()->PostReclaimer(pass, std::move(fn));
}
- // Rebind to a different quota.
- void Rebind(MemoryQuota* quota);
-
// Instantaneous memory pressure in the underlying quota.
- double InstantaneousPressure() const {
- return impl()->InstantaneousPressure();
+ BasicMemoryQuota::PressureInfo GetPressureInfo() const {
+ return impl()->GetPressureInfo();
}
template <typename T, typename... Args>
@@ -437,9 +511,9 @@ class MemoryQuota final
// Return true if the instantaneous memory pressure is high.
bool IsMemoryPressureHigh() const {
- static constexpr double kMemoryPressureHighThreshold = 0.9;
- return memory_quota_->InstantaneousPressureAndMaxRecommendedAllocationSize()
- .first > kMemoryPressureHighThreshold;
+ static constexpr double kMemoryPressureHighThreshold = 1.0;
+ return memory_quota_->GetPressureInfo().instantaneous_pressure >
+ kMemoryPressureHighThreshold;
}
private:
diff --git a/contrib/libs/grpc/src/core/lib/resource_quota/periodic_update.cc b/contrib/libs/grpc/src/core/lib/resource_quota/periodic_update.cc
new file mode 100644
index 0000000000..d065a976f6
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/resource_quota/periodic_update.cc
@@ -0,0 +1,78 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/resource_quota/periodic_update.h"
+
+#include <atomic>
+
+#include "src/core/lib/gpr/useful.h"
+
+namespace grpc_core {
+
+bool PeriodicUpdate::MaybeEndPeriod(y_absl::FunctionRef<void(Duration)> f) {
+ if (period_start_ == Timestamp::ProcessEpoch()) {
+ period_start_ = Timestamp::Now();
+ updates_remaining_.store(1, std::memory_order_release);
+ return false;
+ }
+ // updates_remaining_ just reached 0 and the thread calling this function was
+ // the decrementer that got us there.
+ // We can now safely mutate any non-atomic mutable variables (we've got a
+ // guarantee that no other thread will), and by the time this function returns
+ // we must store a postive number into updates_remaining_.
+ auto now = Timestamp::Now();
+ Duration time_so_far = now - period_start_;
+ if (time_so_far < period_) {
+ // At most double the number of updates remaining until the next period.
+ // At least try to estimate when we'll reach it.
+ int64_t better_guess;
+ if (time_so_far.millis() == 0) {
+ better_guess = expected_updates_per_period_ * 2;
+ } else {
+ // Determine a scaling factor that would have gotten us to the next
+ // period, but clamp between 1.01 (at least 1% increase in guesses)
+ // and 2.0 (at most doubling) - to avoid running completely out of
+ // control.
+ const double scale =
+ Clamp(period_.seconds() / time_so_far.seconds(), 1.01, 2.0);
+ better_guess = expected_updates_per_period_ * scale;
+ if (better_guess <= expected_updates_per_period_) {
+ better_guess = expected_updates_per_period_ + 1;
+ }
+ }
+ // Store the remainder left. Note that updates_remaining_ may have been
+ // decremented by another thread whilst we performed the above calculations:
+ // we simply discard those decrements.
+ updates_remaining_.store(better_guess - expected_updates_per_period_,
+ std::memory_order_release);
+ // Not quite done, return, try for longer.
+ return false;
+ }
+ // Finished period, start a new one and return true.
+ // We try to predict how many update periods we'd need to cover the full time
+ // span, and we increase that by 1% to attempt to tend to not enter the above
+ // stanza.
+ expected_updates_per_period_ =
+ period_.seconds() * expected_updates_per_period_ / time_so_far.seconds();
+ if (expected_updates_per_period_ < 1) expected_updates_per_period_ = 1;
+ period_start_ = now;
+ f(time_so_far);
+ updates_remaining_.store(expected_updates_per_period_,
+ std::memory_order_release);
+ return true;
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/resource_quota/periodic_update.h b/contrib/libs/grpc/src/core/lib/resource_quota/periodic_update.h
new file mode 100644
index 0000000000..215e3ee703
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/resource_quota/periodic_update.h
@@ -0,0 +1,71 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_RESOURCE_QUOTA_PERIODIC_UPDATE_H
+#define GRPC_CORE_LIB_RESOURCE_QUOTA_PERIODIC_UPDATE_H
+
+#include <grpc/support/port_platform.h>
+
+#include <inttypes.h>
+
+#include <atomic>
+
+#include "y_absl/functional/function_ref.h"
+
+#include "src/core/lib/gprpp/time.h"
+
+namespace grpc_core {
+
+// Lightweight timer-like mechanism for periodic updates.
+// Fast path only decrements an atomic int64.
+// Slow path runs corrections and estimates how many ticks are required to hit
+// the target period.
+// This is super inaccurate of course, but for places where we can't run timers,
+// or places where continuous registration/unregistration would cause problems
+// it can be quite useful.
+class PeriodicUpdate {
+ public:
+ explicit PeriodicUpdate(Duration period) : period_(period) {}
+
+ // Tick the update, call f and return true if we think the period expired.
+ bool Tick(y_absl::FunctionRef<void(Duration)> f) {
+ // Atomically decrement the remaining ticks counter.
+ // If we hit 0 our estimate of period length has expired.
+ // See the comment next to the data members for a description of thread
+ // safety.
+ if (updates_remaining_.fetch_sub(1, std::memory_order_acquire) == 1) {
+ return MaybeEndPeriod(f);
+ }
+ return false;
+ }
+
+ private:
+ bool MaybeEndPeriod(y_absl::FunctionRef<void(Duration)> f);
+
+ // Thread safety:
+ // When updates_remaining_ reaches 0 the thread that decremented becomes
+ // responsible for updating any mutable variables and then setting
+ // updates_remaining_ to a value greater than zero.
+ // Whilst in this state other threads *may* decrement updates_remaining_, but
+ // this is fine because they'll observe an ignorable negative value.
+
+ std::atomic<int64_t> updates_remaining_{1};
+ const Duration period_;
+ Timestamp period_start_ = Timestamp::ProcessEpoch();
+ int64_t expected_updates_per_period_ = 1;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_RESOURCE_QUOTA_PERIODIC_UPDATE_H
diff --git a/contrib/libs/grpc/src/core/lib/resource_quota/resource_quota.h b/contrib/libs/grpc/src/core/lib/resource_quota/resource_quota.h
index a9c21d8bce..108bd3435d 100644
--- a/contrib/libs/grpc/src/core/lib/resource_quota/resource_quota.h
+++ b/contrib/libs/grpc/src/core/lib/resource_quota/resource_quota.h
@@ -17,15 +17,25 @@
#include <grpc/support/port_platform.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/strings/string_view.h"
+
#include <grpc/impl/codegen/grpc_types.h>
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/cpp_impl_of.h"
+#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/resource_quota/memory_quota.h"
#include "src/core/lib/resource_quota/thread_quota.h"
namespace grpc_core {
class ResourceQuota;
+
using ResourceQuotaRefPtr = RefCountedPtr<ResourceQuota>;
class ResourceQuota : public RefCounted<ResourceQuota>,
@@ -37,6 +47,8 @@ class ResourceQuota : public RefCounted<ResourceQuota>,
ResourceQuota(const ResourceQuota&) = delete;
ResourceQuota& operator=(const ResourceQuota&) = delete;
+ static y_absl::string_view ChannelArgName() { return GRPC_ARG_RESOURCE_QUOTA; }
+
MemoryQuotaRefPtr memory_quota() { return memory_quota_; }
const RefCountedPtr<ThreadQuota>& thread_quota() { return thread_quota_; }
@@ -44,6 +56,11 @@ class ResourceQuota : public RefCounted<ResourceQuota>,
// The default global resource quota
static ResourceQuotaRefPtr Default();
+ static int ChannelArgsCompare(const ResourceQuota* a,
+ const ResourceQuota* b) {
+ return QsortCompare(a, b);
+ }
+
private:
MemoryQuotaRefPtr memory_quota_;
RefCountedPtr<ThreadQuota> thread_quota_;
diff --git a/contrib/libs/grpc/src/core/lib/resource_quota/thread_quota.cc b/contrib/libs/grpc/src/core/lib/resource_quota/thread_quota.cc
index c935be0d7f..24c4c3ace8 100644
--- a/contrib/libs/grpc/src/core/lib/resource_quota/thread_quota.cc
+++ b/contrib/libs/grpc/src/core/lib/resource_quota/thread_quota.cc
@@ -16,6 +16,8 @@
#include "src/core/lib/resource_quota/thread_quota.h"
+#include <grpc/support/log.h>
+
namespace grpc_core {
ThreadQuota::ThreadQuota() = default;
diff --git a/contrib/libs/grpc/src/core/lib/resource_quota/thread_quota.h b/contrib/libs/grpc/src/core/lib/resource_quota/thread_quota.h
index 3d5edcc55c..4c3789cc43 100644
--- a/contrib/libs/grpc/src/core/lib/resource_quota/thread_quota.h
+++ b/contrib/libs/grpc/src/core/lib/resource_quota/thread_quota.h
@@ -18,8 +18,12 @@
#include <grpc/support/port_platform.h>
#include <cstddef>
+#include <limits>
+
+#include "y_absl/base/thread_annotations.h"
#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider.h b/contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider.h
index 7db900676b..33c1a7570b 100644
--- a/contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider.h
+++ b/contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider.h
@@ -17,12 +17,26 @@
#include <grpc/support/port_platform.h>
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
+
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/dual_ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/security/authorization/authorization_engine.h"
struct grpc_authorization_policy_provider
: public grpc_core::DualRefCounted<grpc_authorization_policy_provider> {
public:
+ static y_absl::string_view ChannelArgName() {
+ return GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER;
+ }
+ static int ChannelArgsCompare(const grpc_authorization_policy_provider* a,
+ const grpc_authorization_policy_provider* b) {
+ return QsortCompare(a, b);
+ }
struct AuthorizationEngines {
grpc_core::RefCountedPtr<grpc_core::AuthorizationEngine> allow_engine;
grpc_core::RefCountedPtr<grpc_core::AuthorizationEngine> deny_engine;
diff --git a/contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc b/contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc
index f8a4426ea4..cb36f9787d 100644
--- a/contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc
+++ b/contrib/libs/grpc/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc
@@ -15,7 +15,11 @@
#include <grpc/support/port_platform.h>
#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/security/authorization/authorization_policy_provider.h"
namespace {
diff --git a/contrib/libs/grpc/src/core/lib/security/authorization/evaluate_args.cc b/contrib/libs/grpc/src/core/lib/security/authorization/evaluate_args.cc
index bae33426c3..742ddb4666 100644
--- a/contrib/libs/grpc/src/core/lib/security/authorization/evaluate_args.cc
+++ b/contrib/libs/grpc/src/core/lib/security/authorization/evaluate_args.cc
@@ -16,13 +16,21 @@
#include "src/core/lib/security/authorization/evaluate_args.h"
+#include <string.h>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/match.h"
#include "y_absl/strings/numbers.h"
+#include <grpc/grpc_security_constants.h>
+#include <grpc/support/log.h>
+
#include "src/core/lib/address_utils/parse_address.h"
-#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/gprpp/host_port.h"
#include "src/core/lib/security/credentials/tls/tls_utils.h"
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
@@ -48,13 +56,14 @@ EvaluateArgs::PerChannelArgs::Address ParseEndpointUri(
TString(port_view).c_str());
}
address.address_str = TString(host_view);
- grpc_error_handle error = grpc_string_to_sockaddr(
- &address.address, address.address_str.c_str(), address.port);
- if (error != GRPC_ERROR_NONE) {
- gpr_log(GPR_DEBUG, "Address %s is not IPv4/IPv6. Error: %s",
- address.address_str.c_str(), grpc_error_std_string(error).c_str());
+ auto resolved_address = StringToSockaddr(uri->path());
+ if (!resolved_address.ok()) {
+ gpr_log(GPR_DEBUG, "Address \"%s\" is not IPv4/IPv6. Error: %s",
+ uri->path().c_str(), resolved_address.status().ToString().c_str());
+ memset(&address.address, 0, sizeof(address.address));
+ } else {
+ address.address = *resolved_address;
}
- GRPC_ERROR_UNREF(error);
return address;
}
diff --git a/contrib/libs/grpc/src/core/lib/security/authorization/evaluate_args.h b/contrib/libs/grpc/src/core/lib/security/authorization/evaluate_args.h
index ef386ddcea..c7995942ba 100644
--- a/contrib/libs/grpc/src/core/lib/security/authorization/evaluate_args.h
+++ b/contrib/libs/grpc/src/core/lib/security/authorization/evaluate_args.h
@@ -17,13 +17,17 @@
#include <grpc/support/port_platform.h>
-#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+#include "y_absl/strings/string_view.h"
#include "y_absl/types/optional.h"
+#include <grpc/grpc_security.h>
+
#include "src/core/lib/iomgr/endpoint.h"
-#include "src/core/lib/iomgr/resolve_address.h"
-#include "src/core/lib/security/context/security_context.h"
+#include "src/core/lib/iomgr/resolved_address.h"
#include "src/core/lib/transport/metadata_batch.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/security/authorization/grpc_authorization_engine.cc b/contrib/libs/grpc/src/core/lib/security/authorization/grpc_authorization_engine.cc
index 6877845ad1..2f3cd3de50 100644
--- a/contrib/libs/grpc/src/core/lib/security/authorization/grpc_authorization_engine.cc
+++ b/contrib/libs/grpc/src/core/lib/security/authorization/grpc_authorization_engine.cc
@@ -16,6 +16,12 @@
#include "src/core/lib/security/authorization/grpc_authorization_engine.h"
+#include <algorithm>
+#include <map>
+#include <utility>
+
+#include "y_absl/memory/memory.h"
+
namespace grpc_core {
GrpcAuthorizationEngine::GrpcAuthorizationEngine(Rbac policy)
diff --git a/contrib/libs/grpc/src/core/lib/security/authorization/grpc_authorization_engine.h b/contrib/libs/grpc/src/core/lib/security/authorization/grpc_authorization_engine.h
index cf98b64bbd..249a6ec35a 100644
--- a/contrib/libs/grpc/src/core/lib/security/authorization/grpc_authorization_engine.h
+++ b/contrib/libs/grpc/src/core/lib/security/authorization/grpc_authorization_engine.h
@@ -17,7 +17,15 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
#include "src/core/lib/security/authorization/authorization_engine.h"
+#include "src/core/lib/security/authorization/evaluate_args.h"
#include "src/core/lib/security/authorization/matchers.h"
#include "src/core/lib/security/authorization/rbac_policy.h"
diff --git a/contrib/libs/grpc/src/core/lib/security/authorization/grpc_server_authz_filter.cc b/contrib/libs/grpc/src/core/lib/security/authorization/grpc_server_authz_filter.cc
index 869348af62..e3f15c8a0d 100644
--- a/contrib/libs/grpc/src/core/lib/security/authorization/grpc_server_authz_filter.cc
+++ b/contrib/libs/grpc/src/core/lib/security/authorization/grpc_server_authz_filter.cc
@@ -16,7 +16,22 @@
#include "src/core/lib/security/authorization/grpc_server_authz_filter.h"
+#include <functional>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/status/status.h"
+#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/support/log.h>
+
+#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/channel/promise_based_filter.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/promise/promise.h"
+#include "src/core/lib/security/authorization/authorization_engine.h"
#include "src/core/lib/security/authorization/evaluate_args.h"
#include "src/core/lib/transport/transport.h"
@@ -32,11 +47,9 @@ GrpcServerAuthzFilter::GrpcServerAuthzFilter(
provider_(std::move(provider)) {}
y_absl::StatusOr<GrpcServerAuthzFilter> GrpcServerAuthzFilter::Create(
- const grpc_channel_args* args, ChannelFilter::Args) {
- grpc_auth_context* auth_context = grpc_find_auth_context_in_args(args);
- grpc_authorization_policy_provider* provider =
- grpc_channel_args_find_pointer<grpc_authorization_policy_provider>(
- args, GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER);
+ const ChannelArgs& args, ChannelFilter::Args) {
+ auto* auth_context = args.GetObject<grpc_auth_context>();
+ auto* provider = args.GetObject<grpc_authorization_policy_provider>();
if (provider == nullptr) {
return y_absl::InvalidArgumentError("Failed to get authorization provider.");
}
@@ -49,7 +62,7 @@ y_absl::StatusOr<GrpcServerAuthzFilter> GrpcServerAuthzFilter::Create(
}
bool GrpcServerAuthzFilter::IsAuthorized(
- const ClientInitialMetadata& initial_metadata) {
+ const ClientMetadataHandle& initial_metadata) {
EvaluateArgs args(initial_metadata.get(), &per_channel_evaluate_args_);
if (GRPC_TRACE_FLAG_ENABLED(grpc_authz_trace)) {
gpr_log(GPR_DEBUG,
@@ -92,14 +105,13 @@ bool GrpcServerAuthzFilter::IsAuthorized(
return false;
}
-ArenaPromise<TrailingMetadata> GrpcServerAuthzFilter::MakeCallPromise(
- ClientInitialMetadata initial_metadata,
- NextPromiseFactory next_promise_factory) {
- if (!IsAuthorized(initial_metadata)) {
- return ArenaPromise<TrailingMetadata>(Immediate(TrailingMetadata(
+ArenaPromise<ServerMetadataHandle> GrpcServerAuthzFilter::MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) {
+ if (!IsAuthorized(call_args.client_initial_metadata)) {
+ return ArenaPromise<ServerMetadataHandle>(Immediate(ServerMetadataHandle(
y_absl::PermissionDeniedError("Unauthorized RPC request rejected."))));
}
- return next_promise_factory(std::move(initial_metadata));
+ return next_promise_factory(std::move(call_args));
}
const grpc_channel_filter GrpcServerAuthzFilter::kFilterVtable =
diff --git a/contrib/libs/grpc/src/core/lib/security/authorization/grpc_server_authz_filter.h b/contrib/libs/grpc/src/core/lib/security/authorization/grpc_server_authz_filter.h
index b514ac2f34..0b1c19e9d7 100644
--- a/contrib/libs/grpc/src/core/lib/security/authorization/grpc_server_authz_filter.h
+++ b/contrib/libs/grpc/src/core/lib/security/authorization/grpc_server_authz_filter.h
@@ -17,9 +17,20 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/channel/channel_stack.h"
+#include "y_absl/status/statusor.h"
+
+#include <grpc/grpc_security.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/promise_based_filter.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/security/authorization/authorization_policy_provider.h"
+#include "src/core/lib/security/authorization/evaluate_args.h"
+#include "src/core/lib/security/context/security_context.h"
+#include "src/core/lib/transport/transport.h"
namespace grpc_core {
@@ -27,19 +38,18 @@ class GrpcServerAuthzFilter final : public ChannelFilter {
public:
static const grpc_channel_filter kFilterVtable;
- static y_absl::StatusOr<GrpcServerAuthzFilter> Create(
- const grpc_channel_args* args, ChannelFilter::Args);
+ static y_absl::StatusOr<GrpcServerAuthzFilter> Create(const ChannelArgs& args,
+ ChannelFilter::Args);
- ArenaPromise<TrailingMetadata> MakeCallPromise(
- ClientInitialMetadata initial_metadata,
- NextPromiseFactory next_promise_factory) override;
+ ArenaPromise<ServerMetadataHandle> MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) override;
private:
GrpcServerAuthzFilter(
RefCountedPtr<grpc_auth_context> auth_context, grpc_endpoint* endpoint,
RefCountedPtr<grpc_authorization_policy_provider> provider);
- bool IsAuthorized(const ClientInitialMetadata& initial_metadata);
+ bool IsAuthorized(const ClientMetadataHandle& initial_metadata);
RefCountedPtr<grpc_auth_context> auth_context_;
EvaluateArgs::PerChannelArgs per_channel_evaluate_args_;
diff --git a/contrib/libs/grpc/src/core/lib/security/authorization/matchers.cc b/contrib/libs/grpc/src/core/lib/security/authorization/matchers.cc
index aeb5553a6e..5ba347654e 100644
--- a/contrib/libs/grpc/src/core/lib/security/authorization/matchers.cc
+++ b/contrib/libs/grpc/src/core/lib/security/authorization/matchers.cc
@@ -16,7 +16,19 @@
#include "src/core/lib/security/authorization/matchers.h"
+#include <string.h>
+
+#include <algorithm>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
#include <grpc/grpc_security_constants.h>
+#include <grpc/support/log.h>
#include "src/core/lib/address_utils/parse_address.h"
#include "src/core/lib/address_utils/sockaddr_utils.h"
@@ -142,16 +154,16 @@ bool HeaderAuthorizationMatcher::Matches(const EvaluateArgs& args) const {
IpAuthorizationMatcher::IpAuthorizationMatcher(Type type, Rbac::CidrRange range)
: type_(type), prefix_len_(range.prefix_len) {
- grpc_error_handle error =
- grpc_string_to_sockaddr(&subnet_address_, range.address_prefix.c_str(),
- /*port does not matter here*/ 0);
- if (error == GRPC_ERROR_NONE) {
- grpc_sockaddr_mask_bits(&subnet_address_, prefix_len_);
- } else {
- gpr_log(GPR_DEBUG, "CidrRange address %s is not IPv4/IPv6. Error: %s",
- range.address_prefix.c_str(), grpc_error_std_string(error).c_str());
+ auto address =
+ StringToSockaddr(range.address_prefix, 0); // Port does not matter here.
+ if (!address.ok()) {
+ gpr_log(GPR_DEBUG, "CidrRange address \"%s\" is not IPv4/IPv6. Error: %s",
+ range.address_prefix.c_str(), address.status().ToString().c_str());
+ memset(&subnet_address_, 0, sizeof(subnet_address_));
+ return;
}
- GRPC_ERROR_UNREF(error);
+ subnet_address_ = *address;
+ grpc_sockaddr_mask_bits(&subnet_address_, prefix_len_);
}
bool IpAuthorizationMatcher::Matches(const EvaluateArgs& args) const {
diff --git a/contrib/libs/grpc/src/core/lib/security/authorization/matchers.h b/contrib/libs/grpc/src/core/lib/security/authorization/matchers.h
index 859e8a72ef..d6833dd530 100644
--- a/contrib/libs/grpc/src/core/lib/security/authorization/matchers.h
+++ b/contrib/libs/grpc/src/core/lib/security/authorization/matchers.h
@@ -17,8 +17,15 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
#include <memory>
+#include <utility>
+#include <vector>
+
+#include "y_absl/types/optional.h"
+#include "src/core/lib/iomgr/resolved_address.h"
#include "src/core/lib/matchers/matchers.h"
#include "src/core/lib/security/authorization/evaluate_args.h"
#include "src/core/lib/security/authorization/rbac_policy.h"
diff --git a/contrib/libs/grpc/src/core/lib/security/authorization/rbac_policy.cc b/contrib/libs/grpc/src/core/lib/security/authorization/rbac_policy.cc
index 90565a987a..441d51530d 100644
--- a/contrib/libs/grpc/src/core/lib/security/authorization/rbac_policy.cc
+++ b/contrib/libs/grpc/src/core/lib/security/authorization/rbac_policy.cc
@@ -16,6 +16,10 @@
#include "src/core/lib/security/authorization/rbac_policy.h"
+#include <algorithm>
+#include <utility>
+
+#include "y_absl/memory/memory.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
diff --git a/contrib/libs/grpc/src/core/lib/security/authorization/rbac_policy.h b/contrib/libs/grpc/src/core/lib/security/authorization/rbac_policy.h
index e22d7c1b8c..afc2b57f60 100644
--- a/contrib/libs/grpc/src/core/lib/security/authorization/rbac_policy.h
+++ b/contrib/libs/grpc/src/core/lib/security/authorization/rbac_policy.h
@@ -17,7 +17,15 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
+#include <map>
#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
+#include "y_absl/types/optional.h"
#include "src/core/lib/matchers/matchers.h"
diff --git a/contrib/libs/grpc/src/core/ext/xds/certificate_provider_factory.h b/contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_factory.h
index 90b937b29a..7874ba3c33 100644
--- a/contrib/libs/grpc/src/core/ext/xds/certificate_provider_factory.h
+++ b/contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_factory.h
@@ -16,14 +16,20 @@
//
//
-#ifndef GRPC_CORE_EXT_XDS_CERTIFICATE_PROVIDER_FACTORY_H
-#define GRPC_CORE_EXT_XDS_CERTIFICATE_PROVIDER_FACTORY_H
+#ifndef GRPC_CORE_LIB_SECURITY_CERTIFICATE_PROVIDER_CERTIFICATE_PROVIDER_FACTORY_H
+#define GRPC_CORE_LIB_SECURITY_CERTIFICATE_PROVIDER_CERTIFICATE_PROVIDER_FACTORY_H
#include <grpc/support/port_platform.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include <grpc/grpc_security.h>
+
+#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/json/json.h"
-#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
namespace grpc_core {
@@ -58,4 +64,4 @@ class CertificateProviderFactory {
} // namespace grpc_core
-#endif // GRPC_CORE_EXT_XDS_CERTIFICATE_PROVIDER_FACTORY_H
+#endif // GRPC_CORE_LIB_SECURITY_CERTIFICATE_PROVIDER_CERTIFICATE_PROVIDER_FACTORY_H
diff --git a/contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_registry.cc b/contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_registry.cc
new file mode 100644
index 0000000000..eddd127167
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_registry.cc
@@ -0,0 +1,60 @@
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/security/certificate_provider/certificate_provider_registry.h"
+
+#include <string.h>
+
+#include <algorithm>
+#include <utility>
+#include <vector>
+
+#include <grpc/support/log.h>
+
+namespace grpc_core {
+
+void CertificateProviderRegistry::Builder::RegisterCertificateProviderFactory(
+ std::unique_ptr<CertificateProviderFactory> factory) {
+ gpr_log(GPR_DEBUG, "registering certificate provider factory for \"%s\"",
+ factory->name());
+ for (size_t i = 0; i < factories_.size(); ++i) {
+ GPR_ASSERT(strcmp(factories_[i]->name(), factory->name()) != 0);
+ }
+ factories_.push_back(std::move(factory));
+}
+
+CertificateProviderRegistry CertificateProviderRegistry::Builder::Build() {
+ CertificateProviderRegistry r;
+ r.factories_ = std::move(factories_);
+ return r;
+}
+
+CertificateProviderFactory*
+CertificateProviderRegistry::LookupCertificateProviderFactory(
+ y_absl::string_view name) const {
+ for (size_t i = 0; i < factories_.size(); ++i) {
+ if (name == factories_[i]->name()) {
+ return factories_[i].get();
+ }
+ }
+ return nullptr;
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_registry.h b/contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_registry.h
new file mode 100644
index 0000000000..d69ce30c5d
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/security/certificate_provider/certificate_provider_registry.h
@@ -0,0 +1,70 @@
+//
+//
+// Copyright 2020 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#ifndef GRPC_CORE_LIB_SECURITY_CERTIFICATE_PROVIDER_CERTIFICATE_PROVIDER_REGISTRY_H
+#define GRPC_CORE_LIB_SECURITY_CERTIFICATE_PROVIDER_CERTIFICATE_PROVIDER_REGISTRY_H
+
+#include <grpc/support/port_platform.h>
+
+#include <memory>
+#include <vector>
+
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/lib/security/certificate_provider/certificate_provider_factory.h"
+
+namespace grpc_core {
+
+// Global registry for all the certificate provider plugins.
+class CertificateProviderRegistry {
+ public:
+ class Builder {
+ public:
+ // Register a provider with the registry. Can only be called after calling
+ // InitRegistry(). The key of the factory is extracted from factory
+ // parameter with method CertificateProviderFactory::name. If the same key
+ // is registered twice, an exception is raised.
+ void RegisterCertificateProviderFactory(
+ std::unique_ptr<CertificateProviderFactory> factory);
+
+ CertificateProviderRegistry Build();
+
+ private:
+ std::vector<std::unique_ptr<CertificateProviderFactory>> factories_;
+ };
+
+ CertificateProviderRegistry(const CertificateProviderRegistry&) = delete;
+ CertificateProviderRegistry& operator=(const CertificateProviderRegistry&) =
+ delete;
+ CertificateProviderRegistry(CertificateProviderRegistry&&) = default;
+ CertificateProviderRegistry& operator=(CertificateProviderRegistry&&) =
+ default;
+
+ // Returns the factory for the plugin keyed by name.
+ CertificateProviderFactory* LookupCertificateProviderFactory(
+ y_absl::string_view name) const;
+
+ private:
+ CertificateProviderRegistry() = default;
+
+ std::vector<std::unique_ptr<CertificateProviderFactory>> factories_;
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_SECURITY_CERTIFICATE_PROVIDER_CERTIFICATE_PROVIDER_REGISTRY_H
diff --git a/contrib/libs/grpc/src/core/lib/security/context/security_context.cc b/contrib/libs/grpc/src/core/lib/security/context/security_context.cc
index 903bcb0ed8..4f62a7df54 100644
--- a/contrib/libs/grpc/src/core/lib/security/context/security_context.cc
+++ b/contrib/libs/grpc/src/core/lib/security/context/security_context.cc
@@ -22,16 +22,19 @@
#include <string.h>
+#include <algorithm>
+
#include <grpc/grpc_security.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/channel/context.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/resource_quota/arena.h"
+#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/call.h"
diff --git a/contrib/libs/grpc/src/core/lib/security/context/security_context.h b/contrib/libs/grpc/src/core/lib/security/context/security_context.h
index 2c695931b5..7ae72d40d5 100644
--- a/contrib/libs/grpc/src/core/lib/security/context/security_context.h
+++ b/contrib/libs/grpc/src/core/lib/security/context/security_context.h
@@ -21,11 +21,23 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <utility>
+
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/alloc.h>
+
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/pollset.h"
#include "src/core/lib/resource_quota/arena.h"
-#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/credentials/credentials.h" // IWYU pragma: keep
extern grpc_core::DebugOnlyTraceFlag grpc_trace_auth_context_refcount;
@@ -43,6 +55,8 @@ struct grpc_auth_property_array {
void grpc_auth_property_reset(grpc_auth_property* property);
+#define GRPC_AUTH_CONTEXT_ARG "grpc.auth_context"
+
// This type is forward declared as a C struct and we cannot define it as a
// class. Otherwise, compiler will complain about type mismatch due to
// -Wmismatched-tags.
@@ -73,6 +87,12 @@ struct grpc_auth_context
}
}
+ static y_absl::string_view ChannelArgName() { return GRPC_AUTH_CONTEXT_ARG; }
+ static int ChannelArgsCompare(const grpc_auth_context* a,
+ const grpc_auth_context* b) {
+ return QsortCompare(a, b);
+ }
+
const grpc_auth_context* chained() const { return chained_.get(); }
const grpc_auth_property_array& properties() const { return properties_; }
@@ -142,7 +162,6 @@ grpc_server_security_context* grpc_server_security_context_create(
void grpc_server_security_context_destroy(void* ctx);
/* --- Channel args for auth context --- */
-#define GRPC_AUTH_CONTEXT_ARG "grpc.auth_context"
grpc_arg grpc_auth_context_to_arg(grpc_auth_context* c);
grpc_auth_context* grpc_auth_context_from_arg(const grpc_arg* arg);
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/alts/alts_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/alts/alts_credentials.cc
index 30acd74948..192e59b4c0 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/alts/alts_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/alts/alts_credentials.cc
@@ -20,24 +20,24 @@
#include "src/core/lib/security/credentials/alts/alts_credentials.h"
-#include <cstring>
+#include <utility>
+
+#include "y_absl/strings/string_view.h"
#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
#include "src/core/lib/security/credentials/alts/check_gcp_environment.h"
+#include "src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h"
#include "src/core/lib/security/security_connector/alts/alts_security_connector.h"
-#define GRPC_CREDENTIALS_TYPE_ALTS "Alts"
#define GRPC_ALTS_HANDSHAKER_SERVICE_URL "metadata.google.internal.:8080"
grpc_alts_credentials::grpc_alts_credentials(
const grpc_alts_credentials_options* options,
const char* handshaker_service_url)
- : grpc_channel_credentials(GRPC_CREDENTIALS_TYPE_ALTS),
- options_(grpc_alts_credentials_options_copy(options)),
+ : options_(grpc_alts_credentials_options_copy(options)),
handshaker_service_url_(handshaker_service_url == nullptr
? gpr_strdup(GRPC_ALTS_HANDSHAKER_SERVICE_URL)
: gpr_strdup(handshaker_service_url)) {
@@ -52,17 +52,20 @@ grpc_alts_credentials::~grpc_alts_credentials() {
grpc_core::RefCountedPtr<grpc_channel_security_connector>
grpc_alts_credentials::create_security_connector(
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
- const char* target_name, const grpc_channel_args* /*args*/,
- grpc_channel_args** /*new_args*/) {
+ const char* target_name, grpc_core::ChannelArgs* /*args*/) {
return grpc_alts_channel_security_connector_create(
this->Ref(), std::move(call_creds), target_name);
}
+grpc_core::UniqueTypeName grpc_alts_credentials::type() const {
+ static grpc_core::UniqueTypeName::Factory kFactory("Alts");
+ return kFactory.Create();
+}
+
grpc_alts_server_credentials::grpc_alts_server_credentials(
const grpc_alts_credentials_options* options,
const char* handshaker_service_url)
- : grpc_server_credentials(GRPC_CREDENTIALS_TYPE_ALTS),
- options_(grpc_alts_credentials_options_copy(options)),
+ : options_(grpc_alts_credentials_options_copy(options)),
handshaker_service_url_(handshaker_service_url == nullptr
? gpr_strdup(GRPC_ALTS_HANDSHAKER_SERVICE_URL)
: gpr_strdup(handshaker_service_url)) {
@@ -71,7 +74,7 @@ grpc_alts_server_credentials::grpc_alts_server_credentials(
grpc_core::RefCountedPtr<grpc_server_security_connector>
grpc_alts_server_credentials::create_security_connector(
- const grpc_channel_args* /* args */) {
+ const grpc_core::ChannelArgs& /* args */) {
return grpc_alts_server_security_connector_create(this->Ref());
}
@@ -80,6 +83,11 @@ grpc_alts_server_credentials::~grpc_alts_server_credentials() {
gpr_free(handshaker_service_url_);
}
+grpc_core::UniqueTypeName grpc_alts_server_credentials::type() const {
+ static grpc_core::UniqueTypeName::Factory kFactory("Alts");
+ return kFactory.Create();
+}
+
grpc_channel_credentials* grpc_alts_credentials_create_customized(
const grpc_alts_credentials_options* options,
const char* handshaker_service_url, bool enable_untrusted_alts) {
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/alts/alts_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/alts/alts_credentials.h
index 5012d9685b..87e6551568 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/alts/alts_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/alts/alts_credentials.h
@@ -21,10 +21,15 @@
#include <grpc/support/port_platform.h>
+#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
-#include "src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
/* Main struct for grpc ALTS channel credential. */
class grpc_alts_credentials final : public grpc_channel_credentials {
@@ -36,8 +41,9 @@ class grpc_alts_credentials final : public grpc_channel_credentials {
grpc_core::RefCountedPtr<grpc_channel_security_connector>
create_security_connector(
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
- const char* target_name, const grpc_channel_args* args,
- grpc_channel_args** new_args) override;
+ const char* target_name, grpc_core::ChannelArgs* args) override;
+
+ grpc_core::UniqueTypeName type() const override;
const grpc_alts_credentials_options* options() const { return options_; }
grpc_alts_credentials_options* mutable_options() { return options_; }
@@ -62,7 +68,9 @@ class grpc_alts_server_credentials final : public grpc_server_credentials {
~grpc_alts_server_credentials() override;
grpc_core::RefCountedPtr<grpc_server_security_connector>
- create_security_connector(const grpc_channel_args* /* args */) override;
+ create_security_connector(const grpc_core::ChannelArgs& /* args */) override;
+
+ grpc_core::UniqueTypeName type() const override;
const grpc_alts_credentials_options* options() const { return options_; }
grpc_alts_credentials_options* mutable_options() { return options_; }
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc b/contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc
index 118d18d119..c348c0380f 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc
@@ -18,9 +18,7 @@
#include <grpc/support/port_platform.h>
-#include <stdlib.h>
-#include <string.h>
-
+#include <grpc/grpc_security.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc b/contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc
index 72c654211f..7d7c43a29b 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc
@@ -18,11 +18,8 @@
#include <grpc/support/port_platform.h>
-#include <stdlib.h>
-#include <string.h>
-
+#include <grpc/grpc_security.h>
#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
#include "src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h"
#include "src/core/tsi/alts/handshaker/transport_security_common_api.h"
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/call_creds_util.cc b/contrib/libs/grpc/src/core/lib/security/credentials/call_creds_util.cc
index 75079a1256..78363b9122 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/call_creds_util.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/call_creds_util.cc
@@ -18,9 +18,19 @@
#include "src/core/lib/security/credentials/call_creds_util.h"
+#include <string.h>
+
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/string_view.h"
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/security/context/security_context.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
+#include "src/core/lib/transport/metadata_batch.h"
+
namespace grpc_core {
namespace {
@@ -31,7 +41,7 @@ struct ServiceUrlAndMethod {
};
ServiceUrlAndMethod MakeServiceUrlAndMethod(
- const ClientInitialMetadata& initial_metadata,
+ const ClientMetadataHandle& initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs* args) {
auto service =
initial_metadata->get_pointer(HttpPathMetadata())->as_string_view();
@@ -65,13 +75,13 @@ ServiceUrlAndMethod MakeServiceUrlAndMethod(
} // namespace
TString MakeJwtServiceUrl(
- const ClientInitialMetadata& initial_metadata,
+ const ClientMetadataHandle& initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs* args) {
return MakeServiceUrlAndMethod(initial_metadata, args).service_url;
}
grpc_auth_metadata_context MakePluginAuthMetadataContext(
- const ClientInitialMetadata& initial_metadata,
+ const ClientMetadataHandle& initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs* args) {
auto fields = MakeServiceUrlAndMethod(initial_metadata, args);
grpc_auth_metadata_context ctx;
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/call_creds_util.h b/contrib/libs/grpc/src/core/lib/security/credentials/call_creds_util.h
index 5bd62176a2..4009b9b36f 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/call_creds_util.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/call_creds_util.h
@@ -25,17 +25,18 @@
#include <grpc/grpc_security.h>
#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/transport/transport.h"
namespace grpc_core {
// Helper function to construct service URL for jwt call creds.
TString MakeJwtServiceUrl(
- const ClientInitialMetadata& initial_metadata,
+ const ClientMetadataHandle& initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs* args);
// Helper function to construct context for plugin call creds.
grpc_auth_metadata_context MakePluginAuthMetadataContext(
- const ClientInitialMetadata& initial_metadata,
+ const ClientMetadataHandle& initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs* args);
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/channel_creds_registry.h b/contrib/libs/grpc/src/core/lib/security/credentials/channel_creds_registry.h
index b5ff918590..b021db5d18 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/channel_creds_registry.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/channel_creds_registry.h
@@ -19,8 +19,15 @@
#include <grpc/support/port_platform.h>
-#include <grpc/impl/codegen/grpc_types.h>
+#include <map>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <type_traits>
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/json/json.h"
struct grpc_channel_credentials;
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/channel_creds_registry_init.cc b/contrib/libs/grpc/src/core/lib/security/credentials/channel_creds_registry_init.cc
index 6e08f84dae..a54fecbfca 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/channel_creds_registry_init.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/channel_creds_registry_init.cc
@@ -18,10 +18,21 @@
#include <grpc/support/port_platform.h>
+#include <memory>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+
#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/json/json.h"
+#include "src/core/lib/security/credentials/channel_creds_registry.h"
#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/credentials/fake/fake_credentials.h"
+#include "src/core/lib/security/credentials/google_default/google_default_credentials.h" // IWYU pragma: keep
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/composite/composite_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/composite/composite_credentials.cc
index 4bcb31a948..8ffcd64f34 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/composite/composite_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/composite/composite_credentials.cc
@@ -21,41 +21,49 @@
#include "src/core/lib/security/credentials/composite/composite_credentials.h"
#include <cstring>
-#include <new>
#include <vector>
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/polling_entity.h"
#include "src/core/lib/promise/try_seq.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/transport/transport.h"
-namespace grpc_core {
-const char kCredentialsTypeComposite[] = "composite";
-} // namespace grpc_core
+//
+// grpc_composite_channel_credentials
+//
+
+grpc_core::UniqueTypeName grpc_composite_channel_credentials::type() const {
+ static grpc_core::UniqueTypeName::Factory kFactory("Composite");
+ return kFactory.Create();
+}
/* -- Composite call credentials. -- */
-grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
+grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
grpc_composite_call_credentials::GetRequestMetadata(
- grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ClientMetadataHandle initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs* args) {
auto self = Ref();
return TrySeqIter(
inner_.begin(), inner_.end(), std::move(initial_metadata),
[self, args](const grpc_core::RefCountedPtr<grpc_call_credentials>& creds,
- grpc_core::ClientInitialMetadata initial_metadata) {
+ grpc_core::ClientMetadataHandle initial_metadata) {
return creds->GetRequestMetadata(std::move(initial_metadata), args);
});
}
+grpc_core::UniqueTypeName grpc_composite_call_credentials::Type() {
+ static grpc_core::UniqueTypeName::Factory kFactory("Composite");
+ return kFactory.Create();
+}
+
TString grpc_composite_call_credentials::debug_string() {
std::vector<TString> outputs;
for (auto& inner_cred : inner_) {
@@ -89,12 +97,11 @@ void grpc_composite_call_credentials::push_to_inner(
grpc_composite_call_credentials::grpc_composite_call_credentials(
grpc_core::RefCountedPtr<grpc_call_credentials> creds1,
- grpc_core::RefCountedPtr<grpc_call_credentials> creds2)
- : grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_COMPOSITE) {
+ grpc_core::RefCountedPtr<grpc_call_credentials> creds2) {
const bool creds1_is_composite =
- strcmp(creds1->type(), GRPC_CALL_CREDENTIALS_TYPE_COMPOSITE) == 0;
+ creds1->type() == grpc_composite_call_credentials::Type();
const bool creds2_is_composite =
- strcmp(creds2->type(), GRPC_CALL_CREDENTIALS_TYPE_COMPOSITE) == 0;
+ creds2->type() == grpc_composite_call_credentials::Type();
const size_t size = get_creds_array_size(creds1.get(), creds1_is_composite) +
get_creds_array_size(creds2.get(), creds2_is_composite);
inner_.reserve(size);
@@ -137,18 +144,16 @@ grpc_call_credentials* grpc_composite_call_credentials_create(
grpc_core::RefCountedPtr<grpc_channel_security_connector>
grpc_composite_channel_credentials::create_security_connector(
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
- const char* target, const grpc_channel_args* args,
- grpc_channel_args** new_args) {
+ const char* target, grpc_core::ChannelArgs* args) {
GPR_ASSERT(inner_creds_ != nullptr && call_creds_ != nullptr);
/* If we are passed a call_creds, create a call composite to pass it
downstream. */
if (call_creds != nullptr) {
return inner_creds_->create_security_connector(
composite_call_credentials_create(call_creds_, std::move(call_creds)),
- target, args, new_args);
+ target, args);
} else {
- return inner_creds_->create_security_connector(call_creds_, target, args,
- new_args);
+ return inner_creds_->create_security_connector(call_creds_, target, args);
}
}
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/composite/composite_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/composite/composite_credentials.h
index fc58e9d567..c7598bc3a4 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/composite/composite_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/composite/composite_credentials.h
@@ -21,27 +21,35 @@
#include <grpc/support/port_platform.h>
+#include <algorithm>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+#include <vector>
-#include "y_absl/container/inlined_vector.h"
+#include "y_absl/status/statusor.h"
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/grpc_security_constants.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
+#include "src/core/lib/transport/transport.h"
/* -- Composite channel credentials. -- */
-namespace grpc_core {
-extern const char kCredentialsTypeComposite[];
-}
-
class grpc_composite_channel_credentials : public grpc_channel_credentials {
public:
grpc_composite_channel_credentials(
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds)
- : grpc_channel_credentials(grpc_core::kCredentialsTypeComposite),
- inner_creds_(std::move(channel_creds)),
+ : inner_creds_(std::move(channel_creds)),
call_creds_(std::move(call_creds)) {}
~grpc_composite_channel_credentials() override = default;
@@ -54,13 +62,15 @@ class grpc_composite_channel_credentials : public grpc_channel_credentials {
grpc_core::RefCountedPtr<grpc_channel_security_connector>
create_security_connector(
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
- const char* target, const grpc_channel_args* args,
- grpc_channel_args** new_args) override;
+ const char* target, grpc_core::ChannelArgs* args) override;
- grpc_channel_args* update_arguments(grpc_channel_args* args) override {
- return inner_creds_->update_arguments(args);
+ grpc_core::ChannelArgs update_arguments(
+ grpc_core::ChannelArgs args) override {
+ return inner_creds_->update_arguments(std::move(args));
}
+ grpc_core::UniqueTypeName type() const override;
+
const grpc_channel_credentials* inner_creds() const {
return inner_creds_.get();
}
@@ -84,15 +94,15 @@ class grpc_composite_channel_credentials : public grpc_channel_credentials {
class grpc_composite_call_credentials : public grpc_call_credentials {
public:
using CallCredentialsList =
- y_absl::InlinedVector<grpc_core::RefCountedPtr<grpc_call_credentials>, 2>;
+ std::vector<grpc_core::RefCountedPtr<grpc_call_credentials>>;
grpc_composite_call_credentials(
grpc_core::RefCountedPtr<grpc_call_credentials> creds1,
grpc_core::RefCountedPtr<grpc_call_credentials> creds2);
~grpc_composite_call_credentials() override = default;
- grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
const GetRequestMetadataArgs* args) override;
grpc_security_level min_security_level() const override {
@@ -102,6 +112,10 @@ class grpc_composite_call_credentials : public grpc_call_credentials {
const CallCredentialsList& inner() const { return inner_; }
TString debug_string() override;
+ static grpc_core::UniqueTypeName Type();
+
+ grpc_core::UniqueTypeName type() const override { return Type(); }
+
private:
int cmp_impl(const grpc_call_credentials* other) const override {
// TODO(yashykt): Check if we can do something better here
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/credentials.cc
index 0c225794de..986d8adf0e 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/credentials.cc
@@ -20,19 +20,15 @@
#include "src/core/lib/security/credentials/credentials.h"
-#include <stdio.h>
+#include <stdint.h>
#include <string.h>
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
-#include <grpc/support/sync.h>
-#include <grpc/support/time.h>
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/iomgr/executor.h"
-#include "src/core/lib/json/json.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/surface/api_trace.h"
/* -- Common. -- */
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/credentials.h
index 04db53b83c..c72d000193 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/credentials.h
@@ -21,25 +21,29 @@
#include <grpc/support/port_platform.h>
-#include <string.h>
-
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
-#include <grpc/support/sync.h>
+#include <grpc/grpc_security_constants.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/log.h>
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gprpp/ref_counted.h"
-#include "src/core/lib/iomgr/polling_entity.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
#include "src/core/lib/promise/arena_promise.h"
-#include "src/core/lib/security/context/security_context.h"
#include "src/core/lib/security/security_connector/security_connector.h"
-#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/slice/slice.h"
#include "src/core/lib/transport/transport.h"
-struct grpc_http_response;
-
/* --- Constants. --- */
typedef enum {
@@ -49,17 +53,6 @@ typedef enum {
#define GRPC_FAKE_TRANSPORT_SECURITY_TYPE "fake"
-#define GRPC_CHANNEL_CREDENTIALS_TYPE_SSL "Ssl"
-#define GRPC_CHANNEL_CREDENTIALS_TYPE_FAKE_TRANSPORT_SECURITY \
- "FakeTransportSecurity"
-#define GRPC_CHANNEL_CREDENTIALS_TYPE_GOOGLE_DEFAULT "GoogleDefault"
-#define GRPC_CREDENTIALS_TYPE_INSECURE "insecure"
-
-#define GRPC_CALL_CREDENTIALS_TYPE_OAUTH2 "Oauth2"
-#define GRPC_CALL_CREDENTIALS_TYPE_JWT "Jwt"
-#define GRPC_CALL_CREDENTIALS_TYPE_IAM "Iam"
-#define GRPC_CALL_CREDENTIALS_TYPE_COMPOSITE "Composite"
-
#define GRPC_AUTHORIZATION_METADATA_KEY "authorization"
#define GRPC_IAM_AUTHORIZATION_TOKEN_METADATA_KEY \
"x-goog-iam-authorization-token"
@@ -104,22 +97,21 @@ void grpc_override_well_known_credentials_path_getter(
struct grpc_channel_credentials
: grpc_core::RefCounted<grpc_channel_credentials> {
public:
- // The pointer value \a type is used to uniquely identify a creds
- // implementation for down-casting purposes. Every creds implementation should
- // use a unique string instance, which should be returned by all instances of
- // that creds implementation.
- explicit grpc_channel_credentials(const char* type) : type_(type) {}
- ~grpc_channel_credentials() override = default;
+ static y_absl::string_view ChannelArgName() {
+ return GRPC_ARG_CHANNEL_CREDENTIALS;
+ }
- // Creates a security connector for the channel. May also create new channel
- // args for the channel to be used in place of the passed in const args if
- // returned non NULL. In that case the caller is responsible for destroying
- // new_args after channel creation.
+ static int ChannelArgsCompare(const grpc_channel_credentials* args1,
+ const grpc_channel_credentials* args2) {
+ return args1->cmp(args2);
+ }
+
+ // Creates a security connector for the channel. Also updates passed in
+ // channel args for the channel.
virtual grpc_core::RefCountedPtr<grpc_channel_security_connector>
create_security_connector(
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
- const char* target, const grpc_channel_args* args,
- grpc_channel_args** new_args) = 0;
+ const char* target, grpc_core::ChannelArgs* args) = 0;
// Creates a version of the channel credentials without any attached call
// credentials. This can be used in order to open a channel to a non-trusted
@@ -131,10 +123,8 @@ struct grpc_channel_credentials
}
// Allows credentials to optionally modify a parent channel's args.
- // By default, leave channel args as is. The callee takes ownership
- // of the passed-in channel args, and the caller takes ownership
- // of the returned channel args.
- virtual grpc_channel_args* update_arguments(grpc_channel_args* args) {
+ // By default, leave channel args as is.
+ virtual grpc_core::ChannelArgs update_arguments(grpc_core::ChannelArgs args) {
return args;
}
@@ -148,21 +138,21 @@ struct grpc_channel_credentials
// as equal (assuming other channel args match).
int cmp(const grpc_channel_credentials* other) const {
GPR_ASSERT(other != nullptr);
- // Intentionally uses grpc_core::QsortCompare instead of strcmp as a safety
- // against different grpc_channel_credentials types using the same name.
- int r = grpc_core::QsortCompare(type(), other->type());
+ int r = type().Compare(other->type());
if (r != 0) return r;
return cmp_impl(other);
}
- const char* type() const { return type_; }
+ // The pointer value \a type is used to uniquely identify a creds
+ // implementation for down-casting purposes. Every creds implementation should
+ // use a unique string instance, which should be returned by all instances of
+ // that creds implementation.
+ virtual grpc_core::UniqueTypeName type() const = 0;
private:
// Implementation for `cmp` method intended to be overridden by subclasses.
- // Only invoked if `type()` and `other->type()` compare equal as strings.
+ // Only invoked if `type()` and `other->type()` point to the same string.
virtual int cmp_impl(const grpc_channel_credentials* other) const = 0;
-
- const char* type_;
};
// TODO(roth): Once we eliminate insecure builds, find a better way to
@@ -210,15 +200,14 @@ struct grpc_call_credentials
// use a unique string instance, which should be returned by all instances of
// that creds implementation.
explicit grpc_call_credentials(
- const char* type,
grpc_security_level min_security_level = GRPC_PRIVACY_AND_INTEGRITY)
- : type_(type), min_security_level_(min_security_level) {}
+ : min_security_level_(min_security_level) {}
~grpc_call_credentials() override = default;
virtual grpc_core::ArenaPromise<
- y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
+ y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
const GetRequestMetadataArgs* args) = 0;
virtual grpc_security_level min_security_level() const {
@@ -230,9 +219,7 @@ struct grpc_call_credentials
// credentials as effectively the same..
int cmp(const grpc_call_credentials* other) const {
GPR_ASSERT(other != nullptr);
- // Intentionally uses grpc_core::QsortCompare instead of strcmp as a safety
- // against different grpc_call_credentials types using the same name.
- int r = grpc_core::QsortCompare(type(), other->type());
+ int r = type().Compare(other->type());
if (r != 0) return r;
return cmp_impl(other);
}
@@ -241,14 +228,17 @@ struct grpc_call_credentials
return "grpc_call_credentials did not provide debug string";
}
- const char* type() const { return type_; }
+ // The pointer value \a type is used to uniquely identify a creds
+ // implementation for down-casting purposes. Every creds implementation should
+ // use a unique string instance, which should be returned by all instances of
+ // that creds implementation.
+ virtual grpc_core::UniqueTypeName type() const = 0;
private:
// Implementation for `cmp` method intended to be overridden by subclasses.
- // Only invoked if `type()` and `other->type()` compare equal as strings.
+ // Only invoked if `type()` and `other->type()` point to the same string.
virtual int cmp_impl(const grpc_call_credentials* other) const = 0;
- const char* type_;
const grpc_security_level min_security_level_;
};
@@ -259,21 +249,30 @@ grpc_call_credentials* grpc_md_only_test_credentials_create(
/* --- grpc_server_credentials. --- */
+#define GRPC_SERVER_CREDENTIALS_ARG "grpc.internal.server_credentials"
+
// This type is forward declared as a C struct and we cannot define it as a
// class. Otherwise, compiler will complain about type mismatch due to
// -Wmismatched-tags.
struct grpc_server_credentials
: public grpc_core::RefCounted<grpc_server_credentials> {
public:
- explicit grpc_server_credentials(const char* type) : type_(type) {}
-
~grpc_server_credentials() override { DestroyProcessor(); }
+ static y_absl::string_view ChannelArgName() {
+ return GRPC_SERVER_CREDENTIALS_ARG;
+ }
+
+ static int ChannelArgsCompare(const grpc_server_credentials* a,
+ const grpc_server_credentials* b) {
+ return grpc_core::QsortCompare(a, b);
+ }
+
// Ownership of \a args is not passed.
virtual grpc_core::RefCountedPtr<grpc_server_security_connector>
- create_security_connector(const grpc_channel_args* args) = 0;
+ create_security_connector(const grpc_core::ChannelArgs& args) = 0;
- const char* type() const { return type_; }
+ virtual grpc_core::UniqueTypeName type() const = 0;
const grpc_auth_metadata_processor& auth_metadata_processor() const {
return processor_;
@@ -288,13 +287,10 @@ struct grpc_server_credentials
}
}
- const char* type_;
grpc_auth_metadata_processor processor_ =
grpc_auth_metadata_processor(); // Zero-initialize the C struct.
};
-#define GRPC_SERVER_CREDENTIALS_ARG "grpc.server_credentials"
-
grpc_arg grpc_server_credentials_to_arg(grpc_server_credentials* c);
grpc_server_credentials* grpc_server_credentials_from_arg(const grpc_arg* arg);
grpc_server_credentials* grpc_find_server_credentials_in_args(
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_external_account_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_external_account_credentials.cc
index d04e6ee49a..17a09d3ad3 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_external_account_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_external_account_credentials.cc
@@ -17,12 +17,32 @@
#include "src/core/lib/security/credentials/external/aws_external_account_credentials.h"
+#include <string.h>
+
+#include <map>
+#include <utility>
+
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
-#include "y_absl/strings/str_join.h"
#include "y_absl/strings/str_replace.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
-#include "src/core/lib/gpr/env.h"
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+
+#include "src/core/lib/gprpp/env.h"
#include "src/core/lib/http/httpcli_ssl_credentials.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
@@ -62,7 +82,7 @@ AwsExternalAccountCredentials::Create(Options options,
grpc_error_handle* error) {
auto creds = MakeRefCounted<AwsExternalAccountCredentials>(
std::move(options), std::move(scopes), error);
- if (*error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(*error)) {
return creds;
} else {
return nullptr;
@@ -119,6 +139,12 @@ AwsExternalAccountCredentials::AwsExternalAccountCredentials(
return;
}
regional_cred_verification_url_ = it->second.string_value();
+ it =
+ options.credential_source.object_value().find("imdsv2_session_token_url");
+ if (it != options.credential_source.object_value().end() &&
+ it->second.type() == Json::Type::STRING) {
+ imdsv2_session_token_url_ = it->second.string_value();
+ }
}
void AwsExternalAccountCredentials::RetrieveSubjectToken(
@@ -133,6 +159,62 @@ void AwsExternalAccountCredentials::RetrieveSubjectToken(
}
ctx_ = ctx;
cb_ = cb;
+ if (!imdsv2_session_token_url_.empty()) {
+ RetrieveImdsV2SessionToken();
+ } else if (signer_ != nullptr) {
+ BuildSubjectToken();
+ } else {
+ RetrieveRegion();
+ }
+}
+
+void AwsExternalAccountCredentials::RetrieveImdsV2SessionToken() {
+ y_absl::StatusOr<URI> uri = URI::Parse(imdsv2_session_token_url_);
+ if (!uri.ok()) {
+ return;
+ }
+ grpc_http_header* headers =
+ static_cast<grpc_http_header*>(gpr_malloc(sizeof(grpc_http_header)));
+ headers[0].key = gpr_strdup("x-aws-ec2-metadata-token-ttl-seconds");
+ headers[0].value = gpr_strdup("300");
+ grpc_http_request request;
+ memset(&request, 0, sizeof(grpc_http_request));
+ request.hdr_count = 1;
+ request.hdrs = headers;
+ grpc_http_response_destroy(&ctx_->response);
+ ctx_->response = {};
+ GRPC_CLOSURE_INIT(&ctx_->closure, OnRetrieveImdsV2SessionToken, this,
+ nullptr);
+ RefCountedPtr<grpc_channel_credentials> http_request_creds;
+ if (uri->scheme() == "http") {
+ http_request_creds = RefCountedPtr<grpc_channel_credentials>(
+ grpc_insecure_credentials_create());
+ } else {
+ http_request_creds = CreateHttpRequestSSLCredentials();
+ }
+ http_request_ =
+ HttpRequest::Put(std::move(*uri), nullptr /* channel args */,
+ ctx_->pollent, &request, ctx_->deadline, &ctx_->closure,
+ &ctx_->response, std::move(http_request_creds));
+ http_request_->Start();
+ grpc_http_request_destroy(&request);
+}
+
+void AwsExternalAccountCredentials::OnRetrieveImdsV2SessionToken(
+ void* arg, grpc_error_handle error) {
+ AwsExternalAccountCredentials* self =
+ static_cast<AwsExternalAccountCredentials*>(arg);
+ self->OnRetrieveImdsV2SessionTokenInternal(GRPC_ERROR_REF(error));
+}
+
+void AwsExternalAccountCredentials::OnRetrieveImdsV2SessionTokenInternal(
+ grpc_error_handle error) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ FinishRetrieveSubjectToken("", error);
+ return;
+ }
+ imdsv2_session_token_ =
+ TString(ctx_->response.body, ctx_->response.body_length);
if (signer_ != nullptr) {
BuildSubjectToken();
} else {
@@ -140,13 +222,27 @@ void AwsExternalAccountCredentials::RetrieveSubjectToken(
}
}
+void AwsExternalAccountCredentials::AddMetadataRequestHeaders(
+ grpc_http_request* request) {
+ if (!imdsv2_session_token_.empty()) {
+ GPR_ASSERT(request->hdr_count == 0);
+ GPR_ASSERT(request->hdrs == nullptr);
+ grpc_http_header* headers =
+ static_cast<grpc_http_header*>(gpr_malloc(sizeof(grpc_http_header)));
+ headers[0].key = gpr_strdup("x-aws-ec2-metadata-token");
+ headers[0].value = gpr_strdup(imdsv2_session_token_.c_str());
+ request->hdr_count = 1;
+ request->hdrs = headers;
+ }
+}
+
void AwsExternalAccountCredentials::RetrieveRegion() {
- UniquePtr<char> region_from_env(gpr_getenv(kRegionEnvVar));
- if (region_from_env == nullptr) {
- region_from_env = UniquePtr<char>(gpr_getenv(kDefaultRegionEnvVar));
+ auto region_from_env = GetEnv(kRegionEnvVar);
+ if (!region_from_env.has_value()) {
+ region_from_env = GetEnv(kDefaultRegionEnvVar);
}
- if (region_from_env != nullptr) {
- region_ = TString(region_from_env.get());
+ if (region_from_env.has_value()) {
+ region_ = std::move(*region_from_env);
if (url_.empty()) {
RetrieveSigningKeys();
} else {
@@ -165,6 +261,7 @@ void AwsExternalAccountCredentials::RetrieveRegion() {
memset(&request, 0, sizeof(grpc_http_request));
grpc_http_response_destroy(&ctx_->response);
ctx_->response = {};
+ AddMetadataRequestHeaders(&request);
GRPC_CLOSURE_INIT(&ctx_->closure, OnRetrieveRegion, this, nullptr);
RefCountedPtr<grpc_channel_credentials> http_request_creds;
if (uri->scheme() == "http") {
@@ -190,7 +287,7 @@ void AwsExternalAccountCredentials::OnRetrieveRegion(void* arg,
void AwsExternalAccountCredentials::OnRetrieveRegionInternal(
grpc_error_handle error) {
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
FinishRetrieveSubjectToken("", error);
return;
}
@@ -217,6 +314,7 @@ void AwsExternalAccountCredentials::RetrieveRoleName() {
memset(&request, 0, sizeof(grpc_http_request));
grpc_http_response_destroy(&ctx_->response);
ctx_->response = {};
+ AddMetadataRequestHeaders(&request);
GRPC_CLOSURE_INIT(&ctx_->closure, OnRetrieveRoleName, this, nullptr);
// TODO(ctiller): use the caller's resource quota.
RefCountedPtr<grpc_channel_credentials> http_request_creds;
@@ -243,7 +341,7 @@ void AwsExternalAccountCredentials::OnRetrieveRoleName(
void AwsExternalAccountCredentials::OnRetrieveRoleNameInternal(
grpc_error_handle error) {
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
FinishRetrieveSubjectToken("", error);
return;
}
@@ -252,15 +350,14 @@ void AwsExternalAccountCredentials::OnRetrieveRoleNameInternal(
}
void AwsExternalAccountCredentials::RetrieveSigningKeys() {
- UniquePtr<char> access_key_id_from_env(gpr_getenv(kAccessKeyIdEnvVar));
- UniquePtr<char> secret_access_key_from_env(
- gpr_getenv(kSecretAccessKeyEnvVar));
- UniquePtr<char> token_from_env(gpr_getenv(kSessionTokenEnvVar));
- if (access_key_id_from_env != nullptr &&
- secret_access_key_from_env != nullptr && token_from_env != nullptr) {
- access_key_id_ = TString(access_key_id_from_env.get());
- secret_access_key_ = TString(secret_access_key_from_env.get());
- token_ = TString(token_from_env.get());
+ auto access_key_id_from_env = GetEnv(kAccessKeyIdEnvVar);
+ auto secret_access_key_from_env = GetEnv(kSecretAccessKeyEnvVar);
+ auto token_from_env = GetEnv(kSessionTokenEnvVar);
+ if (access_key_id_from_env.has_value() &&
+ secret_access_key_from_env.has_value() && token_from_env.has_value()) {
+ access_key_id_ = std::move(*access_key_id_from_env);
+ secret_access_key_ = std::move(*secret_access_key_from_env);
+ token_ = std::move(*token_from_env);
BuildSubjectToken();
return;
}
@@ -282,6 +379,7 @@ void AwsExternalAccountCredentials::RetrieveSigningKeys() {
memset(&request, 0, sizeof(grpc_http_request));
grpc_http_response_destroy(&ctx_->response);
ctx_->response = {};
+ AddMetadataRequestHeaders(&request);
GRPC_CLOSURE_INIT(&ctx_->closure, OnRetrieveSigningKeys, this, nullptr);
// TODO(ctiller): use the caller's resource quota.
RefCountedPtr<grpc_channel_credentials> http_request_creds;
@@ -308,22 +406,29 @@ void AwsExternalAccountCredentials::OnRetrieveSigningKeys(
void AwsExternalAccountCredentials::OnRetrieveSigningKeysInternal(
grpc_error_handle error) {
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
FinishRetrieveSubjectToken("", error);
return;
}
y_absl::string_view response_body(ctx_->response.body,
ctx_->response.body_length);
- Json json = Json::Parse(response_body, &error);
- if (error != GRPC_ERROR_NONE || json.type() != Json::Type::OBJECT) {
+ auto json = Json::Parse(response_body);
+ if (!json.ok()) {
FinishRetrieveSubjectToken(
- "", GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
- "Invalid retrieve signing keys response.", &error, 1));
- GRPC_ERROR_UNREF(error);
+ "", GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ y_absl::StrCat("Invalid retrieve signing keys response: ",
+ json.status().ToString())));
+ return;
+ }
+ if (json->type() != Json::Type::OBJECT) {
+ FinishRetrieveSubjectToken("",
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Invalid retrieve signing keys response: "
+ "JSON type is not object"));
return;
}
- auto it = json.object_value().find("AccessKeyId");
- if (it != json.object_value().end() &&
+ auto it = json->object_value().find("AccessKeyId");
+ if (it != json->object_value().end() &&
it->second.type() == Json::Type::STRING) {
access_key_id_ = it->second.string_value();
} else {
@@ -332,8 +437,8 @@ void AwsExternalAccountCredentials::OnRetrieveSigningKeysInternal(
"Missing or invalid AccessKeyId in %s.", response_body)));
return;
}
- it = json.object_value().find("SecretAccessKey");
- if (it != json.object_value().end() &&
+ it = json->object_value().find("SecretAccessKey");
+ if (it != json->object_value().end() &&
it->second.type() == Json::Type::STRING) {
secret_access_key_ = it->second.string_value();
} else {
@@ -342,8 +447,8 @@ void AwsExternalAccountCredentials::OnRetrieveSigningKeysInternal(
"Missing or invalid SecretAccessKey in %s.", response_body)));
return;
}
- it = json.object_value().find("Token");
- if (it != json.object_value().end() &&
+ it = json->object_value().find("Token");
+ if (it != json->object_value().end() &&
it->second.type() == Json::Type::STRING) {
token_ = it->second.string_value();
} else {
@@ -364,7 +469,7 @@ void AwsExternalAccountCredentials::BuildSubjectToken() {
access_key_id_, secret_access_key_, token_, "POST",
cred_verification_url_, region_, "",
std::map<TString, TString>(), &error);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
FinishRetrieveSubjectToken(
"", GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Creating aws request signer failed.", &error, 1));
@@ -373,7 +478,7 @@ void AwsExternalAccountCredentials::BuildSubjectToken() {
}
}
auto signed_headers = signer_->GetSignedRequestHeaders();
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
FinishRetrieveSubjectToken("",
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Invalid getting signed request"
@@ -409,7 +514,7 @@ void AwsExternalAccountCredentials::FinishRetrieveSubjectToken(
auto cb = cb_;
cb_ = nullptr;
// Invoke the callback.
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
cb("", error);
} else {
cb(subject_token, GRPC_ERROR_NONE);
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_external_account_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_external_account_credentials.h
index a5ddc7741f..5a633ee449 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_external_account_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_external_account_credentials.h
@@ -19,6 +19,17 @@
#include <grpc/support/port_platform.h>
+#include <functional>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/http/httpcli.h"
+#include "src/core/lib/http/parser.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/security/credentials/external/aws_request_signer.h"
#include "src/core/lib/security/credentials/external/external_account_credentials.h"
@@ -43,6 +54,10 @@ class AwsExternalAccountCredentials final : public ExternalAccountCredentials {
static void OnRetrieveRegion(void* arg, grpc_error_handle error);
void OnRetrieveRegionInternal(grpc_error_handle error);
+ void RetrieveImdsV2SessionToken();
+ static void OnRetrieveImdsV2SessionToken(void* arg, grpc_error_handle error);
+ void OnRetrieveImdsV2SessionTokenInternal(grpc_error_handle error);
+
void RetrieveRoleName();
static void OnRetrieveRoleName(void* arg, grpc_error_handle error);
void OnRetrieveRoleNameInternal(grpc_error_handle error);
@@ -55,6 +70,8 @@ class AwsExternalAccountCredentials final : public ExternalAccountCredentials {
void FinishRetrieveSubjectToken(TString subject_token,
grpc_error_handle error);
+ void AddMetadataRequestHeaders(grpc_http_request* request);
+
TString audience_;
OrphanablePtr<HttpRequest> http_request_;
@@ -62,6 +79,7 @@ class AwsExternalAccountCredentials final : public ExternalAccountCredentials {
TString region_url_;
TString url_;
TString regional_cred_verification_url_;
+ TString imdsv2_session_token_url_;
// Information required by request signer
TString region_;
@@ -69,6 +87,7 @@ class AwsExternalAccountCredentials final : public ExternalAccountCredentials {
TString access_key_id_;
TString secret_access_key_;
TString token_;
+ TString imdsv2_session_token_;
std::unique_ptr<AwsRequestSigner> signer_;
TString cred_verification_url_;
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_request_signer.cc b/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_request_signer.cc
index d2b6701e6f..948cdcd315 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_request_signer.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/external/aws_request_signer.cc
@@ -17,14 +17,23 @@
#include "src/core/lib/security/credentials/external/aws_request_signer.h"
+#include <algorithm>
+#include <utility>
+#include <vector>
+
+#include <openssl/crypto.h>
+#include <openssl/evp.h>
#include <openssl/hmac.h>
#include <openssl/sha.h>
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/ascii.h"
#include "y_absl/strings/escaping.h"
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
#include "y_absl/strings/str_split.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/time/clock.h"
#include "y_absl/time/time.h"
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/external/external_account_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/external/external_account_credentials.cc
index c4ac89a604..93a5519aed 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/external/external_account_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/external/external_account_credentials.cc
@@ -13,11 +13,23 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//
+
#include <grpc/support/port_platform.h>
#include "src/core/lib/security/credentials/external/external_account_credentials.h"
+#include <stdint.h>
+#include <string.h>
+
+#include <algorithm>
+#include <map>
+#include <memory>
+#include <utility>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/match.h"
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
#include "y_absl/strings/str_split.h"
@@ -25,13 +37,21 @@
#include "y_absl/time/clock.h"
#include "y_absl/time/time.h"
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
+
#include "src/core/lib/http/httpcli_ssl_credentials.h"
#include "src/core/lib/http/parser.h"
+#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/credentials/external/aws_external_account_credentials.h"
#include "src/core/lib/security/credentials/external/file_external_account_credentials.h"
#include "src/core/lib/security/credentials/external/url_external_account_credentials.h"
#include "src/core/lib/security/util/json_util.h"
#include "src/core/lib/slice/b64.h"
+#include "src/core/lib/uri/uri_parser.h"
#define EXTERNAL_ACCOUNT_CREDENTIALS_GRANT_TYPE \
"urn:ietf:params:oauth:grant-type:token-exchange"
@@ -84,7 +104,7 @@ bool MatchWorkforcePoolAudience(y_absl::string_view audience) {
RefCountedPtr<ExternalAccountCredentials> ExternalAccountCredentials::Create(
const Json& json, std::vector<TString> scopes,
grpc_error_handle* error) {
- GPR_ASSERT(*error == GRPC_ERROR_NONE);
+ GPR_ASSERT(GRPC_ERROR_IS_NONE(*error));
Options options;
options.type = GRPC_AUTH_JSON_TYPE_INVALID;
if (json.type() != Json::Type::OBJECT) {
@@ -200,7 +220,7 @@ RefCountedPtr<ExternalAccountCredentials> ExternalAccountCredentials::Create(
"Invalid options credential source to create "
"ExternalAccountCredentials.");
}
- if (*error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(*error)) {
return creds;
} else {
return nullptr;
@@ -252,7 +272,7 @@ void ExternalAccountCredentials::fetch_oauth2(
void ExternalAccountCredentials::OnRetrieveSubjectTokenInternal(
y_absl::string_view subject_token, grpc_error_handle error) {
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
FinishTokenFetch(error);
} else {
ExchangeToken(subject_token);
@@ -352,7 +372,7 @@ void ExternalAccountCredentials::OnExchangeToken(void* arg,
void ExternalAccountCredentials::OnExchangeTokenInternal(
grpc_error_handle error) {
http_request_.reset();
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
FinishTokenFetch(error);
} else {
if (options_.service_account_impersonation_url.empty()) {
@@ -375,18 +395,21 @@ void ExternalAccountCredentials::OnExchangeTokenInternal(
}
void ExternalAccountCredentials::ImpersenateServiceAccount() {
- grpc_error_handle error = GRPC_ERROR_NONE;
y_absl::string_view response_body(ctx_->response.body,
ctx_->response.body_length);
- Json json = Json::Parse(response_body, &error);
- if (error != GRPC_ERROR_NONE || json.type() != Json::Type::OBJECT) {
- FinishTokenFetch(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
- "Invalid token exchange response.", &error, 1));
- GRPC_ERROR_UNREF(error);
+ auto json = Json::Parse(response_body);
+ if (!json.ok()) {
+ FinishTokenFetch(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
+ "Invalid token exchange response: ", json.status().ToString())));
+ return;
+ }
+ if (json->type() != Json::Type::OBJECT) {
+ FinishTokenFetch(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Invalid token exchange response: JSON type is not object"));
return;
}
- auto it = json.object_value().find("access_token");
- if (it == json.object_value().end() ||
+ auto it = json->object_value().find("access_token");
+ if (it == json->object_value().end() ||
it->second.type() != Json::Type::STRING) {
FinishTokenFetch(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrFormat(
"Missing or invalid access_token in %s.", response_body)));
@@ -446,29 +469,35 @@ void ExternalAccountCredentials::OnImpersenateServiceAccount(
void ExternalAccountCredentials::OnImpersenateServiceAccountInternal(
grpc_error_handle error) {
http_request_.reset();
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
FinishTokenFetch(error);
return;
}
y_absl::string_view response_body(ctx_->response.body,
ctx_->response.body_length);
- Json json = Json::Parse(response_body, &error);
- if (error != GRPC_ERROR_NONE || json.type() != Json::Type::OBJECT) {
- FinishTokenFetch(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
- "Invalid service account impersonation response.", &error, 1));
- GRPC_ERROR_UNREF(error);
+ auto json = Json::Parse(response_body);
+ if (!json.ok()) {
+ FinishTokenFetch(GRPC_ERROR_CREATE_FROM_CPP_STRING(
+ y_absl::StrCat("Invalid service account impersonation response: ",
+ json.status().ToString())));
+ return;
+ }
+ if (json->type() != Json::Type::OBJECT) {
+ FinishTokenFetch(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Invalid service account impersonation response: "
+ "JSON type is not object"));
return;
}
- auto it = json.object_value().find("accessToken");
- if (it == json.object_value().end() ||
+ auto it = json->object_value().find("accessToken");
+ if (it == json->object_value().end() ||
it->second.type() != Json::Type::STRING) {
FinishTokenFetch(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrFormat(
"Missing or invalid accessToken in %s.", response_body)));
return;
}
TString access_token = it->second.string_value();
- it = json.object_value().find("expireTime");
- if (it == json.object_value().end() ||
+ it = json->object_value().find("expireTime");
+ if (it == json->object_value().end() ||
it->second.type() != Json::Type::STRING) {
FinishTokenFetch(GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrFormat(
"Missing or invalid expireTime in %s.", response_body)));
@@ -481,7 +510,7 @@ void ExternalAccountCredentials::OnImpersenateServiceAccountInternal(
"Invalid expire time of service account impersonation response."));
return;
}
- int expire_in = (t - y_absl::Now()) / y_absl::Seconds(1);
+ int64_t expire_in = (t - y_absl::Now()) / y_absl::Seconds(1);
TString body = y_absl::StrFormat(
"{\"access_token\":\"%s\",\"expires_in\":%d,\"token_type\":\"Bearer\"}",
access_token, expire_in);
@@ -520,20 +549,19 @@ void ExternalAccountCredentials::FinishTokenFetch(grpc_error_handle error) {
grpc_call_credentials* grpc_external_account_credentials_create(
const char* json_string, const char* scopes_string) {
- grpc_error_handle error = GRPC_ERROR_NONE;
- grpc_core::Json json = grpc_core::Json::Parse(json_string, &error);
- if (error != GRPC_ERROR_NONE) {
+ auto json = grpc_core::Json::Parse(json_string);
+ if (!json.ok()) {
gpr_log(GPR_ERROR,
"External account credentials creation failed. Error: %s.",
- grpc_error_std_string(error).c_str());
- GRPC_ERROR_UNREF(error);
+ json.status().ToString().c_str());
return nullptr;
}
std::vector<TString> scopes = y_absl::StrSplit(scopes_string, ',');
+ grpc_error_handle error = GRPC_ERROR_NONE;
auto creds = grpc_core::ExternalAccountCredentials::Create(
- json, std::move(scopes), &error)
+ *json, std::move(scopes), &error)
.release();
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_ERROR,
"External account credentials creation failed. Error: %s.",
grpc_error_std_string(error).c_str());
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/external/external_account_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/external/external_account_credentials.h
index 8bd552524d..20cabfa720 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/external/external_account_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/external/external_account_credentials.h
@@ -19,10 +19,21 @@
#include <grpc/support/port_platform.h>
+#include <functional>
#include <util/generic/string.h>
#include <util/string/cast.h>
#include <vector>
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/http/httpcli.h"
+#include "src/core/lib/http/parser.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/polling_entity.h"
#include "src/core/lib/json/json.h"
#include "src/core/lib/security/credentials/oauth2/oauth2_credentials.h"
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/external/file_external_account_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/external/file_external_account_credentials.cc
index b60e82bcee..8f21080536 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/external/file_external_account_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/external/file_external_account_credentials.cc
@@ -17,10 +17,18 @@
#include "src/core/lib/security/credentials/external/file_external_account_credentials.h"
-#include <fstream>
+#include <map>
+#include <utility>
+
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/slice.h>
#include "src/core/lib/iomgr/load_file.h"
+#include "src/core/lib/json/json.h"
#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
namespace grpc_core {
@@ -30,7 +38,7 @@ FileExternalAccountCredentials::Create(Options options,
grpc_error_handle* error) {
auto creds = MakeRefCounted<FileExternalAccountCredentials>(
std::move(options), std::move(scopes), error);
- if (*error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(*error)) {
return creds;
} else {
return nullptr;
@@ -101,22 +109,21 @@ void FileExternalAccountCredentials::RetrieveSubjectToken(
// request because it may have changed since the last request.
grpc_error_handle error =
grpc_load_file(file_.c_str(), 0, &content_slice.slice);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
cb("", error);
return;
}
y_absl::string_view content = StringViewFromSlice(content_slice.slice);
if (format_type_ == "json") {
- Json content_json = Json::Parse(content, &error);
- if (error != GRPC_ERROR_NONE || content_json.type() != Json::Type::OBJECT) {
+ auto content_json = Json::Parse(content);
+ if (!content_json.ok() || content_json->type() != Json::Type::OBJECT) {
cb("", GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"The content of the file is not a valid json object."));
- GRPC_ERROR_UNREF(error);
return;
}
auto content_it =
- content_json.object_value().find(format_subject_token_field_name_);
- if (content_it == content_json.object_value().end()) {
+ content_json->object_value().find(format_subject_token_field_name_);
+ if (content_it == content_json->object_value().end()) {
cb("", GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Subject token field not present."));
return;
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/external/file_external_account_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/external/file_external_account_credentials.h
index cd0772bae9..523ea47b45 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/external/file_external_account_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/external/file_external_account_credentials.h
@@ -19,6 +19,13 @@
#include <grpc/support/port_platform.h>
+#include <functional>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/security/credentials/external/external_account_credentials.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/external/url_external_account_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/external/url_external_account_credentials.cc
index a8316c49ed..9b1426c925 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/external/url_external_account_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/external/url_external_account_credentials.cc
@@ -17,11 +17,29 @@
#include "src/core/lib/security/credentials/external/url_external_account_credentials.h"
+#include <string.h>
+
+#include <memory>
+#include <utility>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_split.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include <grpc/support/string_util.h>
#include "src/core/lib/http/httpcli_ssl_credentials.h"
+#include "src/core/lib/http/parser.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/json/json.h"
+#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/transport/error_utils.h"
namespace grpc_core {
@@ -32,7 +50,7 @@ UrlExternalAccountCredentials::Create(Options options,
grpc_error_handle* error) {
auto creds = MakeRefCounted<UrlExternalAccountCredentials>(
std::move(options), std::move(scopes), error);
- if (*error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(*error)) {
return creds;
} else {
return nullptr;
@@ -177,25 +195,23 @@ void UrlExternalAccountCredentials::OnRetrieveSubjectToken(
void UrlExternalAccountCredentials::OnRetrieveSubjectTokenInternal(
grpc_error_handle error) {
http_request_.reset();
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
FinishRetrieveSubjectToken("", error);
return;
}
y_absl::string_view response_body(ctx_->response.body,
ctx_->response.body_length);
if (format_type_ == "json") {
- grpc_error_handle error = GRPC_ERROR_NONE;
- Json response_json = Json::Parse(response_body, &error);
- if (error != GRPC_ERROR_NONE ||
- response_json.type() != Json::Type::OBJECT) {
+ auto response_json = Json::Parse(response_body);
+ if (!response_json.ok() || response_json->type() != Json::Type::OBJECT) {
FinishRetrieveSubjectToken(
"", GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"The format of response is not a valid json object."));
return;
}
auto response_it =
- response_json.object_value().find(format_subject_token_field_name_);
- if (response_it == response_json.object_value().end()) {
+ response_json->object_value().find(format_subject_token_field_name_);
+ if (response_it == response_json->object_value().end()) {
FinishRetrieveSubjectToken("", GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Subject token field not present."));
return;
@@ -220,7 +236,7 @@ void UrlExternalAccountCredentials::FinishRetrieveSubjectToken(
auto cb = cb_;
cb_ = nullptr;
// Invoke the callback.
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
cb("", error);
} else {
cb(subject_token, GRPC_ERROR_NONE);
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/external/url_external_account_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/external/url_external_account_credentials.h
index 743335c4e0..3e29047ce3 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/external/url_external_account_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/external/url_external_account_credentials.h
@@ -19,7 +19,18 @@
#include <grpc/support/port_platform.h>
+#include <functional>
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/http/httpcli.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/security/credentials/external/external_account_credentials.h"
+#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/fake/fake_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/fake/fake_credentials.cc
index 2968989139..b23260b81f 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/fake/fake_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/fake/fake_credentials.cc
@@ -20,35 +20,36 @@
#include "src/core/lib/security/credentials/fake/fake_credentials.h"
-#include <string.h>
+#include <stdlib.h>
-#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
+#include <utility>
+
+#include "y_absl/strings/string_view.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/iomgr/executor.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/promise/promise.h"
#include "src/core/lib/security/security_connector/fake/fake_security_connector.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
+#include "src/core/lib/transport/metadata_batch.h"
/* -- Fake transport security credentials. -- */
namespace {
+
class grpc_fake_channel_credentials final : public grpc_channel_credentials {
public:
- grpc_fake_channel_credentials()
- : grpc_channel_credentials(
- GRPC_CHANNEL_CREDENTIALS_TYPE_FAKE_TRANSPORT_SECURITY) {}
- ~grpc_fake_channel_credentials() override = default;
-
grpc_core::RefCountedPtr<grpc_channel_security_connector>
create_security_connector(
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
- const char* target, const grpc_channel_args* args,
- grpc_channel_args** /*new_args*/) override {
+ const char* target, grpc_core::ChannelArgs* args) override {
return grpc_fake_channel_security_connector_create(
- this->Ref(), std::move(call_creds), target, args);
+ this->Ref(), std::move(call_creds), target, *args);
+ }
+
+ grpc_core::UniqueTypeName type() const override {
+ static grpc_core::UniqueTypeName::Factory kFactory("Fake");
+ return kFactory.Create();
}
private:
@@ -61,15 +62,15 @@ class grpc_fake_channel_credentials final : public grpc_channel_credentials {
class grpc_fake_server_credentials final : public grpc_server_credentials {
public:
- grpc_fake_server_credentials()
- : grpc_server_credentials(
- GRPC_CHANNEL_CREDENTIALS_TYPE_FAKE_TRANSPORT_SECURITY) {}
- ~grpc_fake_server_credentials() override = default;
-
grpc_core::RefCountedPtr<grpc_server_security_connector>
- create_security_connector(const grpc_channel_args* /*args*/) override {
+ create_security_connector(const grpc_core::ChannelArgs& /*args*/) override {
return grpc_fake_server_security_connector_create(this->Ref());
}
+
+ grpc_core::UniqueTypeName type() const override {
+ static grpc_core::UniqueTypeName::Factory kFactory("Fake");
+ return kFactory.Create();
+ }
};
} // namespace
@@ -88,18 +89,11 @@ grpc_arg grpc_fake_transport_expected_targets_arg(char* expected_targets) {
expected_targets);
}
-const char* grpc_fake_transport_get_expected_targets(
- const grpc_channel_args* args) {
- const grpc_arg* expected_target_arg =
- grpc_channel_args_find(args, GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS);
- return grpc_channel_arg_get_string(expected_target_arg);
-}
-
/* -- Metadata-only test credentials. -- */
-grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
+grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
grpc_md_only_test_credentials::GetRequestMetadata(
- grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ClientMetadataHandle initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs*) {
initial_metadata->Append(
key_.as_string_view(), value_.Ref(),
@@ -107,6 +101,11 @@ grpc_md_only_test_credentials::GetRequestMetadata(
return grpc_core::Immediate(std::move(initial_metadata));
}
+grpc_core::UniqueTypeName grpc_md_only_test_credentials::Type() {
+ static grpc_core::UniqueTypeName::Factory kFactory("MdOnlyTest");
+ return kFactory.Create();
+}
+
grpc_call_credentials* grpc_md_only_test_credentials_create(
const char* md_key, const char* md_value) {
return new grpc_md_only_test_credentials(md_key, md_value);
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/fake/fake_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/fake/fake_credentials.h
index 465362daf0..59c6247a16 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/fake/fake_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/fake/fake_credentials.h
@@ -21,9 +21,22 @@
#include <grpc/support/port_platform.h>
-#include <string.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include "y_absl/status/statusor.h"
+
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/grpc_security_constants.h>
+#include <grpc/impl/codegen/grpc_types.h>
+
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/transport/transport.h"
#define GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS \
"grpc.fake_security.expected_targets"
@@ -51,25 +64,24 @@ grpc_server_credentials* grpc_fake_transport_security_server_credentials_create(
* latter is present. */
grpc_arg grpc_fake_transport_expected_targets_arg(char* expected_targets);
-/* Return the value associated with the expected targets channel arg or NULL */
-const char* grpc_fake_transport_get_expected_targets(
- const grpc_channel_args* args);
-
/* -- Metadata-only Test credentials. -- */
class grpc_md_only_test_credentials : public grpc_call_credentials {
public:
grpc_md_only_test_credentials(const char* md_key, const char* md_value)
- : grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_OAUTH2,
- GRPC_SECURITY_NONE),
+ : grpc_call_credentials(GRPC_SECURITY_NONE),
key_(grpc_core::Slice::FromCopiedString(md_key)),
value_(grpc_core::Slice::FromCopiedString(md_value)) {}
- grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
const GetRequestMetadataArgs* args) override;
- TString debug_string() override { return "MD only Test Credentials"; };
+ TString debug_string() override { return "MD only Test Credentials"; }
+
+ static grpc_core::UniqueTypeName Type();
+
+ grpc_core::UniqueTypeName type() const override { return Type(); }
private:
int cmp_impl(const grpc_call_credentials* other) const override {
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/google_default/credentials_generic.cc b/contrib/libs/grpc/src/core/lib/security/credentials/google_default/credentials_generic.cc
index 91c5062475..84a1813d17 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/google_default/credentials_generic.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/google_default/credentials_generic.cc
@@ -22,22 +22,20 @@
#include <util/string/cast.h>
#include "y_absl/strings/str_cat.h"
+#include "y_absl/types/optional.h"
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include "src/core/lib/gpr/env.h"
+#include "src/core/lib/gprpp/env.h"
+#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/credentials/google_default/google_default_credentials.h"
TString grpc_get_well_known_google_credentials_file_path_impl(void) {
- char* base = gpr_getenv(GRPC_GOOGLE_CREDENTIALS_PATH_ENV_VAR);
- if (base == nullptr) {
+ auto base = grpc_core::GetEnv(GRPC_GOOGLE_CREDENTIALS_PATH_ENV_VAR);
+ if (!base.has_value()) {
gpr_log(GPR_ERROR, "Could not get " GRPC_GOOGLE_CREDENTIALS_PATH_ENV_VAR
" environment variable.");
return "";
}
- TString result =
- y_absl::StrCat(base, "/", GRPC_GOOGLE_CREDENTIALS_PATH_SUFFIX);
- gpr_free(base);
- return result;
+ return y_absl::StrCat(*base, "/", GRPC_GOOGLE_CREDENTIALS_PATH_SUFFIX);
}
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/google_default/google_default_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/google_default/google_default_credentials.cc
index cf6a81a0ee..176f613384 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/google_default/google_default_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/google_default/google_default_credentials.cc
@@ -22,9 +22,21 @@
#include <string.h>
+#include <map>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/match.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/strings/strip.h"
+#include "y_absl/types/optional.h"
+#include <grpc/grpc_security.h> // IWYU pragma: keep
+#include <grpc/grpc_security_constants.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
@@ -32,23 +44,33 @@
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/env.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/env.h"
#include "src/core/lib/gprpp/host_port.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/http/httpcli.h"
#include "src/core/lib/http/parser.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/iomgr/load_file.h"
#include "src/core/lib/iomgr/polling_entity.h"
-#include "src/core/lib/security/credentials/alts/alts_credentials.h"
+#include "src/core/lib/iomgr/pollset.h"
+#include "src/core/lib/json/json.h"
#include "src/core/lib/security/credentials/alts/check_gcp_environment.h"
#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/credentials/external/external_account_credentials.h"
+#include "src/core/lib/security/credentials/jwt/json_token.h"
#include "src/core/lib/security/credentials/jwt/jwt_credentials.h"
#include "src/core/lib/security/credentials/oauth2/oauth2_credentials.h"
#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/core/lib/surface/api_trace.h"
+#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/uri/uri_parser.h"
using grpc_core::Json;
@@ -83,19 +105,33 @@ struct metadata_server_detector {
int success;
grpc_http_response response;
};
+
+namespace {
+
+bool IsXdsNonCfeCluster(y_absl::optional<y_absl::string_view> xds_cluster) {
+ if (!xds_cluster.has_value()) return false;
+ if (y_absl::StartsWith(*xds_cluster, "google_cfe_")) return false;
+ if (!y_absl::StartsWith(*xds_cluster, "xdstp:")) return true;
+ auto uri = grpc_core::URI::Parse(*xds_cluster);
+ if (!uri.ok()) return true; // Shouldn't happen, but assume ALTS.
+ return uri->authority() != "traffic-director-c2p.xds.googleapis.com" ||
+ !y_absl::StartsWith(uri->path(),
+ "/envoy.config.cluster.v3.Cluster/google_cfe_");
+}
+
+} // namespace
+
grpc_core::RefCountedPtr<grpc_channel_security_connector>
grpc_google_default_channel_credentials::create_security_connector(
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
- const char* target, const grpc_channel_args* args,
- grpc_channel_args** new_args) {
- const bool is_grpclb_load_balancer = grpc_channel_args_find_bool(
- args, GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER, false);
- const bool is_backend_from_grpclb_load_balancer = grpc_channel_args_find_bool(
- args, GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER, false);
- const char* xds_cluster =
- grpc_channel_args_find_string(args, GRPC_ARG_XDS_CLUSTER_NAME);
+ const char* target, grpc_core::ChannelArgs* args) {
+ const bool is_grpclb_load_balancer =
+ args->GetBool(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER).value_or(false);
+ const bool is_backend_from_grpclb_load_balancer =
+ args->GetBool(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER)
+ .value_or(false);
const bool is_xds_non_cfe_cluster =
- xds_cluster != nullptr && !y_absl::StartsWith(xds_cluster, "google_cfe_");
+ IsXdsNonCfeCluster(args->GetString(GRPC_ARG_XDS_CLUSTER_NAME));
const bool use_alts = is_grpclb_load_balancer ||
is_backend_from_grpclb_load_balancer ||
is_xds_non_cfe_cluster;
@@ -105,44 +141,38 @@ grpc_google_default_channel_credentials::create_security_connector(
return nullptr;
}
grpc_core::RefCountedPtr<grpc_channel_security_connector> sc =
- use_alts ? alts_creds_->create_security_connector(call_creds, target,
- args, new_args)
- : ssl_creds_->create_security_connector(call_creds, target, args,
- new_args);
+ use_alts
+ ? alts_creds_->create_security_connector(call_creds, target, args)
+ : ssl_creds_->create_security_connector(call_creds, target, args);
/* grpclb-specific channel args are removed from the channel args set
* to ensure backends and fallback adresses will have the same set of channel
* args. By doing that, it guarantees the connections to backends will not be
* torn down and re-connected when switching in and out of fallback mode.
*/
if (use_alts) {
- static const char* args_to_remove[] = {
- GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER,
- GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER,
- };
- *new_args = grpc_channel_args_copy_and_add_and_remove(
- args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), nullptr, 0);
+ *args = args->Remove(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER)
+ .Remove(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER);
}
return sc;
}
-grpc_channel_args* grpc_google_default_channel_credentials::update_arguments(
- grpc_channel_args* args) {
- grpc_channel_args* updated = args;
- if (grpc_channel_args_find(args, GRPC_ARG_DNS_ENABLE_SRV_QUERIES) ==
- nullptr) {
- grpc_arg new_srv_arg = grpc_channel_arg_integer_create(
- const_cast<char*>(GRPC_ARG_DNS_ENABLE_SRV_QUERIES), true);
- updated = grpc_channel_args_copy_and_add(args, &new_srv_arg, 1);
- grpc_channel_args_destroy(args);
- }
- return updated;
+grpc_core::ChannelArgs
+grpc_google_default_channel_credentials::update_arguments(
+ grpc_core::ChannelArgs args) {
+ return args.SetIfUnset(GRPC_ARG_DNS_ENABLE_SRV_QUERIES, true);
+}
+
+grpc_core::UniqueTypeName grpc_google_default_channel_credentials::type()
+ const {
+ static grpc_core::UniqueTypeName::Factory kFactory("GoogleDefault");
+ return kFactory.Create();
}
static void on_metadata_server_detection_http_response(
void* user_data, grpc_error_handle error) {
metadata_server_detector* detector =
static_cast<metadata_server_detector*>(user_data);
- if (error == GRPC_ERROR_NONE && detector->response.status == 200 &&
+ if (GRPC_ERROR_IS_NONE(error) && detector->response.status == 200 &&
detector->response.hdr_count > 0) {
/* Internet providers can return a generic response to all requests, so
it is necessary to check that metadata header is present also. */
@@ -189,7 +219,7 @@ static int is_metadata_server_reachable() {
GPR_ASSERT(uri.ok()); // params are hardcoded
auto http_request = grpc_core::HttpRequest::Get(
std::move(*uri), nullptr /* channel args */, &detector.pollent, &request,
- grpc_core::ExecCtx::Get()->Now() + max_detection_delay,
+ grpc_core::Timestamp::Now() + max_detection_delay,
GRPC_CLOSURE_CREATE(on_metadata_server_detection_http_response, &detector,
grpc_schedule_on_exec_ctx),
&detector.response,
@@ -285,9 +315,15 @@ static grpc_error_handle create_default_creds_from_path(
goto end;
}
error = grpc_load_file(creds_path.c_str(), 0, &creds_data);
- if (error != GRPC_ERROR_NONE) goto end;
- json = Json::Parse(grpc_core::StringViewFromSlice(creds_data), &error);
- if (error != GRPC_ERROR_NONE) goto end;
+ if (!GRPC_ERROR_IS_NONE(error)) goto end;
+ {
+ auto json_or = Json::Parse(grpc_core::StringViewFromSlice(creds_data));
+ if (!json_or.ok()) {
+ error = absl_status_to_grpc_error(json_or.status());
+ goto end;
+ }
+ json = std::move(*json_or);
+ }
if (json.type() != Json::Type::OBJECT) {
error = grpc_error_set_str(
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to parse JSON"),
@@ -331,7 +367,7 @@ static grpc_error_handle create_default_creds_from_path(
result = grpc_core::ExternalAccountCredentials::Create(json, {}, &error);
end:
- GPR_ASSERT((result == nullptr) + (error == GRPC_ERROR_NONE) == 1);
+ GPR_ASSERT((result == nullptr) + (GRPC_ERROR_IS_NONE(error)) == 1);
grpc_slice_unref_internal(creds_data);
*creds = result;
return error;
@@ -364,18 +400,17 @@ static grpc_core::RefCountedPtr<grpc_call_credentials> make_default_call_creds(
grpc_error_handle err;
/* First, try the environment variable. */
- char* path_from_env = gpr_getenv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR);
- if (path_from_env != nullptr) {
- err = create_default_creds_from_path(path_from_env, &call_creds);
- gpr_free(path_from_env);
- if (err == GRPC_ERROR_NONE) return call_creds;
+ auto path_from_env = grpc_core::GetEnv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR);
+ if (path_from_env.has_value()) {
+ err = create_default_creds_from_path(*path_from_env, &call_creds);
+ if (GRPC_ERROR_IS_NONE(err)) return call_creds;
*error = grpc_error_add_child(*error, err);
}
/* Then the well-known file. */
err = create_default_creds_from_path(
grpc_get_well_known_google_credentials_file_path(), &call_creds);
- if (err == GRPC_ERROR_NONE) return call_creds;
+ if (GRPC_ERROR_IS_NONE(err)) return call_creds;
*error = grpc_error_add_child(*error, err);
update_tenancy();
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/google_default/google_default_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/google_default/google_default_credentials.h
index 93171414c2..17633f53c3 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/google_default/google_default_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/google_default/google_default_credentials.h
@@ -18,11 +18,19 @@
#ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_GOOGLE_DEFAULT_GOOGLE_DEFAULT_CREDENTIALS_H
#define GRPC_CORE_LIB_SECURITY_CREDENTIALS_GOOGLE_DEFAULT_GOOGLE_DEFAULT_CREDENTIALS_H
-
#include <grpc/support/port_platform.h>
+#include <utility>
+
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
#define GRPC_GOOGLE_CLOUD_SDK_CONFIG_DIRECTORY "gcloud"
#define GRPC_GOOGLE_WELL_KNOWN_CREDENTIALS_FILE \
@@ -46,19 +54,18 @@ class grpc_google_default_channel_credentials
grpc_google_default_channel_credentials(
grpc_core::RefCountedPtr<grpc_channel_credentials> alts_creds,
grpc_core::RefCountedPtr<grpc_channel_credentials> ssl_creds)
- : grpc_channel_credentials(GRPC_CHANNEL_CREDENTIALS_TYPE_GOOGLE_DEFAULT),
- alts_creds_(std::move(alts_creds)),
- ssl_creds_(std::move(ssl_creds)) {}
+ : alts_creds_(std::move(alts_creds)), ssl_creds_(std::move(ssl_creds)) {}
~grpc_google_default_channel_credentials() override = default;
grpc_core::RefCountedPtr<grpc_channel_security_connector>
create_security_connector(
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
- const char* target, const grpc_channel_args* args,
- grpc_channel_args** new_args) override;
+ const char* target, grpc_core::ChannelArgs* args) override;
+
+ grpc_core::ChannelArgs update_arguments(grpc_core::ChannelArgs args) override;
- grpc_channel_args* update_arguments(grpc_channel_args* args) override;
+ grpc_core::UniqueTypeName type() const override;
const grpc_channel_credentials* alts_creds() const {
return alts_creds_.get();
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/iam/iam_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/iam/iam_credentials.cc
index 53e4dba2c0..61b4d6405c 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/iam/iam_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/iam/iam_credentials.cc
@@ -20,20 +20,25 @@
#include "src/core/lib/security/credentials/iam/iam_credentials.h"
+#include <stdlib.h>
+
+#include <utility>
+
#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/string_view.h"
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
-#include <grpc/support/sync.h>
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/promise/promise.h"
#include "src/core/lib/surface/api_trace.h"
+#include "src/core/lib/transport/metadata_batch.h"
-grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
+grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
grpc_google_iam_credentials::GetRequestMetadata(
- grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ClientMetadataHandle initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs*) {
if (token_.has_value()) {
initial_metadata->Append(
@@ -48,8 +53,7 @@ grpc_google_iam_credentials::GetRequestMetadata(
grpc_google_iam_credentials::grpc_google_iam_credentials(
const char* token, const char* authority_selector)
- : grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_IAM),
- token_(token == nullptr ? y_absl::optional<grpc_core::Slice>()
+ : token_(token == nullptr ? y_absl::optional<grpc_core::Slice>()
: grpc_core::Slice::FromCopiedString(token)),
authority_selector_(
grpc_core::Slice::FromCopiedString(authority_selector)),
@@ -57,6 +61,11 @@ grpc_google_iam_credentials::grpc_google_iam_credentials(
"GoogleIAMCredentials{Token:%s,AuthoritySelector:%s}",
token != nullptr ? "present" : "absent", authority_selector)) {}
+grpc_core::UniqueTypeName grpc_google_iam_credentials::Type() {
+ static grpc_core::UniqueTypeName::Factory kFactory("Iam");
+ return kFactory.Create();
+}
+
grpc_call_credentials* grpc_google_iam_credentials_create(
const char* token, const char* authority_selector, void* reserved) {
grpc_core::ExecCtx exec_ctx;
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/iam/iam_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/iam/iam_credentials.h
index 866e8beb95..bcaecb4c30 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/iam/iam_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/iam/iam_credentials.h
@@ -24,19 +24,33 @@
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include "y_absl/status/statusor.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/grpc_security.h>
+
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/transport/transport.h"
class grpc_google_iam_credentials : public grpc_call_credentials {
public:
grpc_google_iam_credentials(const char* token,
const char* authority_selector);
- grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
const GetRequestMetadataArgs* args) override;
TString debug_string() override { return debug_string_; }
+ static grpc_core::UniqueTypeName Type();
+
+ grpc_core::UniqueTypeName type() const override { return Type(); }
+
private:
int cmp_impl(const grpc_call_credentials* other) const override {
// TODO(yashykt): Check if we can do something better here
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/insecure/insecure_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/insecure/insecure_credentials.cc
index 5aa4f51939..9956525ac6 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/insecure/insecure_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/insecure/insecure_credentials.cc
@@ -18,44 +18,47 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/credentials/insecure/insecure_credentials.h"
+
+#include <utility>
+
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/security/security_connector/insecure/insecure_security_connector.h"
namespace grpc_core {
-namespace {
-class InsecureCredentials final : public grpc_channel_credentials {
- public:
- InsecureCredentials()
- : grpc_channel_credentials(GRPC_CREDENTIALS_TYPE_INSECURE) {}
+RefCountedPtr<grpc_channel_security_connector>
+InsecureCredentials::create_security_connector(
+ RefCountedPtr<grpc_call_credentials> request_metadata_creds,
+ const char* /* target_name */, ChannelArgs* /* args */) {
+ return MakeRefCounted<InsecureChannelSecurityConnector>(
+ Ref(), std::move(request_metadata_creds));
+}
- RefCountedPtr<grpc_channel_security_connector> create_security_connector(
- RefCountedPtr<grpc_call_credentials> call_creds,
- const char* /* target_name */, const grpc_channel_args* /* args */,
- grpc_channel_args** /* new_args */) override {
- return MakeRefCounted<InsecureChannelSecurityConnector>(
- Ref(), std::move(call_creds));
- }
+UniqueTypeName InsecureCredentials::Type() {
+ static UniqueTypeName::Factory kFactory("Insecure");
+ return kFactory.Create();
+}
- private:
- int cmp_impl(const grpc_channel_credentials* /* other */) const override {
- // All insecure credentials objects should compare equal.
- return 0;
- }
-};
+int InsecureCredentials::cmp_impl(
+ const grpc_channel_credentials* /* other */) const {
+ // All insecure credentials objects should compare equal.
+ return 0;
+}
-class InsecureServerCredentials final : public grpc_server_credentials {
- public:
- InsecureServerCredentials()
- : grpc_server_credentials(GRPC_CREDENTIALS_TYPE_INSECURE) {}
+RefCountedPtr<grpc_server_security_connector>
+InsecureServerCredentials::create_security_connector(
+ const ChannelArgs& /* args */) {
+ return MakeRefCounted<InsecureServerSecurityConnector>(Ref());
+}
- RefCountedPtr<grpc_server_security_connector> create_security_connector(
- const grpc_channel_args* /* args */) override {
- return MakeRefCounted<InsecureServerSecurityConnector>(Ref());
- }
-};
+UniqueTypeName InsecureServerCredentials::Type() {
+ static auto* kFactory = new UniqueTypeName::Factory("Insecure");
+ return kFactory->Create();
+}
-} // namespace
} // namespace grpc_core
grpc_channel_credentials* grpc_insecure_credentials_create() {
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/insecure/insecure_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/insecure/insecure_credentials.h
new file mode 100644
index 0000000000..0281929711
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/insecure/insecure_credentials.h
@@ -0,0 +1,61 @@
+//
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_INSECURE_INSECURE_CREDENTIALS_H
+#define GRPC_CORE_LIB_SECURITY_CREDENTIALS_INSECURE_INSECURE_CREDENTIALS_H
+
+#include <grpc/support/port_platform.h>
+
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
+
+namespace grpc_core {
+
+class InsecureCredentials final : public grpc_channel_credentials {
+ public:
+ RefCountedPtr<grpc_channel_security_connector> create_security_connector(
+ RefCountedPtr<grpc_call_credentials> request_metadata_creds,
+ const char* /* target_name */, ChannelArgs* /* args */) override;
+
+ static UniqueTypeName Type();
+
+ UniqueTypeName type() const override { return Type(); }
+
+ private:
+ int cmp_impl(const grpc_channel_credentials* other) const override;
+};
+
+class InsecureServerCredentials final : public grpc_server_credentials {
+ public:
+ RefCountedPtr<grpc_server_security_connector> create_security_connector(
+ const ChannelArgs& /* args */) override;
+
+ static UniqueTypeName Type();
+
+ UniqueTypeName type() const override { return Type(); }
+};
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_SECURITY_CREDENTIALS_INSECURE_INSECURE_CREDENTIALS_H
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/jwt/json_token.cc b/contrib/libs/grpc/src/core/lib/security/credentials/jwt/json_token.cc
index 4773cb3a5b..3b17cbf811 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/jwt/json_token.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/jwt/json_token.cc
@@ -20,19 +20,27 @@
#include "src/core/lib/security/credentials/jwt/json_token.h"
+#include <stdint.h>
#include <string.h>
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
#include <openssl/bio.h>
#include <openssl/evp.h>
#include <openssl/pem.h>
+#include <openssl/rsa.h>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include <grpc/grpc_security.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
#include <grpc/support/time.h>
-#include "src/core/lib/gpr/string.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/security/util/json_util.h"
#include "src/core/lib/slice/b64.h"
@@ -122,9 +130,14 @@ end:
grpc_auth_json_key grpc_auth_json_key_create_from_string(
const char* json_string) {
- grpc_error_handle error = GRPC_ERROR_NONE;
- Json json = Json::Parse(json_string, &error);
- GRPC_LOG_IF_ERROR("JSON key parsing", error);
+ Json json;
+ auto json_or = Json::Parse(json_string);
+ if (!json_or.ok()) {
+ gpr_log(GPR_ERROR, "JSON key parsing error: %s",
+ json_or.status().ToString().c_str());
+ } else {
+ json = std::move(*json_or);
+ }
return grpc_auth_json_key_create_from_json(json);
}
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/jwt/json_token.h b/contrib/libs/grpc/src/core/lib/security/credentials/jwt/json_token.h
index 163cc3d76a..cfc7138e5f 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/jwt/json_token.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/jwt/json_token.h
@@ -21,9 +21,9 @@
#include <grpc/support/port_platform.h>
-#include <openssl/rsa.h>
+#include <openssl/crypto.h>
-#include <grpc/slice.h>
+#include <grpc/impl/codegen/gpr_types.h>
#include "src/core/lib/json/json.h"
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_credentials.cc
index a60274b620..fac5465400 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_credentials.cc
@@ -21,11 +21,14 @@
#include "src/core/lib/security/credentials/jwt/jwt_credentials.h"
#include <inttypes.h>
-#include <string.h>
+#include <stdlib.h>
+#include <map>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_cat.h"
#include <grpc/support/alloc.h>
@@ -33,13 +36,14 @@
#include <grpc/support/string_util.h>
#include <grpc/support/sync.h>
-#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/json/json.h"
#include "src/core/lib/promise/promise.h"
#include "src/core/lib/security/credentials/call_creds_util.h"
-#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/surface/api_trace.h"
-#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/transport/metadata_batch.h"
#include "src/core/lib/uri/uri_parser.h"
using grpc_core::Json;
@@ -50,9 +54,9 @@ grpc_service_account_jwt_access_credentials::
gpr_mu_destroy(&cache_mu_);
}
-grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
+grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
grpc_service_account_jwt_access_credentials::GetRequestMetadata(
- grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ClientMetadataHandle initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs* args) {
gpr_timespec refresh_threshold = gpr_time_from_seconds(
GRPC_SECURE_TOKEN_REFRESH_THRESHOLD_SECS, GPR_TIMESPAN);
@@ -107,7 +111,7 @@ grpc_service_account_jwt_access_credentials::GetRequestMetadata(
grpc_service_account_jwt_access_credentials::
grpc_service_account_jwt_access_credentials(grpc_auth_json_key key,
gpr_timespec token_lifetime)
- : grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_JWT), key_(key) {
+ : key_(key) {
gpr_timespec max_token_lifetime = grpc_max_auth_token_lifetime();
if (gpr_time_cmp(token_lifetime, max_token_lifetime) > 0) {
gpr_log(GPR_INFO,
@@ -119,6 +123,11 @@ grpc_service_account_jwt_access_credentials::
gpr_mu_init(&cache_mu_);
}
+grpc_core::UniqueTypeName grpc_service_account_jwt_access_credentials::Type() {
+ static grpc_core::UniqueTypeName::Factory kFactory("Jwt");
+ return kFactory.Create();
+}
+
grpc_core::RefCountedPtr<grpc_call_credentials>
grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
grpc_auth_json_key key, gpr_timespec token_lifetime) {
@@ -131,14 +140,12 @@ grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
}
static char* redact_private_key(const char* json_key) {
- grpc_error_handle error = GRPC_ERROR_NONE;
- Json json = Json::Parse(json_key, &error);
- if (error != GRPC_ERROR_NONE || json.type() != Json::Type::OBJECT) {
- GRPC_ERROR_UNREF(error);
+ auto json = Json::Parse(json_key);
+ if (!json.ok() || json->type() != Json::Type::OBJECT) {
return gpr_strdup("<Json failed to parse.>");
}
- (*json.mutable_object())["private_key"] = "<redacted>";
- return gpr_strdup(json.Dump(/*indent=*/2).c_str());
+ (*json->mutable_object())["private_key"] = "<redacted>";
+ return gpr_strdup(json->Dump(/*indent=*/2).c_str());
}
grpc_call_credentials* grpc_service_account_jwt_access_credentials_create(
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_credentials.h
index c1af6ac050..f543f65986 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_credentials.h
@@ -21,16 +21,30 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/time/time.h"
+#include "y_absl/types/optional.h"
+#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/support/sync.h>
#include <grpc/support/time.h>
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/credentials/jwt/json_token.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/transport/transport.h"
class grpc_service_account_jwt_access_credentials
: public grpc_call_credentials {
@@ -39,8 +53,8 @@ class grpc_service_account_jwt_access_credentials
gpr_timespec token_lifetime);
~grpc_service_account_jwt_access_credentials() override;
- grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
const GetRequestMetadataArgs* args) override;
const gpr_timespec& jwt_lifetime() const { return jwt_lifetime_; }
@@ -53,6 +67,10 @@ class grpc_service_account_jwt_access_credentials
static_cast<int64_t>(gpr_timespec_to_micros(jwt_lifetime_)))));
};
+ static grpc_core::UniqueTypeName Type();
+
+ grpc_core::UniqueTypeName type() const override { return Type(); }
+
private:
int cmp_impl(const grpc_call_credentials* other) const override {
// TODO(yashykt): Check if we can do something better here
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_verifier.cc b/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_verifier.cc
index b12205ba40..80e126827b 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_verifier.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_verifier.cc
@@ -21,24 +21,52 @@
#include "src/core/lib/security/credentials/jwt/jwt_verifier.h"
#include <limits.h>
+#include <stdlib.h>
#include <string.h>
+#include <map>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include <openssl/bio.h>
#include <openssl/bn.h>
+#include <openssl/crypto.h>
+#include <openssl/evp.h>
#include <openssl/pem.h>
#include <openssl/rsa.h>
+#include <openssl/x509.h>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+#include <grpc/grpc.h>
+#include <grpc/slice.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
-#include <grpc/support/sync.h>
+#include <grpc/support/time.h>
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gprpp/manual_constructor.h"
+#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/http/httpcli.h"
#include "src/core/lib/http/httpcli_ssl_credentials.h"
+#include "src/core/lib/http/parser.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/iomgr/polling_entity.h"
+#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/slice/b64.h"
#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
+#include "src/core/lib/uri/uri_parser.h"
#include "src/core/tsi/ssl_types.h"
using grpc_core::Json;
@@ -86,16 +114,14 @@ static Json parse_json_part_from_jwt(const char* str, size_t len) {
return Json(); // JSON null
}
y_absl::string_view string = grpc_core::StringViewFromSlice(slice);
- grpc_error_handle error = GRPC_ERROR_NONE;
- Json json = Json::Parse(string, &error);
- if (error != GRPC_ERROR_NONE) {
+ auto json = Json::Parse(string);
+ grpc_slice_unref_internal(slice);
+ if (!json.ok()) {
gpr_log(GPR_ERROR, "JSON parse error: %s",
- grpc_error_std_string(error).c_str());
- GRPC_ERROR_UNREF(error);
- json = Json(); // JSON null
+ json.status().ToString().c_str());
+ return Json(); // JSON null
}
- grpc_slice_unref_internal(slice);
- return json;
+ return std::move(*json);
}
static const char* validate_string_field(const Json& json, const char* key) {
@@ -410,14 +436,13 @@ static Json json_from_http(const grpc_http_response* response) {
response->status);
return Json(); // JSON null
}
- grpc_error_handle error = GRPC_ERROR_NONE;
- Json json = Json::Parse(
- y_absl::string_view(response->body, response->body_length), &error);
- if (error != GRPC_ERROR_NONE) {
+ auto json =
+ Json::Parse(y_absl::string_view(response->body, response->body_length));
+ if (!json.ok()) {
gpr_log(GPR_ERROR, "Invalid JSON found in response.");
return Json(); // JSON null
}
- return json;
+ return std::move(*json);
}
static const Json* find_property_by_name(const Json& json, const char* name) {
@@ -709,7 +734,7 @@ static void on_openid_config_retrieved(void* user_data,
}
ctx->http_request = grpc_core::HttpRequest::Get(
std::move(*uri), nullptr /* channel args */, &ctx->pollent, &req,
- grpc_core::ExecCtx::Get()->Now() + grpc_jwt_verifier_max_delay,
+ grpc_core::Timestamp::Now() + grpc_jwt_verifier_max_delay,
GRPC_CLOSURE_CREATE(on_keys_retrieved, ctx, grpc_schedule_on_exec_ctx),
&ctx->responses[HTTP_RESPONSE_KEYS],
grpc_core::CreateHttpRequestSSLCredentials());
@@ -840,7 +865,7 @@ static void retrieve_key_and_verify(verifier_cb_ctx* ctx) {
}
ctx->http_request = grpc_core::HttpRequest::Get(
std::move(*uri), nullptr /* channel args */, &ctx->pollent, &req,
- grpc_core::ExecCtx::Get()->Now() + grpc_jwt_verifier_max_delay, http_cb,
+ grpc_core::Timestamp::Now() + grpc_jwt_verifier_max_delay, http_cb,
&ctx->responses[rsp_idx], grpc_core::CreateHttpRequestSSLCredentials());
ctx->http_request->Start();
gpr_free(host);
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_verifier.h b/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_verifier.h
index 85883db9b4..a2713aaa73 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_verifier.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/jwt/jwt_verifier.h
@@ -21,10 +21,12 @@
#include <grpc/support/port_platform.h>
-#include <grpc/slice.h>
-#include <grpc/support/time.h>
+#include <stddef.h>
-#include "src/core/lib/iomgr/pollset.h"
+#include <grpc/impl/codegen/gpr_types.h>
+
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/json/json.h"
/* --- Constants. --- */
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/local/local_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/local/local_credentials.cc
index 84caf1c3ba..9ad152826c 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/local/local_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/local/local_credentials.cc
@@ -20,34 +20,41 @@
#include "src/core/lib/security/credentials/local/local_credentials.h"
+#include <utility>
+
+#include "y_absl/strings/string_view.h"
+
#include <grpc/grpc.h>
-#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
-#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/security/security_connector/local/local_security_connector.h"
-#define GRPC_CREDENTIALS_TYPE_LOCAL "Local"
-
grpc_core::RefCountedPtr<grpc_channel_security_connector>
grpc_local_credentials::create_security_connector(
grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
- const char* target_name, const grpc_channel_args* args,
- grpc_channel_args** /*new_args*/) {
+ const char* target_name, grpc_core::ChannelArgs* args) {
return grpc_local_channel_security_connector_create(
- this->Ref(), std::move(request_metadata_creds), args, target_name);
+ this->Ref(), std::move(request_metadata_creds), *args, target_name);
+}
+
+grpc_core::UniqueTypeName grpc_local_credentials::type() const {
+ static grpc_core::UniqueTypeName::Factory kFactory("Local");
+ return kFactory.Create();
}
grpc_core::RefCountedPtr<grpc_server_security_connector>
grpc_local_server_credentials::create_security_connector(
- const grpc_channel_args* /* args */) {
+ const grpc_core::ChannelArgs& /* args */) {
return grpc_local_server_security_connector_create(this->Ref());
}
+grpc_core::UniqueTypeName grpc_local_server_credentials::type() const {
+ static grpc_core::UniqueTypeName::Factory kFactory("Local");
+ return kFactory.Create();
+}
+
grpc_local_credentials::grpc_local_credentials(
grpc_local_connect_type connect_type)
- : grpc_channel_credentials(GRPC_CREDENTIALS_TYPE_LOCAL),
- connect_type_(connect_type) {}
+ : connect_type_(connect_type) {}
grpc_channel_credentials* grpc_local_credentials_create(
grpc_local_connect_type connect_type) {
@@ -56,8 +63,7 @@ grpc_channel_credentials* grpc_local_credentials_create(
grpc_local_server_credentials::grpc_local_server_credentials(
grpc_local_connect_type connect_type)
- : grpc_server_credentials(GRPC_CREDENTIALS_TYPE_LOCAL),
- connect_type_(connect_type) {}
+ : connect_type_(connect_type) {}
grpc_server_credentials* grpc_local_server_credentials_create(
grpc_local_connect_type connect_type) {
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/local/local_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/local/local_credentials.h
index 31f32a6d47..b2d0216d72 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/local/local_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/local/local_credentials.h
@@ -21,9 +21,16 @@
#include <grpc/support/port_platform.h>
+#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
+#include <grpc/grpc_security_constants.h>
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
/* Main class for grpc local channel credential. */
class grpc_local_credentials final : public grpc_channel_credentials {
@@ -34,8 +41,9 @@ class grpc_local_credentials final : public grpc_channel_credentials {
grpc_core::RefCountedPtr<grpc_channel_security_connector>
create_security_connector(
grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
- const char* target_name, const grpc_channel_args* args,
- grpc_channel_args** new_args) override;
+ const char* target_name, grpc_core::ChannelArgs* args) override;
+
+ grpc_core::UniqueTypeName type() const override;
grpc_local_connect_type connect_type() const { return connect_type_; }
@@ -56,7 +64,9 @@ class grpc_local_server_credentials final : public grpc_server_credentials {
~grpc_local_server_credentials() override = default;
grpc_core::RefCountedPtr<grpc_server_security_connector>
- create_security_connector(const grpc_channel_args* /* args */) override;
+ create_security_connector(const grpc_core::ChannelArgs& /* args */) override;
+
+ grpc_core::UniqueTypeName type() const override;
grpc_local_connect_type connect_type() const { return connect_type_; }
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc
index b3da94f4ea..181ff802b2 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc
@@ -20,35 +20,46 @@
#include "src/core/lib/security/credentials/oauth2/oauth2_credentials.h"
+#include <stdlib.h>
#include <string.h>
+#include <algorithm>
#include <atomic>
+#include <map>
+#include <memory>
+#include <vector>
-#include "y_absl/container/inlined_vector.h"
#include "y_absl/status/status.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
+#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
-#include <grpc/impl/codegen/slice.h>
+#include <grpc/impl/codegen/gpr_slice.h>
#include <grpc/slice.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
+#include <grpc/support/time.h>
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/capture.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/http/httpcli_ssl_credentials.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/load_file.h"
+#include "src/core/lib/iomgr/pollset_set.h"
#include "src/core/lib/json/json.h"
+#include "src/core/lib/promise/context.h"
+#include "src/core/lib/promise/poll.h"
#include "src/core/lib/promise/promise.h"
#include "src/core/lib/security/util/json_util.h"
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/transport/metadata_batch.h"
#include "src/core/lib/transport/transport.h"
#include "src/core/lib/uri/uri_parser.h"
@@ -102,12 +113,13 @@ end:
grpc_auth_refresh_token grpc_auth_refresh_token_create_from_string(
const char* json_string) {
- grpc_error_handle error = GRPC_ERROR_NONE;
- Json json = Json::Parse(json_string, &error);
- if (error != GRPC_ERROR_NONE) {
+ Json json;
+ auto json_or = Json::Parse(json_string);
+ if (!json_or.ok()) {
gpr_log(GPR_ERROR, "JSON parsing failed: %s",
- grpc_error_std_string(error).c_str());
- GRPC_ERROR_UNREF(error);
+ json_or.status().ToString().c_str());
+ } else {
+ json = std::move(*json_or);
}
return grpc_auth_refresh_token_create_from_json(json);
}
@@ -146,7 +158,6 @@ grpc_oauth2_token_fetcher_credentials_parse_server_response(
grpc_core::Duration* token_lifetime) {
char* null_terminated_body = nullptr;
grpc_credentials_status status = GRPC_CREDENTIALS_OK;
- Json json;
if (response == nullptr) {
gpr_log(GPR_ERROR, "Received NULL response.");
@@ -172,38 +183,37 @@ grpc_oauth2_token_fetcher_credentials_parse_server_response(
const char* token_type = nullptr;
const char* expires_in = nullptr;
Json::Object::const_iterator it;
- grpc_error_handle error = GRPC_ERROR_NONE;
- json = Json::Parse(null_terminated_body, &error);
- if (error != GRPC_ERROR_NONE) {
+ auto json = Json::Parse(
+ null_terminated_body != nullptr ? null_terminated_body : "");
+ if (!json.ok()) {
gpr_log(GPR_ERROR, "Could not parse JSON from %s: %s",
- null_terminated_body, grpc_error_std_string(error).c_str());
- GRPC_ERROR_UNREF(error);
+ null_terminated_body, json.status().ToString().c_str());
status = GRPC_CREDENTIALS_ERROR;
goto end;
}
- if (json.type() != Json::Type::OBJECT) {
+ if (json->type() != Json::Type::OBJECT) {
gpr_log(GPR_ERROR, "Response should be a JSON object");
status = GRPC_CREDENTIALS_ERROR;
goto end;
}
- it = json.object_value().find("access_token");
- if (it == json.object_value().end() ||
+ it = json->object_value().find("access_token");
+ if (it == json->object_value().end() ||
it->second.type() != Json::Type::STRING) {
gpr_log(GPR_ERROR, "Missing or invalid access_token in JSON.");
status = GRPC_CREDENTIALS_ERROR;
goto end;
}
access_token = it->second.string_value().c_str();
- it = json.object_value().find("token_type");
- if (it == json.object_value().end() ||
+ it = json->object_value().find("token_type");
+ if (it == json->object_value().end() ||
it->second.type() != Json::Type::STRING) {
gpr_log(GPR_ERROR, "Missing or invalid token_type in JSON.");
status = GRPC_CREDENTIALS_ERROR;
goto end;
}
token_type = it->second.string_value().c_str();
- it = json.object_value().find("expires_in");
- if (it == json.object_value().end() ||
+ it = json->object_value().find("expires_in");
+ if (it == json->object_value().end() ||
it->second.type() != Json::Type::NUMBER) {
gpr_log(GPR_ERROR, "Missing or invalid expires_in in JSON.");
status = GRPC_CREDENTIALS_ERROR;
@@ -238,7 +248,7 @@ void grpc_oauth2_token_fetcher_credentials::on_http_response(
y_absl::optional<grpc_core::Slice> access_token_value;
grpc_core::Duration token_lifetime;
grpc_credentials_status status =
- error == GRPC_ERROR_NONE
+ GRPC_ERROR_IS_NONE(error)
? grpc_oauth2_token_fetcher_credentials_parse_server_response(
&r->response, &access_token_value, &token_lifetime)
: GRPC_CREDENTIALS_ERROR;
@@ -281,9 +291,9 @@ void grpc_oauth2_token_fetcher_credentials::on_http_response(
delete r;
}
-grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
+grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
grpc_oauth2_token_fetcher_credentials::GetRequestMetadata(
- grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ClientMetadataHandle initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs*) {
// Check if we can use the cached token.
y_absl::optional<grpc_core::Slice> cached_access_token_value;
@@ -324,11 +334,11 @@ grpc_oauth2_token_fetcher_credentials::GetRequestMetadata(
if (start_fetch) {
fetch_oauth2(new grpc_credentials_metadata_request(Ref()), &pollent_,
on_oauth2_token_fetcher_http_response,
- grpc_core::ExecCtx::Get()->Now() + refresh_threshold);
+ grpc_core::Timestamp::Now() + refresh_threshold);
}
return
[pending_request]()
- -> grpc_core::Poll<y_absl::StatusOr<grpc_core::ClientInitialMetadata>> {
+ -> grpc_core::Poll<y_absl::StatusOr<grpc_core::ClientMetadataHandle>> {
if (!pending_request->done.load(std::memory_order_acquire)) {
return grpc_core::Pending{};
}
@@ -337,8 +347,7 @@ grpc_oauth2_token_fetcher_credentials::GetRequestMetadata(
}
grpc_oauth2_token_fetcher_credentials::grpc_oauth2_token_fetcher_credentials()
- : grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_OAUTH2),
- token_expiration_(gpr_inf_past(GPR_CLOCK_MONOTONIC)),
+ : token_expiration_(gpr_inf_past(GPR_CLOCK_MONOTONIC)),
pollent_(grpc_polling_entity_create_from_pollset_set(
grpc_pollset_set_create())) {
gpr_mu_init(&mu_);
@@ -348,6 +357,11 @@ TString grpc_oauth2_token_fetcher_credentials::debug_string() {
return "OAuth2TokenFetcherCredentials";
}
+grpc_core::UniqueTypeName grpc_oauth2_token_fetcher_credentials::type() const {
+ static grpc_core::UniqueTypeName::Factory kFactory("Oauth2");
+ return kFactory.Create();
+}
+
//
// Google Compute Engine credentials.
//
@@ -473,6 +487,11 @@ TString grpc_google_refresh_token_credentials::debug_string() {
grpc_oauth2_token_fetcher_credentials::debug_string());
}
+grpc_core::UniqueTypeName grpc_google_refresh_token_credentials::type() const {
+ static grpc_core::UniqueTypeName::Factory kFactory("GoogleRefreshToken");
+ return kFactory.Create();
+}
+
static TString create_loggable_refresh_token(
grpc_auth_refresh_token* token) {
if (strcmp(token->type, GRPC_AUTH_JSON_TYPE_INVALID) == 0) {
@@ -515,7 +534,7 @@ void MaybeAddToBody(const char* field_name, const char* field,
grpc_error_handle LoadTokenFile(const char* path, gpr_slice* token) {
grpc_error_handle err = grpc_load_file(path, 1, token);
- if (err != GRPC_ERROR_NONE) return err;
+ if (!GRPC_ERROR_IS_NONE(err)) return err;
if (GRPC_SLICE_LENGTH(*token) == 0) {
gpr_log(GPR_ERROR, "Token file %s is empty", path);
err = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Token file is empty.");
@@ -553,7 +572,7 @@ class StsTokenFetcherCredentials
grpc_http_request request;
memset(&request, 0, sizeof(grpc_http_request));
grpc_error_handle err = FillBody(&request.body, &request.body_length);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
response_cb(metadata_req, err);
GRPC_ERROR_UNREF(err);
return;
@@ -591,7 +610,7 @@ class StsTokenFetcherCredentials
auto cleanup = [&body, &body_length, &body_parts, &subject_token,
&actor_token, &err]() {
- if (err == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(err)) {
TString body_str = y_absl::StrJoin(body_parts, "");
*body = gpr_strdup(body_str.c_str());
*body_length = body_str.size();
@@ -602,7 +621,7 @@ class StsTokenFetcherCredentials
};
err = LoadTokenFile(subject_token_path_.get(), &subject_token);
- if (err != GRPC_ERROR_NONE) return cleanup();
+ if (!GRPC_ERROR_IS_NONE(err)) return cleanup();
body_parts.push_back(y_absl::StrFormat(
GRPC_STS_POST_MINIMAL_BODY_FORMAT_STRING,
reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(subject_token)),
@@ -614,7 +633,7 @@ class StsTokenFetcherCredentials
&body_parts);
if ((actor_token_path_ != nullptr) && *actor_token_path_ != '\0') {
err = LoadTokenFile(actor_token_path_.get(), &actor_token);
- if (err != GRPC_ERROR_NONE) return cleanup();
+ if (!GRPC_ERROR_IS_NONE(err)) return cleanup();
MaybeAddToBody(
"actor_token",
reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(actor_token)),
@@ -641,7 +660,7 @@ class StsTokenFetcherCredentials
y_absl::StatusOr<URI> ValidateStsCredentialsOptions(
const grpc_sts_credentials_options* options) {
- y_absl::InlinedVector<grpc_error_handle, 3> error_list;
+ std::vector<grpc_error_handle> error_list;
y_absl::StatusOr<URI> sts_url =
URI::Parse(options->token_exchange_service_uri == nullptr
? ""
@@ -696,9 +715,9 @@ grpc_call_credentials* grpc_sts_credentials_create(
// Oauth2 Access Token credentials.
//
-grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
+grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
grpc_access_token_credentials::GetRequestMetadata(
- grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ClientMetadataHandle initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs*) {
initial_metadata->Append(
GRPC_AUTHORIZATION_METADATA_KEY, access_token_value_.Ref(),
@@ -706,10 +725,14 @@ grpc_access_token_credentials::GetRequestMetadata(
return grpc_core::Immediate(std::move(initial_metadata));
}
+grpc_core::UniqueTypeName grpc_access_token_credentials::Type() {
+ static grpc_core::UniqueTypeName::Factory kFactory("AccessToken");
+ return kFactory.Create();
+}
+
grpc_access_token_credentials::grpc_access_token_credentials(
const char* access_token)
- : grpc_call_credentials(GRPC_CALL_CREDENTIALS_TYPE_OAUTH2),
- access_token_value_(grpc_core::Slice::FromCopiedString(
+ : access_token_value_(grpc_core::Slice::FromCopiedString(
y_absl::StrCat("Bearer ", access_token))) {}
TString grpc_access_token_credentials::debug_string() {
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/oauth2/oauth2_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/oauth2/oauth2_credentials.h
index 85d7e3f1ed..b111195807 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/oauth2/oauth2_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/oauth2/oauth2_credentials.h
@@ -21,15 +21,35 @@
#include <grpc/support/port_platform.h>
+#include <atomic>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/status/statusor.h"
+#include "y_absl/types/optional.h"
#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/support/sync.h>
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
#include "src/core/lib/http/httpcli.h"
+#include "src/core/lib/http/parser.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/polling_entity.h"
#include "src/core/lib/json/json.h"
+#include "src/core/lib/promise/activity.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/transport/transport.h"
#include "src/core/lib/uri/uri_parser.h"
// Constants.
@@ -80,9 +100,9 @@ struct grpc_oauth2_pending_get_request_metadata
std::atomic<bool> done{false};
grpc_core::Waker waker;
grpc_polling_entity* pollent;
- grpc_core::ClientInitialMetadata md;
+ grpc_core::ClientMetadataHandle md;
struct grpc_oauth2_pending_get_request_metadata* next;
- y_absl::StatusOr<grpc_core::ClientInitialMetadata> result;
+ y_absl::StatusOr<grpc_core::ClientMetadataHandle> result;
};
// -- Oauth2 Token Fetcher credentials --
@@ -95,14 +115,16 @@ class grpc_oauth2_token_fetcher_credentials : public grpc_call_credentials {
grpc_oauth2_token_fetcher_credentials();
~grpc_oauth2_token_fetcher_credentials() override;
- grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
const GetRequestMetadataArgs* args) override;
void on_http_response(grpc_credentials_metadata_request* r,
grpc_error_handle error);
TString debug_string() override;
+ grpc_core::UniqueTypeName type() const override;
+
protected:
virtual void fetch_oauth2(grpc_credentials_metadata_request* req,
grpc_polling_entity* pollent, grpc_iomgr_cb_func cb,
@@ -137,6 +159,8 @@ class grpc_google_refresh_token_credentials final
TString debug_string() override;
+ grpc_core::UniqueTypeName type() const override;
+
protected:
void fetch_oauth2(grpc_credentials_metadata_request* req,
grpc_polling_entity* pollent, grpc_iomgr_cb_func cb,
@@ -153,12 +177,16 @@ class grpc_access_token_credentials final : public grpc_call_credentials {
public:
explicit grpc_access_token_credentials(const char* access_token);
- grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
const GetRequestMetadataArgs* args) override;
TString debug_string() override;
+ static grpc_core::UniqueTypeName Type();
+
+ grpc_core::UniqueTypeName type() const override { return Type(); }
+
private:
int cmp_impl(const grpc_call_credentials* other) const override {
// TODO(yashykt): Check if we can do something better here
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/plugin/plugin_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/plugin/plugin_credentials.cc
index 29367dd541..9789b9c80c 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/plugin/plugin_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/plugin/plugin_credentials.cc
@@ -20,24 +20,24 @@
#include "src/core/lib/security/credentials/plugin/plugin_credentials.h"
-#include <string.h>
-
#include <atomic>
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
-#include <grpc/grpc.h>
+#include <grpc/slice.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/sync.h>
-#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/promise/promise.h"
-#include "src/core/lib/security/credentials/plugin/plugin_credentials.h"
+#include "src/core/lib/slice/slice.h"
#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/validate_metadata.h"
+#include "src/core/lib/transport/metadata_batch.h"
grpc_core::TraceFlag grpc_plugin_credentials_trace(false, "plugin_credentials");
@@ -60,7 +60,12 @@ TString grpc_plugin_credentials::debug_string() {
return debug_str;
}
-y_absl::StatusOr<grpc_core::ClientInitialMetadata>
+grpc_core::UniqueTypeName grpc_plugin_credentials::type() const {
+ static grpc_core::UniqueTypeName::Factory kFactory("Plugin");
+ return kFactory.Create();
+}
+
+y_absl::StatusOr<grpc_core::ClientMetadataHandle>
grpc_plugin_credentials::PendingRequest::ProcessPluginResult(
const grpc_metadata* md, size_t num_md, grpc_status_code status,
const char* error_details) {
@@ -96,12 +101,12 @@ grpc_plugin_credentials::PendingRequest::ProcessPluginResult(
});
}
if (!error.ok()) return std::move(error);
- return grpc_core::ClientInitialMetadata(std::move(md_));
+ return grpc_core::ClientMetadataHandle(std::move(md_));
}
}
}
-grpc_core::Poll<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
+grpc_core::Poll<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
grpc_plugin_credentials::PendingRequest::PollAsyncResult() {
if (!ready_.load(std::memory_order_acquire)) {
return grpc_core::Pending{};
@@ -137,9 +142,9 @@ void grpc_plugin_credentials::PendingRequest::RequestMetadataReady(
r->waker_.Wakeup();
}
-grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
+grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
grpc_plugin_credentials::GetRequestMetadata(
- grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ClientMetadataHandle initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs* args) {
if (plugin_.get_metadata == nullptr) {
return grpc_core::Immediate(std::move(initial_metadata));
@@ -197,7 +202,7 @@ grpc_plugin_credentials::GetRequestMetadata(
grpc_plugin_credentials::grpc_plugin_credentials(
grpc_metadata_credentials_plugin plugin,
grpc_security_level min_security_level)
- : grpc_call_credentials(plugin.type, min_security_level), plugin_(plugin) {}
+ : grpc_call_credentials(min_security_level), plugin_(plugin) {}
grpc_call_credentials* grpc_metadata_credentials_create_from_plugin(
grpc_metadata_credentials_plugin plugin,
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/plugin/plugin_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/plugin/plugin_credentials.h
index f947da6307..2216c7ef9b 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/plugin/plugin_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/plugin/plugin_credentials.h
@@ -21,8 +21,33 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <atomic>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/container/inlined_vector.h"
+#include "y_absl/status/statusor.h"
+
+#include <grpc/grpc_security.h>
+#include <grpc/grpc_security_constants.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/status.h>
+
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/promise/activity.h"
+#include "src/core/lib/promise/arena_promise.h"
+#include "src/core/lib/promise/poll.h"
#include "src/core/lib/security/credentials/call_creds_util.h"
#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/slice/slice_refcount.h"
+#include "src/core/lib/transport/transport.h"
extern grpc_core::TraceFlag grpc_plugin_credentials_trace;
@@ -35,17 +60,19 @@ struct grpc_plugin_credentials final : public grpc_call_credentials {
grpc_security_level min_security_level);
~grpc_plugin_credentials() override;
- grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
- GetRequestMetadata(grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ArenaPromise<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
+ GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata,
const GetRequestMetadataArgs* args) override;
TString debug_string() override;
+ grpc_core::UniqueTypeName type() const override;
+
private:
class PendingRequest : public grpc_core::RefCounted<PendingRequest> {
public:
PendingRequest(grpc_core::RefCountedPtr<grpc_plugin_credentials> creds,
- grpc_core::ClientInitialMetadata initial_metadata,
+ grpc_core::ClientMetadataHandle initial_metadata,
const grpc_call_credentials::GetRequestMetadataArgs* args)
: call_creds_(std::move(creds)),
context_(
@@ -60,11 +87,11 @@ struct grpc_plugin_credentials final : public grpc_call_credentials {
}
}
- y_absl::StatusOr<grpc_core::ClientInitialMetadata> ProcessPluginResult(
+ y_absl::StatusOr<grpc_core::ClientMetadataHandle> ProcessPluginResult(
const grpc_metadata* md, size_t num_md, grpc_status_code status,
const char* error_details);
- grpc_core::Poll<y_absl::StatusOr<grpc_core::ClientInitialMetadata>>
+ grpc_core::Poll<y_absl::StatusOr<grpc_core::ClientMetadataHandle>>
PollAsyncResult();
static void RequestMetadataReady(void* request, const grpc_metadata* md,
@@ -80,7 +107,7 @@ struct grpc_plugin_credentials final : public grpc_call_credentials {
grpc_core::Activity::current()->MakeNonOwningWaker()};
grpc_core::RefCountedPtr<grpc_plugin_credentials> call_creds_;
grpc_auth_metadata_context context_;
- grpc_core::ClientInitialMetadata md_;
+ grpc_core::ClientMetadataHandle md_;
// final status
y_absl::InlinedVector<grpc_metadata, 2> metadata_;
TString error_details_;
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/ssl/ssl_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/ssl/ssl_credentials.cc
index 1767871fc2..688a29d122 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/ssl/ssl_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/ssl/ssl_credentials.cc
@@ -22,13 +22,23 @@
#include <string.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/security/security_connector/ssl_utils.h"
#include "src/core/lib/surface/api_trace.h"
+#include "src/core/tsi/ssl/session_cache/ssl_session_cache.h"
#include "src/core/tsi/ssl_transport_security.h"
//
@@ -37,8 +47,7 @@
grpc_ssl_credentials::grpc_ssl_credentials(
const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pair,
- const grpc_ssl_verify_peer_options* verify_options)
- : grpc_channel_credentials(GRPC_CHANNEL_CREDENTIALS_TYPE_SSL) {
+ const grpc_ssl_verify_peer_options* verify_options) {
build_config(pem_root_certs, pem_key_cert_pair, verify_options);
}
@@ -54,35 +63,28 @@ grpc_ssl_credentials::~grpc_ssl_credentials() {
grpc_core::RefCountedPtr<grpc_channel_security_connector>
grpc_ssl_credentials::create_security_connector(
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
- const char* target, const grpc_channel_args* args,
- grpc_channel_args** new_args) {
- const char* overridden_target_name = nullptr;
- tsi_ssl_session_cache* ssl_session_cache = nullptr;
- for (size_t i = 0; args && i < args->num_args; i++) {
- grpc_arg* arg = &args->args[i];
- if (strcmp(arg->key, GRPC_SSL_TARGET_NAME_OVERRIDE_ARG) == 0 &&
- arg->type == GRPC_ARG_STRING) {
- overridden_target_name = arg->value.string;
- }
- if (strcmp(arg->key, GRPC_SSL_SESSION_CACHE_ARG) == 0 &&
- arg->type == GRPC_ARG_POINTER) {
- ssl_session_cache =
- static_cast<tsi_ssl_session_cache*>(arg->value.pointer.p);
- }
- }
+ const char* target, grpc_core::ChannelArgs* args) {
+ y_absl::optional<TString> overridden_target_name =
+ args->GetOwnedString(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG);
+ auto* ssl_session_cache = args->GetObject<tsi::SslSessionLRUCache>();
grpc_core::RefCountedPtr<grpc_channel_security_connector> sc =
grpc_ssl_channel_security_connector_create(
this->Ref(), std::move(call_creds), &config_, target,
- overridden_target_name, ssl_session_cache);
+ overridden_target_name.has_value() ? overridden_target_name->c_str()
+ : nullptr,
+ ssl_session_cache == nullptr ? nullptr : ssl_session_cache->c_ptr());
if (sc == nullptr) {
return sc;
}
- grpc_arg new_arg = grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_HTTP2_SCHEME), const_cast<char*>("https"));
- *new_args = grpc_channel_args_copy_and_add(args, &new_arg, 1);
+ *args = args->Set(GRPC_ARG_HTTP2_SCHEME, "https");
return sc;
}
+grpc_core::UniqueTypeName grpc_ssl_credentials::Type() {
+ static grpc_core::UniqueTypeName::Factory kFactory("Ssl");
+ return kFactory.Create();
+}
+
void grpc_ssl_credentials::build_config(
const char* pem_root_certs, grpc_ssl_pem_key_cert_pair* pem_key_cert_pair,
const grpc_ssl_verify_peer_options* verify_options) {
@@ -162,8 +164,7 @@ struct grpc_ssl_server_credentials_options {
};
grpc_ssl_server_credentials::grpc_ssl_server_credentials(
- const grpc_ssl_server_credentials_options& options)
- : grpc_server_credentials(GRPC_CHANNEL_CREDENTIALS_TYPE_SSL) {
+ const grpc_ssl_server_credentials_options& options) {
if (options.certificate_config_fetcher != nullptr) {
config_.client_certificate_request = options.client_certificate_request;
certificate_config_fetcher_ = *options.certificate_config_fetcher;
@@ -182,10 +183,15 @@ grpc_ssl_server_credentials::~grpc_ssl_server_credentials() {
}
grpc_core::RefCountedPtr<grpc_server_security_connector>
grpc_ssl_server_credentials::create_security_connector(
- const grpc_channel_args* /* args */) {
+ const grpc_core::ChannelArgs& /* args */) {
return grpc_ssl_server_security_connector_create(this->Ref());
}
+grpc_core::UniqueTypeName grpc_ssl_server_credentials::Type() {
+ static grpc_core::UniqueTypeName::Factory kFactory("Ssl");
+ return kFactory.Create();
+}
+
tsi_ssl_pem_key_cert_pair* grpc_convert_grpc_to_tsi_cert_pairs(
const grpc_ssl_pem_key_cert_pair* pem_key_cert_pairs,
size_t num_key_cert_pairs) {
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/ssl/ssl_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/ssl/ssl_credentials.h
index d5b1535f30..746bbebdfd 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/ssl/ssl_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/ssl/ssl_credentials.h
@@ -20,8 +20,21 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/grpc_security_constants.h>
+#include <grpc/support/log.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
#include "src/core/lib/security/security_connector/ssl/ssl_security_connector.h"
+#include "src/core/tsi/ssl_transport_security.h"
class grpc_ssl_credentials : public grpc_channel_credentials {
public:
@@ -34,8 +47,11 @@ class grpc_ssl_credentials : public grpc_channel_credentials {
grpc_core::RefCountedPtr<grpc_channel_security_connector>
create_security_connector(
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
- const char* target, const grpc_channel_args* args,
- grpc_channel_args** new_args) override;
+ const char* target, grpc_core::ChannelArgs* args) override;
+
+ static grpc_core::UniqueTypeName Type();
+
+ grpc_core::UniqueTypeName type() const override { return Type(); }
// TODO(mattstev): Plumb to wrapped languages. Until then, setting the TLS
// version should be done for testing purposes only.
@@ -74,7 +90,11 @@ class grpc_ssl_server_credentials final : public grpc_server_credentials {
~grpc_ssl_server_credentials() override;
grpc_core::RefCountedPtr<grpc_server_security_connector>
- create_security_connector(const grpc_channel_args* /* args */) override;
+ create_security_connector(const grpc_core::ChannelArgs& /* args */) override;
+
+ static grpc_core::UniqueTypeName Type();
+
+ grpc_core::UniqueTypeName type() const override { return Type(); }
bool has_cert_config_fetcher() const {
return certificate_config_fetcher_.cb != nullptr;
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc
index 6aadf9b736..978484af52 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc
@@ -18,12 +18,11 @@
#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
-#include <stdlib.h>
-#include <string.h>
+#include <algorithm>
+#include <vector>
-#include <grpc/support/alloc.h>
+#include <grpc/grpc_security.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
void grpc_tls_certificate_distributor::SetKeyMaterials(
const TString& cert_name, y_absl::optional<TString> pem_root_certs,
@@ -154,7 +153,7 @@ void grpc_tls_certificate_distributor::SetErrorForCert(
};
void grpc_tls_certificate_distributor::SetError(grpc_error_handle error) {
- GPR_ASSERT(error != GRPC_ERROR_NONE);
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
grpc_core::MutexLock lock(&mu_);
for (const auto& watcher : watchers_) {
const auto watcher_ptr = watcher.first;
@@ -232,7 +231,8 @@ void grpc_tls_certificate_distributor::WatchTlsCertificates(
std::move(updated_identity_pairs));
}
// Notify this watcher if the certs it is watching already had some errors.
- if (root_error != GRPC_ERROR_NONE || identity_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(root_error) ||
+ !GRPC_ERROR_IS_NONE(identity_error)) {
watcher_ptr->OnError(GRPC_ERROR_REF(root_error),
GRPC_ERROR_REF(identity_error));
}
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h
index 86275e44f5..5c6f42876a 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h
@@ -19,14 +19,21 @@
#include <grpc/support/port_platform.h>
+#include <functional>
+#include <map>
+#include <memory>
+#include <set>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include <utility>
-#include "y_absl/container/inlined_vector.h"
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/types/optional.h"
-#include <grpc/grpc_security.h>
-
#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/security/security_connector/ssl_utils.h"
struct grpc_tls_identity_pairs {
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc
index aedc21aebc..f132c573b9 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc
@@ -18,14 +18,33 @@
#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
-#include <openssl/ssl.h>
+#include <stdint.h>
+#include <time.h>
-#include <grpc/support/alloc.h>
+#include <algorithm>
+#include <utility>
+#include <vector>
+
+#include <openssl/bio.h>
+#include <openssl/crypto.h>
+#include <openssl/evp.h>
+#include <openssl/pem.h>
+#include <openssl/x509.h>
+
+#include "y_absl/status/status.h"
+
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/slice.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
+#include <grpc/support/time.h>
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/stat.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/load_file.h"
#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/core/lib/surface/api_trace.h"
namespace grpc_core {
@@ -71,8 +90,8 @@ StaticDataCertificateProvider::StaticDataCertificateProvider(
identity_cert_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Unable to get latest identity certificates.");
}
- if (root_cert_error != GRPC_ERROR_NONE ||
- identity_cert_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(root_cert_error) ||
+ !GRPC_ERROR_IS_NONE(identity_cert_error)) {
distributor_->SetErrorForCert(cert_name, root_cert_error,
identity_cert_error);
}
@@ -85,6 +104,11 @@ StaticDataCertificateProvider::~StaticDataCertificateProvider() {
distributor_->SetWatchStatusCallback(nullptr);
}
+UniqueTypeName StaticDataCertificateProvider::type() const {
+ static UniqueTypeName::Factory kFactory("StaticData");
+ return kFactory.Create();
+}
+
namespace {
gpr_timespec TimeoutSecondsToDeadline(int64_t seconds) {
@@ -96,7 +120,7 @@ gpr_timespec TimeoutSecondsToDeadline(int64_t seconds) {
FileWatcherCertificateProvider::FileWatcherCertificateProvider(
TString private_key_path, TString identity_certificate_path,
- TString root_cert_path, unsigned int refresh_interval_sec)
+ TString root_cert_path, int64_t refresh_interval_sec)
: private_key_path_(std::move(private_key_path)),
identity_certificate_path_(std::move(identity_certificate_path)),
root_cert_path_(std::move(root_cert_path)),
@@ -161,8 +185,8 @@ FileWatcherCertificateProvider::FileWatcherCertificateProvider(
identity_cert_error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Unable to get latest identity certificates.");
}
- if (root_cert_error != GRPC_ERROR_NONE ||
- identity_cert_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(root_cert_error) ||
+ !GRPC_ERROR_IS_NONE(identity_cert_error)) {
distributor_->SetErrorForCert(cert_name, root_cert_error,
identity_cert_error);
}
@@ -177,6 +201,11 @@ FileWatcherCertificateProvider::~FileWatcherCertificateProvider() {
refresh_thread_.Join();
}
+UniqueTypeName FileWatcherCertificateProvider::type() const {
+ static UniqueTypeName::Factory kFactory("FileWatcher");
+ return kFactory.Create();
+}
+
void FileWatcherCertificateProvider::ForceUpdate() {
y_absl::optional<TString> root_certificate;
y_absl::optional<PemKeyCertPairList> pem_key_cert_pairs;
@@ -260,7 +289,7 @@ FileWatcherCertificateProvider::ReadRootCertificatesFromFile(
grpc_slice root_slice = grpc_empty_slice();
grpc_error_handle root_error =
grpc_load_file(root_cert_full_path.c_str(), 0, &root_slice);
- if (root_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(root_error)) {
gpr_log(GPR_ERROR, "Reading file %s failed: %s",
root_cert_full_path.c_str(),
grpc_error_std_string(root_error).c_str());
@@ -319,7 +348,7 @@ FileWatcherCertificateProvider::ReadIdentityKeyCertPairFromFiles(
SliceWrapper key_slice, cert_slice;
grpc_error_handle key_error =
grpc_load_file(private_key_path.c_str(), 0, &key_slice.slice);
- if (key_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(key_error)) {
gpr_log(GPR_ERROR, "Reading file %s failed: %s. Start retrying...",
private_key_path.c_str(),
grpc_error_std_string(key_error).c_str());
@@ -328,7 +357,7 @@ FileWatcherCertificateProvider::ReadIdentityKeyCertPairFromFiles(
}
grpc_error_handle cert_error =
grpc_load_file(identity_certificate_path.c_str(), 0, &cert_slice.slice);
- if (cert_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(cert_error)) {
gpr_log(GPR_ERROR, "Reading file %s failed: %s. Start retrying...",
identity_certificate_path.c_str(),
grpc_error_std_string(cert_error).c_str());
@@ -373,7 +402,8 @@ y_absl::StatusOr<bool> PrivateKeyAndCertificateMatch(
if (cert_chain.empty()) {
return y_absl::InvalidArgumentError("Certificate string is empty.");
}
- BIO* cert_bio = BIO_new_mem_buf(cert_chain.data(), cert_chain.size());
+ BIO* cert_bio =
+ BIO_new_mem_buf(cert_chain.data(), static_cast<int>(cert_chain.size()));
if (cert_bio == nullptr) {
return y_absl::InvalidArgumentError(
"Conversion from certificate string to BIO failed.");
@@ -393,7 +423,7 @@ y_absl::StatusOr<bool> PrivateKeyAndCertificateMatch(
"Extraction of public key from x.509 certificate failed.");
}
BIO* private_key_bio =
- BIO_new_mem_buf(private_key.data(), private_key.size());
+ BIO_new_mem_buf(private_key.data(), static_cast<int>(private_key.size()));
if (private_key_bio == nullptr) {
EVP_PKEY_free(public_evp_pkey);
return y_absl::InvalidArgumentError(
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h
index 2defc93177..b731966f16 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h
@@ -19,18 +19,28 @@
#include <grpc/support/port_platform.h>
-#include <string.h>
+#include <stdint.h>
-#include "y_absl/container/inlined_vector.h"
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/base/thread_annotations.h"
#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
#include <grpc/grpc_security.h>
+#include <grpc/support/log.h>
+#include <grpc/support/sync.h>
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
#include "src/core/lib/gprpp/thd.h"
-#include "src/core/lib/iomgr/load_file.h"
-#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
#include "src/core/lib/security/security_connector/ssl_utils.h"
@@ -50,6 +60,39 @@ struct grpc_tls_certificate_provider
virtual grpc_core::RefCountedPtr<grpc_tls_certificate_distributor>
distributor() const = 0;
+
+ // Compares this grpc_tls_certificate_provider object with \a other.
+ // If this method returns 0, it means that gRPC can treat the two certificate
+ // providers as effectively the same. This method is used to compare
+ // `grpc_tls_certificate_provider` objects when they are present in
+ // channel_args. One important usage of this is when channel args are used in
+ // SubchannelKey, which leads to a useful property that allows subchannels to
+ // be reused when two different `grpc_tls_certificate_provider` objects are
+ // used but they compare as equal (assuming other channel args match).
+ int Compare(const grpc_tls_certificate_provider* other) const {
+ GPR_ASSERT(other != nullptr);
+ int r = type().Compare(other->type());
+ if (r != 0) return r;
+ return CompareImpl(other);
+ }
+
+ // The pointer value \a type is used to uniquely identify a creds
+ // implementation for down-casting purposes. Every provider implementation
+ // should use a unique string instance, which should be returned by all
+ // instances of that provider implementation.
+ virtual grpc_core::UniqueTypeName type() const = 0;
+
+ static y_absl::string_view ChannelArgName();
+ static int ChannelArgsCompare(const grpc_tls_certificate_provider* a,
+ const grpc_tls_certificate_provider* b) {
+ return a->Compare(b);
+ }
+
+ private:
+ // Implementation for `Compare` method intended to be overridden by
+ // subclasses. Only invoked if `type()` and `other->type()` point to the same
+ // string.
+ virtual int CompareImpl(const grpc_tls_certificate_provider* other) const = 0;
};
namespace grpc_core {
@@ -68,11 +111,20 @@ class StaticDataCertificateProvider final
return distributor_;
}
+ UniqueTypeName type() const override;
+
private:
struct WatcherInfo {
bool root_being_watched = false;
bool identity_being_watched = false;
};
+
+ int CompareImpl(const grpc_tls_certificate_provider* other) const override {
+ // TODO(yashykt): Maybe do something better here.
+ return QsortCompare(static_cast<const grpc_tls_certificate_provider*>(this),
+ other);
+ }
+
RefCountedPtr<grpc_tls_certificate_distributor> distributor_;
TString root_certificate_;
PemKeyCertPairList pem_key_cert_pairs_;
@@ -90,7 +142,7 @@ class FileWatcherCertificateProvider final
FileWatcherCertificateProvider(TString private_key_path,
TString identity_certificate_path,
TString root_cert_path,
- unsigned int refresh_interval_sec);
+ int64_t refresh_interval_sec);
~FileWatcherCertificateProvider() override;
@@ -98,11 +150,20 @@ class FileWatcherCertificateProvider final
return distributor_;
}
+ UniqueTypeName type() const override;
+
private:
struct WatcherInfo {
bool root_being_watched = false;
bool identity_being_watched = false;
};
+
+ int CompareImpl(const grpc_tls_certificate_provider* other) const override {
+ // TODO(yashykt): Maybe do something better here.
+ return QsortCompare(static_cast<const grpc_tls_certificate_provider*>(this),
+ other);
+ }
+
// Force an update from the file system regardless of the interval.
void ForceUpdate();
// Read the root certificates from files and update the distributor.
@@ -118,7 +179,7 @@ class FileWatcherCertificateProvider final
TString private_key_path_;
TString identity_certificate_path_;
TString root_cert_path_;
- unsigned int refresh_interval_sec_ = 0;
+ int64_t refresh_interval_sec_ = 0;
RefCountedPtr<grpc_tls_certificate_distributor> distributor_;
Thread refresh_thread_;
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc
index 70def18c7f..5f1eade9ea 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc
@@ -18,18 +18,30 @@
#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h"
+#include <string.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/strings/string_view.h"
+
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/host_port.h"
-#include "src/core/lib/gprpp/stat.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/security/credentials/tls/tls_utils.h"
-#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/surface/api_trace.h"
namespace grpc_core {
+//
+// ExternalCertificateVerifier
+//
+
bool ExternalCertificateVerifier::Verify(
grpc_tls_custom_verification_check_request* request,
std::function<void(y_absl::Status)> callback, y_absl::Status* sync_status) {
@@ -56,6 +68,11 @@ bool ExternalCertificateVerifier::Verify(
return is_done;
}
+UniqueTypeName ExternalCertificateVerifier::type() const {
+ static UniqueTypeName::Factory kFactory("External");
+ return kFactory.Create();
+}
+
void ExternalCertificateVerifier::OnVerifyDone(
grpc_tls_custom_verification_check_request* request, void* callback_arg,
grpc_status_code status, const char* error_details) {
@@ -80,6 +97,19 @@ void ExternalCertificateVerifier::OnVerifyDone(
}
}
+//
+// NoOpCertificateVerifier
+//
+
+UniqueTypeName NoOpCertificateVerifier::type() const {
+ static UniqueTypeName::Factory kFactory("NoOp");
+ return kFactory.Create();
+}
+
+//
+// HostNameCertificateVerifier
+//
+
bool HostNameCertificateVerifier::Verify(
grpc_tls_custom_verification_check_request* request,
std::function<void(y_absl::Status)>, y_absl::Status* sync_status) {
@@ -134,7 +164,8 @@ bool HostNameCertificateVerifier::Verify(
const char* common_name = request->peer_info.common_name;
// We are using the target name sent from the client as a matcher to match
// against identity name on the peer cert.
- if (VerifySubjectAlternativeName(common_name, TString(target_host))) {
+ if (common_name != nullptr &&
+ VerifySubjectAlternativeName(common_name, TString(target_host))) {
return true; // synchronous check
}
}
@@ -143,6 +174,11 @@ bool HostNameCertificateVerifier::Verify(
return true; // synchronous check
}
+UniqueTypeName HostNameCertificateVerifier::type() const {
+ static UniqueTypeName::Factory kFactory("Hostname");
+ return kFactory.Create();
+}
+
} // namespace grpc_core
//
@@ -186,6 +222,11 @@ grpc_tls_certificate_verifier* grpc_tls_certificate_verifier_external_create(
return new grpc_core::ExternalCertificateVerifier(external_verifier);
}
+grpc_tls_certificate_verifier* grpc_tls_certificate_verifier_no_op_create() {
+ grpc_core::ExecCtx exec_ctx;
+ return new grpc_core::NoOpCertificateVerifier();
+}
+
grpc_tls_certificate_verifier*
grpc_tls_certificate_verifier_host_name_create() {
grpc_core::ExecCtx exec_ctx;
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h
index 6014d5c9c5..b41d013f8a 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h
@@ -19,26 +19,25 @@
#include <grpc/support/port_platform.h>
-#include <string.h>
+#include <functional>
+#include <map>
+#include "y_absl/base/thread_annotations.h"
#include "y_absl/status/status.h"
#include <grpc/grpc_security.h>
+#include <grpc/status.h>
+#include <grpc/support/log.h>
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/ref_counted.h"
-#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/gprpp/thd.h"
-#include "src/core/lib/iomgr/load_file.h"
-#include "src/core/lib/iomgr/pollset_set.h"
-#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
-#include "src/core/lib/security/security_connector/ssl_utils.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
// An abstraction of the verifier that all verifier subclasses should extend.
struct grpc_tls_certificate_verifier
: public grpc_core::RefCounted<grpc_tls_certificate_verifier> {
public:
- grpc_tls_certificate_verifier() = default;
-
~grpc_tls_certificate_verifier() override = default;
// Verifies the specific request. It can be processed in sync or async mode.
// If the caller want it to be processed asynchronously, return false
@@ -52,6 +51,28 @@ struct grpc_tls_certificate_verifier
// Operations that will be performed when a request is cancelled.
// This is only needed when in async mode.
virtual void Cancel(grpc_tls_custom_verification_check_request* request) = 0;
+
+ // Compares this grpc_tls_certificate_verifier object with \a other.
+ // If this method returns 0, it means that gRPC can treat the two certificate
+ // verifiers as effectively the same.
+ int Compare(const grpc_tls_certificate_verifier* other) const {
+ GPR_ASSERT(other != nullptr);
+ int r = type().Compare(other->type());
+ if (r != 0) return r;
+ return CompareImpl(other);
+ }
+
+ // The pointer value \a type is used to uniquely identify a verifier
+ // implementation for down-casting purposes. Every verifier implementation
+ // should use a unique string instance, which should be returned by all
+ // instances of that verifier implementation.
+ virtual grpc_core::UniqueTypeName type() const = 0;
+
+ private:
+ // Implementation for `Compare` method intended to be overridden by
+ // subclasses. Only invoked if `type()` and `other->type()` point to the same
+ // string.
+ virtual int CompareImpl(const grpc_tls_certificate_verifier* other) const = 0;
};
namespace grpc_core {
@@ -78,12 +99,20 @@ class ExternalCertificateVerifier : public grpc_tls_certificate_verifier {
external_verifier_->cancel(external_verifier_->user_data, request);
}
+ UniqueTypeName type() const override;
+
private:
- grpc_tls_certificate_verifier_external* external_verifier_;
+ int CompareImpl(const grpc_tls_certificate_verifier* other) const override {
+ const auto* o = static_cast<const ExternalCertificateVerifier*>(other);
+ return QsortCompare(external_verifier_, o->external_verifier_);
+ }
static void OnVerifyDone(grpc_tls_custom_verification_check_request* request,
void* callback_arg, grpc_status_code status,
const char* error_details);
+
+ grpc_tls_certificate_verifier_external* external_verifier_;
+
// Guards members below.
Mutex mu_;
// stores each check request and its corresponding callback function.
@@ -92,6 +121,29 @@ class ExternalCertificateVerifier : public grpc_tls_certificate_verifier {
request_map_ Y_ABSL_GUARDED_BY(mu_);
};
+// An internal verifier that won't perform any post-handshake checks.
+// Note: using this solely without any other authentication mechanisms on the
+// peer identity will leave your applications to the MITM(Man-In-The-Middle)
+// attacks. Users should avoid doing so in production environments.
+class NoOpCertificateVerifier : public grpc_tls_certificate_verifier {
+ public:
+ bool Verify(grpc_tls_custom_verification_check_request*,
+ std::function<void(y_absl::Status)>, y_absl::Status*) override {
+ return true; // synchronous check
+ };
+ void Cancel(grpc_tls_custom_verification_check_request*) override {}
+
+ UniqueTypeName type() const override;
+
+ private:
+ int CompareImpl(
+ const grpc_tls_certificate_verifier* /* other */) const override {
+ // No differentiating factor between different NoOpCertificateVerifier
+ // objects.
+ return 0;
+ }
+};
+
// An internal verifier that will perform hostname verification check.
class HostNameCertificateVerifier : public grpc_tls_certificate_verifier {
public:
@@ -99,6 +151,16 @@ class HostNameCertificateVerifier : public grpc_tls_certificate_verifier {
std::function<void(y_absl::Status)> callback,
y_absl::Status* sync_status) override;
void Cancel(grpc_tls_custom_verification_check_request*) override {}
+
+ UniqueTypeName type() const override;
+
+ private:
+ int CompareImpl(
+ const grpc_tls_certificate_verifier* /* other */) const override {
+ // No differentiating factor between different HostNameCertificateVerifier
+ // objects.
+ return 0;
+ }
};
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc
index 6adafa407a..3f3be975d8 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc
@@ -20,14 +20,13 @@
#include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h"
-#include <stdlib.h>
-#include <string.h>
-
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/surface/api_trace.h"
+#include "src/core/tsi/ssl_transport_security.h"
/** -- Wrapper APIs declared in grpc_security.h -- **/
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h
index 340df22e8d..b2ee5a02d1 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h
@@ -1,20 +1,22 @@
-/*
- *
- * Copyright 2018 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
+//
+//
+// Copyright 2018 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+// Generated by tools/codegen/core/gen_grpc_tls_credentials_options.py
#ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CREDENTIALS_OPTIONS_H
#define GRPC_CORE_LIB_SECURITY_CREDENTIALS_TLS_GRPC_TLS_CREDENTIALS_OPTIONS_H
@@ -38,103 +40,72 @@ struct grpc_tls_credentials_options
: public grpc_core::RefCounted<grpc_tls_credentials_options> {
public:
~grpc_tls_credentials_options() override = default;
+
// Getters for member fields.
- grpc_ssl_client_certificate_request_type cert_request_type() const {
- return cert_request_type_;
- }
+ grpc_ssl_client_certificate_request_type cert_request_type() const { return cert_request_type_; }
bool verify_server_cert() const { return verify_server_cert_; }
grpc_tls_version min_tls_version() const { return min_tls_version_; }
grpc_tls_version max_tls_version() const { return max_tls_version_; }
- // Returns the verifier set in the options.
grpc_tls_certificate_verifier* certificate_verifier() {
- return verifier_.get();
+ return certificate_verifier_.get();
}
bool check_call_host() const { return check_call_host_; }
- // Returns the distributor from provider_ if it is set, nullptr otherwise.
+ // Returns the distributor from certificate_provider_ if it is set, nullptr otherwise.
grpc_tls_certificate_distributor* certificate_distributor() {
- if (provider_ != nullptr) return provider_->distributor().get();
+ if (certificate_provider_ != nullptr) { return certificate_provider_->distributor().get(); }
return nullptr;
}
- bool watch_root_cert() { return watch_root_cert_; }
- const TString& root_cert_name() { return root_cert_name_; }
- bool watch_identity_pair() { return watch_identity_pair_; }
- const TString& identity_cert_name() { return identity_cert_name_; }
- // Returns the previously set tls session key log file path.
- const TString& tls_session_key_log_file_path() {
- return tls_session_key_log_file_path_;
- }
- const TString& crl_directory() { return crl_directory_; }
+ bool watch_root_cert() const { return watch_root_cert_; }
+ const TString& root_cert_name() const { return root_cert_name_; }
+ bool watch_identity_pair() const { return watch_identity_pair_; }
+ const TString& identity_cert_name() const { return identity_cert_name_; }
+ const TString& tls_session_key_log_file_path() const { return tls_session_key_log_file_path_; }
+ const TString& crl_directory() const { return crl_directory_; }
// Setters for member fields.
- void set_cert_request_type(
- const grpc_ssl_client_certificate_request_type type) {
- cert_request_type_ = type;
- }
- void set_verify_server_cert(bool verify_server_cert) {
- verify_server_cert_ = verify_server_cert;
- }
- void set_min_tls_version(grpc_tls_version min_tls_version) {
- min_tls_version_ = min_tls_version;
- }
- void set_max_tls_version(grpc_tls_version max_tls_version) {
- max_tls_version_ = max_tls_version;
- }
- // Sets the verifier in the options.
- void set_certificate_verifier(
- grpc_core::RefCountedPtr<grpc_tls_certificate_verifier> verifier) {
- verifier_ = std::move(verifier);
- }
- // Sets the verifier in the options.
- void set_check_call_host(bool check_call_host) {
- check_call_host_ = check_call_host;
- }
- // Sets the provider in the options.
- void set_certificate_provider(
- grpc_core::RefCountedPtr<grpc_tls_certificate_provider> provider) {
- provider_ = std::move(provider);
- }
- // If need to watch the updates of root certificates with name
- // |root_cert_name|. The default value is false. If used in tls_credentials,
- // it should always be set to true unless the root certificates are not
- // needed.
- void set_watch_root_cert(bool watch) { watch_root_cert_ = watch; }
- // Sets the name of root certificates being watched, if |set_watch_root_cert|
- // is called. If not set, an empty string will be used as the name.
- void set_root_cert_name(TString root_cert_name) {
- root_cert_name_ = std::move(root_cert_name);
- }
- // If need to watch the updates of identity certificates with name
- // |identity_cert_name|.
- // The default value is false.
- // If used in tls_credentials, it should always be set to true
- // unless the identity key-cert pairs are not needed.
- void set_watch_identity_pair(bool watch) { watch_identity_pair_ = watch; }
- // Sets the name of identity key-cert pairs being watched, if
- // |set_watch_identity_pair| is called. If not set, an empty string will
- // be used as the name.
- void set_identity_cert_name(TString identity_cert_name) {
- identity_cert_name_ = std::move(identity_cert_name);
- }
- // Sets the tls session key log file path.
- void set_tls_session_key_log_file_path(
- TString tls_session_key_log_file_path) {
- tls_session_key_log_file_path_ = std::move(tls_session_key_log_file_path);
- }
+ void set_cert_request_type(grpc_ssl_client_certificate_request_type cert_request_type) { cert_request_type_ = cert_request_type; }
+ void set_verify_server_cert(bool verify_server_cert) { verify_server_cert_ = verify_server_cert; }
+ void set_min_tls_version(grpc_tls_version min_tls_version) { min_tls_version_ = min_tls_version; }
+ void set_max_tls_version(grpc_tls_version max_tls_version) { max_tls_version_ = max_tls_version; }
+ void set_certificate_verifier(grpc_core::RefCountedPtr<grpc_tls_certificate_verifier> certificate_verifier) { certificate_verifier_ = std::move(certificate_verifier); }
+ void set_check_call_host(bool check_call_host) { check_call_host_ = check_call_host; }
+ void set_certificate_provider(grpc_core::RefCountedPtr<grpc_tls_certificate_provider> certificate_provider) { certificate_provider_ = std::move(certificate_provider); }
+ // If need to watch the updates of root certificates with name |root_cert_name|. The default value is false. If used in tls_credentials, it should always be set to true unless the root certificates are not needed.
+ void set_watch_root_cert(bool watch_root_cert) { watch_root_cert_ = watch_root_cert; }
+ // Sets the name of root certificates being watched, if |set_watch_root_cert| is called. If not set, an empty string will be used as the name.
+ void set_root_cert_name(TString root_cert_name) { root_cert_name_ = std::move(root_cert_name); }
+ // If need to watch the updates of identity certificates with name |identity_cert_name|. The default value is false. If used in tls_credentials, it should always be set to true unless the identity key-cert pairs are not needed.
+ void set_watch_identity_pair(bool watch_identity_pair) { watch_identity_pair_ = watch_identity_pair; }
+ // Sets the name of identity key-cert pairs being watched, if |set_watch_identity_pair| is called. If not set, an empty string will be used as the name.
+ void set_identity_cert_name(TString identity_cert_name) { identity_cert_name_ = std::move(identity_cert_name); }
+ void set_tls_session_key_log_file_path(TString tls_session_key_log_file_path) { tls_session_key_log_file_path_ = std::move(tls_session_key_log_file_path); }
+ // gRPC will enforce CRLs on all handshakes from all hashed CRL files inside of the crl_directory. If not set, an empty string will be used, which will not enable CRL checking. Only supported for OpenSSL version > 1.1.
+ void set_crl_directory(TString crl_directory) { crl_directory_ = std::move(crl_directory); }
- // gRPC will enforce CRLs on all handshakes from all hashed CRL files inside
- // of the crl_directory. If not set, an empty string will be used, which will
- // not enable CRL checking. Only supported for OpenSSL version > 1.1.
- void set_crl_directory(TString path) { crl_directory_ = std::move(path); }
+ bool operator==(const grpc_tls_credentials_options& other) const {
+ return cert_request_type_ == other.cert_request_type_ &&
+ verify_server_cert_ == other.verify_server_cert_ &&
+ min_tls_version_ == other.min_tls_version_ &&
+ max_tls_version_ == other.max_tls_version_ &&
+ (certificate_verifier_ == other.certificate_verifier_ || (certificate_verifier_ != nullptr && other.certificate_verifier_ != nullptr && certificate_verifier_->Compare(other.certificate_verifier_.get()) == 0)) &&
+ check_call_host_ == other.check_call_host_ &&
+ (certificate_provider_ == other.certificate_provider_ || (certificate_provider_ != nullptr && other.certificate_provider_ != nullptr && certificate_provider_->Compare(other.certificate_provider_.get()) == 0)) &&
+ watch_root_cert_ == other.watch_root_cert_ &&
+ root_cert_name_ == other.root_cert_name_ &&
+ watch_identity_pair_ == other.watch_identity_pair_ &&
+ identity_cert_name_ == other.identity_cert_name_ &&
+ tls_session_key_log_file_path_ == other.tls_session_key_log_file_path_ &&
+ crl_directory_ == other.crl_directory_;
+ }
private:
- grpc_ssl_client_certificate_request_type cert_request_type_ =
- GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE;
+ grpc_ssl_client_certificate_request_type cert_request_type_ = GRPC_SSL_DONT_REQUEST_CLIENT_CERTIFICATE;
bool verify_server_cert_ = true;
grpc_tls_version min_tls_version_ = grpc_tls_version::TLS1_2;
grpc_tls_version max_tls_version_ = grpc_tls_version::TLS1_3;
- grpc_core::RefCountedPtr<grpc_tls_certificate_verifier> verifier_;
+ grpc_core::RefCountedPtr<grpc_tls_certificate_verifier> certificate_verifier_;
bool check_call_host_ = true;
- grpc_core::RefCountedPtr<grpc_tls_certificate_provider> provider_;
+ grpc_core::RefCountedPtr<grpc_tls_certificate_provider> certificate_provider_;
bool watch_root_cert_ = false;
TString root_cert_name_;
bool watch_identity_pair_ = false;
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_credentials.cc
index 60e60d521c..68e1994f07 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_credentials.cc
@@ -20,18 +20,24 @@
#include "src/core/lib/security/credentials/tls/tls_credentials.h"
-#include <cstring>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
#include <grpc/grpc.h>
-#include <grpc/support/alloc.h>
+#include <grpc/grpc_security_constants.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h"
#include "src/core/lib/security/security_connector/tls/tls_security_connector.h"
-
-#define GRPC_CREDENTIALS_TYPE_TLS "Tls"
+#include "src/core/tsi/ssl/session_cache/ssl_session_cache.h"
namespace {
@@ -70,59 +76,60 @@ bool CredentialOptionSanityCheck(grpc_tls_credentials_options* options,
TlsCredentials::TlsCredentials(
grpc_core::RefCountedPtr<grpc_tls_credentials_options> options)
- : grpc_channel_credentials(GRPC_CREDENTIALS_TYPE_TLS),
- options_(std::move(options)) {}
+ : options_(std::move(options)) {}
TlsCredentials::~TlsCredentials() {}
grpc_core::RefCountedPtr<grpc_channel_security_connector>
TlsCredentials::create_security_connector(
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
- const char* target_name, const grpc_channel_args* args,
- grpc_channel_args** new_args) {
- const char* overridden_target_name = nullptr;
- tsi_ssl_session_cache* ssl_session_cache = nullptr;
- for (size_t i = 0; args != nullptr && i < args->num_args; i++) {
- grpc_arg* arg = &args->args[i];
- if (strcmp(arg->key, GRPC_SSL_TARGET_NAME_OVERRIDE_ARG) == 0 &&
- arg->type == GRPC_ARG_STRING) {
- overridden_target_name = arg->value.string;
- }
- if (strcmp(arg->key, GRPC_SSL_SESSION_CACHE_ARG) == 0 &&
- arg->type == GRPC_ARG_POINTER) {
- ssl_session_cache =
- static_cast<tsi_ssl_session_cache*>(arg->value.pointer.p);
- }
- }
+ const char* target_name, grpc_core::ChannelArgs* args) {
+ y_absl::optional<TString> overridden_target_name =
+ args->GetOwnedString(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG);
+ auto* ssl_session_cache = args->GetObject<tsi::SslSessionLRUCache>();
grpc_core::RefCountedPtr<grpc_channel_security_connector> sc =
grpc_core::TlsChannelSecurityConnector::CreateTlsChannelSecurityConnector(
this->Ref(), options_, std::move(call_creds), target_name,
- overridden_target_name, ssl_session_cache);
+ overridden_target_name.has_value() ? overridden_target_name->c_str()
+ : nullptr,
+ ssl_session_cache == nullptr ? nullptr : ssl_session_cache->c_ptr());
if (sc == nullptr) {
return nullptr;
}
- if (args != nullptr) {
- grpc_arg new_arg = grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_HTTP2_SCHEME), const_cast<char*>("https"));
- *new_args = grpc_channel_args_copy_and_add(args, &new_arg, 1);
- }
+ *args = args->Set(GRPC_ARG_HTTP2_SCHEME, "https");
return sc;
}
+grpc_core::UniqueTypeName TlsCredentials::type() const {
+ static grpc_core::UniqueTypeName::Factory kFactory("Tls");
+ return kFactory.Create();
+}
+
+int TlsCredentials::cmp_impl(const grpc_channel_credentials* other) const {
+ const TlsCredentials* o = static_cast<const TlsCredentials*>(other);
+ if (*options_ == *o->options_) return 0;
+ return grpc_core::QsortCompare(
+ static_cast<const grpc_channel_credentials*>(this), other);
+}
+
TlsServerCredentials::TlsServerCredentials(
grpc_core::RefCountedPtr<grpc_tls_credentials_options> options)
- : grpc_server_credentials(GRPC_CREDENTIALS_TYPE_TLS),
- options_(std::move(options)) {}
+ : options_(std::move(options)) {}
TlsServerCredentials::~TlsServerCredentials() {}
grpc_core::RefCountedPtr<grpc_server_security_connector>
TlsServerCredentials::create_security_connector(
- const grpc_channel_args* /* args */) {
+ const grpc_core::ChannelArgs& /* args */) {
return grpc_core::TlsServerSecurityConnector::
CreateTlsServerSecurityConnector(this->Ref(), options_);
}
+grpc_core::UniqueTypeName TlsServerCredentials::type() const {
+ static grpc_core::UniqueTypeName::Factory kFactory("Tls");
+ return kFactory.Create();
+}
+
/** -- Wrapper APIs declared in grpc_security.h -- **/
grpc_channel_credentials* grpc_tls_credentials_create(
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_credentials.h
index 6dc4922700..881e1fb850 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_credentials.h
@@ -21,10 +21,14 @@
#include <grpc/support/port_platform.h>
+#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
#include "src/core/lib/security/credentials/credentials.h"
-#include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
class TlsCredentials final : public grpc_channel_credentials {
public:
@@ -35,17 +39,14 @@ class TlsCredentials final : public grpc_channel_credentials {
grpc_core::RefCountedPtr<grpc_channel_security_connector>
create_security_connector(
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
- const char* target_name, const grpc_channel_args* args,
- grpc_channel_args** new_args) override;
+ const char* target_name, grpc_core::ChannelArgs* args) override;
+
+ grpc_core::UniqueTypeName type() const override;
grpc_tls_credentials_options* options() const { return options_.get(); }
private:
- int cmp_impl(const grpc_channel_credentials* other) const override {
- // TODO(yashykt): Check if we can do something better here
- return grpc_core::QsortCompare(
- static_cast<const grpc_channel_credentials*>(this), other);
- }
+ int cmp_impl(const grpc_channel_credentials* other) const override;
grpc_core::RefCountedPtr<grpc_tls_credentials_options> options_;
};
@@ -57,7 +58,9 @@ class TlsServerCredentials final : public grpc_server_credentials {
~TlsServerCredentials() override;
grpc_core::RefCountedPtr<grpc_server_security_connector>
- create_security_connector(const grpc_channel_args* /* args */) override;
+ create_security_connector(const grpc_core::ChannelArgs& /* args */) override;
+
+ grpc_core::UniqueTypeName type() const override;
grpc_tls_credentials_options* options() const { return options_.get(); }
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_utils.cc b/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_utils.cc
index f8ecba3bd4..38e59b5428 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_utils.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_utils.cc
@@ -20,10 +20,14 @@
#include "src/core/lib/security/credentials/tls/tls_utils.h"
+#include <stddef.h>
+
#include "y_absl/strings/ascii.h"
#include "y_absl/strings/match.h"
#include "y_absl/strings/str_cat.h"
+#include <grpc/support/log.h>
+
namespace grpc_core {
// Based on
@@ -81,7 +85,7 @@ bool VerifySubjectAlternativeName(y_absl::string_view subject_alternative_name,
return false;
}
if (!y_absl::EndsWith(normalized_matcher, suffix)) return false;
- int suffix_start_index = normalized_matcher.length() - suffix.length();
+ size_t suffix_start_index = normalized_matcher.length() - suffix.length();
// Asterisk matching across domain labels is not permitted.
return suffix_start_index <= 0 /* should not happen */ ||
normalized_matcher.find_last_of('.', suffix_start_index - 1) ==
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_utils.h b/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_utils.h
index ff11551b45..9aa690df0f 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_utils.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/tls/tls_utils.h
@@ -27,7 +27,7 @@
#include "y_absl/strings/string_view.h"
-#include "src/core/lib/security/context/security_context.h"
+#include <grpc/grpc_security.h>
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/xds/xds_credentials.cc b/contrib/libs/grpc/src/core/lib/security/credentials/xds/xds_credentials.cc
index 4df24ccac5..aecf0ef319 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/xds/xds_credentials.cc
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/xds/xds_credentials.cc
@@ -20,17 +20,24 @@
#include "src/core/lib/security/credentials/xds/xds_credentials.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/grpc_security_constants.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/log.h>
+
#include "src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h"
#include "src/core/ext/xds/xds_certificate_provider.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
#include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h"
#include "src/core/lib/security/credentials/tls/tls_credentials.h"
#include "src/core/lib/security/credentials/tls/tls_utils.h"
-#include "src/core/lib/uri/uri_parser.h"
namespace grpc_core {
-const char kCredentialsTypeXds[] = "Xds";
-
namespace {
bool XdsVerifySubjectAlternativeNames(
@@ -61,44 +68,56 @@ bool XdsVerifySubjectAlternativeNames(
return false;
}
-class XdsCertificateVerifier : public grpc_tls_certificate_verifier {
- public:
- XdsCertificateVerifier(
- RefCountedPtr<XdsCertificateProvider> xds_certificate_provider,
- TString cluster_name)
- : xds_certificate_provider_(std::move(xds_certificate_provider)),
- cluster_name_(std::move(cluster_name)) {}
-
- bool Verify(grpc_tls_custom_verification_check_request* request,
- std::function<void(y_absl::Status)>,
- y_absl::Status* sync_status) override {
- GPR_ASSERT(request != nullptr);
- if (!XdsVerifySubjectAlternativeNames(
- request->peer_info.san_names.uri_names,
- request->peer_info.san_names.uri_names_size,
- xds_certificate_provider_->GetSanMatchers(cluster_name_)) &&
- !XdsVerifySubjectAlternativeNames(
- request->peer_info.san_names.ip_names,
- request->peer_info.san_names.ip_names_size,
- xds_certificate_provider_->GetSanMatchers(cluster_name_)) &&
- !XdsVerifySubjectAlternativeNames(
- request->peer_info.san_names.dns_names,
- request->peer_info.san_names.dns_names_size,
- xds_certificate_provider_->GetSanMatchers(cluster_name_))) {
- *sync_status = y_absl::Status(
- y_absl::StatusCode::kUnauthenticated,
- "SANs from certificate did not match SANs from xDS control plane");
- }
- return true; /* synchronous check */
+} // namespace
+
+//
+// XdsCertificateVerifier
+//
+
+XdsCertificateVerifier::XdsCertificateVerifier(
+ RefCountedPtr<XdsCertificateProvider> xds_certificate_provider,
+ TString cluster_name)
+ : xds_certificate_provider_(std::move(xds_certificate_provider)),
+ cluster_name_(std::move(cluster_name)) {}
+
+bool XdsCertificateVerifier::Verify(
+ grpc_tls_custom_verification_check_request* request,
+ std::function<void(y_absl::Status)>, y_absl::Status* sync_status) {
+ GPR_ASSERT(request != nullptr);
+ if (!XdsVerifySubjectAlternativeNames(
+ request->peer_info.san_names.uri_names,
+ request->peer_info.san_names.uri_names_size,
+ xds_certificate_provider_->GetSanMatchers(cluster_name_)) &&
+ !XdsVerifySubjectAlternativeNames(
+ request->peer_info.san_names.ip_names,
+ request->peer_info.san_names.ip_names_size,
+ xds_certificate_provider_->GetSanMatchers(cluster_name_)) &&
+ !XdsVerifySubjectAlternativeNames(
+ request->peer_info.san_names.dns_names,
+ request->peer_info.san_names.dns_names_size,
+ xds_certificate_provider_->GetSanMatchers(cluster_name_))) {
+ *sync_status = y_absl::Status(
+ y_absl::StatusCode::kUnauthenticated,
+ "SANs from certificate did not match SANs from xDS control plane");
}
- void Cancel(grpc_tls_custom_verification_check_request*) override {}
+ return true; /* synchronous check */
+}
- private:
- RefCountedPtr<XdsCertificateProvider> xds_certificate_provider_;
- TString cluster_name_;
-};
+void XdsCertificateVerifier::Cancel(
+ grpc_tls_custom_verification_check_request*) {}
-} // namespace
+int XdsCertificateVerifier::CompareImpl(
+ const grpc_tls_certificate_verifier* other) const {
+ auto* o = static_cast<const XdsCertificateVerifier*>(other);
+ int r = QsortCompare(xds_certificate_provider_, o->xds_certificate_provider_);
+ if (r != 0) return r;
+ return cluster_name_.compare(o->cluster_name_);
+}
+
+UniqueTypeName XdsCertificateVerifier::type() const {
+ static UniqueTypeName::Factory kFactory("Xds");
+ return kFactory.Create();
+}
bool TestOnlyXdsVerifySubjectAlternativeNames(
const char* const* subject_alternative_names,
@@ -115,33 +134,15 @@ bool TestOnlyXdsVerifySubjectAlternativeNames(
RefCountedPtr<grpc_channel_security_connector>
XdsCredentials::create_security_connector(
RefCountedPtr<grpc_call_credentials> call_creds, const char* target_name,
- const grpc_channel_args* args, grpc_channel_args** new_args) {
- struct ChannelArgsDeleter {
- const grpc_channel_args* args;
- bool owned;
- ~ChannelArgsDeleter() {
- if (owned) grpc_channel_args_destroy(args);
- }
- };
- ChannelArgsDeleter temp_args{args, false};
+ ChannelArgs* args) {
// TODO(yashykt): This arg will no longer need to be added after b/173119596
// is fixed.
- grpc_arg override_arg = grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG),
- const_cast<char*>(target_name));
- const char* override_arg_name = GRPC_SSL_TARGET_NAME_OVERRIDE_ARG;
- if (grpc_channel_args_find(args, override_arg_name) == nullptr) {
- temp_args.args = grpc_channel_args_copy_and_add_and_remove(
- args, &override_arg_name, 1, &override_arg, 1);
- temp_args.owned = true;
- }
+ *args = args->SetIfUnset(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG, target_name);
RefCountedPtr<grpc_channel_security_connector> security_connector;
- auto xds_certificate_provider =
- XdsCertificateProvider::GetFromChannelArgs(args);
+ auto xds_certificate_provider = args->GetObjectRef<XdsCertificateProvider>();
if (xds_certificate_provider != nullptr) {
- TString cluster_name =
- grpc_channel_args_find_string(args, GRPC_ARG_XDS_CLUSTER_NAME);
- GPR_ASSERT(cluster_name.data() != nullptr);
+ TString cluster_name(
+ args->GetString(GRPC_ARG_XDS_CLUSTER_NAME).value());
const bool watch_root =
xds_certificate_provider->ProvidesRootCerts(cluster_name);
const bool watch_identity =
@@ -164,28 +165,20 @@ XdsCredentials::create_security_connector(
MakeRefCounted<XdsCertificateVerifier>(xds_certificate_provider,
std::move(cluster_name)));
tls_credentials_options->set_check_call_host(false);
- // TODO(yashkt): Creating a new TlsCreds object each time we create a
- // security connector means that the security connector's cmp() method
- // returns unequal for each instance, which means that every time an LB
- // policy updates, all the subchannels will be recreated. This is
- // going to lead to a lot of connection churn. Instead, we should
- // either (a) change the TLS security connector's cmp() method to be
- // smarter somehow, so that it compares unequal only when the
- // tls_credentials_options have changed, or (b) cache the TlsCreds
- // objects in the XdsCredentials object so that we can reuse the
- // same one when creating new security connectors, swapping out the
- // TlsCreds object only when the tls_credentials_options change.
- // Option (a) would probably be better, although it may require some
- // structural changes to the security connector API.
auto tls_credentials =
MakeRefCounted<TlsCredentials>(std::move(tls_credentials_options));
- return tls_credentials->create_security_connector(
- std::move(call_creds), target_name, temp_args.args, new_args);
+ return tls_credentials->create_security_connector(std::move(call_creds),
+ target_name, args);
}
}
GPR_ASSERT(fallback_credentials_ != nullptr);
- return fallback_credentials_->create_security_connector(
- std::move(call_creds), target_name, temp_args.args, new_args);
+ return fallback_credentials_->create_security_connector(std::move(call_creds),
+ target_name, args);
+}
+
+UniqueTypeName XdsCredentials::Type() {
+ static UniqueTypeName::Factory kFactory("Xds");
+ return kFactory.Create();
}
//
@@ -193,9 +186,8 @@ XdsCredentials::create_security_connector(
//
RefCountedPtr<grpc_server_security_connector>
-XdsServerCredentials::create_security_connector(const grpc_channel_args* args) {
- auto xds_certificate_provider =
- XdsCertificateProvider::GetFromChannelArgs(args);
+XdsServerCredentials::create_security_connector(const ChannelArgs& args) {
+ auto xds_certificate_provider = args.GetObjectRef<XdsCertificateProvider>();
// Identity certs are a must for TLS.
if (xds_certificate_provider != nullptr &&
xds_certificate_provider->ProvidesIdentityCerts("")) {
@@ -224,6 +216,11 @@ XdsServerCredentials::create_security_connector(const grpc_channel_args* args) {
return fallback_credentials_->create_security_connector(args);
}
+UniqueTypeName XdsServerCredentials::Type() {
+ static UniqueTypeName::Factory kFactory("Xds");
+ return kFactory.Create();
+}
+
} // namespace grpc_core
grpc_channel_credentials* grpc_xds_credentials_create(
diff --git a/contrib/libs/grpc/src/core/lib/security/credentials/xds/xds_credentials.h b/contrib/libs/grpc/src/core/lib/security/credentials/xds/xds_credentials.h
index e3470abacb..f5251d3f4d 100644
--- a/contrib/libs/grpc/src/core/lib/security/credentials/xds/xds_credentials.h
+++ b/contrib/libs/grpc/src/core/lib/security/credentials/xds/xds_credentials.h
@@ -21,25 +21,63 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <functional>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/status/status.h"
+
+#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
+#include "src/core/ext/xds/xds_certificate_provider.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
#include "src/core/lib/matchers/matchers.h"
#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
namespace grpc_core {
-extern const char kCredentialsTypeXds[];
+class XdsCertificateVerifier : public grpc_tls_certificate_verifier {
+ public:
+ XdsCertificateVerifier(
+ RefCountedPtr<XdsCertificateProvider> xds_certificate_provider,
+ TString cluster_name);
+
+ bool Verify(grpc_tls_custom_verification_check_request* request,
+ std::function<void(y_absl::Status)>,
+ y_absl::Status* sync_status) override;
+ void Cancel(grpc_tls_custom_verification_check_request*) override;
+
+ UniqueTypeName type() const override;
+
+ private:
+ int CompareImpl(const grpc_tls_certificate_verifier* other) const override;
+
+ RefCountedPtr<XdsCertificateProvider> xds_certificate_provider_;
+ TString cluster_name_;
+};
class XdsCredentials final : public grpc_channel_credentials {
public:
explicit XdsCredentials(
RefCountedPtr<grpc_channel_credentials> fallback_credentials)
- : grpc_channel_credentials(kCredentialsTypeXds),
- fallback_credentials_(std::move(fallback_credentials)) {}
+ : fallback_credentials_(std::move(fallback_credentials)) {}
RefCountedPtr<grpc_channel_security_connector> create_security_connector(
RefCountedPtr<grpc_call_credentials> call_creds, const char* target_name,
- const grpc_channel_args* args, grpc_channel_args** new_args) override;
+ ChannelArgs* args) override;
+
+ static UniqueTypeName Type();
+
+ UniqueTypeName type() const override { return Type(); }
private:
int cmp_impl(const grpc_channel_credentials* other) const override {
@@ -54,11 +92,14 @@ class XdsServerCredentials final : public grpc_server_credentials {
public:
explicit XdsServerCredentials(
RefCountedPtr<grpc_server_credentials> fallback_credentials)
- : grpc_server_credentials(kCredentialsTypeXds),
- fallback_credentials_(std::move(fallback_credentials)) {}
+ : fallback_credentials_(std::move(fallback_credentials)) {}
RefCountedPtr<grpc_server_security_connector> create_security_connector(
- const grpc_channel_args* /* args */) override;
+ const ChannelArgs& /* args */) override;
+
+ static UniqueTypeName Type();
+
+ UniqueTypeName type() const override { return Type(); }
private:
RefCountedPtr<grpc_server_credentials> fallback_credentials_;
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/alts/alts_security_connector.cc b/contrib/libs/grpc/src/core/lib/security/security_connector/alts/alts_security_connector.cc
index 527d517ece..c49d1bc1e4 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/alts/alts_security_connector.cc
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/alts/alts_security_connector.cc
@@ -20,19 +20,39 @@
#include "src/core/lib/security/security_connector/alts/alts_security_connector.h"
-#include <stdbool.h>
#include <string.h>
+#include <algorithm>
+#include <utility>
+
+#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
#include <grpc/grpc.h>
+#include <grpc/grpc_security_constants.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/promise/promise.h"
+#include "src/core/lib/security/context/security_context.h"
#include "src/core/lib/security/credentials/alts/alts_credentials.h"
+#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/transport/security_handshaker.h"
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
+#include "src/core/lib/transport/handshaker.h"
#include "src/core/lib/transport/transport.h"
#include "src/core/tsi/alts/handshaker/alts_tsi_handshaker.h"
#include "src/core/tsi/transport_security.h"
@@ -78,18 +98,13 @@ class grpc_alts_channel_security_connector final
~grpc_alts_channel_security_connector() override { gpr_free(target_name_); }
void add_handshakers(
- const grpc_channel_args* args, grpc_pollset_set* interested_parties,
+ const grpc_core::ChannelArgs& args, grpc_pollset_set* interested_parties,
grpc_core::HandshakeManager* handshake_manager) override {
tsi_handshaker* handshaker = nullptr;
const grpc_alts_credentials* creds =
static_cast<const grpc_alts_credentials*>(channel_creds());
- size_t user_specified_max_frame_size = 0;
- const grpc_arg* arg =
- grpc_channel_args_find(args, GRPC_ARG_TSI_MAX_FRAME_SIZE);
- if (arg != nullptr && arg->type == GRPC_ARG_INTEGER) {
- user_specified_max_frame_size = grpc_channel_arg_get_integer(
- arg, {0, 0, std::numeric_limits<int>::max()});
- }
+ const size_t user_specified_max_frame_size =
+ std::max(0, args.GetInt(GRPC_ARG_TSI_MAX_FRAME_SIZE).value_or(0));
GPR_ASSERT(alts_tsi_handshaker_create(
creds->options(), target_name_,
creds->handshaker_service_url(), true, interested_parties,
@@ -99,6 +114,7 @@ class grpc_alts_channel_security_connector final
}
void check_peer(tsi_peer peer, grpc_endpoint* /*ep*/,
+ const grpc_core::ChannelArgs& /*args*/,
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) override {
alts_check_peer(peer, auth_context, on_peer_checked);
@@ -141,18 +157,13 @@ class grpc_alts_server_security_connector final
~grpc_alts_server_security_connector() override = default;
void add_handshakers(
- const grpc_channel_args* args, grpc_pollset_set* interested_parties,
+ const grpc_core::ChannelArgs& args, grpc_pollset_set* interested_parties,
grpc_core::HandshakeManager* handshake_manager) override {
tsi_handshaker* handshaker = nullptr;
const grpc_alts_server_credentials* creds =
static_cast<const grpc_alts_server_credentials*>(server_creds());
- size_t user_specified_max_frame_size = 0;
- const grpc_arg* arg =
- grpc_channel_args_find(args, GRPC_ARG_TSI_MAX_FRAME_SIZE);
- if (arg != nullptr && arg->type == GRPC_ARG_INTEGER) {
- user_specified_max_frame_size = grpc_channel_arg_get_integer(
- arg, {0, 0, std::numeric_limits<int>::max()});
- }
+ size_t user_specified_max_frame_size =
+ std::max(0, args.GetInt(GRPC_ARG_TSI_MAX_FRAME_SIZE).value_or(0));
GPR_ASSERT(alts_tsi_handshaker_create(
creds->options(), nullptr, creds->handshaker_service_url(),
false, interested_parties, &handshaker,
@@ -162,6 +173,7 @@ class grpc_alts_server_security_connector final
}
void check_peer(tsi_peer peer, grpc_endpoint* /*ep*/,
+ const grpc_core::ChannelArgs& /*args*/,
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) override {
alts_check_peer(peer, auth_context, on_peer_checked);
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/alts/alts_security_connector.h b/contrib/libs/grpc/src/core/lib/security/security_connector/alts/alts_security_connector.h
index 9fafca2d34..a95797611a 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/alts/alts_security_connector.h
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/alts/alts_security_connector.h
@@ -18,12 +18,15 @@
#ifndef GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_ALTS_ALTS_SECURITY_CONNECTOR_H
#define GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_ALTS_ALTS_SECURITY_CONNECTOR_H
-
#include <grpc/support/port_platform.h>
-#include "src/core/lib/security/context/security_context.h"
-#include "src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h"
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/security/security_connector/security_connector.h"
+#include "src/core/tsi/alts/handshaker/transport_security_common_api.h"
+#include "src/core/tsi/transport_security_interface.h"
#define GRPC_ALTS_TRANSPORT_SECURITY_TYPE "alts"
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/fake/fake_security_connector.cc b/contrib/libs/grpc/src/core/lib/security/security_connector/fake/fake_security_connector.cc
index 976b663137..5a03762621 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/fake/fake_security_connector.cc
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/fake/fake_security_connector.cc
@@ -20,26 +20,45 @@
#include "src/core/lib/security/security_connector/fake/fake_security_connector.h"
-#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+#include <grpc/grpc_security_constants.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/handshaker.h"
#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/host_port.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/promise/promise.h"
#include "src/core/lib/security/context/security_context.h"
#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/credentials/fake/fake_credentials.h"
#include "src/core/lib/security/transport/security_handshaker.h"
+#include "src/core/lib/transport/handshaker.h"
#include "src/core/tsi/fake_transport_security.h"
+#include "src/core/tsi/transport_security_interface.h"
namespace {
class grpc_fake_channel_security_connector final
@@ -48,33 +67,22 @@ class grpc_fake_channel_security_connector final
grpc_fake_channel_security_connector(
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
- const char* target, const grpc_channel_args* args)
+ const char* target, const grpc_core::ChannelArgs& args)
: grpc_channel_security_connector(GRPC_FAKE_SECURITY_URL_SCHEME,
std::move(channel_creds),
std::move(request_metadata_creds)),
target_(gpr_strdup(target)),
expected_targets_(
- gpr_strdup(grpc_fake_transport_get_expected_targets(args))),
- is_lb_channel_(grpc_channel_args_find(
- args, GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER) !=
- nullptr) {
- const grpc_arg* target_name_override_arg =
- grpc_channel_args_find(args, GRPC_SSL_TARGET_NAME_OVERRIDE_ARG);
- if (target_name_override_arg != nullptr) {
- target_name_override_ =
- gpr_strdup(grpc_channel_arg_get_string(target_name_override_arg));
- } else {
- target_name_override_ = nullptr;
- }
- }
+ args.GetOwnedString(GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS)),
+ is_lb_channel_(args.GetBool(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER)
+ .value_or(false)),
+ target_name_override_(
+ args.GetOwnedString(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG)) {}
- ~grpc_fake_channel_security_connector() override {
- gpr_free(target_);
- gpr_free(expected_targets_);
- if (target_name_override_ != nullptr) gpr_free(target_name_override_);
- }
+ ~grpc_fake_channel_security_connector() override { gpr_free(target_); }
void check_peer(tsi_peer peer, grpc_endpoint* ep,
+ const grpc_core::ChannelArgs& /*args*/,
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) override;
@@ -90,16 +98,12 @@ class grpc_fake_channel_security_connector final
if (c != 0) return c;
c = strcmp(target_, other->target_);
if (c != 0) return c;
- if (expected_targets_ == nullptr || other->expected_targets_ == nullptr) {
- c = grpc_core::QsortCompare(expected_targets_, other->expected_targets_);
- } else {
- c = strcmp(expected_targets_, other->expected_targets_);
- }
+ c = grpc_core::QsortCompare(expected_targets_, other->expected_targets_);
if (c != 0) return c;
return grpc_core::QsortCompare(is_lb_channel_, other->is_lb_channel_);
}
- void add_handshakers(const grpc_channel_args* args,
+ void add_handshakers(const grpc_core::ChannelArgs& args,
grpc_pollset_set* /*interested_parties*/,
grpc_core::HandshakeManager* handshake_mgr) override {
handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(
@@ -115,11 +119,12 @@ class grpc_fake_channel_security_connector final
grpc_core::SplitHostPort(host, &authority_hostname,
&authority_ignored_port);
grpc_core::SplitHostPort(target_, &target_hostname, &target_ignored_port);
- if (target_name_override_ != nullptr) {
+ if (target_name_override_.has_value()) {
y_absl::string_view fake_security_target_name_override_hostname;
y_absl::string_view fake_security_target_name_override_ignored_port;
grpc_core::SplitHostPort(
- target_name_override_, &fake_security_target_name_override_hostname,
+ target_name_override_->c_str(),
+ &fake_security_target_name_override_hostname,
&fake_security_target_name_override_ignored_port);
if (authority_hostname != fake_security_target_name_override_hostname) {
gpr_log(GPR_ERROR,
@@ -137,9 +142,7 @@ class grpc_fake_channel_security_connector final
}
char* target() const { return target_; }
- char* expected_targets() const { return expected_targets_; }
bool is_lb_channel() const { return is_lb_channel_; }
- char* target_name_override() const { return target_name_override_; }
private:
bool fake_check_target(const char* target, const char* set_str) const {
@@ -159,15 +162,15 @@ class grpc_fake_channel_security_connector final
}
void fake_secure_name_check() const {
- if (expected_targets_ == nullptr) return;
+ if (!expected_targets_.has_value()) return;
char** lbs_and_backends = nullptr;
size_t lbs_and_backends_size = 0;
bool success = false;
- gpr_string_split(expected_targets_, ";", &lbs_and_backends,
+ gpr_string_split(expected_targets_->c_str(), ";", &lbs_and_backends,
&lbs_and_backends_size);
if (lbs_and_backends_size > 2 || lbs_and_backends_size == 0) {
gpr_log(GPR_ERROR, "Invalid expected targets arg value: '%s'",
- expected_targets_);
+ expected_targets_->c_str());
goto done;
}
if (is_lb_channel_) {
@@ -175,7 +178,7 @@ class grpc_fake_channel_security_connector final
gpr_log(GPR_ERROR,
"Invalid expected targets arg value: '%s'. Expectations for LB "
"channels must be of the form 'be1,be2,be3,...;lb1,lb2,...",
- expected_targets_);
+ expected_targets_->c_str());
goto done;
}
if (!fake_check_target(target_, lbs_and_backends[1])) {
@@ -201,9 +204,9 @@ class grpc_fake_channel_security_connector final
}
char* target_;
- char* expected_targets_;
+ y_absl::optional<TString> expected_targets_;
bool is_lb_channel_;
- char* target_name_override_;
+ y_absl::optional<TString> target_name_override_;
};
void fake_check_peer(grpc_security_connector* /*sc*/, tsi_peer peer,
@@ -260,6 +263,7 @@ end:
void grpc_fake_channel_security_connector::check_peer(
tsi_peer peer, grpc_endpoint* /*ep*/,
+ const grpc_core::ChannelArgs& /*args*/,
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) {
fake_check_peer(this, peer, auth_context, on_peer_checked);
@@ -276,6 +280,7 @@ class grpc_fake_server_security_connector
~grpc_fake_server_security_connector() override = default;
void check_peer(tsi_peer peer, grpc_endpoint* /*ep*/,
+ const grpc_core::ChannelArgs& /*args*/,
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) override {
fake_check_peer(this, peer, auth_context, on_peer_checked);
@@ -286,7 +291,7 @@ class grpc_fake_server_security_connector
GRPC_ERROR_UNREF(error);
}
- void add_handshakers(const grpc_channel_args* args,
+ void add_handshakers(const grpc_core::ChannelArgs& args,
grpc_pollset_set* /*interested_parties*/,
grpc_core::HandshakeManager* handshake_mgr) override {
handshake_mgr->Add(grpc_core::SecurityHandshakerCreate(
@@ -304,7 +309,7 @@ grpc_core::RefCountedPtr<grpc_channel_security_connector>
grpc_fake_channel_security_connector_create(
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
- const char* target, const grpc_channel_args* args) {
+ const char* target, const grpc_core::ChannelArgs& args) {
return grpc_core::MakeRefCounted<grpc_fake_channel_security_connector>(
std::move(channel_creds), std::move(request_metadata_creds), target,
args);
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/fake/fake_security_connector.h b/contrib/libs/grpc/src/core/lib/security/security_connector/fake/fake_security_connector.h
index c5cb51c3dc..3f8daee82c 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/fake/fake_security_connector.h
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/fake/fake_security_connector.h
@@ -18,12 +18,12 @@
#ifndef GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_FAKE_FAKE_SECURITY_CONNECTOR_H
#define GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_FAKE_FAKE_SECURITY_CONNECTOR_H
-
#include <grpc/support/port_platform.h>
+#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
-#include "src/core/lib/channel/handshaker.h"
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/security/security_connector/security_connector.h"
@@ -32,7 +32,7 @@ grpc_core::RefCountedPtr<grpc_channel_security_connector>
grpc_fake_channel_security_connector_create(
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
- const char* target, const grpc_channel_args* args);
+ const char* target, const grpc_core::ChannelArgs& args);
/* Creates a fake connector that emulates real server security. */
grpc_core::RefCountedPtr<grpc_server_security_connector>
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc b/contrib/libs/grpc/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc
index 37bec5e1c9..93da9d63f7 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc
@@ -20,8 +20,17 @@
#include "src/core/lib/security/security_connector/insecure/insecure_security_connector.h"
+#include <string.h>
+
+#include <grpc/grpc_security_constants.h>
+#include <grpc/support/log.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/promise/promise.h"
+#include "src/core/lib/security/context/security_context.h"
#include "src/core/lib/security/transport/security_handshaker.h"
#include "src/core/tsi/local_transport_security.h"
@@ -58,7 +67,7 @@ ArenaPromise<y_absl::Status> InsecureChannelSecurityConnector::CheckCallHost(
// security handshaker so that check_peer is invoked and an auth_context is
// created with the security level of TSI_SECURITY_NONE.
void InsecureChannelSecurityConnector::add_handshakers(
- const grpc_channel_args* args, grpc_pollset_set* /* interested_parties */,
+ const ChannelArgs& args, grpc_pollset_set* /* interested_parties */,
HandshakeManager* handshake_manager) {
tsi_handshaker* handshaker = nullptr;
// Re-use local_tsi_handshaker_create as a minimalist handshaker.
@@ -67,7 +76,7 @@ void InsecureChannelSecurityConnector::add_handshakers(
}
void InsecureChannelSecurityConnector::check_peer(
- tsi_peer peer, grpc_endpoint* /*ep*/,
+ tsi_peer peer, grpc_endpoint* /*ep*/, const ChannelArgs& /*args*/,
RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) {
*auth_context = MakeAuthContext();
@@ -85,7 +94,7 @@ int InsecureChannelSecurityConnector::cmp(
// security handshaker so that check_peer is invoked and an auth_context is
// created with the security level of TSI_SECURITY_NONE.
void InsecureServerSecurityConnector::add_handshakers(
- const grpc_channel_args* args, grpc_pollset_set* /* interested_parties */,
+ const ChannelArgs& args, grpc_pollset_set* /* interested_parties */,
HandshakeManager* handshake_manager) {
tsi_handshaker* handshaker = nullptr;
// Re-use local_tsi_handshaker_create as a minimalist handshaker.
@@ -94,7 +103,7 @@ void InsecureServerSecurityConnector::add_handshakers(
}
void InsecureServerSecurityConnector::check_peer(
- tsi_peer peer, grpc_endpoint* /*ep*/,
+ tsi_peer peer, grpc_endpoint* /*ep*/, const ChannelArgs& /*args*/,
RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) {
*auth_context = MakeAuthContext();
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/insecure/insecure_security_connector.h b/contrib/libs/grpc/src/core/lib/security/security_connector/insecure/insecure_security_connector.h
index e2410b84a3..8c23e2b993 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/insecure/insecure_security_connector.h
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/insecure/insecure_security_connector.h
@@ -21,9 +21,25 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/security/context/security_context.h"
+#include <utility>
+
+#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/security_connector/security_connector.h"
+#include "src/core/lib/transport/handshaker.h"
+#include "src/core/tsi/transport_security_interface.h"
namespace grpc_core {
@@ -47,11 +63,11 @@ class InsecureChannelSecurityConnector
ArenaPromise<y_absl::Status> CheckCallHost(
y_absl::string_view host, grpc_auth_context* auth_context) override;
- void add_handshakers(const grpc_channel_args* args,
+ void add_handshakers(const ChannelArgs& args,
grpc_pollset_set* /* interested_parties */,
HandshakeManager* handshake_manager) override;
- void check_peer(tsi_peer peer, grpc_endpoint* ep,
+ void check_peer(tsi_peer peer, grpc_endpoint* ep, const ChannelArgs& /*args*/,
RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) override;
@@ -70,11 +86,11 @@ class InsecureServerSecurityConnector : public grpc_server_security_connector {
: grpc_server_security_connector("" /* url_scheme */,
std::move(server_creds)) {}
- void add_handshakers(const grpc_channel_args* args,
+ void add_handshakers(const ChannelArgs& args,
grpc_pollset_set* /* interested_parties */,
HandshakeManager* handshake_manager) override;
- void check_peer(tsi_peer peer, grpc_endpoint* ep,
+ void check_peer(tsi_peer peer, grpc_endpoint* ep, const ChannelArgs& /*args*/,
RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) override;
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_fallback.cc b/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_fallback.cc
index f448d3fcac..adef3cd14a 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_fallback.cc
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_fallback.cc
@@ -18,16 +18,18 @@
#include <grpc/support/port_platform.h>
+#if !defined(GPR_LINUX) && !defined(GPR_ANDROID) && !defined(GPR_FREEBSD) && \
+ !defined(GPR_APPLE)
+
+#include <grpc/slice.h>
#include <grpc/slice_buffer.h>
#include "src/core/lib/security/security_connector/load_system_roots.h"
-#if !defined(GPR_LINUX) && !defined(GPR_ANDROID)
-
namespace grpc_core {
grpc_slice LoadSystemRootCerts() { return grpc_empty_slice(); }
} // namespace grpc_core
-#endif /* !(GPR_LINUX || GPR_ANDROID) */
+#endif /* !(GPR_LINUX || GPR_ANDROID || GPR_FREEBSD || GPR_APPLE) */
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_linux.cc b/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_supported.cc
index 200aeb5ee6..ff775c3f38 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_linux.cc
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_supported.cc
@@ -18,32 +18,31 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/security/security_connector/load_system_roots_linux.h"
+#include <algorithm>
+#include <memory>
+#include <vector>
-#include <grpc/slice_buffer.h>
-
-#if defined(GPR_LINUX) || defined(GPR_ANDROID)
+#if defined(GPR_LINUX) || defined(GPR_ANDROID) || defined(GPR_FREEBSD) || \
+ defined(GPR_APPLE)
#include <dirent.h>
#include <fcntl.h>
-#include <stdbool.h>
+#include <stdio.h>
#include <string.h>
#include <sys/param.h>
#include <sys/stat.h>
-#include <sys/types.h>
#include <unistd.h>
-#include "y_absl/container/inlined_vector.h"
-
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
-#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/global_config.h"
+#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/load_file.h"
#include "src/core/lib/security/security_connector/load_system_roots.h"
+#include "src/core/lib/security/security_connector/load_system_roots_supported.h"
GPR_GLOBAL_CONFIG_DEFINE_STRING(grpc_system_ssl_roots_dir, "",
"Custom directory to SSL Roots");
@@ -51,21 +50,30 @@ GPR_GLOBAL_CONFIG_DEFINE_STRING(grpc_system_ssl_roots_dir, "",
namespace grpc_core {
namespace {
-const char* kLinuxCertFiles[] = {
+#if defined(GPR_LINUX) || defined(GPR_ANDROID)
+const char* kCertFiles[] = {
"/etc/ssl/certs/ca-certificates.crt", "/etc/pki/tls/certs/ca-bundle.crt",
"/etc/ssl/ca-bundle.pem", "/etc/pki/tls/cacert.pem",
"/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"};
-const char* kLinuxCertDirectories[] = {
+const char* kCertDirectories[] = {
"/etc/ssl/certs", "/system/etc/security/cacerts", "/usr/local/share/certs",
"/etc/pki/tls/certs", "/etc/openssl/certs"};
+#elif defined(GPR_FREEBSD) // endif GPR_LINUX || GPR_ANDROID
+const char* kCertFiles[] = {"/etc/ssl/cert.pem",
+ "/usr/local/share/certs/ca-root-nss.crt"};
+const char* kCertDirectories[] = {""};
+#elif defined(GPR_APPLE) // endif GPR_FREEBSD
+const char* kCertFiles[] = {"/etc/ssl/cert.pem"};
+const char* kCertDirectories[] = {""};
+#endif // GPR_APPLE
grpc_slice GetSystemRootCerts() {
grpc_slice valid_bundle_slice = grpc_empty_slice();
- size_t num_cert_files_ = GPR_ARRAY_SIZE(kLinuxCertFiles);
+ size_t num_cert_files_ = GPR_ARRAY_SIZE(kCertFiles);
for (size_t i = 0; i < num_cert_files_; i++) {
grpc_error_handle error =
- grpc_load_file(kLinuxCertFiles[i], 1, &valid_bundle_slice);
- if (error == GRPC_ERROR_NONE) {
+ grpc_load_file(kCertFiles[i], 1, &valid_bundle_slice);
+ if (GRPC_ERROR_IS_NONE(error)) {
return valid_bundle_slice;
} else {
GRPC_ERROR_UNREF(error);
@@ -101,7 +109,7 @@ grpc_slice CreateRootCertsBundle(const char* certs_directory) {
char path[MAXPATHLEN];
off_t size;
};
- y_absl::InlinedVector<FileData, 2> roots_filenames;
+ std::vector<FileData> roots_filenames;
size_t total_bundle_size = 0;
struct dirent* directory_entry;
while ((directory_entry = readdir(ca_directory)) != nullptr) {
@@ -155,8 +163,8 @@ grpc_slice LoadSystemRootCerts() {
result = GetSystemRootCerts();
}
if (GRPC_SLICE_IS_EMPTY(result)) {
- for (size_t i = 0; i < GPR_ARRAY_SIZE(kLinuxCertDirectories); i++) {
- result = CreateRootCertsBundle(kLinuxCertDirectories[i]);
+ for (size_t i = 0; i < GPR_ARRAY_SIZE(kCertDirectories); i++) {
+ result = CreateRootCertsBundle(kCertDirectories[i]);
if (!GRPC_SLICE_IS_EMPTY(result)) {
break;
}
@@ -167,4 +175,4 @@ grpc_slice LoadSystemRootCerts() {
} // namespace grpc_core
-#endif /* GPR_LINUX || GPR_ANDROID */
+#endif /* GPR_LINUX || GPR_ANDROID || GPR_FREEBSD || GPR_APPLE */
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_linux.h b/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_supported.h
index c1ef3f63eb..30997ade03 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_linux.h
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/load_system_roots_supported.h
@@ -16,14 +16,14 @@
*
*/
-#ifndef GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_LOAD_SYSTEM_ROOTS_LINUX_H
-#define GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_LOAD_SYSTEM_ROOTS_LINUX_H
+#ifndef GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_LOAD_SYSTEM_ROOTS_SUPPORTED_H
+#define GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_LOAD_SYSTEM_ROOTS_SUPPORTED_H
#include <grpc/support/port_platform.h>
#include <grpc/slice.h>
-#ifdef GPR_LINUX
+#if defined(GPR_LINUX) || defined(GPR_FREEBSD) || defined(GPR_APPLE)
namespace grpc_core {
@@ -41,6 +41,6 @@ void GetAbsoluteFilePath(const char* valid_file_dir,
} // namespace grpc_core
-#endif /* GPR_LINUX */
-#endif /* GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_LOAD_SYSTEM_ROOTS_LINUX_H \
+#endif /* GPR_LINUX || GPR_FREEBSD || GPR_APPLE */
+#endif /* GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_LOAD_SYSTEM_ROOTS_SUPPORTED_H \
*/
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/local/local_security_connector.cc b/contrib/libs/grpc/src/core/lib/security/security_connector/local/local_security_connector.cc
index fd0942a434..04eae450a5 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/local/local_security_connector.cc
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/local/local_security_connector.cc
@@ -20,10 +20,20 @@
#include "src/core/lib/security/security_connector/local/local_security_connector.h"
-#include <stdbool.h>
#include <string.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/match.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
#include <grpc/grpc.h>
+#include <grpc/grpc_security_constants.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
@@ -32,17 +42,28 @@
#include "src/core/lib/address_utils/parse_address.h"
#include "src/core/lib/address_utils/sockaddr_utils.h"
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/pollset.h"
-#include "src/core/lib/iomgr/resolve_address.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/iomgr/resolved_address.h"
#include "src/core/lib/iomgr/sockaddr.h"
#include "src/core/lib/iomgr/socket_utils.h"
#include "src/core/lib/iomgr/unix_sockets_posix.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/promise/promise.h"
+#include "src/core/lib/security/context/security_context.h"
+#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/credentials/local/local_credentials.h"
#include "src/core/lib/security/transport/security_handshaker.h"
+#include "src/core/lib/transport/handshaker.h"
#include "src/core/lib/uri/uri_parser.h"
#include "src/core/tsi/local_transport_security.h"
+#include "src/core/tsi/transport_security.h"
+#include "src/core/tsi/transport_security_interface.h"
#define GRPC_UDS_URI_PATTERN "unix:"
#define GRPC_ABSTRACT_UDS_URI_PATTERN "unix-abstract:"
@@ -152,14 +173,15 @@ class grpc_local_channel_security_connector final
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
const char* target_name)
- : grpc_channel_security_connector(std::string_view{}, std::move(channel_creds),
+ : grpc_channel_security_connector({}, std::move(channel_creds),
std::move(request_metadata_creds)),
target_name_(gpr_strdup(target_name)) {}
~grpc_local_channel_security_connector() override { gpr_free(target_name_); }
void add_handshakers(
- const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
+ const grpc_core::ChannelArgs& args,
+ grpc_pollset_set* /*interested_parties*/,
grpc_core::HandshakeManager* handshake_manager) override {
tsi_handshaker* handshaker = nullptr;
GPR_ASSERT(tsi_local_handshaker_create(&handshaker) == TSI_OK);
@@ -177,6 +199,7 @@ class grpc_local_channel_security_connector final
}
void check_peer(tsi_peer peer, grpc_endpoint* ep,
+ const grpc_core::ChannelArgs& /*args*/,
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) override {
grpc_local_credentials* creds =
@@ -210,11 +233,12 @@ class grpc_local_server_security_connector final
public:
explicit grpc_local_server_security_connector(
grpc_core::RefCountedPtr<grpc_server_credentials> server_creds)
- : grpc_server_security_connector(std::string_view{}, std::move(server_creds)) {}
+ : grpc_server_security_connector({}, std::move(server_creds)) {}
~grpc_local_server_security_connector() override = default;
void add_handshakers(
- const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
+ const grpc_core::ChannelArgs& args,
+ grpc_pollset_set* /*interested_parties*/,
grpc_core::HandshakeManager* handshake_manager) override {
tsi_handshaker* handshaker = nullptr;
GPR_ASSERT(tsi_local_handshaker_create(&handshaker) == TSI_OK);
@@ -223,6 +247,7 @@ class grpc_local_server_security_connector final
}
void check_peer(tsi_peer peer, grpc_endpoint* ep,
+ const grpc_core::ChannelArgs& /*args*/,
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) override {
grpc_local_server_credentials* creds =
@@ -247,7 +272,7 @@ grpc_core::RefCountedPtr<grpc_channel_security_connector>
grpc_local_channel_security_connector_create(
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
- const grpc_channel_args* args, const char* target_name) {
+ const grpc_core::ChannelArgs& args, const char* target_name) {
if (channel_creds == nullptr || target_name == nullptr) {
gpr_log(
GPR_ERROR,
@@ -258,14 +283,11 @@ grpc_local_channel_security_connector_create(
// will be done during check_peer procedure.
grpc_local_credentials* creds =
static_cast<grpc_local_credentials*>(channel_creds.get());
- const grpc_arg* server_uri_arg =
- grpc_channel_args_find(args, GRPC_ARG_SERVER_URI);
- const char* server_uri_str = grpc_channel_arg_get_string(server_uri_arg);
+ y_absl::string_view server_uri_str =
+ args.GetString(GRPC_ARG_SERVER_URI).value_or("");
if (creds->connect_type() == UDS &&
- strncmp(GRPC_UDS_URI_PATTERN, server_uri_str,
- strlen(GRPC_UDS_URI_PATTERN)) != 0 &&
- strncmp(GRPC_ABSTRACT_UDS_URI_PATTERN, server_uri_str,
- strlen(GRPC_ABSTRACT_UDS_URI_PATTERN)) != 0) {
+ !y_absl::StartsWith(server_uri_str, GRPC_UDS_URI_PATTERN) &&
+ !y_absl::StartsWith(server_uri_str, GRPC_ABSTRACT_UDS_URI_PATTERN)) {
gpr_log(GPR_ERROR,
"Invalid UDS target name to "
"grpc_local_channel_security_connector_create()");
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/local/local_security_connector.h b/contrib/libs/grpc/src/core/lib/security/security_connector/local/local_security_connector.h
index 6eee0ca9a6..2dcd12c212 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/local/local_security_connector.h
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/local/local_security_connector.h
@@ -18,10 +18,14 @@
#ifndef GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_LOCAL_LOCAL_SECURITY_CONNECTOR_H
#define GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_LOCAL_LOCAL_SECURITY_CONNECTOR_H
-
#include <grpc/support/port_platform.h>
-#include "src/core/lib/security/context/security_context.h"
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
/**
* This method creates a local channel security connector.
@@ -40,7 +44,7 @@ grpc_core::RefCountedPtr<grpc_channel_security_connector>
grpc_local_channel_security_connector_create(
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds,
- const grpc_channel_args* args, const char* target_name);
+ const grpc_core::ChannelArgs& args, const char* target_name);
/**
* This method creates a local server security connector.
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/security_connector.cc b/contrib/libs/grpc/src/core/lib/security/security_connector/security_connector.cc
index 310382efd2..3a15947291 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/security_connector.cc
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/security_connector.cc
@@ -20,30 +20,20 @@
#include "src/core/lib/security/security_connector/security_connector.h"
-#include <grpc/slice_buffer.h>
-#include <grpc/support/alloc.h>
+#include <string.h>
+
+#include <utility>
+
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/handshaker.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/security/context/security_context.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/security/credentials/credentials.h"
-#include "src/core/lib/security/security_connector/security_connector.h"
-#include "src/core/lib/security/transport/security_handshaker.h"
grpc_core::DebugOnlyTraceFlag grpc_trace_security_connector_refcount(
false, "security_connector_refcount");
-grpc_server_security_connector::grpc_server_security_connector(
- y_absl::string_view url_scheme,
- grpc_core::RefCountedPtr<grpc_server_credentials> server_creds)
- : grpc_security_connector(url_scheme),
- server_creds_(std::move(server_creds)) {}
-
-grpc_server_security_connector::~grpc_server_security_connector() = default;
-
grpc_channel_security_connector::grpc_channel_security_connector(
y_absl::string_view url_scheme,
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
@@ -52,8 +42,6 @@ grpc_channel_security_connector::grpc_channel_security_connector(
channel_creds_(std::move(channel_creds)),
request_metadata_creds_(std::move(request_metadata_creds)) {}
-grpc_channel_security_connector::~grpc_channel_security_connector() {}
-
int grpc_channel_security_connector::channel_security_connector_cmp(
const grpc_channel_security_connector* other) const {
const grpc_channel_security_connector* other_sc =
@@ -66,6 +54,16 @@ int grpc_channel_security_connector::channel_security_connector_cmp(
other_sc->request_metadata_creds());
}
+grpc_core::UniqueTypeName grpc_channel_security_connector::type() const {
+ return channel_creds_->type();
+}
+
+grpc_server_security_connector::grpc_server_security_connector(
+ y_absl::string_view url_scheme,
+ grpc_core::RefCountedPtr<grpc_server_credentials> server_creds)
+ : grpc_security_connector(url_scheme),
+ server_creds_(std::move(server_creds)) {}
+
int grpc_server_security_connector::server_security_connector_cmp(
const grpc_server_security_connector* other) const {
const grpc_server_security_connector* other_sc =
@@ -75,6 +73,10 @@ int grpc_server_security_connector::server_security_connector_cmp(
return grpc_core::QsortCompare(server_creds(), other_sc->server_creds());
}
+grpc_core::UniqueTypeName grpc_server_security_connector::type() const {
+ return server_creds_->type();
+}
+
static void connector_arg_destroy(void* p) {
if (p == nullptr) return;
static_cast<grpc_security_connector*>(p)->Unref(DEBUG_LOCATION,
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/security_connector.h b/contrib/libs/grpc/src/core/lib/security/security_connector/security_connector.h
index 72f0ca5467..248a921e8e 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/security_connector.h
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/security_connector.h
@@ -21,16 +21,26 @@
#include <grpc/support/port_platform.h>
-#include <stdbool.h>
+#include <memory>
+#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
-#include "src/core/lib/channel/handshaker.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/endpoint.h"
-#include "src/core/lib/iomgr/pollset.h"
-#include "src/core/lib/iomgr/tcp_server.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/promise/arena_promise.h"
+#include "src/core/lib/transport/handshaker.h"
#include "src/core/tsi/transport_security_interface.h"
extern grpc_core::DebugOnlyTraceFlag grpc_trace_security_connector_refcount;
@@ -58,12 +68,16 @@ class grpc_security_connector
? "security_connector_refcount"
: nullptr),
url_scheme_(url_scheme) {}
- ~grpc_security_connector() override = default;
+
+ static y_absl::string_view ChannelArgName() {
+ return GRPC_ARG_SECURITY_CONNECTOR;
+ }
// Checks the peer. Callee takes ownership of the peer object.
+ // The channel args represent the args after the handshaking is performed.
// When done, sets *auth_context and invokes on_peer_checked.
virtual void check_peer(
- tsi_peer peer, grpc_endpoint* ep,
+ tsi_peer peer, grpc_endpoint* ep, const grpc_core::ChannelArgs& args,
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) = 0;
@@ -75,8 +89,15 @@ class grpc_security_connector
/* Compares two security connectors. */
virtual int cmp(const grpc_security_connector* other) const = 0;
+ static int ChannelArgsCompare(const grpc_security_connector* a,
+ const grpc_security_connector* b) {
+ return a->cmp(b);
+ }
+
y_absl::string_view url_scheme() const { return url_scheme_; }
+ virtual grpc_core::UniqueTypeName type() const = 0;
+
private:
y_absl::string_view url_scheme_;
};
@@ -102,7 +123,6 @@ class grpc_channel_security_connector : public grpc_security_connector {
y_absl::string_view url_scheme,
grpc_core::RefCountedPtr<grpc_channel_credentials> channel_creds,
grpc_core::RefCountedPtr<grpc_call_credentials> request_metadata_creds);
- ~grpc_channel_security_connector() override;
/// Checks that the host that will be set for a call is acceptable.
/// Returns ok if the host is acceptable, otherwise returns an error.
@@ -110,7 +130,7 @@ class grpc_channel_security_connector : public grpc_security_connector {
y_absl::string_view host, grpc_auth_context* auth_context) = 0;
/// Registers handshakers with \a handshake_mgr.
- virtual void add_handshakers(const grpc_channel_args* args,
+ virtual void add_handshakers(const grpc_core::ChannelArgs& args,
grpc_pollset_set* interested_parties,
grpc_core::HandshakeManager* handshake_mgr) = 0;
@@ -127,6 +147,8 @@ class grpc_channel_security_connector : public grpc_security_connector {
return request_metadata_creds_.get();
}
+ grpc_core::UniqueTypeName type() const override;
+
protected:
// Helper methods to be used in subclasses.
int channel_security_connector_cmp(
@@ -153,9 +175,8 @@ class grpc_server_security_connector : public grpc_security_connector {
grpc_server_security_connector(
y_absl::string_view url_scheme,
grpc_core::RefCountedPtr<grpc_server_credentials> server_creds);
- ~grpc_server_security_connector() override;
- virtual void add_handshakers(const grpc_channel_args* args,
+ virtual void add_handshakers(const grpc_core::ChannelArgs& args,
grpc_pollset_set* interested_parties,
grpc_core::HandshakeManager* handshake_mgr) = 0;
@@ -166,6 +187,8 @@ class grpc_server_security_connector : public grpc_security_connector {
return server_creds_.get();
}
+ grpc_core::UniqueTypeName type() const override;
+
protected:
// Helper methods to be used in subclasses.
int server_security_connector_cmp(
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc b/contrib/libs/grpc/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc
index dede0cfcc1..509be6f16c 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc
@@ -20,8 +20,14 @@
#include "src/core/lib/security/security_connector/ssl/ssl_security_connector.h"
-#include <stdbool.h>
+#include <stdint.h>
+#include <string.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/string_view.h"
@@ -29,28 +35,34 @@
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include "src/core/ext/transport/chttp2/alpn/alpn.h"
-#include "src/core/lib/channel/handshaker.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/host_port.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/promise/promise.h"
#include "src/core/lib/security/context/security_context.h"
#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/credentials/ssl/ssl_credentials.h"
-#include "src/core/lib/security/security_connector/load_system_roots.h"
#include "src/core/lib/security/security_connector/ssl_utils.h"
#include "src/core/lib/security/transport/security_handshaker.h"
+#include "src/core/lib/transport/handshaker.h"
#include "src/core/tsi/ssl_transport_security.h"
#include "src/core/tsi/transport_security.h"
+#include "src/core/tsi/transport_security_interface.h"
namespace {
grpc_error_handle ssl_check_peer(
const char* peer_name, const tsi_peer* peer,
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context) {
grpc_error_handle error = grpc_ssl_check_alpn(peer);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
return error;
}
/* Check the peer name if specified. */
@@ -120,7 +132,7 @@ class grpc_ssl_channel_security_connector final
return GRPC_SECURITY_OK;
}
- void add_handshakers(const grpc_channel_args* args,
+ void add_handshakers(const grpc_core::ChannelArgs& args,
grpc_pollset_set* /*interested_parties*/,
grpc_core::HandshakeManager* handshake_mgr) override {
// Instantiate TSI handshaker.
@@ -129,7 +141,8 @@ class grpc_ssl_channel_security_connector final
client_handshaker_factory_,
overridden_target_name_.empty() ? target_name_.c_str()
: overridden_target_name_.c_str(),
- &tsi_hs);
+ /*network_bio_buf_size=*/0,
+ /*ssl_bio_buf_size=*/0, &tsi_hs);
if (result != TSI_OK) {
gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
tsi_result_to_string(result));
@@ -140,13 +153,14 @@ class grpc_ssl_channel_security_connector final
}
void check_peer(tsi_peer peer, grpc_endpoint* /*ep*/,
+ const grpc_core::ChannelArgs& /*args*/,
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) override {
const char* target_name = overridden_target_name_.empty()
? target_name_.c_str()
: overridden_target_name_.c_str();
grpc_error_handle error = ssl_check_peer(target_name, &peer, auth_context);
- if (error == GRPC_ERROR_NONE &&
+ if (GRPC_ERROR_IS_NONE(error) &&
verify_options_->verify_peer_callback != nullptr) {
const tsi_peer_property* p =
tsi_peer_get_property_by_name(&peer, TSI_X509_PEM_CERT_PROPERTY);
@@ -265,14 +279,15 @@ class grpc_ssl_server_security_connector
return GRPC_SECURITY_OK;
}
- void add_handshakers(const grpc_channel_args* args,
+ void add_handshakers(const grpc_core::ChannelArgs& args,
grpc_pollset_set* /*interested_parties*/,
grpc_core::HandshakeManager* handshake_mgr) override {
// Instantiate TSI handshaker.
try_fetch_ssl_server_credentials();
tsi_handshaker* tsi_hs = nullptr;
tsi_result result = tsi_ssl_server_handshaker_factory_create_handshaker(
- server_handshaker_factory_, &tsi_hs);
+ server_handshaker_factory_, /*network_bio_buf_size=*/0,
+ /*ssl_bio_buf_size=*/0, &tsi_hs);
if (result != TSI_OK) {
gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
tsi_result_to_string(result));
@@ -283,6 +298,7 @@ class grpc_ssl_server_security_connector
}
void check_peer(tsi_peer peer, grpc_endpoint* /*ep*/,
+ const grpc_core::ChannelArgs& /*args*/,
grpc_core::RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) override {
grpc_error_handle error = ssl_check_peer(nullptr, &peer, auth_context);
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/ssl/ssl_security_connector.h b/contrib/libs/grpc/src/core/lib/security/security_connector/ssl/ssl_security_connector.h
index 57342d9462..e62ce39976 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/ssl/ssl_security_connector.h
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/ssl/ssl_security_connector.h
@@ -18,15 +18,17 @@
#ifndef GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_SSL_SSL_SECURITY_CONNECTOR_H
#define GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_SSL_SSL_SECURITY_CONNECTOR_H
-
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
+#include <grpc/grpc_security_constants.h>
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/security/security_connector/security_connector.h"
#include "src/core/tsi/ssl_transport_security.h"
-#include "src/core/tsi/transport_security_interface.h"
struct grpc_ssl_config {
tsi_ssl_pem_key_cert_pair* pem_key_cert_pair;
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils.cc b/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils.cc
index d5e50a4213..7ef2176434 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils.cc
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils.cc
@@ -20,24 +20,34 @@
#include "src/core/lib/security/security_connector/ssl_utils.h"
+#include <stdint.h>
+#include <string.h>
+
+#include <memory>
#include <vector>
+#include "y_absl/strings/match.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_split.h"
-#include <grpc/slice_buffer.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
+#include <grpc/support/sync.h>
#include "src/core/ext/transport/chttp2/alpn/alpn.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/global_config.h"
#include "src/core/lib/gprpp/host_port.h"
+#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/iomgr/load_file.h"
#include "src/core/lib/security/context/security_context.h"
#include "src/core/lib/security/security_connector/load_system_roots.h"
#include "src/core/lib/security/security_connector/ssl_utils_config.h"
#include "src/core/tsi/ssl_transport_security.h"
+#include "src/core/tsi/transport_security.h"
#include "add_arcadia_root_certs.h"
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils.h b/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils.h
index bc95100547..f92c7b22c9 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils.h
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils.h
@@ -21,21 +21,25 @@
#include <grpc/support/port_platform.h>
-#include <stdbool.h>
+#include <stddef.h>
-#include "y_absl/strings/str_split.h"
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
+#include "y_absl/status/status.h"
#include "y_absl/strings/string_view.h"
#include <grpc/grpc_security.h>
-#include <grpc/slice_buffer.h>
+#include <grpc/grpc_security_constants.h>
+#include <grpc/slice.h>
-#include "src/core/lib/gprpp/global_config.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/security/security_connector/security_connector.h"
-#include "src/core/lib/security/security_connector/ssl_utils_config.h"
+#include "src/core/tsi/ssl/key_logging/ssl_key_logging.h"
#include "src/core/tsi/ssl_transport_security.h"
-#include "src/core/tsi/transport_security.h"
#include "src/core/tsi/transport_security_interface.h"
/* --- Util --- */
@@ -177,7 +181,7 @@ class PemKeyCertPair {
TString cert_chain_;
};
-typedef y_absl::InlinedVector<PemKeyCertPair, 1> PemKeyCertPairList;
+using PemKeyCertPairList = std::vector<PemKeyCertPair>;
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils_config.h b/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils_config.h
index efaf497ab1..d0979924ce 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils_config.h
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/ssl_utils_config.h
@@ -18,10 +18,10 @@
#ifndef GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_SSL_UTILS_CONFIG_H
#define GRPC_CORE_LIB_SECURITY_SECURITY_CONNECTOR_SSL_UTILS_CONFIG_H
-
#include <grpc/support/port_platform.h>
#include "src/core/lib/gprpp/global_config.h"
+#include "src/core/lib/gprpp/memory.h"
GPR_GLOBAL_CONFIG_DECLARE_STRING(grpc_default_ssl_roots_file_path);
GPR_GLOBAL_CONFIG_DECLARE_BOOL(grpc_not_use_system_ssl_roots);
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/tls/tls_security_connector.cc b/contrib/libs/grpc/src/core/lib/security/security_connector/tls/tls_security_connector.cc
index a118064c59..5ddc1261bb 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/tls/tls_security_connector.cc
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/tls/tls_security_connector.cc
@@ -20,10 +20,15 @@
#include "src/core/lib/security/security_connector/tls/tls_security_connector.h"
-#include <stdbool.h>
#include <string.h>
+#include <algorithm>
+#include <memory>
+#include <utility>
+#include <vector>
+
#include "y_absl/functional/bind_front.h"
+#include "y_absl/memory/memory.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/string_view.h"
@@ -33,15 +38,18 @@
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/host_port.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/promise/promise.h"
-#include "src/core/lib/security/credentials/tls/tls_credentials.h"
+#include "src/core/lib/security/context/security_context.h"
+#include "src/core/lib/security/credentials/credentials.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h"
#include "src/core/lib/security/security_connector/ssl_utils.h"
#include "src/core/lib/security/transport/security_handshaker.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/transport/transport.h"
#include "src/core/tsi/ssl_transport_security.h"
-#include "src/core/tsi/transport_security.h"
namespace grpc_core {
@@ -322,7 +330,7 @@ TlsChannelSecurityConnector::~TlsChannelSecurityConnector() {
}
void TlsChannelSecurityConnector::add_handshakers(
- const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
+ const ChannelArgs& args, grpc_pollset_set* /*interested_parties*/,
HandshakeManager* handshake_mgr) {
MutexLock lock(&mu_);
tsi_handshaker* tsi_hs = nullptr;
@@ -332,7 +340,8 @@ void TlsChannelSecurityConnector::add_handshakers(
client_handshaker_factory_,
overridden_target_name_.empty() ? target_name_.c_str()
: overridden_target_name_.c_str(),
- &tsi_hs);
+ /*network_bio_buf_size=*/0,
+ /*ssl_bio_buf_size=*/0, &tsi_hs);
if (result != TSI_OK) {
gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
tsi_result_to_string(result));
@@ -343,14 +352,14 @@ void TlsChannelSecurityConnector::add_handshakers(
}
void TlsChannelSecurityConnector::check_peer(
- tsi_peer peer, grpc_endpoint* /*ep*/,
+ tsi_peer peer, grpc_endpoint* /*ep*/, const ChannelArgs& /*args*/,
RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) {
const char* target_name = overridden_target_name_.empty()
? target_name_.c_str()
: overridden_target_name_.c_str();
grpc_error_handle error = grpc_ssl_check_alpn(&peer);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
tsi_peer_destruct(&peer);
return;
@@ -369,7 +378,7 @@ void TlsChannelSecurityConnector::check_peer(
void TlsChannelSecurityConnector::cancel_check_peer(
grpc_closure* on_peer_checked, grpc_error_handle error) {
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_ERROR,
"TlsChannelSecurityConnector::cancel_check_peer error: %s",
grpc_error_std_string(error).c_str());
@@ -447,12 +456,12 @@ void TlsChannelSecurityConnector::TlsChannelCertificateWatcher::
// BlockOnInitialCredentialHandshaker is implemented.
void TlsChannelSecurityConnector::TlsChannelCertificateWatcher::OnError(
grpc_error_handle root_cert_error, grpc_error_handle identity_cert_error) {
- if (root_cert_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(root_cert_error)) {
gpr_log(GPR_ERROR,
"TlsChannelCertificateWatcher getting root_cert_error: %s",
grpc_error_std_string(root_cert_error).c_str());
}
- if (identity_cert_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(identity_cert_error)) {
gpr_log(GPR_ERROR,
"TlsChannelCertificateWatcher getting identity_cert_error: %s",
grpc_error_std_string(identity_cert_error).c_str());
@@ -611,14 +620,15 @@ TlsServerSecurityConnector::~TlsServerSecurityConnector() {
}
void TlsServerSecurityConnector::add_handshakers(
- const grpc_channel_args* args, grpc_pollset_set* /*interested_parties*/,
+ const ChannelArgs& args, grpc_pollset_set* /*interested_parties*/,
HandshakeManager* handshake_mgr) {
MutexLock lock(&mu_);
tsi_handshaker* tsi_hs = nullptr;
if (server_handshaker_factory_ != nullptr) {
// Instantiate TSI handshaker.
tsi_result result = tsi_ssl_server_handshaker_factory_create_handshaker(
- server_handshaker_factory_, &tsi_hs);
+ server_handshaker_factory_, /*network_bio_buf_size=*/0,
+ /*ssl_bio_buf_size=*/0, &tsi_hs);
if (result != TSI_OK) {
gpr_log(GPR_ERROR, "Handshaker creation failed with error %s.",
tsi_result_to_string(result));
@@ -629,11 +639,11 @@ void TlsServerSecurityConnector::add_handshakers(
}
void TlsServerSecurityConnector::check_peer(
- tsi_peer peer, grpc_endpoint* /*ep*/,
+ tsi_peer peer, grpc_endpoint* /*ep*/, const ChannelArgs& /*args*/,
RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) {
grpc_error_handle error = grpc_ssl_check_alpn(&peer);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
ExecCtx::Run(DEBUG_LOCATION, on_peer_checked, error);
tsi_peer_destruct(&peer);
return;
@@ -656,7 +666,7 @@ void TlsServerSecurityConnector::check_peer(
void TlsServerSecurityConnector::cancel_check_peer(
grpc_closure* on_peer_checked, grpc_error_handle error) {
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_ERROR,
"TlsServerSecurityConnector::cancel_check_peer error: %s",
grpc_error_std_string(error).c_str());
@@ -724,12 +734,12 @@ void TlsServerSecurityConnector::TlsServerCertificateWatcher::
// BlockOnInitialCredentialHandshaker is implemented.
void TlsServerSecurityConnector::TlsServerCertificateWatcher::OnError(
grpc_error_handle root_cert_error, grpc_error_handle identity_cert_error) {
- if (root_cert_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(root_cert_error)) {
gpr_log(GPR_ERROR,
"TlsServerCertificateWatcher getting root_cert_error: %s",
grpc_error_std_string(root_cert_error).c_str());
}
- if (identity_cert_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(identity_cert_error)) {
gpr_log(GPR_ERROR,
"TlsServerCertificateWatcher getting identity_cert_error: %s",
grpc_error_std_string(identity_cert_error).c_str());
diff --git a/contrib/libs/grpc/src/core/lib/security/security_connector/tls/tls_security_connector.h b/contrib/libs/grpc/src/core/lib/security/security_connector/tls/tls_security_connector.h
index ed2b64f3d6..ed63d92867 100644
--- a/contrib/libs/grpc/src/core/lib/security/security_connector/tls/tls_security_connector.h
+++ b/contrib/libs/grpc/src/core/lib/security/security_connector/tls/tls_security_connector.h
@@ -21,12 +21,33 @@
#include <grpc/support/port_platform.h>
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/base/thread_annotations.h"
#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/security/context/security_context.h"
-#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h"
-#include "src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/promise/arena_promise.h"
+#include "src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h"
+#include "src/core/lib/security/security_connector/security_connector.h"
+#include "src/core/lib/security/security_connector/ssl_utils.h"
+#include "src/core/lib/transport/handshaker.h"
+#include "src/core/tsi/ssl/key_logging/ssl_key_logging.h"
+#include "src/core/tsi/ssl_transport_security.h"
+#include "src/core/tsi/transport_security_interface.h"
using TlsSessionKeyLogger = tsi::TlsSessionKeyLoggerCache::TlsSessionKeyLogger;
@@ -54,11 +75,11 @@ class TlsChannelSecurityConnector final
~TlsChannelSecurityConnector() override;
- void add_handshakers(const grpc_channel_args* args,
+ void add_handshakers(const ChannelArgs& args,
grpc_pollset_set* interested_parties,
HandshakeManager* handshake_mgr) override;
- void check_peer(tsi_peer peer, grpc_endpoint* ep,
+ void check_peer(tsi_peer peer, grpc_endpoint* ep, const ChannelArgs& /*args*/,
RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) override;
@@ -167,11 +188,11 @@ class TlsServerSecurityConnector final : public grpc_server_security_connector {
RefCountedPtr<grpc_tls_credentials_options> options);
~TlsServerSecurityConnector() override;
- void add_handshakers(const grpc_channel_args* args,
+ void add_handshakers(const ChannelArgs& args,
grpc_pollset_set* interested_parties,
HandshakeManager* handshake_mgr) override;
- void check_peer(tsi_peer peer, grpc_endpoint* ep,
+ void check_peer(tsi_peer peer, grpc_endpoint* ep, const ChannelArgs& /*args*/,
RefCountedPtr<grpc_auth_context>* auth_context,
grpc_closure* on_peer_checked) override;
diff --git a/contrib/libs/grpc/src/core/lib/security/transport/auth_filters.h b/contrib/libs/grpc/src/core/lib/security/transport/auth_filters.h
index 28e7db6172..22f5982498 100644
--- a/contrib/libs/grpc/src/core/lib/security/transport/auth_filters.h
+++ b/contrib/libs/grpc/src/core/lib/security/transport/auth_filters.h
@@ -21,15 +21,21 @@
#include <grpc/support/port_platform.h>
+#include "y_absl/status/statusor.h"
+
#include <grpc/grpc_security.h>
+#include <grpc/grpc_security_constants.h>
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/channel/promise_based_filter.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/security_connector/security_connector.h"
#include "src/core/lib/transport/transport.h"
-extern const grpc_channel_filter grpc_client_auth_filter;
extern const grpc_channel_filter grpc_server_auth_filter;
namespace grpc_core {
@@ -37,21 +43,22 @@ namespace grpc_core {
// Handles calling out to credentials to fill in metadata per call.
class ClientAuthFilter final : public ChannelFilter {
public:
- static y_absl::StatusOr<ClientAuthFilter> Create(const grpc_channel_args* args,
+ static const grpc_channel_filter kFilter;
+
+ static y_absl::StatusOr<ClientAuthFilter> Create(const ChannelArgs& args,
ChannelFilter::Args);
// Construct a promise for one call.
- ArenaPromise<TrailingMetadata> MakeCallPromise(
- ClientInitialMetadata initial_metadata,
- NextPromiseFactory next_promise_factory) override;
+ ArenaPromise<ServerMetadataHandle> MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) override;
private:
ClientAuthFilter(
RefCountedPtr<grpc_channel_security_connector> security_connector,
RefCountedPtr<grpc_auth_context> auth_context);
- ArenaPromise<y_absl::StatusOr<ClientInitialMetadata>> GetCallCredsMetadata(
- ClientInitialMetadata initial_metadata);
+ ArenaPromise<y_absl::StatusOr<CallArgs>> GetCallCredsMetadata(
+ CallArgs call_args);
// Contains refs to security connector and auth context.
grpc_call_credentials::GetRequestMetadataArgs args_;
diff --git a/contrib/libs/grpc/src/core/lib/security/transport/client_auth_filter.cc b/contrib/libs/grpc/src/core/lib/security/transport/client_auth_filter.cc
index fe657b5085..e875476cb5 100644
--- a/contrib/libs/grpc/src/core/lib/security/transport/client_auth_filter.cc
+++ b/contrib/libs/grpc/src/core/lib/security/transport/client_auth_filter.cc
@@ -20,29 +20,39 @@
#include <string.h>
-#include <util/generic/string.h>
-#include <util/string/cast.h>
+#include <functional>
+#include <type_traits> // IWYU pragma: keep
+#include <utility>
-#include "y_absl/strings/str_cat.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include <grpc/grpc_security.h>
+#include <grpc/grpc_security_constants.h>
#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/context.h"
#include "src/core/lib/channel/promise_based_filter.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/iomgr/error.h"
-#include "src/core/lib/profiling/timers.h"
+#include "src/core/lib/channel/status_util.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/promise/arena_promise.h"
+#include "src/core/lib/promise/context.h"
+#include "src/core/lib/promise/detail/basic_seq.h"
#include "src/core/lib/promise/promise.h"
+#include "src/core/lib/promise/seq.h"
#include "src/core/lib/promise/try_seq.h"
+#include "src/core/lib/resource_quota/arena.h"
#include "src/core/lib/security/context/security_context.h"
#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/security/security_connector/security_connector.h"
#include "src/core/lib/security/transport/auth_filters.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
-#include "src/core/lib/surface/call.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/transport/metadata_batch.h"
#include "src/core/lib/transport/transport.h"
#define MAX_CREDENTIALS_METADATA_COUNT 4
@@ -99,8 +109,8 @@ ClientAuthFilter::ClientAuthFilter(
RefCountedPtr<grpc_auth_context> auth_context)
: args_{std::move(security_connector), std::move(auth_context)} {}
-ArenaPromise<y_absl::StatusOr<ClientInitialMetadata>>
-ClientAuthFilter::GetCallCredsMetadata(ClientInitialMetadata initial_metadata) {
+ArenaPromise<y_absl::StatusOr<CallArgs>> ClientAuthFilter::GetCallCredsMetadata(
+ CallArgs call_args) {
auto* ctx = static_cast<grpc_client_security_context*>(
GetContext<grpc_call_context_element>()[GRPC_CONTEXT_SECURITY].value);
grpc_call_credentials* channel_call_creds =
@@ -109,8 +119,7 @@ ClientAuthFilter::GetCallCredsMetadata(ClientInitialMetadata initial_metadata) {
if (channel_call_creds == nullptr && !call_creds_has_md) {
/* Skip sending metadata altogether. */
- return Immediate(
- y_absl::StatusOr<ClientInitialMetadata>(std::move(initial_metadata)));
+ return Immediate(y_absl::StatusOr<CallArgs>(std::move(call_args)));
}
RefCountedPtr<grpc_call_credentials> creds;
@@ -149,12 +158,27 @@ ClientAuthFilter::GetCallCredsMetadata(ClientInitialMetadata initial_metadata) {
"transfer call credential."));
}
- return creds->GetRequestMetadata(std::move(initial_metadata), &args_);
+ auto client_initial_metadata = std::move(call_args.client_initial_metadata);
+ return TrySeq(
+ Seq(creds->GetRequestMetadata(std::move(client_initial_metadata), &args_),
+ [](y_absl::StatusOr<ClientMetadataHandle> new_metadata) mutable {
+ if (!new_metadata.ok()) {
+ return y_absl::StatusOr<ClientMetadataHandle>(
+ MaybeRewriteIllegalStatusCode(new_metadata.status(),
+ "call credentials"));
+ }
+ return new_metadata;
+ }),
+ [call_args =
+ std::move(call_args)](ClientMetadataHandle new_metadata) mutable {
+ call_args.client_initial_metadata = std::move(new_metadata);
+ return Immediate<y_absl::StatusOr<CallArgs>>(
+ y_absl::StatusOr<CallArgs>(std::move(call_args)));
+ });
}
-ArenaPromise<TrailingMetadata> ClientAuthFilter::MakeCallPromise(
- ClientInitialMetadata initial_metadata,
- NextPromiseFactory next_promise_factory) {
+ArenaPromise<ServerMetadataHandle> ClientAuthFilter::MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) {
auto* legacy_ctx = GetContext<grpc_call_context_element>();
if (legacy_ctx[GRPC_CONTEXT_SECURITY].value == nullptr) {
legacy_ctx[GRPC_CONTEXT_SECURITY].value =
@@ -167,24 +191,25 @@ ArenaPromise<TrailingMetadata> ClientAuthFilter::MakeCallPromise(
legacy_ctx[GRPC_CONTEXT_SECURITY].value)
->auth_context = args_.auth_context;
- auto* host = initial_metadata->get_pointer(HttpAuthorityMetadata());
+ auto* host =
+ call_args.client_initial_metadata->get_pointer(HttpAuthorityMetadata());
if (host == nullptr) {
- return next_promise_factory(std::move(initial_metadata));
+ return next_promise_factory(std::move(call_args));
}
return TrySeq(args_.security_connector->CheckCallHost(
host->as_string_view(), args_.auth_context.get()),
- GetCallCredsMetadata(std::move(initial_metadata)),
+ GetCallCredsMetadata(std::move(call_args)),
next_promise_factory);
}
y_absl::StatusOr<ClientAuthFilter> ClientAuthFilter::Create(
- const grpc_channel_args* args, ChannelFilter::Args) {
- grpc_security_connector* sc = grpc_security_connector_find_in_args(args);
+ const ChannelArgs& args, ChannelFilter::Args) {
+ auto* sc = args.GetObject<grpc_security_connector>();
if (sc == nullptr) {
return y_absl::InvalidArgumentError(
"Security connector missing from client auth filter args");
}
- grpc_auth_context* auth_context = grpc_find_auth_context_in_args(args);
+ auto* auth_context = args.GetObject<grpc_auth_context>();
if (auth_context == nullptr) {
return y_absl::InvalidArgumentError(
"Auth context missing from client auth filter args");
@@ -195,9 +220,8 @@ y_absl::StatusOr<ClientAuthFilter> ClientAuthFilter::Create(
auth_context->Ref());
}
-} // namespace grpc_core
-
-const grpc_channel_filter grpc_client_auth_filter =
- grpc_core::MakePromiseBasedFilter<grpc_core::ClientAuthFilter,
- grpc_core::FilterEndpoint::kClient>(
+const grpc_channel_filter ClientAuthFilter::kFilter =
+ MakePromiseBasedFilter<ClientAuthFilter, FilterEndpoint::kClient>(
"client-auth-filter");
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/security/transport/secure_endpoint.cc b/contrib/libs/grpc/src/core/lib/security/transport/secure_endpoint.cc
index 35b610dedb..d0cb14b226 100644
--- a/contrib/libs/grpc/src/core/lib/security/transport/secure_endpoint.cc
+++ b/contrib/libs/grpc/src/core/lib/security/transport/secure_endpoint.cc
@@ -20,23 +20,45 @@
#include "src/core/lib/security/transport/secure_endpoint.h"
-#include <new>
+#include <inttypes.h>
+#include <algorithm>
+#include <atomic>
+#include <memory>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/event_engine/memory_allocator.h>
+#include <grpc/event_engine/memory_request.h>
#include <grpc/slice.h>
#include <grpc/slice_buffer.h>
#include <grpc/support/alloc.h>
+#include <grpc/support/atm.h>
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/memory.h"
-#include "src/core/lib/iomgr/sockaddr.h"
-#include "src/core/lib/profiling/timers.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/resource_quota/api.h"
+#include "src/core/lib/resource_quota/memory_quota.h"
+#include "src/core/lib/resource_quota/resource_quota.h"
+#include "src/core/lib/resource_quota/trace.h"
#include "src/core/lib/security/transport/tsi_error.h"
#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/core/lib/slice/slice_string_helpers.h"
#include "src/core/tsi/transport_security_grpc.h"
+#include "src/core/tsi/transport_security_interface.h"
#define STAGING_BUFFER_SIZE 8192
@@ -48,6 +70,7 @@ struct secure_endpoint {
tsi_frame_protector* protector,
tsi_zero_copy_grpc_protector* zero_copy_protector,
grpc_endpoint* transport, grpc_slice* leftover_slices,
+ const grpc_channel_args* channel_args,
size_t leftover_nslices)
: wrapped_ep(transport),
protector(protector),
@@ -62,6 +85,24 @@ struct secure_endpoint {
grpc_slice_ref_internal(leftover_slices[i]));
}
grpc_slice_buffer_init(&output_buffer);
+ memory_owner =
+ grpc_core::ResourceQuotaFromChannelArgs(channel_args)
+ ->memory_quota()
+ ->CreateMemoryOwner(y_absl::StrCat(grpc_endpoint_get_peer(transport),
+ ":secure_endpoint"));
+ self_reservation = memory_owner.MakeReservation(sizeof(*this));
+ if (zero_copy_protector) {
+ read_staging_buffer = grpc_empty_slice();
+ write_staging_buffer = grpc_empty_slice();
+ } else {
+ read_staging_buffer =
+ memory_owner.MakeSlice(grpc_core::MemoryRequest(STAGING_BUFFER_SIZE));
+ write_staging_buffer =
+ memory_owner.MakeSlice(grpc_core::MemoryRequest(STAGING_BUFFER_SIZE));
+ }
+ has_posted_reclaimer.store(false, std::memory_order_relaxed);
+ min_progress_size = 1;
+ grpc_slice_buffer_init(&protector_staging_buffer);
gpr_ref_init(&ref, 1);
}
@@ -74,6 +115,7 @@ struct secure_endpoint {
grpc_slice_unref_internal(read_staging_buffer);
grpc_slice_unref_internal(write_staging_buffer);
grpc_slice_buffer_destroy_internal(&output_buffer);
+ grpc_slice_buffer_destroy_internal(&protector_staging_buffer);
gpr_mu_destroy(&protector_mu);
}
@@ -82,6 +124,8 @@ struct secure_endpoint {
struct tsi_frame_protector* protector;
struct tsi_zero_copy_grpc_protector* zero_copy_protector;
gpr_mu protector_mu;
+ grpc_core::Mutex read_mu;
+ grpc_core::Mutex write_mu;
/* saved upper level callbacks and user_data. */
grpc_closure* read_cb = nullptr;
grpc_closure* write_cb = nullptr;
@@ -91,10 +135,14 @@ struct secure_endpoint {
/* saved handshaker leftover data to unprotect. */
grpc_slice_buffer leftover_bytes;
/* buffers for read and write */
- grpc_slice read_staging_buffer = GRPC_SLICE_MALLOC(STAGING_BUFFER_SIZE);
- grpc_slice write_staging_buffer = GRPC_SLICE_MALLOC(STAGING_BUFFER_SIZE);
+ grpc_slice read_staging_buffer Y_ABSL_GUARDED_BY(read_mu);
+ grpc_slice write_staging_buffer Y_ABSL_GUARDED_BY(write_mu);
grpc_slice_buffer output_buffer;
-
+ grpc_core::MemoryOwner memory_owner;
+ grpc_core::MemoryAllocator::Reservation self_reservation;
+ std::atomic<bool> has_posted_reclaimer;
+ int min_progress_size;
+ grpc_slice_buffer protector_staging_buffer;
gpr_refcount ref;
};
} // namespace
@@ -143,10 +191,46 @@ static void secure_endpoint_unref(secure_endpoint* ep) {
static void secure_endpoint_ref(secure_endpoint* ep) { gpr_ref(&ep->ref); }
#endif
+static void maybe_post_reclaimer(secure_endpoint* ep) {
+ if (!ep->has_posted_reclaimer) {
+ SECURE_ENDPOINT_REF(ep, "benign_reclaimer");
+ ep->has_posted_reclaimer.exchange(true, std::memory_order_relaxed);
+ ep->memory_owner.PostReclaimer(
+ grpc_core::ReclamationPass::kBenign,
+ [ep](y_absl::optional<grpc_core::ReclamationSweep> sweep) {
+ if (sweep.has_value()) {
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
+ gpr_log(GPR_INFO,
+ "secure endpoint: benign reclamation to free memory");
+ }
+ grpc_slice temp_read_slice;
+ grpc_slice temp_write_slice;
+
+ ep->read_mu.Lock();
+ temp_read_slice = ep->read_staging_buffer;
+ ep->read_staging_buffer = grpc_empty_slice();
+ ep->read_mu.Unlock();
+
+ ep->write_mu.Lock();
+ temp_write_slice = ep->write_staging_buffer;
+ ep->write_staging_buffer = grpc_empty_slice();
+ ep->write_mu.Unlock();
+
+ grpc_slice_unref_internal(temp_read_slice);
+ grpc_slice_unref_internal(temp_write_slice);
+ ep->has_posted_reclaimer.exchange(false, std::memory_order_relaxed);
+ }
+ SECURE_ENDPOINT_UNREF(ep, "benign_reclaimer");
+ });
+ }
+}
+
static void flush_read_staging_buffer(secure_endpoint* ep, uint8_t** cur,
- uint8_t** end) {
- grpc_slice_buffer_add(ep->read_buffer, ep->read_staging_buffer);
- ep->read_staging_buffer = GRPC_SLICE_MALLOC(STAGING_BUFFER_SIZE);
+ uint8_t** end)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(ep->read_mu) {
+ grpc_slice_buffer_add_indexed(ep->read_buffer, ep->read_staging_buffer);
+ ep->read_staging_buffer =
+ ep->memory_owner.MakeSlice(grpc_core::MemoryRequest(STAGING_BUFFER_SIZE));
*cur = GRPC_SLICE_START_PTR(ep->read_staging_buffer);
*end = GRPC_SLICE_END_PTR(ep->read_staging_buffer);
}
@@ -171,68 +255,84 @@ static void on_read(void* user_data, grpc_error_handle error) {
uint8_t keep_looping = 0;
tsi_result result = TSI_OK;
secure_endpoint* ep = static_cast<secure_endpoint*>(user_data);
- uint8_t* cur = GRPC_SLICE_START_PTR(ep->read_staging_buffer);
- uint8_t* end = GRPC_SLICE_END_PTR(ep->read_staging_buffer);
- if (error != GRPC_ERROR_NONE) {
- grpc_slice_buffer_reset_and_unref_internal(ep->read_buffer);
- call_read_cb(ep, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
- "Secure read failed", &error, 1));
- return;
- }
+ {
+ grpc_core::MutexLock l(&ep->read_mu);
+ uint8_t* cur = GRPC_SLICE_START_PTR(ep->read_staging_buffer);
+ uint8_t* end = GRPC_SLICE_END_PTR(ep->read_staging_buffer);
- if (ep->zero_copy_protector != nullptr) {
- // Use zero-copy grpc protector to unprotect.
- result = tsi_zero_copy_grpc_protector_unprotect(
- ep->zero_copy_protector, &ep->source_buffer, ep->read_buffer);
- } else {
- // Use frame protector to unprotect.
- /* TODO(yangg) check error, maybe bail out early */
- for (i = 0; i < ep->source_buffer.count; i++) {
- grpc_slice encrypted = ep->source_buffer.slices[i];
- uint8_t* message_bytes = GRPC_SLICE_START_PTR(encrypted);
- size_t message_size = GRPC_SLICE_LENGTH(encrypted);
-
- while (message_size > 0 || keep_looping) {
- size_t unprotected_buffer_size_written = static_cast<size_t>(end - cur);
- size_t processed_message_size = message_size;
- gpr_mu_lock(&ep->protector_mu);
- result = tsi_frame_protector_unprotect(
- ep->protector, message_bytes, &processed_message_size, cur,
- &unprotected_buffer_size_written);
- gpr_mu_unlock(&ep->protector_mu);
- if (result != TSI_OK) {
- gpr_log(GPR_ERROR, "Decryption error: %s",
- tsi_result_to_string(result));
- break;
- }
- message_bytes += processed_message_size;
- message_size -= processed_message_size;
- cur += unprotected_buffer_size_written;
-
- if (cur == end) {
- flush_read_staging_buffer(ep, &cur, &end);
- /* Force to enter the loop again to extract buffered bytes in
- protector. The bytes could be buffered because of running out of
- staging_buffer. If this happens at the end of all slices, doing
- another unprotect avoids leaving data in the protector. */
- keep_looping = 1;
- } else if (unprotected_buffer_size_written > 0) {
- keep_looping = 1;
- } else {
- keep_looping = 0;
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ grpc_slice_buffer_reset_and_unref_internal(ep->read_buffer);
+ call_read_cb(ep, GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
+ "Secure read failed", &error, 1));
+ return;
+ }
+
+ if (ep->zero_copy_protector != nullptr) {
+ // Use zero-copy grpc protector to unprotect.
+ int min_progress_size = 1;
+ // Get the size of the last frame which is not yet fully decrypted.
+ // This estimated frame size is stored in ep->min_progress_size which is
+ // passed to the TCP layer to indicate the minimum number of
+ // bytes that need to be read to make meaningful progress. This would
+ // avoid reading of small slices from the network.
+ // TODO(vigneshbabu): Set min_progress_size in the regular (non-zero-copy)
+ // frame protector code path as well.
+ result = tsi_zero_copy_grpc_protector_unprotect(
+ ep->zero_copy_protector, &ep->source_buffer, ep->read_buffer,
+ &min_progress_size);
+ min_progress_size = std::max(1, min_progress_size);
+ ep->min_progress_size = result != TSI_OK ? 1 : min_progress_size;
+ } else {
+ // Use frame protector to unprotect.
+ /* TODO(yangg) check error, maybe bail out early */
+ for (i = 0; i < ep->source_buffer.count; i++) {
+ grpc_slice encrypted = ep->source_buffer.slices[i];
+ uint8_t* message_bytes = GRPC_SLICE_START_PTR(encrypted);
+ size_t message_size = GRPC_SLICE_LENGTH(encrypted);
+
+ while (message_size > 0 || keep_looping) {
+ size_t unprotected_buffer_size_written =
+ static_cast<size_t>(end - cur);
+ size_t processed_message_size = message_size;
+ gpr_mu_lock(&ep->protector_mu);
+ result = tsi_frame_protector_unprotect(
+ ep->protector, message_bytes, &processed_message_size, cur,
+ &unprotected_buffer_size_written);
+ gpr_mu_unlock(&ep->protector_mu);
+ if (result != TSI_OK) {
+ gpr_log(GPR_ERROR, "Decryption error: %s",
+ tsi_result_to_string(result));
+ break;
+ }
+ message_bytes += processed_message_size;
+ message_size -= processed_message_size;
+ cur += unprotected_buffer_size_written;
+
+ if (cur == end) {
+ flush_read_staging_buffer(ep, &cur, &end);
+ /* Force to enter the loop again to extract buffered bytes in
+ protector. The bytes could be buffered because of running out of
+ staging_buffer. If this happens at the end of all slices, doing
+ another unprotect avoids leaving data in the protector. */
+ keep_looping = 1;
+ } else if (unprotected_buffer_size_written > 0) {
+ keep_looping = 1;
+ } else {
+ keep_looping = 0;
+ }
}
+ if (result != TSI_OK) break;
}
- if (result != TSI_OK) break;
- }
- if (cur != GRPC_SLICE_START_PTR(ep->read_staging_buffer)) {
- grpc_slice_buffer_add(
- ep->read_buffer,
- grpc_slice_split_head(
- &ep->read_staging_buffer,
- static_cast<size_t>(
- cur - GRPC_SLICE_START_PTR(ep->read_staging_buffer))));
+ if (cur != GRPC_SLICE_START_PTR(ep->read_staging_buffer)) {
+ grpc_slice_buffer_add(
+ ep->read_buffer,
+ grpc_slice_split_head(
+ &ep->read_staging_buffer,
+ static_cast<size_t>(
+ cur - GRPC_SLICE_START_PTR(ep->read_staging_buffer))));
+ }
}
}
@@ -252,7 +352,8 @@ static void on_read(void* user_data, grpc_error_handle error) {
}
static void endpoint_read(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
- grpc_closure* cb, bool urgent) {
+ grpc_closure* cb, bool urgent,
+ int /*min_progress_size*/) {
secure_endpoint* ep = reinterpret_cast<secure_endpoint*>(secure_ep);
ep->read_cb = cb;
ep->read_buffer = slices;
@@ -266,93 +367,116 @@ static void endpoint_read(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
return;
}
- grpc_endpoint_read(ep->wrapped_ep, &ep->source_buffer, &ep->on_read, urgent);
+ grpc_endpoint_read(ep->wrapped_ep, &ep->source_buffer, &ep->on_read, urgent,
+ /*min_progress_size=*/ep->min_progress_size);
}
static void flush_write_staging_buffer(secure_endpoint* ep, uint8_t** cur,
- uint8_t** end) {
- grpc_slice_buffer_add(&ep->output_buffer, ep->write_staging_buffer);
- ep->write_staging_buffer = GRPC_SLICE_MALLOC(STAGING_BUFFER_SIZE);
+ uint8_t** end)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(ep->write_mu) {
+ grpc_slice_buffer_add_indexed(&ep->output_buffer, ep->write_staging_buffer);
+ ep->write_staging_buffer =
+ ep->memory_owner.MakeSlice(grpc_core::MemoryRequest(STAGING_BUFFER_SIZE));
*cur = GRPC_SLICE_START_PTR(ep->write_staging_buffer);
*end = GRPC_SLICE_END_PTR(ep->write_staging_buffer);
+ maybe_post_reclaimer(ep);
}
static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
- grpc_closure* cb, void* arg) {
- GPR_TIMER_SCOPE("secure_endpoint.endpoint_write", 0);
-
+ grpc_closure* cb, void* arg, int max_frame_size) {
unsigned i;
tsi_result result = TSI_OK;
secure_endpoint* ep = reinterpret_cast<secure_endpoint*>(secure_ep);
- uint8_t* cur = GRPC_SLICE_START_PTR(ep->write_staging_buffer);
- uint8_t* end = GRPC_SLICE_END_PTR(ep->write_staging_buffer);
- grpc_slice_buffer_reset_and_unref_internal(&ep->output_buffer);
+ {
+ grpc_core::MutexLock l(&ep->write_mu);
+ uint8_t* cur = GRPC_SLICE_START_PTR(ep->write_staging_buffer);
+ uint8_t* end = GRPC_SLICE_END_PTR(ep->write_staging_buffer);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_secure_endpoint)) {
- for (i = 0; i < slices->count; i++) {
- char* data =
- grpc_dump_slice(slices->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII);
- gpr_log(GPR_INFO, "WRITE %p: %s", ep, data);
- gpr_free(data);
- }
- }
-
- if (ep->zero_copy_protector != nullptr) {
- // Use zero-copy grpc protector to protect.
- result = tsi_zero_copy_grpc_protector_protect(ep->zero_copy_protector,
- slices, &ep->output_buffer);
- } else {
- // Use frame protector to protect.
- for (i = 0; i < slices->count; i++) {
- grpc_slice plain = slices->slices[i];
- uint8_t* message_bytes = GRPC_SLICE_START_PTR(plain);
- size_t message_size = GRPC_SLICE_LENGTH(plain);
- while (message_size > 0) {
- size_t protected_buffer_size_to_send = static_cast<size_t>(end - cur);
- size_t processed_message_size = message_size;
- gpr_mu_lock(&ep->protector_mu);
- result = tsi_frame_protector_protect(ep->protector, message_bytes,
- &processed_message_size, cur,
- &protected_buffer_size_to_send);
- gpr_mu_unlock(&ep->protector_mu);
- if (result != TSI_OK) {
- gpr_log(GPR_ERROR, "Encryption error: %s",
- tsi_result_to_string(result));
- break;
- }
- message_bytes += processed_message_size;
- message_size -= processed_message_size;
- cur += protected_buffer_size_to_send;
+ grpc_slice_buffer_reset_and_unref_internal(&ep->output_buffer);
- if (cur == end) {
- flush_write_staging_buffer(ep, &cur, &end);
- }
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_secure_endpoint)) {
+ for (i = 0; i < slices->count; i++) {
+ char* data =
+ grpc_dump_slice(slices->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII);
+ gpr_log(GPR_INFO, "WRITE %p: %s", ep, data);
+ gpr_free(data);
}
- if (result != TSI_OK) break;
}
- if (result == TSI_OK) {
- size_t still_pending_size;
- do {
- size_t protected_buffer_size_to_send = static_cast<size_t>(end - cur);
- gpr_mu_lock(&ep->protector_mu);
- result = tsi_frame_protector_protect_flush(
- ep->protector, cur, &protected_buffer_size_to_send,
- &still_pending_size);
- gpr_mu_unlock(&ep->protector_mu);
+
+ if (ep->zero_copy_protector != nullptr) {
+ // Use zero-copy grpc protector to protect.
+ result = TSI_OK;
+ // Break the input slices into chunks of size = max_frame_size and call
+ // tsi_zero_copy_grpc_protector_protect on each chunk. This ensures that
+ // the protector cannot create frames larger than the specified
+ // max_frame_size.
+ while (slices->length > static_cast<size_t>(max_frame_size) &&
+ result == TSI_OK) {
+ grpc_slice_buffer_move_first(slices,
+ static_cast<size_t>(max_frame_size),
+ &ep->protector_staging_buffer);
+ result = tsi_zero_copy_grpc_protector_protect(
+ ep->zero_copy_protector, &ep->protector_staging_buffer,
+ &ep->output_buffer);
+ }
+ if (result == TSI_OK && slices->length > 0) {
+ result = tsi_zero_copy_grpc_protector_protect(
+ ep->zero_copy_protector, slices, &ep->output_buffer);
+ }
+ grpc_slice_buffer_reset_and_unref_internal(&ep->protector_staging_buffer);
+ } else {
+ // Use frame protector to protect.
+ for (i = 0; i < slices->count; i++) {
+ grpc_slice plain = slices->slices[i];
+ uint8_t* message_bytes = GRPC_SLICE_START_PTR(plain);
+ size_t message_size = GRPC_SLICE_LENGTH(plain);
+ while (message_size > 0) {
+ size_t protected_buffer_size_to_send = static_cast<size_t>(end - cur);
+ size_t processed_message_size = message_size;
+ gpr_mu_lock(&ep->protector_mu);
+ result = tsi_frame_protector_protect(ep->protector, message_bytes,
+ &processed_message_size, cur,
+ &protected_buffer_size_to_send);
+ gpr_mu_unlock(&ep->protector_mu);
+ if (result != TSI_OK) {
+ gpr_log(GPR_ERROR, "Encryption error: %s",
+ tsi_result_to_string(result));
+ break;
+ }
+ message_bytes += processed_message_size;
+ message_size -= processed_message_size;
+ cur += protected_buffer_size_to_send;
+
+ if (cur == end) {
+ flush_write_staging_buffer(ep, &cur, &end);
+ }
+ }
if (result != TSI_OK) break;
- cur += protected_buffer_size_to_send;
- if (cur == end) {
- flush_write_staging_buffer(ep, &cur, &end);
+ }
+ if (result == TSI_OK) {
+ size_t still_pending_size;
+ do {
+ size_t protected_buffer_size_to_send = static_cast<size_t>(end - cur);
+ gpr_mu_lock(&ep->protector_mu);
+ result = tsi_frame_protector_protect_flush(
+ ep->protector, cur, &protected_buffer_size_to_send,
+ &still_pending_size);
+ gpr_mu_unlock(&ep->protector_mu);
+ if (result != TSI_OK) break;
+ cur += protected_buffer_size_to_send;
+ if (cur == end) {
+ flush_write_staging_buffer(ep, &cur, &end);
+ }
+ } while (still_pending_size > 0);
+ if (cur != GRPC_SLICE_START_PTR(ep->write_staging_buffer)) {
+ grpc_slice_buffer_add(
+ &ep->output_buffer,
+ grpc_slice_split_head(
+ &ep->write_staging_buffer,
+ static_cast<size_t>(
+ cur - GRPC_SLICE_START_PTR(ep->write_staging_buffer))));
}
- } while (still_pending_size > 0);
- if (cur != GRPC_SLICE_START_PTR(ep->write_staging_buffer)) {
- grpc_slice_buffer_add(
- &ep->output_buffer,
- grpc_slice_split_head(
- &ep->write_staging_buffer,
- static_cast<size_t>(
- cur - GRPC_SLICE_START_PTR(ep->write_staging_buffer))));
}
}
}
@@ -367,7 +491,8 @@ static void endpoint_write(grpc_endpoint* secure_ep, grpc_slice_buffer* slices,
return;
}
- grpc_endpoint_write(ep->wrapped_ep, &ep->output_buffer, cb, arg);
+ grpc_endpoint_write(ep->wrapped_ep, &ep->output_buffer, cb, arg,
+ max_frame_size);
}
static void endpoint_shutdown(grpc_endpoint* secure_ep, grpc_error_handle why) {
@@ -377,6 +502,7 @@ static void endpoint_shutdown(grpc_endpoint* secure_ep, grpc_error_handle why) {
static void endpoint_destroy(grpc_endpoint* secure_ep) {
secure_endpoint* ep = reinterpret_cast<secure_endpoint*>(secure_ep);
+ ep->memory_owner.Reset();
SECURE_ENDPOINT_UNREF(ep, "destroy");
}
@@ -434,9 +560,9 @@ grpc_endpoint* grpc_secure_endpoint_create(
struct tsi_frame_protector* protector,
struct tsi_zero_copy_grpc_protector* zero_copy_protector,
grpc_endpoint* to_wrap, grpc_slice* leftover_slices,
- size_t leftover_nslices) {
+ const grpc_channel_args* channel_args, size_t leftover_nslices) {
secure_endpoint* ep =
new secure_endpoint(&vtable, protector, zero_copy_protector, to_wrap,
- leftover_slices, leftover_nslices);
+ leftover_slices, channel_args, leftover_nslices);
return &ep->base;
}
diff --git a/contrib/libs/grpc/src/core/lib/security/transport/secure_endpoint.h b/contrib/libs/grpc/src/core/lib/security/transport/secure_endpoint.h
index b3b8e23932..e6320d9225 100644
--- a/contrib/libs/grpc/src/core/lib/security/transport/secure_endpoint.h
+++ b/contrib/libs/grpc/src/core/lib/security/transport/secure_endpoint.h
@@ -21,13 +21,14 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/slice.h>
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/iomgr/endpoint.h"
-struct tsi_frame_protector;
-struct tsi_zero_copy_grpc_protector;
-
extern grpc_core::TraceFlag grpc_trace_secure_endpoint;
/* Takes ownership of protector, zero_copy_protector, and to_wrap, and refs
@@ -37,6 +38,6 @@ grpc_endpoint* grpc_secure_endpoint_create(
struct tsi_frame_protector* protector,
struct tsi_zero_copy_grpc_protector* zero_copy_protector,
grpc_endpoint* to_wrap, grpc_slice* leftover_slices,
- size_t leftover_nslices);
+ const grpc_channel_args* channel_args, size_t leftover_nslices);
#endif /* GRPC_CORE_LIB_SECURITY_TRANSPORT_SECURE_ENDPOINT_H */
diff --git a/contrib/libs/grpc/src/core/lib/security/transport/security_handshaker.cc b/contrib/libs/grpc/src/core/lib/security/transport/security_handshaker.cc
index 1041e4bdf1..1014e9b11a 100644
--- a/contrib/libs/grpc/src/core/lib/security/transport/security_handshaker.cc
+++ b/contrib/libs/grpc/src/core/lib/security/transport/security_handshaker.cc
@@ -20,24 +20,49 @@
#include "src/core/lib/security/transport/security_handshaker.h"
-#include <stdbool.h>
+#include <limits.h>
+#include <stdint.h>
#include <string.h>
-#include <limits>
+#include <algorithm>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include "y_absl/base/attributes.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/grpc_security.h>
+#include <grpc/grpc_security_constants.h>
+#include <grpc/slice.h>
#include <grpc/slice_buffer.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channelz.h"
-#include "src/core/lib/channel/handshaker.h"
#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/iomgr/tcp_server.h"
#include "src/core/lib/security/context/security_context.h"
#include "src/core/lib/security/transport/secure_endpoint.h"
#include "src/core/lib/security/transport/tsi_error.h"
#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
+#include "src/core/lib/transport/handshaker.h"
+#include "src/core/lib/transport/handshaker_factory.h"
+#include "src/core/lib/transport/handshaker_registry.h"
#include "src/core/tsi/transport_security_grpc.h"
#define GRPC_INITIAL_HANDSHAKE_BUFFER_SIZE 256
@@ -50,7 +75,7 @@ class SecurityHandshaker : public Handshaker {
public:
SecurityHandshaker(tsi_handshaker* handshaker,
grpc_security_connector* connector,
- const grpc_channel_args* args);
+ const ChannelArgs& args);
~SecurityHandshaker() override;
void Shutdown(grpc_error_handle why) override;
void DoHandshake(grpc_tcp_server_acceptor* acceptor,
@@ -107,19 +132,19 @@ class SecurityHandshaker : public Handshaker {
RefCountedPtr<grpc_auth_context> auth_context_;
tsi_handshaker_result* handshaker_result_ = nullptr;
size_t max_frame_size_ = 0;
+ TString tsi_handshake_error_;
};
SecurityHandshaker::SecurityHandshaker(tsi_handshaker* handshaker,
grpc_security_connector* connector,
- const grpc_channel_args* args)
+ const ChannelArgs& args)
: handshaker_(handshaker),
connector_(connector->Ref(DEBUG_LOCATION, "handshake")),
handshake_buffer_size_(GRPC_INITIAL_HANDSHAKE_BUFFER_SIZE),
handshake_buffer_(
static_cast<uint8_t*>(gpr_malloc(handshake_buffer_size_))),
- max_frame_size_(grpc_channel_args_find_integer(
- args, GRPC_ARG_TSI_MAX_FRAME_SIZE,
- {0, 0, std::numeric_limits<int>::max()})) {
+ max_frame_size_(
+ std::max(0, args.GetInt(GRPC_ARG_TSI_MAX_FRAME_SIZE).value_or(0))) {
grpc_slice_buffer_init(&outgoing_);
GRPC_CLOSURE_INIT(&on_peer_checked_, &SecurityHandshaker::OnPeerCheckedFn,
this, grpc_schedule_on_exec_ctx);
@@ -166,14 +191,13 @@ void SecurityHandshaker::CleanupArgsForFailureLocked() {
args_->endpoint = nullptr;
read_buffer_to_destroy_ = args_->read_buffer;
args_->read_buffer = nullptr;
- grpc_channel_args_destroy(args_->args);
- args_->args = nullptr;
+ args_->args = ChannelArgs();
}
// If the handshake failed or we're shutting down, clean up and invoke the
// callback with the error.
void SecurityHandshaker::HandshakeFailedLocked(grpc_error_handle error) {
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
// If we were shut down after the handshake succeeded but before an
// endpoint callback was invoked, we need to generate our own error.
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshaker shutdown");
@@ -225,7 +249,7 @@ MakeChannelzSecurityFromAuthContext(grpc_auth_context* auth_context) {
void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) {
MutexLock lock(&mu_);
- if (error != GRPC_ERROR_NONE || is_shutdown_) {
+ if (!GRPC_ERROR_IS_NONE(error) || is_shutdown_) {
HandshakeFailedLocked(error);
return;
}
@@ -295,11 +319,13 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) {
grpc_slice slice = grpc_slice_from_copied_buffer(
reinterpret_cast<const char*>(unused_bytes), unused_bytes_size);
args_->endpoint = grpc_secure_endpoint_create(
- protector, zero_copy_protector, args_->endpoint, &slice, 1);
+ protector, zero_copy_protector, args_->endpoint, &slice,
+ args_->args.ToC().get(), 1);
grpc_slice_unref_internal(slice);
} else {
args_->endpoint = grpc_secure_endpoint_create(
- protector, zero_copy_protector, args_->endpoint, nullptr, 0);
+ protector, zero_copy_protector, args_->endpoint, nullptr,
+ args_->args.ToC().get(), 0);
}
} else if (unused_bytes_size > 0) {
// Not wrapping the endpoint, so just pass along unused bytes.
@@ -310,21 +336,12 @@ void SecurityHandshaker::OnPeerCheckedInner(grpc_error_handle error) {
// Done with handshaker result.
tsi_handshaker_result_destroy(handshaker_result_);
handshaker_result_ = nullptr;
- y_absl::InlinedVector<grpc_arg, 2> args_to_add = {
- // Add auth context to channel args.
- grpc_auth_context_to_arg(auth_context_.get()),
- };
- RefCountedPtr<channelz::SocketNode::Security> channelz_security;
+ args_->args = args_->args.SetObject(auth_context_);
// Add channelz channel args only if frame protector is created.
if (has_frame_protector) {
- channelz_security =
- MakeChannelzSecurityFromAuthContext(auth_context_.get());
- args_to_add.push_back(channelz_security->MakeChannelArg());
+ args_->args = args_->args.SetObject(
+ MakeChannelzSecurityFromAuthContext(auth_context_.get()));
}
- grpc_channel_args* tmp_args = args_->args;
- args_->args = grpc_channel_args_copy_and_add(tmp_args, args_to_add.data(),
- args_to_add.size());
- grpc_channel_args_destroy(tmp_args);
// Invoke callback.
ExecCtx::Run(DEBUG_LOCATION, on_handshake_done_, GRPC_ERROR_NONE);
// Set shutdown to true so that subsequent calls to
@@ -345,7 +362,7 @@ grpc_error_handle SecurityHandshaker::CheckPeerLocked() {
return grpc_set_tsi_error_result(
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Peer extraction failed"), result);
}
- connector_->check_peer(peer, args_->endpoint, &auth_context_,
+ connector_->check_peer(peer, args_->endpoint, args_->args, &auth_context_,
&on_peer_checked_);
return GRPC_ERROR_NONE;
}
@@ -367,12 +384,20 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
&on_handshake_data_received_from_peer_,
&SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler,
this, grpc_schedule_on_exec_ctx),
- /*urgent=*/true);
+ /*urgent=*/true, /*min_progress_size=*/1);
return error;
}
if (result != TSI_OK) {
+ auto* security_connector = args_->args.GetObject<grpc_security_connector>();
+ y_absl::string_view connector_type = "<unknown>";
+ if (security_connector != nullptr) {
+ connector_type = security_connector->type().name();
+ }
return grpc_set_tsi_error_result(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshake failed"), result);
+ GRPC_ERROR_CREATE_FROM_CPP_STRING(y_absl::StrCat(
+ connector_type, " handshake failed",
+ (tsi_handshake_error_.empty() ? "" : ": "), tsi_handshake_error_)),
+ result);
}
// Update handshaker result.
if (handshaker_result != nullptr) {
@@ -391,7 +416,7 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
&on_handshake_data_sent_to_peer_,
&SecurityHandshaker::OnHandshakeDataSentToPeerFnScheduler, this,
grpc_schedule_on_exec_ctx),
- nullptr);
+ nullptr, /*max_frame_size=*/INT_MAX);
} else if (handshaker_result == nullptr) {
// There is nothing to send, but need to read from peer.
grpc_endpoint_read(
@@ -400,7 +425,7 @@ grpc_error_handle SecurityHandshaker::OnHandshakeNextDoneLocked(
&on_handshake_data_received_from_peer_,
&SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler,
this, grpc_schedule_on_exec_ctx),
- /*urgent=*/true);
+ /*urgent=*/true, /*min_progress_size=*/1);
} else {
// Handshake has finished, check peer and so on.
error = CheckPeerLocked();
@@ -416,7 +441,7 @@ void SecurityHandshaker::OnHandshakeNextDoneGrpcWrapper(
MutexLock lock(&h->mu_);
grpc_error_handle error = h->OnHandshakeNextDoneLocked(
result, bytes_to_send, bytes_to_send_size, handshaker_result);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
h->HandshakeFailedLocked(error);
} else {
h.release(); // Avoid unref
@@ -431,7 +456,8 @@ grpc_error_handle SecurityHandshaker::DoHandshakerNextLocked(
tsi_handshaker_result* hs_result = nullptr;
tsi_result result = tsi_handshaker_next(
handshaker_, bytes_received, bytes_received_size, &bytes_to_send,
- &bytes_to_send_size, &hs_result, &OnHandshakeNextDoneGrpcWrapper, this);
+ &bytes_to_send_size, &hs_result, &OnHandshakeNextDoneGrpcWrapper, this,
+ &tsi_handshake_error_);
if (result == TSI_ASYNC) {
// Handshaker operating asynchronously. Nothing else to do here;
// callback will be invoked in a TSI thread.
@@ -460,7 +486,7 @@ void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn(
void* arg, grpc_error_handle error) {
RefCountedPtr<SecurityHandshaker> h(static_cast<SecurityHandshaker*>(arg));
MutexLock lock(&h->mu_);
- if (error != GRPC_ERROR_NONE || h->is_shutdown_) {
+ if (!GRPC_ERROR_IS_NONE(error) || h->is_shutdown_) {
h->HandshakeFailedLocked(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Handshake read failed", &error, 1));
return;
@@ -469,7 +495,7 @@ void SecurityHandshaker::OnHandshakeDataReceivedFromPeerFn(
size_t bytes_received_size = h->MoveReadBufferIntoHandshakeBuffer();
// Call TSI handshaker.
error = h->DoHandshakerNextLocked(h->handshake_buffer_, bytes_received_size);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
h->HandshakeFailedLocked(error);
} else {
h.release(); // Avoid unref
@@ -493,7 +519,7 @@ void SecurityHandshaker::OnHandshakeDataSentToPeerFn(void* arg,
grpc_error_handle error) {
RefCountedPtr<SecurityHandshaker> h(static_cast<SecurityHandshaker*>(arg));
MutexLock lock(&h->mu_);
- if (error != GRPC_ERROR_NONE || h->is_shutdown_) {
+ if (!GRPC_ERROR_IS_NONE(error) || h->is_shutdown_) {
h->HandshakeFailedLocked(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
"Handshake write failed", &error, 1));
return;
@@ -506,10 +532,10 @@ void SecurityHandshaker::OnHandshakeDataSentToPeerFn(void* arg,
&h->on_handshake_data_received_from_peer_,
&SecurityHandshaker::OnHandshakeDataReceivedFromPeerFnScheduler,
h.get(), grpc_schedule_on_exec_ctx),
- /*urgent=*/true);
+ /*urgent=*/true, /*min_progress_size=*/1);
} else {
error = h->CheckPeerLocked();
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
h->HandshakeFailedLocked(error);
return;
}
@@ -543,7 +569,7 @@ void SecurityHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
size_t bytes_received_size = MoveReadBufferIntoHandshakeBuffer();
grpc_error_handle error =
DoHandshakerNextLocked(handshake_buffer_, bytes_received_size);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
HandshakeFailedLocked(error);
} else {
ref.release(); // Avoid unref
@@ -566,8 +592,7 @@ class FailHandshaker : public Handshaker {
grpc_endpoint_shutdown(args->endpoint, GRPC_ERROR_REF(error));
grpc_endpoint_destroy(args->endpoint);
args->endpoint = nullptr;
- grpc_channel_args_destroy(args->args);
- args->args = nullptr;
+ args->args = ChannelArgs();
grpc_slice_buffer_destroy_internal(args->read_buffer);
gpr_free(args->read_buffer);
args->read_buffer = nullptr;
@@ -584,12 +609,11 @@ class FailHandshaker : public Handshaker {
class ClientSecurityHandshakerFactory : public HandshakerFactory {
public:
- void AddHandshakers(const grpc_channel_args* args,
+ void AddHandshakers(const ChannelArgs& args,
grpc_pollset_set* interested_parties,
HandshakeManager* handshake_mgr) override {
auto* security_connector =
- reinterpret_cast<grpc_channel_security_connector*>(
- grpc_security_connector_find_in_args(args));
+ args.GetObject<grpc_channel_security_connector>();
if (security_connector) {
security_connector->add_handshakers(args, interested_parties,
handshake_mgr);
@@ -600,12 +624,10 @@ class ClientSecurityHandshakerFactory : public HandshakerFactory {
class ServerSecurityHandshakerFactory : public HandshakerFactory {
public:
- void AddHandshakers(const grpc_channel_args* args,
+ void AddHandshakers(const ChannelArgs& args,
grpc_pollset_set* interested_parties,
HandshakeManager* handshake_mgr) override {
- auto* security_connector =
- reinterpret_cast<grpc_server_security_connector*>(
- grpc_security_connector_find_in_args(args));
+ auto* security_connector = args.GetObject<grpc_server_security_connector>();
if (security_connector) {
security_connector->add_handshakers(args, interested_parties,
handshake_mgr);
@@ -622,7 +644,7 @@ class ServerSecurityHandshakerFactory : public HandshakerFactory {
RefCountedPtr<Handshaker> SecurityHandshakerCreate(
tsi_handshaker* handshaker, grpc_security_connector* connector,
- const grpc_channel_args* args) {
+ const ChannelArgs& args) {
// If no TSI handshaker was created, return a handshaker that always fails.
// Otherwise, return a real security handshaker.
if (handshaker == nullptr) {
@@ -646,5 +668,7 @@ void SecurityRegisterHandshakerFactories(CoreConfiguration::Builder* builder) {
grpc_handshaker* grpc_security_handshaker_create(
tsi_handshaker* handshaker, grpc_security_connector* connector,
const grpc_channel_args* args) {
- return SecurityHandshakerCreate(handshaker, connector, args).release();
+ return SecurityHandshakerCreate(handshaker, connector,
+ grpc_core::ChannelArgs::FromC(args))
+ .release();
}
diff --git a/contrib/libs/grpc/src/core/lib/security/transport/security_handshaker.h b/contrib/libs/grpc/src/core/lib/security/transport/security_handshaker.h
index 8f4ab8b2eb..96c5e6fe76 100644
--- a/contrib/libs/grpc/src/core/lib/security/transport/security_handshaker.h
+++ b/contrib/libs/grpc/src/core/lib/security/transport/security_handshaker.h
@@ -21,16 +21,21 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/channel/handshaker.h"
+#include <grpc/impl/codegen/grpc_types.h>
+
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/security/security_connector/security_connector.h"
+#include "src/core/lib/transport/handshaker.h"
+#include "src/core/tsi/transport_security_interface.h"
namespace grpc_core {
/// Creates a security handshaker using \a handshaker.
RefCountedPtr<Handshaker> SecurityHandshakerCreate(
tsi_handshaker* handshaker, grpc_security_connector* connector,
- const grpc_channel_args* args);
+ const ChannelArgs& args);
/// Registers security handshaker factories.
void SecurityRegisterHandshakerFactories(CoreConfiguration::Builder*);
diff --git a/contrib/libs/grpc/src/core/lib/security/transport/server_auth_filter.cc b/contrib/libs/grpc/src/core/lib/security/transport/server_auth_filter.cc
index 185228521b..8f535781fe 100644
--- a/contrib/libs/grpc/src/core/lib/security/transport/server_auth_filter.cc
+++ b/contrib/libs/grpc/src/core/lib/security/transport/server_auth_filter.cc
@@ -20,13 +20,35 @@
#include <string.h>
+#include <algorithm>
+#include <new>
+
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
+#include <grpc/status.h>
#include <grpc/support/alloc.h>
+#include <grpc/support/atm.h>
#include <grpc/support/log.h>
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/context.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/security/context/security_context.h"
#include "src/core/lib/security/credentials/credentials.h"
-#include "src/core/lib/security/transport/auth_filters.h"
+#include "src/core/lib/security/transport/auth_filters.h" // IWYU pragma: keep
+#include "src/core/lib/slice/slice.h"
#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
static void recv_initial_metadata_ready(void* arg, grpc_error_handle error);
static void recv_trailing_metadata_ready(void* user_data,
@@ -143,13 +165,13 @@ static void on_md_processing_done_inner(grpc_call_element* elem,
grpc_error_handle error) {
call_data* calld = static_cast<call_data*>(elem->call_data);
grpc_transport_stream_op_batch* batch = calld->recv_initial_metadata_batch;
- /* TODO(jboeuf): Implement support for response_md. */
+ /* TODO(ZhenLian): Implement support for response_md. */
if (response_md != nullptr && num_response_md > 0) {
- gpr_log(GPR_INFO,
+ gpr_log(GPR_ERROR,
"response_md in auth metadata processing not supported for now. "
"Ignoring...");
}
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
for (size_t i = 0; i < num_consumed_md; i++) {
batch->payload->recv_initial_metadata.recv_initial_metadata->Remove(
grpc_core::StringViewFromSlice(consumed_md[i].key));
@@ -204,7 +226,7 @@ static void cancel_call(void* arg, grpc_error_handle error) {
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
call_data* calld = static_cast<call_data*>(elem->call_data);
// If the result was not already processed, invoke the callback now.
- if (error != GRPC_ERROR_NONE &&
+ if (!GRPC_ERROR_IS_NONE(error) &&
gpr_atm_full_cas(&calld->state, static_cast<gpr_atm>(STATE_INIT),
static_cast<gpr_atm>(STATE_CANCELLED))) {
on_md_processing_done_inner(elem, nullptr, 0, nullptr, 0,
@@ -218,7 +240,7 @@ static void recv_initial_metadata_ready(void* arg, grpc_error_handle error) {
channel_data* chand = static_cast<channel_data*>(elem->channel_data);
call_data* calld = static_cast<call_data*>(elem->call_data);
grpc_transport_stream_op_batch* batch = calld->recv_initial_metadata_batch;
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
if (chand->creds != nullptr &&
chand->creds->auth_metadata_processor().process != nullptr) {
// We're calling out to the application, so we need to make sure
@@ -332,6 +354,7 @@ const grpc_channel_filter grpc_server_auth_filter = {
server_auth_destroy_call_elem,
sizeof(channel_data),
server_auth_init_channel_elem,
+ grpc_channel_stack_no_post_init,
server_auth_destroy_channel_elem,
grpc_channel_next_get_info,
"server-auth"};
diff --git a/contrib/libs/grpc/src/core/lib/security/util/json_util.cc b/contrib/libs/grpc/src/core/lib/security/util/json_util.cc
index 564b5745de..c38d43aa23 100644
--- a/contrib/libs/grpc/src/core/lib/security/util/json_util.cc
+++ b/contrib/libs/grpc/src/core/lib/security/util/json_util.cc
@@ -20,11 +20,13 @@
#include "src/core/lib/security/util/json_util.h"
-#include <string.h>
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
#include "y_absl/strings/str_cat.h"
-#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
#include "src/core/lib/iomgr/error.h"
diff --git a/contrib/libs/grpc/src/core/lib/security/util/json_util.h b/contrib/libs/grpc/src/core/lib/security/util/json_util.h
index d3c6ec3127..24ab6c507a 100644
--- a/contrib/libs/grpc/src/core/lib/security/util/json_util.h
+++ b/contrib/libs/grpc/src/core/lib/security/util/json_util.h
@@ -21,8 +21,6 @@
#include <grpc/support/port_platform.h>
-#include <stdbool.h>
-
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/json/json.h"
diff --git a/contrib/libs/grpc/src/core/lib/service_config/service_config.h b/contrib/libs/grpc/src/core/lib/service_config/service_config.h
index 6abe245e4a..c5865260c4 100644
--- a/contrib/libs/grpc/src/core/lib/service_config/service_config.h
+++ b/contrib/libs/grpc/src/core/lib/service_config/service_config.h
@@ -19,18 +19,15 @@
#include <grpc/support/port_platform.h>
-#include <unordered_map>
-#include <vector>
+#include <stddef.h>
-#include <grpc/impl/codegen/grpc_types.h>
-#include <grpc/support/string_util.h>
+#include "y_absl/strings/string_view.h"
+#include <grpc/slice.h>
+
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/ref_counted.h"
-#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/error.h"
-#include "src/core/lib/json/json.h"
#include "src/core/lib/service_config/service_config_parser.h"
-#include "src/core/lib/slice/slice_internal.h"
// The main purpose of the code here is to parse the service config in
// JSON form, which will look like this:
@@ -56,12 +53,22 @@
// ]
// }
+#define GRPC_ARG_SERVICE_CONFIG_OBJ "grpc.internal.service_config_obj"
+
namespace grpc_core {
// TODO(roth): Consider stripping this down further to the completely minimal
// interface requied to be exposed as part of the resolver API.
class ServiceConfig : public RefCounted<ServiceConfig> {
public:
+ static y_absl::string_view ChannelArgName() {
+ return GRPC_ARG_SERVICE_CONFIG_OBJ;
+ }
+ static int ChannelArgsCompare(const ServiceConfig* a,
+ const ServiceConfig* b) {
+ return QsortCompare(a, b);
+ }
+
virtual y_absl::string_view json_string() const = 0;
/// Retrieves the global parsed config at index \a index. The
diff --git a/contrib/libs/grpc/src/core/lib/service_config/service_config_call_data.h b/contrib/libs/grpc/src/core/lib/service_config/service_config_call_data.h
index 52b141792e..ec7d9e5f5e 100644
--- a/contrib/libs/grpc/src/core/lib/service_config/service_config_call_data.h
+++ b/contrib/libs/grpc/src/core/lib/service_config/service_config_call_data.h
@@ -19,12 +19,16 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
#include <map>
+#include <memory>
+#include <utility>
#include "y_absl/strings/string_view.h"
-#include "src/core/lib/channel/context.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/unique_type_name.h"
#include "src/core/lib/service_config/service_config.h"
#include "src/core/lib/service_config/service_config_parser.h"
@@ -36,7 +40,7 @@ namespace grpc_core {
/// easily access method and global parameters for the call.
class ServiceConfigCallData {
public:
- using CallAttributes = std::map<const char*, y_absl::string_view>;
+ using CallAttributes = std::map<UniqueTypeName, y_absl::string_view>;
ServiceConfigCallData() : method_configs_(nullptr) {}
diff --git a/contrib/libs/grpc/src/core/lib/service_config/service_config_impl.cc b/contrib/libs/grpc/src/core/lib/service_config/service_config_impl.cc
index 2001019cf3..c35bb81d92 100644
--- a/contrib/libs/grpc/src/core/lib/service_config/service_config_impl.cc
+++ b/contrib/libs/grpc/src/core/lib/service_config/service_config_impl.cc
@@ -18,51 +18,64 @@
#include "src/core/lib/service_config/service_config_impl.h"
+#include <string.h>
+
+#include <map>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_join.h"
#include <grpc/support/log.h>
#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/json/json.h"
#include "src/core/lib/service_config/service_config_parser.h"
#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
namespace grpc_core {
-RefCountedPtr<ServiceConfig> ServiceConfigImpl::Create(
- const grpc_channel_args* args, y_absl::string_view json_string,
- grpc_error_handle* error) {
- GPR_DEBUG_ASSERT(error != nullptr);
- Json json = Json::Parse(json_string, error);
- if (*error != GRPC_ERROR_NONE) return nullptr;
- return MakeRefCounted<ServiceConfigImpl>(args, TString(json_string),
- std::move(json), error);
+y_absl::StatusOr<RefCountedPtr<ServiceConfig>> ServiceConfigImpl::Create(
+ const ChannelArgs& args, y_absl::string_view json_string) {
+ auto json = Json::Parse(json_string);
+ if (!json.ok()) return json.status();
+ y_absl::Status status;
+ auto service_config = MakeRefCounted<ServiceConfigImpl>(
+ args, TString(json_string), std::move(*json), &status);
+ if (!status.ok()) return status;
+ return service_config;
}
-ServiceConfigImpl::ServiceConfigImpl(const grpc_channel_args* args,
+ServiceConfigImpl::ServiceConfigImpl(const ChannelArgs& args,
TString json_string, Json json,
- grpc_error_handle* error)
+ y_absl::Status* status)
: json_string_(std::move(json_string)), json_(std::move(json)) {
- GPR_DEBUG_ASSERT(error != nullptr);
+ GPR_DEBUG_ASSERT(status != nullptr);
if (json_.type() != Json::Type::OBJECT) {
- *error =
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("JSON value is not an object");
+ *status = y_absl::InvalidArgumentError("JSON value is not an object");
return;
}
- std::vector<grpc_error_handle> error_list;
- grpc_error_handle global_error = GRPC_ERROR_NONE;
- parsed_global_configs_ =
+ std::vector<TString> errors;
+ auto parsed_global_configs =
CoreConfiguration::Get().service_config_parser().ParseGlobalParameters(
- args, json_, &global_error);
- if (global_error != GRPC_ERROR_NONE) error_list.push_back(global_error);
- grpc_error_handle local_error = ParsePerMethodParams(args);
- if (local_error != GRPC_ERROR_NONE) error_list.push_back(local_error);
- if (!error_list.empty()) {
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("Service config parsing error",
- &error_list);
+ args, json_);
+ if (!parsed_global_configs.ok()) {
+ errors.emplace_back(parsed_global_configs.status().message());
+ } else {
+ parsed_global_configs_ = std::move(*parsed_global_configs);
+ }
+ y_absl::Status local_status = ParsePerMethodParams(args);
+ if (!local_status.ok()) errors.emplace_back(local_status.message());
+ if (!errors.empty()) {
+ *status = y_absl::InvalidArgumentError(y_absl::StrCat(
+ "Service config parsing errors: [", y_absl::StrJoin(errors, "; "), "]"));
}
}
@@ -72,98 +85,95 @@ ServiceConfigImpl::~ServiceConfigImpl() {
}
}
-grpc_error_handle ServiceConfigImpl::ParseJsonMethodConfig(
- const grpc_channel_args* args, const Json& json) {
- std::vector<grpc_error_handle> error_list;
+y_absl::Status ServiceConfigImpl::ParseJsonMethodConfig(const ChannelArgs& args,
+ const Json& json,
+ size_t index) {
+ std::vector<TString> errors;
+ const ServiceConfigParser::ParsedConfigVector* vector_ptr = nullptr;
// Parse method config with each registered parser.
- auto parsed_configs =
- y_absl::make_unique<ServiceConfigParser::ParsedConfigVector>();
- grpc_error_handle parser_error = GRPC_ERROR_NONE;
- *parsed_configs =
+ auto parsed_configs_or =
CoreConfiguration::Get().service_config_parser().ParsePerMethodParameters(
- args, json, &parser_error);
- if (parser_error != GRPC_ERROR_NONE) {
- error_list.push_back(parser_error);
+ args, json);
+ if (!parsed_configs_or.ok()) {
+ errors.emplace_back(parsed_configs_or.status().message());
+ } else {
+ auto parsed_configs =
+ y_absl::make_unique<ServiceConfigParser::ParsedConfigVector>(
+ std::move(*parsed_configs_or));
+ parsed_method_config_vectors_storage_.push_back(std::move(parsed_configs));
+ vector_ptr = parsed_method_config_vectors_storage_.back().get();
}
- parsed_method_config_vectors_storage_.push_back(std::move(parsed_configs));
- const auto* vector_ptr = parsed_method_config_vectors_storage_.back().get();
// Add an entry for each path.
- bool found_name = false;
auto it = json.object_value().find("name");
if (it != json.object_value().end()) {
if (it->second.type() != Json::Type::ARRAY) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:name error:not of type Array"));
- return GRPC_ERROR_CREATE_FROM_VECTOR("methodConfig", &error_list);
- }
- const Json::Array& name_array = it->second.array_value();
- for (const Json& name : name_array) {
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
- TString path = ParseJsonMethodName(name, &parse_error);
- if (parse_error != GRPC_ERROR_NONE) {
- error_list.push_back(parse_error);
- } else {
- found_name = true;
- if (path.empty()) {
- if (default_method_config_vector_ != nullptr) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:name error:multiple default method configs"));
- }
- default_method_config_vector_ = vector_ptr;
+ errors.emplace_back("field:name error:not of type Array");
+ } else {
+ const Json::Array& name_array = it->second.array_value();
+ for (const Json& name : name_array) {
+ y_absl::StatusOr<TString> path = ParseJsonMethodName(name);
+ if (!path.ok()) {
+ errors.emplace_back(path.status().message());
} else {
- grpc_slice key = grpc_slice_from_copied_string(path.c_str());
- // If the key is not already present in the map, this will
- // store a ref to the key in the map.
- auto& value = parsed_method_configs_map_[key];
- if (value != nullptr) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:name error:multiple method configs with same name"));
- // The map entry already existed, so we need to unref the
- // key we just created.
- grpc_slice_unref_internal(key);
+ if (path->empty()) {
+ if (default_method_config_vector_ != nullptr) {
+ errors.emplace_back(
+ "field:name error:multiple default method configs");
+ }
+ default_method_config_vector_ = vector_ptr;
} else {
- value = vector_ptr;
+ grpc_slice key = grpc_slice_from_cpp_string(std::move(*path));
+ // If the key is not already present in the map, this will
+ // store a ref to the key in the map.
+ auto& value = parsed_method_configs_map_[key];
+ if (value != nullptr) {
+ errors.emplace_back(
+ "field:name error:multiple method configs with same name");
+ // The map entry already existed, so we need to unref the
+ // key we just created.
+ grpc_slice_unref_internal(key);
+ } else {
+ value = vector_ptr;
+ }
}
}
}
}
}
- if (!found_name) {
- parsed_method_config_vectors_storage_.pop_back();
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(
+ y_absl::StrCat("index ", index, ": [", y_absl::StrJoin(errors, "; "), "]"));
}
- return GRPC_ERROR_CREATE_FROM_VECTOR("methodConfig", &error_list);
+ return y_absl::OkStatus();
}
-grpc_error_handle ServiceConfigImpl::ParsePerMethodParams(
- const grpc_channel_args* args) {
- std::vector<grpc_error_handle> error_list;
+y_absl::Status ServiceConfigImpl::ParsePerMethodParams(const ChannelArgs& args) {
auto it = json_.object_value().find("methodConfig");
- if (it != json_.object_value().end()) {
- if (it->second.type() != Json::Type::ARRAY) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:methodConfig error:not of type Array"));
- }
- for (const Json& method_config : it->second.array_value()) {
- if (method_config.type() != Json::Type::OBJECT) {
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:methodConfig error:not of type Object"));
- continue;
- }
- grpc_error_handle error = ParseJsonMethodConfig(args, method_config);
- if (error != GRPC_ERROR_NONE) {
- error_list.push_back(error);
- }
+ if (it == json_.object_value().end()) return y_absl::OkStatus();
+ if (it->second.type() != Json::Type::ARRAY) {
+ return y_absl::InvalidArgumentError("field must be of type array");
+ }
+ std::vector<TString> errors;
+ for (size_t i = 0; i < it->second.array_value().size(); ++i) {
+ const Json& method_config = it->second.array_value()[i];
+ if (method_config.type() != Json::Type::OBJECT) {
+ errors.emplace_back(y_absl::StrCat("index ", i, ": not of type Object"));
+ } else {
+ y_absl::Status status = ParseJsonMethodConfig(args, method_config, i);
+ if (!status.ok()) errors.emplace_back(status.message());
}
}
- return GRPC_ERROR_CREATE_FROM_VECTOR("Method Params", &error_list);
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(y_absl::StrCat(
+ "errors parsing methodConfig: [", y_absl::StrJoin(errors, "; "), "]"));
+ }
+ return y_absl::OkStatus();
}
-TString ServiceConfigImpl::ParseJsonMethodName(const Json& json,
- grpc_error_handle* error) {
+y_absl::StatusOr<TString> ServiceConfigImpl::ParseJsonMethodName(
+ const Json& json) {
if (json.type() != Json::Type::OBJECT) {
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "field:name error:type is not object");
- return "";
+ return y_absl::InvalidArgumentError("field:name error:type is not object");
}
// Find service name.
const TString* service_name = nullptr;
@@ -171,9 +181,8 @@ TString ServiceConfigImpl::ParseJsonMethodName(const Json& json,
if (it != json.object_value().end() &&
it->second.type() != Json::Type::JSON_NULL) {
if (it->second.type() != Json::Type::STRING) {
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"field:name error: field:service error:not of type string");
- return "";
}
if (!it->second.string_value().empty()) {
service_name = &it->second.string_value();
@@ -185,9 +194,8 @@ TString ServiceConfigImpl::ParseJsonMethodName(const Json& json,
if (it != json.object_value().end() &&
it->second.type() != Json::Type::JSON_NULL) {
if (it->second.type() != Json::Type::STRING) {
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"field:name error: field:method error:not of type string");
- return "";
}
if (!it->second.string_value().empty()) {
method_name = &it->second.string_value();
@@ -197,7 +205,7 @@ TString ServiceConfigImpl::ParseJsonMethodName(const Json& json,
// Method name may not be specified without service name.
if (service_name == nullptr) {
if (method_name != nullptr) {
- *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ return y_absl::InvalidArgumentError(
"field:name error:method name populated without service name");
}
return "";
diff --git a/contrib/libs/grpc/src/core/lib/service_config/service_config_impl.h b/contrib/libs/grpc/src/core/lib/service_config/service_config_impl.h
index ab91ec2454..dd20e2f116 100644
--- a/contrib/libs/grpc/src/core/lib/service_config/service_config_impl.h
+++ b/contrib/libs/grpc/src/core/lib/service_config/service_config_impl.h
@@ -19,15 +19,23 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include <unordered_map>
#include <vector>
-#include <grpc/impl/codegen/grpc_types.h>
-#include <grpc/support/string_util.h>
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/slice.h>
+#include <grpc/support/log.h>
-#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/json/json.h"
#include "src/core/lib/service_config/service_config.h"
#include "src/core/lib/service_config/service_config_parser.h"
@@ -62,13 +70,11 @@ namespace grpc_core {
class ServiceConfigImpl final : public ServiceConfig {
public:
/// Creates a new service config from parsing \a json_string.
- /// Returns null on parse error.
- static RefCountedPtr<ServiceConfig> Create(const grpc_channel_args* args,
- y_absl::string_view json_string,
- grpc_error_handle* error);
+ static y_absl::StatusOr<RefCountedPtr<ServiceConfig>> Create(
+ const ChannelArgs& args, y_absl::string_view json_string);
- ServiceConfigImpl(const grpc_channel_args* args, TString json_string,
- Json json, grpc_error_handle* error);
+ ServiceConfigImpl(const ChannelArgs& args, TString json_string, Json json,
+ y_absl::Status* status);
~ServiceConfigImpl() override;
y_absl::string_view json_string() const override { return json_string_; }
@@ -90,14 +96,13 @@ class ServiceConfigImpl final : public ServiceConfig {
private:
// Helper functions for parsing the method configs.
- grpc_error_handle ParsePerMethodParams(const grpc_channel_args* args);
- grpc_error_handle ParseJsonMethodConfig(const grpc_channel_args* args,
- const Json& json);
+ y_absl::Status ParsePerMethodParams(const ChannelArgs& args);
+ y_absl::Status ParseJsonMethodConfig(const ChannelArgs& args, const Json& json,
+ size_t index);
// Returns a path string for the JSON name object specified by json.
// Sets *error on error.
- static TString ParseJsonMethodName(const Json& json,
- grpc_error_handle* error);
+ static y_absl::StatusOr<TString> ParseJsonMethodName(const Json& json);
TString json_string_;
Json json_;
@@ -115,8 +120,7 @@ class ServiceConfigImpl final : public ServiceConfig {
nullptr;
// Storage for all the vectors that are being used in
// parsed_method_configs_table_.
- y_absl::InlinedVector<std::unique_ptr<ServiceConfigParser::ParsedConfigVector>,
- 32>
+ std::vector<std::unique_ptr<ServiceConfigParser::ParsedConfigVector>>
parsed_method_config_vectors_storage_;
};
diff --git a/contrib/libs/grpc/src/core/lib/service_config/service_config_parser.cc b/contrib/libs/grpc/src/core/lib/service_config/service_config_parser.cc
index e281bc9dd7..8df84048b4 100644
--- a/contrib/libs/grpc/src/core/lib/service_config/service_config_parser.cc
+++ b/contrib/libs/grpc/src/core/lib/service_config/service_config_parser.cc
@@ -18,6 +18,15 @@
#include "src/core/lib/service_config/service_config_parser.h"
+#include <stdlib.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/status/status.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/str_join.h"
+
#include <grpc/support/log.h>
namespace grpc_core {
@@ -41,46 +50,43 @@ void ServiceConfigParser::Builder::RegisterParser(
registered_parsers_.emplace_back(std::move(parser));
}
-ServiceConfigParser::ParsedConfigVector
-ServiceConfigParser::ParseGlobalParameters(const grpc_channel_args* args,
- const Json& json,
- grpc_error_handle* error) const {
+y_absl::StatusOr<ServiceConfigParser::ParsedConfigVector>
+ServiceConfigParser::ParseGlobalParameters(const ChannelArgs& args,
+ const Json& json) const {
ParsedConfigVector parsed_global_configs;
- std::vector<grpc_error_handle> error_list;
+ std::vector<TString> errors;
for (size_t i = 0; i < registered_parsers_.size(); i++) {
- grpc_error_handle parser_error = GRPC_ERROR_NONE;
- auto parsed_config =
- registered_parsers_[i]->ParseGlobalParams(args, json, &parser_error);
- if (parser_error != GRPC_ERROR_NONE) {
- error_list.push_back(parser_error);
+ auto parsed_config = registered_parsers_[i]->ParseGlobalParams(args, json);
+ if (!parsed_config.ok()) {
+ errors.emplace_back(parsed_config.status().message());
+ } else {
+ parsed_global_configs.push_back(std::move(*parsed_config));
}
- parsed_global_configs.push_back(std::move(parsed_config));
}
- if (!error_list.empty()) {
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("Global Params", &error_list);
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(y_absl::StrJoin(errors, "; "));
}
- return parsed_global_configs;
+ return std::move(parsed_global_configs);
}
-ServiceConfigParser::ParsedConfigVector
-ServiceConfigParser::ParsePerMethodParameters(const grpc_channel_args* args,
- const Json& json,
- grpc_error_handle* error) const {
+y_absl::StatusOr<ServiceConfigParser::ParsedConfigVector>
+ServiceConfigParser::ParsePerMethodParameters(const ChannelArgs& args,
+ const Json& json) const {
ParsedConfigVector parsed_method_configs;
- std::vector<grpc_error_handle> error_list;
+ std::vector<TString> errors;
for (size_t i = 0; i < registered_parsers_.size(); ++i) {
- grpc_error_handle parser_error = GRPC_ERROR_NONE;
auto parsed_config =
- registered_parsers_[i]->ParsePerMethodParams(args, json, &parser_error);
- if (parser_error != GRPC_ERROR_NONE) {
- error_list.push_back(parser_error);
+ registered_parsers_[i]->ParsePerMethodParams(args, json);
+ if (!parsed_config.ok()) {
+ errors.emplace_back(parsed_config.status().message());
+ } else {
+ parsed_method_configs.push_back(std::move(*parsed_config));
}
- parsed_method_configs.push_back(std::move(parsed_config));
}
- if (!error_list.empty()) {
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("methodConfig", &error_list);
+ if (!errors.empty()) {
+ return y_absl::InvalidArgumentError(y_absl::StrJoin(errors, "; "));
}
- return parsed_method_configs;
+ return std::move(parsed_method_configs);
}
size_t ServiceConfigParser::GetParserIndex(y_absl::string_view name) const {
diff --git a/contrib/libs/grpc/src/core/lib/service_config/service_config_parser.h b/contrib/libs/grpc/src/core/lib/service_config/service_config_parser.h
index ebe10ce9d8..44ae915037 100644
--- a/contrib/libs/grpc/src/core/lib/service_config/service_config_parser.h
+++ b/contrib/libs/grpc/src/core/lib/service_config/service_config_parser.h
@@ -19,12 +19,17 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include <algorithm>
#include <memory>
+#include <utility>
#include <vector>
-#include <grpc/impl/codegen/grpc_types.h>
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
-#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/json/json.h"
namespace grpc_core {
@@ -47,21 +52,13 @@ class ServiceConfigParser {
virtual y_absl::string_view name() const = 0;
- virtual std::unique_ptr<ParsedConfig> ParseGlobalParams(
- const grpc_channel_args*, const Json& /* json */,
- grpc_error_handle* error) {
- // Avoid unused parameter warning on debug-only parameter
- (void)error;
- GPR_DEBUG_ASSERT(error != nullptr);
+ virtual y_absl::StatusOr<std::unique_ptr<ParsedConfig>> ParseGlobalParams(
+ const ChannelArgs& /*args*/, const Json& /*json*/) {
return nullptr;
}
- virtual std::unique_ptr<ParsedConfig> ParsePerMethodParams(
- const grpc_channel_args*, const Json& /* json */,
- grpc_error_handle* error) {
- // Avoid unused parameter warning on debug-only parameter
- (void)error;
- GPR_DEBUG_ASSERT(error != nullptr);
+ virtual y_absl::StatusOr<std::unique_ptr<ParsedConfig>> ParsePerMethodParams(
+ const ChannelArgs& /*args*/, const Json& /*json*/) {
return nullptr;
}
};
@@ -83,13 +80,11 @@ class ServiceConfigParser {
ServiceConfigParserList registered_parsers_;
};
- ParsedConfigVector ParseGlobalParameters(const grpc_channel_args* args,
- const Json& json,
- grpc_error_handle* error) const;
+ y_absl::StatusOr<ParsedConfigVector> ParseGlobalParameters(
+ const ChannelArgs& args, const Json& json) const;
- ParsedConfigVector ParsePerMethodParameters(const grpc_channel_args* args,
- const Json& json,
- grpc_error_handle* error) const;
+ y_absl::StatusOr<ParsedConfigVector> ParsePerMethodParameters(
+ const ChannelArgs& args, const Json& json) const;
// Return the index for a given registered parser.
// If there is an error, return -1.
diff --git a/contrib/libs/grpc/src/core/lib/slice/b64.cc b/contrib/libs/grpc/src/core/lib/slice/b64.cc
index 0a06a05c93..75af124658 100644
--- a/contrib/libs/grpc/src/core/lib/slice/b64.cc
+++ b/contrib/libs/grpc/src/core/lib/slice/b64.cc
@@ -27,7 +27,7 @@
#include <grpc/support/log.h>
#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
/* --- Constants. --- */
diff --git a/contrib/libs/grpc/src/core/lib/slice/b64.h b/contrib/libs/grpc/src/core/lib/slice/b64.h
index 65ba6622b2..573fc6877b 100644
--- a/contrib/libs/grpc/src/core/lib/slice/b64.h
+++ b/contrib/libs/grpc/src/core/lib/slice/b64.h
@@ -21,6 +21,8 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
#include <grpc/slice.h>
/* Encodes data using base64. It is the caller's responsibility to free
diff --git a/contrib/libs/grpc/src/core/lib/slice/percent_encoding.cc b/contrib/libs/grpc/src/core/lib/slice/percent_encoding.cc
index 98e17bc502..117e98d7b9 100644
--- a/contrib/libs/grpc/src/core/lib/slice/percent_encoding.cc
+++ b/contrib/libs/grpc/src/core/lib/slice/percent_encoding.cc
@@ -20,27 +20,21 @@
#include "src/core/lib/slice/percent_encoding.h"
+#include <stdlib.h>
+
#include <cstdint>
+#include <utility>
#include <grpc/support/log.h>
#include "src/core/lib/gprpp/bitset.h"
-#include "src/core/lib/slice/slice_internal.h"
-
-#if __cplusplus > 201103l
-#define GRPC_PCTENCODE_CONSTEXPR_FN constexpr
-#define GRPC_PCTENCODE_CONSTEXPR_VALUE constexpr
-#else
-#define GRPC_PCTENCODE_CONSTEXPR_FN
-#define GRPC_PCTENCODE_CONSTEXPR_VALUE const
-#endif
namespace grpc_core {
namespace {
class UrlTable : public BitSet<256> {
public:
- GRPC_PCTENCODE_CONSTEXPR_FN UrlTable() {
+ constexpr UrlTable() {
for (int i = 'a'; i <= 'z'; i++) set(i);
for (int i = 'A'; i <= 'Z'; i++) set(i);
for (int i = '0'; i <= '9'; i++) set(i);
@@ -51,11 +45,11 @@ class UrlTable : public BitSet<256> {
}
};
-GRPC_PCTENCODE_CONSTEXPR_VALUE UrlTable g_url_table;
+constexpr UrlTable g_url_table;
class CompatibleTable : public BitSet<256> {
public:
- GRPC_PCTENCODE_CONSTEXPR_FN CompatibleTable() {
+ constexpr CompatibleTable() {
for (int i = 32; i <= 126; i++) {
if (i == '%') continue;
set(i);
@@ -63,7 +57,7 @@ class CompatibleTable : public BitSet<256> {
}
};
-GRPC_PCTENCODE_CONSTEXPR_VALUE CompatibleTable g_compatible_table;
+constexpr CompatibleTable g_compatible_table;
// Map PercentEncodingType to a lookup table of legal symbols for that encoding.
const BitSet<256>& LookupTableForPercentEncodingType(PercentEncodingType type) {
diff --git a/contrib/libs/grpc/src/core/lib/slice/percent_encoding.h b/contrib/libs/grpc/src/core/lib/slice/percent_encoding.h
index 071bbecb0e..736b7274ca 100644
--- a/contrib/libs/grpc/src/core/lib/slice/percent_encoding.h
+++ b/contrib/libs/grpc/src/core/lib/slice/percent_encoding.h
@@ -28,12 +28,6 @@
#include <grpc/support/port_platform.h>
-#include <stdbool.h>
-
-#include "y_absl/types/optional.h"
-
-#include <grpc/slice.h>
-
#include "src/core/lib/slice/slice.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/slice/slice.cc b/contrib/libs/grpc/src/core/lib/slice/slice.cc
index 974701b2c1..0914734914 100644
--- a/contrib/libs/grpc/src/core/lib/slice/slice.cc
+++ b/contrib/libs/grpc/src/core/lib/slice/slice.cc
@@ -22,12 +22,13 @@
#include <string.h>
+#include <new>
+
#include <grpc/slice.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include "src/core/lib/gprpp/memory.h"
-#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/slice/slice_refcount_base.h"
@@ -147,6 +148,12 @@ class MovedCppStringSliceRefCount : public grpc_slice_refcount {
explicit MovedCppStringSliceRefCount(TString&& str)
: grpc_slice_refcount(Destroy), str_(std::move(str)) {}
+ uint8_t* data() {
+ return reinterpret_cast<uint8_t*>(const_cast<char*>(str_.data()));
+ }
+
+ size_t size() const { return str_.size(); }
+
private:
static void Destroy(grpc_slice_refcount* arg) {
delete static_cast<MovedCppStringSliceRefCount*>(arg);
@@ -205,10 +212,10 @@ grpc_slice grpc_slice_from_cpp_string(TString str) {
slice.data.inlined.length = str.size();
memcpy(GRPC_SLICE_START_PTR(slice), str.data(), str.size());
} else {
- slice.data.refcounted.bytes =
- reinterpret_cast<uint8_t*>(const_cast<char*>(str.data()));
- slice.data.refcounted.length = str.size();
- slice.refcount = new grpc_core::MovedCppStringSliceRefCount(std::move(str));
+ auto* refcount = new grpc_core::MovedCppStringSliceRefCount(std::move(str));
+ slice.data.refcounted.bytes = refcount->data();
+ slice.data.refcounted.length = refcount->size();
+ slice.refcount = refcount;
}
return slice;
}
diff --git a/contrib/libs/grpc/src/core/lib/slice/slice.h b/contrib/libs/grpc/src/core/lib/slice/slice.h
index bd810c965c..997ce7bb12 100644
--- a/contrib/libs/grpc/src/core/lib/slice/slice.h
+++ b/contrib/libs/grpc/src/core/lib/slice/slice.h
@@ -17,11 +17,17 @@
#include <grpc/support/port_platform.h>
+#include <string.h>
+
#include <cstdint>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
#include "y_absl/strings/string_view.h"
#include <grpc/slice.h>
+#include <grpc/support/log.h>
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/slice/slice_internal.h"
@@ -41,12 +47,12 @@
// MutableSlice - provides a guarantee of unique ownership, meaning the
// underlying data can be mutated safely.
-namespace grpc_core {
+// This slice implementation is an extension of the event engine Slice
+// implementation defined in <grpc/event_engine/slice.h>. Changes to this
+// implementation might warrant changes to the public event engine Slice
+// type as well.
-// Forward declarations
-class Slice;
-class StaticSlice;
-class MutableSlice;
+namespace grpc_core {
namespace slice_detail {
diff --git a/contrib/libs/grpc/src/core/lib/slice/slice_api.cc b/contrib/libs/grpc/src/core/lib/slice/slice_api.cc
index 28827d2087..d455fd82c0 100644
--- a/contrib/libs/grpc/src/core/lib/slice/slice_api.cc
+++ b/contrib/libs/grpc/src/core/lib/slice/slice_api.cc
@@ -21,7 +21,7 @@
#include <grpc/slice.h>
#include "src/core/lib/iomgr/exec_ctx.h"
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
/* Public API */
grpc_slice grpc_slice_ref(grpc_slice slice) {
diff --git a/contrib/libs/grpc/src/core/lib/slice/slice_buffer.cc b/contrib/libs/grpc/src/core/lib/slice/slice_buffer.cc
index 12cca86c55..cf78a29106 100644
--- a/contrib/libs/grpc/src/core/lib/slice/slice_buffer.cc
+++ b/contrib/libs/grpc/src/core/lib/slice/slice_buffer.cc
@@ -18,15 +18,55 @@
#include <grpc/support/port_platform.h>
+#include "src/core/lib/slice/slice_buffer.h"
+
#include <string.h>
+#include <cstdint>
+#include <utility>
+
+#include <grpc/slice.h>
#include <grpc/slice_buffer.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
+
+namespace grpc_core {
+
+void SliceBuffer::Append(Slice slice) {
+ grpc_slice_buffer_add(&slice_buffer_, slice.TakeCSlice());
+}
+
+size_t SliceBuffer::AppendIndexed(Slice slice) {
+ return grpc_slice_buffer_add_indexed(&slice_buffer_, slice.TakeCSlice());
+}
+
+Slice SliceBuffer::TakeFirst() {
+ return Slice(grpc_slice_buffer_take_first(&slice_buffer_));
+}
+
+void SliceBuffer::Prepend(Slice slice) {
+ grpc_slice_buffer_undo_take_first(&slice_buffer_, slice.TakeCSlice());
+}
+
+Slice SliceBuffer::RefSlice(size_t index) const {
+ return Slice(grpc_slice_ref_internal(slice_buffer_.slices[index]));
+}
+
+TString SliceBuffer::JoinIntoString() const {
+ TString result;
+ result.reserve(slice_buffer_.length);
+ for (size_t i = 0; i < slice_buffer_.count; i++) {
+ result.append(reinterpret_cast<const char*>(
+ GRPC_SLICE_START_PTR(slice_buffer_.slices[i])),
+ GRPC_SLICE_LENGTH(slice_buffer_.slices[i]));
+ }
+ return result;
+}
+
+} // namespace grpc_core
/* grow a buffer; requires GRPC_SLICE_BUFFER_INLINE_ELEMENTS > 1 */
#define GROW(x) (3 * (x) / 2)
@@ -91,15 +131,6 @@ void grpc_slice_buffer_destroy_internal(grpc_slice_buffer* sb) {
}
}
-void grpc_slice_buffer_destroy(grpc_slice_buffer* sb) {
- if (grpc_core::ExecCtx::Get() == nullptr) {
- grpc_core::ExecCtx exec_ctx;
- grpc_slice_buffer_destroy_internal(sb);
- } else {
- grpc_slice_buffer_destroy_internal(sb);
- }
-}
-
uint8_t* grpc_slice_buffer_tiny_add(grpc_slice_buffer* sb, size_t n) {
grpc_slice* back;
uint8_t* out;
@@ -138,13 +169,29 @@ size_t grpc_slice_buffer_add_indexed(grpc_slice_buffer* sb, grpc_slice s) {
void grpc_slice_buffer_add(grpc_slice_buffer* sb, grpc_slice s) {
size_t n = sb->count;
- /* if both the last slice in the slice buffer and the slice being added
+ grpc_slice* back = nullptr;
+ if (n != 0) {
+ back = &sb->slices[n - 1];
+ }
+ if (s.refcount != nullptr && back != nullptr &&
+ s.refcount == back->refcount &&
+ GRPC_SLICE_START_PTR(s) == GRPC_SLICE_END_PTR(*back)) {
+ // Merge the two slices into one because they are contiguous and share the
+ // same refcount object.
+ back->data.refcounted.length += GRPC_SLICE_LENGTH(s);
+ sb->length += GRPC_SLICE_LENGTH(s);
+ // Unref the merged slice.
+ grpc_slice_unref_internal(s);
+ // early out
+ return;
+ }
+
+ if (!s.refcount && n) {
+ /* if both the last slice in the slice buffer and the slice being added
are inlined (that is, that they carry their data inside the slice data
structure), and the back slice is not full, then concatenate directly
into the back slice, preventing many small slices being passed into
writes */
- if (!s.refcount && n) {
- grpc_slice* back = &sb->slices[n - 1];
if (!back->refcount &&
back->data.inlined.length < GRPC_SLICE_INLINED_SIZE) {
if (s.data.inlined.length + back->data.inlined.length <=
@@ -199,15 +246,6 @@ void grpc_slice_buffer_reset_and_unref_internal(grpc_slice_buffer* sb) {
sb->slices = sb->base_slices;
}
-void grpc_slice_buffer_reset_and_unref(grpc_slice_buffer* sb) {
- if (grpc_core::ExecCtx::Get() == nullptr) {
- grpc_core::ExecCtx exec_ctx;
- grpc_slice_buffer_reset_and_unref_internal(sb);
- } else {
- grpc_slice_buffer_reset_and_unref_internal(sb);
- }
-}
-
void grpc_slice_buffer_swap(grpc_slice_buffer* a, grpc_slice_buffer* b) {
size_t a_offset = static_cast<size_t>(a->slices - a->base_slices);
size_t b_offset = static_cast<size_t>(b->slices - b->base_slices);
@@ -343,6 +381,24 @@ void grpc_slice_buffer_move_first_into_buffer(grpc_slice_buffer* src, size_t n,
}
}
+void grpc_slice_buffer_copy_first_into_buffer(grpc_slice_buffer* src, size_t n,
+ void* dst) {
+ uint8_t* dstp = static_cast<uint8_t*>(dst);
+ GPR_ASSERT(src->length >= n);
+
+ for (size_t i = 0; i < src->count; i++) {
+ grpc_slice slice = src->slices[i];
+ size_t slice_len = GRPC_SLICE_LENGTH(slice);
+ if (slice_len >= n) {
+ memcpy(dstp, GRPC_SLICE_START_PTR(slice), n);
+ return;
+ }
+ memcpy(dstp, GRPC_SLICE_START_PTR(slice), slice_len);
+ dstp += slice_len;
+ n -= slice_len;
+ }
+}
+
void grpc_slice_buffer_trim_end(grpc_slice_buffer* sb, size_t n,
grpc_slice_buffer* garbage) {
GPR_ASSERT(n <= sb->length);
diff --git a/contrib/libs/grpc/src/core/lib/slice/slice_buffer.h b/contrib/libs/grpc/src/core/lib/slice/slice_buffer.h
new file mode 100644
index 0000000000..a7c40d7057
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/slice/slice_buffer.h
@@ -0,0 +1,138 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_SLICE_SLICE_BUFFER_Habc_SLICE_BUFFER_H
+#define GRPC_CORE_LIB_SLICE_SLICE_BUFFER_Habc_SLICE_BUFFER_H
+
+#include <grpc/support/port_platform.h>
+
+#include <string.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include <grpc/slice.h>
+#include <grpc/slice_buffer.h>
+
+#include "src/core/lib/slice/slice.h"
+
+namespace grpc_core {
+
+/// A slice buffer holds the memory for a collection of slices.
+/// The SliceBuffer object itself is meant to only hide the C-style API,
+/// and won't hold the data itself. In terms of lifespan, the
+/// grpc_slice_buffer ought to be kept somewhere inside the caller's objects,
+/// like a transport or an endpoint.
+///
+/// This lifespan rule is likely to change in the future, as we may
+/// collapse the grpc_slice_buffer structure straight into this class.
+///
+/// The SliceBuffer API is basically a replica of the grpc_slice_buffer's,
+/// and its documentation will move here once we remove the C structure,
+/// which should happen before the Event Engine's API is no longer
+/// an experimental API.
+class SliceBuffer {
+ public:
+ explicit SliceBuffer() { grpc_slice_buffer_init(&slice_buffer_); }
+ SliceBuffer(const SliceBuffer& other) = delete;
+ SliceBuffer(SliceBuffer&& other) noexcept {
+ grpc_slice_buffer_init(&slice_buffer_);
+ grpc_slice_buffer_swap(&slice_buffer_, &other.slice_buffer_);
+ }
+ /// Upon destruction, the underlying raw slice buffer is cleaned out and all
+ /// slices are unreffed.
+ ~SliceBuffer() { grpc_slice_buffer_destroy(&slice_buffer_); }
+
+ SliceBuffer& operator=(const SliceBuffer&) = delete;
+ SliceBuffer& operator=(SliceBuffer&& other) noexcept {
+ grpc_slice_buffer_swap(&slice_buffer_, &other.slice_buffer_);
+ return *this;
+ }
+
+ /// Appends a new slice into the SliceBuffer and makes an attempt to merge
+ /// this slice with the last slice in the SliceBuffer.
+ void Append(Slice slice);
+
+ /// Adds a new slice into the SliceBuffer at the next available index.
+ /// Returns the index at which the new slice is added.
+ size_t AppendIndexed(Slice slice);
+
+ /// Returns the number of slices held by the SliceBuffer.
+ size_t Count() const { return slice_buffer_.count; }
+
+ /// Removes/deletes the last n bytes in the SliceBuffer.
+ void RemoveLastNBytes(size_t n) {
+ grpc_slice_buffer_trim_end(&slice_buffer_, n, nullptr);
+ }
+
+ /// Move the first n bytes of the SliceBuffer into a memory pointed to by dst.
+ void MoveFirstNBytesIntoBuffer(size_t n, void* dst) {
+ grpc_slice_buffer_move_first_into_buffer(&slice_buffer_, n, dst);
+ }
+
+ /// Removes and unrefs all slices in the SliceBuffer.
+ void Clear() { grpc_slice_buffer_reset_and_unref(&slice_buffer_); }
+
+ /// Removes the first slice in the SliceBuffer and returns it.
+ Slice TakeFirst();
+
+ /// Prepends the slice to the the front of the SliceBuffer.
+ void Prepend(Slice slice);
+
+ /// Increased the ref-count of slice at the specified index and returns the
+ /// associated slice.
+ Slice RefSlice(size_t index) const;
+
+ /// The total number of bytes held by the SliceBuffer
+ size_t Length() const { return slice_buffer_.length; }
+
+ /// Swap with another slice buffer
+ void Swap(SliceBuffer* other) {
+ grpc_slice_buffer_swap(c_slice_buffer(), other->c_slice_buffer());
+ }
+
+ /// Concatenate all slices and return the resulting string.
+ TString JoinIntoString() const;
+
+ // Return a copy of the slice buffer
+ SliceBuffer Copy() const {
+ SliceBuffer copy;
+ for (size_t i = 0; i < Count(); i++) {
+ copy.Append(RefSlice(i));
+ }
+ return copy;
+ }
+
+ /// Return a pointer to the back raw grpc_slice_buffer
+ grpc_slice_buffer* c_slice_buffer() { return &slice_buffer_; }
+
+ /// Return a pointer to the back raw grpc_slice_buffer
+ const grpc_slice_buffer* c_slice_buffer() const { return &slice_buffer_; }
+
+ const grpc_slice& c_slice_at(size_t index) {
+ return slice_buffer_.slices[index];
+ }
+
+ private:
+ /// The backing raw slice buffer.
+ grpc_slice_buffer slice_buffer_;
+};
+
+} // namespace grpc_core
+
+// Copy the first n bytes of src into memory pointed to by dst.
+void grpc_slice_buffer_copy_first_into_buffer(grpc_slice_buffer* src, size_t n,
+ void* dst);
+
+#endif // GRPC_CORE_LIB_SLICE_SLICE_BUFFER_H
diff --git a/contrib/libs/grpc/src/core/lib/slice/slice_buffer_api.cc b/contrib/libs/grpc/src/core/lib/slice/slice_buffer_api.cc
new file mode 100644
index 0000000000..57386dac33
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/slice/slice_buffer_api.cc
@@ -0,0 +1,35 @@
+/*
+ *
+ * Copyright 2015 gRPC authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <grpc/support/port_platform.h>
+
+#include <grpc/slice.h>
+#include <grpc/slice_buffer.h>
+
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/slice/slice_internal.h"
+
+void grpc_slice_buffer_destroy(grpc_slice_buffer* sb) {
+ grpc_core::ExecCtx exec_ctx;
+ grpc_slice_buffer_destroy_internal(sb);
+}
+
+void grpc_slice_buffer_reset_and_unref(grpc_slice_buffer* sb) {
+ grpc_core::ExecCtx exec_ctx;
+ grpc_slice_buffer_reset_and_unref_internal(sb);
+}
diff --git a/contrib/libs/grpc/src/core/lib/slice/slice_internal.h b/contrib/libs/grpc/src/core/lib/slice/slice_internal.h
index 105142e082..22e5bdc463 100644
--- a/contrib/libs/grpc/src/core/lib/slice/slice_internal.h
+++ b/contrib/libs/grpc/src/core/lib/slice/slice_internal.h
@@ -21,17 +21,19 @@
#include <grpc/support/port_platform.h>
-#include <string.h>
+#include <stdint.h>
+
+#include <cstddef>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include "y_absl/strings/string_view.h"
#include <grpc/slice.h>
-#include <grpc/slice_buffer.h>
#include <grpc/support/log.h>
#include "src/core/lib/gpr/murmur_hash.h"
#include "src/core/lib/gprpp/memory.h"
-#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/slice/slice_refcount.h"
void grpc_slice_buffer_reset_and_unref_internal(grpc_slice_buffer* sb);
diff --git a/contrib/libs/grpc/src/core/lib/slice/slice_refcount.h b/contrib/libs/grpc/src/core/lib/slice/slice_refcount.h
index c3a90ca6f2..4c7cf8a3e0 100644
--- a/contrib/libs/grpc/src/core/lib/slice/slice_refcount.h
+++ b/contrib/libs/grpc/src/core/lib/slice/slice_refcount.h
@@ -17,11 +17,10 @@
#include <grpc/support/port_platform.h>
-#include <string.h>
+#include <stdint.h>
-#include <grpc/support/alloc.h>
+#include <grpc/slice.h>
-#include "src/core/lib/gpr/murmur_hash.h"
#include "src/core/lib/slice/slice_refcount_base.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/slice/slice_refcount_base.h b/contrib/libs/grpc/src/core/lib/slice/slice_refcount_base.h
index 79aaf9c1f0..7f352ef1a0 100644
--- a/contrib/libs/grpc/src/core/lib/slice/slice_refcount_base.h
+++ b/contrib/libs/grpc/src/core/lib/slice/slice_refcount_base.h
@@ -17,10 +17,9 @@
#include <grpc/support/port_platform.h>
-#include <atomic>
+#include <stddef.h>
-#include <grpc/slice.h>
-#include <grpc/support/log.h>
+#include <atomic>
// grpc_slice_refcount : A reference count for grpc_slice.
struct grpc_slice_refcount {
diff --git a/contrib/libs/grpc/src/core/lib/slice/slice_split.cc b/contrib/libs/grpc/src/core/lib/slice/slice_split.cc
deleted file mode 100644
index d2a951cb54..0000000000
--- a/contrib/libs/grpc/src/core/lib/slice/slice_split.cc
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2021 gRPC authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/lib/slice/slice_split.h"
-
-#include <string.h>
-
-#include <grpc/support/log.h>
-
-/** Finds the initial (\a begin) and final (\a end) offsets of the next
- * substring from \a str + \a read_offset until the next \a sep or the end of \a
- * str.
- *
- * Returns 1 and updates \a begin and \a end. Returns 0 otherwise. */
-static int slice_find_separator_offset(const grpc_slice str, const char* sep,
- const size_t read_offset, size_t* begin,
- size_t* end) {
- size_t i;
- const uint8_t* str_ptr = GRPC_SLICE_START_PTR(str) + read_offset;
- const size_t str_len = GRPC_SLICE_LENGTH(str) - read_offset;
- const size_t sep_len = strlen(sep);
- if (str_len < sep_len) {
- return 0;
- }
-
- for (i = 0; i <= str_len - sep_len; i++) {
- if (memcmp(str_ptr + i, sep, sep_len) == 0) {
- *begin = read_offset;
- *end = read_offset + i;
- return 1;
- }
- }
- return 0;
-}
-
-static void skip_leading_trailing_spaces(const uint8_t* str_buffer,
- size_t* begin, size_t* end) {
- while (*begin < *end && str_buffer[*begin] == ' ') {
- (*begin)++;
- }
- while (*begin < *end && str_buffer[*end - 1] == ' ') {
- (*end)--;
- }
-}
-
-static void grpc_slice_split_inner(grpc_slice str, const char* sep,
- grpc_slice_buffer* dst, bool no_space) {
- const size_t sep_len = strlen(sep);
- size_t begin, end;
- const uint8_t* str_buffer = GRPC_SLICE_START_PTR(str);
- size_t sep_pos;
-
- GPR_ASSERT(sep_len > 0);
-
- if (slice_find_separator_offset(str, sep, 0, &begin, &end) != 0) {
- do {
- sep_pos = end;
- if (no_space) {
- skip_leading_trailing_spaces(str_buffer, &begin, &end);
- }
- grpc_slice_buffer_add_indexed(dst, grpc_slice_sub(str, begin, end));
- } while (slice_find_separator_offset(str, sep, sep_pos + sep_len, &begin,
- &end) != 0);
- begin = sep_pos + sep_len;
- end = GRPC_SLICE_LENGTH(str);
- if (no_space) {
- skip_leading_trailing_spaces(str_buffer, &begin, &end);
- }
- grpc_slice_buffer_add_indexed(dst, grpc_slice_sub(str, begin, end));
- } else { /* no sep found, add whole input */
- begin = 0;
- end = GRPC_SLICE_LENGTH(str);
- if (no_space) {
- skip_leading_trailing_spaces(str_buffer, &begin, &end);
- }
- grpc_slice_buffer_add_indexed(dst, grpc_slice_sub(str, begin, end));
- }
-}
-
-void grpc_slice_split(grpc_slice str, const char* sep, grpc_slice_buffer* dst) {
- grpc_slice_split_inner(str, sep, dst, false);
-}
-
-void grpc_slice_split_without_space(grpc_slice str, const char* sep,
- grpc_slice_buffer* dst) {
- grpc_slice_split_inner(str, sep, dst, true);
-}
diff --git a/contrib/libs/grpc/src/core/lib/slice/slice_split.h b/contrib/libs/grpc/src/core/lib/slice/slice_split.h
deleted file mode 100644
index 835b16a85d..0000000000
--- a/contrib/libs/grpc/src/core/lib/slice/slice_split.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *
- * Copyright 2015 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef GRPC_CORE_LIB_SLICE_SLICE_SPLIT_H
-#define GRPC_CORE_LIB_SLICE_SLICE_SPLIT_H
-
-#include <grpc/support/port_platform.h>
-
-#include <stdbool.h>
-#include <stddef.h>
-
-#include <grpc/slice.h>
-#include <grpc/slice_buffer.h>
-
-/** Split \a str by the separator \a sep. Results are stored in \a dst, which
- * should be a properly initialized instance. */
-void grpc_slice_split(grpc_slice str, const char* sep, grpc_slice_buffer* dst);
-
-/** Split \a str by the separator \a sep and remove the leading and trailing
- * spaces of each resulting token. Results are stored in \a dst, which should be
- * a properly initialized instance. */
-void grpc_slice_split_without_space(grpc_slice str, const char* sep,
- grpc_slice_buffer* dst);
-
-#endif /* GRPC_CORE_LIB_SLICE_SLICE_SPLIT_H */
diff --git a/contrib/libs/grpc/src/core/lib/slice/slice_string_helpers.cc b/contrib/libs/grpc/src/core/lib/slice/slice_string_helpers.cc
index 35744d0aa0..0377091fc5 100644
--- a/contrib/libs/grpc/src/core/lib/slice/slice_string_helpers.cc
+++ b/contrib/libs/grpc/src/core/lib/slice/slice_string_helpers.cc
@@ -21,24 +21,8 @@
#include "src/core/lib/slice/slice_string_helpers.h"
#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/memory.h"
-#include "src/core/lib/slice/slice_internal.h"
char* grpc_dump_slice(const grpc_slice& s, uint32_t flags) {
return gpr_dump(reinterpret_cast<const char*> GRPC_SLICE_START_PTR(s),
GRPC_SLICE_LENGTH(s), flags);
}
-
-grpc_slice grpc_dump_slice_to_slice(const grpc_slice& s, uint32_t flags) {
- size_t len;
- grpc_core::UniquePtr<char> ptr(
- gpr_dump_return_len(reinterpret_cast<const char*> GRPC_SLICE_START_PTR(s),
- GRPC_SLICE_LENGTH(s), flags, &len));
- return grpc_slice_from_moved_buffer(std::move(ptr), len);
-}
-
-bool grpc_parse_slice_to_uint32(grpc_slice str, uint32_t* result) {
- return gpr_parse_bytes_to_uint32(
- reinterpret_cast<const char*> GRPC_SLICE_START_PTR(str),
- GRPC_SLICE_LENGTH(str), result) != 0;
-}
diff --git a/contrib/libs/grpc/src/core/lib/slice/slice_string_helpers.h b/contrib/libs/grpc/src/core/lib/slice/slice_string_helpers.h
index df9cadd5a8..2457c69edb 100644
--- a/contrib/libs/grpc/src/core/lib/slice/slice_string_helpers.h
+++ b/contrib/libs/grpc/src/core/lib/slice/slice_string_helpers.h
@@ -21,18 +21,11 @@
#include <grpc/support/port_platform.h>
-#include <stdbool.h>
-#include <stddef.h>
+#include <stdint.h>
#include <grpc/slice.h>
-#include "src/core/lib/gpr/string.h"
-
/* Calls gpr_dump on a slice. */
char* grpc_dump_slice(const grpc_slice& slice, uint32_t flags);
-/* Calls gpr_dump on a slice and returns the result as a slice. */
-grpc_slice grpc_dump_slice_to_slice(const grpc_slice& slice, uint32_t flags);
-
-bool grpc_parse_slice_to_uint32(grpc_slice str, uint32_t* result);
#endif /* GRPC_CORE_LIB_SLICE_SLICE_STRING_HELPERS_H */
diff --git a/contrib/libs/grpc/src/core/lib/surface/builtins.cc b/contrib/libs/grpc/src/core/lib/surface/builtins.cc
index 2e79668b78..2b50d2c353 100644
--- a/contrib/libs/grpc/src/core/lib/surface/builtins.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/builtins.cc
@@ -16,8 +16,13 @@
#include "src/core/lib/surface/builtins.h"
+#include <limits.h>
+
+#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/channel/connected_channel.h"
#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/surface/channel_init.h"
+#include "src/core/lib/surface/channel_stack_type.h"
#include "src/core/lib/surface/lame_client.h"
#include "src/core/lib/surface/server.h"
@@ -36,12 +41,12 @@ void RegisterBuiltins(CoreConfiguration::Builder* builder) {
builder->channel_init()->RegisterStage(
GRPC_CLIENT_LAME_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
[](ChannelStackBuilder* builder) {
- builder->AppendFilter(&grpc_lame_filter, nullptr);
+ builder->AppendFilter(&LameClientFilter::kFilter);
return true;
});
builder->channel_init()->RegisterStage(
GRPC_SERVER_CHANNEL, INT_MAX, [](ChannelStackBuilder* builder) {
- builder->PrependFilter(&Server::kServerTopFilter, nullptr);
+ builder->PrependFilter(&Server::kServerTopFilter);
return true;
});
}
diff --git a/contrib/libs/grpc/src/core/lib/surface/byte_buffer.cc b/contrib/libs/grpc/src/core/lib/surface/byte_buffer.cc
index 6246796e46..114fe8ede0 100644
--- a/contrib/libs/grpc/src/core/lib/surface/byte_buffer.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/byte_buffer.cc
@@ -18,12 +18,18 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
#include <grpc/byte_buffer.h>
+#include <grpc/impl/codegen/compression_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
+#include <grpc/slice_buffer.h>
#include <grpc/support/alloc.h>
-#include <grpc/support/log.h>
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
grpc_byte_buffer* grpc_raw_byte_buffer_create(grpc_slice* slices,
size_t nslices) {
diff --git a/contrib/libs/grpc/src/core/lib/surface/byte_buffer_reader.cc b/contrib/libs/grpc/src/core/lib/surface/byte_buffer_reader.cc
index 207aaef8f1..07bc197d26 100644
--- a/contrib/libs/grpc/src/core/lib/surface/byte_buffer_reader.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/byte_buffer_reader.cc
@@ -18,17 +18,17 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
#include <string.h>
#include <grpc/byte_buffer.h>
#include <grpc/byte_buffer_reader.h>
-#include <grpc/grpc.h>
-#include <grpc/slice_buffer.h>
-#include <grpc/support/alloc.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
#include <grpc/support/log.h>
#include "src/core/lib/iomgr/exec_ctx.h"
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader* reader,
grpc_byte_buffer* buffer) {
diff --git a/contrib/libs/grpc/src/core/lib/surface/call.cc b/contrib/libs/grpc/src/core/lib/surface/call.cc
index f7372aa8c7..09d8d9bc9e 100644
--- a/contrib/libs/grpc/src/core/lib/surface/call.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/call.cc
@@ -20,40 +20,54 @@
#include "src/core/lib/surface/call.h"
-#include <assert.h>
#include <limits.h>
-#include <stdio.h>
#include <stdlib.h>
-#include <string.h>
+#include <algorithm>
+#include <atomic>
+#include <new>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/string_view.h"
+#include <grpc/byte_buffer.h>
#include <grpc/compression.h>
#include <grpc/grpc.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/impl/codegen/propagation_bits.h>
#include <grpc/slice.h>
+#include <grpc/slice_buffer.h>
+#include <grpc/status.h>
#include <grpc/support/alloc.h>
+#include <grpc/support/atm.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channelz.h"
+#include "src/core/lib/channel/context.h"
#include "src/core/lib/compression/compression_internal.h"
#include "src/core/lib/debug/stats.h"
#include "src/core/lib/gpr/alloc.h"
-#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/time_precise.h"
-#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
+#include "src/core/lib/gprpp/cpp_impl_of.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/ref_counted.h"
-#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/profiling/timers.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/polling_entity.h"
#include "src/core/lib/resource_quota/arena.h"
+#include "src/core/lib/slice/slice_buffer.h"
#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_split.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/call_test_only.h"
#include "src/core/lib/surface/channel.h"
@@ -61,174 +75,343 @@
#include "src/core/lib/surface/server.h"
#include "src/core/lib/surface/validate_metadata.h"
#include "src/core/lib/transport/error_utils.h"
+#include "src/core/lib/transport/metadata_batch.h"
#include "src/core/lib/transport/transport.h"
#include <util/system/yassert.h>
-/** The maximum number of concurrent batches possible.
- Based upon the maximum number of individually queueable ops in the batch
- api:
- - initial metadata send
- - message send
- - status/close send (depending on client/server)
- - initial metadata recv
- - message recv
- - status/close recv (depending on client/server) */
-#define MAX_CONCURRENT_BATCHES 6
-
-struct batch_control {
- batch_control() = default;
-
- grpc_call* call = nullptr;
- grpc_transport_stream_op_batch op;
- /* Share memory for cq_completion and notify_tag as they are never needed
- simultaneously. Each byte used in this data structure count as six bytes
- per call, so any savings we can make are worthwhile,
-
- We use notify_tag to determine whether or not to send notification to the
- completion queue. Once we've made that determination, we can reuse the
- memory for cq_completion. */
- union {
- grpc_cq_completion cq_completion;
- struct {
- /* Any given op indicates completion by either (a) calling a closure or
- (b) sending a notification on the call's completion queue. If
- \a is_closure is true, \a tag indicates a closure to be invoked;
- otherwise, \a tag indicates the tag to be used in the notification to
- be sent to the completion queue. */
- void* tag;
- bool is_closure;
- } notify_tag;
- } completion_data;
- grpc_closure start_batch;
- grpc_closure finish_batch;
- std::atomic<intptr_t> steps_to_complete{0};
- AtomicError batch_error;
- void set_num_steps_to_complete(uintptr_t steps) {
- steps_to_complete.store(steps, std::memory_order_release);
- }
- bool completed_batch_step() {
- return steps_to_complete.fetch_sub(1, std::memory_order_acq_rel) == 1;
- }
-};
+grpc_core::TraceFlag grpc_call_error_trace(false, "call_error");
+grpc_core::TraceFlag grpc_compression_trace(false, "compression");
-struct parent_call {
- parent_call() { gpr_mu_init(&child_list_mu); }
- ~parent_call() { gpr_mu_destroy(&child_list_mu); }
+namespace grpc_core {
- gpr_mu child_list_mu;
- grpc_call* first_child = nullptr;
-};
+class Call : public CppImplOf<Call, grpc_call> {
+ public:
+ Arena* arena() { return arena_; }
+ bool is_client() const { return is_client_; }
+
+ virtual void ContextSet(grpc_context_index elem, void* value,
+ void (*destroy)(void* value)) = 0;
+ virtual void* ContextGet(grpc_context_index elem) const = 0;
+ virtual bool Completed() = 0;
+ void CancelWithStatus(grpc_status_code status, const char* description);
+ virtual void CancelWithError(grpc_error_handle error) = 0;
+ virtual void SetCompletionQueue(grpc_completion_queue* cq) = 0;
+ virtual char* GetPeer() = 0;
+ virtual grpc_call_error StartBatch(const grpc_op* ops, size_t nops,
+ void* notify_tag,
+ bool is_notify_tag_closure) = 0;
+ virtual bool failed_before_recv_message() const = 0;
+ virtual bool is_trailers_only() const = 0;
+ virtual y_absl::string_view GetServerAuthority() const = 0;
+ virtual void ExternalRef() = 0;
+ virtual void ExternalUnref() = 0;
+ virtual void InternalRef(const char* reason) = 0;
+ virtual void InternalUnref(const char* reason) = 0;
+
+ virtual grpc_compression_algorithm test_only_compression_algorithm() = 0;
+ virtual uint32_t test_only_message_flags() = 0;
+ virtual uint32_t test_only_encodings_accepted_by_peer() = 0;
+ virtual grpc_compression_algorithm compression_for_level(
+ grpc_compression_level level) = 0;
+
+ // This should return nullptr for the promise stack (and alternative means
+ // for that functionality be invented)
+ virtual grpc_call_stack* call_stack() = 0;
+
+ protected:
+ Call(Arena* arena, bool is_client, Timestamp send_deadline)
+ : arena_(arena), send_deadline_(send_deadline), is_client_(is_client) {
+ GPR_DEBUG_ASSERT(arena_ != nullptr);
+ }
+ ~Call() = default;
+
+ struct ParentCall {
+ Mutex child_list_mu;
+ Call* first_child Y_ABSL_GUARDED_BY(child_list_mu) = nullptr;
+ };
+
+ struct ChildCall {
+ explicit ChildCall(Call* parent) : parent(parent) {}
+ Call* parent;
+ /** siblings: children of the same parent form a list, and this list is
+ protected under
+ parent->mu */
+ Call* sibling_next = nullptr;
+ Call* sibling_prev = nullptr;
+ };
+
+ ParentCall* GetOrCreateParentCall();
+ ParentCall* parent_call();
+
+ y_absl::Status InitParent(Call* parent, uint32_t propagation_mask);
+ void PublishToParent(Call* parent);
+ void MaybeUnpublishFromParent();
+ void PropagateCancellationToChildren();
+
+ Timestamp send_deadline() const { return send_deadline_; }
+ void set_send_deadline(Timestamp send_deadline) {
+ send_deadline_ = send_deadline;
+ }
-struct child_call {
- explicit child_call(grpc_call* parent) : parent(parent) {}
- grpc_call* parent;
- /** siblings: children of the same parent form a list, and this list is
- protected under
- parent->mu */
- grpc_call* sibling_next = nullptr;
- grpc_call* sibling_prev = nullptr;
+ private:
+ Arena* const arena_;
+ std::atomic<ParentCall*> parent_call_{nullptr};
+ ChildCall* child_ = nullptr;
+ Timestamp send_deadline_;
+ const bool is_client_;
+ // flag indicating that cancellation is inherited
+ bool cancellation_is_inherited_ = false;
};
-#define RECV_NONE ((gpr_atm)0)
-#define RECV_INITIAL_METADATA_FIRST ((gpr_atm)1)
-
-struct grpc_call {
- grpc_call(grpc_core::Arena* arena, const grpc_call_create_args& args)
- : arena(arena),
- cq(args.cq),
- channel(args.channel),
- is_client(args.server_transport_data == nullptr),
- stream_op_payload(context) {}
-
- ~grpc_call() {
+class FilterStackCall final : public Call {
+ public:
+ ~FilterStackCall() {
for (int i = 0; i < GRPC_CONTEXT_COUNT; ++i) {
- if (context[i].destroy) {
- context[i].destroy(context[i].value);
+ if (context_[i].destroy) {
+ context_[i].destroy(context_[i].value);
}
}
- gpr_free(static_cast<void*>(const_cast<char*>(final_info.error_string)));
+ gpr_free(static_cast<void*>(const_cast<char*>(final_info_.error_string)));
+ }
+
+ bool Completed() override {
+ return gpr_atm_acq_load(&received_final_op_atm_) != 0;
}
- grpc_core::RefCount ext_ref;
- grpc_core::Arena* arena;
- grpc_core::CallCombiner call_combiner;
- grpc_completion_queue* cq;
- grpc_polling_entity pollent;
- grpc_channel* channel;
- gpr_cycle_counter start_time = gpr_get_cycle_counter();
- /* parent_call* */ gpr_atm parent_call_atm = 0;
- child_call* child = nullptr;
+ // TODO(ctiller): return y_absl::StatusOr<SomeSmartPointer<Call>>?
+ static grpc_error_handle Create(grpc_call_create_args* args,
+ grpc_call** out_call);
+
+ static Call* FromTopElem(grpc_call_element* elem) {
+ return FromCallStack(grpc_call_stack_from_top_element(elem));
+ }
+
+ grpc_call_stack* call_stack() override {
+ return reinterpret_cast<grpc_call_stack*>(
+ reinterpret_cast<char*>(this) +
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(*this)));
+ }
+
+ grpc_call_element* call_elem(size_t idx) {
+ return grpc_call_stack_element(call_stack(), idx);
+ }
+
+ CallCombiner* call_combiner() { return &call_combiner_; }
+
+ void CancelWithError(grpc_error_handle error) override;
+ void SetCompletionQueue(grpc_completion_queue* cq) override;
+ char* GetPeer() override;
+ grpc_call_error StartBatch(const grpc_op* ops, size_t nops, void* notify_tag,
+ bool is_notify_tag_closure) override;
+ void ExternalRef() override { ext_ref_.Ref(); }
+ void ExternalUnref() override;
+ void InternalRef(const char* reason) override {
+ GRPC_CALL_STACK_REF(call_stack(), reason);
+ }
+ void InternalUnref(const char* reason) override {
+ GRPC_CALL_STACK_UNREF(call_stack(), reason);
+ }
+
+ void ContextSet(grpc_context_index elem, void* value,
+ void (*destroy)(void* value)) override;
+ void* ContextGet(grpc_context_index elem) const override {
+ return context_[elem].value;
+ }
+
+ grpc_compression_algorithm compression_for_level(
+ grpc_compression_level level) override {
+ return encodings_accepted_by_peer_.CompressionAlgorithmForLevel(level);
+ }
+
+ bool is_trailers_only() const override {
+ bool result = is_trailers_only_;
+ GPR_DEBUG_ASSERT(!result || recv_initial_metadata_.TransportSize() == 0);
+ return result;
+ }
+
+ bool failed_before_recv_message() const override {
+ return call_failed_before_recv_message_;
+ }
+
+ y_absl::string_view GetServerAuthority() const override {
+ const Slice* authority_metadata =
+ recv_initial_metadata_.get_pointer(HttpAuthorityMetadata());
+ if (authority_metadata == nullptr) return "";
+ return authority_metadata->as_string_view();
+ }
+
+ grpc_compression_algorithm test_only_compression_algorithm() override {
+ return incoming_compression_algorithm_;
+ }
+
+ uint32_t test_only_message_flags() override {
+ return test_only_last_message_flags_;
+ }
+
+ uint32_t test_only_encodings_accepted_by_peer() override {
+ return encodings_accepted_by_peer_.ToLegacyBitmask();
+ }
+
+ static size_t InitialSizeEstimate() {
+ return sizeof(FilterStackCall) +
+ sizeof(BatchControl) * kMaxConcurrentBatches;
+ }
+
+ private:
+ // The maximum number of concurrent batches possible.
+ // Based upon the maximum number of individually queueable ops in the batch
+ // api:
+ // - initial metadata send
+ // - message send
+ // - status/close send (depending on client/server)
+ // - initial metadata recv
+ // - message recv
+ // - status/close recv (depending on client/server)
+ static constexpr size_t kMaxConcurrentBatches = 6;
+
+ static constexpr gpr_atm kRecvNone = 0;
+ static constexpr gpr_atm kRecvInitialMetadataFirst = 1;
+
+ struct BatchControl {
+ FilterStackCall* call_ = nullptr;
+ grpc_transport_stream_op_batch op_;
+ /* Share memory for cq_completion and notify_tag as they are never needed
+ simultaneously. Each byte used in this data structure count as six bytes
+ per call, so any savings we can make are worthwhile,
+
+ We use notify_tag to determine whether or not to send notification to the
+ completion queue. Once we've made that determination, we can reuse the
+ memory for cq_completion. */
+ union {
+ grpc_cq_completion cq_completion;
+ struct {
+ /* Any given op indicates completion by either (a) calling a closure or
+ (b) sending a notification on the call's completion queue. If
+ \a is_closure is true, \a tag indicates a closure to be invoked;
+ otherwise, \a tag indicates the tag to be used in the notification to
+ be sent to the completion queue. */
+ void* tag;
+ bool is_closure;
+ } notify_tag;
+ } completion_data_;
+ grpc_closure start_batch_;
+ grpc_closure finish_batch_;
+ std::atomic<intptr_t> steps_to_complete_{0};
+ AtomicError batch_error_;
+ void set_num_steps_to_complete(uintptr_t steps) {
+ steps_to_complete_.store(steps, std::memory_order_release);
+ }
+ bool completed_batch_step() {
+ return steps_to_complete_.fetch_sub(1, std::memory_order_acq_rel) == 1;
+ }
+
+ void PostCompletion();
+ void FinishStep();
+ void ProcessDataAfterMetadata();
+ void ReceivingStreamReady(grpc_error_handle error);
+ void ValidateFilteredMetadata();
+ void ReceivingInitialMetadataReady(grpc_error_handle error);
+ void ReceivingTrailingMetadataReady(grpc_error_handle error);
+ void FinishBatch(grpc_error_handle error);
+ };
+
+ FilterStackCall(Arena* arena, const grpc_call_create_args& args)
+ : Call(arena, args.server_transport_data == nullptr, args.send_deadline),
+ cq_(args.cq),
+ channel_(args.channel->Ref()),
+ stream_op_payload_(context_) {}
+
+ static void ReleaseCall(void* call, grpc_error_handle);
+ static void DestroyCall(void* call, grpc_error_handle);
+
+ static FilterStackCall* FromCallStack(grpc_call_stack* call_stack) {
+ return reinterpret_cast<FilterStackCall*>(
+ reinterpret_cast<char*>(call_stack) -
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(FilterStackCall)));
+ }
+
+ void ExecuteBatch(grpc_transport_stream_op_batch* batch,
+ grpc_closure* start_batch_closure);
+ void SetFinalStatus(grpc_error_handle error);
+ BatchControl* ReuseOrAllocateBatchControl(const grpc_op* ops);
+ void HandleCompressionAlgorithmDisabled(
+ grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE;
+ void HandleCompressionAlgorithmNotAccepted(
+ grpc_compression_algorithm compression_algorithm) GPR_ATTRIBUTE_NOINLINE;
+ bool PrepareApplicationMetadata(size_t count, grpc_metadata* metadata,
+ bool is_trailing);
+ void PublishAppMetadata(grpc_metadata_batch* b, bool is_trailing);
+ void RecvInitialFilter(grpc_metadata_batch* b);
+ void RecvTrailingFilter(grpc_metadata_batch* b,
+ grpc_error_handle batch_error);
+
+ RefCount ext_ref_;
+ CallCombiner call_combiner_;
+ grpc_completion_queue* cq_;
+ grpc_polling_entity pollent_;
+ RefCountedPtr<Channel> channel_;
+ gpr_cycle_counter start_time_ = gpr_get_cycle_counter();
- /* client or server call */
- bool is_client;
/** has grpc_call_unref been called */
- bool destroy_called = false;
- /** flag indicating that cancellation is inherited */
- bool cancellation_is_inherited = false;
+ bool destroy_called_ = false;
// Trailers-only response status
- bool is_trailers_only = false;
+ bool is_trailers_only_ = false;
/** which ops are in-flight */
- bool sent_initial_metadata = false;
- bool sending_message = false;
- bool sent_final_op = false;
- bool received_initial_metadata = false;
- bool receiving_message = false;
- bool requested_final_op = false;
- gpr_atm any_ops_sent_atm = 0;
- gpr_atm received_final_op_atm = 0;
-
- batch_control* active_batches[MAX_CONCURRENT_BATCHES] = {};
- grpc_transport_stream_op_batch_payload stream_op_payload;
+ bool sent_initial_metadata_ = false;
+ bool sending_message_ = false;
+ bool sent_final_op_ = false;
+ bool received_initial_metadata_ = false;
+ bool receiving_message_ = false;
+ bool requested_final_op_ = false;
+ gpr_atm received_final_op_atm_ = 0;
+
+ BatchControl* active_batches_[kMaxConcurrentBatches] = {};
+ grpc_transport_stream_op_batch_payload stream_op_payload_;
/* first idx: is_receiving, second idx: is_trailing */
- grpc_metadata_batch send_initial_metadata{arena};
- grpc_metadata_batch send_trailing_metadata{arena};
- grpc_metadata_batch recv_initial_metadata{arena};
- grpc_metadata_batch recv_trailing_metadata{arena};
+ grpc_metadata_batch send_initial_metadata_{arena()};
+ grpc_metadata_batch send_trailing_metadata_{arena()};
+ grpc_metadata_batch recv_initial_metadata_{arena()};
+ grpc_metadata_batch recv_trailing_metadata_{arena()};
/* Buffered read metadata waiting to be returned to the application.
Element 0 is initial metadata, element 1 is trailing metadata. */
- grpc_metadata_array* buffered_metadata[2] = {};
+ grpc_metadata_array* buffered_metadata_[2] = {};
// A char* indicating the peer name.
- gpr_atm peer_string = 0;
+ gpr_atm peer_string_ = 0;
/* Call data useful used for reporting. Only valid after the call has
* completed */
- grpc_call_final_info final_info;
+ grpc_call_final_info final_info_;
/* Compression algorithm for *incoming* data */
- grpc_compression_algorithm incoming_compression_algorithm =
+ grpc_compression_algorithm incoming_compression_algorithm_ =
GRPC_COMPRESS_NONE;
/* Supported encodings (compression algorithms), a bitset.
* Always support no compression. */
- grpc_core::CompressionAlgorithmSet encodings_accepted_by_peer{
- GRPC_COMPRESS_NONE};
- /* Supported stream encodings (stream compression algorithms), a bitset */
- uint32_t stream_encodings_accepted_by_peer = 0;
+ CompressionAlgorithmSet encodings_accepted_by_peer_{GRPC_COMPRESS_NONE};
/* Contexts for various subsystems (security, tracing, ...). */
- grpc_call_context_element context[GRPC_CONTEXT_COUNT] = {};
-
- grpc_core::Timestamp send_deadline;
-
- grpc_core::ManualConstructor<grpc_core::SliceBufferByteStream> sending_stream;
-
- grpc_core::OrphanablePtr<grpc_core::ByteStream> receiving_stream;
- bool call_failed_before_recv_message = false;
- grpc_byte_buffer** receiving_buffer = nullptr;
- grpc_slice receiving_slice = grpc_empty_slice();
- grpc_closure receiving_slice_ready;
- grpc_closure receiving_stream_ready;
- grpc_closure receiving_initial_metadata_ready;
- grpc_closure receiving_trailing_metadata_ready;
- uint32_t test_only_last_message_flags = 0;
+ grpc_call_context_element context_[GRPC_CONTEXT_COUNT] = {};
+
+ SliceBuffer send_slice_buffer_;
+ y_absl::optional<SliceBuffer> receiving_slice_buffer_;
+ uint32_t receiving_stream_flags_;
+
+ bool call_failed_before_recv_message_ = false;
+ grpc_byte_buffer** receiving_buffer_ = nullptr;
+ grpc_slice receiving_slice_ = grpc_empty_slice();
+ grpc_closure receiving_stream_ready_;
+ grpc_closure receiving_initial_metadata_ready_;
+ grpc_closure receiving_trailing_metadata_ready_;
+ uint32_t test_only_last_message_flags_ = 0;
// Status about operation of call
- bool sent_server_trailing_metadata = false;
- gpr_atm cancelled_with_error = 0;
+ bool sent_server_trailing_metadata_ = false;
+ gpr_atm cancelled_with_error_ = 0;
- grpc_closure release_call;
+ grpc_closure release_call_;
union {
struct {
@@ -239,10 +422,10 @@ struct grpc_call {
struct {
int* cancelled;
// backpointer to owning server if this is a server side call.
- grpc_core::Server* core_server;
+ Server* core_server;
} server;
- } final_op;
- AtomicError status_error;
+ } final_op_;
+ AtomicError status_error_;
/* recv_state can contain one of the following values:
RECV_NONE : : no initial metadata and messages received
@@ -260,220 +443,174 @@ struct grpc_call {
For 1, 4: See receiving_initial_metadata_ready() function
For 2, 3: See receiving_stream_ready() function */
- gpr_atm recv_state = 0;
+ gpr_atm recv_state_ = 0;
};
-grpc_core::TraceFlag grpc_call_error_trace(false, "call_error");
-grpc_core::TraceFlag grpc_compression_trace(false, "compression");
-
-#define CALL_STACK_FROM_CALL(call) \
- (grpc_call_stack*)((char*)(call) + \
- GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)))
-#define CALL_FROM_CALL_STACK(call_stack) \
- (grpc_call*)(((char*)(call_stack)) - \
- GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)))
-
-#define CALL_ELEM_FROM_CALL(call, idx) \
- grpc_call_stack_element(CALL_STACK_FROM_CALL(call), idx)
-#define CALL_FROM_TOP_ELEM(top_elem) \
- CALL_FROM_CALL_STACK(grpc_call_stack_from_top_element(top_elem))
-
-static void execute_batch(grpc_call* call,
- grpc_transport_stream_op_batch* batch,
- grpc_closure* start_batch_closure);
-
-static void cancel_with_status(grpc_call* c, grpc_status_code status,
- const char* description);
-static void cancel_with_error(grpc_call* c, grpc_error_handle error);
-static void destroy_call(void* call_stack, grpc_error_handle error);
-static void receiving_slice_ready(void* bctlp, grpc_error_handle error);
-static void set_final_status(grpc_call* call, grpc_error_handle error);
-static void process_data_after_md(batch_control* bctl);
-static void post_batch_completion(batch_control* bctl);
-
-static void add_init_error(grpc_error_handle* composite,
- grpc_error_handle new_err) {
- if (new_err == GRPC_ERROR_NONE) return;
- if (*composite == GRPC_ERROR_NONE) {
- *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Call creation failed");
+Call::ParentCall* Call::GetOrCreateParentCall() {
+ ParentCall* p = parent_call_.load(std::memory_order_acquire);
+ if (p == nullptr) {
+ p = arena_->New<ParentCall>();
+ ParentCall* expected = nullptr;
+ if (!parent_call_.compare_exchange_strong(expected, p,
+ std::memory_order_release,
+ std::memory_order_relaxed)) {
+ p->~ParentCall();
+ p = expected;
+ }
}
- *composite = grpc_error_add_child(*composite, new_err);
+ return p;
}
-void* grpc_call_arena_alloc(grpc_call* call, size_t size) {
- grpc_core::ExecCtx exec_ctx;
- return call->arena->Alloc(size);
+Call::ParentCall* Call::parent_call() {
+ return parent_call_.load(std::memory_order_acquire);
}
-static parent_call* get_or_create_parent_call(grpc_call* call) {
- parent_call* p =
- reinterpret_cast<parent_call*>(gpr_atm_acq_load(&call->parent_call_atm));
- if (p == nullptr) {
- p = call->arena->New<parent_call>();
- if (!gpr_atm_rel_cas(&call->parent_call_atm,
- reinterpret_cast<gpr_atm>(nullptr),
- reinterpret_cast<gpr_atm>(p))) {
- p->~parent_call();
- p = reinterpret_cast<parent_call*>(
- gpr_atm_acq_load(&call->parent_call_atm));
+y_absl::Status Call::InitParent(Call* parent, uint32_t propagation_mask) {
+ child_ = arena()->New<ChildCall>(parent);
+
+ parent->InternalRef("child");
+ GPR_ASSERT(is_client_);
+ GPR_ASSERT(!parent->is_client_);
+
+ if (propagation_mask & GRPC_PROPAGATE_DEADLINE) {
+ send_deadline_ = std::min(send_deadline_, parent->send_deadline_);
+ }
+ /* for now GRPC_PROPAGATE_TRACING_CONTEXT *MUST* be passed with
+ * GRPC_PROPAGATE_STATS_CONTEXT */
+ /* TODO(ctiller): This should change to use the appropriate census start_op
+ * call. */
+ if (propagation_mask & GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT) {
+ if (0 == (propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT)) {
+ return y_absl::UnknownError(
+ "Census tracing propagation requested without Census context "
+ "propagation");
}
+ ContextSet(GRPC_CONTEXT_TRACING, parent->ContextGet(GRPC_CONTEXT_TRACING),
+ nullptr);
+ } else if (propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT) {
+ return y_absl::UnknownError(
+ "Census context propagation requested without Census tracing "
+ "propagation");
}
- return p;
-}
-
-static parent_call* get_parent_call(grpc_call* call) {
- return reinterpret_cast<parent_call*>(
- gpr_atm_acq_load(&call->parent_call_atm));
+ if (propagation_mask & GRPC_PROPAGATE_CANCELLATION) {
+ cancellation_is_inherited_ = true;
+ }
+ return y_absl::OkStatus();
}
-size_t grpc_call_get_initial_size_estimate() {
- return sizeof(grpc_call) + sizeof(batch_control) * MAX_CONCURRENT_BATCHES;
+void Call::PublishToParent(Call* parent) {
+ ChildCall* cc = child_;
+ ParentCall* pc = parent->GetOrCreateParentCall();
+ MutexLock lock(&pc->child_list_mu);
+ if (pc->first_child == nullptr) {
+ pc->first_child = this;
+ cc->sibling_next = cc->sibling_prev = this;
+ } else {
+ cc->sibling_next = pc->first_child;
+ cc->sibling_prev = pc->first_child->child_->sibling_prev;
+ cc->sibling_next->child_->sibling_prev =
+ cc->sibling_prev->child_->sibling_next = this;
+ }
+ if (parent->Completed()) {
+ CancelWithError(GRPC_ERROR_CANCELLED);
+ }
}
-grpc_error_handle grpc_call_create(grpc_call_create_args* args,
- grpc_call** out_call) {
- GPR_TIMER_SCOPE("grpc_call_create", 0);
+grpc_error_handle FilterStackCall::Create(grpc_call_create_args* args,
+ grpc_call** out_call) {
+ Channel* channel = args->channel.get();
- GRPC_CHANNEL_INTERNAL_REF(args->channel, "call");
+ auto add_init_error = [](grpc_error_handle* composite,
+ grpc_error_handle new_err) {
+ if (GRPC_ERROR_IS_NONE(new_err)) return;
+ if (GRPC_ERROR_IS_NONE(*composite)) {
+ *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Call creation failed");
+ }
+ *composite = grpc_error_add_child(*composite, new_err);
+ };
- grpc_core::Arena* arena;
- grpc_call* call;
+ Arena* arena;
+ FilterStackCall* call;
grpc_error_handle error = GRPC_ERROR_NONE;
- grpc_channel_stack* channel_stack =
- grpc_channel_get_channel_stack(args->channel);
- size_t initial_size = grpc_channel_get_call_size_estimate(args->channel);
+ grpc_channel_stack* channel_stack = channel->channel_stack();
+ size_t initial_size = channel->CallSizeEstimate();
GRPC_STATS_INC_CALL_INITIAL_SIZE(initial_size);
- size_t call_and_stack_size =
- GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(grpc_call)) +
- channel_stack->call_stack_size;
size_t call_alloc_size =
- call_and_stack_size + (args->parent ? sizeof(child_call) : 0);
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(FilterStackCall)) +
+ channel_stack->call_stack_size;
- std::pair<grpc_core::Arena*, void*> arena_with_call =
- grpc_core::Arena::CreateWithAlloc(initial_size, call_alloc_size,
- &*args->channel->allocator);
+ std::pair<Arena*, void*> arena_with_call = Arena::CreateWithAlloc(
+ initial_size, call_alloc_size, channel->allocator());
arena = arena_with_call.first;
- call = new (arena_with_call.second) grpc_call(arena, *args);
- *out_call = call;
+ call = new (arena_with_call.second) FilterStackCall(arena, *args);
+ GPR_DEBUG_ASSERT(FromC(call->c_ptr()) == call);
+ GPR_DEBUG_ASSERT(FromCallStack(call->call_stack()) == call);
+ *out_call = call->c_ptr();
grpc_slice path = grpc_empty_slice();
- if (call->is_client) {
- call->final_op.client.status_details = nullptr;
- call->final_op.client.status = nullptr;
- call->final_op.client.error_string = nullptr;
+ if (call->is_client()) {
+ call->final_op_.client.status_details = nullptr;
+ call->final_op_.client.status = nullptr;
+ call->final_op_.client.error_string = nullptr;
GRPC_STATS_INC_CLIENT_CALLS_CREATED();
path = grpc_slice_ref_internal(args->path->c_slice());
- call->send_initial_metadata.Set(grpc_core::HttpPathMetadata(),
- std::move(*args->path));
+ call->send_initial_metadata_.Set(HttpPathMetadata(),
+ std::move(*args->path));
if (args->authority.has_value()) {
- call->send_initial_metadata.Set(grpc_core::HttpAuthorityMetadata(),
- std::move(*args->authority));
+ call->send_initial_metadata_.Set(HttpAuthorityMetadata(),
+ std::move(*args->authority));
}
} else {
GRPC_STATS_INC_SERVER_CALLS_CREATED();
- call->final_op.server.cancelled = nullptr;
- call->final_op.server.core_server = args->server;
+ call->final_op_.server.cancelled = nullptr;
+ call->final_op_.server.core_server = args->server;
}
- grpc_core::Timestamp send_deadline = args->send_deadline;
- bool immediately_cancel = false;
-
- if (args->parent != nullptr) {
- call->child = new (reinterpret_cast<char*>(arena_with_call.second) +
- call_and_stack_size) child_call(args->parent);
-
- GRPC_CALL_INTERNAL_REF(args->parent, "child");
- GPR_ASSERT(call->is_client);
- GPR_ASSERT(!args->parent->is_client);
-
- if (args->propagation_mask & GRPC_PROPAGATE_DEADLINE) {
- send_deadline = std::min(send_deadline, args->parent->send_deadline);
- }
- /* for now GRPC_PROPAGATE_TRACING_CONTEXT *MUST* be passed with
- * GRPC_PROPAGATE_STATS_CONTEXT */
- /* TODO(ctiller): This should change to use the appropriate census start_op
- * call. */
- if (args->propagation_mask & GRPC_PROPAGATE_CENSUS_TRACING_CONTEXT) {
- if (0 == (args->propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT)) {
- add_init_error(&error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Census tracing propagation requested "
- "without Census context propagation"));
- }
- grpc_call_context_set(call, GRPC_CONTEXT_TRACING,
- args->parent->context[GRPC_CONTEXT_TRACING].value,
- nullptr);
- } else if (args->propagation_mask & GRPC_PROPAGATE_CENSUS_STATS_CONTEXT) {
- add_init_error(&error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
- "Census context propagation requested "
- "without Census tracing propagation"));
- }
- if (args->propagation_mask & GRPC_PROPAGATE_CANCELLATION) {
- call->cancellation_is_inherited = true;
- if (gpr_atm_acq_load(&args->parent->received_final_op_atm)) {
- immediately_cancel = true;
- }
- }
+ Call* parent = Call::FromC(args->parent);
+ if (parent != nullptr) {
+ add_init_error(&error, absl_status_to_grpc_error(call->InitParent(
+ parent, args->propagation_mask)));
}
- call->send_deadline = send_deadline;
/* initial refcount dropped by grpc_call_unref */
- grpc_call_element_args call_args = {CALL_STACK_FROM_CALL(call),
- args->server_transport_data,
- call->context,
- path,
- call->start_time,
- send_deadline,
- call->arena,
- &call->call_combiner};
- add_init_error(&error, grpc_call_stack_init(channel_stack, 1, destroy_call,
+ grpc_call_element_args call_args = {
+ call->call_stack(), args->server_transport_data,
+ call->context_, path,
+ call->start_time_, call->send_deadline(),
+ call->arena(), &call->call_combiner_};
+ add_init_error(&error, grpc_call_stack_init(channel_stack, 1, DestroyCall,
call, &call_args));
// Publish this call to parent only after the call stack has been initialized.
- if (args->parent != nullptr) {
- child_call* cc = call->child;
- parent_call* pc = get_or_create_parent_call(args->parent);
- gpr_mu_lock(&pc->child_list_mu);
- if (pc->first_child == nullptr) {
- pc->first_child = call;
- cc->sibling_next = cc->sibling_prev = call;
- } else {
- cc->sibling_next = pc->first_child;
- cc->sibling_prev = pc->first_child->child->sibling_prev;
- cc->sibling_next->child->sibling_prev =
- cc->sibling_prev->child->sibling_next = call;
- }
- gpr_mu_unlock(&pc->child_list_mu);
+ if (parent != nullptr) {
+ call->PublishToParent(parent);
}
- if (error != GRPC_ERROR_NONE) {
- cancel_with_error(call, GRPC_ERROR_REF(error));
- }
- if (immediately_cancel) {
- cancel_with_error(call, GRPC_ERROR_CANCELLED);
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ call->CancelWithError(GRPC_ERROR_REF(error));
}
if (args->cq != nullptr) {
GPR_ASSERT(args->pollset_set_alternative == nullptr &&
"Only one of 'cq' and 'pollset_set_alternative' should be "
"non-nullptr.");
GRPC_CQ_INTERNAL_REF(args->cq, "bind");
- call->pollent =
+ call->pollent_ =
grpc_polling_entity_create_from_pollset(grpc_cq_pollset(args->cq));
}
if (args->pollset_set_alternative != nullptr) {
- call->pollent = grpc_polling_entity_create_from_pollset_set(
+ call->pollent_ = grpc_polling_entity_create_from_pollset_set(
args->pollset_set_alternative);
}
- if (!grpc_polling_entity_is_empty(&call->pollent)) {
- grpc_call_stack_set_pollset_or_pollset_set(CALL_STACK_FROM_CALL(call),
- &call->pollent);
+ if (!grpc_polling_entity_is_empty(&call->pollent_)) {
+ grpc_call_stack_set_pollset_or_pollset_set(call->call_stack(),
+ &call->pollent_);
}
- if (call->is_client) {
- grpc_core::channelz::ChannelNode* channelz_channel =
- grpc_channel_get_channelz_node(call->channel);
+ if (call->is_client()) {
+ channelz::ChannelNode* channelz_channel = channel->channelz_node();
if (channelz_channel != nullptr) {
channelz_channel->RecordCallStarted();
}
- } else if (call->final_op.server.core_server != nullptr) {
- grpc_core::channelz::ServerNode* channelz_node =
- call->final_op.server.core_server->channelz_node();
+ } else if (call->final_op_.server.core_server != nullptr) {
+ channelz::ServerNode* channelz_node =
+ call->final_op_.server.core_server->channelz_node();
if (channelz_node != nullptr) {
channelz_node->RecordCallStarted();
}
@@ -484,266 +621,205 @@ grpc_error_handle grpc_call_create(grpc_call_create_args* args,
return error;
}
-void grpc_call_set_completion_queue(grpc_call* call,
- grpc_completion_queue* cq) {
+void FilterStackCall::SetCompletionQueue(grpc_completion_queue* cq) {
GPR_ASSERT(cq);
- if (grpc_polling_entity_pollset_set(&call->pollent) != nullptr) {
+ if (grpc_polling_entity_pollset_set(&pollent_) != nullptr) {
gpr_log(GPR_ERROR, "A pollset_set is already registered for this call.");
abort();
}
- call->cq = cq;
+ cq_ = cq;
GRPC_CQ_INTERNAL_REF(cq, "bind");
- call->pollent = grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq));
- grpc_call_stack_set_pollset_or_pollset_set(CALL_STACK_FROM_CALL(call),
- &call->pollent);
+ pollent_ = grpc_polling_entity_create_from_pollset(grpc_cq_pollset(cq));
+ grpc_call_stack_set_pollset_or_pollset_set(call_stack(), &pollent_);
}
-#ifndef NDEBUG
-#define REF_REASON reason
-#define REF_ARG , const char* reason
-#else
-#define REF_REASON ""
-#define REF_ARG
-#endif
-void grpc_call_internal_ref(grpc_call* c REF_ARG) {
- GRPC_CALL_STACK_REF(CALL_STACK_FROM_CALL(c), REF_REASON);
-}
-void grpc_call_internal_unref(grpc_call* c REF_ARG) {
- GRPC_CALL_STACK_UNREF(CALL_STACK_FROM_CALL(c), REF_REASON);
+void FilterStackCall::ReleaseCall(void* call, grpc_error_handle /*error*/) {
+ auto* c = static_cast<FilterStackCall*>(call);
+ RefCountedPtr<Channel> channel = std::move(c->channel_);
+ Arena* arena = c->arena();
+ c->~FilterStackCall();
+ channel->UpdateCallSizeEstimate(arena->Destroy());
}
-static void release_call(void* call, grpc_error_handle /*error*/) {
- grpc_call* c = static_cast<grpc_call*>(call);
- grpc_channel* channel = c->channel;
- grpc_core::Arena* arena = c->arena;
- c->~grpc_call();
- grpc_channel_update_call_size_estimate(channel, arena->Destroy());
- GRPC_CHANNEL_INTERNAL_UNREF(channel, "call");
-}
-
-static void destroy_call(void* call, grpc_error_handle /*error*/) {
- GPR_TIMER_SCOPE("destroy_call", 0);
- grpc_call* c = static_cast<grpc_call*>(call);
- c->recv_initial_metadata.Clear();
- c->recv_trailing_metadata.Clear();
- c->receiving_stream.reset();
- parent_call* pc = get_parent_call(c);
+void FilterStackCall::DestroyCall(void* call, grpc_error_handle /*error*/) {
+ auto* c = static_cast<FilterStackCall*>(call);
+ c->recv_initial_metadata_.Clear();
+ c->recv_trailing_metadata_.Clear();
+ c->receiving_slice_buffer_.reset();
+ ParentCall* pc = c->parent_call();
if (pc != nullptr) {
- pc->~parent_call();
+ pc->~ParentCall();
}
- if (c->cq) {
- GRPC_CQ_INTERNAL_UNREF(c->cq, "bind");
+ if (c->cq_) {
+ GRPC_CQ_INTERNAL_UNREF(c->cq_, "bind");
}
- grpc_error_handle status_error = c->status_error.get();
- grpc_error_get_status(status_error, c->send_deadline,
- &c->final_info.final_status, nullptr, nullptr,
- &(c->final_info.error_string));
- c->status_error.set(GRPC_ERROR_NONE);
- c->final_info.stats.latency =
- gpr_cycle_counter_sub(gpr_get_cycle_counter(), c->start_time);
- grpc_call_stack_destroy(CALL_STACK_FROM_CALL(c), &c->final_info,
- GRPC_CLOSURE_INIT(&c->release_call, release_call, c,
+ grpc_error_handle status_error = c->status_error_.get();
+ grpc_error_get_status(status_error, c->send_deadline(),
+ &c->final_info_.final_status, nullptr, nullptr,
+ &(c->final_info_.error_string));
+ c->status_error_.set(GRPC_ERROR_NONE);
+ c->final_info_.stats.latency =
+ gpr_cycle_counter_sub(gpr_get_cycle_counter(), c->start_time_);
+ grpc_call_stack_destroy(c->call_stack(), &c->final_info_,
+ GRPC_CLOSURE_INIT(&c->release_call_, ReleaseCall, c,
grpc_schedule_on_exec_ctx));
}
-void grpc_call_ref(grpc_call* c) { c->ext_ref.Ref(); }
-
-void grpc_call_unref(grpc_call* c) {
- if (GPR_LIKELY(!c->ext_ref.Unref())) return;
-
- GPR_TIMER_SCOPE("grpc_call_unref", 0);
+void Call::MaybeUnpublishFromParent() {
+ ChildCall* cc = child_;
+ if (cc == nullptr) return;
- child_call* cc = c->child;
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
- grpc_core::ExecCtx exec_ctx;
-
- GRPC_API_TRACE("grpc_call_unref(c=%p)", 1, (c));
-
- if (cc) {
- parent_call* pc = get_parent_call(cc->parent);
- gpr_mu_lock(&pc->child_list_mu);
- if (c == pc->first_child) {
+ ParentCall* pc = cc->parent->parent_call();
+ {
+ MutexLock lock(&pc->child_list_mu);
+ if (this == pc->first_child) {
pc->first_child = cc->sibling_next;
- if (c == pc->first_child) {
+ if (this == pc->first_child) {
pc->first_child = nullptr;
}
}
- cc->sibling_prev->child->sibling_next = cc->sibling_next;
- cc->sibling_next->child->sibling_prev = cc->sibling_prev;
- gpr_mu_unlock(&pc->child_list_mu);
- GRPC_CALL_INTERNAL_UNREF(cc->parent, "child");
+ cc->sibling_prev->child_->sibling_next = cc->sibling_next;
+ cc->sibling_next->child_->sibling_prev = cc->sibling_prev;
}
+ cc->parent->InternalUnref("child");
+}
+
+void FilterStackCall::ExternalUnref() {
+ if (GPR_LIKELY(!ext_ref_.Unref())) return;
+
+ ApplicationCallbackExecCtx callback_exec_ctx;
+ ExecCtx exec_ctx;
+
+ GRPC_API_TRACE("grpc_call_unref(c=%p)", 1, (this));
- GPR_ASSERT(!c->destroy_called);
- c->destroy_called = true;
- bool cancel = gpr_atm_acq_load(&c->any_ops_sent_atm) != 0 &&
- gpr_atm_acq_load(&c->received_final_op_atm) == 0;
+ MaybeUnpublishFromParent();
+
+ GPR_ASSERT(!destroy_called_);
+ destroy_called_ = true;
+ bool cancel = gpr_atm_acq_load(&received_final_op_atm_) == 0;
if (cancel) {
- cancel_with_error(c, GRPC_ERROR_CANCELLED);
+ CancelWithError(GRPC_ERROR_CANCELLED);
} else {
// Unset the call combiner cancellation closure. This has the
// effect of scheduling the previously set cancellation closure, if
// any, so that it can release any internal references it may be
// holding to the call stack.
- c->call_combiner.SetNotifyOnCancel(nullptr);
+ call_combiner_.SetNotifyOnCancel(nullptr);
}
- GRPC_CALL_INTERNAL_UNREF(c, "destroy");
+ InternalUnref("destroy");
}
-grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
- GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved));
- GPR_ASSERT(!reserved);
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
- grpc_core::ExecCtx exec_ctx;
- cancel_with_error(call, GRPC_ERROR_CANCELLED);
- return GRPC_CALL_OK;
-}
-
-// This is called via the call combiner to start sending a batch down
-// the filter stack.
-static void execute_batch_in_call_combiner(void* arg,
- grpc_error_handle /*ignored*/) {
- GPR_TIMER_SCOPE("execute_batch_in_call_combiner", 0);
- grpc_transport_stream_op_batch* batch =
- static_cast<grpc_transport_stream_op_batch*>(arg);
- grpc_call* call = static_cast<grpc_call*>(batch->handler_private.extra_arg);
- grpc_call_element* elem = CALL_ELEM_FROM_CALL(call, 0);
- GRPC_CALL_LOG_OP(GPR_INFO, elem, batch);
- elem->filter->start_transport_stream_op_batch(elem, batch);
+char* FilterStackCall::GetPeer() {
+ char* peer_string = reinterpret_cast<char*>(gpr_atm_acq_load(&peer_string_));
+ if (peer_string != nullptr) return gpr_strdup(peer_string);
+ peer_string = grpc_channel_get_target(channel_->c_ptr());
+ if (peer_string != nullptr) return peer_string;
+ return gpr_strdup("unknown");
}
// start_batch_closure points to a caller-allocated closure to be used
// for entering the call combiner.
-static void execute_batch(grpc_call* call,
- grpc_transport_stream_op_batch* batch,
- grpc_closure* start_batch_closure) {
- batch->handler_private.extra_arg = call;
+void FilterStackCall::ExecuteBatch(grpc_transport_stream_op_batch* batch,
+ grpc_closure* start_batch_closure) {
+ // This is called via the call combiner to start sending a batch down
+ // the filter stack.
+ auto execute_batch_in_call_combiner = [](void* arg, grpc_error_handle) {
+ grpc_transport_stream_op_batch* batch =
+ static_cast<grpc_transport_stream_op_batch*>(arg);
+ auto* call =
+ static_cast<FilterStackCall*>(batch->handler_private.extra_arg);
+ grpc_call_element* elem = call->call_elem(0);
+ GRPC_CALL_LOG_OP(GPR_INFO, elem, batch);
+ elem->filter->start_transport_stream_op_batch(elem, batch);
+ };
+ batch->handler_private.extra_arg = this;
GRPC_CLOSURE_INIT(start_batch_closure, execute_batch_in_call_combiner, batch,
grpc_schedule_on_exec_ctx);
- GRPC_CALL_COMBINER_START(&call->call_combiner, start_batch_closure,
+ GRPC_CALL_COMBINER_START(call_combiner(), start_batch_closure,
GRPC_ERROR_NONE, "executing batch");
}
-char* grpc_call_get_peer(grpc_call* call) {
- char* peer_string =
- reinterpret_cast<char*>(gpr_atm_acq_load(&call->peer_string));
- if (peer_string != nullptr) return gpr_strdup(peer_string);
- peer_string = grpc_channel_get_target(call->channel);
- if (peer_string != nullptr) return peer_string;
- return gpr_strdup("unknown");
-}
-
-grpc_call* grpc_call_from_top_element(grpc_call_element* surface_element) {
- return CALL_FROM_TOP_ELEM(surface_element);
-}
-
-/*******************************************************************************
- * CANCELLATION
- */
-
-grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
- grpc_status_code status,
- const char* description,
- void* reserved) {
- grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
- grpc_core::ExecCtx exec_ctx;
- GRPC_API_TRACE(
- "grpc_call_cancel_with_status("
- "c=%p, status=%d, description=%s, reserved=%p)",
- 4, (c, (int)status, description, reserved));
- GPR_ASSERT(reserved == nullptr);
- cancel_with_status(c, status, description);
- return GRPC_CALL_OK;
-}
-
-struct cancel_state {
- grpc_call* call;
+namespace {
+struct CancelState {
+ FilterStackCall* call;
grpc_closure start_batch;
grpc_closure finish_batch;
};
+} // namespace
+
// The on_complete callback used when sending a cancel_stream batch down
// the filter stack. Yields the call combiner when the batch is done.
static void done_termination(void* arg, grpc_error_handle /*error*/) {
- cancel_state* state = static_cast<cancel_state*>(arg);
- GRPC_CALL_COMBINER_STOP(&state->call->call_combiner,
+ CancelState* state = static_cast<CancelState*>(arg);
+ GRPC_CALL_COMBINER_STOP(state->call->call_combiner(),
"on_complete for cancel_stream op");
- GRPC_CALL_INTERNAL_UNREF(state->call, "termination");
- gpr_free(state);
+ state->call->InternalUnref("termination");
+ delete state;
}
-static void cancel_with_error(grpc_call* c, grpc_error_handle error) {
- if (!gpr_atm_rel_cas(&c->cancelled_with_error, 0, 1)) {
+void FilterStackCall::CancelWithError(grpc_error_handle error) {
+ if (!gpr_atm_rel_cas(&cancelled_with_error_, 0, 1)) {
GRPC_ERROR_UNREF(error);
return;
}
- GRPC_CALL_INTERNAL_REF(c, "termination");
+ gpr_atm_rel_store(&peer_string_, 0);
+ InternalRef("termination");
// Inform the call combiner of the cancellation, so that it can cancel
// any in-flight asynchronous actions that may be holding the call
// combiner. This ensures that the cancel_stream batch can be sent
// down the filter stack in a timely manner.
- c->call_combiner.Cancel(GRPC_ERROR_REF(error));
- cancel_state* state = static_cast<cancel_state*>(gpr_malloc(sizeof(*state)));
- state->call = c;
+ call_combiner_.Cancel(GRPC_ERROR_REF(error));
+ CancelState* state = new CancelState;
+ state->call = this;
GRPC_CLOSURE_INIT(&state->finish_batch, done_termination, state,
grpc_schedule_on_exec_ctx);
grpc_transport_stream_op_batch* op =
grpc_make_transport_stream_op(&state->finish_batch);
op->cancel_stream = true;
op->payload->cancel_stream.cancel_error = error;
- execute_batch(c, op, &state->start_batch);
+ ExecuteBatch(op, &state->start_batch);
}
-void grpc_call_cancel_internal(grpc_call* call) {
- cancel_with_error(call, GRPC_ERROR_CANCELLED);
-}
-
-static grpc_error_handle error_from_status(grpc_status_code status,
- const char* description) {
+void Call::CancelWithStatus(grpc_status_code status, const char* description) {
// copying 'description' is needed to ensure the grpc_call_cancel_with_status
// guarantee that can be short-lived.
- return grpc_error_set_int(
+ CancelWithError(grpc_error_set_int(
grpc_error_set_str(GRPC_ERROR_CREATE_FROM_COPIED_STRING(description),
GRPC_ERROR_STR_GRPC_MESSAGE, description),
- GRPC_ERROR_INT_GRPC_STATUS, status);
-}
-
-static void cancel_with_status(grpc_call* c, grpc_status_code status,
- const char* description) {
- cancel_with_error(c, error_from_status(status, description));
+ GRPC_ERROR_INT_GRPC_STATUS, status));
}
-static void set_final_status(grpc_call* call, grpc_error_handle error) {
+void FilterStackCall::SetFinalStatus(grpc_error_handle error) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_call_error_trace)) {
- gpr_log(GPR_DEBUG, "set_final_status %s", call->is_client ? "CLI" : "SVR");
+ gpr_log(GPR_DEBUG, "set_final_status %s", is_client() ? "CLI" : "SVR");
gpr_log(GPR_DEBUG, "%s", grpc_error_std_string(error).c_str());
}
- if (call->is_client) {
+ if (is_client()) {
TString status_details;
- grpc_error_get_status(error, call->send_deadline,
- call->final_op.client.status, &status_details,
- nullptr, call->final_op.client.error_string);
- *call->final_op.client.status_details =
+ grpc_error_get_status(error, send_deadline(), final_op_.client.status,
+ &status_details, nullptr,
+ final_op_.client.error_string);
+ *final_op_.client.status_details =
grpc_slice_from_cpp_string(std::move(status_details));
- call->status_error.set(error);
+ status_error_.set(error);
GRPC_ERROR_UNREF(error);
- grpc_core::channelz::ChannelNode* channelz_channel =
- grpc_channel_get_channelz_node(call->channel);
+ channelz::ChannelNode* channelz_channel = channel_->channelz_node();
if (channelz_channel != nullptr) {
- if (*call->final_op.client.status != GRPC_STATUS_OK) {
+ if (*final_op_.client.status != GRPC_STATUS_OK) {
channelz_channel->RecordCallFailed();
} else {
channelz_channel->RecordCallSucceeded();
}
}
} else {
- *call->final_op.server.cancelled =
- error != GRPC_ERROR_NONE || !call->sent_server_trailing_metadata;
- grpc_core::channelz::ServerNode* channelz_node =
- call->final_op.server.core_server->channelz_node();
+ *final_op_.server.cancelled =
+ !GRPC_ERROR_IS_NONE(error) || !sent_server_trailing_metadata_;
+ channelz::ServerNode* channelz_node =
+ final_op_.server.core_server->channelz_node();
if (channelz_node != nullptr) {
- if (*call->final_op.server.cancelled || !call->status_error.ok()) {
+ if (*final_op_.server.cancelled || !status_error_.ok()) {
channelz_node->RecordCallFailed();
} else {
channelz_node->RecordCallSucceeded();
@@ -753,58 +829,40 @@ static void set_final_status(grpc_call* call, grpc_error_handle error) {
}
}
-/*******************************************************************************
- * COMPRESSION
- */
-
-grpc_compression_algorithm grpc_call_test_only_get_compression_algorithm(
- grpc_call* call) {
- return call->incoming_compression_algorithm;
-}
-
-uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
- uint32_t flags;
- flags = call->test_only_last_message_flags;
- return flags;
-}
-
-uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
- return call->encodings_accepted_by_peer.ToLegacyBitmask();
-}
-
-static int prepare_application_metadata(grpc_call* call, int count,
- grpc_metadata* metadata,
- int is_trailing) {
- int i;
- grpc_metadata_batch* batch = is_trailing ? &call->send_trailing_metadata
- : &call->send_initial_metadata;
- for (i = 0; i < count; i++) {
+bool FilterStackCall::PrepareApplicationMetadata(size_t count,
+ grpc_metadata* metadata,
+ bool is_trailing) {
+ grpc_metadata_batch* batch =
+ is_trailing ? &send_trailing_metadata_ : &send_initial_metadata_;
+ for (size_t i = 0; i < count; i++) {
grpc_metadata* md = &metadata[i];
if (!GRPC_LOG_IF_ERROR("validate_metadata",
grpc_validate_header_key_is_legal(md->key))) {
- return 0;
+ return false;
} else if (!grpc_is_binary_header_internal(md->key) &&
!GRPC_LOG_IF_ERROR(
"validate_metadata",
grpc_validate_header_nonbin_value_is_legal(md->value))) {
- return 0;
+ return false;
} else if (GRPC_SLICE_LENGTH(md->value) >= UINT32_MAX) {
// HTTP2 hpack encoding has a maximum limit.
- return 0;
+ return false;
+ } else if (grpc_slice_str_cmp(md->key, "content-length") == 0) {
+ // Filter "content-length metadata"
+ continue;
}
- batch->Append(
- grpc_core::StringViewFromSlice(md->key),
- grpc_core::Slice(grpc_slice_ref_internal(md->value)),
- [md](y_absl::string_view error, const grpc_core::Slice& value) {
- gpr_log(
- GPR_DEBUG, "Append error: %s",
- y_absl::StrCat("key=", grpc_core::StringViewFromSlice(md->key),
- " error=", error, " value=", value.as_string_view())
- .c_str());
- });
- }
-
- return 1;
+ batch->Append(StringViewFromSlice(md->key),
+ Slice(grpc_slice_ref_internal(md->value)),
+ [md](y_absl::string_view error, const Slice& value) {
+ gpr_log(GPR_DEBUG, "Append error: %s",
+ y_absl::StrCat("key=", StringViewFromSlice(md->key),
+ " error=", error,
+ " value=", value.as_string_view())
+ .c_str());
+ });
+ }
+
+ return true;
}
namespace {
@@ -812,7 +870,7 @@ class PublishToAppEncoder {
public:
explicit PublishToAppEncoder(grpc_metadata_array* dest) : dest_(dest) {}
- void Encode(const grpc_core::Slice& key, const grpc_core::Slice& value) {
+ void Encode(const Slice& key, const Slice& value) {
Append(key.c_slice(), value.c_slice());
}
@@ -822,36 +880,34 @@ class PublishToAppEncoder {
template <typename Which>
void Encode(Which, const typename Which::ValueType&) {}
- void Encode(grpc_core::UserAgentMetadata, const grpc_core::Slice& slice) {
- Append(grpc_core::UserAgentMetadata::key(), slice);
+ void Encode(UserAgentMetadata, const Slice& slice) {
+ Append(UserAgentMetadata::key(), slice);
}
- void Encode(grpc_core::HostMetadata, const grpc_core::Slice& slice) {
- Append(grpc_core::HostMetadata::key(), slice);
+ void Encode(HostMetadata, const Slice& slice) {
+ Append(HostMetadata::key(), slice);
}
- void Encode(grpc_core::GrpcPreviousRpcAttemptsMetadata, uint32_t count) {
- Append(grpc_core::GrpcPreviousRpcAttemptsMetadata::key(), count);
+ void Encode(GrpcPreviousRpcAttemptsMetadata, uint32_t count) {
+ Append(GrpcPreviousRpcAttemptsMetadata::key(), count);
}
- void Encode(grpc_core::GrpcRetryPushbackMsMetadata,
- grpc_core::Duration count) {
- Append(grpc_core::GrpcRetryPushbackMsMetadata::key(), count.millis());
+ void Encode(GrpcRetryPushbackMsMetadata, Duration count) {
+ Append(GrpcRetryPushbackMsMetadata::key(), count.millis());
}
- void Encode(grpc_core::LbTokenMetadata, const grpc_core::Slice& slice) {
- Append(grpc_core::LbTokenMetadata::key(), slice);
+ void Encode(LbTokenMetadata, const Slice& slice) {
+ Append(LbTokenMetadata::key(), slice);
}
private:
void Append(y_absl::string_view key, int64_t value) {
- Append(grpc_core::StaticSlice::FromStaticString(key).c_slice(),
- grpc_core::Slice::FromInt64(value).c_slice());
+ Append(StaticSlice::FromStaticString(key).c_slice(),
+ Slice::FromInt64(value).c_slice());
}
- void Append(y_absl::string_view key, const grpc_core::Slice& value) {
- Append(grpc_core::StaticSlice::FromStaticString(key).c_slice(),
- value.c_slice());
+ void Append(y_absl::string_view key, const Slice& value) {
+ Append(StaticSlice::FromStaticString(key).c_slice(), value.c_slice());
}
void Append(grpc_slice key, grpc_slice value) {
@@ -864,14 +920,13 @@ class PublishToAppEncoder {
};
} // namespace
-static void publish_app_metadata(grpc_call* call, grpc_metadata_batch* b,
- int is_trailing) {
+void FilterStackCall::PublishAppMetadata(grpc_metadata_batch* b,
+ bool is_trailing) {
if (b->count() == 0) return;
- if (!call->is_client && is_trailing) return;
- if (is_trailing && call->buffered_metadata[1] == nullptr) return;
- GPR_TIMER_SCOPE("publish_app_metadata", 0);
+ if (!is_client() && is_trailing) return;
+ if (is_trailing && buffered_metadata_[1] == nullptr) return;
grpc_metadata_array* dest;
- dest = call->buffered_metadata[is_trailing];
+ dest = buffered_metadata_[is_trailing];
if (dest->count + b->count() > dest->capacity) {
dest->capacity =
std::max(dest->capacity + b->count(), dest->capacity * 3 / 2);
@@ -882,68 +937,57 @@ static void publish_app_metadata(grpc_call* call, grpc_metadata_batch* b,
b->Encode(&encoder);
}
-static void recv_initial_filter(grpc_call* call, grpc_metadata_batch* b) {
- call->incoming_compression_algorithm =
- b->Take(grpc_core::GrpcEncodingMetadata()).value_or(GRPC_COMPRESS_NONE);
- call->encodings_accepted_by_peer =
- b->Take(grpc_core::GrpcAcceptEncodingMetadata())
- .value_or(grpc_core::CompressionAlgorithmSet{GRPC_COMPRESS_NONE});
- publish_app_metadata(call, b, false);
+void FilterStackCall::RecvInitialFilter(grpc_metadata_batch* b) {
+ incoming_compression_algorithm_ =
+ b->Take(GrpcEncodingMetadata()).value_or(GRPC_COMPRESS_NONE);
+ encodings_accepted_by_peer_ =
+ b->Take(GrpcAcceptEncodingMetadata())
+ .value_or(CompressionAlgorithmSet{GRPC_COMPRESS_NONE});
+ PublishAppMetadata(b, false);
}
-static void recv_trailing_filter(void* args, grpc_metadata_batch* b,
- grpc_error_handle batch_error) {
- grpc_call* call = static_cast<grpc_call*>(args);
- if (batch_error != GRPC_ERROR_NONE) {
- set_final_status(call, batch_error);
+void FilterStackCall::RecvTrailingFilter(grpc_metadata_batch* b,
+ grpc_error_handle batch_error) {
+ if (!GRPC_ERROR_IS_NONE(batch_error)) {
+ SetFinalStatus(batch_error);
} else {
y_absl::optional<grpc_status_code> grpc_status =
- b->Take(grpc_core::GrpcStatusMetadata());
+ b->Take(GrpcStatusMetadata());
if (grpc_status.has_value()) {
grpc_status_code status_code = *grpc_status;
grpc_error_handle error = GRPC_ERROR_NONE;
if (status_code != GRPC_STATUS_OK) {
- char* peer = grpc_call_get_peer(call);
+ char* peer = GetPeer();
error = grpc_error_set_int(
GRPC_ERROR_CREATE_FROM_CPP_STRING(
y_absl::StrCat("Error received from peer ", peer)),
GRPC_ERROR_INT_GRPC_STATUS, static_cast<intptr_t>(status_code));
gpr_free(peer);
}
- auto grpc_message = b->Take(grpc_core::GrpcMessageMetadata());
+ auto grpc_message = b->Take(GrpcMessageMetadata());
if (grpc_message.has_value()) {
error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
grpc_message->as_string_view());
- } else if (error != GRPC_ERROR_NONE) {
+ } else if (!GRPC_ERROR_IS_NONE(error)) {
error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, "");
}
- set_final_status(call, GRPC_ERROR_REF(error));
+ SetFinalStatus(GRPC_ERROR_REF(error));
GRPC_ERROR_UNREF(error);
- } else if (!call->is_client) {
- set_final_status(call, GRPC_ERROR_NONE);
+ } else if (!is_client()) {
+ SetFinalStatus(GRPC_ERROR_NONE);
} else {
gpr_log(GPR_DEBUG,
"Received trailing metadata with no error and no status");
- set_final_status(
- call, grpc_error_set_int(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("No status received"),
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNKNOWN));
+ SetFinalStatus(grpc_error_set_int(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("No status received"),
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNKNOWN));
}
}
- publish_app_metadata(call, b, true);
-}
-
-grpc_core::Arena* grpc_call_get_arena(grpc_call* call) { return call->arena; }
-
-grpc_call_stack* grpc_call_get_call_stack(grpc_call* call) {
- return CALL_STACK_FROM_CALL(call);
+ PublishAppMetadata(b, true);
}
-/*******************************************************************************
- * BATCH API IMPLEMENTATION
- */
-
-static bool are_write_flags_valid(uint32_t flags) {
+namespace {
+bool AreWriteFlagsValid(uint32_t flags) {
/* check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set */
const uint32_t allowed_write_positions =
(GRPC_WRITE_USED_MASK | GRPC_WRITE_INTERNAL_USED_MASK);
@@ -951,16 +995,13 @@ static bool are_write_flags_valid(uint32_t flags) {
return !(flags & invalid_positions);
}
-static bool are_initial_metadata_flags_valid(uint32_t flags, bool is_client) {
+bool AreInitialMetadataFlagsValid(uint32_t flags) {
/* check that only bits in GRPC_WRITE_(INTERNAL?)_USED_MASK are set */
uint32_t invalid_positions = ~GRPC_INITIAL_METADATA_USED_MASK;
- if (!is_client) {
- invalid_positions |= GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST;
- }
return !(flags & invalid_positions);
}
-static size_t batch_slot_for_op(grpc_op_type type) {
+size_t BatchSlotForOp(grpc_op_type type) {
switch (type) {
case GRPC_OP_SEND_INITIAL_METADATA:
return 0;
@@ -979,304 +1020,227 @@ static size_t batch_slot_for_op(grpc_op_type type) {
}
GPR_UNREACHABLE_CODE(return 123456789);
}
+} // namespace
-static batch_control* reuse_or_allocate_batch_control(grpc_call* call,
- const grpc_op* ops) {
- size_t slot_idx = batch_slot_for_op(ops[0].op);
- batch_control** pslot = &call->active_batches[slot_idx];
- batch_control* bctl;
+FilterStackCall::BatchControl* FilterStackCall::ReuseOrAllocateBatchControl(
+ const grpc_op* ops) {
+ size_t slot_idx = BatchSlotForOp(ops[0].op);
+ BatchControl** pslot = &active_batches_[slot_idx];
+ BatchControl* bctl;
if (*pslot != nullptr) {
bctl = *pslot;
- if (bctl->call != nullptr) {
+ if (bctl->call_ != nullptr) {
return nullptr;
}
- bctl->~batch_control();
- bctl->op = {};
- new (&bctl->batch_error) AtomicError();
+ bctl->~BatchControl();
+ bctl->op_ = {};
+ new (&bctl->batch_error_) AtomicError();
} else {
- bctl = call->arena->New<batch_control>();
+ bctl = arena()->New<BatchControl>();
*pslot = bctl;
}
- bctl->call = call;
- bctl->op.payload = &call->stream_op_payload;
+ bctl->call_ = this;
+ bctl->op_.payload = &stream_op_payload_;
return bctl;
}
-static void finish_batch_completion(void* user_data,
- grpc_cq_completion* /*storage*/) {
- batch_control* bctl = static_cast<batch_control*>(user_data);
- grpc_call* call = bctl->call;
- bctl->call = nullptr;
- GRPC_CALL_INTERNAL_UNREF(call, "completion");
-}
-
-static void reset_batch_errors(batch_control* bctl) {
- bctl->batch_error.set(GRPC_ERROR_NONE);
+void Call::PropagateCancellationToChildren() {
+ ParentCall* pc = parent_call();
+ if (pc != nullptr) {
+ Call* child;
+ MutexLock lock(&pc->child_list_mu);
+ child = pc->first_child;
+ if (child != nullptr) {
+ do {
+ Call* next_child_call = child->child_->sibling_next;
+ if (child->cancellation_is_inherited_) {
+ child->InternalRef("propagate_cancel");
+ child->CancelWithError(GRPC_ERROR_CANCELLED);
+ child->InternalUnref("propagate_cancel");
+ }
+ child = next_child_call;
+ } while (child != pc->first_child);
+ }
+ }
}
-static void post_batch_completion(batch_control* bctl) {
- grpc_call* next_child_call;
- grpc_call* call = bctl->call;
- grpc_error_handle error = GRPC_ERROR_REF(bctl->batch_error.get());
+void FilterStackCall::BatchControl::PostCompletion() {
+ FilterStackCall* call = call_;
+ grpc_error_handle error = GRPC_ERROR_REF(batch_error_.get());
- if (bctl->op.send_initial_metadata) {
- call->send_initial_metadata.Clear();
+ if (op_.send_initial_metadata) {
+ call->send_initial_metadata_.Clear();
}
- if (bctl->op.send_message) {
- if (bctl->op.payload->send_message.stream_write_closed &&
- error == GRPC_ERROR_NONE) {
+ if (op_.send_message) {
+ if (op_.payload->send_message.stream_write_closed &&
+ GRPC_ERROR_IS_NONE(error)) {
error = grpc_error_add_child(
error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Attempt to send message after stream was closed."));
}
- call->sending_message = false;
+ call->sending_message_ = false;
+ call->send_slice_buffer_.Clear();
}
- if (bctl->op.send_trailing_metadata) {
- call->send_trailing_metadata.Clear();
+ if (op_.send_trailing_metadata) {
+ call->send_trailing_metadata_.Clear();
}
- if (bctl->op.recv_trailing_metadata) {
+ if (op_.recv_trailing_metadata) {
/* propagate cancellation to any interested children */
- gpr_atm_rel_store(&call->received_final_op_atm, 1);
- parent_call* pc = get_parent_call(call);
- if (pc != nullptr) {
- grpc_call* child;
- gpr_mu_lock(&pc->child_list_mu);
- child = pc->first_child;
- if (child != nullptr) {
- do {
- next_child_call = child->child->sibling_next;
- if (child->cancellation_is_inherited) {
- GRPC_CALL_INTERNAL_REF(child, "propagate_cancel");
- cancel_with_error(child, GRPC_ERROR_CANCELLED);
- GRPC_CALL_INTERNAL_UNREF(child, "propagate_cancel");
- }
- child = next_child_call;
- } while (child != pc->first_child);
- }
- gpr_mu_unlock(&pc->child_list_mu);
- }
+ gpr_atm_rel_store(&call->received_final_op_atm_, 1);
+ call->PropagateCancellationToChildren();
GRPC_ERROR_UNREF(error);
error = GRPC_ERROR_NONE;
}
- if (error != GRPC_ERROR_NONE && bctl->op.recv_message &&
- *call->receiving_buffer != nullptr) {
- grpc_byte_buffer_destroy(*call->receiving_buffer);
- *call->receiving_buffer = nullptr;
+ if (!GRPC_ERROR_IS_NONE(error) && op_.recv_message &&
+ *call->receiving_buffer_ != nullptr) {
+ grpc_byte_buffer_destroy(*call->receiving_buffer_);
+ *call->receiving_buffer_ = nullptr;
}
- reset_batch_errors(bctl);
+ batch_error_.set(GRPC_ERROR_NONE);
- if (bctl->completion_data.notify_tag.is_closure) {
+ if (completion_data_.notify_tag.is_closure) {
/* unrefs error */
- bctl->call = nullptr;
- grpc_core::Closure::Run(
- DEBUG_LOCATION,
- static_cast<grpc_closure*>(bctl->completion_data.notify_tag.tag),
- error);
- GRPC_CALL_INTERNAL_UNREF(call, "completion");
+ call_ = nullptr;
+ Closure::Run(DEBUG_LOCATION,
+ static_cast<grpc_closure*>(completion_data_.notify_tag.tag),
+ error);
+ call->InternalUnref("completion");
} else {
/* unrefs error */
- grpc_cq_end_op(bctl->call->cq, bctl->completion_data.notify_tag.tag, error,
- finish_batch_completion, bctl,
- &bctl->completion_data.cq_completion);
- }
-}
-
-static void finish_batch_step(batch_control* bctl) {
- if (GPR_UNLIKELY(bctl->completed_batch_step())) {
- post_batch_completion(bctl);
+ grpc_cq_end_op(
+ call->cq_, completion_data_.notify_tag.tag, error,
+ [](void* user_data, grpc_cq_completion* /*storage*/) {
+ BatchControl* bctl = static_cast<BatchControl*>(user_data);
+ Call* call = bctl->call_;
+ bctl->call_ = nullptr;
+ call->InternalUnref("completion");
+ },
+ this, &completion_data_.cq_completion);
}
}
-static void continue_receiving_slices(batch_control* bctl) {
- grpc_error_handle error;
- grpc_call* call = bctl->call;
- for (;;) {
- size_t remaining = call->receiving_stream->length() -
- (*call->receiving_buffer)->data.raw.slice_buffer.length;
- if (remaining == 0) {
- call->receiving_message = false;
- call->receiving_stream.reset();
- finish_batch_step(bctl);
- return;
- }
- if (call->receiving_stream->Next(remaining, &call->receiving_slice_ready)) {
- error = call->receiving_stream->Pull(&call->receiving_slice);
- if (error == GRPC_ERROR_NONE) {
- grpc_slice_buffer_add(&(*call->receiving_buffer)->data.raw.slice_buffer,
- call->receiving_slice);
- } else {
- call->receiving_stream.reset();
- grpc_byte_buffer_destroy(*call->receiving_buffer);
- *call->receiving_buffer = nullptr;
- call->receiving_message = false;
- finish_batch_step(bctl);
- GRPC_ERROR_UNREF(error);
- return;
- }
- } else {
- return;
- }
+void FilterStackCall::BatchControl::FinishStep() {
+ if (GPR_UNLIKELY(completed_batch_step())) {
+ PostCompletion();
}
}
-static void receiving_slice_ready(void* bctlp, grpc_error_handle error) {
- batch_control* bctl = static_cast<batch_control*>(bctlp);
- grpc_call* call = bctl->call;
- bool release_error = false;
-
- if (error == GRPC_ERROR_NONE) {
- grpc_slice slice;
- error = call->receiving_stream->Pull(&slice);
- if (error == GRPC_ERROR_NONE) {
- grpc_slice_buffer_add(&(*call->receiving_buffer)->data.raw.slice_buffer,
- slice);
- continue_receiving_slices(bctl);
- } else {
- /* Error returned by ByteStream::Pull() needs to be released manually */
- release_error = true;
- }
- }
-
- if (error != GRPC_ERROR_NONE) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures)) {
- GRPC_LOG_IF_ERROR("receiving_slice_ready", GRPC_ERROR_REF(error));
- }
- call->receiving_stream.reset();
- grpc_byte_buffer_destroy(*call->receiving_buffer);
- *call->receiving_buffer = nullptr;
- call->receiving_message = false;
- finish_batch_step(bctl);
- if (release_error) {
- GRPC_ERROR_UNREF(error);
- }
- }
-}
-
-static void process_data_after_md(batch_control* bctl) {
- grpc_call* call = bctl->call;
- if (call->receiving_stream == nullptr) {
- *call->receiving_buffer = nullptr;
- call->receiving_message = false;
- finish_batch_step(bctl);
+void FilterStackCall::BatchControl::ProcessDataAfterMetadata() {
+ FilterStackCall* call = call_;
+ if (!call->receiving_slice_buffer_.has_value()) {
+ *call->receiving_buffer_ = nullptr;
+ call->receiving_message_ = false;
+ FinishStep();
} else {
- call->test_only_last_message_flags = call->receiving_stream->flags();
- if ((call->receiving_stream->flags() & GRPC_WRITE_INTERNAL_COMPRESS) &&
- (call->incoming_compression_algorithm != GRPC_COMPRESS_NONE)) {
- *call->receiving_buffer = grpc_raw_compressed_byte_buffer_create(
- nullptr, 0, call->incoming_compression_algorithm);
+ call->test_only_last_message_flags_ = call->receiving_stream_flags_;
+ if ((call->receiving_stream_flags_ & GRPC_WRITE_INTERNAL_COMPRESS) &&
+ (call->incoming_compression_algorithm_ != GRPC_COMPRESS_NONE)) {
+ *call->receiving_buffer_ = grpc_raw_compressed_byte_buffer_create(
+ nullptr, 0, call->incoming_compression_algorithm_);
} else {
- *call->receiving_buffer = grpc_raw_byte_buffer_create(nullptr, 0);
+ *call->receiving_buffer_ = grpc_raw_byte_buffer_create(nullptr, 0);
}
- GRPC_CLOSURE_INIT(&call->receiving_slice_ready, receiving_slice_ready, bctl,
- grpc_schedule_on_exec_ctx);
- continue_receiving_slices(bctl);
+ grpc_slice_buffer_move_into(
+ call->receiving_slice_buffer_->c_slice_buffer(),
+ &(*call->receiving_buffer_)->data.raw.slice_buffer);
+ call->receiving_message_ = false;
+ call->receiving_slice_buffer_.reset();
+ FinishStep();
}
}
-static void receiving_stream_ready(void* bctlp, grpc_error_handle error) {
- batch_control* bctl = static_cast<batch_control*>(bctlp);
- grpc_call* call = bctl->call;
- if (error != GRPC_ERROR_NONE) {
- call->receiving_stream.reset();
- if (bctl->batch_error.ok()) {
- bctl->batch_error.set(error);
+void FilterStackCall::BatchControl::ReceivingStreamReady(
+ grpc_error_handle error) {
+ FilterStackCall* call = call_;
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ call->receiving_slice_buffer_.reset();
+ if (batch_error_.ok()) {
+ batch_error_.set(error);
}
- cancel_with_error(call, GRPC_ERROR_REF(error));
+ call->CancelWithError(GRPC_ERROR_REF(error));
}
- /* If recv_state is RECV_NONE, we will save the batch_control
+ /* If recv_state is kRecvNone, we will save the batch_control
* object with rel_cas, and will not use it after the cas. Its corresponding
* acq_load is in receiving_initial_metadata_ready() */
- if (error != GRPC_ERROR_NONE || call->receiving_stream == nullptr ||
- !gpr_atm_rel_cas(&call->recv_state, RECV_NONE,
- reinterpret_cast<gpr_atm>(bctlp))) {
- process_data_after_md(bctl);
+ if (!GRPC_ERROR_IS_NONE(error) ||
+ !call->receiving_slice_buffer_.has_value() ||
+ !gpr_atm_rel_cas(&call->recv_state_, kRecvNone,
+ reinterpret_cast<gpr_atm>(this))) {
+ ProcessDataAfterMetadata();
}
}
-// The recv_message_ready callback used when sending a batch containing
-// a recv_message op down the filter stack. Yields the call combiner
-// before processing the received message.
-static void receiving_stream_ready_in_call_combiner(void* bctlp,
- grpc_error_handle error) {
- batch_control* bctl = static_cast<batch_control*>(bctlp);
- grpc_call* call = bctl->call;
- GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_message_ready");
- receiving_stream_ready(bctlp, error);
-}
-
-static void GPR_ATTRIBUTE_NOINLINE handle_compression_algorithm_disabled(
- grpc_call* call, grpc_compression_algorithm compression_algorithm) {
+void FilterStackCall::HandleCompressionAlgorithmDisabled(
+ grpc_compression_algorithm compression_algorithm) {
const char* algo_name = nullptr;
grpc_compression_algorithm_name(compression_algorithm, &algo_name);
TString error_msg =
y_absl::StrFormat("Compression algorithm '%s' is disabled.", algo_name);
gpr_log(GPR_ERROR, "%s", error_msg.c_str());
- cancel_with_status(call, GRPC_STATUS_UNIMPLEMENTED, error_msg.c_str());
+ CancelWithStatus(GRPC_STATUS_UNIMPLEMENTED, error_msg.c_str());
}
-static void GPR_ATTRIBUTE_NOINLINE handle_compression_algorithm_not_accepted(
- grpc_call* call, grpc_compression_algorithm compression_algorithm) {
+void FilterStackCall::HandleCompressionAlgorithmNotAccepted(
+ grpc_compression_algorithm compression_algorithm) {
const char* algo_name = nullptr;
grpc_compression_algorithm_name(compression_algorithm, &algo_name);
gpr_log(GPR_ERROR,
"Compression algorithm ('%s') not present in the "
"accepted encodings (%s)",
- algo_name, call->encodings_accepted_by_peer.ToString().c_str());
+ algo_name,
+ TString(encodings_accepted_by_peer_.ToString()).c_str());
}
-static void validate_filtered_metadata(batch_control* bctl) {
- grpc_call* call = bctl->call;
+void FilterStackCall::BatchControl::ValidateFilteredMetadata() {
+ FilterStackCall* call = call_;
const grpc_compression_options compression_options =
- grpc_channel_compression_options(call->channel);
+ call->channel_->compression_options();
const grpc_compression_algorithm compression_algorithm =
- call->incoming_compression_algorithm;
- if (GPR_UNLIKELY(!grpc_core::CompressionAlgorithmSet::FromUint32(
+ call->incoming_compression_algorithm_;
+ if (GPR_UNLIKELY(!CompressionAlgorithmSet::FromUint32(
compression_options.enabled_algorithms_bitset)
.IsSet(compression_algorithm))) {
/* check if algorithm is supported by current channel config */
- handle_compression_algorithm_disabled(call, compression_algorithm);
+ call->HandleCompressionAlgorithmDisabled(compression_algorithm);
}
/* GRPC_COMPRESS_NONE is always set. */
- GPR_DEBUG_ASSERT(call->encodings_accepted_by_peer.IsSet(GRPC_COMPRESS_NONE));
+ GPR_DEBUG_ASSERT(call->encodings_accepted_by_peer_.IsSet(GRPC_COMPRESS_NONE));
if (GPR_UNLIKELY(
- !call->encodings_accepted_by_peer.IsSet(compression_algorithm))) {
+ !call->encodings_accepted_by_peer_.IsSet(compression_algorithm))) {
if (GRPC_TRACE_FLAG_ENABLED(grpc_compression_trace)) {
- handle_compression_algorithm_not_accepted(call, compression_algorithm);
+ call->HandleCompressionAlgorithmNotAccepted(compression_algorithm);
}
}
}
-static void receiving_initial_metadata_ready(void* bctlp,
- grpc_error_handle error) {
- batch_control* bctl = static_cast<batch_control*>(bctlp);
- grpc_call* call = bctl->call;
+void FilterStackCall::BatchControl::ReceivingInitialMetadataReady(
+ grpc_error_handle error) {
+ FilterStackCall* call = call_;
- GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_initial_metadata_ready");
+ GRPC_CALL_COMBINER_STOP(call->call_combiner(), "recv_initial_metadata_ready");
- if (error == GRPC_ERROR_NONE) {
- grpc_metadata_batch* md = &call->recv_initial_metadata;
- recv_initial_filter(call, md);
+ if (GRPC_ERROR_IS_NONE(error)) {
+ grpc_metadata_batch* md = &call->recv_initial_metadata_;
+ call->RecvInitialFilter(md);
/* TODO(ctiller): this could be moved into recv_initial_filter now */
- GPR_TIMER_SCOPE("validate_filtered_metadata", 0);
- validate_filtered_metadata(bctl);
+ ValidateFilteredMetadata();
- y_absl::optional<grpc_core::Timestamp> deadline =
- md->get(grpc_core::GrpcTimeoutMetadata());
- if (deadline.has_value() && !call->is_client) {
- call->send_deadline = *deadline;
+ y_absl::optional<Timestamp> deadline = md->get(GrpcTimeoutMetadata());
+ if (deadline.has_value() && !call->is_client()) {
+ call_->set_send_deadline(*deadline);
}
} else {
- if (bctl->batch_error.ok()) {
- bctl->batch_error.set(error);
+ if (batch_error_.ok()) {
+ batch_error_.set(error);
}
- cancel_with_error(call, GRPC_ERROR_REF(error));
+ call->CancelWithError(GRPC_ERROR_REF(error));
}
grpc_closure* saved_rsr_closure = nullptr;
while (true) {
- gpr_atm rsr_bctlp = gpr_atm_acq_load(&call->recv_state);
+ gpr_atm rsr_bctlp = gpr_atm_acq_load(&call->recv_state_);
/* Should only receive initial metadata once */
GPR_ASSERT(rsr_bctlp != 1);
if (rsr_bctlp == 0) {
@@ -1285,62 +1249,55 @@ static void receiving_initial_metadata_ready(void* bctlp,
* no_barrier_cas is used, as this function won't access the batch_control
* object saved by receiving_stream_ready() if the initial metadata is
* received first. */
- if (gpr_atm_no_barrier_cas(&call->recv_state, RECV_NONE,
- RECV_INITIAL_METADATA_FIRST)) {
+ if (gpr_atm_no_barrier_cas(&call->recv_state_, kRecvNone,
+ kRecvInitialMetadataFirst)) {
break;
}
} else {
/* Already received messages */
- saved_rsr_closure =
- GRPC_CLOSURE_CREATE(receiving_stream_ready, (batch_control*)rsr_bctlp,
- grpc_schedule_on_exec_ctx);
+ saved_rsr_closure = GRPC_CLOSURE_CREATE(
+ [](void* bctl, grpc_error_handle error) {
+ static_cast<BatchControl*>(bctl)->ReceivingStreamReady(error);
+ },
+ reinterpret_cast<BatchControl*>(rsr_bctlp),
+ grpc_schedule_on_exec_ctx);
/* No need to modify recv_state */
break;
}
}
if (saved_rsr_closure != nullptr) {
- grpc_core::Closure::Run(DEBUG_LOCATION, saved_rsr_closure,
- GRPC_ERROR_REF(error));
+ Closure::Run(DEBUG_LOCATION, saved_rsr_closure, GRPC_ERROR_REF(error));
}
- finish_batch_step(bctl);
+ FinishStep();
}
-static void receiving_trailing_metadata_ready(void* bctlp,
- grpc_error_handle error) {
- batch_control* bctl = static_cast<batch_control*>(bctlp);
- grpc_call* call = bctl->call;
- GRPC_CALL_COMBINER_STOP(&call->call_combiner, "recv_trailing_metadata_ready");
- grpc_metadata_batch* md = &call->recv_trailing_metadata;
- recv_trailing_filter(call, md, GRPC_ERROR_REF(error));
- finish_batch_step(bctl);
+void FilterStackCall::BatchControl::ReceivingTrailingMetadataReady(
+ grpc_error_handle error) {
+ GRPC_CALL_COMBINER_STOP(call_->call_combiner(),
+ "recv_trailing_metadata_ready");
+ grpc_metadata_batch* md = &call_->recv_trailing_metadata_;
+ call_->RecvTrailingFilter(md, GRPC_ERROR_REF(error));
+ FinishStep();
}
-static void finish_batch(void* bctlp, grpc_error_handle error) {
- batch_control* bctl = static_cast<batch_control*>(bctlp);
- grpc_call* call = bctl->call;
- GRPC_CALL_COMBINER_STOP(&call->call_combiner, "on_complete");
- if (bctl->batch_error.ok()) {
- bctl->batch_error.set(error);
+void FilterStackCall::BatchControl::FinishBatch(grpc_error_handle error) {
+ GRPC_CALL_COMBINER_STOP(call_->call_combiner(), "on_complete");
+ if (batch_error_.ok()) {
+ batch_error_.set(error);
}
- if (error != GRPC_ERROR_NONE) {
- cancel_with_error(call, GRPC_ERROR_REF(error));
+ if (!GRPC_ERROR_IS_NONE(error)) {
+ call_->CancelWithError(GRPC_ERROR_REF(error));
}
- finish_batch_step(bctl);
+ FinishStep();
}
-static void free_no_op_completion(void* /*p*/, grpc_cq_completion* completion) {
- gpr_free(completion);
-}
-
-static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
- size_t nops, void* notify_tag,
- int is_notify_tag_closure) {
- GPR_TIMER_SCOPE("call_start_batch", 0);
-
+grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
+ void* notify_tag,
+ bool is_notify_tag_closure) {
size_t i;
const grpc_op* op;
- batch_control* bctl;
+ BatchControl* bctl;
bool has_send_ops = false;
int num_recv_ops = 0;
grpc_call_error error = GRPC_CALL_OK;
@@ -1359,30 +1316,31 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
if (nops == 0) {
if (!is_notify_tag_closure) {
- GPR_ASSERT(grpc_cq_begin_op(call->cq, notify_tag));
- grpc_cq_end_op(call->cq, notify_tag, GRPC_ERROR_NONE,
- free_no_op_completion, nullptr,
- static_cast<grpc_cq_completion*>(
- gpr_malloc(sizeof(grpc_cq_completion))));
+ GPR_ASSERT(grpc_cq_begin_op(cq_, notify_tag));
+ grpc_cq_end_op(
+ cq_, notify_tag, GRPC_ERROR_NONE,
+ [](void*, grpc_cq_completion* completion) { gpr_free(completion); },
+ nullptr,
+ static_cast<grpc_cq_completion*>(
+ gpr_malloc(sizeof(grpc_cq_completion))));
} else {
- grpc_core::Closure::Run(DEBUG_LOCATION,
- static_cast<grpc_closure*>(notify_tag),
- GRPC_ERROR_NONE);
+ Closure::Run(DEBUG_LOCATION, static_cast<grpc_closure*>(notify_tag),
+ GRPC_ERROR_NONE);
}
error = GRPC_CALL_OK;
goto done;
}
- bctl = reuse_or_allocate_batch_control(call, ops);
+ bctl = ReuseOrAllocateBatchControl(ops);
if (bctl == nullptr) {
return GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
}
- bctl->completion_data.notify_tag.tag = notify_tag;
- bctl->completion_data.notify_tag.is_closure =
+ bctl->completion_data_.notify_tag.tag = notify_tag;
+ bctl->completion_data_.notify_tag.is_closure =
static_cast<uint8_t>(is_notify_tag_closure != 0);
- stream_op = &bctl->op;
- stream_op_payload = &call->stream_op_payload;
+ stream_op = &bctl->op_;
+ stream_op_payload = &stream_op_payload_;
/* rewrite batch ops into a transport op */
for (i = 0; i < nops; i++) {
@@ -1394,11 +1352,11 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
switch (op->op) {
case GRPC_OP_SEND_INITIAL_METADATA: {
/* Flag validation: currently allow no flags */
- if (!are_initial_metadata_flags_valid(op->flags, call->is_client)) {
+ if (!AreInitialMetadataFlagsValid(op->flags)) {
error = GRPC_CALL_ERROR_INVALID_FLAGS;
goto done_with_error;
}
- if (call->sent_initial_metadata) {
+ if (sent_initial_metadata_) {
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
goto done_with_error;
}
@@ -1416,56 +1374,58 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
level_set = true;
} else {
const grpc_compression_options copts =
- grpc_channel_compression_options(call->channel);
+ channel_->compression_options();
if (copts.default_level.is_set) {
level_set = true;
effective_compression_level = copts.default_level.level;
}
}
// Currently, only server side supports compression level setting.
- if (level_set && !call->is_client) {
+ if (level_set && !is_client()) {
const grpc_compression_algorithm calgo =
- call->encodings_accepted_by_peer.CompressionAlgorithmForLevel(
+ encodings_accepted_by_peer_.CompressionAlgorithmForLevel(
effective_compression_level);
// The following metadata will be checked and removed by the message
// compression filter. It will be used as the call's compression
// algorithm.
- call->send_initial_metadata.Set(
- grpc_core::GrpcInternalEncodingRequest(), calgo);
+ send_initial_metadata_.Set(GrpcInternalEncodingRequest(), calgo);
}
if (op->data.send_initial_metadata.count > INT_MAX) {
error = GRPC_CALL_ERROR_INVALID_METADATA;
goto done_with_error;
}
stream_op->send_initial_metadata = true;
- call->sent_initial_metadata = true;
- if (!prepare_application_metadata(
- call, static_cast<int>(op->data.send_initial_metadata.count),
- op->data.send_initial_metadata.metadata, 0)) {
+ sent_initial_metadata_ = true;
+ if (!PrepareApplicationMetadata(op->data.send_initial_metadata.count,
+ op->data.send_initial_metadata.metadata,
+ false)) {
error = GRPC_CALL_ERROR_INVALID_METADATA;
goto done_with_error;
}
// Ignore any te metadata key value pairs specified.
- call->send_initial_metadata.Remove(grpc_core::TeMetadata());
+ send_initial_metadata_.Remove(TeMetadata());
/* TODO(ctiller): just make these the same variable? */
- if (call->is_client &&
- call->send_deadline != grpc_core::Timestamp::InfFuture()) {
- call->send_initial_metadata.Set(grpc_core::GrpcTimeoutMetadata(),
- call->send_deadline);
+ if (is_client() && send_deadline() != Timestamp::InfFuture()) {
+ send_initial_metadata_.Set(GrpcTimeoutMetadata(), send_deadline());
+ }
+ if (is_client()) {
+ send_initial_metadata_.Set(
+ WaitForReady(),
+ WaitForReady::ValueType{
+ (op->flags & GRPC_INITIAL_METADATA_WAIT_FOR_READY) != 0,
+ (op->flags &
+ GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET) != 0});
}
stream_op_payload->send_initial_metadata.send_initial_metadata =
- &call->send_initial_metadata;
- stream_op_payload->send_initial_metadata.send_initial_metadata_flags =
- op->flags;
- if (call->is_client) {
- stream_op_payload->send_initial_metadata.peer_string =
- &call->peer_string;
+ &send_initial_metadata_;
+ if (is_client()) {
+ stream_op_payload->send_initial_metadata.peer_string = &peer_string_;
}
has_send_ops = true;
break;
}
case GRPC_OP_SEND_MESSAGE: {
- if (!are_write_flags_valid(op->flags)) {
+ if (!AreWriteFlagsValid(op->flags)) {
error = GRPC_CALL_ERROR_INVALID_FLAGS;
goto done_with_error;
}
@@ -1473,7 +1433,7 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
error = GRPC_CALL_ERROR_INVALID_MESSAGE;
goto done_with_error;
}
- if (call->sending_message) {
+ if (sending_message_) {
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
goto done_with_error;
}
@@ -1486,11 +1446,13 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
flags |= GRPC_WRITE_INTERNAL_COMPRESS;
}
stream_op->send_message = true;
- call->sending_message = true;
- call->sending_stream.Init(
- &op->data.send_message.send_message->data.raw.slice_buffer, flags);
- stream_op_payload->send_message.send_message.reset(
- call->sending_stream.get());
+ sending_message_ = true;
+ send_slice_buffer_.Clear();
+ grpc_slice_buffer_move_into(
+ &op->data.send_message.send_message->data.raw.slice_buffer,
+ send_slice_buffer_.c_slice_buffer());
+ stream_op_payload->send_message.flags = flags;
+ stream_op_payload->send_message.send_message = &send_slice_buffer_;
has_send_ops = true;
break;
}
@@ -1500,18 +1462,18 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
error = GRPC_CALL_ERROR_INVALID_FLAGS;
goto done_with_error;
}
- if (!call->is_client) {
+ if (!is_client()) {
error = GRPC_CALL_ERROR_NOT_ON_SERVER;
goto done_with_error;
}
- if (call->sent_final_op) {
+ if (sent_final_op_) {
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
goto done_with_error;
}
stream_op->send_trailing_metadata = true;
- call->sent_final_op = true;
+ sent_final_op_ = true;
stream_op_payload->send_trailing_metadata.send_trailing_metadata =
- &call->send_trailing_metadata;
+ &send_trailing_metadata_;
has_send_ops = true;
break;
}
@@ -1521,11 +1483,11 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
error = GRPC_CALL_ERROR_INVALID_FLAGS;
goto done_with_error;
}
- if (call->is_client) {
+ if (is_client()) {
error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
goto done_with_error;
}
- if (call->sent_final_op) {
+ if (sent_final_op_) {
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
goto done_with_error;
}
@@ -1535,13 +1497,11 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
goto done_with_error;
}
stream_op->send_trailing_metadata = true;
- call->sent_final_op = true;
+ sent_final_op_ = true;
- if (!prepare_application_metadata(
- call,
- static_cast<int>(
- op->data.send_status_from_server.trailing_metadata_count),
- op->data.send_status_from_server.trailing_metadata, 1)) {
+ if (!PrepareApplicationMetadata(
+ op->data.send_status_from_server.trailing_metadata_count,
+ op->data.send_status_from_server.trailing_metadata, true)) {
error = GRPC_CALL_ERROR_INVALID_METADATA;
goto done_with_error;
}
@@ -1556,31 +1516,30 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
static_cast<intptr_t>(
op->data.send_status_from_server.status));
if (op->data.send_status_from_server.status_details != nullptr) {
- call->send_trailing_metadata.Set(
- grpc_core::GrpcMessageMetadata(),
- grpc_core::Slice(grpc_slice_copy(
+ send_trailing_metadata_.Set(
+ GrpcMessageMetadata(),
+ Slice(grpc_slice_copy(
*op->data.send_status_from_server.status_details)));
- if (status_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(status_error)) {
status_error = grpc_error_set_str(
status_error, GRPC_ERROR_STR_GRPC_MESSAGE,
- grpc_core::StringViewFromSlice(
+ StringViewFromSlice(
*op->data.send_status_from_server.status_details));
}
}
- call->status_error.set(status_error);
+ status_error_.set(status_error);
GRPC_ERROR_UNREF(status_error);
- call->send_trailing_metadata.Set(
- grpc_core::GrpcStatusMetadata(),
- op->data.send_status_from_server.status);
+ send_trailing_metadata_.Set(GrpcStatusMetadata(),
+ op->data.send_status_from_server.status);
// Ignore any te metadata key value pairs specified.
- call->send_trailing_metadata.Remove(grpc_core::TeMetadata());
+ send_trailing_metadata_.Remove(TeMetadata());
stream_op_payload->send_trailing_metadata.send_trailing_metadata =
- &call->send_trailing_metadata;
+ &send_trailing_metadata_;
stream_op_payload->send_trailing_metadata.sent =
- &call->sent_server_trailing_metadata;
+ &sent_server_trailing_metadata_;
has_send_ops = true;
break;
}
@@ -1590,27 +1549,30 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
error = GRPC_CALL_ERROR_INVALID_FLAGS;
goto done_with_error;
}
- if (call->received_initial_metadata) {
+ if (received_initial_metadata_) {
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
goto done_with_error;
}
- call->received_initial_metadata = true;
- call->buffered_metadata[0] =
+ received_initial_metadata_ = true;
+ buffered_metadata_[0] =
op->data.recv_initial_metadata.recv_initial_metadata;
- GRPC_CLOSURE_INIT(&call->receiving_initial_metadata_ready,
- receiving_initial_metadata_ready, bctl,
- grpc_schedule_on_exec_ctx);
+ GRPC_CLOSURE_INIT(
+ &receiving_initial_metadata_ready_,
+ [](void* bctl, grpc_error_handle error) {
+ static_cast<BatchControl*>(bctl)->ReceivingInitialMetadataReady(
+ error);
+ },
+ bctl, grpc_schedule_on_exec_ctx);
stream_op->recv_initial_metadata = true;
stream_op_payload->recv_initial_metadata.recv_initial_metadata =
- &call->recv_initial_metadata;
+ &recv_initial_metadata_;
stream_op_payload->recv_initial_metadata.recv_initial_metadata_ready =
- &call->receiving_initial_metadata_ready;
- if (call->is_client) {
+ &receiving_initial_metadata_ready_;
+ if (is_client()) {
stream_op_payload->recv_initial_metadata.trailing_metadata_available =
- &call->is_trailers_only;
+ &is_trailers_only_;
} else {
- stream_op_payload->recv_initial_metadata.peer_string =
- &call->peer_string;
+ stream_op_payload->recv_initial_metadata.peer_string = &peer_string_;
}
++num_recv_ops;
break;
@@ -1621,21 +1583,33 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
error = GRPC_CALL_ERROR_INVALID_FLAGS;
goto done_with_error;
}
- if (call->receiving_message) {
+ if (receiving_message_) {
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
goto done_with_error;
}
- call->receiving_message = true;
+ receiving_message_ = true;
stream_op->recv_message = true;
- call->receiving_buffer = op->data.recv_message.recv_message;
- stream_op_payload->recv_message.recv_message = &call->receiving_stream;
+ receiving_slice_buffer_.reset();
+ receiving_buffer_ = op->data.recv_message.recv_message;
+ stream_op_payload->recv_message.recv_message = &receiving_slice_buffer_;
+ receiving_stream_flags_ = 0;
+ stream_op_payload->recv_message.flags = &receiving_stream_flags_;
stream_op_payload->recv_message.call_failed_before_recv_message =
- &call->call_failed_before_recv_message;
- GRPC_CLOSURE_INIT(&call->receiving_stream_ready,
- receiving_stream_ready_in_call_combiner, bctl,
- grpc_schedule_on_exec_ctx);
+ &call_failed_before_recv_message_;
+ GRPC_CLOSURE_INIT(
+ &receiving_stream_ready_,
+ [](void* bctlp, grpc_error_handle error) {
+ auto* bctl = static_cast<BatchControl*>(bctlp);
+ auto* call = bctl->call_;
+ // Yields the call combiner before processing the received
+ // message.
+ GRPC_CALL_COMBINER_STOP(call->call_combiner(),
+ "recv_message_ready");
+ bctl->ReceivingStreamReady(error);
+ },
+ bctl, grpc_schedule_on_exec_ctx);
stream_op_payload->recv_message.recv_message_ready =
- &call->receiving_stream_ready;
+ &receiving_stream_ready_;
++num_recv_ops;
break;
}
@@ -1645,32 +1619,36 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
error = GRPC_CALL_ERROR_INVALID_FLAGS;
goto done_with_error;
}
- if (!call->is_client) {
+ if (!is_client()) {
error = GRPC_CALL_ERROR_NOT_ON_SERVER;
goto done_with_error;
}
- if (call->requested_final_op) {
+ if (requested_final_op_) {
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
goto done_with_error;
}
- call->requested_final_op = true;
- call->buffered_metadata[1] =
+ requested_final_op_ = true;
+ buffered_metadata_[1] =
op->data.recv_status_on_client.trailing_metadata;
- call->final_op.client.status = op->data.recv_status_on_client.status;
- call->final_op.client.status_details =
+ final_op_.client.status = op->data.recv_status_on_client.status;
+ final_op_.client.status_details =
op->data.recv_status_on_client.status_details;
- call->final_op.client.error_string =
+ final_op_.client.error_string =
op->data.recv_status_on_client.error_string;
stream_op->recv_trailing_metadata = true;
stream_op_payload->recv_trailing_metadata.recv_trailing_metadata =
- &call->recv_trailing_metadata;
+ &recv_trailing_metadata_;
stream_op_payload->recv_trailing_metadata.collect_stats =
- &call->final_info.stats.transport_stream_stats;
- GRPC_CLOSURE_INIT(&call->receiving_trailing_metadata_ready,
- receiving_trailing_metadata_ready, bctl,
- grpc_schedule_on_exec_ctx);
+ &final_info_.stats.transport_stream_stats;
+ GRPC_CLOSURE_INIT(
+ &receiving_trailing_metadata_ready_,
+ [](void* bctl, grpc_error_handle error) {
+ static_cast<BatchControl*>(bctl)->ReceivingTrailingMetadataReady(
+ error);
+ },
+ bctl, grpc_schedule_on_exec_ctx);
stream_op_payload->recv_trailing_metadata.recv_trailing_metadata_ready =
- &call->receiving_trailing_metadata_ready;
+ &receiving_trailing_metadata_ready_;
++num_recv_ops;
break;
}
@@ -1680,47 +1658,53 @@ static grpc_call_error call_start_batch(grpc_call* call, const grpc_op* ops,
error = GRPC_CALL_ERROR_INVALID_FLAGS;
goto done_with_error;
}
- if (call->is_client) {
+ if (is_client()) {
error = GRPC_CALL_ERROR_NOT_ON_CLIENT;
goto done_with_error;
}
- if (call->requested_final_op) {
+ if (requested_final_op_) {
error = GRPC_CALL_ERROR_TOO_MANY_OPERATIONS;
goto done_with_error;
}
- call->requested_final_op = true;
- call->final_op.server.cancelled =
- op->data.recv_close_on_server.cancelled;
+ requested_final_op_ = true;
+ final_op_.server.cancelled = op->data.recv_close_on_server.cancelled;
stream_op->recv_trailing_metadata = true;
stream_op_payload->recv_trailing_metadata.recv_trailing_metadata =
- &call->recv_trailing_metadata;
+ &recv_trailing_metadata_;
stream_op_payload->recv_trailing_metadata.collect_stats =
- &call->final_info.stats.transport_stream_stats;
- GRPC_CLOSURE_INIT(&call->receiving_trailing_metadata_ready,
- receiving_trailing_metadata_ready, bctl,
- grpc_schedule_on_exec_ctx);
+ &final_info_.stats.transport_stream_stats;
+ GRPC_CLOSURE_INIT(
+ &receiving_trailing_metadata_ready_,
+ [](void* bctl, grpc_error_handle error) {
+ static_cast<BatchControl*>(bctl)->ReceivingTrailingMetadataReady(
+ error);
+ },
+ bctl, grpc_schedule_on_exec_ctx);
stream_op_payload->recv_trailing_metadata.recv_trailing_metadata_ready =
- &call->receiving_trailing_metadata_ready;
+ &receiving_trailing_metadata_ready_;
++num_recv_ops;
break;
}
}
}
- GRPC_CALL_INTERNAL_REF(call, "completion");
+ InternalRef("completion");
if (!is_notify_tag_closure) {
- Y_VERIFY(grpc_cq_begin_op(call->cq, notify_tag));
+ Y_VERIFY(grpc_cq_begin_op(cq_, notify_tag));
}
bctl->set_num_steps_to_complete((has_send_ops ? 1 : 0) + num_recv_ops);
if (has_send_ops) {
- GRPC_CLOSURE_INIT(&bctl->finish_batch, finish_batch, bctl,
- grpc_schedule_on_exec_ctx);
- stream_op->on_complete = &bctl->finish_batch;
+ GRPC_CLOSURE_INIT(
+ &bctl->finish_batch_,
+ [](void* bctl, grpc_error_handle error) {
+ static_cast<BatchControl*>(bctl)->FinishBatch(error);
+ },
+ bctl, grpc_schedule_on_exec_ctx);
+ stream_op->on_complete = &bctl->finish_batch_;
}
- gpr_atm_rel_store(&call->any_ops_sent_atm, 1);
- execute_batch(call, stream_op, &bctl->start_batch);
+ ExecuteBatch(stream_op, &bctl->start_batch_);
done:
return error;
@@ -1728,87 +1712,172 @@ done:
done_with_error:
/* reverse any mutations that occurred */
if (stream_op->send_initial_metadata) {
- call->sent_initial_metadata = false;
- call->send_initial_metadata.Clear();
+ sent_initial_metadata_ = false;
+ send_initial_metadata_.Clear();
}
if (stream_op->send_message) {
- call->sending_message = false;
- // No need to invoke call->sending_stream->Orphan() explicitly.
- // stream_op_payload->send_message.send_message.reset() calls Deletor
- // of call->sending_stream which in-turn invokes the Orphan() method.
- stream_op_payload->send_message.send_message.reset();
+ sending_message_ = false;
}
if (stream_op->send_trailing_metadata) {
- call->sent_final_op = false;
- call->send_trailing_metadata.Clear();
+ sent_final_op_ = false;
+ send_trailing_metadata_.Clear();
}
if (stream_op->recv_initial_metadata) {
- call->received_initial_metadata = false;
+ received_initial_metadata_ = false;
}
if (stream_op->recv_message) {
- call->receiving_message = false;
+ receiving_message_ = false;
}
if (stream_op->recv_trailing_metadata) {
- call->requested_final_op = false;
+ requested_final_op_ = false;
}
goto done;
}
+void FilterStackCall::ContextSet(grpc_context_index elem, void* value,
+ void (*destroy)(void*)) {
+ if (context_[elem].destroy) {
+ context_[elem].destroy(context_[elem].value);
+ }
+ context_[elem].value = value;
+ context_[elem].destroy = destroy;
+}
+
+} // namespace grpc_core
+
+void* grpc_call_arena_alloc(grpc_call* call, size_t size) {
+ grpc_core::ExecCtx exec_ctx;
+ return grpc_core::Call::FromC(call)->arena()->Alloc(size);
+}
+
+size_t grpc_call_get_initial_size_estimate() {
+ return grpc_core::FilterStackCall::InitialSizeEstimate();
+}
+
+grpc_error_handle grpc_call_create(grpc_call_create_args* args,
+ grpc_call** out_call) {
+ return grpc_core::FilterStackCall::Create(args, out_call);
+}
+
+void grpc_call_set_completion_queue(grpc_call* call,
+ grpc_completion_queue* cq) {
+ grpc_core::Call::FromC(call)->SetCompletionQueue(cq);
+}
+
+void grpc_call_ref(grpc_call* c) { grpc_core::Call::FromC(c)->ExternalRef(); }
+
+void grpc_call_unref(grpc_call* c) {
+ grpc_core::Call::FromC(c)->ExternalUnref();
+}
+
+char* grpc_call_get_peer(grpc_call* call) {
+ return grpc_core::Call::FromC(call)->GetPeer();
+}
+
+grpc_call* grpc_call_from_top_element(grpc_call_element* surface_element) {
+ return grpc_core::FilterStackCall::FromTopElem(surface_element)->c_ptr();
+}
+
+grpc_call_error grpc_call_cancel(grpc_call* call, void* reserved) {
+ GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved));
+ GPR_ASSERT(reserved == nullptr);
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
+ grpc_core::ExecCtx exec_ctx;
+ grpc_core::Call::FromC(call)->CancelWithError(GRPC_ERROR_CANCELLED);
+ return GRPC_CALL_OK;
+}
+
+grpc_call_error grpc_call_cancel_with_status(grpc_call* c,
+ grpc_status_code status,
+ const char* description,
+ void* reserved) {
+ GRPC_API_TRACE(
+ "grpc_call_cancel_with_status("
+ "c=%p, status=%d, description=%s, reserved=%p)",
+ 4, (c, (int)status, description, reserved));
+ GPR_ASSERT(reserved == nullptr);
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
+ grpc_core::ExecCtx exec_ctx;
+ grpc_core::Call::FromC(c)->CancelWithStatus(status, description);
+ return GRPC_CALL_OK;
+}
+
+void grpc_call_cancel_internal(grpc_call* call) {
+ grpc_core::Call::FromC(call)->CancelWithError(GRPC_ERROR_CANCELLED);
+}
+
+grpc_compression_algorithm grpc_call_test_only_get_compression_algorithm(
+ grpc_call* call) {
+ return grpc_core::Call::FromC(call)->test_only_compression_algorithm();
+}
+
+uint32_t grpc_call_test_only_get_message_flags(grpc_call* call) {
+ return grpc_core::Call::FromC(call)->test_only_message_flags();
+}
+
+uint32_t grpc_call_test_only_get_encodings_accepted_by_peer(grpc_call* call) {
+ return grpc_core::Call::FromC(call)->test_only_encodings_accepted_by_peer();
+}
+
+grpc_core::Arena* grpc_call_get_arena(grpc_call* call) {
+ return grpc_core::Call::FromC(call)->arena();
+}
+
+grpc_call_stack* grpc_call_get_call_stack(grpc_call* call) {
+ return grpc_core::Call::FromC(call)->call_stack();
+}
+
grpc_call_error grpc_call_start_batch(grpc_call* call, const grpc_op* ops,
size_t nops, void* tag, void* reserved) {
- grpc_call_error err;
-
GRPC_API_TRACE(
"grpc_call_start_batch(call=%p, ops=%p, nops=%lu, tag=%p, "
"reserved=%p)",
5, (call, ops, (unsigned long)nops, tag, reserved));
if (reserved != nullptr) {
- err = GRPC_CALL_ERROR;
+ return GRPC_CALL_ERROR;
} else {
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
grpc_core::ExecCtx exec_ctx;
- err = call_start_batch(call, ops, nops, tag, 0);
+ return grpc_core::Call::FromC(call)->StartBatch(ops, nops, tag, false);
}
-
- return err;
}
grpc_call_error grpc_call_start_batch_and_execute(grpc_call* call,
const grpc_op* ops,
size_t nops,
grpc_closure* closure) {
- return call_start_batch(call, ops, nops, closure, 1);
+ return grpc_core::Call::FromC(call)->StartBatch(ops, nops, closure, true);
}
void grpc_call_context_set(grpc_call* call, grpc_context_index elem,
void* value, void (*destroy)(void* value)) {
- if (call->context[elem].destroy) {
- call->context[elem].destroy(call->context[elem].value);
- }
- call->context[elem].value = value;
- call->context[elem].destroy = destroy;
+ return grpc_core::Call::FromC(call)->ContextSet(elem, value, destroy);
}
void* grpc_call_context_get(grpc_call* call, grpc_context_index elem) {
- return call->context[elem].value;
+ return grpc_core::Call::FromC(call)->ContextGet(elem);
}
-uint8_t grpc_call_is_client(grpc_call* call) { return call->is_client; }
+uint8_t grpc_call_is_client(grpc_call* call) {
+ return grpc_core::Call::FromC(call)->is_client();
+}
grpc_compression_algorithm grpc_call_compression_for_level(
grpc_call* call, grpc_compression_level level) {
- return call->encodings_accepted_by_peer.CompressionAlgorithmForLevel(level);
+ return grpc_core::Call::FromC(call)->compression_for_level(level);
}
bool grpc_call_is_trailers_only(const grpc_call* call) {
- bool result = call->is_trailers_only;
- GPR_DEBUG_ASSERT(!result || call->recv_initial_metadata.empty());
- return result;
+ return grpc_core::Call::FromC(call)->is_trailers_only();
}
int grpc_call_failed_before_recv_message(const grpc_call* c) {
- return c->call_failed_before_recv_message;
+ return grpc_core::Call::FromC(c)->failed_before_recv_message();
+}
+
+y_absl::string_view grpc_call_server_authority(const grpc_call* call) {
+ return grpc_core::Call::FromC(call)->GetServerAuthority();
}
const char* grpc_call_error_to_string(grpc_call_error error) {
diff --git a/contrib/libs/grpc/src/core/lib/surface/call.h b/contrib/libs/grpc/src/core/lib/surface/call.h
index a8f71130cc..1de290ef8c 100644
--- a/contrib/libs/grpc/src/core/lib/surface/call.h
+++ b/contrib/libs/grpc/src/core/lib/surface/call.h
@@ -21,20 +21,35 @@
#include <grpc/support/port_platform.h>
-#include <grpc/grpc.h>
+#include <stddef.h>
+#include <stdint.h>
+
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
#include <grpc/impl/codegen/compression_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/log.h>
-#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/context.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/resource_quota/arena.h"
+#include "src/core/lib/slice/slice.h"
#include "src/core/lib/surface/api_trace.h"
+#include "src/core/lib/surface/channel.h"
#include "src/core/lib/surface/server.h"
typedef void (*grpc_ioreq_completion_func)(grpc_call* call, int success,
void* user_data);
typedef struct grpc_call_create_args {
- grpc_channel* channel;
+ grpc_core::RefCountedPtr<grpc_core::Channel> channel;
grpc_core::Server* server;
grpc_call* parent;
@@ -60,20 +75,6 @@ grpc_error_handle grpc_call_create(grpc_call_create_args* args,
void grpc_call_set_completion_queue(grpc_call* call, grpc_completion_queue* cq);
-#ifndef NDEBUG
-void grpc_call_internal_ref(grpc_call* call, const char* reason);
-void grpc_call_internal_unref(grpc_call* call, const char* reason);
-#define GRPC_CALL_INTERNAL_REF(call, reason) \
- grpc_call_internal_ref(call, reason)
-#define GRPC_CALL_INTERNAL_UNREF(call, reason) \
- grpc_call_internal_unref(call, reason)
-#else
-void grpc_call_internal_ref(grpc_call* call);
-void grpc_call_internal_unref(grpc_call* call);
-#define GRPC_CALL_INTERNAL_REF(call, reason) grpc_call_internal_ref(call)
-#define GRPC_CALL_INTERNAL_UNREF(call, reason) grpc_call_internal_unref(call)
-#endif
-
grpc_core::Arena* grpc_call_get_arena(grpc_call* call);
grpc_call_stack* grpc_call_get_call_stack(grpc_call* call);
@@ -125,6 +126,9 @@ grpc_compression_algorithm grpc_call_compression_for_level(
Move to surface API if requested by other languages. */
bool grpc_call_is_trailers_only(const grpc_call* call);
+// Returns the authority for the call, as seen on the server side.
+y_absl::string_view grpc_call_server_authority(const grpc_call* call);
+
extern grpc_core::TraceFlag grpc_call_error_trace;
extern grpc_core::TraceFlag grpc_compression_trace;
diff --git a/contrib/libs/grpc/src/core/lib/surface/call_details.cc b/contrib/libs/grpc/src/core/lib/surface/call_details.cc
index ce73c3a527..85b6530d15 100644
--- a/contrib/libs/grpc/src/core/lib/surface/call_details.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/call_details.cc
@@ -18,13 +18,13 @@
#include <grpc/support/port_platform.h>
-#include <string.h>
-
#include <grpc/grpc.h>
-#include <grpc/support/alloc.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/iomgr/exec_ctx.h"
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/core/lib/surface/api_trace.h"
void grpc_call_details_init(grpc_call_details* details) {
diff --git a/contrib/libs/grpc/src/core/lib/surface/call_log_batch.cc b/contrib/libs/grpc/src/core/lib/surface/call_log_batch.cc
index 944b15a78c..6f9ec59322 100644
--- a/contrib/libs/grpc/src/core/lib/surface/call_log_batch.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/call_log_batch.cc
@@ -19,16 +19,23 @@
#include <grpc/support/port_platform.h>
#include <inttypes.h>
+#include <stddef.h>
+#include <algorithm>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include <vector>
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
+#include "y_absl/strings/string_view.h"
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
+#include <grpc/support/log.h>
#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/slice/slice_string_helpers.h"
#include "src/core/lib/surface/call.h"
diff --git a/contrib/libs/grpc/src/core/lib/surface/call_test_only.h b/contrib/libs/grpc/src/core/lib/surface/call_test_only.h
index dbd1a866ca..17a48a23e7 100644
--- a/contrib/libs/grpc/src/core/lib/surface/call_test_only.h
+++ b/contrib/libs/grpc/src/core/lib/surface/call_test_only.h
@@ -21,7 +21,10 @@
#include <grpc/support/port_platform.h>
-#include <grpc/grpc.h>
+#include <stdint.h>
+
+#include <grpc/impl/codegen/compression_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
/** Return the message compression algorithm from \a call.
*
diff --git a/contrib/libs/grpc/src/core/lib/surface/channel.cc b/contrib/libs/grpc/src/core/lib/surface/channel.cc
index 843f3a467f..99360101f9 100644
--- a/contrib/libs/grpc/src/core/lib/surface/channel.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/channel.cc
@@ -21,232 +21,199 @@
#include "src/core/lib/surface/channel.h"
#include <inttypes.h>
-#include <limits.h>
-#include <stdlib.h>
#include <string.h>
+#include <algorithm>
+#include <atomic>
+#include <functional>
+#include <memory>
+
+#include "y_absl/status/status.h"
+
#include <grpc/compression.h>
+#include <grpc/grpc.h>
+#include <grpc/impl/codegen/gpr_types.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/channel/channel_stack_builder_impl.h"
#include "src/core/lib/channel/channel_trace.h"
#include "src/core/lib/channel/channelz.h"
-#include "src/core/lib/channel/channelz_registry.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/debug/stats.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gpr/useful.h"
#include "src/core/lib/gprpp/manual_constructor.h"
-#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
-#include "src/core/lib/iomgr/iomgr.h"
-#include "src/core/lib/resource_quota/api.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/resource_quota/memory_quota.h"
-#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/resource_quota/resource_quota.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/call.h"
+#include "src/core/lib/surface/channel_init.h"
#include "src/core/lib/surface/channel_stack_type.h"
+#include "src/core/lib/surface/init_internally.h"
+#include "src/core/lib/transport/transport.h"
-/** Cache grpc-status: X mdelems for X = 0..NUM_CACHED_STATUS_ELEMS.
- * Avoids needing to take a metadata context lock for sending status
- * if the status code is <= NUM_CACHED_STATUS_ELEMS.
- * Sized to allow the most commonly used codes to fit in
- * (OK, Cancelled, Unknown). */
-#define NUM_CACHED_STATUS_ELEMS 3
+// IWYU pragma: no_include <type_traits>
-static void destroy_channel(void* arg, grpc_error_handle error);
+namespace grpc_core {
-grpc_channel* grpc_channel_create_with_builder(
- grpc_core::ChannelStackBuilder* builder,
- grpc_channel_stack_type channel_stack_type, grpc_error_handle* error) {
- TString target(builder->target());
- grpc_channel_args* args = grpc_channel_args_copy(builder->channel_args());
- grpc_channel* channel;
- if (channel_stack_type == GRPC_SERVER_CHANNEL) {
+Channel::Channel(bool is_client, TString target,
+ const ChannelArgs& channel_args,
+ grpc_compression_options compression_options,
+ RefCountedPtr<grpc_channel_stack> channel_stack)
+ : is_client_(is_client),
+ compression_options_(compression_options),
+ call_size_estimate_(channel_stack->call_stack_size +
+ grpc_call_get_initial_size_estimate()),
+ channelz_node_(channel_args.GetObjectRef<channelz::ChannelNode>()),
+ allocator_(channel_args.GetObject<ResourceQuota>()
+ ->memory_quota()
+ ->CreateMemoryOwner(target)),
+ target_(std::move(target)),
+ channel_stack_(std::move(channel_stack)) {
+ // We need to make sure that grpc_shutdown() does not shut things down
+ // until after the channel is destroyed. However, the channel may not
+ // actually be destroyed by the time grpc_channel_destroy() returns,
+ // since there may be other existing refs to the channel. If those
+ // refs are held by things that are visible to the wrapped language
+ // (such as outstanding calls on the channel), then the wrapped
+ // language can be responsible for making sure that grpc_shutdown()
+ // does not run until after those refs are released. However, the
+ // channel may also have refs to itself held internally for various
+ // things that need to be cleaned up at channel destruction (e.g.,
+ // LB policies, subchannels, etc), and because these refs are not
+ // visible to the wrapped language, it cannot be responsible for
+ // deferring grpc_shutdown() until after they are released. To
+ // accommodate that, we call grpc_init() here and then call
+ // grpc_shutdown() when the channel is actually destroyed, thus
+ // ensuring that shutdown is deferred until that point.
+ InitInternally();
+ auto channelz_node = channelz_node_;
+ *channel_stack_->on_destroy = [channelz_node]() {
+ if (channelz_node != nullptr) {
+ channelz_node->AddTraceEvent(
+ channelz::ChannelTrace::Severity::Info,
+ grpc_slice_from_static_string("Channel destroyed"));
+ }
+ ShutdownInternally();
+ };
+}
+
+y_absl::StatusOr<RefCountedPtr<Channel>> Channel::CreateWithBuilder(
+ ChannelStackBuilder* builder) {
+ auto channel_args = builder->channel_args();
+ if (builder->channel_stack_type() == GRPC_SERVER_CHANNEL) {
GRPC_STATS_INC_SERVER_CHANNELS_CREATED();
} else {
GRPC_STATS_INC_CLIENT_CHANNELS_CREATED();
}
- TString name(builder->target());
- grpc_error_handle builder_error =
- builder->Build(sizeof(grpc_channel), 1, destroy_channel, nullptr,
- reinterpret_cast<void**>(&channel));
- if (builder_error != GRPC_ERROR_NONE) {
+ y_absl::StatusOr<RefCountedPtr<grpc_channel_stack>> r = builder->Build();
+ if (!r.ok()) {
+ auto status = r.status();
gpr_log(GPR_ERROR, "channel stack builder failed: %s",
- grpc_error_std_string(builder_error).c_str());
- GPR_ASSERT(channel == nullptr);
- if (error != nullptr) {
- *error = builder_error;
- } else {
- GRPC_ERROR_UNREF(builder_error);
- }
- grpc_channel_args_destroy(args);
- return nullptr;
+ status.ToString().c_str());
+ return status;
}
- channel->target.Init(std::move(target));
- channel->is_client = grpc_channel_stack_type_is_client(channel_stack_type);
- channel->registration_table.Init();
- channel->allocator.Init(grpc_core::ResourceQuotaFromChannelArgs(args)
- ->memory_quota()
- ->CreateMemoryOwner(name));
-
- gpr_atm_no_barrier_store(
- &channel->call_size_estimate,
- (gpr_atm)CHANNEL_STACK_FROM_CHANNEL(channel)->call_stack_size +
- grpc_call_get_initial_size_estimate());
-
- grpc_compression_options_init(&channel->compression_options);
- for (size_t i = 0; i < args->num_args; i++) {
- if (0 ==
- strcmp(args->args[i].key, GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL)) {
- channel->compression_options.default_level.is_set = true;
- channel->compression_options.default_level.level =
- static_cast<grpc_compression_level>(grpc_channel_arg_get_integer(
- &args->args[i],
- {GRPC_COMPRESS_LEVEL_NONE, GRPC_COMPRESS_LEVEL_NONE,
- GRPC_COMPRESS_LEVEL_COUNT - 1}));
- } else if (0 == strcmp(args->args[i].key,
- GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM)) {
- channel->compression_options.default_algorithm.is_set = true;
- channel->compression_options.default_algorithm.algorithm =
- static_cast<grpc_compression_algorithm>(grpc_channel_arg_get_integer(
- &args->args[i], {GRPC_COMPRESS_NONE, GRPC_COMPRESS_NONE,
- GRPC_COMPRESS_ALGORITHMS_COUNT - 1}));
- } else if (0 ==
- strcmp(args->args[i].key,
- GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET)) {
- channel->compression_options.enabled_algorithms_bitset =
- static_cast<uint32_t>(args->args[i].value.integer) |
- 0x1; /* always support no compression */
- } else if (0 == strcmp(args->args[i].key, GRPC_ARG_CHANNELZ_CHANNEL_NODE)) {
- if (args->args[i].type == GRPC_ARG_POINTER) {
- GPR_ASSERT(args->args[i].value.pointer.p != nullptr);
- channel->channelz_node = static_cast<grpc_core::channelz::ChannelNode*>(
- args->args[i].value.pointer.p)
- ->Ref();
- } else {
- gpr_log(GPR_DEBUG,
- GRPC_ARG_CHANNELZ_CHANNEL_NODE " should be a pointer");
- }
- }
- }
-
- grpc_channel_args_destroy(args);
- return channel;
-}
-static grpc_core::UniquePtr<char> get_default_authority(
- const grpc_channel_args* input_args) {
- bool has_default_authority = false;
- char* ssl_override = nullptr;
- grpc_core::UniquePtr<char> default_authority;
- const size_t num_args = input_args != nullptr ? input_args->num_args : 0;
- for (size_t i = 0; i < num_args; ++i) {
- if (0 == strcmp(input_args->args[i].key, GRPC_ARG_DEFAULT_AUTHORITY)) {
- has_default_authority = true;
- } else if (0 == strcmp(input_args->args[i].key,
- GRPC_SSL_TARGET_NAME_OVERRIDE_ARG)) {
- ssl_override = grpc_channel_arg_get_string(&input_args->args[i]);
- }
+ grpc_compression_options compression_options;
+ grpc_compression_options_init(&compression_options);
+ auto default_level =
+ channel_args.GetInt(GRPC_COMPRESSION_CHANNEL_DEFAULT_LEVEL);
+ if (default_level.has_value()) {
+ compression_options.default_level.is_set = true;
+ compression_options.default_level.level = Clamp(
+ static_cast<grpc_compression_level>(*default_level),
+ GRPC_COMPRESS_LEVEL_NONE,
+ static_cast<grpc_compression_level>(GRPC_COMPRESS_LEVEL_COUNT - 1));
}
- if (!has_default_authority && ssl_override != nullptr) {
- default_authority.reset(gpr_strdup(ssl_override));
+ auto default_algorithm =
+ channel_args.GetInt(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM);
+ if (default_algorithm.has_value()) {
+ compression_options.default_algorithm.is_set = true;
+ compression_options.default_algorithm.algorithm =
+ Clamp(static_cast<grpc_compression_algorithm>(*default_algorithm),
+ GRPC_COMPRESS_NONE,
+ static_cast<grpc_compression_algorithm>(
+ GRPC_COMPRESS_ALGORITHMS_COUNT - 1));
}
- return default_authority;
-}
-
-static grpc_channel_args* build_channel_args(
- const grpc_channel_args* input_args, char* default_authority) {
- grpc_arg new_args[1];
- size_t num_new_args = 0;
- if (default_authority != nullptr) {
- new_args[num_new_args++] = grpc_channel_arg_string_create(
- const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY), default_authority);
+ auto enabled_algorithms_bitset =
+ channel_args.GetInt(GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET);
+ if (enabled_algorithms_bitset.has_value()) {
+ compression_options.enabled_algorithms_bitset =
+ *enabled_algorithms_bitset | 1 /* always support no compression */;
}
- return grpc_channel_args_copy_and_add(input_args, new_args, num_new_args);
+
+ return RefCountedPtr<Channel>(new Channel(
+ grpc_channel_stack_type_is_client(builder->channel_stack_type()),
+ TString(builder->target()), channel_args, compression_options,
+ std::move(*r)));
}
namespace {
void* channelz_node_copy(void* p) {
- grpc_core::channelz::ChannelNode* node =
- static_cast<grpc_core::channelz::ChannelNode*>(p);
+ channelz::ChannelNode* node = static_cast<channelz::ChannelNode*>(p);
node->Ref().release();
return p;
}
void channelz_node_destroy(void* p) {
- grpc_core::channelz::ChannelNode* node =
- static_cast<grpc_core::channelz::ChannelNode*>(p);
+ channelz::ChannelNode* node = static_cast<channelz::ChannelNode*>(p);
node->Unref();
}
-int channelz_node_cmp(void* p1, void* p2) {
- return grpc_core::QsortCompare(p1, p2);
-}
+int channelz_node_cmp(void* p1, void* p2) { return QsortCompare(p1, p2); }
const grpc_arg_pointer_vtable channelz_node_arg_vtable = {
channelz_node_copy, channelz_node_destroy, channelz_node_cmp};
-void CreateChannelzNode(grpc_core::ChannelStackBuilder* builder) {
- const grpc_channel_args* args = builder->channel_args();
+void CreateChannelzNode(ChannelStackBuilder* builder) {
+ auto args = builder->channel_args();
// Check whether channelz is enabled.
- const bool channelz_enabled = grpc_channel_args_find_bool(
- args, GRPC_ARG_ENABLE_CHANNELZ, GRPC_ENABLE_CHANNELZ_DEFAULT);
+ const bool channelz_enabled = args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
+ .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT);
if (!channelz_enabled) return;
// Get parameters needed to create the channelz node.
- const size_t channel_tracer_max_memory = grpc_channel_args_find_integer(
- args, GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE,
- {GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT, 0, INT_MAX});
- const bool is_internal_channel = grpc_channel_args_find_bool(
- args, GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL, false);
+ const size_t channel_tracer_max_memory = std::max(
+ 0, args.GetInt(GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE)
+ .value_or(GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT));
+ const bool is_internal_channel =
+ args.GetBool(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL).value_or(false);
// Create the channelz node.
TString target(builder->target());
- grpc_core::RefCountedPtr<grpc_core::channelz::ChannelNode> channelz_node =
- grpc_core::MakeRefCounted<grpc_core::channelz::ChannelNode>(
+ RefCountedPtr<channelz::ChannelNode> channelz_node =
+ MakeRefCounted<channelz::ChannelNode>(
target.c_str(), channel_tracer_max_memory, is_internal_channel);
channelz_node->AddTraceEvent(
- grpc_core::channelz::ChannelTrace::Severity::Info,
+ channelz::ChannelTrace::Severity::Info,
grpc_slice_from_static_string("Channel created"));
// Add channelz node to channel args.
// We remove the is_internal_channel arg, since we no longer need it.
- grpc_arg new_arg = grpc_channel_arg_pointer_create(
- const_cast<char*>(GRPC_ARG_CHANNELZ_CHANNEL_NODE), channelz_node.get(),
- &channelz_node_arg_vtable);
- const char* args_to_remove[] = {GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL};
- grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
- args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
- builder->SetChannelArgs(new_args);
- grpc_channel_args_destroy(new_args);
+ builder->SetChannelArgs(
+ args.Remove(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL)
+ .Set(GRPC_ARG_CHANNELZ_CHANNEL_NODE,
+ ChannelArgs::Pointer(channelz_node.release(),
+ &channelz_node_arg_vtable)));
}
} // namespace
-grpc_channel* grpc_channel_create_internal(
- const char* target, const grpc_channel_args* input_args,
+y_absl::StatusOr<RefCountedPtr<Channel>> Channel::Create(
+ const char* target, ChannelArgs args,
grpc_channel_stack_type channel_stack_type,
- grpc_transport* optional_transport, grpc_error_handle* error) {
- // We need to make sure that grpc_shutdown() does not shut things down
- // until after the channel is destroyed. However, the channel may not
- // actually be destroyed by the time grpc_channel_destroy() returns,
- // since there may be other existing refs to the channel. If those
- // refs are held by things that are visible to the wrapped language
- // (such as outstanding calls on the channel), then the wrapped
- // language can be responsible for making sure that grpc_shutdown()
- // does not run until after those refs are released. However, the
- // channel may also have refs to itself held internally for various
- // things that need to be cleaned up at channel destruction (e.g.,
- // LB policies, subchannels, etc), and because these refs are not
- // visible to the wrapped language, it cannot be responsible for
- // deferring grpc_shutdown() until after they are released. To
- // accommodate that, we call grpc_init() here and then call
- // grpc_shutdown() when the channel is actually destroyed, thus
- // ensuring that shutdown is deferred until that point.
- grpc_init();
- grpc_core::ChannelStackBuilder builder(
- grpc_channel_stack_type_string(channel_stack_type));
- const grpc_core::UniquePtr<char> default_authority =
- get_default_authority(input_args);
- grpc_channel_args* args =
- build_channel_args(input_args, default_authority.get());
+ grpc_transport* optional_transport) {
+ ChannelStackBuilderImpl builder(
+ grpc_channel_stack_type_string(channel_stack_type), channel_stack_type);
+ if (!args.GetString(GRPC_ARG_DEFAULT_AUTHORITY).has_value()) {
+ auto ssl_override = args.GetString(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG);
+ if (ssl_override.has_value()) {
+ args = args.Set(GRPC_ARG_DEFAULT_AUTHORITY,
+ TString(ssl_override.value()));
+ }
+ }
if (grpc_channel_stack_type_is_client(channel_stack_type)) {
auto channel_args_mutator =
grpc_channel_args_get_client_channel_creation_mutator();
@@ -256,10 +223,7 @@ grpc_channel* grpc_channel_create_internal(
}
builder.SetChannelArgs(args).SetTarget(target).SetTransport(
optional_transport);
- grpc_channel_args_destroy(args);
- if (!grpc_core::CoreConfiguration::Get().channel_init().CreateStack(
- &builder, channel_stack_type)) {
- grpc_shutdown(); // Since we won't call destroy_channel().
+ if (!CoreConfiguration::Get().channel_init().CreateStack(&builder)) {
return nullptr;
}
// We only need to do this for clients here. For servers, this will be
@@ -267,60 +231,43 @@ grpc_channel* grpc_channel_create_internal(
if (grpc_channel_stack_type_is_client(channel_stack_type)) {
CreateChannelzNode(&builder);
}
- grpc_channel* channel =
- grpc_channel_create_with_builder(&builder, channel_stack_type, error);
- if (channel == nullptr) {
- grpc_shutdown(); // Since we won't call destroy_channel().
- }
- return channel;
-}
-
-size_t grpc_channel_get_call_size_estimate(grpc_channel* channel) {
-#define ROUND_UP_SIZE 256
- /* We round up our current estimate to the NEXT value of ROUND_UP_SIZE.
- This ensures:
- 1. a consistent size allocation when our estimate is drifting slowly
- (which is common) - which tends to help most allocators reuse memory
- 2. a small amount of allowed growth over the estimate without hitting
- the arena size doubling case, reducing overall memory usage */
- return (static_cast<size_t>(
- gpr_atm_no_barrier_load(&channel->call_size_estimate)) +
- 2 * ROUND_UP_SIZE) &
- ~static_cast<size_t>(ROUND_UP_SIZE - 1);
+ return CreateWithBuilder(&builder);
}
-void grpc_channel_update_call_size_estimate(grpc_channel* channel,
- size_t size) {
- size_t cur = static_cast<size_t>(
- gpr_atm_no_barrier_load(&channel->call_size_estimate));
+void Channel::UpdateCallSizeEstimate(size_t size) {
+ size_t cur = call_size_estimate_.load(std::memory_order_relaxed);
if (cur < size) {
- /* size grew: update estimate */
- gpr_atm_no_barrier_cas(&channel->call_size_estimate,
- static_cast<gpr_atm>(cur),
- static_cast<gpr_atm>(size));
- /* if we lose: never mind, something else will likely update soon enough */
+ // size grew: update estimate
+ call_size_estimate_.compare_exchange_weak(
+ cur, size, std::memory_order_relaxed, std::memory_order_relaxed);
+ // if we lose: never mind, something else will likely update soon enough
} else if (cur == size) {
- /* no change: holding pattern */
+ // no change: holding pattern
} else if (cur > 0) {
- /* size shrank: decrease estimate */
- gpr_atm_no_barrier_cas(
- &channel->call_size_estimate, static_cast<gpr_atm>(cur),
- static_cast<gpr_atm>(std::min(cur - 1, (255 * cur + size) / 256)));
- /* if we lose: never mind, something else will likely update soon enough */
+ // size shrank: decrease estimate
+ call_size_estimate_.compare_exchange_weak(
+ cur, std::min(cur - 1, (255 * cur + size) / 256),
+ std::memory_order_relaxed, std::memory_order_relaxed);
+ // if we lose: never mind, something else will likely update soon enough
}
}
+} // namespace grpc_core
+
char* grpc_channel_get_target(grpc_channel* channel) {
GRPC_API_TRACE("grpc_channel_get_target(channel=%p)", 1, (channel));
- return gpr_strdup(channel->target->c_str());
+ auto target = grpc_core::Channel::FromC(channel)->target();
+ char* buffer = static_cast<char*>(gpr_zalloc(target.size() + 1));
+ memcpy(buffer, target.data(), target.size());
+ return buffer;
}
void grpc_channel_get_info(grpc_channel* channel,
const grpc_channel_info* channel_info) {
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
grpc_core::ExecCtx exec_ctx;
- grpc_channel_element* elem =
- grpc_channel_stack_element(CHANNEL_STACK_FROM_CHANNEL(channel), 0);
+ grpc_channel_element* elem = grpc_channel_stack_element(
+ grpc_core::Channel::FromC(channel)->channel_stack(), 0);
elem->filter->get_channel_info(elem, channel_info);
}
@@ -331,21 +278,22 @@ void grpc_channel_reset_connect_backoff(grpc_channel* channel) {
(channel));
grpc_transport_op* op = grpc_make_transport_op(nullptr);
op->reset_connect_backoff = true;
- grpc_channel_element* elem =
- grpc_channel_stack_element(CHANNEL_STACK_FROM_CHANNEL(channel), 0);
+ grpc_channel_element* elem = grpc_channel_stack_element(
+ grpc_core::Channel::FromC(channel)->channel_stack(), 0);
elem->filter->start_transport_op(elem, op);
}
static grpc_call* grpc_channel_create_call_internal(
- grpc_channel* channel, grpc_call* parent_call, uint32_t propagation_mask,
+ grpc_channel* c_channel, grpc_call* parent_call, uint32_t propagation_mask,
grpc_completion_queue* cq, grpc_pollset_set* pollset_set_alternative,
grpc_core::Slice path, y_absl::optional<grpc_core::Slice> authority,
grpc_core::Timestamp deadline) {
- GPR_ASSERT(channel->is_client);
+ auto channel = grpc_core::Channel::FromC(c_channel)->Ref();
+ GPR_ASSERT(channel->is_client());
GPR_ASSERT(!(cq != nullptr && pollset_set_alternative != nullptr));
grpc_call_create_args args;
- args.channel = channel;
+ args.channel = std::move(channel);
args.server = nullptr;
args.parent = parent_call;
args.propagation_mask = propagation_mask;
@@ -423,20 +371,27 @@ void* grpc_channel_register_call(grpc_channel* channel, const char* method,
GPR_ASSERT(!reserved);
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
grpc_core::ExecCtx exec_ctx;
+ return grpc_core::Channel::FromC(channel)->RegisterCall(method, host);
+}
+
+namespace grpc_core {
- grpc_core::MutexLock lock(&channel->registration_table->mu);
- channel->registration_table->method_registration_attempts++;
+RegisteredCall* Channel::RegisterCall(const char* method, const char* host) {
+ MutexLock lock(&registration_table_.mu);
+ registration_table_.method_registration_attempts++;
auto key = std::make_pair(TString(host != nullptr ? host : ""),
TString(method != nullptr ? method : ""));
- auto rc_posn = channel->registration_table->map.find(key);
- if (rc_posn != channel->registration_table->map.end()) {
+ auto rc_posn = registration_table_.map.find(key);
+ if (rc_posn != registration_table_.map.end()) {
return &rc_posn->second;
}
- auto insertion_result = channel->registration_table->map.insert(
- {std::move(key), grpc_core::RegisteredCall(method, host)});
+ auto insertion_result = registration_table_.map.insert(
+ {std::move(key), RegisteredCall(method, host)});
return &insertion_result.first->second;
}
+} // namespace grpc_core
+
grpc_call* grpc_channel_create_registered_call(
grpc_channel* channel, grpc_call* parent_call, uint32_t propagation_mask,
grpc_completion_queue* completion_queue, void* registered_call_handle,
@@ -468,32 +423,16 @@ grpc_call* grpc_channel_create_registered_call(
return call;
}
-static void destroy_channel(void* arg, grpc_error_handle /*error*/) {
- grpc_channel* channel = static_cast<grpc_channel*>(arg);
- if (channel->channelz_node != nullptr) {
- channel->channelz_node->AddTraceEvent(
- grpc_core::channelz::ChannelTrace::Severity::Info,
- grpc_slice_from_static_string("Channel destroyed"));
- channel->channelz_node.reset();
- }
- grpc_channel_stack_destroy(CHANNEL_STACK_FROM_CHANNEL(channel));
- channel->registration_table.Destroy();
- channel->allocator.Destroy();
- channel->target.Destroy();
- gpr_free(channel);
- // See comment in grpc_channel_create_internal() for why we do this.
- grpc_shutdown();
-}
-
-void grpc_channel_destroy_internal(grpc_channel* channel) {
+void grpc_channel_destroy_internal(grpc_channel* c_channel) {
+ grpc_core::RefCountedPtr<grpc_core::Channel> channel(
+ grpc_core::Channel::FromC(c_channel));
grpc_transport_op* op = grpc_make_transport_op(nullptr);
grpc_channel_element* elem;
- GRPC_API_TRACE("grpc_channel_destroy(channel=%p)", 1, (channel));
+ GRPC_API_TRACE("grpc_channel_destroy(channel=%p)", 1, (c_channel));
op->disconnect_with_error =
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Channel Destroyed");
- elem = grpc_channel_stack_element(CHANNEL_STACK_FROM_CHANNEL(channel), 0);
+ elem = grpc_channel_stack_element(channel->channel_stack(), 0);
elem->filter->start_transport_op(elem, op);
- GRPC_CHANNEL_INTERNAL_UNREF(channel, "channel");
}
void grpc_channel_destroy(grpc_channel* channel) {
diff --git a/contrib/libs/grpc/src/core/lib/surface/channel.h b/contrib/libs/grpc/src/core/lib/surface/channel.h
index b2fec93ad2..06061796b8 100644
--- a/contrib/libs/grpc/src/core/lib/surface/channel.h
+++ b/contrib/libs/grpc/src/core/lib/surface/channel.h
@@ -21,32 +21,46 @@
#include <grpc/support/port_platform.h>
-#include <map>
+#include <stddef.h>
+#include <stdint.h>
-#include "src/core/lib/channel/channel_stack.h"
+#include <atomic>
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/event_engine/memory_allocator.h>
+#include <grpc/impl/codegen/compression_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/channel_stack.h" // IWYU pragma: keep
#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/channel/channelz.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
+#include "src/core/lib/gprpp/cpp_impl_of.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/resource_quota/memory_quota.h"
+#include "src/core/lib/slice/slice.h"
#include "src/core/lib/surface/channel_stack_type.h"
-
-/// Creates a grpc_channel.
-grpc_channel* grpc_channel_create_internal(
- const char* target, const grpc_channel_args* args,
- grpc_channel_stack_type channel_stack_type,
- grpc_transport* optional_transport, grpc_error_handle* error);
+#include "src/core/lib/transport/transport_fwd.h"
/** The same as grpc_channel_destroy, but doesn't create an ExecCtx, and so
* is safe to use from within core. */
void grpc_channel_destroy_internal(grpc_channel* channel);
-/// Creates a grpc_channel with a builder. See the description of
-/// \a grpc_channel_create for variable definitions.
-grpc_channel* grpc_channel_create_with_builder(
- grpc_core::ChannelStackBuilder* builder,
- grpc_channel_stack_type channel_stack_type,
- grpc_error_handle* error = nullptr);
-
/** Create a call given a grpc_channel, in order to call \a method.
Progress is tied to activity on \a pollset_set. The returned call object is
meant to be used with \a grpc_call_start_batch_and_execute, which relies on
@@ -92,68 +106,94 @@ struct CallRegistrationTable {
int method_registration_attempts Y_ABSL_GUARDED_BY(mu) = 0;
};
-} // namespace grpc_core
-
-struct grpc_channel {
- int is_client;
- grpc_compression_options compression_options;
-
- gpr_atm call_size_estimate;
-
- // TODO(vjpai): Once the grpc_channel is allocated via new rather than malloc,
- // expand the members of the CallRegistrationTable directly into
- // the grpc_channel. For now it is kept separate so that all the
- // manual constructing can be done with a single call rather than
- // a separate manual construction for each field.
- grpc_core::ManualConstructor<grpc_core::CallRegistrationTable>
- registration_table;
- grpc_core::RefCountedPtr<grpc_core::channelz::ChannelNode> channelz_node;
- grpc_core::ManualConstructor<grpc_core::MemoryAllocator> allocator;
-
- grpc_core::ManualConstructor<TString> target;
+class Channel : public RefCounted<Channel>,
+ public CppImplOf<Channel, grpc_channel> {
+ public:
+ static y_absl::StatusOr<RefCountedPtr<Channel>> Create(
+ const char* target, ChannelArgs args,
+ grpc_channel_stack_type channel_stack_type,
+ grpc_transport* optional_transport);
+
+ static y_absl::StatusOr<RefCountedPtr<Channel>> CreateWithBuilder(
+ ChannelStackBuilder* builder);
+
+ grpc_channel_stack* channel_stack() const { return channel_stack_.get(); }
+
+ grpc_compression_options compression_options() const {
+ return compression_options_;
+ }
+
+ channelz::ChannelNode* channelz_node() const { return channelz_node_.get(); }
+
+ size_t CallSizeEstimate() {
+ // We round up our current estimate to the NEXT value of kRoundUpSize.
+ // This ensures:
+ // 1. a consistent size allocation when our estimate is drifting slowly
+ // (which is common) - which tends to help most allocators reuse memory
+ // 2. a small amount of allowed growth over the estimate without hitting
+ // the arena size doubling case, reducing overall memory usage
+ static constexpr size_t kRoundUpSize = 256;
+ return (call_size_estimate_.load(std::memory_order_relaxed) +
+ 2 * kRoundUpSize) &
+ ~(kRoundUpSize - 1);
+ }
+
+ void UpdateCallSizeEstimate(size_t size);
+ y_absl::string_view target() const { return target_; }
+ MemoryAllocator* allocator() { return &allocator_; }
+ bool is_client() const { return is_client_; }
+ RegisteredCall* RegisterCall(const char* method, const char* host);
+
+ int TestOnlyRegisteredCalls() {
+ MutexLock lock(&registration_table_.mu);
+ return registration_table_.map.size();
+ }
+
+ int TestOnlyRegistrationAttempts() {
+ MutexLock lock(&registration_table_.mu);
+ return registration_table_.method_registration_attempts;
+ }
+
+ private:
+ Channel(bool is_client, TString target, const ChannelArgs& channel_args,
+ grpc_compression_options compression_options,
+ RefCountedPtr<grpc_channel_stack> channel_stack);
+
+ const bool is_client_;
+ const grpc_compression_options compression_options_;
+ std::atomic<size_t> call_size_estimate_;
+ CallRegistrationTable registration_table_;
+ RefCountedPtr<channelz::ChannelNode> channelz_node_;
+ MemoryAllocator allocator_;
+ TString target_;
+ const RefCountedPtr<grpc_channel_stack> channel_stack_;
};
-#define CHANNEL_STACK_FROM_CHANNEL(c) ((grpc_channel_stack*)((c) + 1))
+
+} // namespace grpc_core
inline grpc_compression_options grpc_channel_compression_options(
const grpc_channel* channel) {
- return channel->compression_options;
+ return grpc_core::Channel::FromC(channel)->compression_options();
}
inline grpc_channel_stack* grpc_channel_get_channel_stack(
grpc_channel* channel) {
- return CHANNEL_STACK_FROM_CHANNEL(channel);
+ return grpc_core::Channel::FromC(channel)->channel_stack();
}
inline grpc_core::channelz::ChannelNode* grpc_channel_get_channelz_node(
grpc_channel* channel) {
- return channel->channelz_node.get();
+ return grpc_core::Channel::FromC(channel)->channelz_node();
}
-#ifndef NDEBUG
inline void grpc_channel_internal_ref(grpc_channel* channel,
const char* reason) {
- GRPC_CHANNEL_STACK_REF(CHANNEL_STACK_FROM_CHANNEL(channel), reason);
+ grpc_core::Channel::FromC(channel)->Ref(DEBUG_LOCATION, reason).release();
}
inline void grpc_channel_internal_unref(grpc_channel* channel,
const char* reason) {
- GRPC_CHANNEL_STACK_UNREF(CHANNEL_STACK_FROM_CHANNEL(channel), reason);
-}
-#define GRPC_CHANNEL_INTERNAL_REF(channel, reason) \
- grpc_channel_internal_ref(channel, reason)
-#define GRPC_CHANNEL_INTERNAL_UNREF(channel, reason) \
- grpc_channel_internal_unref(channel, reason)
-#else
-inline void grpc_channel_internal_ref(grpc_channel* channel) {
- GRPC_CHANNEL_STACK_REF(CHANNEL_STACK_FROM_CHANNEL(channel), "unused");
-}
-inline void grpc_channel_internal_unref(grpc_channel* channel) {
- GRPC_CHANNEL_STACK_UNREF(CHANNEL_STACK_FROM_CHANNEL(channel), "unused");
+ grpc_core::Channel::FromC(channel)->Unref(DEBUG_LOCATION, reason);
}
-#define GRPC_CHANNEL_INTERNAL_REF(channel, reason) \
- grpc_channel_internal_ref(channel)
-#define GRPC_CHANNEL_INTERNAL_UNREF(channel, reason) \
- grpc_channel_internal_unref(channel)
-#endif
// Return the channel's compression options.
grpc_compression_options grpc_channel_compression_options(
diff --git a/contrib/libs/grpc/src/core/lib/surface/channel_init.cc b/contrib/libs/grpc/src/core/lib/surface/channel_init.cc
index 8725991357..459cbdea9b 100644
--- a/contrib/libs/grpc/src/core/lib/surface/channel_init.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/channel_init.cc
@@ -45,9 +45,8 @@ ChannelInit ChannelInit::Builder::Build() {
return result;
}
-bool ChannelInit::CreateStack(ChannelStackBuilder* builder,
- grpc_channel_stack_type type) const {
- for (const auto& stage : slots_[type]) {
+bool ChannelInit::CreateStack(ChannelStackBuilder* builder) const {
+ for (const auto& stage : slots_[builder->channel_stack_type()]) {
if (!stage(builder)) return false;
}
return true;
diff --git a/contrib/libs/grpc/src/core/lib/surface/channel_init.h b/contrib/libs/grpc/src/core/lib/surface/channel_init.h
index ca58086df9..ee0112c03b 100644
--- a/contrib/libs/grpc/src/core/lib/surface/channel_init.h
+++ b/contrib/libs/grpc/src/core/lib/surface/channel_init.h
@@ -22,8 +22,10 @@
#include <grpc/support/port_platform.h>
#include <functional>
+#include <utility>
#include <vector>
+#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/surface/channel_stack_type.h"
#define GRPC_CHANNEL_INIT_BUILTIN_PRIORITY 10000
@@ -35,8 +37,6 @@
namespace grpc_core {
-class ChannelStackBuilder;
-
class ChannelInit {
public:
/// One stage of mutation: call functions against \a builder to influence the
@@ -72,10 +72,8 @@ class ChannelInit {
};
/// Construct a channel stack of some sort: see channel_stack.h for details
- /// \a type is the type of channel stack to create
/// \a builder is the channel stack builder to build into.
- bool CreateStack(ChannelStackBuilder* builder,
- grpc_channel_stack_type type) const;
+ bool CreateStack(ChannelStackBuilder* builder) const;
private:
std::vector<Stage> slots_[GRPC_NUM_CHANNEL_STACK_TYPES];
diff --git a/contrib/libs/grpc/src/core/lib/surface/channel_ping.cc b/contrib/libs/grpc/src/core/lib/surface/channel_ping.cc
index 22c4938662..fec4d7503f 100644
--- a/contrib/libs/grpc/src/core/lib/surface/channel_ping.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/channel_ping.cc
@@ -18,14 +18,20 @@
#include <grpc/support/port_platform.h>
-#include <string.h>
-
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/channel.h"
#include "src/core/lib/surface/completion_queue.h"
+#include "src/core/lib/transport/transport.h"
struct ping_result {
grpc_closure closure;
diff --git a/contrib/libs/grpc/src/core/lib/surface/channel_stack_type.cc b/contrib/libs/grpc/src/core/lib/surface/channel_stack_type.cc
index ecbc3ef6af..767ab4b85d 100644
--- a/contrib/libs/grpc/src/core/lib/surface/channel_stack_type.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/channel_stack_type.cc
@@ -20,8 +20,6 @@
#include "src/core/lib/surface/channel_stack_type.h"
-#include <grpc/support/log.h>
-
bool grpc_channel_stack_type_is_client(grpc_channel_stack_type type) {
switch (type) {
case GRPC_CLIENT_CHANNEL:
diff --git a/contrib/libs/grpc/src/core/lib/surface/channel_stack_type.h b/contrib/libs/grpc/src/core/lib/surface/channel_stack_type.h
index 8a3c08e1cc..67d1fa8619 100644
--- a/contrib/libs/grpc/src/core/lib/surface/channel_stack_type.h
+++ b/contrib/libs/grpc/src/core/lib/surface/channel_stack_type.h
@@ -21,8 +21,6 @@
#include <grpc/support/port_platform.h>
-#include <stdbool.h>
-
typedef enum {
// normal top-half client channel with load-balancing, connection management
GRPC_CLIENT_CHANNEL,
diff --git a/contrib/libs/grpc/src/core/lib/surface/completion_queue.cc b/contrib/libs/grpc/src/core/lib/surface/completion_queue.cc
index 9176048eef..beaa6ecf86 100644
--- a/contrib/libs/grpc/src/core/lib/surface/completion_queue.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/completion_queue.cc
@@ -21,30 +21,39 @@
#include <inttypes.h>
#include <stdio.h>
-#include <string.h>
+#include <algorithm>
#include <atomic>
+#include <new>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
#include <vector>
+#include "y_absl/status/status.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
+#include <grpc/grpc.h>
+#include <grpc/impl/codegen/gpr_types.h>
#include <grpc/support/alloc.h>
#include <grpc/support/atm.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
-#include <grpc/support/time.h>
+#include <grpc/support/sync.h>
#include "src/core/lib/debug/stats.h"
#include "src/core/lib/gpr/spinlock.h"
-#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/tls.h"
+#include "src/core/lib/gprpp/atomic_utils.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/executor.h"
+#include "src/core/lib/iomgr/iomgr.h"
#include "src/core/lib/iomgr/pollset.h"
-#include "src/core/lib/iomgr/timer.h"
-#include "src/core/lib/profiling/timers.h"
#include "src/core/lib/surface/api_trace.h"
-#include "src/core/lib/surface/call.h"
#include "src/core/lib/surface/event_string.h"
grpc_core::TraceFlag grpc_trace_operation_failures(false, "op_failure");
@@ -438,8 +447,6 @@ grpc_core::TraceFlag grpc_cq_pluck_trace(false, "queue_pluck");
static void on_pollset_shutdown_done(void* arg, grpc_error_handle error);
-void grpc_cq_global_init() {}
-
void grpc_completion_queue_thread_local_cache_init(grpc_completion_queue* cq) {
if (g_cached_cq == nullptr) {
g_cached_event = nullptr;
@@ -482,17 +489,9 @@ grpc_cq_completion* CqEventQueue::Pop() {
grpc_cq_completion* c = nullptr;
if (gpr_spinlock_trylock(&queue_lock_)) {
- GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_SUCCESSES();
-
bool is_empty = false;
c = reinterpret_cast<grpc_cq_completion*>(queue_.PopAndCheckEnd(&is_empty));
gpr_spinlock_unlock(&queue_lock_);
-
- if (c == nullptr && !is_empty) {
- GRPC_STATS_INC_CQ_EV_QUEUE_TRANSIENT_POP_FAILURES();
- }
- } else {
- GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_FAILURES();
}
if (c) {
@@ -505,8 +504,6 @@ grpc_cq_completion* CqEventQueue::Pop() {
grpc_completion_queue* grpc_completion_queue_create_internal(
grpc_cq_completion_type completion_type, grpc_cq_polling_type polling_type,
grpc_completion_queue_functor* shutdown_callback) {
- GPR_TIMER_SCOPE("grpc_completion_queue_create_internal", 0);
-
grpc_completion_queue* cq;
GRPC_API_TRACE(
@@ -514,12 +511,23 @@ grpc_completion_queue* grpc_completion_queue_create_internal(
"polling_type=%d)",
2, (completion_type, polling_type));
+ switch (completion_type) {
+ case GRPC_CQ_NEXT:
+ GRPC_STATS_INC_CQ_NEXT_CREATES();
+ break;
+ case GRPC_CQ_PLUCK:
+ GRPC_STATS_INC_CQ_PLUCK_CREATES();
+ break;
+ case GRPC_CQ_CALLBACK:
+ GRPC_STATS_INC_CQ_CALLBACK_CREATES();
+ break;
+ }
+
const cq_vtable* vtable = &g_cq_vtable[completion_type];
const cq_poller_vtable* poller_vtable =
&g_poller_vtable_by_poller_type[polling_type];
grpc_core::ExecCtx exec_ctx;
- GRPC_STATS_INC_CQS_CREATED();
cq = static_cast<grpc_completion_queue*>(
gpr_zalloc(sizeof(grpc_completion_queue) + vtable->data_size +
@@ -683,24 +691,22 @@ static void cq_end_op_for_next(
grpc_completion_queue* cq, void* tag, grpc_error_handle error,
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
grpc_cq_completion* storage, bool /*internal*/) {
- GPR_TIMER_SCOPE("cq_end_op_for_next", 0);
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
(GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
- error != GRPC_ERROR_NONE)) {
+ !GRPC_ERROR_IS_NONE(error))) {
TString errmsg = grpc_error_std_string(error);
GRPC_API_TRACE(
"cq_end_op_for_next(cq=%p, tag=%p, error=%s, "
"done=%p, done_arg=%p, storage=%p)",
6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
- error != GRPC_ERROR_NONE) {
+ !GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_INFO, "Operation failed: tag=%p, error=%s", tag,
errmsg.c_str());
}
}
cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
- int is_success = (error == GRPC_ERROR_NONE);
+ int is_success = (GRPC_ERROR_IS_NONE(error));
storage->tag = tag;
storage->done = done;
@@ -728,7 +734,7 @@ static void cq_end_op_for_next(
cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), nullptr);
gpr_mu_unlock(cq->mu);
- if (kick_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(kick_error)) {
gpr_log(GPR_ERROR, "Kick failed: %s",
grpc_error_std_string(kick_error).c_str());
GRPC_ERROR_UNREF(kick_error);
@@ -761,21 +767,19 @@ static void cq_end_op_for_pluck(
grpc_completion_queue* cq, void* tag, grpc_error_handle error,
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
grpc_cq_completion* storage, bool /*internal*/) {
- GPR_TIMER_SCOPE("cq_end_op_for_pluck", 0);
-
cq_pluck_data* cqd = static_cast<cq_pluck_data*> DATA_FROM_CQ(cq);
- int is_success = (error == GRPC_ERROR_NONE);
+ int is_success = (GRPC_ERROR_IS_NONE(error));
if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
(GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
- error != GRPC_ERROR_NONE)) {
+ !GRPC_ERROR_IS_NONE(error))) {
TString errmsg = grpc_error_std_string(error).c_str();
GRPC_API_TRACE(
"cq_end_op_for_pluck(cq=%p, tag=%p, error=%s, "
"done=%p, done_arg=%p, storage=%p)",
6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
- error != GRPC_ERROR_NONE) {
+ !GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
errmsg.c_str());
}
@@ -811,7 +815,7 @@ static void cq_end_op_for_pluck(
grpc_error_handle kick_error =
cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), pluck_worker);
gpr_mu_unlock(cq->mu);
- if (kick_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(kick_error)) {
gpr_log(GPR_ERROR, "Kick failed: %s",
grpc_error_std_string(kick_error).c_str());
GRPC_ERROR_UNREF(kick_error);
@@ -823,7 +827,7 @@ static void cq_end_op_for_pluck(
static void functor_callback(void* arg, grpc_error_handle error) {
auto* functor = static_cast<grpc_completion_queue_functor*>(arg);
- functor->functor_run(functor, error == GRPC_ERROR_NONE);
+ functor->functor_run(functor, GRPC_ERROR_IS_NONE(error));
}
/* Complete an event on a completion queue of type GRPC_CQ_CALLBACK */
@@ -831,20 +835,18 @@ static void cq_end_op_for_callback(
grpc_completion_queue* cq, void* tag, grpc_error_handle error,
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
grpc_cq_completion* storage, bool internal) {
- GPR_TIMER_SCOPE("cq_end_op_for_callback", 0);
-
cq_callback_data* cqd = static_cast<cq_callback_data*> DATA_FROM_CQ(cq);
if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
(GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
- error != GRPC_ERROR_NONE)) {
+ !GRPC_ERROR_IS_NONE(error))) {
TString errmsg = grpc_error_std_string(error);
GRPC_API_TRACE(
"cq_end_op_for_callback(cq=%p, tag=%p, error=%s, "
"done=%p, done_arg=%p, storage=%p)",
6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
- error != GRPC_ERROR_NONE) {
+ !GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
errmsg.c_str());
}
@@ -871,7 +873,7 @@ static void cq_end_op_for_callback(
grpc_core::ApplicationCallbackExecCtx::Available()) ||
grpc_iomgr_is_any_background_poller_thread()) {
grpc_core::ApplicationCallbackExecCtx::Enqueue(functor,
- (error == GRPC_ERROR_NONE));
+ (GRPC_ERROR_IS_NONE(error)));
GRPC_ERROR_UNREF(error);
return;
}
@@ -928,7 +930,7 @@ class ExecCtxNext : public grpc_core::ExecCtx {
return true;
}
}
- return !a->first_loop && a->deadline < grpc_core::ExecCtx::Get()->Now();
+ return !a->first_loop && a->deadline < grpc_core::Timestamp::Now();
}
private:
@@ -953,8 +955,6 @@ static void dump_pending_tags(grpc_completion_queue* /*cq*/) {}
static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
void* reserved) {
- GPR_TIMER_SCOPE("grpc_completion_queue_next", 0);
-
grpc_event ret;
cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
@@ -1034,7 +1034,7 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
}
if (!is_finished_arg.first_loop &&
- grpc_core::ExecCtx::Get()->Now() >= deadline_millis) {
+ grpc_core::Timestamp::Now() >= deadline_millis) {
ret.type = GRPC_QUEUE_TIMEOUT;
ret.success = 0;
dump_pending_tags(cq);
@@ -1048,7 +1048,7 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
POLLSET_FROM_CQ(cq), nullptr, iteration_deadline);
gpr_mu_unlock(cq->mu);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
gpr_log(GPR_ERROR, "Completion queue next failed: %s",
grpc_error_std_string(err).c_str());
GRPC_ERROR_UNREF(err);
@@ -1189,7 +1189,7 @@ class ExecCtxPluck : public grpc_core::ExecCtx {
}
gpr_mu_unlock(cq->mu);
}
- return !a->first_loop && a->deadline < grpc_core::ExecCtx::Get()->Now();
+ return !a->first_loop && a->deadline < grpc_core::Timestamp::Now();
}
private:
@@ -1198,8 +1198,6 @@ class ExecCtxPluck : public grpc_core::ExecCtx {
static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
gpr_timespec deadline, void* reserved) {
- GPR_TIMER_SCOPE("grpc_completion_queue_pluck", 0);
-
grpc_event ret;
grpc_cq_completion* c;
grpc_cq_completion* prev;
@@ -1282,7 +1280,7 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
break;
}
if (!is_finished_arg.first_loop &&
- grpc_core::ExecCtx::Get()->Now() >= deadline_millis) {
+ grpc_core::Timestamp::Now() >= deadline_millis) {
del_plucker(cq, tag, &worker);
gpr_mu_unlock(cq->mu);
ret.type = GRPC_QUEUE_TIMEOUT;
@@ -1293,7 +1291,7 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
cq->num_polls++;
grpc_error_handle err =
cq->poller_vtable->work(POLLSET_FROM_CQ(cq), &worker, deadline_millis);
- if (err != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(err)) {
del_plucker(cq, tag, &worker);
gpr_mu_unlock(cq->mu);
gpr_log(GPR_ERROR, "Completion queue pluck failed: %s",
@@ -1405,7 +1403,6 @@ static void cq_shutdown_callback(grpc_completion_queue* cq) {
/* Shutdown simply drops a ref that we reserved at creation time; if we drop
to zero here, then enter shutdown mode and wake up any waiters */
void grpc_completion_queue_shutdown(grpc_completion_queue* cq) {
- GPR_TIMER_SCOPE("grpc_completion_queue_shutdown", 0);
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
grpc_core::ExecCtx exec_ctx;
GRPC_API_TRACE("grpc_completion_queue_shutdown(cq=%p)", 1, (cq));
@@ -1413,7 +1410,6 @@ void grpc_completion_queue_shutdown(grpc_completion_queue* cq) {
}
void grpc_completion_queue_destroy(grpc_completion_queue* cq) {
- GPR_TIMER_SCOPE("grpc_completion_queue_destroy", 0);
GRPC_API_TRACE("grpc_completion_queue_destroy(cq=%p)", 1, (cq));
grpc_completion_queue_shutdown(cq);
diff --git a/contrib/libs/grpc/src/core/lib/surface/completion_queue.h b/contrib/libs/grpc/src/core/lib/surface/completion_queue.h
index b2cf19e8c9..52f61e0b74 100644
--- a/contrib/libs/grpc/src/core/lib/surface/completion_queue.h
+++ b/contrib/libs/grpc/src/core/lib/surface/completion_queue.h
@@ -23,11 +23,15 @@
#include <grpc/support/port_platform.h>
-#include <grpc/grpc.h>
+#include <stdint.h>
+
+#include <grpc/impl/codegen/grpc_types.h>
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/manual_constructor.h"
-#include "src/core/lib/iomgr/pollset.h"
+#include "src/core/lib/gprpp/mpscq.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
/* These trace flags default to 1. The corresponding lines are only traced
if grpc_api_trace is also truthy */
@@ -37,7 +41,8 @@ extern grpc_core::DebugOnlyTraceFlag grpc_trace_pending_tags;
extern grpc_core::DebugOnlyTraceFlag grpc_trace_cq_refcount;
typedef struct grpc_cq_completion {
- grpc_core::ManualConstructor<grpc_core::MultiProducerSingleConsumerQueue>
+ grpc_core::ManualConstructor<
+ grpc_core::MultiProducerSingleConsumerQueue::Node>
node;
/** user supplied tag */
@@ -66,9 +71,6 @@ void grpc_cq_internal_unref(grpc_completion_queue* cq);
#define GRPC_CQ_INTERNAL_UNREF(cq, reason) grpc_cq_internal_unref(cq)
#endif
-/* Initializes global variables used by completion queues */
-void grpc_cq_global_init();
-
/* Flag that an operation is beginning: the completion channel will not finish
shutdown until a corrensponding grpc_cq_end_* call is made.
\a tag is currently used only in debug builds. Return true on success, and
diff --git a/contrib/libs/grpc/src/core/lib/surface/completion_queue_factory.cc b/contrib/libs/grpc/src/core/lib/surface/completion_queue_factory.cc
index 80aaba24dc..29542b478b 100644
--- a/contrib/libs/grpc/src/core/lib/surface/completion_queue_factory.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/completion_queue_factory.cc
@@ -20,8 +20,10 @@
#include "src/core/lib/surface/completion_queue_factory.h"
+#include <grpc/grpc.h>
#include <grpc/support/log.h>
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/surface/completion_queue.h"
/*
@@ -59,6 +61,7 @@ const grpc_completion_queue_factory* grpc_completion_queue_factory_lookup(
*/
grpc_completion_queue* grpc_completion_queue_create_for_next(void* reserved) {
+ grpc_core::ExecCtx exec_ctx;
GPR_ASSERT(!reserved);
grpc_completion_queue_attributes attr = {1, GRPC_CQ_NEXT,
GRPC_CQ_DEFAULT_POLLING, nullptr};
@@ -66,6 +69,7 @@ grpc_completion_queue* grpc_completion_queue_create_for_next(void* reserved) {
}
grpc_completion_queue* grpc_completion_queue_create_for_pluck(void* reserved) {
+ grpc_core::ExecCtx exec_ctx;
GPR_ASSERT(!reserved);
grpc_completion_queue_attributes attr = {1, GRPC_CQ_PLUCK,
GRPC_CQ_DEFAULT_POLLING, nullptr};
@@ -74,6 +78,7 @@ grpc_completion_queue* grpc_completion_queue_create_for_pluck(void* reserved) {
grpc_completion_queue* grpc_completion_queue_create_for_callback(
grpc_completion_queue_functor* shutdown_callback, void* reserved) {
+ grpc_core::ExecCtx exec_ctx;
GPR_ASSERT(!reserved);
grpc_completion_queue_attributes attr = {
2, GRPC_CQ_CALLBACK, GRPC_CQ_DEFAULT_POLLING, shutdown_callback};
@@ -83,6 +88,7 @@ grpc_completion_queue* grpc_completion_queue_create_for_callback(
grpc_completion_queue* grpc_completion_queue_create(
const grpc_completion_queue_factory* factory,
const grpc_completion_queue_attributes* attr, void* reserved) {
+ grpc_core::ExecCtx exec_ctx;
GPR_ASSERT(!reserved);
return factory->vtable->create(factory, attr);
}
diff --git a/contrib/libs/grpc/src/core/lib/surface/completion_queue_factory.h b/contrib/libs/grpc/src/core/lib/surface/completion_queue_factory.h
index b1b13722df..e8fb301588 100644
--- a/contrib/libs/grpc/src/core/lib/surface/completion_queue_factory.h
+++ b/contrib/libs/grpc/src/core/lib/surface/completion_queue_factory.h
@@ -21,9 +21,7 @@
#include <grpc/support/port_platform.h>
-#include <grpc/grpc.h>
-
-#include "src/core/lib/surface/completion_queue.h"
+#include <grpc/impl/codegen/grpc_types.h>
typedef struct grpc_completion_queue_factory_vtable {
grpc_completion_queue* (*create)(const grpc_completion_queue_factory*,
diff --git a/contrib/libs/grpc/src/core/lib/surface/event_string.cc b/contrib/libs/grpc/src/core/lib/surface/event_string.cc
index 71db16d45c..2056590097 100644
--- a/contrib/libs/grpc/src/core/lib/surface/event_string.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/event_string.cc
@@ -20,18 +20,12 @@
#include "src/core/lib/surface/event_string.h"
-#include <stdio.h>
-
+#include <algorithm>
#include <vector>
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
-#include <grpc/byte_buffer.h>
-#include <grpc/support/string_util.h>
-
-#include "src/core/lib/gpr/string.h"
-
static void addhdr(grpc_event* ev, std::vector<TString>* buf) {
buf->push_back(y_absl::StrFormat("tag:%p", ev->tag));
}
diff --git a/contrib/libs/grpc/src/core/lib/surface/event_string.h b/contrib/libs/grpc/src/core/lib/surface/event_string.h
index f4ce290874..df03cfb412 100644
--- a/contrib/libs/grpc/src/core/lib/surface/event_string.h
+++ b/contrib/libs/grpc/src/core/lib/surface/event_string.h
@@ -24,7 +24,7 @@
#include <util/generic/string.h>
#include <util/string/cast.h>
-#include <grpc/grpc.h>
+#include <grpc/impl/codegen/grpc_types.h>
/* Returns a string describing an event. Must be later freed with gpr_free() */
TString grpc_event_string(grpc_event* ev);
diff --git a/contrib/libs/grpc/src/core/lib/surface/init.cc b/contrib/libs/grpc/src/core/lib/surface/init.cc
index 858c87cd21..50eedcfc24 100644
--- a/contrib/libs/grpc/src/core/lib/surface/init.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/init.cc
@@ -21,49 +21,41 @@
#include "src/core/lib/surface/init.h"
#include <limits.h>
-#include <memory.h>
-#include <string.h>
+#include <stdint.h>
+
+#include "y_absl/base/thread_annotations.h"
#include <grpc/fork.h>
#include <grpc/grpc.h>
-#include <grpc/support/alloc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/log.h>
+#include <grpc/support/sync.h>
#include <grpc/support/time.h>
-#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/ext/filters/client_channel/backup_poller.h"
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channel_stack_builder.h"
-#include "src/core/lib/channel/channelz_registry.h"
-#include "src/core/lib/channel/connected_channel.h"
#include "src/core/lib/config/core_configuration.h"
-#include "src/core/lib/debug/stats.h"
#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/event_engine/default_event_engine.h"
+#include "src/core/lib/event_engine/forkable.h"
+#include "src/core/lib/event_engine/posix_engine/timer_manager.h"
+#include "src/core/lib/experiments/config.h"
#include "src/core/lib/gprpp/fork.h"
#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/iomgr/call_combiner.h"
-#include "src/core/lib/iomgr/combiner.h"
+#include "src/core/lib/gprpp/thd.h"
#include "src/core/lib/iomgr/exec_ctx.h"
-#include "src/core/lib/iomgr/executor.h"
#include "src/core/lib/iomgr/iomgr.h"
#include "src/core/lib/iomgr/timer_manager.h"
-#include "src/core/lib/profiling/timers.h"
#include "src/core/lib/security/authorization/grpc_server_authz_filter.h"
-#include "src/core/lib/security/context/security_context.h"
#include "src/core/lib/security/credentials/credentials.h"
-#include "src/core/lib/security/credentials/plugin/plugin_credentials.h"
#include "src/core/lib/security/security_connector/security_connector.h"
#include "src/core/lib/security/transport/auth_filters.h"
-#include "src/core/lib/security/transport/secure_endpoint.h"
-#include "src/core/lib/security/transport/security_handshaker.h"
-#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/surface/api_trace.h"
-#include "src/core/lib/surface/builtins.h"
-#include "src/core/lib/surface/call.h"
-#include "src/core/lib/surface/completion_queue.h"
-#include "src/core/lib/surface/lame_client.h"
-#include "src/core/lib/surface/server.h"
-#include "src/core/lib/transport/bdp_estimator.h"
-#include "src/core/lib/transport/connectivity_state.h"
-#include "src/core/lib/transport/transport_impl.h"
+#include "src/core/lib/surface/channel_init.h"
+#include "src/core/lib/surface/channel_stack_type.h"
+#include "src/core/lib/surface/init_internally.h"
/* (generated) built in registry of plugins */
extern void grpc_register_built_in_plugins(void);
@@ -82,41 +74,25 @@ static bool g_shutting_down Y_ABSL_GUARDED_BY(g_init_mu) = false;
static bool maybe_prepend_client_auth_filter(
grpc_core::ChannelStackBuilder* builder) {
- const grpc_channel_args* args = builder->channel_args();
- if (args) {
- for (size_t i = 0; i < args->num_args; i++) {
- if (0 == strcmp(GRPC_ARG_SECURITY_CONNECTOR, args->args[i].key)) {
- builder->PrependFilter(&grpc_client_auth_filter, nullptr);
- break;
- }
- }
+ if (builder->channel_args().Contains(GRPC_ARG_SECURITY_CONNECTOR)) {
+ builder->PrependFilter(&grpc_core::ClientAuthFilter::kFilter);
}
return true;
}
static bool maybe_prepend_server_auth_filter(
grpc_core::ChannelStackBuilder* builder) {
- const grpc_channel_args* args = builder->channel_args();
- if (args) {
- for (size_t i = 0; i < args->num_args; i++) {
- if (0 == strcmp(GRPC_SERVER_CREDENTIALS_ARG, args->args[i].key)) {
- builder->PrependFilter(&grpc_server_auth_filter, nullptr);
- break;
- }
- }
+ if (builder->channel_args().Contains(GRPC_SERVER_CREDENTIALS_ARG)) {
+ builder->PrependFilter(&grpc_server_auth_filter);
}
return true;
}
static bool maybe_prepend_grpc_server_authz_filter(
grpc_core::ChannelStackBuilder* builder) {
- const grpc_channel_args* args = builder->channel_args();
- const auto* provider =
- grpc_channel_args_find_pointer<grpc_authorization_policy_provider>(
- args, GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER);
- if (provider != nullptr) {
- builder->PrependFilter(&grpc_core::GrpcServerAuthzFilter::kFilterVtable,
- nullptr);
+ if (builder->channel_args().GetPointer<grpc_authorization_policy_provider>(
+ GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER) != nullptr) {
+ builder->PrependFilter(&grpc_core::GrpcServerAuthzFilter::kFilterVtable);
}
return true;
}
@@ -142,13 +118,19 @@ void RegisterSecurityFilters(CoreConfiguration::Builder* builder) {
} // namespace grpc_core
static void do_basic_init(void) {
+ grpc_core::InitInternally = grpc_init;
+ grpc_core::ShutdownInternally = grpc_shutdown;
gpr_log_verbosity_init();
g_init_mu = new grpc_core::Mutex();
g_shutting_down_cv = new grpc_core::CondVar();
grpc_register_built_in_plugins();
- grpc_cq_global_init();
- grpc_core::grpc_executor_global_init();
gpr_time_init();
+ grpc_core::PrintExperimentsList();
+ grpc_core::Fork::GlobalInit();
+ grpc_event_engine::experimental::RegisterForkHandlers();
+ grpc_fork_handlers_auto_register();
+ grpc_tracer_init();
+ grpc_client_channel_global_init_backup_polling();
}
typedef struct grpc_plugin {
@@ -177,19 +159,12 @@ void grpc_init(void) {
g_shutting_down = false;
g_shutting_down_cv->SignalAll();
}
- grpc_core::Fork::GlobalInit();
- grpc_fork_handlers_auto_register();
- grpc_stats_init();
- grpc_core::channelz::ChannelzRegistry::Init();
- grpc_core::ApplicationCallbackExecCtx::GlobalInit();
grpc_iomgr_init();
- gpr_timers_global_init();
for (int i = 0; i < g_number_of_plugins; i++) {
if (g_all_of_the_plugins[i].init != nullptr) {
g_all_of_the_plugins[i].init();
}
}
- grpc_tracer_init();
grpc_iomgr_start();
}
@@ -210,14 +185,9 @@ void grpc_shutdown_internal_locked(void)
}
}
}
+ grpc_event_engine::experimental::ResetDefaultEventEngine();
grpc_iomgr_shutdown();
- gpr_timers_global_destroy();
- grpc_tracer_shutdown();
- grpc_core::channelz::ChannelzRegistry::Shutdown();
- grpc_stats_shutdown();
}
- grpc_core::Fork::GlobalShutdown();
- grpc_core::ApplicationCallbackExecCtx::GlobalShutdown();
g_shutting_down = false;
g_shutting_down_cv->SignalAll();
}
@@ -241,6 +211,8 @@ void grpc_shutdown(void) {
grpc_core::ApplicationCallbackExecCtx* acec =
grpc_core::ApplicationCallbackExecCtx::Get();
if (!grpc_iomgr_is_any_background_poller_thread() &&
+ !grpc_event_engine::posix_engine::TimerManager::
+ IsTimerManagerThread() &&
(acec == nullptr ||
(acec->Flags() & GRPC_APP_CALLBACK_EXEC_CTX_FLAG_IS_INTERNAL_THREAD) ==
0)) {
diff --git a/contrib/libs/grpc/src/core/lib/surface/init.h b/contrib/libs/grpc/src/core/lib/surface/init.h
index 092c892eaa..b5ca5e032b 100644
--- a/contrib/libs/grpc/src/core/lib/surface/init.h
+++ b/contrib/libs/grpc/src/core/lib/surface/init.h
@@ -20,14 +20,6 @@
#include <grpc/support/port_platform.h>
-#include <memory>
-
-namespace grpc_event_engine {
-namespace experimental {
-class EventEngine;
-}
-} // namespace grpc_event_engine
-
void grpc_maybe_wait_for_async_shutdown(void);
#endif /* GRPC_CORE_LIB_SURFACE_INIT_H */
diff --git a/contrib/libs/grpc/src/core/ext/filters/max_age/max_age_filter.h b/contrib/libs/grpc/src/core/lib/surface/init_internally.cc
index 989322244f..2dc63c7784 100644
--- a/contrib/libs/grpc/src/core/ext/filters/max_age/max_age_filter.h
+++ b/contrib/libs/grpc/src/core/lib/surface/init_internally.cc
@@ -1,5 +1,4 @@
-//
-// Copyright 2017 gRPC authors.
+// Copyright 2022 gRPC authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -12,15 +11,14 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
-//
-
-#ifndef GRPC_CORE_EXT_FILTERS_MAX_AGE_MAX_AGE_FILTER_H
-#define GRPC_CORE_EXT_FILTERS_MAX_AGE_MAX_AGE_FILTER_H
#include <grpc/support/port_platform.h>
-#include "src/core/lib/channel/channel_stack.h"
+#include "src/core/lib/surface/init_internally.h"
+
+namespace grpc_core {
-extern const grpc_channel_filter grpc_max_age_filter;
+void (*InitInternally)();
+void (*ShutdownInternally)();
-#endif /* GRPC_CORE_EXT_FILTERS_MAX_AGE_MAX_AGE_FILTER_H */
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/surface/init_internally.h b/contrib/libs/grpc/src/core/lib/surface/init_internally.h
new file mode 100644
index 0000000000..551c3ae508
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/surface/init_internally.h
@@ -0,0 +1,28 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_SURFACE_INIT_INTERNALLY_H
+#define GRPC_CORE_LIB_SURFACE_INIT_INTERNALLY_H
+
+namespace grpc_core {
+
+// Function pointers that should be used in preference to grpc_init,
+// grpc_shutdown from within core, but otherwise do the same thing.
+// Avoids a build dependency cycle between grpc and grpc_base (and friends).
+extern void (*InitInternally)();
+extern void (*ShutdownInternally)();
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_SURFACE_INIT_INTERNALLY_H
diff --git a/contrib/libs/grpc/src/core/lib/surface/lame_client.cc b/contrib/libs/grpc/src/core/lib/surface/lame_client.cc
index 35f7eba853..4356a8866f 100644
--- a/contrib/libs/grpc/src/core/lib/surface/lame_client.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/lame_client.cc
@@ -20,69 +20,74 @@
#include "src/core/lib/surface/lame_client.h"
-#include <string.h>
+#include <memory>
+#include <utility>
-#include <atomic>
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/statusor.h"
#include <grpc/grpc.h>
-#include <grpc/support/alloc.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/status.h>
#include <grpc/support/log.h>
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_args_preconditioning.h"
#include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/resource_quota/api.h"
+#include "src/core/lib/channel/promise_based_filter.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/promise/promise.h"
#include "src/core/lib/surface/api_trace.h"
-#include "src/core/lib/surface/call.h"
#include "src/core/lib/surface/channel.h"
+#include "src/core/lib/surface/channel_stack_type.h"
#include "src/core/lib/transport/connectivity_state.h"
+#include "src/core/lib/transport/transport.h"
+
+// Avoid some IWYU confusion:
+// IWYU pragma: no_include "src/core/lib/gprpp/orphanable.h"
#define GRPC_ARG_LAME_FILTER_ERROR "grpc.lame_filter_error"
namespace grpc_core {
-namespace {
+const grpc_channel_filter LameClientFilter::kFilter =
+ MakePromiseBasedFilter<LameClientFilter, FilterEndpoint::kClient,
+ kFilterIsLast>("lame-client");
-struct ChannelData {
- explicit ChannelData(grpc_channel_element_args* args)
- : state_tracker("lame_channel", GRPC_CHANNEL_SHUTDOWN) {
- grpc_error_handle* err = grpc_channel_args_find_pointer<grpc_error_handle>(
- args->channel_args, GRPC_ARG_LAME_FILTER_ERROR);
- if (err != nullptr) error = GRPC_ERROR_REF(*err);
- }
-
- ~ChannelData() { GRPC_ERROR_UNREF(error); }
+y_absl::StatusOr<LameClientFilter> LameClientFilter::Create(
+ const ChannelArgs& args, ChannelFilter::Args) {
+ return LameClientFilter(
+ *args.GetPointer<y_absl::Status>(GRPC_ARG_LAME_FILTER_ERROR));
+}
- grpc_error_handle error = GRPC_ERROR_NONE;
- Mutex mu;
- ConnectivityStateTracker state_tracker;
-};
+LameClientFilter::LameClientFilter(y_absl::Status error)
+ : error_(std::move(error)), state_(y_absl::make_unique<State>()) {}
-struct CallData {
- CallCombiner* call_combiner;
-};
+LameClientFilter::State::State()
+ : state_tracker("lame_client", GRPC_CHANNEL_SHUTDOWN) {}
-void lame_start_transport_stream_op_batch(grpc_call_element* elem,
- grpc_transport_stream_op_batch* op) {
- CallData* calld = static_cast<CallData*>(elem->call_data);
- ChannelData* chand = static_cast<ChannelData*>(elem->channel_data);
- grpc_transport_stream_op_batch_finish_with_failure(
- op, GRPC_ERROR_REF(chand->error), calld->call_combiner);
+ArenaPromise<ServerMetadataHandle> LameClientFilter::MakeCallPromise(
+ CallArgs, NextPromiseFactory) {
+ return Immediate(ServerMetadataHandle(error_));
}
-void lame_get_channel_info(grpc_channel_element* /*elem*/,
- const grpc_channel_info* /*channel_info*/) {}
+bool LameClientFilter::GetChannelInfo(const grpc_channel_info*) { return true; }
-void lame_start_transport_op(grpc_channel_element* elem,
- grpc_transport_op* op) {
- ChannelData* chand = static_cast<ChannelData*>(elem->channel_data);
+bool LameClientFilter::StartTransportOp(grpc_transport_op* op) {
{
- MutexLock lock(&chand->mu);
+ MutexLock lock(&state_->mu);
if (op->start_connectivity_watch != nullptr) {
- chand->state_tracker.AddWatcher(op->start_connectivity_watch_state,
- std::move(op->start_connectivity_watch));
+ state_->state_tracker.AddWatcher(op->start_connectivity_watch_state,
+ std::move(op->start_connectivity_watch));
}
if (op->stop_connectivity_watch != nullptr) {
- chand->state_tracker.RemoveWatcher(op->stop_connectivity_watch);
+ state_->state_tracker.RemoveWatcher(op->stop_connectivity_watch);
}
}
if (op->send_ping.on_initiate != nullptr) {
@@ -97,50 +102,18 @@ void lame_start_transport_op(grpc_channel_element* elem,
if (op->on_consumed != nullptr) {
ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, GRPC_ERROR_NONE);
}
+ return true;
}
-grpc_error_handle lame_init_call_elem(grpc_call_element* elem,
- const grpc_call_element_args* args) {
- CallData* calld = static_cast<CallData*>(elem->call_data);
- calld->call_combiner = args->call_combiner;
- return GRPC_ERROR_NONE;
-}
-
-void lame_destroy_call_elem(grpc_call_element* /*elem*/,
- const grpc_call_final_info* /*final_info*/,
- grpc_closure* then_schedule_closure) {
- ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, GRPC_ERROR_NONE);
-}
-
-grpc_error_handle lame_init_channel_elem(grpc_channel_element* elem,
- grpc_channel_element_args* args) {
- new (elem->channel_data) ChannelData(args);
- return GRPC_ERROR_NONE;
-}
-
-void lame_destroy_channel_elem(grpc_channel_element* elem) {
- ChannelData* chand = static_cast<ChannelData*>(elem->channel_data);
- chand->~ChannelData();
-}
+namespace {
// Channel arg vtable for a grpc_error_handle.
void* ErrorCopy(void* p) {
- grpc_error_handle* new_error = nullptr;
- if (p != nullptr) {
- grpc_error_handle* error = static_cast<grpc_error_handle*>(p);
- new_error = new grpc_error_handle();
- *new_error = GRPC_ERROR_REF(*error);
- }
- return new_error;
-}
-void ErrorDestroy(void* p) {
- if (p != nullptr) {
- grpc_error_handle* error = static_cast<grpc_error_handle*>(p);
- GRPC_ERROR_UNREF(*error);
- delete error;
- }
+ return new y_absl::Status(*static_cast<y_absl::Status*>(p));
}
+void ErrorDestroy(void* p) { delete static_cast<y_absl::Status*>(p); }
int ErrorCompare(void* p, void* q) { return QsortCompare(p, q); }
+
const grpc_arg_pointer_vtable kLameFilterErrorArgVtable = {
ErrorCopy, ErrorDestroy, ErrorCompare};
@@ -154,23 +127,6 @@ grpc_arg MakeLameClientErrorArg(grpc_error_handle* error) {
} // namespace grpc_core
-const grpc_channel_filter grpc_lame_filter = {
- grpc_core::lame_start_transport_stream_op_batch,
- nullptr,
- grpc_core::lame_start_transport_op,
- sizeof(grpc_core::CallData),
- grpc_core::lame_init_call_elem,
- grpc_call_stack_ignore_set_pollset_or_pollset_set,
- grpc_core::lame_destroy_call_elem,
- sizeof(grpc_core::ChannelData),
- grpc_core::lame_init_channel_elem,
- grpc_core::lame_destroy_channel_elem,
- grpc_core::lame_get_channel_info,
- "lame-client",
-};
-
-#define CHANNEL_STACK_FROM_CHANNEL(c) ((grpc_channel_stack*)((c) + 1))
-
grpc_channel* grpc_lame_client_channel_create(const char* target,
grpc_status_code error_code,
const char* error_message) {
@@ -179,21 +135,18 @@ grpc_channel* grpc_lame_client_channel_create(const char* target,
"grpc_lame_client_channel_create(target=%s, error_code=%d, "
"error_message=%s)",
3, (target, (int)error_code, error_message));
- grpc_error_handle error = grpc_error_set_str(
- grpc_error_set_int(
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel"),
- GRPC_ERROR_INT_GRPC_STATUS, error_code),
- GRPC_ERROR_STR_GRPC_MESSAGE, error_message);
- grpc_arg error_arg = grpc_core::MakeLameClientErrorArg(&error);
- grpc_channel_args* args0 =
- grpc_channel_args_copy_and_add(nullptr, &error_arg, 1);
- const grpc_channel_args* args = grpc_core::CoreConfiguration::Get()
- .channel_args_preconditioning()
- .PreconditionChannelArgs(args0);
- grpc_channel_args_destroy(args0);
- grpc_channel* channel = grpc_channel_create_internal(
- target, args, GRPC_CLIENT_LAME_CHANNEL, nullptr, nullptr);
- grpc_channel_args_destroy(args);
- GRPC_ERROR_UNREF(error);
- return channel;
+ if (error_code == GRPC_STATUS_OK) error_code = GRPC_STATUS_UNKNOWN;
+ grpc_core::ChannelArgs args =
+ grpc_core::CoreConfiguration::Get()
+ .channel_args_preconditioning()
+ .PreconditionChannelArgs(nullptr)
+ .Set(GRPC_ARG_LAME_FILTER_ERROR,
+ grpc_core::ChannelArgs::Pointer(
+ new y_absl::Status(static_cast<y_absl::StatusCode>(error_code),
+ error_message),
+ &grpc_core::kLameFilterErrorArgVtable));
+ auto channel = grpc_core::Channel::Create(target, std::move(args),
+ GRPC_CLIENT_LAME_CHANNEL, nullptr);
+ GPR_ASSERT(channel.ok());
+ return channel->release()->c_ptr();
}
diff --git a/contrib/libs/grpc/src/core/lib/surface/lame_client.h b/contrib/libs/grpc/src/core/lib/surface/lame_client.h
index 6c9d1459e2..f90264b75c 100644
--- a/contrib/libs/grpc/src/core/lib/surface/lame_client.h
+++ b/contrib/libs/grpc/src/core/lib/surface/lame_client.h
@@ -21,13 +21,51 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/channel/channel_stack.h"
+#include <memory>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+
+#include <grpc/impl/codegen/grpc_types.h>
+
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
+#include "src/core/lib/channel/promise_based_filter.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/promise/arena_promise.h"
+#include "src/core/lib/transport/connectivity_state.h"
+#include "src/core/lib/transport/transport.h"
namespace grpc_core {
// Does NOT take ownership of error.
grpc_arg MakeLameClientErrorArg(grpc_error_handle* error);
-} // namespace grpc_core
-extern const grpc_channel_filter grpc_lame_filter;
+// This filter becomes the entire channel stack for a channel that fails to be
+// created. Every call returns failure.
+class LameClientFilter : public ChannelFilter {
+ public:
+ static const grpc_channel_filter kFilter;
+
+ static y_absl::StatusOr<LameClientFilter> Create(
+ const ChannelArgs& args, ChannelFilter::Args filter_args);
+ ArenaPromise<ServerMetadataHandle> MakeCallPromise(
+ CallArgs call_args, NextPromiseFactory next_promise_factory) override;
+ bool StartTransportOp(grpc_transport_op*) override;
+ bool GetChannelInfo(const grpc_channel_info*) override;
+
+ private:
+ explicit LameClientFilter(y_absl::Status error);
+
+ y_absl::Status error_;
+ struct State {
+ State();
+ Mutex mu;
+ ConnectivityStateTracker state_tracker Y_ABSL_GUARDED_BY(mu);
+ };
+ std::unique_ptr<State> state_;
+};
+} // namespace grpc_core
#endif /* GRPC_CORE_LIB_SURFACE_LAME_CLIENT_H */
diff --git a/contrib/libs/grpc/src/core/lib/surface/metadata_array.cc b/contrib/libs/grpc/src/core/lib/surface/metadata_array.cc
index 3633382a1c..859373801c 100644
--- a/contrib/libs/grpc/src/core/lib/surface/metadata_array.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/metadata_array.cc
@@ -21,8 +21,10 @@
#include <string.h>
#include <grpc/grpc.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/alloc.h>
+#include "src/core/lib/debug/trace.h"
#include "src/core/lib/surface/api_trace.h"
void grpc_metadata_array_init(grpc_metadata_array* array) {
diff --git a/contrib/libs/grpc/src/core/lib/surface/server.cc b/contrib/libs/grpc/src/core/lib/surface/server.cc
index b4cbb361b0..8d0e2e2f12 100644
--- a/contrib/libs/grpc/src/core/lib/surface/server.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/server.cc
@@ -18,41 +18,47 @@
#include "src/core/lib/surface/server.h"
-#include <limits.h>
+#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
#include <atomic>
-#include <iterator>
#include <list>
+#include <new>
#include <queue>
#include <utility>
#include <vector>
#include "y_absl/memory/memory.h"
+#include "y_absl/status/status.h"
#include "y_absl/types/optional.h"
-#include <grpc/support/alloc.h>
+#include <grpc/byte_buffer.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/status.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
+#include <grpc/support/time.h>
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_args_preconditioning.h"
+#include "src/core/lib/channel/channel_trace.h"
#include "src/core/lib/channel/channelz.h"
-#include "src/core/lib/channel/connected_channel.h"
-#include "src/core/lib/debug/stats.h"
-#include "src/core/lib/gpr/spinlock.h"
-#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/gpr/useful.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/mpscq.h"
-#include "src/core/lib/iomgr/executor.h"
-#include "src/core/lib/iomgr/iomgr.h"
-#include "src/core/lib/resource_quota/api.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/pollset_set.h"
#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/call.h"
#include "src/core/lib/surface/channel.h"
+#include "src/core/lib/surface/channel_stack_type.h"
#include "src/core/lib/surface/completion_queue.h"
-#include "src/core/lib/surface/init.h"
+#include "src/core/lib/transport/connectivity_state.h"
+#include "src/core/lib/transport/error_utils.h"
namespace grpc_core {
@@ -73,7 +79,6 @@ struct Server::RequestedCall {
cq_bound_to_call(call_cq),
call(call_arg),
initial_metadata(initial_md) {
- details->reserved = nullptr;
data.batch.details = details;
}
@@ -269,14 +274,12 @@ class Server::RealRequestMatcher : public RequestMatcherInterface {
RequestedCall* rc =
reinterpret_cast<RequestedCall*>(requests_per_cq_[cq_idx].TryPop());
if (rc != nullptr) {
- GRPC_STATS_INC_SERVER_CQS_CHECKED(i);
calld->SetState(CallData::CallState::ACTIVATED);
calld->Publish(cq_idx, rc);
return;
}
}
// No cq to take the request found; queue it on the slow list.
- GRPC_STATS_INC_SERVER_SLOWPATH_REQUESTS_QUEUED();
// We need to ensure that all the queues are empty. We do this under
// the server mu_call_ lock to ensure that if something is added to
// an empty request queue, it will block until the call is actually
@@ -300,7 +303,6 @@ class Server::RealRequestMatcher : public RequestMatcherInterface {
return;
}
}
- GRPC_STATS_INC_SERVER_CQS_CHECKED(loop_count + requests_per_cq_.size());
calld->SetState(CallData::CallState::ACTIVATED);
calld->Publish(cq_idx, rc);
}
@@ -439,16 +441,16 @@ class ChannelBroadcaster {
// when the actual setup and shutdown broadcast take place.
// Copies over the channels from the locked server.
- void FillChannelsLocked(std::vector<grpc_channel*> channels) {
+ void FillChannelsLocked(std::vector<RefCountedPtr<Channel>> channels) {
GPR_DEBUG_ASSERT(channels_.empty());
channels_ = std::move(channels);
}
// Broadcasts a shutdown on each channel.
void BroadcastShutdown(bool send_goaway, grpc_error_handle force_disconnect) {
- for (grpc_channel* channel : channels_) {
- SendShutdown(channel, send_goaway, GRPC_ERROR_REF(force_disconnect));
- GRPC_CHANNEL_INTERNAL_UNREF(channel, "broadcast");
+ for (const RefCountedPtr<Channel>& channel : channels_) {
+ SendShutdown(channel->c_ptr(), send_goaway,
+ GRPC_ERROR_REF(force_disconnect));
}
channels_.clear(); // just for safety against double broadcast
GRPC_ERROR_UNREF(force_disconnect);
@@ -479,7 +481,6 @@ class ChannelBroadcaster {
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Server shutdown"),
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_OK)
: GRPC_ERROR_NONE;
- op->set_accept_stream = true;
sc->slice = grpc_slice_from_copied_string("Server shutdown");
op->disconnect_with_error = send_disconnect;
elem =
@@ -487,7 +488,7 @@ class ChannelBroadcaster {
elem->filter->start_transport_op(elem, op);
}
- std::vector<grpc_channel*> channels_;
+ std::vector<RefCountedPtr<Channel>> channels_;
};
} // namespace
@@ -506,6 +507,7 @@ const grpc_channel_filter Server::kServerTopFilter = {
Server::CallData::DestroyCallElement,
sizeof(Server::ChannelData),
Server::ChannelData::InitChannelElement,
+ grpc_channel_stack_no_post_init,
Server::ChannelData::DestroyChannelElement,
grpc_channel_next_get_info,
"server",
@@ -514,13 +516,13 @@ const grpc_channel_filter Server::kServerTopFilter = {
namespace {
RefCountedPtr<channelz::ServerNode> CreateChannelzNode(
- const grpc_channel_args* args) {
+ const ChannelArgs& args) {
RefCountedPtr<channelz::ServerNode> channelz_node;
- if (grpc_channel_args_find_bool(args, GRPC_ARG_ENABLE_CHANNELZ,
- GRPC_ENABLE_CHANNELZ_DEFAULT)) {
- size_t channel_tracer_max_memory = grpc_channel_args_find_integer(
- args, GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE,
- {GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT, 0, INT_MAX});
+ if (args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
+ .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
+ size_t channel_tracer_max_memory = std::max(
+ 0, args.GetInt(GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE)
+ .value_or(GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT));
channelz_node =
MakeRefCounted<channelz::ServerNode>(channel_tracer_max_memory);
channelz_node->AddTraceEvent(
@@ -532,12 +534,10 @@ RefCountedPtr<channelz::ServerNode> CreateChannelzNode(
} // namespace
-Server::Server(const grpc_channel_args* args)
- : channel_args_(grpc_channel_args_copy(args)),
- channelz_node_(CreateChannelzNode(args)) {}
+Server::Server(const ChannelArgs& args)
+ : channel_args_(args), channelz_node_(CreateChannelzNode(args)) {}
Server::~Server() {
- grpc_channel_args_destroy(channel_args_);
// Remove the cq pollsets from the config_fetcher.
if (started_ && config_fetcher_ != nullptr &&
config_fetcher_->interested_parties() != nullptr) {
@@ -599,18 +599,16 @@ void Server::Start() {
grpc_error_handle Server::SetupTransport(
grpc_transport* transport, grpc_pollset* accepting_pollset,
- const grpc_channel_args* args,
+ const ChannelArgs& args,
const RefCountedPtr<channelz::SocketNode>& socket_node) {
// Create channel.
- grpc_error_handle error = GRPC_ERROR_NONE;
- grpc_channel* channel = grpc_channel_create_internal(
- nullptr, args, GRPC_SERVER_CHANNEL, transport, &error);
- if (channel == nullptr) {
- return error;
+ y_absl::StatusOr<RefCountedPtr<Channel>> channel =
+ Channel::Create(nullptr, args, GRPC_SERVER_CHANNEL, transport);
+ if (!channel.ok()) {
+ return absl_status_to_grpc_error(channel.status());
}
ChannelData* chand = static_cast<ChannelData*>(
- grpc_channel_stack_element(grpc_channel_get_channel_stack(channel), 0)
- ->channel_data);
+ grpc_channel_stack_element((*channel)->channel_stack(), 0)->channel_data);
// Set up CQs.
size_t cq_idx;
for (cq_idx = 0; cq_idx < cqs_.size(); cq_idx++) {
@@ -627,7 +625,8 @@ grpc_error_handle Server::SetupTransport(
channelz_node_->AddChildSocket(socket_node);
}
// Initialize chand.
- chand->InitTransport(Ref(), channel, cq_idx, transport, channelz_socket_uuid);
+ chand->InitTransport(Ref(), std::move(*channel), cq_idx, transport,
+ channelz_socket_uuid);
return GRPC_ERROR_NONE;
}
@@ -685,7 +684,7 @@ Server::RegisteredMethod* Server::RegisterMethod(
return nullptr;
}
}
- if ((flags & ~GRPC_INITIAL_METADATA_USED_MASK) != 0) {
+ if (flags != 0) {
gpr_log(GPR_ERROR, "grpc_server_register_method invalid flags 0x%08x",
flags);
return nullptr;
@@ -703,7 +702,7 @@ void Server::FailCall(size_t cq_idx, RequestedCall* rc,
grpc_error_handle error) {
*rc->call = nullptr;
rc->initial_metadata->count = 0;
- GPR_ASSERT(error != GRPC_ERROR_NONE);
+ GPR_ASSERT(!GRPC_ERROR_IS_NONE(error));
grpc_cq_end_op(cqs_[cq_idx], rc->tag, error, DoneRequestEvent, rc,
&rc->completion);
}
@@ -752,12 +751,11 @@ void Server::KillPendingWorkLocked(grpc_error_handle error) {
GRPC_ERROR_UNREF(error);
}
-std::vector<grpc_channel*> Server::GetChannelsLocked() const {
- std::vector<grpc_channel*> channels;
+std::vector<RefCountedPtr<Channel>> Server::GetChannelsLocked() const {
+ std::vector<RefCountedPtr<Channel>> channels;
channels.reserve(channels_.size());
for (const ChannelData* chand : channels_) {
- channels.push_back(chand->channel());
- GRPC_CHANNEL_INTERNAL_REF(chand->channel(), "broadcast");
+ channels.push_back(chand->channel()->Ref());
}
return channels;
}
@@ -792,7 +790,7 @@ void DonePublishedShutdown(void* /*done_arg*/, grpc_cq_completion* storage) {
// connection is NOT closed until the server is done with all those calls.
// -- Once there are no more calls in progress, the channel is closed.
void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) {
- y_absl::Notification* await_requests = nullptr;
+ Notification* await_requests = nullptr;
ChannelBroadcaster broadcaster;
{
// Wait for startup to be finished. Locks mu_global.
@@ -826,8 +824,13 @@ void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) {
if (await_requests != nullptr) {
await_requests->WaitForNotification();
}
- // Shutdown listeners.
+ StopListening();
+ broadcaster.BroadcastShutdown(/*send_goaway=*/true, GRPC_ERROR_NONE);
+}
+
+void Server::StopListening() {
for (auto& listener : listeners_) {
+ if (listener.listener == nullptr) continue;
channelz::ListenSocketNode* channelz_listen_socket_node =
listener.listener->channelz_listen_socket_node();
if (channelz_node_ != nullptr && channelz_listen_socket_node != nullptr) {
@@ -839,7 +842,6 @@ void Server::ShutdownAndNotify(grpc_completion_queue* cq, void* tag) {
listener.listener->SetOnDestroyDone(&listener.destroy_done);
listener.listener.reset();
}
- broadcaster.BroadcastShutdown(/*send_goaway=*/true, GRPC_ERROR_NONE);
}
void Server::CancelAllCalls() {
@@ -853,6 +855,15 @@ void Server::CancelAllCalls() {
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Cancelling all calls"));
}
+void Server::SendGoaways() {
+ ChannelBroadcaster broadcaster;
+ {
+ MutexLock lock(&mu_global_);
+ broadcaster.FillChannelsLocked(GetChannelsLocked());
+ }
+ broadcaster.BroadcastShutdown(/*send_goaway=*/true, GRPC_ERROR_NONE);
+}
+
void Server::Orphan() {
{
MutexLock lock(&mu_global_);
@@ -957,13 +968,8 @@ grpc_call_error Server::RequestRegisteredCall(
class Server::ChannelData::ConnectivityWatcher
: public AsyncConnectivityStateWatcherInterface {
public:
- explicit ConnectivityWatcher(ChannelData* chand) : chand_(chand) {
- GRPC_CHANNEL_INTERNAL_REF(chand_->channel_, "connectivity");
- }
-
- ~ConnectivityWatcher() override {
- GRPC_CHANNEL_INTERNAL_UNREF(chand_->channel_, "connectivity");
- }
+ explicit ConnectivityWatcher(ChannelData* chand)
+ : chand_(chand), channel_(chand_->channel_->Ref()) {}
private:
void OnConnectivityStateChange(grpc_connectivity_state new_state,
@@ -975,7 +981,8 @@ class Server::ChannelData::ConnectivityWatcher
chand_->Destroy();
}
- ChannelData* chand_;
+ ChannelData* const chand_;
+ const RefCountedPtr<Channel> channel_;
};
//
@@ -1000,7 +1007,8 @@ Server::ChannelData::~ChannelData() {
}
void Server::ChannelData::InitTransport(RefCountedPtr<Server> server,
- grpc_channel* channel, size_t cq_idx,
+ RefCountedPtr<Channel> channel,
+ size_t cq_idx,
grpc_transport* transport,
intptr_t channelz_socket_uuid) {
server_ = std::move(server);
@@ -1062,7 +1070,7 @@ void Server::ChannelData::InitTransport(RefCountedPtr<Server> server,
}
Server::ChannelRegisteredMethod* Server::ChannelData::GetRegisteredMethod(
- const grpc_slice& host, const grpc_slice& path, bool is_idempotent) {
+ const grpc_slice& host, const grpc_slice& path) {
if (registered_methods_ == nullptr) return nullptr;
/* TODO(ctiller): unify these two searches */
/* check for an exact match with host */
@@ -1075,10 +1083,6 @@ Server::ChannelRegisteredMethod* Server::ChannelData::GetRegisteredMethod(
if (!rm->has_host) continue;
if (rm->host != host) continue;
if (rm->method != path) continue;
- if ((rm->flags & GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST) &&
- !is_idempotent) {
- continue;
- }
return rm;
}
/* check for a wildcard method definition (no host set) */
@@ -1089,10 +1093,6 @@ Server::ChannelRegisteredMethod* Server::ChannelData::GetRegisteredMethod(
if (rm->server_registered_method == nullptr) break;
if (rm->has_host) continue;
if (rm->method != path) continue;
- if ((rm->flags & GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST) &&
- !is_idempotent) {
- continue;
- }
return rm;
}
return nullptr;
@@ -1116,7 +1116,7 @@ void Server::ChannelData::AcceptStream(void* arg, grpc_transport* /*transport*/,
grpc_call_element* elem =
grpc_call_stack_element(grpc_call_get_call_stack(call), 0);
auto* calld = static_cast<Server::CallData*>(elem->call_data);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
GRPC_ERROR_UNREF(error);
calld->FailCallCreation();
return;
@@ -1128,8 +1128,10 @@ void Server::ChannelData::FinishDestroy(void* arg,
grpc_error_handle /*error*/) {
auto* chand = static_cast<Server::ChannelData*>(arg);
Server* server = chand->server_.get();
- GRPC_CHANNEL_INTERNAL_UNREF(chand->channel_, "server");
+ auto* channel_stack = chand->channel_->channel_stack();
+ chand->channel_.reset();
server->Unref();
+ GRPC_CHANNEL_STACK_UNREF(channel_stack, "Server::ChannelData::Destroy");
}
void Server::ChannelData::Destroy() {
@@ -1139,6 +1141,9 @@ void Server::ChannelData::Destroy() {
list_position_.reset();
server_->Ref().release();
server_->MaybeFinishShutdown();
+ // Unreffed by FinishDestroy
+ GRPC_CHANNEL_STACK_REF(channel_->channel_stack(),
+ "Server::ChannelData::Destroy");
GRPC_CLOSURE_INIT(&finish_destroy_channel_closure_, FinishDestroy, this,
grpc_schedule_on_exec_ctx);
if (GRPC_TRACE_FLAG_ENABLED(grpc_server_channel_trace)) {
@@ -1147,9 +1152,8 @@ void Server::ChannelData::Destroy() {
grpc_transport_op* op =
grpc_make_transport_op(&finish_destroy_channel_closure_);
op->set_accept_stream = true;
- grpc_channel_next_op(
- grpc_channel_stack_element(grpc_channel_get_channel_stack(channel_), 0),
- op);
+ grpc_channel_next_op(grpc_channel_stack_element(channel_->channel_stack(), 0),
+ op);
}
grpc_error_handle Server::ChannelData::InitChannelElement(
@@ -1241,7 +1245,6 @@ void Server::CallData::Publish(size_t cq_idx, RequestedCall* rc) {
grpc_slice_ref_internal(path_->c_slice());
rc->data.batch.details->deadline =
deadline_.as_timespec(GPR_CLOCK_MONOTONIC);
- rc->data.batch.details->flags = recv_initial_metadata_flags_;
break;
case RequestedCall::Type::REGISTERED_CALL:
*rc->data.registered.deadline =
@@ -1264,7 +1267,7 @@ void Server::CallData::PublishNewRpc(void* arg, grpc_error_handle error) {
auto* chand = static_cast<Server::ChannelData*>(call_elem->channel_data);
RequestMatcherInterface* rm = calld->matcher_;
Server* server = rm->server();
- if (error != GRPC_ERROR_NONE || server->ShutdownCalled()) {
+ if (!GRPC_ERROR_IS_NONE(error) || server->ShutdownCalled()) {
calld->state_.store(CallState::ZOMBIED, std::memory_order_relaxed);
calld->KillZombie();
return;
@@ -1299,9 +1302,7 @@ void Server::CallData::StartNewRpc(grpc_call_element* elem) {
GRPC_SRM_PAYLOAD_NONE;
if (path_.has_value() && host_.has_value()) {
ChannelRegisteredMethod* rm =
- chand->GetRegisteredMethod(host_->c_slice(), path_->c_slice(),
- (recv_initial_metadata_flags_ &
- GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST));
+ chand->GetRegisteredMethod(host_->c_slice(), path_->c_slice());
if (rm != nullptr) {
matcher_ = rm->server_registered_method->matcher.get();
payload_handling = rm->server_registered_method->payload_handling;
@@ -1330,7 +1331,7 @@ void Server::CallData::RecvInitialMetadataBatchComplete(
void* arg, grpc_error_handle error) {
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
auto* calld = static_cast<Server::CallData*>(elem->call_data);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_DEBUG, "Failed call creation: %s",
grpc_error_std_string(error).c_str());
calld->FailCallCreation();
@@ -1342,15 +1343,12 @@ void Server::CallData::RecvInitialMetadataBatchComplete(
void Server::CallData::StartTransportStreamOpBatchImpl(
grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
if (batch->recv_initial_metadata) {
- GPR_ASSERT(batch->payload->recv_initial_metadata.recv_flags == nullptr);
recv_initial_metadata_ =
batch->payload->recv_initial_metadata.recv_initial_metadata;
original_recv_initial_metadata_ready_ =
batch->payload->recv_initial_metadata.recv_initial_metadata_ready;
batch->payload->recv_initial_metadata.recv_initial_metadata_ready =
&recv_initial_metadata_ready_;
- batch->payload->recv_initial_metadata.recv_flags =
- &recv_initial_metadata_flags_;
}
if (batch->recv_trailing_metadata) {
original_recv_trailing_metadata_ready_ =
@@ -1365,9 +1363,11 @@ void Server::CallData::RecvInitialMetadataReady(void* arg,
grpc_error_handle error) {
grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
CallData* calld = static_cast<CallData*>(elem->call_data);
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
calld->path_ = calld->recv_initial_metadata_->Take(HttpPathMetadata());
- calld->host_ = calld->recv_initial_metadata_->Take(HttpAuthorityMetadata());
+ auto* host =
+ calld->recv_initial_metadata_->get_pointer(HttpAuthorityMetadata());
+ if (host != nullptr) calld->host_.emplace(host->Ref());
} else {
(void)GRPC_ERROR_REF(error);
}
@@ -1447,11 +1447,10 @@ void Server::CallData::StartTransportStreamOpBatch(
grpc_server* grpc_server_create(const grpc_channel_args* args, void* reserved) {
grpc_core::ExecCtx exec_ctx;
GRPC_API_TRACE("grpc_server_create(%p, %p)", 2, (args, reserved));
- const grpc_channel_args* new_args = grpc_core::CoreConfiguration::Get()
- .channel_args_preconditioning()
- .PreconditionChannelArgs(args);
- grpc_core::Server* server = new grpc_core::Server(new_args);
- grpc_channel_args_destroy(new_args);
+ grpc_core::Server* server =
+ new grpc_core::Server(grpc_core::CoreConfiguration::Get()
+ .channel_args_preconditioning()
+ .PreconditionChannelArgs(args));
return server->c_ptr();
}
@@ -1522,7 +1521,6 @@ grpc_call_error grpc_server_request_call(
grpc_completion_queue* cq_for_notification, void* tag) {
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
grpc_core::ExecCtx exec_ctx;
- GRPC_STATS_INC_SERVER_REQUESTED_CALLS();
GRPC_API_TRACE(
"grpc_server_request_call("
"server=%p, call=%p, details=%p, initial_metadata=%p, "
@@ -1543,7 +1541,6 @@ grpc_call_error grpc_server_request_registered_call(
grpc_completion_queue* cq_for_notification, void* tag_new) {
grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
grpc_core::ExecCtx exec_ctx;
- GRPC_STATS_INC_SERVER_REQUESTED_CALLS();
auto* rm =
static_cast<grpc_core::Server::RegisteredMethod*>(registered_method);
GRPC_API_TRACE(
diff --git a/contrib/libs/grpc/src/core/lib/surface/server.h b/contrib/libs/grpc/src/core/lib/surface/server.h
index ab6346b8d0..e5fa050c86 100644
--- a/contrib/libs/grpc/src/core/lib/surface/server.h
+++ b/contrib/libs/grpc/src/core/lib/surface/server.h
@@ -19,26 +19,54 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+#include <stdint.h>
+
#include <atomic>
+#include <functional>
#include <list>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
#include <vector>
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/memory/memory.h"
#include "y_absl/status/statusor.h"
-#include "y_absl/synchronization/notification.h"
#include "y_absl/types/optional.h"
#include <grpc/grpc.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
+#include <grpc/support/log.h>
#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/channel/channelz.h"
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/cpp_impl_of.h"
#include "src/core/lib/gprpp/dual_ref_counted.h"
-#include "src/core/lib/iomgr/resolve_address.h"
-#include "src/core/lib/resource_quota/memory_quota.h"
+#include "src/core/lib/gprpp/notification.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/surface/channel.h"
#include "src/core/lib/surface/completion_queue.h"
+#include "src/core/lib/transport/metadata_batch.h"
#include "src/core/lib/transport/transport.h"
+#include "src/core/lib/transport/transport_fwd.h"
+
+struct grpc_server_config_fetcher;
namespace grpc_core {
@@ -96,12 +124,12 @@ class Server : public InternallyRefCounted<Server>,
virtual void SetOnDestroyDone(grpc_closure* on_destroy_done) = 0;
};
- explicit Server(const grpc_channel_args* args);
+ explicit Server(const ChannelArgs& args);
~Server() override;
void Orphan() Y_ABSL_LOCKS_EXCLUDED(mu_global_) override;
- const grpc_channel_args* channel_args() const { return channel_args_; }
+ const ChannelArgs& channel_args() const { return channel_args_; }
channelz::ServerNode* channelz_node() const { return channelz_node_.get(); }
// Do not call this before Start(). Returns the pollsets. The
@@ -133,7 +161,7 @@ class Server : public InternallyRefCounted<Server>,
// Takes ownership of a ref on resource_user from the caller.
grpc_error_handle SetupTransport(
grpc_transport* transport, grpc_pollset* accepting_pollset,
- const grpc_channel_args* args,
+ const ChannelArgs& args,
const RefCountedPtr<channelz::SocketNode>& socket_node);
void RegisterCompletionQueue(grpc_completion_queue* cq);
@@ -167,8 +195,12 @@ class Server : public InternallyRefCounted<Server>,
void ShutdownAndNotify(grpc_completion_queue* cq, void* tag)
Y_ABSL_LOCKS_EXCLUDED(mu_global_, mu_call_);
+ void StopListening();
+
void CancelAllCalls() Y_ABSL_LOCKS_EXCLUDED(mu_global_);
+ void SendGoaways() Y_ABSL_LOCKS_EXCLUDED(mu_global_, mu_call_);
+
private:
struct RequestedCall;
@@ -191,17 +223,17 @@ class Server : public InternallyRefCounted<Server>,
ChannelData() = default;
~ChannelData();
- void InitTransport(RefCountedPtr<Server> server, grpc_channel* channel,
- size_t cq_idx, grpc_transport* transport,
+ void InitTransport(RefCountedPtr<Server> server,
+ RefCountedPtr<Channel> channel, size_t cq_idx,
+ grpc_transport* transport,
intptr_t channelz_socket_uuid);
RefCountedPtr<Server> server() const { return server_; }
- grpc_channel* channel() const { return channel_; }
+ Channel* channel() const { return channel_.get(); }
size_t cq_idx() const { return cq_idx_; }
ChannelRegisteredMethod* GetRegisteredMethod(const grpc_slice& host,
- const grpc_slice& path,
- bool is_idempotent);
+ const grpc_slice& path);
// Filter vtable functions.
static grpc_error_handle InitChannelElement(
@@ -219,7 +251,7 @@ class Server : public InternallyRefCounted<Server>,
static void FinishDestroy(void* arg, grpc_error_handle error);
RefCountedPtr<Server> server_;
- grpc_channel* channel_;
+ RefCountedPtr<Channel> channel_;
// The index into Server::cqs_ of the CQ used as a starting point for
// where to publish new incoming calls.
size_t cq_idx_;
@@ -309,7 +341,6 @@ class Server : public InternallyRefCounted<Server>,
grpc_closure recv_initial_metadata_batch_complete_;
grpc_metadata_batch* recv_initial_metadata_ = nullptr;
- uint32_t recv_initial_metadata_flags_ = 0;
grpc_closure recv_initial_metadata_ready_;
grpc_closure* original_recv_initial_metadata_ready_;
grpc_error_handle recv_initial_metadata_error_ = GRPC_ERROR_NONE;
@@ -364,7 +395,7 @@ class Server : public InternallyRefCounted<Server>,
size_t* cq_idx, grpc_completion_queue* cq_for_notification, void* tag,
grpc_byte_buffer** optional_payload, RegisteredMethod* rm);
- std::vector<grpc_channel*> GetChannelsLocked() const;
+ std::vector<RefCountedPtr<Channel>> GetChannelsLocked() const;
// Take a shutdown ref for a request (increment by 2) and return if shutdown
// has not been called.
@@ -389,14 +420,14 @@ class Server : public InternallyRefCounted<Server>,
}
// Returns a notification pointer to wait on if there are requests in-flight,
// or null.
- y_absl::Notification* ShutdownUnrefOnShutdownCall()
+ Notification* ShutdownUnrefOnShutdownCall()
Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_global_) GRPC_MUST_USE_RESULT {
if (shutdown_refs_.fetch_sub(1, std::memory_order_acq_rel) == 1) {
// There is no request in-flight.
MaybeFinishShutdown();
return nullptr;
}
- requests_complete_ = y_absl::make_unique<y_absl::Notification>();
+ requests_complete_ = y_absl::make_unique<Notification>();
return requests_complete_.get();
}
@@ -411,7 +442,7 @@ class Server : public InternallyRefCounted<Server>,
return shutdown_refs_.load(std::memory_order_acquire) == 0;
}
- grpc_channel_args* const channel_args_;
+ ChannelArgs const channel_args_;
RefCountedPtr<channelz::ServerNode> channelz_node_;
std::unique_ptr<grpc_server_config_fetcher> config_fetcher_;
@@ -448,8 +479,7 @@ class Server : public InternallyRefCounted<Server>,
std::atomic<int> shutdown_refs_{1};
bool shutdown_published_ Y_ABSL_GUARDED_BY(mu_global_) = false;
std::vector<ShutdownTag> shutdown_tags_ Y_ABSL_GUARDED_BY(mu_global_);
- std::unique_ptr<y_absl::Notification> requests_complete_
- Y_ABSL_GUARDED_BY(mu_global_);
+ std::unique_ptr<Notification> requests_complete_ Y_ABSL_GUARDED_BY(mu_global_);
std::list<ChannelData*> channels_;
@@ -468,8 +498,9 @@ struct grpc_server_config_fetcher {
: public grpc_core::DualRefCounted<ConnectionManager> {
public:
// Ownership of \a args is transfered.
- virtual y_absl::StatusOr<grpc_channel_args*> UpdateChannelArgsForConnection(
- grpc_channel_args* args, grpc_endpoint* tcp) = 0;
+ virtual y_absl::StatusOr<grpc_core::ChannelArgs>
+ UpdateChannelArgsForConnection(const grpc_core::ChannelArgs& args,
+ grpc_endpoint* tcp) = 0;
};
class WatcherInterface {
diff --git a/contrib/libs/grpc/src/core/lib/surface/validate_metadata.cc b/contrib/libs/grpc/src/core/lib/surface/validate_metadata.cc
index 1f737b170f..b5c71a53cc 100644
--- a/contrib/libs/grpc/src/core/lib/surface/validate_metadata.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/validate_metadata.cc
@@ -20,25 +20,14 @@
#include "src/core/lib/surface/validate_metadata.h"
-#include <stdlib.h>
-#include <string.h>
+#include "y_absl/strings/string_view.h"
#include <grpc/grpc.h>
-#include <grpc/support/alloc.h>
+#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gprpp/bitset.h"
#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/iomgr/error.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
-
-#if __cplusplus > 201103l
-#define GRPC_VALIDATE_METADATA_CONSTEXPR_FN constexpr
-#define GRPC_VALIDATE_METADATA_CONSTEXPR_VALUE constexpr
-#else
-#define GRPC_VALIDATE_METADATA_CONSTEXPR_FN
-#define GRPC_VALIDATE_METADATA_CONSTEXPR_VALUE const
-#endif
static grpc_error_handle conforms_to(const grpc_slice& slice,
const grpc_core::BitSet<256>& legal_bits,
@@ -63,7 +52,7 @@ static grpc_error_handle conforms_to(const grpc_slice& slice,
}
static int error2int(grpc_error_handle error) {
- int r = (error == GRPC_ERROR_NONE);
+ int r = (GRPC_ERROR_IS_NONE(error));
GRPC_ERROR_UNREF(error);
return r;
}
@@ -71,7 +60,7 @@ static int error2int(grpc_error_handle error) {
namespace {
class LegalHeaderKeyBits : public grpc_core::BitSet<256> {
public:
- GRPC_VALIDATE_METADATA_CONSTEXPR_FN LegalHeaderKeyBits() {
+ constexpr LegalHeaderKeyBits() {
for (int i = 'a'; i <= 'z'; i++) set(i);
for (int i = '0'; i <= '9'; i++) set(i);
set('-');
@@ -79,8 +68,7 @@ class LegalHeaderKeyBits : public grpc_core::BitSet<256> {
set('.');
}
};
-GRPC_VALIDATE_METADATA_CONSTEXPR_VALUE LegalHeaderKeyBits
- g_legal_header_key_bits;
+constexpr LegalHeaderKeyBits g_legal_header_key_bits;
} // namespace
grpc_error_handle grpc_validate_header_key_is_legal(const grpc_slice& slice) {
@@ -106,14 +94,13 @@ int grpc_header_key_is_legal(grpc_slice slice) {
namespace {
class LegalHeaderNonBinValueBits : public grpc_core::BitSet<256> {
public:
- GRPC_VALIDATE_METADATA_CONSTEXPR_FN LegalHeaderNonBinValueBits() {
+ constexpr LegalHeaderNonBinValueBits() {
for (int i = 32; i <= 126; i++) {
set(i);
}
}
};
-GRPC_VALIDATE_METADATA_CONSTEXPR_VALUE LegalHeaderNonBinValueBits
- g_legal_header_non_bin_value_bits;
+constexpr LegalHeaderNonBinValueBits g_legal_header_non_bin_value_bits;
} // namespace
grpc_error_handle grpc_validate_header_nonbin_value_is_legal(
diff --git a/contrib/libs/grpc/src/core/lib/surface/validate_metadata.h b/contrib/libs/grpc/src/core/lib/surface/validate_metadata.h
index daaaa1a378..642023dcd2 100644
--- a/contrib/libs/grpc/src/core/lib/surface/validate_metadata.h
+++ b/contrib/libs/grpc/src/core/lib/surface/validate_metadata.h
@@ -21,9 +21,12 @@
#include <grpc/support/port_platform.h>
+#include <stdint.h>
+
#include <cstring>
#include <grpc/slice.h>
+#include <grpc/support/log.h>
#include "src/core/lib/iomgr/error.h"
diff --git a/contrib/libs/grpc/src/core/lib/surface/version.cc b/contrib/libs/grpc/src/core/lib/surface/version.cc
index 5317af18ff..d4525c55dc 100644
--- a/contrib/libs/grpc/src/core/lib/surface/version.cc
+++ b/contrib/libs/grpc/src/core/lib/surface/version.cc
@@ -23,6 +23,6 @@
#include <grpc/grpc.h>
-const char* grpc_version_string(void) { return "23.0.0"; }
+const char* grpc_version_string(void) { return "28.0.0"; }
-const char* grpc_g_stands_for(void) { return "gravity"; }
+const char* grpc_g_stands_for(void) { return "galley"; }
diff --git a/contrib/libs/grpc/src/core/lib/transport/bdp_estimator.cc b/contrib/libs/grpc/src/core/lib/transport/bdp_estimator.cc
index de4f329265..cc3ede26e2 100644
--- a/contrib/libs/grpc/src/core/lib/transport/bdp_estimator.cc
+++ b/contrib/libs/grpc/src/core/lib/transport/bdp_estimator.cc
@@ -23,7 +23,7 @@
#include <inttypes.h>
#include <stdlib.h>
-#include "src/core/lib/gpr/useful.h"
+#include <algorithm>
grpc_core::TraceFlag grpc_bdp_estimator_trace(false, "bdp_estimator");
@@ -80,7 +80,7 @@ Timestamp BdpEstimator::CompletePing() {
}
ping_state_ = PingState::UNSCHEDULED;
accumulator_ = 0;
- return ExecCtx::Get()->Now() + inter_ping_delay_;
+ return Timestamp::Now() + inter_ping_delay_;
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/transport/bdp_estimator.h b/contrib/libs/grpc/src/core/lib/transport/bdp_estimator.h
index 5e4a61a875..dc08387acb 100644
--- a/contrib/libs/grpc/src/core/lib/transport/bdp_estimator.h
+++ b/contrib/libs/grpc/src/core/lib/transport/bdp_estimator.h
@@ -22,14 +22,13 @@
#include <grpc/support/port_platform.h>
#include <inttypes.h>
-#include <stdbool.h>
-#include <stdint.h>
+#include <grpc/impl/codegen/gpr_types.h>
#include <grpc/support/log.h>
#include <grpc/support/time.h>
#include "src/core/lib/debug/trace.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/gprpp/time.h"
extern grpc_core::TraceFlag grpc_bdp_estimator_trace;
diff --git a/contrib/libs/grpc/src/core/lib/transport/byte_stream.cc b/contrib/libs/grpc/src/core/lib/transport/byte_stream.cc
deleted file mode 100644
index 8d3b22bd26..0000000000
--- a/contrib/libs/grpc/src/core/lib/transport/byte_stream.cc
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- *
- * Copyright 2015 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <grpc/support/port_platform.h>
-
-#include "src/core/lib/transport/byte_stream.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <grpc/support/log.h>
-
-#include "src/core/lib/gprpp/memory.h"
-#include "src/core/lib/slice/slice_internal.h"
-
-namespace grpc_core {
-
-//
-// SliceBufferByteStream
-//
-
-SliceBufferByteStream::SliceBufferByteStream(grpc_slice_buffer* slice_buffer,
- uint32_t flags)
- : ByteStream(static_cast<uint32_t>(slice_buffer->length), flags) {
- GPR_ASSERT(slice_buffer->length <= UINT32_MAX);
- grpc_slice_buffer_init(&backing_buffer_);
- grpc_slice_buffer_swap(slice_buffer, &backing_buffer_);
- if (backing_buffer_.count == 0) {
- grpc_slice_buffer_add_indexed(&backing_buffer_, grpc_empty_slice());
- GPR_ASSERT(backing_buffer_.count > 0);
- }
-}
-
-SliceBufferByteStream::~SliceBufferByteStream() {}
-
-void SliceBufferByteStream::Orphan() {
- grpc_slice_buffer_destroy_internal(&backing_buffer_);
- GRPC_ERROR_UNREF(shutdown_error_);
- // Note: We do not actually delete the object here, since
- // SliceBufferByteStream is usually allocated as part of a larger
- // object and has an OrphanablePtr of itself passed down through the
- // filter stack.
-}
-
-bool SliceBufferByteStream::Next(size_t /*max_size_hint*/,
- grpc_closure* /*on_complete*/) {
- GPR_DEBUG_ASSERT(backing_buffer_.count > 0);
- return true;
-}
-
-grpc_error_handle SliceBufferByteStream::Pull(grpc_slice* slice) {
- if (GPR_UNLIKELY(shutdown_error_ != GRPC_ERROR_NONE)) {
- return GRPC_ERROR_REF(shutdown_error_);
- }
- *slice = grpc_slice_buffer_take_first(&backing_buffer_);
- return GRPC_ERROR_NONE;
-}
-
-void SliceBufferByteStream::Shutdown(grpc_error_handle error) {
- GRPC_ERROR_UNREF(shutdown_error_);
- shutdown_error_ = error;
-}
-
-//
-// ByteStreamCache
-//
-
-ByteStreamCache::ByteStreamCache(OrphanablePtr<ByteStream> underlying_stream)
- : underlying_stream_(std::move(underlying_stream)),
- length_(underlying_stream_->length()),
- flags_(underlying_stream_->flags()) {
- grpc_slice_buffer_init(&cache_buffer_);
-}
-
-ByteStreamCache::~ByteStreamCache() { Destroy(); }
-
-void ByteStreamCache::Destroy() {
- underlying_stream_.reset();
- if (cache_buffer_.length > 0) {
- grpc_slice_buffer_destroy_internal(&cache_buffer_);
- }
-}
-
-//
-// ByteStreamCache::CachingByteStream
-//
-
-ByteStreamCache::CachingByteStream::CachingByteStream(ByteStreamCache* cache)
- : ByteStream(cache->length_, cache->flags_), cache_(cache) {}
-
-ByteStreamCache::CachingByteStream::~CachingByteStream() {}
-
-void ByteStreamCache::CachingByteStream::Orphan() {
- GRPC_ERROR_UNREF(shutdown_error_);
- // Note: We do not actually delete the object here, since
- // CachingByteStream is usually allocated as part of a larger
- // object and has an OrphanablePtr of itself passed down through the
- // filter stack.
-}
-
-bool ByteStreamCache::CachingByteStream::Next(size_t max_size_hint,
- grpc_closure* on_complete) {
- if (shutdown_error_ != GRPC_ERROR_NONE) return true;
- if (cursor_ < cache_->cache_buffer_.count) return true;
- GPR_ASSERT(cache_->underlying_stream_ != nullptr);
- return cache_->underlying_stream_->Next(max_size_hint, on_complete);
-}
-
-grpc_error_handle ByteStreamCache::CachingByteStream::Pull(grpc_slice* slice) {
- if (shutdown_error_ != GRPC_ERROR_NONE) {
- return GRPC_ERROR_REF(shutdown_error_);
- }
- if (cursor_ < cache_->cache_buffer_.count) {
- *slice = grpc_slice_ref_internal(cache_->cache_buffer_.slices[cursor_]);
- ++cursor_;
- offset_ += GRPC_SLICE_LENGTH(*slice);
- return GRPC_ERROR_NONE;
- }
- GPR_ASSERT(cache_->underlying_stream_ != nullptr);
- grpc_error_handle error = cache_->underlying_stream_->Pull(slice);
- if (error == GRPC_ERROR_NONE) {
- grpc_slice_buffer_add(&cache_->cache_buffer_,
- grpc_slice_ref_internal(*slice));
- ++cursor_;
- offset_ += GRPC_SLICE_LENGTH(*slice);
- // Orphan the underlying stream if it's been drained.
- if (offset_ == cache_->underlying_stream_->length()) {
- cache_->underlying_stream_.reset();
- }
- }
- return error;
-}
-
-void ByteStreamCache::CachingByteStream::Shutdown(grpc_error_handle error) {
- GRPC_ERROR_UNREF(shutdown_error_);
- shutdown_error_ = GRPC_ERROR_REF(error);
- if (cache_->underlying_stream_ != nullptr) {
- cache_->underlying_stream_->Shutdown(error);
- }
-}
-
-void ByteStreamCache::CachingByteStream::Reset() {
- cursor_ = 0;
- offset_ = 0;
-}
-
-} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/transport/byte_stream.h b/contrib/libs/grpc/src/core/lib/transport/byte_stream.h
deleted file mode 100644
index 28dd443a8e..0000000000
--- a/contrib/libs/grpc/src/core/lib/transport/byte_stream.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- *
- * Copyright 2015 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#ifndef GRPC_CORE_LIB_TRANSPORT_BYTE_STREAM_H
-#define GRPC_CORE_LIB_TRANSPORT_BYTE_STREAM_H
-
-#include <grpc/support/port_platform.h>
-
-#include <grpc/slice_buffer.h>
-
-#include "src/core/lib/gprpp/orphanable.h"
-#include "src/core/lib/iomgr/closure.h"
-
-/** Internal bit flag for grpc_begin_message's \a flags signaling the use of
- * compression for the message. (Does not apply for stream compression.) */
-#define GRPC_WRITE_INTERNAL_COMPRESS (0x80000000u)
-/** Internal bit flag for determining whether the message was compressed and had
- * to be decompressed by the message_decompress filter. (Does not apply for
- * stream compression.) */
-#define GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED (0x40000000u)
-/** Mask of all valid internal flags. */
-#define GRPC_WRITE_INTERNAL_USED_MASK \
- (GRPC_WRITE_INTERNAL_COMPRESS | GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED)
-
-namespace grpc_core {
-
-class ByteStream : public Orphanable {
- public:
- ~ByteStream() override {}
-
- // Returns true if the bytes are available immediately (in which case
- // on_complete will not be called), or false if the bytes will be available
- // asynchronously (in which case on_complete will be called when they
- // are available). Should not be called if there is no data left on the
- // stream.
- //
- // max_size_hint can be set as a hint as to the maximum number
- // of bytes that would be acceptable to read.
- virtual bool Next(size_t max_size_hint, grpc_closure* on_complete) = 0;
-
- // Returns the next slice in the byte stream when it is available, as
- // indicated by Next().
- //
- // Once a slice is returned into *slice, it is owned by the caller.
- virtual grpc_error_handle Pull(grpc_slice* slice) = 0;
-
- // Shuts down the byte stream.
- //
- // If there is a pending call to on_complete from Next(), it will be
- // invoked with the error passed to Shutdown().
- //
- // The next call to Pull() (if any) will return the error passed to
- // Shutdown().
- virtual void Shutdown(grpc_error_handle error) = 0;
-
- uint32_t length() const { return length_; }
- uint32_t flags() const { return flags_; }
-
- void set_flags(uint32_t flags) { flags_ = flags; }
-
- protected:
- ByteStream(uint32_t length, uint32_t flags)
- : length_(length), flags_(flags) {}
-
- private:
- const uint32_t length_;
- uint32_t flags_;
-};
-
-//
-// SliceBufferByteStream
-//
-// A ByteStream that wraps a slice buffer.
-//
-
-class SliceBufferByteStream : public ByteStream {
- public:
- // Removes all slices in slice_buffer, leaving it empty.
- SliceBufferByteStream(grpc_slice_buffer* slice_buffer, uint32_t flags);
-
- ~SliceBufferByteStream() override;
-
- void Orphan() override;
-
- bool Next(size_t max_size_hint, grpc_closure* on_complete) override;
- grpc_error_handle Pull(grpc_slice* slice) override;
- void Shutdown(grpc_error_handle error) override;
-
- private:
- grpc_error_handle shutdown_error_ = GRPC_ERROR_NONE;
- grpc_slice_buffer backing_buffer_;
-};
-
-//
-// CachingByteStream
-//
-// A ByteStream that that wraps an underlying byte stream but caches
-// the resulting slices in a slice buffer. If an initial attempt fails
-// without fully draining the underlying stream, a new caching stream
-// can be created from the same underlying cache, in which case it will
-// return whatever is in the backing buffer before continuing to read the
-// underlying stream.
-//
-// NOTE: No synchronization is done, so it is not safe to have multiple
-// CachingByteStreams simultaneously drawing from the same underlying
-// ByteStreamCache at the same time.
-//
-
-class ByteStreamCache {
- public:
- class CachingByteStream : public ByteStream {
- public:
- explicit CachingByteStream(ByteStreamCache* cache);
-
- ~CachingByteStream() override;
-
- void Orphan() override;
-
- bool Next(size_t max_size_hint, grpc_closure* on_complete) override;
- grpc_error_handle Pull(grpc_slice* slice) override;
- void Shutdown(grpc_error_handle error) override;
-
- // Resets the byte stream to the start of the underlying stream.
- void Reset();
-
- private:
- ByteStreamCache* cache_;
- size_t cursor_ = 0;
- size_t offset_ = 0;
- grpc_error_handle shutdown_error_ = GRPC_ERROR_NONE;
- };
-
- explicit ByteStreamCache(OrphanablePtr<ByteStream> underlying_stream);
-
- ~ByteStreamCache();
-
- // Must not be destroyed while still in use by a CachingByteStream.
- void Destroy();
-
- grpc_slice_buffer* cache_buffer() { return &cache_buffer_; }
-
- private:
- OrphanablePtr<ByteStream> underlying_stream_;
- uint32_t length_;
- uint32_t flags_;
- grpc_slice_buffer cache_buffer_;
-};
-
-} // namespace grpc_core
-
-#endif /* GRPC_CORE_LIB_TRANSPORT_BYTE_STREAM_H */
diff --git a/contrib/libs/grpc/src/core/lib/transport/connectivity_state.cc b/contrib/libs/grpc/src/core/lib/transport/connectivity_state.cc
index 97c7d775e1..38bc71c224 100644
--- a/contrib/libs/grpc/src/core/lib/transport/connectivity_state.cc
+++ b/contrib/libs/grpc/src/core/lib/transport/connectivity_state.cc
@@ -20,13 +20,15 @@
#include "src/core/lib/transport/connectivity_state.h"
-#include <string.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
-#include "src/core/lib/iomgr/combiner.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/exec_ctx.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/transport/connectivity_state.h b/contrib/libs/grpc/src/core/lib/transport/connectivity_state.h
index 835504a921..df08e643d2 100644
--- a/contrib/libs/grpc/src/core/lib/transport/connectivity_state.h
+++ b/contrib/libs/grpc/src/core/lib/transport/connectivity_state.h
@@ -24,16 +24,15 @@
#include <atomic>
#include <map>
#include <memory>
+#include <utility>
#include "y_absl/status/status.h"
-#include <grpc/grpc.h>
+#include <grpc/impl/codegen/connectivity_state.h>
#include "src/core/lib/debug/trace.h"
#include "src/core/lib/gprpp/orphanable.h"
-#include "src/core/lib/iomgr/closure.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
-#include "src/core/lib/iomgr/work_serializer.h"
+#include "src/core/lib/gprpp/work_serializer.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/transport/error_utils.cc b/contrib/libs/grpc/src/core/lib/transport/error_utils.cc
index 0eb1a44d54..5b498f9c1e 100644
--- a/contrib/libs/grpc/src/core/lib/transport/error_utils.cc
+++ b/contrib/libs/grpc/src/core/lib/transport/error_utils.cc
@@ -20,11 +20,15 @@
#include "src/core/lib/transport/error_utils.h"
+#include <stdint.h>
+
+#include <vector>
+
+#include "y_absl/strings/string_view.h"
+
#include <grpc/support/string_util.h>
#include "src/core/lib/gprpp/status_helper.h"
-#include "src/core/lib/iomgr/error_internal.h"
-#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/transport/status_conversion.h"
static grpc_error_handle recursively_find_error_with_field(
@@ -34,25 +38,11 @@ static grpc_error_handle recursively_find_error_with_field(
if (grpc_error_get_int(error, which, &unused)) {
return error;
}
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
std::vector<y_absl::Status> children = grpc_core::StatusGetChildren(error);
for (const y_absl::Status& child : children) {
grpc_error_handle result = recursively_find_error_with_field(child, which);
- if (result != GRPC_ERROR_NONE) return result;
- }
-#else
- if (grpc_error_is_special(error)) return GRPC_ERROR_NONE;
- // Otherwise, search through its children.
- uint8_t slot = error->first_err;
- while (slot != UINT8_MAX) {
- grpc_linked_error* lerr =
- reinterpret_cast<grpc_linked_error*>(error->arena + slot);
- grpc_error_handle result =
- recursively_find_error_with_field(lerr->err, which);
- if (result) return result;
- slot = lerr->next;
+ if (!GRPC_ERROR_IS_NONE(result)) return result;
}
-#endif
return GRPC_ERROR_NONE;
}
@@ -62,7 +52,7 @@ void grpc_error_get_status(grpc_error_handle error,
grpc_http2_error_code* http_error,
const char** error_string) {
// Fast path: We expect no error.
- if (GPR_LIKELY(error == GRPC_ERROR_NONE)) {
+ if (GPR_LIKELY(GRPC_ERROR_IS_NONE(error))) {
if (code != nullptr) *code = GRPC_STATUS_OK;
if (message != nullptr) {
// Normally, we call grpc_error_get_str(
@@ -85,7 +75,7 @@ void grpc_error_get_status(grpc_error_handle error,
// until we find the first one that has a status code.
grpc_error_handle found_error =
recursively_find_error_with_field(error, GRPC_ERROR_INT_GRPC_STATUS);
- if (found_error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(found_error)) {
/// If no grpc-status exists, retry through the tree to find a http2 error
/// code
found_error =
@@ -94,7 +84,7 @@ void grpc_error_get_status(grpc_error_handle error,
// If we found an error with a status code above, use that; otherwise,
// fall back to using the parent error.
- if (found_error == GRPC_ERROR_NONE) found_error = error;
+ if (GRPC_ERROR_IS_NONE(found_error)) found_error = error;
grpc_status_code status = GRPC_STATUS_UNKNOWN;
intptr_t integer;
@@ -105,9 +95,7 @@ void grpc_error_get_status(grpc_error_handle error,
status = grpc_http2_error_to_grpc_status(
static_cast<grpc_http2_error_code>(integer), deadline);
} else {
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
status = static_cast<grpc_status_code>(found_error.code());
-#endif
}
if (code != nullptr) *code = status;
@@ -123,8 +111,8 @@ void grpc_error_get_status(grpc_error_handle error,
*http_error =
grpc_status_to_http2_error(static_cast<grpc_status_code>(integer));
} else {
- *http_error = found_error == GRPC_ERROR_NONE ? GRPC_HTTP2_NO_ERROR
- : GRPC_HTTP2_INTERNAL_ERROR;
+ *http_error = GRPC_ERROR_IS_NONE(found_error) ? GRPC_HTTP2_NO_ERROR
+ : GRPC_HTTP2_INTERNAL_ERROR;
}
}
@@ -135,11 +123,7 @@ void grpc_error_get_status(grpc_error_handle error,
message)) {
if (!grpc_error_get_str(found_error, GRPC_ERROR_STR_DESCRIPTION,
message)) {
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
*message = grpc_error_std_string(error);
-#else
- *message = "unknown error";
-#endif
}
}
}
@@ -171,23 +155,11 @@ bool grpc_error_has_clear_grpc_status(grpc_error_handle error) {
if (grpc_error_get_int(error, GRPC_ERROR_INT_GRPC_STATUS, &unused)) {
return true;
}
-#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
std::vector<y_absl::Status> children = grpc_core::StatusGetChildren(error);
for (const y_absl::Status& child : children) {
if (grpc_error_has_clear_grpc_status(child)) {
return true;
}
}
-#else
- uint8_t slot = error->first_err;
- while (slot != UINT8_MAX) {
- grpc_linked_error* lerr =
- reinterpret_cast<grpc_linked_error*>(error->arena + slot);
- if (grpc_error_has_clear_grpc_status(lerr->err)) {
- return true;
- }
- slot = lerr->next;
- }
-#endif
return false;
}
diff --git a/contrib/libs/grpc/src/core/lib/transport/error_utils.h b/contrib/libs/grpc/src/core/lib/transport/error_utils.h
index 506b33d158..a4d252e56e 100644
--- a/contrib/libs/grpc/src/core/lib/transport/error_utils.h
+++ b/contrib/libs/grpc/src/core/lib/transport/error_utils.h
@@ -21,10 +21,15 @@
#include <grpc/support/port_platform.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
#include "y_absl/status/status.h"
+#include <grpc/status.h>
+
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/iomgr/error.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/transport/http2_errors.h"
/// A utility function to get the status code and message to be returned
diff --git a/contrib/libs/grpc/src/core/lib/channel/handshaker.cc b/contrib/libs/grpc/src/core/lib/transport/handshaker.cc
index a54d2fd42e..7e08e277ee 100644
--- a/contrib/libs/grpc/src/core/lib/channel/handshaker.cc
+++ b/contrib/libs/grpc/src/core/lib/transport/handshaker.cc
@@ -18,19 +18,25 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/channel/handshaker.h"
+#include "src/core/lib/transport/handshaker.h"
-#include <string.h>
+#include <inttypes.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
#include "y_absl/strings/str_format.h"
-#include <grpc/impl/codegen/slice.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice_buffer.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/timer.h"
#include "src/core/lib/slice/slice_internal.h"
@@ -41,14 +47,12 @@ TraceFlag grpc_handshaker_trace(false, "handshaker");
namespace {
TString HandshakerArgsString(HandshakerArgs* args) {
- size_t num_args = args->args != nullptr ? args->args->num_args : 0;
size_t read_buffer_length =
args->read_buffer != nullptr ? args->read_buffer->length : 0;
return y_absl::StrFormat(
- "{endpoint=%p, args=%p {size=%" PRIuPTR
- ": %s}, read_buffer=%p (length=%" PRIuPTR "), exit_early=%d}",
- args->endpoint, args->args, num_args,
- grpc_channel_args_string(args->args), args->read_buffer,
+ "{endpoint=%p, args=%s, read_buffer=%p (length=%" PRIuPTR
+ "), exit_early=%d}",
+ args->endpoint, args->args.ToString(), args->read_buffer,
read_buffer_length, args->exit_early);
}
@@ -96,9 +100,9 @@ bool HandshakeManager::CallNextHandshakerLocked(grpc_error_handle error) {
// If we got an error or we've been shut down or we're exiting early or
// we've finished the last handshaker, invoke the on_handshake_done
// callback. Otherwise, call the next handshaker.
- if (error != GRPC_ERROR_NONE || is_shutdown_ || args_.exit_early ||
+ if (!GRPC_ERROR_IS_NONE(error) || is_shutdown_ || args_.exit_early ||
index_ == handshakers_.size()) {
- if (error == GRPC_ERROR_NONE && is_shutdown_) {
+ if (GRPC_ERROR_IS_NONE(error) && is_shutdown_) {
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("handshaker shutdown");
// It is possible that the endpoint has already been destroyed by
// a shutdown call while this callback was sitting on the ExecCtx
@@ -111,8 +115,7 @@ bool HandshakeManager::CallNextHandshakerLocked(grpc_error_handle error) {
grpc_endpoint_shutdown(args_.endpoint, GRPC_ERROR_REF(error));
grpc_endpoint_destroy(args_.endpoint);
args_.endpoint = nullptr;
- grpc_channel_args_destroy(args_.args);
- args_.args = nullptr;
+ args_.args = ChannelArgs();
grpc_slice_buffer_destroy_internal(args_.read_buffer);
gpr_free(args_.read_buffer);
args_.read_buffer = nullptr;
@@ -161,14 +164,14 @@ void HandshakeManager::CallNextHandshakerFn(void* arg,
void HandshakeManager::OnTimeoutFn(void* arg, grpc_error_handle error) {
auto* mgr = static_cast<HandshakeManager*>(arg);
- if (error == GRPC_ERROR_NONE) { // Timer fired, rather than being cancelled
+ if (GRPC_ERROR_IS_NONE(error)) { // Timer fired, rather than being cancelled
mgr->Shutdown(GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshake timed out"));
}
mgr->Unref();
}
void HandshakeManager::DoHandshake(grpc_endpoint* endpoint,
- const grpc_channel_args* channel_args,
+ const ChannelArgs& channel_args,
Timestamp deadline,
grpc_tcp_server_acceptor* acceptor,
grpc_iomgr_cb_func on_handshake_done,
@@ -180,7 +183,8 @@ void HandshakeManager::DoHandshake(grpc_endpoint* endpoint,
// Construct handshaker args. These will be passed through all
// handshakers and eventually be freed by the on_handshake_done callback.
args_.endpoint = endpoint;
- args_.args = grpc_channel_args_copy(channel_args);
+ args_.deadline = deadline;
+ args_.args = channel_args;
args_.user_data = user_data;
args_.read_buffer =
static_cast<grpc_slice_buffer*>(gpr_malloc(sizeof(*args_.read_buffer)));
diff --git a/contrib/libs/grpc/src/core/lib/channel/handshaker.h b/contrib/libs/grpc/src/core/lib/transport/handshaker.h
index 7b54b0a828..13cd6a4f6b 100644
--- a/contrib/libs/grpc/src/core/lib/channel/handshaker.h
+++ b/contrib/libs/grpc/src/core/lib/transport/handshaker.h
@@ -16,22 +16,25 @@
*
*/
-#ifndef GRPC_CORE_LIB_CHANNEL_HANDSHAKER_H
-#define GRPC_CORE_LIB_CHANNEL_HANDSHAKER_H
+#ifndef GRPC_CORE_LIB_TRANSPORT_HANDSHAKER_H
+#define GRPC_CORE_LIB_TRANSPORT_HANDSHAKER_H
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
#include "y_absl/container/inlined_vector.h"
-#include <grpc/impl/codegen/grpc_types.h>
-#include <grpc/support/string_util.h>
+#include <grpc/slice.h>
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/endpoint.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/tcp_server.h"
#include "src/core/lib/iomgr/timer.h"
@@ -60,7 +63,7 @@ namespace grpc_core {
/// which the callback takes ownership of.
struct HandshakerArgs {
grpc_endpoint* endpoint = nullptr;
- grpc_channel_args* args = nullptr;
+ ChannelArgs args;
grpc_slice_buffer* read_buffer = nullptr;
// A handshaker may set this to true before invoking on_handshake_done
// to indicate that subsequent handshakers should be skipped.
@@ -68,6 +71,10 @@ struct HandshakerArgs {
// User data passed through the handshake manager. Not used by
// individual handshakers.
void* user_data = nullptr;
+ // Deadline associated with the handshake.
+ // TODO(anramach): Move this out of handshake args after event engine
+ // is the default.
+ Timestamp deadline;
};
///
@@ -113,9 +120,8 @@ class HandshakeManager : public RefCounted<HandshakeManager> {
/// GRPC_ERROR_NONE, then handshaking failed and the handshaker has done
/// the necessary clean-up. Otherwise, the callback takes ownership of
/// the arguments.
- void DoHandshake(grpc_endpoint* endpoint,
- const grpc_channel_args* channel_args, Timestamp deadline,
- grpc_tcp_server_acceptor* acceptor,
+ void DoHandshake(grpc_endpoint* endpoint, const ChannelArgs& channel_args,
+ Timestamp deadline, grpc_tcp_server_acceptor* acceptor,
grpc_iomgr_cb_func on_handshake_done, void* user_data);
private:
@@ -158,4 +164,4 @@ typedef grpc_core::Handshaker grpc_handshaker;
void grpc_handshake_manager_add(grpc_handshake_manager* mgr,
grpc_handshaker* handshaker);
-#endif /* GRPC_CORE_LIB_CHANNEL_HANDSHAKER_H */
+#endif /* GRPC_CORE_LIB_TRANSPORT_HANDSHAKER_H */
diff --git a/contrib/libs/grpc/src/core/lib/channel/handshaker_factory.h b/contrib/libs/grpc/src/core/lib/transport/handshaker_factory.h
index 0d55a6d79a..da74403702 100644
--- a/contrib/libs/grpc/src/core/lib/channel/handshaker_factory.h
+++ b/contrib/libs/grpc/src/core/lib/transport/handshaker_factory.h
@@ -16,22 +16,20 @@
*
*/
-#ifndef GRPC_CORE_LIB_CHANNEL_HANDSHAKER_FACTORY_H
-#define GRPC_CORE_LIB_CHANNEL_HANDSHAKER_FACTORY_H
+#ifndef GRPC_CORE_LIB_TRANSPORT_HANDSHAKER_FACTORY_H
+#define GRPC_CORE_LIB_TRANSPORT_HANDSHAKER_FACTORY_H
#include <grpc/support/port_platform.h>
-#include <grpc/impl/codegen/grpc_types.h>
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
// A handshaker factory is used to create handshakers.
-// TODO(ctiller): grpc_pollset_set and HandshakeManager are forward declared in
-// this file. grpc_pollset_set ought to be eliminated when EventEngine lands IO
-// support. At the same time, we ought to be able to include handshake_manager.h
-// here and eliminate the HandshakeManager dependency - we cannot right now
-// because HandshakeManager names too many iomgr types.
-
-typedef struct grpc_pollset_set grpc_pollset_set;
+// TODO(ctiller): HandshakeManager is forward declared in this file. When
+// EventEngine lands IO support we ought to be able to include
+// handshake_manager.h here and eliminate the HandshakeManager dependency - we
+// cannot right now because HandshakeManager names too many iomgr types.
namespace grpc_core {
@@ -39,7 +37,7 @@ class HandshakeManager;
class HandshakerFactory {
public:
- virtual void AddHandshakers(const grpc_channel_args* args,
+ virtual void AddHandshakers(const ChannelArgs& args,
grpc_pollset_set* interested_parties,
HandshakeManager* handshake_mgr) = 0;
virtual ~HandshakerFactory() = default;
@@ -47,4 +45,4 @@ class HandshakerFactory {
} // namespace grpc_core
-#endif /* GRPC_CORE_LIB_CHANNEL_HANDSHAKER_FACTORY_H */
+#endif /* GRPC_CORE_LIB_TRANSPORT_HANDSHAKER_FACTORY_H */
diff --git a/contrib/libs/grpc/src/core/lib/channel/handshaker_registry.cc b/contrib/libs/grpc/src/core/lib/transport/handshaker_registry.cc
index d9d7bc9db6..fe74e9ed46 100644
--- a/contrib/libs/grpc/src/core/lib/channel/handshaker_registry.cc
+++ b/contrib/libs/grpc/src/core/lib/transport/handshaker_registry.cc
@@ -18,7 +18,12 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/channel/handshaker_registry.h"
+#include "src/core/lib/transport/handshaker_registry.h"
+
+#include <stddef.h>
+
+#include <algorithm>
+#include <utility>
namespace grpc_core {
@@ -39,7 +44,7 @@ HandshakerRegistry HandshakerRegistry::Builder::Build() {
}
void HandshakerRegistry::AddHandshakers(HandshakerType handshaker_type,
- const grpc_channel_args* args,
+ const ChannelArgs& args,
grpc_pollset_set* interested_parties,
HandshakeManager* handshake_mgr) const {
for (const auto& factory : factories_[handshaker_type]) {
diff --git a/contrib/libs/grpc/src/core/lib/channel/handshaker_registry.h b/contrib/libs/grpc/src/core/lib/transport/handshaker_registry.h
index ccd61412c5..2a86d49732 100644
--- a/contrib/libs/grpc/src/core/lib/channel/handshaker_registry.h
+++ b/contrib/libs/grpc/src/core/lib/transport/handshaker_registry.h
@@ -16,17 +16,17 @@
*
*/
-#ifndef GRPC_CORE_LIB_CHANNEL_HANDSHAKER_REGISTRY_H
-#define GRPC_CORE_LIB_CHANNEL_HANDSHAKER_REGISTRY_H
+#ifndef GRPC_CORE_LIB_TRANSPORT_HANDSHAKER_REGISTRY_H
+#define GRPC_CORE_LIB_TRANSPORT_HANDSHAKER_REGISTRY_H
#include <grpc/support/port_platform.h>
#include <memory>
#include <vector>
-#include <grpc/impl/codegen/grpc_types.h>
-
-#include "src/core/lib/channel/handshaker_factory.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/transport/handshaker_factory.h"
namespace grpc_core {
@@ -54,8 +54,7 @@ class HandshakerRegistry {
factories_[NUM_HANDSHAKER_TYPES];
};
- void AddHandshakers(HandshakerType handshaker_type,
- const grpc_channel_args* args,
+ void AddHandshakers(HandshakerType handshaker_type, const ChannelArgs& args,
grpc_pollset_set* interested_parties,
HandshakeManager* handshake_mgr) const;
@@ -68,4 +67,4 @@ class HandshakerRegistry {
} // namespace grpc_core
-#endif /* GRPC_CORE_LIB_CHANNEL_HANDSHAKER_REGISTRY_H */
+#endif /* GRPC_CORE_LIB_TRANSPORT_HANDSHAKER_REGISTRY_H */
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/http_connect_handshaker.cc b/contrib/libs/grpc/src/core/lib/transport/http_connect_handshaker.cc
index b01712ed1a..4de58cdfed 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/http_connect_handshaker.cc
+++ b/contrib/libs/grpc/src/core/lib/transport/http_connect_handshaker.cc
@@ -18,29 +18,44 @@
#include <grpc/support/port_platform.h>
-#include "src/core/ext/filters/client_channel/http_connect_handshaker.h"
+#include "src/core/lib/transport/http_connect_handshaker.h"
+#include <limits.h>
#include <string.h>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/memory/memory.h"
#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+#include <grpc/slice.h>
#include <grpc/slice_buffer.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
-#include "src/core/ext/filters/client_channel/client_channel.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/handshaker.h"
-#include "src/core/lib/channel/handshaker_registry.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/gpr/string.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/sync.h"
#include "src/core/lib/http/format_request.h"
#include "src/core/lib/http/parser.h"
-#include "src/core/lib/resolver/resolver_registry.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/iomgr/tcp_server.h"
#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/uri/uri_parser.h"
+#include "src/core/lib/transport/handshaker.h"
+#include "src/core/lib/transport/handshaker_factory.h"
+#include "src/core/lib/transport/handshaker_registry.h"
namespace grpc_core {
@@ -104,14 +119,13 @@ void HttpConnectHandshaker::CleanupArgsForFailureLocked() {
args_->endpoint = nullptr;
read_buffer_to_destroy_ = args_->read_buffer;
args_->read_buffer = nullptr;
- grpc_channel_args_destroy(args_->args);
- args_->args = nullptr;
+ args_->args = ChannelArgs();
}
// If the handshake failed or we're shutting down, clean up and invoke the
// callback with the error.
void HttpConnectHandshaker::HandshakeFailedLocked(grpc_error_handle error) {
- if (error == GRPC_ERROR_NONE) {
+ if (GRPC_ERROR_IS_NONE(error)) {
// If we were shut down after an endpoint operation succeeded but
// before the endpoint callback was invoked, we need to generate our
// own error.
@@ -150,7 +164,7 @@ void HttpConnectHandshaker::OnWriteDoneScheduler(void* arg,
void HttpConnectHandshaker::OnWriteDone(void* arg, grpc_error_handle error) {
auto* handshaker = static_cast<HttpConnectHandshaker*>(arg);
ReleasableMutexLock lock(&handshaker->mu_);
- if (error != GRPC_ERROR_NONE || handshaker->is_shutdown_) {
+ if (!GRPC_ERROR_IS_NONE(error) || handshaker->is_shutdown_) {
// If the write failed or we're shutting down, clean up and invoke the
// callback with the error.
handshaker->HandshakeFailedLocked(GRPC_ERROR_REF(error));
@@ -164,7 +178,7 @@ void HttpConnectHandshaker::OnWriteDone(void* arg, grpc_error_handle error) {
GRPC_CLOSURE_INIT(&handshaker->response_read_closure_,
&HttpConnectHandshaker::OnReadDoneScheduler,
handshaker, grpc_schedule_on_exec_ctx),
- /*urgent=*/true);
+ /*urgent=*/true, /*min_progress_size=*/1);
}
}
@@ -184,7 +198,7 @@ void HttpConnectHandshaker::OnReadDoneScheduler(void* arg,
void HttpConnectHandshaker::OnReadDone(void* arg, grpc_error_handle error) {
auto* handshaker = static_cast<HttpConnectHandshaker*>(arg);
ReleasableMutexLock lock(&handshaker->mu_);
- if (error != GRPC_ERROR_NONE || handshaker->is_shutdown_) {
+ if (!GRPC_ERROR_IS_NONE(error) || handshaker->is_shutdown_) {
// If the read failed or we're shutting down, clean up and invoke the
// callback with the error.
handshaker->HandshakeFailedLocked(GRPC_ERROR_REF(error));
@@ -197,7 +211,7 @@ void HttpConnectHandshaker::OnReadDone(void* arg, grpc_error_handle error) {
error = grpc_http_parser_parse(&handshaker->http_parser_,
handshaker->args_->read_buffer->slices[i],
&body_start_offset);
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
handshaker->HandshakeFailedLocked(error);
goto done;
}
@@ -240,7 +254,7 @@ void HttpConnectHandshaker::OnReadDone(void* arg, grpc_error_handle error) {
GRPC_CLOSURE_INIT(&handshaker->response_read_closure_,
&HttpConnectHandshaker::OnReadDoneScheduler,
handshaker, grpc_schedule_on_exec_ctx),
- /*urgent=*/true);
+ /*urgent=*/true, /*min_progress_size=*/1);
return;
}
// Make sure we got a 2xx response.
@@ -283,10 +297,9 @@ void HttpConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
HandshakerArgs* args) {
// Check for HTTP CONNECT channel arg.
// If not found, invoke on_handshake_done without doing anything.
- const grpc_arg* arg =
- grpc_channel_args_find(args->args, GRPC_ARG_HTTP_CONNECT_SERVER);
- char* server_name = grpc_channel_arg_get_string(arg);
- if (server_name == nullptr) {
+ y_absl::optional<y_absl::string_view> server_name =
+ args->args.GetString(GRPC_ARG_HTTP_CONNECT_SERVER);
+ if (!server_name.has_value()) {
// Set shutdown to true so that subsequent calls to
// http_connect_handshaker_shutdown() do nothing.
{
@@ -297,14 +310,15 @@ void HttpConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
return;
}
// Get headers from channel args.
- arg = grpc_channel_args_find(args->args, GRPC_ARG_HTTP_CONNECT_HEADERS);
- char* arg_header_string = grpc_channel_arg_get_string(arg);
+ y_absl::optional<y_absl::string_view> arg_header_string =
+ args->args.GetString(GRPC_ARG_HTTP_CONNECT_HEADERS);
grpc_http_header* headers = nullptr;
size_t num_headers = 0;
char** header_strings = nullptr;
size_t num_header_strings = 0;
- if (arg_header_string != nullptr) {
- gpr_string_split(arg_header_string, "\n", &header_strings,
+ if (arg_header_string.has_value()) {
+ TString buffer(*arg_header_string);
+ gpr_string_split(buffer.c_str(), "\n", &header_strings,
&num_header_strings);
headers = static_cast<grpc_http_header*>(
gpr_malloc(sizeof(grpc_http_header) * num_header_strings));
@@ -328,8 +342,9 @@ void HttpConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
on_handshake_done_ = on_handshake_done;
// Log connection via proxy.
TString proxy_name(grpc_endpoint_get_peer(args->endpoint));
- gpr_log(GPR_INFO, "Connecting to server %s via HTTP proxy %s", server_name,
- proxy_name.c_str());
+ TString server_name_string(*server_name);
+ gpr_log(GPR_INFO, "Connecting to server %s via HTTP proxy %s",
+ server_name_string.c_str(), proxy_name.c_str());
// Construct HTTP CONNECT request.
grpc_http_request request;
request.method = const_cast<char*>("CONNECT");
@@ -338,8 +353,8 @@ void HttpConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
request.hdr_count = num_headers;
request.body_length = 0;
request.body = nullptr;
- grpc_slice request_slice =
- grpc_httpcli_format_connect_request(&request, server_name, server_name);
+ grpc_slice request_slice = grpc_httpcli_format_connect_request(
+ &request, server_name_string.c_str(), server_name_string.c_str());
grpc_slice_buffer_add(&write_buffer_, request_slice);
// Clean up.
gpr_free(headers);
@@ -354,7 +369,7 @@ void HttpConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
GRPC_CLOSURE_INIT(&request_done_closure_,
&HttpConnectHandshaker::OnWriteDoneScheduler, this,
grpc_schedule_on_exec_ctx),
- nullptr);
+ nullptr, /*max_frame_size=*/INT_MAX);
}
HttpConnectHandshaker::HttpConnectHandshaker() {
@@ -368,7 +383,7 @@ HttpConnectHandshaker::HttpConnectHandshaker() {
class HttpConnectHandshakerFactory : public HandshakerFactory {
public:
- void AddHandshakers(const grpc_channel_args* /*args*/,
+ void AddHandshakers(const ChannelArgs& /*args*/,
grpc_pollset_set* /*interested_parties*/,
HandshakeManager* handshake_mgr) override {
handshake_mgr->Add(MakeRefCounted<HttpConnectHandshaker>());
diff --git a/contrib/libs/grpc/src/core/ext/filters/client_channel/http_connect_handshaker.h b/contrib/libs/grpc/src/core/lib/transport/http_connect_handshaker.h
index d23ce91099..7ac74b50eb 100644
--- a/contrib/libs/grpc/src/core/ext/filters/client_channel/http_connect_handshaker.h
+++ b/contrib/libs/grpc/src/core/lib/transport/http_connect_handshaker.h
@@ -16,8 +16,8 @@
*
*/
-#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_CONNECT_HANDSHAKER_H
-#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_CONNECT_HANDSHAKER_H
+#ifndef GRPC_CORE_LIB_TRANSPORT_HTTP_CONNECT_HANDSHAKER_H
+#define GRPC_CORE_LIB_TRANSPORT_HTTP_CONNECT_HANDSHAKER_H
#include <grpc/support/port_platform.h>
@@ -39,4 +39,4 @@ void RegisterHttpConnectHandshaker(CoreConfiguration::Builder* builder);
} // namespace grpc_core
-#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_HTTP_CONNECT_HANDSHAKER_H */
+#endif /* GRPC_CORE_LIB_TRANSPORT_HTTP_CONNECT_HANDSHAKER_H */
diff --git a/contrib/libs/grpc/src/core/lib/transport/metadata_batch.cc b/contrib/libs/grpc/src/core/lib/transport/metadata_batch.cc
new file mode 100644
index 0000000000..23acf3068d
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/transport/metadata_batch.cc
@@ -0,0 +1,291 @@
+// Copyright 2021 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/transport/metadata_batch.h"
+
+#include <string.h>
+
+#include <algorithm>
+
+#include "y_absl/strings/escaping.h"
+#include "y_absl/strings/match.h"
+#include "y_absl/strings/str_cat.h"
+
+#include "src/core/lib/transport/timeout_encoding.h"
+
+namespace grpc_core {
+namespace metadata_detail {
+
+void DebugStringBuilder::Add(y_absl::string_view key, y_absl::string_view value) {
+ if (!out_.empty()) out_.append(", ");
+ y_absl::StrAppend(&out_, y_absl::CEscape(key), ": ", y_absl::CEscape(value));
+}
+
+void UnknownMap::Append(y_absl::string_view key, Slice value) {
+ unknown_.EmplaceBack(Slice::FromCopiedString(key), value.Ref());
+}
+
+void UnknownMap::Remove(y_absl::string_view key) {
+ unknown_.SetEnd(std::remove_if(unknown_.begin(), unknown_.end(),
+ [key](const std::pair<Slice, Slice>& p) {
+ return p.first.as_string_view() == key;
+ }));
+}
+
+y_absl::optional<y_absl::string_view> UnknownMap::GetStringValue(
+ y_absl::string_view key, TString* backing) const {
+ y_absl::optional<y_absl::string_view> out;
+ for (const auto& p : unknown_) {
+ if (p.first.as_string_view() == key) {
+ if (!out.has_value()) {
+ out = p.second.as_string_view();
+ } else {
+ out = *backing = y_absl::StrCat(*out, ",", p.second.as_string_view());
+ }
+ }
+ }
+ return out;
+}
+
+} // namespace metadata_detail
+
+ContentTypeMetadata::MementoType ContentTypeMetadata::ParseMemento(
+ Slice value, MetadataParseErrorFn on_error) {
+ auto out = kInvalid;
+ auto value_string = value.as_string_view();
+ if (value_string == "application/grpc") {
+ out = kApplicationGrpc;
+ } else if (y_absl::StartsWith(value_string, "application/grpc;")) {
+ out = kApplicationGrpc;
+ } else if (y_absl::StartsWith(value_string, "application/grpc+")) {
+ out = kApplicationGrpc;
+ } else if (value_string.empty()) {
+ out = kEmpty;
+ } else {
+ on_error("invalid value", value);
+ }
+ return out;
+}
+
+StaticSlice ContentTypeMetadata::Encode(ValueType x) {
+ switch (x) {
+ case kEmpty:
+ return StaticSlice::FromStaticString("");
+ case kApplicationGrpc:
+ return StaticSlice::FromStaticString("application/grpc");
+ case kInvalid:
+ return StaticSlice::FromStaticString("application/grpc+unknown");
+ }
+ GPR_UNREACHABLE_CODE(
+ return StaticSlice::FromStaticString("unrepresentable value"));
+}
+
+const char* ContentTypeMetadata::DisplayValue(MementoType content_type) {
+ switch (content_type) {
+ case ValueType::kApplicationGrpc:
+ return "application/grpc";
+ case ValueType::kEmpty:
+ return "";
+ default:
+ return "<discarded-invalid-value>";
+ }
+}
+
+GrpcTimeoutMetadata::MementoType GrpcTimeoutMetadata::ParseMemento(
+ Slice value, MetadataParseErrorFn on_error) {
+ auto timeout = ParseTimeout(value);
+ if (!timeout.has_value()) {
+ on_error("invalid value", value);
+ return Duration::Infinity();
+ }
+ return *timeout;
+}
+
+GrpcTimeoutMetadata::ValueType GrpcTimeoutMetadata::MementoToValue(
+ MementoType timeout) {
+ if (timeout == Duration::Infinity()) {
+ return Timestamp::InfFuture();
+ }
+ return Timestamp::Now() + timeout;
+}
+
+Slice GrpcTimeoutMetadata::Encode(ValueType x) {
+ return Timeout::FromDuration(x - Timestamp::Now()).Encode();
+}
+
+TeMetadata::MementoType TeMetadata::ParseMemento(
+ Slice value, MetadataParseErrorFn on_error) {
+ auto out = kInvalid;
+ if (value == "trailers") {
+ out = kTrailers;
+ } else {
+ on_error("invalid value", value);
+ }
+ return out;
+}
+
+const char* TeMetadata::DisplayValue(MementoType te) {
+ switch (te) {
+ case ValueType::kTrailers:
+ return "trailers";
+ default:
+ return "<discarded-invalid-value>";
+ }
+}
+
+HttpSchemeMetadata::ValueType HttpSchemeMetadata::Parse(
+ y_absl::string_view value, MetadataParseErrorFn on_error) {
+ if (value == "http") {
+ return kHttp;
+ } else if (value == "https") {
+ return kHttps;
+ }
+ on_error("invalid value", Slice::FromCopiedBuffer(value));
+ return kInvalid;
+}
+
+StaticSlice HttpSchemeMetadata::Encode(ValueType x) {
+ switch (x) {
+ case kHttp:
+ return StaticSlice::FromStaticString("http");
+ case kHttps:
+ return StaticSlice::FromStaticString("https");
+ default:
+ abort();
+ }
+}
+
+const char* HttpSchemeMetadata::DisplayValue(MementoType content_type) {
+ switch (content_type) {
+ case kHttp:
+ return "http";
+ case kHttps:
+ return "https";
+ default:
+ return "<discarded-invalid-value>";
+ }
+}
+
+HttpMethodMetadata::MementoType HttpMethodMetadata::ParseMemento(
+ Slice value, MetadataParseErrorFn on_error) {
+ auto out = kInvalid;
+ auto value_string = value.as_string_view();
+ if (value_string == "POST") {
+ out = kPost;
+ } else if (value_string == "PUT") {
+ out = kPut;
+ } else if (value_string == "GET") {
+ out = kGet;
+ } else {
+ on_error("invalid value", value);
+ }
+ return out;
+}
+
+StaticSlice HttpMethodMetadata::Encode(ValueType x) {
+ switch (x) {
+ case kPost:
+ return StaticSlice::FromStaticString("POST");
+ case kPut:
+ return StaticSlice::FromStaticString("PUT");
+ case kGet:
+ return StaticSlice::FromStaticString("GET");
+ default:
+ abort();
+ }
+}
+
+const char* HttpMethodMetadata::DisplayValue(MementoType content_type) {
+ switch (content_type) {
+ case kPost:
+ return "POST";
+ case kGet:
+ return "GET";
+ case kPut:
+ return "PUT";
+ default:
+ return "<discarded-invalid-value>";
+ }
+}
+
+CompressionAlgorithmBasedMetadata::MementoType
+CompressionAlgorithmBasedMetadata::ParseMemento(Slice value,
+ MetadataParseErrorFn on_error) {
+ auto algorithm = ParseCompressionAlgorithm(value.as_string_view());
+ if (!algorithm.has_value()) {
+ on_error("invalid value", value);
+ return GRPC_COMPRESS_NONE;
+ }
+ return *algorithm;
+}
+
+Duration GrpcRetryPushbackMsMetadata::ParseMemento(
+ Slice value, MetadataParseErrorFn on_error) {
+ int64_t out;
+ if (!y_absl::SimpleAtoi(value.as_string_view(), &out)) {
+ on_error("not an integer", value);
+ return Duration::NegativeInfinity();
+ }
+ return Duration::Milliseconds(out);
+}
+
+Slice LbCostBinMetadata::Encode(const ValueType& x) {
+ auto slice =
+ MutableSlice::CreateUninitialized(sizeof(double) + x.name.length());
+ memcpy(slice.data(), &x.cost, sizeof(double));
+ memcpy(slice.data() + sizeof(double), x.name.data(), x.name.length());
+ return Slice(std::move(slice));
+}
+
+TString LbCostBinMetadata::DisplayValue(MementoType x) {
+ return y_absl::StrCat(x.name, ":", x.cost);
+}
+
+LbCostBinMetadata::MementoType LbCostBinMetadata::ParseMemento(
+ Slice value, MetadataParseErrorFn on_error) {
+ if (value.length() < sizeof(double)) {
+ on_error("too short", value);
+ return {0, ""};
+ }
+ MementoType out;
+ memcpy(&out.cost, value.data(), sizeof(double));
+ out.name =
+ TString(reinterpret_cast<const char*>(value.data()) + sizeof(double),
+ value.length() - sizeof(double));
+ return out;
+}
+
+TString GrpcStreamNetworkState::DisplayValue(ValueType x) {
+ switch (x) {
+ case kNotSentOnWire:
+ return "not sent on wire";
+ case kNotSeenByServer:
+ return "not seen by server";
+ }
+ GPR_UNREACHABLE_CODE(return "unknown value");
+}
+
+TString PeerString::DisplayValue(ValueType x) { return TString(x); }
+const TString& GrpcStatusContext::DisplayValue(const TString& x) {
+ return x;
+}
+
+TString WaitForReady::DisplayValue(ValueType x) {
+ return y_absl::StrCat(x.value ? "true" : "false",
+ x.explicitly_set ? " (explicit)" : "");
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/transport/metadata_batch.h b/contrib/libs/grpc/src/core/lib/transport/metadata_batch.h
index ac4b423750..b83ab8c014 100644
--- a/contrib/libs/grpc/src/core/lib/transport/metadata_batch.h
+++ b/contrib/libs/grpc/src/core/lib/transport/metadata_batch.h
@@ -21,29 +21,31 @@
#include <grpc/support/port_platform.h>
-#include <stdbool.h>
+#include <stdlib.h>
#include <cstdint>
-#include <limits>
-
-#include "y_absl/strings/escaping.h"
-#include "y_absl/strings/match.h"
-#include "y_absl/strings/str_join.h"
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/container/inlined_vector.h"
+#include "y_absl/functional/function_ref.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/strings/numbers.h"
+#include "y_absl/strings/string_view.h"
#include "y_absl/types/optional.h"
-#include <grpc/grpc.h>
-#include <grpc/slice.h>
+#include <grpc/impl/codegen/compression_types.h>
#include <grpc/status.h>
-#include <grpc/support/time.h>
+#include <grpc/support/log.h>
#include "src/core/lib/compression/compression_internal.h"
#include "src/core/lib/gprpp/chunked_vector.h"
-#include "src/core/lib/gprpp/table.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/gprpp/packed_table.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/resource_quota/arena.h"
#include "src/core/lib/slice/slice.h"
-#include "src/core/lib/surface/validate_metadata.h"
#include "src/core/lib/transport/parsed_metadata.h"
-#include "src/core/lib/transport/timeout_encoding.h"
namespace grpc_core {
@@ -59,23 +61,9 @@ struct GrpcTimeoutMetadata {
using ValueType = Timestamp;
using MementoType = Duration;
static y_absl::string_view key() { return "grpc-timeout"; }
- static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error) {
- auto timeout = ParseTimeout(value);
- if (!timeout.has_value()) {
- on_error("invalid value", value);
- return Duration::Infinity();
- }
- return *timeout;
- }
- static ValueType MementoToValue(MementoType timeout) {
- if (timeout == Duration::Infinity()) {
- return Timestamp::InfFuture();
- }
- return ExecCtx::Get()->Now() + timeout;
- }
- static Slice Encode(ValueType x) {
- return Timeout::FromDuration(x - ExecCtx::Get()->Now()).Encode();
- }
+ static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
+ static ValueType MementoToValue(MementoType timeout);
+ static Slice Encode(ValueType x);
static TString DisplayValue(MementoType x) { return x.ToString(); }
};
@@ -91,28 +79,13 @@ struct TeMetadata {
};
using MementoType = ValueType;
static y_absl::string_view key() { return "te"; }
- static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error) {
- auto out = kInvalid;
- if (value == "trailers") {
- out = kTrailers;
- } else {
- on_error("invalid value", value);
- }
- return out;
- }
+ static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
static ValueType MementoToValue(MementoType te) { return te; }
static StaticSlice Encode(ValueType x) {
GPR_ASSERT(x == kTrailers);
return StaticSlice::FromStaticString("trailers");
}
- static const char* DisplayValue(MementoType te) {
- switch (te) {
- case ValueType::kTrailers:
- return "trailers";
- default:
- return "<discarded-invalid-value>";
- }
- }
+ static const char* DisplayValue(MementoType te);
};
// content-type metadata trait.
@@ -121,60 +94,26 @@ struct ContentTypeMetadata {
// gRPC says that content-type can be application/grpc[;something]
// Core has only ever verified the prefix.
// IF we want to start verifying more, we can expand this type.
- enum ValueType {
+ enum ValueType : uint8_t {
kApplicationGrpc,
kEmpty,
kInvalid,
};
using MementoType = ValueType;
static y_absl::string_view key() { return "content-type"; }
- static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error) {
- auto out = kInvalid;
- auto value_string = value.as_string_view();
- if (value_string == "application/grpc") {
- out = kApplicationGrpc;
- } else if (y_absl::StartsWith(value_string, "application/grpc;")) {
- out = kApplicationGrpc;
- } else if (y_absl::StartsWith(value_string, "application/grpc+")) {
- out = kApplicationGrpc;
- } else if (value_string.empty()) {
- out = kEmpty;
- } else {
- on_error("invalid value", value);
- }
- return out;
- }
+ static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
static ValueType MementoToValue(MementoType content_type) {
return content_type;
}
- static StaticSlice Encode(ValueType x) {
- switch (x) {
- case kEmpty:
- return StaticSlice::FromStaticString("");
- case kApplicationGrpc:
- return StaticSlice::FromStaticString("application/grpc");
- case kInvalid:
- return StaticSlice::FromStaticString("application/grpc+unknown");
- }
- GPR_UNREACHABLE_CODE(
- return StaticSlice::FromStaticString("unrepresentable value"));
- }
- static const char* DisplayValue(MementoType content_type) {
- switch (content_type) {
- case ValueType::kApplicationGrpc:
- return "application/grpc";
- case ValueType::kEmpty:
- return "";
- default:
- return "<discarded-invalid-value>";
- }
- }
+
+ static StaticSlice Encode(ValueType x);
+ static const char* DisplayValue(MementoType content_type);
};
// scheme metadata trait.
struct HttpSchemeMetadata {
static constexpr bool kRepeatable = false;
- enum ValueType {
+ enum ValueType : uint8_t {
kHttp,
kHttps,
kInvalid,
@@ -185,92 +124,31 @@ struct HttpSchemeMetadata {
return Parse(value.as_string_view(), on_error);
}
static ValueType Parse(y_absl::string_view value,
- MetadataParseErrorFn on_error) {
- if (value == "http") {
- return kHttp;
- } else if (value == "https") {
- return kHttps;
- }
- on_error("invalid value", Slice::FromCopiedBuffer(value));
- return kInvalid;
- }
+ MetadataParseErrorFn on_error);
static ValueType MementoToValue(MementoType content_type) {
return content_type;
}
- static StaticSlice Encode(ValueType x) {
- switch (x) {
- case kHttp:
- return StaticSlice::FromStaticString("http");
- case kHttps:
- return StaticSlice::FromStaticString("https");
- default:
- abort();
- }
- }
- static const char* DisplayValue(MementoType content_type) {
- switch (content_type) {
- case kHttp:
- return "http";
- case kHttps:
- return "https";
- default:
- return "<discarded-invalid-value>";
- }
- }
+ static StaticSlice Encode(ValueType x);
+ static const char* DisplayValue(MementoType content_type);
};
// method metadata trait.
struct HttpMethodMetadata {
static constexpr bool kRepeatable = false;
- enum ValueType {
+ enum ValueType : uint8_t {
kPost,
- kPut,
kGet,
+ kPut,
kInvalid,
};
using MementoType = ValueType;
static y_absl::string_view key() { return ":method"; }
- static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error) {
- auto out = kInvalid;
- auto value_string = value.as_string_view();
- if (value_string == "POST") {
- out = kPost;
- } else if (value_string == "PUT") {
- out = kPut;
- } else if (value_string == "GET") {
- out = kGet;
- } else {
- on_error("invalid value", value);
- }
- return out;
- }
+ static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
static ValueType MementoToValue(MementoType content_type) {
return content_type;
}
- static StaticSlice Encode(ValueType x) {
- switch (x) {
- case kPost:
- return StaticSlice::FromStaticString("POST");
- case kPut:
- return StaticSlice::FromStaticString("PUT");
- case kGet:
- return StaticSlice::FromStaticString("GET");
- default:
- abort();
- }
- }
- static const char* DisplayValue(MementoType content_type) {
- switch (content_type) {
- case kPost:
- return "POST";
- case kPut:
- return "PUT";
- case kGet:
- return "GET";
- default:
- return "<discarded-invalid-value>";
- }
- }
+ static StaticSlice Encode(ValueType x);
+ static const char* DisplayValue(MementoType content_type);
};
// Base type for metadata pertaining to a single compression algorithm
@@ -278,14 +156,7 @@ struct HttpMethodMetadata {
struct CompressionAlgorithmBasedMetadata {
using ValueType = grpc_compression_algorithm;
using MementoType = ValueType;
- static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error) {
- auto algorithm = ParseCompressionAlgorithm(value.as_string_view());
- if (!algorithm.has_value()) {
- on_error("invalid value", value);
- return GRPC_COMPRESS_NONE;
- }
- return *algorithm;
- }
+ static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
static ValueType MementoToValue(MementoType x) { return x; }
static Slice Encode(ValueType x) {
GPR_ASSERT(x != GRPC_COMPRESS_ALGORITHMS_COUNT);
@@ -323,7 +194,7 @@ struct GrpcAcceptEncodingMetadata {
}
static ValueType MementoToValue(MementoType x) { return x; }
static Slice Encode(ValueType x) { return x.ToSlice(); }
- static TString DisplayValue(MementoType x) { return x.ToString(); }
+ static y_absl::string_view DisplayValue(MementoType x) { return x.ToString(); }
};
struct SimpleSliceBasedMetadata {
@@ -357,10 +228,10 @@ struct HostMetadata : public SimpleSliceBasedMetadata {
static y_absl::string_view key() { return "host"; }
};
-// x-endpoint-load-metrics-bin metadata trait.
-struct XEndpointLoadMetricsBinMetadata : public SimpleSliceBasedMetadata {
+// endpoint-load-metrics-bin metadata trait.
+struct EndpointLoadMetricsBinMetadata : public SimpleSliceBasedMetadata {
static constexpr bool kRepeatable = false;
- static y_absl::string_view key() { return "x-endpoint-load-metrics-bin"; }
+ static y_absl::string_view key() { return "endpoint-load-metrics-bin"; }
};
// grpc-server-stats-bin metadata trait.
@@ -393,9 +264,9 @@ struct HttpPathMetadata : public SimpleSliceBasedMetadata {
static y_absl::string_view key() { return ":path"; }
};
-// We separate SimpleIntBasedMetadata into two pieces: one that does not depend
-// on the invalid value, and one that does. This allows the compiler to easily
-// see the functions that are shared, and helps reduce code bloat here.
+// We separate SimpleIntBasedMetadata into two pieces: one that does not
+// depend on the invalid value, and one that does. This allows the compiler to
+// easily see the functions that are shared, and helps reduce code bloat here.
template <typename Int>
struct SimpleIntBasedMetadataBase {
using ValueType = Int;
@@ -441,14 +312,7 @@ struct GrpcRetryPushbackMsMetadata {
static ValueType MementoToValue(MementoType x) { return x; }
static Slice Encode(Duration x) { return Slice::FromInt64(x.millis()); }
static int64_t DisplayValue(Duration x) { return x.millis(); }
- static Duration ParseMemento(Slice value, MetadataParseErrorFn on_error) {
- int64_t out;
- if (!y_absl::SimpleAtoi(value.as_string_view(), &out)) {
- on_error("not an integer", value);
- return Duration::NegativeInfinity();
- }
- return Duration::Milliseconds(out);
- }
+ static Duration ParseMemento(Slice value, MetadataParseErrorFn on_error);
};
// :status metadata trait.
@@ -461,6 +325,7 @@ struct HttpStatusMetadata : public SimpleIntBasedMetadata<uint32_t, 0> {
// "secret" metadata trait used to pass load balancing token between filters.
// This should not be exposed outside of gRPC core.
class GrpcLbClientStats;
+
struct GrpcLbClientStatsMetadata {
static constexpr bool kRepeatable = false;
static y_absl::string_view key() { return "grpclb_client_stats"; }
@@ -490,28 +355,9 @@ struct LbCostBinMetadata {
};
using MementoType = ValueType;
static ValueType MementoToValue(MementoType value) { return value; }
- static Slice Encode(const ValueType& x) {
- auto slice =
- MutableSlice::CreateUninitialized(sizeof(double) + x.name.length());
- memcpy(slice.data(), &x.cost, sizeof(double));
- memcpy(slice.data() + sizeof(double), x.name.data(), x.name.length());
- return Slice(std::move(slice));
- }
- static TString DisplayValue(MementoType x) {
- return y_absl::StrCat(x.name, ":", x.cost);
- }
- static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error) {
- if (value.length() < sizeof(double)) {
- on_error("too short", value);
- return {0, ""};
- }
- MementoType out;
- memcpy(&out.cost, value.data(), sizeof(double));
- out.name = TString(
- reinterpret_cast<const char*>(value.data()) + sizeof(double),
- value.length() - sizeof(double));
- return out;
- }
+ static Slice Encode(const ValueType& x);
+ static TString DisplayValue(MementoType x);
+ static MementoType ParseMemento(Slice value, MetadataParseErrorFn on_error);
};
// Annotation added by a transport to note whether a failed request was never
@@ -523,14 +369,15 @@ struct GrpcStreamNetworkState {
kNotSentOnWire,
kNotSeenByServer,
};
- static TString DisplayValue(ValueType x) {
- switch (x) {
- case kNotSentOnWire:
- return "not sent on wire";
- case kNotSeenByServer:
- return "not seen by server";
- }
- }
+ static TString DisplayValue(ValueType x);
+};
+
+// Annotation added by a server transport to note the peer making a request.
+struct PeerString {
+ static y_absl::string_view DebugKey() { return "PeerString"; }
+ static constexpr bool kRepeatable = false;
+ using ValueType = y_absl::string_view;
+ static TString DisplayValue(ValueType x);
};
// Annotation added by various systems to describe the reason for a failure.
@@ -538,16 +385,42 @@ struct GrpcStatusContext {
static y_absl::string_view DebugKey() { return "GrpcStatusContext"; }
static constexpr bool kRepeatable = true;
using ValueType = TString;
- static const TString& DisplayValue(const TString& x) { return x; }
+ static const TString& DisplayValue(const TString& x);
+};
+
+// Annotation added by client surface code to denote wait-for-ready state
+struct WaitForReady {
+ struct ValueType {
+ bool value = false;
+ bool explicitly_set = false;
+ };
+ static y_absl::string_view DebugKey() { return "WaitForReady"; }
+ static constexpr bool kRepeatable = false;
+ static TString DisplayValue(ValueType x);
};
namespace metadata_detail {
-// IsEncodable: Given a trait, determine if that trait is encodable, or is just
-// a value attached to a MetadataMap.
-// We use the presence of the key() static method to determine if a trait is
-// encodable or not - encodable traits have string names, and non-encodable
-// traits do not.
+// Build a key/value formatted debug string.
+// Output looks like 'key1: value1, key2: value2'
+// The string is expected to be readable, but not necessarily parsable.
+class DebugStringBuilder {
+ public:
+ // Add one key/value pair to the output.
+ void Add(y_absl::string_view key, y_absl::string_view value);
+
+ // Finalize the output and return the string.
+ // Subsequent Add calls are UB.
+ TString TakeOutput() { return std::move(out_); }
+
+ private:
+ TString out_;
+};
+
+// IsEncodable: Given a trait, determine if that trait is encodable, or is
+// just a value attached to a MetadataMap. We use the presence of the key()
+// static method to determine if a trait is encodable or not - encodable
+// traits have string names, and non-encodable traits do not.
template <typename Trait, typename Ignored = void>
struct IsEncodableTrait {
static const bool value = false;
@@ -597,8 +470,8 @@ struct NameLookup<void> {
};
// Helper to take a slice to a memento to a value.
-// By splitting this part out we can scale code size as the number of (memento,
-// value) types, rather than as the number of traits.
+// By splitting this part out we can scale code size as the number of
+// (memento, value) types, rather than as the number of traits.
template <typename ParseMementoFn, typename MementoToValueFn>
struct ParseValue {
template <ParseMementoFn parse_memento, MementoToValueFn memento_to_value>
@@ -626,7 +499,7 @@ class ParseHelper {
return ParsedMetadata<Container>(
trait,
ParseValueToMemento<typename Trait::MementoType, Trait::ParseMemento>(),
- transport_size_);
+ static_cast<uint32_t>(transport_size_));
}
GPR_ATTRIBUTE_NOINLINE ParsedMetadata<Container> NotFound(
@@ -647,8 +520,8 @@ class ParseHelper {
};
// This is an "Op" type for NameLookup.
-// Used for MetadataMap::Append, its Found/NotFound methods turn a slice into a
-// value and add it to a container.
+// Used for MetadataMap::Append, its Found/NotFound methods turn a slice into
+// a value and add it to a container.
template <typename Container>
class AppendHelper {
public:
@@ -665,7 +538,7 @@ class AppendHelper {
}
GPR_ATTRIBUTE_NOINLINE void NotFound(y_absl::string_view key) {
- container_->AppendUnknown(key, std::move(value_));
+ container_->unknown_.Append(key, std::move(value_));
}
private:
@@ -688,7 +561,7 @@ class RemoveHelper {
}
GPR_ATTRIBUTE_NOINLINE void NotFound(y_absl::string_view key) {
- container_->RemoveUnknown(key);
+ container_->unknown_.Remove(key);
}
private:
@@ -696,8 +569,8 @@ class RemoveHelper {
};
// This is an "Op" type for NameLookup.
-// Used for MetadataMap::GetStringValue, its Found/NotFound methods generated a
-// string value from the container.
+// Used for MetadataMap::GetStringValue, its Found/NotFound methods generated
+// a string value from the container.
template <typename Container>
class GetStringValueHelper {
public:
@@ -747,7 +620,7 @@ class GetStringValueHelper {
GPR_ATTRIBUTE_NOINLINE y_absl::optional<y_absl::string_view> NotFound(
y_absl::string_view key) {
- return container_->GetStringValueUnknown(key, backing_);
+ return container_->unknown_.GetStringValue(key, backing_);
}
private:
@@ -760,7 +633,17 @@ using LogFn = y_absl::FunctionRef<void(y_absl::string_view, y_absl::string_view)
template <typename T>
struct AdaptDisplayValueToLog {
- static TString ToString(const T& value) { return y_absl::StrCat(value); }
+ static TString ToString(const T& value) { return ::ToString(value); }
+};
+
+template <>
+struct AdaptDisplayValueToLog<TString> {
+ static TString ToString(const TString& value) { return value; }
+};
+
+template <>
+struct AdaptDisplayValueToLog<const TString&> {
+ static TString ToString(const TString& value) { return value; }
};
template <>
@@ -806,6 +689,10 @@ struct Value<Which, y_absl::enable_if_t<Which::kRepeatable == false &&
void EncodeTo(Encoder* encoder) const {
encoder->Encode(Which(), value);
}
+ template <typename Encoder>
+ void VisitWith(Encoder* encoder) const {
+ return EncodeTo(encoder);
+ }
void LogTo(LogFn log_fn) const {
LogKeyValueTo(Which::key(), value, Which::Encode, log_fn);
}
@@ -830,6 +717,10 @@ struct Value<Which, y_absl::enable_if_t<Which::kRepeatable == false &&
}
template <typename Encoder>
void EncodeTo(Encoder*) const {}
+ template <typename Encoder>
+ void VisitWith(Encoder* encoder) const {
+ encoder->Encode(Which(), value);
+ }
void LogTo(LogFn log_fn) const {
LogKeyValueTo(Which::DebugKey(), value, Which::DisplayValue, log_fn);
}
@@ -861,6 +752,10 @@ struct Value<Which, y_absl::enable_if_t<Which::kRepeatable == true &&
encoder->Encode(Which(), v);
}
}
+ template <typename Encoder>
+ void VisitWith(Encoder* encoder) const {
+ return EncodeTo(encoder);
+ }
void LogTo(LogFn log_fn) const {
for (const auto& v : value) {
LogKeyValueTo(Which::key(), v, Which::Encode, log_fn);
@@ -890,6 +785,12 @@ struct Value<Which, y_absl::enable_if_t<Which::kRepeatable == true &&
}
template <typename Encoder>
void EncodeTo(Encoder*) const {}
+ template <typename Encoder>
+ void VisitWith(Encoder* encoder) const {
+ for (const auto& v : value) {
+ encoder->Encode(Which(), v);
+ }
+ }
void LogTo(LogFn log_fn) const {
for (const auto& v : value) {
LogKeyValueTo(Which::DebugKey(), v, Which::DisplayValue, log_fn);
@@ -916,7 +817,7 @@ class CopySink {
}
void Encode(const Slice& key, const Slice& value) {
- dst_->AppendUnknown(key.as_string_view(), value.Ref());
+ dst_->unknown_.Append(key.as_string_view(), value.Ref());
}
private:
@@ -934,6 +835,17 @@ struct EncodeWrapper {
}
};
+// Callable for the table ForEach in ForEach() -- for each value, call the
+// appropriate visitor method.
+template <typename Encoder>
+struct ForEachWrapper {
+ Encoder* encoder;
+ template <typename Which>
+ void operator()(const Value<Which>& which) {
+ which.VisitWith(encoder);
+ }
+};
+
// Callable for the ForEach in Log()
struct LogWrapper {
LogFn log_fn;
@@ -972,6 +884,31 @@ class TransportSizeEncoder {
uint32_t size_ = 0;
};
+// Handle unknown (non-trait-based) fields in the metadata map.
+class UnknownMap {
+ public:
+ explicit UnknownMap(Arena* arena) : unknown_(arena) {}
+
+ using BackingType = ChunkedVector<std::pair<Slice, Slice>, 10>;
+
+ void Append(y_absl::string_view key, Slice value);
+ void Remove(y_absl::string_view key);
+ y_absl::optional<y_absl::string_view> GetStringValue(y_absl::string_view key,
+ TString* backing) const;
+
+ BackingType::ConstForwardIterator begin() const { return unknown_.cbegin(); }
+ BackingType::ConstForwardIterator end() const { return unknown_.cend(); }
+
+ bool empty() const { return unknown_.empty(); }
+ size_t size() const { return unknown_.size(); }
+ void Clear() { unknown_.Clear(); }
+ Arena* arena() const { return unknown_.arena(); }
+
+ private:
+ // Backing store for added metadata.
+ ChunkedVector<std::pair<Slice, Slice>, 10> unknown_;
+};
+
} // namespace metadata_detail
// Helper function for encoders
@@ -1032,21 +969,23 @@ MetadataValueAsSlice(typename Which::ValueType value) {
// // Parse a memento from a slice
// // Takes ownership of value
// // Calls fn in the case of an error that should be reported to the user
-// static MementoType ParseMemento(Slice value, MementoParseErrorFn fn) { ...
+// static MementoType ParseMemento(Slice value, MementoParseErrorFn fn) {
+// ...
// }
// // Convert a memento to a value
// static ValueType MementoToValue(MementoType memento) { ... }
// // Convert a value to its canonical text wire format (the format that
// // ParseMemento will accept!)
// static Slice Encode(const ValueType& value);
-// // Convert a value to something that can be passed to StrCat and displayed
+// // Convert a value to something that can be passed to StrCat and
+// displayed
// // for debugging
// static SomeStrCatableType DisplayValue(MementoType value) { ... }
// };
//
-// Non-encodable traits are determined by missing the key() method, and have the
-// following signature (and by convention omit the Metadata part of the type
-// name):
+// Non-encodable traits are determined by missing the key() method, and have
+// the following signature (and by convention omit the Metadata part of the
+// type name):
// // Traits for the GrpcXyz field:
// struct GrpcXyz {
// // The string key that should be used for debug dumps - should not be a
@@ -1056,7 +995,8 @@ MetadataValueAsSlice(typename Which::ValueType value) {
// static constexpr bool kRepeatable = ...;
// // The type that's stored on MetadataBatch
// using ValueType = ...;
-// // Convert a value to something that can be passed to StrCat and displayed
+// // Convert a value to something that can be passed to StrCat and
+// displayed
// // for debugging
// static SomeStrCatableType DisplayValue(ValueType value) { ... }
// };
@@ -1069,10 +1009,10 @@ MetadataValueAsSlice(typename Which::ValueType value) {
// in the compression table. This is what mementos are used for.
//
// A trait offers the capability to turn a slice into a memento via
-// ParseMemento. This is exposed to users of MetadataMap via the Parse() method,
-// that returns a ParsedMetadata object. That ParsedMetadata object can in turn
-// be used to set the same value on many different MetadataMaps without having
-// to reparse.
+// ParseMemento. This is exposed to users of MetadataMap via the Parse()
+// method, that returns a ParsedMetadata object. That ParsedMetadata object
+// can in turn be used to set the same value on many different MetadataMaps
+// without having to reparse.
//
// Implementation wise, ParsedMetadata is a type erased wrapper around
// MementoType. When we set a value on MetadataMap, we first turn that memento
@@ -1103,13 +1043,21 @@ class MetadataMap {
// void Encode(TraitsType, typename TraitsType::ValueType value);
// For fields for which we do not have traits, this will be a method
// with the signature:
- // void Encode(grpc_mdelem md);
- // TODO(ctiller): It's expected that the latter Encode method will
- // become Encode(Slice, Slice) by the end of the current metadata API
- // transitions.
+ // void Encode(string_view key, Slice value);
template <typename Encoder>
void Encode(Encoder* encoder) const {
- table_.ForEach(metadata_detail::EncodeWrapper<Encoder>{encoder});
+ table_.template ForEachIn<metadata_detail::EncodeWrapper<Encoder>,
+ Value<Traits>...>(
+ metadata_detail::EncodeWrapper<Encoder>{encoder});
+ for (const auto& unk : unknown_) {
+ encoder->Encode(unk.first, unk.second);
+ }
+ }
+
+ // Like Encode, but also visit the non-encodable fields.
+ template <typename Encoder>
+ void ForEach(Encoder* encoder) const {
+ table_.ForEach(metadata_detail::ForEachWrapper<Encoder>{encoder});
for (const auto& unk : unknown_) {
encoder->Encode(unk.first, unk.second);
}
@@ -1125,12 +1073,11 @@ class MetadataMap {
}
TString DebugString() const {
- TString out;
- Log([&out](y_absl::string_view key, y_absl::string_view value) {
- if (!out.empty()) out.append(", ");
- y_absl::StrAppend(&out, y_absl::CEscape(key), ": ", y_absl::CEscape(value));
+ metadata_detail::DebugStringBuilder builder;
+ Log([&builder](y_absl::string_view key, y_absl::string_view value) {
+ builder.Add(key, value);
});
- return out;
+ return builder.TakeOutput();
}
// Get the pointer to the value of some known metadata.
@@ -1277,36 +1224,9 @@ class MetadataMap {
template <typename Which>
using Value = metadata_detail::Value<Which>;
- void AppendUnknown(y_absl::string_view key, Slice value) {
- unknown_.EmplaceBack(Slice::FromCopiedString(key), value.Ref());
- }
-
- void RemoveUnknown(y_absl::string_view key) {
- unknown_.SetEnd(std::remove_if(unknown_.begin(), unknown_.end(),
- [key](const std::pair<Slice, Slice>& p) {
- return p.first.as_string_view() == key;
- }));
- }
-
- y_absl::optional<y_absl::string_view> GetStringValueUnknown(
- y_absl::string_view key, TString* backing) const {
- y_absl::optional<y_absl::string_view> out;
- for (const auto& p : unknown_) {
- if (p.first.as_string_view() == key) {
- if (!out.has_value()) {
- out = p.second.as_string_view();
- } else {
- out = *backing = y_absl::StrCat(*out, ",", p.second.as_string_view());
- }
- }
- }
- return out;
- }
-
// Table of known metadata types.
- Table<Value<Traits>...> table_;
- // Backing store for added metadata.
- ChunkedVector<std::pair<Slice, Slice>, 10> unknown_;
+ PackedTable<Value<Traits>...> table_;
+ metadata_detail::UnknownMap unknown_;
};
// Ok/not-ok check for metadata maps that contain GrpcStatusMetadata, so that
@@ -1324,8 +1244,8 @@ template <typename Derived, typename... Traits>
MetadataMap<Derived, Traits...>::MetadataMap(MetadataMap&& other) noexcept
: table_(std::move(other.table_)), unknown_(std::move(other.unknown_)) {}
-// We never create MetadataMap directly, instead we create Derived, but we want
-// to be able to move it without redeclaring this.
+// We never create MetadataMap directly, instead we create Derived, but we
+// want to be able to move it without redeclaring this.
// NOLINTNEXTLINE(misc-unconventional-assign-operator)
template <typename Derived, typename... Traits>
Derived& MetadataMap<Derived, Traits...>::operator=(
@@ -1355,7 +1275,7 @@ template <typename Derived, typename... Traits>
Derived MetadataMap<Derived, Traits...>::Copy() const {
Derived out(unknown_.arena());
metadata_detail::CopySink<Derived> sink(&out);
- Encode(&sink);
+ ForEach(&sink);
return out;
}
@@ -1376,12 +1296,13 @@ using grpc_metadata_batch_base = grpc_core::MetadataMap<
grpc_core::GrpcTimeoutMetadata, grpc_core::GrpcPreviousRpcAttemptsMetadata,
grpc_core::GrpcRetryPushbackMsMetadata, grpc_core::UserAgentMetadata,
grpc_core::GrpcMessageMetadata, grpc_core::HostMetadata,
- grpc_core::XEndpointLoadMetricsBinMetadata,
+ grpc_core::EndpointLoadMetricsBinMetadata,
grpc_core::GrpcServerStatsBinMetadata, grpc_core::GrpcTraceBinMetadata,
grpc_core::GrpcTagsBinMetadata, grpc_core::GrpcLbClientStatsMetadata,
grpc_core::LbCostBinMetadata, grpc_core::LbTokenMetadata,
// Non-encodable things
- grpc_core::GrpcStreamNetworkState, grpc_core::GrpcStatusContext>;
+ grpc_core::GrpcStreamNetworkState, grpc_core::PeerString,
+ grpc_core::GrpcStatusContext, grpc_core::WaitForReady>;
struct grpc_metadata_batch : public grpc_metadata_batch_base {
using grpc_metadata_batch_base::grpc_metadata_batch_base;
diff --git a/contrib/libs/grpc/src/core/lib/transport/parsed_metadata.cc b/contrib/libs/grpc/src/core/lib/transport/parsed_metadata.cc
index c1df3c1b19..2607f9055b 100644
--- a/contrib/libs/grpc/src/core/lib/transport/parsed_metadata.cc
+++ b/contrib/libs/grpc/src/core/lib/transport/parsed_metadata.cc
@@ -16,6 +16,8 @@
#include "src/core/lib/transport/parsed_metadata.h"
+#include "src/core/lib/slice/slice_refcount.h"
+
namespace grpc_core {
namespace metadata_detail {
diff --git a/contrib/libs/grpc/src/core/lib/transport/parsed_metadata.h b/contrib/libs/grpc/src/core/lib/transport/parsed_metadata.h
index 57df15d3a5..28564c8c48 100644
--- a/contrib/libs/grpc/src/core/lib/transport/parsed_metadata.h
+++ b/contrib/libs/grpc/src/core/lib/transport/parsed_metadata.h
@@ -17,16 +17,23 @@
#include <grpc/support/port_platform.h>
+#include <string.h>
+
#include <cstdint>
-#include <type_traits>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include "y_absl/functional/function_ref.h"
#include "y_absl/meta/type_traits.h"
#include "y_absl/strings/match.h"
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+
+#include <grpc/slice.h>
#include "src/core/lib/gprpp/time.h"
-#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/slice/slice.h"
-#include "src/core/lib/surface/validate_metadata.h"
namespace grpc_core {
@@ -146,7 +153,7 @@ class ParsedMetadata {
// Construct metadata from a string key, slice value pair.
ParsedMetadata(Slice key, Slice value)
: vtable_(ParsedMetadata::KeyValueVTable(key.as_string_view())),
- transport_size_(key.size() + value.size() + 32) {
+ transport_size_(static_cast<uint32_t>(key.size() + value.size() + 32)) {
value_.pointer =
new std::pair<Slice, Slice>(std::move(key), std::move(value));
}
@@ -185,7 +192,9 @@ class ParsedMetadata {
ParsedMetadata result;
result.vtable_ = vtable_;
result.value_ = value_;
- result.transport_size_ = TransportSize(key().length(), value.length());
+ result.transport_size_ =
+ TransportSize(static_cast<uint32_t>(key().length()),
+ static_cast<uint32_t>(value.length()));
vtable_->with_new_value(&value, on_error, &result);
return result;
}
@@ -371,7 +380,7 @@ ParsedMetadata<MetadataContainer>::KeyValueVTable(y_absl::string_view key) {
};
static const auto set = [](const Buffer& value, MetadataContainer* map) {
auto* p = static_cast<KV*>(value.pointer);
- map->AppendUnknown(p->first.as_string_view(), p->second.Ref());
+ map->unknown_.Append(p->first.as_string_view(), p->second.Ref());
};
static const auto with_new_value = [](Slice* value, MetadataParseErrorFn,
ParsedMetadata* result) {
diff --git a/contrib/libs/grpc/src/core/lib/transport/status_conversion.cc b/contrib/libs/grpc/src/core/lib/transport/status_conversion.cc
index acfd5c5eee..d301c2a36b 100644
--- a/contrib/libs/grpc/src/core/lib/transport/status_conversion.cc
+++ b/contrib/libs/grpc/src/core/lib/transport/status_conversion.cc
@@ -48,7 +48,7 @@ grpc_status_code grpc_http2_error_to_grpc_status(
case GRPC_HTTP2_CANCEL:
/* http2 cancel translates to STATUS_CANCELLED iff deadline hasn't been
* exceeded */
- return grpc_core::ExecCtx::Get()->Now() > deadline
+ return grpc_core::Timestamp::Now() > deadline
? GRPC_STATUS_DEADLINE_EXCEEDED
: GRPC_STATUS_CANCELLED;
case GRPC_HTTP2_ENHANCE_YOUR_CALM:
diff --git a/contrib/libs/grpc/src/core/lib/transport/status_conversion.h b/contrib/libs/grpc/src/core/lib/transport/status_conversion.h
index 73a58fb96c..1a1681a461 100644
--- a/contrib/libs/grpc/src/core/lib/transport/status_conversion.h
+++ b/contrib/libs/grpc/src/core/lib/transport/status_conversion.h
@@ -21,9 +21,9 @@
#include <grpc/support/port_platform.h>
-#include <grpc/grpc.h>
+#include <grpc/status.h>
-#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/transport/http2_errors.h"
/* Conversion of grpc status codes to http2 error codes (for RST_STREAM) */
diff --git a/contrib/libs/grpc/src/core/lib/transport/tcp_connect_handshaker.cc b/contrib/libs/grpc/src/core/lib/transport/tcp_connect_handshaker.cc
new file mode 100644
index 0000000000..0b7df01033
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/transport/tcp_connect_handshaker.cc
@@ -0,0 +1,251 @@
+//
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/transport/tcp_connect_handshaker.h"
+
+#include <memory>
+
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/memory/memory.h"
+#include "y_absl/status/statusor.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/slice.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+
+#include "src/core/lib/address_utils/parse_address.h"
+#include "src/core/lib/channel/channel_args.h"
+#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/event_engine/channel_args_endpoint_config.h"
+#include "src/core/lib/gprpp/debug_location.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/iomgr/polling_entity.h"
+#include "src/core/lib/iomgr/pollset_set.h"
+#include "src/core/lib/iomgr/resolved_address.h"
+#include "src/core/lib/iomgr/tcp_client.h"
+#include "src/core/lib/iomgr/tcp_server.h"
+#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/transport/handshaker.h"
+#include "src/core/lib/transport/handshaker_factory.h"
+#include "src/core/lib/transport/handshaker_registry.h"
+#include "src/core/lib/uri/uri_parser.h"
+
+namespace grpc_core {
+
+namespace {
+
+class TCPConnectHandshaker : public Handshaker {
+ public:
+ explicit TCPConnectHandshaker(grpc_pollset_set* pollset_set);
+ void Shutdown(grpc_error_handle why) override;
+ void DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
+ grpc_closure* on_handshake_done,
+ HandshakerArgs* args) override;
+ const char* name() const override { return "tcp_connect"; }
+
+ private:
+ ~TCPConnectHandshaker() override;
+ void CleanupArgsForFailureLocked() Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
+ void FinishLocked(grpc_error_handle error) Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
+ static void Connected(void* arg, grpc_error_handle error);
+
+ Mutex mu_;
+ bool shutdown_ Y_ABSL_GUARDED_BY(mu_) = false;
+ // Endpoint and read buffer to destroy after a shutdown.
+ grpc_endpoint* endpoint_to_destroy_ Y_ABSL_GUARDED_BY(mu_) = nullptr;
+ grpc_slice_buffer* read_buffer_to_destroy_ Y_ABSL_GUARDED_BY(mu_) = nullptr;
+ grpc_closure* on_handshake_done_ Y_ABSL_GUARDED_BY(mu_) = nullptr;
+ grpc_pollset_set* interested_parties_ = nullptr;
+ grpc_polling_entity pollent_;
+ HandshakerArgs* args_ = nullptr;
+ bool bind_endpoint_to_pollset_ = false;
+ grpc_resolved_address addr_;
+ grpc_closure connected_;
+};
+
+TCPConnectHandshaker::TCPConnectHandshaker(grpc_pollset_set* pollset_set)
+ : interested_parties_(grpc_pollset_set_create()),
+ pollent_(grpc_polling_entity_create_from_pollset_set(pollset_set)) {
+ // Interested parties might be null for platforms like Apple.
+ // Explicitly check before adding/deleting from pollset_set to handle this
+ // use case.
+ if (interested_parties_ != nullptr) {
+ grpc_polling_entity_add_to_pollset_set(&pollent_, interested_parties_);
+ }
+ GRPC_CLOSURE_INIT(&connected_, Connected, this, grpc_schedule_on_exec_ctx);
+}
+
+void TCPConnectHandshaker::Shutdown(grpc_error_handle why) {
+ // TODO(anramach): After migration to EventEngine, cancel the in-progress
+ // TCP connection attempt.
+ {
+ MutexLock lock(&mu_);
+ if (!shutdown_) {
+ shutdown_ = true;
+ // If we are shutting down while connecting, respond back with
+ // handshake done.
+ // The callback from grpc_tcp_client_connect will perform
+ // the necessary clean up.
+ if (on_handshake_done_ != nullptr) {
+ CleanupArgsForFailureLocked();
+ FinishLocked(
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("tcp handshaker shutdown"));
+ }
+ }
+ }
+ GRPC_ERROR_UNREF(why);
+}
+
+void TCPConnectHandshaker::DoHandshake(grpc_tcp_server_acceptor* /*acceptor*/,
+ grpc_closure* on_handshake_done,
+ HandshakerArgs* args) {
+ {
+ MutexLock lock(&mu_);
+ on_handshake_done_ = on_handshake_done;
+ }
+ GPR_ASSERT(args->endpoint == nullptr);
+ args_ = args;
+ y_absl::StatusOr<URI> uri = URI::Parse(
+ args->args.GetString(GRPC_ARG_TCP_HANDSHAKER_RESOLVED_ADDRESS).value());
+ if (!uri.ok() || !grpc_parse_uri(*uri, &addr_)) {
+ MutexLock lock(&mu_);
+ FinishLocked(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
+ "Resolved address in invalid format"));
+ return;
+ }
+ bind_endpoint_to_pollset_ =
+ args->args.GetBool(GRPC_ARG_TCP_HANDSHAKER_BIND_ENDPOINT_TO_POLLSET)
+ .value_or(false);
+ // Update args to not contain the args relevant to TCP connect handshaker.
+ args->args = args->args.Remove(GRPC_ARG_TCP_HANDSHAKER_RESOLVED_ADDRESS)
+ .Remove(GRPC_ARG_TCP_HANDSHAKER_BIND_ENDPOINT_TO_POLLSET);
+ // In some implementations, the closure can be flushed before
+ // grpc_tcp_client_connect() returns, and since the closure requires access
+ // to mu_, this can result in a deadlock (see
+ // https://github.com/grpc/grpc/issues/16427 for details).
+ // grpc_tcp_client_connect() will fill endpoint_ with proper contents, and we
+ // make sure that we still exist at that point by taking a ref.
+ Ref().release(); // Ref held by callback.
+ // As we fake the TCP client connection failure when shutdown is called
+ // we don't want to pass args->endpoint directly.
+ // Instead pass endpoint_ and swap this endpoint to
+ // args endpoint on success.
+ // TODO(hork): use EventEngine::Connect if(IsEventEngineClientEnabled())
+ grpc_tcp_client_connect(
+ &connected_, &endpoint_to_destroy_, interested_parties_,
+ grpc_event_engine::experimental::ChannelArgsEndpointConfig(args->args),
+ &addr_, args->deadline);
+}
+
+void TCPConnectHandshaker::Connected(void* arg, grpc_error_handle error) {
+ RefCountedPtr<TCPConnectHandshaker> self(
+ static_cast<TCPConnectHandshaker*>(arg));
+ {
+ MutexLock lock(&self->mu_);
+ if (!GRPC_ERROR_IS_NONE(error) || self->shutdown_) {
+ if (GRPC_ERROR_IS_NONE(error)) {
+ error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("tcp handshaker shutdown");
+ } else {
+ error = GRPC_ERROR_REF(error);
+ }
+ if (self->endpoint_to_destroy_ != nullptr) {
+ grpc_endpoint_shutdown(self->endpoint_to_destroy_,
+ GRPC_ERROR_REF(error));
+ }
+ if (!self->shutdown_) {
+ self->CleanupArgsForFailureLocked();
+ self->shutdown_ = true;
+ self->FinishLocked(error);
+ } else {
+ // The on_handshake_done_ is already as part of shutdown when
+ // connecting So nothing to be done here other than unrefing the
+ // error.
+ GRPC_ERROR_UNREF(error);
+ }
+ return;
+ }
+ GPR_ASSERT(self->endpoint_to_destroy_ != nullptr);
+ self->args_->endpoint = self->endpoint_to_destroy_;
+ self->endpoint_to_destroy_ = nullptr;
+ if (self->bind_endpoint_to_pollset_) {
+ grpc_endpoint_add_to_pollset_set(self->args_->endpoint,
+ self->interested_parties_);
+ }
+ self->FinishLocked(GRPC_ERROR_NONE);
+ }
+}
+
+TCPConnectHandshaker::~TCPConnectHandshaker() {
+ if (endpoint_to_destroy_ != nullptr) {
+ grpc_endpoint_destroy(endpoint_to_destroy_);
+ }
+ if (read_buffer_to_destroy_ != nullptr) {
+ grpc_slice_buffer_destroy_internal(read_buffer_to_destroy_);
+ gpr_free(read_buffer_to_destroy_);
+ }
+ grpc_pollset_set_destroy(interested_parties_);
+}
+
+void TCPConnectHandshaker::CleanupArgsForFailureLocked() {
+ read_buffer_to_destroy_ = args_->read_buffer;
+ args_->read_buffer = nullptr;
+ args_->args = ChannelArgs();
+}
+
+void TCPConnectHandshaker::FinishLocked(grpc_error_handle error) {
+ if (interested_parties_ != nullptr) {
+ grpc_polling_entity_del_from_pollset_set(&pollent_, interested_parties_);
+ }
+ ExecCtx::Run(DEBUG_LOCATION, on_handshake_done_, error);
+ on_handshake_done_ = nullptr;
+}
+
+//
+// TCPConnectHandshakerFactory
+//
+
+class TCPConnectHandshakerFactory : public HandshakerFactory {
+ public:
+ void AddHandshakers(const ChannelArgs& /*args*/,
+ grpc_pollset_set* interested_parties,
+ HandshakeManager* handshake_mgr) override {
+ handshake_mgr->Add(
+ MakeRefCounted<TCPConnectHandshaker>(interested_parties));
+ }
+ ~TCPConnectHandshakerFactory() override = default;
+};
+
+} // namespace
+
+void RegisterTCPConnectHandshaker(CoreConfiguration::Builder* builder) {
+ builder->handshaker_registry()->RegisterHandshakerFactory(
+ true /* at_start */, HANDSHAKER_CLIENT,
+ y_absl::make_unique<TCPConnectHandshakerFactory>());
+}
+
+} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/lib/transport/tcp_connect_handshaker.h b/contrib/libs/grpc/src/core/lib/transport/tcp_connect_handshaker.h
new file mode 100644
index 0000000000..7f845606fa
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/transport/tcp_connect_handshaker.h
@@ -0,0 +1,39 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#ifndef GRPC_CORE_LIB_TRANSPORT_TCP_CONNECT_HANDSHAKER_H
+#define GRPC_CORE_LIB_TRANSPORT_TCP_CONNECT_HANDSHAKER_H
+
+#include <grpc/support/port_platform.h>
+
+#include "src/core/lib/config/core_configuration.h"
+
+// Indicates the address that the tcp connect handshaker should connect to.
+#define GRPC_ARG_TCP_HANDSHAKER_RESOLVED_ADDRESS \
+ "grpc.internal.tcp_handshaker_resolved_address"
+
+// Whether the TCP connect handshaker should bind the endpoint to the pollset.
+#define GRPC_ARG_TCP_HANDSHAKER_BIND_ENDPOINT_TO_POLLSET \
+ "grpc.internal.tcp_handshaker_bind_endpoint_to_pollset"
+
+namespace grpc_core {
+
+// Register the TCP Connect handshaker into the configuration builder.
+void RegisterTCPConnectHandshaker(CoreConfiguration::Builder* builder);
+
+} // namespace grpc_core
+
+#endif // GRPC_CORE_LIB_TRANSPORT_TCP_CONNECT_HANDSHAKER_H \ No newline at end of file
diff --git a/contrib/libs/grpc/src/core/lib/transport/timeout_encoding.cc b/contrib/libs/grpc/src/core/lib/transport/timeout_encoding.cc
index 1c5febe2cd..b0237d9890 100644
--- a/contrib/libs/grpc/src/core/lib/transport/timeout_encoding.cc
+++ b/contrib/libs/grpc/src/core/lib/transport/timeout_encoding.cc
@@ -20,14 +20,10 @@
#include "src/core/lib/transport/timeout_encoding.h"
-#include <stdio.h>
-#include <string.h>
-
-#include <cstdint>
+#include "y_absl/base/attributes.h"
#include <grpc/support/log.h>
-
-#include "src/core/lib/gpr/string.h"
+#include <grpc/support/time.h>
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/transport/timeout_encoding.h b/contrib/libs/grpc/src/core/lib/transport/timeout_encoding.h
index 83b850161f..7c4027c925 100644
--- a/contrib/libs/grpc/src/core/lib/transport/timeout_encoding.h
+++ b/contrib/libs/grpc/src/core/lib/transport/timeout_encoding.h
@@ -21,7 +21,11 @@
#include <grpc/support/port_platform.h>
-#include "src/core/lib/iomgr/exec_ctx.h"
+#include <stdint.h>
+
+#include "y_absl/types/optional.h"
+
+#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/slice/slice.h"
namespace grpc_core {
diff --git a/contrib/libs/grpc/src/core/lib/transport/transport.cc b/contrib/libs/grpc/src/core/lib/transport/transport.cc
index cb1c47890d..35e28349ae 100644
--- a/contrib/libs/grpc/src/core/lib/transport/transport.cc
+++ b/contrib/libs/grpc/src/core/lib/transport/transport.cc
@@ -22,18 +22,12 @@
#include <string.h>
-#include <grpc/support/alloc.h>
-#include <grpc/support/atm.h>
-#include <grpc/support/log.h>
-#include <grpc/support/sync.h>
+#include <new>
#include "src/core/lib/gpr/alloc.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/gprpp/memory.h"
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/executor.h"
#include "src/core/lib/iomgr/iomgr.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
#include "src/core/lib/transport/transport_impl.h"
grpc_core::DebugOnlyTraceFlag grpc_trace_stream_refcount(false,
@@ -157,34 +151,38 @@ grpc_endpoint* grpc_transport_get_endpoint(grpc_transport* transport) {
void grpc_transport_stream_op_batch_finish_with_failure(
grpc_transport_stream_op_batch* batch, grpc_error_handle error,
grpc_core::CallCombiner* call_combiner) {
- if (batch->send_message) {
- batch->payload->send_message.send_message.reset();
- }
+ grpc_core::CallCombinerClosureList closures;
+ grpc_transport_stream_op_batch_queue_finish_with_failure(batch, error,
+ &closures);
+ // Execute closures.
+ closures.RunClosures(call_combiner);
+}
+
+void grpc_transport_stream_op_batch_queue_finish_with_failure(
+ grpc_transport_stream_op_batch* batch, grpc_error_handle error,
+ grpc_core::CallCombinerClosureList* closures) {
if (batch->cancel_stream) {
GRPC_ERROR_UNREF(batch->payload->cancel_stream.cancel_error);
}
// Construct a list of closures to execute.
- grpc_core::CallCombinerClosureList closures;
if (batch->recv_initial_metadata) {
- closures.Add(
+ closures->Add(
batch->payload->recv_initial_metadata.recv_initial_metadata_ready,
GRPC_ERROR_REF(error), "failing recv_initial_metadata_ready");
}
if (batch->recv_message) {
- closures.Add(batch->payload->recv_message.recv_message_ready,
- GRPC_ERROR_REF(error), "failing recv_message_ready");
+ closures->Add(batch->payload->recv_message.recv_message_ready,
+ GRPC_ERROR_REF(error), "failing recv_message_ready");
}
if (batch->recv_trailing_metadata) {
- closures.Add(
+ closures->Add(
batch->payload->recv_trailing_metadata.recv_trailing_metadata_ready,
GRPC_ERROR_REF(error), "failing recv_trailing_metadata_ready");
}
if (batch->on_complete != nullptr) {
- closures.Add(batch->on_complete, GRPC_ERROR_REF(error),
- "failing on_complete");
+ closures->Add(batch->on_complete, GRPC_ERROR_REF(error),
+ "failing on_complete");
}
- // Execute closures.
- closures.RunClosures(call_combiner);
GRPC_ERROR_UNREF(error);
}
diff --git a/contrib/libs/grpc/src/core/lib/transport/transport.h b/contrib/libs/grpc/src/core/lib/transport/transport.h
index 559a49978b..e8cff25738 100644
--- a/contrib/libs/grpc/src/core/lib/transport/transport.h
+++ b/contrib/libs/grpc/src/core/lib/transport/transport.h
@@ -22,20 +22,45 @@
#include <grpc/support/port_platform.h>
#include <stddef.h>
+#include <stdint.h>
+#include <string.h>
+
+#include <functional>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/status/status.h"
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/slice.h>
+#include <grpc/status.h>
+#include <grpc/support/atm.h>
+#include <grpc/support/log.h>
#include "src/core/lib/channel/context.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/iomgr/call_combiner.h"
+#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/iomgr/polling_entity.h"
-#include "src/core/lib/iomgr/pollset.h"
-#include "src/core/lib/iomgr/pollset_set.h"
#include "src/core/lib/promise/arena_promise.h"
+#include "src/core/lib/promise/context.h"
+#include "src/core/lib/promise/latch.h"
#include "src/core/lib/resource_quota/arena.h"
-#include "src/core/lib/slice/slice_internal.h"
-#include "src/core/lib/transport/byte_stream.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/slice/slice_buffer.h"
#include "src/core/lib/transport/connectivity_state.h"
#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport_fwd.h"
+
+struct grpc_transport_stream_op_batch_payload;
/* Minimum and maximum protocol accepted versions. */
#define GRPC_PROTOCOL_VERSION_MAX_MAJOR 2
@@ -43,6 +68,19 @@
#define GRPC_PROTOCOL_VERSION_MIN_MAJOR 2
#define GRPC_PROTOCOL_VERSION_MIN_MINOR 1
+#define GRPC_ARG_TRANSPORT "grpc.internal.transport"
+
+/** Internal bit flag for grpc_begin_message's \a flags signaling the use of
+ * compression for the message. (Does not apply for stream compression.) */
+#define GRPC_WRITE_INTERNAL_COMPRESS (0x80000000u)
+/** Internal bit flag for determining whether the message was compressed and had
+ * to be decompressed by the message_decompress filter. (Does not apply for
+ * stream compression.) */
+#define GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED (0x40000000u)
+/** Mask of all valid internal flags. */
+#define GRPC_WRITE_INTERNAL_USED_MASK \
+ (GRPC_WRITE_INTERNAL_COMPRESS | GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED)
+
namespace grpc_core {
// TODO(ctiller): eliminate once MetadataHandle is constructable directly.
namespace promise_filter_detail {
@@ -97,29 +135,39 @@ class MetadataHandle {
T* handle_ = nullptr;
};
-// Trailing metadata type
+// Server metadata type
// TODO(ctiller): This should be a bespoke instance of MetadataMap<>
-using TrailingMetadata = MetadataHandle<grpc_metadata_batch>;
+using ServerMetadata = grpc_metadata_batch;
+using ServerMetadataHandle = MetadataHandle<ServerMetadata>;
// Ok/not-ok check for trailing metadata, so that it can be used as result types
// for TrySeq.
-inline bool IsStatusOk(const TrailingMetadata& m) {
+inline bool IsStatusOk(const ServerMetadataHandle& m) {
return m->get(GrpcStatusMetadata()).value_or(GRPC_STATUS_UNKNOWN) ==
GRPC_STATUS_OK;
}
// Client initial metadata type
// TODO(ctiller): This should be a bespoke instance of MetadataMap<>
-using ClientInitialMetadata = MetadataHandle<grpc_metadata_batch>;
+using ClientMetadata = grpc_metadata_batch;
+using ClientMetadataHandle = MetadataHandle<ClientMetadata>;
+
+// Server initial metadata type
+// TODO(ctiller): This should be a bespoke instance of MetadataMap<>
+using ServerMetadataHandle = MetadataHandle<grpc_metadata_batch>;
+
+struct CallArgs {
+ ClientMetadataHandle client_initial_metadata;
+ Latch<ServerMetadata*>* server_initial_metadata;
+};
using NextPromiseFactory =
- std::function<ArenaPromise<TrailingMetadata>(ClientInitialMetadata)>;
+ std::function<ArenaPromise<ServerMetadataHandle>(CallArgs)>;
+
} // namespace grpc_core
/* forward declarations */
-typedef struct grpc_transport grpc_transport;
-
/* grpc_stream doesn't actually exist. It's used as a typesafe
opaque pointer for whatever data the transport wants to track
for a stream. */
@@ -294,17 +342,8 @@ struct grpc_transport_stream_op_batch_payload {
explicit grpc_transport_stream_op_batch_payload(
grpc_call_context_element* context)
: context(context) {}
- ~grpc_transport_stream_op_batch_payload() {
- // We don't really own `send_message`, so release ownership and let the
- // owner clean the data.
- (void)send_message.send_message.release();
- }
-
struct {
grpc_metadata_batch* send_initial_metadata = nullptr;
- /** Iff send_initial_metadata != NULL, flags associated with
- send_initial_metadata: a bitfield of GRPC_INITIAL_METADATA_xxx */
- uint32_t send_initial_metadata_flags = 0;
// If non-NULL, will be set by the transport to the peer string (a char*).
// The transport retains ownership of the string.
// Note: This pointer may be used by the transport after the
@@ -328,7 +367,8 @@ struct grpc_transport_stream_op_batch_payload {
// the op gets down to the transport) takes ownership.
// The batch's on_complete will not be called until after the byte
// stream is orphaned.
- grpc_core::OrphanablePtr<grpc_core::ByteStream> send_message;
+ grpc_core::SliceBuffer* send_message;
+ uint32_t flags = 0;
// Set by the transport if the stream has been closed for writes. If this
// is set and send message op is present, we set the operation to be a
// failure without sending a cancel OP down the stack. This is so that the
@@ -345,10 +385,6 @@ struct grpc_transport_stream_op_batch_payload {
struct {
grpc_metadata_batch* recv_initial_metadata = nullptr;
- // Flags are used only on the server side. If non-null, will be set to
- // a bitfield of the GRPC_INITIAL_METADATA_xxx macros (e.g., to
- // indicate if the call is idempotent).
- uint32_t* recv_flags = nullptr;
/** Should be enqueued when initial metadata is ready to be processed. */
grpc_closure* recv_initial_metadata_ready = nullptr;
// If not NULL, will be set to true if trailing metadata is
@@ -367,10 +403,11 @@ struct grpc_transport_stream_op_batch_payload {
} recv_initial_metadata;
struct {
- // Will be set by the transport to point to the byte stream
- // containing a received message.
- // Will be NULL if trailing metadata is received instead of a message.
- grpc_core::OrphanablePtr<grpc_core::ByteStream>* recv_message = nullptr;
+ // Will be set by the transport to point to the byte stream containing a
+ // received message. Will be nullopt if trailing metadata is received
+ // instead of a message.
+ y_absl::optional<grpc_core::SliceBuffer>* recv_message = nullptr;
+ uint32_t* flags = nullptr;
// Was this recv_message failed for reasons other than a clean end-of-stream
bool* call_failed_before_recv_message = nullptr;
/** Should be enqueued when one message is ready to be processed. */
@@ -499,6 +536,9 @@ void grpc_transport_destroy_stream(grpc_transport* transport,
void grpc_transport_stream_op_batch_finish_with_failure(
grpc_transport_stream_op_batch* batch, grpc_error_handle error,
grpc_core::CallCombiner* call_combiner);
+void grpc_transport_stream_op_batch_queue_finish_with_failure(
+ grpc_transport_stream_op_batch* batch, grpc_error_handle error,
+ grpc_core::CallCombinerClosureList* closures);
TString grpc_transport_stream_op_batch_string(
grpc_transport_stream_op_batch* op);
diff --git a/contrib/libs/grpc/src/core/lib/transport/transport_fwd.h b/contrib/libs/grpc/src/core/lib/transport/transport_fwd.h
new file mode 100644
index 0000000000..8bba44251d
--- /dev/null
+++ b/contrib/libs/grpc/src/core/lib/transport/transport_fwd.h
@@ -0,0 +1,20 @@
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef GRPC_CORE_LIB_TRANSPORT_TRANSPORT_FWD_H
+#define GRPC_CORE_LIB_TRANSPORT_TRANSPORT_FWD_H
+
+typedef struct grpc_transport grpc_transport;
+
+#endif // GRPC_CORE_LIB_TRANSPORT_TRANSPORT_FWD_H
diff --git a/contrib/libs/grpc/src/core/lib/transport/transport_impl.h b/contrib/libs/grpc/src/core/lib/transport/transport_impl.h
index 11e99935c6..7297cda634 100644
--- a/contrib/libs/grpc/src/core/lib/transport/transport_impl.h
+++ b/contrib/libs/grpc/src/core/lib/transport/transport_impl.h
@@ -21,7 +21,17 @@
#include <grpc/support/port_platform.h>
+#include <stddef.h>
+
+#include "y_absl/strings/string_view.h"
+
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/endpoint.h"
+#include "src/core/lib/iomgr/iomgr_fwd.h"
+#include "src/core/lib/promise/arena_promise.h"
+#include "src/core/lib/resource_quota/arena.h"
#include "src/core/lib/transport/transport.h"
+#include "src/core/lib/transport/transport_fwd.h"
typedef struct grpc_transport_vtable {
/* Memory required for a single stream element - this is allocated by upper
@@ -45,9 +55,8 @@ typedef struct grpc_transport_vtable {
- allocation of memory for call data (sizeof_stream may be ignored)
There is an on-going migration to move all filters to providing this, and
then to drop perform_stream_op. */
- grpc_core::ArenaPromise<grpc_core::TrailingMetadata> (*make_call_promise)(
- grpc_transport* self, grpc_core::ClientInitialMetadata initial_metadata,
- grpc_core::NextPromiseFactory next_promise_factory);
+ grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle> (*make_call_promise)(
+ grpc_transport* self, grpc_core::ClientMetadataHandle initial_metadata);
/* implementation of grpc_transport_set_pollset */
void (*set_pollset)(grpc_transport* self, grpc_stream* stream,
@@ -77,6 +86,8 @@ typedef struct grpc_transport_vtable {
/* an instance of a grpc transport */
struct grpc_transport {
+ struct RawPointerChannelArgTag {};
+ static y_absl::string_view ChannelArgName() { return GRPC_ARG_TRANSPORT; }
/* pointer to a vtable defining operations on this transport */
const grpc_transport_vtable* vtable;
};
diff --git a/contrib/libs/grpc/src/core/lib/transport/transport_op_string.cc b/contrib/libs/grpc/src/core/lib/transport/transport_op_string.cc
index 1d40058541..08121cdd76 100644
--- a/contrib/libs/grpc/src/core/lib/transport/transport_op_string.cc
+++ b/contrib/libs/grpc/src/core/lib/transport/transport_op_string.cc
@@ -18,25 +18,26 @@
#include <grpc/support/port_platform.h>
-#include <inttypes.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-
+#include <algorithm>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include <vector>
-#include "y_absl/strings/escaping.h"
#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
#include "y_absl/strings/str_join.h"
-#include <grpc/support/alloc.h>
-#include <grpc/support/string_util.h>
+#include <grpc/support/log.h>
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/gpr/string.h"
-#include "src/core/lib/slice/slice_string_helpers.h"
+#include "src/core/lib/gprpp/orphanable.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/slice/slice_buffer.h"
#include "src/core/lib/transport/connectivity_state.h"
+#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
/* These routines are here to facilitate debugging - they produce string
representations of various transport data structures */
@@ -54,10 +55,9 @@ TString grpc_transport_stream_op_batch_string(
if (op->send_message) {
if (op->payload->send_message.send_message != nullptr) {
- out.push_back(
- y_absl::StrFormat(" SEND_MESSAGE:flags=0x%08x:len=%d",
- op->payload->send_message.send_message->flags(),
- op->payload->send_message.send_message->length()));
+ out.push_back(y_absl::StrFormat(
+ " SEND_MESSAGE:flags=0x%08x:len=%d", op->payload->send_message.flags,
+ op->payload->send_message.send_message->Length()));
} else {
// This can happen when we check a batch after the transport has
// processed and cleared the send_message op.
@@ -108,14 +108,14 @@ TString grpc_transport_op_string(grpc_transport_op* op) {
op->stop_connectivity_watch));
}
- if (op->disconnect_with_error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
out.push_back(y_absl::StrCat(
" DISCONNECT:", grpc_error_std_string(op->disconnect_with_error)));
}
- if (op->goaway_error != GRPC_ERROR_NONE) {
- out.push_back(y_absl::StrCat(" SEND_GOAWAY:%s",
- grpc_error_std_string(op->goaway_error)));
+ if (!GRPC_ERROR_IS_NONE(op->goaway_error)) {
+ out.push_back(
+ y_absl::StrCat(" SEND_GOAWAY:", grpc_error_std_string(op->goaway_error)));
}
if (op->set_accept_stream) {
diff --git a/contrib/libs/grpc/src/core/lib/uri/uri_parser.cc b/contrib/libs/grpc/src/core/lib/uri/uri_parser.cc
index 20e2492c60..58f81e2732 100644
--- a/contrib/libs/grpc/src/core/lib/uri/uri_parser.cc
+++ b/contrib/libs/grpc/src/core/lib/uri/uri_parser.cc
@@ -18,20 +18,28 @@
#include "src/core/lib/uri/uri_parser.h"
-#include <string.h>
+#include <ctype.h>
+#include <stddef.h>
+#include <algorithm>
+#include <functional>
#include <map>
#include <util/generic/string.h>
#include <util/string/cast.h>
+#include <utility>
+#include "y_absl/status/status.h"
+#include "y_absl/strings/ascii.h"
#include "y_absl/strings/escaping.h"
+#include "y_absl/strings/match.h"
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/str_format.h"
+#include "y_absl/strings/str_join.h"
#include "y_absl/strings/str_split.h"
+#include "y_absl/strings/strip.h"
#include <grpc/support/log.h>
-#include "src/core/lib/gpr/string.h"
-
namespace grpc_core {
namespace {
diff --git a/contrib/libs/grpc/src/core/lib/uri/uri_parser.h b/contrib/libs/grpc/src/core/lib/uri/uri_parser.h
index 602ef9b52a..30c247aafc 100644
--- a/contrib/libs/grpc/src/core/lib/uri/uri_parser.h
+++ b/contrib/libs/grpc/src/core/lib/uri/uri_parser.h
@@ -19,8 +19,6 @@
#include <grpc/support/port_platform.h>
-#include <stddef.h>
-
#include <map>
#include <util/generic/string.h>
#include <util/string/cast.h>
diff --git a/contrib/libs/grpc/src/core/plugin_registry/grpc_plugin_registry.cc b/contrib/libs/grpc/src/core/plugin_registry/grpc_plugin_registry.cc
index aafcd98362..6ed1e0dba6 100644
--- a/contrib/libs/grpc/src/core/plugin_registry/grpc_plugin_registry.cc
+++ b/contrib/libs/grpc/src/core/plugin_registry/grpc_plugin_registry.cc
@@ -22,52 +22,15 @@
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/surface/builtins.h"
+#include "src/core/lib/transport/http_connect_handshaker.h"
+#include "src/core/lib/transport/tcp_connect_handshaker.h"
extern void grpc_register_extra_plugins(void);
-void grpc_chttp2_plugin_init(void);
-void grpc_chttp2_plugin_shutdown(void);
-void grpc_client_channel_init(void);
-void grpc_client_channel_shutdown(void);
-void grpc_lb_policy_grpclb_init(void);
-void grpc_lb_policy_grpclb_shutdown(void);
-void grpc_lb_policy_priority_init(void);
-void grpc_lb_policy_priority_shutdown(void);
-void grpc_lb_policy_weighted_target_init(void);
-void grpc_lb_policy_weighted_target_shutdown(void);
-void grpc_lb_policy_pick_first_init(void);
-void grpc_lb_policy_pick_first_shutdown(void);
-void grpc_lb_policy_round_robin_init(void);
-void grpc_lb_policy_round_robin_shutdown(void);
void grpc_resolver_dns_ares_init(void);
void grpc_resolver_dns_ares_shutdown(void);
-namespace grpc_core {
-void GrpcLbPolicyRingHashInit(void);
-void GrpcLbPolicyRingHashShutdown(void);
-#ifndef GRPC_NO_RLS
-void RlsLbPluginInit();
-void RlsLbPluginShutdown();
-#endif // !GRPC_NO_RLS
-} // namespace grpc_core
void grpc_register_built_in_plugins(void) {
- grpc_register_plugin(grpc_client_channel_init, grpc_client_channel_shutdown);
- grpc_register_plugin(grpc_lb_policy_grpclb_init,
- grpc_lb_policy_grpclb_shutdown);
-#ifndef GRPC_NO_RLS
- grpc_register_plugin(grpc_core::RlsLbPluginInit,
- grpc_core::RlsLbPluginShutdown);
-#endif // !GRPC_NO_RLS
- grpc_register_plugin(grpc_lb_policy_priority_init,
- grpc_lb_policy_priority_shutdown);
- grpc_register_plugin(grpc_lb_policy_weighted_target_init,
- grpc_lb_policy_weighted_target_shutdown);
- grpc_register_plugin(grpc_lb_policy_pick_first_init,
- grpc_lb_policy_pick_first_shutdown);
- grpc_register_plugin(grpc_lb_policy_round_robin_init,
- grpc_lb_policy_round_robin_shutdown);
- grpc_register_plugin(grpc_core::GrpcLbPolicyRingHashInit,
- grpc_core::GrpcLbPolicyRingHashShutdown);
grpc_register_plugin(grpc_resolver_dns_ares_init,
grpc_resolver_dns_ares_shutdown);
grpc_register_extra_plugins();
@@ -80,12 +43,10 @@ extern void BuildClientChannelConfiguration(
extern void SecurityRegisterHandshakerFactories(
CoreConfiguration::Builder* builder);
extern void RegisterClientAuthorityFilter(CoreConfiguration::Builder* builder);
-extern void RegisterClientIdleFilter(CoreConfiguration::Builder* builder);
+extern void RegisterChannelIdleFilters(CoreConfiguration::Builder* builder);
extern void RegisterDeadlineFilter(CoreConfiguration::Builder* builder);
-extern void RegisterGrpcLbLoadReportingFilter(
- CoreConfiguration::Builder* builder);
+extern void RegisterGrpcLbPolicy(CoreConfiguration::Builder* builder);
extern void RegisterHttpFilters(CoreConfiguration::Builder* builder);
-extern void RegisterMaxAgeFilter(CoreConfiguration::Builder* builder);
extern void RegisterMessageSizeFilter(CoreConfiguration::Builder* builder);
extern void RegisterSecurityFilters(CoreConfiguration::Builder* builder);
extern void RegisterServiceConfigChannelArgFilter(
@@ -97,18 +58,39 @@ extern void RegisterNativeDnsResolver(CoreConfiguration::Builder* builder);
extern void RegisterAresDnsResolver(CoreConfiguration::Builder* builder);
extern void RegisterSockaddrResolver(CoreConfiguration::Builder* builder);
extern void RegisterFakeResolver(CoreConfiguration::Builder* builder);
+extern void RegisterPriorityLbPolicy(CoreConfiguration::Builder* builder);
+extern void RegisterOutlierDetectionLbPolicy(
+ CoreConfiguration::Builder* builder);
+extern void RegisterWeightedTargetLbPolicy(CoreConfiguration::Builder* builder);
+extern void RegisterPickFirstLbPolicy(CoreConfiguration::Builder* builder);
+extern void RegisterRoundRobinLbPolicy(CoreConfiguration::Builder* builder);
+extern void RegisterRingHashLbPolicy(CoreConfiguration::Builder* builder);
+extern void RegisterHttpProxyMapper(CoreConfiguration::Builder* builder);
+#ifndef GRPC_NO_RLS
+extern void RegisterRlsLbPolicy(CoreConfiguration::Builder* builder);
+#endif // !GRPC_NO_RLS
#ifdef GPR_SUPPORT_BINDER_TRANSPORT
extern void RegisterBinderResolver(CoreConfiguration::Builder* builder);
#endif
void BuildCoreConfiguration(CoreConfiguration::Builder* builder) {
+ // The order of the handshaker registration is crucial here.
+ // We want TCP connect handshaker to be registered last so that it is added to
+ // the start of the handshaker list.
+ RegisterHttpConnectHandshaker(builder);
+ RegisterTCPConnectHandshaker(builder);
+ RegisterPriorityLbPolicy(builder);
+ RegisterOutlierDetectionLbPolicy(builder);
+ RegisterWeightedTargetLbPolicy(builder);
+ RegisterPickFirstLbPolicy(builder);
+ RegisterRoundRobinLbPolicy(builder);
+ RegisterRingHashLbPolicy(builder);
BuildClientChannelConfiguration(builder);
SecurityRegisterHandshakerFactories(builder);
RegisterClientAuthorityFilter(builder);
- RegisterClientIdleFilter(builder);
- RegisterGrpcLbLoadReportingFilter(builder);
+ RegisterChannelIdleFilters(builder);
+ RegisterGrpcLbPolicy(builder);
RegisterHttpFilters(builder);
- RegisterMaxAgeFilter(builder);
RegisterDeadlineFilter(builder);
RegisterMessageSizeFilter(builder);
RegisterServiceConfigChannelArgFilter(builder);
@@ -118,9 +100,13 @@ void BuildCoreConfiguration(CoreConfiguration::Builder* builder) {
RegisterNativeDnsResolver(builder);
RegisterSockaddrResolver(builder);
RegisterFakeResolver(builder);
+ RegisterHttpProxyMapper(builder);
#ifdef GPR_SUPPORT_BINDER_TRANSPORT
RegisterBinderResolver(builder);
#endif
+#ifndef GRPC_NO_RLS
+ RegisterRlsLbPolicy(builder);
+#endif // !GRPC_NO_RLS
// Run last so it gets a consistent location.
// TODO(ctiller): Is this actually necessary?
RegisterSecurityFilters(builder);
diff --git a/contrib/libs/grpc/src/core/plugin_registry/grpc_plugin_registry_extra.cc b/contrib/libs/grpc/src/core/plugin_registry/grpc_plugin_registry_extra.cc
index 68e792ac8c..8578414b12 100644
--- a/contrib/libs/grpc/src/core/plugin_registry/grpc_plugin_registry_extra.cc
+++ b/contrib/libs/grpc/src/core/plugin_registry/grpc_plugin_registry_extra.cc
@@ -26,37 +26,12 @@ namespace grpc_core {
void XdsClientGlobalInit();
void XdsClientGlobalShutdown();
} // namespace grpc_core
-void grpc_certificate_provider_registry_init(void);
-void grpc_certificate_provider_registry_shutdown(void);
-namespace grpc_core {
-void FileWatcherCertificateProviderInit();
-void FileWatcherCertificateProviderShutdown();
-} // namespace grpc_core
-void grpc_lb_policy_cds_init(void);
-void grpc_lb_policy_cds_shutdown(void);
-void grpc_lb_policy_xds_cluster_impl_init(void);
-void grpc_lb_policy_xds_cluster_impl_shutdown(void);
-void grpc_lb_policy_xds_cluster_resolver_init(void);
-void grpc_lb_policy_xds_cluster_resolver_shutdown(void);
-void grpc_lb_policy_xds_cluster_manager_init(void);
-void grpc_lb_policy_xds_cluster_manager_shutdown(void);
#endif
void grpc_register_extra_plugins() {
#ifndef GRPC_NO_XDS
grpc_register_plugin(grpc_core::XdsClientGlobalInit,
grpc_core::XdsClientGlobalShutdown);
- grpc_register_plugin(grpc_certificate_provider_registry_init,
- grpc_certificate_provider_registry_shutdown);
- grpc_register_plugin(grpc_core::FileWatcherCertificateProviderInit,
- grpc_core::FileWatcherCertificateProviderShutdown);
- grpc_register_plugin(grpc_lb_policy_cds_init, grpc_lb_policy_cds_shutdown);
- grpc_register_plugin(grpc_lb_policy_xds_cluster_impl_init,
- grpc_lb_policy_xds_cluster_impl_shutdown);
- grpc_register_plugin(grpc_lb_policy_xds_cluster_resolver_init,
- grpc_lb_policy_xds_cluster_resolver_shutdown);
- grpc_register_plugin(grpc_lb_policy_xds_cluster_manager_init,
- grpc_lb_policy_xds_cluster_manager_shutdown);
#endif
}
@@ -68,6 +43,14 @@ extern void RegisterXdsChannelStackModifier(
extern void RegisterChannelDefaultCreds(CoreConfiguration::Builder* builder);
extern void RegisterXdsResolver(CoreConfiguration::Builder* builder);
extern void RegisterCloud2ProdResolver(CoreConfiguration::Builder* builder);
+extern void RegisterXdsClusterManagerLbPolicy(
+ CoreConfiguration::Builder* builder);
+extern void RegisterXdsClusterImplLbPolicy(CoreConfiguration::Builder* builder);
+extern void RegisterCdsLbPolicy(CoreConfiguration::Builder* builder);
+extern void RegisterXdsClusterResolverLbPolicy(
+ CoreConfiguration::Builder* builder);
+extern void RegisterFileWatcherCertificateProvider(
+ CoreConfiguration::Builder* builder);
#endif
void RegisterExtraFilters(CoreConfiguration::Builder* builder) {
// Use builder to avoid unused-parameter warning.
@@ -80,6 +63,11 @@ void RegisterExtraFilters(CoreConfiguration::Builder* builder) {
RegisterChannelDefaultCreds(builder);
RegisterXdsResolver(builder);
RegisterCloud2ProdResolver(builder);
+ RegisterXdsClusterManagerLbPolicy(builder);
+ RegisterXdsClusterImplLbPolicy(builder);
+ RegisterCdsLbPolicy(builder);
+ RegisterXdsClusterResolverLbPolicy(builder);
+ RegisterFileWatcherCertificateProvider(builder);
#endif
}
} // namespace grpc_core
diff --git a/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_handshaker_client.cc b/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_handshaker_client.cc
index 4e80c65471..7d5543f85f 100644
--- a/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_handshaker_client.cc
+++ b/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_handshaker_client.cc
@@ -71,7 +71,8 @@ typedef struct alts_grpc_handshaker_client {
* handshaker service. */
grpc_byte_buffer* send_buffer = nullptr;
grpc_byte_buffer* recv_buffer = nullptr;
- grpc_status_code status = GRPC_STATUS_OK;
+ // Used to inject a read failure from tests.
+ bool inject_read_failure = false;
/* Initial metadata to be received from handshaker service. */
grpc_metadata_array recv_initial_metadata;
/* A callback function provided by an application to be invoked when response
@@ -106,6 +107,8 @@ typedef struct alts_grpc_handshaker_client {
recv_message_result* pending_recv_message_result = nullptr;
/* Maximum frame size used by frame protector. */
size_t max_frame_size;
+ // If non-null, will be populated with an error string upon error.
+ TString* error;
} alts_grpc_handshaker_client;
static void handshaker_client_send_buffer_destroy(
@@ -174,10 +177,11 @@ static void maybe_complete_tsi_next(
}
static void handle_response_done(alts_grpc_handshaker_client* client,
- tsi_result status,
+ tsi_result status, TString error,
const unsigned char* bytes_to_send,
size_t bytes_to_send_size,
tsi_handshaker_result* result) {
+ if (client->error != nullptr) *client->error = std::move(error);
recv_message_result* p = grpc_core::Zalloc<recv_message_result>();
p->status = status;
p->bytes_to_send = bytes_to_send;
@@ -193,7 +197,6 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
alts_grpc_handshaker_client* client =
reinterpret_cast<alts_grpc_handshaker_client*>(c);
grpc_byte_buffer* recv_buffer = client->recv_buffer;
- grpc_status_code status = client->status;
alts_tsi_handshaker* handshaker = client->handshaker;
/* Invalid input check. */
if (client->cb == nullptr) {
@@ -204,25 +207,34 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
if (handshaker == nullptr) {
gpr_log(GPR_ERROR,
"handshaker is nullptr in alts_tsi_handshaker_handle_response()");
- handle_response_done(client, TSI_INTERNAL_ERROR, nullptr, 0, nullptr);
+ handle_response_done(
+ client, TSI_INTERNAL_ERROR,
+ "handshaker is nullptr in alts_tsi_handshaker_handle_response()",
+ nullptr, 0, nullptr);
return;
}
/* TSI handshake has been shutdown. */
if (alts_tsi_handshaker_has_shutdown(handshaker)) {
gpr_log(GPR_INFO, "TSI handshake shutdown");
- handle_response_done(client, TSI_HANDSHAKE_SHUTDOWN, nullptr, 0, nullptr);
+ handle_response_done(client, TSI_HANDSHAKE_SHUTDOWN,
+ "TSI handshake shutdown", nullptr, 0, nullptr);
return;
}
- /* Failed grpc call check. */
- if (!is_ok || status != GRPC_STATUS_OK) {
- gpr_log(GPR_INFO, "grpc call made to handshaker service failed");
- handle_response_done(client, TSI_INTERNAL_ERROR, nullptr, 0, nullptr);
+ /* Check for failed grpc read. */
+ if (!is_ok || client->inject_read_failure) {
+ gpr_log(GPR_INFO, "read failed on grpc call to handshaker service");
+ handle_response_done(client, TSI_INTERNAL_ERROR,
+ "read failed on grpc call to handshaker service",
+ nullptr, 0, nullptr);
return;
}
if (recv_buffer == nullptr) {
gpr_log(GPR_ERROR,
"recv_buffer is nullptr in alts_tsi_handshaker_handle_response()");
- handle_response_done(client, TSI_INTERNAL_ERROR, nullptr, 0, nullptr);
+ handle_response_done(
+ client, TSI_INTERNAL_ERROR,
+ "recv_buffer is nullptr in alts_tsi_handshaker_handle_response()",
+ nullptr, 0, nullptr);
return;
}
upb::Arena arena;
@@ -233,14 +245,17 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
/* Invalid handshaker response check. */
if (resp == nullptr) {
gpr_log(GPR_ERROR, "alts_tsi_utils_deserialize_response() failed");
- handle_response_done(client, TSI_DATA_CORRUPTED, nullptr, 0, nullptr);
+ handle_response_done(client, TSI_DATA_CORRUPTED,
+ "alts_tsi_utils_deserialize_response() failed",
+ nullptr, 0, nullptr);
return;
}
const grpc_gcp_HandshakerStatus* resp_status =
grpc_gcp_HandshakerResp_status(resp);
if (resp_status == nullptr) {
gpr_log(GPR_ERROR, "No status in HandshakerResp");
- handle_response_done(client, TSI_DATA_CORRUPTED, nullptr, 0, nullptr);
+ handle_response_done(client, TSI_DATA_CORRUPTED,
+ "No status in HandshakerResp", nullptr, 0, nullptr);
return;
}
upb_StringView out_frames = grpc_gcp_HandshakerResp_out_frames(resp);
@@ -262,7 +277,9 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
alts_tsi_handshaker_result_create(resp, client->is_client, &result);
if (status != TSI_OK) {
gpr_log(GPR_ERROR, "alts_tsi_handshaker_result_create() failed");
- handle_response_done(client, status, nullptr, 0, nullptr);
+ handle_response_done(client, status,
+ "alts_tsi_handshaker_result_create() failed",
+ nullptr, 0, nullptr);
return;
}
alts_tsi_handshaker_result_set_unused_bytes(
@@ -271,13 +288,13 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
}
grpc_status_code code = static_cast<grpc_status_code>(
grpc_gcp_HandshakerStatus_code(resp_status));
+ TString error;
if (code != GRPC_STATUS_OK) {
upb_StringView details = grpc_gcp_HandshakerStatus_details(resp_status);
if (details.size > 0) {
- char* error_details = static_cast<char*>(gpr_zalloc(details.size + 1));
- memcpy(error_details, details.data, details.size);
- gpr_log(GPR_ERROR, "Error from handshaker service:%s", error_details);
- gpr_free(error_details);
+ error = y_absl::StrCat("Status ", code, " from handshaker service: ",
+ y_absl::string_view(details.data, details.size));
+ gpr_log(GPR_ERROR, "%s", error.c_str());
}
}
// TODO(apolcyn): consider short ciruiting handle_response_done and
@@ -285,7 +302,8 @@ void alts_handshaker_client_handle_response(alts_handshaker_client* c,
// handle_response_done's allocation per message received causes
// a performance issue.
handle_response_done(client, alts_tsi_utils_convert_to_tsi_result(code),
- bytes_to_send, bytes_to_send_size, result);
+ std::move(error), bytes_to_send, bytes_to_send_size,
+ result);
}
static tsi_result continue_make_grpc_call(alts_grpc_handshaker_client* client,
@@ -690,7 +708,7 @@ alts_handshaker_client* alts_grpc_handshaker_client_create(
grpc_alts_credentials_options* options, const grpc_slice& target_name,
grpc_iomgr_cb_func grpc_cb, tsi_handshaker_on_next_done_cb cb,
void* user_data, alts_handshaker_client_vtable* vtable_for_testing,
- bool is_client, size_t max_frame_size) {
+ bool is_client, size_t max_frame_size, TString* error) {
if (channel == nullptr || handshaker_service_url == nullptr) {
gpr_log(GPR_ERROR, "Invalid arguments to alts_handshaker_client_create()");
return nullptr;
@@ -713,6 +731,7 @@ alts_handshaker_client* alts_grpc_handshaker_client_create(
client->buffer = static_cast<unsigned char*>(gpr_zalloc(client->buffer_size));
client->handshake_status_details = grpc_empty_slice();
client->max_frame_size = max_frame_size;
+ client->error = error;
grpc_slice slice = grpc_slice_from_copied_string(handshaker_service_url);
client->call =
strcmp(handshaker_service_url, ALTS_HANDSHAKER_SERVICE_URL_FOR_TESTING) ==
@@ -776,7 +795,7 @@ void alts_handshaker_client_set_recv_bytes_for_testing(
void alts_handshaker_client_set_fields_for_testing(
alts_handshaker_client* c, alts_tsi_handshaker* handshaker,
tsi_handshaker_on_next_done_cb cb, void* user_data,
- grpc_byte_buffer* recv_buffer, grpc_status_code status) {
+ grpc_byte_buffer* recv_buffer, bool inject_read_failure) {
GPR_ASSERT(c != nullptr);
alts_grpc_handshaker_client* client =
reinterpret_cast<alts_grpc_handshaker_client*>(c);
@@ -784,7 +803,7 @@ void alts_handshaker_client_set_fields_for_testing(
client->cb = cb;
client->user_data = user_data;
client->recv_buffer = recv_buffer;
- client->status = status;
+ client->inject_read_failure = inject_read_failure;
}
void alts_handshaker_client_check_fields_for_testing(
diff --git a/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_handshaker_client.h b/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_handshaker_client.h
index 133cea5da7..6d5e1ba0ef 100644
--- a/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_handshaker_client.h
+++ b/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_handshaker_client.h
@@ -144,7 +144,7 @@ alts_handshaker_client* alts_grpc_handshaker_client_create(
grpc_alts_credentials_options* options, const grpc_slice& target_name,
grpc_iomgr_cb_func grpc_cb, tsi_handshaker_on_next_done_cb cb,
void* user_data, alts_handshaker_client_vtable* vtable_for_testing,
- bool is_client, size_t max_frame_size);
+ bool is_client, size_t max_frame_size, TString* error);
/**
* This method handles handshaker response returned from ALTS handshaker
diff --git a/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc b/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc
index 2d3935d84e..f0b9630fd9 100644
--- a/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc
+++ b/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc
@@ -391,7 +391,7 @@ static void on_handshaker_service_resp_recv(void* arg,
return;
}
bool success = true;
- if (error != GRPC_ERROR_NONE) {
+ if (!GRPC_ERROR_IS_NONE(error)) {
gpr_log(GPR_INFO,
"ALTS handshaker on_handshaker_service_resp_recv error: %s",
grpc_error_std_string(error).c_str());
@@ -416,7 +416,7 @@ static void on_handshaker_service_resp_recv_dedicated(
static tsi_result alts_tsi_handshaker_continue_handshaker_next(
alts_tsi_handshaker* handshaker, const unsigned char* received_bytes,
size_t received_bytes_size, tsi_handshaker_on_next_done_cb cb,
- void* user_data) {
+ void* user_data, TString* error) {
if (!handshaker->has_created_handshaker_client) {
if (handshaker->channel == nullptr) {
grpc_alts_shared_resource_dedicated_start(
@@ -437,9 +437,10 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next(
handshaker->interested_parties, handshaker->options,
handshaker->target_name, grpc_cb, cb, user_data,
handshaker->client_vtable_for_testing, handshaker->is_client,
- handshaker->max_frame_size);
+ handshaker->max_frame_size, error);
if (client == nullptr) {
gpr_log(GPR_ERROR, "Failed to create ALTS handshaker client");
+ if (error != nullptr) *error = "Failed to create ALTS handshaker client";
return TSI_FAILED_PRECONDITION;
}
{
@@ -448,6 +449,7 @@ static tsi_result alts_tsi_handshaker_continue_handshaker_next(
handshaker->client = client;
if (handshaker->shutdown) {
gpr_log(GPR_INFO, "TSI handshake shutdown");
+ if (error != nullptr) *error = "TSI handshaker shutdown";
return TSI_HANDSHAKE_SHUTDOWN;
}
}
@@ -490,6 +492,7 @@ struct alts_tsi_handshaker_continue_handshaker_next_args {
tsi_handshaker_on_next_done_cb cb;
void* user_data;
grpc_closure closure;
+ TString* error = nullptr;
};
static void alts_tsi_handshaker_create_channel(
@@ -510,7 +513,8 @@ static void alts_tsi_handshaker_create_channel(
tsi_result continue_next_result =
alts_tsi_handshaker_continue_handshaker_next(
handshaker, next_args->received_bytes.get(),
- next_args->received_bytes_size, next_args->cb, next_args->user_data);
+ next_args->received_bytes_size, next_args->cb, next_args->user_data,
+ next_args->error);
if (continue_next_result != TSI_OK) {
next_args->cb(continue_next_result, next_args->user_data, nullptr, 0,
nullptr);
@@ -522,9 +526,10 @@ static tsi_result handshaker_next(
tsi_handshaker* self, const unsigned char* received_bytes,
size_t received_bytes_size, const unsigned char** /*bytes_to_send*/,
size_t* /*bytes_to_send_size*/, tsi_handshaker_result** /*result*/,
- tsi_handshaker_on_next_done_cb cb, void* user_data) {
+ tsi_handshaker_on_next_done_cb cb, void* user_data, TString* error) {
if (self == nullptr || cb == nullptr) {
gpr_log(GPR_ERROR, "Invalid arguments to handshaker_next()");
+ if (error != nullptr) *error = "invalid argument";
return TSI_INVALID_ARGUMENT;
}
alts_tsi_handshaker* handshaker =
@@ -533,6 +538,7 @@ static tsi_result handshaker_next(
grpc_core::MutexLock lock(&handshaker->mu);
if (handshaker->shutdown) {
gpr_log(GPR_INFO, "TSI handshake shutdown");
+ if (error != nullptr) *error = "handshake shutdown";
return TSI_HANDSHAKE_SHUTDOWN;
}
}
@@ -542,6 +548,7 @@ static tsi_result handshaker_next(
args->handshaker = handshaker;
args->received_bytes = nullptr;
args->received_bytes_size = received_bytes_size;
+ args->error = error;
if (received_bytes_size > 0) {
args->received_bytes = std::unique_ptr<unsigned char>(
static_cast<unsigned char*>(gpr_zalloc(received_bytes_size)));
@@ -559,7 +566,7 @@ static tsi_result handshaker_next(
grpc_core::ExecCtx::Run(DEBUG_LOCATION, &args->closure, GRPC_ERROR_NONE);
} else {
tsi_result ok = alts_tsi_handshaker_continue_handshaker_next(
- handshaker, received_bytes, received_bytes_size, cb, user_data);
+ handshaker, received_bytes, received_bytes_size, cb, user_data, error);
if (ok != TSI_OK) {
gpr_log(GPR_ERROR, "Failed to schedule ALTS handshaker requests");
return ok;
@@ -577,11 +584,11 @@ static tsi_result handshaker_next_dedicated(
tsi_handshaker* self, const unsigned char* received_bytes,
size_t received_bytes_size, const unsigned char** bytes_to_send,
size_t* bytes_to_send_size, tsi_handshaker_result** result,
- tsi_handshaker_on_next_done_cb cb, void* user_data) {
+ tsi_handshaker_on_next_done_cb cb, void* user_data, TString* error) {
grpc_core::ExecCtx exec_ctx;
return handshaker_next(self, received_bytes, received_bytes_size,
bytes_to_send, bytes_to_send_size, result, cb,
- user_data);
+ user_data, error);
}
static void handshaker_shutdown(tsi_handshaker* self) {
diff --git a/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h b/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h
index d5ab14dc03..e90d9e9f47 100644
--- a/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h
+++ b/contrib/libs/grpc/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h
@@ -63,7 +63,7 @@ void alts_handshaker_client_check_fields_for_testing(
void alts_handshaker_client_set_fields_for_testing(
alts_handshaker_client* client, alts_tsi_handshaker* handshaker,
tsi_handshaker_on_next_done_cb cb, void* user_data,
- grpc_byte_buffer* recv_buffer, grpc_status_code status);
+ grpc_byte_buffer* recv_buffer, bool inject_read_failure);
void alts_handshaker_client_set_vtable_for_testing(
alts_handshaker_client* client, alts_handshaker_client_vtable* vtable);
diff --git a/contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc b/contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc
index d5455b6d76..1c60e18ea1 100644
--- a/contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc
+++ b/contrib/libs/grpc/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc
@@ -174,7 +174,7 @@ static tsi_result alts_zero_copy_grpc_protector_protect(
static tsi_result alts_zero_copy_grpc_protector_unprotect(
tsi_zero_copy_grpc_protector* self, grpc_slice_buffer* protected_slices,
- grpc_slice_buffer* unprotected_slices) {
+ grpc_slice_buffer* unprotected_slices, int* min_progress_size) {
if (self == nullptr || unprotected_slices == nullptr ||
protected_slices == nullptr) {
gpr_log(GPR_ERROR,
@@ -215,6 +215,14 @@ static tsi_result alts_zero_copy_grpc_protector_unprotect(
return status;
}
}
+ if (min_progress_size != nullptr) {
+ if (protector->parsed_frame_size > kZeroCopyFrameLengthFieldSize) {
+ *min_progress_size =
+ protector->parsed_frame_size - protector->protected_sb.length;
+ } else {
+ *min_progress_size = 1;
+ }
+ }
return TSI_OK;
}
diff --git a/contrib/libs/grpc/src/core/tsi/fake_transport_security.cc b/contrib/libs/grpc/src/core/tsi/fake_transport_security.cc
index ce09cdb749..cd8e3c57d9 100644
--- a/contrib/libs/grpc/src/core/tsi/fake_transport_security.cc
+++ b/contrib/libs/grpc/src/core/tsi/fake_transport_security.cc
@@ -96,7 +96,8 @@ static const char* tsi_fake_handshake_message_to_string(int msg) {
}
static tsi_result tsi_fake_handshake_message_from_string(
- const char* msg_string, tsi_fake_handshake_message* msg) {
+ const char* msg_string, tsi_fake_handshake_message* msg,
+ TString* error) {
for (int i = 0; i < TSI_FAKE_HANDSHAKE_MESSAGE_MAX; i++) {
if (strncmp(msg_string, tsi_fake_handshake_message_strings[i],
strlen(tsi_fake_handshake_message_strings[i])) == 0) {
@@ -105,6 +106,7 @@ static tsi_result tsi_fake_handshake_message_from_string(
}
}
gpr_log(GPR_ERROR, "Invalid handshake message.");
+ if (error != nullptr) *error = "invalid handshake message";
return TSI_DATA_CORRUPTED;
}
@@ -143,6 +145,11 @@ static uint32_t read_frame_size(const grpc_slice_buffer* sb) {
return load32_little_endian(frame_size_buffer);
}
+uint32_t tsi_fake_zero_copy_grpc_protector_next_frame_size(
+ const grpc_slice_buffer* protected_slices) {
+ return read_frame_size(protected_slices);
+}
+
static void tsi_fake_frame_reset(tsi_fake_frame* frame, int needs_draining) {
frame->offset = 0;
frame->needs_draining = needs_draining;
@@ -169,12 +176,16 @@ static void tsi_fake_frame_ensure_size(tsi_fake_frame* frame) {
* This method should not be called if frame->needs_framing is not 0. */
static tsi_result tsi_fake_frame_decode(const unsigned char* incoming_bytes,
size_t* incoming_bytes_size,
- tsi_fake_frame* frame) {
+ tsi_fake_frame* frame,
+ TString* error) {
size_t available_size = *incoming_bytes_size;
size_t to_read_size = 0;
const unsigned char* bytes_cursor = incoming_bytes;
- if (frame->needs_draining) return TSI_INTERNAL_ERROR;
+ if (frame->needs_draining) {
+ if (error != nullptr) *error = "fake handshaker frame needs draining";
+ return TSI_INTERNAL_ERROR;
+ }
if (frame->data == nullptr) {
frame->allocated_size = TSI_FAKE_FRAME_INITIAL_ALLOCATED_SIZE;
frame->data =
@@ -219,9 +230,13 @@ static tsi_result tsi_fake_frame_decode(const unsigned char* incoming_bytes,
* This method should not be called if frame->needs_framing is 0. */
static tsi_result tsi_fake_frame_encode(unsigned char* outgoing_bytes,
size_t* outgoing_bytes_size,
- tsi_fake_frame* frame) {
+ tsi_fake_frame* frame,
+ TString* error) {
size_t to_write_size = frame->size - frame->offset;
- if (!frame->needs_draining) return TSI_INTERNAL_ERROR;
+ if (!frame->needs_draining) {
+ if (error != nullptr) *error = "fake frame needs draining";
+ return TSI_INTERNAL_ERROR;
+ }
if (*outgoing_bytes_size < to_write_size) {
memcpy(outgoing_bytes, frame->data + frame->offset, *outgoing_bytes_size);
frame->offset += *outgoing_bytes_size;
@@ -235,15 +250,14 @@ static tsi_result tsi_fake_frame_encode(unsigned char* outgoing_bytes,
/* Sets the payload of a fake frame to contain the given data blob, where
* data_size indicates the size of data. */
-static tsi_result tsi_fake_frame_set_data(unsigned char* data, size_t data_size,
- tsi_fake_frame* frame) {
+static void tsi_fake_frame_set_data(unsigned char* data, size_t data_size,
+ tsi_fake_frame* frame) {
frame->offset = 0;
frame->size = data_size + TSI_FAKE_FRAME_HEADER_SIZE;
tsi_fake_frame_ensure_size(frame);
store32_little_endian(static_cast<uint32_t>(frame->size), frame->data);
memcpy(frame->data + TSI_FAKE_FRAME_HEADER_SIZE, data, data_size);
tsi_fake_frame_reset(frame, 1 /* needs draining */);
- return TSI_OK;
}
/* Destroys the contents of a fake frame. */
@@ -271,8 +285,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
/* Try to drain first. */
if (frame->needs_draining) {
drained_size = saved_output_size - *num_bytes_written;
- result =
- tsi_fake_frame_encode(protected_output_frames, &drained_size, frame);
+ result = tsi_fake_frame_encode(protected_output_frames, &drained_size,
+ frame, /*error=*/nullptr);
*num_bytes_written += drained_size;
protected_output_frames += drained_size;
if (result != TSI_OK) {
@@ -292,7 +306,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
store32_little_endian(static_cast<uint32_t>(impl->max_frame_size),
frame_header);
written_in_frame_size = TSI_FAKE_FRAME_HEADER_SIZE;
- result = tsi_fake_frame_decode(frame_header, &written_in_frame_size, frame);
+ result = tsi_fake_frame_decode(frame_header, &written_in_frame_size, frame,
+ /*error=*/nullptr);
if (result != TSI_INCOMPLETE_DATA) {
gpr_log(GPR_ERROR, "tsi_fake_frame_decode returned %s",
tsi_result_to_string(result));
@@ -300,7 +315,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
}
}
result =
- tsi_fake_frame_decode(unprotected_bytes, unprotected_bytes_size, frame);
+ tsi_fake_frame_decode(unprotected_bytes, unprotected_bytes_size, frame,
+ /*error=*/nullptr);
if (result != TSI_OK) {
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
return result;
@@ -310,7 +326,8 @@ static tsi_result fake_protector_protect(tsi_frame_protector* self,
if (!frame->needs_draining) return TSI_INTERNAL_ERROR;
if (frame->offset != 0) return TSI_INTERNAL_ERROR;
drained_size = saved_output_size - *num_bytes_written;
- result = tsi_fake_frame_encode(protected_output_frames, &drained_size, frame);
+ result = tsi_fake_frame_encode(protected_output_frames, &drained_size, frame,
+ /*error=*/nullptr);
*num_bytes_written += drained_size;
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
return result;
@@ -332,7 +349,8 @@ static tsi_result fake_protector_protect_flush(
frame->data); /* Overwrite header. */
}
result = tsi_fake_frame_encode(protected_output_frames,
- protected_output_frames_size, frame);
+ protected_output_frames_size, frame,
+ /*error=*/nullptr);
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
*still_pending_size = frame->size - frame->offset;
return result;
@@ -356,7 +374,8 @@ static tsi_result fake_protector_unprotect(
/* Go past the header if needed. */
if (frame->offset == 0) frame->offset = TSI_FAKE_FRAME_HEADER_SIZE;
drained_size = saved_output_size - *num_bytes_written;
- result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame);
+ result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame,
+ /*error=*/nullptr);
unprotected_bytes += drained_size;
*num_bytes_written += drained_size;
if (result != TSI_OK) {
@@ -371,7 +390,8 @@ static tsi_result fake_protector_unprotect(
/* Now process the protected_bytes. */
if (frame->needs_draining) return TSI_INTERNAL_ERROR;
result = tsi_fake_frame_decode(protected_frames_bytes,
- protected_frames_bytes_size, frame);
+ protected_frames_bytes_size, frame,
+ /*error=*/nullptr);
if (result != TSI_OK) {
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
return result;
@@ -382,7 +402,8 @@ static tsi_result fake_protector_unprotect(
if (frame->offset != 0) return TSI_INTERNAL_ERROR;
frame->offset = TSI_FAKE_FRAME_HEADER_SIZE; /* Go past the header. */
drained_size = saved_output_size - *num_bytes_written;
- result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame);
+ result = tsi_fake_frame_encode(unprotected_bytes, &drained_size, frame,
+ /*error=*/nullptr);
*num_bytes_written += drained_size;
if (result == TSI_INCOMPLETE_DATA) result = TSI_OK;
return result;
@@ -432,7 +453,7 @@ static tsi_result fake_zero_copy_grpc_protector_protect(
static tsi_result fake_zero_copy_grpc_protector_unprotect(
tsi_zero_copy_grpc_protector* self, grpc_slice_buffer* protected_slices,
- grpc_slice_buffer* unprotected_slices) {
+ grpc_slice_buffer* unprotected_slices, int* min_progress_size) {
if (self == nullptr || unprotected_slices == nullptr ||
protected_slices == nullptr) {
return TSI_INVALID_ARGUMENT;
@@ -462,6 +483,13 @@ static tsi_result fake_zero_copy_grpc_protector_unprotect(
impl->parsed_frame_size = 0;
grpc_slice_buffer_reset_and_unref_internal(&impl->header_sb);
}
+ if (min_progress_size != nullptr) {
+ if (impl->parsed_frame_size > TSI_FAKE_FRAME_HEADER_SIZE) {
+ *min_progress_size = impl->parsed_frame_size - impl->protected_sb.length;
+ } else {
+ *min_progress_size = 1;
+ }
+ }
return TSI_OK;
}
@@ -567,9 +595,10 @@ static const tsi_handshaker_result_vtable handshaker_result_vtable = {
static tsi_result fake_handshaker_result_create(
const unsigned char* unused_bytes, size_t unused_bytes_size,
- tsi_handshaker_result** handshaker_result) {
+ tsi_handshaker_result** handshaker_result, TString* error) {
if ((unused_bytes_size > 0 && unused_bytes == nullptr) ||
handshaker_result == nullptr) {
+ if (error != nullptr) *error = "invalid argument";
return TSI_INVALID_ARGUMENT;
}
fake_handshaker_result* result = grpc_core::Zalloc<fake_handshaker_result>();
@@ -587,7 +616,8 @@ static tsi_result fake_handshaker_result_create(
/* --- tsi_handshaker methods implementation. ---*/
static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
- tsi_handshaker* self, unsigned char* bytes, size_t* bytes_size) {
+ tsi_handshaker* self, unsigned char* bytes, size_t* bytes_size,
+ TString* error) {
tsi_fake_handshaker* impl = reinterpret_cast<tsi_fake_handshaker*>(self);
tsi_result result = TSI_OK;
if (impl->needs_incoming_message || impl->result == TSI_OK) {
@@ -600,10 +630,9 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
static_cast<tsi_fake_handshake_message>(impl->next_message_to_send + 2);
const char* msg_string =
tsi_fake_handshake_message_to_string(impl->next_message_to_send);
- result = tsi_fake_frame_set_data(
+ tsi_fake_frame_set_data(
reinterpret_cast<unsigned char*>(const_cast<char*>(msg_string)),
strlen(msg_string), &impl->outgoing_frame);
- if (result != TSI_OK) return result;
if (next_message_to_send > TSI_FAKE_HANDSHAKE_MESSAGE_MAX) {
next_message_to_send = TSI_FAKE_HANDSHAKE_MESSAGE_MAX;
}
@@ -614,7 +643,8 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
}
impl->next_message_to_send = next_message_to_send;
}
- result = tsi_fake_frame_encode(bytes, bytes_size, &impl->outgoing_frame);
+ result =
+ tsi_fake_frame_encode(bytes, bytes_size, &impl->outgoing_frame, error);
if (result != TSI_OK) return result;
if (!impl->is_client &&
impl->next_message_to_send == TSI_FAKE_HANDSHAKE_MESSAGE_MAX) {
@@ -630,7 +660,8 @@ static tsi_result fake_handshaker_get_bytes_to_send_to_peer(
}
static tsi_result fake_handshaker_process_bytes_from_peer(
- tsi_handshaker* self, const unsigned char* bytes, size_t* bytes_size) {
+ tsi_handshaker* self, const unsigned char* bytes, size_t* bytes_size,
+ TString* error) {
tsi_result result = TSI_OK;
tsi_fake_handshaker* impl = reinterpret_cast<tsi_fake_handshaker*>(self);
tsi_fake_handshake_message expected_msg =
@@ -641,14 +672,15 @@ static tsi_result fake_handshaker_process_bytes_from_peer(
*bytes_size = 0;
return TSI_OK;
}
- result = tsi_fake_frame_decode(bytes, bytes_size, &impl->incoming_frame);
+ result =
+ tsi_fake_frame_decode(bytes, bytes_size, &impl->incoming_frame, error);
if (result != TSI_OK) return result;
/* We now have a complete frame. */
result = tsi_fake_handshake_message_from_string(
reinterpret_cast<const char*>(impl->incoming_frame.data) +
TSI_FAKE_FRAME_HEADER_SIZE,
- &received_msg);
+ &received_msg, error);
if (result != TSI_OK) {
impl->result = result;
return result;
@@ -691,11 +723,13 @@ static tsi_result fake_handshaker_next(
tsi_handshaker* self, const unsigned char* received_bytes,
size_t received_bytes_size, const unsigned char** bytes_to_send,
size_t* bytes_to_send_size, tsi_handshaker_result** handshaker_result,
- tsi_handshaker_on_next_done_cb /*cb*/, void* /*user_data*/) {
+ tsi_handshaker_on_next_done_cb /*cb*/, void* /*user_data*/,
+ TString* error) {
/* Sanity check the arguments. */
if ((received_bytes_size > 0 && received_bytes == nullptr) ||
bytes_to_send == nullptr || bytes_to_send_size == nullptr ||
handshaker_result == nullptr) {
+ if (error != nullptr) *error = "invalid argument";
return TSI_INVALID_ARGUMENT;
}
tsi_fake_handshaker* handshaker =
@@ -705,8 +739,8 @@ static tsi_result fake_handshaker_next(
/* Decode and process a handshake frame from the peer. */
size_t consumed_bytes_size = received_bytes_size;
if (received_bytes_size > 0) {
- result = fake_handshaker_process_bytes_from_peer(self, received_bytes,
- &consumed_bytes_size);
+ result = fake_handshaker_process_bytes_from_peer(
+ self, received_bytes, &consumed_bytes_size, error);
if (result != TSI_OK) return result;
}
@@ -716,7 +750,8 @@ static tsi_result fake_handshaker_next(
do {
size_t sent_bytes_size = handshaker->outgoing_bytes_buffer_size - offset;
result = fake_handshaker_get_bytes_to_send_to_peer(
- self, handshaker->outgoing_bytes_buffer + offset, &sent_bytes_size);
+ self, handshaker->outgoing_bytes_buffer + offset, &sent_bytes_size,
+ error);
offset += sent_bytes_size;
if (result == TSI_INCOMPLETE_DATA) {
handshaker->outgoing_bytes_buffer_size *= 2;
@@ -742,7 +777,7 @@ static tsi_result fake_handshaker_next(
/* Create a handshaker_result containing the unused bytes. */
result = fake_handshaker_result_create(unused_bytes, unused_bytes_size,
- handshaker_result);
+ handshaker_result, error);
if (result == TSI_OK) {
/* Indicate that the handshake has completed and that a handshaker_result
* has been created. */
diff --git a/contrib/libs/grpc/src/core/tsi/fake_transport_security.h b/contrib/libs/grpc/src/core/tsi/fake_transport_security.h
index 704d9fb1a1..b2cf5ffc15 100644
--- a/contrib/libs/grpc/src/core/tsi/fake_transport_security.h
+++ b/contrib/libs/grpc/src/core/tsi/fake_transport_security.h
@@ -21,6 +21,7 @@
#include <grpc/support/port_platform.h>
+#include "src/core/lib/slice/slice_internal.h"
#include "src/core/tsi/transport_security_interface.h"
/* Value for the TSI_CERTIFICATE_TYPE_PEER_PROPERTY property for FAKE certs. */
@@ -44,4 +45,9 @@ tsi_frame_protector* tsi_create_fake_frame_protector(
tsi_zero_copy_grpc_protector* tsi_create_fake_zero_copy_grpc_protector(
size_t* max_protected_frame_size);
+/* Given a buffer containing slices encrypted by a fake_zero_copy_protector
+ * it parses these protected slices to return the total frame size of the first
+ * contained frame */
+uint32_t tsi_fake_zero_copy_grpc_protector_next_frame_size(
+ const grpc_slice_buffer* protected_slices);
#endif /* GRPC_CORE_TSI_FAKE_TRANSPORT_SECURITY_H */
diff --git a/contrib/libs/grpc/src/core/tsi/local_transport_security.cc b/contrib/libs/grpc/src/core/tsi/local_transport_security.cc
index e563d45a3d..f449fda233 100644
--- a/contrib/libs/grpc/src/core/tsi/local_transport_security.cc
+++ b/contrib/libs/grpc/src/core/tsi/local_transport_security.cc
@@ -119,13 +119,17 @@ tsi_result create_handshaker_result(const unsigned char* received_bytes,
/* --- tsi_handshaker methods implementation. --- */
-tsi_result handshaker_next(
- tsi_handshaker* self, const unsigned char* received_bytes,
- size_t received_bytes_size, const unsigned char** /*bytes_to_send*/,
- size_t* bytes_to_send_size, tsi_handshaker_result** result,
- tsi_handshaker_on_next_done_cb /*cb*/, void* /*user_data*/) {
+tsi_result handshaker_next(tsi_handshaker* self,
+ const unsigned char* received_bytes,
+ size_t received_bytes_size,
+ const unsigned char** /*bytes_to_send*/,
+ size_t* bytes_to_send_size,
+ tsi_handshaker_result** result,
+ tsi_handshaker_on_next_done_cb /*cb*/,
+ void* /*user_data*/, TString* error) {
if (self == nullptr) {
gpr_log(GPR_ERROR, "Invalid arguments to handshaker_next()");
+ if (error != nullptr) *error = "invalid argument";
return TSI_INVALID_ARGUMENT;
}
/* Note that there is no interaction between TSI peers, and all operations are
diff --git a/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session.h b/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session.h
index adf31aebd3..80dedfa9b3 100644
--- a/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session.h
+++ b/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session.h
@@ -21,6 +21,8 @@
#include <grpc/support/port_platform.h>
+#include <memory>
+
#include <openssl/ssl.h>
#include <grpc/slice.h>
diff --git a/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc b/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc
index 3883c39a56..268da464c4 100644
--- a/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc
+++ b/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc
@@ -22,6 +22,8 @@
#ifdef OPENSSL_IS_BORINGSSL
+#include "y_absl/memory/memory.h"
+
// BoringSSL allows SSL_SESSION to outlive SSL and SSL_CTX objects which are
// re-created by gRPC on every certificate rotation or subchannel creation.
// BoringSSL guarantees that SSL_SESSION is immutable so it's safe to share
diff --git a/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_cache.h b/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_cache.h
index b5979df6ea..5a62afbfb7 100644
--- a/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_cache.h
+++ b/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_cache.h
@@ -25,9 +25,11 @@
#include <openssl/ssl.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/slice.h>
#include <grpc/support/sync.h>
+#include "src/core/lib/gprpp/cpp_impl_of.h"
#include "src/core/lib/gprpp/memory.h"
#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/sync.h"
@@ -44,7 +46,10 @@
namespace tsi {
-class SslSessionLRUCache : public grpc_core::RefCounted<SslSessionLRUCache> {
+class SslSessionLRUCache
+ : public grpc_core::CppImplOf<SslSessionLRUCache,
+ struct tsi_ssl_session_cache>,
+ public grpc_core::RefCounted<SslSessionLRUCache> {
public:
/// Create new LRU cache with the given capacity.
static grpc_core::RefCountedPtr<SslSessionLRUCache> Create(size_t capacity) {
@@ -59,6 +64,10 @@ class SslSessionLRUCache : public grpc_core::RefCounted<SslSessionLRUCache> {
SslSessionLRUCache(const SslSessionLRUCache&) = delete;
SslSessionLRUCache& operator=(const SslSessionLRUCache&) = delete;
+ static y_absl::string_view ChannelArgName() {
+ return GRPC_SSL_SESSION_CACHE_ARG;
+ }
+
/// Returns current number of sessions in the cache.
size_t Size();
/// Add \a session in the cache using \a key. This operation may discard older
diff --git a/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc b/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc
index 06eb1bc557..a6241b4bc3 100644
--- a/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc
+++ b/contrib/libs/grpc/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc
@@ -24,6 +24,8 @@
#ifndef OPENSSL_IS_BORINGSSL
+#include "y_absl/memory/memory.h"
+
// OpenSSL invalidates SSL_SESSION on SSL destruction making it pointless
// to cache sessions. The workaround is to serialize (relatively expensive)
// session into binary blob and re-create it from blob on every handshake.
diff --git a/contrib/libs/grpc/src/core/tsi/ssl_transport_security.cc b/contrib/libs/grpc/src/core/tsi/ssl_transport_security.cc
index c742182989..39ba5174ce 100644
--- a/contrib/libs/grpc/src/core/tsi/ssl_transport_security.cc
+++ b/contrib/libs/grpc/src/core/tsi/ssl_transport_security.cc
@@ -46,6 +46,7 @@
#include <openssl/x509v3.h>
#include "y_absl/strings/match.h"
+#include "y_absl/strings/str_cat.h"
#include "y_absl/strings/string_view.h"
#include <grpc/grpc_security.h>
@@ -1047,17 +1048,16 @@ void tsi_ssl_root_certs_store_destroy(tsi_ssl_root_certs_store* self) {
tsi_ssl_session_cache* tsi_ssl_session_cache_create_lru(size_t capacity) {
/* Pointer will be dereferenced by unref call. */
- return reinterpret_cast<tsi_ssl_session_cache*>(
- tsi::SslSessionLRUCache::Create(capacity).release());
+ return tsi::SslSessionLRUCache::Create(capacity).release()->c_ptr();
}
void tsi_ssl_session_cache_ref(tsi_ssl_session_cache* cache) {
/* Pointer will be dereferenced by unref call. */
- reinterpret_cast<tsi::SslSessionLRUCache*>(cache)->Ref().release();
+ tsi::SslSessionLRUCache::FromC(cache)->Ref().release();
}
void tsi_ssl_session_cache_unref(tsi_ssl_session_cache* cache) {
- reinterpret_cast<tsi::SslSessionLRUCache*>(cache)->Unref();
+ tsi::SslSessionLRUCache::FromC(cache)->Unref();
}
/* --- tsi_frame_protector methods implementation. ---*/
@@ -1427,9 +1427,11 @@ static const tsi_handshaker_result_vtable handshaker_result_vtable = {
static tsi_result ssl_handshaker_result_create(
tsi_ssl_handshaker* handshaker, unsigned char* unused_bytes,
- size_t unused_bytes_size, tsi_handshaker_result** handshaker_result) {
+ size_t unused_bytes_size, tsi_handshaker_result** handshaker_result,
+ TString* error) {
if (handshaker == nullptr || handshaker_result == nullptr ||
(unused_bytes_size > 0 && unused_bytes == nullptr)) {
+ if (error != nullptr) *error = "invalid argument";
return TSI_INVALID_ARGUMENT;
}
tsi_ssl_handshaker_result* result =
@@ -1450,10 +1452,11 @@ static tsi_result ssl_handshaker_result_create(
/* --- tsi_handshaker methods implementation. ---*/
static tsi_result ssl_handshaker_get_bytes_to_send_to_peer(
- tsi_ssl_handshaker* impl, unsigned char* bytes, size_t* bytes_size) {
+ tsi_ssl_handshaker* impl, unsigned char* bytes, size_t* bytes_size,
+ TString* error) {
int bytes_read_from_ssl = 0;
- if (bytes == nullptr || bytes_size == nullptr || *bytes_size == 0 ||
- *bytes_size > INT_MAX) {
+ if (bytes == nullptr || bytes_size == nullptr || *bytes_size > INT_MAX) {
+ if (error != nullptr) *error = "invalid argument";
return TSI_INVALID_ARGUMENT;
}
GPR_ASSERT(*bytes_size <= INT_MAX);
@@ -1462,6 +1465,7 @@ static tsi_result ssl_handshaker_get_bytes_to_send_to_peer(
if (bytes_read_from_ssl < 0) {
*bytes_size = 0;
if (!BIO_should_retry(impl->network_io)) {
+ if (error != nullptr) *error = "error reading from BIO";
impl->result = TSI_INTERNAL_ERROR;
return impl->result;
} else {
@@ -1480,22 +1484,8 @@ static tsi_result ssl_handshaker_get_result(tsi_ssl_handshaker* impl) {
return impl->result;
}
-static tsi_result ssl_handshaker_process_bytes_from_peer(
- tsi_ssl_handshaker* impl, const unsigned char* bytes, size_t* bytes_size) {
- int bytes_written_into_ssl_size = 0;
- if (bytes == nullptr || bytes_size == nullptr || *bytes_size > INT_MAX) {
- return TSI_INVALID_ARGUMENT;
- }
- GPR_ASSERT(*bytes_size <= INT_MAX);
- bytes_written_into_ssl_size =
- BIO_write(impl->network_io, bytes, static_cast<int>(*bytes_size));
- if (bytes_written_into_ssl_size < 0) {
- gpr_log(GPR_ERROR, "Could not write to memory BIO.");
- impl->result = TSI_INTERNAL_ERROR;
- return impl->result;
- }
- *bytes_size = static_cast<size_t>(bytes_written_into_ssl_size);
-
+static tsi_result ssl_handshaker_do_handshake(tsi_ssl_handshaker* impl,
+ TString* error) {
if (ssl_handshaker_get_result(impl) != TSI_HANDSHAKE_IN_PROGRESS) {
impl->result = TSI_OK;
return impl->result;
@@ -1514,11 +1504,16 @@ static tsi_result ssl_handshaker_process_bytes_from_peer(
}
case SSL_ERROR_NONE:
return TSI_OK;
+ case SSL_ERROR_WANT_WRITE:
+ return TSI_DRAIN_BUFFER;
default: {
char err_str[256];
ERR_error_string_n(ERR_get_error(), err_str, sizeof(err_str));
gpr_log(GPR_ERROR, "Handshake failed with fatal error %s: %s.",
ssl_error_string(ssl_result), err_str);
+ if (error != nullptr) {
+ *error = y_absl::StrCat(ssl_error_string(ssl_result), ": ", err_str);
+ }
impl->result = TSI_PROTOCOL_FAILURE;
return impl->result;
}
@@ -1526,6 +1521,27 @@ static tsi_result ssl_handshaker_process_bytes_from_peer(
}
}
+static tsi_result ssl_handshaker_process_bytes_from_peer(
+ tsi_ssl_handshaker* impl, const unsigned char* bytes, size_t* bytes_size,
+ TString* error) {
+ int bytes_written_into_ssl_size = 0;
+ if (bytes == nullptr || bytes_size == nullptr || *bytes_size > INT_MAX) {
+ if (error != nullptr) *error = "invalid argument";
+ return TSI_INVALID_ARGUMENT;
+ }
+ GPR_ASSERT(*bytes_size <= INT_MAX);
+ bytes_written_into_ssl_size =
+ BIO_write(impl->network_io, bytes, static_cast<int>(*bytes_size));
+ if (bytes_written_into_ssl_size < 0) {
+ gpr_log(GPR_ERROR, "Could not write to memory BIO.");
+ if (error != nullptr) *error = "could not write to memory BIO";
+ impl->result = TSI_INTERNAL_ERROR;
+ return impl->result;
+ }
+ *bytes_size = static_cast<size_t>(bytes_written_into_ssl_size);
+ return ssl_handshaker_do_handshake(impl, error);
+}
+
static void ssl_handshaker_destroy(tsi_handshaker* self) {
tsi_ssl_handshaker* impl = reinterpret_cast<tsi_ssl_handshaker*>(self);
SSL_free(impl->ssl);
@@ -1539,9 +1555,11 @@ static void ssl_handshaker_destroy(tsi_handshaker* self) {
// |bytes_remaining|.
static tsi_result ssl_bytes_remaining(tsi_ssl_handshaker* impl,
unsigned char** bytes_remaining,
- size_t* bytes_remaining_size) {
+ size_t* bytes_remaining_size,
+ TString* error) {
if (impl == nullptr || bytes_remaining == nullptr ||
bytes_remaining_size == nullptr) {
+ if (error != nullptr) *error = "invalid argument";
return TSI_INVALID_ARGUMENT;
}
// Atempt to read all of the bytes in SSL's read BIO. These bytes should
@@ -1559,48 +1577,75 @@ static tsi_result ssl_bytes_remaining(tsi_ssl_handshaker* impl,
"Failed to read the expected number of bytes from SSL object.");
gpr_free(*bytes_remaining);
*bytes_remaining = nullptr;
+ if (error != nullptr) {
+ *error = "Failed to read the expected number of bytes from SSL object.";
+ }
return TSI_INTERNAL_ERROR;
}
*bytes_remaining_size = static_cast<size_t>(bytes_read);
return TSI_OK;
}
-static tsi_result ssl_handshaker_next(
- tsi_handshaker* self, const unsigned char* received_bytes,
- size_t received_bytes_size, const unsigned char** bytes_to_send,
- size_t* bytes_to_send_size, tsi_handshaker_result** handshaker_result,
- tsi_handshaker_on_next_done_cb /*cb*/, void* /*user_data*/) {
+// Write handshake data received from SSL to an unbound output buffer.
+// By doing that, we drain SSL bio buffer used to hold handshake data.
+// This API needs to be repeatedly called until all handshake data are
+// received from SSL.
+static tsi_result ssl_handshaker_write_output_buffer(tsi_handshaker* self,
+ size_t* bytes_written,
+ TString* error) {
+ tsi_ssl_handshaker* impl = reinterpret_cast<tsi_ssl_handshaker*>(self);
+ tsi_result status = TSI_OK;
+ size_t offset = *bytes_written;
+ do {
+ size_t to_send_size = impl->outgoing_bytes_buffer_size - offset;
+ status = ssl_handshaker_get_bytes_to_send_to_peer(
+ impl, impl->outgoing_bytes_buffer + offset, &to_send_size, error);
+ offset += to_send_size;
+ if (status == TSI_INCOMPLETE_DATA) {
+ impl->outgoing_bytes_buffer_size *= 2;
+ impl->outgoing_bytes_buffer = static_cast<unsigned char*>(gpr_realloc(
+ impl->outgoing_bytes_buffer, impl->outgoing_bytes_buffer_size));
+ }
+ } while (status == TSI_INCOMPLETE_DATA);
+ *bytes_written = offset;
+ return status;
+}
+
+static tsi_result ssl_handshaker_next(tsi_handshaker* self,
+ const unsigned char* received_bytes,
+ size_t received_bytes_size,
+ const unsigned char** bytes_to_send,
+ size_t* bytes_to_send_size,
+ tsi_handshaker_result** handshaker_result,
+ tsi_handshaker_on_next_done_cb /*cb*/,
+ void* /*user_data*/, TString* error) {
/* Input sanity check. */
if ((received_bytes_size > 0 && received_bytes == nullptr) ||
bytes_to_send == nullptr || bytes_to_send_size == nullptr ||
handshaker_result == nullptr) {
+ if (error != nullptr) *error = "invalid argument";
return TSI_INVALID_ARGUMENT;
}
/* If there are received bytes, process them first. */
tsi_ssl_handshaker* impl = reinterpret_cast<tsi_ssl_handshaker*>(self);
tsi_result status = TSI_OK;
size_t bytes_consumed = received_bytes_size;
+ size_t bytes_written = 0;
if (received_bytes_size > 0) {
status = ssl_handshaker_process_bytes_from_peer(impl, received_bytes,
- &bytes_consumed);
- if (status != TSI_OK) return status;
+ &bytes_consumed, error);
+ while (status == TSI_DRAIN_BUFFER) {
+ status = ssl_handshaker_write_output_buffer(self, &bytes_written, error);
+ if (status != TSI_OK) return status;
+ status = ssl_handshaker_do_handshake(impl, error);
+ }
}
+ if (status != TSI_OK) return status;
/* Get bytes to send to the peer, if available. */
- size_t offset = 0;
- do {
- size_t to_send_size = impl->outgoing_bytes_buffer_size - offset;
- status = ssl_handshaker_get_bytes_to_send_to_peer(
- impl, impl->outgoing_bytes_buffer + offset, &to_send_size);
- offset += to_send_size;
- if (status == TSI_INCOMPLETE_DATA) {
- impl->outgoing_bytes_buffer_size *= 2;
- impl->outgoing_bytes_buffer = static_cast<unsigned char*>(gpr_realloc(
- impl->outgoing_bytes_buffer, impl->outgoing_bytes_buffer_size));
- }
- } while (status == TSI_INCOMPLETE_DATA);
+ status = ssl_handshaker_write_output_buffer(self, &bytes_written, error);
if (status != TSI_OK) return status;
*bytes_to_send = impl->outgoing_bytes_buffer;
- *bytes_to_send_size = offset;
+ *bytes_to_send_size = bytes_written;
/* If handshake completes, create tsi_handshaker_result. */
if (ssl_handshaker_get_result(impl) == TSI_HANDSHAKE_IN_PROGRESS) {
*handshaker_result = nullptr;
@@ -1611,15 +1656,17 @@ static tsi_result ssl_handshaker_next(
// peer that must be processed.
unsigned char* unused_bytes = nullptr;
size_t unused_bytes_size = 0;
- status = ssl_bytes_remaining(impl, &unused_bytes, &unused_bytes_size);
+ status =
+ ssl_bytes_remaining(impl, &unused_bytes, &unused_bytes_size, error);
if (status != TSI_OK) return status;
if (unused_bytes_size > received_bytes_size) {
gpr_log(GPR_ERROR, "More unused bytes than received bytes.");
gpr_free(unused_bytes);
+ if (error != nullptr) *error = "More unused bytes than received bytes.";
return TSI_INTERNAL_ERROR;
}
status = ssl_handshaker_result_create(impl, unused_bytes, unused_bytes_size,
- handshaker_result);
+ handshaker_result, error);
if (status == TSI_OK) {
/* Indicates that the handshake has completed and that a handshaker_result
* has been created. */
@@ -1657,6 +1704,8 @@ static void tsi_ssl_handshaker_resume_session(
static tsi_result create_tsi_ssl_handshaker(SSL_CTX* ctx, int is_client,
const char* server_name_indication,
+ size_t network_bio_buf_size,
+ size_t ssl_bio_buf_size,
tsi_ssl_handshaker_factory* factory,
tsi_handshaker** handshaker) {
SSL* ssl = SSL_new(ctx);
@@ -1673,7 +1722,8 @@ static tsi_result create_tsi_ssl_handshaker(SSL_CTX* ctx, int is_client,
}
SSL_set_info_callback(ssl, ssl_info_callback);
- if (!BIO_new_bio_pair(&network_io, 0, &ssl_io, 0)) {
+ if (!BIO_new_bio_pair(&network_io, network_bio_buf_size, &ssl_io,
+ ssl_bio_buf_size)) {
gpr_log(GPR_ERROR, "BIO_new_bio_pair failed.");
SSL_free(ssl);
return TSI_OUT_OF_RESOURCES;
@@ -1758,10 +1808,11 @@ static int select_protocol_list(const unsigned char** out,
tsi_result tsi_ssl_client_handshaker_factory_create_handshaker(
tsi_ssl_client_handshaker_factory* factory,
- const char* server_name_indication, tsi_handshaker** handshaker) {
- return create_tsi_ssl_handshaker(factory->ssl_context, 1,
- server_name_indication, &factory->base,
- handshaker);
+ const char* server_name_indication, size_t network_bio_buf_size,
+ size_t ssl_bio_buf_size, tsi_handshaker** handshaker) {
+ return create_tsi_ssl_handshaker(
+ factory->ssl_context, 1, server_name_indication, network_bio_buf_size,
+ ssl_bio_buf_size, &factory->base, handshaker);
}
void tsi_ssl_client_handshaker_factory_unref(
@@ -1795,11 +1846,13 @@ static int client_handshaker_factory_npn_callback(
/* --- tsi_ssl_server_handshaker_factory methods implementation. --- */
tsi_result tsi_ssl_server_handshaker_factory_create_handshaker(
- tsi_ssl_server_handshaker_factory* factory, tsi_handshaker** handshaker) {
+ tsi_ssl_server_handshaker_factory* factory, size_t network_bio_buf_size,
+ size_t ssl_bio_buf_size, tsi_handshaker** handshaker) {
if (factory->ssl_context_count == 0) return TSI_INVALID_ARGUMENT;
/* Create the handshaker with the first context. We will switch if needed
because of SNI in ssl_server_handshaker_factory_servername_callback. */
return create_tsi_ssl_handshaker(factory->ssl_contexts[0], 0, nullptr,
+ network_bio_buf_size, ssl_bio_buf_size,
&factory->base, handshaker);
}
@@ -1950,8 +2003,16 @@ static void ssl_keylogging_callback(const SSL* ssl, const char* info) {
factory->key_logger->LogSessionKeys(ssl_context, info);
}
+// This callback is invoked when the CRL has been verified and will soft-fail
+// errors in verification depending on certain error types.
static int verify_cb(int ok, X509_STORE_CTX* ctx) {
int cert_error = X509_STORE_CTX_get_error(ctx);
+ if (cert_error == X509_V_ERR_UNABLE_TO_GET_CRL) {
+ gpr_log(
+ GPR_INFO,
+ "Certificate verification failed to get CRL files. Ignoring error.");
+ return 1;
+ }
if (cert_error != 0) {
gpr_log(GPR_ERROR, "Certificate verify failed with code %d", cert_error);
}
diff --git a/contrib/libs/grpc/src/core/tsi/ssl_transport_security.h b/contrib/libs/grpc/src/core/tsi/ssl_transport_security.h
index a72f9ec3d2..cd8b6dcb1e 100644
--- a/contrib/libs/grpc/src/core/tsi/ssl_transport_security.h
+++ b/contrib/libs/grpc/src/core/tsi/ssl_transport_security.h
@@ -209,13 +209,16 @@ tsi_result tsi_create_ssl_client_handshaker_factory_with_options(
- server_name_indication indicates the name of the server the client is
trying to connect to which will be relayed to the server using the SNI
extension.
+ - network_bio_buf_size and ssl_bio_buf_size represent BIO pair buffers used in
+ SSL. The buffer size being 0 translates to 17KB in boringSSL.
- handshaker is the address of the handshaker pointer to be created.
- This method returns TSI_OK on success or TSI_INVALID_PARAMETER in the case
where a parameter is invalid. */
tsi_result tsi_ssl_client_handshaker_factory_create_handshaker(
tsi_ssl_client_handshaker_factory* factory,
- const char* server_name_indication, tsi_handshaker** handshaker);
+ const char* server_name_indication, size_t network_bio_buf_size,
+ size_t ssl_bio_buf_size, tsi_handshaker** handshaker);
/* Decrements reference count of the handshaker factory. Handshaker factory will
* be destroyed once no references exist. */
@@ -347,12 +350,15 @@ tsi_result tsi_create_ssl_server_handshaker_factory_with_options(
/* Creates a server handshaker.
- factory is the factory from which the handshaker will be created.
+ - network_bio_buf_size and ssl_bio_buf_size represent BIO pair buffers used in
+ SSL. The buffer size being 0 translates to 17KB in boringSSL.
- handshaker is the address of the handshaker pointer to be created.
- This method returns TSI_OK on success or TSI_INVALID_PARAMETER in the case
where a parameter is invalid. */
tsi_result tsi_ssl_server_handshaker_factory_create_handshaker(
- tsi_ssl_server_handshaker_factory* factory, tsi_handshaker** handshaker);
+ tsi_ssl_server_handshaker_factory* factory, size_t network_bio_buf_size,
+ size_t ssl_bio_buf_size, tsi_handshaker** handshaker);
/* Decrements reference count of the handshaker factory. Handshaker factory will
* be destroyed once no references exist. */
diff --git a/contrib/libs/grpc/src/core/tsi/transport_security.cc b/contrib/libs/grpc/src/core/tsi/transport_security.cc
index 5d82260474..e70309f586 100644
--- a/contrib/libs/grpc/src/core/tsi/transport_security.cc
+++ b/contrib/libs/grpc/src/core/tsi/transport_security.cc
@@ -216,14 +216,26 @@ tsi_result tsi_handshaker_next(
tsi_handshaker* self, const unsigned char* received_bytes,
size_t received_bytes_size, const unsigned char** bytes_to_send,
size_t* bytes_to_send_size, tsi_handshaker_result** handshaker_result,
- tsi_handshaker_on_next_done_cb cb, void* user_data) {
- if (self == nullptr || self->vtable == nullptr) return TSI_INVALID_ARGUMENT;
- if (self->handshaker_result_created) return TSI_FAILED_PRECONDITION;
- if (self->handshake_shutdown) return TSI_HANDSHAKE_SHUTDOWN;
- if (self->vtable->next == nullptr) return TSI_UNIMPLEMENTED;
+ tsi_handshaker_on_next_done_cb cb, void* user_data, TString* error) {
+ if (self == nullptr || self->vtable == nullptr) {
+ if (error != nullptr) *error = "invalid argument";
+ return TSI_INVALID_ARGUMENT;
+ }
+ if (self->handshaker_result_created) {
+ if (error != nullptr) *error = "handshaker already returned a result";
+ return TSI_FAILED_PRECONDITION;
+ }
+ if (self->handshake_shutdown) {
+ if (error != nullptr) *error = "handshaker shutdown";
+ return TSI_HANDSHAKE_SHUTDOWN;
+ }
+ if (self->vtable->next == nullptr) {
+ if (error != nullptr) *error = "TSI handshaker does not implement next()";
+ return TSI_UNIMPLEMENTED;
+ }
return self->vtable->next(self, received_bytes, received_bytes_size,
bytes_to_send, bytes_to_send_size,
- handshaker_result, cb, user_data);
+ handshaker_result, cb, user_data, error);
}
void tsi_handshaker_shutdown(tsi_handshaker* self) {
diff --git a/contrib/libs/grpc/src/core/tsi/transport_security.h b/contrib/libs/grpc/src/core/tsi/transport_security.h
index 53f85d2852..8e83952c71 100644
--- a/contrib/libs/grpc/src/core/tsi/transport_security.h
+++ b/contrib/libs/grpc/src/core/tsi/transport_security.h
@@ -78,7 +78,8 @@ struct tsi_handshaker_vtable {
const unsigned char** bytes_to_send,
size_t* bytes_to_send_size,
tsi_handshaker_result** handshaker_result,
- tsi_handshaker_on_next_done_cb cb, void* user_data);
+ tsi_handshaker_on_next_done_cb cb, void* user_data,
+ TString* error);
void (*shutdown)(tsi_handshaker* self);
};
struct tsi_handshaker {
diff --git a/contrib/libs/grpc/src/core/tsi/transport_security_grpc.cc b/contrib/libs/grpc/src/core/tsi/transport_security_grpc.cc
index cec872690d..f43994d1b5 100644
--- a/contrib/libs/grpc/src/core/tsi/transport_security_grpc.cc
+++ b/contrib/libs/grpc/src/core/tsi/transport_security_grpc.cc
@@ -51,13 +51,14 @@ tsi_result tsi_zero_copy_grpc_protector_protect(
tsi_result tsi_zero_copy_grpc_protector_unprotect(
tsi_zero_copy_grpc_protector* self, grpc_slice_buffer* protected_slices,
- grpc_slice_buffer* unprotected_slices) {
+ grpc_slice_buffer* unprotected_slices, int* min_progress_size) {
if (self == nullptr || self->vtable == nullptr ||
protected_slices == nullptr || unprotected_slices == nullptr) {
return TSI_INVALID_ARGUMENT;
}
if (self->vtable->unprotect == nullptr) return TSI_UNIMPLEMENTED;
- return self->vtable->unprotect(self, protected_slices, unprotected_slices);
+ return self->vtable->unprotect(self, protected_slices, unprotected_slices,
+ min_progress_size);
}
void tsi_zero_copy_grpc_protector_destroy(tsi_zero_copy_grpc_protector* self) {
diff --git a/contrib/libs/grpc/src/core/tsi/transport_security_grpc.h b/contrib/libs/grpc/src/core/tsi/transport_security_grpc.h
index ba9428b588..0330d8fbba 100644
--- a/contrib/libs/grpc/src/core/tsi/transport_security_grpc.h
+++ b/contrib/libs/grpc/src/core/tsi/transport_security_grpc.h
@@ -47,12 +47,14 @@ tsi_result tsi_zero_copy_grpc_protector_protect(
/* Outputs unprotected bytes.
- protected_slices is the bytes of protected frames.
- unprotected_slices is the unprotected output data.
+ - if min_progress_size is not null, it returns the size of the last
+ incomplete frame which could not be fully unprotected.
- This method returns TSI_OK in case of success. Success includes cases where
there is not enough data to output in which case unprotected_slices has 0
bytes. */
tsi_result tsi_zero_copy_grpc_protector_unprotect(
tsi_zero_copy_grpc_protector* self, grpc_slice_buffer* protected_slices,
- grpc_slice_buffer* unprotected_slices);
+ grpc_slice_buffer* unprotected_slices, int* min_progress_size);
/* Destroys the tsi_zero_copy_grpc_protector object. */
void tsi_zero_copy_grpc_protector_destroy(tsi_zero_copy_grpc_protector* self);
@@ -68,7 +70,8 @@ struct tsi_zero_copy_grpc_protector_vtable {
grpc_slice_buffer* protected_slices);
tsi_result (*unprotect)(tsi_zero_copy_grpc_protector* self,
grpc_slice_buffer* protected_slices,
- grpc_slice_buffer* unprotected_slices);
+ grpc_slice_buffer* unprotected_slices,
+ int* min_progress_size);
void (*destroy)(tsi_zero_copy_grpc_protector* self);
tsi_result (*max_frame_size)(tsi_zero_copy_grpc_protector* self,
size_t* max_frame_size);
diff --git a/contrib/libs/grpc/src/core/tsi/transport_security_interface.h b/contrib/libs/grpc/src/core/tsi/transport_security_interface.h
index 0ba139379b..55300496f5 100644
--- a/contrib/libs/grpc/src/core/tsi/transport_security_interface.h
+++ b/contrib/libs/grpc/src/core/tsi/transport_security_interface.h
@@ -24,6 +24,9 @@
#include <stdint.h>
#include <stdlib.h>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
#include "src/core/lib/debug/trace.h"
/* --- tsi result --- */
@@ -45,6 +48,8 @@ typedef enum {
TSI_ASYNC = 13,
TSI_HANDSHAKE_SHUTDOWN = 14,
TSI_CLOSE_NOTIFY = 15, // Indicates that the connection should be closed.
+ TSI_DRAIN_BUFFER = 16, // Indicates that the buffer used to store handshake
+ // data should be drained.
} tsi_result;
typedef enum {
@@ -470,6 +475,13 @@ typedef void (*tsi_handshaker_on_next_done_cb)(
- cb is the callback function defined above. It can be NULL for synchronous
TSI handshaker implementation.
- user_data is the argument to callback function passed from the caller.
+ - error, if non-null, will be populated with a human-readable error
+ message whenever the result value is something other than TSI_OK,
+ TSI_ASYNC, or TSI_INCOMPLETE_DATA. The object pointed to by this
+ argument is owned by the caller and must continue to exist until after the
+ handshake is finished. Some TSI implementations cache this value,
+ so callers must pass the same value to all calls to tsi_handshaker_next()
+ for a given handshake.
This method returns TSI_ASYNC if the TSI handshaker implementation is
asynchronous, and in this case, the callback is guaranteed to run in another
thread owned by TSI. It returns TSI_OK if the handshake completes or if
@@ -480,11 +492,14 @@ typedef void (*tsi_handshaker_on_next_done_cb)(
The caller is responsible for destroying the handshaker_result. However,
the caller should not free bytes_to_send, as the buffer is owned by the
tsi_handshaker object. */
-tsi_result tsi_handshaker_next(
- tsi_handshaker* self, const unsigned char* received_bytes,
- size_t received_bytes_size, const unsigned char** bytes_to_send,
- size_t* bytes_to_send_size, tsi_handshaker_result** handshaker_result,
- tsi_handshaker_on_next_done_cb cb, void* user_data);
+tsi_result tsi_handshaker_next(tsi_handshaker* self,
+ const unsigned char* received_bytes,
+ size_t received_bytes_size,
+ const unsigned char** bytes_to_send,
+ size_t* bytes_to_send_size,
+ tsi_handshaker_result** handshaker_result,
+ tsi_handshaker_on_next_done_cb cb,
+ void* user_data, TString* error = nullptr);
/* This method shuts down a TSI handshake that is in progress.
*
diff --git a/contrib/libs/grpc/src/cpp/README.md b/contrib/libs/grpc/src/cpp/README.md
index 6329a8dc2f..b7f04bc200 100755
--- a/contrib/libs/grpc/src/cpp/README.md
+++ b/contrib/libs/grpc/src/cpp/README.md
@@ -11,9 +11,12 @@ Therefore, gRPC supports several major build systems, which should satisfy most
## Supported Platforms
-* Officially Supported: These platforms are officially supported. We test our
- code on these platform and have automated continuous integration tests for
+* Officially Supported: These platforms are officially supported. We follow
+ [the OSS Foundational C++ Support Policy](https://opensource.google/documentation/policies/cplusplus-support)
+ to choose platforms to support.
+ We test our code on these platform and have automated continuous integration tests for
them.
+ .
* Best Effort: We do not have continous integration tests for these, but we are
fairly confident that gRPC C++ would work on them. We will make our best
@@ -27,15 +30,16 @@ Therefore, gRPC supports several major build systems, which should satisfy most
| Operating System | Architectures | Versions | Support Level |
|------------------|---------------|----------|---------------|
-| Linux - Debian, Ubuntu, CentOS | x86, x64 | clang 4+, GCC 5.1+ | Officially Supported |
-| Windows 10+ | x86, x64 | Visual Studio 2015+ | Officially Supported |
-| MacOS | x86, x64 | XCode 7.2+ | Officially Supported |
-| Linux - Others | x86, x64 | clang 4+, GCC 5.1+ | Best Effort |
+| Linux - Debian, Ubuntu, CentOS | x86, x64 | clang 6+, GCC 7.3+ | Officially Supported |
+| Windows 10+ | x86, x64 | Visual Studio 2017+ | Officially Supported |
+| MacOS | x86, x64 | XCode 12+ | Officially Supported |
+| Linux - Others | x86, x64 | clang 6+, GCC 7.3+ | Best Effort |
| Linux | ARM | | Best Effort |
| iOS | | | Best Effort |
| Android | | | Best Effort |
| Asylo | | | Best Effort |
| FreeBSD | | | Community Supported |
+| NetBSD | | | Community Supported |
| OpenBSD | | | Community Supported |
| AIX | | | Community Supported |
| Solaris | | | Community Supported |
diff --git a/contrib/libs/grpc/src/cpp/client/channel_cc.cc b/contrib/libs/grpc/src/cpp/client/channel_cc.cc
index cf15c808aa..0732b43e9f 100644
--- a/contrib/libs/grpc/src/cpp/client/channel_cc.cc
+++ b/contrib/libs/grpc/src/cpp/client/channel_cc.cc
@@ -16,31 +16,36 @@
*
*/
+#include <atomic>
#include <cstring>
#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
#include <grpc/grpc.h>
+#include <grpc/impl/codegen/connectivity_state.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/slice.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/sync.h>
-#include <grpc/support/time.h>
#include <grpcpp/channel.h>
#include <grpcpp/client_context.h>
#include <grpcpp/completion_queue.h>
#include <grpcpp/impl/call.h>
-#include <grpcpp/impl/codegen/call_op_set.h>
+#include <grpcpp/impl/call_op_set_interface.h>
#include <grpcpp/impl/codegen/completion_queue_tag.h>
+#include <grpcpp/impl/codegen/core_codegen_interface.h>
+#include <grpcpp/impl/codegen/sync.h>
#include <grpcpp/impl/grpc_library.h>
#include <grpcpp/impl/rpc_method.h>
-#include <grpcpp/security/credentials.h>
-#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/client_interceptor.h>
#include <grpcpp/support/config.h>
-#include <grpcpp/support/status.h>
+#include <grpcpp/support/slice.h>
-#include "src/core/lib/gpr/string.h"
#include "src/core/lib/iomgr/iomgr.h"
-#include "src/core/lib/surface/completion_queue.h"
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/client/client_callback.cc b/contrib/libs/grpc/src/cpp/client/client_callback.cc
index 9e4ebbb3f8..7c4d9f4240 100644
--- a/contrib/libs/grpc/src/cpp/client/client_callback.cc
+++ b/contrib/libs/grpc/src/cpp/client/client_callback.cc
@@ -15,9 +15,14 @@
*
*/
-#include <grpcpp/impl/codegen/client_callback.h>
+#include <utility>
+
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpcpp/support/client_callback.h>
+#include <grpcpp/support/status.h>
#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/executor.h"
#include "src/core/lib/surface/call.h"
diff --git a/contrib/libs/grpc/src/cpp/client/client_context.cc b/contrib/libs/grpc/src/cpp/client/client_context.cc
index fd4a52c88e..19e20d9c1f 100644
--- a/contrib/libs/grpc/src/cpp/client/client_context.cc
+++ b/contrib/libs/grpc/src/cpp/client/client_context.cc
@@ -16,18 +16,33 @@
*
*/
+#include <stdlib.h>
+
+#include <map>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
#include <grpc/compression.h>
#include <grpc/grpc.h>
+#include <grpc/impl/codegen/compression_types.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/status.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpc/support/string_util.h>
+#include <grpc/support/time.h>
+#include <grpcpp/channel.h>
#include <grpcpp/client_context.h>
#include <grpcpp/impl/codegen/interceptor_common.h>
#include <grpcpp/impl/codegen/sync.h>
#include <grpcpp/impl/grpc_library.h>
#include <grpcpp/security/credentials.h>
#include <grpcpp/server_context.h>
-#include <grpcpp/support/time.h>
+#include <grpcpp/support/client_interceptor.h>
+#include <grpcpp/support/config.h>
namespace grpc {
@@ -51,8 +66,6 @@ ClientContext::ClientContext()
: initial_metadata_received_(false),
wait_for_ready_(false),
wait_for_ready_explicitly_set_(false),
- idempotent_(false),
- cacheable_(false),
call_(nullptr),
call_canceled_(false),
deadline_(gpr_inf_future(GPR_CLOCK_REALTIME)),
@@ -67,6 +80,7 @@ ClientContext::ClientContext()
ClientContext::~ClientContext() {
if (call_) {
grpc_call_unref(call_);
+ call_ = nullptr;
}
g_client_callbacks->Destructor(this);
}
diff --git a/contrib/libs/grpc/src/cpp/client/client_interceptor.cc b/contrib/libs/grpc/src/cpp/client/client_interceptor.cc
index a91950cae2..f4e4acbed1 100644
--- a/contrib/libs/grpc/src/cpp/client/client_interceptor.cc
+++ b/contrib/libs/grpc/src/cpp/client/client_interceptor.cc
@@ -16,7 +16,8 @@
*
*/
-#include <grpcpp/impl/codegen/client_interceptor.h>
+#include <grpc/support/log.h>
+#include <grpcpp/support/client_interceptor.h>
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/client/create_channel.cc b/contrib/libs/grpc/src/cpp/client/create_channel.cc
index 97327490ed..9dc50c12f5 100644
--- a/contrib/libs/grpc/src/cpp/client/create_channel.cc
+++ b/contrib/libs/grpc/src/cpp/client/create_channel.cc
@@ -17,12 +17,20 @@
*/
#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+#include <grpc/grpc.h>
+#include <grpc/status.h>
#include <grpcpp/channel.h>
#include <grpcpp/create_channel.h>
#include <grpcpp/impl/grpc_library.h>
#include <grpcpp/security/credentials.h>
#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/client_interceptor.h>
+#include <grpcpp/support/config.h>
#include "src/cpp/client/create_channel_internal.h"
diff --git a/contrib/libs/grpc/src/cpp/client/create_channel_internal.cc b/contrib/libs/grpc/src/cpp/client/create_channel_internal.cc
index e3f034ca22..53023eff6a 100644
--- a/contrib/libs/grpc/src/cpp/client/create_channel_internal.cc
+++ b/contrib/libs/grpc/src/cpp/client/create_channel_internal.cc
@@ -26,8 +26,6 @@
#include <grpcpp/channel.h>
-struct grpc_channel;
-
namespace grpc {
std::shared_ptr<Channel> CreateChannelInternal(
diff --git a/contrib/libs/grpc/src/cpp/client/create_channel_internal.h b/contrib/libs/grpc/src/cpp/client/create_channel_internal.h
index c0e117ab35..470c624075 100644
--- a/contrib/libs/grpc/src/cpp/client/create_channel_internal.h
+++ b/contrib/libs/grpc/src/cpp/client/create_channel_internal.h
@@ -24,12 +24,11 @@
#include <util/string/cast.h>
#include <vector>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpcpp/channel.h>
-#include <grpcpp/impl/codegen/client_interceptor.h>
+#include <grpcpp/support/client_interceptor.h>
#include <grpcpp/support/config.h>
-struct grpc_channel;
-
namespace grpc {
std::shared_ptr<Channel> CreateChannelInternal(
diff --git a/contrib/libs/grpc/src/cpp/client/create_channel_posix.cc b/contrib/libs/grpc/src/cpp/client/create_channel_posix.cc
index deb03cae72..d3b2ee56d3 100644
--- a/contrib/libs/grpc/src/cpp/client/create_channel_posix.cc
+++ b/contrib/libs/grpc/src/cpp/client/create_channel_posix.cc
@@ -16,13 +16,21 @@
*
*/
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
#include <grpc/grpc.h>
#include <grpc/grpc_posix.h>
#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpcpp/channel.h>
#include <grpcpp/impl/grpc_library.h>
-#include <grpcpp/security/credentials.h>
#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/client_interceptor.h>
+#include <grpcpp/support/config.h>
#include "src/cpp/client/create_channel_internal.h"
@@ -34,7 +42,7 @@ class ChannelArguments;
std::shared_ptr<Channel> CreateInsecureChannelFromFd(const TString& target,
int fd) {
- grpc::internal::GrpcLibrary init_lib;
+ internal::GrpcLibrary init_lib;
init_lib.init();
grpc_channel_credentials* creds = grpc_insecure_credentials_create();
auto channel = CreateChannelInternal(
@@ -42,6 +50,8 @@ std::shared_ptr<Channel> CreateInsecureChannelFromFd(const TString& target,
std::vector<
std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>());
grpc_channel_credentials_release(creds);
+ // Channel also initializes gRPC, so we can decrement the init ref count here.
+ init_lib.shutdown();
return channel;
}
@@ -57,6 +67,8 @@ std::shared_ptr<Channel> CreateCustomInsecureChannelFromFd(
std::vector<
std::unique_ptr<experimental::ClientInterceptorFactoryInterface>>());
grpc_channel_credentials_release(creds);
+ // Channel also initializes gRPC, so we can decrement the init ref count here.
+ init_lib.shutdown();
return channel;
}
@@ -67,7 +79,7 @@ std::shared_ptr<Channel> CreateCustomInsecureChannelWithInterceptorsFromFd(
std::vector<
std::unique_ptr<grpc::experimental::ClientInterceptorFactoryInterface>>
interceptor_creators) {
- grpc::internal::GrpcLibrary init_lib;
+ internal::GrpcLibrary init_lib;
init_lib.init();
grpc_channel_args channel_args;
args.SetChannelArgs(&channel_args);
@@ -76,6 +88,8 @@ std::shared_ptr<Channel> CreateCustomInsecureChannelWithInterceptorsFromFd(
"", grpc_channel_create_from_fd(target.c_str(), fd, creds, &channel_args),
std::move(interceptor_creators));
grpc_channel_credentials_release(creds);
+ // Channel also initializes gRPC, so we can decrement the init ref count here.
+ init_lib.shutdown();
return channel;
}
diff --git a/contrib/libs/grpc/src/cpp/client/insecure_credentials.cc b/contrib/libs/grpc/src/cpp/client/insecure_credentials.cc
index 5fafb5435e..195a9aa809 100644
--- a/contrib/libs/grpc/src/cpp/client/insecure_credentials.cc
+++ b/contrib/libs/grpc/src/cpp/client/insecure_credentials.cc
@@ -15,12 +15,19 @@
* limitations under the License.
*
*/
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
+
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
-#include <grpc/support/log.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpcpp/channel.h>
#include <grpcpp/security/credentials.h>
#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/client_interceptor.h>
#include <grpcpp/support/config.h>
#include "src/cpp/client/create_channel_internal.h"
diff --git a/contrib/libs/grpc/src/cpp/client/secure_credentials.cc b/contrib/libs/grpc/src/cpp/client/secure_credentials.cc
index e849c98f3e..efe73392f2 100644
--- a/contrib/libs/grpc/src/cpp/client/secure_credentials.cc
+++ b/contrib/libs/grpc/src/cpp/client/secure_credentials.cc
@@ -18,26 +18,38 @@
#include "src/cpp/client/secure_credentials.h"
+#include <string.h>
+
+#include <algorithm>
+#include <map>
+#include <utility>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
#include "y_absl/strings/str_join.h"
+#include "y_absl/types/optional.h"
-#include <grpc/impl/codegen/slice.h>
+#include <grpc/grpc_security_constants.h>
+#include <grpc/impl/codegen/gpr_types.h>
#include <grpc/slice.h>
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
+#include <grpc/support/time.h>
#include <grpcpp/channel.h>
-#include <grpcpp/impl/codegen/status.h>
#include <grpcpp/impl/grpc_library.h>
+#include <grpcpp/security/tls_credentials_options.h>
#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/slice.h>
+#include <grpcpp/support/status.h>
-// TODO(yashykt): We shouldn't be including "src/core" headers.
-#include "src/core/lib/gpr/env.h"
+#include "src/core/lib/gprpp/env.h"
+#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/executor.h"
#include "src/core/lib/iomgr/load_file.h"
#include "src/core/lib/json/json.h"
-#include "src/core/lib/security/transport/auth_filters.h"
#include "src/core/lib/security/util/json_util.h"
+#include "src/core/lib/slice/slice_refcount.h"
#include "src/cpp/client/create_channel_internal.h"
#include "src/cpp/common/secure_auth_context.h"
@@ -156,31 +168,30 @@ grpc::Status StsCredentialsOptionsFromJson(const TString& json_string,
"options cannot be nullptr.");
}
ClearStsCredentialsOptions(options);
- grpc_error_handle error = GRPC_ERROR_NONE;
- grpc_core::Json json = grpc_core::Json::Parse(json_string.c_str(), &error);
- if (error != GRPC_ERROR_NONE ||
- json.type() != grpc_core::Json::Type::OBJECT) {
- GRPC_ERROR_UNREF(error);
- return grpc::Status(grpc::StatusCode::INVALID_ARGUMENT, "Invalid json.");
+ auto json = grpc_core::Json::Parse(json_string.c_str());
+ if (!json.ok() || json->type() != grpc_core::Json::Type::OBJECT) {
+ return grpc::Status(
+ grpc::StatusCode::INVALID_ARGUMENT,
+ y_absl::StrCat("Invalid json: ", json.status().ToString()));
}
// Required fields.
const char* value = grpc_json_get_string_property(
- json, "token_exchange_service_uri", nullptr);
+ *json, "token_exchange_service_uri", nullptr);
if (value == nullptr) {
ClearStsCredentialsOptions(options);
return grpc::Status(grpc::StatusCode::INVALID_ARGUMENT,
"token_exchange_service_uri must be specified.");
}
options->token_exchange_service_uri.assign(value);
- value = grpc_json_get_string_property(json, "subject_token_path", nullptr);
+ value = grpc_json_get_string_property(*json, "subject_token_path", nullptr);
if (value == nullptr) {
ClearStsCredentialsOptions(options);
return grpc::Status(grpc::StatusCode::INVALID_ARGUMENT,
"subject_token_path must be specified.");
}
options->subject_token_path.assign(value);
- value = grpc_json_get_string_property(json, "subject_token_type", nullptr);
+ value = grpc_json_get_string_property(*json, "subject_token_type", nullptr);
if (value == nullptr) {
ClearStsCredentialsOptions(options);
return grpc::Status(grpc::StatusCode::INVALID_ARGUMENT,
@@ -189,17 +200,17 @@ grpc::Status StsCredentialsOptionsFromJson(const TString& json_string,
options->subject_token_type.assign(value);
// Optional fields.
- value = grpc_json_get_string_property(json, "resource", nullptr);
+ value = grpc_json_get_string_property(*json, "resource", nullptr);
if (value != nullptr) options->resource.assign(value);
- value = grpc_json_get_string_property(json, "audience", nullptr);
+ value = grpc_json_get_string_property(*json, "audience", nullptr);
if (value != nullptr) options->audience.assign(value);
- value = grpc_json_get_string_property(json, "scope", nullptr);
+ value = grpc_json_get_string_property(*json, "scope", nullptr);
if (value != nullptr) options->scope.assign(value);
- value = grpc_json_get_string_property(json, "requested_token_type", nullptr);
+ value = grpc_json_get_string_property(*json, "requested_token_type", nullptr);
if (value != nullptr) options->requested_token_type.assign(value);
- value = grpc_json_get_string_property(json, "actor_token_path", nullptr);
+ value = grpc_json_get_string_property(*json, "actor_token_path", nullptr);
if (value != nullptr) options->actor_token_path.assign(value);
- value = grpc_json_get_string_property(json, "actor_token_type", nullptr);
+ value = grpc_json_get_string_property(*json, "actor_token_type", nullptr);
if (value != nullptr) options->actor_token_type.assign(value);
return grpc::Status();
@@ -213,24 +224,23 @@ grpc::Status StsCredentialsOptionsFromEnv(StsCredentialsOptions* options) {
}
ClearStsCredentialsOptions(options);
grpc_slice json_string = grpc_empty_slice();
- char* sts_creds_path = gpr_getenv("STS_CREDENTIALS");
+ auto sts_creds_path = grpc_core::GetEnv("STS_CREDENTIALS");
grpc_error_handle error = GRPC_ERROR_NONE;
grpc::Status status;
// NOLINTNEXTLINE(clang-diagnostic-unused-lambda-capture)
- auto cleanup = [&json_string, &sts_creds_path, &error, &status]() {
+ auto cleanup = [&json_string, &error, &status]() {
grpc_slice_unref_internal(json_string);
- gpr_free(sts_creds_path);
GRPC_ERROR_UNREF(error);
return status;
};
- if (sts_creds_path == nullptr) {
+ if (!sts_creds_path.has_value()) {
status = grpc::Status(grpc::StatusCode::NOT_FOUND,
"STS_CREDENTIALS environment variable not set.");
return cleanup();
}
- error = grpc_load_file(sts_creds_path, 1, &json_string);
- if (error != GRPC_ERROR_NONE) {
+ error = grpc_load_file(sts_creds_path->c_str(), 1, &json_string);
+ if (!GRPC_ERROR_IS_NONE(error)) {
status =
grpc::Status(grpc::StatusCode::NOT_FOUND, grpc_error_std_string(error));
return cleanup();
diff --git a/contrib/libs/grpc/src/cpp/client/secure_credentials.h b/contrib/libs/grpc/src/cpp/client/secure_credentials.h
index 6296b9a04b..63f3e928a5 100644
--- a/contrib/libs/grpc/src/cpp/client/secure_credentials.h
+++ b/contrib/libs/grpc/src/cpp/client/secure_credentials.h
@@ -19,13 +19,27 @@
#ifndef GRPC_INTERNAL_CPP_CLIENT_SECURE_CREDENTIALS_H
#define GRPC_INTERNAL_CPP_CLIENT_SECURE_CREDENTIALS_H
+#include <stddef.h>
+
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
#include "y_absl/strings/str_cat.h"
+#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/status.h>
+#include <grpcpp/channel.h>
+#include <grpcpp/impl/grpc_library.h>
#include <grpcpp/security/credentials.h>
-#include <grpcpp/security/tls_credentials_options.h>
+#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/client_interceptor.h>
#include <grpcpp/support/config.h>
// TODO(yashykt): We shouldn't be including "src/core" headers.
+#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/security/credentials/credentials.h"
#include "src/cpp/server/thread_pool_interface.h"
diff --git a/contrib/libs/grpc/src/cpp/client/xds_credentials.cc b/contrib/libs/grpc/src/cpp/client/xds_credentials.cc
index d5446a02fe..360d44c94b 100644
--- a/contrib/libs/grpc/src/cpp/client/xds_credentials.cc
+++ b/contrib/libs/grpc/src/cpp/client/xds_credentials.cc
@@ -16,6 +16,13 @@
//
//
+#include <memory>
+
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/support/log.h>
+#include <grpcpp/security/credentials.h>
+
#include "src/cpp/client/secure_credentials.h"
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/codegen/codegen_init.cc b/contrib/libs/grpc/src/cpp/codegen/codegen_init.cc
index e1e47cbb17..4e1176f1f0 100644
--- a/contrib/libs/grpc/src/cpp/codegen/codegen_init.cc
+++ b/contrib/libs/grpc/src/cpp/codegen/codegen_init.cc
@@ -17,7 +17,7 @@
*/
#include <grpcpp/impl/codegen/core_codegen_interface.h>
-#include <grpcpp/impl/codegen/grpc_library.h>
+#include <grpcpp/impl/grpc_library.h>
/// Null-initializes the global gRPC variables for the codegen library. These
/// stay null in the absence of grpc++ library. In this case, no gRPC
diff --git a/contrib/libs/grpc/src/cpp/common/alarm.cc b/contrib/libs/grpc/src/cpp/common/alarm.cc
index 913c0c7317..2770c11bd1 100644
--- a/contrib/libs/grpc/src/cpp/common/alarm.cc
+++ b/contrib/libs/grpc/src/cpp/common/alarm.cc
@@ -17,15 +17,21 @@
#include <grpc/support/port_platform.h>
-#include <memory>
+#include <functional>
+#include <utility>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/log.h>
+#include <grpc/support/sync.h>
#include <grpcpp/alarm.h>
#include <grpcpp/completion_queue.h>
+#include <grpcpp/impl/codegen/completion_queue_tag.h>
#include <grpcpp/impl/grpc_library.h>
-#include <grpcpp/support/time.h>
-#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/gprpp/time.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/executor.h"
#include "src/core/lib/iomgr/timer.h"
@@ -87,7 +93,7 @@ class AlarmImpl : public grpc::internal::CompletionQueueTag {
GRPC_CLOSURE_CREATE(
[](void* arg, grpc_error_handle error) {
AlarmImpl* alarm = static_cast<AlarmImpl*>(arg);
- alarm->callback_(error == GRPC_ERROR_NONE);
+ alarm->callback_(GRPC_ERROR_IS_NONE(error));
alarm->Unref();
},
arg, nullptr),
diff --git a/contrib/libs/grpc/src/cpp/common/auth_property_iterator.cc b/contrib/libs/grpc/src/cpp/common/auth_property_iterator.cc
index 1334ea9966..45d6db9c3c 100644
--- a/contrib/libs/grpc/src/cpp/common/auth_property_iterator.cc
+++ b/contrib/libs/grpc/src/cpp/common/auth_property_iterator.cc
@@ -16,8 +16,11 @@
*
*/
+#include <utility>
+
#include <grpc/grpc_security.h>
#include <grpcpp/security/auth_context.h>
+#include <grpcpp/support/string_ref.h>
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/common/channel_arguments.cc b/contrib/libs/grpc/src/cpp/common/channel_arguments.cc
index 4950a800bb..e92fd131b6 100644
--- a/contrib/libs/grpc/src/cpp/common/channel_arguments.cc
+++ b/contrib/libs/grpc/src/cpp/common/channel_arguments.cc
@@ -15,15 +15,21 @@
* limitations under the License.
*
*/
-#include <sstream>
-
+#include <algorithm>
+#include <list>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
+#include <grpc/impl/codegen/compression_types.h>
#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/log.h>
#include <grpcpp/grpcpp.h>
#include <grpcpp/resource_quota.h>
#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/config.h>
-#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/socket_mutator.h"
diff --git a/contrib/libs/grpc/src/cpp/common/channel_filter.cc b/contrib/libs/grpc/src/cpp/common/channel_filter.cc
index 55c31adbed..64d9656dc3 100644
--- a/contrib/libs/grpc/src/cpp/common/channel_filter.cc
+++ b/contrib/libs/grpc/src/cpp/common/channel_filter.cc
@@ -18,13 +18,19 @@
#include "src/cpp/common/channel_filter.h"
-#include <string.h>
+#include <memory>
-#include <grpcpp/impl/codegen/slice.h>
+#include "y_absl/strings/str_cat.h"
+#include "y_absl/strings/string_view.h"
+#include <grpc/support/log.h>
+
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/channel_stack.h"
#include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/config/core_configuration.h"
+#include "src/core/lib/slice/slice.h"
+#include "src/core/lib/surface/channel_init.h"
namespace grpc {
@@ -73,10 +79,11 @@ void RegisterChannelFilter(
auto maybe_add_filter = [include_filter,
filter](grpc_core::ChannelStackBuilder* builder) {
if (include_filter != nullptr) {
- const grpc_channel_args* args = builder->channel_args();
- if (!include_filter(*args)) return true;
+ if (!include_filter(*builder->channel_args().ToC())) {
+ return true;
+ }
}
- builder->PrependFilter(filter, nullptr);
+ builder->PrependFilter(filter);
return true;
};
grpc_core::CoreConfiguration::RegisterBuilder(
diff --git a/contrib/libs/grpc/src/cpp/common/channel_filter.h b/contrib/libs/grpc/src/cpp/common/channel_filter.h
index b58af7ad0a..bbfeb75207 100644
--- a/contrib/libs/grpc/src/cpp/common/channel_filter.h
+++ b/contrib/libs/grpc/src/cpp/common/channel_filter.h
@@ -19,16 +19,31 @@
#ifndef GRPCXX_CHANNEL_FILTER_H
#define GRPCXX_CHANNEL_FILTER_H
+#include <stddef.h>
+
#include <functional>
-#include <vector>
+#include <new>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/types/optional.h"
#include <grpc/grpc.h>
-#include <grpc/support/alloc.h>
-#include <grpcpp/impl/codegen/config.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/support/atm.h>
+#include <grpcpp/support/config.h>
+#include "src/core/lib/channel/channel_fwd.h"
#include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/surface/channel_init.h"
+#include "src/core/lib/channel/context.h"
+#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
+#include "src/core/lib/iomgr/polling_entity.h"
+#include "src/core/lib/slice/slice_buffer.h"
+#include "src/core/lib/surface/channel_stack_type.h"
#include "src/core/lib/transport/metadata_batch.h"
+#include "src/core/lib/transport/transport.h"
/// An interface to define filters.
///
@@ -72,7 +87,7 @@ class TransportOp {
grpc_error_handle disconnect_with_error() const {
return op_->disconnect_with_error;
}
- bool send_goaway() const { return op_->goaway_error != GRPC_ERROR_NONE; }
+ bool send_goaway() const { return !GRPC_ERROR_IS_NONE(op_->goaway_error); }
// TODO(roth): Add methods for additional fields as needed.
@@ -123,12 +138,6 @@ class TransportStreamOpBatch {
return op_->recv_trailing_metadata ? &recv_trailing_metadata_ : nullptr;
}
- uint32_t* send_initial_metadata_flags() const {
- return op_->send_initial_metadata ? &op_->payload->send_initial_metadata
- .send_initial_metadata_flags
- : nullptr;
- }
-
grpc_closure* recv_initial_metadata_ready() const {
return op_->recv_initial_metadata
? op_->payload->recv_initial_metadata.recv_initial_metadata_ready
@@ -138,22 +147,21 @@ class TransportStreamOpBatch {
op_->payload->recv_initial_metadata.recv_initial_metadata_ready = closure;
}
- grpc_core::OrphanablePtr<grpc_core::ByteStream>* send_message() const {
- return op_->send_message ? &op_->payload->send_message.send_message
+ grpc_core::SliceBuffer* send_message() const {
+ return op_->send_message ? op_->payload->send_message.send_message
: nullptr;
}
- void set_send_message(
- grpc_core::OrphanablePtr<grpc_core::ByteStream> send_message) {
+
+ void set_send_message(grpc_core::SliceBuffer* send_message) {
op_->send_message = true;
- op_->payload->send_message.send_message = std::move(send_message);
+ op_->payload->send_message.send_message = send_message;
}
- grpc_core::OrphanablePtr<grpc_core::ByteStream>* recv_message() const {
+ y_absl::optional<grpc_core::SliceBuffer>* recv_message() const {
return op_->recv_message ? op_->payload->recv_message.recv_message
: nullptr;
}
- void set_recv_message(
- grpc_core::OrphanablePtr<grpc_core::ByteStream>* recv_message) {
+ void set_recv_message(y_absl::optional<grpc_core::SliceBuffer>* recv_message) {
op_->recv_message = true;
op_->payload->recv_message.recv_message = recv_message;
}
@@ -336,6 +344,7 @@ void RegisterChannelFilter(
FilterType::DestroyCallElement,
FilterType::channel_data_size,
FilterType::InitChannelElement,
+ grpc_channel_stack_no_post_init,
FilterType::DestroyChannelElement,
FilterType::GetChannelInfo,
name};
diff --git a/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc b/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc
index 8b1415a2cf..b4414a3bb0 100644
--- a/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc
+++ b/contrib/libs/grpc/src/cpp/common/completion_queue_cc.cc
@@ -15,17 +15,22 @@
*
*/
-#include <memory>
+#include <vector>
+
+#include "y_absl/base/thread_annotations.h"
#include <grpc/grpc.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/cpu.h>
#include <grpc/support/log.h>
+#include <grpc/support/sync.h>
+#include <grpc/support/time.h>
#include <grpcpp/completion_queue.h>
+#include <grpcpp/impl/codegen/completion_queue_tag.h>
#include <grpcpp/impl/grpc_library.h>
-#include <grpcpp/support/time.h>
#include "src/core/lib/gpr/useful.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
#include "src/core/lib/gprpp/sync.h"
#include "src/core/lib/gprpp/thd.h"
diff --git a/contrib/libs/grpc/src/cpp/common/core_codegen.cc b/contrib/libs/grpc/src/cpp/common/core_codegen.cc
index da964f6662..cf5dc084b5 100644
--- a/contrib/libs/grpc/src/cpp/common/core_codegen.cc
+++ b/contrib/libs/grpc/src/cpp/common/core_codegen.cc
@@ -21,19 +21,18 @@
#include <stdlib.h>
#include <grpc/byte_buffer.h>
-#include <grpc/byte_buffer_reader.h>
#include <grpc/grpc.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/slice.h>
#include <grpc/slice_buffer.h>
+#include <grpc/status.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/sync.h>
+#include <grpc/support/time.h>
#include <grpcpp/impl/codegen/core_codegen.h>
-#include <grpcpp/support/config.h>
-
-#include "src/core/lib/profiling/timers.h"
-
-struct grpc_byte_buffer;
+#include <grpcpp/support/status.h>
namespace grpc {
@@ -210,6 +209,11 @@ void CoreCodegen::grpc_slice_buffer_add(grpc_slice_buffer* sb,
::grpc_slice_buffer_add(sb, slice);
}
+void CoreCodegen::grpc_slice_buffer_add_indexed(grpc_slice_buffer* sb,
+ grpc_slice slice) {
+ ::grpc_slice_buffer_add_indexed(sb, slice);
+}
+
void CoreCodegen::grpc_slice_buffer_pop(grpc_slice_buffer* sb) {
::grpc_slice_buffer_pop(sb);
}
diff --git a/contrib/libs/grpc/src/cpp/common/resource_quota_cc.cc b/contrib/libs/grpc/src/cpp/common/resource_quota_cc.cc
index 64abff9633..f2af1fb525 100644
--- a/contrib/libs/grpc/src/cpp/common/resource_quota_cc.cc
+++ b/contrib/libs/grpc/src/cpp/common/resource_quota_cc.cc
@@ -16,8 +16,14 @@
*
*/
+#include <stddef.h>
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
#include <grpc/grpc.h>
#include <grpcpp/resource_quota.h>
+#include <grpcpp/support/config.h>
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/common/secure_auth_context.cc b/contrib/libs/grpc/src/cpp/common/secure_auth_context.cc
index e1f97889c8..cb584e59fe 100644
--- a/contrib/libs/grpc/src/cpp/common/secure_auth_context.cc
+++ b/contrib/libs/grpc/src/cpp/common/secure_auth_context.cc
@@ -18,6 +18,8 @@
#include "src/cpp/common/secure_auth_context.h"
+#include <algorithm>
+
#include <grpc/grpc_security.h>
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/common/secure_auth_context.h b/contrib/libs/grpc/src/cpp/common/secure_auth_context.h
index 0e85a7077b..cd7fcc4dda 100644
--- a/contrib/libs/grpc/src/cpp/common/secure_auth_context.h
+++ b/contrib/libs/grpc/src/cpp/common/secure_auth_context.h
@@ -19,7 +19,14 @@
#ifndef GRPC_INTERNAL_CPP_COMMON_SECURE_AUTH_CONTEXT_H
#define GRPC_INTERNAL_CPP_COMMON_SECURE_AUTH_CONTEXT_H
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
+#include <grpc/grpc_security.h>
#include <grpcpp/security/auth_context.h>
+#include <grpcpp/support/config.h>
+#include <grpcpp/support/string_ref.h>
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/security/context/security_context.h"
diff --git a/contrib/libs/grpc/src/cpp/common/secure_channel_arguments.cc b/contrib/libs/grpc/src/cpp/common/secure_channel_arguments.cc
index c9b1d4ab3b..36e19d8477 100644
--- a/contrib/libs/grpc/src/cpp/common/secure_channel_arguments.cc
+++ b/contrib/libs/grpc/src/cpp/common/secure_channel_arguments.cc
@@ -16,10 +16,14 @@
*
*/
-#include <grpc/grpc_security.h>
-#include <grpcpp/support/channel_arguments.h>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
-#include "src/core/lib/channel/channel_args.h"
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/config.h>
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/common/secure_create_auth_context.cc b/contrib/libs/grpc/src/cpp/common/secure_create_auth_context.cc
index 6633374b65..feb3885d52 100644
--- a/contrib/libs/grpc/src/cpp/common/secure_create_auth_context.cc
+++ b/contrib/libs/grpc/src/cpp/common/secure_create_auth_context.cc
@@ -17,11 +17,12 @@
*/
#include <memory>
-#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpcpp/security/auth_context.h>
#include "src/core/lib/gprpp/ref_counted_ptr.h"
+#include "src/core/lib/security/context/security_context.h"
#include "src/cpp/common/secure_auth_context.h"
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/common/tls_certificate_provider.cc b/contrib/libs/grpc/src/cpp/common/tls_certificate_provider.cc
index 073abae7d5..e78e68decb 100644
--- a/contrib/libs/grpc/src/cpp/common/tls_certificate_provider.cc
+++ b/contrib/libs/grpc/src/cpp/common/tls_certificate_provider.cc
@@ -14,11 +14,14 @@
// limitations under the License.
//
-#include "y_absl/container/inlined_vector.h"
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
#include <grpc/grpc_security.h>
-#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
#include <grpcpp/security/tls_certificate_provider.h>
+#include <grpcpp/support/config.h>
namespace grpc {
namespace experimental {
diff --git a/contrib/libs/grpc/src/cpp/common/tls_certificate_verifier.cc b/contrib/libs/grpc/src/cpp/common/tls_certificate_verifier.cc
index 7e51934e01..5dd9bc13e7 100644
--- a/contrib/libs/grpc/src/cpp/common/tls_certificate_verifier.cc
+++ b/contrib/libs/grpc/src/cpp/common/tls_certificate_verifier.cc
@@ -14,13 +14,26 @@
// limitations under the License.
//
-#include "y_absl/container/inlined_vector.h"
-#include "y_absl/status/status.h"
+#include <stddef.h>
+
+#include <functional>
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+#include <vector>
#include <grpc/grpc_security.h>
+#include <grpc/status.h>
#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
+#include <grpcpp/impl/codegen/sync.h>
+#include <grpcpp/impl/grpc_library.h>
#include <grpcpp/security/tls_certificate_verifier.h>
+#include <grpcpp/support/config.h>
+#include <grpcpp/support/status.h>
+#include <grpcpp/support/string_ref.h>
namespace grpc {
namespace experimental {
@@ -237,6 +250,9 @@ void ExternalCertificateVerifier::DestructInCoreExternalVerifier(
delete self;
}
+NoOpCertificateVerifier::NoOpCertificateVerifier()
+ : CertificateVerifier(grpc_tls_certificate_verifier_no_op_create()) {}
+
HostNameCertificateVerifier::HostNameCertificateVerifier()
: CertificateVerifier(grpc_tls_certificate_verifier_host_name_create()) {}
diff --git a/contrib/libs/grpc/src/cpp/common/tls_credentials_options.cc b/contrib/libs/grpc/src/cpp/common/tls_credentials_options.cc
index de9919a617..f3d1a1f9e3 100644
--- a/contrib/libs/grpc/src/cpp/common/tls_credentials_options.cc
+++ b/contrib/libs/grpc/src/cpp/common/tls_credentials_options.cc
@@ -16,11 +16,18 @@
*
*/
-#include "y_absl/container/inlined_vector.h"
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
#include <grpc/grpc_security.h>
-#include <grpc/support/alloc.h>
+#include <grpc/grpc_security_constants.h>
+#include <grpc/support/log.h>
+#include <grpcpp/security/tls_certificate_provider.h>
+#include <grpcpp/security/tls_certificate_verifier.h>
#include <grpcpp/security/tls_credentials_options.h>
+#include <grpcpp/support/config.h>
namespace grpc {
namespace experimental {
diff --git a/contrib/libs/grpc/src/cpp/common/validate_service_config.cc b/contrib/libs/grpc/src/cpp/common/validate_service_config.cc
index 5fc5be74ce..66a92a86d9 100644
--- a/contrib/libs/grpc/src/cpp/common/validate_service_config.cc
+++ b/contrib/libs/grpc/src/cpp/common/validate_service_config.cc
@@ -16,23 +16,27 @@
*
*/
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/status/status.h"
+#include "y_absl/status/statusor.h"
+
#include <grpc/grpc.h>
+#include <grpcpp/support/config.h>
#include <grpcpp/support/validate_service_config.h>
+#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/service_config/service_config_impl.h"
namespace grpc {
namespace experimental {
TString ValidateServiceConfigJSON(const TString& service_config_json) {
grpc_init();
- grpc_error_handle error = GRPC_ERROR_NONE;
- grpc_core::ServiceConfigImpl::Create(/*args=*/nullptr,
- service_config_json.c_str(), &error);
+ auto service_config = grpc_core::ServiceConfigImpl::Create(
+ grpc_core::ChannelArgs(), service_config_json.c_str());
TString return_value;
- if (error != GRPC_ERROR_NONE) {
- return_value = grpc_error_std_string(error);
- GRPC_ERROR_UNREF(error);
- }
+ if (!service_config.ok()) return_value = service_config.status().ToString();
grpc_shutdown();
return return_value;
}
diff --git a/contrib/libs/grpc/src/cpp/common/version_cc.cc b/contrib/libs/grpc/src/cpp/common/version_cc.cc
index 0e0e709c03..cdd0cc0668 100644
--- a/contrib/libs/grpc/src/cpp/common/version_cc.cc
+++ b/contrib/libs/grpc/src/cpp/common/version_cc.cc
@@ -17,10 +17,14 @@
*/
/* This file is autogenerated from:
- templates/src/core/surface/version.c.template */
+ templates/src/cpp/common/version_cc.cc.template */
+
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include <grpcpp/grpcpp.h>
+#include <grpcpp/support/config.h>
namespace grpc {
-TString Version() { return "1.45.2"; }
+TString Version() { return "1.50.2"; }
} // namespace grpc
diff --git a/contrib/libs/grpc/src/cpp/ext/proto_server_reflection.cc b/contrib/libs/grpc/src/cpp/ext/proto_server_reflection.cc
index 6c13a0c9cf..324c07f7f8 100644
--- a/contrib/libs/grpc/src/cpp/ext/proto_server_reflection.cc
+++ b/contrib/libs/grpc/src/cpp/ext/proto_server_reflection.cc
@@ -22,6 +22,9 @@
#include <vector>
#include <grpcpp/grpcpp.h>
+#include <grpcpp/support/interceptor.h>
+
+// IWYU pragma: no_include <google/protobuf/descriptor.h>
using grpc::Status;
using grpc::StatusCode;
diff --git a/contrib/libs/grpc/src/cpp/ext/proto_server_reflection.h b/contrib/libs/grpc/src/cpp/ext/proto_server_reflection.h
index 86982f3ffa..95d1cce2f4 100644
--- a/contrib/libs/grpc/src/cpp/ext/proto_server_reflection.h
+++ b/contrib/libs/grpc/src/cpp/ext/proto_server_reflection.h
@@ -19,12 +19,19 @@
#ifndef GRPC_INTERNAL_CPP_EXT_PROTO_SERVER_REFLECTION_H
#define GRPC_INTERNAL_CPP_EXT_PROTO_SERVER_REFLECTION_H
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include <unordered_set>
#include <vector>
#include <grpcpp/grpcpp.h>
+#include <grpcpp/impl/codegen/config_protobuf.h>
+#include <grpcpp/support/config.h>
+#include <grpcpp/support/status.h>
+#include <grpcpp/support/sync_stream.h>
#include "src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.h"
+#include "src/proto/grpc/reflection/v1alpha/reflection.pb.h"
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/ext/proto_server_reflection_plugin.cc b/contrib/libs/grpc/src/cpp/ext/proto_server_reflection_plugin.cc
index 709943ea9e..da76bb7964 100644
--- a/contrib/libs/grpc/src/cpp/ext/proto_server_reflection_plugin.cc
+++ b/contrib/libs/grpc/src/cpp/ext/proto_server_reflection_plugin.cc
@@ -19,7 +19,7 @@
#include <grpcpp/ext/proto_server_reflection_plugin.h>
#include <grpcpp/impl/server_builder_plugin.h>
#include <grpcpp/impl/server_initializer.h>
-#include <grpcpp/server.h>
+#include <grpcpp/server_builder.h>
#include "src/cpp/ext/proto_server_reflection.h"
diff --git a/contrib/libs/grpc/src/cpp/server/async_generic_service.cc b/contrib/libs/grpc/src/cpp/server/async_generic_service.cc
index 9580219ec1..15381fafef 100644
--- a/contrib/libs/grpc/src/cpp/server/async_generic_service.cc
+++ b/contrib/libs/grpc/src/cpp/server/async_generic_service.cc
@@ -16,6 +16,7 @@
*
*/
+#include <grpcpp/completion_queue.h>
#include <grpcpp/generic/async_generic_service.h>
#include <grpcpp/server.h>
diff --git a/contrib/libs/grpc/src/cpp/server/channel_argument_option.cc b/contrib/libs/grpc/src/cpp/server/channel_argument_option.cc
index fce23e49d5..dcdc08b145 100644
--- a/contrib/libs/grpc/src/cpp/server/channel_argument_option.cc
+++ b/contrib/libs/grpc/src/cpp/server/channel_argument_option.cc
@@ -16,7 +16,16 @@
*
*/
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <vector>
+
#include <grpcpp/impl/channel_argument_option.h>
+#include <grpcpp/impl/server_builder_option.h>
+#include <grpcpp/impl/server_builder_plugin.h>
+#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/config.h>
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/server/channelz/channelz_service.cc b/contrib/libs/grpc/src/cpp/server/channelz/channelz_service.cc
index 6dcf84bf40..fae8f2b9fb 100644
--- a/contrib/libs/grpc/src/cpp/server/channelz/channelz_service.cc
+++ b/contrib/libs/grpc/src/cpp/server/channelz/channelz_service.cc
@@ -20,8 +20,10 @@
#include "src/cpp/server/channelz/channelz_service.h"
-#include <grpc/grpc.h>
#include <grpc/support/alloc.h>
+#include <grpcpp/impl/codegen/config_protobuf.h>
+
+// IWYU pragma: no_include <google/protobuf/util/json_util.h>
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/server/channelz/channelz_service.h b/contrib/libs/grpc/src/cpp/server/channelz/channelz_service.h
index 824f0a9fe1..91936da959 100644
--- a/contrib/libs/grpc/src/cpp/server/channelz/channelz_service.h
+++ b/contrib/libs/grpc/src/cpp/server/channelz/channelz_service.h
@@ -22,8 +22,10 @@
#include <grpc/support/port_platform.h>
#include <grpcpp/grpcpp.h>
+#include <grpcpp/support/status.h>
#include "src/proto/grpc/channelz/channelz.grpc.pb.h"
+#include "src/proto/grpc/channelz/channelz.pb.h"
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/server/channelz/channelz_service_plugin.cc b/contrib/libs/grpc/src/cpp/server/channelz/channelz_service_plugin.cc
index b7f20b8312..07c74b6cdf 100644
--- a/contrib/libs/grpc/src/cpp/server/channelz/channelz_service_plugin.cc
+++ b/contrib/libs/grpc/src/cpp/server/channelz/channelz_service_plugin.cc
@@ -18,10 +18,15 @@
#include <grpc/support/port_platform.h>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
#include <grpcpp/ext/channelz_service_plugin.h>
#include <grpcpp/impl/server_builder_plugin.h>
#include <grpcpp/impl/server_initializer.h>
-#include <grpcpp/server.h>
+#include <grpcpp/server_builder.h>
+#include <grpcpp/support/config.h>
#include "src/cpp/server/channelz/channelz_service.h"
diff --git a/contrib/libs/grpc/src/cpp/server/create_default_thread_pool.cc b/contrib/libs/grpc/src/cpp/server/create_default_thread_pool.cc
index 8ca3e32c2f..89d5914d09 100644
--- a/contrib/libs/grpc/src/cpp/server/create_default_thread_pool.cc
+++ b/contrib/libs/grpc/src/cpp/server/create_default_thread_pool.cc
@@ -19,6 +19,7 @@
#include <grpc/support/cpu.h>
#include "src/cpp/server/dynamic_thread_pool.h"
+#include "src/cpp/server/thread_pool_interface.h"
#ifndef GRPC_CUSTOM_DEFAULT_THREAD_POOL
diff --git a/contrib/libs/grpc/src/cpp/server/dynamic_thread_pool.cc b/contrib/libs/grpc/src/cpp/server/dynamic_thread_pool.cc
index e96dc4c455..2a3d5bc576 100644
--- a/contrib/libs/grpc/src/cpp/server/dynamic_thread_pool.cc
+++ b/contrib/libs/grpc/src/cpp/server/dynamic_thread_pool.cc
@@ -18,9 +18,6 @@
#include "src/cpp/server/dynamic_thread_pool.h"
-#include <grpc/support/log.h>
-#include <grpcpp/impl/codegen/sync.h>
-
#include "src/core/lib/gprpp/thd.h"
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/server/dynamic_thread_pool.h b/contrib/libs/grpc/src/cpp/server/dynamic_thread_pool.h
index 954aaff35d..34de51a59c 100644
--- a/contrib/libs/grpc/src/cpp/server/dynamic_thread_pool.h
+++ b/contrib/libs/grpc/src/cpp/server/dynamic_thread_pool.h
@@ -19,12 +19,10 @@
#ifndef GRPC_INTERNAL_CPP_DYNAMIC_THREAD_POOL_H
#define GRPC_INTERNAL_CPP_DYNAMIC_THREAD_POOL_H
+#include <functional>
#include <list>
-#include <memory>
#include <queue>
-#include <grpcpp/support/config.h>
-
#include "src/core/lib/gprpp/sync.h"
#include "src/core/lib/gprpp/thd.h"
#include "src/cpp/server/thread_pool_interface.h"
diff --git a/contrib/libs/grpc/src/cpp/server/external_connection_acceptor_impl.cc b/contrib/libs/grpc/src/cpp/server/external_connection_acceptor_impl.cc
index 09d2a9d3b5..9f9acda7fa 100644
--- a/contrib/libs/grpc/src/cpp/server/external_connection_acceptor_impl.cc
+++ b/contrib/libs/grpc/src/cpp/server/external_connection_acceptor_impl.cc
@@ -19,8 +19,11 @@
#include "src/cpp/server/external_connection_acceptor_impl.h"
#include <memory>
+#include <utility>
+#include <grpc/support/log.h>
#include <grpcpp/server_builder.h>
+#include <grpcpp/support/byte_buffer.h>
#include <grpcpp/support/channel_arguments.h>
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/server/external_connection_acceptor_impl.h b/contrib/libs/grpc/src/cpp/server/external_connection_acceptor_impl.h
index ed356c1705..9e3723a206 100644
--- a/contrib/libs/grpc/src/cpp/server/external_connection_acceptor_impl.h
+++ b/contrib/libs/grpc/src/cpp/server/external_connection_acceptor_impl.h
@@ -20,11 +20,13 @@
#define SRC_CPP_SERVER_EXTERNAL_CONNECTION_ACCEPTOR_IMPL_H_
#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
-#include <grpc/impl/codegen/grpc_types.h>
#include <grpcpp/security/server_credentials.h>
#include <grpcpp/server_builder.h>
#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/config.h>
#include "src/core/lib/gprpp/sync.h"
#include "src/core/lib/iomgr/tcp_server.h"
diff --git a/contrib/libs/grpc/src/cpp/server/health/default_health_check_service.cc b/contrib/libs/grpc/src/cpp/server/health/default_health_check_service.cc
index d77f33ab79..4b0065234f 100644
--- a/contrib/libs/grpc/src/cpp/server/health/default_health_check_service.cc
+++ b/contrib/libs/grpc/src/cpp/server/health/default_health_check_service.cc
@@ -18,15 +18,21 @@
#include "src/cpp/server/health/default_health_check_service.h"
+#include <stdint.h>
+
#include <memory>
+#include <utility>
#include "y_absl/memory/memory.h"
+#include "upb/upb.h"
#include "upb/upb.hpp"
#include <grpc/slice.h>
-#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
-#include <grpcpp/impl/codegen/method_handler.h>
+#include <grpcpp/impl/codegen/server_callback_handlers.h>
+#include <grpcpp/impl/rpc_method.h>
+#include <grpcpp/impl/rpc_service_method.h>
+#include <grpcpp/support/slice.h>
#include "src/proto/grpc/health/v1/health.upb.h"
@@ -44,7 +50,7 @@ DefaultHealthCheckService::DefaultHealthCheckService() {
void DefaultHealthCheckService::SetServingStatus(
const TString& service_name, bool serving) {
- grpc_core::MutexLock lock(&mu_);
+ grpc::internal::MutexLock lock(&mu_);
if (shutdown_) {
// Set to NOT_SERVING in case service_name is not in the map.
serving = false;
@@ -54,10 +60,8 @@ void DefaultHealthCheckService::SetServingStatus(
void DefaultHealthCheckService::SetServingStatus(bool serving) {
const ServingStatus status = serving ? SERVING : NOT_SERVING;
- grpc_core::MutexLock lock(&mu_);
- if (shutdown_) {
- return;
- }
+ grpc::internal::MutexLock lock(&mu_);
+ if (shutdown_) return;
for (auto& p : services_map_) {
ServiceData& service_data = p.second;
service_data.SetServingStatus(status);
@@ -65,10 +69,8 @@ void DefaultHealthCheckService::SetServingStatus(bool serving) {
}
void DefaultHealthCheckService::Shutdown() {
- grpc_core::MutexLock lock(&mu_);
- if (shutdown_) {
- return;
- }
+ grpc::internal::MutexLock lock(&mu_);
+ if (shutdown_) return;
shutdown_ = true;
for (auto& p : services_map_) {
ServiceData& service_data = p.second;
@@ -79,43 +81,37 @@ void DefaultHealthCheckService::Shutdown() {
DefaultHealthCheckService::ServingStatus
DefaultHealthCheckService::GetServingStatus(
const TString& service_name) const {
- grpc_core::MutexLock lock(&mu_);
+ grpc::internal::MutexLock lock(&mu_);
auto it = services_map_.find(service_name);
- if (it == services_map_.end()) {
- return NOT_FOUND;
- }
+ if (it == services_map_.end()) return NOT_FOUND;
const ServiceData& service_data = it->second;
return service_data.GetServingStatus();
}
-void DefaultHealthCheckService::RegisterCallHandler(
+void DefaultHealthCheckService::RegisterWatch(
const TString& service_name,
- std::shared_ptr<HealthCheckServiceImpl::CallHandler> handler) {
- grpc_core::MutexLock lock(&mu_);
+ grpc_core::RefCountedPtr<HealthCheckServiceImpl::WatchReactor> watcher) {
+ grpc::internal::MutexLock lock(&mu_);
ServiceData& service_data = services_map_[service_name];
- service_data.AddCallHandler(handler /* copies ref */);
- HealthCheckServiceImpl::CallHandler* h = handler.get();
- h->SendHealth(std::move(handler), service_data.GetServingStatus());
+ watcher->SendHealth(service_data.GetServingStatus());
+ service_data.AddWatch(std::move(watcher));
}
-void DefaultHealthCheckService::UnregisterCallHandler(
+void DefaultHealthCheckService::UnregisterWatch(
const TString& service_name,
- const std::shared_ptr<HealthCheckServiceImpl::CallHandler>& handler) {
- grpc_core::MutexLock lock(&mu_);
+ HealthCheckServiceImpl::WatchReactor* watcher) {
+ grpc::internal::MutexLock lock(&mu_);
auto it = services_map_.find(service_name);
if (it == services_map_.end()) return;
ServiceData& service_data = it->second;
- service_data.RemoveCallHandler(handler);
- if (service_data.Unused()) {
- services_map_.erase(it);
- }
+ service_data.RemoveWatch(watcher);
+ if (service_data.Unused()) services_map_.erase(it);
}
DefaultHealthCheckService::HealthCheckServiceImpl*
-DefaultHealthCheckService::GetHealthCheckService(
- std::unique_ptr<ServerCompletionQueue> cq) {
+DefaultHealthCheckService::GetHealthCheckService() {
GPR_ASSERT(impl_ == nullptr);
- impl_ = y_absl::make_unique<HealthCheckServiceImpl>(this, std::move(cq));
+ impl_ = y_absl::make_unique<HealthCheckServiceImpl>(this);
return impl_.get();
}
@@ -126,19 +122,19 @@ DefaultHealthCheckService::GetHealthCheckService(
void DefaultHealthCheckService::ServiceData::SetServingStatus(
ServingStatus status) {
status_ = status;
- for (auto& call_handler : call_handlers_) {
- call_handler->SendHealth(call_handler /* copies ref */, status);
+ for (const auto& p : watchers_) {
+ p.first->SendHealth(status);
}
}
-void DefaultHealthCheckService::ServiceData::AddCallHandler(
- std::shared_ptr<HealthCheckServiceImpl::CallHandler> handler) {
- call_handlers_.insert(std::move(handler));
+void DefaultHealthCheckService::ServiceData::AddWatch(
+ grpc_core::RefCountedPtr<HealthCheckServiceImpl::WatchReactor> watcher) {
+ watchers_[watcher.get()] = std::move(watcher);
}
-void DefaultHealthCheckService::ServiceData::RemoveCallHandler(
- const std::shared_ptr<HealthCheckServiceImpl::CallHandler>& handler) {
- call_handlers_.erase(handler);
+void DefaultHealthCheckService::ServiceData::RemoveWatch(
+ HealthCheckServiceImpl::WatchReactor* watcher) {
+ watchers_.erase(watcher);
}
//
@@ -151,53 +147,57 @@ const char kHealthWatchMethodName[] = "/grpc.health.v1.Health/Watch";
} // namespace
DefaultHealthCheckService::HealthCheckServiceImpl::HealthCheckServiceImpl(
- DefaultHealthCheckService* database,
- std::unique_ptr<ServerCompletionQueue> cq)
- : database_(database), cq_(std::move(cq)) {
+ DefaultHealthCheckService* database)
+ : database_(database) {
// Add Check() method.
AddMethod(new internal::RpcServiceMethod(
kHealthCheckMethodName, internal::RpcMethod::NORMAL_RPC, nullptr));
+ MarkMethodCallback(
+ 0, new internal::CallbackUnaryHandler<ByteBuffer, ByteBuffer>(
+ [database](CallbackServerContext* context,
+ const ByteBuffer* request, ByteBuffer* response) {
+ return HandleCheckRequest(database, context, request, response);
+ }));
// Add Watch() method.
AddMethod(new internal::RpcServiceMethod(
kHealthWatchMethodName, internal::RpcMethod::SERVER_STREAMING, nullptr));
- // Create serving thread.
- thread_ = y_absl::make_unique<grpc_core::Thread>("grpc_health_check_service",
- Serve, this);
+ MarkMethodCallback(
+ 1, new internal::CallbackServerStreamingHandler<ByteBuffer, ByteBuffer>(
+ [this](CallbackServerContext* /*ctx*/, const ByteBuffer* request) {
+ return new WatchReactor(this, request);
+ }));
}
DefaultHealthCheckService::HealthCheckServiceImpl::~HealthCheckServiceImpl() {
- // We will reach here after the server starts shutting down.
+ grpc::internal::MutexLock lock(&mu_);
shutdown_ = true;
- {
- grpc_core::MutexLock lock(&cq_shutdown_mu_);
- cq_->Shutdown();
+ while (num_watches_ > 0) {
+ shutdown_condition_.Wait(&mu_);
}
- thread_->Join();
-}
-
-void DefaultHealthCheckService::HealthCheckServiceImpl::StartServingThread() {
- // Request the calls we're interested in.
- // We do this before starting the serving thread, so that we know it's
- // done before server startup is complete.
- CheckCallHandler::CreateAndStart(cq_.get(), database_, this);
- WatchCallHandler::CreateAndStart(cq_.get(), database_, this);
- // Start serving thread.
- thread_->Start();
}
-void DefaultHealthCheckService::HealthCheckServiceImpl::Serve(void* arg) {
- HealthCheckServiceImpl* service = static_cast<HealthCheckServiceImpl*>(arg);
- void* tag;
- bool ok;
- while (true) {
- if (!service->cq_->Next(&tag, &ok)) {
- // The completion queue is shutting down.
- GPR_ASSERT(service->shutdown_);
- break;
- }
- auto* next_step = static_cast<CallableTag*>(tag);
- next_step->Run(ok);
+ServerUnaryReactor*
+DefaultHealthCheckService::HealthCheckServiceImpl::HandleCheckRequest(
+ DefaultHealthCheckService* database, CallbackServerContext* context,
+ const ByteBuffer* request, ByteBuffer* response) {
+ auto* reactor = context->DefaultReactor();
+ TString service_name;
+ if (!DecodeRequest(*request, &service_name)) {
+ reactor->Finish(
+ Status(StatusCode::INVALID_ARGUMENT, "could not parse request"));
+ return reactor;
+ }
+ ServingStatus serving_status = database->GetServingStatus(service_name);
+ if (serving_status == NOT_FOUND) {
+ reactor->Finish(Status(StatusCode::NOT_FOUND, "service name unknown"));
+ return reactor;
}
+ if (!EncodeResponse(serving_status, response)) {
+ reactor->Finish(Status(StatusCode::INTERNAL, "could not encode response"));
+ return reactor;
+ }
+ reactor->Finish(Status::OK);
+ return reactor;
}
bool DefaultHealthCheckService::HealthCheckServiceImpl::DecodeRequest(
@@ -248,245 +248,124 @@ bool DefaultHealthCheckService::HealthCheckServiceImpl::EncodeResponse(
}
//
-// DefaultHealthCheckService::HealthCheckServiceImpl::CheckCallHandler
-//
-
-void DefaultHealthCheckService::HealthCheckServiceImpl::CheckCallHandler::
- CreateAndStart(ServerCompletionQueue* cq,
- DefaultHealthCheckService* database,
- HealthCheckServiceImpl* service) {
- std::shared_ptr<CallHandler> self =
- std::make_shared<CheckCallHandler>(cq, database, service);
- CheckCallHandler* handler = static_cast<CheckCallHandler*>(self.get());
- {
- grpc_core::MutexLock lock(&service->cq_shutdown_mu_);
- if (service->shutdown_) return;
- // Request a Check() call.
- handler->next_ =
- CallableTag(std::bind(&CheckCallHandler::OnCallReceived, handler,
- std::placeholders::_1, std::placeholders::_2),
- std::move(self));
- service->RequestAsyncUnary(0, &handler->ctx_, &handler->request_,
- &handler->writer_, cq, cq, &handler->next_);
- }
-}
-
-DefaultHealthCheckService::HealthCheckServiceImpl::CheckCallHandler::
- CheckCallHandler(ServerCompletionQueue* cq,
- DefaultHealthCheckService* database,
- HealthCheckServiceImpl* service)
- : cq_(cq), database_(database), service_(service), writer_(&ctx_) {}
-
-void DefaultHealthCheckService::HealthCheckServiceImpl::CheckCallHandler::
- OnCallReceived(std::shared_ptr<CallHandler> self, bool ok) {
- if (!ok) {
- // The value of ok being false means that the server is shutting down.
- return;
- }
- // Spawn a new handler instance to serve the next new client. Every handler
- // instance will deallocate itself when it's done.
- CreateAndStart(cq_, database_, service_);
- // Process request.
- gpr_log(GPR_DEBUG, "[HCS %p] Health check started for handler %p", service_,
- this);
- TString service_name;
- grpc::Status status = Status::OK;
- ByteBuffer response;
- if (!service_->DecodeRequest(request_, &service_name)) {
- status = Status(StatusCode::INVALID_ARGUMENT, "could not parse request");
- } else {
- ServingStatus serving_status = database_->GetServingStatus(service_name);
- if (serving_status == NOT_FOUND) {
- status = Status(StatusCode::NOT_FOUND, "service name unknown");
- } else if (!service_->EncodeResponse(serving_status, &response)) {
- status = Status(StatusCode::INTERNAL, "could not encode response");
- }
- }
- // Send response.
- {
- grpc_core::MutexLock lock(&service_->cq_shutdown_mu_);
- if (!service_->shutdown_) {
- next_ =
- CallableTag(std::bind(&CheckCallHandler::OnFinishDone, this,
- std::placeholders::_1, std::placeholders::_2),
- std::move(self));
- if (status.ok()) {
- writer_.Finish(response, status, &next_);
- } else {
- writer_.FinishWithError(status, &next_);
- }
- }
- }
-}
-
-void DefaultHealthCheckService::HealthCheckServiceImpl::CheckCallHandler::
- OnFinishDone(std::shared_ptr<CallHandler> self, bool ok) {
- if (ok) {
- gpr_log(GPR_DEBUG, "[HCS %p] Health check call finished for handler %p",
- service_, this);
- }
- self.reset(); // To appease clang-tidy.
-}
-
-//
-// DefaultHealthCheckService::HealthCheckServiceImpl::WatchCallHandler
+// DefaultHealthCheckService::HealthCheckServiceImpl::WatchReactor
//
-void DefaultHealthCheckService::HealthCheckServiceImpl::WatchCallHandler::
- CreateAndStart(ServerCompletionQueue* cq,
- DefaultHealthCheckService* database,
- HealthCheckServiceImpl* service) {
- std::shared_ptr<CallHandler> self =
- std::make_shared<WatchCallHandler>(cq, database, service);
- WatchCallHandler* handler = static_cast<WatchCallHandler*>(self.get());
+DefaultHealthCheckService::HealthCheckServiceImpl::WatchReactor::WatchReactor(
+ HealthCheckServiceImpl* service, const ByteBuffer* request)
+ : service_(service) {
{
- grpc_core::MutexLock lock(&service->cq_shutdown_mu_);
- if (service->shutdown_) return;
- // Request AsyncNotifyWhenDone().
- handler->on_done_notified_ =
- CallableTag(std::bind(&WatchCallHandler::OnDoneNotified, handler,
- std::placeholders::_1, std::placeholders::_2),
- self /* copies ref */);
- handler->ctx_.AsyncNotifyWhenDone(&handler->on_done_notified_);
- // Request a Watch() call.
- handler->next_ =
- CallableTag(std::bind(&WatchCallHandler::OnCallReceived, handler,
- std::placeholders::_1, std::placeholders::_2),
- std::move(self));
- service->RequestAsyncServerStreaming(1, &handler->ctx_, &handler->request_,
- &handler->stream_, cq, cq,
- &handler->next_);
- }
-}
-
-DefaultHealthCheckService::HealthCheckServiceImpl::WatchCallHandler::
- WatchCallHandler(ServerCompletionQueue* cq,
- DefaultHealthCheckService* database,
- HealthCheckServiceImpl* service)
- : cq_(cq), database_(database), service_(service), stream_(&ctx_) {}
-
-void DefaultHealthCheckService::HealthCheckServiceImpl::WatchCallHandler::
- OnCallReceived(std::shared_ptr<CallHandler> self, bool ok) {
- if (!ok) {
- // Server shutting down.
- //
- // AsyncNotifyWhenDone() needs to be called before the call starts, but the
- // tag will not pop out if the call never starts (
- // https://github.com/grpc/grpc/issues/10136). So we need to manually
- // release the ownership of the handler in this case.
- GPR_ASSERT(on_done_notified_.ReleaseHandler() != nullptr);
- return;
+ grpc::internal::MutexLock lock(&service_->mu_);
+ ++service_->num_watches_;
}
- // Spawn a new handler instance to serve the next new client. Every handler
- // instance will deallocate itself when it's done.
- CreateAndStart(cq_, database_, service_);
- // Parse request.
- if (!service_->DecodeRequest(request_, &service_name_)) {
- SendFinish(std::move(self),
- Status(StatusCode::INVALID_ARGUMENT, "could not parse request"));
+ bool success = DecodeRequest(*request, &service_name_);
+ gpr_log(GPR_DEBUG, "[HCS %p] watcher %p \"%s\": watch call started", service_,
+ this, service_name_.c_str());
+ if (!success) {
+ MaybeFinishLocked(Status(StatusCode::INTERNAL, "could not parse request"));
return;
}
// Register the call for updates to the service.
- gpr_log(GPR_DEBUG,
- "[HCS %p] Health watch started for service \"%s\" (handler: %p)",
- service_, service_name_.c_str(), this);
- database_->RegisterCallHandler(service_name_, std::move(self));
+ service_->database_->RegisterWatch(service_name_, Ref());
}
-void DefaultHealthCheckService::HealthCheckServiceImpl::WatchCallHandler::
- SendHealth(std::shared_ptr<CallHandler> self, ServingStatus status) {
- grpc_core::MutexLock lock(&send_mu_);
+void DefaultHealthCheckService::HealthCheckServiceImpl::WatchReactor::
+ SendHealth(ServingStatus status) {
+ gpr_log(GPR_DEBUG,
+ "[HCS %p] watcher %p \"%s\": SendHealth() for ServingStatus %d",
+ service_, this, service_name_.c_str(), status);
+ grpc::internal::MutexLock lock(&mu_);
// If there's already a send in flight, cache the new status, and
// we'll start a new send for it when the one in flight completes.
- if (send_in_flight_) {
+ if (write_pending_) {
+ gpr_log(GPR_DEBUG, "[HCS %p] watcher %p \"%s\": queuing write", service_,
+ this, service_name_.c_str());
pending_status_ = status;
return;
}
// Start a send.
- SendHealthLocked(std::move(self), status);
+ SendHealthLocked(status);
}
-void DefaultHealthCheckService::HealthCheckServiceImpl::WatchCallHandler::
- SendHealthLocked(std::shared_ptr<CallHandler> self, ServingStatus status) {
- send_in_flight_ = true;
- // Construct response.
- ByteBuffer response;
- bool success = service_->EncodeResponse(status, &response);
- // Grab shutdown lock and send response.
- grpc_core::MutexLock cq_lock(&service_->cq_shutdown_mu_);
- if (service_->shutdown_) {
- SendFinishLocked(std::move(self), Status::CANCELLED);
- return;
+void DefaultHealthCheckService::HealthCheckServiceImpl::WatchReactor::
+ SendHealthLocked(ServingStatus status) {
+ // Do nothing if Finish() has already been called.
+ if (finish_called_) return;
+ // Check if we're shutting down.
+ {
+ grpc::internal::MutexLock lock(&service_->mu_);
+ if (service_->shutdown_) {
+ MaybeFinishLocked(
+ Status(StatusCode::CANCELLED, "not writing due to shutdown"));
+ return;
+ }
}
+ // Send response.
+ bool success = EncodeResponse(status, &response_);
if (!success) {
- SendFinishLocked(std::move(self),
- Status(StatusCode::INTERNAL, "could not encode response"));
+ MaybeFinishLocked(
+ Status(StatusCode::INTERNAL, "could not encode response"));
return;
}
- next_ = CallableTag(std::bind(&WatchCallHandler::OnSendHealthDone, this,
- std::placeholders::_1, std::placeholders::_2),
- std::move(self));
- stream_.Write(response, &next_);
+ gpr_log(GPR_DEBUG,
+ "[HCS %p] watcher %p \"%s\": starting write for ServingStatus %d",
+ service_, this, service_name_.c_str(), status);
+ write_pending_ = true;
+ StartWrite(&response_);
}
-void DefaultHealthCheckService::HealthCheckServiceImpl::WatchCallHandler::
- OnSendHealthDone(std::shared_ptr<CallHandler> self, bool ok) {
+void DefaultHealthCheckService::HealthCheckServiceImpl::WatchReactor::
+ OnWriteDone(bool ok) {
+ gpr_log(GPR_DEBUG, "[HCS %p] watcher %p \"%s\": OnWriteDone(): ok=%d",
+ service_, this, service_name_.c_str(), ok);
+ response_.Clear();
+ grpc::internal::MutexLock lock(&mu_);
if (!ok) {
- SendFinish(std::move(self), Status::CANCELLED);
+ MaybeFinishLocked(Status(StatusCode::CANCELLED, "OnWriteDone() ok=false"));
return;
}
- grpc_core::MutexLock lock(&send_mu_);
- send_in_flight_ = false;
+ write_pending_ = false;
// If we got a new status since we started the last send, start a
// new send for it.
if (pending_status_ != NOT_FOUND) {
auto status = pending_status_;
pending_status_ = NOT_FOUND;
- SendHealthLocked(std::move(self), status);
+ SendHealthLocked(status);
}
}
-void DefaultHealthCheckService::HealthCheckServiceImpl::WatchCallHandler::
- SendFinish(std::shared_ptr<CallHandler> self, const Status& status) {
- if (finish_called_) return;
- grpc_core::MutexLock cq_lock(&service_->cq_shutdown_mu_);
- if (service_->shutdown_) return;
- SendFinishLocked(std::move(self), status);
-}
-
-void DefaultHealthCheckService::HealthCheckServiceImpl::WatchCallHandler::
- SendFinishLocked(std::shared_ptr<CallHandler> self, const Status& status) {
- on_finish_done_ =
- CallableTag(std::bind(&WatchCallHandler::OnFinishDone, this,
- std::placeholders::_1, std::placeholders::_2),
- std::move(self));
- stream_.Finish(status, &on_finish_done_);
- finish_called_ = true;
+void DefaultHealthCheckService::HealthCheckServiceImpl::WatchReactor::
+ OnCancel() {
+ grpc::internal::MutexLock lock(&mu_);
+ MaybeFinishLocked(Status(StatusCode::UNKNOWN, "OnCancel()"));
}
-void DefaultHealthCheckService::HealthCheckServiceImpl::WatchCallHandler::
- OnFinishDone(std::shared_ptr<CallHandler> self, bool ok) {
- if (ok) {
- gpr_log(GPR_DEBUG,
- "[HCS %p] Health watch call finished (service_name: \"%s\", "
- "handler: %p).",
- service_, service_name_.c_str(), this);
+void DefaultHealthCheckService::HealthCheckServiceImpl::WatchReactor::OnDone() {
+ gpr_log(GPR_DEBUG, "[HCS %p] watcher %p \"%s\": OnDone()", service_, this,
+ service_name_.c_str());
+ service_->database_->UnregisterWatch(service_name_, this);
+ {
+ grpc::internal::MutexLock lock(&service_->mu_);
+ if (--service_->num_watches_ == 0 && service_->shutdown_) {
+ service_->shutdown_condition_.Signal();
+ }
}
- self.reset(); // To appease clang-tidy.
+ // Free the initial ref from instantiation.
+ Unref();
}
-// TODO(roth): This method currently assumes that there will be only one
-// thread polling the cq and invoking the corresponding callbacks. If
-// that changes, we will need to add synchronization here.
-void DefaultHealthCheckService::HealthCheckServiceImpl::WatchCallHandler::
- OnDoneNotified(std::shared_ptr<CallHandler> self, bool ok) {
- GPR_ASSERT(ok);
+void DefaultHealthCheckService::HealthCheckServiceImpl::WatchReactor::
+ MaybeFinishLocked(Status status) {
gpr_log(GPR_DEBUG,
- "[HCS %p] Health watch call is notified done (handler: %p, "
- "is_cancelled: %d).",
- service_, this, static_cast<int>(ctx_.IsCancelled()));
- database_->UnregisterCallHandler(service_name_, self);
- SendFinish(std::move(self), Status::CANCELLED);
+ "[HCS %p] watcher %p \"%s\": MaybeFinishLocked() with code=%d msg=%s",
+ service_, this, service_name_.c_str(), status.error_code(),
+ status.error_message().c_str());
+ if (!finish_called_) {
+ gpr_log(GPR_DEBUG, "[HCS %p] watcher %p \"%s\": actually calling Finish()",
+ service_, this, service_name_.c_str());
+ finish_called_ = true;
+ Finish(status);
+ }
}
} // namespace grpc
diff --git a/contrib/libs/grpc/src/cpp/server/health/default_health_check_service.h b/contrib/libs/grpc/src/cpp/server/health/default_health_check_service.h
index 88a1cf3927..37efa5f0cc 100644
--- a/contrib/libs/grpc/src/cpp/server/health/default_health_check_service.h
+++ b/contrib/libs/grpc/src/cpp/server/health/default_health_check_service.h
@@ -19,20 +19,26 @@
#ifndef GRPC_INTERNAL_CPP_SERVER_DEFAULT_HEALTH_CHECK_SERVICE_H
#define GRPC_INTERNAL_CPP_SERVER_DEFAULT_HEALTH_CHECK_SERVICE_H
-#include <atomic>
-#include <set>
+#include <stddef.h>
+
+#include <map>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
+#include "y_absl/base/thread_annotations.h"
-#include <grpc/support/log.h>
#include <grpcpp/grpcpp.h>
#include <grpcpp/health_check_service_interface.h>
-#include <grpcpp/impl/codegen/async_generic_service.h>
-#include <grpcpp/impl/codegen/async_unary_call.h>
-#include <grpcpp/impl/codegen/completion_queue.h>
-#include <grpcpp/impl/codegen/service_type.h>
+#include <grpcpp/impl/codegen/sync.h>
+#include <grpcpp/impl/service_type.h>
#include <grpcpp/support/byte_buffer.h>
+#include <grpcpp/support/config.h>
+#include <grpcpp/support/server_callback.h>
+#include <grpcpp/support/status.h>
-#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/gprpp/thd.h"
+#include "src/core/lib/gprpp/ref_counted.h"
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
namespace grpc {
@@ -45,191 +51,55 @@ class DefaultHealthCheckService final : public HealthCheckServiceInterface {
// The service impl to register with the server.
class HealthCheckServiceImpl : public Service {
public:
- // Base class for call handlers.
- class CallHandler {
+ // Reactor for handling Watch streams.
+ class WatchReactor : public ServerWriteReactor<ByteBuffer>,
+ public grpc_core::RefCounted<WatchReactor> {
public:
- virtual ~CallHandler() = default;
- virtual void SendHealth(std::shared_ptr<CallHandler> self,
- ServingStatus status) = 0;
- };
+ WatchReactor(HealthCheckServiceImpl* service, const ByteBuffer* request);
- HealthCheckServiceImpl(DefaultHealthCheckService* database,
- std::unique_ptr<ServerCompletionQueue> cq);
-
- ~HealthCheckServiceImpl() override;
+ void SendHealth(ServingStatus status);
- void StartServingThread();
-
- private:
- // A tag that can be called with a bool argument. It's tailored for
- // CallHandler's use. Before being used, it should be constructed with a
- // method of CallHandler and a shared pointer to the handler. The
- // shared pointer will be moved to the invoked function and the function
- // can only be invoked once. That makes ref counting of the handler easier,
- // because the shared pointer is not bound to the function and can be gone
- // once the invoked function returns (if not used any more).
- class CallableTag {
- public:
- using HandlerFunction =
- std::function<void(std::shared_ptr<CallHandler>, bool)>;
-
- CallableTag() {}
-
- CallableTag(HandlerFunction func, std::shared_ptr<CallHandler> handler)
- : handler_function_(std::move(func)), handler_(std::move(handler)) {
- GPR_ASSERT(handler_function_ != nullptr);
- GPR_ASSERT(handler_ != nullptr);
- }
-
- // Runs the tag. This should be called only once. The handler is no
- // longer owned by this tag after this method is invoked.
- void Run(bool ok) {
- GPR_ASSERT(handler_function_ != nullptr);
- GPR_ASSERT(handler_ != nullptr);
- handler_function_(std::move(handler_), ok);
- }
-
- // Releases and returns the shared pointer to the handler.
- std::shared_ptr<CallHandler> ReleaseHandler() {
- return std::move(handler_);
- }
+ void OnWriteDone(bool ok) override;
+ void OnCancel() override;
+ void OnDone() override;
private:
- HandlerFunction handler_function_ = nullptr;
- std::shared_ptr<CallHandler> handler_;
- };
+ void SendHealthLocked(ServingStatus status)
+ Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
- // Call handler for Check method.
- // Each handler takes care of one call. It contains per-call data and it
- // will access the members of the parent class (i.e.,
- // DefaultHealthCheckService) for per-service health data.
- class CheckCallHandler : public CallHandler {
- public:
- // Instantiates a CheckCallHandler and requests the next health check
- // call. The handler object will manage its own lifetime, so no action is
- // needed from the caller any more regarding that object.
- static void CreateAndStart(ServerCompletionQueue* cq,
- DefaultHealthCheckService* database,
- HealthCheckServiceImpl* service);
-
- // This ctor is public because we want to use std::make_shared<> in
- // CreateAndStart(). This ctor shouldn't be used elsewhere.
- CheckCallHandler(ServerCompletionQueue* cq,
- DefaultHealthCheckService* database,
- HealthCheckServiceImpl* service);
-
- // Not used for Check.
- void SendHealth(std::shared_ptr<CallHandler> /*self*/,
- ServingStatus /*status*/) override {}
-
- private:
- // Called when we receive a call.
- // Spawns a new handler so that we can keep servicing future calls.
- void OnCallReceived(std::shared_ptr<CallHandler> self, bool ok);
-
- // Called when Finish() is done.
- void OnFinishDone(std::shared_ptr<CallHandler> self, bool ok);
+ void MaybeFinishLocked(Status status) Y_ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
- // The members passed down from HealthCheckServiceImpl.
- ServerCompletionQueue* cq_;
- DefaultHealthCheckService* database_;
HealthCheckServiceImpl* service_;
+ TString service_name_;
+ ByteBuffer response_;
- ByteBuffer request_;
- GenericServerAsyncResponseWriter writer_;
- ServerContext ctx_;
-
- CallableTag next_;
+ grpc::internal::Mutex mu_;
+ bool write_pending_ Y_ABSL_GUARDED_BY(mu_) = false;
+ ServingStatus pending_status_ Y_ABSL_GUARDED_BY(mu_) = NOT_FOUND;
+ bool finish_called_ Y_ABSL_GUARDED_BY(mu_) = false;
};
- // Call handler for Watch method.
- // Each handler takes care of one call. It contains per-call data and it
- // will access the members of the parent class (i.e.,
- // DefaultHealthCheckService) for per-service health data.
- class WatchCallHandler : public CallHandler {
- public:
- // Instantiates a WatchCallHandler and requests the next health check
- // call. The handler object will manage its own lifetime, so no action is
- // needed from the caller any more regarding that object.
- static void CreateAndStart(ServerCompletionQueue* cq,
- DefaultHealthCheckService* database,
- HealthCheckServiceImpl* service);
-
- // This ctor is public because we want to use std::make_shared<> in
- // CreateAndStart(). This ctor shouldn't be used elsewhere.
- WatchCallHandler(ServerCompletionQueue* cq,
- DefaultHealthCheckService* database,
- HealthCheckServiceImpl* service);
-
- void SendHealth(std::shared_ptr<CallHandler> self,
- ServingStatus status) override;
-
- private:
- // Called when we receive a call.
- // Spawns a new handler so that we can keep servicing future calls.
- void OnCallReceived(std::shared_ptr<CallHandler> self, bool ok);
-
- // Requires holding send_mu_.
- void SendHealthLocked(std::shared_ptr<CallHandler> self,
- ServingStatus status);
-
- // When sending a health result finishes.
- void OnSendHealthDone(std::shared_ptr<CallHandler> self, bool ok);
-
- void SendFinish(std::shared_ptr<CallHandler> self, const Status& status);
-
- // Requires holding service_->cq_shutdown_mu_.
- void SendFinishLocked(std::shared_ptr<CallHandler> self,
- const Status& status);
-
- // Called when Finish() is done.
- void OnFinishDone(std::shared_ptr<CallHandler> self, bool ok);
-
- // Called when AsyncNotifyWhenDone() notifies us.
- void OnDoneNotified(std::shared_ptr<CallHandler> self, bool ok);
-
- // The members passed down from HealthCheckServiceImpl.
- ServerCompletionQueue* cq_;
- DefaultHealthCheckService* database_;
- HealthCheckServiceImpl* service_;
+ explicit HealthCheckServiceImpl(DefaultHealthCheckService* database);
- ByteBuffer request_;
- TString service_name_;
- GenericServerAsyncWriter stream_;
- ServerContext ctx_;
-
- grpc_core::Mutex send_mu_;
- bool send_in_flight_ = false; // Guarded by mu_.
- ServingStatus pending_status_ = NOT_FOUND; // Guarded by mu_.
-
- bool finish_called_ = false;
- CallableTag next_;
- CallableTag on_done_notified_;
- CallableTag on_finish_done_;
- };
+ ~HealthCheckServiceImpl() override;
- // Handles the incoming requests and drives the completion queue in a loop.
- static void Serve(void* arg);
+ private:
+ // Request handler for Check method.
+ static ServerUnaryReactor* HandleCheckRequest(
+ DefaultHealthCheckService* database, CallbackServerContext* context,
+ const ByteBuffer* request, ByteBuffer* response);
// Returns true on success.
static bool DecodeRequest(const ByteBuffer& request,
TString* service_name);
static bool EncodeResponse(ServingStatus status, ByteBuffer* response);
- // Needed to appease Windows compilers, which don't seem to allow
- // nested classes to access protected members in the parent's
- // superclass.
- using Service::RequestAsyncServerStreaming;
- using Service::RequestAsyncUnary;
-
DefaultHealthCheckService* database_;
- std::unique_ptr<ServerCompletionQueue> cq_;
- // To synchronize the operations related to shutdown state of cq_, so that
- // we don't enqueue new tags into cq_ after it is already shut down.
- grpc_core::Mutex cq_shutdown_mu_;
- std::atomic_bool shutdown_{false};
- std::unique_ptr<grpc_core::Thread> thread_;
+ grpc::internal::Mutex mu_;
+ grpc::internal::CondVar shutdown_condition_;
+ bool shutdown_ Y_ABSL_GUARDED_BY(mu_) = false;
+ size_t num_watches_ Y_ABSL_GUARDED_BY(mu_) = 0;
};
DefaultHealthCheckService();
@@ -241,8 +111,7 @@ class DefaultHealthCheckService final : public HealthCheckServiceInterface {
ServingStatus GetServingStatus(const TString& service_name) const;
- HealthCheckServiceImpl* GetHealthCheckService(
- std::unique_ptr<ServerCompletionQueue> cq);
+ HealthCheckServiceImpl* GetHealthCheckService();
private:
// Stores the current serving status of a service and any call
@@ -251,31 +120,28 @@ class DefaultHealthCheckService final : public HealthCheckServiceInterface {
public:
void SetServingStatus(ServingStatus status);
ServingStatus GetServingStatus() const { return status_; }
- void AddCallHandler(
- std::shared_ptr<HealthCheckServiceImpl::CallHandler> handler);
- void RemoveCallHandler(
- const std::shared_ptr<HealthCheckServiceImpl::CallHandler>& handler);
- bool Unused() const {
- return call_handlers_.empty() && status_ == NOT_FOUND;
- }
+ void AddWatch(
+ grpc_core::RefCountedPtr<HealthCheckServiceImpl::WatchReactor> watcher);
+ void RemoveWatch(HealthCheckServiceImpl::WatchReactor* watcher);
+ bool Unused() const { return watchers_.empty() && status_ == NOT_FOUND; }
private:
ServingStatus status_ = NOT_FOUND;
- std::set<std::shared_ptr<HealthCheckServiceImpl::CallHandler>>
- call_handlers_;
+ std::map<HealthCheckServiceImpl::WatchReactor*,
+ grpc_core::RefCountedPtr<HealthCheckServiceImpl::WatchReactor>>
+ watchers_;
};
- void RegisterCallHandler(
+ void RegisterWatch(
const TString& service_name,
- std::shared_ptr<HealthCheckServiceImpl::CallHandler> handler);
+ grpc_core::RefCountedPtr<HealthCheckServiceImpl::WatchReactor> watcher);
- void UnregisterCallHandler(
- const TString& service_name,
- const std::shared_ptr<HealthCheckServiceImpl::CallHandler>& handler);
+ void UnregisterWatch(const TString& service_name,
+ HealthCheckServiceImpl::WatchReactor* watcher);
- mutable grpc_core::Mutex mu_;
- bool shutdown_ = false; // Guarded by mu_.
- std::map<TString, ServiceData> services_map_; // Guarded by mu_.
+ mutable grpc::internal::Mutex mu_;
+ bool shutdown_ Y_ABSL_GUARDED_BY(&mu_) = false;
+ std::map<TString, ServiceData> services_map_ Y_ABSL_GUARDED_BY(&mu_);
std::unique_ptr<HealthCheckServiceImpl> impl_;
};
diff --git a/contrib/libs/grpc/src/cpp/server/health/health_check_service_server_builder_option.cc b/contrib/libs/grpc/src/cpp/server/health/health_check_service_server_builder_option.cc
index 3fa384ace9..bd32c32790 100644
--- a/contrib/libs/grpc/src/cpp/server/health/health_check_service_server_builder_option.cc
+++ b/contrib/libs/grpc/src/cpp/server/health/health_check_service_server_builder_option.cc
@@ -16,7 +16,14 @@
*
*/
+#include <memory>
+#include <utility>
+#include <vector>
+
#include <grpcpp/ext/health_check_service_server_builder_option.h>
+#include <grpcpp/health_check_service_interface.h>
+#include <grpcpp/impl/server_builder_plugin.h>
+#include <grpcpp/support/channel_arguments.h>
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/server/insecure_server_credentials.cc b/contrib/libs/grpc/src/cpp/server/insecure_server_credentials.cc
index 893c54cc8a..7720d53a3e 100644
--- a/contrib/libs/grpc/src/cpp/server/insecure_server_credentials.cc
+++ b/contrib/libs/grpc/src/cpp/server/insecure_server_credentials.cc
@@ -16,10 +16,17 @@
*
*/
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+
#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/log.h>
+#include <grpcpp/security/auth_metadata_processor.h>
#include <grpcpp/security/server_credentials.h>
+#include <grpcpp/support/config.h>
namespace grpc {
namespace {
diff --git a/contrib/libs/grpc/src/cpp/server/orca/call_metric_recorder.cc b/contrib/libs/grpc/src/cpp/server/orca/call_metric_recorder.cc
new file mode 100644
index 0000000000..6284064a6a
--- /dev/null
+++ b/contrib/libs/grpc/src/cpp/server/orca/call_metric_recorder.cc
@@ -0,0 +1,117 @@
+//
+// Copyright 2022 gRPC authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <stddef.h>
+
+#include <map>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <utility>
+
+#include "y_absl/strings/string_view.h"
+#include "y_absl/types/optional.h"
+#include "upb/upb.h"
+#include "upb/upb.hpp"
+#include "xds/data/orca/v3/orca_load_report.upb.h"
+
+#include <grpcpp/ext/call_metric_recorder.h>
+#include <grpcpp/impl/codegen/sync.h>
+#include <grpcpp/support/config.h>
+#include <grpcpp/support/string_ref.h>
+
+#include "src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h"
+#include "src/core/lib/resource_quota/arena.h"
+
+namespace grpc {
+namespace experimental {
+
+CallMetricRecorder::CallMetricRecorder(grpc_core::Arena* arena)
+ : backend_metric_data_(arena->New<grpc_core::BackendMetricData>()) {}
+
+CallMetricRecorder::~CallMetricRecorder() {
+ backend_metric_data_->~BackendMetricData();
+}
+
+CallMetricRecorder& CallMetricRecorder::RecordCpuUtilizationMetric(
+ double value) {
+ internal::MutexLock lock(&mu_);
+ backend_metric_data_->cpu_utilization = value;
+ return *this;
+}
+
+CallMetricRecorder& CallMetricRecorder::RecordMemoryUtilizationMetric(
+ double value) {
+ internal::MutexLock lock(&mu_);
+ backend_metric_data_->mem_utilization = value;
+ return *this;
+}
+
+CallMetricRecorder& CallMetricRecorder::RecordUtilizationMetric(
+ grpc::string_ref name, double value) {
+ internal::MutexLock lock(&mu_);
+ y_absl::string_view name_sv(name.data(), name.length());
+ backend_metric_data_->utilization[name_sv] = value;
+ return *this;
+}
+
+CallMetricRecorder& CallMetricRecorder::RecordRequestCostMetric(
+ grpc::string_ref name, double value) {
+ internal::MutexLock lock(&mu_);
+ y_absl::string_view name_sv(name.data(), name.length());
+ backend_metric_data_->request_cost[name_sv] = value;
+ return *this;
+}
+
+y_absl::optional<TString> CallMetricRecorder::CreateSerializedReport() {
+ upb::Arena arena;
+ internal::MutexLock lock(&mu_);
+ bool has_data = backend_metric_data_->cpu_utilization != -1 ||
+ backend_metric_data_->mem_utilization != -1 ||
+ !backend_metric_data_->utilization.empty() ||
+ !backend_metric_data_->request_cost.empty();
+ if (!has_data) {
+ return y_absl::nullopt;
+ }
+ xds_data_orca_v3_OrcaLoadReport* response =
+ xds_data_orca_v3_OrcaLoadReport_new(arena.ptr());
+ if (backend_metric_data_->cpu_utilization != -1) {
+ xds_data_orca_v3_OrcaLoadReport_set_cpu_utilization(
+ response, backend_metric_data_->cpu_utilization);
+ }
+ if (backend_metric_data_->mem_utilization != -1) {
+ xds_data_orca_v3_OrcaLoadReport_set_mem_utilization(
+ response, backend_metric_data_->mem_utilization);
+ }
+ for (const auto& p : backend_metric_data_->request_cost) {
+ xds_data_orca_v3_OrcaLoadReport_request_cost_set(
+ response,
+ upb_StringView_FromDataAndSize(p.first.data(), p.first.size()),
+ p.second, arena.ptr());
+ }
+ for (const auto& p : backend_metric_data_->utilization) {
+ xds_data_orca_v3_OrcaLoadReport_utilization_set(
+ response,
+ upb_StringView_FromDataAndSize(p.first.data(), p.first.size()),
+ p.second, arena.ptr());
+ }
+ size_t buf_length;
+ char* buf = xds_data_orca_v3_OrcaLoadReport_serialize(response, arena.ptr(),
+ &buf_length);
+ return TString(buf, buf_length);
+}
+
+} // namespace experimental
+} // namespace grpc
diff --git a/contrib/libs/grpc/src/cpp/server/secure_server_credentials.cc b/contrib/libs/grpc/src/cpp/server/secure_server_credentials.cc
index 487e738673..018b04d38d 100644
--- a/contrib/libs/grpc/src/cpp/server/secure_server_credentials.cc
+++ b/contrib/libs/grpc/src/cpp/server/secure_server_credentials.cc
@@ -18,13 +18,20 @@
#include "src/cpp/server/secure_server_credentials.h"
-#include <functional>
+#include <algorithm>
#include <map>
#include <memory>
+#include <utility>
+#include <vector>
-#include <grpcpp/impl/codegen/slice.h>
-#include <grpcpp/impl/grpc_library.h>
+#include <grpc/grpc_security_constants.h>
+#include <grpc/slice.h>
+#include <grpc/status.h>
#include <grpcpp/security/auth_metadata_processor.h>
+#include <grpcpp/security/tls_credentials_options.h>
+#include <grpcpp/support/slice.h>
+#include <grpcpp/support/status.h>
+#include <grpcpp/support/string_ref.h>
#include "src/cpp/common/secure_auth_context.h"
diff --git a/contrib/libs/grpc/src/cpp/server/secure_server_credentials.h b/contrib/libs/grpc/src/cpp/server/secure_server_credentials.h
index 95b4cab958..20d3c470fe 100644
--- a/contrib/libs/grpc/src/cpp/server/secure_server_credentials.h
+++ b/contrib/libs/grpc/src/cpp/server/secure_server_credentials.h
@@ -19,11 +19,18 @@
#ifndef GRPC_INTERNAL_CPP_SERVER_SECURE_SERVER_CREDENTIALS_H
#define GRPC_INTERNAL_CPP_SERVER_SECURE_SERVER_CREDENTIALS_H
+#include <stddef.h>
+
#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
+#include <grpc/grpc.h>
#include <grpc/grpc_security.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpcpp/security/auth_metadata_processor.h>
#include <grpcpp/security/server_credentials.h>
-#include <grpcpp/security/tls_credentials_options.h>
+#include <grpcpp/support/config.h>
#include "src/cpp/server/thread_pool_interface.h"
diff --git a/contrib/libs/grpc/src/cpp/server/server_builder.cc b/contrib/libs/grpc/src/cpp/server/server_builder.cc
index abe95fd834..9b30a4c723 100644
--- a/contrib/libs/grpc/src/cpp/server/server_builder.cc
+++ b/contrib/libs/grpc/src/cpp/server/server_builder.cc
@@ -16,20 +16,42 @@
*
*/
+#include <limits.h>
+#include <stdint.h>
+#include <string.h>
+
+#include <algorithm>
+#include <iterator>
+#include <memory>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include <utility>
+#include <vector>
-#include <grpc/support/cpu.h>
+#include <grpc/grpc.h>
+#include <grpc/impl/codegen/compression_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/support/log.h>
+#include <grpc/support/sync.h>
+#include <grpc/support/workaround_list.h>
+#include <grpcpp/completion_queue.h>
+#include <grpcpp/impl/codegen/server_interface.h>
+#include <grpcpp/impl/server_builder_option.h>
+#include <grpcpp/impl/server_builder_plugin.h>
#include <grpcpp/impl/service_type.h>
#include <grpcpp/resource_quota.h>
+#include <grpcpp/security/authorization_policy_provider.h>
+#include <grpcpp/security/server_credentials.h>
#include <grpcpp/server.h>
#include <grpcpp/server_builder.h>
+#include <grpcpp/server_context.h>
+#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/config.h>
+#include <grpcpp/support/server_interceptor.h>
-#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gpr/useful.h"
#include "src/cpp/server/external_connection_acceptor_impl.h"
-#include "src/cpp/server/thread_pool_interface.h"
namespace grpc {
@@ -336,11 +358,18 @@ std::unique_ptr<grpc::Server> ServerBuilder::BuildAndStart() {
gpr_log(GPR_INFO, "Callback server.");
}
+ // Merge the application and internal interceptors together.
+ // Internal interceptors go first.
+ auto creators = std::move(internal_interceptor_creators_);
+ creators.insert(creators.end(),
+ std::make_move_iterator(interceptor_creators_.begin()),
+ std::make_move_iterator(interceptor_creators_.end()));
+
std::unique_ptr<grpc::Server> server(new grpc::Server(
&args, sync_server_cqs, sync_server_settings_.min_pollers,
sync_server_settings_.max_pollers, sync_server_settings_.cq_timeout_msec,
std::move(acceptors_), server_config_fetcher_, resource_quota_,
- std::move(interceptor_creators_)));
+ std::move(creators)));
ServerInitializer* initializer = server->initializer();
diff --git a/contrib/libs/grpc/src/cpp/server/server_callback.cc b/contrib/libs/grpc/src/cpp/server/server_callback.cc
index 5b2d328b81..e62052b36f 100644
--- a/contrib/libs/grpc/src/cpp/server/server_callback.cc
+++ b/contrib/libs/grpc/src/cpp/server/server_callback.cc
@@ -16,8 +16,10 @@
*/
#include <grpcpp/impl/codegen/server_callback.h>
+#include <grpcpp/support/server_callback.h>
#include "src/core/lib/iomgr/closure.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/executor.h"
diff --git a/contrib/libs/grpc/src/cpp/server/server_cc.cc b/contrib/libs/grpc/src/cpp/server/server_cc.cc
index 2a994a655a..3b3d021639 100644
--- a/contrib/libs/grpc/src/cpp/server/server_cc.cc
+++ b/contrib/libs/grpc/src/cpp/server/server_cc.cc
@@ -15,40 +15,66 @@
*
*/
+#include <limits.h>
+#include <string.h>
+
+#include <algorithm>
+#include <atomic>
#include <cstdlib>
+#include <memory>
+#include <new>
#include <sstream>
-#include <type_traits>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include <utility>
+#include <vector>
#include "y_absl/memory/memory.h"
+#include <grpc/byte_buffer.h>
#include <grpc/grpc.h>
+#include <grpc/impl/codegen/gpr_types.h>
#include <grpc/impl/codegen/grpc_types.h>
-#include <grpc/support/alloc.h>
+#include <grpc/slice.h>
#include <grpc/support/log.h>
+#include <grpc/support/sync.h>
+#include <grpc/support/time.h>
+#include <grpcpp/channel.h>
#include <grpcpp/completion_queue.h>
#include <grpcpp/generic/async_generic_service.h>
-#include <grpcpp/impl/codegen/async_unary_call.h>
-#include <grpcpp/impl/codegen/byte_buffer.h>
-#include <grpcpp/impl/codegen/call.h>
+#include <grpcpp/health_check_service_interface.h>
+#include <grpcpp/impl/call.h>
+#include <grpcpp/impl/call_op_set_interface.h>
+#include <grpcpp/impl/codegen/call_op_set.h>
#include <grpcpp/impl/codegen/completion_queue_tag.h>
-#include <grpcpp/impl/codegen/method_handler.h>
-#include <grpcpp/impl/codegen/server_interceptor.h>
+#include <grpcpp/impl/codegen/interceptor_common.h>
+#include <grpcpp/impl/codegen/metadata_map.h>
+#include <grpcpp/impl/codegen/server_callback_handlers.h>
+#include <grpcpp/impl/codegen/server_interface.h>
+#include <grpcpp/impl/codegen/sync.h>
#include <grpcpp/impl/grpc_library.h>
+#include <grpcpp/impl/rpc_method.h>
#include <grpcpp/impl/rpc_service_method.h>
#include <grpcpp/impl/server_initializer.h>
#include <grpcpp/impl/service_type.h>
#include <grpcpp/security/server_credentials.h>
#include <grpcpp/server.h>
#include <grpcpp/server_context.h>
-#include <grpcpp/support/time.h>
+#include <grpcpp/support/channel_arguments.h>
+#include <grpcpp/support/client_interceptor.h>
+#include <grpcpp/support/config.h>
+#include <grpcpp/support/interceptor.h>
+#include <grpcpp/support/method_handler.h>
+#include <grpcpp/support/server_interceptor.h>
+#include <grpcpp/support/slice.h>
+#include <grpcpp/support/status.h>
#include "src/core/ext/transport/inproc/inproc_transport.h"
#include "src/core/lib/gprpp/manual_constructor.h"
+#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/iomgr.h"
-#include "src/core/lib/profiling/timers.h"
-#include "src/core/lib/surface/call.h"
+#include "src/core/lib/resource_quota/api.h"
#include "src/core/lib/surface/completion_queue.h"
#include "src/core/lib/surface/server.h"
#include "src/cpp/client/create_channel_internal.h"
@@ -800,7 +826,6 @@ class Server::SyncRequestThreadManager : public grpc::ThreadManager {
GPR_DEBUG_ASSERT(sync_req != nullptr);
GPR_DEBUG_ASSERT(ok);
- GPR_TIMER_SCOPE("sync_req->Run()", 0);
sync_req->Run(global_callbacks_, resources);
}
@@ -1044,6 +1069,7 @@ bool Server::RegisterService(const TString* addr, grpc::Service* service) {
has_callback_methods_ = true;
grpc::internal::RpcServiceMethod* method_value = method.get();
grpc::CompletionQueue* cq = CallbackCQ();
+ grpc_server_register_completion_queue(server_, cq->cq(), nullptr);
grpc_core::Server::FromC(server_)->SetRegisteredMethodAllocator(
cq->cq(), method_registration_tag, [this, cq, method_value] {
grpc_core::Server::RegisteredCallAllocation result;
@@ -1135,58 +1161,45 @@ void Server::Start(grpc::ServerCompletionQueue** cqs, size_t num_cqs) {
// Only create default health check service when user did not provide an
// explicit one.
- grpc::ServerCompletionQueue* health_check_cq = nullptr;
- grpc::DefaultHealthCheckService::HealthCheckServiceImpl*
- default_health_check_service_impl = nullptr;
if (health_check_service_ == nullptr && !health_check_service_disabled_ &&
grpc::DefaultHealthCheckServiceEnabled()) {
- auto* default_hc_service = new grpc::DefaultHealthCheckService;
- health_check_service_.reset(default_hc_service);
- // We create a non-polling CQ to avoid impacting application
- // performance. This ensures that we don't introduce thread hops
- // for application requests that wind up on this CQ, which is polled
- // in its own thread.
- health_check_cq = new grpc::ServerCompletionQueue(
- GRPC_CQ_NEXT, GRPC_CQ_NON_POLLING, nullptr);
- grpc_server_register_completion_queue(server_, health_check_cq->cq(),
- nullptr);
- default_health_check_service_impl =
- default_hc_service->GetHealthCheckService(
- std::unique_ptr<grpc::ServerCompletionQueue>(health_check_cq));
- RegisterService(nullptr, default_health_check_service_impl);
+ auto default_hc_service = y_absl::make_unique<DefaultHealthCheckService>();
+ auto* hc_service_impl = default_hc_service->GetHealthCheckService();
+ health_check_service_ = std::move(default_hc_service);
+ RegisterService(nullptr, hc_service_impl);
}
for (auto& acceptor : acceptors_) {
acceptor->GetCredentials()->AddPortToServer(acceptor->name(), server_);
}
- // If this server uses callback methods, then create a callback generic
- // service to handle any unimplemented methods using the default reactor
- // creator
- if (has_callback_methods_ && !has_callback_generic_service_) {
- unimplemented_service_ = y_absl::make_unique<grpc::CallbackGenericService>();
- RegisterCallbackGenericService(unimplemented_service_.get());
- }
-
#ifndef NDEBUG
for (size_t i = 0; i < num_cqs; i++) {
cq_list_.push_back(cqs[i]);
}
#endif
- // If we have a generic service, all unmatched method names go there.
- // Otherwise, we must provide at least one RPC request for an "unimplemented"
- // RPC, which covers any RPC for a method name that isn't matched. If we
- // have a sync service, let it be a sync unimplemented RPC, which must be
- // registered before server start (to initialize an AllocatingRequestMatcher).
- // If we have an AllocatingRequestMatcher, we can't also specify other
- // unimplemented RPCs via explicit async requests, so we won't do so. If we
- // only have async services, we can specify unimplemented RPCs on each async
- // CQ so that some user polling thread will move them along as long as some
- // progress is being made on any RPCs in the system.
+ // We must have exactly one generic service to handle requests for
+ // unmatched method names (i.e., to return UNIMPLEMENTED for any RPC
+ // method for which we don't have a registered implementation). This
+ // service comes from one of the following places (first match wins):
+ // - If the application supplied a generic service via either the async
+ // or callback APIs, we use that.
+ // - If there are callback methods, register a callback generic service.
+ // - If there are sync methods, register a sync generic service.
+ // (This must be done before server start to initialize an
+ // AllocatingRequestMatcher.)
+ // - Otherwise (we have only async methods), we wait until the server
+ // is started and then start an UnimplementedAsyncRequest on each
+ // async CQ, so that the requests will be moved along by polling
+ // done in application threads.
bool unknown_rpc_needed =
!has_async_generic_service_ && !has_callback_generic_service_;
-
+ if (unknown_rpc_needed && has_callback_methods_) {
+ unimplemented_service_ = y_absl::make_unique<grpc::CallbackGenericService>();
+ RegisterCallbackGenericService(unimplemented_service_.get());
+ unknown_rpc_needed = false;
+ }
if (unknown_rpc_needed && !sync_req_mgrs_.empty()) {
sync_req_mgrs_[0]->AddUnknownSyncMethod();
unknown_rpc_needed = false;
@@ -1200,9 +1213,6 @@ void Server::Start(grpc::ServerCompletionQueue** cqs, size_t num_cqs) {
new UnimplementedAsyncRequest(this, cqs[i]);
}
}
- if (health_check_cq != nullptr) {
- new UnimplementedAsyncRequest(this, health_check_cq);
- }
unknown_rpc_needed = false;
}
@@ -1219,10 +1229,6 @@ void Server::Start(grpc::ServerCompletionQueue** cqs, size_t num_cqs) {
value->Start();
}
- if (default_health_check_service_impl != nullptr) {
- default_health_check_service_impl->StartServingThread();
- }
-
for (auto& acceptor : acceptors_) {
acceptor->Start();
}
diff --git a/contrib/libs/grpc/src/cpp/server/server_context.cc b/contrib/libs/grpc/src/cpp/server/server_context.cc
index 7c0c37d82b..7f1ef4d617 100644
--- a/contrib/libs/grpc/src/cpp/server/server_context.cc
+++ b/contrib/libs/grpc/src/cpp/server/server_context.cc
@@ -16,24 +16,50 @@
*
*/
-#include <algorithm>
+#include <assert.h>
+
#include <atomic>
+#include <cstdlib>
+#include <functional>
+#include <map>
+#include <new>
+#include <util/generic/string.h>
+#include <util/string/cast.h>
#include <utility>
+#include <vector>
+
+#include "y_absl/strings/string_view.h"
#include <grpc/compression.h>
#include <grpc/grpc.h>
+#include <grpc/impl/codegen/compression_types.h>
+#include <grpc/impl/codegen/gpr_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
#include <grpc/load_reporting.h>
+#include <grpc/status.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
+#include <grpc/support/time.h>
+#include <grpcpp/completion_queue.h>
+#include <grpcpp/ext/call_metric_recorder.h>
#include <grpcpp/impl/call.h>
-#include <grpcpp/impl/codegen/completion_queue.h>
-#include <grpcpp/impl/codegen/server_context.h>
+#include <grpcpp/impl/call_op_set_interface.h>
+#include <grpcpp/impl/codegen/call_op_set.h>
+#include <grpcpp/impl/codegen/callback_common.h>
+#include <grpcpp/impl/codegen/completion_queue_tag.h>
+#include <grpcpp/impl/codegen/interceptor_common.h>
+#include <grpcpp/impl/codegen/metadata_map.h>
#include <grpcpp/impl/grpc_library.h>
+#include <grpcpp/server_context.h>
+#include <grpcpp/support/config.h>
+#include <grpcpp/support/interceptor.h>
#include <grpcpp/support/server_callback.h>
-#include <grpcpp/support/time.h>
+#include <grpcpp/support/server_interceptor.h>
+#include <grpcpp/support/string_ref.h>
#include "src/core/lib/gprpp/ref_counted.h"
#include "src/core/lib/gprpp/sync.h"
+#include "src/core/lib/resource_quota/arena.h"
#include "src/core/lib/surface/call.h"
namespace grpc {
@@ -263,6 +289,9 @@ ServerContextBase::~ServerContextBase() {
if (default_reactor_used_.load(std::memory_order_relaxed)) {
reinterpret_cast<Reactor*>(&default_reactor_)->~Reactor();
}
+ if (call_metric_recorder_ != nullptr) {
+ call_metric_recorder_->~CallMetricRecorder();
+ }
}
ServerContextBase::CallWrapper::~CallWrapper() {
@@ -376,4 +405,15 @@ void ServerContextBase::SetLoadReportingCosts(
}
}
+void ServerContextBase::CreateCallMetricRecorder() {
+ GPR_ASSERT(call_metric_recorder_ == nullptr);
+ grpc_core::Arena* arena = grpc_call_get_arena(call_.call);
+ call_metric_recorder_ = arena->New<experimental::CallMetricRecorder>(arena);
+}
+
+grpc::string_ref ServerContextBase::ExperimentalGetAuthority() const {
+ y_absl::string_view authority = grpc_call_server_authority(call_.call);
+ return grpc::string_ref(authority.data(), authority.size());
+}
+
} // namespace grpc
diff --git a/contrib/libs/grpc/src/cpp/server/server_posix.cc b/contrib/libs/grpc/src/cpp/server/server_posix.cc
index 5854242176..01c75c25cd 100644
--- a/contrib/libs/grpc/src/cpp/server/server_posix.cc
+++ b/contrib/libs/grpc/src/cpp/server/server_posix.cc
@@ -16,8 +16,10 @@
*
*/
+#include <grpc/grpc.h>
#include <grpc/grpc_posix.h>
#include <grpc/grpc_security.h>
+#include <grpcpp/server.h>
#include <grpcpp/server_posix.h>
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/server/xds_server_credentials.cc b/contrib/libs/grpc/src/cpp/server/xds_server_credentials.cc
index f184238906..329052488c 100644
--- a/contrib/libs/grpc/src/cpp/server/xds_server_credentials.cc
+++ b/contrib/libs/grpc/src/cpp/server/xds_server_credentials.cc
@@ -16,6 +16,13 @@
//
//
+#include <memory>
+
+#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
+#include <grpc/support/log.h>
+#include <grpcpp/security/server_credentials.h>
+
#include "src/cpp/server/secure_server_credentials.h"
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/thread_manager/thread_manager.cc b/contrib/libs/grpc/src/cpp/thread_manager/thread_manager.cc
index 25c065588e..d6144f9409 100644
--- a/contrib/libs/grpc/src/cpp/thread_manager/thread_manager.cc
+++ b/contrib/libs/grpc/src/cpp/thread_manager/thread_manager.cc
@@ -18,12 +18,15 @@
#include "src/cpp/thread_manager/thread_manager.h"
+#include <stdlib.h>
+
#include <climits>
#include <grpc/support/log.h>
+#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/thd.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
+#include "src/core/lib/resource_quota/resource_quota.h"
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/thread_manager/thread_manager.h b/contrib/libs/grpc/src/cpp/thread_manager/thread_manager.h
index 4c49854d32..b2bbba7c6e 100644
--- a/contrib/libs/grpc/src/cpp/thread_manager/thread_manager.h
+++ b/contrib/libs/grpc/src/cpp/thread_manager/thread_manager.h
@@ -20,14 +20,11 @@
#define GRPC_INTERNAL_CPP_THREAD_MANAGER_H
#include <list>
-#include <memory>
-
-#include <grpc/grpc.h>
-#include <grpcpp/support/config.h>
#include "src/core/lib/gprpp/sync.h"
#include "src/core/lib/gprpp/thd.h"
#include "src/core/lib/resource_quota/api.h"
+#include "src/core/lib/resource_quota/thread_quota.h"
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/util/byte_buffer_cc.cc b/contrib/libs/grpc/src/cpp/util/byte_buffer_cc.cc
index 5c6f22bd7c..38441ed617 100644
--- a/contrib/libs/grpc/src/cpp/util/byte_buffer_cc.cc
+++ b/contrib/libs/grpc/src/cpp/util/byte_buffer_cc.cc
@@ -16,10 +16,17 @@
*
*/
+#include <vector>
+
#include <grpc/byte_buffer.h>
#include <grpc/byte_buffer_reader.h>
+#include <grpc/impl/codegen/compression_types.h>
+#include <grpc/impl/codegen/grpc_types.h>
+#include <grpc/slice.h>
#include <grpcpp/impl/grpc_library.h>
#include <grpcpp/support/byte_buffer.h>
+#include <grpcpp/support/slice.h>
+#include <grpcpp/support/status.h>
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/util/string_ref.cc b/contrib/libs/grpc/src/cpp/util/string_ref.cc
index 8b09a82a63..35348d6138 100644
--- a/contrib/libs/grpc/src/cpp/util/string_ref.cc
+++ b/contrib/libs/grpc/src/cpp/util/string_ref.cc
@@ -16,6 +16,8 @@
*
*/
+#include <stddef.h>
+
#include <grpcpp/support/string_ref.h>
namespace grpc {
diff --git a/contrib/libs/grpc/src/cpp/util/time_cc.cc b/contrib/libs/grpc/src/cpp/util/time_cc.cc
index 6c9c228d7c..62ee375896 100644
--- a/contrib/libs/grpc/src/cpp/util/time_cc.cc
+++ b/contrib/libs/grpc/src/cpp/util/time_cc.cc
@@ -16,10 +16,15 @@
*
*/
+#include <chrono>
+#include <cstdint>
+
+#include <grpc/impl/codegen/gpr_types.h>
#include <grpc/support/time.h>
-#include <grpcpp/support/config.h>
#include <grpcpp/support/time.h>
+// IWYU pragma: no_include <ratio>
+
using std::chrono::duration_cast;
using std::chrono::high_resolution_clock;
using std::chrono::nanoseconds;
diff --git a/contrib/libs/grpc/third_party/README.md b/contrib/libs/grpc/third_party/README.md
index 19ab6d424e..4425c05620 100644
--- a/contrib/libs/grpc/third_party/README.md
+++ b/contrib/libs/grpc/third_party/README.md
@@ -118,13 +118,18 @@ Apart from the above steps, please perform the following two steps to generate t
Since upb is vendored in the gRPC repo, you cannot use submodule to update it. Please follow the steps below.
1. Update third_party/upb directory by running
- `git subtree pull --squash --prefix=third_party/upb https://github.com/protocolbuffers/upb.git master`
+ - `export GRPC_ROOT=~/git/grpc`
+ - `wget https://github.com/protocolbuffers/upb/archive/refs/heads/main.zip`
+ - `rm -rf $GRPC_ROOT/third_party/upb`
+ - `unzip main.zip -d $GRPC_ROOT/third_party`
+ - `mv $GRPC_ROOT/third_party/upb-main $GRPC_ROOT/third_party/upb`
2. Update the dependency in `grpc_deps.bzl` to the same commit
3. Populate the bazel download mirror by running `bazel/update_mirror.sh`
4. Update `src/upb/gen_build_yaml.py` for newly added or removed upb files
+ - Running `bazel query "deps(upb) union deps(json) union deps(textformat)"`
+ under third_party/upb would give some idea on what needs to be included.
5. Run `tools/buildgen/generate_projects.sh` to regenerate the generated files
6. Run `tools/codegen/core/gen_upb_api.sh` to regenerate upb files.
- If you see breaking changes here, you may want to import upb into Google3 along with gRPC.
### Updating third_party/xxhash
diff --git a/contrib/libs/grpc/third_party/upb/CMakeLists.darwin-x86_64.txt b/contrib/libs/grpc/third_party/upb/CMakeLists.darwin-x86_64.txt
index 95e91287c1..f371cc9d39 100644
--- a/contrib/libs/grpc/third_party/upb/CMakeLists.darwin-x86_64.txt
+++ b/contrib/libs/grpc/third_party/upb/CMakeLists.darwin-x86_64.txt
@@ -25,12 +25,20 @@ target_sources(grpc-third_party-upb PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/third_party/utf8_range/naive.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/third_party/utf8_range/range2-neon.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/third_party/utf8_range/range2-sse.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/arena.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/array.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/decode.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/decode_fast.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/def.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/encode.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/extension_registry.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/json_decode.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/json_encode.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/map.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/mini_table.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/msg.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/reflection.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/status.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/table.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/text_encode.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/upb.c
diff --git a/contrib/libs/grpc/third_party/upb/CMakeLists.linux-aarch64.txt b/contrib/libs/grpc/third_party/upb/CMakeLists.linux-aarch64.txt
index a0963907a3..2949b633aa 100644
--- a/contrib/libs/grpc/third_party/upb/CMakeLists.linux-aarch64.txt
+++ b/contrib/libs/grpc/third_party/upb/CMakeLists.linux-aarch64.txt
@@ -28,12 +28,20 @@ target_sources(grpc-third_party-upb PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/third_party/utf8_range/naive.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/third_party/utf8_range/range2-neon.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/third_party/utf8_range/range2-sse.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/arena.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/array.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/decode.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/decode_fast.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/def.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/encode.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/extension_registry.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/json_decode.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/json_encode.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/map.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/mini_table.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/msg.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/reflection.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/status.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/table.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/text_encode.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/upb.c
diff --git a/contrib/libs/grpc/third_party/upb/CMakeLists.linux-x86_64.txt b/contrib/libs/grpc/third_party/upb/CMakeLists.linux-x86_64.txt
index a0963907a3..2949b633aa 100644
--- a/contrib/libs/grpc/third_party/upb/CMakeLists.linux-x86_64.txt
+++ b/contrib/libs/grpc/third_party/upb/CMakeLists.linux-x86_64.txt
@@ -28,12 +28,20 @@ target_sources(grpc-third_party-upb PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/third_party/utf8_range/naive.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/third_party/utf8_range/range2-neon.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/third_party/utf8_range/range2-sse.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/arena.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/array.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/decode.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/decode_fast.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/def.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/encode.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/extension_registry.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/json_decode.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/json_encode.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/map.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/mini_table.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/msg.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/reflection.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/status.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/table.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/text_encode.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/upb.c
diff --git a/contrib/libs/grpc/third_party/upb/CMakeLists.windows-x86_64.txt b/contrib/libs/grpc/third_party/upb/CMakeLists.windows-x86_64.txt
index f9d6d5f4dd..0178cbffda 100644
--- a/contrib/libs/grpc/third_party/upb/CMakeLists.windows-x86_64.txt
+++ b/contrib/libs/grpc/third_party/upb/CMakeLists.windows-x86_64.txt
@@ -24,12 +24,20 @@ target_sources(grpc-third_party-upb PRIVATE
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/third_party/utf8_range/naive.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/third_party/utf8_range/range2-neon.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/third_party/utf8_range/range2-sse.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/arena.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/array.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/decode.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/decode_fast.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/def.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/encode.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/extension_registry.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/json_decode.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/json_encode.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/map.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/mini_table.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/msg.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/reflection.c
+ ${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/status.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/table.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/text_encode.c
${CMAKE_SOURCE_DIR}/contrib/libs/grpc/third_party/upb/upb/upb.c
diff --git a/contrib/libs/grpc/third_party/upb/DESIGN.md b/contrib/libs/grpc/third_party/upb/DESIGN.md
index 73388d037a..aa6a288280 100644
--- a/contrib/libs/grpc/third_party/upb/DESIGN.md
+++ b/contrib/libs/grpc/third_party/upb/DESIGN.md
@@ -68,7 +68,7 @@ typedef struct {
Note in particular that messages do *not* have:
- A pointer to reflection or a parse table (upb messages are not self-describing).
-- A pointer to an arena (the arena must be expicitly passed into any function that
+- A pointer to an arena (the arena must be explicitly passed into any function that
allocates).
The upb compiler computes a layout for each message, and determines the offset for
@@ -160,7 +160,7 @@ together.
together, their lifetimes are irreversibly joined, such that none of the arena
blocks in either arena will be freed until *both* arenas are freed with
`upb_arena_free()`. This is useful when joining two messages from separate
-arenas (making one a sub-message of the other). Fuse is an a very cheap
+arenas (making one a sub-message of the other). Fuse is a very cheap
operation, and an unlimited number of arenas can be fused together efficiently.
## Reflection and Descriptors
diff --git a/contrib/libs/grpc/third_party/upb/README.md b/contrib/libs/grpc/third_party/upb/README.md
index 92a081bbef..9b74b969ce 100644
--- a/contrib/libs/grpc/third_party/upb/README.md
+++ b/contrib/libs/grpc/third_party/upb/README.md
@@ -57,6 +57,22 @@ For PHP, use [PECL](https://pecl.php.net/package/protobuf):
$ sudo pecl install protobuf
```
+Alternatively, you can build and install upb using
+[vcpkg](https://github.com/microsoft/vcpkg/) dependency manager:
+
+ git clone https://github.com/Microsoft/vcpkg.git
+ cd vcpkg
+ ./bootstrap-vcpkg.sh
+ ./vcpkg integrate install
+ ./vcpkg install upb
+
+The upb port in vcpkg is kept up to date by microsoft team members and community
+contributors.
+
+If the version is out of date, please
+[create an issue or pull request](https://github.com/Microsoft/vcpkg) on the
+vcpkg repository.
+
## Contributing
Please see [CONTRIBUTING.md](CONTRIBUTING.md).
diff --git a/contrib/libs/grpc/third_party/upb/upb/arena.c b/contrib/libs/grpc/third_party/upb/upb/arena.c
new file mode 100644
index 0000000000..3c872698cd
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/arena.c
@@ -0,0 +1,277 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "upb/arena.h"
+
+#include <stdlib.h>
+
+#include "upb/internal/upb.h"
+
+// Must be last.
+#include "upb/port_def.inc"
+
+/* upb_alloc ******************************************************************/
+
+static void* upb_global_allocfunc(upb_alloc* alloc, void* ptr, size_t oldsize,
+ size_t size) {
+ UPB_UNUSED(alloc);
+ UPB_UNUSED(oldsize);
+ if (size == 0) {
+ free(ptr);
+ return NULL;
+ } else {
+ return realloc(ptr, size);
+ }
+}
+
+static uint32_t* upb_cleanup_pointer(uintptr_t cleanup_metadata) {
+ return (uint32_t*)(cleanup_metadata & ~0x1);
+}
+
+static bool upb_cleanup_has_initial_block(uintptr_t cleanup_metadata) {
+ return cleanup_metadata & 0x1;
+}
+
+static uintptr_t upb_cleanup_metadata(uint32_t* cleanup,
+ bool has_initial_block) {
+ return (uintptr_t)cleanup | has_initial_block;
+}
+
+upb_alloc upb_alloc_global = {&upb_global_allocfunc};
+
+/* upb_Arena ******************************************************************/
+
+struct mem_block {
+ struct mem_block* next;
+ uint32_t size;
+ uint32_t cleanups;
+ /* Data follows. */
+};
+
+typedef struct cleanup_ent {
+ upb_CleanupFunc* cleanup;
+ void* ud;
+} cleanup_ent;
+
+static const size_t memblock_reserve =
+ UPB_ALIGN_UP(sizeof(mem_block), UPB_MALLOC_ALIGN);
+
+static upb_Arena* arena_findroot(upb_Arena* a) {
+ /* Path splitting keeps time complexity down, see:
+ * https://en.wikipedia.org/wiki/Disjoint-set_data_structure */
+ while (a->parent != a) {
+ upb_Arena* next = a->parent;
+ a->parent = next->parent;
+ a = next;
+ }
+ return a;
+}
+
+static void upb_Arena_addblock(upb_Arena* a, upb_Arena* root, void* ptr,
+ size_t size) {
+ mem_block* block = ptr;
+
+ /* The block is for arena |a|, but should appear in the freelist of |root|. */
+ block->next = root->freelist;
+ block->size = (uint32_t)size;
+ block->cleanups = 0;
+ root->freelist = block;
+ a->last_size = block->size;
+ if (!root->freelist_tail) root->freelist_tail = block;
+
+ a->head.ptr = UPB_PTR_AT(block, memblock_reserve, char);
+ a->head.end = UPB_PTR_AT(block, size, char);
+ a->cleanup_metadata = upb_cleanup_metadata(
+ &block->cleanups, upb_cleanup_has_initial_block(a->cleanup_metadata));
+
+ UPB_POISON_MEMORY_REGION(a->head.ptr, a->head.end - a->head.ptr);
+}
+
+static bool upb_Arena_Allocblock(upb_Arena* a, size_t size) {
+ upb_Arena* root = arena_findroot(a);
+ size_t block_size = UPB_MAX(size, a->last_size * 2) + memblock_reserve;
+ mem_block* block = upb_malloc(root->block_alloc, block_size);
+
+ if (!block) return false;
+ upb_Arena_addblock(a, root, block, block_size);
+ return true;
+}
+
+void* _upb_Arena_SlowMalloc(upb_Arena* a, size_t size) {
+ if (!upb_Arena_Allocblock(a, size)) return NULL; /* Out of memory. */
+ UPB_ASSERT(_upb_ArenaHas(a) >= size);
+ return upb_Arena_Malloc(a, size);
+}
+
+static void* upb_Arena_doalloc(upb_alloc* alloc, void* ptr, size_t oldsize,
+ size_t size) {
+ upb_Arena* a = (upb_Arena*)alloc; /* upb_alloc is initial member. */
+ return upb_Arena_Realloc(a, ptr, oldsize, size);
+}
+
+/* Public Arena API ***********************************************************/
+
+upb_Arena* arena_initslow(void* mem, size_t n, upb_alloc* alloc) {
+ const size_t first_block_overhead = sizeof(upb_Arena) + memblock_reserve;
+ upb_Arena* a;
+
+ /* We need to malloc the initial block. */
+ n = first_block_overhead + 256;
+ if (!alloc || !(mem = upb_malloc(alloc, n))) {
+ return NULL;
+ }
+
+ a = UPB_PTR_AT(mem, n - sizeof(*a), upb_Arena);
+ n -= sizeof(*a);
+
+ a->head.alloc.func = &upb_Arena_doalloc;
+ a->block_alloc = alloc;
+ a->parent = a;
+ a->refcount = 1;
+ a->freelist = NULL;
+ a->freelist_tail = NULL;
+ a->cleanup_metadata = upb_cleanup_metadata(NULL, false);
+
+ upb_Arena_addblock(a, a, mem, n);
+
+ return a;
+}
+
+upb_Arena* upb_Arena_Init(void* mem, size_t n, upb_alloc* alloc) {
+ upb_Arena* a;
+
+ if (n) {
+ /* Align initial pointer up so that we return properly-aligned pointers. */
+ void* aligned = (void*)UPB_ALIGN_UP((uintptr_t)mem, UPB_MALLOC_ALIGN);
+ size_t delta = (uintptr_t)aligned - (uintptr_t)mem;
+ n = delta <= n ? n - delta : 0;
+ mem = aligned;
+ }
+
+ /* Round block size down to alignof(*a) since we will allocate the arena
+ * itself at the end. */
+ n = UPB_ALIGN_DOWN(n, UPB_ALIGN_OF(upb_Arena));
+
+ if (UPB_UNLIKELY(n < sizeof(upb_Arena))) {
+ return arena_initslow(mem, n, alloc);
+ }
+
+ a = UPB_PTR_AT(mem, n - sizeof(*a), upb_Arena);
+
+ a->head.alloc.func = &upb_Arena_doalloc;
+ a->block_alloc = alloc;
+ a->parent = a;
+ a->refcount = 1;
+ a->last_size = UPB_MAX(128, n);
+ a->head.ptr = mem;
+ a->head.end = UPB_PTR_AT(mem, n - sizeof(*a), char);
+ a->freelist = NULL;
+ a->cleanup_metadata = upb_cleanup_metadata(NULL, true);
+
+ return a;
+}
+
+static void arena_dofree(upb_Arena* a) {
+ mem_block* block = a->freelist;
+ UPB_ASSERT(a->parent == a);
+ UPB_ASSERT(a->refcount == 0);
+
+ while (block) {
+ /* Load first since we are deleting block. */
+ mem_block* next = block->next;
+
+ if (block->cleanups > 0) {
+ cleanup_ent* end = UPB_PTR_AT(block, block->size, void);
+ cleanup_ent* ptr = end - block->cleanups;
+
+ for (; ptr < end; ptr++) {
+ ptr->cleanup(ptr->ud);
+ }
+ }
+
+ upb_free(a->block_alloc, block);
+ block = next;
+ }
+}
+
+void upb_Arena_Free(upb_Arena* a) {
+ a = arena_findroot(a);
+ if (--a->refcount == 0) arena_dofree(a);
+}
+
+bool upb_Arena_AddCleanup(upb_Arena* a, void* ud, upb_CleanupFunc* func) {
+ cleanup_ent* ent;
+ uint32_t* cleanups = upb_cleanup_pointer(a->cleanup_metadata);
+
+ if (!cleanups || _upb_ArenaHas(a) < sizeof(cleanup_ent)) {
+ if (!upb_Arena_Allocblock(a, 128)) return false; /* Out of memory. */
+ UPB_ASSERT(_upb_ArenaHas(a) >= sizeof(cleanup_ent));
+ cleanups = upb_cleanup_pointer(a->cleanup_metadata);
+ }
+
+ a->head.end -= sizeof(cleanup_ent);
+ ent = (cleanup_ent*)a->head.end;
+ (*cleanups)++;
+ UPB_UNPOISON_MEMORY_REGION(ent, sizeof(cleanup_ent));
+
+ ent->cleanup = func;
+ ent->ud = ud;
+
+ return true;
+}
+
+bool upb_Arena_Fuse(upb_Arena* a1, upb_Arena* a2) {
+ upb_Arena* r1 = arena_findroot(a1);
+ upb_Arena* r2 = arena_findroot(a2);
+
+ if (r1 == r2) return true; /* Already fused. */
+
+ /* Do not fuse initial blocks since we cannot lifetime extend them. */
+ if (upb_cleanup_has_initial_block(r1->cleanup_metadata)) return false;
+ if (upb_cleanup_has_initial_block(r2->cleanup_metadata)) return false;
+
+ /* Only allow fuse with a common allocator */
+ if (r1->block_alloc != r2->block_alloc) return false;
+
+ /* We want to join the smaller tree to the larger tree.
+ * So swap first if they are backwards. */
+ if (r1->refcount < r2->refcount) {
+ upb_Arena* tmp = r1;
+ r1 = r2;
+ r2 = tmp;
+ }
+
+ /* r1 takes over r2's freelist and refcount. */
+ r1->refcount += r2->refcount;
+ if (r2->freelist_tail) {
+ UPB_ASSERT(r2->freelist_tail->next == NULL);
+ r2->freelist_tail->next = r1->freelist;
+ r1->freelist = r2->freelist;
+ }
+ r2->parent = r1;
+ return true;
+}
diff --git a/contrib/libs/grpc/third_party/upb/upb/arena.h b/contrib/libs/grpc/third_party/upb/upb/arena.h
new file mode 100644
index 0000000000..0c4fd1b83c
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/arena.h
@@ -0,0 +1,225 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef UPB_ARENA_H_
+#define UPB_ARENA_H_
+
+#include <assert.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <string.h>
+
+#include "upb/port_def.inc"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** upb_alloc *****************************************************************/
+
+/* A upb_alloc is a possibly-stateful allocator object.
+ *
+ * It could either be an arena allocator (which doesn't require individual
+ * free() calls) or a regular malloc() (which does). The client must therefore
+ * free memory unless it knows that the allocator is an arena allocator. */
+
+struct upb_alloc;
+typedef struct upb_alloc upb_alloc;
+
+/* A malloc()/free() function.
+ * If "size" is 0 then the function acts like free(), otherwise it acts like
+ * realloc(). Only "oldsize" bytes from a previous allocation are preserved. */
+typedef void* upb_alloc_func(upb_alloc* alloc, void* ptr, size_t oldsize,
+ size_t size);
+
+struct upb_alloc {
+ upb_alloc_func* func;
+};
+
+UPB_INLINE void* upb_malloc(upb_alloc* alloc, size_t size) {
+ UPB_ASSERT(alloc);
+ return alloc->func(alloc, NULL, 0, size);
+}
+
+UPB_INLINE void* upb_realloc(upb_alloc* alloc, void* ptr, size_t oldsize,
+ size_t size) {
+ UPB_ASSERT(alloc);
+ return alloc->func(alloc, ptr, oldsize, size);
+}
+
+UPB_INLINE void upb_free(upb_alloc* alloc, void* ptr) {
+ assert(alloc);
+ alloc->func(alloc, ptr, 0, 0);
+}
+
+/* The global allocator used by upb. Uses the standard malloc()/free(). */
+
+extern upb_alloc upb_alloc_global;
+
+/* Functions that hard-code the global malloc.
+ *
+ * We still get benefit because we can put custom logic into our global
+ * allocator, like injecting out-of-memory faults in debug/testing builds. */
+
+UPB_INLINE void* upb_gmalloc(size_t size) {
+ return upb_malloc(&upb_alloc_global, size);
+}
+
+UPB_INLINE void* upb_grealloc(void* ptr, size_t oldsize, size_t size) {
+ return upb_realloc(&upb_alloc_global, ptr, oldsize, size);
+}
+
+UPB_INLINE void upb_gfree(void* ptr) { upb_free(&upb_alloc_global, ptr); }
+
+/* upb_Arena ******************************************************************/
+
+/* upb_Arena is a specific allocator implementation that uses arena allocation.
+ * The user provides an allocator that will be used to allocate the underlying
+ * arena blocks. Arenas by nature do not require the individual allocations
+ * to be freed. However the Arena does allow users to register cleanup
+ * functions that will run when the arena is destroyed.
+ *
+ * A upb_Arena is *not* thread-safe.
+ *
+ * You could write a thread-safe arena allocator that satisfies the
+ * upb_alloc interface, but it would not be as efficient for the
+ * single-threaded case. */
+
+typedef void upb_CleanupFunc(void* ud);
+
+struct upb_Arena;
+typedef struct upb_Arena upb_Arena;
+
+typedef struct {
+ /* We implement the allocator interface.
+ * This must be the first member of upb_Arena!
+ * TODO(haberman): remove once handlers are gone. */
+ upb_alloc alloc;
+
+ char *ptr, *end;
+} _upb_ArenaHead;
+
+/* Creates an arena from the given initial block (if any -- n may be 0).
+ * Additional blocks will be allocated from |alloc|. If |alloc| is NULL, this
+ * is a fixed-size arena and cannot grow. */
+upb_Arena* upb_Arena_Init(void* mem, size_t n, upb_alloc* alloc);
+void upb_Arena_Free(upb_Arena* a);
+bool upb_Arena_AddCleanup(upb_Arena* a, void* ud, upb_CleanupFunc* func);
+bool upb_Arena_Fuse(upb_Arena* a, upb_Arena* b);
+void* _upb_Arena_SlowMalloc(upb_Arena* a, size_t size);
+
+UPB_INLINE upb_alloc* upb_Arena_Alloc(upb_Arena* a) { return (upb_alloc*)a; }
+
+UPB_INLINE size_t _upb_ArenaHas(upb_Arena* a) {
+ _upb_ArenaHead* h = (_upb_ArenaHead*)a;
+ return (size_t)(h->end - h->ptr);
+}
+
+UPB_INLINE void* _upb_Arena_FastMalloc(upb_Arena* a, size_t size) {
+ _upb_ArenaHead* h = (_upb_ArenaHead*)a;
+ void* ret = h->ptr;
+ UPB_ASSERT(UPB_ALIGN_MALLOC((uintptr_t)ret) == (uintptr_t)ret);
+ UPB_ASSERT(UPB_ALIGN_MALLOC(size) == size);
+ UPB_UNPOISON_MEMORY_REGION(ret, size);
+
+ h->ptr += size;
+
+#if UPB_ASAN
+ {
+ size_t guard_size = 32;
+ if (_upb_ArenaHas(a) >= guard_size) {
+ h->ptr += guard_size;
+ } else {
+ h->ptr = h->end;
+ }
+ }
+#endif
+
+ return ret;
+}
+
+UPB_INLINE void* upb_Arena_Malloc(upb_Arena* a, size_t size) {
+ size = UPB_ALIGN_MALLOC(size);
+
+ if (UPB_UNLIKELY(_upb_ArenaHas(a) < size)) {
+ return _upb_Arena_SlowMalloc(a, size);
+ }
+
+ return _upb_Arena_FastMalloc(a, size);
+}
+
+// Shrinks the last alloc from arena.
+// REQUIRES: (ptr, oldsize) was the last malloc/realloc from this arena.
+// We could also add a upb_Arena_TryShrinkLast() which is simply a no-op if
+// this was not the last alloc.
+UPB_INLINE void upb_Arena_ShrinkLast(upb_Arena* a, void* ptr, size_t oldsize,
+ size_t size) {
+ _upb_ArenaHead* h = (_upb_ArenaHead*)a;
+ oldsize = UPB_ALIGN_MALLOC(oldsize);
+ size = UPB_ALIGN_MALLOC(size);
+ UPB_ASSERT((char*)ptr + oldsize == h->ptr); // Must be the last alloc.
+ UPB_ASSERT(size <= oldsize);
+ h->ptr = (char*)ptr + size;
+}
+
+UPB_INLINE void* upb_Arena_Realloc(upb_Arena* a, void* ptr, size_t oldsize,
+ size_t size) {
+ _upb_ArenaHead* h = (_upb_ArenaHead*)a;
+ oldsize = UPB_ALIGN_MALLOC(oldsize);
+ size = UPB_ALIGN_MALLOC(size);
+ bool is_most_recent_alloc = (uintptr_t)ptr + oldsize == (uintptr_t)h->ptr;
+
+ if (is_most_recent_alloc) {
+ ptrdiff_t diff = size - oldsize;
+ if ((ptrdiff_t)_upb_ArenaHas(a) >= diff) {
+ h->ptr += diff;
+ return ptr;
+ }
+ } else if (size <= oldsize) {
+ return ptr;
+ }
+
+ void* ret = upb_Arena_Malloc(a, size);
+
+ if (ret && oldsize > 0) {
+ memcpy(ret, ptr, UPB_MIN(oldsize, size));
+ }
+
+ return ret;
+}
+
+UPB_INLINE upb_Arena* upb_Arena_New(void) {
+ return upb_Arena_Init(NULL, 0, &upb_alloc_global);
+}
+
+#include "upb/port_undef.inc"
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* UPB_ARENA_H_ */
diff --git a/contrib/libs/grpc/third_party/upb/upb/array.c b/contrib/libs/grpc/third_party/upb/upb/array.c
new file mode 100644
index 0000000000..b4cdc49924
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/array.c
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "upb/array.h"
+
+#include <string.h>
+
+#include "upb/internal/table.h"
+#include "upb/msg.h"
+#include "upb/port_def.inc"
+
+static const char _upb_CTypeo_sizelg2[12] = {
+ 0,
+ 0, /* kUpb_CType_Bool */
+ 2, /* kUpb_CType_Float */
+ 2, /* kUpb_CType_Int32 */
+ 2, /* kUpb_CType_UInt32 */
+ 2, /* kUpb_CType_Enum */
+ UPB_SIZE(2, 3), /* kUpb_CType_Message */
+ 3, /* kUpb_CType_Double */
+ 3, /* kUpb_CType_Int64 */
+ 3, /* kUpb_CType_UInt64 */
+ UPB_SIZE(3, 4), /* kUpb_CType_String */
+ UPB_SIZE(3, 4), /* kUpb_CType_Bytes */
+};
+
+upb_Array* upb_Array_New(upb_Arena* a, upb_CType type) {
+ return _upb_Array_New(a, 4, _upb_CTypeo_sizelg2[type]);
+}
+
+size_t upb_Array_Size(const upb_Array* arr) { return arr->len; }
+
+upb_MessageValue upb_Array_Get(const upb_Array* arr, size_t i) {
+ upb_MessageValue ret;
+ const char* data = _upb_array_constptr(arr);
+ int lg2 = arr->data & 7;
+ UPB_ASSERT(i < arr->len);
+ memcpy(&ret, data + (i << lg2), 1 << lg2);
+ return ret;
+}
+
+void upb_Array_Set(upb_Array* arr, size_t i, upb_MessageValue val) {
+ char* data = _upb_array_ptr(arr);
+ int lg2 = arr->data & 7;
+ UPB_ASSERT(i < arr->len);
+ memcpy(data + (i << lg2), &val, 1 << lg2);
+}
+
+bool upb_Array_Append(upb_Array* arr, upb_MessageValue val, upb_Arena* arena) {
+ if (!upb_Array_Resize(arr, arr->len + 1, arena)) {
+ return false;
+ }
+ upb_Array_Set(arr, arr->len - 1, val);
+ return true;
+}
+
+void upb_Array_Move(upb_Array* arr, size_t dst_idx, size_t src_idx,
+ size_t count) {
+ char* data = _upb_array_ptr(arr);
+ int lg2 = arr->data & 7;
+ memmove(&data[dst_idx << lg2], &data[src_idx << lg2], count << lg2);
+}
+
+bool upb_Array_Insert(upb_Array* arr, size_t i, size_t count,
+ upb_Arena* arena) {
+ UPB_ASSERT(i <= arr->len);
+ UPB_ASSERT(count + arr->len >= count);
+ size_t oldsize = arr->len;
+ if (!upb_Array_Resize(arr, arr->len + count, arena)) {
+ return false;
+ }
+ upb_Array_Move(arr, i + count, i, oldsize - i);
+ return true;
+}
+
+/*
+ * i end arr->len
+ * |------------|XXXXXXXX|--------|
+ */
+void upb_Array_Delete(upb_Array* arr, size_t i, size_t count) {
+ size_t end = i + count;
+ UPB_ASSERT(i <= end);
+ UPB_ASSERT(end <= arr->len);
+ upb_Array_Move(arr, i, end, arr->len - end);
+ arr->len -= count;
+}
+
+bool upb_Array_Resize(upb_Array* arr, size_t size, upb_Arena* arena) {
+ return _upb_Array_Resize(arr, size, arena);
+}
diff --git a/contrib/libs/grpc/third_party/upb/upb/array.h b/contrib/libs/grpc/third_party/upb/upb/array.h
new file mode 100644
index 0000000000..0715d58430
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/array.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef UPB_ARRAY_H_
+#define UPB_ARRAY_H_
+
+#include "google/protobuf/descriptor.upb.h"
+#include "upb/message_value.h"
+
+// Must be last.
+#include "upb/port_def.inc"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Creates a new array on the given arena that holds elements of this type. */
+upb_Array* upb_Array_New(upb_Arena* a, upb_CType type);
+
+/* Returns the size of the array. */
+size_t upb_Array_Size(const upb_Array* arr);
+
+/* Returns the given element, which must be within the array's current size. */
+upb_MessageValue upb_Array_Get(const upb_Array* arr, size_t i);
+
+/* Sets the given element, which must be within the array's current size. */
+void upb_Array_Set(upb_Array* arr, size_t i, upb_MessageValue val);
+
+/* Appends an element to the array. Returns false on allocation failure. */
+bool upb_Array_Append(upb_Array* array, upb_MessageValue val, upb_Arena* arena);
+
+/* Moves elements within the array using memmove(). Like memmove(), the source
+ * and destination elements may be overlapping. */
+void upb_Array_Move(upb_Array* array, size_t dst_idx, size_t src_idx,
+ size_t count);
+
+/* Inserts one or more empty elements into the array. Existing elements are
+ * shifted right. The new elements have undefined state and must be set with
+ * `upb_Array_Set()`.
+ * REQUIRES: `i <= upb_Array_Size(arr)` */
+bool upb_Array_Insert(upb_Array* array, size_t i, size_t count,
+ upb_Arena* arena);
+
+/* Deletes one or more elements from the array. Existing elements are shifted
+ * left.
+ * REQUIRES: `i + count <= upb_Array_Size(arr)` */
+void upb_Array_Delete(upb_Array* array, size_t i, size_t count);
+
+/* Changes the size of a vector. New elements are initialized to empty/0.
+ * Returns false on allocation failure. */
+bool upb_Array_Resize(upb_Array* array, size_t size, upb_Arena* arena);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* UPB_ARRAY_H_ */
diff --git a/contrib/libs/grpc/third_party/upb/upb/decode.c b/contrib/libs/grpc/third_party/upb/upb/decode.c
index 1e07d42c32..d314875313 100644
--- a/contrib/libs/grpc/third_party/upb/upb/decode.c
+++ b/contrib/libs/grpc/third_party/upb/upb/decode.c
@@ -30,9 +30,9 @@
#include <setjmp.h>
#include <string.h>
-#include "upb/decode_internal.h"
+#include "upb/internal/decode.h"
+#include "upb/internal/upb.h"
#include "upb/upb.h"
-#include "upb/upb_internal.h"
/* Must be last. */
#include "upb/port_def.inc"
@@ -93,13 +93,11 @@ static const unsigned FIXED64_OK_MASK = (1 << kUpb_FieldType_Double) |
/* Three fake field types for MessageSet. */
#define TYPE_MSGSET_ITEM 19
-#define TYPE_MSGSET_TYPE_ID 20
-#define TYPE_COUNT 20
+#define TYPE_COUNT 19
/* Op: an action to be performed for a wire-type/field-type combination. */
#define OP_UNKNOWN -1 /* Unknown field. */
#define OP_MSGSET_ITEM -2
-#define OP_MSGSET_TYPEID -3
#define OP_SCALAR_LG2(n) (n) /* n in [0, 2, 3] => op in [0, 2, 3] */
#define OP_ENUM 1
#define OP_STRING 4
@@ -131,7 +129,6 @@ static const int8_t varint_ops[] = {
OP_SCALAR_LG2(2), /* SINT32 */
OP_SCALAR_LG2(3), /* SINT64 */
OP_UNKNOWN, /* MSGSET_ITEM */
- OP_MSGSET_TYPEID, /* MSGSET TYPEID */
};
static const int8_t delim_ops[] = {
@@ -156,7 +153,6 @@ static const int8_t delim_ops[] = {
OP_UNKNOWN, /* SINT32 */
OP_UNKNOWN, /* SINT64 */
OP_UNKNOWN, /* MSGSET_ITEM */
- OP_UNKNOWN, /* MSGSET TYPEID */
/* For repeated field type. */
OP_FIXPCK_LG2(3), /* REPEATED DOUBLE */
OP_FIXPCK_LG2(2), /* REPEATED FLOAT */
@@ -266,6 +262,18 @@ static const char* decode_tag(upb_Decoder* d, const char* ptr, uint32_t* val) {
}
}
+UPB_FORCEINLINE
+static const char* upb_Decoder_DecodeSize(upb_Decoder* d, const char* ptr,
+ uint32_t* size) {
+ uint64_t size64;
+ ptr = decode_varint64(d, ptr, &size64);
+ if (size64 >= INT32_MAX || ptr - d->end + (int)size64 > d->limit) {
+ decode_err(d, kUpb_DecodeStatus_Malformed);
+ }
+ *size = size64;
+ return ptr;
+}
+
static void decode_munge_int32(wireval* val) {
if (!_upb_IsLittleEndian()) {
/* The next stage will memcpy(dst, &val, 4) */
@@ -300,7 +308,9 @@ static upb_Message* decode_newsubmsg(upb_Decoder* d,
const upb_MiniTable_Sub* subs,
const upb_MiniTable_Field* field) {
const upb_MiniTable* subl = subs[field->submsg_index].submsg;
- return _upb_Message_New_inl(subl, &d->arena);
+ upb_Message* msg = _upb_Message_New_inl(subl, &d->arena);
+ if (!msg) decode_err(d, kUpb_DecodeStatus_OutOfMemory);
+ return msg;
}
UPB_NOINLINE
@@ -375,7 +385,7 @@ static const char* decode_togroup(upb_Decoder* d, const char* ptr,
return decode_group(d, ptr, submsg, subl, field->number);
}
-static char* encode_varint32(uint32_t val, char* ptr) {
+static char* upb_Decoder_EncodeVarint32(uint32_t val, char* ptr) {
do {
uint8_t byte = val & 0x7fU;
val >>= 7;
@@ -385,6 +395,18 @@ static char* encode_varint32(uint32_t val, char* ptr) {
return ptr;
}
+static void upb_Decode_AddUnknownVarints(upb_Decoder* d, upb_Message* msg,
+ uint32_t val1, uint32_t val2) {
+ char buf[20];
+ char* end = buf;
+ end = upb_Decoder_EncodeVarint32(val1, end);
+ end = upb_Decoder_EncodeVarint32(val2, end);
+
+ if (!_upb_Message_AddUnknown(msg, buf, end - buf, &d->arena)) {
+ decode_err(d, kUpb_DecodeStatus_OutOfMemory);
+ }
+}
+
UPB_NOINLINE
static bool decode_checkenum_slow(upb_Decoder* d, const char* ptr,
upb_Message* msg, const upb_MiniTable_Enum* e,
@@ -398,17 +420,9 @@ static bool decode_checkenum_slow(upb_Decoder* d, const char* ptr,
// Unrecognized enum goes into unknown fields.
// For packed fields the tag could be arbitrarily far in the past, so we
- // just re-encode the tag here.
- char buf[20];
- char* end = buf;
+ // just re-encode the tag and value here.
uint32_t tag = ((uint32_t)field->number << 3) | kUpb_WireType_Varint;
- end = encode_varint32(tag, end);
- end = encode_varint32(v, end);
-
- if (!_upb_Message_AddUnknown(msg, buf, end - buf, &d->arena)) {
- decode_err(d, kUpb_DecodeStatus_OutOfMemory);
- }
-
+ upb_Decode_AddUnknownVarints(d, msg, tag, v);
return false;
}
@@ -627,8 +641,23 @@ static const char* decode_tomap(upb_Decoder* d, const char* ptr,
upb_value_ptr(_upb_Message_New(entry->subs[0].submsg, &d->arena));
}
+ const char* start = ptr;
ptr = decode_tosubmsg(d, ptr, &ent.k, subs, field, val->size);
- _upb_Map_Set(map, &ent.k, map->key_size, &ent.v, map->val_size, &d->arena);
+ // check if ent had any unknown fields
+ size_t size;
+ upb_Message_GetUnknown(&ent.k, &size);
+ if (size != 0) {
+ uint32_t tag = ((uint32_t)field->number << 3) | kUpb_WireType_Delimited;
+ upb_Decode_AddUnknownVarints(d, msg, tag, (uint32_t)(ptr - start));
+ if (!_upb_Message_AddUnknown(msg, start, ptr - start, &d->arena)) {
+ decode_err(d, kUpb_DecodeStatus_OutOfMemory);
+ }
+ } else {
+ if (_upb_Map_Insert(map, &ent.k, map->key_size, &ent.v, map->val_size,
+ &d->arena) == _kUpb_MapInsertStatus_OutOfMemory) {
+ decode_err(d, kUpb_DecodeStatus_OutOfMemory);
+ }
+ }
return ptr;
}
@@ -727,25 +756,139 @@ static bool decode_tryfastdispatch(upb_Decoder* d, const char** ptr,
return false;
}
-static const char* decode_msgset(upb_Decoder* d, const char* ptr,
- upb_Message* msg,
- const upb_MiniTable* layout) {
- // We create a temporary upb_MiniTable here and abuse its fields as temporary
- // storage, to avoid creating lots of MessageSet-specific parsing code-paths:
- // 1. We store 'layout' in item_layout.subs. We will need this later as
- // a key to look up extensions for this MessageSet.
- // 2. We use item_layout.fields as temporary storage to store the extension
- // we
- // found when parsing the type id.
- upb_MiniTable item_layout = {
- .subs = (const upb_MiniTable_Sub[]){{.submsg = layout}},
- .fields = NULL,
- .size = 0,
- .field_count = 0,
- .ext = upb_ExtMode_IsMessageSet_ITEM,
- .dense_below = 0,
- .table_mask = -1};
- return decode_group(d, ptr, msg, &item_layout, 1);
+static const char* upb_Decoder_SkipField(upb_Decoder* d, const char* ptr,
+ uint32_t tag) {
+ int field_number = tag >> 3;
+ int wire_type = tag & 7;
+ switch (wire_type) {
+ case kUpb_WireType_Varint: {
+ uint64_t val;
+ return decode_varint64(d, ptr, &val);
+ }
+ case kUpb_WireType_64Bit:
+ return ptr + 8;
+ case kUpb_WireType_32Bit:
+ return ptr + 4;
+ case kUpb_WireType_Delimited: {
+ uint32_t size;
+ ptr = upb_Decoder_DecodeSize(d, ptr, &size);
+ return ptr + size;
+ }
+ case kUpb_WireType_StartGroup:
+ return decode_group(d, ptr, NULL, NULL, field_number);
+ default:
+ decode_err(d, kUpb_DecodeStatus_Malformed);
+ }
+}
+
+enum {
+ kStartItemTag = ((1 << 3) | kUpb_WireType_StartGroup),
+ kEndItemTag = ((1 << 3) | kUpb_WireType_EndGroup),
+ kTypeIdTag = ((2 << 3) | kUpb_WireType_Varint),
+ kMessageTag = ((3 << 3) | kUpb_WireType_Delimited),
+};
+
+static void upb_Decoder_AddKnownMessageSetItem(
+ upb_Decoder* d, upb_Message* msg, const upb_MiniTable_Extension* item_mt,
+ const char* data, uint32_t size) {
+ upb_Message_Extension* ext =
+ _upb_Message_GetOrCreateExtension(msg, item_mt, &d->arena);
+ if (UPB_UNLIKELY(!ext)) decode_err(d, kUpb_DecodeStatus_OutOfMemory);
+ upb_Message* submsg = decode_newsubmsg(d, &ext->ext->sub, &ext->ext->field);
+ upb_DecodeStatus status = upb_Decode(data, size, submsg, item_mt->sub.submsg,
+ d->extreg, d->options, &d->arena);
+ memcpy(&ext->data, &submsg, sizeof(submsg));
+ if (status != kUpb_DecodeStatus_Ok) decode_err(d, status);
+}
+
+static void upb_Decoder_AddUnknownMessageSetItem(upb_Decoder* d,
+ upb_Message* msg,
+ uint32_t type_id,
+ const char* message_data,
+ uint32_t message_size) {
+ char buf[60];
+ char* ptr = buf;
+ ptr = upb_Decoder_EncodeVarint32(kStartItemTag, ptr);
+ ptr = upb_Decoder_EncodeVarint32(kTypeIdTag, ptr);
+ ptr = upb_Decoder_EncodeVarint32(type_id, ptr);
+ ptr = upb_Decoder_EncodeVarint32(kMessageTag, ptr);
+ ptr = upb_Decoder_EncodeVarint32(message_size, ptr);
+ char* split = ptr;
+
+ ptr = upb_Decoder_EncodeVarint32(kEndItemTag, ptr);
+ char* end = ptr;
+
+ if (!_upb_Message_AddUnknown(msg, buf, split - buf, &d->arena) ||
+ !_upb_Message_AddUnknown(msg, message_data, message_size, &d->arena) ||
+ !_upb_Message_AddUnknown(msg, split, end - split, &d->arena)) {
+ decode_err(d, kUpb_DecodeStatus_OutOfMemory);
+ }
+}
+
+static void upb_Decoder_AddMessageSetItem(upb_Decoder* d, upb_Message* msg,
+ const upb_MiniTable* layout,
+ uint32_t type_id, const char* data,
+ uint32_t size) {
+ const upb_MiniTable_Extension* item_mt =
+ _upb_extreg_get(d->extreg, layout, type_id);
+ if (item_mt) {
+ upb_Decoder_AddKnownMessageSetItem(d, msg, item_mt, data, size);
+ } else {
+ upb_Decoder_AddUnknownMessageSetItem(d, msg, type_id, data, size);
+ }
+}
+
+static const char* upb_Decoder_DecodeMessageSetItem(
+ upb_Decoder* d, const char* ptr, upb_Message* msg,
+ const upb_MiniTable* layout) {
+ uint32_t type_id = 0;
+ upb_StringView preserved = {NULL, 0};
+ typedef enum {
+ kUpb_HaveId = 1 << 0,
+ kUpb_HavePayload = 1 << 1,
+ } StateMask;
+ StateMask state_mask = 0;
+ while (!decode_isdone(d, &ptr)) {
+ uint32_t tag;
+ ptr = decode_tag(d, ptr, &tag);
+ switch (tag) {
+ case kEndItemTag:
+ return ptr;
+ case kTypeIdTag: {
+ uint64_t tmp;
+ ptr = decode_varint64(d, ptr, &tmp);
+ if (state_mask & kUpb_HaveId) break; // Ignore dup.
+ state_mask |= kUpb_HaveId;
+ type_id = tmp;
+ if (state_mask & kUpb_HavePayload) {
+ upb_Decoder_AddMessageSetItem(d, msg, layout, type_id, preserved.data,
+ preserved.size);
+ }
+ break;
+ }
+ case kMessageTag: {
+ uint32_t size;
+ ptr = upb_Decoder_DecodeSize(d, ptr, &size);
+ const char* data = ptr;
+ ptr += size;
+ if (state_mask & kUpb_HavePayload) break; // Ignore dup.
+ state_mask |= kUpb_HavePayload;
+ if (state_mask & kUpb_HaveId) {
+ upb_Decoder_AddMessageSetItem(d, msg, layout, type_id, data, size);
+ } else {
+ // Out of order, we must preserve the payload.
+ preserved.data = data;
+ preserved.size = size;
+ }
+ break;
+ }
+ default:
+ // We do not preserve unexpected fields inside a message set item.
+ ptr = upb_Decoder_SkipField(d, ptr, tag);
+ break;
+ }
+ }
+ decode_err(d, kUpb_DecodeStatus_Malformed);
}
static const upb_MiniTable_Field* decode_findfield(upb_Decoder* d,
@@ -780,38 +923,18 @@ static const upb_MiniTable_Field* decode_findfield(upb_Decoder* d,
if (d->extreg) {
switch (l->ext) {
- case upb_ExtMode_Extendable: {
+ case kUpb_ExtMode_Extendable: {
const upb_MiniTable_Extension* ext =
_upb_extreg_get(d->extreg, l, field_number);
if (ext) return &ext->field;
break;
}
- case upb_ExtMode_IsMessageSet:
+ case kUpb_ExtMode_IsMessageSet:
if (field_number == _UPB_MSGSET_ITEM) {
static upb_MiniTable_Field item = {0, 0, 0, 0, TYPE_MSGSET_ITEM, 0};
return &item;
}
break;
- case upb_ExtMode_IsMessageSet_ITEM:
- switch (field_number) {
- case _UPB_MSGSET_TYPEID: {
- static upb_MiniTable_Field type_id = {
- 0, 0, 0, 0, TYPE_MSGSET_TYPE_ID, 0};
- return &type_id;
- }
- case _UPB_MSGSET_MESSAGE:
- if (l->fields) {
- // We saw type_id previously and succeeded in looking up msg.
- return l->fields;
- } else {
- // TODO: out of order MessageSet.
- // This is a very rare case: all serializers will emit in-order
- // MessageSets. To hit this case there has to be some kind of
- // re-ordering proxy. We should eventually handle this case, but
- // not today.
- }
- break;
- }
}
}
@@ -851,14 +974,9 @@ static const char* decode_wireval(upb_Decoder* d, const char* ptr,
return ptr + 8;
case kUpb_WireType_Delimited: {
int ndx = field->descriptortype;
- uint64_t size;
if (upb_FieldMode_Get(field) == kUpb_FieldMode_Array) ndx += TYPE_COUNT;
- ptr = decode_varint64(d, ptr, &size);
- if (size >= INT32_MAX || ptr - d->end + (int32_t)size > d->limit) {
- break; /* Length overflow. */
- }
+ ptr = upb_Decoder_DecodeSize(d, ptr, &val->size);
*op = delim_ops[ndx];
- val->size = size;
return ptr;
}
case kUpb_WireType_StartGroup:
@@ -885,11 +1003,11 @@ static const char* decode_known(upb_Decoder* d, const char* ptr,
const upb_MiniTable_Sub* subs = layout->subs;
uint8_t mode = field->mode;
- if (UPB_UNLIKELY(mode & upb_LabelFlags_IsExtension)) {
+ if (UPB_UNLIKELY(mode & kUpb_LabelFlags_IsExtension)) {
const upb_MiniTable_Extension* ext_layout =
(const upb_MiniTable_Extension*)field;
upb_Message_Extension* ext =
- _upb_Message_Getorcreateext(msg, ext_layout, &d->arena);
+ _upb_Message_GetOrCreateExtension(msg, ext_layout, &d->arena);
if (UPB_UNLIKELY(!ext)) return decode_err(d, kUpb_DecodeStatus_OutOfMemory);
msg = &ext->data;
subs = &ext->ext->sub;
@@ -1022,14 +1140,8 @@ static const char* decode_msg(upb_Decoder* d, const char* ptr, upb_Message* msg,
ptr = decode_unknown(d, ptr, msg, field_number, wire_type, val);
break;
case OP_MSGSET_ITEM:
- ptr = decode_msgset(d, ptr, msg, layout);
+ ptr = upb_Decoder_DecodeMessageSetItem(d, ptr, msg, layout);
break;
- case OP_MSGSET_TYPEID: {
- const upb_MiniTable_Extension* ext = _upb_extreg_get(
- d->extreg, layout->subs[0].submsg, val.uint64_val);
- if (ext) ((upb_MiniTable*)layout)->fields = &ext->field;
- break;
- }
}
}
}
diff --git a/contrib/libs/grpc/third_party/upb/upb/decode.h b/contrib/libs/grpc/third_party/upb/upb/decode.h
index 1fa8131b7d..0c09497feb 100644
--- a/contrib/libs/grpc/third_party/upb/upb/decode.h
+++ b/contrib/libs/grpc/third_party/upb/upb/decode.h
@@ -32,6 +32,7 @@
#ifndef UPB_DECODE_H_
#define UPB_DECODE_H_
+#include "upb/extension_registry.h"
#include "upb/msg.h"
/* Must be last. */
diff --git a/contrib/libs/grpc/third_party/upb/upb/decode_fast.c b/contrib/libs/grpc/third_party/upb/upb/decode_fast.c
index e05bf8e0db..a02ad0948f 100644
--- a/contrib/libs/grpc/third_party/upb/upb/decode_fast.c
+++ b/contrib/libs/grpc/third_party/upb/upb/decode_fast.c
@@ -37,7 +37,7 @@
#include "upb/decode_fast.h"
-#include "upb/decode_internal.h"
+#include "upb/internal/decode.h"
/* Must be last. */
#include "upb/port_def.inc"
diff --git a/contrib/libs/grpc/third_party/upb/upb/def.c b/contrib/libs/grpc/third_party/upb/upb/def.c
index 363d8bb960..6ddc45bbbb 100644
--- a/contrib/libs/grpc/third_party/upb/upb/def.c
+++ b/contrib/libs/grpc/third_party/upb/upb/def.c
@@ -34,6 +34,7 @@
#include <string.h>
#include "google/protobuf/descriptor.upb.h"
+#include "upb/mini_table.h"
#include "upb/reflection.h"
/* Must be last. */
@@ -86,6 +87,9 @@ struct upb_FieldDef {
bool has_json_name_;
upb_FieldType type_;
upb_Label label_;
+#if UINTPTR_MAX == 0xffffffff
+ uint32_t padding; // Increase size to a multiple of 8.
+#endif
};
struct upb_ExtensionRange {
@@ -106,8 +110,8 @@ struct upb_MessageDef {
upb_strtable ntof;
/* All nested defs.
- * MEM: We could save some space here by putting nested defs in a contigous
- * region and calculating counts from offets or vice-versa. */
+ * MEM: We could save some space here by putting nested defs in a contiguous
+ * region and calculating counts from offsets or vice-versa. */
const upb_FieldDef* fields;
const upb_OneofDef* oneofs;
const upb_ExtensionRange* ext_ranges;
@@ -123,6 +127,9 @@ struct upb_MessageDef {
int nested_ext_count;
bool in_message_set;
upb_WellKnown well_known_type;
+#if UINTPTR_MAX == 0xffffffff
+ uint32_t padding; // Increase size to a multiple of 8.
+#endif
};
struct upb_EnumDef {
@@ -136,6 +143,9 @@ struct upb_EnumDef {
const upb_EnumValueDef* values;
int value_count;
int32_t defaultval;
+#if UINTPTR_MAX == 0xffffffff
+ uint32_t padding; // Increase size to a multiple of 8.
+#endif
};
struct upb_EnumValueDef {
@@ -154,6 +164,9 @@ struct upb_OneofDef {
const upb_FieldDef** fields;
upb_strtable ntof;
upb_inttable itof;
+#if UINTPTR_MAX == 0xffffffff
+ uint32_t padding; // Increase size to a multiple of 8.
+#endif
};
struct upb_FileDef {
@@ -188,6 +201,7 @@ struct upb_MethodDef {
const char* full_name;
const upb_MessageDef* input_type;
const upb_MessageDef* output_type;
+ int index;
bool client_streaming;
bool server_streaming;
};
@@ -246,6 +260,20 @@ static const void* unpack_def(upb_value v, upb_deftype_t type) {
}
static upb_value pack_def(const void* ptr, upb_deftype_t type) {
+ // Our 3-bit pointer tagging requires all pointers to be multiples of 8.
+ // The arena will always yield 8-byte-aligned addresses, however we put
+ // the defs into arrays. For each element in the array to be 8-byte-aligned,
+ // the sizes of each def type must also be a multiple of 8.
+ //
+ // If any of these asserts fail, we need to add or remove padding on 32-bit
+ // machines (64-bit machines will have 8-byte alignment already due to
+ // pointers, which all of these structs have).
+ UPB_ASSERT((sizeof(upb_FieldDef) & UPB_DEFTYPE_MASK) == 0);
+ UPB_ASSERT((sizeof(upb_MessageDef) & UPB_DEFTYPE_MASK) == 0);
+ UPB_ASSERT((sizeof(upb_EnumDef) & UPB_DEFTYPE_MASK) == 0);
+ UPB_ASSERT((sizeof(upb_EnumValueDef) & UPB_DEFTYPE_MASK) == 0);
+ UPB_ASSERT((sizeof(upb_ServiceDef) & UPB_DEFTYPE_MASK) == 0);
+ UPB_ASSERT((sizeof(upb_OneofDef) & UPB_DEFTYPE_MASK) == 0);
uintptr_t num = (uintptr_t)ptr;
UPB_ASSERT((num & UPB_DEFTYPE_MASK) == 0);
num |= type;
@@ -621,6 +649,14 @@ bool upb_FieldDef_IsString(const upb_FieldDef* f) {
upb_FieldDef_CType(f) == kUpb_CType_Bytes;
}
+bool upb_FieldDef_IsOptional(const upb_FieldDef* f) {
+ return upb_FieldDef_Label(f) == kUpb_Label_Optional;
+}
+
+bool upb_FieldDef_IsRequired(const upb_FieldDef* f) {
+ return upb_FieldDef_Label(f) == kUpb_Label_Required;
+}
+
bool upb_FieldDef_IsRepeated(const upb_FieldDef* f) {
return upb_FieldDef_Label(f) == kUpb_Label_Repeated;
}
@@ -980,6 +1016,8 @@ const char* upb_MethodDef_FullName(const upb_MethodDef* m) {
return m->full_name;
}
+int upb_MethodDef_Index(const upb_MethodDef* m) { return m->index; }
+
const char* upb_MethodDef_Name(const upb_MethodDef* m) {
return shortdefname(m->full_name);
}
@@ -1384,7 +1422,12 @@ static uint8_t map_descriptortype(const upb_FieldDef* f) {
if (type == kUpb_FieldType_String && f->file->syntax == kUpb_Syntax_Proto2) {
return kUpb_FieldType_Bytes;
} else if (type == kUpb_FieldType_Enum &&
- f->sub.enumdef->file->syntax == kUpb_Syntax_Proto3) {
+ (f->sub.enumdef->file->syntax == kUpb_Syntax_Proto3 ||
+ UPB_TREAT_PROTO2_ENUMS_LIKE_PROTO3 ||
+ // TODO(https://github.com/protocolbuffers/upb/issues/541):
+ // fix map enum values to check for unknown enum values and put
+ // them in the unknown field set.
+ upb_MessageDef_IsMapEntry(upb_FieldDef_ContainingType(f)))) {
return kUpb_FieldType_Int32;
}
return type;
@@ -1397,43 +1440,43 @@ static void fill_fieldlayout(upb_MiniTable_Field* field,
if (upb_FieldDef_IsMap(f)) {
field->mode =
- kUpb_FieldMode_Map | (upb_FieldRep_Pointer << upb_FieldRep_Shift);
+ kUpb_FieldMode_Map | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift);
} else if (upb_FieldDef_IsRepeated(f)) {
field->mode =
- kUpb_FieldMode_Array | (upb_FieldRep_Pointer << upb_FieldRep_Shift);
+ kUpb_FieldMode_Array | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift);
} else {
/* Maps descriptor type -> elem_size_lg2. */
static const uint8_t sizes[] = {
- -1, /* invalid descriptor type */
- upb_FieldRep_8Byte, /* DOUBLE */
- upb_FieldRep_4Byte, /* FLOAT */
- upb_FieldRep_8Byte, /* INT64 */
- upb_FieldRep_8Byte, /* UINT64 */
- upb_FieldRep_4Byte, /* INT32 */
- upb_FieldRep_8Byte, /* FIXED64 */
- upb_FieldRep_4Byte, /* FIXED32 */
- upb_FieldRep_1Byte, /* BOOL */
- upb_FieldRep_StringView, /* STRING */
- upb_FieldRep_Pointer, /* GROUP */
- upb_FieldRep_Pointer, /* MESSAGE */
- upb_FieldRep_StringView, /* BYTES */
- upb_FieldRep_4Byte, /* UINT32 */
- upb_FieldRep_4Byte, /* ENUM */
- upb_FieldRep_4Byte, /* SFIXED32 */
- upb_FieldRep_8Byte, /* SFIXED64 */
- upb_FieldRep_4Byte, /* SINT32 */
- upb_FieldRep_8Byte, /* SINT64 */
+ -1, /* invalid descriptor type */
+ kUpb_FieldRep_8Byte, /* DOUBLE */
+ kUpb_FieldRep_4Byte, /* FLOAT */
+ kUpb_FieldRep_8Byte, /* INT64 */
+ kUpb_FieldRep_8Byte, /* UINT64 */
+ kUpb_FieldRep_4Byte, /* INT32 */
+ kUpb_FieldRep_8Byte, /* FIXED64 */
+ kUpb_FieldRep_4Byte, /* FIXED32 */
+ kUpb_FieldRep_1Byte, /* BOOL */
+ kUpb_FieldRep_StringView, /* STRING */
+ kUpb_FieldRep_Pointer, /* GROUP */
+ kUpb_FieldRep_Pointer, /* MESSAGE */
+ kUpb_FieldRep_StringView, /* BYTES */
+ kUpb_FieldRep_4Byte, /* UINT32 */
+ kUpb_FieldRep_4Byte, /* ENUM */
+ kUpb_FieldRep_4Byte, /* SFIXED32 */
+ kUpb_FieldRep_8Byte, /* SFIXED64 */
+ kUpb_FieldRep_4Byte, /* SINT32 */
+ kUpb_FieldRep_8Byte, /* SINT64 */
};
field->mode = kUpb_FieldMode_Scalar |
- (sizes[field->descriptortype] << upb_FieldRep_Shift);
+ (sizes[field->descriptortype] << kUpb_FieldRep_Shift);
}
if (upb_FieldDef_IsPacked(f)) {
- field->mode |= upb_LabelFlags_IsPacked;
+ field->mode |= kUpb_LabelFlags_IsPacked;
}
if (upb_FieldDef_IsExtension(f)) {
- field->mode |= upb_LabelFlags_IsExtension;
+ field->mode |= kUpb_LabelFlags_IsExtension;
}
}
@@ -1471,12 +1514,12 @@ static void make_layout(symtab_addctx* ctx, const upb_MessageDef* m) {
if (upb_MessageDef_ExtensionRangeCount(m) > 0) {
if (google_protobuf_MessageOptions_message_set_wire_format(m->opts)) {
- l->ext = upb_ExtMode_IsMessageSet;
+ l->ext = kUpb_ExtMode_IsMessageSet;
} else {
- l->ext = upb_ExtMode_Extendable;
+ l->ext = kUpb_ExtMode_Extendable;
}
} else {
- l->ext = upb_ExtMode_NonExtendable;
+ l->ext = kUpb_ExtMode_NonExtendable;
}
/* TODO(haberman): initialize fast tables so that reflection-based parsing
@@ -1551,11 +1594,11 @@ static void make_layout(symtab_addctx* ctx, const upb_MessageDef* m) {
fill_fieldlayout(field, f);
- if (upb_FieldDef_IsSubMessage(f)) {
+ if (field->descriptortype == kUpb_FieldType_Message ||
+ field->descriptortype == kUpb_FieldType_Group) {
field->submsg_index = sublayout_count++;
subs[field->submsg_index].submsg = upb_FieldDef_MessageSubDef(f)->layout;
- } else if (upb_FieldDef_CType(f) == kUpb_CType_Enum &&
- f->file->syntax == kUpb_Syntax_Proto2) {
+ } else if (field->descriptortype == kUpb_FieldType_Enum) {
field->submsg_index = sublayout_count++;
subs[field->submsg_index].subenum = upb_FieldDef_EnumSubDef(f)->layout;
UPB_ASSERT(subs[field->submsg_index].subenum);
@@ -1601,6 +1644,10 @@ static void make_layout(symtab_addctx* ctx, const upb_MessageDef* m) {
if (upb_OneofDef_IsSynthetic(o)) continue;
+ if (o->field_count == 0) {
+ symtab_errf(ctx, "Oneof must have at least one field (%s)", o->full_name);
+ }
+
/* Calculate field size: the max of all field sizes. */
for (int j = 0; j < o->field_count; j++) {
const upb_FieldDef* f = o->fields[j];
@@ -1623,7 +1670,10 @@ static void make_layout(symtab_addctx* ctx, const upb_MessageDef* m) {
l->size = UPB_ALIGN_UP(l->size, 8);
/* Sort fields by number. */
- qsort(fields, upb_MessageDef_numfields(m), sizeof(*fields), field_number_cmp);
+ if (fields) {
+ qsort(fields, upb_MessageDef_numfields(m), sizeof(*fields),
+ field_number_cmp);
+ }
assign_layout_indices(m, l, fields);
}
@@ -1784,8 +1834,8 @@ static const void* symtab_resolveany(symtab_addctx* ctx,
}
} else {
/* Remove components from base until we find an entry or run out. */
- size_t baselen = strlen(base);
- char* tmp = malloc(sym.size + strlen(base) + 1);
+ size_t baselen = base ? strlen(base) : 0;
+ char* tmp = malloc(sym.size + baselen + 1);
while (1) {
char* p = tmp;
if (baselen) {
@@ -1821,10 +1871,10 @@ static const void* symtab_resolve(symtab_addctx* ctx, const char* from_name_dbg,
const void* ret =
symtab_resolveany(ctx, from_name_dbg, base, sym, &found_type);
if (ret && found_type != type) {
- symtab_errf(
- ctx,
- "type mismatch when resolving %s: couldn't find name %s with type=%d",
- from_name_dbg, sym.data, (int)type);
+ symtab_errf(ctx,
+ "type mismatch when resolving %s: couldn't find "
+ "name " UPB_STRINGVIEW_FORMAT " with type=%d",
+ from_name_dbg, UPB_STRINGVIEW_ARGS(sym), (int)type);
}
return ret;
}
@@ -1844,6 +1894,11 @@ static void create_oneofdef(
SET_OPTIONS(o->opts, OneofDescriptorProto, OneofOptions, oneof_proto);
+ upb_value existing_v;
+ if (upb_strtable_lookup2(&m->ntof, name.data, name.size, &existing_v)) {
+ symtab_errf(ctx, "duplicate oneof name (%s)", o->full_name);
+ }
+
v = pack_def(o, UPB_DEFTYPE_ONEOF);
CHK_OOM(upb_strtable_insert(&m->ntof, name.data, name.size, v, ctx->arena));
@@ -2153,7 +2208,7 @@ static void create_fielddef(
f->file = ctx->file; /* Must happen prior to symtab_add(). */
if (!google_protobuf_FieldDescriptorProto_has_name(field_proto)) {
- symtab_errf(ctx, "field has no name (%s)", upb_MessageDef_FullName(m));
+ symtab_errf(ctx, "field has no name");
}
name = google_protobuf_FieldDescriptorProto_name(field_proto);
@@ -2292,8 +2347,7 @@ static void create_fielddef(
}
if (google_protobuf_FieldDescriptorProto_has_oneof_index(field_proto)) {
- int oneof_index =
- google_protobuf_FieldDescriptorProto_oneof_index(field_proto);
+ uint32_t oneof_index = google_protobuf_FieldDescriptorProto_oneof_index(field_proto);
upb_OneofDef* oneof;
upb_value v = upb_value_constptr(f);
@@ -2370,6 +2424,7 @@ static void create_service(
m->service = s;
m->full_name = makefullname(ctx, s->full_name, name);
+ m->index = i;
m->client_streaming =
google_protobuf_MethodDescriptorProto_client_streaming(method_proto);
m->server_streaming =
@@ -2397,6 +2452,12 @@ static int count_bits_debug(uint64_t x) {
return n;
}
+static int compare_int32(const void* a_ptr, const void* b_ptr) {
+ int32_t a = *(int32_t*)a_ptr;
+ int32_t b = *(int32_t*)b_ptr;
+ return a < b ? -1 : (a == b ? 0 : 1);
+}
+
upb_MiniTable_Enum* create_enumlayout(symtab_addctx* ctx,
const upb_EnumDef* e) {
int n = 0;
@@ -2405,7 +2466,7 @@ upb_MiniTable_Enum* create_enumlayout(symtab_addctx* ctx,
for (int i = 0; i < e->value_count; i++) {
uint32_t val = (uint32_t)e->values[i].number;
if (val < 64) {
- mask |= 1 << val;
+ mask |= 1ULL << val;
} else {
n++;
}
@@ -2427,6 +2488,17 @@ upb_MiniTable_Enum* create_enumlayout(symtab_addctx* ctx,
UPB_ASSERT(p == values + n);
}
+ // Enums can have duplicate values; we must sort+uniq them.
+ if (values) qsort(values, n, sizeof(*values), &compare_int32);
+
+ int dst = 0;
+ for (int i = 0; i < n; dst++) {
+ int32_t val = values[i];
+ while (i < n && values[i] == val) i++; // Skip duplicates.
+ values[dst] = val;
+ }
+ n = dst;
+
UPB_ASSERT(upb_inttable_count(&e->iton) == n + count_bits_debug(mask));
upb_MiniTable_Enum* layout = symtab_alloc(ctx, sizeof(*layout));
@@ -2510,7 +2582,7 @@ static void create_enumdef(
if (ctx->layout) {
UPB_ASSERT(ctx->enum_count < ctx->layout->enum_count);
e->layout = ctx->layout->enums[ctx->enum_count++];
- UPB_ASSERT(n ==
+ UPB_ASSERT(upb_inttable_count(&e->iton) ==
e->layout->value_count + count_bits_debug(e->layout->mask));
} else {
e->layout = create_enumlayout(ctx, e);
@@ -2781,15 +2853,10 @@ static void resolve_msgdef(symtab_addctx* ctx, upb_MessageDef* m) {
resolve_fielddef(ctx, m->full_name, (upb_FieldDef*)&m->fields[i]);
}
- for (int i = 0; i < m->nested_ext_count; i++) {
- resolve_fielddef(ctx, m->full_name, (upb_FieldDef*)&m->nested_exts[i]);
- }
-
- if (!ctx->layout) make_layout(ctx, m);
-
m->in_message_set = false;
- if (m->nested_ext_count == 1) {
- const upb_FieldDef* ext = &m->nested_exts[0];
+ for (int i = 0; i < m->nested_ext_count; i++) {
+ upb_FieldDef* ext = (upb_FieldDef*)&m->nested_exts[i];
+ resolve_fielddef(ctx, m->full_name, ext);
if (ext->type_ == kUpb_FieldType_Message &&
ext->label_ == kUpb_Label_Optional && ext->sub.msgdef == m &&
google_protobuf_MessageOptions_message_set_wire_format(
@@ -2798,6 +2865,8 @@ static void resolve_msgdef(symtab_addctx* ctx, upb_MessageDef* m) {
}
}
+ if (!ctx->layout) make_layout(ctx, m);
+
for (int i = 0; i < m->nested_msg_count; i++) {
resolve_msgdef(ctx, (upb_MessageDef*)&m->nested_msgs[i]);
}
@@ -2929,7 +2998,7 @@ static void build_filedef(
int32_t* mutable_weak_deps = (int32_t*)file->weak_deps;
for (i = 0; i < n; i++) {
if (weak_deps[i] >= file->dep_count) {
- symtab_errf(ctx, "public_dep %d is out of range", (int)public_deps[i]);
+ symtab_errf(ctx, "weak_dep %d is out of range", (int)weak_deps[i]);
}
mutable_weak_deps[i] = weak_deps[i];
}
@@ -3085,7 +3154,8 @@ const upb_FileDef* upb_DefPool_AddFile(
/* Include here since we want most of this file to be stdio-free. */
#include <stdio.h>
-bool _upb_DefPool_LoadDefInit(upb_DefPool* s, const _upb_DefPool_Init* init) {
+bool _upb_DefPool_LoadDefInitEx(upb_DefPool* s, const _upb_DefPool_Init* init,
+ bool rebuild_minitable) {
/* Since this function should never fail (it would indicate a bug in upb) we
* print errors to stderr instead of returning error status to the user. */
_upb_DefPool_Init** deps = init->deps;
@@ -3102,7 +3172,7 @@ bool _upb_DefPool_LoadDefInit(upb_DefPool* s, const _upb_DefPool_Init* init) {
arena = upb_Arena_New();
for (; *deps; deps++) {
- if (!_upb_DefPool_LoadDefInit(s, *deps)) goto err;
+ if (!_upb_DefPool_LoadDefInitEx(s, *deps, rebuild_minitable)) goto err;
}
file = google_protobuf_FileDescriptorProto_parse_ex(
@@ -3119,7 +3189,8 @@ bool _upb_DefPool_LoadDefInit(upb_DefPool* s, const _upb_DefPool_Init* init) {
goto err;
}
- if (!_upb_DefPool_AddFile(s, file, init->layout, &status)) {
+ const upb_MiniTable_File* mt = rebuild_minitable ? NULL : init->layout;
+ if (!_upb_DefPool_AddFile(s, file, mt, &status)) {
goto err;
}
diff --git a/contrib/libs/grpc/third_party/upb/upb/def.h b/contrib/libs/grpc/third_party/upb/upb/def.h
index 8b64a53c1d..2cb312df1a 100644
--- a/contrib/libs/grpc/third_party/upb/upb/def.h
+++ b/contrib/libs/grpc/third_party/upb/upb/def.h
@@ -29,7 +29,7 @@
#define UPB_DEF_H_
#include "google/protobuf/descriptor.upb.h"
-#include "upb/table_internal.h"
+#include "upb/internal/table.h"
#include "upb/upb.h"
/* Must be last. */
@@ -116,6 +116,8 @@ const upb_OneofDef* upb_FieldDef_RealContainingOneof(const upb_FieldDef* f);
uint32_t upb_FieldDef_Index(const upb_FieldDef* f);
bool upb_FieldDef_IsSubMessage(const upb_FieldDef* f);
bool upb_FieldDef_IsString(const upb_FieldDef* f);
+bool upb_FieldDef_IsOptional(const upb_FieldDef* f);
+bool upb_FieldDef_IsRequired(const upb_FieldDef* f);
bool upb_FieldDef_IsRepeated(const upb_FieldDef* f);
bool upb_FieldDef_IsPrimitive(const upb_FieldDef* f);
bool upb_FieldDef_IsMap(const upb_FieldDef* f);
@@ -164,11 +166,11 @@ const upb_FieldDef* upb_OneofDef_LookupNumber(const upb_OneofDef* o,
#define kUpb_Any_TypeFieldNumber 1
#define kUpb_Any_ValueFieldNumber 2
-/* Well-known field tag numbers for timestamp messages. */
+/* Well-known field tag numbers for duration messages. */
#define kUpb_Duration_SecondsFieldNumber 1
#define kUpb_Duration_NanosFieldNumber 2
-/* Well-known field tag numbers for duration messages. */
+/* Well-known field tag numbers for timestamp messages. */
#define kUpb_Timestamp_SecondsFieldNumber 1
#define kUpb_Timestamp_NanosFieldNumber 2
@@ -210,6 +212,11 @@ UPB_INLINE bool upb_MessageDef_IsMapEntry(const upb_MessageDef* m) {
return google_protobuf_MessageOptions_map_entry(upb_MessageDef_Options(m));
}
+UPB_INLINE bool upb_MessageDef_IsMessageSet(const upb_MessageDef* m) {
+ return google_protobuf_MessageOptions_message_set_wire_format(
+ upb_MessageDef_Options(m));
+}
+
/* Nested entities. */
int upb_MessageDef_NestedMessageCount(const upb_MessageDef* m);
int upb_MessageDef_NestedEnumCount(const upb_MessageDef* m);
@@ -317,6 +324,7 @@ const google_protobuf_MethodOptions* upb_MethodDef_Options(
const upb_MethodDef* m);
bool upb_MethodDef_HasOptions(const upb_MethodDef* m);
const char* upb_MethodDef_FullName(const upb_MethodDef* m);
+int upb_MethodDef_Index(const upb_MethodDef* m);
const char* upb_MethodDef_Name(const upb_MethodDef* m);
const upb_ServiceDef* upb_MethodDef_Service(const upb_MethodDef* m);
const upb_MessageDef* upb_MethodDef_InputType(const upb_MethodDef* m);
@@ -389,7 +397,15 @@ typedef struct _upb_DefPool_Init {
upb_StringView descriptor; /* Serialized descriptor. */
} _upb_DefPool_Init;
-bool _upb_DefPool_LoadDefInit(upb_DefPool* s, const _upb_DefPool_Init* init);
+// Should only be directly called by tests. This variant lets us suppress
+// the use of compiled-in tables, forcing a rebuild of the tables at runtime.
+bool _upb_DefPool_LoadDefInitEx(upb_DefPool* s, const _upb_DefPool_Init* init,
+ bool rebuild_minitable);
+
+UPB_INLINE bool _upb_DefPool_LoadDefInit(upb_DefPool* s,
+ const _upb_DefPool_Init* init) {
+ return _upb_DefPool_LoadDefInitEx(s, init, false);
+}
#include "upb/port_undef.inc"
diff --git a/contrib/libs/grpc/third_party/upb/upb/def.hpp b/contrib/libs/grpc/third_party/upb/upb/def.hpp
index d179721d1f..4ce4a22250 100644
--- a/contrib/libs/grpc/third_party/upb/upb/def.hpp
+++ b/contrib/libs/grpc/third_party/upb/upb/def.hpp
@@ -374,11 +374,11 @@ class FileDefPtr {
const upb_FileDef* ptr_;
};
-// Non-const methods in upb::SymbolTable are NOT thread-safe.
-class SymbolTable {
+// Non-const methods in upb::DefPool are NOT thread-safe.
+class DefPool {
public:
- SymbolTable() : ptr_(upb_DefPool_New(), upb_DefPool_Free) {}
- explicit SymbolTable(upb_DefPool* s) : ptr_(s, upb_DefPool_Free) {}
+ DefPool() : ptr_(upb_DefPool_New(), upb_DefPool_Free) {}
+ explicit DefPool(upb_DefPool* s) : ptr_(s, upb_DefPool_Free) {}
const upb_DefPool* ptr() const { return ptr_.get(); }
upb_DefPool* ptr() { return ptr_.get(); }
@@ -410,6 +410,9 @@ class SymbolTable {
std::unique_ptr<upb_DefPool, decltype(&upb_DefPool_Free)> ptr_;
};
+// TODO(b/236632406): This typedef is deprecated. Delete it.
+using SymbolTable = DefPool;
+
inline FileDefPtr MessageDefPtr::file() const {
return FileDefPtr(upb_MessageDef_File(ptr_));
}
diff --git a/contrib/libs/grpc/third_party/upb/upb/encode.c b/contrib/libs/grpc/third_party/upb/upb/encode.c
index c339c9d81e..048ecd2396 100644
--- a/contrib/libs/grpc/third_party/upb/upb/encode.c
+++ b/contrib/libs/grpc/third_party/upb/upb/encode.c
@@ -32,6 +32,7 @@
#include <setjmp.h>
#include <string.h>
+#include "upb/extension_registry.h"
#include "upb/msg_internal.h"
#include "upb/upb.h"
@@ -76,7 +77,9 @@ static size_t upb_roundup_pow2(size_t bytes) {
return ret;
}
-UPB_NORETURN static void encode_err(upb_encstate* e) { UPB_LONGJMP(e->err, 1); }
+UPB_NORETURN static void encode_err(upb_encstate* e, upb_EncodeStatus s) {
+ UPB_LONGJMP(e->err, s);
+}
UPB_NOINLINE
static void encode_growbuffer(upb_encstate* e, size_t bytes) {
@@ -84,7 +87,7 @@ static void encode_growbuffer(upb_encstate* e, size_t bytes) {
size_t new_size = upb_roundup_pow2(bytes + (e->limit - e->ptr));
char* new_buf = upb_realloc(e->alloc, e->buf, old_size, new_size);
- if (!new_buf) encode_err(e);
+ if (!new_buf) encode_err(e, kUpb_EncodeStatus_OutOfMemory);
/* We want previous data at the end, realloc() put it at the beginning. */
if (old_size > 0) {
@@ -255,7 +258,7 @@ static void encode_scalar(upb_encstate* e, const void* _field_mem,
if (submsg == NULL) {
return;
}
- if (--e->depth == 0) encode_err(e);
+ if (--e->depth == 0) encode_err(e, kUpb_EncodeStatus_MaxDepthExceeded);
encode_tag(e, f->number, kUpb_WireType_EndGroup);
encode_message(e, submsg, subm, &size);
wire_type = kUpb_WireType_StartGroup;
@@ -269,7 +272,7 @@ static void encode_scalar(upb_encstate* e, const void* _field_mem,
if (submsg == NULL) {
return;
}
- if (--e->depth == 0) encode_err(e);
+ if (--e->depth == 0) encode_err(e, kUpb_EncodeStatus_MaxDepthExceeded);
encode_message(e, submsg, subm, &size);
encode_varint(e, size);
wire_type = kUpb_WireType_Delimited;
@@ -288,7 +291,7 @@ static void encode_array(upb_encstate* e, const upb_Message* msg,
const upb_MiniTable_Sub* subs,
const upb_MiniTable_Field* f) {
const upb_Array* arr = *UPB_PTR_AT(msg, f->offset, upb_Array*);
- bool packed = f->mode & upb_LabelFlags_IsPacked;
+ bool packed = f->mode & kUpb_LabelFlags_IsPacked;
size_t pre_len = e->limit - e->ptr;
if (arr == NULL || arr->len == 0) {
@@ -355,7 +358,7 @@ static void encode_array(upb_encstate* e, const upb_Message* msg,
const void* const* start = _upb_array_constptr(arr);
const void* const* ptr = start + arr->len;
const upb_MiniTable* subm = subs[f->submsg_index].submsg;
- if (--e->depth == 0) encode_err(e);
+ if (--e->depth == 0) encode_err(e, kUpb_EncodeStatus_MaxDepthExceeded);
do {
size_t size;
ptr--;
@@ -370,7 +373,7 @@ static void encode_array(upb_encstate* e, const upb_Message* msg,
const void* const* start = _upb_array_constptr(arr);
const void* const* ptr = start + arr->len;
const upb_MiniTable* subm = subs[f->submsg_index].submsg;
- if (--e->depth == 0) encode_err(e);
+ if (--e->depth == 0) encode_err(e, kUpb_EncodeStatus_MaxDepthExceeded);
do {
size_t size;
ptr--;
@@ -413,7 +416,7 @@ static void encode_map(upb_encstate* e, const upb_Message* msg,
if (map == NULL) return;
- if (e->options & kUpb_Encode_Deterministic) {
+ if (e->options & kUpb_EncodeOption_Deterministic) {
_upb_sortedmap sorted;
_upb_mapsorter_pushmap(&e->sorter, layout->fields[0].descriptortype, map,
&sorted);
@@ -442,23 +445,29 @@ static bool encode_shouldencode(upb_encstate* e, const upb_Message* msg,
if (f->presence == 0) {
/* Proto3 presence or map/array. */
const void* mem = UPB_PTR_AT(msg, f->offset, void);
- switch (f->mode >> upb_FieldRep_Shift) {
- case upb_FieldRep_1Byte: {
+ switch (f->mode >> kUpb_FieldRep_Shift) {
+ case kUpb_FieldRep_1Byte: {
char ch;
memcpy(&ch, mem, 1);
return ch != 0;
}
- case upb_FieldRep_4Byte: {
+#if UINTPTR_MAX == 0xffffffff
+ case kUpb_FieldRep_Pointer:
+#endif
+ case kUpb_FieldRep_4Byte: {
uint32_t u32;
memcpy(&u32, mem, 4);
return u32 != 0;
}
- case upb_FieldRep_8Byte: {
+#if UINTPTR_MAX != 0xffffffff
+ case kUpb_FieldRep_Pointer:
+#endif
+ case kUpb_FieldRep_8Byte: {
uint64_t u64;
memcpy(&u64, mem, 8);
return u64 != 0;
}
- case upb_FieldRep_StringView: {
+ case kUpb_FieldRep_StringView: {
const upb_StringView* str = (const upb_StringView*)mem;
return str->size != 0;
}
@@ -514,16 +523,16 @@ static void encode_message(upb_encstate* e, const upb_Message* msg,
const upb_MiniTable* m, size_t* size) {
size_t pre_len = e->limit - e->ptr;
- if ((e->options & kUpb_Encode_CheckRequired) && m->required_count) {
+ if ((e->options & kUpb_EncodeOption_CheckRequired) && m->required_count) {
uint64_t msg_head;
memcpy(&msg_head, msg, 8);
msg_head = _upb_BigEndian_Swap64(msg_head);
if (upb_MiniTable_requiredmask(m) & ~msg_head) {
- encode_err(e);
+ encode_err(e, kUpb_EncodeStatus_MissingRequired);
}
}
- if ((e->options & kUpb_Encode_SkipUnknown) == 0) {
+ if ((e->options & kUpb_EncodeOption_SkipUnknown) == 0) {
size_t unknown_size;
const char* unknown = upb_Message_GetUnknown(msg, &unknown_size);
@@ -532,7 +541,7 @@ static void encode_message(upb_encstate* e, const upb_Message* msg,
}
}
- if (m->ext != upb_ExtMode_NonExtendable) {
+ if (m->ext != kUpb_ExtMode_NonExtendable) {
/* Encode all extensions together. Unlike C++, we do not attempt to keep
* these in field number order relative to normal fields or even to each
* other. */
@@ -541,7 +550,7 @@ static void encode_message(upb_encstate* e, const upb_Message* msg,
if (ext_count) {
const upb_Message_Extension* end = ext + ext_count;
for (; ext != end; ext++) {
- if (UPB_UNLIKELY(m->ext == upb_ExtMode_IsMessageSet)) {
+ if (UPB_UNLIKELY(m->ext == kUpb_ExtMode_IsMessageSet)) {
encode_msgset_item(e, ext);
} else {
encode_field(e, &ext->data, &ext->ext->sub, &ext->ext->field);
@@ -564,8 +573,9 @@ static void encode_message(upb_encstate* e, const upb_Message* msg,
*size = (e->limit - e->ptr) - pre_len;
}
-char* upb_Encode(const void* msg, const upb_MiniTable* l, int options,
- upb_Arena* arena, size_t* size) {
+upb_EncodeStatus upb_Encode(const void* msg, const upb_MiniTable* l,
+ int options, upb_Arena* arena, char** buf,
+ size_t* size) {
upb_encstate e;
unsigned depth = (unsigned)options >> 16;
@@ -576,23 +586,28 @@ char* upb_Encode(const void* msg, const upb_MiniTable* l, int options,
e.depth = depth ? depth : 64;
e.options = options;
_upb_mapsorter_init(&e.sorter);
- char* ret = NULL;
- if (UPB_SETJMP(e.err)) {
- *size = 0;
- ret = NULL;
- } else {
+ upb_EncodeStatus status = UPB_SETJMP(e.err);
+
+ // Unfortunately we must continue to perform hackery here because there are
+ // code paths which blindly copy the returned pointer without bothering to
+ // check for errors until much later (b/235839510). So we still set *buf to
+ // NULL on error and we still set it to non-NULL on a successful empty result.
+ if (status == kUpb_EncodeStatus_Ok) {
encode_message(&e, msg, l, size);
*size = e.limit - e.ptr;
if (*size == 0) {
static char ch;
- ret = &ch;
+ *buf = &ch;
} else {
UPB_ASSERT(e.ptr);
- ret = e.ptr;
+ *buf = e.ptr;
}
+ } else {
+ *buf = NULL;
+ *size = 0;
}
_upb_mapsorter_destroy(&e.sorter);
- return ret;
+ return status;
}
diff --git a/contrib/libs/grpc/third_party/upb/upb/encode.h b/contrib/libs/grpc/third_party/upb/upb/encode.h
index 906b6f0c35..791d84a74c 100644
--- a/contrib/libs/grpc/third_party/upb/upb/encode.h
+++ b/contrib/libs/grpc/third_party/upb/upb/encode.h
@@ -26,7 +26,7 @@
*/
/*
- * upb_Encode: parsing into a upb_Message using a upb_MiniTable.
+ * upb_Encode: parsing from a upb_Message using a upb_MiniTable.
*/
#ifndef UPB_ENCODE_H_
@@ -48,19 +48,29 @@ enum {
*
* If your proto contains maps, the encoder will need to malloc()/free()
* memory during encode. */
- kUpb_Encode_Deterministic = 1,
+ kUpb_EncodeOption_Deterministic = 1,
/* When set, unknown fields are not printed. */
- kUpb_Encode_SkipUnknown = 2,
+ kUpb_EncodeOption_SkipUnknown = 2,
/* When set, the encode will fail if any required fields are missing. */
- kUpb_Encode_CheckRequired = 4,
+ kUpb_EncodeOption_CheckRequired = 4,
};
#define UPB_ENCODE_MAXDEPTH(depth) ((depth) << 16)
-char* upb_Encode(const void* msg, const upb_MiniTable* l, int options,
- upb_Arena* arena, size_t* size);
+typedef enum {
+ kUpb_EncodeStatus_Ok = 0,
+ kUpb_EncodeStatus_OutOfMemory = 1, // Arena alloc failed
+ kUpb_EncodeStatus_MaxDepthExceeded = 2, // Exceeded UPB_ENCODE_MAXDEPTH
+
+ // kUpb_EncodeOption_CheckRequired failed but the parse otherwise succeeded.
+ kUpb_EncodeStatus_MissingRequired = 3,
+} upb_EncodeStatus;
+
+upb_EncodeStatus upb_Encode(const void* msg, const upb_MiniTable* l,
+ int options, upb_Arena* arena, char** buf,
+ size_t* size);
#include "upb/port_undef.inc"
diff --git a/contrib/libs/grpc/third_party/upb/upb/extension_registry.c b/contrib/libs/grpc/third_party/upb/upb/extension_registry.c
new file mode 100644
index 0000000000..921cf227dd
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/extension_registry.c
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "upb/extension_registry.h"
+
+#include "upb/internal/table.h"
+#include "upb/msg.h"
+#include "upb/msg_internal.h"
+
+// Must be last.
+#include "upb/port_def.inc"
+
+struct upb_ExtensionRegistry {
+ upb_Arena* arena;
+ upb_strtable exts; /* Key is upb_MiniTable* concatenated with fieldnum. */
+};
+
+#define EXTREG_KEY_SIZE (sizeof(upb_MiniTable*) + sizeof(uint32_t))
+
+static void extreg_key(char* buf, const upb_MiniTable* l, uint32_t fieldnum) {
+ memcpy(buf, &l, sizeof(l));
+ memcpy(buf + sizeof(l), &fieldnum, sizeof(fieldnum));
+}
+
+upb_ExtensionRegistry* upb_ExtensionRegistry_New(upb_Arena* arena) {
+ upb_ExtensionRegistry* r = upb_Arena_Malloc(arena, sizeof(*r));
+ if (!r) return NULL;
+ r->arena = arena;
+ if (!upb_strtable_init(&r->exts, 8, arena)) return NULL;
+ return r;
+}
+
+bool _upb_extreg_add(upb_ExtensionRegistry* r,
+ const upb_MiniTable_Extension** e, size_t count) {
+ char buf[EXTREG_KEY_SIZE];
+ const upb_MiniTable_Extension** start = e;
+ const upb_MiniTable_Extension** end = UPB_PTRADD(e, count);
+ for (; e < end; e++) {
+ const upb_MiniTable_Extension* ext = *e;
+ extreg_key(buf, ext->extendee, ext->field.number);
+ if (!upb_strtable_insert(&r->exts, buf, EXTREG_KEY_SIZE,
+ upb_value_constptr(ext), r->arena)) {
+ goto failure;
+ }
+ }
+ return true;
+
+failure:
+ /* Back out the entries previously added. */
+ for (end = e, e = start; e < end; e++) {
+ const upb_MiniTable_Extension* ext = *e;
+ extreg_key(buf, ext->extendee, ext->field.number);
+ upb_strtable_remove2(&r->exts, buf, EXTREG_KEY_SIZE, NULL);
+ }
+ return false;
+}
+
+const upb_MiniTable_Extension* _upb_extreg_get(const upb_ExtensionRegistry* r,
+ const upb_MiniTable* l,
+ uint32_t num) {
+ char buf[EXTREG_KEY_SIZE];
+ upb_value v;
+ extreg_key(buf, l, num);
+ if (upb_strtable_lookup2(&r->exts, buf, EXTREG_KEY_SIZE, &v)) {
+ return upb_value_getconstptr(v);
+ } else {
+ return NULL;
+ }
+}
diff --git a/contrib/libs/grpc/third_party/upb/upb/extension_registry.h b/contrib/libs/grpc/third_party/upb/upb/extension_registry.h
new file mode 100644
index 0000000000..0e0a4440ca
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/extension_registry.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef UPB_EXTENSION_REGISTRY_H_
+#define UPB_EXTENSION_REGISTRY_H_
+
+#include <stddef.h>
+
+#include "upb/upb.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Extension registry: a dynamic data structure that stores a map of:
+ * (upb_MiniTable, number) -> extension info
+ *
+ * upb_decode() uses upb_ExtensionRegistry to look up extensions while parsing
+ * binary format.
+ *
+ * upb_ExtensionRegistry is part of the mini-table (msglayout) family of
+ * objects. Like all mini-table objects, it is suitable for reflection-less
+ * builds that do not want to expose names into the binary.
+ *
+ * Unlike most mini-table types, upb_ExtensionRegistry requires dynamic memory
+ * allocation and dynamic initialization:
+ * * If reflection is being used, then upb_DefPool will construct an appropriate
+ * upb_ExtensionRegistry automatically.
+ * * For a mini-table only build, the user must manually construct the
+ * upb_ExtensionRegistry and populate it with all of the extensions the user
+ * cares about.
+ * * A third alternative is to manually unpack relevant extensions after the
+ * main parse is complete, similar to how Any works. This is perhaps the
+ * nicest solution from the perspective of reducing dependencies, avoiding
+ * dynamic memory allocation, and avoiding the need to parse uninteresting
+ * extensions. The downsides are:
+ * (1) parse errors are not caught during the main parse
+ * (2) the CPU hit of parsing comes during access, which could cause an
+ * undesirable stutter in application performance.
+ *
+ * Users cannot directly get or put into this map. Users can only add the
+ * extensions from a generated module and pass the extension registry to the
+ * binary decoder.
+ *
+ * A upb_DefPool provides a upb_ExtensionRegistry, so any users who use
+ * reflection do not need to populate a upb_ExtensionRegistry directly.
+ */
+
+struct upb_ExtensionRegistry;
+typedef struct upb_ExtensionRegistry upb_ExtensionRegistry;
+
+/* Creates a upb_ExtensionRegistry in the given arena. The arena must outlive
+ * any use of the extreg. */
+upb_ExtensionRegistry* upb_ExtensionRegistry_New(upb_Arena* arena);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* UPB_EXTENSION_REGISTRY_H_ */
diff --git a/contrib/libs/grpc/third_party/upb/upb/decode_internal.h b/contrib/libs/grpc/third_party/upb/upb/internal/decode.h
index 11bb9aa095..708874c9c7 100644
--- a/contrib/libs/grpc/third_party/upb/upb/decode_internal.h
+++ b/contrib/libs/grpc/third_party/upb/upb/internal/decode.h
@@ -30,15 +30,15 @@
* decode.c and decode_fast.c.
*/
-#ifndef UPB_DECODE_INT_H_
-#define UPB_DECODE_INT_H_
+#ifndef UPB_INTERNAL_DECODE_H_
+#define UPB_INTERNAL_DECODE_H_
#include <setjmp.h>
-#include "third_party/utf8_range/utf8_range.h"
#include "upb/decode.h"
+#include "upb/internal/upb.h"
#include "upb/msg_internal.h"
-#include "upb/upb_internal.h"
+#include "third_party/utf8_range/utf8_range.h"
/* Must be last. */
#include "upb/port_def.inc"
@@ -208,4 +208,4 @@ UPB_INLINE void decode_poplimit(upb_Decoder* d, const char* ptr,
#include "upb/port_undef.inc"
-#endif /* UPB_DECODE_INT_H_ */
+#endif /* UPB_INTERNAL_DECODE_H_ */
diff --git a/contrib/libs/grpc/third_party/upb/upb/table_internal.h b/contrib/libs/grpc/third_party/upb/upb/internal/table.h
index 9fb2d238cd..bc647be83f 100644
--- a/contrib/libs/grpc/third_party/upb/upb/table_internal.h
+++ b/contrib/libs/grpc/third_party/upb/upb/internal/table.h
@@ -44,8 +44,8 @@
* mode, we check this on insert and lookup.
*/
-#ifndef UPB_TABLE_H_
-#define UPB_TABLE_H_
+#ifndef UPB_INTERNAL_TABLE_H_
+#define UPB_INTERNAL_TABLE_H_
#include <stdint.h>
#include <string.h>
@@ -215,8 +215,8 @@ UPB_INLINE size_t upb_strtable_count(const upb_strtable* t) {
void upb_strtable_clear(upb_strtable* t);
/* Inserts the given key into the hashtable with the given value. The key must
- * not already exist in the hash table. For string tables, the key must be
- * NULL-terminated, and the table will make an internal copy of the key.
+ * not already exist in the hash table. For strtables, the key is not required
+ * to be NULL-terminated, and the table will make an internal copy of the key.
* Inttables must not insert a value of UINTPTR_MAX.
*
* If a table resize was required but memory allocation failed, false is
@@ -374,10 +374,12 @@ void upb_inttable_iter_setdone(upb_inttable_iter* i);
bool upb_inttable_iter_isequal(const upb_inttable_iter* i1,
const upb_inttable_iter* i2);
+uint32_t _upb_Hash(const void* p, size_t n, uint64_t seed);
+
#ifdef __cplusplus
} /* extern "C" */
#endif
#include "upb/port_undef.inc"
-#endif /* UPB_TABLE_H_ */
+#endif /* UPB_INTERNAL_TABLE_H_ */
diff --git a/contrib/libs/grpc/third_party/upb/upb/upb_internal.h b/contrib/libs/grpc/third_party/upb/upb/internal/upb.h
index 1eb166f7d3..cdc8bfc228 100644
--- a/contrib/libs/grpc/third_party/upb/upb/upb_internal.h
+++ b/contrib/libs/grpc/third_party/upb/upb/internal/upb.h
@@ -25,8 +25,8 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef UPB_INT_H_
-#define UPB_INT_H_
+#ifndef UPB_INTERNAL_UPB_H_
+#define UPB_INTERNAL_UPB_H_
#include "upb/upb.h"
@@ -65,4 +65,4 @@ enum { kUpb_RoundTripBufferSize = 32 };
void _upb_EncodeRoundTripDouble(double val, char* buf, size_t size);
void _upb_EncodeRoundTripFloat(float val, char* buf, size_t size);
-#endif /* UPB_INT_H_ */
+#endif /* UPB_INTERNAL_UPB_H_ */
diff --git a/contrib/libs/grpc/third_party/upb/upb/internal/vsnprintf_compat.h b/contrib/libs/grpc/third_party/upb/upb/internal/vsnprintf_compat.h
new file mode 100644
index 0000000000..a9d84bb6fe
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/internal/vsnprintf_compat.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef UPB_INTERNAL_VSNPRINTF_COMPAT_H_
+#define UPB_INTERNAL_VSNPRINTF_COMPAT_H_
+
+#include <stdio.h>
+
+// Must be last.
+#include "upb/port_def.inc"
+
+UPB_INLINE int _upb_vsnprintf(char* buf, size_t size, const char* fmt,
+ va_list ap) {
+#if defined(__MINGW64__) || defined(__MINGW32__) || defined(_MSC_VER)
+ // The msvc runtime has a non-conforming vsnprintf() that requires the
+ // following compatibility code to become conformant.
+ int n = -1;
+ if (size != 0) n = _vsnprintf_s(buf, size, _TRUNCATE, fmt, ap);
+ if (n == -1) n = _vscprintf(fmt, ap);
+ return n;
+#else
+ return vsnprintf(buf, size, fmt, ap);
+#endif
+}
+
+#include "upb/port_undef.inc"
+
+#endif // UPB_INTERNAL_VSNPRINTF_COMPAT_H_
diff --git a/contrib/libs/grpc/third_party/upb/upb/json_decode.c b/contrib/libs/grpc/third_party/upb/upb/json_decode.c
new file mode 100644
index 0000000000..4f79294ef8
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/json_decode.c
@@ -0,0 +1,1512 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "upb/json_decode.h"
+
+#include <errno.h>
+#include <float.h>
+#include <inttypes.h>
+#include <limits.h>
+#include <math.h>
+#include <setjmp.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "upb/encode.h"
+#include "upb/reflection.h"
+
+/* Special header, must be included last. */
+#include "upb/port_def.inc"
+
+typedef struct {
+ const char *ptr, *end;
+ upb_Arena* arena; /* TODO: should we have a tmp arena for tmp data? */
+ const upb_DefPool* symtab;
+ int depth;
+ upb_Status* status;
+ jmp_buf err;
+ int line;
+ const char* line_begin;
+ bool is_first;
+ int options;
+ const upb_FieldDef* debug_field;
+} jsondec;
+
+enum { JD_OBJECT, JD_ARRAY, JD_STRING, JD_NUMBER, JD_TRUE, JD_FALSE, JD_NULL };
+
+/* Forward declarations of mutually-recursive functions. */
+static void jsondec_wellknown(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m);
+static upb_MessageValue jsondec_value(jsondec* d, const upb_FieldDef* f);
+static void jsondec_wellknownvalue(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m);
+static void jsondec_object(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m);
+
+static bool jsondec_streql(upb_StringView str, const char* lit) {
+ return str.size == strlen(lit) && memcmp(str.data, lit, str.size) == 0;
+}
+
+static bool jsondec_isnullvalue(const upb_FieldDef* f) {
+ return upb_FieldDef_CType(f) == kUpb_CType_Enum &&
+ strcmp(upb_EnumDef_FullName(upb_FieldDef_EnumSubDef(f)),
+ "google.protobuf.NullValue") == 0;
+}
+
+static bool jsondec_isvalue(const upb_FieldDef* f) {
+ return (upb_FieldDef_CType(f) == kUpb_CType_Message &&
+ upb_MessageDef_WellKnownType(upb_FieldDef_MessageSubDef(f)) ==
+ kUpb_WellKnown_Value) ||
+ jsondec_isnullvalue(f);
+}
+
+UPB_NORETURN static void jsondec_err(jsondec* d, const char* msg) {
+ upb_Status_SetErrorFormat(d->status, "Error parsing JSON @%d:%d: %s", d->line,
+ (int)(d->ptr - d->line_begin), msg);
+ UPB_LONGJMP(d->err, 1);
+}
+
+UPB_PRINTF(2, 3)
+UPB_NORETURN static void jsondec_errf(jsondec* d, const char* fmt, ...) {
+ va_list argp;
+ upb_Status_SetErrorFormat(d->status, "Error parsing JSON @%d:%d: ", d->line,
+ (int)(d->ptr - d->line_begin));
+ va_start(argp, fmt);
+ upb_Status_VAppendErrorFormat(d->status, fmt, argp);
+ va_end(argp);
+ UPB_LONGJMP(d->err, 1);
+}
+
+static void jsondec_skipws(jsondec* d) {
+ while (d->ptr != d->end) {
+ switch (*d->ptr) {
+ case '\n':
+ d->line++;
+ d->line_begin = d->ptr;
+ /* Fallthrough. */
+ case '\r':
+ case '\t':
+ case ' ':
+ d->ptr++;
+ break;
+ default:
+ return;
+ }
+ }
+ jsondec_err(d, "Unexpected EOF");
+}
+
+static bool jsondec_tryparsech(jsondec* d, char ch) {
+ if (d->ptr == d->end || *d->ptr != ch) return false;
+ d->ptr++;
+ return true;
+}
+
+static void jsondec_parselit(jsondec* d, const char* lit) {
+ size_t avail = d->end - d->ptr;
+ size_t len = strlen(lit);
+ if (avail < len || memcmp(d->ptr, lit, len) != 0) {
+ jsondec_errf(d, "Expected: '%s'", lit);
+ }
+ d->ptr += len;
+}
+
+static void jsondec_wsch(jsondec* d, char ch) {
+ jsondec_skipws(d);
+ if (!jsondec_tryparsech(d, ch)) {
+ jsondec_errf(d, "Expected: '%c'", ch);
+ }
+}
+
+static void jsondec_true(jsondec* d) { jsondec_parselit(d, "true"); }
+static void jsondec_false(jsondec* d) { jsondec_parselit(d, "false"); }
+static void jsondec_null(jsondec* d) { jsondec_parselit(d, "null"); }
+
+static void jsondec_entrysep(jsondec* d) {
+ jsondec_skipws(d);
+ jsondec_parselit(d, ":");
+}
+
+static int jsondec_rawpeek(jsondec* d) {
+ switch (*d->ptr) {
+ case '{':
+ return JD_OBJECT;
+ case '[':
+ return JD_ARRAY;
+ case '"':
+ return JD_STRING;
+ case '-':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ return JD_NUMBER;
+ case 't':
+ return JD_TRUE;
+ case 'f':
+ return JD_FALSE;
+ case 'n':
+ return JD_NULL;
+ default:
+ jsondec_errf(d, "Unexpected character: '%c'", *d->ptr);
+ }
+}
+
+/* JSON object/array **********************************************************/
+
+/* These are used like so:
+ *
+ * jsondec_objstart(d);
+ * while (jsondec_objnext(d)) {
+ * ...
+ * }
+ * jsondec_objend(d) */
+
+static int jsondec_peek(jsondec* d) {
+ jsondec_skipws(d);
+ return jsondec_rawpeek(d);
+}
+
+static void jsondec_push(jsondec* d) {
+ if (--d->depth < 0) {
+ jsondec_err(d, "Recursion limit exceeded");
+ }
+ d->is_first = true;
+}
+
+static bool jsondec_seqnext(jsondec* d, char end_ch) {
+ bool is_first = d->is_first;
+ d->is_first = false;
+ jsondec_skipws(d);
+ if (*d->ptr == end_ch) return false;
+ if (!is_first) jsondec_parselit(d, ",");
+ return true;
+}
+
+static void jsondec_arrstart(jsondec* d) {
+ jsondec_push(d);
+ jsondec_wsch(d, '[');
+}
+
+static void jsondec_arrend(jsondec* d) {
+ d->depth++;
+ jsondec_wsch(d, ']');
+}
+
+static bool jsondec_arrnext(jsondec* d) { return jsondec_seqnext(d, ']'); }
+
+static void jsondec_objstart(jsondec* d) {
+ jsondec_push(d);
+ jsondec_wsch(d, '{');
+}
+
+static void jsondec_objend(jsondec* d) {
+ d->depth++;
+ jsondec_wsch(d, '}');
+}
+
+static bool jsondec_objnext(jsondec* d) {
+ if (!jsondec_seqnext(d, '}')) return false;
+ if (jsondec_peek(d) != JD_STRING) {
+ jsondec_err(d, "Object must start with string");
+ }
+ return true;
+}
+
+/* JSON number ****************************************************************/
+
+static bool jsondec_tryskipdigits(jsondec* d) {
+ const char* start = d->ptr;
+
+ while (d->ptr < d->end) {
+ if (*d->ptr < '0' || *d->ptr > '9') {
+ break;
+ }
+ d->ptr++;
+ }
+
+ return d->ptr != start;
+}
+
+static void jsondec_skipdigits(jsondec* d) {
+ if (!jsondec_tryskipdigits(d)) {
+ jsondec_err(d, "Expected one or more digits");
+ }
+}
+
+static double jsondec_number(jsondec* d) {
+ const char* start = d->ptr;
+
+ assert(jsondec_rawpeek(d) == JD_NUMBER);
+
+ /* Skip over the syntax of a number, as specified by JSON. */
+ if (*d->ptr == '-') d->ptr++;
+
+ if (jsondec_tryparsech(d, '0')) {
+ if (jsondec_tryskipdigits(d)) {
+ jsondec_err(d, "number cannot have leading zero");
+ }
+ } else {
+ jsondec_skipdigits(d);
+ }
+
+ if (d->ptr == d->end) goto parse;
+ if (jsondec_tryparsech(d, '.')) {
+ jsondec_skipdigits(d);
+ }
+ if (d->ptr == d->end) goto parse;
+
+ if (*d->ptr == 'e' || *d->ptr == 'E') {
+ d->ptr++;
+ if (d->ptr == d->end) {
+ jsondec_err(d, "Unexpected EOF in number");
+ }
+ if (*d->ptr == '+' || *d->ptr == '-') {
+ d->ptr++;
+ }
+ jsondec_skipdigits(d);
+ }
+
+parse:
+ /* Having verified the syntax of a JSON number, use strtod() to parse
+ * (strtod() accepts a superset of JSON syntax). */
+ errno = 0;
+ {
+ char* end;
+ double val = strtod(start, &end);
+ assert(end == d->ptr);
+
+ /* Currently the min/max-val conformance tests fail if we check this. Does
+ * this mean the conformance tests are wrong or strtod() is wrong, or
+ * something else? Investigate further. */
+ /*
+ if (errno == ERANGE) {
+ jsondec_err(d, "Number out of range");
+ }
+ */
+
+ if (val > DBL_MAX || val < -DBL_MAX) {
+ jsondec_err(d, "Number out of range");
+ }
+
+ return val;
+ }
+}
+
+/* JSON string ****************************************************************/
+
+static char jsondec_escape(jsondec* d) {
+ switch (*d->ptr++) {
+ case '"':
+ return '\"';
+ case '\\':
+ return '\\';
+ case '/':
+ return '/';
+ case 'b':
+ return '\b';
+ case 'f':
+ return '\f';
+ case 'n':
+ return '\n';
+ case 'r':
+ return '\r';
+ case 't':
+ return '\t';
+ default:
+ jsondec_err(d, "Invalid escape char");
+ }
+}
+
+static uint32_t jsondec_codepoint(jsondec* d) {
+ uint32_t cp = 0;
+ const char* end;
+
+ if (d->end - d->ptr < 4) {
+ jsondec_err(d, "EOF inside string");
+ }
+
+ end = d->ptr + 4;
+ while (d->ptr < end) {
+ char ch = *d->ptr++;
+ if (ch >= '0' && ch <= '9') {
+ ch -= '0';
+ } else if (ch >= 'a' && ch <= 'f') {
+ ch = ch - 'a' + 10;
+ } else if (ch >= 'A' && ch <= 'F') {
+ ch = ch - 'A' + 10;
+ } else {
+ jsondec_err(d, "Invalid hex digit");
+ }
+ cp = (cp << 4) | ch;
+ }
+
+ return cp;
+}
+
+/* Parses a \uXXXX unicode escape (possibly a surrogate pair). */
+static size_t jsondec_unicode(jsondec* d, char* out) {
+ uint32_t cp = jsondec_codepoint(d);
+ if (cp >= 0xd800 && cp <= 0xdbff) {
+ /* Surrogate pair: two 16-bit codepoints become a 32-bit codepoint. */
+ uint32_t high = cp;
+ uint32_t low;
+ jsondec_parselit(d, "\\u");
+ low = jsondec_codepoint(d);
+ if (low < 0xdc00 || low > 0xdfff) {
+ jsondec_err(d, "Invalid low surrogate");
+ }
+ cp = (high & 0x3ff) << 10;
+ cp |= (low & 0x3ff);
+ cp += 0x10000;
+ } else if (cp >= 0xdc00 && cp <= 0xdfff) {
+ jsondec_err(d, "Unpaired low surrogate");
+ }
+
+ /* Write to UTF-8 */
+ if (cp <= 0x7f) {
+ out[0] = cp;
+ return 1;
+ } else if (cp <= 0x07FF) {
+ out[0] = ((cp >> 6) & 0x1F) | 0xC0;
+ out[1] = ((cp >> 0) & 0x3F) | 0x80;
+ return 2;
+ } else if (cp <= 0xFFFF) {
+ out[0] = ((cp >> 12) & 0x0F) | 0xE0;
+ out[1] = ((cp >> 6) & 0x3F) | 0x80;
+ out[2] = ((cp >> 0) & 0x3F) | 0x80;
+ return 3;
+ } else if (cp < 0x10FFFF) {
+ out[0] = ((cp >> 18) & 0x07) | 0xF0;
+ out[1] = ((cp >> 12) & 0x3f) | 0x80;
+ out[2] = ((cp >> 6) & 0x3f) | 0x80;
+ out[3] = ((cp >> 0) & 0x3f) | 0x80;
+ return 4;
+ } else {
+ jsondec_err(d, "Invalid codepoint");
+ }
+}
+
+static void jsondec_resize(jsondec* d, char** buf, char** end, char** buf_end) {
+ size_t oldsize = *buf_end - *buf;
+ size_t len = *end - *buf;
+ size_t size = UPB_MAX(8, 2 * oldsize);
+
+ *buf = upb_Arena_Realloc(d->arena, *buf, len, size);
+ if (!*buf) jsondec_err(d, "Out of memory");
+
+ *end = *buf + len;
+ *buf_end = *buf + size;
+}
+
+static upb_StringView jsondec_string(jsondec* d) {
+ char* buf = NULL;
+ char* end = NULL;
+ char* buf_end = NULL;
+
+ jsondec_skipws(d);
+
+ if (*d->ptr++ != '"') {
+ jsondec_err(d, "Expected string");
+ }
+
+ while (d->ptr < d->end) {
+ char ch = *d->ptr++;
+
+ if (end == buf_end) {
+ jsondec_resize(d, &buf, &end, &buf_end);
+ }
+
+ switch (ch) {
+ case '"': {
+ upb_StringView ret;
+ ret.data = buf;
+ ret.size = end - buf;
+ *end = '\0'; /* Needed for possible strtod(). */
+ return ret;
+ }
+ case '\\':
+ if (d->ptr == d->end) goto eof;
+ if (*d->ptr == 'u') {
+ d->ptr++;
+ if (buf_end - end < 4) {
+ /* Allow space for maximum-sized code point (4 bytes). */
+ jsondec_resize(d, &buf, &end, &buf_end);
+ }
+ end += jsondec_unicode(d, end);
+ } else {
+ *end++ = jsondec_escape(d);
+ }
+ break;
+ default:
+ if ((unsigned char)*d->ptr < 0x20) {
+ jsondec_err(d, "Invalid char in JSON string");
+ }
+ *end++ = ch;
+ break;
+ }
+ }
+
+eof:
+ jsondec_err(d, "EOF inside string");
+}
+
+static void jsondec_skipval(jsondec* d) {
+ switch (jsondec_peek(d)) {
+ case JD_OBJECT:
+ jsondec_objstart(d);
+ while (jsondec_objnext(d)) {
+ jsondec_string(d);
+ jsondec_entrysep(d);
+ jsondec_skipval(d);
+ }
+ jsondec_objend(d);
+ break;
+ case JD_ARRAY:
+ jsondec_arrstart(d);
+ while (jsondec_arrnext(d)) {
+ jsondec_skipval(d);
+ }
+ jsondec_arrend(d);
+ break;
+ case JD_TRUE:
+ jsondec_true(d);
+ break;
+ case JD_FALSE:
+ jsondec_false(d);
+ break;
+ case JD_NULL:
+ jsondec_null(d);
+ break;
+ case JD_STRING:
+ jsondec_string(d);
+ break;
+ case JD_NUMBER:
+ jsondec_number(d);
+ break;
+ }
+}
+
+/* Base64 decoding for bytes fields. ******************************************/
+
+static unsigned int jsondec_base64_tablelookup(const char ch) {
+ /* Table includes the normal base64 chars plus the URL-safe variant. */
+ const signed char table[256] = {
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, 62 /*+*/, -1, 62 /*-*/, -1, 63 /*/ */, 52 /*0*/,
+ 53 /*1*/, 54 /*2*/, 55 /*3*/, 56 /*4*/, 57 /*5*/, 58 /*6*/, 59 /*7*/,
+ 60 /*8*/, 61 /*9*/, -1, -1, -1, -1, -1,
+ -1, -1, 0 /*A*/, 1 /*B*/, 2 /*C*/, 3 /*D*/, 4 /*E*/,
+ 5 /*F*/, 6 /*G*/, 07 /*H*/, 8 /*I*/, 9 /*J*/, 10 /*K*/, 11 /*L*/,
+ 12 /*M*/, 13 /*N*/, 14 /*O*/, 15 /*P*/, 16 /*Q*/, 17 /*R*/, 18 /*S*/,
+ 19 /*T*/, 20 /*U*/, 21 /*V*/, 22 /*W*/, 23 /*X*/, 24 /*Y*/, 25 /*Z*/,
+ -1, -1, -1, -1, 63 /*_*/, -1, 26 /*a*/,
+ 27 /*b*/, 28 /*c*/, 29 /*d*/, 30 /*e*/, 31 /*f*/, 32 /*g*/, 33 /*h*/,
+ 34 /*i*/, 35 /*j*/, 36 /*k*/, 37 /*l*/, 38 /*m*/, 39 /*n*/, 40 /*o*/,
+ 41 /*p*/, 42 /*q*/, 43 /*r*/, 44 /*s*/, 45 /*t*/, 46 /*u*/, 47 /*v*/,
+ 48 /*w*/, 49 /*x*/, 50 /*y*/, 51 /*z*/, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1};
+
+ /* Sign-extend return value so high bit will be set on any unexpected char. */
+ return table[(unsigned)ch];
+}
+
+static char* jsondec_partialbase64(jsondec* d, const char* ptr, const char* end,
+ char* out) {
+ int32_t val = -1;
+
+ switch (end - ptr) {
+ case 2:
+ val = jsondec_base64_tablelookup(ptr[0]) << 18 |
+ jsondec_base64_tablelookup(ptr[1]) << 12;
+ out[0] = val >> 16;
+ out += 1;
+ break;
+ case 3:
+ val = jsondec_base64_tablelookup(ptr[0]) << 18 |
+ jsondec_base64_tablelookup(ptr[1]) << 12 |
+ jsondec_base64_tablelookup(ptr[2]) << 6;
+ out[0] = val >> 16;
+ out[1] = (val >> 8) & 0xff;
+ out += 2;
+ break;
+ }
+
+ if (val < 0) {
+ jsondec_err(d, "Corrupt base64");
+ }
+
+ return out;
+}
+
+static size_t jsondec_base64(jsondec* d, upb_StringView str) {
+ /* We decode in place. This is safe because this is a new buffer (not
+ * aliasing the input) and because base64 decoding shrinks 4 bytes into 3. */
+ char* out = (char*)str.data;
+ const char* ptr = str.data;
+ const char* end = ptr + str.size;
+ const char* end4 = ptr + (str.size & -4); /* Round down to multiple of 4. */
+
+ for (; ptr < end4; ptr += 4, out += 3) {
+ int val = jsondec_base64_tablelookup(ptr[0]) << 18 |
+ jsondec_base64_tablelookup(ptr[1]) << 12 |
+ jsondec_base64_tablelookup(ptr[2]) << 6 |
+ jsondec_base64_tablelookup(ptr[3]) << 0;
+
+ if (val < 0) {
+ /* Junk chars or padding. Remove trailing padding, if any. */
+ if (end - ptr == 4 && ptr[3] == '=') {
+ if (ptr[2] == '=') {
+ end -= 2;
+ } else {
+ end -= 1;
+ }
+ }
+ break;
+ }
+
+ out[0] = val >> 16;
+ out[1] = (val >> 8) & 0xff;
+ out[2] = val & 0xff;
+ }
+
+ if (ptr < end) {
+ /* Process remaining chars. We do not require padding. */
+ out = jsondec_partialbase64(d, ptr, end, out);
+ }
+
+ return out - str.data;
+}
+
+/* Low-level integer parsing **************************************************/
+
+/* We use these hand-written routines instead of strto[u]l() because the "long
+ * long" variants aren't in c89. Also our version allows setting a ptr limit. */
+
+static const char* jsondec_buftouint64(jsondec* d, const char* ptr,
+ const char* end, uint64_t* val) {
+ uint64_t u64 = 0;
+ while (ptr < end) {
+ unsigned ch = *ptr - '0';
+ if (ch >= 10) break;
+ if (u64 > UINT64_MAX / 10 || u64 * 10 > UINT64_MAX - ch) {
+ jsondec_err(d, "Integer overflow");
+ }
+ u64 *= 10;
+ u64 += ch;
+ ptr++;
+ }
+
+ *val = u64;
+ return ptr;
+}
+
+static const char* jsondec_buftoint64(jsondec* d, const char* ptr,
+ const char* end, int64_t* val) {
+ bool neg = false;
+ uint64_t u64;
+
+ if (ptr != end && *ptr == '-') {
+ ptr++;
+ neg = true;
+ }
+
+ ptr = jsondec_buftouint64(d, ptr, end, &u64);
+ if (u64 > (uint64_t)INT64_MAX + neg) {
+ jsondec_err(d, "Integer overflow");
+ }
+
+ *val = neg ? -u64 : u64;
+ return ptr;
+}
+
+static uint64_t jsondec_strtouint64(jsondec* d, upb_StringView str) {
+ const char* end = str.data + str.size;
+ uint64_t ret;
+ if (jsondec_buftouint64(d, str.data, end, &ret) != end) {
+ jsondec_err(d, "Non-number characters in quoted integer");
+ }
+ return ret;
+}
+
+static int64_t jsondec_strtoint64(jsondec* d, upb_StringView str) {
+ const char* end = str.data + str.size;
+ int64_t ret;
+ if (jsondec_buftoint64(d, str.data, end, &ret) != end) {
+ jsondec_err(d, "Non-number characters in quoted integer");
+ }
+ return ret;
+}
+
+/* Primitive value types ******************************************************/
+
+/* Parse INT32 or INT64 value. */
+static upb_MessageValue jsondec_int(jsondec* d, const upb_FieldDef* f) {
+ upb_MessageValue val;
+
+ switch (jsondec_peek(d)) {
+ case JD_NUMBER: {
+ double dbl = jsondec_number(d);
+ if (dbl > 9223372036854774784.0 || dbl < -9223372036854775808.0) {
+ jsondec_err(d, "JSON number is out of range.");
+ }
+ val.int64_val = dbl; /* must be guarded, overflow here is UB */
+ if (val.int64_val != dbl) {
+ jsondec_errf(d, "JSON number was not integral (%f != %" PRId64 ")", dbl,
+ val.int64_val);
+ }
+ break;
+ }
+ case JD_STRING: {
+ upb_StringView str = jsondec_string(d);
+ val.int64_val = jsondec_strtoint64(d, str);
+ break;
+ }
+ default:
+ jsondec_err(d, "Expected number or string");
+ }
+
+ if (upb_FieldDef_CType(f) == kUpb_CType_Int32 ||
+ upb_FieldDef_CType(f) == kUpb_CType_Enum) {
+ if (val.int64_val > INT32_MAX || val.int64_val < INT32_MIN) {
+ jsondec_err(d, "Integer out of range.");
+ }
+ val.int32_val = (int32_t)val.int64_val;
+ }
+
+ return val;
+}
+
+/* Parse UINT32 or UINT64 value. */
+static upb_MessageValue jsondec_uint(jsondec* d, const upb_FieldDef* f) {
+ upb_MessageValue val = {0};
+
+ switch (jsondec_peek(d)) {
+ case JD_NUMBER: {
+ double dbl = jsondec_number(d);
+ if (dbl > 18446744073709549568.0 || dbl < 0) {
+ jsondec_err(d, "JSON number is out of range.");
+ }
+ val.uint64_val = dbl; /* must be guarded, overflow here is UB */
+ if (val.uint64_val != dbl) {
+ jsondec_errf(d, "JSON number was not integral (%f != %" PRIu64 ")", dbl,
+ val.uint64_val);
+ }
+ break;
+ }
+ case JD_STRING: {
+ upb_StringView str = jsondec_string(d);
+ val.uint64_val = jsondec_strtouint64(d, str);
+ break;
+ }
+ default:
+ jsondec_err(d, "Expected number or string");
+ }
+
+ if (upb_FieldDef_CType(f) == kUpb_CType_UInt32) {
+ if (val.uint64_val > UINT32_MAX) {
+ jsondec_err(d, "Integer out of range.");
+ }
+ val.uint32_val = (uint32_t)val.uint64_val;
+ }
+
+ return val;
+}
+
+/* Parse DOUBLE or FLOAT value. */
+static upb_MessageValue jsondec_double(jsondec* d, const upb_FieldDef* f) {
+ upb_StringView str;
+ upb_MessageValue val = {0};
+
+ switch (jsondec_peek(d)) {
+ case JD_NUMBER:
+ val.double_val = jsondec_number(d);
+ break;
+ case JD_STRING:
+ str = jsondec_string(d);
+ if (jsondec_streql(str, "NaN")) {
+ val.double_val = NAN;
+ } else if (jsondec_streql(str, "Infinity")) {
+ val.double_val = INFINITY;
+ } else if (jsondec_streql(str, "-Infinity")) {
+ val.double_val = -INFINITY;
+ } else {
+ val.double_val = strtod(str.data, NULL);
+ }
+ break;
+ default:
+ jsondec_err(d, "Expected number or string");
+ }
+
+ if (upb_FieldDef_CType(f) == kUpb_CType_Float) {
+ if (val.double_val != INFINITY && val.double_val != -INFINITY &&
+ (val.double_val > FLT_MAX || val.double_val < -FLT_MAX)) {
+ jsondec_err(d, "Float out of range");
+ }
+ val.float_val = val.double_val;
+ }
+
+ return val;
+}
+
+/* Parse STRING or BYTES value. */
+static upb_MessageValue jsondec_strfield(jsondec* d, const upb_FieldDef* f) {
+ upb_MessageValue val;
+ val.str_val = jsondec_string(d);
+ if (upb_FieldDef_CType(f) == kUpb_CType_Bytes) {
+ val.str_val.size = jsondec_base64(d, val.str_val);
+ }
+ return val;
+}
+
+static upb_MessageValue jsondec_enum(jsondec* d, const upb_FieldDef* f) {
+ switch (jsondec_peek(d)) {
+ case JD_STRING: {
+ upb_StringView str = jsondec_string(d);
+ const upb_EnumDef* e = upb_FieldDef_EnumSubDef(f);
+ const upb_EnumValueDef* ev =
+ upb_EnumDef_FindValueByNameWithSize(e, str.data, str.size);
+ upb_MessageValue val;
+ if (ev) {
+ val.int32_val = upb_EnumValueDef_Number(ev);
+ } else {
+ if (d->options & upb_JsonDecode_IgnoreUnknown) {
+ val.int32_val = 0;
+ } else {
+ jsondec_errf(d, "Unknown enumerator: '" UPB_STRINGVIEW_FORMAT "'",
+ UPB_STRINGVIEW_ARGS(str));
+ }
+ }
+ return val;
+ }
+ case JD_NULL: {
+ if (jsondec_isnullvalue(f)) {
+ upb_MessageValue val;
+ jsondec_null(d);
+ val.int32_val = 0;
+ return val;
+ }
+ }
+ /* Fallthrough. */
+ default:
+ return jsondec_int(d, f);
+ }
+}
+
+static upb_MessageValue jsondec_bool(jsondec* d, const upb_FieldDef* f) {
+ bool is_map_key = upb_FieldDef_Number(f) == 1 &&
+ upb_MessageDef_IsMapEntry(upb_FieldDef_ContainingType(f));
+ upb_MessageValue val;
+
+ if (is_map_key) {
+ upb_StringView str = jsondec_string(d);
+ if (jsondec_streql(str, "true")) {
+ val.bool_val = true;
+ } else if (jsondec_streql(str, "false")) {
+ val.bool_val = false;
+ } else {
+ jsondec_err(d, "Invalid boolean map key");
+ }
+ } else {
+ switch (jsondec_peek(d)) {
+ case JD_TRUE:
+ val.bool_val = true;
+ jsondec_true(d);
+ break;
+ case JD_FALSE:
+ val.bool_val = false;
+ jsondec_false(d);
+ break;
+ default:
+ jsondec_err(d, "Expected true or false");
+ }
+ }
+
+ return val;
+}
+
+/* Composite types (array/message/map) ****************************************/
+
+static void jsondec_array(jsondec* d, upb_Message* msg, const upb_FieldDef* f) {
+ upb_Array* arr = upb_Message_Mutable(msg, f, d->arena).array;
+
+ jsondec_arrstart(d);
+ while (jsondec_arrnext(d)) {
+ upb_MessageValue elem = jsondec_value(d, f);
+ upb_Array_Append(arr, elem, d->arena);
+ }
+ jsondec_arrend(d);
+}
+
+static void jsondec_map(jsondec* d, upb_Message* msg, const upb_FieldDef* f) {
+ upb_Map* map = upb_Message_Mutable(msg, f, d->arena).map;
+ const upb_MessageDef* entry = upb_FieldDef_MessageSubDef(f);
+ const upb_FieldDef* key_f = upb_MessageDef_FindFieldByNumber(entry, 1);
+ const upb_FieldDef* val_f = upb_MessageDef_FindFieldByNumber(entry, 2);
+
+ jsondec_objstart(d);
+ while (jsondec_objnext(d)) {
+ upb_MessageValue key, val;
+ key = jsondec_value(d, key_f);
+ jsondec_entrysep(d);
+ val = jsondec_value(d, val_f);
+ upb_Map_Set(map, key, val, d->arena);
+ }
+ jsondec_objend(d);
+}
+
+static void jsondec_tomsg(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m) {
+ if (upb_MessageDef_WellKnownType(m) == kUpb_WellKnown_Unspecified) {
+ jsondec_object(d, msg, m);
+ } else {
+ jsondec_wellknown(d, msg, m);
+ }
+}
+
+static upb_MessageValue jsondec_msg(jsondec* d, const upb_FieldDef* f) {
+ const upb_MessageDef* m = upb_FieldDef_MessageSubDef(f);
+ upb_Message* msg = upb_Message_New(m, d->arena);
+ upb_MessageValue val;
+
+ jsondec_tomsg(d, msg, m);
+ val.msg_val = msg;
+ return val;
+}
+
+static void jsondec_field(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m) {
+ upb_StringView name;
+ const upb_FieldDef* f;
+ const upb_FieldDef* preserved;
+
+ name = jsondec_string(d);
+ jsondec_entrysep(d);
+
+ if (name.size >= 2 && name.data[0] == '[' &&
+ name.data[name.size - 1] == ']') {
+ f = upb_DefPool_FindExtensionByNameWithSize(d->symtab, name.data + 1,
+ name.size - 2);
+ if (f && upb_FieldDef_ContainingType(f) != m) {
+ jsondec_errf(
+ d, "Extension %s extends message %s, but was seen in message %s",
+ upb_FieldDef_FullName(f),
+ upb_MessageDef_FullName(upb_FieldDef_ContainingType(f)),
+ upb_MessageDef_FullName(m));
+ }
+ } else {
+ f = upb_MessageDef_FindByJsonNameWithSize(m, name.data, name.size);
+ }
+
+ if (!f) {
+ if ((d->options & upb_JsonDecode_IgnoreUnknown) == 0) {
+ jsondec_errf(d, "No such field: " UPB_STRINGVIEW_FORMAT,
+ UPB_STRINGVIEW_ARGS(name));
+ }
+ jsondec_skipval(d);
+ return;
+ }
+
+ if (jsondec_peek(d) == JD_NULL && !jsondec_isvalue(f)) {
+ /* JSON "null" indicates a default value, so no need to set anything. */
+ jsondec_null(d);
+ return;
+ }
+
+ if (upb_FieldDef_RealContainingOneof(f) &&
+ upb_Message_WhichOneof(msg, upb_FieldDef_ContainingOneof(f))) {
+ jsondec_err(d, "More than one field for this oneof.");
+ }
+
+ preserved = d->debug_field;
+ d->debug_field = f;
+
+ if (upb_FieldDef_IsMap(f)) {
+ jsondec_map(d, msg, f);
+ } else if (upb_FieldDef_IsRepeated(f)) {
+ jsondec_array(d, msg, f);
+ } else if (upb_FieldDef_IsSubMessage(f)) {
+ upb_Message* submsg = upb_Message_Mutable(msg, f, d->arena).msg;
+ const upb_MessageDef* subm = upb_FieldDef_MessageSubDef(f);
+ jsondec_tomsg(d, submsg, subm);
+ } else {
+ upb_MessageValue val = jsondec_value(d, f);
+ upb_Message_Set(msg, f, val, d->arena);
+ }
+
+ d->debug_field = preserved;
+}
+
+static void jsondec_object(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m) {
+ jsondec_objstart(d);
+ while (jsondec_objnext(d)) {
+ jsondec_field(d, msg, m);
+ }
+ jsondec_objend(d);
+}
+
+static upb_MessageValue jsondec_value(jsondec* d, const upb_FieldDef* f) {
+ switch (upb_FieldDef_CType(f)) {
+ case kUpb_CType_Bool:
+ return jsondec_bool(d, f);
+ case kUpb_CType_Float:
+ case kUpb_CType_Double:
+ return jsondec_double(d, f);
+ case kUpb_CType_UInt32:
+ case kUpb_CType_UInt64:
+ return jsondec_uint(d, f);
+ case kUpb_CType_Int32:
+ case kUpb_CType_Int64:
+ return jsondec_int(d, f);
+ case kUpb_CType_String:
+ case kUpb_CType_Bytes:
+ return jsondec_strfield(d, f);
+ case kUpb_CType_Enum:
+ return jsondec_enum(d, f);
+ case kUpb_CType_Message:
+ return jsondec_msg(d, f);
+ default:
+ UPB_UNREACHABLE();
+ }
+}
+
+/* Well-known types ***********************************************************/
+
+static int jsondec_tsdigits(jsondec* d, const char** ptr, size_t digits,
+ const char* after) {
+ uint64_t val;
+ const char* p = *ptr;
+ const char* end = p + digits;
+ size_t after_len = after ? strlen(after) : 0;
+
+ UPB_ASSERT(digits <= 9); /* int can't overflow. */
+
+ if (jsondec_buftouint64(d, p, end, &val) != end ||
+ (after_len && memcmp(end, after, after_len) != 0)) {
+ jsondec_err(d, "Malformed timestamp");
+ }
+
+ UPB_ASSERT(val < INT_MAX);
+
+ *ptr = end + after_len;
+ return (int)val;
+}
+
+static int jsondec_nanos(jsondec* d, const char** ptr, const char* end) {
+ uint64_t nanos = 0;
+ const char* p = *ptr;
+
+ if (p != end && *p == '.') {
+ const char* nano_end = jsondec_buftouint64(d, p + 1, end, &nanos);
+ int digits = (int)(nano_end - p - 1);
+ int exp_lg10 = 9 - digits;
+ if (digits > 9) {
+ jsondec_err(d, "Too many digits for partial seconds");
+ }
+ while (exp_lg10--) nanos *= 10;
+ *ptr = nano_end;
+ }
+
+ UPB_ASSERT(nanos < INT_MAX);
+
+ return (int)nanos;
+}
+
+/* jsondec_epochdays(1970, 1, 1) == 1970-01-01 == 0. */
+int jsondec_epochdays(int y, int m, int d) {
+ const uint32_t year_base = 4800; /* Before min year, multiple of 400. */
+ const uint32_t m_adj = m - 3; /* March-based month. */
+ const uint32_t carry = m_adj > (uint32_t)m ? 1 : 0;
+ const uint32_t adjust = carry ? 12 : 0;
+ const uint32_t y_adj = y + year_base - carry;
+ const uint32_t month_days = ((m_adj + adjust) * 62719 + 769) / 2048;
+ const uint32_t leap_days = y_adj / 4 - y_adj / 100 + y_adj / 400;
+ return y_adj * 365 + leap_days + month_days + (d - 1) - 2472632;
+}
+
+static int64_t jsondec_unixtime(int y, int m, int d, int h, int min, int s) {
+ return (int64_t)jsondec_epochdays(y, m, d) * 86400 + h * 3600 + min * 60 + s;
+}
+
+static void jsondec_timestamp(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m) {
+ upb_MessageValue seconds;
+ upb_MessageValue nanos;
+ upb_StringView str = jsondec_string(d);
+ const char* ptr = str.data;
+ const char* end = ptr + str.size;
+
+ if (str.size < 20) goto malformed;
+
+ {
+ /* 1972-01-01T01:00:00 */
+ int year = jsondec_tsdigits(d, &ptr, 4, "-");
+ int mon = jsondec_tsdigits(d, &ptr, 2, "-");
+ int day = jsondec_tsdigits(d, &ptr, 2, "T");
+ int hour = jsondec_tsdigits(d, &ptr, 2, ":");
+ int min = jsondec_tsdigits(d, &ptr, 2, ":");
+ int sec = jsondec_tsdigits(d, &ptr, 2, NULL);
+
+ seconds.int64_val = jsondec_unixtime(year, mon, day, hour, min, sec);
+ }
+
+ nanos.int32_val = jsondec_nanos(d, &ptr, end);
+
+ {
+ /* [+-]08:00 or Z */
+ int ofs_hour = 0;
+ int ofs_min = 0;
+ bool neg = false;
+
+ if (ptr == end) goto malformed;
+
+ switch (*ptr++) {
+ case '-':
+ neg = true;
+ /* fallthrough */
+ case '+':
+ if ((end - ptr) != 5) goto malformed;
+ ofs_hour = jsondec_tsdigits(d, &ptr, 2, ":");
+ ofs_min = jsondec_tsdigits(d, &ptr, 2, NULL);
+ ofs_min = ((ofs_hour * 60) + ofs_min) * 60;
+ seconds.int64_val += (neg ? ofs_min : -ofs_min);
+ break;
+ case 'Z':
+ if (ptr != end) goto malformed;
+ break;
+ default:
+ goto malformed;
+ }
+ }
+
+ if (seconds.int64_val < -62135596800) {
+ jsondec_err(d, "Timestamp out of range");
+ }
+
+ upb_Message_Set(msg, upb_MessageDef_FindFieldByNumber(m, 1), seconds,
+ d->arena);
+ upb_Message_Set(msg, upb_MessageDef_FindFieldByNumber(m, 2), nanos, d->arena);
+ return;
+
+malformed:
+ jsondec_err(d, "Malformed timestamp");
+}
+
+static void jsondec_duration(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m) {
+ upb_MessageValue seconds;
+ upb_MessageValue nanos;
+ upb_StringView str = jsondec_string(d);
+ const char* ptr = str.data;
+ const char* end = ptr + str.size;
+ const int64_t max = (uint64_t)3652500 * 86400;
+
+ /* "3.000000001s", "3s", etc. */
+ ptr = jsondec_buftoint64(d, ptr, end, &seconds.int64_val);
+ nanos.int32_val = jsondec_nanos(d, &ptr, end);
+
+ if (end - ptr != 1 || *ptr != 's') {
+ jsondec_err(d, "Malformed duration");
+ }
+
+ if (seconds.int64_val < -max || seconds.int64_val > max) {
+ jsondec_err(d, "Duration out of range");
+ }
+
+ if (seconds.int64_val < 0) {
+ nanos.int32_val = -nanos.int32_val;
+ }
+
+ upb_Message_Set(msg, upb_MessageDef_FindFieldByNumber(m, 1), seconds,
+ d->arena);
+ upb_Message_Set(msg, upb_MessageDef_FindFieldByNumber(m, 2), nanos, d->arena);
+}
+
+static void jsondec_listvalue(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m) {
+ const upb_FieldDef* values_f = upb_MessageDef_FindFieldByNumber(m, 1);
+ const upb_MessageDef* value_m = upb_FieldDef_MessageSubDef(values_f);
+ upb_Array* values = upb_Message_Mutable(msg, values_f, d->arena).array;
+
+ jsondec_arrstart(d);
+ while (jsondec_arrnext(d)) {
+ upb_Message* value_msg = upb_Message_New(value_m, d->arena);
+ upb_MessageValue value;
+ value.msg_val = value_msg;
+ upb_Array_Append(values, value, d->arena);
+ jsondec_wellknownvalue(d, value_msg, value_m);
+ }
+ jsondec_arrend(d);
+}
+
+static void jsondec_struct(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m) {
+ const upb_FieldDef* fields_f = upb_MessageDef_FindFieldByNumber(m, 1);
+ const upb_MessageDef* entry_m = upb_FieldDef_MessageSubDef(fields_f);
+ const upb_FieldDef* value_f = upb_MessageDef_FindFieldByNumber(entry_m, 2);
+ const upb_MessageDef* value_m = upb_FieldDef_MessageSubDef(value_f);
+ upb_Map* fields = upb_Message_Mutable(msg, fields_f, d->arena).map;
+
+ jsondec_objstart(d);
+ while (jsondec_objnext(d)) {
+ upb_MessageValue key, value;
+ upb_Message* value_msg = upb_Message_New(value_m, d->arena);
+ key.str_val = jsondec_string(d);
+ value.msg_val = value_msg;
+ upb_Map_Set(fields, key, value, d->arena);
+ jsondec_entrysep(d);
+ jsondec_wellknownvalue(d, value_msg, value_m);
+ }
+ jsondec_objend(d);
+}
+
+static void jsondec_wellknownvalue(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m) {
+ upb_MessageValue val;
+ const upb_FieldDef* f;
+ upb_Message* submsg;
+
+ switch (jsondec_peek(d)) {
+ case JD_NUMBER:
+ /* double number_value = 2; */
+ f = upb_MessageDef_FindFieldByNumber(m, 2);
+ val.double_val = jsondec_number(d);
+ break;
+ case JD_STRING:
+ /* string string_value = 3; */
+ f = upb_MessageDef_FindFieldByNumber(m, 3);
+ val.str_val = jsondec_string(d);
+ break;
+ case JD_FALSE:
+ /* bool bool_value = 4; */
+ f = upb_MessageDef_FindFieldByNumber(m, 4);
+ val.bool_val = false;
+ jsondec_false(d);
+ break;
+ case JD_TRUE:
+ /* bool bool_value = 4; */
+ f = upb_MessageDef_FindFieldByNumber(m, 4);
+ val.bool_val = true;
+ jsondec_true(d);
+ break;
+ case JD_NULL:
+ /* NullValue null_value = 1; */
+ f = upb_MessageDef_FindFieldByNumber(m, 1);
+ val.int32_val = 0;
+ jsondec_null(d);
+ break;
+ /* Note: these cases return, because upb_Message_Mutable() is enough. */
+ case JD_OBJECT:
+ /* Struct struct_value = 5; */
+ f = upb_MessageDef_FindFieldByNumber(m, 5);
+ submsg = upb_Message_Mutable(msg, f, d->arena).msg;
+ jsondec_struct(d, submsg, upb_FieldDef_MessageSubDef(f));
+ return;
+ case JD_ARRAY:
+ /* ListValue list_value = 6; */
+ f = upb_MessageDef_FindFieldByNumber(m, 6);
+ submsg = upb_Message_Mutable(msg, f, d->arena).msg;
+ jsondec_listvalue(d, submsg, upb_FieldDef_MessageSubDef(f));
+ return;
+ default:
+ UPB_UNREACHABLE();
+ }
+
+ upb_Message_Set(msg, f, val, d->arena);
+}
+
+static upb_StringView jsondec_mask(jsondec* d, const char* buf,
+ const char* end) {
+ /* FieldMask fields grow due to inserted '_' characters, so we can't do the
+ * transform in place. */
+ const char* ptr = buf;
+ upb_StringView ret;
+ char* out;
+
+ ret.size = end - ptr;
+ while (ptr < end) {
+ ret.size += (*ptr >= 'A' && *ptr <= 'Z');
+ ptr++;
+ }
+
+ out = upb_Arena_Malloc(d->arena, ret.size);
+ ptr = buf;
+ ret.data = out;
+
+ while (ptr < end) {
+ char ch = *ptr++;
+ if (ch >= 'A' && ch <= 'Z') {
+ *out++ = '_';
+ *out++ = ch + 32;
+ } else if (ch == '_') {
+ jsondec_err(d, "field mask may not contain '_'");
+ } else {
+ *out++ = ch;
+ }
+ }
+
+ return ret;
+}
+
+static void jsondec_fieldmask(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m) {
+ /* repeated string paths = 1; */
+ const upb_FieldDef* paths_f = upb_MessageDef_FindFieldByNumber(m, 1);
+ upb_Array* arr = upb_Message_Mutable(msg, paths_f, d->arena).array;
+ upb_StringView str = jsondec_string(d);
+ const char* ptr = str.data;
+ const char* end = ptr + str.size;
+ upb_MessageValue val;
+
+ while (ptr < end) {
+ const char* elem_end = memchr(ptr, ',', end - ptr);
+ if (elem_end) {
+ val.str_val = jsondec_mask(d, ptr, elem_end);
+ ptr = elem_end + 1;
+ } else {
+ val.str_val = jsondec_mask(d, ptr, end);
+ ptr = end;
+ }
+ upb_Array_Append(arr, val, d->arena);
+ }
+}
+
+static void jsondec_anyfield(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m) {
+ if (upb_MessageDef_WellKnownType(m) == kUpb_WellKnown_Unspecified) {
+ /* For regular types: {"@type": "[user type]", "f1": <V1>, "f2": <V2>}
+ * where f1, f2, etc. are the normal fields of this type. */
+ jsondec_field(d, msg, m);
+ } else {
+ /* For well-known types: {"@type": "[well-known type]", "value": <X>}
+ * where <X> is whatever encoding the WKT normally uses. */
+ upb_StringView str = jsondec_string(d);
+ jsondec_entrysep(d);
+ if (!jsondec_streql(str, "value")) {
+ jsondec_err(d, "Key for well-known type must be 'value'");
+ }
+ jsondec_wellknown(d, msg, m);
+ }
+}
+
+static const upb_MessageDef* jsondec_typeurl(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m) {
+ const upb_FieldDef* type_url_f = upb_MessageDef_FindFieldByNumber(m, 1);
+ const upb_MessageDef* type_m;
+ upb_StringView type_url = jsondec_string(d);
+ const char* end = type_url.data + type_url.size;
+ const char* ptr = end;
+ upb_MessageValue val;
+
+ val.str_val = type_url;
+ upb_Message_Set(msg, type_url_f, val, d->arena);
+
+ /* Find message name after the last '/' */
+ while (ptr > type_url.data && *--ptr != '/') {
+ }
+
+ if (ptr == type_url.data || ptr == end) {
+ jsondec_err(d, "Type url must have at least one '/' and non-empty host");
+ }
+
+ ptr++;
+ type_m = upb_DefPool_FindMessageByNameWithSize(d->symtab, ptr, end - ptr);
+
+ if (!type_m) {
+ jsondec_err(d, "Type was not found");
+ }
+
+ return type_m;
+}
+
+static void jsondec_any(jsondec* d, upb_Message* msg, const upb_MessageDef* m) {
+ /* string type_url = 1;
+ * bytes value = 2; */
+ const upb_FieldDef* value_f = upb_MessageDef_FindFieldByNumber(m, 2);
+ upb_Message* any_msg;
+ const upb_MessageDef* any_m = NULL;
+ const char* pre_type_data = NULL;
+ const char* pre_type_end = NULL;
+ upb_MessageValue encoded;
+
+ jsondec_objstart(d);
+
+ /* Scan looking for "@type", which is not necessarily first. */
+ while (!any_m && jsondec_objnext(d)) {
+ const char* start = d->ptr;
+ upb_StringView name = jsondec_string(d);
+ jsondec_entrysep(d);
+ if (jsondec_streql(name, "@type")) {
+ any_m = jsondec_typeurl(d, msg, m);
+ if (pre_type_data) {
+ pre_type_end = start;
+ while (*pre_type_end != ',') pre_type_end--;
+ }
+ } else {
+ if (!pre_type_data) pre_type_data = start;
+ jsondec_skipval(d);
+ }
+ }
+
+ if (!any_m) {
+ jsondec_err(d, "Any object didn't contain a '@type' field");
+ }
+
+ any_msg = upb_Message_New(any_m, d->arena);
+
+ if (pre_type_data) {
+ size_t len = pre_type_end - pre_type_data + 1;
+ char* tmp = upb_Arena_Malloc(d->arena, len);
+ const char* saved_ptr = d->ptr;
+ const char* saved_end = d->end;
+ memcpy(tmp, pre_type_data, len - 1);
+ tmp[len - 1] = '}';
+ d->ptr = tmp;
+ d->end = tmp + len;
+ d->is_first = true;
+ while (jsondec_objnext(d)) {
+ jsondec_anyfield(d, any_msg, any_m);
+ }
+ d->ptr = saved_ptr;
+ d->end = saved_end;
+ }
+
+ while (jsondec_objnext(d)) {
+ jsondec_anyfield(d, any_msg, any_m);
+ }
+
+ jsondec_objend(d);
+
+ upb_EncodeStatus status =
+ upb_Encode(any_msg, upb_MessageDef_MiniTable(any_m), 0, d->arena,
+ (char**)&encoded.str_val.data, &encoded.str_val.size);
+ // TODO(b/235839510): We should fail gracefully here on a bad return status.
+ UPB_ASSERT(status == kUpb_EncodeStatus_Ok);
+ upb_Message_Set(msg, value_f, encoded, d->arena);
+}
+
+static void jsondec_wrapper(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m) {
+ const upb_FieldDef* value_f = upb_MessageDef_FindFieldByNumber(m, 1);
+ upb_MessageValue val = jsondec_value(d, value_f);
+ upb_Message_Set(msg, value_f, val, d->arena);
+}
+
+static void jsondec_wellknown(jsondec* d, upb_Message* msg,
+ const upb_MessageDef* m) {
+ switch (upb_MessageDef_WellKnownType(m)) {
+ case kUpb_WellKnown_Any:
+ jsondec_any(d, msg, m);
+ break;
+ case kUpb_WellKnown_FieldMask:
+ jsondec_fieldmask(d, msg, m);
+ break;
+ case kUpb_WellKnown_Duration:
+ jsondec_duration(d, msg, m);
+ break;
+ case kUpb_WellKnown_Timestamp:
+ jsondec_timestamp(d, msg, m);
+ break;
+ case kUpb_WellKnown_Value:
+ jsondec_wellknownvalue(d, msg, m);
+ break;
+ case kUpb_WellKnown_ListValue:
+ jsondec_listvalue(d, msg, m);
+ break;
+ case kUpb_WellKnown_Struct:
+ jsondec_struct(d, msg, m);
+ break;
+ case kUpb_WellKnown_DoubleValue:
+ case kUpb_WellKnown_FloatValue:
+ case kUpb_WellKnown_Int64Value:
+ case kUpb_WellKnown_UInt64Value:
+ case kUpb_WellKnown_Int32Value:
+ case kUpb_WellKnown_UInt32Value:
+ case kUpb_WellKnown_StringValue:
+ case kUpb_WellKnown_BytesValue:
+ case kUpb_WellKnown_BoolValue:
+ jsondec_wrapper(d, msg, m);
+ break;
+ default:
+ UPB_UNREACHABLE();
+ }
+}
+
+bool upb_JsonDecode(const char* buf, size_t size, upb_Message* msg,
+ const upb_MessageDef* m, const upb_DefPool* symtab,
+ int options, upb_Arena* arena, upb_Status* status) {
+ jsondec d;
+
+ if (size == 0) return true;
+
+ d.ptr = buf;
+ d.end = buf + size;
+ d.arena = arena;
+ d.symtab = symtab;
+ d.status = status;
+ d.options = options;
+ d.depth = 64;
+ d.line = 1;
+ d.line_begin = d.ptr;
+ d.debug_field = NULL;
+ d.is_first = false;
+
+ if (UPB_SETJMP(d.err)) return false;
+
+ jsondec_tomsg(&d, msg, m);
+ return true;
+}
diff --git a/contrib/libs/grpc/third_party/upb/upb/json_decode.h b/contrib/libs/grpc/third_party/upb/upb/json_decode.h
new file mode 100644
index 0000000000..848f4df33c
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/json_decode.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef UPB_JSONDECODE_H_
+#define UPB_JSONDECODE_H_
+
+#include "upb/def.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum { upb_JsonDecode_IgnoreUnknown = 1 };
+
+bool upb_JsonDecode(const char* buf, size_t size, upb_Message* msg,
+ const upb_MessageDef* m, const upb_DefPool* symtab,
+ int options, upb_Arena* arena, upb_Status* status);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* UPB_JSONDECODE_H_ */
diff --git a/contrib/libs/grpc/third_party/upb/upb/json_encode.c b/contrib/libs/grpc/third_party/upb/upb/json_encode.c
new file mode 100644
index 0000000000..e13c0f771d
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/json_encode.c
@@ -0,0 +1,780 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "upb/json_encode.h"
+
+#include <ctype.h>
+#include <float.h>
+#include <inttypes.h>
+#include <math.h>
+#include <setjmp.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "upb/decode.h"
+#include "upb/internal/upb.h"
+#include "upb/internal/vsnprintf_compat.h"
+#include "upb/reflection.h"
+
+/* Must be last. */
+#include "upb/port_def.inc"
+
+typedef struct {
+ char *buf, *ptr, *end;
+ size_t overflow;
+ int indent_depth;
+ int options;
+ const upb_DefPool* ext_pool;
+ jmp_buf err;
+ upb_Status* status;
+ upb_Arena* arena;
+} jsonenc;
+
+static void jsonenc_msg(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m);
+static void jsonenc_scalar(jsonenc* e, upb_MessageValue val,
+ const upb_FieldDef* f);
+static void jsonenc_msgfield(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m);
+static void jsonenc_msgfields(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m, bool first);
+static void jsonenc_value(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m);
+
+UPB_NORETURN static void jsonenc_err(jsonenc* e, const char* msg) {
+ upb_Status_SetErrorMessage(e->status, msg);
+ longjmp(e->err, 1);
+}
+
+UPB_PRINTF(2, 3)
+UPB_NORETURN static void jsonenc_errf(jsonenc* e, const char* fmt, ...) {
+ va_list argp;
+ va_start(argp, fmt);
+ upb_Status_VSetErrorFormat(e->status, fmt, argp);
+ va_end(argp);
+ longjmp(e->err, 1);
+}
+
+static upb_Arena* jsonenc_arena(jsonenc* e) {
+ /* Create lazily, since it's only needed for Any */
+ if (!e->arena) {
+ e->arena = upb_Arena_New();
+ }
+ return e->arena;
+}
+
+static void jsonenc_putbytes(jsonenc* e, const void* data, size_t len) {
+ size_t have = e->end - e->ptr;
+ if (UPB_LIKELY(have >= len)) {
+ memcpy(e->ptr, data, len);
+ e->ptr += len;
+ } else {
+ if (have) {
+ memcpy(e->ptr, data, have);
+ e->ptr += have;
+ }
+ e->overflow += (len - have);
+ }
+}
+
+static void jsonenc_putstr(jsonenc* e, const char* str) {
+ jsonenc_putbytes(e, str, strlen(str));
+}
+
+UPB_PRINTF(2, 3)
+static void jsonenc_printf(jsonenc* e, const char* fmt, ...) {
+ size_t n;
+ size_t have = e->end - e->ptr;
+ va_list args;
+
+ va_start(args, fmt);
+ n = _upb_vsnprintf(e->ptr, have, fmt, args);
+ va_end(args);
+
+ if (UPB_LIKELY(have > n)) {
+ e->ptr += n;
+ } else {
+ e->ptr = UPB_PTRADD(e->ptr, have);
+ e->overflow += (n - have);
+ }
+}
+
+static void jsonenc_nanos(jsonenc* e, int32_t nanos) {
+ int digits = 9;
+
+ if (nanos == 0) return;
+ if (nanos < 0 || nanos >= 1000000000) {
+ jsonenc_err(e, "error formatting timestamp as JSON: invalid nanos");
+ }
+
+ while (nanos % 1000 == 0) {
+ nanos /= 1000;
+ digits -= 3;
+ }
+
+ jsonenc_printf(e, ".%.*" PRId32, digits, nanos);
+}
+
+static void jsonenc_timestamp(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m) {
+ const upb_FieldDef* seconds_f = upb_MessageDef_FindFieldByNumber(m, 1);
+ const upb_FieldDef* nanos_f = upb_MessageDef_FindFieldByNumber(m, 2);
+ int64_t seconds = upb_Message_Get(msg, seconds_f).int64_val;
+ int32_t nanos = upb_Message_Get(msg, nanos_f).int32_val;
+ int L, N, I, J, K, hour, min, sec;
+
+ if (seconds < -62135596800) {
+ jsonenc_err(e,
+ "error formatting timestamp as JSON: minimum acceptable value "
+ "is 0001-01-01T00:00:00Z");
+ } else if (seconds > 253402300799) {
+ jsonenc_err(e,
+ "error formatting timestamp as JSON: maximum acceptable value "
+ "is 9999-12-31T23:59:59Z");
+ }
+
+ /* Julian Day -> Y/M/D, Algorithm from:
+ * Fliegel, H. F., and Van Flandern, T. C., "A Machine Algorithm for
+ * Processing Calendar Dates," Communications of the Association of
+ * Computing Machines, vol. 11 (1968), p. 657. */
+ seconds += 62135596800; // Ensure seconds is positive.
+ L = (int)(seconds / 86400) - 719162 + 68569 + 2440588;
+ N = 4 * L / 146097;
+ L = L - (146097 * N + 3) / 4;
+ I = 4000 * (L + 1) / 1461001;
+ L = L - 1461 * I / 4 + 31;
+ J = 80 * L / 2447;
+ K = L - 2447 * J / 80;
+ L = J / 11;
+ J = J + 2 - 12 * L;
+ I = 100 * (N - 49) + I + L;
+
+ sec = seconds % 60;
+ min = (seconds / 60) % 60;
+ hour = (seconds / 3600) % 24;
+
+ jsonenc_printf(e, "\"%04d-%02d-%02dT%02d:%02d:%02d", I, J, K, hour, min, sec);
+ jsonenc_nanos(e, nanos);
+ jsonenc_putstr(e, "Z\"");
+}
+
+static void jsonenc_duration(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m) {
+ const upb_FieldDef* seconds_f = upb_MessageDef_FindFieldByNumber(m, 1);
+ const upb_FieldDef* nanos_f = upb_MessageDef_FindFieldByNumber(m, 2);
+ int64_t seconds = upb_Message_Get(msg, seconds_f).int64_val;
+ int32_t nanos = upb_Message_Get(msg, nanos_f).int32_val;
+
+ if (seconds > 315576000000 || seconds < -315576000000 ||
+ (seconds < 0) != (nanos < 0)) {
+ jsonenc_err(e, "bad duration");
+ }
+
+ if (nanos < 0) {
+ nanos = -nanos;
+ }
+
+ jsonenc_printf(e, "\"%" PRId64, seconds);
+ jsonenc_nanos(e, nanos);
+ jsonenc_putstr(e, "s\"");
+}
+
+static void jsonenc_enum(int32_t val, const upb_FieldDef* f, jsonenc* e) {
+ const upb_EnumDef* e_def = upb_FieldDef_EnumSubDef(f);
+
+ if (strcmp(upb_EnumDef_FullName(e_def), "google.protobuf.NullValue") == 0) {
+ jsonenc_putstr(e, "null");
+ } else {
+ const upb_EnumValueDef* ev =
+ (e->options & upb_JsonEncode_FormatEnumsAsIntegers)
+ ? NULL
+ : upb_EnumDef_FindValueByNumber(e_def, val);
+
+ if (ev) {
+ jsonenc_printf(e, "\"%s\"", upb_EnumValueDef_Name(ev));
+ } else {
+ jsonenc_printf(e, "%" PRId32, val);
+ }
+ }
+}
+
+static void jsonenc_bytes(jsonenc* e, upb_StringView str) {
+ /* This is the regular base64, not the "web-safe" version. */
+ static const char base64[] =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+ const unsigned char* ptr = (unsigned char*)str.data;
+ const unsigned char* end = UPB_PTRADD(ptr, str.size);
+ char buf[4];
+
+ jsonenc_putstr(e, "\"");
+
+ while (end - ptr >= 3) {
+ buf[0] = base64[ptr[0] >> 2];
+ buf[1] = base64[((ptr[0] & 0x3) << 4) | (ptr[1] >> 4)];
+ buf[2] = base64[((ptr[1] & 0xf) << 2) | (ptr[2] >> 6)];
+ buf[3] = base64[ptr[2] & 0x3f];
+ jsonenc_putbytes(e, buf, 4);
+ ptr += 3;
+ }
+
+ switch (end - ptr) {
+ case 2:
+ buf[0] = base64[ptr[0] >> 2];
+ buf[1] = base64[((ptr[0] & 0x3) << 4) | (ptr[1] >> 4)];
+ buf[2] = base64[(ptr[1] & 0xf) << 2];
+ buf[3] = '=';
+ jsonenc_putbytes(e, buf, 4);
+ break;
+ case 1:
+ buf[0] = base64[ptr[0] >> 2];
+ buf[1] = base64[((ptr[0] & 0x3) << 4)];
+ buf[2] = '=';
+ buf[3] = '=';
+ jsonenc_putbytes(e, buf, 4);
+ break;
+ }
+
+ jsonenc_putstr(e, "\"");
+}
+
+static void jsonenc_stringbody(jsonenc* e, upb_StringView str) {
+ const char* ptr = str.data;
+ const char* end = UPB_PTRADD(ptr, str.size);
+
+ while (ptr < end) {
+ switch (*ptr) {
+ case '\n':
+ jsonenc_putstr(e, "\\n");
+ break;
+ case '\r':
+ jsonenc_putstr(e, "\\r");
+ break;
+ case '\t':
+ jsonenc_putstr(e, "\\t");
+ break;
+ case '\"':
+ jsonenc_putstr(e, "\\\"");
+ break;
+ case '\f':
+ jsonenc_putstr(e, "\\f");
+ break;
+ case '\b':
+ jsonenc_putstr(e, "\\b");
+ break;
+ case '\\':
+ jsonenc_putstr(e, "\\\\");
+ break;
+ default:
+ if ((uint8_t)*ptr < 0x20) {
+ jsonenc_printf(e, "\\u%04x", (int)(uint8_t)*ptr);
+ } else {
+ /* This could be a non-ASCII byte. We rely on the string being valid
+ * UTF-8. */
+ jsonenc_putbytes(e, ptr, 1);
+ }
+ break;
+ }
+ ptr++;
+ }
+}
+
+static void jsonenc_string(jsonenc* e, upb_StringView str) {
+ jsonenc_putstr(e, "\"");
+ jsonenc_stringbody(e, str);
+ jsonenc_putstr(e, "\"");
+}
+
+static bool upb_JsonEncode_HandleSpecialDoubles(jsonenc* e, double val) {
+ if (val == INFINITY) {
+ jsonenc_putstr(e, "\"Infinity\"");
+ } else if (val == -INFINITY) {
+ jsonenc_putstr(e, "\"-Infinity\"");
+ } else if (val != val) {
+ jsonenc_putstr(e, "\"NaN\"");
+ } else {
+ return false;
+ }
+ return true;
+}
+
+static void upb_JsonEncode_Double(jsonenc* e, double val) {
+ if (upb_JsonEncode_HandleSpecialDoubles(e, val)) return;
+ char buf[32];
+ _upb_EncodeRoundTripDouble(val, buf, sizeof(buf));
+ jsonenc_putstr(e, buf);
+}
+
+static void upb_JsonEncode_Float(jsonenc* e, float val) {
+ if (upb_JsonEncode_HandleSpecialDoubles(e, val)) return;
+ char buf[32];
+ _upb_EncodeRoundTripFloat(val, buf, sizeof(buf));
+ jsonenc_putstr(e, buf);
+}
+
+static void jsonenc_wrapper(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m) {
+ const upb_FieldDef* val_f = upb_MessageDef_FindFieldByNumber(m, 1);
+ upb_MessageValue val = upb_Message_Get(msg, val_f);
+ jsonenc_scalar(e, val, val_f);
+}
+
+static const upb_MessageDef* jsonenc_getanymsg(jsonenc* e,
+ upb_StringView type_url) {
+ /* Find last '/', if any. */
+ const char* end = type_url.data + type_url.size;
+ const char* ptr = end;
+ const upb_MessageDef* ret;
+
+ if (!e->ext_pool) {
+ jsonenc_err(e, "Tried to encode Any, but no symtab was provided");
+ }
+
+ if (type_url.size == 0) goto badurl;
+
+ while (true) {
+ if (--ptr == type_url.data) {
+ /* Type URL must contain at least one '/', with host before. */
+ goto badurl;
+ }
+ if (*ptr == '/') {
+ ptr++;
+ break;
+ }
+ }
+
+ ret = upb_DefPool_FindMessageByNameWithSize(e->ext_pool, ptr, end - ptr);
+
+ if (!ret) {
+ jsonenc_errf(e, "Couldn't find Any type: %.*s", (int)(end - ptr), ptr);
+ }
+
+ return ret;
+
+badurl:
+ jsonenc_errf(e, "Bad type URL: " UPB_STRINGVIEW_FORMAT,
+ UPB_STRINGVIEW_ARGS(type_url));
+}
+
+static void jsonenc_any(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m) {
+ const upb_FieldDef* type_url_f = upb_MessageDef_FindFieldByNumber(m, 1);
+ const upb_FieldDef* value_f = upb_MessageDef_FindFieldByNumber(m, 2);
+ upb_StringView type_url = upb_Message_Get(msg, type_url_f).str_val;
+ upb_StringView value = upb_Message_Get(msg, value_f).str_val;
+ const upb_MessageDef* any_m = jsonenc_getanymsg(e, type_url);
+ const upb_MiniTable* any_layout = upb_MessageDef_MiniTable(any_m);
+ upb_Arena* arena = jsonenc_arena(e);
+ upb_Message* any = upb_Message_New(any_m, arena);
+
+ if (upb_Decode(value.data, value.size, any, any_layout, NULL, 0, arena) !=
+ kUpb_DecodeStatus_Ok) {
+ jsonenc_err(e, "Error decoding message in Any");
+ }
+
+ jsonenc_putstr(e, "{\"@type\":");
+ jsonenc_string(e, type_url);
+
+ if (upb_MessageDef_WellKnownType(any_m) == kUpb_WellKnown_Unspecified) {
+ /* Regular messages: {"@type": "...","foo": 1, "bar": 2} */
+ jsonenc_msgfields(e, any, any_m, false);
+ } else {
+ /* Well-known type: {"@type": "...","value": <well-known encoding>} */
+ jsonenc_putstr(e, ",\"value\":");
+ jsonenc_msgfield(e, any, any_m);
+ }
+
+ jsonenc_putstr(e, "}");
+}
+
+static void jsonenc_putsep(jsonenc* e, const char* str, bool* first) {
+ if (*first) {
+ *first = false;
+ } else {
+ jsonenc_putstr(e, str);
+ }
+}
+
+static void jsonenc_fieldpath(jsonenc* e, upb_StringView path) {
+ const char* ptr = path.data;
+ const char* end = ptr + path.size;
+
+ while (ptr < end) {
+ char ch = *ptr;
+
+ if (ch >= 'A' && ch <= 'Z') {
+ jsonenc_err(e, "Field mask element may not have upper-case letter.");
+ } else if (ch == '_') {
+ if (ptr == end - 1 || *(ptr + 1) < 'a' || *(ptr + 1) > 'z') {
+ jsonenc_err(e, "Underscore must be followed by a lowercase letter.");
+ }
+ ch = *++ptr - 32;
+ }
+
+ jsonenc_putbytes(e, &ch, 1);
+ ptr++;
+ }
+}
+
+static void jsonenc_fieldmask(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m) {
+ const upb_FieldDef* paths_f = upb_MessageDef_FindFieldByNumber(m, 1);
+ const upb_Array* paths = upb_Message_Get(msg, paths_f).array_val;
+ bool first = true;
+ size_t i, n = 0;
+
+ if (paths) n = upb_Array_Size(paths);
+
+ jsonenc_putstr(e, "\"");
+
+ for (i = 0; i < n; i++) {
+ jsonenc_putsep(e, ",", &first);
+ jsonenc_fieldpath(e, upb_Array_Get(paths, i).str_val);
+ }
+
+ jsonenc_putstr(e, "\"");
+}
+
+static void jsonenc_struct(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m) {
+ const upb_FieldDef* fields_f = upb_MessageDef_FindFieldByNumber(m, 1);
+ const upb_Map* fields = upb_Message_Get(msg, fields_f).map_val;
+ const upb_MessageDef* entry_m = upb_FieldDef_MessageSubDef(fields_f);
+ const upb_FieldDef* value_f = upb_MessageDef_FindFieldByNumber(entry_m, 2);
+ size_t iter = kUpb_Map_Begin;
+ bool first = true;
+
+ jsonenc_putstr(e, "{");
+
+ if (fields) {
+ while (upb_MapIterator_Next(fields, &iter)) {
+ upb_MessageValue key = upb_MapIterator_Key(fields, iter);
+ upb_MessageValue val = upb_MapIterator_Value(fields, iter);
+
+ jsonenc_putsep(e, ",", &first);
+ jsonenc_string(e, key.str_val);
+ jsonenc_putstr(e, ":");
+ jsonenc_value(e, val.msg_val, upb_FieldDef_MessageSubDef(value_f));
+ }
+ }
+
+ jsonenc_putstr(e, "}");
+}
+
+static void jsonenc_listvalue(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m) {
+ const upb_FieldDef* values_f = upb_MessageDef_FindFieldByNumber(m, 1);
+ const upb_MessageDef* values_m = upb_FieldDef_MessageSubDef(values_f);
+ const upb_Array* values = upb_Message_Get(msg, values_f).array_val;
+ size_t i;
+ bool first = true;
+
+ jsonenc_putstr(e, "[");
+
+ if (values) {
+ const size_t size = upb_Array_Size(values);
+ for (i = 0; i < size; i++) {
+ upb_MessageValue elem = upb_Array_Get(values, i);
+
+ jsonenc_putsep(e, ",", &first);
+ jsonenc_value(e, elem.msg_val, values_m);
+ }
+ }
+
+ jsonenc_putstr(e, "]");
+}
+
+static void jsonenc_value(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m) {
+ /* TODO(haberman): do we want a reflection method to get oneof case? */
+ size_t iter = kUpb_Message_Begin;
+ const upb_FieldDef* f;
+ upb_MessageValue val;
+
+ if (!upb_Message_Next(msg, m, NULL, &f, &val, &iter)) {
+ jsonenc_err(e, "No value set in Value proto");
+ }
+
+ switch (upb_FieldDef_Number(f)) {
+ case 1:
+ jsonenc_putstr(e, "null");
+ break;
+ case 2:
+ upb_JsonEncode_Double(e, val.double_val);
+ break;
+ case 3:
+ jsonenc_string(e, val.str_val);
+ break;
+ case 4:
+ jsonenc_putstr(e, val.bool_val ? "true" : "false");
+ break;
+ case 5:
+ jsonenc_struct(e, val.msg_val, upb_FieldDef_MessageSubDef(f));
+ break;
+ case 6:
+ jsonenc_listvalue(e, val.msg_val, upb_FieldDef_MessageSubDef(f));
+ break;
+ }
+}
+
+static void jsonenc_msgfield(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m) {
+ switch (upb_MessageDef_WellKnownType(m)) {
+ case kUpb_WellKnown_Unspecified:
+ jsonenc_msg(e, msg, m);
+ break;
+ case kUpb_WellKnown_Any:
+ jsonenc_any(e, msg, m);
+ break;
+ case kUpb_WellKnown_FieldMask:
+ jsonenc_fieldmask(e, msg, m);
+ break;
+ case kUpb_WellKnown_Duration:
+ jsonenc_duration(e, msg, m);
+ break;
+ case kUpb_WellKnown_Timestamp:
+ jsonenc_timestamp(e, msg, m);
+ break;
+ case kUpb_WellKnown_DoubleValue:
+ case kUpb_WellKnown_FloatValue:
+ case kUpb_WellKnown_Int64Value:
+ case kUpb_WellKnown_UInt64Value:
+ case kUpb_WellKnown_Int32Value:
+ case kUpb_WellKnown_UInt32Value:
+ case kUpb_WellKnown_StringValue:
+ case kUpb_WellKnown_BytesValue:
+ case kUpb_WellKnown_BoolValue:
+ jsonenc_wrapper(e, msg, m);
+ break;
+ case kUpb_WellKnown_Value:
+ jsonenc_value(e, msg, m);
+ break;
+ case kUpb_WellKnown_ListValue:
+ jsonenc_listvalue(e, msg, m);
+ break;
+ case kUpb_WellKnown_Struct:
+ jsonenc_struct(e, msg, m);
+ break;
+ }
+}
+
+static void jsonenc_scalar(jsonenc* e, upb_MessageValue val,
+ const upb_FieldDef* f) {
+ switch (upb_FieldDef_CType(f)) {
+ case kUpb_CType_Bool:
+ jsonenc_putstr(e, val.bool_val ? "true" : "false");
+ break;
+ case kUpb_CType_Float:
+ upb_JsonEncode_Float(e, val.float_val);
+ break;
+ case kUpb_CType_Double:
+ upb_JsonEncode_Double(e, val.double_val);
+ break;
+ case kUpb_CType_Int32:
+ jsonenc_printf(e, "%" PRId32, val.int32_val);
+ break;
+ case kUpb_CType_UInt32:
+ jsonenc_printf(e, "%" PRIu32, val.uint32_val);
+ break;
+ case kUpb_CType_Int64:
+ jsonenc_printf(e, "\"%" PRId64 "\"", val.int64_val);
+ break;
+ case kUpb_CType_UInt64:
+ jsonenc_printf(e, "\"%" PRIu64 "\"", val.uint64_val);
+ break;
+ case kUpb_CType_String:
+ jsonenc_string(e, val.str_val);
+ break;
+ case kUpb_CType_Bytes:
+ jsonenc_bytes(e, val.str_val);
+ break;
+ case kUpb_CType_Enum:
+ jsonenc_enum(val.int32_val, f, e);
+ break;
+ case kUpb_CType_Message:
+ jsonenc_msgfield(e, val.msg_val, upb_FieldDef_MessageSubDef(f));
+ break;
+ }
+}
+
+static void jsonenc_mapkey(jsonenc* e, upb_MessageValue val,
+ const upb_FieldDef* f) {
+ jsonenc_putstr(e, "\"");
+
+ switch (upb_FieldDef_CType(f)) {
+ case kUpb_CType_Bool:
+ jsonenc_putstr(e, val.bool_val ? "true" : "false");
+ break;
+ case kUpb_CType_Int32:
+ jsonenc_printf(e, "%" PRId32, val.int32_val);
+ break;
+ case kUpb_CType_UInt32:
+ jsonenc_printf(e, "%" PRIu32, val.uint32_val);
+ break;
+ case kUpb_CType_Int64:
+ jsonenc_printf(e, "%" PRId64, val.int64_val);
+ break;
+ case kUpb_CType_UInt64:
+ jsonenc_printf(e, "%" PRIu64, val.uint64_val);
+ break;
+ case kUpb_CType_String:
+ jsonenc_stringbody(e, val.str_val);
+ break;
+ default:
+ UPB_UNREACHABLE();
+ }
+
+ jsonenc_putstr(e, "\":");
+}
+
+static void jsonenc_array(jsonenc* e, const upb_Array* arr,
+ const upb_FieldDef* f) {
+ size_t i;
+ size_t size = arr ? upb_Array_Size(arr) : 0;
+ bool first = true;
+
+ jsonenc_putstr(e, "[");
+
+ for (i = 0; i < size; i++) {
+ jsonenc_putsep(e, ",", &first);
+ jsonenc_scalar(e, upb_Array_Get(arr, i), f);
+ }
+
+ jsonenc_putstr(e, "]");
+}
+
+static void jsonenc_map(jsonenc* e, const upb_Map* map, const upb_FieldDef* f) {
+ const upb_MessageDef* entry = upb_FieldDef_MessageSubDef(f);
+ const upb_FieldDef* key_f = upb_MessageDef_FindFieldByNumber(entry, 1);
+ const upb_FieldDef* val_f = upb_MessageDef_FindFieldByNumber(entry, 2);
+ size_t iter = kUpb_Map_Begin;
+ bool first = true;
+
+ jsonenc_putstr(e, "{");
+
+ if (map) {
+ while (upb_MapIterator_Next(map, &iter)) {
+ jsonenc_putsep(e, ",", &first);
+ jsonenc_mapkey(e, upb_MapIterator_Key(map, iter), key_f);
+ jsonenc_scalar(e, upb_MapIterator_Value(map, iter), val_f);
+ }
+ }
+
+ jsonenc_putstr(e, "}");
+}
+
+static void jsonenc_fieldval(jsonenc* e, const upb_FieldDef* f,
+ upb_MessageValue val, bool* first) {
+ const char* name;
+
+ jsonenc_putsep(e, ",", first);
+
+ if (upb_FieldDef_IsExtension(f)) {
+ // TODO: For MessageSet, I would have expected this to print the message
+ // name here, but Python doesn't appear to do this. We should do more
+ // research here about what various implementations do.
+ jsonenc_printf(e, "\"[%s]\":", upb_FieldDef_FullName(f));
+ } else {
+ if (e->options & upb_JsonEncode_UseProtoNames) {
+ name = upb_FieldDef_Name(f);
+ } else {
+ name = upb_FieldDef_JsonName(f);
+ }
+ jsonenc_printf(e, "\"%s\":", name);
+ }
+
+ if (upb_FieldDef_IsMap(f)) {
+ jsonenc_map(e, val.map_val, f);
+ } else if (upb_FieldDef_IsRepeated(f)) {
+ jsonenc_array(e, val.array_val, f);
+ } else {
+ jsonenc_scalar(e, val, f);
+ }
+}
+
+static void jsonenc_msgfields(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m, bool first) {
+ upb_MessageValue val;
+ const upb_FieldDef* f;
+
+ if (e->options & upb_JsonEncode_EmitDefaults) {
+ /* Iterate over all fields. */
+ int i = 0;
+ int n = upb_MessageDef_FieldCount(m);
+ for (i = 0; i < n; i++) {
+ f = upb_MessageDef_Field(m, i);
+ if (!upb_FieldDef_HasPresence(f) || upb_Message_Has(msg, f)) {
+ jsonenc_fieldval(e, f, upb_Message_Get(msg, f), &first);
+ }
+ }
+ } else {
+ /* Iterate over non-empty fields. */
+ size_t iter = kUpb_Message_Begin;
+ while (upb_Message_Next(msg, m, e->ext_pool, &f, &val, &iter)) {
+ jsonenc_fieldval(e, f, val, &first);
+ }
+ }
+}
+
+static void jsonenc_msg(jsonenc* e, const upb_Message* msg,
+ const upb_MessageDef* m) {
+ jsonenc_putstr(e, "{");
+ jsonenc_msgfields(e, msg, m, true);
+ jsonenc_putstr(e, "}");
+}
+
+static size_t jsonenc_nullz(jsonenc* e, size_t size) {
+ size_t ret = e->ptr - e->buf + e->overflow;
+
+ if (size > 0) {
+ if (e->ptr == e->end) e->ptr--;
+ *e->ptr = '\0';
+ }
+
+ return ret;
+}
+
+size_t upb_JsonEncode(const upb_Message* msg, const upb_MessageDef* m,
+ const upb_DefPool* ext_pool, int options, char* buf,
+ size_t size, upb_Status* status) {
+ jsonenc e;
+
+ e.buf = buf;
+ e.ptr = buf;
+ e.end = UPB_PTRADD(buf, size);
+ e.overflow = 0;
+ e.options = options;
+ e.ext_pool = ext_pool;
+ e.status = status;
+ e.arena = NULL;
+
+ if (setjmp(e.err)) return -1;
+
+ jsonenc_msgfield(&e, msg, m);
+ if (e.arena) upb_Arena_Free(e.arena);
+ return jsonenc_nullz(&e, size);
+}
diff --git a/contrib/libs/grpc/third_party/upb/upb/json_encode.h b/contrib/libs/grpc/third_party/upb/upb/json_encode.h
new file mode 100644
index 0000000000..6e0cac3fc1
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/json_encode.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef UPB_JSONENCODE_H_
+#define UPB_JSONENCODE_H_
+
+#include "upb/def.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+ /* When set, emits 0/default values. TODO(haberman): proto3 only? */
+ upb_JsonEncode_EmitDefaults = 1 << 0,
+
+ /* When set, use normal (snake_case) field names instead of JSON (camelCase)
+ names. */
+ upb_JsonEncode_UseProtoNames = 1 << 1,
+
+ /* When set, emits enums as their integer values instead of as their names. */
+ upb_JsonEncode_FormatEnumsAsIntegers = 1 << 2
+};
+
+/* Encodes the given |msg| to JSON format. The message's reflection is given in
+ * |m|. The symtab in |symtab| is used to find extensions (if NULL, extensions
+ * will not be printed).
+ *
+ * Output is placed in the given buffer, and always NULL-terminated. The output
+ * size (excluding NULL) is returned. This means that a return value >= |size|
+ * implies that the output was truncated. (These are the same semantics as
+ * snprintf()). */
+size_t upb_JsonEncode(const upb_Message* msg, const upb_MessageDef* m,
+ const upb_DefPool* ext_pool, int options, char* buf,
+ size_t size, upb_Status* status);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* UPB_JSONENCODE_H_ */
diff --git a/contrib/libs/grpc/third_party/upb/upb/map.c b/contrib/libs/grpc/third_party/upb/upb/map.c
new file mode 100644
index 0000000000..d92776f546
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/map.c
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "upb/map.h"
+
+#include <string.h>
+
+#include "upb/internal/table.h"
+#include "upb/msg.h"
+#include "upb/port_def.inc"
+
+/* Strings/bytes are special-cased in maps. */
+static char _upb_CTypeo_mapsize[12] = {
+ 0,
+ 1, /* kUpb_CType_Bool */
+ 4, /* kUpb_CType_Float */
+ 4, /* kUpb_CType_Int32 */
+ 4, /* kUpb_CType_UInt32 */
+ 4, /* kUpb_CType_Enum */
+ sizeof(void*), /* kUpb_CType_Message */
+ 8, /* kUpb_CType_Double */
+ 8, /* kUpb_CType_Int64 */
+ 8, /* kUpb_CType_UInt64 */
+ 0, /* kUpb_CType_String */
+ 0, /* kUpb_CType_Bytes */
+};
+
+upb_Map* upb_Map_New(upb_Arena* a, upb_CType key_type, upb_CType value_type) {
+ return _upb_Map_New(a, _upb_CTypeo_mapsize[key_type],
+ _upb_CTypeo_mapsize[value_type]);
+}
+
+size_t upb_Map_Size(const upb_Map* map) { return _upb_Map_Size(map); }
+
+bool upb_Map_Get(const upb_Map* map, upb_MessageValue key,
+ upb_MessageValue* val) {
+ return _upb_Map_Get(map, &key, map->key_size, val, map->val_size);
+}
+
+void upb_Map_Clear(upb_Map* map) { _upb_Map_Clear(map); }
+
+upb_MapInsertStatus upb_Map_Insert(upb_Map* map, upb_MessageValue key,
+ upb_MessageValue val, upb_Arena* arena) {
+ return (upb_MapInsertStatus)_upb_Map_Insert(map, &key, map->key_size, &val,
+ map->val_size, arena);
+}
+
+bool upb_Map_Delete(upb_Map* map, upb_MessageValue key) {
+ return _upb_Map_Delete(map, &key, map->key_size);
+}
+
+bool upb_MapIterator_Next(const upb_Map* map, size_t* iter) {
+ return _upb_map_next(map, iter);
+}
+
+bool upb_MapIterator_Done(const upb_Map* map, size_t iter) {
+ upb_strtable_iter i;
+ UPB_ASSERT(iter != kUpb_Map_Begin);
+ i.t = &map->table;
+ i.index = iter;
+ return upb_strtable_done(&i);
+}
+
+/* Returns the key and value for this entry of the map. */
+upb_MessageValue upb_MapIterator_Key(const upb_Map* map, size_t iter) {
+ upb_strtable_iter i;
+ upb_MessageValue ret;
+ i.t = &map->table;
+ i.index = iter;
+ _upb_map_fromkey(upb_strtable_iter_key(&i), &ret, map->key_size);
+ return ret;
+}
+
+upb_MessageValue upb_MapIterator_Value(const upb_Map* map, size_t iter) {
+ upb_strtable_iter i;
+ upb_MessageValue ret;
+ i.t = &map->table;
+ i.index = iter;
+ _upb_map_fromvalue(upb_strtable_iter_value(&i), &ret, map->val_size);
+ return ret;
+}
+
+/* void upb_MapIterator_SetValue(upb_Map *map, size_t iter, upb_MessageValue
+ * value); */
diff --git a/contrib/libs/grpc/third_party/upb/upb/map.h b/contrib/libs/grpc/third_party/upb/upb/map.h
new file mode 100644
index 0000000000..8ee0ddd05e
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/map.h
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef UPB_MAP_H_
+#define UPB_MAP_H_
+
+#include "google/protobuf/descriptor.upb.h"
+#include "upb/message_value.h"
+
+// Must be last.
+#include "upb/port_def.inc"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Creates a new map on the given arena with the given key/value size. */
+upb_Map* upb_Map_New(upb_Arena* a, upb_CType key_type, upb_CType value_type);
+
+/* Returns the number of entries in the map. */
+size_t upb_Map_Size(const upb_Map* map);
+
+/* Stores a value for the given key into |*val| (or the zero value if the key is
+ * not present). Returns whether the key was present. The |val| pointer may be
+ * NULL, in which case the function tests whether the given key is present. */
+bool upb_Map_Get(const upb_Map* map, upb_MessageValue key,
+ upb_MessageValue* val);
+
+/* Removes all entries in the map. */
+void upb_Map_Clear(upb_Map* map);
+
+typedef enum {
+ // LINT.IfChange
+ kUpb_MapInsertStatus_Inserted = 0,
+ kUpb_MapInsertStatus_Replaced = 1,
+ kUpb_MapInsertStatus_OutOfMemory = 2,
+ // LINT.ThenChange(//depot/google3/third_party/upb/upb/msg_internal.h)
+} upb_MapInsertStatus;
+
+/* Sets the given key to the given value, returning whether the key was inserted
+ * or replaced. If the key was inserted, then any existing iterators will be
+ * invalidated. */
+upb_MapInsertStatus upb_Map_Insert(upb_Map* map, upb_MessageValue key,
+ upb_MessageValue val, upb_Arena* arena);
+
+/* Sets the given key to the given value. Returns false if memory allocation
+ * failed. If the key is newly inserted, then any existing iterators will be
+ * invalidated. */
+UPB_INLINE bool upb_Map_Set(upb_Map* map, upb_MessageValue key,
+ upb_MessageValue val, upb_Arena* arena) {
+ return upb_Map_Insert(map, key, val, arena) !=
+ kUpb_MapInsertStatus_OutOfMemory;
+}
+
+/* Deletes this key from the table. Returns true if the key was present. */
+bool upb_Map_Delete(upb_Map* map, upb_MessageValue key);
+
+/* Map iteration:
+ *
+ * size_t iter = kUpb_Map_Begin;
+ * while (upb_MapIterator_Next(map, &iter)) {
+ * upb_MessageValue key = upb_MapIterator_Key(map, iter);
+ * upb_MessageValue val = upb_MapIterator_Value(map, iter);
+ *
+ * // If mutating is desired.
+ * upb_MapIterator_SetValue(map, iter, value2);
+ * }
+ */
+
+/* Advances to the next entry. Returns false if no more entries are present. */
+bool upb_MapIterator_Next(const upb_Map* map, size_t* iter);
+
+/* Returns true if the iterator still points to a valid entry, or false if the
+ * iterator is past the last element. It is an error to call this function with
+ * kUpb_Map_Begin (you must call next() at least once first). */
+bool upb_MapIterator_Done(const upb_Map* map, size_t iter);
+
+/* Returns the key and value for this entry of the map. */
+upb_MessageValue upb_MapIterator_Key(const upb_Map* map, size_t iter);
+upb_MessageValue upb_MapIterator_Value(const upb_Map* map, size_t iter);
+
+/* Sets the value for this entry. The iterator must not be done, and the
+ * iterator must not have been initialized const. */
+void upb_MapIterator_SetValue(upb_Map* map, size_t iter,
+ upb_MessageValue value);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* UPB_MAP_H_ */
diff --git a/contrib/libs/grpc/third_party/upb/upb/message_value.h b/contrib/libs/grpc/third_party/upb/upb/message_value.h
new file mode 100644
index 0000000000..a08b90fc1e
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/message_value.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef UPB_MESSAGE_VALUE_H_
+#define UPB_MESSAGE_VALUE_H_
+
+#include "google/protobuf/descriptor.upb.h"
+#include "upb/port_def.inc"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Definitions commn to both upb_Array and upb_Map.
+
+typedef union {
+ bool bool_val;
+ float float_val;
+ double double_val;
+ int32_t int32_val;
+ int64_t int64_val;
+ uint32_t uint32_val;
+ uint64_t uint64_val;
+ const upb_Map* map_val;
+ const upb_Message* msg_val;
+ const upb_Array* array_val;
+ upb_StringView str_val;
+} upb_MessageValue;
+
+typedef union {
+ upb_Map* map;
+ upb_Message* msg;
+ upb_Array* array;
+} upb_MutableMessageValue;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* UPB_MESSAGE_VALUE_H_ */
diff --git a/contrib/libs/grpc/third_party/upb/upb/mini_table.c b/contrib/libs/grpc/third_party/upb/upb/mini_table.c
new file mode 100644
index 0000000000..cd53059738
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/mini_table.c
@@ -0,0 +1,1147 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "upb/mini_table.h"
+
+#include <inttypes.h>
+#include <setjmp.h>
+
+#include "upb/msg_internal.h"
+#include "upb/upb.h"
+
+// Must be last.
+#include "upb/port_def.inc"
+
+typedef enum {
+ kUpb_EncodedType_Double = 0,
+ kUpb_EncodedType_Float = 1,
+ kUpb_EncodedType_Fixed32 = 2,
+ kUpb_EncodedType_Fixed64 = 3,
+ kUpb_EncodedType_SFixed32 = 4,
+ kUpb_EncodedType_SFixed64 = 5,
+ kUpb_EncodedType_Int32 = 6,
+ kUpb_EncodedType_UInt32 = 7,
+ kUpb_EncodedType_SInt32 = 8,
+ kUpb_EncodedType_Int64 = 9,
+ kUpb_EncodedType_UInt64 = 10,
+ kUpb_EncodedType_SInt64 = 11,
+ kUpb_EncodedType_Enum = 12,
+ kUpb_EncodedType_Bool = 13,
+ kUpb_EncodedType_Bytes = 14,
+ kUpb_EncodedType_String = 15,
+ kUpb_EncodedType_Group = 16,
+ kUpb_EncodedType_Message = 17,
+
+ kUpb_EncodedType_RepeatedBase = 20,
+} upb_EncodedType;
+
+typedef enum {
+ kUpb_EncodedFieldModifier_FlipPacked = 1 << 0,
+ kUpb_EncodedFieldModifier_IsClosedEnum = 1 << 1,
+ // upb only.
+ kUpb_EncodedFieldModifier_IsProto3Singular = 1 << 2,
+ kUpb_EncodedFieldModifier_IsRequired = 1 << 3,
+} upb_EncodedFieldModifier;
+
+enum {
+ kUpb_EncodedValue_MinField = ' ',
+ kUpb_EncodedValue_MaxField = 'K',
+ kUpb_EncodedValue_MinModifier = 'L',
+ kUpb_EncodedValue_MaxModifier = '[',
+ kUpb_EncodedValue_End = '^',
+ kUpb_EncodedValue_MinSkip = '_',
+ kUpb_EncodedValue_MaxSkip = '~',
+ kUpb_EncodedValue_OneofSeparator = '~',
+ kUpb_EncodedValue_FieldSeparator = '|',
+ kUpb_EncodedValue_MinOneofField = ' ',
+ kUpb_EncodedValue_MaxOneofField = 'b',
+ kUpb_EncodedValue_MaxEnumMask = 'A',
+};
+
+char upb_ToBase92(int8_t ch) {
+ static const char kUpb_ToBase92[] = {
+ ' ', '!', '#', '$', '%', '&', '(', ')', '*', '+', ',', '-', '.', '/',
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=',
+ '>', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
+ 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
+ 'Z', '[', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
+ 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
+ 'w', 'x', 'y', 'z', '{', '|', '}', '~',
+ };
+
+ UPB_ASSERT(0 <= ch && ch < 92);
+ return kUpb_ToBase92[ch];
+}
+
+char upb_FromBase92(uint8_t ch) {
+ static const int8_t kUpb_FromBase92[] = {
+ 0, 1, -1, 2, 3, 4, 5, -1, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ };
+
+ if (' ' > ch || ch > '~') return -1;
+ return kUpb_FromBase92[ch - ' '];
+}
+
+bool upb_IsTypePackable(upb_FieldType type) {
+ // clang-format off
+ static const unsigned kUnpackableTypes =
+ (1 << kUpb_FieldType_String) |
+ (1 << kUpb_FieldType_Bytes) |
+ (1 << kUpb_FieldType_Message) |
+ (1 << kUpb_FieldType_Group);
+ // clang-format on
+ return (1 << type) & ~kUnpackableTypes;
+}
+
+/** upb_MtDataEncoder *********************************************************/
+
+typedef struct {
+ uint64_t present_values_mask;
+ uint32_t last_written_value;
+} upb_MtDataEncoderInternal_EnumState;
+
+typedef struct {
+ uint64_t msg_modifiers;
+ uint32_t last_field_num;
+ enum {
+ kUpb_OneofState_NotStarted,
+ kUpb_OneofState_StartedOneof,
+ kUpb_OneofState_EmittedOneofField,
+ } oneof_state;
+} upb_MtDataEncoderInternal_MsgState;
+
+typedef struct {
+ char* buf_start; // Only for checking kUpb_MtDataEncoder_MinSize.
+ union {
+ upb_MtDataEncoderInternal_EnumState enum_state;
+ upb_MtDataEncoderInternal_MsgState msg_state;
+ } state;
+} upb_MtDataEncoderInternal;
+
+static upb_MtDataEncoderInternal* upb_MtDataEncoder_GetInternal(
+ upb_MtDataEncoder* e, char* buf_start) {
+ UPB_ASSERT(sizeof(upb_MtDataEncoderInternal) <= sizeof(e->internal));
+ upb_MtDataEncoderInternal* ret = (upb_MtDataEncoderInternal*)e->internal;
+ ret->buf_start = buf_start;
+ return ret;
+}
+
+static char* upb_MtDataEncoder_Put(upb_MtDataEncoder* e, char* ptr, char ch) {
+ upb_MtDataEncoderInternal* in = (upb_MtDataEncoderInternal*)e->internal;
+ UPB_ASSERT(ptr - in->buf_start < kUpb_MtDataEncoder_MinSize);
+ if (ptr == e->end) return NULL;
+ *ptr++ = upb_ToBase92(ch);
+ return ptr;
+}
+
+static char* upb_MtDataEncoder_PutBase92Varint(upb_MtDataEncoder* e, char* ptr,
+ uint32_t val, int min, int max) {
+ int shift = _upb_Log2Ceiling(upb_FromBase92(max) - upb_FromBase92(min) + 1);
+ UPB_ASSERT(shift <= 6);
+ uint32_t mask = (1 << shift) - 1;
+ do {
+ uint32_t bits = val & mask;
+ ptr = upb_MtDataEncoder_Put(e, ptr, bits + upb_FromBase92(min));
+ if (!ptr) return NULL;
+ val >>= shift;
+ } while (val);
+ return ptr;
+}
+
+char* upb_MtDataEncoder_PutModifier(upb_MtDataEncoder* e, char* ptr,
+ uint64_t mod) {
+ if (mod) {
+ ptr = upb_MtDataEncoder_PutBase92Varint(e, ptr, mod,
+ kUpb_EncodedValue_MinModifier,
+ kUpb_EncodedValue_MaxModifier);
+ }
+ return ptr;
+}
+
+char* upb_MtDataEncoder_StartMessage(upb_MtDataEncoder* e, char* ptr,
+ uint64_t msg_mod) {
+ upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
+ in->state.msg_state.msg_modifiers = msg_mod;
+ in->state.msg_state.last_field_num = 0;
+ in->state.msg_state.oneof_state = kUpb_OneofState_NotStarted;
+ return upb_MtDataEncoder_PutModifier(e, ptr, msg_mod);
+}
+
+char* upb_MtDataEncoder_PutField(upb_MtDataEncoder* e, char* ptr,
+ upb_FieldType type, uint32_t field_num,
+ uint64_t field_mod) {
+ static const char kUpb_TypeToEncoded[] = {
+ [kUpb_FieldType_Double] = kUpb_EncodedType_Double,
+ [kUpb_FieldType_Float] = kUpb_EncodedType_Float,
+ [kUpb_FieldType_Int64] = kUpb_EncodedType_Int64,
+ [kUpb_FieldType_UInt64] = kUpb_EncodedType_UInt64,
+ [kUpb_FieldType_Int32] = kUpb_EncodedType_Int32,
+ [kUpb_FieldType_Fixed64] = kUpb_EncodedType_Fixed64,
+ [kUpb_FieldType_Fixed32] = kUpb_EncodedType_Fixed32,
+ [kUpb_FieldType_Bool] = kUpb_EncodedType_Bool,
+ [kUpb_FieldType_String] = kUpb_EncodedType_String,
+ [kUpb_FieldType_Group] = kUpb_EncodedType_Group,
+ [kUpb_FieldType_Message] = kUpb_EncodedType_Message,
+ [kUpb_FieldType_Bytes] = kUpb_EncodedType_Bytes,
+ [kUpb_FieldType_UInt32] = kUpb_EncodedType_UInt32,
+ [kUpb_FieldType_Enum] = kUpb_EncodedType_Enum,
+ [kUpb_FieldType_SFixed32] = kUpb_EncodedType_SFixed32,
+ [kUpb_FieldType_SFixed64] = kUpb_EncodedType_SFixed64,
+ [kUpb_FieldType_SInt32] = kUpb_EncodedType_SInt32,
+ [kUpb_FieldType_SInt64] = kUpb_EncodedType_SInt64,
+ };
+
+ upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
+ if (field_num <= in->state.msg_state.last_field_num) return NULL;
+ if (in->state.msg_state.last_field_num + 1 != field_num) {
+ // Put skip.
+ UPB_ASSERT(field_num > in->state.msg_state.last_field_num);
+ uint32_t skip = field_num - in->state.msg_state.last_field_num;
+ ptr = upb_MtDataEncoder_PutBase92Varint(
+ e, ptr, skip, kUpb_EncodedValue_MinSkip, kUpb_EncodedValue_MaxSkip);
+ if (!ptr) return NULL;
+ }
+ in->state.msg_state.last_field_num = field_num;
+
+ uint32_t encoded_modifiers = 0;
+
+ // Put field type.
+ if (type == kUpb_FieldType_Enum &&
+ !(field_mod & kUpb_FieldModifier_IsClosedEnum)) {
+ type = kUpb_FieldType_Int32;
+ }
+
+ int encoded_type = kUpb_TypeToEncoded[type];
+ if (field_mod & kUpb_FieldModifier_IsRepeated) {
+ // Repeated fields shift the type number up (unlike other modifiers which
+ // are bit flags).
+ encoded_type += kUpb_EncodedType_RepeatedBase;
+
+ if (upb_IsTypePackable(type)) {
+ bool field_is_packed = field_mod & kUpb_FieldModifier_IsPacked;
+ bool default_is_packed = in->state.msg_state.msg_modifiers &
+ kUpb_MessageModifier_DefaultIsPacked;
+ if (field_is_packed != default_is_packed) {
+ encoded_modifiers |= kUpb_EncodedFieldModifier_FlipPacked;
+ }
+ }
+ }
+ ptr = upb_MtDataEncoder_Put(e, ptr, encoded_type);
+ if (!ptr) return NULL;
+
+ if (field_mod & kUpb_FieldModifier_IsProto3Singular) {
+ encoded_modifiers |= kUpb_EncodedFieldModifier_IsProto3Singular;
+ }
+ if (field_mod & kUpb_FieldModifier_IsRequired) {
+ encoded_modifiers |= kUpb_EncodedFieldModifier_IsRequired;
+ }
+ return upb_MtDataEncoder_PutModifier(e, ptr, encoded_modifiers);
+}
+
+char* upb_MtDataEncoder_StartOneof(upb_MtDataEncoder* e, char* ptr) {
+ upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
+ if (in->state.msg_state.oneof_state == kUpb_OneofState_NotStarted) {
+ ptr = upb_MtDataEncoder_Put(e, ptr, upb_FromBase92(kUpb_EncodedValue_End));
+ } else {
+ ptr = upb_MtDataEncoder_Put(
+ e, ptr, upb_FromBase92(kUpb_EncodedValue_OneofSeparator));
+ }
+ in->state.msg_state.oneof_state = kUpb_OneofState_StartedOneof;
+ return ptr;
+}
+
+char* upb_MtDataEncoder_PutOneofField(upb_MtDataEncoder* e, char* ptr,
+ uint32_t field_num) {
+ upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
+ if (in->state.msg_state.oneof_state == kUpb_OneofState_EmittedOneofField) {
+ ptr = upb_MtDataEncoder_Put(
+ e, ptr, upb_FromBase92(kUpb_EncodedValue_FieldSeparator));
+ if (!ptr) return NULL;
+ }
+ ptr = upb_MtDataEncoder_PutBase92Varint(e, ptr, field_num, upb_ToBase92(0),
+ upb_ToBase92(63));
+ in->state.msg_state.oneof_state = kUpb_OneofState_EmittedOneofField;
+ return ptr;
+}
+
+void upb_MtDataEncoder_StartEnum(upb_MtDataEncoder* e) {
+ upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, NULL);
+ in->state.enum_state.present_values_mask = 0;
+ in->state.enum_state.last_written_value = 0;
+}
+
+static char* upb_MtDataEncoder_FlushDenseEnumMask(upb_MtDataEncoder* e,
+ char* ptr) {
+ upb_MtDataEncoderInternal* in = (upb_MtDataEncoderInternal*)e->internal;
+ ptr = upb_MtDataEncoder_Put(e, ptr, in->state.enum_state.present_values_mask);
+ in->state.enum_state.present_values_mask = 0;
+ in->state.enum_state.last_written_value += 5;
+ return ptr;
+}
+
+char* upb_MtDataEncoder_PutEnumValue(upb_MtDataEncoder* e, char* ptr,
+ uint32_t val) {
+ // TODO(b/229641772): optimize this encoding.
+ upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
+ UPB_ASSERT(val >= in->state.enum_state.last_written_value);
+ uint32_t delta = val - in->state.enum_state.last_written_value;
+ if (delta >= 5 && in->state.enum_state.present_values_mask) {
+ ptr = upb_MtDataEncoder_FlushDenseEnumMask(e, ptr);
+ if (!ptr) {
+ return NULL;
+ }
+ delta -= 5;
+ }
+
+ if (delta >= 5) {
+ ptr = upb_MtDataEncoder_PutBase92Varint(
+ e, ptr, delta, kUpb_EncodedValue_MinSkip, kUpb_EncodedValue_MaxSkip);
+ in->state.enum_state.last_written_value += delta;
+ delta = 0;
+ }
+
+ UPB_ASSERT((in->state.enum_state.present_values_mask >> delta) == 0);
+ in->state.enum_state.present_values_mask |= 1ULL << delta;
+ return ptr;
+}
+
+char* upb_MtDataEncoder_EndEnum(upb_MtDataEncoder* e, char* ptr) {
+ upb_MtDataEncoderInternal* in = upb_MtDataEncoder_GetInternal(e, ptr);
+ if (!in->state.enum_state.present_values_mask) return ptr;
+ return upb_MtDataEncoder_FlushDenseEnumMask(e, ptr);
+}
+
+const upb_MiniTable_Field* upb_MiniTable_FindFieldByNumber(
+ const upb_MiniTable* table, uint32_t number) {
+ int n = table->field_count;
+ for (int i = 0; i < n; i++) {
+ if (table->fields[i].number == number) {
+ return &table->fields[i];
+ }
+ }
+ return NULL;
+}
+
+/** Data decoder **************************************************************/
+
+// Note: we sort by this number when calculating layout order.
+typedef enum {
+ kUpb_LayoutItemType_OneofCase, // Oneof case.
+ kUpb_LayoutItemType_OneofField, // Oneof field data.
+ kUpb_LayoutItemType_Field, // Non-oneof field data.
+
+ kUpb_LayoutItemType_Max = kUpb_LayoutItemType_Field,
+} upb_LayoutItemType;
+
+#define kUpb_LayoutItem_IndexSentinel ((uint16_t)-1)
+
+typedef struct {
+ // Index of the corresponding field. When this is a oneof field, the field's
+ // offset will be the index of the next field in a linked list.
+ uint16_t field_index;
+ uint16_t offset;
+ upb_FieldRep rep;
+ upb_LayoutItemType type;
+} upb_LayoutItem;
+
+typedef struct {
+ upb_LayoutItem* data;
+ size_t size;
+ size_t capacity;
+} upb_LayoutItemVector;
+
+typedef struct {
+ const char* end;
+ upb_MiniTable* table;
+ upb_MiniTable_Field* fields;
+ upb_MiniTablePlatform platform;
+ upb_LayoutItemVector vec;
+ upb_Arena* arena;
+ upb_Status* status;
+ jmp_buf err;
+} upb_MtDecoder;
+
+UPB_PRINTF(2, 3)
+UPB_NORETURN static void upb_MtDecoder_ErrorFormat(upb_MtDecoder* d,
+ const char* fmt, ...) {
+ va_list argp;
+ upb_Status_SetErrorMessage(d->status, "Error building mini table: ");
+ va_start(argp, fmt);
+ upb_Status_VAppendErrorFormat(d->status, fmt, argp);
+ va_end(argp);
+ UPB_LONGJMP(d->err, 1);
+}
+
+static void upb_MtDecoder_CheckOutOfMemory(upb_MtDecoder* d, const void* ptr) {
+ if (!ptr) upb_MtDecoder_ErrorFormat(d, "Out of memory");
+}
+
+// In each field's offset, we temporarily store a presence classifier:
+enum PresenceClass {
+ kNoPresence = 0,
+ kHasbitPresence = 1,
+ kRequiredPresence = 2,
+ kOneofBase = 3,
+ // Negative values refer to a specific oneof with that number. Positive
+ // values >= kOneofBase indicate that this field is in a oneof, and specify
+ // the next field in this oneof's linked list.
+};
+
+static const char* upb_MiniTable_DecodeBase92Varint(upb_MtDecoder* d,
+ const char* ptr,
+ char first_ch, uint8_t min,
+ uint8_t max,
+ uint32_t* out_val) {
+ uint32_t val = 0;
+ uint32_t shift = 0;
+ const int bits_per_char =
+ _upb_Log2Ceiling(upb_FromBase92(max) - upb_FromBase92(min));
+ char ch = first_ch;
+ while (1) {
+ uint32_t bits = upb_FromBase92(ch) - upb_FromBase92(min);
+ UPB_ASSERT(shift < 32);
+ val |= bits << shift;
+ if (ptr == d->end || *ptr < min || max < *ptr) {
+ *out_val = val;
+ return ptr;
+ }
+ ch = *ptr++;
+ shift += bits_per_char;
+ }
+}
+
+static bool upb_MiniTable_HasSub(upb_MiniTable_Field* field,
+ uint64_t msg_modifiers) {
+ switch (field->descriptortype) {
+ case kUpb_FieldType_Message:
+ case kUpb_FieldType_Group:
+ case kUpb_FieldType_Enum:
+ return true;
+ case kUpb_FieldType_String:
+ if (!(msg_modifiers & kUpb_MessageModifier_ValidateUtf8)) {
+ field->descriptortype = kUpb_FieldType_Bytes;
+ }
+ return false;
+ default:
+ return false;
+ }
+}
+
+static bool upb_MtDecoder_FieldIsPackable(upb_MiniTable_Field* field) {
+ return (field->mode & kUpb_FieldMode_Array) &&
+ upb_IsTypePackable(field->descriptortype);
+}
+
+static void upb_MiniTable_SetTypeAndSub(upb_MiniTable_Field* field,
+ upb_FieldType type, uint32_t* sub_count,
+ uint64_t msg_modifiers) {
+ field->descriptortype = type;
+ if (upb_MiniTable_HasSub(field, msg_modifiers)) {
+ field->submsg_index = sub_count ? (*sub_count)++ : 0;
+ } else {
+ field->submsg_index = kUpb_NoSub;
+ }
+
+ if (upb_MtDecoder_FieldIsPackable(field) &&
+ (msg_modifiers & kUpb_MessageModifier_DefaultIsPacked)) {
+ field->mode |= kUpb_LabelFlags_IsPacked;
+ }
+}
+
+static void upb_MiniTable_SetField(upb_MtDecoder* d, uint8_t ch,
+ upb_MiniTable_Field* field,
+ uint64_t msg_modifiers,
+ uint32_t* sub_count) {
+ static const char kUpb_EncodedToFieldRep[] = {
+ [kUpb_EncodedType_Double] = kUpb_FieldRep_8Byte,
+ [kUpb_EncodedType_Float] = kUpb_FieldRep_4Byte,
+ [kUpb_EncodedType_Int64] = kUpb_FieldRep_8Byte,
+ [kUpb_EncodedType_UInt64] = kUpb_FieldRep_8Byte,
+ [kUpb_EncodedType_Int32] = kUpb_FieldRep_4Byte,
+ [kUpb_EncodedType_Fixed64] = kUpb_FieldRep_8Byte,
+ [kUpb_EncodedType_Fixed32] = kUpb_FieldRep_4Byte,
+ [kUpb_EncodedType_Bool] = kUpb_FieldRep_1Byte,
+ [kUpb_EncodedType_String] = kUpb_FieldRep_StringView,
+ [kUpb_EncodedType_Group] = kUpb_FieldRep_Pointer,
+ [kUpb_EncodedType_Message] = kUpb_FieldRep_Pointer,
+ [kUpb_EncodedType_Bytes] = kUpb_FieldRep_StringView,
+ [kUpb_EncodedType_UInt32] = kUpb_FieldRep_4Byte,
+ [kUpb_EncodedType_Enum] = kUpb_FieldRep_4Byte,
+ [kUpb_EncodedType_SFixed32] = kUpb_FieldRep_4Byte,
+ [kUpb_EncodedType_SFixed64] = kUpb_FieldRep_8Byte,
+ [kUpb_EncodedType_SInt32] = kUpb_FieldRep_4Byte,
+ [kUpb_EncodedType_SInt64] = kUpb_FieldRep_8Byte,
+ };
+
+ static const char kUpb_EncodedToType[] = {
+ [kUpb_EncodedType_Double] = kUpb_FieldType_Double,
+ [kUpb_EncodedType_Float] = kUpb_FieldType_Float,
+ [kUpb_EncodedType_Int64] = kUpb_FieldType_Int64,
+ [kUpb_EncodedType_UInt64] = kUpb_FieldType_UInt64,
+ [kUpb_EncodedType_Int32] = kUpb_FieldType_Int32,
+ [kUpb_EncodedType_Fixed64] = kUpb_FieldType_Fixed64,
+ [kUpb_EncodedType_Fixed32] = kUpb_FieldType_Fixed32,
+ [kUpb_EncodedType_Bool] = kUpb_FieldType_Bool,
+ [kUpb_EncodedType_String] = kUpb_FieldType_String,
+ [kUpb_EncodedType_Group] = kUpb_FieldType_Group,
+ [kUpb_EncodedType_Message] = kUpb_FieldType_Message,
+ [kUpb_EncodedType_Bytes] = kUpb_FieldType_Bytes,
+ [kUpb_EncodedType_UInt32] = kUpb_FieldType_UInt32,
+ [kUpb_EncodedType_Enum] = kUpb_FieldType_Enum,
+ [kUpb_EncodedType_SFixed32] = kUpb_FieldType_SFixed32,
+ [kUpb_EncodedType_SFixed64] = kUpb_FieldType_SFixed64,
+ [kUpb_EncodedType_SInt32] = kUpb_FieldType_SInt32,
+ [kUpb_EncodedType_SInt64] = kUpb_FieldType_SInt64,
+ };
+
+ int8_t type = upb_FromBase92(ch);
+ if (ch >= upb_ToBase92(kUpb_EncodedType_RepeatedBase)) {
+ type -= kUpb_EncodedType_RepeatedBase;
+ field->mode = kUpb_FieldMode_Array;
+ field->mode |= kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift;
+ field->offset = kNoPresence;
+ } else {
+ field->mode = kUpb_FieldMode_Scalar;
+ field->mode |= kUpb_EncodedToFieldRep[type] << kUpb_FieldRep_Shift;
+ field->offset = kHasbitPresence;
+ }
+ if (type >= 18) {
+ upb_MtDecoder_ErrorFormat(d, "Invalid field type: %d", (int)type);
+ UPB_UNREACHABLE();
+ }
+ upb_MiniTable_SetTypeAndSub(field, kUpb_EncodedToType[type], sub_count,
+ msg_modifiers);
+}
+
+static void upb_MtDecoder_ModifyField(upb_MtDecoder* d,
+ uint32_t message_modifiers,
+ uint32_t field_modifiers,
+ upb_MiniTable_Field* field) {
+ if (field_modifiers & kUpb_EncodedFieldModifier_FlipPacked) {
+ if (!upb_MtDecoder_FieldIsPackable(field)) {
+ upb_MtDecoder_ErrorFormat(
+ d, "Cannot flip packed on unpackable field %" PRIu32, field->number);
+ UPB_UNREACHABLE();
+ }
+ field->mode ^= kUpb_LabelFlags_IsPacked;
+ }
+
+ bool singular = field_modifiers & kUpb_EncodedFieldModifier_IsProto3Singular;
+ bool required = field_modifiers & kUpb_EncodedFieldModifier_IsRequired;
+
+ // Validate.
+ if ((singular || required) && field->offset != kHasbitPresence) {
+ upb_MtDecoder_ErrorFormat(
+ d, "Invalid modifier(s) for repeated field %" PRIu32, field->number);
+ UPB_UNREACHABLE();
+ }
+ if (singular && required) {
+ upb_MtDecoder_ErrorFormat(
+ d, "Field %" PRIu32 " cannot be both singular and required",
+ field->number);
+ UPB_UNREACHABLE();
+ }
+
+ if (singular) field->offset = kNoPresence;
+ if (required) {
+ field->offset = kRequiredPresence;
+ }
+}
+
+static void upb_MtDecoder_PushItem(upb_MtDecoder* d, upb_LayoutItem item) {
+ if (d->vec.size == d->vec.capacity) {
+ size_t new_cap = UPB_MAX(8, d->vec.size * 2);
+ d->vec.data = realloc(d->vec.data, new_cap * sizeof(*d->vec.data));
+ upb_MtDecoder_CheckOutOfMemory(d, d->vec.data);
+ d->vec.capacity = new_cap;
+ }
+ d->vec.data[d->vec.size++] = item;
+}
+
+static void upb_MtDecoder_PushOneof(upb_MtDecoder* d, upb_LayoutItem item) {
+ if (item.field_index == kUpb_LayoutItem_IndexSentinel) {
+ upb_MtDecoder_ErrorFormat(d, "Empty oneof");
+ UPB_UNREACHABLE();
+ }
+ item.field_index -= kOneofBase;
+
+ // Push oneof data.
+ item.type = kUpb_LayoutItemType_OneofField;
+ upb_MtDecoder_PushItem(d, item);
+
+ // Push oneof case.
+ item.rep = kUpb_FieldRep_4Byte; // Field Number.
+ item.type = kUpb_LayoutItemType_OneofCase;
+ upb_MtDecoder_PushItem(d, item);
+}
+
+size_t upb_MtDecoder_SizeOfRep(upb_FieldRep rep,
+ upb_MiniTablePlatform platform) {
+ static const uint8_t kRepToSize32[] = {
+ [kUpb_FieldRep_1Byte] = 1, [kUpb_FieldRep_4Byte] = 4,
+ [kUpb_FieldRep_Pointer] = 4, [kUpb_FieldRep_StringView] = 8,
+ [kUpb_FieldRep_8Byte] = 8,
+ };
+ static const uint8_t kRepToSize64[] = {
+ [kUpb_FieldRep_1Byte] = 1, [kUpb_FieldRep_4Byte] = 4,
+ [kUpb_FieldRep_Pointer] = 8, [kUpb_FieldRep_StringView] = 16,
+ [kUpb_FieldRep_8Byte] = 8,
+ };
+ UPB_ASSERT(sizeof(upb_StringView) ==
+ UPB_SIZE(kRepToSize32, kRepToSize64)[kUpb_FieldRep_StringView]);
+ return platform == kUpb_MiniTablePlatform_32Bit ? kRepToSize32[rep]
+ : kRepToSize64[rep];
+}
+
+size_t upb_MtDecoder_AlignOfRep(upb_FieldRep rep,
+ upb_MiniTablePlatform platform) {
+ static const uint8_t kRepToAlign32[] = {
+ [kUpb_FieldRep_1Byte] = 1, [kUpb_FieldRep_4Byte] = 4,
+ [kUpb_FieldRep_Pointer] = 4, [kUpb_FieldRep_StringView] = 4,
+ [kUpb_FieldRep_8Byte] = 8,
+ };
+ static const uint8_t kRepToAlign64[] = {
+ [kUpb_FieldRep_1Byte] = 1, [kUpb_FieldRep_4Byte] = 4,
+ [kUpb_FieldRep_Pointer] = 8, [kUpb_FieldRep_StringView] = 8,
+ [kUpb_FieldRep_8Byte] = 8,
+ };
+ UPB_ASSERT(UPB_ALIGN_OF(upb_StringView) ==
+ UPB_SIZE(kRepToAlign32, kRepToAlign64)[kUpb_FieldRep_StringView]);
+ return platform == kUpb_MiniTablePlatform_32Bit ? kRepToAlign32[rep]
+ : kRepToAlign64[rep];
+}
+
+static const char* upb_MtDecoder_DecodeOneofField(upb_MtDecoder* d,
+ const char* ptr,
+ char first_ch,
+ upb_LayoutItem* item) {
+ uint32_t field_num;
+ ptr = upb_MiniTable_DecodeBase92Varint(
+ d, ptr, first_ch, kUpb_EncodedValue_MinOneofField,
+ kUpb_EncodedValue_MaxOneofField, &field_num);
+ upb_MiniTable_Field* f =
+ (void*)upb_MiniTable_FindFieldByNumber(d->table, field_num);
+
+ if (!f) {
+ upb_MtDecoder_ErrorFormat(d,
+ "Couldn't add field number %" PRIu32
+ " to oneof, no such field number.",
+ field_num);
+ UPB_UNREACHABLE();
+ }
+ if (f->offset != kHasbitPresence) {
+ upb_MtDecoder_ErrorFormat(
+ d,
+ "Cannot add repeated, required, or singular field %" PRIu32
+ " to oneof.",
+ field_num);
+ UPB_UNREACHABLE();
+ }
+
+ // Oneof storage must be large enough to accommodate the largest member.
+ int rep = f->mode >> kUpb_FieldRep_Shift;
+ if (upb_MtDecoder_SizeOfRep(rep, d->platform) >
+ upb_MtDecoder_SizeOfRep(item->rep, d->platform)) {
+ item->rep = rep;
+ }
+ // Prepend this field to the linked list.
+ f->offset = item->field_index;
+ item->field_index = (f - d->fields) + kOneofBase;
+ return ptr;
+}
+
+static const char* upb_MtDecoder_DecodeOneofs(upb_MtDecoder* d,
+ const char* ptr) {
+ upb_LayoutItem item = {.rep = 0,
+ .field_index = kUpb_LayoutItem_IndexSentinel};
+ while (ptr < d->end) {
+ char ch = *ptr++;
+ if (ch == kUpb_EncodedValue_FieldSeparator) {
+ // Field separator, no action needed.
+ } else if (ch == kUpb_EncodedValue_OneofSeparator) {
+ // End of oneof.
+ upb_MtDecoder_PushOneof(d, item);
+ item.field_index = kUpb_LayoutItem_IndexSentinel; // Move to next oneof.
+ } else {
+ ptr = upb_MtDecoder_DecodeOneofField(d, ptr, ch, &item);
+ }
+ }
+
+ // Push final oneof.
+ upb_MtDecoder_PushOneof(d, item);
+ return ptr;
+}
+
+static const char* upb_MtDecoder_ParseModifier(upb_MtDecoder* d,
+ const char* ptr, char first_ch,
+ upb_MiniTable_Field* last_field,
+ uint64_t* msg_modifiers) {
+ uint32_t mod;
+ ptr = upb_MiniTable_DecodeBase92Varint(d, ptr, first_ch,
+ kUpb_EncodedValue_MinModifier,
+ kUpb_EncodedValue_MaxModifier, &mod);
+ if (last_field) {
+ upb_MtDecoder_ModifyField(d, *msg_modifiers, mod, last_field);
+ } else {
+ if (!d->table) {
+ upb_MtDecoder_ErrorFormat(d, "Extensions cannot have message modifiers");
+ UPB_UNREACHABLE();
+ }
+ *msg_modifiers = mod;
+ }
+
+ return ptr;
+}
+
+static void upb_MtDecoder_AllocateSubs(upb_MtDecoder* d, uint32_t sub_count) {
+ size_t subs_bytes = sizeof(*d->table->subs) * sub_count;
+ d->table->subs = upb_Arena_Malloc(d->arena, subs_bytes);
+ upb_MtDecoder_CheckOutOfMemory(d, d->table->subs);
+}
+
+static void upb_MtDecoder_Parse(upb_MtDecoder* d, const char* ptr, size_t len,
+ void* fields, size_t field_size,
+ uint16_t* field_count, uint32_t* sub_count) {
+ uint64_t msg_modifiers = 0;
+ uint32_t last_field_number = 0;
+ upb_MiniTable_Field* last_field = NULL;
+ bool need_dense_below = d->table != NULL;
+
+ d->end = UPB_PTRADD(ptr, len);
+
+ while (ptr < d->end) {
+ char ch = *ptr++;
+ if (ch <= kUpb_EncodedValue_MaxField) {
+ upb_MiniTable_Field* field = fields;
+ *field_count += 1;
+ fields = (char*)fields + field_size;
+ field->number = ++last_field_number;
+ last_field = field;
+ upb_MiniTable_SetField(d, ch, field, msg_modifiers, sub_count);
+ } else if (kUpb_EncodedValue_MinModifier <= ch &&
+ ch <= kUpb_EncodedValue_MaxModifier) {
+ ptr = upb_MtDecoder_ParseModifier(d, ptr, ch, last_field, &msg_modifiers);
+ if (msg_modifiers & kUpb_MessageModifier_IsExtendable) {
+ d->table->ext |= kUpb_ExtMode_Extendable;
+ }
+ } else if (ch == kUpb_EncodedValue_End) {
+ if (!d->table) {
+ upb_MtDecoder_ErrorFormat(d, "Extensions cannot have oneofs.");
+ UPB_UNREACHABLE();
+ }
+ ptr = upb_MtDecoder_DecodeOneofs(d, ptr);
+ } else if (kUpb_EncodedValue_MinSkip <= ch &&
+ ch <= kUpb_EncodedValue_MaxSkip) {
+ if (need_dense_below) {
+ d->table->dense_below = d->table->field_count;
+ need_dense_below = false;
+ }
+ uint32_t skip;
+ ptr = upb_MiniTable_DecodeBase92Varint(d, ptr, ch,
+ kUpb_EncodedValue_MinSkip,
+ kUpb_EncodedValue_MaxSkip, &skip);
+ last_field_number += skip;
+ last_field_number--; // Next field seen will increment.
+ }
+ }
+
+ if (need_dense_below) {
+ d->table->dense_below = d->table->field_count;
+ }
+}
+
+static void upb_MtDecoder_ParseMessage(upb_MtDecoder* d, const char* data,
+ size_t len) {
+ // Buffer length is an upper bound on the number of fields. We will return
+ // what we don't use.
+ d->fields = upb_Arena_Malloc(d->arena, sizeof(*d->fields) * len);
+ upb_MtDecoder_CheckOutOfMemory(d, d->fields);
+
+ uint32_t sub_count = 0;
+ d->table->field_count = 0;
+ d->table->fields = d->fields;
+ upb_MtDecoder_Parse(d, data, len, d->fields, sizeof(*d->fields),
+ &d->table->field_count, &sub_count);
+
+ upb_Arena_ShrinkLast(d->arena, d->fields, sizeof(*d->fields) * len,
+ sizeof(*d->fields) * d->table->field_count);
+ d->table->fields = d->fields;
+ upb_MtDecoder_AllocateSubs(d, sub_count);
+}
+
+int upb_MtDecoder_CompareFields(const void* _a, const void* _b) {
+ const upb_LayoutItem* a = _a;
+ const upb_LayoutItem* b = _b;
+ // Currently we just sort by:
+ // 1. rep (smallest fields first)
+ // 2. type (oneof cases first)
+ // 2. field_index (smallest numbers first)
+ // The main goal of this is to reduce space lost to padding.
+ // Later we may have more subtle reasons to prefer a different ordering.
+ const int rep_bits = _upb_Log2Ceiling(kUpb_FieldRep_Max);
+ const int type_bits = _upb_Log2Ceiling(kUpb_LayoutItemType_Max);
+ const int idx_bits = (sizeof(a->field_index) * 8);
+ UPB_ASSERT(idx_bits + rep_bits + type_bits < 32);
+#define UPB_COMBINE(rep, ty, idx) (((rep << type_bits) | ty) << idx_bits) | idx
+ uint32_t a_packed = UPB_COMBINE(a->rep, a->type, a->field_index);
+ uint32_t b_packed = UPB_COMBINE(b->rep, b->type, b->field_index);
+ assert(a_packed != b_packed);
+#undef UPB_COMBINE
+ return a_packed < b_packed ? -1 : 1;
+}
+
+static bool upb_MtDecoder_SortLayoutItems(upb_MtDecoder* d) {
+ // Add items for all non-oneof fields (oneofs were already added).
+ int n = d->table->field_count;
+ for (int i = 0; i < n; i++) {
+ upb_MiniTable_Field* f = &d->fields[i];
+ if (f->offset >= kOneofBase) continue;
+ upb_LayoutItem item = {.field_index = i,
+ .rep = f->mode >> kUpb_FieldRep_Shift,
+ .type = kUpb_LayoutItemType_Field};
+ upb_MtDecoder_PushItem(d, item);
+ }
+
+ if (d->vec.size) {
+ qsort(d->vec.data, d->vec.size, sizeof(*d->vec.data),
+ upb_MtDecoder_CompareFields);
+ }
+
+ return true;
+}
+
+static size_t upb_MiniTable_DivideRoundUp(size_t n, size_t d) {
+ return (n + d - 1) / d;
+}
+
+static void upb_MtDecoder_AssignHasbits(upb_MiniTable* ret) {
+ int n = ret->field_count;
+ int last_hasbit = 0; // 0 cannot be used.
+
+ // First assign required fields, which must have the lowest hasbits.
+ for (int i = 0; i < n; i++) {
+ upb_MiniTable_Field* field = (upb_MiniTable_Field*)&ret->fields[i];
+ if (field->offset == kRequiredPresence) {
+ field->presence = ++last_hasbit;
+ } else if (field->offset == kNoPresence) {
+ field->presence = 0;
+ }
+ }
+ ret->required_count = last_hasbit;
+
+ // Next assign non-required hasbit fields.
+ for (int i = 0; i < n; i++) {
+ upb_MiniTable_Field* field = (upb_MiniTable_Field*)&ret->fields[i];
+ if (field->offset == kHasbitPresence) {
+ field->presence = ++last_hasbit;
+ }
+ }
+
+ ret->size = last_hasbit ? upb_MiniTable_DivideRoundUp(last_hasbit + 1, 8) : 0;
+}
+
+size_t upb_MtDecoder_Place(upb_MtDecoder* d, upb_FieldRep rep) {
+ size_t size = upb_MtDecoder_SizeOfRep(rep, d->platform);
+ size_t align = upb_MtDecoder_AlignOfRep(rep, d->platform);
+ size_t ret = UPB_ALIGN_UP(d->table->size, align);
+ d->table->size = ret + size;
+ return ret;
+}
+
+static void upb_MtDecoder_AssignOffsets(upb_MtDecoder* d) {
+ upb_LayoutItem* end = UPB_PTRADD(d->vec.data, d->vec.size);
+
+ // Compute offsets.
+ for (upb_LayoutItem* item = d->vec.data; item < end; item++) {
+ item->offset = upb_MtDecoder_Place(d, item->rep);
+ }
+
+ // Assign oneof case offsets. We must do these first, since assigning
+ // actual offsets will overwrite the links of the linked list.
+ for (upb_LayoutItem* item = d->vec.data; item < end; item++) {
+ if (item->type != kUpb_LayoutItemType_OneofCase) continue;
+ upb_MiniTable_Field* f = &d->fields[item->field_index];
+ while (true) {
+ f->presence = ~item->offset;
+ if (f->offset == kUpb_LayoutItem_IndexSentinel) break;
+ UPB_ASSERT(f->offset - kOneofBase < d->table->field_count);
+ f = &d->fields[f->offset - kOneofBase];
+ }
+ }
+
+ // Assign offsets.
+ for (upb_LayoutItem* item = d->vec.data; item < end; item++) {
+ upb_MiniTable_Field* f = &d->fields[item->field_index];
+ switch (item->type) {
+ case kUpb_LayoutItemType_OneofField:
+ while (true) {
+ uint16_t next_offset = f->offset;
+ f->offset = item->offset;
+ if (next_offset == kUpb_LayoutItem_IndexSentinel) break;
+ f = &d->fields[next_offset - kOneofBase];
+ }
+ break;
+ case kUpb_LayoutItemType_Field:
+ f->offset = item->offset;
+ break;
+ default:
+ break;
+ }
+ }
+
+ // The fasttable parser (supported on 64-bit only) depends on this being a
+ // multiple of 8 in order to satisfy UPB_MALLOC_ALIGN, which is also 8.
+ //
+ // On 32-bit we could potentially make this smaller, but there is no
+ // compelling reason to optimize this right now.
+ d->table->size = UPB_ALIGN_UP(d->table->size, 8);
+}
+
+upb_MiniTable* upb_MiniTable_BuildWithBuf(const char* data, size_t len,
+ upb_MiniTablePlatform platform,
+ upb_Arena* arena, void** buf,
+ size_t* buf_size,
+ upb_Status* status) {
+ upb_MtDecoder decoder = {
+ .platform = platform,
+ .vec =
+ {
+ .data = *buf,
+ .capacity = *buf_size / sizeof(*decoder.vec.data),
+ .size = 0,
+ },
+ .arena = arena,
+ .status = status,
+ .table = upb_Arena_Malloc(arena, sizeof(*decoder.table)),
+ };
+
+ if (UPB_SETJMP(decoder.err)) {
+ decoder.table = NULL;
+ goto done;
+ }
+
+ upb_MtDecoder_CheckOutOfMemory(&decoder, decoder.table);
+
+ decoder.table->size = 0;
+ decoder.table->field_count = 0;
+ decoder.table->ext = kUpb_ExtMode_NonExtendable;
+ decoder.table->dense_below = 0;
+ decoder.table->table_mask = 0;
+ decoder.table->required_count = 0;
+
+ upb_MtDecoder_ParseMessage(&decoder, data, len);
+ upb_MtDecoder_AssignHasbits(decoder.table);
+ upb_MtDecoder_SortLayoutItems(&decoder);
+ upb_MtDecoder_AssignOffsets(&decoder);
+
+done:
+ *buf = decoder.vec.data;
+ *buf_size = decoder.vec.capacity / sizeof(*decoder.vec.data);
+ return decoder.table;
+}
+
+upb_MiniTable* upb_MiniTable_BuildMessageSet(upb_MiniTablePlatform platform,
+ upb_Arena* arena) {
+ upb_MiniTable* ret = upb_Arena_Malloc(arena, sizeof(*ret));
+ if (!ret) return NULL;
+
+ ret->size = 0;
+ ret->field_count = 0;
+ ret->ext = kUpb_ExtMode_IsMessageSet;
+ ret->dense_below = 0;
+ ret->table_mask = 0;
+ ret->required_count = 0;
+ return ret;
+}
+
+upb_MiniTable* upb_MiniTable_BuildMapEntry(upb_FieldType key_type,
+ upb_FieldType value_type,
+ bool value_is_proto3_enum,
+ upb_MiniTablePlatform platform,
+ upb_Arena* arena) {
+ upb_MiniTable* ret = upb_Arena_Malloc(arena, sizeof(*ret));
+ upb_MiniTable_Field* fields = upb_Arena_Malloc(arena, sizeof(*fields) * 2);
+ if (!ret || !fields) return NULL;
+
+ upb_MiniTable_Sub* subs = NULL;
+ if (value_is_proto3_enum) value_type = kUpb_FieldType_Int32;
+ if (value_type == kUpb_FieldType_Message ||
+ value_type == kUpb_FieldType_Group || value_type == kUpb_FieldType_Enum) {
+ subs = upb_Arena_Malloc(arena, sizeof(*subs));
+ if (!subs) return NULL;
+ }
+
+ size_t field_size =
+ upb_MtDecoder_SizeOfRep(kUpb_FieldRep_StringView, platform);
+
+ fields[0].number = 1;
+ fields[1].number = 2;
+ fields[0].mode = kUpb_FieldMode_Scalar;
+ fields[1].mode = kUpb_FieldMode_Scalar;
+ fields[0].presence = 0;
+ fields[1].presence = 0;
+ fields[0].offset = 0;
+ fields[1].offset = field_size;
+
+ upb_MiniTable_SetTypeAndSub(&fields[0], key_type, NULL, 0);
+ upb_MiniTable_SetTypeAndSub(&fields[1], value_type, NULL, 0);
+
+ ret->size = UPB_ALIGN_UP(2 * field_size, 8);
+ ret->field_count = 2;
+ ret->ext = kUpb_ExtMode_NonExtendable | kUpb_ExtMode_IsMapEntry;
+ ret->dense_below = 2;
+ ret->table_mask = 0;
+ ret->required_count = 0;
+ ret->subs = subs;
+ ret->fields = fields;
+ return ret;
+}
+
+static bool upb_MiniTable_BuildEnumValue(upb_MtDecoder* d,
+ upb_MiniTable_Enum* table,
+ uint32_t val, upb_Arena* arena) {
+ if (val < 64) {
+ table->mask |= 1ULL << val;
+ return true;
+ }
+
+ int32_t* values = (void*)table->values;
+ values = upb_Arena_Realloc(arena, values, table->value_count * 4,
+ (table->value_count + 1) * 4);
+ upb_MtDecoder_CheckOutOfMemory(d, values);
+ values[table->value_count++] = (int32_t)val;
+ table->values = values;
+ return true;
+}
+
+upb_MiniTable_Enum* upb_MiniTable_BuildEnum(const char* data, size_t len,
+ upb_Arena* arena,
+ upb_Status* status) {
+ upb_MtDecoder d = {
+ .status = status,
+ .end = UPB_PTRADD(data, len),
+ };
+
+ if (UPB_SETJMP(d.err)) {
+ return NULL;
+ }
+
+ upb_MiniTable_Enum* table = upb_Arena_Malloc(arena, sizeof(*table));
+ upb_MtDecoder_CheckOutOfMemory(&d, table);
+
+ table->mask = 0;
+ table->value_count = 0;
+ table->values = NULL;
+
+ const char* ptr = data;
+ uint32_t base = 0;
+
+ while (ptr < d.end) {
+ char ch = *ptr++;
+ if (ch <= kUpb_EncodedValue_MaxEnumMask) {
+ uint32_t mask = upb_FromBase92(ch);
+ for (int i = 0; i < 5; i++, base++, mask >>= 1) {
+ if (mask & 1) {
+ if (!upb_MiniTable_BuildEnumValue(&d, table, base, arena)) {
+ return NULL;
+ }
+ }
+ }
+ } else if (kUpb_EncodedValue_MinSkip <= ch &&
+ ch <= kUpb_EncodedValue_MaxSkip) {
+ uint32_t skip;
+ ptr = upb_MiniTable_DecodeBase92Varint(&d, ptr, ch,
+ kUpb_EncodedValue_MinSkip,
+ kUpb_EncodedValue_MaxSkip, &skip);
+ base += skip;
+ } else {
+ upb_Status_SetErrorFormat(status, "Unexpected character: %c", ch);
+ return NULL;
+ }
+ }
+
+ return table;
+}
+
+bool upb_MiniTable_BuildExtension(const char* data, size_t len,
+ upb_MiniTable_Extension* ext,
+ upb_MiniTable_Sub sub, upb_Status* status) {
+ upb_MtDecoder decoder = {
+ .arena = NULL,
+ .status = status,
+ .table = NULL,
+ };
+
+ if (UPB_SETJMP(decoder.err)) {
+ return false;
+ }
+
+ uint16_t count = 0;
+ upb_MtDecoder_Parse(&decoder, data, len, ext, sizeof(*ext), &count, NULL);
+ ext->field.mode |= kUpb_LabelFlags_IsExtension;
+ ext->field.offset = 0;
+ return true;
+}
+
+upb_MiniTable* upb_MiniTable_Build(const char* data, size_t len,
+ upb_MiniTablePlatform platform,
+ upb_Arena* arena, upb_Status* status) {
+ void* buf = NULL;
+ size_t size = 0;
+ upb_MiniTable* ret = upb_MiniTable_BuildWithBuf(data, len, platform, arena,
+ &buf, &size, status);
+ free(buf);
+ return ret;
+}
+
+void upb_MiniTable_SetSubMessage(upb_MiniTable* table,
+ upb_MiniTable_Field* field,
+ const upb_MiniTable* sub) {
+ UPB_ASSERT((uintptr_t)table->fields <= (uintptr_t)field &&
+ (uintptr_t)field <
+ (uintptr_t)(table->fields + table->field_count));
+ if (sub->ext & kUpb_ExtMode_IsMapEntry) {
+ field->mode =
+ (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift) | kUpb_FieldMode_Map;
+ }
+ upb_MiniTable_Sub* table_sub = (void*)&table->subs[field->submsg_index];
+ table_sub->submsg = sub;
+}
+
+void upb_MiniTable_SetSubEnum(upb_MiniTable* table, upb_MiniTable_Field* field,
+ const upb_MiniTable_Enum* sub) {
+ UPB_ASSERT((uintptr_t)table->fields <= (uintptr_t)field &&
+ (uintptr_t)field <
+ (uintptr_t)(table->fields + table->field_count));
+ upb_MiniTable_Sub* table_sub = (void*)&table->subs[field->submsg_index];
+ table_sub->subenum = sub;
+}
diff --git a/contrib/libs/grpc/third_party/upb/upb/mini_table.h b/contrib/libs/grpc/third_party/upb/upb/mini_table.h
new file mode 100644
index 0000000000..6c41f810eb
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/mini_table.h
@@ -0,0 +1,189 @@
+/*
+ * Copyright (c) 2009-2022, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef UPB_MINI_TABLE_H_
+#define UPB_MINI_TABLE_H_
+
+#include "upb/msg_internal.h"
+
+// Must be last.
+#include "upb/port_def.inc"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+const upb_MiniTable_Field* upb_MiniTable_FindFieldByNumber(
+ const upb_MiniTable* table, uint32_t number);
+
+UPB_INLINE const upb_MiniTable* upb_MiniTable_GetSubMessageTable(
+ const upb_MiniTable* mini_table, const upb_MiniTable_Field* field) {
+ return mini_table->subs[field->submsg_index].submsg;
+}
+
+UPB_INLINE bool upb_MiniTable_Enum_CheckValue(const upb_MiniTable_Enum* e,
+ int32_t val) {
+ uint32_t uval = (uint32_t)val;
+ if (uval < 64) return e->mask & (1ULL << uval);
+ // OPT: binary search long lists?
+ int n = e->value_count;
+ for (int i = 0; i < n; i++) {
+ if (e->values[i] == val) return true;
+ }
+ return false;
+}
+
+/** upb_MtDataEncoder *********************************************************/
+
+// Functions to encode a string in a format that can be loaded by
+// upb_MiniTable_Build().
+
+typedef enum {
+ kUpb_MessageModifier_ValidateUtf8 = 1 << 0,
+ kUpb_MessageModifier_DefaultIsPacked = 1 << 1,
+ kUpb_MessageModifier_IsExtendable = 1 << 2,
+} kUpb_MessageModifier;
+
+typedef enum {
+ kUpb_FieldModifier_IsRepeated = 1 << 0,
+ kUpb_FieldModifier_IsPacked = 1 << 1,
+ kUpb_FieldModifier_IsClosedEnum = 1 << 2,
+ kUpb_FieldModifier_IsProto3Singular = 1 << 3,
+ kUpb_FieldModifier_IsRequired = 1 << 4,
+} kUpb_FieldModifier;
+
+typedef struct {
+ char* end; // Limit of the buffer passed as a parameter.
+ // Aliased to internal-only members in .cc.
+ char internal[32];
+} upb_MtDataEncoder;
+
+// If the input buffer has at least this many bytes available, the encoder call
+// is guaranteed to succeed (as long as field number order is maintained).
+#define kUpb_MtDataEncoder_MinSize 16
+
+// Encodes field/oneof information for a given message. The sequence of calls
+// should look like:
+//
+// upb_MtDataEncoder e;
+// char buf[256];
+// char* ptr = buf;
+// e.end = ptr + sizeof(buf);
+// ptr = upb_MtDataEncoder_StartMessage(&e, ptr);
+// // Fields *must* be in field number order.
+// ptr = upb_MtDataEncoder_PutField(&e, ptr, ...);
+// ptr = upb_MtDataEncoder_PutField(&e, ptr, ...);
+// ptr = upb_MtDataEncoder_PutField(&e, ptr, ...);
+//
+// // If oneofs are present. Oneofs must be encoded after regular fields.
+// ptr = upb_MiniTable_StartOneof(&e, ptr)
+// ptr = upb_MiniTable_PutOneofField(&e, ptr, ...);
+// ptr = upb_MiniTable_PutOneofField(&e, ptr, ...);
+//
+// ptr = upb_MiniTable_StartOneof(&e, ptr);
+// ptr = upb_MiniTable_PutOneofField(&e, ptr, ...);
+// ptr = upb_MiniTable_PutOneofField(&e, ptr, ...);
+//
+// Oneofs must be encoded after all regular fields.
+char* upb_MtDataEncoder_StartMessage(upb_MtDataEncoder* e, char* ptr,
+ uint64_t msg_mod);
+char* upb_MtDataEncoder_PutField(upb_MtDataEncoder* e, char* ptr,
+ upb_FieldType type, uint32_t field_num,
+ uint64_t field_mod);
+char* upb_MtDataEncoder_StartOneof(upb_MtDataEncoder* e, char* ptr);
+char* upb_MtDataEncoder_PutOneofField(upb_MtDataEncoder* e, char* ptr,
+ uint32_t field_num);
+
+// Encodes the set of values for a given enum. The values must be given in
+// order (after casting to uint32_t), and repeats are not allowed.
+void upb_MtDataEncoder_StartEnum(upb_MtDataEncoder* e);
+char* upb_MtDataEncoder_PutEnumValue(upb_MtDataEncoder* e, char* ptr,
+ uint32_t val);
+char* upb_MtDataEncoder_EndEnum(upb_MtDataEncoder* e, char* ptr);
+
+/** upb_MiniTable *************************************************************/
+
+typedef enum {
+ kUpb_MiniTablePlatform_32Bit,
+ kUpb_MiniTablePlatform_64Bit,
+ kUpb_MiniTablePlatform_Native =
+ UPB_SIZE(kUpb_MiniTablePlatform_32Bit, kUpb_MiniTablePlatform_64Bit),
+} upb_MiniTablePlatform;
+
+// Builds a mini table from the data encoded in the buffer [data, len]. If any
+// errors occur, returns NULL and sets a status message. In the success case,
+// the caller must call upb_MiniTable_SetSub*() for all message or proto2 enum
+// fields to link the table to the appropriate sub-tables.
+upb_MiniTable* upb_MiniTable_Build(const char* data, size_t len,
+ upb_MiniTablePlatform platform,
+ upb_Arena* arena, upb_Status* status);
+void upb_MiniTable_SetSubMessage(upb_MiniTable* table,
+ upb_MiniTable_Field* field,
+ const upb_MiniTable* sub);
+void upb_MiniTable_SetSubEnum(upb_MiniTable* table, upb_MiniTable_Field* field,
+ const upb_MiniTable_Enum* sub);
+
+bool upb_MiniTable_BuildExtension(const char* data, size_t len,
+ upb_MiniTable_Extension* ext,
+ upb_MiniTable_Sub sub, upb_Status* status);
+
+// Special-case functions for MessageSet layout and map entries.
+upb_MiniTable* upb_MiniTable_BuildMessageSet(upb_MiniTablePlatform platform,
+ upb_Arena* arena);
+upb_MiniTable* upb_MiniTable_BuildMapEntry(upb_FieldType key_type,
+ upb_FieldType value_type,
+ bool value_is_proto3_enum,
+ upb_MiniTablePlatform platform,
+ upb_Arena* arena);
+
+upb_MiniTable_Enum* upb_MiniTable_BuildEnum(const char* data, size_t len,
+ upb_Arena* arena,
+ upb_Status* status);
+
+// Like upb_MiniTable_Build(), but the user provides a buffer of layout data so
+// it can be reused from call to call, avoiding repeated realloc()/free().
+//
+// The caller owns `*buf` both before and after the call, and must free() it
+// when it is no longer in use. The function will realloc() `*buf` as
+// necessary, updating `*size` accordingly.
+upb_MiniTable* upb_MiniTable_BuildWithBuf(const char* data, size_t len,
+ upb_MiniTablePlatform platform,
+ upb_Arena* arena, void** buf,
+ size_t* buf_size, upb_Status* status);
+
+// For testing only.
+char upb_ToBase92(int8_t ch);
+char upb_FromBase92(uint8_t ch);
+bool upb_IsTypePackable(upb_FieldType type);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#include "upb/port_undef.inc"
+
+#endif /* UPB_MINI_TABLE_H_ */
diff --git a/contrib/libs/grpc/third_party/upb/upb/msg.c b/contrib/libs/grpc/third_party/upb/upb/msg.c
index 3734fc5491..036c62199d 100644
--- a/contrib/libs/grpc/third_party/upb/upb/msg.c
+++ b/contrib/libs/grpc/third_party/upb/upb/msg.c
@@ -27,12 +27,11 @@
#include "upb/msg.h"
+#include "upb/internal/table.h"
#include "upb/msg_internal.h"
#include "upb/port_def.inc"
-#include "upb/table_internal.h"
-/** upb_Message
- * *******************************************************************/
+/** upb_Message ***************************************************************/
static const size_t overhead = sizeof(upb_Message_InternalData);
@@ -55,7 +54,7 @@ static bool realloc_internal(upb_Message* msg, size_t need, upb_Arena* arena) {
upb_Message_Internal* in = upb_Message_Getinternal(msg);
if (!in->internal) {
/* No internal data, allocate from scratch. */
- size_t size = UPB_MAX(128, _upb_Log2Ceilingsize(need + overhead));
+ size_t size = UPB_MAX(128, _upb_Log2CeilingSize(need + overhead));
upb_Message_InternalData* internal = upb_Arena_Malloc(arena, size);
if (!internal) return false;
internal->size = size;
@@ -64,7 +63,7 @@ static bool realloc_internal(upb_Message* msg, size_t need, upb_Arena* arena) {
in->internal = internal;
} else if (in->internal->ext_begin - in->internal->unknown_end < need) {
/* Internal data is too small, reallocate. */
- size_t new_size = _upb_Log2Ceilingsize(in->internal->size + need);
+ size_t new_size = _upb_Log2CeilingSize(in->internal->size + need);
size_t ext_bytes = in->internal->size - in->internal->ext_begin;
size_t new_ext_begin = new_size - ext_bytes;
upb_Message_InternalData* internal =
@@ -154,7 +153,7 @@ void _upb_Message_Clearext(upb_Message* msg,
}
}
-upb_Message_Extension* _upb_Message_Getorcreateext(
+upb_Message_Extension* _upb_Message_GetOrCreateExtension(
upb_Message* msg, const upb_MiniTable_Extension* e, upb_Arena* arena) {
upb_Message_Extension* ext =
(upb_Message_Extension*)_upb_Message_Getext(msg, e);
@@ -310,7 +309,7 @@ bool _upb_mapsorter_pushmap(_upb_mapsorter* s, upb_FieldType key_type,
/* Grow s->entries if necessary. */
if (sorted->end > s->cap) {
- s->cap = _upb_Log2Ceilingsize(sorted->end);
+ s->cap = _upb_Log2CeilingSize(sorted->end);
s->entries = realloc(s->entries, s->cap * sizeof(*s->entries));
if (!s->entries) return false;
}
@@ -367,64 +366,3 @@ bool _upb_mapsorter_pushmap(_upb_mapsorter* s, upb_FieldType key_type,
qsort(&s->entries[sorted->start], map_size, sizeof(*s->entries), compar);
return true;
}
-
-/** upb_ExtensionRegistry
- * ****************************************************************/
-
-struct upb_ExtensionRegistry {
- upb_Arena* arena;
- upb_strtable exts; /* Key is upb_MiniTable* concatenated with fieldnum. */
-};
-
-#define EXTREG_KEY_SIZE (sizeof(upb_MiniTable*) + sizeof(uint32_t))
-
-static void extreg_key(char* buf, const upb_MiniTable* l, uint32_t fieldnum) {
- memcpy(buf, &l, sizeof(l));
- memcpy(buf + sizeof(l), &fieldnum, sizeof(fieldnum));
-}
-
-upb_ExtensionRegistry* upb_ExtensionRegistry_New(upb_Arena* arena) {
- upb_ExtensionRegistry* r = upb_Arena_Malloc(arena, sizeof(*r));
- if (!r) return NULL;
- r->arena = arena;
- if (!upb_strtable_init(&r->exts, 8, arena)) return NULL;
- return r;
-}
-
-bool _upb_extreg_add(upb_ExtensionRegistry* r,
- const upb_MiniTable_Extension** e, size_t count) {
- char buf[EXTREG_KEY_SIZE];
- const upb_MiniTable_Extension** start = e;
- const upb_MiniTable_Extension** end = UPB_PTRADD(e, count);
- for (; e < end; e++) {
- const upb_MiniTable_Extension* ext = *e;
- extreg_key(buf, ext->extendee, ext->field.number);
- if (!upb_strtable_insert(&r->exts, buf, EXTREG_KEY_SIZE,
- upb_value_constptr(ext), r->arena)) {
- goto failure;
- }
- }
- return true;
-
-failure:
- /* Back out the entries previously added. */
- for (end = e, e = start; e < end; e++) {
- const upb_MiniTable_Extension* ext = *e;
- extreg_key(buf, ext->extendee, ext->field.number);
- upb_strtable_remove2(&r->exts, buf, EXTREG_KEY_SIZE, NULL);
- }
- return false;
-}
-
-const upb_MiniTable_Extension* _upb_extreg_get(const upb_ExtensionRegistry* r,
- const upb_MiniTable* l,
- uint32_t num) {
- char buf[EXTREG_KEY_SIZE];
- upb_value v;
- extreg_key(buf, l, num);
- if (upb_strtable_lookup2(&r->exts, buf, EXTREG_KEY_SIZE, &v)) {
- return upb_value_getconstptr(v);
- } else {
- return NULL;
- }
-}
diff --git a/contrib/libs/grpc/third_party/upb/upb/msg.h b/contrib/libs/grpc/third_party/upb/upb/msg.h
index 99928393ae..5c1e8e8931 100644
--- a/contrib/libs/grpc/third_party/upb/upb/msg.h
+++ b/contrib/libs/grpc/third_party/upb/upb/msg.h
@@ -38,15 +38,14 @@
#include <stddef.h>
+// TODO(b/232091617): Remove this and fix everything that breaks as a result.
+#include "upb/extension_registry.h"
#include "upb/upb.h"
#ifdef __cplusplus
extern "C" {
#endif
-/** upb_Message
- * *******************************************************************/
-
typedef void upb_Message;
/* For users these are opaque. They can be obtained from
@@ -65,49 +64,6 @@ const char* upb_Message_GetUnknown(const upb_Message* msg, size_t* len);
/* Returns the number of extensions present in this message. */
size_t upb_Message_ExtensionCount(const upb_Message* msg);
-/** upb_ExtensionRegistry *****************************************************/
-
-/* Extension registry: a dynamic data structure that stores a map of:
- * (upb_MiniTable, number) -> extension info
- *
- * upb_decode() uses upb_ExtensionRegistry to look up extensions while parsing
- * binary format.
- *
- * upb_ExtensionRegistry is part of the mini-table (msglayout) family of
- * objects. Like all mini-table objects, it is suitable for reflection-less
- * builds that do not want to expose names into the binary.
- *
- * Unlike most mini-table types, upb_ExtensionRegistry requires dynamic memory
- * allocation and dynamic initialization:
- * * If reflection is being used, then upb_DefPool will construct an appropriate
- * upb_ExtensionRegistry automatically.
- * * For a mini-table only build, the user must manually construct the
- * upb_ExtensionRegistry and populate it with all of the extensions the user
- * cares about.
- * * A third alternative is to manually unpack relevant extensions after the
- * main parse is complete, similar to how Any works. This is perhaps the
- * nicest solution from the perspective of reducing dependencies, avoiding
- * dynamic memory allocation, and avoiding the need to parse uninteresting
- * extensions. The downsides are:
- * (1) parse errors are not caught during the main parse
- * (2) the CPU hit of parsing comes during access, which could cause an
- * undesirable stutter in application performance.
- *
- * Users cannot directly get or put into this map. Users can only add the
- * extensions from a generated module and pass the extension registry to the
- * binary decoder.
- *
- * A upb_DefPool provides a upb_ExtensionRegistry, so any users who use
- * reflection do not need to populate a upb_ExtensionRegistry directly.
- */
-
-struct upb_ExtensionRegistry;
-typedef struct upb_ExtensionRegistry upb_ExtensionRegistry;
-
-/* Creates a upb_ExtensionRegistry in the given arena. The arena must outlive
- * any use of the extreg. */
-upb_ExtensionRegistry* upb_ExtensionRegistry_New(upb_Arena* arena);
-
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/contrib/libs/grpc/third_party/upb/upb/msg_internal.h b/contrib/libs/grpc/third_party/upb/upb/msg_internal.h
index 88c17108f1..4f5c4797c5 100644
--- a/contrib/libs/grpc/third_party/upb/upb/msg_internal.h
+++ b/contrib/libs/grpc/third_party/upb/upb/msg_internal.h
@@ -39,8 +39,9 @@
#include <stdlib.h>
#include <string.h>
+#include "upb/extension_registry.h"
+#include "upb/internal/table.h"
#include "upb/msg.h"
-#include "upb/table_internal.h"
#include "upb/upb.h"
/* Must be last. */
@@ -50,6 +51,18 @@
extern "C" {
#endif
+/** upb_*Int* conversion routines ********************************************/
+
+UPB_INLINE int32_t _upb_Int32_FromI(int v) { return (int32_t)v; }
+
+UPB_INLINE int64_t _upb_Int64_FromLL(long long v) { return (int64_t)v; }
+
+UPB_INLINE uint32_t _upb_UInt32_FromU(unsigned v) { return (uint32_t)v; }
+
+UPB_INLINE uint64_t _upb_UInt64_FromULL(unsigned long long v) {
+ return (uint64_t)v;
+}
+
/** upb_MiniTable *************************************************************/
/* upb_MiniTable represents the memory layout of a given upb_MessageDef. The
@@ -60,43 +73,40 @@ typedef struct {
uint32_t number;
uint16_t offset;
int16_t presence; // If >0, hasbit_index. If <0, ~oneof_index
- uint16_t submsg_index; // undefined if descriptortype != MESSAGE/GROUP/ENUM
+ uint16_t submsg_index; // kUpb_NoSub if descriptortype != MESSAGE/GROUP/ENUM
uint8_t descriptortype;
uint8_t mode; /* upb_FieldMode | upb_LabelFlags |
- (upb_FieldRep << upb_FieldRep_Shift) */
+ (upb_FieldRep << kUpb_FieldRep_Shift) */
} upb_MiniTable_Field;
+#define kUpb_NoSub ((uint16_t)-1)
+
typedef enum {
kUpb_FieldMode_Map = 0,
kUpb_FieldMode_Array = 1,
kUpb_FieldMode_Scalar = 2,
-
- kUpb_FieldMode_Mask = 3, /* Mask to isolate the mode from upb_FieldRep. */
} upb_FieldMode;
+// Mask to isolate the upb_FieldMode from field.mode.
+#define kUpb_FieldMode_Mask 3
+
/* Extra flags on the mode field. */
-enum upb_LabelFlags {
- upb_LabelFlags_IsPacked = 4,
- upb_LabelFlags_IsExtension = 8,
-};
+typedef enum {
+ kUpb_LabelFlags_IsPacked = 4,
+ kUpb_LabelFlags_IsExtension = 8,
+} upb_LabelFlags;
-/* Representation in the message. Derivable from descriptortype and mode, but
- * fast access helps the serializer. */
-enum upb_FieldRep {
- upb_FieldRep_1Byte = 0,
- upb_FieldRep_4Byte = 1,
- upb_FieldRep_8Byte = 2,
- upb_FieldRep_StringView = 3,
-
-#if UINTPTR_MAX == 0xffffffff
- upb_FieldRep_Pointer = upb_FieldRep_4Byte,
-#else
- upb_FieldRep_Pointer = upb_FieldRep_8Byte,
-#endif
+// Note: we sort by this number when calculating layout order.
+typedef enum {
+ kUpb_FieldRep_1Byte = 0,
+ kUpb_FieldRep_4Byte = 1,
+ kUpb_FieldRep_StringView = 2,
+ kUpb_FieldRep_Pointer = 3,
+ kUpb_FieldRep_8Byte = 4,
- upb_FieldRep_Shift =
- 6, /* Bit offset of the rep in upb_MiniTable_Field.mode */
-};
+ kUpb_FieldRep_Shift = 5, // Bit offset of the rep in upb_MiniTable_Field.mode
+ kUpb_FieldRep_Max = kUpb_FieldRep_8Byte,
+} upb_FieldRep;
UPB_INLINE upb_FieldMode upb_FieldMode_Get(const upb_MiniTable_Field* field) {
return (upb_FieldMode)(field->mode & 3);
@@ -130,36 +140,28 @@ typedef struct {
int value_count;
} upb_MiniTable_Enum;
-UPB_INLINE bool upb_MiniTable_Enum_CheckValue(const upb_MiniTable_Enum* e,
- int32_t val) {
- uint32_t uval = (uint32_t)val;
- if (uval < 64) return e->mask & (1 << uval);
- // OPT: binary search long lists?
- int n = e->value_count;
- for (int i = 0; i < n; i++) {
- if (e->values[i] == val) return true;
- }
- return false;
-}
-
typedef union {
const struct upb_MiniTable* submsg;
const upb_MiniTable_Enum* subenum;
} upb_MiniTable_Sub;
typedef enum {
- upb_ExtMode_NonExtendable = 0, // Non-extendable message.
- upb_ExtMode_Extendable = 1, // Normal extendable message.
- upb_ExtMode_IsMessageSet = 2, // MessageSet message.
- upb_ExtMode_IsMessageSet_ITEM =
+ kUpb_ExtMode_NonExtendable = 0, // Non-extendable message.
+ kUpb_ExtMode_Extendable = 1, // Normal extendable message.
+ kUpb_ExtMode_IsMessageSet = 2, // MessageSet message.
+ kUpb_ExtMode_IsMessageSet_ITEM =
3, // MessageSet item (temporary only, see decode.c)
+
+ // During table building we steal a bit to indicate that the message is a map
+ // entry. *Only* used during table building!
+ kUpb_ExtMode_IsMapEntry = 4,
} upb_ExtMode;
/* MessageSet wire format is:
* message MessageSet {
* repeated group Item = 1 {
* required int32 type_id = 2;
- * required string message = 3;
+ * required bytes message = 3;
* }
* }
*/
@@ -213,8 +215,7 @@ UPB_INLINE uint64_t upb_MiniTable_requiredmask(const upb_MiniTable* l) {
return ((1ULL << n) - 1) << 1;
}
-/** upb_ExtensionRegistry
- * ****************************************************************/
+/** upb_ExtensionRegistry *****************************************************/
/* Adds the given extension info for message type |l| and field number |num|
* into the registry. Returns false if this message type and field number were
@@ -229,8 +230,7 @@ const upb_MiniTable_Extension* _upb_extreg_get(const upb_ExtensionRegistry* r,
const upb_MiniTable* l,
uint32_t num);
-/** upb_Message
- * *******************************************************************/
+/** upb_Message ***************************************************************/
/* Internal members of a upb_Message that track unknown fields and/or
* extensions. We can change this without breaking binary compatibility. We put
@@ -276,7 +276,7 @@ UPB_INLINE size_t upb_msg_sizeof(const upb_MiniTable* l) {
UPB_INLINE upb_Message* _upb_Message_New_inl(const upb_MiniTable* l,
upb_Arena* a) {
size_t size = upb_msg_sizeof(l);
- void* mem = upb_Arena_Malloc(a, size);
+ void* mem = upb_Arena_Malloc(a, size + sizeof(upb_Message_Internal));
upb_Message* msg;
if (UPB_UNLIKELY(!mem)) return NULL;
msg = UPB_PTR_AT(mem, sizeof(upb_Message_Internal), upb_Message);
@@ -303,8 +303,7 @@ void _upb_Message_DiscardUnknown_shallow(upb_Message* msg);
bool _upb_Message_AddUnknown(upb_Message* msg, const char* data, size_t len,
upb_Arena* arena);
-/** upb_Message_Extension
- * ***************************************************************/
+/** upb_Message_Extension *****************************************************/
/* The internal representation of an extension is self-describing: it contains
* enough information that we can serialize it to binary format without needing
@@ -326,7 +325,7 @@ typedef struct {
/* Adds the given extension data to the given message. |ext| is copied into the
* message instance. This logically replaces any previously-added extension with
* this number */
-upb_Message_Extension* _upb_Message_Getorcreateext(
+upb_Message_Extension* _upb_Message_GetOrCreateExtension(
upb_Message* msg, const upb_MiniTable_Extension* ext, upb_Arena* arena);
/* Returns an array of extensions for this message. Note: the array is
@@ -472,6 +471,10 @@ UPB_INLINE bool _upb_Array_Resize(upb_Array* arr, size_t size,
return true;
}
+UPB_INLINE void _upb_array_detach(const void* msg, size_t ofs) {
+ *UPB_PTR_AT(msg, ofs, upb_Array*) = NULL;
+}
+
UPB_INLINE const void* _upb_array_accessor(const void* msg, size_t ofs,
size_t* size) {
const upb_Array* arr = *UPB_PTR_AT(msg, ofs, const upb_Array*);
@@ -665,15 +668,31 @@ UPB_INLINE void* _upb_map_next(const upb_Map* map, size_t* iter) {
return (void*)str_tabent(&it);
}
-UPB_INLINE bool _upb_Map_Set(upb_Map* map, const void* key, size_t key_size,
- void* val, size_t val_size, upb_Arena* a) {
+typedef enum {
+ // LINT.IfChange
+ _kUpb_MapInsertStatus_Inserted = 0,
+ _kUpb_MapInsertStatus_Replaced = 1,
+ _kUpb_MapInsertStatus_OutOfMemory = 2,
+ // LINT.ThenChange(//depot/google3/third_party/upb/upb/map.h)
+} _upb_MapInsertStatus;
+
+UPB_INLINE _upb_MapInsertStatus _upb_Map_Insert(upb_Map* map, const void* key,
+ size_t key_size, void* val,
+ size_t val_size, upb_Arena* a) {
upb_StringView strkey = _upb_map_tokey(key, key_size);
upb_value tabval = {0};
- if (!_upb_map_tovalue(val, val_size, &tabval, a)) return false;
+ if (!_upb_map_tovalue(val, val_size, &tabval, a)) {
+ return _kUpb_MapInsertStatus_OutOfMemory;
+ }
/* TODO(haberman): add overwrite operation to minimize number of lookups. */
- upb_strtable_remove2(&map->table, strkey.data, strkey.size, NULL);
- return upb_strtable_insert(&map->table, strkey.data, strkey.size, tabval, a);
+ bool removed =
+ upb_strtable_remove2(&map->table, strkey.data, strkey.size, NULL);
+ if (!upb_strtable_insert(&map->table, strkey.data, strkey.size, tabval, a)) {
+ return _kUpb_MapInsertStatus_OutOfMemory;
+ }
+ return removed ? _kUpb_MapInsertStatus_Replaced
+ : _kUpb_MapInsertStatus_Inserted;
}
UPB_INLINE bool _upb_Map_Delete(upb_Map* map, const void* key,
@@ -715,7 +734,8 @@ UPB_INLINE bool _upb_msg_map_set(upb_Message* msg, size_t ofs, const void* key,
if (!*map) {
*map = _upb_Map_New(arena, key_size, val_size);
}
- return _upb_Map_Set(*map, key, key_size, val, val_size, arena);
+ return _upb_Map_Insert(*map, key, key_size, val, val_size, arena) !=
+ _kUpb_MapInsertStatus_OutOfMemory;
}
UPB_INLINE bool _upb_msg_map_delete(upb_Message* msg, size_t ofs,
@@ -761,8 +781,7 @@ UPB_INLINE void _upb_msg_map_set_value(void* msg, const void* val,
}
}
-/** _upb_mapsorter
- * *************************************************************/
+/** _upb_mapsorter ************************************************************/
/* _upb_mapsorter sorts maps and provides ordered iteration over the entries.
* Since maps can be recursive (map values can be messages which contain other
diff --git a/contrib/libs/grpc/third_party/upb/upb/port_def.inc b/contrib/libs/grpc/third_party/upb/upb/port_def.inc
index 75d416d1ce..92e4bf2477 100644
--- a/contrib/libs/grpc/third_party/upb/upb/port_def.inc
+++ b/contrib/libs/grpc/third_party/upb/upb/port_def.inc
@@ -88,9 +88,10 @@
#define UPB_INLINE static
#endif
+#define UPB_MALLOC_ALIGN 8
#define UPB_ALIGN_UP(size, align) (((size) + (align) - 1) / (align) * (align))
#define UPB_ALIGN_DOWN(size, align) ((size) / (align) * (align))
-#define UPB_ALIGN_MALLOC(size) UPB_ALIGN_UP(size, 16)
+#define UPB_ALIGN_MALLOC(size) UPB_ALIGN_UP(size, UPB_MALLOC_ALIGN)
#define UPB_ALIGN_OF(type) offsetof (struct { char c; type member; }, member)
/* Hints to the compiler about likely/unlikely branches. */
@@ -251,3 +252,11 @@ void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
#define UPB_UNPOISON_MEMORY_REGION(addr, size) \
((void)(addr), (void)(size))
#endif
+
+/* Disable proto2 arena behavior (TEMPORARY) **********************************/
+
+#ifdef UPB_DISABLE_PROTO2_ENUM_CHECKING
+#define UPB_TREAT_PROTO2_ENUMS_LIKE_PROTO3 1
+#else
+#define UPB_TREAT_PROTO2_ENUMS_LIKE_PROTO3 0
+#endif
diff --git a/contrib/libs/grpc/third_party/upb/upb/port_undef.inc b/contrib/libs/grpc/third_party/upb/upb/port_undef.inc
index 70956df25d..1dff3d275d 100644
--- a/contrib/libs/grpc/third_party/upb/upb/port_undef.inc
+++ b/contrib/libs/grpc/third_party/upb/upb/port_undef.inc
@@ -37,6 +37,7 @@
#undef UPB_ALIGN_DOWN
#undef UPB_ALIGN_MALLOC
#undef UPB_ALIGN_OF
+#undef UPB_MALLOC_ALIGN
#undef UPB_LIKELY
#undef UPB_UNLIKELY
#undef UPB_FORCEINLINE
@@ -59,3 +60,4 @@
#undef UPB_POISON_MEMORY_REGION
#undef UPB_UNPOISON_MEMORY_REGION
#undef UPB_ASAN
+#undef UPB_TREAT_PROTO2_ENUMS_LIKE_PROTO3
diff --git a/contrib/libs/grpc/third_party/upb/upb/reflection.c b/contrib/libs/grpc/third_party/upb/upb/reflection.c
index a3a64d2780..43f884495f 100644
--- a/contrib/libs/grpc/third_party/upb/upb/reflection.c
+++ b/contrib/libs/grpc/third_party/upb/upb/reflection.c
@@ -29,9 +29,9 @@
#include <string.h>
+#include "upb/internal/table.h"
#include "upb/msg.h"
#include "upb/port_def.inc"
-#include "upb/table_internal.h"
static size_t get_field_size(const upb_MiniTable_Field* f) {
static unsigned char sizes[] = {
@@ -58,37 +58,6 @@ static size_t get_field_size(const upb_MiniTable_Field* f) {
return upb_IsRepeatedOrMap(f) ? sizeof(void*) : sizes[f->descriptortype];
}
-/* Strings/bytes are special-cased in maps. */
-static char _upb_CTypeo_mapsize[12] = {
- 0,
- 1, /* kUpb_CType_Bool */
- 4, /* kUpb_CType_Float */
- 4, /* kUpb_CType_Int32 */
- 4, /* kUpb_CType_UInt32 */
- 4, /* kUpb_CType_Enum */
- sizeof(void*), /* kUpb_CType_Message */
- 8, /* kUpb_CType_Double */
- 8, /* kUpb_CType_Int64 */
- 8, /* kUpb_CType_UInt64 */
- 0, /* kUpb_CType_String */
- 0, /* kUpb_CType_Bytes */
-};
-
-static const char _upb_CTypeo_sizelg2[12] = {
- 0,
- 0, /* kUpb_CType_Bool */
- 2, /* kUpb_CType_Float */
- 2, /* kUpb_CType_Int32 */
- 2, /* kUpb_CType_UInt32 */
- 2, /* kUpb_CType_Enum */
- UPB_SIZE(2, 3), /* kUpb_CType_Message */
- 3, /* kUpb_CType_Double */
- 3, /* kUpb_CType_Int64 */
- 3, /* kUpb_CType_UInt64 */
- UPB_SIZE(3, 4), /* kUpb_CType_String */
- UPB_SIZE(3, 4), /* kUpb_CType_Bytes */
-};
-
/** upb_Message
* *******************************************************************/
@@ -202,7 +171,7 @@ make:
bool upb_Message_Set(upb_Message* msg, const upb_FieldDef* f,
upb_MessageValue val, upb_Arena* a) {
if (upb_FieldDef_IsExtension(f)) {
- upb_Message_Extension* ext = _upb_Message_Getorcreateext(
+ upb_Message_Extension* ext = _upb_Message_GetOrCreateExtension(
msg, _upb_FieldDef_ExtensionMiniTable(f), a);
if (!ext) return false;
memcpy(&ext->data, &val, sizeof(val));
@@ -352,129 +321,3 @@ bool upb_Message_DiscardUnknown(upb_Message* msg, const upb_MessageDef* m,
int maxdepth) {
return _upb_Message_DiscardUnknown(msg, m, maxdepth);
}
-
-/** upb_Array *****************************************************************/
-
-upb_Array* upb_Array_New(upb_Arena* a, upb_CType type) {
- return _upb_Array_New(a, 4, _upb_CTypeo_sizelg2[type]);
-}
-
-size_t upb_Array_Size(const upb_Array* arr) { return arr->len; }
-
-upb_MessageValue upb_Array_Get(const upb_Array* arr, size_t i) {
- upb_MessageValue ret;
- const char* data = _upb_array_constptr(arr);
- int lg2 = arr->data & 7;
- UPB_ASSERT(i < arr->len);
- memcpy(&ret, data + (i << lg2), 1 << lg2);
- return ret;
-}
-
-void upb_Array_Set(upb_Array* arr, size_t i, upb_MessageValue val) {
- char* data = _upb_array_ptr(arr);
- int lg2 = arr->data & 7;
- UPB_ASSERT(i < arr->len);
- memcpy(data + (i << lg2), &val, 1 << lg2);
-}
-
-bool upb_Array_Append(upb_Array* arr, upb_MessageValue val, upb_Arena* arena) {
- if (!upb_Array_Resize(arr, arr->len + 1, arena)) {
- return false;
- }
- upb_Array_Set(arr, arr->len - 1, val);
- return true;
-}
-
-void upb_Array_Move(upb_Array* arr, size_t dst_idx, size_t src_idx,
- size_t count) {
- char* data = _upb_array_ptr(arr);
- int lg2 = arr->data & 7;
- memmove(&data[dst_idx << lg2], &data[src_idx << lg2], count << lg2);
-}
-
-bool upb_Array_Insert(upb_Array* arr, size_t i, size_t count,
- upb_Arena* arena) {
- UPB_ASSERT(i <= arr->len);
- UPB_ASSERT(count + arr->len >= count);
- size_t oldsize = arr->len;
- if (!upb_Array_Resize(arr, arr->len + count, arena)) {
- return false;
- }
- upb_Array_Move(arr, i + count, i, oldsize - i);
- return true;
-}
-
-/*
- * i end arr->len
- * |------------|XXXXXXXX|--------|
- */
-void upb_Array_Delete(upb_Array* arr, size_t i, size_t count) {
- size_t end = i + count;
- UPB_ASSERT(i <= end);
- UPB_ASSERT(end <= arr->len);
- upb_Array_Move(arr, i, end, arr->len - end);
- arr->len -= count;
-}
-
-bool upb_Array_Resize(upb_Array* arr, size_t size, upb_Arena* arena) {
- return _upb_Array_Resize(arr, size, arena);
-}
-
-/** upb_Map *******************************************************************/
-
-upb_Map* upb_Map_New(upb_Arena* a, upb_CType key_type, upb_CType value_type) {
- return _upb_Map_New(a, _upb_CTypeo_mapsize[key_type],
- _upb_CTypeo_mapsize[value_type]);
-}
-
-size_t upb_Map_Size(const upb_Map* map) { return _upb_Map_Size(map); }
-
-bool upb_Map_Get(const upb_Map* map, upb_MessageValue key,
- upb_MessageValue* val) {
- return _upb_Map_Get(map, &key, map->key_size, val, map->val_size);
-}
-
-void upb_Map_Clear(upb_Map* map) { _upb_Map_Clear(map); }
-
-bool upb_Map_Set(upb_Map* map, upb_MessageValue key, upb_MessageValue val,
- upb_Arena* arena) {
- return _upb_Map_Set(map, &key, map->key_size, &val, map->val_size, arena);
-}
-
-bool upb_Map_Delete(upb_Map* map, upb_MessageValue key) {
- return _upb_Map_Delete(map, &key, map->key_size);
-}
-
-bool upb_MapIterator_Next(const upb_Map* map, size_t* iter) {
- return _upb_map_next(map, iter);
-}
-
-bool upb_MapIterator_Done(const upb_Map* map, size_t iter) {
- upb_strtable_iter i;
- UPB_ASSERT(iter != kUpb_Map_Begin);
- i.t = &map->table;
- i.index = iter;
- return upb_strtable_done(&i);
-}
-
-/* Returns the key and value for this entry of the map. */
-upb_MessageValue upb_MapIterator_Key(const upb_Map* map, size_t iter) {
- upb_strtable_iter i;
- upb_MessageValue ret;
- i.t = &map->table;
- i.index = iter;
- _upb_map_fromkey(upb_strtable_iter_key(&i), &ret, map->key_size);
- return ret;
-}
-
-upb_MessageValue upb_MapIterator_Value(const upb_Map* map, size_t iter) {
- upb_strtable_iter i;
- upb_MessageValue ret;
- i.t = &map->table;
- i.index = iter;
- _upb_map_fromvalue(upb_strtable_iter_value(&i), &ret, map->val_size);
- return ret;
-}
-
-/* void upb_MapIterator_SetValue(upb_Map *map, size_t iter, upb_MessageValue
- * value); */
diff --git a/contrib/libs/grpc/third_party/upb/upb/reflection.h b/contrib/libs/grpc/third_party/upb/upb/reflection.h
index b892f66bfb..6071fba6f5 100644
--- a/contrib/libs/grpc/third_party/upb/upb/reflection.h
+++ b/contrib/libs/grpc/third_party/upb/upb/reflection.h
@@ -28,7 +28,9 @@
#ifndef UPB_REFLECTION_H_
#define UPB_REFLECTION_H_
+#include "upb/array.h"
#include "upb/def.h"
+#include "upb/map.h"
#include "upb/msg.h"
#include "upb/port_def.inc"
#include "upb/upb.h"
@@ -37,26 +39,6 @@
extern "C" {
#endif
-typedef union {
- bool bool_val;
- float float_val;
- double double_val;
- int32_t int32_val;
- int64_t int64_val;
- uint32_t uint32_val;
- uint64_t uint64_val;
- const upb_Map* map_val;
- const upb_Message* msg_val;
- const upb_Array* array_val;
- upb_StringView str_val;
-} upb_MessageValue;
-
-typedef union {
- upb_Map* map;
- upb_Message* msg;
- upb_Array* array;
-} upb_MutableMessageValue;
-
upb_MessageValue upb_FieldDef_Default(const upb_FieldDef* f);
/** upb_Message
@@ -119,98 +101,6 @@ bool upb_Message_Next(const upb_Message* msg, const upb_MessageDef* m,
bool upb_Message_DiscardUnknown(upb_Message* msg, const upb_MessageDef* m,
int maxdepth);
-/** upb_Array *****************************************************************/
-
-/* Creates a new array on the given arena that holds elements of this type. */
-upb_Array* upb_Array_New(upb_Arena* a, upb_CType type);
-
-/* Returns the size of the array. */
-size_t upb_Array_Size(const upb_Array* arr);
-
-/* Returns the given element, which must be within the array's current size. */
-upb_MessageValue upb_Array_Get(const upb_Array* arr, size_t i);
-
-/* Sets the given element, which must be within the array's current size. */
-void upb_Array_Set(upb_Array* arr, size_t i, upb_MessageValue val);
-
-/* Appends an element to the array. Returns false on allocation failure. */
-bool upb_Array_Append(upb_Array* array, upb_MessageValue val, upb_Arena* arena);
-
-/* Moves elements within the array using memmove(). Like memmove(), the source
- * and destination elements may be overlapping. */
-void upb_Array_Move(upb_Array* array, size_t dst_idx, size_t src_idx,
- size_t count);
-
-/* Inserts one or more empty elements into the array. Existing elements are
- * shifted right. The new elements have undefined state and must be set with
- * `upb_Array_Set()`.
- * REQUIRES: `i <= upb_Array_Size(arr)` */
-bool upb_Array_Insert(upb_Array* array, size_t i, size_t count,
- upb_Arena* arena);
-
-/* Deletes one or more elements from the array. Existing elements are shifted
- * left.
- * REQUIRES: `i + count <= upb_Array_Size(arr)` */
-void upb_Array_Delete(upb_Array* array, size_t i, size_t count);
-
-/* Changes the size of a vector. New elements are initialized to empty/0.
- * Returns false on allocation failure. */
-bool upb_Array_Resize(upb_Array* array, size_t size, upb_Arena* arena);
-
-/** upb_Map *******************************************************************/
-
-/* Creates a new map on the given arena with the given key/value size. */
-upb_Map* upb_Map_New(upb_Arena* a, upb_CType key_type, upb_CType value_type);
-
-/* Returns the number of entries in the map. */
-size_t upb_Map_Size(const upb_Map* map);
-
-/* Stores a value for the given key into |*val| (or the zero value if the key is
- * not present). Returns whether the key was present. The |val| pointer may be
- * NULL, in which case the function tests whether the given key is present. */
-bool upb_Map_Get(const upb_Map* map, upb_MessageValue key,
- upb_MessageValue* val);
-
-/* Removes all entries in the map. */
-void upb_Map_Clear(upb_Map* map);
-
-/* Sets the given key to the given value. Returns true if this was a new key in
- * the map, or false if an existing key was replaced. */
-bool upb_Map_Set(upb_Map* map, upb_MessageValue key, upb_MessageValue val,
- upb_Arena* arena);
-
-/* Deletes this key from the table. Returns true if the key was present. */
-bool upb_Map_Delete(upb_Map* map, upb_MessageValue key);
-
-/* Map iteration:
- *
- * size_t iter = kUpb_Map_Begin;
- * while (upb_MapIterator_Next(map, &iter)) {
- * upb_MessageValue key = upb_MapIterator_Key(map, iter);
- * upb_MessageValue val = upb_MapIterator_Value(map, iter);
- *
- * // If mutating is desired.
- * upb_MapIterator_SetValue(map, iter, value2);
- * }
- */
-
-/* Advances to the next entry. Returns false if no more entries are present. */
-bool upb_MapIterator_Next(const upb_Map* map, size_t* iter);
-
-/* Returns true if the iterator still points to a valid entry, or false if the
- * iterator is past the last element. It is an error to call this function with
- * kUpb_Map_Begin (you must call next() at least once first). */
-bool upb_MapIterator_Done(const upb_Map* map, size_t iter);
-
-/* Returns the key and value for this entry of the map. */
-upb_MessageValue upb_MapIterator_Key(const upb_Map* map, size_t iter);
-upb_MessageValue upb_MapIterator_Value(const upb_Map* map, size_t iter);
-
-/* Sets the value for this entry. The iterator must not be done, and the
- * iterator must not have been initialized const. */
-void upb_MapIterator_SetValue(upb_Map* map, size_t iter,
- upb_MessageValue value);
-
#ifdef __cplusplus
} /* extern "C" */
#endif
diff --git a/contrib/libs/grpc/third_party/upb/upb/status.c b/contrib/libs/grpc/third_party/upb/upb/status.c
new file mode 100644
index 0000000000..c00b9c86b2
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/status.c
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "upb/status.h"
+
+#include <errno.h>
+#include <float.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "upb/internal/upb.h"
+
+// Must be last.
+#include "upb/port_def.inc"
+
+void upb_Status_Clear(upb_Status* status) {
+ if (!status) return;
+ status->ok = true;
+ status->msg[0] = '\0';
+}
+
+bool upb_Status_IsOk(const upb_Status* status) { return status->ok; }
+
+const char* upb_Status_ErrorMessage(const upb_Status* status) {
+ return status->msg;
+}
+
+void upb_Status_SetErrorMessage(upb_Status* status, const char* msg) {
+ if (!status) return;
+ status->ok = false;
+ strncpy(status->msg, msg, _kUpb_Status_MaxMessage - 1);
+ status->msg[_kUpb_Status_MaxMessage - 1] = '\0';
+}
+
+void upb_Status_SetErrorFormat(upb_Status* status, const char* fmt, ...) {
+ va_list args;
+ va_start(args, fmt);
+ upb_Status_VSetErrorFormat(status, fmt, args);
+ va_end(args);
+}
+
+void upb_Status_VSetErrorFormat(upb_Status* status, const char* fmt,
+ va_list args) {
+ if (!status) return;
+ status->ok = false;
+ vsnprintf(status->msg, sizeof(status->msg), fmt, args);
+ status->msg[_kUpb_Status_MaxMessage - 1] = '\0';
+}
+
+void upb_Status_VAppendErrorFormat(upb_Status* status, const char* fmt,
+ va_list args) {
+ size_t len;
+ if (!status) return;
+ status->ok = false;
+ len = strlen(status->msg);
+ vsnprintf(status->msg + len, sizeof(status->msg) - len, fmt, args);
+ status->msg[_kUpb_Status_MaxMessage - 1] = '\0';
+}
diff --git a/contrib/libs/grpc/third_party/upb/upb/status.h b/contrib/libs/grpc/third_party/upb/upb/status.h
new file mode 100644
index 0000000000..2c5c2a7f8b
--- /dev/null
+++ b/contrib/libs/grpc/third_party/upb/upb/status.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2009-2021, Google LLC
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Google LLC nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL Google LLC BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef UPB_STATUS_H_
+#define UPB_STATUS_H_
+
+#include <stdarg.h>
+#include <stdbool.h>
+
+#include "upb/port_def.inc"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define _kUpb_Status_MaxMessage 127
+
+typedef struct {
+ bool ok;
+ char msg[_kUpb_Status_MaxMessage]; /* Error message; NULL-terminated. */
+} upb_Status;
+
+const char* upb_Status_ErrorMessage(const upb_Status* status);
+bool upb_Status_IsOk(const upb_Status* status);
+
+/* These are no-op if |status| is NULL. */
+void upb_Status_Clear(upb_Status* status);
+void upb_Status_SetErrorMessage(upb_Status* status, const char* msg);
+void upb_Status_SetErrorFormat(upb_Status* status, const char* fmt, ...)
+ UPB_PRINTF(2, 3);
+void upb_Status_VSetErrorFormat(upb_Status* status, const char* fmt,
+ va_list args) UPB_PRINTF(2, 0);
+void upb_Status_VAppendErrorFormat(upb_Status* status, const char* fmt,
+ va_list args) UPB_PRINTF(2, 0);
+
+#include "upb/port_undef.inc"
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* UPB_STATUS_H_ */
diff --git a/contrib/libs/grpc/third_party/upb/upb/table.c b/contrib/libs/grpc/third_party/upb/upb/table.c
index 33b3a9dc6e..e8e55f7e34 100644
--- a/contrib/libs/grpc/third_party/upb/upb/table.c
+++ b/contrib/libs/grpc/third_party/upb/upb/table.c
@@ -31,9 +31,9 @@
* Implementation is heavily inspired by Lua's ltable.c.
*/
-#include <string.h>
+#include "upb/internal/table.h"
-#include "upb/table_internal.h"
+#include <string.h>
/* Must be last. */
#include "upb/port_def.inc"
@@ -433,14 +433,18 @@ const uint64_t kWyhashSalt[5] = {
0x082EFA98EC4E6C89ULL, 0x452821E638D01377ULL,
};
-static uint32_t table_hash(const char* p, size_t n) {
- return Wyhash(p, n, 0, kWyhashSalt);
+uint32_t _upb_Hash(const void* p, size_t n, uint64_t seed) {
+ return Wyhash(p, n, seed, kWyhashSalt);
+}
+
+static uint32_t _upb_Hash_NoSeed(const char* p, size_t n) {
+ return _upb_Hash(p, n, 0);
}
static uint32_t strhash(upb_tabkey key) {
uint32_t len;
char* str = upb_tabstr(key, &len);
- return table_hash(str, len);
+ return _upb_Hash_NoSeed(str, len);
}
static bool streql(upb_tabkey k1, lookupkey_t k2) {
@@ -496,20 +500,20 @@ bool upb_strtable_insert(upb_strtable* t, const char* k, size_t len,
tabkey = strcopy(key, a);
if (tabkey == 0) return false;
- hash = table_hash(key.str.str, key.str.len);
+ hash = _upb_Hash_NoSeed(key.str.str, key.str.len);
insert(&t->t, key, tabkey, v, hash, &strhash, &streql);
return true;
}
bool upb_strtable_lookup2(const upb_strtable* t, const char* key, size_t len,
upb_value* v) {
- uint32_t hash = table_hash(key, len);
+ uint32_t hash = _upb_Hash_NoSeed(key, len);
return lookup(&t->t, strkey2(key, len), v, hash, &streql);
}
bool upb_strtable_remove2(upb_strtable* t, const char* key, size_t len,
upb_value* val) {
- uint32_t hash = table_hash(key, len);
+ uint32_t hash = _upb_Hash_NoSeed(key, len);
upb_tabkey tabkey;
return rm(&t->t, strkey2(key, len), val, &tabkey, hash, &streql);
}
diff --git a/contrib/libs/grpc/third_party/upb/upb/text_encode.c b/contrib/libs/grpc/third_party/upb/upb/text_encode.c
index 9612375dba..dfb213f2bb 100644
--- a/contrib/libs/grpc/third_party/upb/upb/text_encode.c
+++ b/contrib/libs/grpc/third_party/upb/upb/text_encode.c
@@ -34,8 +34,9 @@
#include <stdio.h>
#include <string.h>
+#include "upb/internal/upb.h"
+#include "upb/internal/vsnprintf_compat.h"
#include "upb/reflection.h"
-#include "upb/upb_internal.h"
// Must be last.
#include "upb/port_def.inc"
@@ -76,7 +77,7 @@ static void txtenc_printf(txtenc* e, const char* fmt, ...) {
va_list args;
va_start(args, fmt);
- n = vsnprintf(e->ptr, have, fmt, args);
+ n = _upb_vsnprintf(e->ptr, have, fmt, args);
va_end(args);
if (UPB_LIKELY(have > n)) {
diff --git a/contrib/libs/grpc/third_party/upb/upb/upb.c b/contrib/libs/grpc/third_party/upb/upb/upb.c
index 55730bbe82..08ae964777 100644
--- a/contrib/libs/grpc/third_party/upb/upb/upb.c
+++ b/contrib/libs/grpc/third_party/upb/upb/upb.c
@@ -25,6 +25,8 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include "upb/internal/upb.h"
+
#include <errno.h>
#include <float.h>
#include <stdarg.h>
@@ -34,300 +36,12 @@
#include <stdlib.h>
#include <string.h>
-#include "upb/upb_internal.h"
+#include "upb/arena.h"
+#include "upb/status.h"
// Must be last.
#include "upb/port_def.inc"
-/* upb_Status *****************************************************************/
-
-void upb_Status_Clear(upb_Status* status) {
- if (!status) return;
- status->ok = true;
- status->msg[0] = '\0';
-}
-
-bool upb_Status_IsOk(const upb_Status* status) { return status->ok; }
-
-const char* upb_Status_ErrorMessage(const upb_Status* status) {
- return status->msg;
-}
-
-void upb_Status_SetErrorMessage(upb_Status* status, const char* msg) {
- if (!status) return;
- status->ok = false;
- strncpy(status->msg, msg, _kUpb_Status_MaxMessage - 1);
- status->msg[_kUpb_Status_MaxMessage - 1] = '\0';
-}
-
-void upb_Status_SetErrorFormat(upb_Status* status, const char* fmt, ...) {
- va_list args;
- va_start(args, fmt);
- upb_Status_VSetErrorFormat(status, fmt, args);
- va_end(args);
-}
-
-void upb_Status_VSetErrorFormat(upb_Status* status, const char* fmt,
- va_list args) {
- if (!status) return;
- status->ok = false;
- vsnprintf(status->msg, sizeof(status->msg), fmt, args);
- status->msg[_kUpb_Status_MaxMessage - 1] = '\0';
-}
-
-void upb_Status_VAppendErrorFormat(upb_Status* status, const char* fmt,
- va_list args) {
- size_t len;
- if (!status) return;
- status->ok = false;
- len = strlen(status->msg);
- vsnprintf(status->msg + len, sizeof(status->msg) - len, fmt, args);
- status->msg[_kUpb_Status_MaxMessage - 1] = '\0';
-}
-
-/* upb_alloc ******************************************************************/
-
-static void* upb_global_allocfunc(upb_alloc* alloc, void* ptr, size_t oldsize,
- size_t size) {
- UPB_UNUSED(alloc);
- UPB_UNUSED(oldsize);
- if (size == 0) {
- free(ptr);
- return NULL;
- } else {
- return realloc(ptr, size);
- }
-}
-
-static uint32_t* upb_cleanup_pointer(uintptr_t cleanup_metadata) {
- return (uint32_t*)(cleanup_metadata & ~0x1);
-}
-
-static bool upb_cleanup_has_initial_block(uintptr_t cleanup_metadata) {
- return cleanup_metadata & 0x1;
-}
-
-static uintptr_t upb_cleanup_metadata(uint32_t* cleanup,
- bool has_initial_block) {
- return (uintptr_t)cleanup | has_initial_block;
-}
-
-upb_alloc upb_alloc_global = {&upb_global_allocfunc};
-
-/* upb_Arena ******************************************************************/
-
-/* Be conservative and choose 16 in case anyone is using SSE. */
-
-struct mem_block {
- struct mem_block* next;
- uint32_t size;
- uint32_t cleanups;
- /* Data follows. */
-};
-
-typedef struct cleanup_ent {
- upb_CleanupFunc* cleanup;
- void* ud;
-} cleanup_ent;
-
-static const size_t memblock_reserve = UPB_ALIGN_UP(sizeof(mem_block), 16);
-
-static upb_Arena* arena_findroot(upb_Arena* a) {
- /* Path splitting keeps time complexity down, see:
- * https://en.wikipedia.org/wiki/Disjoint-set_data_structure */
- while (a->parent != a) {
- upb_Arena* next = a->parent;
- a->parent = next->parent;
- a = next;
- }
- return a;
-}
-
-static void upb_Arena_addblock(upb_Arena* a, upb_Arena* root, void* ptr,
- size_t size) {
- mem_block* block = ptr;
-
- /* The block is for arena |a|, but should appear in the freelist of |root|. */
- block->next = root->freelist;
- block->size = (uint32_t)size;
- block->cleanups = 0;
- root->freelist = block;
- a->last_size = block->size;
- if (!root->freelist_tail) root->freelist_tail = block;
-
- a->head.ptr = UPB_PTR_AT(block, memblock_reserve, char);
- a->head.end = UPB_PTR_AT(block, size, char);
- a->cleanup_metadata = upb_cleanup_metadata(
- &block->cleanups, upb_cleanup_has_initial_block(a->cleanup_metadata));
-
- UPB_POISON_MEMORY_REGION(a->head.ptr, a->head.end - a->head.ptr);
-}
-
-static bool upb_Arena_Allocblock(upb_Arena* a, size_t size) {
- upb_Arena* root = arena_findroot(a);
- size_t block_size = UPB_MAX(size, a->last_size * 2) + memblock_reserve;
- mem_block* block = upb_malloc(root->block_alloc, block_size);
-
- if (!block) return false;
- upb_Arena_addblock(a, root, block, block_size);
- return true;
-}
-
-void* _upb_Arena_SlowMalloc(upb_Arena* a, size_t size) {
- if (!upb_Arena_Allocblock(a, size)) return NULL; /* Out of memory. */
- UPB_ASSERT(_upb_ArenaHas(a) >= size);
- return upb_Arena_Malloc(a, size);
-}
-
-static void* upb_Arena_doalloc(upb_alloc* alloc, void* ptr, size_t oldsize,
- size_t size) {
- upb_Arena* a = (upb_Arena*)alloc; /* upb_alloc is initial member. */
- return upb_Arena_Realloc(a, ptr, oldsize, size);
-}
-
-/* Public Arena API ***********************************************************/
-
-upb_Arena* arena_initslow(void* mem, size_t n, upb_alloc* alloc) {
- const size_t first_block_overhead = sizeof(upb_Arena) + memblock_reserve;
- upb_Arena* a;
-
- /* We need to malloc the initial block. */
- n = first_block_overhead + 256;
- if (!alloc || !(mem = upb_malloc(alloc, n))) {
- return NULL;
- }
-
- a = UPB_PTR_AT(mem, n - sizeof(*a), upb_Arena);
- n -= sizeof(*a);
-
- a->head.alloc.func = &upb_Arena_doalloc;
- a->block_alloc = alloc;
- a->parent = a;
- a->refcount = 1;
- a->freelist = NULL;
- a->freelist_tail = NULL;
- a->cleanup_metadata = upb_cleanup_metadata(NULL, false);
-
- upb_Arena_addblock(a, a, mem, n);
-
- return a;
-}
-
-upb_Arena* upb_Arena_Init(void* mem, size_t n, upb_alloc* alloc) {
- upb_Arena* a;
-
- if (n) {
- /* Align initial pointer up so that we return properly-aligned pointers. */
- void* aligned = (void*)UPB_ALIGN_UP((uintptr_t)mem, 16);
- size_t delta = (uintptr_t)aligned - (uintptr_t)mem;
- n = delta <= n ? n - delta : 0;
- mem = aligned;
- }
-
- /* Round block size down to alignof(*a) since we will allocate the arena
- * itself at the end. */
- n = UPB_ALIGN_DOWN(n, UPB_ALIGN_OF(upb_Arena));
-
- if (UPB_UNLIKELY(n < sizeof(upb_Arena))) {
- return arena_initslow(mem, n, alloc);
- }
-
- a = UPB_PTR_AT(mem, n - sizeof(*a), upb_Arena);
-
- a->head.alloc.func = &upb_Arena_doalloc;
- a->block_alloc = alloc;
- a->parent = a;
- a->refcount = 1;
- a->last_size = UPB_MAX(128, n);
- a->head.ptr = mem;
- a->head.end = UPB_PTR_AT(mem, n - sizeof(*a), char);
- a->freelist = NULL;
- a->cleanup_metadata = upb_cleanup_metadata(NULL, true);
-
- return a;
-}
-
-static void arena_dofree(upb_Arena* a) {
- mem_block* block = a->freelist;
- UPB_ASSERT(a->parent == a);
- UPB_ASSERT(a->refcount == 0);
-
- while (block) {
- /* Load first since we are deleting block. */
- mem_block* next = block->next;
-
- if (block->cleanups > 0) {
- cleanup_ent* end = UPB_PTR_AT(block, block->size, void);
- cleanup_ent* ptr = end - block->cleanups;
-
- for (; ptr < end; ptr++) {
- ptr->cleanup(ptr->ud);
- }
- }
-
- upb_free(a->block_alloc, block);
- block = next;
- }
-}
-
-void upb_Arena_Free(upb_Arena* a) {
- a = arena_findroot(a);
- if (--a->refcount == 0) arena_dofree(a);
-}
-
-bool upb_Arena_AddCleanup(upb_Arena* a, void* ud, upb_CleanupFunc* func) {
- cleanup_ent* ent;
- uint32_t* cleanups = upb_cleanup_pointer(a->cleanup_metadata);
-
- if (!cleanups || _upb_ArenaHas(a) < sizeof(cleanup_ent)) {
- if (!upb_Arena_Allocblock(a, 128)) return false; /* Out of memory. */
- UPB_ASSERT(_upb_ArenaHas(a) >= sizeof(cleanup_ent));
- cleanups = upb_cleanup_pointer(a->cleanup_metadata);
- }
-
- a->head.end -= sizeof(cleanup_ent);
- ent = (cleanup_ent*)a->head.end;
- (*cleanups)++;
- UPB_UNPOISON_MEMORY_REGION(ent, sizeof(cleanup_ent));
-
- ent->cleanup = func;
- ent->ud = ud;
-
- return true;
-}
-
-bool upb_Arena_Fuse(upb_Arena* a1, upb_Arena* a2) {
- upb_Arena* r1 = arena_findroot(a1);
- upb_Arena* r2 = arena_findroot(a2);
-
- if (r1 == r2) return true; /* Already fused. */
-
- /* Do not fuse initial blocks since we cannot lifetime extend them. */
- if (upb_cleanup_has_initial_block(r1->cleanup_metadata)) return false;
- if (upb_cleanup_has_initial_block(r2->cleanup_metadata)) return false;
-
- /* Only allow fuse with a common allocator */
- if (r1->block_alloc != r2->block_alloc) return false;
-
- /* We want to join the smaller tree to the larger tree.
- * So swap first if they are backwards. */
- if (r1->refcount < r2->refcount) {
- upb_Arena* tmp = r1;
- r1 = r2;
- r2 = tmp;
- }
-
- /* r1 takes over r2's freelist and refcount. */
- r1->refcount += r2->refcount;
- if (r2->freelist_tail) {
- UPB_ASSERT(r2->freelist_tail->next == NULL);
- r2->freelist_tail->next = r1->freelist;
- r1->freelist = r2->freelist;
- }
- r2->parent = r1;
- return true;
-}
-
/* Miscellaneous utilities ****************************************************/
static void upb_FixLocale(char* p) {
diff --git a/contrib/libs/grpc/third_party/upb/upb/upb.h b/contrib/libs/grpc/third_party/upb/upb/upb.h
index 12aecb46cb..7398d09fff 100644
--- a/contrib/libs/grpc/third_party/upb/upb/upb.h
+++ b/contrib/libs/grpc/third_party/upb/upb/upb.h
@@ -39,34 +39,17 @@
#include <stdint.h>
#include <string.h>
+// TODO(b/232091617): Remove these and fix everything that breaks as a result.
+#include "upb/arena.h"
+#include "upb/status.h"
+
+// Must be last.
#include "upb/port_def.inc"
#ifdef __cplusplus
extern "C" {
#endif
-/* upb_Status *****************************************************************/
-
-#define _kUpb_Status_MaxMessage 127
-
-typedef struct {
- bool ok;
- char msg[_kUpb_Status_MaxMessage]; /* Error message; NULL-terminated. */
-} upb_Status;
-
-const char* upb_Status_ErrorMessage(const upb_Status* status);
-bool upb_Status_IsOk(const upb_Status* status);
-
-/* These are no-op if |status| is NULL. */
-void upb_Status_Clear(upb_Status* status);
-void upb_Status_SetErrorMessage(upb_Status* status, const char* msg);
-void upb_Status_SetErrorFormat(upb_Status* status, const char* fmt, ...)
- UPB_PRINTF(2, 3);
-void upb_Status_VSetErrorFormat(upb_Status* status, const char* fmt,
- va_list args) UPB_PRINTF(2, 0);
-void upb_Status_VAppendErrorFormat(upb_Status* status, const char* fmt,
- va_list args) UPB_PRINTF(2, 0);
-
/** upb_StringView ************************************************************/
typedef struct {
@@ -96,148 +79,6 @@ UPB_INLINE bool upb_StringView_IsEqual(upb_StringView a, upb_StringView b) {
#define UPB_STRINGVIEW_FORMAT "%.*s"
#define UPB_STRINGVIEW_ARGS(view) (int)(view).size, (view).data
-/** upb_alloc *****************************************************************/
-
-/* A upb_alloc is a possibly-stateful allocator object.
- *
- * It could either be an arena allocator (which doesn't require individual
- * free() calls) or a regular malloc() (which does). The client must therefore
- * free memory unless it knows that the allocator is an arena allocator. */
-
-struct upb_alloc;
-typedef struct upb_alloc upb_alloc;
-
-/* A malloc()/free() function.
- * If "size" is 0 then the function acts like free(), otherwise it acts like
- * realloc(). Only "oldsize" bytes from a previous allocation are preserved. */
-typedef void* upb_alloc_func(upb_alloc* alloc, void* ptr, size_t oldsize,
- size_t size);
-
-struct upb_alloc {
- upb_alloc_func* func;
-};
-
-UPB_INLINE void* upb_malloc(upb_alloc* alloc, size_t size) {
- UPB_ASSERT(alloc);
- return alloc->func(alloc, NULL, 0, size);
-}
-
-UPB_INLINE void* upb_realloc(upb_alloc* alloc, void* ptr, size_t oldsize,
- size_t size) {
- UPB_ASSERT(alloc);
- return alloc->func(alloc, ptr, oldsize, size);
-}
-
-UPB_INLINE void upb_free(upb_alloc* alloc, void* ptr) {
- assert(alloc);
- alloc->func(alloc, ptr, 0, 0);
-}
-
-/* The global allocator used by upb. Uses the standard malloc()/free(). */
-
-extern upb_alloc upb_alloc_global;
-
-/* Functions that hard-code the global malloc.
- *
- * We still get benefit because we can put custom logic into our global
- * allocator, like injecting out-of-memory faults in debug/testing builds. */
-
-UPB_INLINE void* upb_gmalloc(size_t size) {
- return upb_malloc(&upb_alloc_global, size);
-}
-
-UPB_INLINE void* upb_grealloc(void* ptr, size_t oldsize, size_t size) {
- return upb_realloc(&upb_alloc_global, ptr, oldsize, size);
-}
-
-UPB_INLINE void upb_gfree(void* ptr) { upb_free(&upb_alloc_global, ptr); }
-
-/* upb_Arena ******************************************************************/
-
-/* upb_Arena is a specific allocator implementation that uses arena allocation.
- * The user provides an allocator that will be used to allocate the underlying
- * arena blocks. Arenas by nature do not require the individual allocations
- * to be freed. However the Arena does allow users to register cleanup
- * functions that will run when the arena is destroyed.
- *
- * A upb_Arena is *not* thread-safe.
- *
- * You could write a thread-safe arena allocator that satisfies the
- * upb_alloc interface, but it would not be as efficient for the
- * single-threaded case. */
-
-typedef void upb_CleanupFunc(void* ud);
-
-struct upb_Arena;
-typedef struct upb_Arena upb_Arena;
-
-typedef struct {
- /* We implement the allocator interface.
- * This must be the first member of upb_Arena!
- * TODO(haberman): remove once handlers are gone. */
- upb_alloc alloc;
-
- char *ptr, *end;
-} _upb_ArenaHead;
-
-/* Creates an arena from the given initial block (if any -- n may be 0).
- * Additional blocks will be allocated from |alloc|. If |alloc| is NULL, this
- * is a fixed-size arena and cannot grow. */
-upb_Arena* upb_Arena_Init(void* mem, size_t n, upb_alloc* alloc);
-void upb_Arena_Free(upb_Arena* a);
-bool upb_Arena_AddCleanup(upb_Arena* a, void* ud, upb_CleanupFunc* func);
-bool upb_Arena_Fuse(upb_Arena* a, upb_Arena* b);
-void* _upb_Arena_SlowMalloc(upb_Arena* a, size_t size);
-
-UPB_INLINE upb_alloc* upb_Arena_Alloc(upb_Arena* a) { return (upb_alloc*)a; }
-
-UPB_INLINE size_t _upb_ArenaHas(upb_Arena* a) {
- _upb_ArenaHead* h = (_upb_ArenaHead*)a;
- return (size_t)(h->end - h->ptr);
-}
-
-UPB_INLINE void* upb_Arena_Malloc(upb_Arena* a, size_t size) {
- _upb_ArenaHead* h = (_upb_ArenaHead*)a;
- void* ret;
- size = UPB_ALIGN_MALLOC(size);
-
- if (UPB_UNLIKELY(_upb_ArenaHas(a) < size)) {
- return _upb_Arena_SlowMalloc(a, size);
- }
-
- ret = h->ptr;
- h->ptr += size;
- UPB_UNPOISON_MEMORY_REGION(ret, size);
-
-#if UPB_ASAN
- {
- size_t guard_size = 32;
- if (_upb_ArenaHas(a) >= guard_size) {
- h->ptr += guard_size;
- } else {
- h->ptr = h->end;
- }
- }
-#endif
-
- return ret;
-}
-
-UPB_INLINE void* upb_Arena_Realloc(upb_Arena* a, void* ptr, size_t oldsize,
- size_t size) {
- void* ret = upb_Arena_Malloc(a, size);
-
- if (ret && oldsize > 0) {
- memcpy(ret, ptr, oldsize);
- }
-
- return ret;
-}
-
-UPB_INLINE upb_Arena* upb_Arena_New(void) {
- return upb_Arena_Init(NULL, 0, &upb_alloc_global);
-}
-
/* Constants ******************************************************************/
/* A list of types as they are encoded on-the-wire. */
@@ -316,8 +157,8 @@ UPB_INLINE uint64_t _upb_BigEndian_Swap64(uint64_t val) {
if (_upb_IsLittleEndian()) {
return val;
} else {
- return ((uint64_t)_upb_BigEndian_Swap32(val) << 32) |
- _upb_BigEndian_Swap32(val >> 32);
+ return ((uint64_t)_upb_BigEndian_Swap32((uint32_t)val) << 32) |
+ _upb_BigEndian_Swap32((uint32_t)(val >> 32));
}
}
@@ -332,7 +173,7 @@ UPB_INLINE int _upb_Log2Ceiling(int x) {
#endif
}
-UPB_INLINE int _upb_Log2Ceilingsize(int x) { return 1 << _upb_Log2Ceiling(x); }
+UPB_INLINE int _upb_Log2CeilingSize(int x) { return 1 << _upb_Log2Ceiling(x); }
#include "upb/port_undef.inc"
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/cleanup/cleanup.h b/contrib/restricted/abseil-cpp-tstring/y_absl/cleanup/cleanup.h
new file mode 100644
index 0000000000..949592a4f2
--- /dev/null
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/cleanup/cleanup.h
@@ -0,0 +1,140 @@
+// Copyright 2021 The Abseil Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// -----------------------------------------------------------------------------
+// File: cleanup.h
+// -----------------------------------------------------------------------------
+//
+// `y_absl::Cleanup` implements the scope guard idiom, invoking the contained
+// callback's `operator()() &&` on scope exit.
+//
+// Example:
+//
+// ```
+// y_absl::Status CopyGoodData(const char* source_path, const char* sink_path) {
+// FILE* source_file = fopen(source_path, "r");
+// if (source_file == nullptr) {
+// return y_absl::NotFoundError("No source file"); // No cleanups execute
+// }
+//
+// // C++17 style cleanup using class template argument deduction
+// y_absl::Cleanup source_closer = [source_file] { fclose(source_file); };
+//
+// FILE* sink_file = fopen(sink_path, "w");
+// if (sink_file == nullptr) {
+// return y_absl::NotFoundError("No sink file"); // First cleanup executes
+// }
+//
+// // C++11 style cleanup using the factory function
+// auto sink_closer = y_absl::MakeCleanup([sink_file] { fclose(sink_file); });
+//
+// Data data;
+// while (ReadData(source_file, &data)) {
+// if (!data.IsGood()) {
+// y_absl::Status result = y_absl::FailedPreconditionError("Read bad data");
+// return result; // Both cleanups execute
+// }
+// SaveData(sink_file, &data);
+// }
+//
+// return y_absl::OkStatus(); // Both cleanups execute
+// }
+// ```
+//
+// Methods:
+//
+// `std::move(cleanup).Cancel()` will prevent the callback from executing.
+//
+// `std::move(cleanup).Invoke()` will execute the callback early, before
+// destruction, and prevent the callback from executing in the destructor.
+//
+// Usage:
+//
+// `y_absl::Cleanup` is not an interface type. It is only intended to be used
+// within the body of a function. It is not a value type and instead models a
+// control flow construct. Check out `defer` in Golang for something similar.
+
+#ifndef Y_ABSL_CLEANUP_CLEANUP_H_
+#define Y_ABSL_CLEANUP_CLEANUP_H_
+
+#include <utility>
+
+#include "y_absl/base/config.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/cleanup/internal/cleanup.h"
+
+namespace y_absl {
+Y_ABSL_NAMESPACE_BEGIN
+
+template <typename Arg, typename Callback = void()>
+class Y_ABSL_MUST_USE_RESULT Cleanup final {
+ static_assert(cleanup_internal::WasDeduced<Arg>(),
+ "Explicit template parameters are not supported.");
+
+ static_assert(cleanup_internal::ReturnsVoid<Callback>(),
+ "Callbacks that return values are not supported.");
+
+ public:
+ Cleanup(Callback callback) : storage_(std::move(callback)) {} // NOLINT
+
+ Cleanup(Cleanup&& other) = default;
+
+ void Cancel() && {
+ Y_ABSL_HARDENING_ASSERT(storage_.IsCallbackEngaged());
+ storage_.DestroyCallback();
+ }
+
+ void Invoke() && {
+ Y_ABSL_HARDENING_ASSERT(storage_.IsCallbackEngaged());
+ storage_.InvokeCallback();
+ storage_.DestroyCallback();
+ }
+
+ ~Cleanup() {
+ if (storage_.IsCallbackEngaged()) {
+ storage_.InvokeCallback();
+ storage_.DestroyCallback();
+ }
+ }
+
+ private:
+ cleanup_internal::Storage<Callback> storage_;
+};
+
+// `y_absl::Cleanup c = /* callback */;`
+//
+// C++17 type deduction API for creating an instance of `y_absl::Cleanup`
+#if defined(Y_ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION)
+template <typename Callback>
+Cleanup(Callback callback) -> Cleanup<cleanup_internal::Tag, Callback>;
+#endif // defined(Y_ABSL_HAVE_CLASS_TEMPLATE_ARGUMENT_DEDUCTION)
+
+// `auto c = y_absl::MakeCleanup(/* callback */);`
+//
+// C++11 type deduction API for creating an instance of `y_absl::Cleanup`
+template <typename... Args, typename Callback>
+y_absl::Cleanup<cleanup_internal::Tag, Callback> MakeCleanup(Callback callback) {
+ static_assert(cleanup_internal::WasDeduced<cleanup_internal::Tag, Args...>(),
+ "Explicit template parameters are not supported.");
+
+ static_assert(cleanup_internal::ReturnsVoid<Callback>(),
+ "Callbacks that return values are not supported.");
+
+ return {std::move(callback)};
+}
+
+Y_ABSL_NAMESPACE_END
+} // namespace y_absl
+
+#endif // Y_ABSL_CLEANUP_CLEANUP_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/cleanup/internal/cleanup.h b/contrib/restricted/abseil-cpp-tstring/y_absl/cleanup/internal/cleanup.h
new file mode 100644
index 0000000000..6b7cc3698e
--- /dev/null
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/cleanup/internal/cleanup.h
@@ -0,0 +1,100 @@
+// Copyright 2021 The Abseil Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef Y_ABSL_CLEANUP_INTERNAL_CLEANUP_H_
+#define Y_ABSL_CLEANUP_INTERNAL_CLEANUP_H_
+
+#include <new>
+#include <type_traits>
+#include <utility>
+
+#include "y_absl/base/internal/invoke.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/thread_annotations.h"
+#include "y_absl/utility/utility.h"
+
+namespace y_absl {
+Y_ABSL_NAMESPACE_BEGIN
+
+namespace cleanup_internal {
+
+struct Tag {};
+
+template <typename Arg, typename... Args>
+constexpr bool WasDeduced() {
+ return (std::is_same<cleanup_internal::Tag, Arg>::value) &&
+ (sizeof...(Args) == 0);
+}
+
+template <typename Callback>
+constexpr bool ReturnsVoid() {
+ return (std::is_same<base_internal::invoke_result_t<Callback>, void>::value);
+}
+
+template <typename Callback>
+class Storage {
+ public:
+ Storage() = delete;
+
+ explicit Storage(Callback callback) {
+ // Placement-new into a character buffer is used for eager destruction when
+ // the cleanup is invoked or cancelled. To ensure this optimizes well, the
+ // behavior is implemented locally instead of using an y_absl::optional.
+ ::new (GetCallbackBuffer()) Callback(std::move(callback));
+ is_callback_engaged_ = true;
+ }
+
+ Storage(Storage&& other) {
+ Y_ABSL_HARDENING_ASSERT(other.IsCallbackEngaged());
+
+ ::new (GetCallbackBuffer()) Callback(std::move(other.GetCallback()));
+ is_callback_engaged_ = true;
+
+ other.DestroyCallback();
+ }
+
+ Storage(const Storage& other) = delete;
+
+ Storage& operator=(Storage&& other) = delete;
+
+ Storage& operator=(const Storage& other) = delete;
+
+ void* GetCallbackBuffer() { return static_cast<void*>(+callback_buffer_); }
+
+ Callback& GetCallback() {
+ return *reinterpret_cast<Callback*>(GetCallbackBuffer());
+ }
+
+ bool IsCallbackEngaged() const { return is_callback_engaged_; }
+
+ void DestroyCallback() {
+ is_callback_engaged_ = false;
+ GetCallback().~Callback();
+ }
+
+ void InvokeCallback() Y_ABSL_NO_THREAD_SAFETY_ANALYSIS {
+ std::move(GetCallback())();
+ }
+
+ private:
+ bool is_callback_engaged_;
+ alignas(Callback) char callback_buffer_[sizeof(Callback)];
+};
+
+} // namespace cleanup_internal
+
+Y_ABSL_NAMESPACE_END
+} // namespace y_absl
+
+#endif // Y_ABSL_CLEANUP_INTERNAL_CLEANUP_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/container/flat_hash_set.h b/contrib/restricted/abseil-cpp-tstring/y_absl/container/flat_hash_set.h
new file mode 100644
index 0000000000..3680fb24c7
--- /dev/null
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/container/flat_hash_set.h
@@ -0,0 +1,503 @@
+// Copyright 2018 The Abseil Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// -----------------------------------------------------------------------------
+// File: flat_hash_set.h
+// -----------------------------------------------------------------------------
+//
+// An `y_absl::flat_hash_set<T>` is an unordered associative container designed to
+// be a more efficient replacement for `std::unordered_set`. Like
+// `unordered_set`, search, insertion, and deletion of set elements can be done
+// as an `O(1)` operation. However, `flat_hash_set` (and other unordered
+// associative containers known as the collection of Abseil "Swiss tables")
+// contain other optimizations that result in both memory and computation
+// advantages.
+//
+// In most cases, your default choice for a hash set should be a set of type
+// `flat_hash_set`.
+#ifndef Y_ABSL_CONTAINER_FLAT_HASH_SET_H_
+#define Y_ABSL_CONTAINER_FLAT_HASH_SET_H_
+
+#include <type_traits>
+#include <utility>
+
+#include "y_absl/algorithm/container.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/container/internal/container_memory.h"
+#include "y_absl/container/internal/hash_function_defaults.h" // IWYU pragma: export
+#include "y_absl/container/internal/raw_hash_set.h" // IWYU pragma: export
+#include "y_absl/memory/memory.h"
+
+namespace y_absl {
+Y_ABSL_NAMESPACE_BEGIN
+namespace container_internal {
+template <typename T>
+struct FlatHashSetPolicy;
+} // namespace container_internal
+
+// -----------------------------------------------------------------------------
+// y_absl::flat_hash_set
+// -----------------------------------------------------------------------------
+//
+// An `y_absl::flat_hash_set<T>` is an unordered associative container which has
+// been optimized for both speed and memory footprint in most common use cases.
+// Its interface is similar to that of `std::unordered_set<T>` with the
+// following notable differences:
+//
+// * Requires keys that are CopyConstructible
+// * Supports heterogeneous lookup, through `find()` and `insert()`, provided
+// that the set is provided a compatible heterogeneous hashing function and
+// equality operator.
+// * Invalidates any references and pointers to elements within the table after
+// `rehash()`.
+// * Contains a `capacity()` member function indicating the number of element
+// slots (open, deleted, and empty) within the hash set.
+// * Returns `void` from the `erase(iterator)` overload.
+//
+// By default, `flat_hash_set` uses the `y_absl::Hash` hashing framework. All
+// fundamental and Abseil types that support the `y_absl::Hash` framework have a
+// compatible equality operator for comparing insertions into `flat_hash_set`.
+// If your type is not yet supported by the `y_absl::Hash` framework, see
+// y_absl/hash/hash.h for information on extending Abseil hashing to user-defined
+// types.
+//
+// Using `y_absl::flat_hash_set` at interface boundaries in dynamically loaded
+// libraries (e.g. .dll, .so) is unsupported due to way `y_absl::Hash` values may
+// be randomized across dynamically loaded libraries.
+//
+// NOTE: A `flat_hash_set` stores its keys directly inside its implementation
+// array to avoid memory indirection. Because a `flat_hash_set` is designed to
+// move data when rehashed, set keys will not retain pointer stability. If you
+// require pointer stability, consider using
+// `y_absl::flat_hash_set<std::unique_ptr<T>>`. If your type is not moveable and
+// you require pointer stability, consider `y_absl::node_hash_set` instead.
+//
+// Example:
+//
+// // Create a flat hash set of three strings
+// y_absl::flat_hash_set<TString> ducks =
+// {"huey", "dewey", "louie"};
+//
+// // Insert a new element into the flat hash set
+// ducks.insert("donald");
+//
+// // Force a rehash of the flat hash set
+// ducks.rehash(0);
+//
+// // See if "dewey" is present
+// if (ducks.contains("dewey")) {
+// std::cout << "We found dewey!" << std::endl;
+// }
+template <class T, class Hash = y_absl::container_internal::hash_default_hash<T>,
+ class Eq = y_absl::container_internal::hash_default_eq<T>,
+ class Allocator = std::allocator<T>>
+class flat_hash_set
+ : public y_absl::container_internal::raw_hash_set<
+ y_absl::container_internal::FlatHashSetPolicy<T>, Hash, Eq, Allocator> {
+ using Base = typename flat_hash_set::raw_hash_set;
+
+ public:
+ // Constructors and Assignment Operators
+ //
+ // A flat_hash_set supports the same overload set as `std::unordered_set`
+ // for construction and assignment:
+ //
+ // * Default constructor
+ //
+ // // No allocation for the table's elements is made.
+ // y_absl::flat_hash_set<TString> set1;
+ //
+ // * Initializer List constructor
+ //
+ // y_absl::flat_hash_set<TString> set2 =
+ // {{"huey"}, {"dewey"}, {"louie"},};
+ //
+ // * Copy constructor
+ //
+ // y_absl::flat_hash_set<TString> set3(set2);
+ //
+ // * Copy assignment operator
+ //
+ // // Hash functor and Comparator are copied as well
+ // y_absl::flat_hash_set<TString> set4;
+ // set4 = set3;
+ //
+ // * Move constructor
+ //
+ // // Move is guaranteed efficient
+ // y_absl::flat_hash_set<TString> set5(std::move(set4));
+ //
+ // * Move assignment operator
+ //
+ // // May be efficient if allocators are compatible
+ // y_absl::flat_hash_set<TString> set6;
+ // set6 = std::move(set5);
+ //
+ // * Range constructor
+ //
+ // std::vector<TString> v = {"a", "b"};
+ // y_absl::flat_hash_set<TString> set7(v.begin(), v.end());
+ flat_hash_set() {}
+ using Base::Base;
+
+ // flat_hash_set::begin()
+ //
+ // Returns an iterator to the beginning of the `flat_hash_set`.
+ using Base::begin;
+
+ // flat_hash_set::cbegin()
+ //
+ // Returns a const iterator to the beginning of the `flat_hash_set`.
+ using Base::cbegin;
+
+ // flat_hash_set::cend()
+ //
+ // Returns a const iterator to the end of the `flat_hash_set`.
+ using Base::cend;
+
+ // flat_hash_set::end()
+ //
+ // Returns an iterator to the end of the `flat_hash_set`.
+ using Base::end;
+
+ // flat_hash_set::capacity()
+ //
+ // Returns the number of element slots (assigned, deleted, and empty)
+ // available within the `flat_hash_set`.
+ //
+ // NOTE: this member function is particular to `y_absl::flat_hash_set` and is
+ // not provided in the `std::unordered_set` API.
+ using Base::capacity;
+
+ // flat_hash_set::empty()
+ //
+ // Returns whether or not the `flat_hash_set` is empty.
+ using Base::empty;
+
+ // flat_hash_set::max_size()
+ //
+ // Returns the largest theoretical possible number of elements within a
+ // `flat_hash_set` under current memory constraints. This value can be thought
+ // of the largest value of `std::distance(begin(), end())` for a
+ // `flat_hash_set<T>`.
+ using Base::max_size;
+
+ // flat_hash_set::size()
+ //
+ // Returns the number of elements currently within the `flat_hash_set`.
+ using Base::size;
+
+ // flat_hash_set::clear()
+ //
+ // Removes all elements from the `flat_hash_set`. Invalidates any references,
+ // pointers, or iterators referring to contained elements.
+ //
+ // NOTE: this operation may shrink the underlying buffer. To avoid shrinking
+ // the underlying buffer call `erase(begin(), end())`.
+ using Base::clear;
+
+ // flat_hash_set::erase()
+ //
+ // Erases elements within the `flat_hash_set`. Erasing does not trigger a
+ // rehash. Overloads are listed below.
+ //
+ // void erase(const_iterator pos):
+ //
+ // Erases the element at `position` of the `flat_hash_set`, returning
+ // `void`.
+ //
+ // NOTE: returning `void` in this case is different than that of STL
+ // containers in general and `std::unordered_set` in particular (which
+ // return an iterator to the element following the erased element). If that
+ // iterator is needed, simply post increment the iterator:
+ //
+ // set.erase(it++);
+ //
+ // iterator erase(const_iterator first, const_iterator last):
+ //
+ // Erases the elements in the open interval [`first`, `last`), returning an
+ // iterator pointing to `last`.
+ //
+ // size_type erase(const key_type& key):
+ //
+ // Erases the element with the matching key, if it exists, returning the
+ // number of elements erased (0 or 1).
+ using Base::erase;
+
+ // flat_hash_set::insert()
+ //
+ // Inserts an element of the specified value into the `flat_hash_set`,
+ // returning an iterator pointing to the newly inserted element, provided that
+ // an element with the given key does not already exist. If rehashing occurs
+ // due to the insertion, all iterators are invalidated. Overloads are listed
+ // below.
+ //
+ // std::pair<iterator,bool> insert(const T& value):
+ //
+ // Inserts a value into the `flat_hash_set`. Returns a pair consisting of an
+ // iterator to the inserted element (or to the element that prevented the
+ // insertion) and a bool denoting whether the insertion took place.
+ //
+ // std::pair<iterator,bool> insert(T&& value):
+ //
+ // Inserts a moveable value into the `flat_hash_set`. Returns a pair
+ // consisting of an iterator to the inserted element (or to the element that
+ // prevented the insertion) and a bool denoting whether the insertion took
+ // place.
+ //
+ // iterator insert(const_iterator hint, const T& value):
+ // iterator insert(const_iterator hint, T&& value):
+ //
+ // Inserts a value, using the position of `hint` as a non-binding suggestion
+ // for where to begin the insertion search. Returns an iterator to the
+ // inserted element, or to the existing element that prevented the
+ // insertion.
+ //
+ // void insert(InputIterator first, InputIterator last):
+ //
+ // Inserts a range of values [`first`, `last`).
+ //
+ // NOTE: Although the STL does not specify which element may be inserted if
+ // multiple keys compare equivalently, for `flat_hash_set` we guarantee the
+ // first match is inserted.
+ //
+ // void insert(std::initializer_list<T> ilist):
+ //
+ // Inserts the elements within the initializer list `ilist`.
+ //
+ // NOTE: Although the STL does not specify which element may be inserted if
+ // multiple keys compare equivalently within the initializer list, for
+ // `flat_hash_set` we guarantee the first match is inserted.
+ using Base::insert;
+
+ // flat_hash_set::emplace()
+ //
+ // Inserts an element of the specified value by constructing it in-place
+ // within the `flat_hash_set`, provided that no element with the given key
+ // already exists.
+ //
+ // The element may be constructed even if there already is an element with the
+ // key in the container, in which case the newly constructed element will be
+ // destroyed immediately.
+ //
+ // If rehashing occurs due to the insertion, all iterators are invalidated.
+ using Base::emplace;
+
+ // flat_hash_set::emplace_hint()
+ //
+ // Inserts an element of the specified value by constructing it in-place
+ // within the `flat_hash_set`, using the position of `hint` as a non-binding
+ // suggestion for where to begin the insertion search, and only inserts
+ // provided that no element with the given key already exists.
+ //
+ // The element may be constructed even if there already is an element with the
+ // key in the container, in which case the newly constructed element will be
+ // destroyed immediately.
+ //
+ // If rehashing occurs due to the insertion, all iterators are invalidated.
+ using Base::emplace_hint;
+
+ // flat_hash_set::extract()
+ //
+ // Extracts the indicated element, erasing it in the process, and returns it
+ // as a C++17-compatible node handle. Overloads are listed below.
+ //
+ // node_type extract(const_iterator position):
+ //
+ // Extracts the element at the indicated position and returns a node handle
+ // owning that extracted data.
+ //
+ // node_type extract(const key_type& x):
+ //
+ // Extracts the element with the key matching the passed key value and
+ // returns a node handle owning that extracted data. If the `flat_hash_set`
+ // does not contain an element with a matching key, this function returns an
+ // empty node handle.
+ using Base::extract;
+
+ // flat_hash_set::merge()
+ //
+ // Extracts elements from a given `source` flat hash set into this
+ // `flat_hash_set`. If the destination `flat_hash_set` already contains an
+ // element with an equivalent key, that element is not extracted.
+ using Base::merge;
+
+ // flat_hash_set::swap(flat_hash_set& other)
+ //
+ // Exchanges the contents of this `flat_hash_set` with those of the `other`
+ // flat hash set, avoiding invocation of any move, copy, or swap operations on
+ // individual elements.
+ //
+ // All iterators and references on the `flat_hash_set` remain valid, excepting
+ // for the past-the-end iterator, which is invalidated.
+ //
+ // `swap()` requires that the flat hash set's hashing and key equivalence
+ // functions be Swappable, and are exchaged using unqualified calls to
+ // non-member `swap()`. If the set's allocator has
+ // `std::allocator_traits<allocator_type>::propagate_on_container_swap::value`
+ // set to `true`, the allocators are also exchanged using an unqualified call
+ // to non-member `swap()`; otherwise, the allocators are not swapped.
+ using Base::swap;
+
+ // flat_hash_set::rehash(count)
+ //
+ // Rehashes the `flat_hash_set`, setting the number of slots to be at least
+ // the passed value. If the new number of slots increases the load factor more
+ // than the current maximum load factor
+ // (`count` < `size()` / `max_load_factor()`), then the new number of slots
+ // will be at least `size()` / `max_load_factor()`.
+ //
+ // To force a rehash, pass rehash(0).
+ //
+ // NOTE: unlike behavior in `std::unordered_set`, references are also
+ // invalidated upon a `rehash()`.
+ using Base::rehash;
+
+ // flat_hash_set::reserve(count)
+ //
+ // Sets the number of slots in the `flat_hash_set` to the number needed to
+ // accommodate at least `count` total elements without exceeding the current
+ // maximum load factor, and may rehash the container if needed.
+ using Base::reserve;
+
+ // flat_hash_set::contains()
+ //
+ // Determines whether an element comparing equal to the given `key` exists
+ // within the `flat_hash_set`, returning `true` if so or `false` otherwise.
+ using Base::contains;
+
+ // flat_hash_set::count(const Key& key) const
+ //
+ // Returns the number of elements comparing equal to the given `key` within
+ // the `flat_hash_set`. note that this function will return either `1` or `0`
+ // since duplicate elements are not allowed within a `flat_hash_set`.
+ using Base::count;
+
+ // flat_hash_set::equal_range()
+ //
+ // Returns a closed range [first, last], defined by a `std::pair` of two
+ // iterators, containing all elements with the passed key in the
+ // `flat_hash_set`.
+ using Base::equal_range;
+
+ // flat_hash_set::find()
+ //
+ // Finds an element with the passed `key` within the `flat_hash_set`.
+ using Base::find;
+
+ // flat_hash_set::bucket_count()
+ //
+ // Returns the number of "buckets" within the `flat_hash_set`. Note that
+ // because a flat hash set contains all elements within its internal storage,
+ // this value simply equals the current capacity of the `flat_hash_set`.
+ using Base::bucket_count;
+
+ // flat_hash_set::load_factor()
+ //
+ // Returns the current load factor of the `flat_hash_set` (the average number
+ // of slots occupied with a value within the hash set).
+ using Base::load_factor;
+
+ // flat_hash_set::max_load_factor()
+ //
+ // Manages the maximum load factor of the `flat_hash_set`. Overloads are
+ // listed below.
+ //
+ // float flat_hash_set::max_load_factor()
+ //
+ // Returns the current maximum load factor of the `flat_hash_set`.
+ //
+ // void flat_hash_set::max_load_factor(float ml)
+ //
+ // Sets the maximum load factor of the `flat_hash_set` to the passed value.
+ //
+ // NOTE: This overload is provided only for API compatibility with the STL;
+ // `flat_hash_set` will ignore any set load factor and manage its rehashing
+ // internally as an implementation detail.
+ using Base::max_load_factor;
+
+ // flat_hash_set::get_allocator()
+ //
+ // Returns the allocator function associated with this `flat_hash_set`.
+ using Base::get_allocator;
+
+ // flat_hash_set::hash_function()
+ //
+ // Returns the hashing function used to hash the keys within this
+ // `flat_hash_set`.
+ using Base::hash_function;
+
+ // flat_hash_set::key_eq()
+ //
+ // Returns the function used for comparing keys equality.
+ using Base::key_eq;
+};
+
+// erase_if(flat_hash_set<>, Pred)
+//
+// Erases all elements that satisfy the predicate `pred` from the container `c`.
+// Returns the number of erased elements.
+template <typename T, typename H, typename E, typename A, typename Predicate>
+typename flat_hash_set<T, H, E, A>::size_type erase_if(
+ flat_hash_set<T, H, E, A>& c, Predicate pred) {
+ return container_internal::EraseIf(pred, &c);
+}
+
+namespace container_internal {
+
+template <class T>
+struct FlatHashSetPolicy {
+ using slot_type = T;
+ using key_type = T;
+ using init_type = T;
+ using constant_iterators = std::true_type;
+
+ template <class Allocator, class... Args>
+ static void construct(Allocator* alloc, slot_type* slot, Args&&... args) {
+ y_absl::allocator_traits<Allocator>::construct(*alloc, slot,
+ std::forward<Args>(args)...);
+ }
+
+ template <class Allocator>
+ static void destroy(Allocator* alloc, slot_type* slot) {
+ y_absl::allocator_traits<Allocator>::destroy(*alloc, slot);
+ }
+
+ static T& element(slot_type* slot) { return *slot; }
+
+ template <class F, class... Args>
+ static decltype(y_absl::container_internal::DecomposeValue(
+ std::declval<F>(), std::declval<Args>()...))
+ apply(F&& f, Args&&... args) {
+ return y_absl::container_internal::DecomposeValue(
+ std::forward<F>(f), std::forward<Args>(args)...);
+ }
+
+ static size_t space_used(const T*) { return 0; }
+};
+} // namespace container_internal
+
+namespace container_algorithm_internal {
+
+// Specialization of trait in y_absl/algorithm/container.h
+template <class Key, class Hash, class KeyEqual, class Allocator>
+struct IsUnorderedContainer<y_absl::flat_hash_set<Key, Hash, KeyEqual, Allocator>>
+ : std::true_type {};
+
+} // namespace container_algorithm_internal
+
+Y_ABSL_NAMESPACE_END
+} // namespace y_absl
+
+#endif // Y_ABSL_CONTAINER_FLAT_HASH_SET_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/functional/any_invocable.h b/contrib/restricted/abseil-cpp-tstring/y_absl/functional/any_invocable.h
new file mode 100644
index 0000000000..78c3f68072
--- /dev/null
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/functional/any_invocable.h
@@ -0,0 +1,316 @@
+// Copyright 2022 The Abseil Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// -----------------------------------------------------------------------------
+// File: any_invocable.h
+// -----------------------------------------------------------------------------
+//
+// This header file defines an `y_absl::AnyInvocable` type that assumes ownership
+// and wraps an object of an invocable type. (Invocable types adhere to the
+// concept specified in https://en.cppreference.com/w/cpp/concepts/invocable.)
+//
+// In general, prefer `y_absl::AnyInvocable` when you need a type-erased
+// function parameter that needs to take ownership of the type.
+//
+// NOTE: `y_absl::AnyInvocable` is similar to the C++23 `std::move_only_function`
+// abstraction, but has a slightly different API and is not designed to be a
+// drop-in replacement or C++11-compatible backfill of that type.
+//
+// Credits to Matt Calabrese (https://github.com/mattcalabrese) for the original
+// implementation.
+
+#ifndef Y_ABSL_FUNCTIONAL_ANY_INVOCABLE_H_
+#define Y_ABSL_FUNCTIONAL_ANY_INVOCABLE_H_
+
+#include <cstddef>
+#include <initializer_list>
+#include <type_traits>
+#include <utility>
+
+#include "y_absl/base/config.h"
+#include "y_absl/functional/internal/any_invocable.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/utility/utility.h"
+
+namespace y_absl {
+Y_ABSL_NAMESPACE_BEGIN
+
+// y_absl::AnyInvocable
+//
+// `y_absl::AnyInvocable` is a functional wrapper type, like `std::function`, that
+// assumes ownership of an invocable object. Unlike `std::function`, an
+// `y_absl::AnyInvocable` is more type-safe and provides the following additional
+// benefits:
+//
+// * Properly adheres to const correctness of the underlying type
+// * Is move-only so avoids concurrency problems with copied invocables and
+// unnecessary copies in general.
+// * Supports reference qualifiers allowing it to perform unique actions (noted
+// below).
+//
+// `y_absl::AnyInvocable` is a template, and an `y_absl::AnyInvocable` instantiation
+// may wrap any invocable object with a compatible function signature, e.g.
+// having arguments and return types convertible to types matching the
+// `y_absl::AnyInvocable` signature, and also matching any stated reference
+// qualifiers, as long as that type is moveable. It therefore provides broad
+// type erasure for functional objects.
+//
+// An `y_absl::AnyInvocable` is typically used as a type-erased function parameter
+// for accepting various functional objects:
+//
+// // Define a function taking an AnyInvocable parameter.
+// void my_func(y_absl::AnyInvocable<int()> f) {
+// ...
+// };
+//
+// // That function can accept any invocable type:
+//
+// // Accept a function reference. We don't need to move a reference.
+// int func1() { return 0; };
+// my_func(func1);
+//
+// // Accept a lambda. We use std::move here because otherwise my_func would
+// // copy the lambda.
+// auto lambda = []() { return 0; };
+// my_func(std::move(lambda));
+//
+// // Accept a function pointer. We don't need to move a function pointer.
+// func2 = &func1;
+// my_func(func2);
+//
+// // Accept an std::function by moving it. Note that the lambda is copyable
+// // (satisfying std::function requirements) and moveable (satisfying
+// // y_absl::AnyInvocable requirements).
+// std::function<int()> func6 = []() { return 0; };
+// my_func(std::move(func6));
+//
+// `AnyInvocable` also properly respects `const` qualifiers, reference
+// qualifiers, and the `noexcept` specification (only in C++ 17 and beyond) as
+// part of the user-specified function type (e.g.
+// `AnyInvocable<void()&& const noexcept>`). These qualifiers will be applied to
+// the `AnyInvocable` object's `operator()`, and the underlying invocable must
+// be compatible with those qualifiers.
+//
+// Comparison of const and non-const function types:
+//
+// // Store a closure inside of `func` with the function type `int()`.
+// // Note that we have made `func` itself `const`.
+// const AnyInvocable<int()> func = [](){ return 0; };
+//
+// func(); // Compile-error: the passed type `int()` isn't `const`.
+//
+// // Store a closure inside of `const_func` with the function type
+// // `int() const`.
+// // Note that we have also made `const_func` itself `const`.
+// const AnyInvocable<int() const> const_func = [](){ return 0; };
+//
+// const_func(); // Fine: `int() const` is `const`.
+//
+// In the above example, the call `func()` would have compiled if
+// `std::function` were used even though the types are not const compatible.
+// This is a bug, and using `y_absl::AnyInvocable` properly detects that bug.
+//
+// In addition to affecting the signature of `operator()`, the `const` and
+// reference qualifiers of the function type also appropriately constrain which
+// kinds of invocable objects you are allowed to place into the `AnyInvocable`
+// instance. If you specify a function type that is const-qualified, then
+// anything that you attempt to put into the `AnyInvocable` must be callable on
+// a `const` instance of that type.
+//
+// Constraint example:
+//
+// // Fine because the lambda is callable when `const`.
+// AnyInvocable<int() const> func = [=](){ return 0; };
+//
+// // This is a compile-error because the lambda isn't callable when `const`.
+// AnyInvocable<int() const> error = [=]() mutable { return 0; };
+//
+// An `&&` qualifier can be used to express that an `y_absl::AnyInvocable`
+// instance should be invoked at most once:
+//
+// // Invokes `continuation` with the logical result of an operation when
+// // that operation completes (common in asynchronous code).
+// void CallOnCompletion(AnyInvocable<void(int)&&> continuation) {
+// int result_of_foo = foo();
+//
+// // `std::move` is required because the `operator()` of `continuation` is
+// // rvalue-reference qualified.
+// std::move(continuation)(result_of_foo);
+// }
+//
+// Attempting to call `y_absl::AnyInvocable` multiple times in such a case
+// results in undefined behavior.
+template <class Sig>
+class AnyInvocable : private internal_any_invocable::Impl<Sig> {
+ private:
+ static_assert(
+ std::is_function<Sig>::value,
+ "The template argument of AnyInvocable must be a function type.");
+
+ using Impl = internal_any_invocable::Impl<Sig>;
+
+ public:
+ // The return type of Sig
+ using result_type = typename Impl::result_type;
+
+ // Constructors
+
+ // Constructs the `AnyInvocable` in an empty state.
+ AnyInvocable() noexcept = default;
+ AnyInvocable(std::nullptr_t) noexcept {} // NOLINT
+
+ // Constructs the `AnyInvocable` from an existing `AnyInvocable` by a move.
+ // Note that `f` is not guaranteed to be empty after move-construction,
+ // although it may be.
+ AnyInvocable(AnyInvocable&& /*f*/) noexcept = default;
+
+ // Constructs an `AnyInvocable` from an invocable object.
+ //
+ // Upon construction, `*this` is only empty if `f` is a function pointer or
+ // member pointer type and is null, or if `f` is an `AnyInvocable` that is
+ // empty.
+ template <class F, typename = y_absl::enable_if_t<
+ internal_any_invocable::CanConvert<Sig, F>::value>>
+ AnyInvocable(F&& f) // NOLINT
+ : Impl(internal_any_invocable::ConversionConstruct(),
+ std::forward<F>(f)) {}
+
+ // Constructs an `AnyInvocable` that holds an invocable object of type `T`,
+ // which is constructed in-place from the given arguments.
+ //
+ // Example:
+ //
+ // AnyInvocable<int(int)> func(
+ // y_absl::in_place_type<PossiblyImmovableType>, arg1, arg2);
+ //
+ template <class T, class... Args,
+ typename = y_absl::enable_if_t<
+ internal_any_invocable::CanEmplace<Sig, T, Args...>::value>>
+ explicit AnyInvocable(y_absl::in_place_type_t<T>, Args&&... args)
+ : Impl(y_absl::in_place_type<y_absl::decay_t<T>>,
+ std::forward<Args>(args)...) {
+ static_assert(std::is_same<T, y_absl::decay_t<T>>::value,
+ "The explicit template argument of in_place_type is required "
+ "to be an unqualified object type.");
+ }
+
+ // Overload of the above constructor to support list-initialization.
+ template <class T, class U, class... Args,
+ typename = y_absl::enable_if_t<internal_any_invocable::CanEmplace<
+ Sig, T, std::initializer_list<U>&, Args...>::value>>
+ explicit AnyInvocable(y_absl::in_place_type_t<T>,
+ std::initializer_list<U> ilist, Args&&... args)
+ : Impl(y_absl::in_place_type<y_absl::decay_t<T>>, ilist,
+ std::forward<Args>(args)...) {
+ static_assert(std::is_same<T, y_absl::decay_t<T>>::value,
+ "The explicit template argument of in_place_type is required "
+ "to be an unqualified object type.");
+ }
+
+ // Assignment Operators
+
+ // Assigns an `AnyInvocable` through move-assignment.
+ // Note that `f` is not guaranteed to be empty after move-assignment
+ // although it may be.
+ AnyInvocable& operator=(AnyInvocable&& /*f*/) noexcept = default;
+
+ // Assigns an `AnyInvocable` from a nullptr, clearing the `AnyInvocable`. If
+ // not empty, destroys the target, putting `*this` into an empty state.
+ AnyInvocable& operator=(std::nullptr_t) noexcept {
+ this->Clear();
+ return *this;
+ }
+
+ // Assigns an `AnyInvocable` from an existing `AnyInvocable` instance.
+ //
+ // Upon assignment, `*this` is only empty if `f` is a function pointer or
+ // member pointer type and is null, or if `f` is an `AnyInvocable` that is
+ // empty.
+ template <class F, typename = y_absl::enable_if_t<
+ internal_any_invocable::CanAssign<Sig, F>::value>>
+ AnyInvocable& operator=(F&& f) {
+ *this = AnyInvocable(std::forward<F>(f));
+ return *this;
+ }
+
+ // Assigns an `AnyInvocable` from a reference to an invocable object.
+ // Upon assignment, stores a reference to the invocable object in the
+ // `AnyInvocable` instance.
+ template <
+ class F,
+ typename = y_absl::enable_if_t<
+ internal_any_invocable::CanAssignReferenceWrapper<Sig, F>::value>>
+ AnyInvocable& operator=(std::reference_wrapper<F> f) noexcept {
+ *this = AnyInvocable(f);
+ return *this;
+ }
+
+ // Destructor
+
+ // If not empty, destroys the target.
+ ~AnyInvocable() = default;
+
+ // y_absl::AnyInvocable::swap()
+ //
+ // Exchanges the targets of `*this` and `other`.
+ void swap(AnyInvocable& other) noexcept { std::swap(*this, other); }
+
+ // abl::AnyInvocable::operator bool()
+ //
+ // Returns `true` if `*this` is not empty.
+ explicit operator bool() const noexcept { return this->HasValue(); }
+
+ // Invokes the target object of `*this`. `*this` must not be empty.
+ //
+ // Note: The signature of this function call operator is the same as the
+ // template parameter `Sig`.
+ using Impl::operator();
+
+ // Equality operators
+
+ // Returns `true` if `*this` is empty.
+ friend bool operator==(const AnyInvocable& f, std::nullptr_t) noexcept {
+ return !f.HasValue();
+ }
+
+ // Returns `true` if `*this` is empty.
+ friend bool operator==(std::nullptr_t, const AnyInvocable& f) noexcept {
+ return !f.HasValue();
+ }
+
+ // Returns `false` if `*this` is empty.
+ friend bool operator!=(const AnyInvocable& f, std::nullptr_t) noexcept {
+ return f.HasValue();
+ }
+
+ // Returns `false` if `*this` is empty.
+ friend bool operator!=(std::nullptr_t, const AnyInvocable& f) noexcept {
+ return f.HasValue();
+ }
+
+ // swap()
+ //
+ // Exchanges the targets of `f1` and `f2`.
+ friend void swap(AnyInvocable& f1, AnyInvocable& f2) noexcept { f1.swap(f2); }
+
+ private:
+ // Friending other instantiations is necessary for conversions.
+ template <bool /*SigIsNoexcept*/, class /*ReturnType*/, class... /*P*/>
+ friend class internal_any_invocable::CoreImpl;
+};
+
+Y_ABSL_NAMESPACE_END
+} // namespace y_absl
+
+#endif // Y_ABSL_FUNCTIONAL_ANY_INVOCABLE_H_
diff --git a/contrib/restricted/abseil-cpp-tstring/y_absl/functional/internal/any_invocable.h b/contrib/restricted/abseil-cpp-tstring/y_absl/functional/internal/any_invocable.h
new file mode 100644
index 0000000000..5dd37858f0
--- /dev/null
+++ b/contrib/restricted/abseil-cpp-tstring/y_absl/functional/internal/any_invocable.h
@@ -0,0 +1,878 @@
+// Copyright 2022 The Abseil Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Implementation details for `y_absl::AnyInvocable`
+
+#ifndef Y_ABSL_FUNCTIONAL_INTERNAL_ANY_INVOCABLE_H_
+#define Y_ABSL_FUNCTIONAL_INTERNAL_ANY_INVOCABLE_H_
+
+////////////////////////////////////////////////////////////////////////////////
+// //
+// This implementation of the proposed `any_invocable` uses an approach that //
+// chooses between local storage and remote storage for the contained target //
+// object based on the target object's size, alignment requirements, and //
+// whether or not it has a nothrow move constructor. Additional optimizations //
+// are performed when the object is a trivially copyable type [basic.types]. //
+// //
+// There are three datamembers per `AnyInvocable` instance //
+// //
+// 1) A union containing either //
+// - A pointer to the target object referred to via a void*, or //
+// - the target object, emplaced into a raw char buffer //
+// //
+// 2) A function pointer to a "manager" function operation that takes a //
+// discriminator and logically branches to either perform a move operation //
+// or destroy operation based on that discriminator. //
+// //
+// 3) A function pointer to an "invoker" function operation that invokes the //
+// target object, directly returning the result. //
+// //
+// When in the logically empty state, the manager function is an empty //
+// function and the invoker function is one that would be undefined-behavior //
+// to call. //
+// //
+// An additional optimization is performed when converting from one //
+// AnyInvocable to another where only the noexcept specification and/or the //
+// cv/ref qualifiers of the function type differ. In these cases, the //
+// conversion works by "moving the guts", similar to if they were the same //
+// exact type, as opposed to having to perform an additional layer of //
+// wrapping through remote storage. //
+// //
+////////////////////////////////////////////////////////////////////////////////
+
+// IWYU pragma: private, include "y_absl/functional/any_invocable.h"
+
+#include <cassert>
+#include <cstddef>
+#include <cstring>
+#include <functional>
+#include <initializer_list>
+#include <memory>
+#include <new>
+#include <type_traits>
+#include <utility>
+
+#include "y_absl/base/config.h"
+#include "y_absl/base/internal/invoke.h"
+#include "y_absl/base/macros.h"
+#include "y_absl/base/optimization.h"
+#include "y_absl/meta/type_traits.h"
+#include "y_absl/utility/utility.h"
+
+namespace y_absl {
+Y_ABSL_NAMESPACE_BEGIN
+
+// Helper macro used to prevent spelling `noexcept` in language versions older
+// than C++17, where it is not part of the type system, in order to avoid
+// compilation failures and internal compiler errors.
+#if Y_ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
+#define Y_ABSL_INTERNAL_NOEXCEPT_SPEC(noex) noexcept(noex)
+#else
+#define Y_ABSL_INTERNAL_NOEXCEPT_SPEC(noex)
+#endif
+
+// Defined in functional/any_invocable.h
+template <class Sig>
+class AnyInvocable;
+
+namespace internal_any_invocable {
+
+// Constants relating to the small-object-storage for AnyInvocable
+enum StorageProperty : std::size_t {
+ kAlignment = alignof(std::max_align_t), // The alignment of the storage
+ kStorageSize = sizeof(void*) * 2 // The size of the storage
+};
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// A metafunction for checking if a type is an AnyInvocable instantiation.
+// This is used during conversion operations.
+template <class T>
+struct IsAnyInvocable : std::false_type {};
+
+template <class Sig>
+struct IsAnyInvocable<AnyInvocable<Sig>> : std::true_type {};
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// A type trait that tells us whether or not a target function type should be
+// stored locally in the small object optimization storage
+template <class T>
+using IsStoredLocally = std::integral_constant<
+ bool, sizeof(T) <= kStorageSize && alignof(T) <= kAlignment &&
+ kAlignment % alignof(T) == 0 &&
+ std::is_nothrow_move_constructible<T>::value>;
+
+// An implementation of std::remove_cvref_t of C++20.
+template <class T>
+using RemoveCVRef =
+ typename std::remove_cv<typename std::remove_reference<T>::type>::type;
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// An implementation of the C++ standard INVOKE<R> pseudo-macro, operation is
+// equivalent to std::invoke except that it forces an implicit conversion to the
+// specified return type. If "R" is void, the function is executed and the
+// return value is simply ignored.
+template <class ReturnType, class F, class... P,
+ typename = y_absl::enable_if_t<std::is_void<ReturnType>::value>>
+void InvokeR(F&& f, P&&... args) {
+ y_absl::base_internal::invoke(std::forward<F>(f), std::forward<P>(args)...);
+}
+
+template <class ReturnType, class F, class... P,
+ y_absl::enable_if_t<!std::is_void<ReturnType>::value, int> = 0>
+ReturnType InvokeR(F&& f, P&&... args) {
+ return y_absl::base_internal::invoke(std::forward<F>(f),
+ std::forward<P>(args)...);
+}
+
+//
+////////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////////
+///
+// A metafunction that takes a "T" corresponding to a parameter type of the
+// user's specified function type, and yields the parameter type to use for the
+// type-erased invoker. In order to prevent observable moves, this must be
+// either a reference or, if the type is trivial, the original parameter type
+// itself. Since the parameter type may be incomplete at the point that this
+// metafunction is used, we can only do this optimization for scalar types
+// rather than for any trivial type.
+template <typename T>
+T ForwardImpl(std::true_type);
+
+template <typename T>
+T&& ForwardImpl(std::false_type);
+
+// NOTE: We deliberately use an intermediate struct instead of a direct alias,
+// as a workaround for b/206991861 on MSVC versions < 1924.
+template <class T>
+struct ForwardedParameter {
+ using type = decltype((
+ ForwardImpl<T>)(std::integral_constant<bool,
+ std::is_scalar<T>::value>()));
+};
+
+template <class T>
+using ForwardedParameterType = typename ForwardedParameter<T>::type;
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// A discriminator when calling the "manager" function that describes operation
+// type-erased operation should be invoked.
+//
+// "relocate_from_to" specifies that the manager should perform a move.
+//
+// "dispose" specifies that the manager should perform a destroy.
+enum class FunctionToCall : bool { relocate_from_to, dispose };
+
+// The portion of `AnyInvocable` state that contains either a pointer to the
+// target object or the object itself in local storage
+union TypeErasedState {
+ struct {
+ // A pointer to the type-erased object when remotely stored
+ void* target;
+ // The size of the object for `RemoteManagerTrivial`
+ std::size_t size;
+ } remote;
+
+ // Local-storage for the type-erased object when small and trivial enough
+ alignas(kAlignment) char storage[kStorageSize];
+};
+
+// A typed accessor for the object in `TypeErasedState` storage
+template <class T>
+T& ObjectInLocalStorage(TypeErasedState* const state) {
+ // We launder here because the storage may be reused with the same type.
+#if Y_ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
+ return *std::launder(reinterpret_cast<T*>(&state->storage));
+#elif Y_ABSL_HAVE_BUILTIN(__builtin_launder)
+ return *__builtin_launder(reinterpret_cast<T*>(&state->storage));
+#else
+
+ // When `std::launder` or equivalent are not available, we rely on undefined
+ // behavior, which works as intended on Abseil's officially supported
+ // platforms as of Q2 2022.
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic ignored "-Wstrict-aliasing"
+#pragma GCC diagnostic push
+#endif
+ return *reinterpret_cast<T*>(&state->storage);
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
+
+#endif
+}
+
+// The type for functions issuing lifetime-related operations: move and dispose
+// A pointer to such a function is contained in each `AnyInvocable` instance.
+// NOTE: When specifying `FunctionToCall::`dispose, the same state must be
+// passed as both "from" and "to".
+using ManagerType = void(FunctionToCall /*operation*/,
+ TypeErasedState* /*from*/, TypeErasedState* /*to*/)
+ Y_ABSL_INTERNAL_NOEXCEPT_SPEC(true);
+
+// The type for functions issuing the actual invocation of the object
+// A pointer to such a function is contained in each AnyInvocable instance.
+template <bool SigIsNoexcept, class ReturnType, class... P>
+using InvokerType = ReturnType(TypeErasedState*, ForwardedParameterType<P>...)
+ Y_ABSL_INTERNAL_NOEXCEPT_SPEC(SigIsNoexcept);
+
+// The manager that is used when AnyInvocable is empty
+inline void EmptyManager(FunctionToCall /*operation*/,
+ TypeErasedState* /*from*/,
+ TypeErasedState* /*to*/) noexcept {}
+
+// The manager that is used when a target function is in local storage and is
+// a trivially copyable type.
+inline void LocalManagerTrivial(FunctionToCall /*operation*/,
+ TypeErasedState* const from,
+ TypeErasedState* const to) noexcept {
+ // This single statement without branching handles both possible operations.
+ //
+ // For FunctionToCall::dispose, "from" and "to" point to the same state, and
+ // so this assignment logically would do nothing.
+ //
+ // Note: Correctness here relies on http://wg21.link/p0593, which has only
+ // become standard in C++20, though implementations do not break it in
+ // practice for earlier versions of C++.
+ //
+ // The correct way to do this without that paper is to first placement-new a
+ // default-constructed T in "to->storage" prior to the memmove, but doing so
+ // requires a different function to be created for each T that is stored
+ // locally, which can cause unnecessary bloat and be less cache friendly.
+ *to = *from;
+
+ // Note: Because the type is trivially copyable, the destructor does not need
+ // to be called ("trivially copyable" requires a trivial destructor).
+}
+
+// The manager that is used when a target function is in local storage and is
+// not a trivially copyable type.
+template <class T>
+void LocalManagerNontrivial(FunctionToCall operation,
+ TypeErasedState* const from,
+ TypeErasedState* const to) noexcept {
+ static_assert(IsStoredLocally<T>::value,
+ "Local storage must only be used for supported types.");
+ static_assert(!std::is_trivially_copyable<T>::value,
+ "Locally stored types must be trivially copyable.");
+
+ T& from_object = (ObjectInLocalStorage<T>)(from);
+
+ switch (operation) {
+ case FunctionToCall::relocate_from_to:
+ // NOTE: Requires that the left-hand operand is already empty.
+ ::new (static_cast<void*>(&to->storage)) T(std::move(from_object));
+ Y_ABSL_FALLTHROUGH_INTENDED;
+ case FunctionToCall::dispose:
+ from_object.~T(); // Must not throw. // NOLINT
+ return;
+ }
+ Y_ABSL_UNREACHABLE();
+}
+
+// The invoker that is used when a target function is in local storage
+// Note: QualTRef here is the target function type along with cv and reference
+// qualifiers that must be used when calling the function.
+template <bool SigIsNoexcept, class ReturnType, class QualTRef, class... P>
+ReturnType LocalInvoker(
+ TypeErasedState* const state,
+ ForwardedParameterType<P>... args) noexcept(SigIsNoexcept) {
+ using RawT = RemoveCVRef<QualTRef>;
+ static_assert(
+ IsStoredLocally<RawT>::value,
+ "Target object must be in local storage in order to be invoked from it.");
+
+ auto& f = (ObjectInLocalStorage<RawT>)(state);
+ return (InvokeR<ReturnType>)(static_cast<QualTRef>(f),
+ static_cast<ForwardedParameterType<P>>(args)...);
+}
+
+// The manager that is used when a target function is in remote storage and it
+// has a trivial destructor
+inline void RemoteManagerTrivial(FunctionToCall operation,
+ TypeErasedState* const from,
+ TypeErasedState* const to) noexcept {
+ switch (operation) {
+ case FunctionToCall::relocate_from_to:
+ // NOTE: Requires that the left-hand operand is already empty.
+ to->remote = from->remote;
+ return;
+ case FunctionToCall::dispose:
+#if defined(__cpp_sized_deallocation)
+ ::operator delete(from->remote.target, from->remote.size);
+#else // __cpp_sized_deallocation
+ ::operator delete(from->remote.target);
+#endif // __cpp_sized_deallocation
+ return;
+ }
+ Y_ABSL_UNREACHABLE();
+}
+
+// The manager that is used when a target function is in remote storage and the
+// destructor of the type is not trivial
+template <class T>
+void RemoteManagerNontrivial(FunctionToCall operation,
+ TypeErasedState* const from,
+ TypeErasedState* const to) noexcept {
+ static_assert(!IsStoredLocally<T>::value,
+ "Remote storage must only be used for types that do not "
+ "qualify for local storage.");
+
+ switch (operation) {
+ case FunctionToCall::relocate_from_to:
+ // NOTE: Requires that the left-hand operand is already empty.
+ to->remote.target = from->remote.target;
+ return;
+ case FunctionToCall::dispose:
+ ::delete static_cast<T*>(from->remote.target); // Must not throw.
+ return;
+ }
+ Y_ABSL_UNREACHABLE();
+}
+
+// The invoker that is used when a target function is in remote storage
+template <bool SigIsNoexcept, class ReturnType, class QualTRef, class... P>
+ReturnType RemoteInvoker(
+ TypeErasedState* const state,
+ ForwardedParameterType<P>... args) noexcept(SigIsNoexcept) {
+ using RawT = RemoveCVRef<QualTRef>;
+ static_assert(!IsStoredLocally<RawT>::value,
+ "Target object must be in remote storage in order to be "
+ "invoked from it.");
+
+ auto& f = *static_cast<RawT*>(state->remote.target);
+ return (InvokeR<ReturnType>)(static_cast<QualTRef>(f),
+ static_cast<ForwardedParameterType<P>>(args)...);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// A metafunction that checks if a type T is an instantiation of
+// y_absl::in_place_type_t (needed for constructor constraints of AnyInvocable).
+template <class T>
+struct IsInPlaceType : std::false_type {};
+
+template <class T>
+struct IsInPlaceType<y_absl::in_place_type_t<T>> : std::true_type {};
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// A constructor name-tag used with CoreImpl (below) to request the
+// conversion-constructor. QualDecayedTRef is the decayed-type of the object to
+// wrap, along with the cv and reference qualifiers that must be applied when
+// performing an invocation of the wrapped object.
+template <class QualDecayedTRef>
+struct TypedConversionConstruct {};
+
+// A helper base class for all core operations of AnyInvocable. Most notably,
+// this class creates the function call operator and constraint-checkers so that
+// the top-level class does not have to be a series of partial specializations.
+//
+// Note: This definition exists (as opposed to being a declaration) so that if
+// the user of the top-level template accidentally passes a template argument
+// that is not a function type, they will get a static_assert in AnyInvocable's
+// class body rather than an error stating that Impl is not defined.
+template <class Sig>
+class Impl {}; // Note: This is partially-specialized later.
+
+// A std::unique_ptr deleter that deletes memory allocated via ::operator new.
+#if defined(__cpp_sized_deallocation)
+class TrivialDeleter {
+ public:
+ explicit TrivialDeleter(std::size_t size) : size_(size) {}
+
+ void operator()(void* target) const {
+ ::operator delete(target, size_);
+ }
+
+ private:
+ std::size_t size_;
+};
+#else // __cpp_sized_deallocation
+class TrivialDeleter {
+ public:
+ explicit TrivialDeleter(std::size_t) {}
+
+ void operator()(void* target) const { ::operator delete(target); }
+};
+#endif // __cpp_sized_deallocation
+
+template <bool SigIsNoexcept, class ReturnType, class... P>
+class CoreImpl;
+
+constexpr bool IsCompatibleConversion(void*, void*) { return false; }
+template <bool NoExceptSrc, bool NoExceptDest, class... T>
+constexpr bool IsCompatibleConversion(CoreImpl<NoExceptSrc, T...>*,
+ CoreImpl<NoExceptDest, T...>*) {
+ return !NoExceptDest || NoExceptSrc;
+}
+
+// A helper base class for all core operations of AnyInvocable that do not
+// depend on the cv/ref qualifiers of the function type.
+template <bool SigIsNoexcept, class ReturnType, class... P>
+class CoreImpl {
+ public:
+ using result_type = ReturnType;
+
+ CoreImpl() noexcept : manager_(EmptyManager), invoker_(nullptr) {}
+
+ enum class TargetType : int {
+ kPointer = 0,
+ kCompatibleAnyInvocable = 1,
+ kIncompatibleAnyInvocable = 2,
+ kOther = 3,
+ };
+
+ // Note: QualDecayedTRef here includes the cv-ref qualifiers associated with
+ // the invocation of the Invocable. The unqualified type is the target object
+ // type to be stored.
+ template <class QualDecayedTRef, class F>
+ explicit CoreImpl(TypedConversionConstruct<QualDecayedTRef>, F&& f) {
+ using DecayedT = RemoveCVRef<QualDecayedTRef>;
+
+ constexpr TargetType kTargetType =
+ (std::is_pointer<DecayedT>::value ||
+ std::is_member_pointer<DecayedT>::value)
+ ? TargetType::kPointer
+ : IsCompatibleAnyInvocable<DecayedT>::value
+ ? TargetType::kCompatibleAnyInvocable
+ : IsAnyInvocable<DecayedT>::value
+ ? TargetType::kIncompatibleAnyInvocable
+ : TargetType::kOther;
+ // NOTE: We only use integers instead of enums as template parameters in
+ // order to work around a bug on C++14 under MSVC 2017.
+ // See b/236131881.
+ Initialize<static_cast<int>(kTargetType), QualDecayedTRef>(
+ std::forward<F>(f));
+ }
+
+ // Note: QualTRef here includes the cv-ref qualifiers associated with the
+ // invocation of the Invocable. The unqualified type is the target object
+ // type to be stored.
+ template <class QualTRef, class... Args>
+ explicit CoreImpl(y_absl::in_place_type_t<QualTRef>, Args&&... args) {
+ InitializeStorage<QualTRef>(std::forward<Args>(args)...);
+ }
+
+ CoreImpl(CoreImpl&& other) noexcept {
+ other.manager_(FunctionToCall::relocate_from_to, &other.state_, &state_);
+ manager_ = other.manager_;
+ invoker_ = other.invoker_;
+ other.manager_ = EmptyManager;
+ other.invoker_ = nullptr;
+ }
+
+ CoreImpl& operator=(CoreImpl&& other) noexcept {
+ // Put the left-hand operand in an empty state.
+ //
+ // Note: A full reset that leaves us with an object that has its invariants
+ // intact is necessary in order to handle self-move. This is required by
+ // types that are used with certain operations of the standard library, such
+ // as the default definition of std::swap when both operands target the same
+ // object.
+ Clear();
+
+ // Perform the actual move/destory operation on the target function.
+ other.manager_(FunctionToCall::relocate_from_to, &other.state_, &state_);
+ manager_ = other.manager_;
+ invoker_ = other.invoker_;
+ other.manager_ = EmptyManager;
+ other.invoker_ = nullptr;
+
+ return *this;
+ }
+
+ ~CoreImpl() { manager_(FunctionToCall::dispose, &state_, &state_); }
+
+ // Check whether or not the AnyInvocable is in the empty state.
+ bool HasValue() const { return invoker_ != nullptr; }
+
+ // Effects: Puts the object into its empty state.
+ void Clear() {
+ manager_(FunctionToCall::dispose, &state_, &state_);
+ manager_ = EmptyManager;
+ invoker_ = nullptr;
+ }
+
+ template <int target_type, class QualDecayedTRef, class F,
+ y_absl::enable_if_t<target_type == 0, int> = 0>
+ void Initialize(F&& f) {
+// This condition handles types that decay into pointers, which includes
+// function references. Since function references cannot be null, GCC warns
+// against comparing their decayed form with nullptr.
+// Since this is template-heavy code, we prefer to disable these warnings
+// locally instead of adding yet another overload of this function.
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic ignored "-Wpragmas"
+#pragma GCC diagnostic ignored "-Waddress"
+#pragma GCC diagnostic ignored "-Wnonnull-compare"
+#pragma GCC diagnostic push
+#endif
+ if (static_cast<RemoveCVRef<QualDecayedTRef>>(f) == nullptr) {
+#if !defined(__clang__) && defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
+ manager_ = EmptyManager;
+ invoker_ = nullptr;
+ return;
+ }
+ InitializeStorage<QualDecayedTRef>(std::forward<F>(f));
+ }
+
+ template <int target_type, class QualDecayedTRef, class F,
+ y_absl::enable_if_t<target_type == 1, int> = 0>
+ void Initialize(F&& f) {
+ // In this case we can "steal the guts" of the other AnyInvocable.
+ f.manager_(FunctionToCall::relocate_from_to, &f.state_, &state_);
+ manager_ = f.manager_;
+ invoker_ = f.invoker_;
+
+ f.manager_ = EmptyManager;
+ f.invoker_ = nullptr;
+ }
+
+ template <int target_type, class QualDecayedTRef, class F,
+ y_absl::enable_if_t<target_type == 2, int> = 0>
+ void Initialize(F&& f) {
+ if (f.HasValue()) {
+ InitializeStorage<QualDecayedTRef>(std::forward<F>(f));
+ } else {
+ manager_ = EmptyManager;
+ invoker_ = nullptr;
+ }
+ }
+
+ template <int target_type, class QualDecayedTRef, class F,
+ typename = y_absl::enable_if_t<target_type == 3>>
+ void Initialize(F&& f) {
+ InitializeStorage<QualDecayedTRef>(std::forward<F>(f));
+ }
+
+ // Use local (inline) storage for applicable target object types.
+ template <class QualTRef, class... Args,
+ typename = y_absl::enable_if_t<
+ IsStoredLocally<RemoveCVRef<QualTRef>>::value>>
+ void InitializeStorage(Args&&... args) {
+ using RawT = RemoveCVRef<QualTRef>;
+ ::new (static_cast<void*>(&state_.storage))
+ RawT(std::forward<Args>(args)...);
+
+ invoker_ = LocalInvoker<SigIsNoexcept, ReturnType, QualTRef, P...>;
+ // We can simplify our manager if we know the type is trivially copyable.
+ InitializeLocalManager<RawT>();
+ }
+
+ // Use remote storage for target objects that cannot be stored locally.
+ template <class QualTRef, class... Args,
+ y_absl::enable_if_t<!IsStoredLocally<RemoveCVRef<QualTRef>>::value,
+ int> = 0>
+ void InitializeStorage(Args&&... args) {
+ InitializeRemoteManager<RemoveCVRef<QualTRef>>(std::forward<Args>(args)...);
+ // This is set after everything else in case an exception is thrown in an
+ // earlier step of the initialization.
+ invoker_ = RemoteInvoker<SigIsNoexcept, ReturnType, QualTRef, P...>;
+ }
+
+ template <class T,
+ typename = y_absl::enable_if_t<std::is_trivially_copyable<T>::value>>
+ void InitializeLocalManager() {
+ manager_ = LocalManagerTrivial;
+ }
+
+ template <class T,
+ y_absl::enable_if_t<!std::is_trivially_copyable<T>::value, int> = 0>
+ void InitializeLocalManager() {
+ manager_ = LocalManagerNontrivial<T>;
+ }
+
+ template <class T>
+ using HasTrivialRemoteStorage =
+ std::integral_constant<bool, std::is_trivially_destructible<T>::value &&
+ alignof(T) <=
+ Y_ABSL_INTERNAL_DEFAULT_NEW_ALIGNMENT>;
+
+ template <class T, class... Args,
+ typename = y_absl::enable_if_t<HasTrivialRemoteStorage<T>::value>>
+ void InitializeRemoteManager(Args&&... args) {
+ // unique_ptr is used for exception-safety in case construction throws.
+ std::unique_ptr<void, TrivialDeleter> uninitialized_target(
+ ::operator new(sizeof(T)), TrivialDeleter(sizeof(T)));
+ ::new (uninitialized_target.get()) T(std::forward<Args>(args)...);
+ state_.remote.target = uninitialized_target.release();
+ state_.remote.size = sizeof(T);
+ manager_ = RemoteManagerTrivial;
+ }
+
+ template <class T, class... Args,
+ y_absl::enable_if_t<!HasTrivialRemoteStorage<T>::value, int> = 0>
+ void InitializeRemoteManager(Args&&... args) {
+ state_.remote.target = ::new T(std::forward<Args>(args)...);
+ manager_ = RemoteManagerNontrivial<T>;
+ }
+
+ //////////////////////////////////////////////////////////////////////////////
+ //
+ // Type trait to determine if the template argument is an AnyInvocable whose
+ // function type is compatible enough with ours such that we can
+ // "move the guts" out of it when moving, rather than having to place a new
+ // object into remote storage.
+
+ template <typename Other>
+ struct IsCompatibleAnyInvocable {
+ static constexpr bool value = false;
+ };
+
+ template <typename Sig>
+ struct IsCompatibleAnyInvocable<AnyInvocable<Sig>> {
+ static constexpr bool value =
+ (IsCompatibleConversion)(static_cast<
+ typename AnyInvocable<Sig>::CoreImpl*>(
+ nullptr),
+ static_cast<CoreImpl*>(nullptr));
+ };
+
+ //
+ //////////////////////////////////////////////////////////////////////////////
+
+ TypeErasedState state_;
+ ManagerType* manager_;
+ InvokerType<SigIsNoexcept, ReturnType, P...>* invoker_;
+};
+
+// A constructor name-tag used with Impl to request the
+// conversion-constructor
+struct ConversionConstruct {};
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// A metafunction that is normally an identity metafunction except that when
+// given a std::reference_wrapper<T>, it yields T&. This is necessary because
+// currently std::reference_wrapper's operator() is not conditionally noexcept,
+// so when checking if such an Invocable is nothrow-invocable, we must pull out
+// the underlying type.
+template <class T>
+struct UnwrapStdReferenceWrapperImpl {
+ using type = T;
+};
+
+template <class T>
+struct UnwrapStdReferenceWrapperImpl<std::reference_wrapper<T>> {
+ using type = T&;
+};
+
+template <class T>
+using UnwrapStdReferenceWrapper =
+ typename UnwrapStdReferenceWrapperImpl<T>::type;
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// An alias that always yields std::true_type (used with constraints) where
+// substitution failures happen when forming the template arguments.
+template <class... T>
+using TrueAlias =
+ std::integral_constant<bool, sizeof(y_absl::void_t<T...>*) != 0>;
+
+/*SFINAE constraints for the conversion-constructor.*/
+template <class Sig, class F,
+ class = y_absl::enable_if_t<
+ !std::is_same<RemoveCVRef<F>, AnyInvocable<Sig>>::value>>
+using CanConvert = TrueAlias<
+ y_absl::enable_if_t<!IsInPlaceType<RemoveCVRef<F>>::value>,
+ y_absl::enable_if_t<Impl<Sig>::template CallIsValid<F>::value>,
+ y_absl::enable_if_t<
+ Impl<Sig>::template CallIsNoexceptIfSigIsNoexcept<F>::value>,
+ y_absl::enable_if_t<std::is_constructible<y_absl::decay_t<F>, F>::value>>;
+
+/*SFINAE constraints for the std::in_place constructors.*/
+template <class Sig, class F, class... Args>
+using CanEmplace = TrueAlias<
+ y_absl::enable_if_t<Impl<Sig>::template CallIsValid<F>::value>,
+ y_absl::enable_if_t<
+ Impl<Sig>::template CallIsNoexceptIfSigIsNoexcept<F>::value>,
+ y_absl::enable_if_t<std::is_constructible<y_absl::decay_t<F>, Args...>::value>>;
+
+/*SFINAE constraints for the conversion-assign operator.*/
+template <class Sig, class F,
+ class = y_absl::enable_if_t<
+ !std::is_same<RemoveCVRef<F>, AnyInvocable<Sig>>::value>>
+using CanAssign = TrueAlias<
+ y_absl::enable_if_t<Impl<Sig>::template CallIsValid<F>::value>,
+ y_absl::enable_if_t<
+ Impl<Sig>::template CallIsNoexceptIfSigIsNoexcept<F>::value>,
+ y_absl::enable_if_t<std::is_constructible<y_absl::decay_t<F>, F>::value>>;
+
+/*SFINAE constraints for the reference-wrapper conversion-assign operator.*/
+template <class Sig, class F>
+using CanAssignReferenceWrapper = TrueAlias<
+ y_absl::enable_if_t<
+ Impl<Sig>::template CallIsValid<std::reference_wrapper<F>>::value>,
+ y_absl::enable_if_t<Impl<Sig>::template CallIsNoexceptIfSigIsNoexcept<
+ std::reference_wrapper<F>>::value>>;
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// The constraint for checking whether or not a call meets the noexcept
+// callability requirements. This is a preprocessor macro because specifying it
+// this way as opposed to a disjunction/branch can improve the user-side error
+// messages and avoids an instantiation of std::is_nothrow_invocable_r in the
+// cases where the user did not specify a noexcept function type.
+//
+#define Y_ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT(inv_quals, noex) \
+ Y_ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT_##noex(inv_quals)
+
+// The disjunction below is because we can't rely on std::is_nothrow_invocable_r
+// to give the right result when ReturnType is non-moveable in toolchains that
+// don't treat non-moveable result types correctly. For example this was the
+// case in libc++ before commit c3a24882 (2022-05).
+#define Y_ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT_true(inv_quals) \
+ y_absl::enable_if_t<y_absl::disjunction< \
+ std::is_nothrow_invocable_r< \
+ ReturnType, UnwrapStdReferenceWrapper<y_absl::decay_t<F>> inv_quals, \
+ P...>, \
+ std::conjunction< \
+ std::is_nothrow_invocable< \
+ UnwrapStdReferenceWrapper<y_absl::decay_t<F>> inv_quals, P...>, \
+ std::is_same< \
+ ReturnType, \
+ y_absl::base_internal::invoke_result_t< \
+ UnwrapStdReferenceWrapper<y_absl::decay_t<F>> inv_quals, \
+ P...>>>>::value>
+
+#define Y_ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT_false(inv_quals)
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// A macro to generate partial specializations of Impl with the different
+// combinations of supported cv/reference qualifiers and noexcept specifier.
+//
+// Here, `cv` are the cv-qualifiers if any, `ref` is the ref-qualifier if any,
+// inv_quals is the reference type to be used when invoking the target, and
+// noex is "true" if the function type is noexcept, or false if it is not.
+//
+// The CallIsValid condition is more complicated than simply using
+// y_absl::base_internal::is_invocable_r because we can't rely on it to give the
+// right result when ReturnType is non-moveable in toolchains that don't treat
+// non-moveable result types correctly. For example this was the case in libc++
+// before commit c3a24882 (2022-05).
+#define Y_ABSL_INTERNAL_ANY_INVOCABLE_IMPL_(cv, ref, inv_quals, noex) \
+ template <class ReturnType, class... P> \
+ class Impl<ReturnType(P...) cv ref Y_ABSL_INTERNAL_NOEXCEPT_SPEC(noex)> \
+ : public CoreImpl<noex, ReturnType, P...> { \
+ public: \
+ /*The base class, which contains the datamembers and core operations*/ \
+ using Core = CoreImpl<noex, ReturnType, P...>; \
+ \
+ /*SFINAE constraint to check if F is invocable with the proper signature*/ \
+ template <class F> \
+ using CallIsValid = TrueAlias<y_absl::enable_if_t<y_absl::disjunction< \
+ y_absl::base_internal::is_invocable_r<ReturnType, \
+ y_absl::decay_t<F> inv_quals, P...>, \
+ std::is_same<ReturnType, \
+ y_absl::base_internal::invoke_result_t< \
+ y_absl::decay_t<F> inv_quals, P...>>>::value>>; \
+ \
+ /*SFINAE constraint to check if F is nothrow-invocable when necessary*/ \
+ template <class F> \
+ using CallIsNoexceptIfSigIsNoexcept = \
+ TrueAlias<Y_ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT(inv_quals, \
+ noex)>; \
+ \
+ /*Put the AnyInvocable into an empty state.*/ \
+ Impl() = default; \
+ \
+ /*The implementation of a conversion-constructor from "f*/ \
+ /*This forwards to Core, attaching inv_quals so that the base class*/ \
+ /*knows how to properly type-erase the invocation.*/ \
+ template <class F> \
+ explicit Impl(ConversionConstruct, F&& f) \
+ : Core(TypedConversionConstruct< \
+ typename std::decay<F>::type inv_quals>(), \
+ std::forward<F>(f)) {} \
+ \
+ /*Forward along the in-place construction parameters.*/ \
+ template <class T, class... Args> \
+ explicit Impl(y_absl::in_place_type_t<T>, Args&&... args) \
+ : Core(y_absl::in_place_type<y_absl::decay_t<T> inv_quals>, \
+ std::forward<Args>(args)...) {} \
+ \
+ InvokerType<noex, ReturnType, P...>* ExtractInvoker() cv { \
+ using QualifiedTestType = int cv ref; \
+ auto* invoker = this->invoker_; \
+ if (!std::is_const<QualifiedTestType>::value && \
+ std::is_rvalue_reference<QualifiedTestType>::value) { \
+ Y_ABSL_HARDENING_ASSERT([this]() { \
+ /* We checked that this isn't const above, so const_cast is safe */ \
+ const_cast<Impl*>(this)->invoker_ = \
+ [](TypeErasedState*, \
+ ForwardedParameterType<P>...) noexcept(noex) -> ReturnType { \
+ Y_ABSL_HARDENING_ASSERT(false && "AnyInvocable use-after-move"); \
+ std::terminate(); \
+ }; \
+ return this->HasValue(); \
+ }()); \
+ } \
+ return invoker; \
+ } \
+ \
+ /*The actual invocation operation with the proper signature*/ \
+ ReturnType operator()(P... args) cv ref noexcept(noex) { \
+ assert(this->invoker_ != nullptr); \
+ return this->ExtractInvoker()( \
+ const_cast<TypeErasedState*>(&this->state_), \
+ static_cast<ForwardedParameterType<P>>(args)...); \
+ } \
+ }
+
+// Define the `noexcept(true)` specialization only for C++17 and beyond, when
+// `noexcept` is part of the type system.
+#if Y_ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
+// A convenience macro that defines specializations for the noexcept(true) and
+// noexcept(false) forms, given the other properties.
+#define Y_ABSL_INTERNAL_ANY_INVOCABLE_IMPL(cv, ref, inv_quals) \
+ Y_ABSL_INTERNAL_ANY_INVOCABLE_IMPL_(cv, ref, inv_quals, false); \
+ Y_ABSL_INTERNAL_ANY_INVOCABLE_IMPL_(cv, ref, inv_quals, true)
+#else
+#define Y_ABSL_INTERNAL_ANY_INVOCABLE_IMPL(cv, ref, inv_quals) \
+ Y_ABSL_INTERNAL_ANY_INVOCABLE_IMPL_(cv, ref, inv_quals, false)
+#endif
+
+// Non-ref-qualified partial specializations
+Y_ABSL_INTERNAL_ANY_INVOCABLE_IMPL(, , &);
+Y_ABSL_INTERNAL_ANY_INVOCABLE_IMPL(const, , const&);
+
+// Lvalue-ref-qualified partial specializations
+Y_ABSL_INTERNAL_ANY_INVOCABLE_IMPL(, &, &);
+Y_ABSL_INTERNAL_ANY_INVOCABLE_IMPL(const, &, const&);
+
+// Rvalue-ref-qualified partial specializations
+Y_ABSL_INTERNAL_ANY_INVOCABLE_IMPL(, &&, &&);
+Y_ABSL_INTERNAL_ANY_INVOCABLE_IMPL(const, &&, const&&);
+
+// Undef the detail-only macros.
+#undef Y_ABSL_INTERNAL_ANY_INVOCABLE_IMPL
+#undef Y_ABSL_INTERNAL_ANY_INVOCABLE_IMPL_
+#undef Y_ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT_false
+#undef Y_ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT_true
+#undef Y_ABSL_INTERNAL_ANY_INVOCABLE_NOEXCEPT_CONSTRAINT
+#undef Y_ABSL_INTERNAL_NOEXCEPT_SPEC
+
+} // namespace internal_any_invocable
+Y_ABSL_NAMESPACE_END
+} // namespace y_absl
+
+#endif // Y_ABSL_FUNCTIONAL_INTERNAL_ANY_INVOCABLE_H_
diff --git a/library/cpp/unified_agent_client/grpc_io.cpp b/library/cpp/unified_agent_client/grpc_io.cpp
index 6d237d75ec..815f34f1cf 100644
--- a/library/cpp/unified_agent_client/grpc_io.cpp
+++ b/library/cpp/unified_agent_client/grpc_io.cpp
@@ -1,5 +1,6 @@
#include "grpc_io.h"
+#include <contrib/libs/grpc/src/core/lib/iomgr/exec_ctx.h>
#include <contrib/libs/grpc/src/core/lib/iomgr/executor.h>
#include <contrib/libs/grpc/src/core/lib/surface/completion_queue.h>
#include <contrib/libs/grpc/include/grpc/impl/codegen/log.h>
@@ -36,7 +37,7 @@ namespace NUnifiedAgent {
grpc_core::ExecCtx execCtx;
IOCallback->Ref();
Y_VERIFY(grpc_cq_begin_op(CompletionQueue.cq(), this));
- grpc_cq_end_op(CompletionQueue.cq(), this, nullptr,
+ grpc_cq_end_op(CompletionQueue.cq(), this, GRPC_ERROR_NONE,
[](void* self, grpc_cq_completion*) {
Y_VERIFY(static_cast<TGrpcNotification*>(self)->InQueue.exchange(false));
},
diff --git a/ydb/library/ycloud/impl/folder_service_ut.cpp b/ydb/library/ycloud/impl/folder_service_ut.cpp
index a3fd4b1bde..23f1e30c79 100644
--- a/ydb/library/ycloud/impl/folder_service_ut.cpp
+++ b/ydb/library/ycloud/impl/folder_service_ut.cpp
@@ -42,7 +42,9 @@ Y_UNIT_TEST_SUITE(TFolderServiceTest) {
runtime->Send(new IEventHandle(folderService->SelfId(), sender, request.Release()));
auto result = runtime->GrabEdgeEvent<NCloud::TEvFolderService::TEvListFolderResponse>(handle);
UNIT_ASSERT(result); // error because no service is listening
- UNIT_ASSERT_EQUAL(result->Status.Msg, "failed to connect to all addresses");
+ // grpc core code prints full information about error code,
+ // but let's check only the fact that we received error.
+ UNIT_ASSERT_STRING_CONTAINS(result->Status.Msg, "failed to connect to all addresses; last error:");
// Folder Service Mock
TFolderServiceMock folderServiceMock;